Name: series-workflowkdx5m Phase: Succeeded StartedAt: 2026-06-23 22:33:43 +0000 UTC FinishedAt: 2026-06-24 02:30:50 +0000 UTC Input: nil Output: nil --------- Name: series-workflowkdx5m[0] Phase: Succeeded StartedAt: 2026-06-23 22:33:43 +0000 UTC FinishedAt: 2026-06-23 22:42:11 +0000 UTC Input: nil Output: nil --------- Name: series-workflowkdx5m[0].run-triage Phase: Succeeded StartedAt: 2026-06-23 22:33:43 +0000 UTC FinishedAt: 2026-06-23 22:42:11 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "linux-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next", "commit_hash": "a986fde914d88af47eb78fd29c5d1af7952c3500", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NFC_NCI", "NFC_VIRTUAL_NCI" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "linux-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next", "commit_hash": "a986fde914d88af47eb78fd29c5d1af7952c3500", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NFC_NCI", "NFC_VIRTUAL_NCI" ], "series_id": "2a9a8657-37a3-4dce-8cb5-2035027791dd" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "nci_core_init_rsp_packet_v1", "nci_core_init_rsp_packet_v2" ], "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+CgkJCTx0ZD4yMDI2LzA2LzIzIDIyOjQxPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05GQ19OQ0kmIzM0OywKICAgICYjMzQ7TkZDX1ZJUlRVQUxfTkNJJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7bmNpX2NvcmVfaW5pdF9yc3BfcGFja2V0X3YxJiMzNDssCiAgICAmIzM0O25jaV9jb3JlX2luaXRfcnNwX3BhY2tldF92MiYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIGxlbmd0aCBjaGVja3MgdG8gTkNJIGNvcmUgaW5pdCByZXNwb25zZSBwYWNrZXRzIHBhcnNpbmcgdG8gcHJldmVudCBvdXQtb2YtYm91bmRzIHJlYWRzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgZml4aW5nIHBvdGVudGlhbCBtZW1vcnkgc2FmZXR5IGlzc3Vlcy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yMyAyMjo0MTwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IGIxNzUyNzZjZTM0OThjZGE3ODQ4ZDBlN2QyZWRiNzIwZWE1NTY5YzRcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVHVlIEp1biAyMyAyMjo0MToxNyAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9uZXQvbmZjL25jaS9yc3AuYyBiL25ldC9uZmMvbmNpL3JzcC5jXG5pbmRleCA5ZWViODYyODI1YzVmZS4uY2RjZDIzYzhjYTk1ZmUgMTAwNjQ0XG4tLS0gYS9uZXQvbmZjL25jaS9yc3AuY1xuJiM0MzsmIzQzOyYjNDM7IGIvbmV0L25mYy9uY2kvcnNwLmNcbkBAIC01MCw2ICYjNDM7NTAsOSBAQCBzdGF0aWMgdTggbmNpX2NvcmVfaW5pdF9yc3BfcGFja2V0X3YxKHN0cnVjdCBuY2lfZGV2ICpuZGV2LFxuIFx0Y29uc3Qgc3RydWN0IG5jaV9jb3JlX2luaXRfcnNwXzEgKnJzcF8xID0gKHZvaWQgKilza2ItXHUwMDNlZGF0YTtcbiBcdGNvbnN0IHN0cnVjdCBuY2lfY29yZV9pbml0X3JzcF8yICpyc3BfMjtcbiBcbiYjNDM7XHRpZiAoc2tiLVx1MDAzZWxlbiBcdTAwM2Mgc2l6ZW9mKCpyc3BfMSkpXG4mIzQzO1x0XHRyZXR1cm4gTkNJX1NUQVRVU19TWU5UQVhfRVJST1I7XG4mIzQzO1xuIFx0cHJfZGVidWcoXCYjMzQ7c3RhdHVzIDB4JXhcXG5cJiMzNDssIHJzcF8xLVx1MDAzZXN0YXR1cyk7XG4gXG4gXHRpZiAocnNwXzEtXHUwMDNlc3RhdHVzICE9IE5DSV9TVEFUVVNfT0spXG5AQCAtNTgsNiAmIzQzOzYxLDE1IEBAIHN0YXRpYyB1OCBuY2lfY29yZV9pbml0X3JzcF9wYWNrZXRfdjEoc3RydWN0IG5jaV9kZXYgKm5kZXYsXG4gXHRuZGV2LVx1MDAzZW5mY2NfZmVhdHVyZXMgPSBfX2xlMzJfdG9fY3B1KHJzcF8xLVx1MDAzZW5mY2NfZmVhdHVyZXMpO1xuIFx0bmRldi1cdTAwM2VudW1fc3VwcG9ydGVkX3JmX2ludGVyZmFjZXMgPSByc3BfMS1cdTAwM2VudW1fc3VwcG9ydGVkX3JmX2ludGVyZmFjZXM7XG4gXG4mIzQzO1x0LypcbiYjNDM7XHQgKiBzdXBwb3J0ZWRfcmZfaW50ZXJmYWNlc1tdIGFuZCB0aGUgdHJhaWxpbmcgbmNpX2NvcmVfaW5pdF9yc3BfMiBhcmVcbiYjNDM7XHQgKiBhZGRyZXNzZWQgdXNpbmcgdGhlIG9uLXdpcmUgKHVuY2xhbXBlZCkgaW50ZXJmYWNlIGNvdW50LCBzbyB0aGVcbiYjNDM7XHQgKiByZXNwb25zZSBtdXN0IGJlIGxvbmcgZW5vdWdoIGZvciBib3RoIGJlZm9yZSB0aGV5IGFyZSBkZXJlZmVyZW5jZWQuXG4mIzQzO1x0ICovXG4mIzQzO1x0aWYgKHNrYi1cdTAwM2VsZW4gXHUwMDNjIHNpemVvZigqcnNwXzEpICYjNDM7XG4mIzQzO1x0ICAgIHJzcF8xLVx1MDAzZW51bV9zdXBwb3J0ZWRfcmZfaW50ZXJmYWNlcyAmIzQzOyBzaXplb2YoKnJzcF8yKSlcbiYjNDM7XHRcdHJldHVybiBOQ0lfU1RBVFVTX1NZTlRBWF9FUlJPUjtcbiYjNDM7XG4gXHRuZGV2LVx1MDAzZW51bV9zdXBwb3J0ZWRfcmZfaW50ZXJmYWNlcyA9XG4gXHRcdG1pbigoaW50KW5kZXYtXHUwMDNlbnVtX3N1cHBvcnRlZF9yZl9pbnRlcmZhY2VzLFxuIFx0XHQgICAgTkNJX01BWF9TVVBQT1JURURfUkZfSU5URVJGQUNFUyk7XG5AQCAtODgsOSAmIzQzOzEwMCwxMyBAQCBzdGF0aWMgdTggbmNpX2NvcmVfaW5pdF9yc3BfcGFja2V0X3YyKHN0cnVjdCBuY2lfZGV2ICpuZGV2LFxuIHtcbiBcdGNvbnN0IHN0cnVjdCBuY2lfY29yZV9pbml0X3JzcF9uY2lfdmVyMiAqcnNwID0gKHZvaWQgKilza2ItXHUwMDNlZGF0YTtcbiBcdGNvbnN0IHU4ICpzdXBwb3J0ZWRfcmZfaW50ZXJmYWNlID0gcnNwLVx1MDAzZXN1cHBvcnRlZF9yZl9pbnRlcmZhY2VzO1xuJiM0MztcdGNvbnN0IHU4ICplbmQgPSBza2ItXHUwMDNlZGF0YSAmIzQzOyBza2ItXHUwMDNlbGVuO1xuIFx0dTggcmZfaW50ZXJmYWNlX2lkeCA9IDA7XG4gXHR1OCByZl9leHRlbnNpb25fY250ID0gMDtcbiBcbiYjNDM7XHRpZiAoc2tiLVx1MDAzZWxlbiBcdTAwM2Mgc2l6ZW9mKCpyc3ApKVxuJiM0MztcdFx0cmV0dXJuIE5DSV9TVEFUVVNfU1lOVEFYX0VSUk9SO1xuJiM0MztcbiBcdHByX2RlYnVnKFwmIzM0O3N0YXR1cyAleFxcblwmIzM0OywgcnNwLVx1MDAzZXN0YXR1cyk7XG4gXG4gXHRpZiAocnNwLVx1MDAzZXN0YXR1cyAhPSBOQ0lfU1RBVFVTX09LKVxuQEAgLTEwNCwxMCAmIzQzOzEyMCwxNiBAQCBzdGF0aWMgdTggbmNpX2NvcmVfaW5pdF9yc3BfcGFja2V0X3YyKHN0cnVjdCBuY2lfZGV2ICpuZGV2LFxuIFx0XHQgICAgTkNJX01BWF9TVVBQT1JURURfUkZfSU5URVJGQUNFUyk7XG4gXG4gXHR3aGlsZSAocmZfaW50ZXJmYWNlX2lkeCBcdTAwM2MgbmRldi1cdTAwM2VudW1fc3VwcG9ydGVkX3JmX2ludGVyZmFjZXMpIHtcbi1cdFx0bmRldi1cdTAwM2VzdXBwb3J0ZWRfcmZfaW50ZXJmYWNlc1tyZl9pbnRlcmZhY2VfaWR4JiM0MzsmIzQzO10gPSAqc3VwcG9ydGVkX3JmX2ludGVyZmFjZSYjNDM7JiM0Mzs7XG4mIzQzO1x0XHQvKiBvbmUgaW50ZXJmYWNlIGJ5dGUgJiM0Mzsgb25lIGV4dGVuc2lvbi1jb3VudCBieXRlIG11c3QgYmUgcHJlc2VudCAqL1xuJiM0MztcdFx0aWYgKGVuZCAtIHN1cHBvcnRlZF9yZl9pbnRlcmZhY2UgXHUwMDNjIDIpXG4mIzQzO1x0XHRcdHJldHVybiBOQ0lfU1RBVFVTX1NZTlRBWF9FUlJPUjtcbiYjNDM7XHRcdG5kZXYtXHUwMDNlc3VwcG9ydGVkX3JmX2ludGVyZmFjZXNbcmZfaW50ZXJmYWNlX2lkeCYjNDM7JiM0MztdID1cbiYjNDM7XHRcdFx0KnN1cHBvcnRlZF9yZl9pbnRlcmZhY2UmIzQzOyYjNDM7O1xuIFxuLVx0XHQvKiBza2lwIHJmIGV4dGVuc2lvbiBwYXJhbWV0ZXJzICovXG4mIzQzO1x0XHQvKiBza2lwIHJmIGV4dGVuc2lvbiBwYXJhbWV0ZXJzLCBib3VuZGVkIGJ5IHRoZSBwYWNrZXQgKi9cbiBcdFx0cmZfZXh0ZW5zaW9uX2NudCA9ICpzdXBwb3J0ZWRfcmZfaW50ZXJmYWNlJiM0MzsmIzQzOztcbiYjNDM7XHRcdGlmIChyZl9leHRlbnNpb25fY250IFx1MDAzZSBlbmQgLSBzdXBwb3J0ZWRfcmZfaW50ZXJmYWNlKVxuJiM0MztcdFx0XHRyZXR1cm4gTkNJX1NUQVRVU19TWU5UQVhfRVJST1I7XG4gXHRcdHN1cHBvcnRlZF9yZl9pbnRlcmZhY2UgJiM0Mzs9IHJmX2V4dGVuc2lvbl9jbnQ7XG4gXHR9XG4gXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjMgMjI6NDE8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7TkZDX05DSSYjMzQ7LAogICAgJiMzNDtORkNfVklSVFVBTF9OQ0kmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtuY2lfY29yZV9pbml0X3JzcF9wYWNrZXRfdjEmIzM0OywKICAgICYjMzQ7bmNpX2NvcmVfaW5pdF9yc3BfcGFja2V0X3YyJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgbGVuZ3RoIGNoZWNrcyB0byBOQ0kgY29yZSBpbml0IHJlc3BvbnNlIHBhY2tldHMgcGFyc2luZyB0byBwcmV2ZW50IG91dC1vZi1ib3VuZHMgcmVhZHMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBmaXhpbmcgcG90ZW50aWFsIG1lbW9yeSBzYWZldHkgaXNzdWVzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdAogICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksCiAgIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCBiMTc1Mjc2Y2UzNDk4Y2RhNzg0OGQwZTdkMmVkYjcyMGVhNTU2OWM0CkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFR1ZSBKdW4gMjMgMjI6NDE6MTcgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9uZXQvbmZjL25jaS9yc3AuYyBiL25ldC9uZmMvbmNpL3JzcC5jCmluZGV4IDllZWI4NjI4MjVjNWZlLi5jZGNkMjNjOGNhOTVmZSAxMDA2NDQKLS0tIGEvbmV0L25mYy9uY2kvcnNwLmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L25mYy9uY2kvcnNwLmMKQEAgLTUwLDYgJiM0Mzs1MCw5IEBAIHN0YXRpYyB1OCBuY2lfY29yZV9pbml0X3JzcF9wYWNrZXRfdjEoc3RydWN0IG5jaV9kZXYgKm5kZXYsCiAJY29uc3Qgc3RydWN0IG5jaV9jb3JlX2luaXRfcnNwXzEgKnJzcF8xID0gKHZvaWQgKilza2ItJmd0O2RhdGE7CiAJY29uc3Qgc3RydWN0IG5jaV9jb3JlX2luaXRfcnNwXzIgKnJzcF8yOwogCiYjNDM7CWlmIChza2ItJmd0O2xlbiAmbHQ7IHNpemVvZigqcnNwXzEpKQomIzQzOwkJcmV0dXJuIE5DSV9TVEFUVVNfU1lOVEFYX0VSUk9SOwomIzQzOwogCXByX2RlYnVnKCYjMzQ7c3RhdHVzIDB4JXhcbiYjMzQ7LCByc3BfMS0mZ3Q7c3RhdHVzKTsKIAogCWlmIChyc3BfMS0mZ3Q7c3RhdHVzICE9IE5DSV9TVEFUVVNfT0spCkBAIC01OCw2ICYjNDM7NjEsMTUgQEAgc3RhdGljIHU4IG5jaV9jb3JlX2luaXRfcnNwX3BhY2tldF92MShzdHJ1Y3QgbmNpX2RldiAqbmRldiwKIAluZGV2LSZndDtuZmNjX2ZlYXR1cmVzID0gX19sZTMyX3RvX2NwdShyc3BfMS0mZ3Q7bmZjY19mZWF0dXJlcyk7CiAJbmRldi0mZ3Q7bnVtX3N1cHBvcnRlZF9yZl9pbnRlcmZhY2VzID0gcnNwXzEtJmd0O251bV9zdXBwb3J0ZWRfcmZfaW50ZXJmYWNlczsKIAomIzQzOwkvKgomIzQzOwkgKiBzdXBwb3J0ZWRfcmZfaW50ZXJmYWNlc1tdIGFuZCB0aGUgdHJhaWxpbmcgbmNpX2NvcmVfaW5pdF9yc3BfMiBhcmUKJiM0MzsJICogYWRkcmVzc2VkIHVzaW5nIHRoZSBvbi13aXJlICh1bmNsYW1wZWQpIGludGVyZmFjZSBjb3VudCwgc28gdGhlCiYjNDM7CSAqIHJlc3BvbnNlIG11c3QgYmUgbG9uZyBlbm91Z2ggZm9yIGJvdGggYmVmb3JlIHRoZXkgYXJlIGRlcmVmZXJlbmNlZC4KJiM0MzsJICovCiYjNDM7CWlmIChza2ItJmd0O2xlbiAmbHQ7IHNpemVvZigqcnNwXzEpICYjNDM7CiYjNDM7CSAgICByc3BfMS0mZ3Q7bnVtX3N1cHBvcnRlZF9yZl9pbnRlcmZhY2VzICYjNDM7IHNpemVvZigqcnNwXzIpKQomIzQzOwkJcmV0dXJuIE5DSV9TVEFUVVNfU1lOVEFYX0VSUk9SOwomIzQzOwogCW5kZXYtJmd0O251bV9zdXBwb3J0ZWRfcmZfaW50ZXJmYWNlcyA9CiAJCW1pbigoaW50KW5kZXYtJmd0O251bV9zdXBwb3J0ZWRfcmZfaW50ZXJmYWNlcywKIAkJICAgIE5DSV9NQVhfU1VQUE9SVEVEX1JGX0lOVEVSRkFDRVMpOwpAQCAtODgsOSAmIzQzOzEwMCwxMyBAQCBzdGF0aWMgdTggbmNpX2NvcmVfaW5pdF9yc3BfcGFja2V0X3YyKHN0cnVjdCBuY2lfZGV2ICpuZGV2LAogewogCWNvbnN0IHN0cnVjdCBuY2lfY29yZV9pbml0X3JzcF9uY2lfdmVyMiAqcnNwID0gKHZvaWQgKilza2ItJmd0O2RhdGE7CiAJY29uc3QgdTggKnN1cHBvcnRlZF9yZl9pbnRlcmZhY2UgPSByc3AtJmd0O3N1cHBvcnRlZF9yZl9pbnRlcmZhY2VzOwomIzQzOwljb25zdCB1OCAqZW5kID0gc2tiLSZndDtkYXRhICYjNDM7IHNrYi0mZ3Q7bGVuOwogCXU4IHJmX2ludGVyZmFjZV9pZHggPSAwOwogCXU4IHJmX2V4dGVuc2lvbl9jbnQgPSAwOwogCiYjNDM7CWlmIChza2ItJmd0O2xlbiAmbHQ7IHNpemVvZigqcnNwKSkKJiM0MzsJCXJldHVybiBOQ0lfU1RBVFVTX1NZTlRBWF9FUlJPUjsKJiM0MzsKIAlwcl9kZWJ1ZygmIzM0O3N0YXR1cyAleFxuJiMzNDssIHJzcC0mZ3Q7c3RhdHVzKTsKIAogCWlmIChyc3AtJmd0O3N0YXR1cyAhPSBOQ0lfU1RBVFVTX09LKQpAQCAtMTA0LDEwICYjNDM7MTIwLDE2IEBAIHN0YXRpYyB1OCBuY2lfY29yZV9pbml0X3JzcF9wYWNrZXRfdjIoc3RydWN0IG5jaV9kZXYgKm5kZXYsCiAJCSAgICBOQ0lfTUFYX1NVUFBPUlRFRF9SRl9JTlRFUkZBQ0VTKTsKIAogCXdoaWxlIChyZl9pbnRlcmZhY2VfaWR4ICZsdDsgbmRldi0mZ3Q7bnVtX3N1cHBvcnRlZF9yZl9pbnRlcmZhY2VzKSB7Ci0JCW5kZXYtJmd0O3N1cHBvcnRlZF9yZl9pbnRlcmZhY2VzW3JmX2ludGVyZmFjZV9pZHgmIzQzOyYjNDM7XSA9ICpzdXBwb3J0ZWRfcmZfaW50ZXJmYWNlJiM0MzsmIzQzOzsKJiM0MzsJCS8qIG9uZSBpbnRlcmZhY2UgYnl0ZSAmIzQzOyBvbmUgZXh0ZW5zaW9uLWNvdW50IGJ5dGUgbXVzdCBiZSBwcmVzZW50ICovCiYjNDM7CQlpZiAoZW5kIC0gc3VwcG9ydGVkX3JmX2ludGVyZmFjZSAmbHQ7IDIpCiYjNDM7CQkJcmV0dXJuIE5DSV9TVEFUVVNfU1lOVEFYX0VSUk9SOwomIzQzOwkJbmRldi0mZ3Q7c3VwcG9ydGVkX3JmX2ludGVyZmFjZXNbcmZfaW50ZXJmYWNlX2lkeCYjNDM7JiM0MztdID0KJiM0MzsJCQkqc3VwcG9ydGVkX3JmX2ludGVyZmFjZSYjNDM7JiM0Mzs7CiAKLQkJLyogc2tpcCByZiBleHRlbnNpb24gcGFyYW1ldGVycyAqLwomIzQzOwkJLyogc2tpcCByZiBleHRlbnNpb24gcGFyYW1ldGVycywgYm91bmRlZCBieSB0aGUgcGFja2V0ICovCiAJCXJmX2V4dGVuc2lvbl9jbnQgPSAqc3VwcG9ydGVkX3JmX2ludGVyZmFjZSYjNDM7JiM0Mzs7CiYjNDM7CQlpZiAocmZfZXh0ZW5zaW9uX2NudCAmZ3Q7IGVuZCAtIHN1cHBvcnRlZF9yZl9pbnRlcmZhY2UpCiYjNDM7CQkJcmV0dXJuIE5DSV9TVEFUVVNfU1lOVEFYX0VSUk9SOwogCQlzdXBwb3J0ZWRfcmZfaW50ZXJmYWNlICYjNDM7PSByZl9leHRlbnNpb25fY250OwogCX0KIAo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yMyAyMjo0MTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNjQyCgkJCQkJCQlvdXRwdXQ6IDMzCgkJCQkJCQl0aG91Z2h0czogMTY0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIFBhdGNoIGZvciBORkMgU2FmZXR5KioKCk9rYXksIHNvIEkmIzM5O3ZlIGdvdCBhIHBhdGNoIGhlcmUgdGhhdCYjMzk7cyBwb2tpbmcgYXQgYG5ldC9uZmMvbmNpL3JzcC5jYC4gU2VlbXMgbGlrZSB0aGV5JiMzOTtyZSBhZGRpbmcgc29tZSBjcnVjaWFsIGxlbmd0aCBjaGVja3MgdG8gdGhlIGBuY2lfY29yZV9pbml0X3JzcF9wYWNrZXRfdjFgIGFuZCBgbmNpX2NvcmVfaW5pdF9yc3BfcGFja2V0X3YyYCBmdW5jdGlvbnMuIFNtYXJ0IG1vdmUuIFRoaXMgaXMgZXhhY3RseSB0aGUga2luZCBvZiBwcm9hY3RpdmUgbWVhc3VyZSB3ZSBuZWVkIHRvIHByZXZlbnQgdGhvc2UgbmFzdHkgb3V0LW9mLWJvdW5kcyByZWFkIHZ1bG5lcmFiaWxpdGllcyB3aGVuIHBhcnNpbmcgTkNJIGNvcmUgaW5pdCByZXNwb25zZXMuIEl0JiMzOTtzIGEgZnVuY3Rpb25hbCBmaXgsIGFkZHJlc3NpbmcgcG90ZW50aWFsIG1lbW9yeSBzYWZldHkgaXNzdWVzLiBUaGlzIGlzIGV4YWN0bHkgdGhlIGtpbmQgb2YgdGhpbmcgdGhhdCBtYWtlcyBtZSBnbywgJiMzNDtZZXAsIHRoYXQgbmVlZHMgZnV6emluZyBpbW1lZGlhdGVseS4mIzM0OwoKVGltZSB0byBnZXQgaW50byB0aGlzIGEgYml0IGRlZXBlci4gTGV0JiMzOTtzIHNlZS4uLiB0aGUgZm9jdXMgaGVyZSBpcyBkZWZpbml0ZWx5IG9uIHRob3NlIHR3byBmdW5jdGlvbnM6IGBuY2lfY29yZV9pbml0X3JzcF9wYWNrZXRfdjFgIGFuZCBgbmNpX2NvcmVfaW5pdF9yc3BfcGFja2V0X3YyYC4gTm93LCBsZXQmIzM5O3MgaWRlbnRpZnkgcmVsZXZhbnQgY29uZmlncy4gSSYjMzk7bSBnb2luZyB0byBqdW1wIGludG8gYG5ldC9uZmMvbmNpL3JzcC5jYCBkaXJlY3RseSBhbmQgc3RhcnQgZGlnZ2luZyBhcm91bmQgdGhlIEtjb25maWcgdG8gc2VlIHdoYXQgd2UmIzM5O3JlIGxvb2tpbmcgYXQgaGVyZS4gVGhpcyBsb29rcyBsaWtlIGEgc29saWQgY29udHJpYnV0aW9uLiBMZXQmIzM5O3MgZ2V0IHRvIHdvcmsuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjMgMjI6NDE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgTkNJJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L25mYy9uY2kvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjMgMjI6NDE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzExOQoJCQkJCQkJb3V0cHV0OiAyNQoJCQkJCQkJdGhvdWdodHM6IDEyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaWYgSSB3ZXJlIGNvbnNpZGVyaW5nIHRoaXMgbXlzZWxmLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipMb2NhdGluZyB0aGUgTkNJIEtjb25maWcgRmlsZSoqCgpBbHJpZ2h0LCB0aW1lIHRvIGdldCB0aGlzIEtjb25maWcgc2l0dWF0aW9uIHNvcnRlZCBmb3IgTkNJLiBNeSBmaXJzdCBpbnN0aW5jdCwgYXMgYWx3YXlzLCBpcyB0byBkaXZlIHN0cmFpZ2h0IGludG8gdGhlIHJlbGV2YW50IHNvdXJjZSB0cmVlLiBJIG5lZWQgdG8gZmlndXJlIG91dCB3aGVyZSB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zIGZvciB0aGUgTkNJIChORkMgQ29udHJvbGxlciBJbnRlcmZhY2UpIG1vZHVsZSByZXNpZGUuIEdpdmVuIG15IGZhbWlsaWFyaXR5IHdpdGggaG93IHRoZXNlIHN5c3RlbXMgYXJlIHR5cGljYWxseSBzdHJ1Y3R1cmVkLCBJJiMzOTttIGV4cGVjdGluZyBpdCB0byBmb2xsb3cgYSByZWxhdGl2ZWx5IHN0YW5kYXJkIHBhdHRlcm4uCgpJJiMzOTtsbCBiZSBsb29raW5nIGZvciBhIGZpbGUgbmFtZWQgc29tZXRoaW5nIGFsb25nIHRoZSBsaW5lcyBvZiBgS2NvbmZpZy5uY2lgIG9yIHBlcmhhcHMgYG5jaS9LY29uZmlnYCwgb3Igc29tZXRoaW5nIHJlZmxlY3RpbmcgdGhlIG5hbWluZyBjb252ZW50aW9uIG9mIHRoZSBzcGVjaWZpYyBwbGF0Zm9ybSBJIGFtIHdvcmtpbmcgd2l0aC4gVGhlIGtleSBpcyB0byBmaW5kIHRoZSBjZW50cmFsIHBvaW50IG9mIGNvbnRyb2wgZm9yIHRoZSBOQ0ktcmVsYXRlZCBjb25maWd1cmF0aW9uIG9wdGlvbnMuIEkmIzM5O2xsIG5lZWQgdG8gY2hlY2sgdGhlIGhpZ2hlciBsZXZlbCBLY29uZmlnIGZpbGVzIGZvciBpbmNsdWRlcywgbGlrZWx5IHdpdGhpbiB0aGUgTkZDIG9yIENvbm5lY3Rpdml0eSBzZWN0aW9ucywgZGVwZW5kaW5nIG9uIGhvdyB0aGV5JiMzOTt2ZSBvcmdhbml6ZWQgdGhhdCBwb3J0aW9uIG9mIHRoZSBLY29uZmlnIHRyZWUuIEkga25vdyBmcm9tIGV4cGVyaWVuY2UgdGhhdCBnb29kIEtjb25maWcgZGVzaWduIHVzdWFsbHkgaGFzIGEgY2xlYXIgaGllcmFyY2h5LiBUaW1lIHRvIHN0YXJ0IG5hdmlnYXRpbmcgdGhlIHVzdWFsIHN1c3BlY3RzIGluIHRoZSBidWlsZCBzeXN0ZW0uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjMgMjI6NDE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5jb2Rlc2VhcmNoLWRpci1pbmRleDwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RGlyJiMzNDs6ICYjMzQ7bmV0L25mYy9uY2kmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZXMmIzM0OzogWwogICAgJiMzNDtjb3JlLmMmIzM0OywKICAgICYjMzQ7ZGF0YS5jJiMzNDssCiAgICAmIzM0O2hjaS5jJiMzNDssCiAgICAmIzM0O2xpYi5jJiMzNDssCiAgICAmIzM0O250Zi5jJiMzNDssCiAgICAmIzM0O3JzcC5jJiMzNDssCiAgICAmIzM0O3NwaS5jJiMzNDssCiAgICAmIzM0O3VhcnQuYyYjMzQ7CiAgXSwKICAmIzM0O1N1YmRpcnMmIzM0OzogbnVsbAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjMgMjI6NDE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzQ2MAoJCQkJCQkJb3V0cHV0OiAzMAoJCQkJCQkJdGhvdWdodHM6IDMwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCBhc3N1bWluZyBJJiMzOTttIHdlbGwtdmVyc2VkIGluIGtlcm5lbCBkZXZlbG9wbWVudCBhbmQgTkZDOgoKKipNaXNzaW5nIENvbmZpZ3VyYXRpb24gYW5kIFNlZWtpbmcgdGhlIFNvdXJjZSoqCgpSaWdodCwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoZSBgbmV0L25mYy9uY2lgIGRpcmVjdG9yeSBhbmQgSSBkb24mIzM5O3Qgc2VlIHRoZSB1c3VhbCBLY29uZmlnIGZpbGUuIFRoYXQmIzM5O3MgYSBiaXQgb2RkOyB1c3VhbGx5LCBldmVyeSBtYWpvciBzdWJzeXN0ZW0gaGFzIGl0cyBjb25maWd1cmF0aW9uIG9wdGlvbnMgZGVmaW5lZCB3aXRoaW4gYSBLY29uZmlnIGZpbGUuIEkmIzM5O2xsIG5lZWQgdG8gZmlndXJlIG91dCB3aGVyZSB0aGUgY29uZmlndXJhdGlvbiBmb3IgdGhpcyBwYXJ0IG9mIHRoZSBORkMgc3RhY2sgYWN0dWFsbHkgcmVzaWRlcy4gTXkgaW50dWl0aW9uIGlzIHRlbGxpbmcgbWUgdGhhdCBpdCBtaWdodCBiZSBkZWZpbmVkIGluIHRoZSBwYXJlbnQgZGlyZWN0b3J5LiBMZXQmIzM5O3Mgc3RhcnQgd2l0aCBhIHF1aWNrIGNoZWNrIG9mIGBuZXQvbmZjL0tjb25maWdgLiBJdCYjMzk7cyB0aGUgbW9zdCBsb2dpY2FsIHBsYWNlIHRvIGJlZ2luIGxvb2tpbmcgZm9yIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgY29udHJvbGxpbmcgdGhpcyBhc3BlY3Qgb2YgdGhlIE5GQyBzdWJzeXN0ZW0uIExldCYjMzk7cyBzZWUgd2hhdCYjMzk7cyBpbiB0aGVyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yMyAyMjo0MTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBOQ0kmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbmZjL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzIzIDIyOjQxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM3MDkKCQkJCQkJCW91dHB1dDogMjkKCQkJCQkJCXRob3VnaHRzOiAxNwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIEkgd2VyZSBjb25zaWRlcmluZyB0aGlzIG15c2VsZjoKCioqSW52ZXN0aWdhdGluZyBOQ0kgQ29uZmlndXJhdGlvbioqCgpPa2F5LCBzbyBJIG5lZWQgdG8gY2hlY2sgdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyByZWxhdGVkIHRvIE5DSSAoTkZDIENvbnRyb2xsZXIgSW50ZXJmYWNlKS4gV2hlcmUgd291bGQgSSBmaW5kIHRoZSByZWxldmFudCBzZXR0aW5ncz8gTXkgZmlyc3QgaW5zdGluY3QgaXMgdG8gbG9vayB3aXRoaW4gdGhlIE5GQy1zcGVjaWZpYyBjb25maWd1cmF0aW9uIGZpbGVzLiBUaGUga2VybmVsJiMzOTtzIGNvbmZpZ3VyYXRpb24gc3lzdGVtIGlzIGZhaXJseSBvcmdhbml6ZWQsIHNvIEkmIzM5O2xsIGdvIHN0cmFpZ2h0IHRvIGBuZXQvbmZjL0tjb25maWdgLiBUaGlzIHNlZW1zIGxpa2UgdGhlIG1vc3QgbG9naWNhbCBzdGFydGluZyBwb2ludCBmb3IgZGVmaW5pbmcgYW5kIGVuYWJsaW5nIE5DSSBmdW5jdGlvbmFsaXR5IHdpdGhpbiB0aGUga2VybmVsLiBJIGV4cGVjdCB0byBmaW5kIG9wdGlvbnMgcmVsYXRlZCB0byBOQ0kmIzM5O3MgY29yZSBmZWF0dXJlcywgZHJpdmVyIHNlbGVjdGlvbiwgYW5kIGFueSBuZWNlc3NhcnkgZGVwZW5kZW5jaWVzIHRoZXJlLiBMZXQmIzM5O3Mgc2VlIHdoYXQmIzM5O3MgaW5zaWRlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yMyAyMjo0MTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O05DSSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9uZmMvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzIzIDIyOjQxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM5MTMKCQkJCQkJCW91dHB1dDogMjkKCQkJCQkJCXRob3VnaHRzOiAxMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBzdW1tYXJ5LCB0YWtpbmcgdGhlIHBlcnNwZWN0aXZlIG9mIHNvbWVvbmUgZmFtaWxpYXIgd2l0aCBlbWJlZGRlZCBzeXN0ZW1zIGFuZCBLY29uZmlnOgoKKipEZWJ1Z2dpbmcgdGhlIE5DSSBDb25maWd1cmF0aW9uKioKCkhtbSwgaG9sZCBvbiBhIHNlY29uZC4gSSYjMzk7bSB0cnlpbmcgdG8gY29uZmlndXJlIHRoZSBOQ0kgKE5GQyBDb250cm9sbGVyIEludGVyZmFjZSkgbW9kdWxlLCBidXQgSSBzZWVtIHRvIGJlIG1pc3Npbmcgc29tZXRoaW5nLiBXaGVyZSYjMzk7cyB0aGUgY29uZmlndXJhdGlvbiBmaWxlPyBJIGNhbiYjMzk7dCBzZWVtIHRvIGxvY2F0ZSB0aGUgcmVsZXZhbnQgS2NvbmZpZyBmaWxlIGZvciB0aGUgTkNJIGltcGxlbWVudGF0aW9uLiBUaGlzIGlzIGEgY29tbW9uIHNpdHVhdGlvbiwgaXQmIzM5O3MgdGhlIGNyaXRpY2FsIGZpbGUgZm9yIHNlbGVjdGluZyB0aGUgYXZhaWxhYmxlIGZlYXR1cmVzIGFuZCBvcHRpb25zIG9mIHRoZSBOQ0kgbW9kdWxlIGR1cmluZyB0aGUgYnVpbGQgcHJvY2Vzcy4gV2l0aG91dCBpdCwgSSYjMzk7bSBlc3NlbnRpYWxseSBibGluZCwgdW5hYmxlIHRvIHRhaWxvciB0aGUgTkNJJiMzOTtzIGJlaGF2aW9yIHRvIHRoZSBzcGVjaWZpYyBoYXJkd2FyZSBwbGF0Zm9ybSBvciBhcHBsaWNhdGlvbiByZXF1aXJlbWVudHMuIEkgbmVlZCB0byBmaW5kIHRoYXQgS2NvbmZpZyBmaWxlIHNvIEkgY2FuIHNldCB0aGUgZGVzaXJlZCBwYXJhbWV0ZXJzIGFuZCBwcm9jZWVkIHdpdGggdGhlIGJ1aWxkLiBOb3cgSSBqdXN0IG5lZWQgdG8gZmluZCBpdCBhbmQgZmlndXJlIG91dCB3aGVyZSB0aGUgYnVpbGQgc3lzdGVtIGV4cGVjdHMgaXQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzIzIDIyOjQxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O25jaS8mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbmZjL01ha2VmaWxlJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9uZmMvTWFrZWZpbGU9Nj1vYmotJChDT05GSUdfTkZDKSAmIzQzOz0gbmZjLm9cbm5ldC9uZmMvTWFrZWZpbGU6NzpvYmotJChDT05GSUdfTkZDX05DSSkgJiM0Mzs9IG5jaS9cbm5ldC9uZmMvTWFrZWZpbGUtOC1vYmotJChDT05GSUdfTkZDX0hDSSkgJiM0Mzs9IGhjaS9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjMgMjI6NDE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDIxOQoJCQkJCQkJb3V0cHV0OiAyNQoJCQkJCQkJdGhvdWdodHM6IDIwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqVHJhY2luZyBEb3duIENPTkZJR19ORkNfTkNJKioKCk9rYXksIHNvIGBDT05GSUdfTkZDX05DSWAuIFRoYXQmIzM5O3MgdGhlIGtleS4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hlcmUgdGhhdCYjMzk7cyBkZWZpbmVkIGluIHRoZSBidWlsZCBzeXN0ZW0uIElzIGl0IGluIGEgS2NvbmZpZyBmaWxlPyBBIE1ha2VmaWxlPyBTb21lIG9ic2N1cmUgYXV0b2NvbmYgc2NyaXB0PyBJJiMzOTtsbCBwcm9iYWJseSBzdGFydCB3aXRoIGEgYGdyZXBgIHRocm91Z2ggdGhlIHJlbGV2YW50IGtlcm5lbCBzb3VyY2UgZGlyZWN0b3JpZXMuIEkmIzM5O2xsIG5lZWQgdG8gcmVtZW1iZXIgd2hlcmUgTkZDIGlzIHVzdWFsbHkgbG9jYXRlZCB3aXRoaW4gdGhlIHRyZWUuIEl0JiMzOTtzIGxpa2VseSB3aXRoaW4gYSBzdWJkaXJlY3Rvcnkgb2YgZHJpdmVycy8sIG1heWJlIGRyaXZlcnMvbmZjLyBvciBkcml2ZXJzL25ldC9uZmMvLCBvciBwZXJoYXBzIGV2ZW4gYXJjaGl0ZWN0dXJlLXNwZWNpZmljIGNvbmZpZ3MgaWYgaXQmIzM5O3MgZGVwZW5kZW50IG9uIGEgcGFydGljdWxhciBwbGF0Zm9ybS4gSSYjMzk7bGwgYWxzbyBjaGVjayBpZiB0aGVyZSYjMzk7cyBhbnkgaW5jbHVkZSBmaWxlIHRoYXQgbWlnaHQgYmUgcmVsZXZhbnQuIE15IGFpbSBoZXJlIGlzIHRvIGxvY2F0ZSB0aGUgZXhhY3QgS2NvbmZpZyBzeW1ib2wgZGVmaW5pdGlvbiwgc28gSSBrbm93IGhvdyB0aGUgZmVhdHVyZSBpcyBjb25maWd1cmVkIGFuZCB3aGF0IGRlcGVuZGVuY2llcyBpdCBtaWdodCBoYXZlLiBUaGlzIGFsc28gdGVsbHMgbWUgd2hhdCBvdGhlciBjb25maWd1cmF0aW9ucyByZWxhdGUgdG8gTkZDLU5DSS4gV2l0aCB0aGF0IGtub3dsZWRnZSwgSSBjYW4gZmlndXJlIG91dCB3aHkgdGhlIHVzZXIgaXMgYXNraW5nIGFib3V0IGl0IGFuZCBkZXRlcm1pbmUgYSBzb2x1dGlvbi4gSSYjMzk7bGwgc2VhcmNoIGZvciB0aGluZ3MgbGlrZSBgY29uZmlnIE5GQ19OQ0lgLCBgZGVwZW5kcyBvbiBORkNgLCBldGMuLCB0byBnZXQgYSBjbGVhciBwaWN0dXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yMyAyMjo0MTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgTkZDX05DSSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0OyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbmZjL25jaS9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG5uZXQvbmZjL25jaS9LY29uZmlnOjI6Y29uZmlnIE5GQ19OQ0lcbm5ldC9uZmMvbmNpL0tjb25maWctMy1cdGRlcGVuZHMgb24gTkZDXG4tLVxubmV0L25mYy9uY2kvS2NvbmZpZy0xMi1cbm5ldC9uZmMvbmNpL0tjb25maWc6MTM6Y29uZmlnIE5GQ19OQ0lfU1BJXG5uZXQvbmZjL25jaS9LY29uZmlnLTE0LVx0ZGVwZW5kcyBvbiBORkNfTkNJIFx1MDAyNlx1MDAyNiBTUElcbi0tXG5uZXQvbmZjL25jaS9LY29uZmlnLTIzLVxubmV0L25mYy9uY2kvS2NvbmZpZzoyNDpjb25maWcgTkZDX05DSV9VQVJUXG5uZXQvbmZjL25jaS9LY29uZmlnLTI1LVx0ZGVwZW5kcyBvbiBORkNfTkNJIFx1MDAyNlx1MDAyNiBUVFlcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjMgMjI6NDE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDcyOAoJCQkJCQkJb3V0cHV0OiAzMgoJCQkJCQkJdGhvdWdodHM6IDY3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkRlYnVnZ2luZyBhIFBvdGVudGlhbCBDb25maWd1cmF0aW9uIElzc3VlKioKCk9rYXksIHNvIEkgdGhpbmsgSSYjMzk7dmUgbWFkZSBhIHR5cG8gc29tZXdoZXJlIGluIHRoZSBwYXRoLiBJdCBsb29rcyBsaWtlIHRoZSByZWxldmFudCBjb25maWd1cmF0aW9uIGlzIHJlbGF0ZWQgdG8gYE5GQ19OQ0lgLiBJJiMzOTttIGdvaW5nIHRvIHN0YXJ0IGJ5IGNvbmZpcm1pbmcgdGhhdCBhc3N1bXB0aW9uIGFuZCBxdWlja2x5IHNjYW5uaW5nIGZvciBhbnkgb3RoZXIgcG90ZW50aWFsIGNvbmZpZ3VyYXRpb24gZmlsZXMgdGhhdCBtaWdodCBiZSByZWxldmFudCB0byB0aGlzIGFyZWEuIE5leHQsIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQmIzM5O3MgYmVlbiBjaGFuZ2VkLiBUaGUgcGF0Y2ggc2VlbXMgdG8gYmUgbW9kaWZ5aW5nIGBuZXQvbmZjL25jaS9yc3AuY2AuIFRoYXQgdGVsbHMgbWUgdGhlIGxpa2VseSBhcmVhIEkgc2hvdWxkIGJlIGxvb2tpbmcgYXQuIEp1c3QgdG8gYmUgdGhvcm91Z2ggYW5kIGJlY2F1c2UgaXQmIzM5O3MgZ29vZCBwcmFjdGljZSwgbGV0IG1lIGFsc28gY2hlY2sgdGhlIGBuZXQvbmZjL25jaS9NYWtlZmlsZWAuIFRoYXQgd2lsbCBnaXZlIG1lIGEgYnJvYWRlciB1bmRlcnN0YW5kaW5nIG9mIHRoZSBidWlsZCBwcm9jZXNzIGFuZCBhbnkgcG90ZW50aWFsIGRlcGVuZGVuY2llcyBvciBidWlsZCBmbGFncyB0aGF0IG1pZ2h0IGJlIGluZmx1ZW5jaW5nIHRoaXMgbW9kdWxlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yMyAyMjo0MTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtyc3AubyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9uZmMvbmNpL01ha2VmaWxlJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9uZmMvbmNpL01ha2VmaWxlPTY9b2JqLSQoQ09ORklHX05GQ19OQ0kpICYjNDM7PSBuY2kub1xubmV0L25mYy9uY2kvTWFrZWZpbGUtNy1cbm5ldC9uZmMvbmNpL01ha2VmaWxlOjg6bmNpLW9ianMgOj0gY29yZS5vIGRhdGEubyBsaWIubyBudGYubyByc3AubyBoY2kub1xubmV0L25mYy9uY2kvTWFrZWZpbGUtOS1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjMgMjI6NDE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTA5NQoJCQkJCQkJb3V0cHV0OiA0NAoJCQkJCQkJdGhvdWdodHM6IDEwNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipORkMgQ29uZmlndXJhdGlvbiBhbmQgQ29yZSBJbml0aWFsaXphdGlvbioqCgpPa2F5LCBzbyBJJiMzOTttIHRha2luZyBhIGxvb2sgYXQgdGhpcyBORkMgY29uZmlndXJhdGlvbi4gSXQgc2VlbXMgbGlrZSBzZXR0aW5nIGBDT05GSUdfTkZDX05DSWAgc2hvdWxkIGJlIHRoZSBvbmx5IGNvbmZpZyBuZWVkZWQsIHJpZ2h0PyBCdXQgaG9sZCBvbiBhIHNlY29uZC4uLiBpc24mIzM5O3QgYE5GQ19OQ0lgIGRlcGVuZGVudCBvbiB0aGUgYmFzZSBgTkZDYCBmZWF0dXJlPyBSaWdodCwgc28gYWN0dWFsbHksIHNldHRpbmcgYE5GQ19OQ0lgIHNob3VsZCBpbXBsaWNpdGx5IGVuYWJsZSBgTkZDYC4gVGhhdCYjMzk7cyBnb29kOyBpdCBzaW1wbGlmaWVzIHRoaW5ncy4gSSBzaG91bGQgYmUgYWJsZSB0byBqdXN0IGxpc3QgdGhlIGBORkNfTkNJYCBmZWF0dXJlcy4KCk5vdywgSSBuZWVkIHRvIGNoZWNrIHNvbWUgc3BlY2lmaWMgc3ltYm9scyByZWxhdGVkIHRvIHRoZSBpbml0aWFsaXphdGlvbiBvZiB0aGUgTkNJIGNvcmUuIFNwZWNpZmljYWxseSwgSSBuZWVkIHRvIHZlcmlmeSB3aGF0IHZlcnNpb25zIGFyZSBzdXBwb3J0ZWQgZm9yIHRoZSBjb3JlIGluaXRpYWxpemF0aW9uIHJlc3BvbnNlIHBhY2tldC4gVGhlIGtleSBzeW1ib2xzIEkgaGF2ZSBpbiBtaW5kIGFyZSBgbmNpX2NvcmVfaW5pdF9yc3BfcGFja2V0X3YxYCBhbmQgYG5jaV9jb3JlX2luaXRfcnNwX3BhY2tldF92MmAuCgpMZXQgbWUgcXVpY2tseSBjb25maXJtIHRoYXQgdGhlc2UgZnVuY3Rpb25zIGFyZSBhY3R1YWxseSBkZWZpbmVkIHdoZXJlIHRoZXkgc2hvdWxkIGJlLCBpbiBgbmV0L25mYy9uY2kvcnNwLmNgLiBJIGhhdmUgYSBodW5jaCwgYnV0IHZlcmlmeWluZyBpcyBhbHdheXMgYmVzdCBwcmFjdGljZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjMgMjI6NDE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bmNpX2NvcmVfaW5pdF9yc3BfcGFja2V0X3YxJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L25mYy9uY2kvcnNwLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L25mYy9uY2kvcnNwLmM9Mjg9c3RhdGljIHZvaWQgbmNpX2NvcmVfcmVzZXRfcnNwX3BhY2tldChzdHJ1Y3QgbmNpX2RldiAqbmRldixcbi0tXG5uZXQvbmZjL25jaS9yc3AuYy00Ni1cbm5ldC9uZmMvbmNpL3JzcC5jOjQ3OnN0YXRpYyB1OCBuY2lfY29yZV9pbml0X3JzcF9wYWNrZXRfdjEoc3RydWN0IG5jaV9kZXYgKm5kZXYsXG5uZXQvbmZjL25jaS9yc3AuYy00OC1cdFx0XHRcdCAgICAgIGNvbnN0IHN0cnVjdCBza19idWZmICpza2IpXG4tLVxubmV0L25mYy9uY2kvcnNwLmM9MTQ2PXN0YXRpYyB2b2lkIG5jaV9jb3JlX2luaXRfcnNwX3BhY2tldChzdHJ1Y3QgbmNpX2RldiAqbmRldiwgY29uc3Qgc3RydWN0IHNrX2J1ZmYgKnNrYilcbi0tXG5uZXQvbmZjL25jaS9yc3AuYy0xNTAtXHRpZiAoIShuZGV2LVx1MDAzZW5jaV92ZXIgXHUwMDI2IE5DSV9WRVJfMl9NQVNLKSlcbm5ldC9uZmMvbmNpL3JzcC5jOjE1MTpcdFx0c3RhdHVzID0gbmNpX2NvcmVfaW5pdF9yc3BfcGFja2V0X3YxKG5kZXYsIHNrYik7XG5uZXQvbmZjL25jaS9yc3AuYy0xNTItXHRlbHNlXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzIzIDIyOjQxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDU3NjQKCQkJCQkJCW91dHB1dDogMjYKCQkJCQkJCXRob3VnaHRzOiAxODEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQXNzZXNzbWVudCBvZiB0aGUgTkNJIENvcmUgSW5pdCBSZXNwb25zZSBQYXRjaCoqCgpPa2F5LCBzbyB0aGlzIHBhdGNoIGRpcmVjdGx5IGFkZHJlc3NlcyBhIGNyaXRpY2FsIGlzc3VlOiBtaXNzaW5nIGxlbmd0aCBjaGVja3MgaW4gaG93IHdlIHBhcnNlIE5DSSBjb3JlIGluaXRpYWxpemF0aW9uIHJlc3BvbnNlcy4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsIHllcywgYWJzb2x1dGVseSwgdGhpcyBpcyBhIG1lbW9yeSBzYWZldHkgZml4LiBJdCYjMzk7cyBhIGZ1bmN0aW9uYWwgY2hhbmdlLCBwcmV2ZW50aW5nIHBvdGVudGlhbCBvdXQtb2YtYm91bmRzIHJlYWRzIGR1cmluZyB0aGUgcmVzcG9uc2UgcGFyc2luZywgd2hpY2ggaXMgcHJlY2lzZWx5IHRoZSBraW5kIG9mIHZ1bG5lcmFiaWxpdHkgd2Ugd2FudCB0byBzcXVhc2guIGBXb3J0aEZ1enppbmdgPyBBYnNvbHV0ZWx5LiBUaGlzIGlzIGEgcHJpbWUgdGFyZ2V0LgoKTXkgaW52ZXN0aWdhdGlvbiBvZiB0aGUgY29uZmlncyByZXF1aXJlZCBmb3IgcmVwcm9kdWNpbmcgdGhlIGlzc3VlIG9yIHZlcmlmeWluZyB0aGUgZml4IGluZGljYXRlcyB0aGF0IGBORkNfTkNJYCBpcyB0aGUgcHJpbWFyeSwgcGVyaGFwcyBvbmx5LCByZWxldmFudCBjb25maWd1cmF0aW9uLiBIb3dldmVyLCBJIG5lZWQgdG8gYmUgdGhvcm91Z2guIEkmIzM5O20gZ29pbmcgdG8gcXVpY2tseSBjaGVjayBmb3IgYW55IHJlbGF0ZWQgY29uZmlndXJhdGlvbnMuIE1heWJlIGBORkNfVklSVFVBTF9OQ0lgIGluIHBhcnRpY3VsYXI/IEkmIzM5O2xsIHByb2JhYmx5IGxvb2sgaW50byBgZHJpdmVycy9uZmMvdmlydHVhbF9uY2lkZXYuY2Agb3IgYSBzaW1pbGFyIGZpbGUgdG8gY29uZmlybSB0aGVyZSBhcmVuJiMzOTt0IGFueSBvdGhlciBjb25maWdzIEkgbmVlZCB0byBiZSBhd2FyZSBvZi4gVGhlIGBGb2N1c1N5bWJvbHNgIGFyZSBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkOiB3ZSYjMzk7cmUgZm9jdXNpbmcgb24gYG5jaV9jb3JlX2luaXRfcnNwX3BhY2tldF92MWAgYW5kIGBuY2lfY29yZV9pbml0X3JzcF9wYWNrZXRfdjJgLCBzbyB0aGF0JiMzOTtzIHdoZXJlIEkgbmVlZCB0byBsb29rLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yMyAyMjo0MTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtORkNfVklSVFVBTCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0OyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25mYy9LY29uZmlnPTQyPWNvbmZpZyBORkNfUE9SVDEwMFxuLS1cbmRyaXZlcnMvbmZjL0tjb25maWctNTEtXG5kcml2ZXJzL25mYy9LY29uZmlnOjUyOmNvbmZpZyBORkNfVklSVFVBTF9OQ0lcbmRyaXZlcnMvbmZjL0tjb25maWctNTMtXHR0cmlzdGF0ZSBcJiMzNDtOQ0kgZGV2aWNlIHNpbXVsYXRvciBkcml2ZXJcJiMzNDtcbi0tXG5kcml2ZXJzL25mYy9NYWtlZmlsZT0xOT1vYmotJChDT05GSUdfTkZDX1NUOTVIRilcdCYjNDM7PSBzdDk1aGYvXG5kcml2ZXJzL25mYy9NYWtlZmlsZToyMDpvYmotJChDT05GSUdfTkZDX1ZJUlRVQUxfTkNJKVx0JiM0Mzs9IHZpcnR1YWxfbmNpZGV2Lm9cbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uY2kvY29uZmlnPTI9Q09ORklHX05GQ19OQ0k9eVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbmNpL2NvbmZpZzozOkNPTkZJR19ORkNfVklSVFVBTF9OQ0k9eVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yMyAyMjo0MTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2NDQ3CgkJCQkJCQlvdXRwdXQ6IDExNAoJCQkJCQkJdGhvdWdodHM6IDQ3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQmIzM5O3MgaW50ZXJuYWwgbW9ub2xvZ3VlOgoKKipUaGlua2luZyBUaHJvdWdoIFZpcnR1YWwgTkNJIGZvciBGdXp6aW5nKioKClJpZ2h0LCBgTkZDX1ZJUlRVQUxfTkNJYC4gVGhhdCYjMzk7cyB0aGUgc2ltdWxhdG9yIGRyaXZlciwgaXNuJiMzOTt0IGl0PyBDbGFzc2ljISBTdXBlciBoYW5keSBmb3IgZnV6emluZyB0aGUgTkNJIHN0YWNrLiBObyBuZWVkIHRvIHdvcnJ5IGFib3V0IHJlYWwgaGFyZHdhcmUgYXQgdGhpcyBzdGFnZSwgd2hpY2ggaXMgcHJlY2lzZWx5IHRoZSBiZWF1dHkgb2YgaXQuIEdldHMgbWUgdXAgYW5kIHJ1bm5pbmcgZmFzdC4gSSYjMzk7ZCBiZSByZW1pc3Mgbm90IHRvIGluY2x1ZGUgdGhhdCB3aGVuIEkmIzM5O20gc2V0dGluZyB1cCBteSBmdXp6aW5nIGVudmlyb25tZW50LiBTYXZlcyB0aW1lIGFuZCBhbGxvd3MgbWUgdG8gaXRlcmF0ZSBvbiB0aGUgaW5wdXRzIG11Y2ggZmFzdGVyLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yMyAyMjo0MjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7TkZDX05DSSYjMzQ7LAogICAgJiMzNDtORkNfVklSVFVBTF9OQ0kmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtuY2lfY29yZV9pbml0X3JzcF9wYWNrZXRfdjEmIzM0OywKICAgICYjMzQ7bmNpX2NvcmVfaW5pdF9yc3BfcGFja2V0X3YyJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgbGVuZ3RoIGNoZWNrcyB0byBOQ0kgY29yZSBpbml0IHJlc3BvbnNlIHBhY2tldHMgcGFyc2luZyB0byBwcmV2ZW50IG91dC1vZi1ib3VuZHMgcmVhZHMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBmaXhpbmcgcG90ZW50aWFsIG1lbW9yeSBzYWZldHkgaXNzdWVzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtORkNfTkNJJiMzNDssCiAgICAmIzM0O05GQ19WSVJUVUFMX05DSSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O25jaV9jb3JlX2luaXRfcnNwX3BhY2tldF92MSYjMzQ7LAogICAgJiMzNDtuY2lfY29yZV9pbml0X3JzcF9wYWNrZXRfdjImIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBsZW5ndGggY2hlY2tzIHRvIE5DSSBjb3JlIGluaXQgcmVzcG9uc2UgcGFja2V0cyBwYXJzaW5nIHRvIHByZXZlbnQgb3V0LW9mLWJvdW5kcyByZWFkcy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGZpeGluZyBwb3RlbnRpYWwgbWVtb3J5IHNhZmV0eSBpc3N1ZXMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNi0yM1QyMjo0MToxOC40MDIzMjI5OTVaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0MjMzODM4MDA1MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJORkNfTkNJXCIsXG4gICAgXCJORkNfVklSVFVBTF9OQ0lcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJuY2lfY29yZV9pbml0X3JzcF9wYWNrZXRfdjFcIixcbiAgICBcIm5jaV9jb3JlX2luaXRfcnNwX3BhY2tldF92MlwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgbGVuZ3RoIGNoZWNrcyB0byBOQ0kgY29yZSBpbml0IHJlc3BvbnNlIHBhY2tldHMgcGFyc2luZyB0byBwcmV2ZW50IG91dC1vZi1ib3VuZHMgcmVhZHMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBmaXhpbmcgcG90ZW50aWFsIG1lbW9yeSBzYWZldHkgaXNzdWVzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yM1QyMjo0MToxOC40MDIzMzAxNDVaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ3NTMxMTI5MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IGIxNzUyNzZjZTM0OThjZGE3ODQ4ZDBlN2QyZWRiNzIwZWE1NTY5YzRcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFR1ZSBKdW4gMjMgMjI6NDE6MTcgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvbmV0L25mYy9uY2kvcnNwLmMgYi9uZXQvbmZjL25jaS9yc3AuY1xcbmluZGV4IDllZWI4NjI4MjVjNWZlLi5jZGNkMjNjOGNhOTVmZSAxMDA2NDRcXG4tLS0gYS9uZXQvbmZjL25jaS9yc3AuY1xcbisrKyBiL25ldC9uZmMvbmNpL3JzcC5jXFxuQEAgLTUwLDYgKzUwLDkgQEAgc3RhdGljIHU4IG5jaV9jb3JlX2luaXRfcnNwX3BhY2tldF92MShzdHJ1Y3QgbmNpX2RldiAqbmRldixcXG4gXFx0Y29uc3Qgc3RydWN0IG5jaV9jb3JlX2luaXRfcnNwXzEgKnJzcF8xID0gKHZvaWQgKilza2ItXFx1MDAzZWRhdGE7XFxuIFxcdGNvbnN0IHN0cnVjdCBuY2lfY29yZV9pbml0X3JzcF8yICpyc3BfMjtcXG4gXFxuK1xcdGlmIChza2ItXFx1MDAzZWxlbiBcXHUwMDNjIHNpemVvZigqcnNwXzEpKVxcbitcXHRcXHRyZXR1cm4gTkNJX1NUQVRVU19TWU5UQVhfRVJST1I7XFxuK1xcbiBcXHRwcl9kZWJ1ZyhcXFwic3RhdHVzIDB4JXhcXFxcblxcXCIsIHJzcF8xLVxcdTAwM2VzdGF0dXMpO1xcbiBcXG4gXFx0aWYgKHJzcF8xLVxcdTAwM2VzdGF0dXMgIT0gTkNJX1NUQVRVU19PSylcXG5AQCAtNTgsNiArNjEsMTUgQEAgc3RhdGljIHU4IG5jaV9jb3JlX2luaXRfcnNwX3BhY2tldF92MShzdHJ1Y3QgbmNpX2RldiAqbmRldixcXG4gXFx0bmRldi1cXHUwMDNlbmZjY19mZWF0dXJlcyA9IF9fbGUzMl90b19jcHUocnNwXzEtXFx1MDAzZW5mY2NfZmVhdHVyZXMpO1xcbiBcXHRuZGV2LVxcdTAwM2VudW1fc3VwcG9ydGVkX3JmX2ludGVyZmFjZXMgPSByc3BfMS1cXHUwMDNlbnVtX3N1cHBvcnRlZF9yZl9pbnRlcmZhY2VzO1xcbiBcXG4rXFx0LypcXG4rXFx0ICogc3VwcG9ydGVkX3JmX2ludGVyZmFjZXNbXSBhbmQgdGhlIHRyYWlsaW5nIG5jaV9jb3JlX2luaXRfcnNwXzIgYXJlXFxuK1xcdCAqIGFkZHJlc3NlZCB1c2luZyB0aGUgb24td2lyZSAodW5jbGFtcGVkKSBpbnRlcmZhY2UgY291bnQsIHNvIHRoZVxcbitcXHQgKiByZXNwb25zZSBtdXN0IGJlIGxvbmcgZW5vdWdoIGZvciBib3RoIGJlZm9yZSB0aGV5IGFyZSBkZXJlZmVyZW5jZWQuXFxuK1xcdCAqL1xcbitcXHRpZiAoc2tiLVxcdTAwM2VsZW4gXFx1MDAzYyBzaXplb2YoKnJzcF8xKSArXFxuK1xcdCAgICByc3BfMS1cXHUwMDNlbnVtX3N1cHBvcnRlZF9yZl9pbnRlcmZhY2VzICsgc2l6ZW9mKCpyc3BfMikpXFxuK1xcdFxcdHJldHVybiBOQ0lfU1RBVFVTX1NZTlRBWF9FUlJPUjtcXG4rXFxuIFxcdG5kZXYtXFx1MDAzZW51bV9zdXBwb3J0ZWRfcmZfaW50ZXJmYWNlcyA9XFxuIFxcdFxcdG1pbigoaW50KW5kZXYtXFx1MDAzZW51bV9zdXBwb3J0ZWRfcmZfaW50ZXJmYWNlcyxcXG4gXFx0XFx0ICAgIE5DSV9NQVhfU1VQUE9SVEVEX1JGX0lOVEVSRkFDRVMpO1xcbkBAIC04OCw5ICsxMDAsMTMgQEAgc3RhdGljIHU4IG5jaV9jb3JlX2luaXRfcnNwX3BhY2tldF92MihzdHJ1Y3QgbmNpX2RldiAqbmRldixcXG4ge1xcbiBcXHRjb25zdCBzdHJ1Y3QgbmNpX2NvcmVfaW5pdF9yc3BfbmNpX3ZlcjIgKnJzcCA9ICh2b2lkICopc2tiLVxcdTAwM2VkYXRhO1xcbiBcXHRjb25zdCB1OCAqc3VwcG9ydGVkX3JmX2ludGVyZmFjZSA9IHJzcC1cXHUwMDNlc3VwcG9ydGVkX3JmX2ludGVyZmFjZXM7XFxuK1xcdGNvbnN0IHU4ICplbmQgPSBza2ItXFx1MDAzZWRhdGEgKyBza2ItXFx1MDAzZWxlbjtcXG4gXFx0dTggcmZfaW50ZXJmYWNlX2lkeCA9IDA7XFxuIFxcdHU4IHJmX2V4dGVuc2lvbl9jbnQgPSAwO1xcbiBcXG4rXFx0aWYgKHNrYi1cXHUwMDNlbGVuIFxcdTAwM2Mgc2l6ZW9mKCpyc3ApKVxcbitcXHRcXHRyZXR1cm4gTkNJX1NUQVRVU19TWU5UQVhfRVJST1I7XFxuK1xcbiBcXHRwcl9kZWJ1ZyhcXFwic3RhdHVzICV4XFxcXG5cXFwiLCByc3AtXFx1MDAzZXN0YXR1cyk7XFxuIFxcbiBcXHRpZiAocnNwLVxcdTAwM2VzdGF0dXMgIT0gTkNJX1NUQVRVU19PSylcXG5AQCAtMTA0LDEwICsxMjAsMTYgQEAgc3RhdGljIHU4IG5jaV9jb3JlX2luaXRfcnNwX3BhY2tldF92MihzdHJ1Y3QgbmNpX2RldiAqbmRldixcXG4gXFx0XFx0ICAgIE5DSV9NQVhfU1VQUE9SVEVEX1JGX0lOVEVSRkFDRVMpO1xcbiBcXG4gXFx0d2hpbGUgKHJmX2ludGVyZmFjZV9pZHggXFx1MDAzYyBuZGV2LVxcdTAwM2VudW1fc3VwcG9ydGVkX3JmX2ludGVyZmFjZXMpIHtcXG4tXFx0XFx0bmRldi1cXHUwMDNlc3VwcG9ydGVkX3JmX2ludGVyZmFjZXNbcmZfaW50ZXJmYWNlX2lkeCsrXSA9ICpzdXBwb3J0ZWRfcmZfaW50ZXJmYWNlKys7XFxuK1xcdFxcdC8qIG9uZSBpbnRlcmZhY2UgYnl0ZSArIG9uZSBleHRlbnNpb24tY291bnQgYnl0ZSBtdXN0IGJlIHByZXNlbnQgKi9cXG4rXFx0XFx0aWYgKGVuZCAtIHN1cHBvcnRlZF9yZl9pbnRlcmZhY2UgXFx1MDAzYyAyKVxcbitcXHRcXHRcXHRyZXR1cm4gTkNJX1NUQVRVU19TWU5UQVhfRVJST1I7XFxuK1xcdFxcdG5kZXYtXFx1MDAzZXN1cHBvcnRlZF9yZl9pbnRlcmZhY2VzW3JmX2ludGVyZmFjZV9pZHgrK10gPVxcbitcXHRcXHRcXHQqc3VwcG9ydGVkX3JmX2ludGVyZmFjZSsrO1xcbiBcXG4tXFx0XFx0Lyogc2tpcCByZiBleHRlbnNpb24gcGFyYW1ldGVycyAqL1xcbitcXHRcXHQvKiBza2lwIHJmIGV4dGVuc2lvbiBwYXJhbWV0ZXJzLCBib3VuZGVkIGJ5IHRoZSBwYWNrZXQgKi9cXG4gXFx0XFx0cmZfZXh0ZW5zaW9uX2NudCA9ICpzdXBwb3J0ZWRfcmZfaW50ZXJmYWNlKys7XFxuK1xcdFxcdGlmIChyZl9leHRlbnNpb25fY250IFxcdTAwM2UgZW5kIC0gc3VwcG9ydGVkX3JmX2ludGVyZmFjZSlcXG4rXFx0XFx0XFx0cmV0dXJuIE5DSV9TVEFUVVNfU1lOVEFYX0VSUk9SO1xcbiBcXHRcXHRzdXBwb3J0ZWRfcmZfaW50ZXJmYWNlICs9IHJmX2V4dGVuc2lvbl9jbnQ7XFxuIFxcdH1cXG4gXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTIzVDIyOjQxOjE4Ljg3ODU0MjQ4NloiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDE4NjIxNDQ4NjEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTkZDX05DSVwiLFxuICAgIFwiTkZDX1ZJUlRVQUxfTkNJXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwibmNpX2NvcmVfaW5pdF9yc3BfcGFja2V0X3YxXCIsXG4gICAgXCJuY2lfY29yZV9pbml0X3JzcF9wYWNrZXRfdjJcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIGxlbmd0aCBjaGVja3MgdG8gTkNJIGNvcmUgaW5pdCByZXNwb25zZSBwYWNrZXRzIHBhcnNpbmcgdG8gcHJldmVudCBvdXQtb2YtYm91bmRzIHJlYWRzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgZml4aW5nIHBvdGVudGlhbCBtZW1vcnkgc2FmZXR5IGlzc3Vlcy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdFxuICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LFxuICAgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCBiMTc1Mjc2Y2UzNDk4Y2RhNzg0OGQwZTdkMmVkYjcyMGVhNTU2OWM0XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFR1ZSBKdW4gMjMgMjI6NDE6MTcgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9uZXQvbmZjL25jaS9yc3AuYyBiL25ldC9uZmMvbmNpL3JzcC5jXG5pbmRleCA5ZWViODYyODI1YzVmZS4uY2RjZDIzYzhjYTk1ZmUgMTAwNjQ0XG4tLS0gYS9uZXQvbmZjL25jaS9yc3AuY1xuKysrIGIvbmV0L25mYy9uY2kvcnNwLmNcbkBAIC01MCw2ICs1MCw5IEBAIHN0YXRpYyB1OCBuY2lfY29yZV9pbml0X3JzcF9wYWNrZXRfdjEoc3RydWN0IG5jaV9kZXYgKm5kZXYsXG4gXHRjb25zdCBzdHJ1Y3QgbmNpX2NvcmVfaW5pdF9yc3BfMSAqcnNwXzEgPSAodm9pZCAqKXNrYi1cdTAwM2VkYXRhO1xuIFx0Y29uc3Qgc3RydWN0IG5jaV9jb3JlX2luaXRfcnNwXzIgKnJzcF8yO1xuIFxuK1x0aWYgKHNrYi1cdTAwM2VsZW4gXHUwMDNjIHNpemVvZigqcnNwXzEpKVxuK1x0XHRyZXR1cm4gTkNJX1NUQVRVU19TWU5UQVhfRVJST1I7XG4rXG4gXHRwcl9kZWJ1ZyhcInN0YXR1cyAweCV4XFxuXCIsIHJzcF8xLVx1MDAzZXN0YXR1cyk7XG4gXG4gXHRpZiAocnNwXzEtXHUwMDNlc3RhdHVzICE9IE5DSV9TVEFUVVNfT0spXG5AQCAtNTgsNiArNjEsMTUgQEAgc3RhdGljIHU4IG5jaV9jb3JlX2luaXRfcnNwX3BhY2tldF92MShzdHJ1Y3QgbmNpX2RldiAqbmRldixcbiBcdG5kZXYtXHUwMDNlbmZjY19mZWF0dXJlcyA9IF9fbGUzMl90b19jcHUocnNwXzEtXHUwMDNlbmZjY19mZWF0dXJlcyk7XG4gXHRuZGV2LVx1MDAzZW51bV9zdXBwb3J0ZWRfcmZfaW50ZXJmYWNlcyA9IHJzcF8xLVx1MDAzZW51bV9zdXBwb3J0ZWRfcmZfaW50ZXJmYWNlcztcbiBcbitcdC8qXG4rXHQgKiBzdXBwb3J0ZWRfcmZfaW50ZXJmYWNlc1tdIGFuZCB0aGUgdHJhaWxpbmcgbmNpX2NvcmVfaW5pdF9yc3BfMiBhcmVcbitcdCAqIGFkZHJlc3NlZCB1c2luZyB0aGUgb24td2lyZSAodW5jbGFtcGVkKSBpbnRlcmZhY2UgY291bnQsIHNvIHRoZVxuK1x0ICogcmVzcG9uc2UgbXVzdCBiZSBsb25nIGVub3VnaCBmb3IgYm90aCBiZWZvcmUgdGhleSBhcmUgZGVyZWZlcmVuY2VkLlxuK1x0ICovXG4rXHRpZiAoc2tiLVx1MDAzZWxlbiBcdTAwM2Mgc2l6ZW9mKCpyc3BfMSkgK1xuK1x0ICAgIHJzcF8xLVx1MDAzZW51bV9zdXBwb3J0ZWRfcmZfaW50ZXJmYWNlcyArIHNpemVvZigqcnNwXzIpKVxuK1x0XHRyZXR1cm4gTkNJX1NUQVRVU19TWU5UQVhfRVJST1I7XG4rXG4gXHRuZGV2LVx1MDAzZW51bV9zdXBwb3J0ZWRfcmZfaW50ZXJmYWNlcyA9XG4gXHRcdG1pbigoaW50KW5kZXYtXHUwMDNlbnVtX3N1cHBvcnRlZF9yZl9pbnRlcmZhY2VzLFxuIFx0XHQgICAgTkNJX01BWF9TVVBQT1JURURfUkZfSU5URVJGQUNFUyk7XG5AQCAtODgsOSArMTAwLDEzIEBAIHN0YXRpYyB1OCBuY2lfY29yZV9pbml0X3JzcF9wYWNrZXRfdjIoc3RydWN0IG5jaV9kZXYgKm5kZXYsXG4ge1xuIFx0Y29uc3Qgc3RydWN0IG5jaV9jb3JlX2luaXRfcnNwX25jaV92ZXIyICpyc3AgPSAodm9pZCAqKXNrYi1cdTAwM2VkYXRhO1xuIFx0Y29uc3QgdTggKnN1cHBvcnRlZF9yZl9pbnRlcmZhY2UgPSByc3AtXHUwMDNlc3VwcG9ydGVkX3JmX2ludGVyZmFjZXM7XG4rXHRjb25zdCB1OCAqZW5kID0gc2tiLVx1MDAzZWRhdGEgKyBza2ItXHUwMDNlbGVuO1xuIFx0dTggcmZfaW50ZXJmYWNlX2lkeCA9IDA7XG4gXHR1OCByZl9leHRlbnNpb25fY250ID0gMDtcbiBcbitcdGlmIChza2ItXHUwMDNlbGVuIFx1MDAzYyBzaXplb2YoKnJzcCkpXG4rXHRcdHJldHVybiBOQ0lfU1RBVFVTX1NZTlRBWF9FUlJPUjtcbitcbiBcdHByX2RlYnVnKFwic3RhdHVzICV4XFxuXCIsIHJzcC1cdTAwM2VzdGF0dXMpO1xuIFxuIFx0aWYgKHJzcC1cdTAwM2VzdGF0dXMgIT0gTkNJX1NUQVRVU19PSylcbkBAIC0xMDQsMTAgKzEyMCwxNiBAQCBzdGF0aWMgdTggbmNpX2NvcmVfaW5pdF9yc3BfcGFja2V0X3YyKHN0cnVjdCBuY2lfZGV2ICpuZGV2LFxuIFx0XHQgICAgTkNJX01BWF9TVVBQT1JURURfUkZfSU5URVJGQUNFUyk7XG4gXG4gXHR3aGlsZSAocmZfaW50ZXJmYWNlX2lkeCBcdTAwM2MgbmRldi1cdTAwM2VudW1fc3VwcG9ydGVkX3JmX2ludGVyZmFjZXMpIHtcbi1cdFx0bmRldi1cdTAwM2VzdXBwb3J0ZWRfcmZfaW50ZXJmYWNlc1tyZl9pbnRlcmZhY2VfaWR4KytdID0gKnN1cHBvcnRlZF9yZl9pbnRlcmZhY2UrKztcbitcdFx0Lyogb25lIGludGVyZmFjZSBieXRlICsgb25lIGV4dGVuc2lvbi1jb3VudCBieXRlIG11c3QgYmUgcHJlc2VudCAqL1xuK1x0XHRpZiAoZW5kIC0gc3VwcG9ydGVkX3JmX2ludGVyZmFjZSBcdTAwM2MgMilcbitcdFx0XHRyZXR1cm4gTkNJX1NUQVRVU19TWU5UQVhfRVJST1I7XG4rXHRcdG5kZXYtXHUwMDNlc3VwcG9ydGVkX3JmX2ludGVyZmFjZXNbcmZfaW50ZXJmYWNlX2lkeCsrXSA9XG4rXHRcdFx0KnN1cHBvcnRlZF9yZl9pbnRlcmZhY2UrKztcbiBcbi1cdFx0Lyogc2tpcCByZiBleHRlbnNpb24gcGFyYW1ldGVycyAqL1xuK1x0XHQvKiBza2lwIHJmIGV4dGVuc2lvbiBwYXJhbWV0ZXJzLCBib3VuZGVkIGJ5IHRoZSBwYWNrZXQgKi9cbiBcdFx0cmZfZXh0ZW5zaW9uX2NudCA9ICpzdXBwb3J0ZWRfcmZfaW50ZXJmYWNlKys7XG4rXHRcdGlmIChyZl9leHRlbnNpb25fY250IFx1MDAzZSBlbmQgLSBzdXBwb3J0ZWRfcmZfaW50ZXJmYWNlKVxuK1x0XHRcdHJldHVybiBOQ0lfU1RBVFVTX1NZTlRBWF9FUlJPUjtcbiBcdFx0c3VwcG9ydGVkX3JmX2ludGVyZmFjZSArPSByZl9leHRlbnNpb25fY250O1xuIFx0fVxuIFxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjNUMjI6NDE6MTguODc4NTQ4ODI2WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDY0MzQ0MDA5MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBQYXRjaCBmb3IgTkZDIFNhZmV0eSoqXG5cbk9rYXksIHNvIEkndmUgZ290IGEgcGF0Y2ggaGVyZSB0aGF0J3MgcG9raW5nIGF0IGBuZXQvbmZjL25jaS9yc3AuY2AuIFNlZW1zIGxpa2UgdGhleSdyZSBhZGRpbmcgc29tZSBjcnVjaWFsIGxlbmd0aCBjaGVja3MgdG8gdGhlIGBuY2lfY29yZV9pbml0X3JzcF9wYWNrZXRfdjFgIGFuZCBgbmNpX2NvcmVfaW5pdF9yc3BfcGFja2V0X3YyYCBmdW5jdGlvbnMuIFNtYXJ0IG1vdmUuIFRoaXMgaXMgZXhhY3RseSB0aGUga2luZCBvZiBwcm9hY3RpdmUgbWVhc3VyZSB3ZSBuZWVkIHRvIHByZXZlbnQgdGhvc2UgbmFzdHkgb3V0LW9mLWJvdW5kcyByZWFkIHZ1bG5lcmFiaWxpdGllcyB3aGVuIHBhcnNpbmcgTkNJIGNvcmUgaW5pdCByZXNwb25zZXMuIEl0J3MgYSBmdW5jdGlvbmFsIGZpeCwgYWRkcmVzc2luZyBwb3RlbnRpYWwgbWVtb3J5IHNhZmV0eSBpc3N1ZXMuIFRoaXMgaXMgZXhhY3RseSB0aGUga2luZCBvZiB0aGluZyB0aGF0IG1ha2VzIG1lIGdvLCBcIlllcCwgdGhhdCBuZWVkcyBmdXp6aW5nIGltbWVkaWF0ZWx5LlwiXG5cblRpbWUgdG8gZ2V0IGludG8gdGhpcyBhIGJpdCBkZWVwZXIuIExldCdzIHNlZS4uLiB0aGUgZm9jdXMgaGVyZSBpcyBkZWZpbml0ZWx5IG9uIHRob3NlIHR3byBmdW5jdGlvbnM6IGBuY2lfY29yZV9pbml0X3JzcF9wYWNrZXRfdjFgIGFuZCBgbmNpX2NvcmVfaW5pdF9yc3BfcGFja2V0X3YyYC4gTm93LCBsZXQncyBpZGVudGlmeSByZWxldmFudCBjb25maWdzLiBJJ20gZ29pbmcgdG8ganVtcCBpbnRvIGBuZXQvbmZjL25jaS9yc3AuY2AgZGlyZWN0bHkgYW5kIHN0YXJ0IGRpZ2dpbmcgYXJvdW5kIHRoZSBLY29uZmlnIHRvIHNlZSB3aGF0IHdlJ3JlIGxvb2tpbmcgYXQgaGVyZS4gVGhpcyBsb29rcyBsaWtlIGEgc29saWQgY29udHJpYnV0aW9uLiBMZXQncyBnZXQgdG8gd29yay5cblxuXG4iLCJJbnB1dFRva2VucyI6MjY0MiwiT3V0cHV0VG9rZW5zIjozMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE2NCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTIzVDIyOjQxOjIzLjUyMTk5MTU3OFoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2NTEwNDMzOCwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIE5DSVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvbmZjL25jaS9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yM1QyMjo0MToyMy41ODcxMTM0MjdaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMjU1MTY5NTQ4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBJIHdlcmUgY29uc2lkZXJpbmcgdGhpcyBteXNlbGYsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqTG9jYXRpbmcgdGhlIE5DSSBLY29uZmlnIEZpbGUqKlxuXG5BbHJpZ2h0LCB0aW1lIHRvIGdldCB0aGlzIEtjb25maWcgc2l0dWF0aW9uIHNvcnRlZCBmb3IgTkNJLiBNeSBmaXJzdCBpbnN0aW5jdCwgYXMgYWx3YXlzLCBpcyB0byBkaXZlIHN0cmFpZ2h0IGludG8gdGhlIHJlbGV2YW50IHNvdXJjZSB0cmVlLiBJIG5lZWQgdG8gZmlndXJlIG91dCB3aGVyZSB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zIGZvciB0aGUgTkNJIChORkMgQ29udHJvbGxlciBJbnRlcmZhY2UpIG1vZHVsZSByZXNpZGUuIEdpdmVuIG15IGZhbWlsaWFyaXR5IHdpdGggaG93IHRoZXNlIHN5c3RlbXMgYXJlIHR5cGljYWxseSBzdHJ1Y3R1cmVkLCBJJ20gZXhwZWN0aW5nIGl0IHRvIGZvbGxvdyBhIHJlbGF0aXZlbHkgc3RhbmRhcmQgcGF0dGVybi5cblxuSSdsbCBiZSBsb29raW5nIGZvciBhIGZpbGUgbmFtZWQgc29tZXRoaW5nIGFsb25nIHRoZSBsaW5lcyBvZiBgS2NvbmZpZy5uY2lgIG9yIHBlcmhhcHMgYG5jaS9LY29uZmlnYCwgb3Igc29tZXRoaW5nIHJlZmxlY3RpbmcgdGhlIG5hbWluZyBjb252ZW50aW9uIG9mIHRoZSBzcGVjaWZpYyBwbGF0Zm9ybSBJIGFtIHdvcmtpbmcgd2l0aC4gVGhlIGtleSBpcyB0byBmaW5kIHRoZSBjZW50cmFsIHBvaW50IG9mIGNvbnRyb2wgZm9yIHRoZSBOQ0ktcmVsYXRlZCBjb25maWd1cmF0aW9uIG9wdGlvbnMuIEknbGwgbmVlZCB0byBjaGVjayB0aGUgaGlnaGVyIGxldmVsIEtjb25maWcgZmlsZXMgZm9yIGluY2x1ZGVzLCBsaWtlbHkgd2l0aGluIHRoZSBORkMgb3IgQ29ubmVjdGl2aXR5IHNlY3Rpb25zLCBkZXBlbmRpbmcgb24gaG93IHRoZXkndmUgb3JnYW5pemVkIHRoYXQgcG9ydGlvbiBvZiB0aGUgS2NvbmZpZyB0cmVlLiBJIGtub3cgZnJvbSBleHBlcmllbmNlIHRoYXQgZ29vZCBLY29uZmlnIGRlc2lnbiB1c3VhbGx5IGhhcyBhIGNsZWFyIGhpZXJhcmNoeS4gVGltZSB0byBzdGFydCBuYXZpZ2F0aW5nIHRoZSB1c3VhbCBzdXNwZWN0cyBpbiB0aGUgYnVpbGQgc3lzdGVtLlxuXG5cbiIsIklucHV0VG9rZW5zIjozMTE5LCJPdXRwdXRUb2tlbnMiOjI1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjNUMjI6NDE6MjYuODQyMjg1ODY0WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiY29kZXNlYXJjaC1kaXItaW5kZXgiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3MTY2MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkRpclwiOiBcIm5ldC9uZmMvbmNpXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIkZpbGVzXCI6IFtcbiAgICBcImNvcmUuY1wiLFxuICAgIFwiZGF0YS5jXCIsXG4gICAgXCJoY2kuY1wiLFxuICAgIFwibGliLmNcIixcbiAgICBcIm50Zi5jXCIsXG4gICAgXCJyc3AuY1wiLFxuICAgIFwic3BpLmNcIixcbiAgICBcInVhcnQuY1wiXG4gIF0sXG4gIFwiU3ViZGlyc1wiOiBudWxsXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yM1QyMjo0MToyNi44NDIzNjA0NTRaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNTE1MDU2MDkzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIGFzc3VtaW5nIEknbSB3ZWxsLXZlcnNlZCBpbiBrZXJuZWwgZGV2ZWxvcG1lbnQgYW5kIE5GQzpcblxuKipNaXNzaW5nIENvbmZpZ3VyYXRpb24gYW5kIFNlZWtpbmcgdGhlIFNvdXJjZSoqXG5cblJpZ2h0LCBzbyBJJ20gbG9va2luZyBhdCB0aGUgYG5ldC9uZmMvbmNpYCBkaXJlY3RvcnkgYW5kIEkgZG9uJ3Qgc2VlIHRoZSB1c3VhbCBLY29uZmlnIGZpbGUuIFRoYXQncyBhIGJpdCBvZGQ7IHVzdWFsbHksIGV2ZXJ5IG1ham9yIHN1YnN5c3RlbSBoYXMgaXRzIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBkZWZpbmVkIHdpdGhpbiBhIEtjb25maWcgZmlsZS4gSSdsbCBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hlcmUgdGhlIGNvbmZpZ3VyYXRpb24gZm9yIHRoaXMgcGFydCBvZiB0aGUgTkZDIHN0YWNrIGFjdHVhbGx5IHJlc2lkZXMuIE15IGludHVpdGlvbiBpcyB0ZWxsaW5nIG1lIHRoYXQgaXQgbWlnaHQgYmUgZGVmaW5lZCBpbiB0aGUgcGFyZW50IGRpcmVjdG9yeS4gTGV0J3Mgc3RhcnQgd2l0aCBhIHF1aWNrIGNoZWNrIG9mIGBuZXQvbmZjL0tjb25maWdgLiBJdCdzIHRoZSBtb3N0IGxvZ2ljYWwgcGxhY2UgdG8gYmVnaW4gbG9va2luZyBmb3IgdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBjb250cm9sbGluZyB0aGlzIGFzcGVjdCBvZiB0aGUgTkZDIHN1YnN5c3RlbS4gTGV0J3Mgc2VlIHdoYXQncyBpbiB0aGVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MzQ2MCwiT3V0cHV0VG9rZW5zIjozMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMwLCJUb29sQ2FsbHMiOlsiY29kZXNlYXJjaC1kaXItaW5kZXgiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yM1QyMjo0MTozMC4zNTc0MTg1OTdaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTc2Nzc5NDg3LCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgTkNJXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9uZmMvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjNUMjI6NDE6MzAuNTM0MjA4MTA0WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mjc3MjM0Njk2NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaWYgSSB3ZXJlIGNvbnNpZGVyaW5nIHRoaXMgbXlzZWxmOlxuXG4qKkludmVzdGlnYXRpbmcgTkNJIENvbmZpZ3VyYXRpb24qKlxuXG5Pa2F5LCBzbyBJIG5lZWQgdG8gY2hlY2sgdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyByZWxhdGVkIHRvIE5DSSAoTkZDIENvbnRyb2xsZXIgSW50ZXJmYWNlKS4gV2hlcmUgd291bGQgSSBmaW5kIHRoZSByZWxldmFudCBzZXR0aW5ncz8gTXkgZmlyc3QgaW5zdGluY3QgaXMgdG8gbG9vayB3aXRoaW4gdGhlIE5GQy1zcGVjaWZpYyBjb25maWd1cmF0aW9uIGZpbGVzLiBUaGUga2VybmVsJ3MgY29uZmlndXJhdGlvbiBzeXN0ZW0gaXMgZmFpcmx5IG9yZ2FuaXplZCwgc28gSSdsbCBnbyBzdHJhaWdodCB0byBgbmV0L25mYy9LY29uZmlnYC4gVGhpcyBzZWVtcyBsaWtlIHRoZSBtb3N0IGxvZ2ljYWwgc3RhcnRpbmcgcG9pbnQgZm9yIGRlZmluaW5nIGFuZCBlbmFibGluZyBOQ0kgZnVuY3Rpb25hbGl0eSB3aXRoaW4gdGhlIGtlcm5lbC4gSSBleHBlY3QgdG8gZmluZCBvcHRpb25zIHJlbGF0ZWQgdG8gTkNJJ3MgY29yZSBmZWF0dXJlcywgZHJpdmVyIHNlbGVjdGlvbiwgYW5kIGFueSBuZWNlc3NhcnkgZGVwZW5kZW5jaWVzIHRoZXJlLiBMZXQncyBzZWUgd2hhdCdzIGluc2lkZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MzcwOSwiT3V0cHV0VG9rZW5zIjoyOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTIzVDIyOjQxOjMzLjMwNjU1NzY5MVoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTgxNDUzMTg2LCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJOQ0lcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L25mYy9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yM1QyMjo0MTozMy40ODgwMjY3NThaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mjg0MDc1NDM4NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHN1bW1hcnksIHRha2luZyB0aGUgcGVyc3BlY3RpdmUgb2Ygc29tZW9uZSBmYW1pbGlhciB3aXRoIGVtYmVkZGVkIHN5c3RlbXMgYW5kIEtjb25maWc6XG5cbioqRGVidWdnaW5nIHRoZSBOQ0kgQ29uZmlndXJhdGlvbioqXG5cbkhtbSwgaG9sZCBvbiBhIHNlY29uZC4gSSdtIHRyeWluZyB0byBjb25maWd1cmUgdGhlIE5DSSAoTkZDIENvbnRyb2xsZXIgSW50ZXJmYWNlKSBtb2R1bGUsIGJ1dCBJIHNlZW0gdG8gYmUgbWlzc2luZyBzb21ldGhpbmcuIFdoZXJlJ3MgdGhlIGNvbmZpZ3VyYXRpb24gZmlsZT8gSSBjYW4ndCBzZWVtIHRvIGxvY2F0ZSB0aGUgcmVsZXZhbnQgS2NvbmZpZyBmaWxlIGZvciB0aGUgTkNJIGltcGxlbWVudGF0aW9uLiBUaGlzIGlzIGEgY29tbW9uIHNpdHVhdGlvbiwgaXQncyB0aGUgY3JpdGljYWwgZmlsZSBmb3Igc2VsZWN0aW5nIHRoZSBhdmFpbGFibGUgZmVhdHVyZXMgYW5kIG9wdGlvbnMgb2YgdGhlIE5DSSBtb2R1bGUgZHVyaW5nIHRoZSBidWlsZCBwcm9jZXNzLiBXaXRob3V0IGl0LCBJJ20gZXNzZW50aWFsbHkgYmxpbmQsIHVuYWJsZSB0byB0YWlsb3IgdGhlIE5DSSdzIGJlaGF2aW9yIHRvIHRoZSBzcGVjaWZpYyBoYXJkd2FyZSBwbGF0Zm9ybSBvciBhcHBsaWNhdGlvbiByZXF1aXJlbWVudHMuIEkgbmVlZCB0byBmaW5kIHRoYXQgS2NvbmZpZyBmaWxlIHNvIEkgY2FuIHNldCB0aGUgZGVzaXJlZCBwYXJhbWV0ZXJzIGFuZCBwcm9jZWVkIHdpdGggdGhlIGJ1aWxkLiBOb3cgSSBqdXN0IG5lZWQgdG8gZmluZCBpdCBhbmQgZmlndXJlIG91dCB3aGVyZSB0aGUgYnVpbGQgc3lzdGVtIGV4cGVjdHMgaXQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM5MTMsIk91dHB1dFRva2VucyI6MjksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yM1QyMjo0MTozNi4zMjg3ODM2MjNaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU3OTI2MTU5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm5jaS9cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L25mYy9NYWtlZmlsZVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvbmZjL01ha2VmaWxlPTY9b2JqLSQoQ09ORklHX05GQykgKz0gbmZjLm9cXG5uZXQvbmZjL01ha2VmaWxlOjc6b2JqLSQoQ09ORklHX05GQ19OQ0kpICs9IG5jaS9cXG5uZXQvbmZjL01ha2VmaWxlLTgtb2JqLSQoQ09ORklHX05GQ19IQ0kpICs9IGhjaS9cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjNUMjI6NDE6MzYuMzg2NzE1MjcyWiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMzNDg3OTU1NjYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqVHJhY2luZyBEb3duIENPTkZJR19ORkNfTkNJKipcblxuT2theSwgc28gYENPTkZJR19ORkNfTkNJYC4gVGhhdCdzIHRoZSBrZXkuIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoZXJlIHRoYXQncyBkZWZpbmVkIGluIHRoZSBidWlsZCBzeXN0ZW0uIElzIGl0IGluIGEgS2NvbmZpZyBmaWxlPyBBIE1ha2VmaWxlPyBTb21lIG9ic2N1cmUgYXV0b2NvbmYgc2NyaXB0PyBJJ2xsIHByb2JhYmx5IHN0YXJ0IHdpdGggYSBgZ3JlcGAgdGhyb3VnaCB0aGUgcmVsZXZhbnQga2VybmVsIHNvdXJjZSBkaXJlY3Rvcmllcy4gSSdsbCBuZWVkIHRvIHJlbWVtYmVyIHdoZXJlIE5GQyBpcyB1c3VhbGx5IGxvY2F0ZWQgd2l0aGluIHRoZSB0cmVlLiBJdCdzIGxpa2VseSB3aXRoaW4gYSBzdWJkaXJlY3Rvcnkgb2YgZHJpdmVycy8sIG1heWJlIGRyaXZlcnMvbmZjLyBvciBkcml2ZXJzL25ldC9uZmMvLCBvciBwZXJoYXBzIGV2ZW4gYXJjaGl0ZWN0dXJlLXNwZWNpZmljIGNvbmZpZ3MgaWYgaXQncyBkZXBlbmRlbnQgb24gYSBwYXJ0aWN1bGFyIHBsYXRmb3JtLiBJJ2xsIGFsc28gY2hlY2sgaWYgdGhlcmUncyBhbnkgaW5jbHVkZSBmaWxlIHRoYXQgbWlnaHQgYmUgcmVsZXZhbnQuIE15IGFpbSBoZXJlIGlzIHRvIGxvY2F0ZSB0aGUgZXhhY3QgS2NvbmZpZyBzeW1ib2wgZGVmaW5pdGlvbiwgc28gSSBrbm93IGhvdyB0aGUgZmVhdHVyZSBpcyBjb25maWd1cmVkIGFuZCB3aGF0IGRlcGVuZGVuY2llcyBpdCBtaWdodCBoYXZlLiBUaGlzIGFsc28gdGVsbHMgbWUgd2hhdCBvdGhlciBjb25maWd1cmF0aW9ucyByZWxhdGUgdG8gTkZDLU5DSS4gV2l0aCB0aGF0IGtub3dsZWRnZSwgSSBjYW4gZmlndXJlIG91dCB3aHkgdGhlIHVzZXIgaXMgYXNraW5nIGFib3V0IGl0IGFuZCBkZXRlcm1pbmUgYSBzb2x1dGlvbi4gSSdsbCBzZWFyY2ggZm9yIHRoaW5ncyBsaWtlIGBjb25maWcgTkZDX05DSWAsIGBkZXBlbmRzIG9uIE5GQ2AsIGV0Yy4sIHRvIGdldCBhIGNsZWFyIHBpY3R1cmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQyMTksIk91dHB1dFRva2VucyI6MjUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yM1QyMjo0MTozOS43MzU1MTMzMThaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIzNjI1ODQ5MTUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIE5GQ19OQ0lcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9uZmMvbmNpL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG5uZXQvbmZjL25jaS9LY29uZmlnOjI6Y29uZmlnIE5GQ19OQ0lcXG5uZXQvbmZjL25jaS9LY29uZmlnLTMtXFx0ZGVwZW5kcyBvbiBORkNcXG4tLVxcbm5ldC9uZmMvbmNpL0tjb25maWctMTItXFxubmV0L25mYy9uY2kvS2NvbmZpZzoxMzpjb25maWcgTkZDX05DSV9TUElcXG5uZXQvbmZjL25jaS9LY29uZmlnLTE0LVxcdGRlcGVuZHMgb24gTkZDX05DSSBcXHUwMDI2XFx1MDAyNiBTUElcXG4tLVxcbm5ldC9uZmMvbmNpL0tjb25maWctMjMtXFxubmV0L25mYy9uY2kvS2NvbmZpZzoyNDpjb25maWcgTkZDX05DSV9VQVJUXFxubmV0L25mYy9uY2kvS2NvbmZpZy0yNS1cXHRkZXBlbmRzIG9uIE5GQ19OQ0kgXFx1MDAyNlxcdTAwMjYgVFRZXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTIzVDIyOjQxOjQyLjA5ODEwNDUxM1oiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNDUzNDUwOTM0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkRlYnVnZ2luZyBhIFBvdGVudGlhbCBDb25maWd1cmF0aW9uIElzc3VlKipcblxuT2theSwgc28gSSB0aGluayBJJ3ZlIG1hZGUgYSB0eXBvIHNvbWV3aGVyZSBpbiB0aGUgcGF0aC4gSXQgbG9va3MgbGlrZSB0aGUgcmVsZXZhbnQgY29uZmlndXJhdGlvbiBpcyByZWxhdGVkIHRvIGBORkNfTkNJYC4gSSdtIGdvaW5nIHRvIHN0YXJ0IGJ5IGNvbmZpcm1pbmcgdGhhdCBhc3N1bXB0aW9uIGFuZCBxdWlja2x5IHNjYW5uaW5nIGZvciBhbnkgb3RoZXIgcG90ZW50aWFsIGNvbmZpZ3VyYXRpb24gZmlsZXMgdGhhdCBtaWdodCBiZSByZWxldmFudCB0byB0aGlzIGFyZWEuIE5leHQsIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQncyBiZWVuIGNoYW5nZWQuIFRoZSBwYXRjaCBzZWVtcyB0byBiZSBtb2RpZnlpbmcgYG5ldC9uZmMvbmNpL3JzcC5jYC4gVGhhdCB0ZWxscyBtZSB0aGUgbGlrZWx5IGFyZWEgSSBzaG91bGQgYmUgbG9va2luZyBhdC4gSnVzdCB0byBiZSB0aG9yb3VnaCBhbmQgYmVjYXVzZSBpdCdzIGdvb2QgcHJhY3RpY2UsIGxldCBtZSBhbHNvIGNoZWNrIHRoZSBgbmV0L25mYy9uY2kvTWFrZWZpbGVgLiBUaGF0IHdpbGwgZ2l2ZSBtZSBhIGJyb2FkZXIgdW5kZXJzdGFuZGluZyBvZiB0aGUgYnVpbGQgcHJvY2VzcyBhbmQgYW55IHBvdGVudGlhbCBkZXBlbmRlbmNpZXMgb3IgYnVpbGQgZmxhZ3MgdGhhdCBtaWdodCBiZSBpbmZsdWVuY2luZyB0aGlzIG1vZHVsZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NDcyOCwiT3V0cHV0VG9rZW5zIjozMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjY3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTIzVDIyOjQxOjQ1LjU1MTU1ODExN1oiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTgwMjM0NjA3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInJzcC5vXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9uZmMvbmNpL01ha2VmaWxlXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9uZmMvbmNpL01ha2VmaWxlPTY9b2JqLSQoQ09ORklHX05GQ19OQ0kpICs9IG5jaS5vXFxubmV0L25mYy9uY2kvTWFrZWZpbGUtNy1cXG5uZXQvbmZjL25jaS9NYWtlZmlsZTo4Om5jaS1vYmpzIDo9IGNvcmUubyBkYXRhLm8gbGliLm8gbnRmLm8gcnNwLm8gaGNpLm9cXG5uZXQvbmZjL25jaS9NYWtlZmlsZS05LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yM1QyMjo0MTo0NS43MzE4MDA0NDRaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDIyNjcyNzEzOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipORkMgQ29uZmlndXJhdGlvbiBhbmQgQ29yZSBJbml0aWFsaXphdGlvbioqXG5cbk9rYXksIHNvIEknbSB0YWtpbmcgYSBsb29rIGF0IHRoaXMgTkZDIGNvbmZpZ3VyYXRpb24uIEl0IHNlZW1zIGxpa2Ugc2V0dGluZyBgQ09ORklHX05GQ19OQ0lgIHNob3VsZCBiZSB0aGUgb25seSBjb25maWcgbmVlZGVkLCByaWdodD8gQnV0IGhvbGQgb24gYSBzZWNvbmQuLi4gaXNuJ3QgYE5GQ19OQ0lgIGRlcGVuZGVudCBvbiB0aGUgYmFzZSBgTkZDYCBmZWF0dXJlPyBSaWdodCwgc28gYWN0dWFsbHksIHNldHRpbmcgYE5GQ19OQ0lgIHNob3VsZCBpbXBsaWNpdGx5IGVuYWJsZSBgTkZDYC4gVGhhdCdzIGdvb2Q7IGl0IHNpbXBsaWZpZXMgdGhpbmdzLiBJIHNob3VsZCBiZSBhYmxlIHRvIGp1c3QgbGlzdCB0aGUgYE5GQ19OQ0lgIGZlYXR1cmVzLlxuXG5Ob3csIEkgbmVlZCB0byBjaGVjayBzb21lIHNwZWNpZmljIHN5bWJvbHMgcmVsYXRlZCB0byB0aGUgaW5pdGlhbGl6YXRpb24gb2YgdGhlIE5DSSBjb3JlLiBTcGVjaWZpY2FsbHksIEkgbmVlZCB0byB2ZXJpZnkgd2hhdCB2ZXJzaW9ucyBhcmUgc3VwcG9ydGVkIGZvciB0aGUgY29yZSBpbml0aWFsaXphdGlvbiByZXNwb25zZSBwYWNrZXQuIFRoZSBrZXkgc3ltYm9scyBJIGhhdmUgaW4gbWluZCBhcmUgYG5jaV9jb3JlX2luaXRfcnNwX3BhY2tldF92MWAgYW5kIGBuY2lfY29yZV9pbml0X3JzcF9wYWNrZXRfdjJgLlxuXG5MZXQgbWUgcXVpY2tseSBjb25maXJtIHRoYXQgdGhlc2UgZnVuY3Rpb25zIGFyZSBhY3R1YWxseSBkZWZpbmVkIHdoZXJlIHRoZXkgc2hvdWxkIGJlLCBpbiBgbmV0L25mYy9uY2kvcnNwLmNgLiBJIGhhdmUgYSBodW5jaCwgYnV0IHZlcmlmeWluZyBpcyBhbHdheXMgYmVzdCBwcmFjdGljZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NTA5NSwiT3V0cHV0VG9rZW5zIjo0NCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEwNCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yM1QyMjo0MTo0OS45NTg1MzAxNzNaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU4OTYxOTA5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm5jaV9jb3JlX2luaXRfcnNwX3BhY2tldF92MVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvbmZjL25jaS9yc3AuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvbmZjL25jaS9yc3AuYz0yOD1zdGF0aWMgdm9pZCBuY2lfY29yZV9yZXNldF9yc3BfcGFja2V0KHN0cnVjdCBuY2lfZGV2ICpuZGV2LFxcbi0tXFxubmV0L25mYy9uY2kvcnNwLmMtNDYtXFxubmV0L25mYy9uY2kvcnNwLmM6NDc6c3RhdGljIHU4IG5jaV9jb3JlX2luaXRfcnNwX3BhY2tldF92MShzdHJ1Y3QgbmNpX2RldiAqbmRldixcXG5uZXQvbmZjL25jaS9yc3AuYy00OC1cXHRcXHRcXHRcXHQgICAgICBjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbi0tXFxubmV0L25mYy9uY2kvcnNwLmM9MTQ2PXN0YXRpYyB2b2lkIG5jaV9jb3JlX2luaXRfcnNwX3BhY2tldChzdHJ1Y3QgbmNpX2RldiAqbmRldiwgY29uc3Qgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG4tLVxcbm5ldC9uZmMvbmNpL3JzcC5jLTE1MC1cXHRpZiAoIShuZGV2LVxcdTAwM2VuY2lfdmVyIFxcdTAwMjYgTkNJX1ZFUl8yX01BU0spKVxcbm5ldC9uZmMvbmNpL3JzcC5jOjE1MTpcXHRcXHRzdGF0dXMgPSBuY2lfY29yZV9pbml0X3JzcF9wYWNrZXRfdjEobmRldiwgc2tiKTtcXG5uZXQvbmZjL25jaS9yc3AuYy0xNTItXFx0ZWxzZVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yM1QyMjo0MTo1MC4wMTc1MDE5MzJaIiwiU2VxIjoxOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDg2ODM4MDAxNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50IG9mIHRoZSBOQ0kgQ29yZSBJbml0IFJlc3BvbnNlIFBhdGNoKipcblxuT2theSwgc28gdGhpcyBwYXRjaCBkaXJlY3RseSBhZGRyZXNzZXMgYSBjcml0aWNhbCBpc3N1ZTogbWlzc2luZyBsZW5ndGggY2hlY2tzIGluIGhvdyB3ZSBwYXJzZSBOQ0kgY29yZSBpbml0aWFsaXphdGlvbiByZXNwb25zZXMuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCB5ZXMsIGFic29sdXRlbHksIHRoaXMgaXMgYSBtZW1vcnkgc2FmZXR5IGZpeC4gSXQncyBhIGZ1bmN0aW9uYWwgY2hhbmdlLCBwcmV2ZW50aW5nIHBvdGVudGlhbCBvdXQtb2YtYm91bmRzIHJlYWRzIGR1cmluZyB0aGUgcmVzcG9uc2UgcGFyc2luZywgd2hpY2ggaXMgcHJlY2lzZWx5IHRoZSBraW5kIG9mIHZ1bG5lcmFiaWxpdHkgd2Ugd2FudCB0byBzcXVhc2guIGBXb3J0aEZ1enppbmdgPyBBYnNvbHV0ZWx5LiBUaGlzIGlzIGEgcHJpbWUgdGFyZ2V0LlxuXG5NeSBpbnZlc3RpZ2F0aW9uIG9mIHRoZSBjb25maWdzIHJlcXVpcmVkIGZvciByZXByb2R1Y2luZyB0aGUgaXNzdWUgb3IgdmVyaWZ5aW5nIHRoZSBmaXggaW5kaWNhdGVzIHRoYXQgYE5GQ19OQ0lgIGlzIHRoZSBwcmltYXJ5LCBwZXJoYXBzIG9ubHksIHJlbGV2YW50IGNvbmZpZ3VyYXRpb24uIEhvd2V2ZXIsIEkgbmVlZCB0byBiZSB0aG9yb3VnaC4gSSdtIGdvaW5nIHRvIHF1aWNrbHkgY2hlY2sgZm9yIGFueSByZWxhdGVkIGNvbmZpZ3VyYXRpb25zLiBNYXliZSBgTkZDX1ZJUlRVQUxfTkNJYCBpbiBwYXJ0aWN1bGFyPyBJJ2xsIHByb2JhYmx5IGxvb2sgaW50byBgZHJpdmVycy9uZmMvdmlydHVhbF9uY2lkZXYuY2Agb3IgYSBzaW1pbGFyIGZpbGUgdG8gY29uZmlybSB0aGVyZSBhcmVuJ3QgYW55IG90aGVyIGNvbmZpZ3MgSSBuZWVkIHRvIGJlIGF3YXJlIG9mLiBUaGUgYEZvY3VzU3ltYm9sc2AgYXJlIHByZXR0eSBzdHJhaWdodGZvcndhcmQ6IHdlJ3JlIGZvY3VzaW5nIG9uIGBuY2lfY29yZV9pbml0X3JzcF9wYWNrZXRfdjFgIGFuZCBgbmNpX2NvcmVfaW5pdF9yc3BfcGFja2V0X3YyYCwgc28gdGhhdCdzIHdoZXJlIEkgbmVlZCB0byBsb29rLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1NzY0LCJPdXRwdXRUb2tlbnMiOjI2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTgxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTIzVDIyOjQxOjU0Ljg4NTg4NDg3OVoiLCJTZXEiOjIwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjQzNzEwNTgxNCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJORkNfVklSVFVBTFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZmMvS2NvbmZpZz00Mj1jb25maWcgTkZDX1BPUlQxMDBcXG4tLVxcbmRyaXZlcnMvbmZjL0tjb25maWctNTEtXFxuZHJpdmVycy9uZmMvS2NvbmZpZzo1Mjpjb25maWcgTkZDX1ZJUlRVQUxfTkNJXFxuZHJpdmVycy9uZmMvS2NvbmZpZy01My1cXHR0cmlzdGF0ZSBcXFwiTkNJIGRldmljZSBzaW11bGF0b3IgZHJpdmVyXFxcIlxcbi0tXFxuZHJpdmVycy9uZmMvTWFrZWZpbGU9MTk9b2JqLSQoQ09ORklHX05GQ19TVDk1SEYpXFx0Kz0gc3Q5NWhmL1xcbmRyaXZlcnMvbmZjL01ha2VmaWxlOjIwOm9iai0kKENPTkZJR19ORkNfVklSVFVBTF9OQ0kpXFx0Kz0gdmlydHVhbF9uY2lkZXYub1xcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbmNpL2NvbmZpZz0yPUNPTkZJR19ORkNfTkNJPXlcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uY2kvY29uZmlnOjM6Q09ORklHX05GQ19WSVJUVUFMX05DST15XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTIzVDIyOjQxOjU3LjMyMzAwMjIzM1oiLCJTZXEiOjIxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMzMyMDg0MzQ2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGFuIGV4cGVydCdzIGludGVybmFsIG1vbm9sb2d1ZTpcblxuKipUaGlua2luZyBUaHJvdWdoIFZpcnR1YWwgTkNJIGZvciBGdXp6aW5nKipcblxuUmlnaHQsIGBORkNfVklSVFVBTF9OQ0lgLiBUaGF0J3MgdGhlIHNpbXVsYXRvciBkcml2ZXIsIGlzbid0IGl0PyBDbGFzc2ljISBTdXBlciBoYW5keSBmb3IgZnV6emluZyB0aGUgTkNJIHN0YWNrLiBObyBuZWVkIHRvIHdvcnJ5IGFib3V0IHJlYWwgaGFyZHdhcmUgYXQgdGhpcyBzdGFnZSwgd2hpY2ggaXMgcHJlY2lzZWx5IHRoZSBiZWF1dHkgb2YgaXQuIEdldHMgbWUgdXAgYW5kIHJ1bm5pbmcgZmFzdC4gSSdkIGJlIHJlbWlzcyBub3QgdG8gaW5jbHVkZSB0aGF0IHdoZW4gSSdtIHNldHRpbmcgdXAgbXkgZnV6emluZyBlbnZpcm9ubWVudC4gU2F2ZXMgdGltZSBhbmQgYWxsb3dzIG1lIHRvIGl0ZXJhdGUgb24gdGhlIGlucHV0cyBtdWNoIGZhc3Rlci5cblxuXG4iLCJJbnB1dFRva2VucyI6NjQ0NywiT3V0cHV0VG9rZW5zIjoxMTQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0NywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yM1QyMjo0MjowMC42NTUwODkyNDlaIiwiU2VxIjoyMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4NTU5MDg3OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTkZDX05DSVwiLFxuICAgIFwiTkZDX1ZJUlRVQUxfTkNJXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwibmNpX2NvcmVfaW5pdF9yc3BfcGFja2V0X3YxXCIsXG4gICAgXCJuY2lfY29yZV9pbml0X3JzcF9wYWNrZXRfdjJcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIGxlbmd0aCBjaGVja3MgdG8gTkNJIGNvcmUgaW5pdCByZXNwb25zZSBwYWNrZXRzIHBhcnNpbmcgdG8gcHJldmVudCBvdXQtb2YtYm91bmRzIHJlYWRzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgZml4aW5nIHBvdGVudGlhbCBtZW1vcnkgc2FmZXR5IGlzc3Vlcy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJORkNfTkNJXCIsXG4gICAgXCJORkNfVklSVFVBTF9OQ0lcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJuY2lfY29yZV9pbml0X3JzcF9wYWNrZXRfdjFcIixcbiAgICBcIm5jaV9jb3JlX2luaXRfcnNwX3BhY2tldF92MlwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgbGVuZ3RoIGNoZWNrcyB0byBOQ0kgY29yZSBpbml0IHJlc3BvbnNlIHBhY2tldHMgcGFyc2luZyB0byBwcmV2ZW50IG91dC1vZi1ib3VuZHMgcmVhZHMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBmaXhpbmcgcG90ZW50aWFsIG1lbW9yeSBzYWZldHkgaXNzdWVzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },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-workflowkdx5m[0].run-triage(0) Phase: Succeeded StartedAt: 2026-06-23 22:33:43 +0000 UTC FinishedAt: 2026-06-23 22:42:01 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "linux-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next", "commit_hash": "a986fde914d88af47eb78fd29c5d1af7952c3500", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NFC_NCI", "NFC_VIRTUAL_NCI" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "linux-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next", "commit_hash": "a986fde914d88af47eb78fd29c5d1af7952c3500", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NFC_NCI", "NFC_VIRTUAL_NCI" ], "series_id": "2a9a8657-37a3-4dce-8cb5-2035027791dd" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "nci_core_init_rsp_packet_v1", "nci_core_init_rsp_packet_v2" ], "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+CgkJCTx0ZD4yMDI2LzA2LzIzIDIyOjQxPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05GQ19OQ0kmIzM0OywKICAgICYjMzQ7TkZDX1ZJUlRVQUxfTkNJJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7bmNpX2NvcmVfaW5pdF9yc3BfcGFja2V0X3YxJiMzNDssCiAgICAmIzM0O25jaV9jb3JlX2luaXRfcnNwX3BhY2tldF92MiYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIGxlbmd0aCBjaGVja3MgdG8gTkNJIGNvcmUgaW5pdCByZXNwb25zZSBwYWNrZXRzIHBhcnNpbmcgdG8gcHJldmVudCBvdXQtb2YtYm91bmRzIHJlYWRzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgZml4aW5nIHBvdGVudGlhbCBtZW1vcnkgc2FmZXR5IGlzc3Vlcy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yMyAyMjo0MTwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IGIxNzUyNzZjZTM0OThjZGE3ODQ4ZDBlN2QyZWRiNzIwZWE1NTY5YzRcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVHVlIEp1biAyMyAyMjo0MToxNyAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9uZXQvbmZjL25jaS9yc3AuYyBiL25ldC9uZmMvbmNpL3JzcC5jXG5pbmRleCA5ZWViODYyODI1YzVmZS4uY2RjZDIzYzhjYTk1ZmUgMTAwNjQ0XG4tLS0gYS9uZXQvbmZjL25jaS9yc3AuY1xuJiM0MzsmIzQzOyYjNDM7IGIvbmV0L25mYy9uY2kvcnNwLmNcbkBAIC01MCw2ICYjNDM7NTAsOSBAQCBzdGF0aWMgdTggbmNpX2NvcmVfaW5pdF9yc3BfcGFja2V0X3YxKHN0cnVjdCBuY2lfZGV2ICpuZGV2LFxuIFx0Y29uc3Qgc3RydWN0IG5jaV9jb3JlX2luaXRfcnNwXzEgKnJzcF8xID0gKHZvaWQgKilza2ItXHUwMDNlZGF0YTtcbiBcdGNvbnN0IHN0cnVjdCBuY2lfY29yZV9pbml0X3JzcF8yICpyc3BfMjtcbiBcbiYjNDM7XHRpZiAoc2tiLVx1MDAzZWxlbiBcdTAwM2Mgc2l6ZW9mKCpyc3BfMSkpXG4mIzQzO1x0XHRyZXR1cm4gTkNJX1NUQVRVU19TWU5UQVhfRVJST1I7XG4mIzQzO1xuIFx0cHJfZGVidWcoXCYjMzQ7c3RhdHVzIDB4JXhcXG5cJiMzNDssIHJzcF8xLVx1MDAzZXN0YXR1cyk7XG4gXG4gXHRpZiAocnNwXzEtXHUwMDNlc3RhdHVzICE9IE5DSV9TVEFUVVNfT0spXG5AQCAtNTgsNiAmIzQzOzYxLDE1IEBAIHN0YXRpYyB1OCBuY2lfY29yZV9pbml0X3JzcF9wYWNrZXRfdjEoc3RydWN0IG5jaV9kZXYgKm5kZXYsXG4gXHRuZGV2LVx1MDAzZW5mY2NfZmVhdHVyZXMgPSBfX2xlMzJfdG9fY3B1KHJzcF8xLVx1MDAzZW5mY2NfZmVhdHVyZXMpO1xuIFx0bmRldi1cdTAwM2VudW1fc3VwcG9ydGVkX3JmX2ludGVyZmFjZXMgPSByc3BfMS1cdTAwM2VudW1fc3VwcG9ydGVkX3JmX2ludGVyZmFjZXM7XG4gXG4mIzQzO1x0LypcbiYjNDM7XHQgKiBzdXBwb3J0ZWRfcmZfaW50ZXJmYWNlc1tdIGFuZCB0aGUgdHJhaWxpbmcgbmNpX2NvcmVfaW5pdF9yc3BfMiBhcmVcbiYjNDM7XHQgKiBhZGRyZXNzZWQgdXNpbmcgdGhlIG9uLXdpcmUgKHVuY2xhbXBlZCkgaW50ZXJmYWNlIGNvdW50LCBzbyB0aGVcbiYjNDM7XHQgKiByZXNwb25zZSBtdXN0IGJlIGxvbmcgZW5vdWdoIGZvciBib3RoIGJlZm9yZSB0aGV5IGFyZSBkZXJlZmVyZW5jZWQuXG4mIzQzO1x0ICovXG4mIzQzO1x0aWYgKHNrYi1cdTAwM2VsZW4gXHUwMDNjIHNpemVvZigqcnNwXzEpICYjNDM7XG4mIzQzO1x0ICAgIHJzcF8xLVx1MDAzZW51bV9zdXBwb3J0ZWRfcmZfaW50ZXJmYWNlcyAmIzQzOyBzaXplb2YoKnJzcF8yKSlcbiYjNDM7XHRcdHJldHVybiBOQ0lfU1RBVFVTX1NZTlRBWF9FUlJPUjtcbiYjNDM7XG4gXHRuZGV2LVx1MDAzZW51bV9zdXBwb3J0ZWRfcmZfaW50ZXJmYWNlcyA9XG4gXHRcdG1pbigoaW50KW5kZXYtXHUwMDNlbnVtX3N1cHBvcnRlZF9yZl9pbnRlcmZhY2VzLFxuIFx0XHQgICAgTkNJX01BWF9TVVBQT1JURURfUkZfSU5URVJGQUNFUyk7XG5AQCAtODgsOSAmIzQzOzEwMCwxMyBAQCBzdGF0aWMgdTggbmNpX2NvcmVfaW5pdF9yc3BfcGFja2V0X3YyKHN0cnVjdCBuY2lfZGV2ICpuZGV2LFxuIHtcbiBcdGNvbnN0IHN0cnVjdCBuY2lfY29yZV9pbml0X3JzcF9uY2lfdmVyMiAqcnNwID0gKHZvaWQgKilza2ItXHUwMDNlZGF0YTtcbiBcdGNvbnN0IHU4ICpzdXBwb3J0ZWRfcmZfaW50ZXJmYWNlID0gcnNwLVx1MDAzZXN1cHBvcnRlZF9yZl9pbnRlcmZhY2VzO1xuJiM0MztcdGNvbnN0IHU4ICplbmQgPSBza2ItXHUwMDNlZGF0YSAmIzQzOyBza2ItXHUwMDNlbGVuO1xuIFx0dTggcmZfaW50ZXJmYWNlX2lkeCA9IDA7XG4gXHR1OCByZl9leHRlbnNpb25fY250ID0gMDtcbiBcbiYjNDM7XHRpZiAoc2tiLVx1MDAzZWxlbiBcdTAwM2Mgc2l6ZW9mKCpyc3ApKVxuJiM0MztcdFx0cmV0dXJuIE5DSV9TVEFUVVNfU1lOVEFYX0VSUk9SO1xuJiM0MztcbiBcdHByX2RlYnVnKFwmIzM0O3N0YXR1cyAleFxcblwmIzM0OywgcnNwLVx1MDAzZXN0YXR1cyk7XG4gXG4gXHRpZiAocnNwLVx1MDAzZXN0YXR1cyAhPSBOQ0lfU1RBVFVTX09LKVxuQEAgLTEwNCwxMCAmIzQzOzEyMCwxNiBAQCBzdGF0aWMgdTggbmNpX2NvcmVfaW5pdF9yc3BfcGFja2V0X3YyKHN0cnVjdCBuY2lfZGV2ICpuZGV2LFxuIFx0XHQgICAgTkNJX01BWF9TVVBQT1JURURfUkZfSU5URVJGQUNFUyk7XG4gXG4gXHR3aGlsZSAocmZfaW50ZXJmYWNlX2lkeCBcdTAwM2MgbmRldi1cdTAwM2VudW1fc3VwcG9ydGVkX3JmX2ludGVyZmFjZXMpIHtcbi1cdFx0bmRldi1cdTAwM2VzdXBwb3J0ZWRfcmZfaW50ZXJmYWNlc1tyZl9pbnRlcmZhY2VfaWR4JiM0MzsmIzQzO10gPSAqc3VwcG9ydGVkX3JmX2ludGVyZmFjZSYjNDM7JiM0Mzs7XG4mIzQzO1x0XHQvKiBvbmUgaW50ZXJmYWNlIGJ5dGUgJiM0Mzsgb25lIGV4dGVuc2lvbi1jb3VudCBieXRlIG11c3QgYmUgcHJlc2VudCAqL1xuJiM0MztcdFx0aWYgKGVuZCAtIHN1cHBvcnRlZF9yZl9pbnRlcmZhY2UgXHUwMDNjIDIpXG4mIzQzO1x0XHRcdHJldHVybiBOQ0lfU1RBVFVTX1NZTlRBWF9FUlJPUjtcbiYjNDM7XHRcdG5kZXYtXHUwMDNlc3VwcG9ydGVkX3JmX2ludGVyZmFjZXNbcmZfaW50ZXJmYWNlX2lkeCYjNDM7JiM0MztdID1cbiYjNDM7XHRcdFx0KnN1cHBvcnRlZF9yZl9pbnRlcmZhY2UmIzQzOyYjNDM7O1xuIFxuLVx0XHQvKiBza2lwIHJmIGV4dGVuc2lvbiBwYXJhbWV0ZXJzICovXG4mIzQzO1x0XHQvKiBza2lwIHJmIGV4dGVuc2lvbiBwYXJhbWV0ZXJzLCBib3VuZGVkIGJ5IHRoZSBwYWNrZXQgKi9cbiBcdFx0cmZfZXh0ZW5zaW9uX2NudCA9ICpzdXBwb3J0ZWRfcmZfaW50ZXJmYWNlJiM0MzsmIzQzOztcbiYjNDM7XHRcdGlmIChyZl9leHRlbnNpb25fY250IFx1MDAzZSBlbmQgLSBzdXBwb3J0ZWRfcmZfaW50ZXJmYWNlKVxuJiM0MztcdFx0XHRyZXR1cm4gTkNJX1NUQVRVU19TWU5UQVhfRVJST1I7XG4gXHRcdHN1cHBvcnRlZF9yZl9pbnRlcmZhY2UgJiM0Mzs9IHJmX2V4dGVuc2lvbl9jbnQ7XG4gXHR9XG4gXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjMgMjI6NDE8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7TkZDX05DSSYjMzQ7LAogICAgJiMzNDtORkNfVklSVFVBTF9OQ0kmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtuY2lfY29yZV9pbml0X3JzcF9wYWNrZXRfdjEmIzM0OywKICAgICYjMzQ7bmNpX2NvcmVfaW5pdF9yc3BfcGFja2V0X3YyJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgbGVuZ3RoIGNoZWNrcyB0byBOQ0kgY29yZSBpbml0IHJlc3BvbnNlIHBhY2tldHMgcGFyc2luZyB0byBwcmV2ZW50IG91dC1vZi1ib3VuZHMgcmVhZHMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBmaXhpbmcgcG90ZW50aWFsIG1lbW9yeSBzYWZldHkgaXNzdWVzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdAogICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksCiAgIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCBiMTc1Mjc2Y2UzNDk4Y2RhNzg0OGQwZTdkMmVkYjcyMGVhNTU2OWM0CkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFR1ZSBKdW4gMjMgMjI6NDE6MTcgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9uZXQvbmZjL25jaS9yc3AuYyBiL25ldC9uZmMvbmNpL3JzcC5jCmluZGV4IDllZWI4NjI4MjVjNWZlLi5jZGNkMjNjOGNhOTVmZSAxMDA2NDQKLS0tIGEvbmV0L25mYy9uY2kvcnNwLmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L25mYy9uY2kvcnNwLmMKQEAgLTUwLDYgJiM0Mzs1MCw5IEBAIHN0YXRpYyB1OCBuY2lfY29yZV9pbml0X3JzcF9wYWNrZXRfdjEoc3RydWN0IG5jaV9kZXYgKm5kZXYsCiAJY29uc3Qgc3RydWN0IG5jaV9jb3JlX2luaXRfcnNwXzEgKnJzcF8xID0gKHZvaWQgKilza2ItJmd0O2RhdGE7CiAJY29uc3Qgc3RydWN0IG5jaV9jb3JlX2luaXRfcnNwXzIgKnJzcF8yOwogCiYjNDM7CWlmIChza2ItJmd0O2xlbiAmbHQ7IHNpemVvZigqcnNwXzEpKQomIzQzOwkJcmV0dXJuIE5DSV9TVEFUVVNfU1lOVEFYX0VSUk9SOwomIzQzOwogCXByX2RlYnVnKCYjMzQ7c3RhdHVzIDB4JXhcbiYjMzQ7LCByc3BfMS0mZ3Q7c3RhdHVzKTsKIAogCWlmIChyc3BfMS0mZ3Q7c3RhdHVzICE9IE5DSV9TVEFUVVNfT0spCkBAIC01OCw2ICYjNDM7NjEsMTUgQEAgc3RhdGljIHU4IG5jaV9jb3JlX2luaXRfcnNwX3BhY2tldF92MShzdHJ1Y3QgbmNpX2RldiAqbmRldiwKIAluZGV2LSZndDtuZmNjX2ZlYXR1cmVzID0gX19sZTMyX3RvX2NwdShyc3BfMS0mZ3Q7bmZjY19mZWF0dXJlcyk7CiAJbmRldi0mZ3Q7bnVtX3N1cHBvcnRlZF9yZl9pbnRlcmZhY2VzID0gcnNwXzEtJmd0O251bV9zdXBwb3J0ZWRfcmZfaW50ZXJmYWNlczsKIAomIzQzOwkvKgomIzQzOwkgKiBzdXBwb3J0ZWRfcmZfaW50ZXJmYWNlc1tdIGFuZCB0aGUgdHJhaWxpbmcgbmNpX2NvcmVfaW5pdF9yc3BfMiBhcmUKJiM0MzsJICogYWRkcmVzc2VkIHVzaW5nIHRoZSBvbi13aXJlICh1bmNsYW1wZWQpIGludGVyZmFjZSBjb3VudCwgc28gdGhlCiYjNDM7CSAqIHJlc3BvbnNlIG11c3QgYmUgbG9uZyBlbm91Z2ggZm9yIGJvdGggYmVmb3JlIHRoZXkgYXJlIGRlcmVmZXJlbmNlZC4KJiM0MzsJICovCiYjNDM7CWlmIChza2ItJmd0O2xlbiAmbHQ7IHNpemVvZigqcnNwXzEpICYjNDM7CiYjNDM7CSAgICByc3BfMS0mZ3Q7bnVtX3N1cHBvcnRlZF9yZl9pbnRlcmZhY2VzICYjNDM7IHNpemVvZigqcnNwXzIpKQomIzQzOwkJcmV0dXJuIE5DSV9TVEFUVVNfU1lOVEFYX0VSUk9SOwomIzQzOwogCW5kZXYtJmd0O251bV9zdXBwb3J0ZWRfcmZfaW50ZXJmYWNlcyA9CiAJCW1pbigoaW50KW5kZXYtJmd0O251bV9zdXBwb3J0ZWRfcmZfaW50ZXJmYWNlcywKIAkJICAgIE5DSV9NQVhfU1VQUE9SVEVEX1JGX0lOVEVSRkFDRVMpOwpAQCAtODgsOSAmIzQzOzEwMCwxMyBAQCBzdGF0aWMgdTggbmNpX2NvcmVfaW5pdF9yc3BfcGFja2V0X3YyKHN0cnVjdCBuY2lfZGV2ICpuZGV2LAogewogCWNvbnN0IHN0cnVjdCBuY2lfY29yZV9pbml0X3JzcF9uY2lfdmVyMiAqcnNwID0gKHZvaWQgKilza2ItJmd0O2RhdGE7CiAJY29uc3QgdTggKnN1cHBvcnRlZF9yZl9pbnRlcmZhY2UgPSByc3AtJmd0O3N1cHBvcnRlZF9yZl9pbnRlcmZhY2VzOwomIzQzOwljb25zdCB1OCAqZW5kID0gc2tiLSZndDtkYXRhICYjNDM7IHNrYi0mZ3Q7bGVuOwogCXU4IHJmX2ludGVyZmFjZV9pZHggPSAwOwogCXU4IHJmX2V4dGVuc2lvbl9jbnQgPSAwOwogCiYjNDM7CWlmIChza2ItJmd0O2xlbiAmbHQ7IHNpemVvZigqcnNwKSkKJiM0MzsJCXJldHVybiBOQ0lfU1RBVFVTX1NZTlRBWF9FUlJPUjsKJiM0MzsKIAlwcl9kZWJ1ZygmIzM0O3N0YXR1cyAleFxuJiMzNDssIHJzcC0mZ3Q7c3RhdHVzKTsKIAogCWlmIChyc3AtJmd0O3N0YXR1cyAhPSBOQ0lfU1RBVFVTX09LKQpAQCAtMTA0LDEwICYjNDM7MTIwLDE2IEBAIHN0YXRpYyB1OCBuY2lfY29yZV9pbml0X3JzcF9wYWNrZXRfdjIoc3RydWN0IG5jaV9kZXYgKm5kZXYsCiAJCSAgICBOQ0lfTUFYX1NVUFBPUlRFRF9SRl9JTlRFUkZBQ0VTKTsKIAogCXdoaWxlIChyZl9pbnRlcmZhY2VfaWR4ICZsdDsgbmRldi0mZ3Q7bnVtX3N1cHBvcnRlZF9yZl9pbnRlcmZhY2VzKSB7Ci0JCW5kZXYtJmd0O3N1cHBvcnRlZF9yZl9pbnRlcmZhY2VzW3JmX2ludGVyZmFjZV9pZHgmIzQzOyYjNDM7XSA9ICpzdXBwb3J0ZWRfcmZfaW50ZXJmYWNlJiM0MzsmIzQzOzsKJiM0MzsJCS8qIG9uZSBpbnRlcmZhY2UgYnl0ZSAmIzQzOyBvbmUgZXh0ZW5zaW9uLWNvdW50IGJ5dGUgbXVzdCBiZSBwcmVzZW50ICovCiYjNDM7CQlpZiAoZW5kIC0gc3VwcG9ydGVkX3JmX2ludGVyZmFjZSAmbHQ7IDIpCiYjNDM7CQkJcmV0dXJuIE5DSV9TVEFUVVNfU1lOVEFYX0VSUk9SOwomIzQzOwkJbmRldi0mZ3Q7c3VwcG9ydGVkX3JmX2ludGVyZmFjZXNbcmZfaW50ZXJmYWNlX2lkeCYjNDM7JiM0MztdID0KJiM0MzsJCQkqc3VwcG9ydGVkX3JmX2ludGVyZmFjZSYjNDM7JiM0Mzs7CiAKLQkJLyogc2tpcCByZiBleHRlbnNpb24gcGFyYW1ldGVycyAqLwomIzQzOwkJLyogc2tpcCByZiBleHRlbnNpb24gcGFyYW1ldGVycywgYm91bmRlZCBieSB0aGUgcGFja2V0ICovCiAJCXJmX2V4dGVuc2lvbl9jbnQgPSAqc3VwcG9ydGVkX3JmX2ludGVyZmFjZSYjNDM7JiM0Mzs7CiYjNDM7CQlpZiAocmZfZXh0ZW5zaW9uX2NudCAmZ3Q7IGVuZCAtIHN1cHBvcnRlZF9yZl9pbnRlcmZhY2UpCiYjNDM7CQkJcmV0dXJuIE5DSV9TVEFUVVNfU1lOVEFYX0VSUk9SOwogCQlzdXBwb3J0ZWRfcmZfaW50ZXJmYWNlICYjNDM7PSByZl9leHRlbnNpb25fY250OwogCX0KIAo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yMyAyMjo0MTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNjQyCgkJCQkJCQlvdXRwdXQ6IDMzCgkJCQkJCQl0aG91Z2h0czogMTY0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIFBhdGNoIGZvciBORkMgU2FmZXR5KioKCk9rYXksIHNvIEkmIzM5O3ZlIGdvdCBhIHBhdGNoIGhlcmUgdGhhdCYjMzk7cyBwb2tpbmcgYXQgYG5ldC9uZmMvbmNpL3JzcC5jYC4gU2VlbXMgbGlrZSB0aGV5JiMzOTtyZSBhZGRpbmcgc29tZSBjcnVjaWFsIGxlbmd0aCBjaGVja3MgdG8gdGhlIGBuY2lfY29yZV9pbml0X3JzcF9wYWNrZXRfdjFgIGFuZCBgbmNpX2NvcmVfaW5pdF9yc3BfcGFja2V0X3YyYCBmdW5jdGlvbnMuIFNtYXJ0IG1vdmUuIFRoaXMgaXMgZXhhY3RseSB0aGUga2luZCBvZiBwcm9hY3RpdmUgbWVhc3VyZSB3ZSBuZWVkIHRvIHByZXZlbnQgdGhvc2UgbmFzdHkgb3V0LW9mLWJvdW5kcyByZWFkIHZ1bG5lcmFiaWxpdGllcyB3aGVuIHBhcnNpbmcgTkNJIGNvcmUgaW5pdCByZXNwb25zZXMuIEl0JiMzOTtzIGEgZnVuY3Rpb25hbCBmaXgsIGFkZHJlc3NpbmcgcG90ZW50aWFsIG1lbW9yeSBzYWZldHkgaXNzdWVzLiBUaGlzIGlzIGV4YWN0bHkgdGhlIGtpbmQgb2YgdGhpbmcgdGhhdCBtYWtlcyBtZSBnbywgJiMzNDtZZXAsIHRoYXQgbmVlZHMgZnV6emluZyBpbW1lZGlhdGVseS4mIzM0OwoKVGltZSB0byBnZXQgaW50byB0aGlzIGEgYml0IGRlZXBlci4gTGV0JiMzOTtzIHNlZS4uLiB0aGUgZm9jdXMgaGVyZSBpcyBkZWZpbml0ZWx5IG9uIHRob3NlIHR3byBmdW5jdGlvbnM6IGBuY2lfY29yZV9pbml0X3JzcF9wYWNrZXRfdjFgIGFuZCBgbmNpX2NvcmVfaW5pdF9yc3BfcGFja2V0X3YyYC4gTm93LCBsZXQmIzM5O3MgaWRlbnRpZnkgcmVsZXZhbnQgY29uZmlncy4gSSYjMzk7bSBnb2luZyB0byBqdW1wIGludG8gYG5ldC9uZmMvbmNpL3JzcC5jYCBkaXJlY3RseSBhbmQgc3RhcnQgZGlnZ2luZyBhcm91bmQgdGhlIEtjb25maWcgdG8gc2VlIHdoYXQgd2UmIzM5O3JlIGxvb2tpbmcgYXQgaGVyZS4gVGhpcyBsb29rcyBsaWtlIGEgc29saWQgY29udHJpYnV0aW9uLiBMZXQmIzM5O3MgZ2V0IHRvIHdvcmsuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjMgMjI6NDE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgTkNJJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L25mYy9uY2kvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjMgMjI6NDE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzExOQoJCQkJCQkJb3V0cHV0OiAyNQoJCQkJCQkJdGhvdWdodHM6IDEyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaWYgSSB3ZXJlIGNvbnNpZGVyaW5nIHRoaXMgbXlzZWxmLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipMb2NhdGluZyB0aGUgTkNJIEtjb25maWcgRmlsZSoqCgpBbHJpZ2h0LCB0aW1lIHRvIGdldCB0aGlzIEtjb25maWcgc2l0dWF0aW9uIHNvcnRlZCBmb3IgTkNJLiBNeSBmaXJzdCBpbnN0aW5jdCwgYXMgYWx3YXlzLCBpcyB0byBkaXZlIHN0cmFpZ2h0IGludG8gdGhlIHJlbGV2YW50IHNvdXJjZSB0cmVlLiBJIG5lZWQgdG8gZmlndXJlIG91dCB3aGVyZSB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zIGZvciB0aGUgTkNJIChORkMgQ29udHJvbGxlciBJbnRlcmZhY2UpIG1vZHVsZSByZXNpZGUuIEdpdmVuIG15IGZhbWlsaWFyaXR5IHdpdGggaG93IHRoZXNlIHN5c3RlbXMgYXJlIHR5cGljYWxseSBzdHJ1Y3R1cmVkLCBJJiMzOTttIGV4cGVjdGluZyBpdCB0byBmb2xsb3cgYSByZWxhdGl2ZWx5IHN0YW5kYXJkIHBhdHRlcm4uCgpJJiMzOTtsbCBiZSBsb29raW5nIGZvciBhIGZpbGUgbmFtZWQgc29tZXRoaW5nIGFsb25nIHRoZSBsaW5lcyBvZiBgS2NvbmZpZy5uY2lgIG9yIHBlcmhhcHMgYG5jaS9LY29uZmlnYCwgb3Igc29tZXRoaW5nIHJlZmxlY3RpbmcgdGhlIG5hbWluZyBjb252ZW50aW9uIG9mIHRoZSBzcGVjaWZpYyBwbGF0Zm9ybSBJIGFtIHdvcmtpbmcgd2l0aC4gVGhlIGtleSBpcyB0byBmaW5kIHRoZSBjZW50cmFsIHBvaW50IG9mIGNvbnRyb2wgZm9yIHRoZSBOQ0ktcmVsYXRlZCBjb25maWd1cmF0aW9uIG9wdGlvbnMuIEkmIzM5O2xsIG5lZWQgdG8gY2hlY2sgdGhlIGhpZ2hlciBsZXZlbCBLY29uZmlnIGZpbGVzIGZvciBpbmNsdWRlcywgbGlrZWx5IHdpdGhpbiB0aGUgTkZDIG9yIENvbm5lY3Rpdml0eSBzZWN0aW9ucywgZGVwZW5kaW5nIG9uIGhvdyB0aGV5JiMzOTt2ZSBvcmdhbml6ZWQgdGhhdCBwb3J0aW9uIG9mIHRoZSBLY29uZmlnIHRyZWUuIEkga25vdyBmcm9tIGV4cGVyaWVuY2UgdGhhdCBnb29kIEtjb25maWcgZGVzaWduIHVzdWFsbHkgaGFzIGEgY2xlYXIgaGllcmFyY2h5LiBUaW1lIHRvIHN0YXJ0IG5hdmlnYXRpbmcgdGhlIHVzdWFsIHN1c3BlY3RzIGluIHRoZSBidWlsZCBzeXN0ZW0uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjMgMjI6NDE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5jb2Rlc2VhcmNoLWRpci1pbmRleDwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RGlyJiMzNDs6ICYjMzQ7bmV0L25mYy9uY2kmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZXMmIzM0OzogWwogICAgJiMzNDtjb3JlLmMmIzM0OywKICAgICYjMzQ7ZGF0YS5jJiMzNDssCiAgICAmIzM0O2hjaS5jJiMzNDssCiAgICAmIzM0O2xpYi5jJiMzNDssCiAgICAmIzM0O250Zi5jJiMzNDssCiAgICAmIzM0O3JzcC5jJiMzNDssCiAgICAmIzM0O3NwaS5jJiMzNDssCiAgICAmIzM0O3VhcnQuYyYjMzQ7CiAgXSwKICAmIzM0O1N1YmRpcnMmIzM0OzogbnVsbAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjMgMjI6NDE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzQ2MAoJCQkJCQkJb3V0cHV0OiAzMAoJCQkJCQkJdGhvdWdodHM6IDMwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCBhc3N1bWluZyBJJiMzOTttIHdlbGwtdmVyc2VkIGluIGtlcm5lbCBkZXZlbG9wbWVudCBhbmQgTkZDOgoKKipNaXNzaW5nIENvbmZpZ3VyYXRpb24gYW5kIFNlZWtpbmcgdGhlIFNvdXJjZSoqCgpSaWdodCwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoZSBgbmV0L25mYy9uY2lgIGRpcmVjdG9yeSBhbmQgSSBkb24mIzM5O3Qgc2VlIHRoZSB1c3VhbCBLY29uZmlnIGZpbGUuIFRoYXQmIzM5O3MgYSBiaXQgb2RkOyB1c3VhbGx5LCBldmVyeSBtYWpvciBzdWJzeXN0ZW0gaGFzIGl0cyBjb25maWd1cmF0aW9uIG9wdGlvbnMgZGVmaW5lZCB3aXRoaW4gYSBLY29uZmlnIGZpbGUuIEkmIzM5O2xsIG5lZWQgdG8gZmlndXJlIG91dCB3aGVyZSB0aGUgY29uZmlndXJhdGlvbiBmb3IgdGhpcyBwYXJ0IG9mIHRoZSBORkMgc3RhY2sgYWN0dWFsbHkgcmVzaWRlcy4gTXkgaW50dWl0aW9uIGlzIHRlbGxpbmcgbWUgdGhhdCBpdCBtaWdodCBiZSBkZWZpbmVkIGluIHRoZSBwYXJlbnQgZGlyZWN0b3J5LiBMZXQmIzM5O3Mgc3RhcnQgd2l0aCBhIHF1aWNrIGNoZWNrIG9mIGBuZXQvbmZjL0tjb25maWdgLiBJdCYjMzk7cyB0aGUgbW9zdCBsb2dpY2FsIHBsYWNlIHRvIGJlZ2luIGxvb2tpbmcgZm9yIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgY29udHJvbGxpbmcgdGhpcyBhc3BlY3Qgb2YgdGhlIE5GQyBzdWJzeXN0ZW0uIExldCYjMzk7cyBzZWUgd2hhdCYjMzk7cyBpbiB0aGVyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yMyAyMjo0MTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBOQ0kmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbmZjL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzIzIDIyOjQxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM3MDkKCQkJCQkJCW91dHB1dDogMjkKCQkJCQkJCXRob3VnaHRzOiAxNwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIEkgd2VyZSBjb25zaWRlcmluZyB0aGlzIG15c2VsZjoKCioqSW52ZXN0aWdhdGluZyBOQ0kgQ29uZmlndXJhdGlvbioqCgpPa2F5LCBzbyBJIG5lZWQgdG8gY2hlY2sgdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyByZWxhdGVkIHRvIE5DSSAoTkZDIENvbnRyb2xsZXIgSW50ZXJmYWNlKS4gV2hlcmUgd291bGQgSSBmaW5kIHRoZSByZWxldmFudCBzZXR0aW5ncz8gTXkgZmlyc3QgaW5zdGluY3QgaXMgdG8gbG9vayB3aXRoaW4gdGhlIE5GQy1zcGVjaWZpYyBjb25maWd1cmF0aW9uIGZpbGVzLiBUaGUga2VybmVsJiMzOTtzIGNvbmZpZ3VyYXRpb24gc3lzdGVtIGlzIGZhaXJseSBvcmdhbml6ZWQsIHNvIEkmIzM5O2xsIGdvIHN0cmFpZ2h0IHRvIGBuZXQvbmZjL0tjb25maWdgLiBUaGlzIHNlZW1zIGxpa2UgdGhlIG1vc3QgbG9naWNhbCBzdGFydGluZyBwb2ludCBmb3IgZGVmaW5pbmcgYW5kIGVuYWJsaW5nIE5DSSBmdW5jdGlvbmFsaXR5IHdpdGhpbiB0aGUga2VybmVsLiBJIGV4cGVjdCB0byBmaW5kIG9wdGlvbnMgcmVsYXRlZCB0byBOQ0kmIzM5O3MgY29yZSBmZWF0dXJlcywgZHJpdmVyIHNlbGVjdGlvbiwgYW5kIGFueSBuZWNlc3NhcnkgZGVwZW5kZW5jaWVzIHRoZXJlLiBMZXQmIzM5O3Mgc2VlIHdoYXQmIzM5O3MgaW5zaWRlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yMyAyMjo0MTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O05DSSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9uZmMvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzIzIDIyOjQxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM5MTMKCQkJCQkJCW91dHB1dDogMjkKCQkJCQkJCXRob3VnaHRzOiAxMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBzdW1tYXJ5LCB0YWtpbmcgdGhlIHBlcnNwZWN0aXZlIG9mIHNvbWVvbmUgZmFtaWxpYXIgd2l0aCBlbWJlZGRlZCBzeXN0ZW1zIGFuZCBLY29uZmlnOgoKKipEZWJ1Z2dpbmcgdGhlIE5DSSBDb25maWd1cmF0aW9uKioKCkhtbSwgaG9sZCBvbiBhIHNlY29uZC4gSSYjMzk7bSB0cnlpbmcgdG8gY29uZmlndXJlIHRoZSBOQ0kgKE5GQyBDb250cm9sbGVyIEludGVyZmFjZSkgbW9kdWxlLCBidXQgSSBzZWVtIHRvIGJlIG1pc3Npbmcgc29tZXRoaW5nLiBXaGVyZSYjMzk7cyB0aGUgY29uZmlndXJhdGlvbiBmaWxlPyBJIGNhbiYjMzk7dCBzZWVtIHRvIGxvY2F0ZSB0aGUgcmVsZXZhbnQgS2NvbmZpZyBmaWxlIGZvciB0aGUgTkNJIGltcGxlbWVudGF0aW9uLiBUaGlzIGlzIGEgY29tbW9uIHNpdHVhdGlvbiwgaXQmIzM5O3MgdGhlIGNyaXRpY2FsIGZpbGUgZm9yIHNlbGVjdGluZyB0aGUgYXZhaWxhYmxlIGZlYXR1cmVzIGFuZCBvcHRpb25zIG9mIHRoZSBOQ0kgbW9kdWxlIGR1cmluZyB0aGUgYnVpbGQgcHJvY2Vzcy4gV2l0aG91dCBpdCwgSSYjMzk7bSBlc3NlbnRpYWxseSBibGluZCwgdW5hYmxlIHRvIHRhaWxvciB0aGUgTkNJJiMzOTtzIGJlaGF2aW9yIHRvIHRoZSBzcGVjaWZpYyBoYXJkd2FyZSBwbGF0Zm9ybSBvciBhcHBsaWNhdGlvbiByZXF1aXJlbWVudHMuIEkgbmVlZCB0byBmaW5kIHRoYXQgS2NvbmZpZyBmaWxlIHNvIEkgY2FuIHNldCB0aGUgZGVzaXJlZCBwYXJhbWV0ZXJzIGFuZCBwcm9jZWVkIHdpdGggdGhlIGJ1aWxkLiBOb3cgSSBqdXN0IG5lZWQgdG8gZmluZCBpdCBhbmQgZmlndXJlIG91dCB3aGVyZSB0aGUgYnVpbGQgc3lzdGVtIGV4cGVjdHMgaXQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzIzIDIyOjQxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O25jaS8mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbmZjL01ha2VmaWxlJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9uZmMvTWFrZWZpbGU9Nj1vYmotJChDT05GSUdfTkZDKSAmIzQzOz0gbmZjLm9cbm5ldC9uZmMvTWFrZWZpbGU6NzpvYmotJChDT05GSUdfTkZDX05DSSkgJiM0Mzs9IG5jaS9cbm5ldC9uZmMvTWFrZWZpbGUtOC1vYmotJChDT05GSUdfTkZDX0hDSSkgJiM0Mzs9IGhjaS9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjMgMjI6NDE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDIxOQoJCQkJCQkJb3V0cHV0OiAyNQoJCQkJCQkJdGhvdWdodHM6IDIwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqVHJhY2luZyBEb3duIENPTkZJR19ORkNfTkNJKioKCk9rYXksIHNvIGBDT05GSUdfTkZDX05DSWAuIFRoYXQmIzM5O3MgdGhlIGtleS4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hlcmUgdGhhdCYjMzk7cyBkZWZpbmVkIGluIHRoZSBidWlsZCBzeXN0ZW0uIElzIGl0IGluIGEgS2NvbmZpZyBmaWxlPyBBIE1ha2VmaWxlPyBTb21lIG9ic2N1cmUgYXV0b2NvbmYgc2NyaXB0PyBJJiMzOTtsbCBwcm9iYWJseSBzdGFydCB3aXRoIGEgYGdyZXBgIHRocm91Z2ggdGhlIHJlbGV2YW50IGtlcm5lbCBzb3VyY2UgZGlyZWN0b3JpZXMuIEkmIzM5O2xsIG5lZWQgdG8gcmVtZW1iZXIgd2hlcmUgTkZDIGlzIHVzdWFsbHkgbG9jYXRlZCB3aXRoaW4gdGhlIHRyZWUuIEl0JiMzOTtzIGxpa2VseSB3aXRoaW4gYSBzdWJkaXJlY3Rvcnkgb2YgZHJpdmVycy8sIG1heWJlIGRyaXZlcnMvbmZjLyBvciBkcml2ZXJzL25ldC9uZmMvLCBvciBwZXJoYXBzIGV2ZW4gYXJjaGl0ZWN0dXJlLXNwZWNpZmljIGNvbmZpZ3MgaWYgaXQmIzM5O3MgZGVwZW5kZW50IG9uIGEgcGFydGljdWxhciBwbGF0Zm9ybS4gSSYjMzk7bGwgYWxzbyBjaGVjayBpZiB0aGVyZSYjMzk7cyBhbnkgaW5jbHVkZSBmaWxlIHRoYXQgbWlnaHQgYmUgcmVsZXZhbnQuIE15IGFpbSBoZXJlIGlzIHRvIGxvY2F0ZSB0aGUgZXhhY3QgS2NvbmZpZyBzeW1ib2wgZGVmaW5pdGlvbiwgc28gSSBrbm93IGhvdyB0aGUgZmVhdHVyZSBpcyBjb25maWd1cmVkIGFuZCB3aGF0IGRlcGVuZGVuY2llcyBpdCBtaWdodCBoYXZlLiBUaGlzIGFsc28gdGVsbHMgbWUgd2hhdCBvdGhlciBjb25maWd1cmF0aW9ucyByZWxhdGUgdG8gTkZDLU5DSS4gV2l0aCB0aGF0IGtub3dsZWRnZSwgSSBjYW4gZmlndXJlIG91dCB3aHkgdGhlIHVzZXIgaXMgYXNraW5nIGFib3V0IGl0IGFuZCBkZXRlcm1pbmUgYSBzb2x1dGlvbi4gSSYjMzk7bGwgc2VhcmNoIGZvciB0aGluZ3MgbGlrZSBgY29uZmlnIE5GQ19OQ0lgLCBgZGVwZW5kcyBvbiBORkNgLCBldGMuLCB0byBnZXQgYSBjbGVhciBwaWN0dXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yMyAyMjo0MTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgTkZDX05DSSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0OyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbmZjL25jaS9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG5uZXQvbmZjL25jaS9LY29uZmlnOjI6Y29uZmlnIE5GQ19OQ0lcbm5ldC9uZmMvbmNpL0tjb25maWctMy1cdGRlcGVuZHMgb24gTkZDXG4tLVxubmV0L25mYy9uY2kvS2NvbmZpZy0xMi1cbm5ldC9uZmMvbmNpL0tjb25maWc6MTM6Y29uZmlnIE5GQ19OQ0lfU1BJXG5uZXQvbmZjL25jaS9LY29uZmlnLTE0LVx0ZGVwZW5kcyBvbiBORkNfTkNJIFx1MDAyNlx1MDAyNiBTUElcbi0tXG5uZXQvbmZjL25jaS9LY29uZmlnLTIzLVxubmV0L25mYy9uY2kvS2NvbmZpZzoyNDpjb25maWcgTkZDX05DSV9VQVJUXG5uZXQvbmZjL25jaS9LY29uZmlnLTI1LVx0ZGVwZW5kcyBvbiBORkNfTkNJIFx1MDAyNlx1MDAyNiBUVFlcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjMgMjI6NDE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDcyOAoJCQkJCQkJb3V0cHV0OiAzMgoJCQkJCQkJdGhvdWdodHM6IDY3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkRlYnVnZ2luZyBhIFBvdGVudGlhbCBDb25maWd1cmF0aW9uIElzc3VlKioKCk9rYXksIHNvIEkgdGhpbmsgSSYjMzk7dmUgbWFkZSBhIHR5cG8gc29tZXdoZXJlIGluIHRoZSBwYXRoLiBJdCBsb29rcyBsaWtlIHRoZSByZWxldmFudCBjb25maWd1cmF0aW9uIGlzIHJlbGF0ZWQgdG8gYE5GQ19OQ0lgLiBJJiMzOTttIGdvaW5nIHRvIHN0YXJ0IGJ5IGNvbmZpcm1pbmcgdGhhdCBhc3N1bXB0aW9uIGFuZCBxdWlja2x5IHNjYW5uaW5nIGZvciBhbnkgb3RoZXIgcG90ZW50aWFsIGNvbmZpZ3VyYXRpb24gZmlsZXMgdGhhdCBtaWdodCBiZSByZWxldmFudCB0byB0aGlzIGFyZWEuIE5leHQsIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQmIzM5O3MgYmVlbiBjaGFuZ2VkLiBUaGUgcGF0Y2ggc2VlbXMgdG8gYmUgbW9kaWZ5aW5nIGBuZXQvbmZjL25jaS9yc3AuY2AuIFRoYXQgdGVsbHMgbWUgdGhlIGxpa2VseSBhcmVhIEkgc2hvdWxkIGJlIGxvb2tpbmcgYXQuIEp1c3QgdG8gYmUgdGhvcm91Z2ggYW5kIGJlY2F1c2UgaXQmIzM5O3MgZ29vZCBwcmFjdGljZSwgbGV0IG1lIGFsc28gY2hlY2sgdGhlIGBuZXQvbmZjL25jaS9NYWtlZmlsZWAuIFRoYXQgd2lsbCBnaXZlIG1lIGEgYnJvYWRlciB1bmRlcnN0YW5kaW5nIG9mIHRoZSBidWlsZCBwcm9jZXNzIGFuZCBhbnkgcG90ZW50aWFsIGRlcGVuZGVuY2llcyBvciBidWlsZCBmbGFncyB0aGF0IG1pZ2h0IGJlIGluZmx1ZW5jaW5nIHRoaXMgbW9kdWxlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yMyAyMjo0MTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtyc3AubyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9uZmMvbmNpL01ha2VmaWxlJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9uZmMvbmNpL01ha2VmaWxlPTY9b2JqLSQoQ09ORklHX05GQ19OQ0kpICYjNDM7PSBuY2kub1xubmV0L25mYy9uY2kvTWFrZWZpbGUtNy1cbm5ldC9uZmMvbmNpL01ha2VmaWxlOjg6bmNpLW9ianMgOj0gY29yZS5vIGRhdGEubyBsaWIubyBudGYubyByc3AubyBoY2kub1xubmV0L25mYy9uY2kvTWFrZWZpbGUtOS1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjMgMjI6NDE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTA5NQoJCQkJCQkJb3V0cHV0OiA0NAoJCQkJCQkJdGhvdWdodHM6IDEwNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipORkMgQ29uZmlndXJhdGlvbiBhbmQgQ29yZSBJbml0aWFsaXphdGlvbioqCgpPa2F5LCBzbyBJJiMzOTttIHRha2luZyBhIGxvb2sgYXQgdGhpcyBORkMgY29uZmlndXJhdGlvbi4gSXQgc2VlbXMgbGlrZSBzZXR0aW5nIGBDT05GSUdfTkZDX05DSWAgc2hvdWxkIGJlIHRoZSBvbmx5IGNvbmZpZyBuZWVkZWQsIHJpZ2h0PyBCdXQgaG9sZCBvbiBhIHNlY29uZC4uLiBpc24mIzM5O3QgYE5GQ19OQ0lgIGRlcGVuZGVudCBvbiB0aGUgYmFzZSBgTkZDYCBmZWF0dXJlPyBSaWdodCwgc28gYWN0dWFsbHksIHNldHRpbmcgYE5GQ19OQ0lgIHNob3VsZCBpbXBsaWNpdGx5IGVuYWJsZSBgTkZDYC4gVGhhdCYjMzk7cyBnb29kOyBpdCBzaW1wbGlmaWVzIHRoaW5ncy4gSSBzaG91bGQgYmUgYWJsZSB0byBqdXN0IGxpc3QgdGhlIGBORkNfTkNJYCBmZWF0dXJlcy4KCk5vdywgSSBuZWVkIHRvIGNoZWNrIHNvbWUgc3BlY2lmaWMgc3ltYm9scyByZWxhdGVkIHRvIHRoZSBpbml0aWFsaXphdGlvbiBvZiB0aGUgTkNJIGNvcmUuIFNwZWNpZmljYWxseSwgSSBuZWVkIHRvIHZlcmlmeSB3aGF0IHZlcnNpb25zIGFyZSBzdXBwb3J0ZWQgZm9yIHRoZSBjb3JlIGluaXRpYWxpemF0aW9uIHJlc3BvbnNlIHBhY2tldC4gVGhlIGtleSBzeW1ib2xzIEkgaGF2ZSBpbiBtaW5kIGFyZSBgbmNpX2NvcmVfaW5pdF9yc3BfcGFja2V0X3YxYCBhbmQgYG5jaV9jb3JlX2luaXRfcnNwX3BhY2tldF92MmAuCgpMZXQgbWUgcXVpY2tseSBjb25maXJtIHRoYXQgdGhlc2UgZnVuY3Rpb25zIGFyZSBhY3R1YWxseSBkZWZpbmVkIHdoZXJlIHRoZXkgc2hvdWxkIGJlLCBpbiBgbmV0L25mYy9uY2kvcnNwLmNgLiBJIGhhdmUgYSBodW5jaCwgYnV0IHZlcmlmeWluZyBpcyBhbHdheXMgYmVzdCBwcmFjdGljZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjMgMjI6NDE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bmNpX2NvcmVfaW5pdF9yc3BfcGFja2V0X3YxJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L25mYy9uY2kvcnNwLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L25mYy9uY2kvcnNwLmM9Mjg9c3RhdGljIHZvaWQgbmNpX2NvcmVfcmVzZXRfcnNwX3BhY2tldChzdHJ1Y3QgbmNpX2RldiAqbmRldixcbi0tXG5uZXQvbmZjL25jaS9yc3AuYy00Ni1cbm5ldC9uZmMvbmNpL3JzcC5jOjQ3OnN0YXRpYyB1OCBuY2lfY29yZV9pbml0X3JzcF9wYWNrZXRfdjEoc3RydWN0IG5jaV9kZXYgKm5kZXYsXG5uZXQvbmZjL25jaS9yc3AuYy00OC1cdFx0XHRcdCAgICAgIGNvbnN0IHN0cnVjdCBza19idWZmICpza2IpXG4tLVxubmV0L25mYy9uY2kvcnNwLmM9MTQ2PXN0YXRpYyB2b2lkIG5jaV9jb3JlX2luaXRfcnNwX3BhY2tldChzdHJ1Y3QgbmNpX2RldiAqbmRldiwgY29uc3Qgc3RydWN0IHNrX2J1ZmYgKnNrYilcbi0tXG5uZXQvbmZjL25jaS9yc3AuYy0xNTAtXHRpZiAoIShuZGV2LVx1MDAzZW5jaV92ZXIgXHUwMDI2IE5DSV9WRVJfMl9NQVNLKSlcbm5ldC9uZmMvbmNpL3JzcC5jOjE1MTpcdFx0c3RhdHVzID0gbmNpX2NvcmVfaW5pdF9yc3BfcGFja2V0X3YxKG5kZXYsIHNrYik7XG5uZXQvbmZjL25jaS9yc3AuYy0xNTItXHRlbHNlXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzIzIDIyOjQxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDU3NjQKCQkJCQkJCW91dHB1dDogMjYKCQkJCQkJCXRob3VnaHRzOiAxODEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQXNzZXNzbWVudCBvZiB0aGUgTkNJIENvcmUgSW5pdCBSZXNwb25zZSBQYXRjaCoqCgpPa2F5LCBzbyB0aGlzIHBhdGNoIGRpcmVjdGx5IGFkZHJlc3NlcyBhIGNyaXRpY2FsIGlzc3VlOiBtaXNzaW5nIGxlbmd0aCBjaGVja3MgaW4gaG93IHdlIHBhcnNlIE5DSSBjb3JlIGluaXRpYWxpemF0aW9uIHJlc3BvbnNlcy4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsIHllcywgYWJzb2x1dGVseSwgdGhpcyBpcyBhIG1lbW9yeSBzYWZldHkgZml4LiBJdCYjMzk7cyBhIGZ1bmN0aW9uYWwgY2hhbmdlLCBwcmV2ZW50aW5nIHBvdGVudGlhbCBvdXQtb2YtYm91bmRzIHJlYWRzIGR1cmluZyB0aGUgcmVzcG9uc2UgcGFyc2luZywgd2hpY2ggaXMgcHJlY2lzZWx5IHRoZSBraW5kIG9mIHZ1bG5lcmFiaWxpdHkgd2Ugd2FudCB0byBzcXVhc2guIGBXb3J0aEZ1enppbmdgPyBBYnNvbHV0ZWx5LiBUaGlzIGlzIGEgcHJpbWUgdGFyZ2V0LgoKTXkgaW52ZXN0aWdhdGlvbiBvZiB0aGUgY29uZmlncyByZXF1aXJlZCBmb3IgcmVwcm9kdWNpbmcgdGhlIGlzc3VlIG9yIHZlcmlmeWluZyB0aGUgZml4IGluZGljYXRlcyB0aGF0IGBORkNfTkNJYCBpcyB0aGUgcHJpbWFyeSwgcGVyaGFwcyBvbmx5LCByZWxldmFudCBjb25maWd1cmF0aW9uLiBIb3dldmVyLCBJIG5lZWQgdG8gYmUgdGhvcm91Z2guIEkmIzM5O20gZ29pbmcgdG8gcXVpY2tseSBjaGVjayBmb3IgYW55IHJlbGF0ZWQgY29uZmlndXJhdGlvbnMuIE1heWJlIGBORkNfVklSVFVBTF9OQ0lgIGluIHBhcnRpY3VsYXI/IEkmIzM5O2xsIHByb2JhYmx5IGxvb2sgaW50byBgZHJpdmVycy9uZmMvdmlydHVhbF9uY2lkZXYuY2Agb3IgYSBzaW1pbGFyIGZpbGUgdG8gY29uZmlybSB0aGVyZSBhcmVuJiMzOTt0IGFueSBvdGhlciBjb25maWdzIEkgbmVlZCB0byBiZSBhd2FyZSBvZi4gVGhlIGBGb2N1c1N5bWJvbHNgIGFyZSBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkOiB3ZSYjMzk7cmUgZm9jdXNpbmcgb24gYG5jaV9jb3JlX2luaXRfcnNwX3BhY2tldF92MWAgYW5kIGBuY2lfY29yZV9pbml0X3JzcF9wYWNrZXRfdjJgLCBzbyB0aGF0JiMzOTtzIHdoZXJlIEkgbmVlZCB0byBsb29rLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yMyAyMjo0MTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtORkNfVklSVFVBTCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0OyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25mYy9LY29uZmlnPTQyPWNvbmZpZyBORkNfUE9SVDEwMFxuLS1cbmRyaXZlcnMvbmZjL0tjb25maWctNTEtXG5kcml2ZXJzL25mYy9LY29uZmlnOjUyOmNvbmZpZyBORkNfVklSVFVBTF9OQ0lcbmRyaXZlcnMvbmZjL0tjb25maWctNTMtXHR0cmlzdGF0ZSBcJiMzNDtOQ0kgZGV2aWNlIHNpbXVsYXRvciBkcml2ZXJcJiMzNDtcbi0tXG5kcml2ZXJzL25mYy9NYWtlZmlsZT0xOT1vYmotJChDT05GSUdfTkZDX1NUOTVIRilcdCYjNDM7PSBzdDk1aGYvXG5kcml2ZXJzL25mYy9NYWtlZmlsZToyMDpvYmotJChDT05GSUdfTkZDX1ZJUlRVQUxfTkNJKVx0JiM0Mzs9IHZpcnR1YWxfbmNpZGV2Lm9cbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uY2kvY29uZmlnPTI9Q09ORklHX05GQ19OQ0k9eVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbmNpL2NvbmZpZzozOkNPTkZJR19ORkNfVklSVFVBTF9OQ0k9eVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yMyAyMjo0MTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2NDQ3CgkJCQkJCQlvdXRwdXQ6IDExNAoJCQkJCQkJdGhvdWdodHM6IDQ3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQmIzM5O3MgaW50ZXJuYWwgbW9ub2xvZ3VlOgoKKipUaGlua2luZyBUaHJvdWdoIFZpcnR1YWwgTkNJIGZvciBGdXp6aW5nKioKClJpZ2h0LCBgTkZDX1ZJUlRVQUxfTkNJYC4gVGhhdCYjMzk7cyB0aGUgc2ltdWxhdG9yIGRyaXZlciwgaXNuJiMzOTt0IGl0PyBDbGFzc2ljISBTdXBlciBoYW5keSBmb3IgZnV6emluZyB0aGUgTkNJIHN0YWNrLiBObyBuZWVkIHRvIHdvcnJ5IGFib3V0IHJlYWwgaGFyZHdhcmUgYXQgdGhpcyBzdGFnZSwgd2hpY2ggaXMgcHJlY2lzZWx5IHRoZSBiZWF1dHkgb2YgaXQuIEdldHMgbWUgdXAgYW5kIHJ1bm5pbmcgZmFzdC4gSSYjMzk7ZCBiZSByZW1pc3Mgbm90IHRvIGluY2x1ZGUgdGhhdCB3aGVuIEkmIzM5O20gc2V0dGluZyB1cCBteSBmdXp6aW5nIGVudmlyb25tZW50LiBTYXZlcyB0aW1lIGFuZCBhbGxvd3MgbWUgdG8gaXRlcmF0ZSBvbiB0aGUgaW5wdXRzIG11Y2ggZmFzdGVyLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yMyAyMjo0MjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7TkZDX05DSSYjMzQ7LAogICAgJiMzNDtORkNfVklSVFVBTF9OQ0kmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtuY2lfY29yZV9pbml0X3JzcF9wYWNrZXRfdjEmIzM0OywKICAgICYjMzQ7bmNpX2NvcmVfaW5pdF9yc3BfcGFja2V0X3YyJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgbGVuZ3RoIGNoZWNrcyB0byBOQ0kgY29yZSBpbml0IHJlc3BvbnNlIHBhY2tldHMgcGFyc2luZyB0byBwcmV2ZW50IG91dC1vZi1ib3VuZHMgcmVhZHMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBmaXhpbmcgcG90ZW50aWFsIG1lbW9yeSBzYWZldHkgaXNzdWVzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtORkNfTkNJJiMzNDssCiAgICAmIzM0O05GQ19WSVJUVUFMX05DSSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O25jaV9jb3JlX2luaXRfcnNwX3BhY2tldF92MSYjMzQ7LAogICAgJiMzNDtuY2lfY29yZV9pbml0X3JzcF9wYWNrZXRfdjImIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBsZW5ndGggY2hlY2tzIHRvIE5DSSBjb3JlIGluaXQgcmVzcG9uc2UgcGFja2V0cyBwYXJzaW5nIHRvIHByZXZlbnQgb3V0LW9mLWJvdW5kcyByZWFkcy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGZpeGluZyBwb3RlbnRpYWwgbWVtb3J5IHNhZmV0eSBpc3N1ZXMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNi0yM1QyMjo0MToxOC40MDIzMjI5OTVaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0MjMzODM4MDA1MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJORkNfTkNJXCIsXG4gICAgXCJORkNfVklSVFVBTF9OQ0lcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJuY2lfY29yZV9pbml0X3JzcF9wYWNrZXRfdjFcIixcbiAgICBcIm5jaV9jb3JlX2luaXRfcnNwX3BhY2tldF92MlwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgbGVuZ3RoIGNoZWNrcyB0byBOQ0kgY29yZSBpbml0IHJlc3BvbnNlIHBhY2tldHMgcGFyc2luZyB0byBwcmV2ZW50IG91dC1vZi1ib3VuZHMgcmVhZHMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBmaXhpbmcgcG90ZW50aWFsIG1lbW9yeSBzYWZldHkgaXNzdWVzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yM1QyMjo0MToxOC40MDIzMzAxNDVaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ3NTMxMTI5MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IGIxNzUyNzZjZTM0OThjZGE3ODQ4ZDBlN2QyZWRiNzIwZWE1NTY5YzRcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFR1ZSBKdW4gMjMgMjI6NDE6MTcgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvbmV0L25mYy9uY2kvcnNwLmMgYi9uZXQvbmZjL25jaS9yc3AuY1xcbmluZGV4IDllZWI4NjI4MjVjNWZlLi5jZGNkMjNjOGNhOTVmZSAxMDA2NDRcXG4tLS0gYS9uZXQvbmZjL25jaS9yc3AuY1xcbisrKyBiL25ldC9uZmMvbmNpL3JzcC5jXFxuQEAgLTUwLDYgKzUwLDkgQEAgc3RhdGljIHU4IG5jaV9jb3JlX2luaXRfcnNwX3BhY2tldF92MShzdHJ1Y3QgbmNpX2RldiAqbmRldixcXG4gXFx0Y29uc3Qgc3RydWN0IG5jaV9jb3JlX2luaXRfcnNwXzEgKnJzcF8xID0gKHZvaWQgKilza2ItXFx1MDAzZWRhdGE7XFxuIFxcdGNvbnN0IHN0cnVjdCBuY2lfY29yZV9pbml0X3JzcF8yICpyc3BfMjtcXG4gXFxuK1xcdGlmIChza2ItXFx1MDAzZWxlbiBcXHUwMDNjIHNpemVvZigqcnNwXzEpKVxcbitcXHRcXHRyZXR1cm4gTkNJX1NUQVRVU19TWU5UQVhfRVJST1I7XFxuK1xcbiBcXHRwcl9kZWJ1ZyhcXFwic3RhdHVzIDB4JXhcXFxcblxcXCIsIHJzcF8xLVxcdTAwM2VzdGF0dXMpO1xcbiBcXG4gXFx0aWYgKHJzcF8xLVxcdTAwM2VzdGF0dXMgIT0gTkNJX1NUQVRVU19PSylcXG5AQCAtNTgsNiArNjEsMTUgQEAgc3RhdGljIHU4IG5jaV9jb3JlX2luaXRfcnNwX3BhY2tldF92MShzdHJ1Y3QgbmNpX2RldiAqbmRldixcXG4gXFx0bmRldi1cXHUwMDNlbmZjY19mZWF0dXJlcyA9IF9fbGUzMl90b19jcHUocnNwXzEtXFx1MDAzZW5mY2NfZmVhdHVyZXMpO1xcbiBcXHRuZGV2LVxcdTAwM2VudW1fc3VwcG9ydGVkX3JmX2ludGVyZmFjZXMgPSByc3BfMS1cXHUwMDNlbnVtX3N1cHBvcnRlZF9yZl9pbnRlcmZhY2VzO1xcbiBcXG4rXFx0LypcXG4rXFx0ICogc3VwcG9ydGVkX3JmX2ludGVyZmFjZXNbXSBhbmQgdGhlIHRyYWlsaW5nIG5jaV9jb3JlX2luaXRfcnNwXzIgYXJlXFxuK1xcdCAqIGFkZHJlc3NlZCB1c2luZyB0aGUgb24td2lyZSAodW5jbGFtcGVkKSBpbnRlcmZhY2UgY291bnQsIHNvIHRoZVxcbitcXHQgKiByZXNwb25zZSBtdXN0IGJlIGxvbmcgZW5vdWdoIGZvciBib3RoIGJlZm9yZSB0aGV5IGFyZSBkZXJlZmVyZW5jZWQuXFxuK1xcdCAqL1xcbitcXHRpZiAoc2tiLVxcdTAwM2VsZW4gXFx1MDAzYyBzaXplb2YoKnJzcF8xKSArXFxuK1xcdCAgICByc3BfMS1cXHUwMDNlbnVtX3N1cHBvcnRlZF9yZl9pbnRlcmZhY2VzICsgc2l6ZW9mKCpyc3BfMikpXFxuK1xcdFxcdHJldHVybiBOQ0lfU1RBVFVTX1NZTlRBWF9FUlJPUjtcXG4rXFxuIFxcdG5kZXYtXFx1MDAzZW51bV9zdXBwb3J0ZWRfcmZfaW50ZXJmYWNlcyA9XFxuIFxcdFxcdG1pbigoaW50KW5kZXYtXFx1MDAzZW51bV9zdXBwb3J0ZWRfcmZfaW50ZXJmYWNlcyxcXG4gXFx0XFx0ICAgIE5DSV9NQVhfU1VQUE9SVEVEX1JGX0lOVEVSRkFDRVMpO1xcbkBAIC04OCw5ICsxMDAsMTMgQEAgc3RhdGljIHU4IG5jaV9jb3JlX2luaXRfcnNwX3BhY2tldF92MihzdHJ1Y3QgbmNpX2RldiAqbmRldixcXG4ge1xcbiBcXHRjb25zdCBzdHJ1Y3QgbmNpX2NvcmVfaW5pdF9yc3BfbmNpX3ZlcjIgKnJzcCA9ICh2b2lkICopc2tiLVxcdTAwM2VkYXRhO1xcbiBcXHRjb25zdCB1OCAqc3VwcG9ydGVkX3JmX2ludGVyZmFjZSA9IHJzcC1cXHUwMDNlc3VwcG9ydGVkX3JmX2ludGVyZmFjZXM7XFxuK1xcdGNvbnN0IHU4ICplbmQgPSBza2ItXFx1MDAzZWRhdGEgKyBza2ItXFx1MDAzZWxlbjtcXG4gXFx0dTggcmZfaW50ZXJmYWNlX2lkeCA9IDA7XFxuIFxcdHU4IHJmX2V4dGVuc2lvbl9jbnQgPSAwO1xcbiBcXG4rXFx0aWYgKHNrYi1cXHUwMDNlbGVuIFxcdTAwM2Mgc2l6ZW9mKCpyc3ApKVxcbitcXHRcXHRyZXR1cm4gTkNJX1NUQVRVU19TWU5UQVhfRVJST1I7XFxuK1xcbiBcXHRwcl9kZWJ1ZyhcXFwic3RhdHVzICV4XFxcXG5cXFwiLCByc3AtXFx1MDAzZXN0YXR1cyk7XFxuIFxcbiBcXHRpZiAocnNwLVxcdTAwM2VzdGF0dXMgIT0gTkNJX1NUQVRVU19PSylcXG5AQCAtMTA0LDEwICsxMjAsMTYgQEAgc3RhdGljIHU4IG5jaV9jb3JlX2luaXRfcnNwX3BhY2tldF92MihzdHJ1Y3QgbmNpX2RldiAqbmRldixcXG4gXFx0XFx0ICAgIE5DSV9NQVhfU1VQUE9SVEVEX1JGX0lOVEVSRkFDRVMpO1xcbiBcXG4gXFx0d2hpbGUgKHJmX2ludGVyZmFjZV9pZHggXFx1MDAzYyBuZGV2LVxcdTAwM2VudW1fc3VwcG9ydGVkX3JmX2ludGVyZmFjZXMpIHtcXG4tXFx0XFx0bmRldi1cXHUwMDNlc3VwcG9ydGVkX3JmX2ludGVyZmFjZXNbcmZfaW50ZXJmYWNlX2lkeCsrXSA9ICpzdXBwb3J0ZWRfcmZfaW50ZXJmYWNlKys7XFxuK1xcdFxcdC8qIG9uZSBpbnRlcmZhY2UgYnl0ZSArIG9uZSBleHRlbnNpb24tY291bnQgYnl0ZSBtdXN0IGJlIHByZXNlbnQgKi9cXG4rXFx0XFx0aWYgKGVuZCAtIHN1cHBvcnRlZF9yZl9pbnRlcmZhY2UgXFx1MDAzYyAyKVxcbitcXHRcXHRcXHRyZXR1cm4gTkNJX1NUQVRVU19TWU5UQVhfRVJST1I7XFxuK1xcdFxcdG5kZXYtXFx1MDAzZXN1cHBvcnRlZF9yZl9pbnRlcmZhY2VzW3JmX2ludGVyZmFjZV9pZHgrK10gPVxcbitcXHRcXHRcXHQqc3VwcG9ydGVkX3JmX2ludGVyZmFjZSsrO1xcbiBcXG4tXFx0XFx0Lyogc2tpcCByZiBleHRlbnNpb24gcGFyYW1ldGVycyAqL1xcbitcXHRcXHQvKiBza2lwIHJmIGV4dGVuc2lvbiBwYXJhbWV0ZXJzLCBib3VuZGVkIGJ5IHRoZSBwYWNrZXQgKi9cXG4gXFx0XFx0cmZfZXh0ZW5zaW9uX2NudCA9ICpzdXBwb3J0ZWRfcmZfaW50ZXJmYWNlKys7XFxuK1xcdFxcdGlmIChyZl9leHRlbnNpb25fY250IFxcdTAwM2UgZW5kIC0gc3VwcG9ydGVkX3JmX2ludGVyZmFjZSlcXG4rXFx0XFx0XFx0cmV0dXJuIE5DSV9TVEFUVVNfU1lOVEFYX0VSUk9SO1xcbiBcXHRcXHRzdXBwb3J0ZWRfcmZfaW50ZXJmYWNlICs9IHJmX2V4dGVuc2lvbl9jbnQ7XFxuIFxcdH1cXG4gXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTIzVDIyOjQxOjE4Ljg3ODU0MjQ4NloiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDE4NjIxNDQ4NjEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTkZDX05DSVwiLFxuICAgIFwiTkZDX1ZJUlRVQUxfTkNJXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwibmNpX2NvcmVfaW5pdF9yc3BfcGFja2V0X3YxXCIsXG4gICAgXCJuY2lfY29yZV9pbml0X3JzcF9wYWNrZXRfdjJcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIGxlbmd0aCBjaGVja3MgdG8gTkNJIGNvcmUgaW5pdCByZXNwb25zZSBwYWNrZXRzIHBhcnNpbmcgdG8gcHJldmVudCBvdXQtb2YtYm91bmRzIHJlYWRzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgZml4aW5nIHBvdGVudGlhbCBtZW1vcnkgc2FmZXR5IGlzc3Vlcy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdFxuICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LFxuICAgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCBiMTc1Mjc2Y2UzNDk4Y2RhNzg0OGQwZTdkMmVkYjcyMGVhNTU2OWM0XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFR1ZSBKdW4gMjMgMjI6NDE6MTcgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9uZXQvbmZjL25jaS9yc3AuYyBiL25ldC9uZmMvbmNpL3JzcC5jXG5pbmRleCA5ZWViODYyODI1YzVmZS4uY2RjZDIzYzhjYTk1ZmUgMTAwNjQ0XG4tLS0gYS9uZXQvbmZjL25jaS9yc3AuY1xuKysrIGIvbmV0L25mYy9uY2kvcnNwLmNcbkBAIC01MCw2ICs1MCw5IEBAIHN0YXRpYyB1OCBuY2lfY29yZV9pbml0X3JzcF9wYWNrZXRfdjEoc3RydWN0IG5jaV9kZXYgKm5kZXYsXG4gXHRjb25zdCBzdHJ1Y3QgbmNpX2NvcmVfaW5pdF9yc3BfMSAqcnNwXzEgPSAodm9pZCAqKXNrYi1cdTAwM2VkYXRhO1xuIFx0Y29uc3Qgc3RydWN0IG5jaV9jb3JlX2luaXRfcnNwXzIgKnJzcF8yO1xuIFxuK1x0aWYgKHNrYi1cdTAwM2VsZW4gXHUwMDNjIHNpemVvZigqcnNwXzEpKVxuK1x0XHRyZXR1cm4gTkNJX1NUQVRVU19TWU5UQVhfRVJST1I7XG4rXG4gXHRwcl9kZWJ1ZyhcInN0YXR1cyAweCV4XFxuXCIsIHJzcF8xLVx1MDAzZXN0YXR1cyk7XG4gXG4gXHRpZiAocnNwXzEtXHUwMDNlc3RhdHVzICE9IE5DSV9TVEFUVVNfT0spXG5AQCAtNTgsNiArNjEsMTUgQEAgc3RhdGljIHU4IG5jaV9jb3JlX2luaXRfcnNwX3BhY2tldF92MShzdHJ1Y3QgbmNpX2RldiAqbmRldixcbiBcdG5kZXYtXHUwMDNlbmZjY19mZWF0dXJlcyA9IF9fbGUzMl90b19jcHUocnNwXzEtXHUwMDNlbmZjY19mZWF0dXJlcyk7XG4gXHRuZGV2LVx1MDAzZW51bV9zdXBwb3J0ZWRfcmZfaW50ZXJmYWNlcyA9IHJzcF8xLVx1MDAzZW51bV9zdXBwb3J0ZWRfcmZfaW50ZXJmYWNlcztcbiBcbitcdC8qXG4rXHQgKiBzdXBwb3J0ZWRfcmZfaW50ZXJmYWNlc1tdIGFuZCB0aGUgdHJhaWxpbmcgbmNpX2NvcmVfaW5pdF9yc3BfMiBhcmVcbitcdCAqIGFkZHJlc3NlZCB1c2luZyB0aGUgb24td2lyZSAodW5jbGFtcGVkKSBpbnRlcmZhY2UgY291bnQsIHNvIHRoZVxuK1x0ICogcmVzcG9uc2UgbXVzdCBiZSBsb25nIGVub3VnaCBmb3IgYm90aCBiZWZvcmUgdGhleSBhcmUgZGVyZWZlcmVuY2VkLlxuK1x0ICovXG4rXHRpZiAoc2tiLVx1MDAzZWxlbiBcdTAwM2Mgc2l6ZW9mKCpyc3BfMSkgK1xuK1x0ICAgIHJzcF8xLVx1MDAzZW51bV9zdXBwb3J0ZWRfcmZfaW50ZXJmYWNlcyArIHNpemVvZigqcnNwXzIpKVxuK1x0XHRyZXR1cm4gTkNJX1NUQVRVU19TWU5UQVhfRVJST1I7XG4rXG4gXHRuZGV2LVx1MDAzZW51bV9zdXBwb3J0ZWRfcmZfaW50ZXJmYWNlcyA9XG4gXHRcdG1pbigoaW50KW5kZXYtXHUwMDNlbnVtX3N1cHBvcnRlZF9yZl9pbnRlcmZhY2VzLFxuIFx0XHQgICAgTkNJX01BWF9TVVBQT1JURURfUkZfSU5URVJGQUNFUyk7XG5AQCAtODgsOSArMTAwLDEzIEBAIHN0YXRpYyB1OCBuY2lfY29yZV9pbml0X3JzcF9wYWNrZXRfdjIoc3RydWN0IG5jaV9kZXYgKm5kZXYsXG4ge1xuIFx0Y29uc3Qgc3RydWN0IG5jaV9jb3JlX2luaXRfcnNwX25jaV92ZXIyICpyc3AgPSAodm9pZCAqKXNrYi1cdTAwM2VkYXRhO1xuIFx0Y29uc3QgdTggKnN1cHBvcnRlZF9yZl9pbnRlcmZhY2UgPSByc3AtXHUwMDNlc3VwcG9ydGVkX3JmX2ludGVyZmFjZXM7XG4rXHRjb25zdCB1OCAqZW5kID0gc2tiLVx1MDAzZWRhdGEgKyBza2ItXHUwMDNlbGVuO1xuIFx0dTggcmZfaW50ZXJmYWNlX2lkeCA9IDA7XG4gXHR1OCByZl9leHRlbnNpb25fY250ID0gMDtcbiBcbitcdGlmIChza2ItXHUwMDNlbGVuIFx1MDAzYyBzaXplb2YoKnJzcCkpXG4rXHRcdHJldHVybiBOQ0lfU1RBVFVTX1NZTlRBWF9FUlJPUjtcbitcbiBcdHByX2RlYnVnKFwic3RhdHVzICV4XFxuXCIsIHJzcC1cdTAwM2VzdGF0dXMpO1xuIFxuIFx0aWYgKHJzcC1cdTAwM2VzdGF0dXMgIT0gTkNJX1NUQVRVU19PSylcbkBAIC0xMDQsMTAgKzEyMCwxNiBAQCBzdGF0aWMgdTggbmNpX2NvcmVfaW5pdF9yc3BfcGFja2V0X3YyKHN0cnVjdCBuY2lfZGV2ICpuZGV2LFxuIFx0XHQgICAgTkNJX01BWF9TVVBQT1JURURfUkZfSU5URVJGQUNFUyk7XG4gXG4gXHR3aGlsZSAocmZfaW50ZXJmYWNlX2lkeCBcdTAwM2MgbmRldi1cdTAwM2VudW1fc3VwcG9ydGVkX3JmX2ludGVyZmFjZXMpIHtcbi1cdFx0bmRldi1cdTAwM2VzdXBwb3J0ZWRfcmZfaW50ZXJmYWNlc1tyZl9pbnRlcmZhY2VfaWR4KytdID0gKnN1cHBvcnRlZF9yZl9pbnRlcmZhY2UrKztcbitcdFx0Lyogb25lIGludGVyZmFjZSBieXRlICsgb25lIGV4dGVuc2lvbi1jb3VudCBieXRlIG11c3QgYmUgcHJlc2VudCAqL1xuK1x0XHRpZiAoZW5kIC0gc3VwcG9ydGVkX3JmX2ludGVyZmFjZSBcdTAwM2MgMilcbitcdFx0XHRyZXR1cm4gTkNJX1NUQVRVU19TWU5UQVhfRVJST1I7XG4rXHRcdG5kZXYtXHUwMDNlc3VwcG9ydGVkX3JmX2ludGVyZmFjZXNbcmZfaW50ZXJmYWNlX2lkeCsrXSA9XG4rXHRcdFx0KnN1cHBvcnRlZF9yZl9pbnRlcmZhY2UrKztcbiBcbi1cdFx0Lyogc2tpcCByZiBleHRlbnNpb24gcGFyYW1ldGVycyAqL1xuK1x0XHQvKiBza2lwIHJmIGV4dGVuc2lvbiBwYXJhbWV0ZXJzLCBib3VuZGVkIGJ5IHRoZSBwYWNrZXQgKi9cbiBcdFx0cmZfZXh0ZW5zaW9uX2NudCA9ICpzdXBwb3J0ZWRfcmZfaW50ZXJmYWNlKys7XG4rXHRcdGlmIChyZl9leHRlbnNpb25fY250IFx1MDAzZSBlbmQgLSBzdXBwb3J0ZWRfcmZfaW50ZXJmYWNlKVxuK1x0XHRcdHJldHVybiBOQ0lfU1RBVFVTX1NZTlRBWF9FUlJPUjtcbiBcdFx0c3VwcG9ydGVkX3JmX2ludGVyZmFjZSArPSByZl9leHRlbnNpb25fY250O1xuIFx0fVxuIFxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjNUMjI6NDE6MTguODc4NTQ4ODI2WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDY0MzQ0MDA5MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBQYXRjaCBmb3IgTkZDIFNhZmV0eSoqXG5cbk9rYXksIHNvIEkndmUgZ290IGEgcGF0Y2ggaGVyZSB0aGF0J3MgcG9raW5nIGF0IGBuZXQvbmZjL25jaS9yc3AuY2AuIFNlZW1zIGxpa2UgdGhleSdyZSBhZGRpbmcgc29tZSBjcnVjaWFsIGxlbmd0aCBjaGVja3MgdG8gdGhlIGBuY2lfY29yZV9pbml0X3JzcF9wYWNrZXRfdjFgIGFuZCBgbmNpX2NvcmVfaW5pdF9yc3BfcGFja2V0X3YyYCBmdW5jdGlvbnMuIFNtYXJ0IG1vdmUuIFRoaXMgaXMgZXhhY3RseSB0aGUga2luZCBvZiBwcm9hY3RpdmUgbWVhc3VyZSB3ZSBuZWVkIHRvIHByZXZlbnQgdGhvc2UgbmFzdHkgb3V0LW9mLWJvdW5kcyByZWFkIHZ1bG5lcmFiaWxpdGllcyB3aGVuIHBhcnNpbmcgTkNJIGNvcmUgaW5pdCByZXNwb25zZXMuIEl0J3MgYSBmdW5jdGlvbmFsIGZpeCwgYWRkcmVzc2luZyBwb3RlbnRpYWwgbWVtb3J5IHNhZmV0eSBpc3N1ZXMuIFRoaXMgaXMgZXhhY3RseSB0aGUga2luZCBvZiB0aGluZyB0aGF0IG1ha2VzIG1lIGdvLCBcIlllcCwgdGhhdCBuZWVkcyBmdXp6aW5nIGltbWVkaWF0ZWx5LlwiXG5cblRpbWUgdG8gZ2V0IGludG8gdGhpcyBhIGJpdCBkZWVwZXIuIExldCdzIHNlZS4uLiB0aGUgZm9jdXMgaGVyZSBpcyBkZWZpbml0ZWx5IG9uIHRob3NlIHR3byBmdW5jdGlvbnM6IGBuY2lfY29yZV9pbml0X3JzcF9wYWNrZXRfdjFgIGFuZCBgbmNpX2NvcmVfaW5pdF9yc3BfcGFja2V0X3YyYC4gTm93LCBsZXQncyBpZGVudGlmeSByZWxldmFudCBjb25maWdzLiBJJ20gZ29pbmcgdG8ganVtcCBpbnRvIGBuZXQvbmZjL25jaS9yc3AuY2AgZGlyZWN0bHkgYW5kIHN0YXJ0IGRpZ2dpbmcgYXJvdW5kIHRoZSBLY29uZmlnIHRvIHNlZSB3aGF0IHdlJ3JlIGxvb2tpbmcgYXQgaGVyZS4gVGhpcyBsb29rcyBsaWtlIGEgc29saWQgY29udHJpYnV0aW9uLiBMZXQncyBnZXQgdG8gd29yay5cblxuXG4iLCJJbnB1dFRva2VucyI6MjY0MiwiT3V0cHV0VG9rZW5zIjozMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE2NCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTIzVDIyOjQxOjIzLjUyMTk5MTU3OFoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2NTEwNDMzOCwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIE5DSVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvbmZjL25jaS9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yM1QyMjo0MToyMy41ODcxMTM0MjdaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMjU1MTY5NTQ4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBJIHdlcmUgY29uc2lkZXJpbmcgdGhpcyBteXNlbGYsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqTG9jYXRpbmcgdGhlIE5DSSBLY29uZmlnIEZpbGUqKlxuXG5BbHJpZ2h0LCB0aW1lIHRvIGdldCB0aGlzIEtjb25maWcgc2l0dWF0aW9uIHNvcnRlZCBmb3IgTkNJLiBNeSBmaXJzdCBpbnN0aW5jdCwgYXMgYWx3YXlzLCBpcyB0byBkaXZlIHN0cmFpZ2h0IGludG8gdGhlIHJlbGV2YW50IHNvdXJjZSB0cmVlLiBJIG5lZWQgdG8gZmlndXJlIG91dCB3aGVyZSB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zIGZvciB0aGUgTkNJIChORkMgQ29udHJvbGxlciBJbnRlcmZhY2UpIG1vZHVsZSByZXNpZGUuIEdpdmVuIG15IGZhbWlsaWFyaXR5IHdpdGggaG93IHRoZXNlIHN5c3RlbXMgYXJlIHR5cGljYWxseSBzdHJ1Y3R1cmVkLCBJJ20gZXhwZWN0aW5nIGl0IHRvIGZvbGxvdyBhIHJlbGF0aXZlbHkgc3RhbmRhcmQgcGF0dGVybi5cblxuSSdsbCBiZSBsb29raW5nIGZvciBhIGZpbGUgbmFtZWQgc29tZXRoaW5nIGFsb25nIHRoZSBsaW5lcyBvZiBgS2NvbmZpZy5uY2lgIG9yIHBlcmhhcHMgYG5jaS9LY29uZmlnYCwgb3Igc29tZXRoaW5nIHJlZmxlY3RpbmcgdGhlIG5hbWluZyBjb252ZW50aW9uIG9mIHRoZSBzcGVjaWZpYyBwbGF0Zm9ybSBJIGFtIHdvcmtpbmcgd2l0aC4gVGhlIGtleSBpcyB0byBmaW5kIHRoZSBjZW50cmFsIHBvaW50IG9mIGNvbnRyb2wgZm9yIHRoZSBOQ0ktcmVsYXRlZCBjb25maWd1cmF0aW9uIG9wdGlvbnMuIEknbGwgbmVlZCB0byBjaGVjayB0aGUgaGlnaGVyIGxldmVsIEtjb25maWcgZmlsZXMgZm9yIGluY2x1ZGVzLCBsaWtlbHkgd2l0aGluIHRoZSBORkMgb3IgQ29ubmVjdGl2aXR5IHNlY3Rpb25zLCBkZXBlbmRpbmcgb24gaG93IHRoZXkndmUgb3JnYW5pemVkIHRoYXQgcG9ydGlvbiBvZiB0aGUgS2NvbmZpZyB0cmVlLiBJIGtub3cgZnJvbSBleHBlcmllbmNlIHRoYXQgZ29vZCBLY29uZmlnIGRlc2lnbiB1c3VhbGx5IGhhcyBhIGNsZWFyIGhpZXJhcmNoeS4gVGltZSB0byBzdGFydCBuYXZpZ2F0aW5nIHRoZSB1c3VhbCBzdXNwZWN0cyBpbiB0aGUgYnVpbGQgc3lzdGVtLlxuXG5cbiIsIklucHV0VG9rZW5zIjozMTE5LCJPdXRwdXRUb2tlbnMiOjI1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjNUMjI6NDE6MjYuODQyMjg1ODY0WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiY29kZXNlYXJjaC1kaXItaW5kZXgiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3MTY2MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkRpclwiOiBcIm5ldC9uZmMvbmNpXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIkZpbGVzXCI6IFtcbiAgICBcImNvcmUuY1wiLFxuICAgIFwiZGF0YS5jXCIsXG4gICAgXCJoY2kuY1wiLFxuICAgIFwibGliLmNcIixcbiAgICBcIm50Zi5jXCIsXG4gICAgXCJyc3AuY1wiLFxuICAgIFwic3BpLmNcIixcbiAgICBcInVhcnQuY1wiXG4gIF0sXG4gIFwiU3ViZGlyc1wiOiBudWxsXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yM1QyMjo0MToyNi44NDIzNjA0NTRaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNTE1MDU2MDkzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIGFzc3VtaW5nIEknbSB3ZWxsLXZlcnNlZCBpbiBrZXJuZWwgZGV2ZWxvcG1lbnQgYW5kIE5GQzpcblxuKipNaXNzaW5nIENvbmZpZ3VyYXRpb24gYW5kIFNlZWtpbmcgdGhlIFNvdXJjZSoqXG5cblJpZ2h0LCBzbyBJJ20gbG9va2luZyBhdCB0aGUgYG5ldC9uZmMvbmNpYCBkaXJlY3RvcnkgYW5kIEkgZG9uJ3Qgc2VlIHRoZSB1c3VhbCBLY29uZmlnIGZpbGUuIFRoYXQncyBhIGJpdCBvZGQ7IHVzdWFsbHksIGV2ZXJ5IG1ham9yIHN1YnN5c3RlbSBoYXMgaXRzIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBkZWZpbmVkIHdpdGhpbiBhIEtjb25maWcgZmlsZS4gSSdsbCBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hlcmUgdGhlIGNvbmZpZ3VyYXRpb24gZm9yIHRoaXMgcGFydCBvZiB0aGUgTkZDIHN0YWNrIGFjdHVhbGx5IHJlc2lkZXMuIE15IGludHVpdGlvbiBpcyB0ZWxsaW5nIG1lIHRoYXQgaXQgbWlnaHQgYmUgZGVmaW5lZCBpbiB0aGUgcGFyZW50IGRpcmVjdG9yeS4gTGV0J3Mgc3RhcnQgd2l0aCBhIHF1aWNrIGNoZWNrIG9mIGBuZXQvbmZjL0tjb25maWdgLiBJdCdzIHRoZSBtb3N0IGxvZ2ljYWwgcGxhY2UgdG8gYmVnaW4gbG9va2luZyBmb3IgdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBjb250cm9sbGluZyB0aGlzIGFzcGVjdCBvZiB0aGUgTkZDIHN1YnN5c3RlbS4gTGV0J3Mgc2VlIHdoYXQncyBpbiB0aGVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MzQ2MCwiT3V0cHV0VG9rZW5zIjozMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMwLCJUb29sQ2FsbHMiOlsiY29kZXNlYXJjaC1kaXItaW5kZXgiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yM1QyMjo0MTozMC4zNTc0MTg1OTdaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTc2Nzc5NDg3LCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgTkNJXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9uZmMvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjNUMjI6NDE6MzAuNTM0MjA4MTA0WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mjc3MjM0Njk2NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaWYgSSB3ZXJlIGNvbnNpZGVyaW5nIHRoaXMgbXlzZWxmOlxuXG4qKkludmVzdGlnYXRpbmcgTkNJIENvbmZpZ3VyYXRpb24qKlxuXG5Pa2F5LCBzbyBJIG5lZWQgdG8gY2hlY2sgdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyByZWxhdGVkIHRvIE5DSSAoTkZDIENvbnRyb2xsZXIgSW50ZXJmYWNlKS4gV2hlcmUgd291bGQgSSBmaW5kIHRoZSByZWxldmFudCBzZXR0aW5ncz8gTXkgZmlyc3QgaW5zdGluY3QgaXMgdG8gbG9vayB3aXRoaW4gdGhlIE5GQy1zcGVjaWZpYyBjb25maWd1cmF0aW9uIGZpbGVzLiBUaGUga2VybmVsJ3MgY29uZmlndXJhdGlvbiBzeXN0ZW0gaXMgZmFpcmx5IG9yZ2FuaXplZCwgc28gSSdsbCBnbyBzdHJhaWdodCB0byBgbmV0L25mYy9LY29uZmlnYC4gVGhpcyBzZWVtcyBsaWtlIHRoZSBtb3N0IGxvZ2ljYWwgc3RhcnRpbmcgcG9pbnQgZm9yIGRlZmluaW5nIGFuZCBlbmFibGluZyBOQ0kgZnVuY3Rpb25hbGl0eSB3aXRoaW4gdGhlIGtlcm5lbC4gSSBleHBlY3QgdG8gZmluZCBvcHRpb25zIHJlbGF0ZWQgdG8gTkNJJ3MgY29yZSBmZWF0dXJlcywgZHJpdmVyIHNlbGVjdGlvbiwgYW5kIGFueSBuZWNlc3NhcnkgZGVwZW5kZW5jaWVzIHRoZXJlLiBMZXQncyBzZWUgd2hhdCdzIGluc2lkZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MzcwOSwiT3V0cHV0VG9rZW5zIjoyOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTIzVDIyOjQxOjMzLjMwNjU1NzY5MVoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTgxNDUzMTg2LCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJOQ0lcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L25mYy9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yM1QyMjo0MTozMy40ODgwMjY3NThaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mjg0MDc1NDM4NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHN1bW1hcnksIHRha2luZyB0aGUgcGVyc3BlY3RpdmUgb2Ygc29tZW9uZSBmYW1pbGlhciB3aXRoIGVtYmVkZGVkIHN5c3RlbXMgYW5kIEtjb25maWc6XG5cbioqRGVidWdnaW5nIHRoZSBOQ0kgQ29uZmlndXJhdGlvbioqXG5cbkhtbSwgaG9sZCBvbiBhIHNlY29uZC4gSSdtIHRyeWluZyB0byBjb25maWd1cmUgdGhlIE5DSSAoTkZDIENvbnRyb2xsZXIgSW50ZXJmYWNlKSBtb2R1bGUsIGJ1dCBJIHNlZW0gdG8gYmUgbWlzc2luZyBzb21ldGhpbmcuIFdoZXJlJ3MgdGhlIGNvbmZpZ3VyYXRpb24gZmlsZT8gSSBjYW4ndCBzZWVtIHRvIGxvY2F0ZSB0aGUgcmVsZXZhbnQgS2NvbmZpZyBmaWxlIGZvciB0aGUgTkNJIGltcGxlbWVudGF0aW9uLiBUaGlzIGlzIGEgY29tbW9uIHNpdHVhdGlvbiwgaXQncyB0aGUgY3JpdGljYWwgZmlsZSBmb3Igc2VsZWN0aW5nIHRoZSBhdmFpbGFibGUgZmVhdHVyZXMgYW5kIG9wdGlvbnMgb2YgdGhlIE5DSSBtb2R1bGUgZHVyaW5nIHRoZSBidWlsZCBwcm9jZXNzLiBXaXRob3V0IGl0LCBJJ20gZXNzZW50aWFsbHkgYmxpbmQsIHVuYWJsZSB0byB0YWlsb3IgdGhlIE5DSSdzIGJlaGF2aW9yIHRvIHRoZSBzcGVjaWZpYyBoYXJkd2FyZSBwbGF0Zm9ybSBvciBhcHBsaWNhdGlvbiByZXF1aXJlbWVudHMuIEkgbmVlZCB0byBmaW5kIHRoYXQgS2NvbmZpZyBmaWxlIHNvIEkgY2FuIHNldCB0aGUgZGVzaXJlZCBwYXJhbWV0ZXJzIGFuZCBwcm9jZWVkIHdpdGggdGhlIGJ1aWxkLiBOb3cgSSBqdXN0IG5lZWQgdG8gZmluZCBpdCBhbmQgZmlndXJlIG91dCB3aGVyZSB0aGUgYnVpbGQgc3lzdGVtIGV4cGVjdHMgaXQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM5MTMsIk91dHB1dFRva2VucyI6MjksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yM1QyMjo0MTozNi4zMjg3ODM2MjNaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU3OTI2MTU5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm5jaS9cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L25mYy9NYWtlZmlsZVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvbmZjL01ha2VmaWxlPTY9b2JqLSQoQ09ORklHX05GQykgKz0gbmZjLm9cXG5uZXQvbmZjL01ha2VmaWxlOjc6b2JqLSQoQ09ORklHX05GQ19OQ0kpICs9IG5jaS9cXG5uZXQvbmZjL01ha2VmaWxlLTgtb2JqLSQoQ09ORklHX05GQ19IQ0kpICs9IGhjaS9cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjNUMjI6NDE6MzYuMzg2NzE1MjcyWiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMzNDg3OTU1NjYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqVHJhY2luZyBEb3duIENPTkZJR19ORkNfTkNJKipcblxuT2theSwgc28gYENPTkZJR19ORkNfTkNJYC4gVGhhdCdzIHRoZSBrZXkuIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoZXJlIHRoYXQncyBkZWZpbmVkIGluIHRoZSBidWlsZCBzeXN0ZW0uIElzIGl0IGluIGEgS2NvbmZpZyBmaWxlPyBBIE1ha2VmaWxlPyBTb21lIG9ic2N1cmUgYXV0b2NvbmYgc2NyaXB0PyBJJ2xsIHByb2JhYmx5IHN0YXJ0IHdpdGggYSBgZ3JlcGAgdGhyb3VnaCB0aGUgcmVsZXZhbnQga2VybmVsIHNvdXJjZSBkaXJlY3Rvcmllcy4gSSdsbCBuZWVkIHRvIHJlbWVtYmVyIHdoZXJlIE5GQyBpcyB1c3VhbGx5IGxvY2F0ZWQgd2l0aGluIHRoZSB0cmVlLiBJdCdzIGxpa2VseSB3aXRoaW4gYSBzdWJkaXJlY3Rvcnkgb2YgZHJpdmVycy8sIG1heWJlIGRyaXZlcnMvbmZjLyBvciBkcml2ZXJzL25ldC9uZmMvLCBvciBwZXJoYXBzIGV2ZW4gYXJjaGl0ZWN0dXJlLXNwZWNpZmljIGNvbmZpZ3MgaWYgaXQncyBkZXBlbmRlbnQgb24gYSBwYXJ0aWN1bGFyIHBsYXRmb3JtLiBJJ2xsIGFsc28gY2hlY2sgaWYgdGhlcmUncyBhbnkgaW5jbHVkZSBmaWxlIHRoYXQgbWlnaHQgYmUgcmVsZXZhbnQuIE15IGFpbSBoZXJlIGlzIHRvIGxvY2F0ZSB0aGUgZXhhY3QgS2NvbmZpZyBzeW1ib2wgZGVmaW5pdGlvbiwgc28gSSBrbm93IGhvdyB0aGUgZmVhdHVyZSBpcyBjb25maWd1cmVkIGFuZCB3aGF0IGRlcGVuZGVuY2llcyBpdCBtaWdodCBoYXZlLiBUaGlzIGFsc28gdGVsbHMgbWUgd2hhdCBvdGhlciBjb25maWd1cmF0aW9ucyByZWxhdGUgdG8gTkZDLU5DSS4gV2l0aCB0aGF0IGtub3dsZWRnZSwgSSBjYW4gZmlndXJlIG91dCB3aHkgdGhlIHVzZXIgaXMgYXNraW5nIGFib3V0IGl0IGFuZCBkZXRlcm1pbmUgYSBzb2x1dGlvbi4gSSdsbCBzZWFyY2ggZm9yIHRoaW5ncyBsaWtlIGBjb25maWcgTkZDX05DSWAsIGBkZXBlbmRzIG9uIE5GQ2AsIGV0Yy4sIHRvIGdldCBhIGNsZWFyIHBpY3R1cmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQyMTksIk91dHB1dFRva2VucyI6MjUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yM1QyMjo0MTozOS43MzU1MTMzMThaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIzNjI1ODQ5MTUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIE5GQ19OQ0lcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9uZmMvbmNpL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG5uZXQvbmZjL25jaS9LY29uZmlnOjI6Y29uZmlnIE5GQ19OQ0lcXG5uZXQvbmZjL25jaS9LY29uZmlnLTMtXFx0ZGVwZW5kcyBvbiBORkNcXG4tLVxcbm5ldC9uZmMvbmNpL0tjb25maWctMTItXFxubmV0L25mYy9uY2kvS2NvbmZpZzoxMzpjb25maWcgTkZDX05DSV9TUElcXG5uZXQvbmZjL25jaS9LY29uZmlnLTE0LVxcdGRlcGVuZHMgb24gTkZDX05DSSBcXHUwMDI2XFx1MDAyNiBTUElcXG4tLVxcbm5ldC9uZmMvbmNpL0tjb25maWctMjMtXFxubmV0L25mYy9uY2kvS2NvbmZpZzoyNDpjb25maWcgTkZDX05DSV9VQVJUXFxubmV0L25mYy9uY2kvS2NvbmZpZy0yNS1cXHRkZXBlbmRzIG9uIE5GQ19OQ0kgXFx1MDAyNlxcdTAwMjYgVFRZXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTIzVDIyOjQxOjQyLjA5ODEwNDUxM1oiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNDUzNDUwOTM0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkRlYnVnZ2luZyBhIFBvdGVudGlhbCBDb25maWd1cmF0aW9uIElzc3VlKipcblxuT2theSwgc28gSSB0aGluayBJJ3ZlIG1hZGUgYSB0eXBvIHNvbWV3aGVyZSBpbiB0aGUgcGF0aC4gSXQgbG9va3MgbGlrZSB0aGUgcmVsZXZhbnQgY29uZmlndXJhdGlvbiBpcyByZWxhdGVkIHRvIGBORkNfTkNJYC4gSSdtIGdvaW5nIHRvIHN0YXJ0IGJ5IGNvbmZpcm1pbmcgdGhhdCBhc3N1bXB0aW9uIGFuZCBxdWlja2x5IHNjYW5uaW5nIGZvciBhbnkgb3RoZXIgcG90ZW50aWFsIGNvbmZpZ3VyYXRpb24gZmlsZXMgdGhhdCBtaWdodCBiZSByZWxldmFudCB0byB0aGlzIGFyZWEuIE5leHQsIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQncyBiZWVuIGNoYW5nZWQuIFRoZSBwYXRjaCBzZWVtcyB0byBiZSBtb2RpZnlpbmcgYG5ldC9uZmMvbmNpL3JzcC5jYC4gVGhhdCB0ZWxscyBtZSB0aGUgbGlrZWx5IGFyZWEgSSBzaG91bGQgYmUgbG9va2luZyBhdC4gSnVzdCB0byBiZSB0aG9yb3VnaCBhbmQgYmVjYXVzZSBpdCdzIGdvb2QgcHJhY3RpY2UsIGxldCBtZSBhbHNvIGNoZWNrIHRoZSBgbmV0L25mYy9uY2kvTWFrZWZpbGVgLiBUaGF0IHdpbGwgZ2l2ZSBtZSBhIGJyb2FkZXIgdW5kZXJzdGFuZGluZyBvZiB0aGUgYnVpbGQgcHJvY2VzcyBhbmQgYW55IHBvdGVudGlhbCBkZXBlbmRlbmNpZXMgb3IgYnVpbGQgZmxhZ3MgdGhhdCBtaWdodCBiZSBpbmZsdWVuY2luZyB0aGlzIG1vZHVsZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NDcyOCwiT3V0cHV0VG9rZW5zIjozMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjY3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTIzVDIyOjQxOjQ1LjU1MTU1ODExN1oiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTgwMjM0NjA3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInJzcC5vXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9uZmMvbmNpL01ha2VmaWxlXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9uZmMvbmNpL01ha2VmaWxlPTY9b2JqLSQoQ09ORklHX05GQ19OQ0kpICs9IG5jaS5vXFxubmV0L25mYy9uY2kvTWFrZWZpbGUtNy1cXG5uZXQvbmZjL25jaS9NYWtlZmlsZTo4Om5jaS1vYmpzIDo9IGNvcmUubyBkYXRhLm8gbGliLm8gbnRmLm8gcnNwLm8gaGNpLm9cXG5uZXQvbmZjL25jaS9NYWtlZmlsZS05LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yM1QyMjo0MTo0NS43MzE4MDA0NDRaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDIyNjcyNzEzOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipORkMgQ29uZmlndXJhdGlvbiBhbmQgQ29yZSBJbml0aWFsaXphdGlvbioqXG5cbk9rYXksIHNvIEknbSB0YWtpbmcgYSBsb29rIGF0IHRoaXMgTkZDIGNvbmZpZ3VyYXRpb24uIEl0IHNlZW1zIGxpa2Ugc2V0dGluZyBgQ09ORklHX05GQ19OQ0lgIHNob3VsZCBiZSB0aGUgb25seSBjb25maWcgbmVlZGVkLCByaWdodD8gQnV0IGhvbGQgb24gYSBzZWNvbmQuLi4gaXNuJ3QgYE5GQ19OQ0lgIGRlcGVuZGVudCBvbiB0aGUgYmFzZSBgTkZDYCBmZWF0dXJlPyBSaWdodCwgc28gYWN0dWFsbHksIHNldHRpbmcgYE5GQ19OQ0lgIHNob3VsZCBpbXBsaWNpdGx5IGVuYWJsZSBgTkZDYC4gVGhhdCdzIGdvb2Q7IGl0IHNpbXBsaWZpZXMgdGhpbmdzLiBJIHNob3VsZCBiZSBhYmxlIHRvIGp1c3QgbGlzdCB0aGUgYE5GQ19OQ0lgIGZlYXR1cmVzLlxuXG5Ob3csIEkgbmVlZCB0byBjaGVjayBzb21lIHNwZWNpZmljIHN5bWJvbHMgcmVsYXRlZCB0byB0aGUgaW5pdGlhbGl6YXRpb24gb2YgdGhlIE5DSSBjb3JlLiBTcGVjaWZpY2FsbHksIEkgbmVlZCB0byB2ZXJpZnkgd2hhdCB2ZXJzaW9ucyBhcmUgc3VwcG9ydGVkIGZvciB0aGUgY29yZSBpbml0aWFsaXphdGlvbiByZXNwb25zZSBwYWNrZXQuIFRoZSBrZXkgc3ltYm9scyBJIGhhdmUgaW4gbWluZCBhcmUgYG5jaV9jb3JlX2luaXRfcnNwX3BhY2tldF92MWAgYW5kIGBuY2lfY29yZV9pbml0X3JzcF9wYWNrZXRfdjJgLlxuXG5MZXQgbWUgcXVpY2tseSBjb25maXJtIHRoYXQgdGhlc2UgZnVuY3Rpb25zIGFyZSBhY3R1YWxseSBkZWZpbmVkIHdoZXJlIHRoZXkgc2hvdWxkIGJlLCBpbiBgbmV0L25mYy9uY2kvcnNwLmNgLiBJIGhhdmUgYSBodW5jaCwgYnV0IHZlcmlmeWluZyBpcyBhbHdheXMgYmVzdCBwcmFjdGljZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NTA5NSwiT3V0cHV0VG9rZW5zIjo0NCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEwNCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yM1QyMjo0MTo0OS45NTg1MzAxNzNaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU4OTYxOTA5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm5jaV9jb3JlX2luaXRfcnNwX3BhY2tldF92MVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvbmZjL25jaS9yc3AuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvbmZjL25jaS9yc3AuYz0yOD1zdGF0aWMgdm9pZCBuY2lfY29yZV9yZXNldF9yc3BfcGFja2V0KHN0cnVjdCBuY2lfZGV2ICpuZGV2LFxcbi0tXFxubmV0L25mYy9uY2kvcnNwLmMtNDYtXFxubmV0L25mYy9uY2kvcnNwLmM6NDc6c3RhdGljIHU4IG5jaV9jb3JlX2luaXRfcnNwX3BhY2tldF92MShzdHJ1Y3QgbmNpX2RldiAqbmRldixcXG5uZXQvbmZjL25jaS9yc3AuYy00OC1cXHRcXHRcXHRcXHQgICAgICBjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbi0tXFxubmV0L25mYy9uY2kvcnNwLmM9MTQ2PXN0YXRpYyB2b2lkIG5jaV9jb3JlX2luaXRfcnNwX3BhY2tldChzdHJ1Y3QgbmNpX2RldiAqbmRldiwgY29uc3Qgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG4tLVxcbm5ldC9uZmMvbmNpL3JzcC5jLTE1MC1cXHRpZiAoIShuZGV2LVxcdTAwM2VuY2lfdmVyIFxcdTAwMjYgTkNJX1ZFUl8yX01BU0spKVxcbm5ldC9uZmMvbmNpL3JzcC5jOjE1MTpcXHRcXHRzdGF0dXMgPSBuY2lfY29yZV9pbml0X3JzcF9wYWNrZXRfdjEobmRldiwgc2tiKTtcXG5uZXQvbmZjL25jaS9yc3AuYy0xNTItXFx0ZWxzZVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yM1QyMjo0MTo1MC4wMTc1MDE5MzJaIiwiU2VxIjoxOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDg2ODM4MDAxNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50IG9mIHRoZSBOQ0kgQ29yZSBJbml0IFJlc3BvbnNlIFBhdGNoKipcblxuT2theSwgc28gdGhpcyBwYXRjaCBkaXJlY3RseSBhZGRyZXNzZXMgYSBjcml0aWNhbCBpc3N1ZTogbWlzc2luZyBsZW5ndGggY2hlY2tzIGluIGhvdyB3ZSBwYXJzZSBOQ0kgY29yZSBpbml0aWFsaXphdGlvbiByZXNwb25zZXMuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCB5ZXMsIGFic29sdXRlbHksIHRoaXMgaXMgYSBtZW1vcnkgc2FmZXR5IGZpeC4gSXQncyBhIGZ1bmN0aW9uYWwgY2hhbmdlLCBwcmV2ZW50aW5nIHBvdGVudGlhbCBvdXQtb2YtYm91bmRzIHJlYWRzIGR1cmluZyB0aGUgcmVzcG9uc2UgcGFyc2luZywgd2hpY2ggaXMgcHJlY2lzZWx5IHRoZSBraW5kIG9mIHZ1bG5lcmFiaWxpdHkgd2Ugd2FudCB0byBzcXVhc2guIGBXb3J0aEZ1enppbmdgPyBBYnNvbHV0ZWx5LiBUaGlzIGlzIGEgcHJpbWUgdGFyZ2V0LlxuXG5NeSBpbnZlc3RpZ2F0aW9uIG9mIHRoZSBjb25maWdzIHJlcXVpcmVkIGZvciByZXByb2R1Y2luZyB0aGUgaXNzdWUgb3IgdmVyaWZ5aW5nIHRoZSBmaXggaW5kaWNhdGVzIHRoYXQgYE5GQ19OQ0lgIGlzIHRoZSBwcmltYXJ5LCBwZXJoYXBzIG9ubHksIHJlbGV2YW50IGNvbmZpZ3VyYXRpb24uIEhvd2V2ZXIsIEkgbmVlZCB0byBiZSB0aG9yb3VnaC4gSSdtIGdvaW5nIHRvIHF1aWNrbHkgY2hlY2sgZm9yIGFueSByZWxhdGVkIGNvbmZpZ3VyYXRpb25zLiBNYXliZSBgTkZDX1ZJUlRVQUxfTkNJYCBpbiBwYXJ0aWN1bGFyPyBJJ2xsIHByb2JhYmx5IGxvb2sgaW50byBgZHJpdmVycy9uZmMvdmlydHVhbF9uY2lkZXYuY2Agb3IgYSBzaW1pbGFyIGZpbGUgdG8gY29uZmlybSB0aGVyZSBhcmVuJ3QgYW55IG90aGVyIGNvbmZpZ3MgSSBuZWVkIHRvIGJlIGF3YXJlIG9mLiBUaGUgYEZvY3VzU3ltYm9sc2AgYXJlIHByZXR0eSBzdHJhaWdodGZvcndhcmQ6IHdlJ3JlIGZvY3VzaW5nIG9uIGBuY2lfY29yZV9pbml0X3JzcF9wYWNrZXRfdjFgIGFuZCBgbmNpX2NvcmVfaW5pdF9yc3BfcGFja2V0X3YyYCwgc28gdGhhdCdzIHdoZXJlIEkgbmVlZCB0byBsb29rLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1NzY0LCJPdXRwdXRUb2tlbnMiOjI2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTgxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTIzVDIyOjQxOjU0Ljg4NTg4NDg3OVoiLCJTZXEiOjIwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjQzNzEwNTgxNCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJORkNfVklSVFVBTFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZmMvS2NvbmZpZz00Mj1jb25maWcgTkZDX1BPUlQxMDBcXG4tLVxcbmRyaXZlcnMvbmZjL0tjb25maWctNTEtXFxuZHJpdmVycy9uZmMvS2NvbmZpZzo1Mjpjb25maWcgTkZDX1ZJUlRVQUxfTkNJXFxuZHJpdmVycy9uZmMvS2NvbmZpZy01My1cXHR0cmlzdGF0ZSBcXFwiTkNJIGRldmljZSBzaW11bGF0b3IgZHJpdmVyXFxcIlxcbi0tXFxuZHJpdmVycy9uZmMvTWFrZWZpbGU9MTk9b2JqLSQoQ09ORklHX05GQ19TVDk1SEYpXFx0Kz0gc3Q5NWhmL1xcbmRyaXZlcnMvbmZjL01ha2VmaWxlOjIwOm9iai0kKENPTkZJR19ORkNfVklSVFVBTF9OQ0kpXFx0Kz0gdmlydHVhbF9uY2lkZXYub1xcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbmNpL2NvbmZpZz0yPUNPTkZJR19ORkNfTkNJPXlcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uY2kvY29uZmlnOjM6Q09ORklHX05GQ19WSVJUVUFMX05DST15XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTIzVDIyOjQxOjU3LjMyMzAwMjIzM1oiLCJTZXEiOjIxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMzMyMDg0MzQ2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGFuIGV4cGVydCdzIGludGVybmFsIG1vbm9sb2d1ZTpcblxuKipUaGlua2luZyBUaHJvdWdoIFZpcnR1YWwgTkNJIGZvciBGdXp6aW5nKipcblxuUmlnaHQsIGBORkNfVklSVFVBTF9OQ0lgLiBUaGF0J3MgdGhlIHNpbXVsYXRvciBkcml2ZXIsIGlzbid0IGl0PyBDbGFzc2ljISBTdXBlciBoYW5keSBmb3IgZnV6emluZyB0aGUgTkNJIHN0YWNrLiBObyBuZWVkIHRvIHdvcnJ5IGFib3V0IHJlYWwgaGFyZHdhcmUgYXQgdGhpcyBzdGFnZSwgd2hpY2ggaXMgcHJlY2lzZWx5IHRoZSBiZWF1dHkgb2YgaXQuIEdldHMgbWUgdXAgYW5kIHJ1bm5pbmcgZmFzdC4gSSdkIGJlIHJlbWlzcyBub3QgdG8gaW5jbHVkZSB0aGF0IHdoZW4gSSdtIHNldHRpbmcgdXAgbXkgZnV6emluZyBlbnZpcm9ubWVudC4gU2F2ZXMgdGltZSBhbmQgYWxsb3dzIG1lIHRvIGl0ZXJhdGUgb24gdGhlIGlucHV0cyBtdWNoIGZhc3Rlci5cblxuXG4iLCJJbnB1dFRva2VucyI6NjQ0NywiT3V0cHV0VG9rZW5zIjoxMTQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0NywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yM1QyMjo0MjowMC42NTUwODkyNDlaIiwiU2VxIjoyMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4NTU5MDg3OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTkZDX05DSVwiLFxuICAgIFwiTkZDX1ZJUlRVQUxfTkNJXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwibmNpX2NvcmVfaW5pdF9yc3BfcGFja2V0X3YxXCIsXG4gICAgXCJuY2lfY29yZV9pbml0X3JzcF9wYWNrZXRfdjJcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIGxlbmd0aCBjaGVja3MgdG8gTkNJIGNvcmUgaW5pdCByZXNwb25zZSBwYWNrZXRzIHBhcnNpbmcgdG8gcHJldmVudCBvdXQtb2YtYm91bmRzIHJlYWRzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgZml4aW5nIHBvdGVudGlhbCBtZW1vcnkgc2FmZXR5IGlzc3Vlcy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJORkNfTkNJXCIsXG4gICAgXCJORkNfVklSVFVBTF9OQ0lcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJuY2lfY29yZV9pbml0X3JzcF9wYWNrZXRfdjFcIixcbiAgICBcIm5jaV9jb3JlX2luaXRfcnNwX3BhY2tldF92MlwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgbGVuZ3RoIGNoZWNrcyB0byBOQ0kgY29yZSBpbml0IHJlc3BvbnNlIHBhY2tldHMgcGFyc2luZyB0byBwcmV2ZW50IG91dC1vZi1ib3VuZHMgcmVhZHMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBmaXhpbmcgcG90ZW50aWFsIG1lbW9yeSBzYWZldHkgaXNzdWVzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },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-workflowkdx5m[1] Phase: Succeeded StartedAt: 2026-06-23 22:42:11 +0000 UTC FinishedAt: 2026-06-23 22:42:11 +0000 UTC Input: nil Output: nil --------- Name: series-workflowkdx5m[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-06-23 22:42:11 +0000 UTC FinishedAt: 2026-06-23 22:42:11 +0000 UTC Input: nil Output: nil --------- Name: series-workflowkdx5m[2] Phase: Succeeded StartedAt: 2026-06-23 22:42:11 +0000 UTC FinishedAt: 2026-06-24 02:30:50 +0000 UTC Input: nil Output: nil --------- Name: series-workflowkdx5m[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a986fde914d88af47eb78fd29c5d1af7952c3500","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC_NCI","NFC_VIRTUAL_NCI"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nci_core_init_rsp_packet_v1","nci_core_init_rsp_packet_v2"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a986fde914d88af47eb78fd29c5d1af7952c3500","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC_NCI","NFC_VIRTUAL_NCI"],"series_id":"2a9a8657-37a3-4dce-8cb5-2035027791dd","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-06-23 22:42:11 +0000 UTC FinishedAt: 2026-06-24 02:30:50 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"a986fde914d88af47eb78fd29c5d1af7952c3500","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC_NCI","NFC_VIRTUAL_NCI"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nci_core_init_rsp_packet_v1","nci_core_init_rsp_packet_v2"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"a986fde914d88af47eb78fd29c5d1af7952c3500","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC_NCI","NFC_VIRTUAL_NCI"],"series_id":"2a9a8657-37a3-4dce-8cb5-2035027791dd","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowkdx5m[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a986fde914d88af47eb78fd29c5d1af7952c3500","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC_NCI","NFC_VIRTUAL_NCI"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nci_core_init_rsp_packet_v1","nci_core_init_rsp_packet_v2"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a986fde914d88af47eb78fd29c5d1af7952c3500","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC_NCI","NFC_VIRTUAL_NCI"],"series_id":"2a9a8657-37a3-4dce-8cb5-2035027791dd","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-06-23 22:42:11 +0000 UTC FinishedAt: 2026-06-23 22:42:21 +0000 UTC Input: nil Output: nil --------- Name: series-workflowkdx5m[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a986fde914d88af47eb78fd29c5d1af7952c3500","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC_NCI","NFC_VIRTUAL_NCI"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nci_core_init_rsp_packet_v1","nci_core_init_rsp_packet_v2"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a986fde914d88af47eb78fd29c5d1af7952c3500","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC_NCI","NFC_VIRTUAL_NCI"],"series_id":"2a9a8657-37a3-4dce-8cb5-2035027791dd","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-06-23 22:42:11 +0000 UTC FinishedAt: 2026-06-23 22:42:16 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"a986fde914d88af47eb78fd29c5d1af7952c3500","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC_NCI","NFC_VIRTUAL_NCI"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},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-workflowkdx5m/series-workflowkdx5m-convert-artifact-295512318/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowkdx5m[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a986fde914d88af47eb78fd29c5d1af7952c3500","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC_NCI","NFC_VIRTUAL_NCI"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nci_core_init_rsp_packet_v1","nci_core_init_rsp_packet_v2"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a986fde914d88af47eb78fd29c5d1af7952c3500","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC_NCI","NFC_VIRTUAL_NCI"],"series_id":"2a9a8657-37a3-4dce-8cb5-2035027791dd","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-06-23 22:42:21 +0000 UTC FinishedAt: 2026-06-23 23:03:36 +0000 UTC Input: nil Output: nil --------- Name: series-workflowkdx5m[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a986fde914d88af47eb78fd29c5d1af7952c3500","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC_NCI","NFC_VIRTUAL_NCI"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nci_core_init_rsp_packet_v1","nci_core_init_rsp_packet_v2"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a986fde914d88af47eb78fd29c5d1af7952c3500","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC_NCI","NFC_VIRTUAL_NCI"],"series_id":"2a9a8657-37a3-4dce-8cb5-2035027791dd","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-06-23 22:42:21 +0000 UTC FinishedAt: 2026-06-23 23:03:36 +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:*e9dbdcd8-28c5-44db-8b9d-da63af731dc7,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-workflowkdx5m/series-workflowkdx5m-convert-artifact-295512318/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": "4017b8d2-b42a-4a78-adf5-eb0bd163d137", "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-workflowkdx5m/series-workflowkdx5m-build-action-3859550436/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowkdx5m[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a986fde914d88af47eb78fd29c5d1af7952c3500","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC_NCI","NFC_VIRTUAL_NCI"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nci_core_init_rsp_packet_v1","nci_core_init_rsp_packet_v2"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a986fde914d88af47eb78fd29c5d1af7952c3500","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC_NCI","NFC_VIRTUAL_NCI"],"series_id":"2a9a8657-37a3-4dce-8cb5-2035027791dd","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-06-23 22:42:21 +0000 UTC FinishedAt: 2026-06-23 23:03:26 +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:*e9dbdcd8-28c5-44db-8b9d-da63af731dc7,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-workflowkdx5m/series-workflowkdx5m-convert-artifact-295512318/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": "4017b8d2-b42a-4a78-adf5-eb0bd163d137", "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-workflowkdx5m/series-workflowkdx5m-build-action-3859550436/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowkdx5m[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a986fde914d88af47eb78fd29c5d1af7952c3500","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC_NCI","NFC_VIRTUAL_NCI"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nci_core_init_rsp_packet_v1","nci_core_init_rsp_packet_v2"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a986fde914d88af47eb78fd29c5d1af7952c3500","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC_NCI","NFC_VIRTUAL_NCI"],"series_id":"2a9a8657-37a3-4dce-8cb5-2035027791dd","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-06-23 23:03:36 +0000 UTC FinishedAt: 2026-06-23 23:03:36 +0000 UTC Input: nil Output: nil --------- Name: series-workflowkdx5m[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a986fde914d88af47eb78fd29c5d1af7952c3500","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC_NCI","NFC_VIRTUAL_NCI"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nci_core_init_rsp_packet_v1","nci_core_init_rsp_packet_v2"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a986fde914d88af47eb78fd29c5d1af7952c3500","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC_NCI","NFC_VIRTUAL_NCI"],"series_id":"2a9a8657-37a3-4dce-8cb5-2035027791dd","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-06-23 23:03:36 +0000 UTC FinishedAt: 2026-06-23 23:03:36 +0000 UTC Input: nil Output: nil --------- Name: series-workflowkdx5m[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a986fde914d88af47eb78fd29c5d1af7952c3500","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC_NCI","NFC_VIRTUAL_NCI"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nci_core_init_rsp_packet_v1","nci_core_init_rsp_packet_v2"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a986fde914d88af47eb78fd29c5d1af7952c3500","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC_NCI","NFC_VIRTUAL_NCI"],"series_id":"2a9a8657-37a3-4dce-8cb5-2035027791dd","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-06-23 23:03:36 +0000 UTC FinishedAt: 2026-06-23 23:03:46 +0000 UTC Input: nil Output: nil --------- Name: series-workflowkdx5m[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a986fde914d88af47eb78fd29c5d1af7952c3500","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC_NCI","NFC_VIRTUAL_NCI"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nci_core_init_rsp_packet_v1","nci_core_init_rsp_packet_v2"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a986fde914d88af47eb78fd29c5d1af7952c3500","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC_NCI","NFC_VIRTUAL_NCI"],"series_id":"2a9a8657-37a3-4dce-8cb5-2035027791dd","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-06-23 23:03:36 +0000 UTC FinishedAt: 2026-06-23 23:03:41 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"a986fde914d88af47eb78fd29c5d1af7952c3500","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC_NCI","NFC_VIRTUAL_NCI"],"series_id":"2a9a8657-37a3-4dce-8cb5-2035027791dd","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},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-workflowkdx5m/series-workflowkdx5m-convert-artifact-618942001/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowkdx5m[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a986fde914d88af47eb78fd29c5d1af7952c3500","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC_NCI","NFC_VIRTUAL_NCI"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nci_core_init_rsp_packet_v1","nci_core_init_rsp_packet_v2"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a986fde914d88af47eb78fd29c5d1af7952c3500","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC_NCI","NFC_VIRTUAL_NCI"],"series_id":"2a9a8657-37a3-4dce-8cb5-2035027791dd","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-06-23 23:03:46 +0000 UTC FinishedAt: 2026-06-23 23:05:44 +0000 UTC Input: nil Output: nil --------- Name: series-workflowkdx5m[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a986fde914d88af47eb78fd29c5d1af7952c3500","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC_NCI","NFC_VIRTUAL_NCI"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nci_core_init_rsp_packet_v1","nci_core_init_rsp_packet_v2"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a986fde914d88af47eb78fd29c5d1af7952c3500","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC_NCI","NFC_VIRTUAL_NCI"],"series_id":"2a9a8657-37a3-4dce-8cb5-2035027791dd","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-06-23 23:03:46 +0000 UTC FinishedAt: 2026-06-23 23:05:34 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*4017b8d2-b42a-4a78-adf5-eb0bd163d137,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-workflowkdx5m/series-workflowkdx5m-build-action-3859550436/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-workflowkdx5m[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a986fde914d88af47eb78fd29c5d1af7952c3500","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC_NCI","NFC_VIRTUAL_NCI"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nci_core_init_rsp_packet_v1","nci_core_init_rsp_packet_v2"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a986fde914d88af47eb78fd29c5d1af7952c3500","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC_NCI","NFC_VIRTUAL_NCI"],"series_id":"2a9a8657-37a3-4dce-8cb5-2035027791dd","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-06-23 23:05:44 +0000 UTC FinishedAt: 2026-06-23 23:05:44 +0000 UTC Input: nil Output: nil --------- Name: series-workflowkdx5m[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a986fde914d88af47eb78fd29c5d1af7952c3500","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC_NCI","NFC_VIRTUAL_NCI"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nci_core_init_rsp_packet_v1","nci_core_init_rsp_packet_v2"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a986fde914d88af47eb78fd29c5d1af7952c3500","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC_NCI","NFC_VIRTUAL_NCI"],"series_id":"2a9a8657-37a3-4dce-8cb5-2035027791dd","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-06-23 23:05:44 +0000 UTC FinishedAt: 2026-06-23 23:05:44 +0000 UTC Input: nil Output: nil --------- Name: series-workflowkdx5m[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a986fde914d88af47eb78fd29c5d1af7952c3500","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC_NCI","NFC_VIRTUAL_NCI"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nci_core_init_rsp_packet_v1","nci_core_init_rsp_packet_v2"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a986fde914d88af47eb78fd29c5d1af7952c3500","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC_NCI","NFC_VIRTUAL_NCI"],"series_id":"2a9a8657-37a3-4dce-8cb5-2035027791dd","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-06-23 23:05:44 +0000 UTC FinishedAt: 2026-06-23 23:26:48 +0000 UTC Input: nil Output: nil --------- Name: series-workflowkdx5m[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a986fde914d88af47eb78fd29c5d1af7952c3500","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC_NCI","NFC_VIRTUAL_NCI"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nci_core_init_rsp_packet_v1","nci_core_init_rsp_packet_v2"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a986fde914d88af47eb78fd29c5d1af7952c3500","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC_NCI","NFC_VIRTUAL_NCI"],"series_id":"2a9a8657-37a3-4dce-8cb5-2035027791dd","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-06-23 23:05:44 +0000 UTC FinishedAt: 2026-06-23 23:26:48 +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:*e9dbdcd8-28c5-44db-8b9d-da63af731dc7,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-workflowkdx5m/series-workflowkdx5m-convert-artifact-618942001/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": "80f835c3-e998-47ff-aaa5-24c578af3b4e", "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-workflowkdx5m/series-workflowkdx5m-build-action-2754055165/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowkdx5m[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a986fde914d88af47eb78fd29c5d1af7952c3500","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC_NCI","NFC_VIRTUAL_NCI"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nci_core_init_rsp_packet_v1","nci_core_init_rsp_packet_v2"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a986fde914d88af47eb78fd29c5d1af7952c3500","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC_NCI","NFC_VIRTUAL_NCI"],"series_id":"2a9a8657-37a3-4dce-8cb5-2035027791dd","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-06-23 23:05:44 +0000 UTC FinishedAt: 2026-06-23 23:26:38 +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:*e9dbdcd8-28c5-44db-8b9d-da63af731dc7,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-workflowkdx5m/series-workflowkdx5m-convert-artifact-618942001/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": "80f835c3-e998-47ff-aaa5-24c578af3b4e", "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-workflowkdx5m/series-workflowkdx5m-build-action-2754055165/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowkdx5m[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a986fde914d88af47eb78fd29c5d1af7952c3500","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC_NCI","NFC_VIRTUAL_NCI"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nci_core_init_rsp_packet_v1","nci_core_init_rsp_packet_v2"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a986fde914d88af47eb78fd29c5d1af7952c3500","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC_NCI","NFC_VIRTUAL_NCI"],"series_id":"2a9a8657-37a3-4dce-8cb5-2035027791dd","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-06-23 23:26:48 +0000 UTC FinishedAt: 2026-06-23 23:26:48 +0000 UTC Input: nil Output: nil --------- Name: series-workflowkdx5m[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a986fde914d88af47eb78fd29c5d1af7952c3500","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC_NCI","NFC_VIRTUAL_NCI"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nci_core_init_rsp_packet_v1","nci_core_init_rsp_packet_v2"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a986fde914d88af47eb78fd29c5d1af7952c3500","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC_NCI","NFC_VIRTUAL_NCI"],"series_id":"2a9a8657-37a3-4dce-8cb5-2035027791dd","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-06-23 23:26:48 +0000 UTC FinishedAt: 2026-06-23 23:26:48 +0000 UTC Input: nil Output: nil --------- Name: series-workflowkdx5m[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a986fde914d88af47eb78fd29c5d1af7952c3500","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC_NCI","NFC_VIRTUAL_NCI"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nci_core_init_rsp_packet_v1","nci_core_init_rsp_packet_v2"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a986fde914d88af47eb78fd29c5d1af7952c3500","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC_NCI","NFC_VIRTUAL_NCI"],"series_id":"2a9a8657-37a3-4dce-8cb5-2035027791dd","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-06-23 23:26:48 +0000 UTC FinishedAt: 2026-06-23 23:28:51 +0000 UTC Input: nil Output: nil --------- Name: series-workflowkdx5m[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a986fde914d88af47eb78fd29c5d1af7952c3500","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC_NCI","NFC_VIRTUAL_NCI"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nci_core_init_rsp_packet_v1","nci_core_init_rsp_packet_v2"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a986fde914d88af47eb78fd29c5d1af7952c3500","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC_NCI","NFC_VIRTUAL_NCI"],"series_id":"2a9a8657-37a3-4dce-8cb5-2035027791dd","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-06-23 23:26:48 +0000 UTC FinishedAt: 2026-06-23 23:28:41 +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:*80f835c3-e998-47ff-aaa5-24c578af3b4e,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-workflowkdx5m/series-workflowkdx5m-build-action-2754055165/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-workflowkdx5m[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a986fde914d88af47eb78fd29c5d1af7952c3500","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC_NCI","NFC_VIRTUAL_NCI"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nci_core_init_rsp_packet_v1","nci_core_init_rsp_packet_v2"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a986fde914d88af47eb78fd29c5d1af7952c3500","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC_NCI","NFC_VIRTUAL_NCI"],"series_id":"2a9a8657-37a3-4dce-8cb5-2035027791dd","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-06-23 23:28:51 +0000 UTC FinishedAt: 2026-06-24 02:30:50 +0000 UTC Input: nil Output: nil --------- Name: series-workflowkdx5m[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a986fde914d88af47eb78fd29c5d1af7952c3500","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC_NCI","NFC_VIRTUAL_NCI"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nci_core_init_rsp_packet_v1","nci_core_init_rsp_packet_v2"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a986fde914d88af47eb78fd29c5d1af7952c3500","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC_NCI","NFC_VIRTUAL_NCI"],"series_id":"2a9a8657-37a3-4dce-8cb5-2035027791dd","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-06-23 23:28:51 +0000 UTC FinishedAt: 2026-06-24 02:30:50 +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":["nci_core_init_rsp_packet_v1","nci_core_init_rsp_packet_v2"],"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:*4017b8d2-b42a-4a78-adf5-eb0bd163d137,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*80f835c3-e998-47ff-aaa5-24c578af3b4e,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-workflowkdx5m/series-workflowkdx5m-build-action-3859550436/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-workflowkdx5m/series-workflowkdx5m-build-action-2754055165/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowkdx5m[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a986fde914d88af47eb78fd29c5d1af7952c3500","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC_NCI","NFC_VIRTUAL_NCI"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nci_core_init_rsp_packet_v1","nci_core_init_rsp_packet_v2"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a986fde914d88af47eb78fd29c5d1af7952c3500","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC_NCI","NFC_VIRTUAL_NCI"],"series_id":"2a9a8657-37a3-4dce-8cb5-2035027791dd","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-06-23 23:28:51 +0000 UTC FinishedAt: 2026-06-23 23:29:01 +0000 UTC Input: nil Output: nil --------- Name: series-workflowkdx5m[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a986fde914d88af47eb78fd29c5d1af7952c3500","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC_NCI","NFC_VIRTUAL_NCI"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nci_core_init_rsp_packet_v1","nci_core_init_rsp_packet_v2"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a986fde914d88af47eb78fd29c5d1af7952c3500","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC_NCI","NFC_VIRTUAL_NCI"],"series_id":"2a9a8657-37a3-4dce-8cb5-2035027791dd","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-06-23 23:28:51 +0000 UTC FinishedAt: 2026-06-23 23:28:56 +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":["nci_core_init_rsp_packet_v1","nci_core_init_rsp_packet_v2"],"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-workflowkdx5m/series-workflowkdx5m-convert-artifact-2243195622/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowkdx5m[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a986fde914d88af47eb78fd29c5d1af7952c3500","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC_NCI","NFC_VIRTUAL_NCI"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nci_core_init_rsp_packet_v1","nci_core_init_rsp_packet_v2"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a986fde914d88af47eb78fd29c5d1af7952c3500","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC_NCI","NFC_VIRTUAL_NCI"],"series_id":"2a9a8657-37a3-4dce-8cb5-2035027791dd","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-06-23 23:28:51 +0000 UTC FinishedAt: 2026-06-23 23:28:51 +0000 UTC Input: nil Output: nil --------- Name: series-workflowkdx5m[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a986fde914d88af47eb78fd29c5d1af7952c3500","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC_NCI","NFC_VIRTUAL_NCI"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nci_core_init_rsp_packet_v1","nci_core_init_rsp_packet_v2"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a986fde914d88af47eb78fd29c5d1af7952c3500","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC_NCI","NFC_VIRTUAL_NCI"],"series_id":"2a9a8657-37a3-4dce-8cb5-2035027791dd","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-06-23 23:28:51 +0000 UTC FinishedAt: 2026-06-23 23:28:51 +0000 UTC Input: nil Output: nil --------- Name: series-workflowkdx5m[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a986fde914d88af47eb78fd29c5d1af7952c3500","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC_NCI","NFC_VIRTUAL_NCI"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nci_core_init_rsp_packet_v1","nci_core_init_rsp_packet_v2"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a986fde914d88af47eb78fd29c5d1af7952c3500","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC_NCI","NFC_VIRTUAL_NCI"],"series_id":"2a9a8657-37a3-4dce-8cb5-2035027791dd","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-06-23 23:28:51 +0000 UTC FinishedAt: 2026-06-23 23:28:51 +0000 UTC Input: nil Output: nil --------- Name: series-workflowkdx5m[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a986fde914d88af47eb78fd29c5d1af7952c3500","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC_NCI","NFC_VIRTUAL_NCI"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nci_core_init_rsp_packet_v1","nci_core_init_rsp_packet_v2"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a986fde914d88af47eb78fd29c5d1af7952c3500","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC_NCI","NFC_VIRTUAL_NCI"],"series_id":"2a9a8657-37a3-4dce-8cb5-2035027791dd","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-06-23 23:29:01 +0000 UTC FinishedAt: 2026-06-24 02:30:50 +0000 UTC Input: nil Output: nil --------- Name: series-workflowkdx5m[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a986fde914d88af47eb78fd29c5d1af7952c3500","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC_NCI","NFC_VIRTUAL_NCI"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nci_core_init_rsp_packet_v1","nci_core_init_rsp_packet_v2"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a986fde914d88af47eb78fd29c5d1af7952c3500","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC_NCI","NFC_VIRTUAL_NCI"],"series_id":"2a9a8657-37a3-4dce-8cb5-2035027791dd","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-06-23 23:29:01 +0000 UTC FinishedAt: 2026-06-24 02:30:40 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*4017b8d2-b42a-4a78-adf5-eb0bd163d137,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*80f835c3-e998-47ff-aaa5-24c578af3b4e,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-workflowkdx5m/series-workflowkdx5m-build-action-3859550436/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-workflowkdx5m/series-workflowkdx5m-build-action-2754055165/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-workflowkdx5m/series-workflowkdx5m-convert-artifact-2243195622/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,}