Name: series-workflowrhldw Phase: Succeeded StartedAt: 2026-07-09 03:48:32 +0000 UTC FinishedAt: 2026-07-09 09:01:37 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrhldw[0] Phase: Succeeded StartedAt: 2026-07-09 03:48:32 +0000 UTC FinishedAt: 2026-07-09 04:28:44 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrhldw[0].run-triage Phase: Succeeded StartedAt: 2026-07-09 03:48:32 +0000 UTC FinishedAt: 2026-07-09 04:28:44 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "mm-new", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git", "commit_hash": "302dfbff3e73be2ba5723237c6303244ec27cebb", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "KSM", "MEMORY_FAILURE" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "mm-new", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git", "commit_hash": "302dfbff3e73be2ba5723237c6303244ec27cebb", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "KSM", "MEMORY_FAILURE" ], "series_id": "9a66ec5f-7075-4ce5-a394-0a0b389fae5a" }, "track": "KASAN", "fuzz": { "focus": null, "focus_symbols": [ "collect_procs_ksm" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db" ], "skip_cover_check": true, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA5IDA0OjI2PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0tTTSYjMzQ7LAogICAgJiMzNDtNRU1PUllfRkFJTFVSRSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2NvbGxlY3RfcHJvY3Nfa3NtJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBpbnRlcnZhbCB0cmVlIHNlYXJjaCBib3VuZHMgaW4gYGNvbGxlY3RfcHJvY3Nfa3NtYCBkdXJpbmcgbWVtb3J5IGZhaWx1cmUgaGFuZGxpbmcgZm9yIEtTTSBwYWdlcy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRoYXQgYWx0ZXJzIGV4ZWN1dGlvbiBmbG93LiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA5IDA0OjI2PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgNWI0MzdlZGIwM2NiMTMwMzk5NmNmYzFkMDNjYTJkMTNjZWM3OWU1ZlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUaHUgSnVsIDkgMDQ6MjY6MTggMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbW0va3NtLmMgYi9tbS9rc20uY1xuaW5kZXggYzFkY2MzY2I0ODMxYzQuLjI3OTFjZTViZDQ0YjFmIDEwMDY0NFxuLS0tIGEvbW0va3NtLmNcbiYjNDM7JiM0MzsmIzQzOyBiL21tL2tzbS5jXG5AQCAtMzI4OSwxNyAmIzQzOzMyODksMTcgQEAgdm9pZCBjb2xsZWN0X3Byb2NzX2tzbShjb25zdCBzdHJ1Y3QgZm9saW8gKmZvbGlvLCBjb25zdCBzdHJ1Y3QgcGFnZSAqcGFnZSxcbiBcdFx0cmN1X3JlYWRfbG9jaygpO1xuIFx0XHRmb3JfZWFjaF9wcm9jZXNzKHRzaykge1xuIFx0XHRcdHN0cnVjdCBhbm9uX3ZtYV9jaGFpbiAqdm1hYztcbi1cdFx0XHR1bnNpZ25lZCBsb25nIGFkZHI7XG4mIzQzO1x0XHRcdGNvbnN0IHVuc2lnbmVkIGxvbmcgYWRkciA9IHJtYXBfaXRlbS1cdTAwM2VhZGRyZXNzIFx1MDAyNiBQQUdFX01BU0s7XG4mIzQzO1x0XHRcdGNvbnN0IHVuc2lnbmVkIGxvbmcgaW5kZXggPSBybWFwX2l0ZW0tXHUwMDNlbGluZWFyX3BhZ2VfaW5kZXg7XG4gXHRcdFx0c3RydWN0IHRhc2tfc3RydWN0ICp0ID1cbiBcdFx0XHRcdHRhc2tfZWFybHlfa2lsbCh0c2ssIGZvcmNlX2Vhcmx5KTtcbiBcdFx0XHRpZiAoIXQpXG4gXHRcdFx0XHRjb250aW51ZTtcbi1cdFx0XHRhbm9uX3ZtYV9pbnRlcnZhbF90cmVlX2ZvcmVhY2godm1hYywgXHUwMDI2YXYtXHUwMDNlcmJfcm9vdCwgMCxcbi1cdFx0XHRcdFx0XHQgICAgICAgVUxPTkdfTUFYKVxuJiM0MztcdFx0XHRhbm9uX3ZtYV9pbnRlcnZhbF90cmVlX2ZvcmVhY2godm1hYywgXHUwMDI2YXYtXHUwMDNlcmJfcm9vdCwgaW5kZXgsXG4mIzQzO1x0XHRcdFx0XHRcdCAgICAgICBpbmRleClcbiBcdFx0XHR7XG4gXHRcdFx0XHR2bWEgPSB2bWFjLVx1MDAzZXZtYTtcbiBcdFx0XHRcdGlmICh2bWEtXHUwMDNldm1fbW0gPT0gdC1cdTAwM2VtbSkge1xuLVx0XHRcdFx0XHRhZGRyID0gcm1hcF9pdGVtLVx1MDAzZWFkZHJlc3MgXHUwMDI2IFBBR0VfTUFTSztcbiBcdFx0XHRcdFx0YWRkX3RvX2tpbGxfa3NtKHQsIHBhZ2UsIHZtYSwgdG9fa2lsbCxcbiBcdFx0XHRcdFx0XHRcdGFkZHIpO1xuIFx0XHRcdFx0fVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA5IDA0OjI2PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjFtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0tTTSYjMzQ7LAogICAgJiMzNDtNRU1PUllfRkFJTFVSRSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2NvbGxlY3RfcHJvY3Nfa3NtJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBpbnRlcnZhbCB0cmVlIHNlYXJjaCBib3VuZHMgaW4gYGNvbGxlY3RfcHJvY3Nfa3NtYCBkdXJpbmcgbWVtb3J5IGZhaWx1cmUgaGFuZGxpbmcgZm9yIEtTTSBwYWdlcy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRoYXQgYWx0ZXJzIGV4ZWN1dGlvbiBmbG93LiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdAogICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksCiAgIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCA1YjQzN2VkYjAzY2IxMzAzOTk2Y2ZjMWQwM2NhMmQxM2NlYzc5ZTVmCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFRodSBKdWwgOSAwNDoyNjoxOCAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL21tL2tzbS5jIGIvbW0va3NtLmMKaW5kZXggYzFkY2MzY2I0ODMxYzQuLjI3OTFjZTViZDQ0YjFmIDEwMDY0NAotLS0gYS9tbS9rc20uYwomIzQzOyYjNDM7JiM0MzsgYi9tbS9rc20uYwpAQCAtMzI4OSwxNyAmIzQzOzMyODksMTcgQEAgdm9pZCBjb2xsZWN0X3Byb2NzX2tzbShjb25zdCBzdHJ1Y3QgZm9saW8gKmZvbGlvLCBjb25zdCBzdHJ1Y3QgcGFnZSAqcGFnZSwKIAkJcmN1X3JlYWRfbG9jaygpOwogCQlmb3JfZWFjaF9wcm9jZXNzKHRzaykgewogCQkJc3RydWN0IGFub25fdm1hX2NoYWluICp2bWFjOwotCQkJdW5zaWduZWQgbG9uZyBhZGRyOwomIzQzOwkJCWNvbnN0IHVuc2lnbmVkIGxvbmcgYWRkciA9IHJtYXBfaXRlbS0mZ3Q7YWRkcmVzcyAmYW1wOyBQQUdFX01BU0s7CiYjNDM7CQkJY29uc3QgdW5zaWduZWQgbG9uZyBpbmRleCA9IHJtYXBfaXRlbS0mZ3Q7bGluZWFyX3BhZ2VfaW5kZXg7CiAJCQlzdHJ1Y3QgdGFza19zdHJ1Y3QgKnQgPQogCQkJCXRhc2tfZWFybHlfa2lsbCh0c2ssIGZvcmNlX2Vhcmx5KTsKIAkJCWlmICghdCkKIAkJCQljb250aW51ZTsKLQkJCWFub25fdm1hX2ludGVydmFsX3RyZWVfZm9yZWFjaCh2bWFjLCAmYW1wO2F2LSZndDtyYl9yb290LCAwLAotCQkJCQkJICAgICAgIFVMT05HX01BWCkKJiM0MzsJCQlhbm9uX3ZtYV9pbnRlcnZhbF90cmVlX2ZvcmVhY2godm1hYywgJmFtcDthdi0mZ3Q7cmJfcm9vdCwgaW5kZXgsCiYjNDM7CQkJCQkJICAgICAgIGluZGV4KQogCQkJewogCQkJCXZtYSA9IHZtYWMtJmd0O3ZtYTsKIAkJCQlpZiAodm1hLSZndDt2bV9tbSA9PSB0LSZndDttbSkgewotCQkJCQlhZGRyID0gcm1hcF9pdGVtLSZndDthZGRyZXNzICZhbXA7IFBBR0VfTUFTSzsKIAkJCQkJYWRkX3RvX2tpbGxfa3NtKHQsIHBhZ2UsIHZtYSwgdG9fa2lsbCwKIAkJCQkJCQlhZGRyKTsKIAkJCQl9CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA5IDA0OjI2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIwMDEKCQkJCQkJCW91dHB1dDogMjEKCQkJCQkJCXRob3VnaHRzOiAxNTUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgS1NNIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGZvciBgbW0va3NtLmNgLiBJdCYjMzk7cyBhIHJlbGF0aXZlbHkgZm9jdXNlZCBjaGFuZ2U7IGl0IHNlZW1zIHRvIGJlIGFmZmVjdGluZyB0aGUgYGNvbGxlY3RfcHJvY3Nfa3NtYCBmdW5jdGlvbi4gVGhlIGtleSBoZXJlIGlzIHRoYXQgdGhleSYjMzk7dmUgYWx0ZXJlZCB0aGUgYXJndW1lbnRzIHBhc3NlZCB0byBgYW5vbl92bWFfaW50ZXJ2YWxfdHJlZV9mb3JlYWNoYC4gSW5pdGlhbGx5LCBpdCB3YXMgaXRlcmF0aW5nIG92ZXIgdGhlIGVudGlyZSBhZGRyZXNzIHNwYWNlIOKAkyBmcm9tIDAgdG8gYFVMT05HX01BWGAuIE5vdywgaXQmIzM5O3MgbmFycm93ZWQgZG93biB0byB1c2luZyBgaW5kZXgsIGluZGV4YC4gSSBjYW4gaW1tZWRpYXRlbHkgc2VlIHRoYXQgdGhpcyBpcyBhIHNpZ25pZmljYW50IGNoYW5nZSwgbGlrZWx5IGFpbWluZyBmb3IgcHJlY2lzaW9uLgoKSSBuZWVkIHRvIHVuZGVyc3RhbmQgKndoeSogdGhleSYjMzk7cmUgZG9pbmcgdGhpcy4gVGhlIGNvbnRleHQgcHJvdmlkZWQgaXMgY3J1Y2lhbDogYGNvbGxlY3RfcHJvY3Nfa3NtYCBpcyBpbnZva2VkIGR1cmluZyBtZW1vcnkgZmFpbHVyZSBoYW5kbGluZywgc3BlY2lmaWNhbGx5IHdoZW4gYSBLU00gcGFnZSBleHBlcmllbmNlcyBhbiBlcnJvci4gVGhpcyBmdW5jdGlvbiYjMzk7cyBqb2IgaXMgdG8gaWRlbnRpZnkgd2hpY2ggcHJvY2Vzc2VzIGFyZSBjdXJyZW50bHkgbWFwcGluZyB0aGF0IHRyb3VibGVkIHBhZ2UuIFNvLCB0aGlzIGFyZ3VtZW50IG1vZGlmaWNhdGlvbiBpcyBhaW1lZCBhdCBvbmx5IGxvb2tpbmcgYXQgb25lIHNwZWNpZmljIGluZGV4LgoKVGhlcmVmb3JlLCB0aGUgY2hhbmdlIGxpa2VseSBhaW1zIHRvIG9ubHkgY29uc2lkZXIgdGhlIHNwZWNpZmljIGFkZHJlc3Mgd2l0aGluIHRoZSBhbm9uX3ZtYSBpbnRlcnZhbCB0cmVlIGZvciB0aGUgS1NNIHBhZ2UgYmVpbmcgY2hlY2tlZCBhdCB0aGUgdGltZS4gSSB3aWxsIG5vdyBkcmlsbCBkb3duIGludG8gdGhlIGNvZGUgaXRzZWxmIHRvIGhhdmUgYSBtb3JlIGRldGFpbGVkIHZpZXcgb2YgdGhlIGNvZGUgYW5kIHRoZSBjb250ZXh0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA5IDA0OjI2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbGxlY3RfcHJvY3Nfa3NtJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2luY2x1ZGUvbGludXgva3NtLmg9OTg9dm9pZCBmb2xpb19taWdyYXRlX2tzbShzdHJ1Y3QgZm9saW8gKm5ld2ZvbGlvLCBzdHJ1Y3QgZm9saW8gKmZvbGlvKTtcbmluY2x1ZGUvbGludXgva3NtLmg6OTk6dm9pZCBjb2xsZWN0X3Byb2NzX2tzbShjb25zdCBzdHJ1Y3QgZm9saW8gKmZvbGlvLCBjb25zdCBzdHJ1Y3QgcGFnZSAqcGFnZSxcbmluY2x1ZGUvbGludXgva3NtLmgtMTAwLVx0XHRzdHJ1Y3QgbGlzdF9oZWFkICp0b19raWxsLCBpbnQgZm9yY2VfZWFybHkpO1xuLS1cbmluY2x1ZGUvbGludXgva3NtLmg9MTMwPXN0YXRpYyBpbmxpbmUgdm9pZCBrc21fbWlnaHRfdW5tYXBfemVyb19wYWdlKHN0cnVjdCBtbV9zdHJ1Y3QgKm1tLCBwdGVfdCBwdGUpXG4tLVxuaW5jbHVkZS9saW51eC9rc20uaC0xMzMtXG5pbmNsdWRlL2xpbnV4L2tzbS5oOjEzNDpzdGF0aWMgaW5saW5lIHZvaWQgY29sbGVjdF9wcm9jc19rc20oY29uc3Qgc3RydWN0IGZvbGlvICpmb2xpbyxcbmluY2x1ZGUvbGludXgva3NtLmgtMTM1LVx0XHRjb25zdCBzdHJ1Y3QgcGFnZSAqcGFnZSwgc3RydWN0IGxpc3RfaGVhZCAqdG9fa2lsbCxcbi0tXG5tbS9rc20uYz0zMTkwPXZvaWQgcm1hcF93YWxrX2tzbShzdHJ1Y3QgZm9saW8gKmZvbGlvLCBzdHJ1Y3Qgcm1hcF93YWxrX2NvbnRyb2wgKnJ3Yylcbi0tXG5tbS9rc20uYy0zMjczLSAqL1xubW0va3NtLmM6MzI3NDp2b2lkIGNvbGxlY3RfcHJvY3Nfa3NtKGNvbnN0IHN0cnVjdCBmb2xpbyAqZm9saW8sIGNvbnN0IHN0cnVjdCBwYWdlICpwYWdlLFxubW0va3NtLmMtMzI3NS1cdFx0c3RydWN0IGxpc3RfaGVhZCAqdG9fa2lsbCwgaW50IGZvcmNlX2Vhcmx5KVxuLS1cbm1tL21lbW9yeS1mYWlsdXJlLmM9NjY2PXN0YXRpYyB2b2lkIGNvbGxlY3RfcHJvY3MoY29uc3Qgc3RydWN0IGZvbGlvICpmb2xpbywgY29uc3Qgc3RydWN0IHBhZ2UgKnBhZ2UsXG4tLVxubW0vbWVtb3J5LWZhaWx1cmUuYy02NzEtXHRpZiAodW5saWtlbHkoZm9saW9fdGVzdF9rc20oZm9saW8pKSlcbm1tL21lbW9yeS1mYWlsdXJlLmM6NjcyOlx0XHRjb2xsZWN0X3Byb2NzX2tzbShmb2xpbywgcGFnZSwgdG9raWxsLCBmb3JjZV9lYXJseSk7XG5tbS9tZW1vcnktZmFpbHVyZS5jLTY3My1cdGVsc2UgaWYgKGZvbGlvX3Rlc3RfYW5vbihmb2xpbykpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDkgMDQ6MjY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjkwNgoJCQkJCQkJb3V0cHV0OiAxNwoJCQkJCQkJdGhvdWdodHM6IDgyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLgoKKipEaXZpbmcgaW50byB0aGUgTWVtb3J5IEZhaWx1cmUgSGFuZGxpbmcgUGF0Y2gqKgoKQWxyaWdodCwgc28gdGhlIGNvcmUgb2YgdGhpcyBzZWVtcyB0byBiZSB0aGUgYGNvbGxlY3RfcHJvY3Nfa3NtYCBmdW5jdGlvbi4gSXQmIzM5O3MgaGFuZ2luZyBvdXQgaW4gYGNvbGxlY3RfcHJvY3NgIHdpdGhpbiBgbW0vbWVtb3J5LWZhaWx1cmUuY2AuIFRoYXQmIzM5O3MgdGhlIGtleSBmaWxlIGZvciBtZW1vcnkgZmFpbHVyZSBtYW5hZ2VtZW50LCB3aGljaCBpcyBpbXBvcnRhbnQgZ2l2ZW4gaG93IGNydWNpYWwgbWVtb3J5IHN0YWJpbGl0eSBpcy4KCk5vdywgbWVtb3J5IGZhaWx1cmUgY2FuIHN0ZW0gZnJvbSBoYXJkd2FyZSBlcnJvcnMsIHdoaWNoIG1ha2VzIHNlbnNlLiBCdXQgaW50ZXJlc3RpbmdseSwgdGhlcmUgYXJlIGFsc28gZGVsaWJlcmF0ZSB0cmlnZ2VyczogYG1hZHZpc2UoTUFEVl9IV1BPSVNPTilgIGFuZCBkZWJ1Z2ZzIGludGVyZmFjZXMuIFRoYXQmIzM5O3MgZ29vZCB0byBrbm93LCBhbmQgc3VnZ2VzdHMgd2UgaGF2ZSBzb21lIGNvbnRyb2wgZm9yIHRlc3RpbmcgYW5kIGRlYnVnZ2luZy4KClRoZSBuZXh0IHF1ZXN0aW9uOiBkb2VzIHRoaXMgcGF0Y2ggaW50ZXJhY3Qgd2l0aCBLU00gaW4gYSB3YXkgdGhhdCYjMzk7cyBkZXBlbmRlbnQgb24gYSBzcGVjaWZpYyBjb25maWd1cmF0aW9uLCBvciBpcyBpdCBnb2luZyB0byBiZSBlbmFibGVkIGJ5IGRlZmF1bHQ/IEkgbmVlZCB0byBjaGVjayBob3cgdGhlIHBhdGNoIGhhbmRsZXMgS1NNJiMzOTtzIHByZXNlbmNlIHRvIHVuZGVyc3RhbmQgaXRzIG92ZXJhbGwgaW1wYWN0LiBUaGF0IHdpbGwgaW5mbHVlbmNlIGhvdyBJIGFwcHJvYWNoIHVuZGVyc3RhbmRpbmcgdGhlIGltcGxpY2F0aW9ucyBvZiB0aGUgY2hhbmdlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA5IDA0OjI2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBLU00mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bW0vS2NvbmZpZz03MzY9Y29uZmlnIE1NVV9OT1RJRklFUlxuLS1cbm1tL0tjb25maWctNzM5LVxubW0vS2NvbmZpZzo3NDA6Y29uZmlnIEtTTVxubW0vS2NvbmZpZy03NDEtXHRib29sIFwmIzM0O0VuYWJsZSBLU00gZm9yIHBhZ2UgbWVyZ2luZ1wmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA5IDA0OjI2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMyOTAKCQkJCQkJCW91dHB1dDogMTkKCQkJCQkJCXRob3VnaHRzOiAyMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0JiMzOTtzIGludGVybmFsIG1vbm9sb2d1ZToKCioqQ2hlY2tpbmcgQ29uZmlndXJhdGlvbiBEZXBlbmRlbmNpZXMqKgoKQWxyaWdodCwgS1NNIOKAkyBLZXJuZWwgU2FtZXBhZ2UgTWVyZ2luZyDigJMgdGhhdCYjMzk7cyBhIGtub3duIGNvbmZpZ3VyYXRpb24gcGFyYW1ldGVyLiBJJiMzOTttIGFscmVhZHkgbWVudGFsbHkgZmxhZ2dlZCBmb3IgaXRzIGltcGxpY2F0aW9ucyBvbiBtZW1vcnkgbWFuYWdlbWVudCBhbmQgcGVyZm9ybWFuY2UuIE5vdywgbGV0JiMzOTtzIGp1c3QgbWFrZSBzdXJlIEkgaGF2ZSBteSBiYXNlcyBjb3ZlcmVkLiBJIG5lZWQgdG8gcXVpY2tseSBkZXRlcm1pbmUgaWYgYE1FTU9SWV9GQUlMVVJFYCBpcyBhbHNvIGEgY29tcGlsZS10aW1lIGNvbmZpZ3VyYXRpb24gb3B0aW9uLiBJIG5lZWQgdG8ga25vdyBpZiBJIGNhbiBlbmFibGUgdGhpcyBmZWF0dXJlLCBvciBpZiBpdCYjMzk7cyBhbHJlYWR5IGVuYWJsZWQuIFRoaXMgaXMgY3J1Y2lhbCBmb3IgdW5kZXJzdGFuZGluZyBob3cgdGhlIHN5c3RlbSB3aWxsIHJlYWN0IHRvIG1lbW9yeSBhbm9tYWxpZXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDkgMDQ6Mjc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIE1FTU9SWV9GQUlMVVJFJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O21tL0tjb25maWc9Nzc0PWNvbmZpZyBBUkNIX1NVUFBPUlRTX01FTU9SWV9GQUlMVVJFXG4tLVxubW0vS2NvbmZpZy03NzYtXG5tbS9LY29uZmlnOjc3Nzpjb25maWcgTUVNT1JZX0ZBSUxVUkVcbm1tL0tjb25maWctNzc4LVx0ZGVwZW5kcyBvbiBNTVVcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wOSAwNDoyNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNTM0CgkJCQkJCQlvdXRwdXQ6IDE5CgkJCQkJCQl0aG91Z2h0czogNDYzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgYGNvbGxlY3RfcHJvY3Nfa3NtYCBGdW5jdGlvbioqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgaW1tZWRpYXRlbHksIHRoZSBjb25maWdzIHRoYXQganVtcCBvdXQgYXJlIGBLU01gIGFuZCBgTUVNT1JZX0ZBSUxVUkVgLiBUaGUga2V5IGZ1bmN0aW9uIGhlcmUgaXMgYGNvbGxlY3RfcHJvY3Nfa3NtYC4gTGV0JiMzOTtzIGNvbmZpcm0gdGhhdCBubyBvdGhlciByZWxhdGVkIGZ1bmN0aW9ucyBhcmUgbW9kaWZpZWQ7IGl0IHNlZW1zIHRoaXMgaXMgdGhlIHByaW1hcnkgZm9jdXMuCgpOb3csIGxldCYjMzk7cyB0YWtlIGFub3RoZXIgbG9vayBhdCB0aGUgY29kZSBpdHNlbGYuIFRoZSBjb3JlIG9mIHRoZSBjaGFuZ2UgaXMgY2xlYXJseSB3aXRoaW4gdGhlIGxvb3AuIFByZXZpb3VzbHksIHRoZSBpbnRlcnZhbCB0cmVlIHNlYXJjaCB1c2VkIGBbMCwgVUxPTkdfTUFYXWAgd2hpY2ggbWVhbnMgaXQgaXRlcmF0ZWQgdGhyb3VnaCB0aGUgZW50aXJlIHRyZWUuIE5vdywgdGhleSYjMzk7dmUgcmVzdHJpY3RlZCB0aGUgc2VhcmNoIHRvIGBbaW5kZXgsIGluZGV4XWAuIFRoZSBjaGFuZ2Ugbm93IHVzZXMgYHJtYXBfaXRlbS0mZ3Q7bGluZWFyX3BhZ2VfaW5kZXhgIGRpcmVjdGx5LgoKVGhpcyBpcyBkZWZpbml0ZWx5IGEgZnVuY3Rpb25hbCBjaGFuZ2UuIFRoZSBleGVjdXRpb24gZmxvdyBpcyBiZWluZyBhbHRlcmVkOyB0aGUgbG9vcCB3aWxsIGl0ZXJhdGUgZmV3ZXIgdGltZXMuIFRoaXMgaXMgbGlrZWx5IGVpdGhlciBhbiBvcHRpbWl6YXRpb24gdG8gcmVkdWNlIHVubmVjZXNzYXJ5IGl0ZXJhdGlvbnMgb3IsIHBvdGVudGlhbGx5LCBhIGJ1ZyBmaXggYnkgZW5zdXJpbmcgaXQgb25seSBwcm9jZXNzZXMgdGhlIHJlbGV2YW50IG5vZGUuIEkgbmVlZCB0byBkaWcgZGVlcGVyIHRvIHNlZSB3aHkgdGhpcyBjaGFuZ2Ugd2FzIG5lY2Vzc2FyeSBhbmQgd2hhdCBwcm9ibGVtIGl0JiMzOTtzIGFkZHJlc3NpbmcuCgpUbyBiZSB0aG9yb3VnaCwgSSYjMzk7bGwgcXVpY2tseSBkb3VibGUtY2hlY2sgdGhhdCB0aGVyZSBhcmVuJiMzOTt0IGFueSBvdGhlciByZWxhdGVkIGNvbmZpZ3Mgb3IgbW9kaWZpZWQgZnVuY3Rpb25zIHRoYXQgSSYjMzk7bSBvdmVybG9va2luZy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDkgMDQ6Mjc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtkZXBlbmRzIG9uLipLU00mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wOSAwNDoyNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0MjkwCgkJCQkJCQlvdXRwdXQ6IDMzCgkJCQkJCQl0aG91Z2h0czogNjYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCYjMzk7cyBzZWUuIEkgbmVlZCB0byBmaWd1cmUgb3V0IGlmIGBNRU1PUllfRkFJTFVSRWAgaXMgYSBuZWNlc3NhcnkgY29tcG9uZW50IGhlcmUuIFJpZ2h0LCBJIHJlbWVtYmVyIHRoYXQgYGNvbGxlY3RfcHJvY3Nfa3NtYCBpcyBjYWxsZWQgZnJvbSBgY29sbGVjdF9wcm9jc2Agd2l0aGluIHRoZSBgbW0vbWVtb3J5LWZhaWx1cmUuY2AgZmlsZS4gV2FpdCBhIHNlY29uZC4uLiBpdCYjMzk7cyBjcnVjaWFsIHRvIGNvbmZpcm0gd2hldGhlciBgY29sbGVjdF9wcm9jc19rc21gIGlzICpjb25kaXRpb25hbGx5KiBjb21waWxlZC4gU3BlY2lmaWNhbGx5LCBJIG5lZWQgdG8gdmVyaWZ5IHRoYXQgaXQmIzM5O3MgKm9ubHkqIGNvbXBpbGVkIHdoZW4gYE1FTU9SWV9GQUlMVVJFYCBpcywgaW4gZmFjdCwgZW5hYmxlZC4gVGhpcyBpcyBrZXkgdG8gdW5kZXJzdGFuZCBob3cgdGhlIGZ1bmN0aW9ucyB3b3JrIGluIHJlbGF0aW9uIHRvIGBNRU1PUllfRkFJTFVSRWAuIEkmIzM5O2xsIG5lZWQgdG8gY2hlY2sgdGhlIGJ1aWxkIGNvbmZpZ3VyYXRpb25zIHRvIGJlIHN1cmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA5IDA0OjI3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbGxlY3RfcHJvY3Nfa3NtJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bW0va3NtLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bW0va3NtLmM9MzE5MD12b2lkIHJtYXBfd2Fsa19rc20oc3RydWN0IGZvbGlvICpmb2xpbywgc3RydWN0IHJtYXBfd2Fsa19jb250cm9sICpyd2MpXG4tLVxubW0va3NtLmMtMzI3My0gKi9cbm1tL2tzbS5jOjMyNzQ6dm9pZCBjb2xsZWN0X3Byb2NzX2tzbShjb25zdCBzdHJ1Y3QgZm9saW8gKmZvbGlvLCBjb25zdCBzdHJ1Y3QgcGFnZSAqcGFnZSxcbm1tL2tzbS5jLTMyNzUtXHRcdHN0cnVjdCBsaXN0X2hlYWQgKnRvX2tpbGwsIGludCBmb3JjZV9lYXJseSlcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDkgMDQ6Mjc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDY2MgoJCQkJCQkJb3V0cHV0OiAzMQoJCQkJCQkJdGhvdWdodHM6IDI1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBIZXJlJiMzOTtzIGhvdyBJJiMzOTtkIGFwcHJvYWNoIHRoaXMgdGFzaywgYXMgaWYgdGhlc2Ugd2VyZSBteSBpbnRlcm5hbCB0aG91Z2h0czoKCioqQ2hlY2tpbmcgQ29uZGl0aW9uYWwgQ29tcGlsYXRpb24gaW4gS2VybmVsIENvZGUqKgoKUmlnaHQsIHNvIEkmIzM5O20gbG9va2luZyBhdCBgY29sbGVjdF9wcm9jc19rc21gLiBUaGUgZmlyc3QgdGhpbmcgSSYjMzk7bSBnb2luZyB0byBkbyBpcyBkZXRlcm1pbmUgaWYgaXQmIzM5O3MgY29uZGl0aW9uYWxseSBjb21waWxlZC4gR2l2ZW4gbXkgZmFtaWxpYXJpdHkgd2l0aCBrZXJuZWwgY29kZSwgSSBpbW1lZGlhdGVseSBzdXNwZWN0IGl0JiMzOTtzIHByb3RlY3RlZCBieSBhbiBgI2lmZGVmYCBwcmVwcm9jZXNzb3IgZGlyZWN0aXZlLiBJdCYjMzk7cyBhIGNvbW1vbiBwcmFjdGljZSB0byBzZWxlY3RpdmVseSBlbmFibGUgb3IgZGlzYWJsZSBmZWF0dXJlcyBiYXNlZCBvbiBrZXJuZWwgY29uZmlndXJhdGlvbiBvcHRpb25zLgoKU3BlY2lmaWNhbGx5LCB0aGUgY29udGV4dCBvZiBtZW1vcnkgbWFuYWdlbWVudCBvZnRlbiBpbnZvbHZlcyBjb25kaXRpb25hbCBjb21waWxhdGlvbiBhcm91bmQgbWVtb3J5IGZhaWx1cmUgaGFuZGxpbmcuIFRoZXJlZm9yZSwgSSBzdXNwZWN0IGBjb2xsZWN0X3Byb2NzX2tzbWAgKm1pZ2h0KiBiZSBjb25kaXRpb25hbGx5IGNvbXBpbGVkIHVuZGVyIGAjaWZkZWYgQ09ORklHX01FTU9SWV9GQUlMVVJFYC4gVGhpcyB3b3VsZCBiZSB0aGUgbmF0dXJhbCBzcG90IHRvIGNoZWNrIGZpcnN0LiBJdCYjMzk7cyB0aGUgbW9zdCBsaWtlbHkgY29uZmlndXJhdGlvbiBvcHRpb24gdG8gYmUgcmVsZXZhbnQgaGVyZS4gTGV0JiMzOTtzIHN0YXJ0IHRoZXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wOSAwNDoyODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtDT05GSUdfTUVNT1JZX0ZBSUxVUkUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDttbS9rc20uYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDttbS9rc20uYz0zMTkwPXZvaWQgcm1hcF93YWxrX2tzbShzdHJ1Y3QgZm9saW8gKmZvbGlvLCBzdHJ1Y3Qgcm1hcF93YWxrX2NvbnRyb2wgKnJ3Yylcbi0tXG5tbS9rc20uYy0zMjY5LVxubW0va3NtLmM6MzI3MDojaWZkZWYgQ09ORklHX01FTU9SWV9GQUlMVVJFXG5tbS9rc20uYy0zMjcxLS8qXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA5IDA0OjI4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDUwMDUKCQkJCQkJCW91dHB1dDogODcKCQkJCQkJCXRob3VnaHRzOiAxNTkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBQb3RlbnRpYWwgZm9yIEZ1enppbmcqKgoKT2theSwgaGVyZSYjMzk7cyB3aGF0IEkmIzM5O3ZlIGdvdC4gVGhlIGNvZGUgY2hhbmdlIGlzIGRlZmluaXRlbHkgd2l0aGluIHRoZSBgI2lmZGVmIENPTkZJR19NRU1PUllfRkFJTFVSRWAgYmxvY2sg4oCTIHRoYXQmIzM5O3Mgb3VyIGZpcnN0IGNsdWUuIFNvLCBsb29raW5nIGF0IHRoZSBjb25maWd1cmF0aW9ucywgaXQgaGluZ2VzIG9uIGBLU01gIGFuZCwgb2YgY291cnNlLCBgTUVNT1JZX0ZBSUxVUkVgLiBUaGUgcmVhbCB0YXJnZXQgaGVyZSBpcyBgY29sbGVjdF9wcm9jc19rc21gLiBJJiMzOTttIGZvY3VzaW5nIG9uIHRoYXQgZnVuY3Rpb24gYmVjYXVzZSB0aGUgY2hhbmdlIHNwZWNpZmljYWxseSB0d2Vha3MgdGhlIGJvdW5kcyB1c2VkIGluIHRoZSBpbnRlcnZhbCB0cmVlIHNlYXJjaCAqd2l0aGluKiBgY29sbGVjdF9wcm9jc19rc21gLiBBbmQgd2h5IGlzIHRoYXQgcmVsZXZhbnQ/IEJlY2F1c2UgdGhpcyB3aG9sZSBzZWN0aW9uIGlzIGFib3V0IG1lbW9yeSBmYWlsdXJlIGhhbmRsaW5nIGZvciBLU00gcGFnZXMuCgpQdXR0aW5nIGl0IGFsbCB0b2dldGhlciwgSSYjMzk7bSBnb2luZyB0byBmbGFnIHRoaXMgYXMgd29ydGggZnV6emluZy4gVGhlIGtleSBjb25maWd1cmF0aW9ucyBhcmUgYEtTTWAgYW5kIGBNRU1PUllfRkFJTFVSRWAuIFRoZSBwcmltYXJ5IGZvY3VzLCBuYXR1cmFsbHksIGlzIGBjb2xsZWN0X3Byb2NzX2tzbWAuIE15IHJlYXNvbmluZyBpcyBzdHJhaWdodGZvcndhcmQ6IHRoaXMgaXMgYSAqZnVuY3Rpb25hbCogbW9kaWZpY2F0aW9uLiBUaGUgcGF0Y2ggZGlyZWN0bHkgaW1wYWN0cyBob3cgYGNvbGxlY3RfcHJvY3Nfa3NtYCBiZWhhdmVzIGR1cmluZyBtZW1vcnkgZmFpbHVyZSBzY2VuYXJpb3MgZm9yIEtTTSBwYWdlcy4gSXTigJlzIGNoYW5naW5nIHRoZSBleGVjdXRpb24gZmxvdyBieSBhbHRlcmluZyB0aGUgaW50ZXJ2YWwgdHJlZSBzZWFyY2guIFRoaXMgc2VlbXMgbGlrZSBhIGp1aWN5IHRhcmdldCBmb3IgZnV6emluZyB0byByZXZlYWwgdW5leHBlY3RlZCBpbnRlcmFjdGlvbnMgb3IgZWRnZSBjYXNlcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDkgMDQ6Mjg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0tTTSYjMzQ7LAogICAgJiMzNDtNRU1PUllfRkFJTFVSRSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2NvbGxlY3RfcHJvY3Nfa3NtJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBpbnRlcnZhbCB0cmVlIHNlYXJjaCBib3VuZHMgaW4gYGNvbGxlY3RfcHJvY3Nfa3NtYCBkdXJpbmcgbWVtb3J5IGZhaWx1cmUgaGFuZGxpbmcgZm9yIEtTTSBwYWdlcy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRoYXQgYWx0ZXJzIGV4ZWN1dGlvbiBmbG93LiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtLU00mIzM0OywKICAgICYjMzQ7TUVNT1JZX0ZBSUxVUkUmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtjb2xsZWN0X3Byb2NzX2tzbSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgaW50ZXJ2YWwgdHJlZSBzZWFyY2ggYm91bmRzIGluIGBjb2xsZWN0X3Byb2NzX2tzbWAgZHVyaW5nIG1lbW9yeSBmYWlsdXJlIGhhbmRsaW5nIGZvciBLU00gcGFnZXMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0aGF0IGFsdGVycyBleGVjdXRpb24gZmxvdy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA5VDA0OjI2OjIwLjI2MDc0OTE5M1oiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjExMTY3MDc4MjkxMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJLU01cIixcbiAgICBcIk1FTU9SWV9GQUlMVVJFXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiY29sbGVjdF9wcm9jc19rc21cIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgaW50ZXJ2YWwgdHJlZSBzZWFyY2ggYm91bmRzIGluIGBjb2xsZWN0X3Byb2NzX2tzbWAgZHVyaW5nIG1lbW9yeSBmYWlsdXJlIGhhbmRsaW5nIGZvciBLU00gcGFnZXMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0aGF0IGFsdGVycyBleGVjdXRpb24gZmxvdy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDlUMDQ6MjY6MjAuMjYwNzU0NzAzWiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NzY4NTM4MTMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCA1YjQzN2VkYjAzY2IxMzAzOTk2Y2ZjMWQwM2NhMmQxM2NlYzc5ZTVmXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBUaHUgSnVsIDkgMDQ6MjY6MTggMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvbW0va3NtLmMgYi9tbS9rc20uY1xcbmluZGV4IGMxZGNjM2NiNDgzMWM0Li4yNzkxY2U1YmQ0NGIxZiAxMDA2NDRcXG4tLS0gYS9tbS9rc20uY1xcbisrKyBiL21tL2tzbS5jXFxuQEAgLTMyODksMTcgKzMyODksMTcgQEAgdm9pZCBjb2xsZWN0X3Byb2NzX2tzbShjb25zdCBzdHJ1Y3QgZm9saW8gKmZvbGlvLCBjb25zdCBzdHJ1Y3QgcGFnZSAqcGFnZSxcXG4gXFx0XFx0cmN1X3JlYWRfbG9jaygpO1xcbiBcXHRcXHRmb3JfZWFjaF9wcm9jZXNzKHRzaykge1xcbiBcXHRcXHRcXHRzdHJ1Y3QgYW5vbl92bWFfY2hhaW4gKnZtYWM7XFxuLVxcdFxcdFxcdHVuc2lnbmVkIGxvbmcgYWRkcjtcXG4rXFx0XFx0XFx0Y29uc3QgdW5zaWduZWQgbG9uZyBhZGRyID0gcm1hcF9pdGVtLVxcdTAwM2VhZGRyZXNzIFxcdTAwMjYgUEFHRV9NQVNLO1xcbitcXHRcXHRcXHRjb25zdCB1bnNpZ25lZCBsb25nIGluZGV4ID0gcm1hcF9pdGVtLVxcdTAwM2VsaW5lYXJfcGFnZV9pbmRleDtcXG4gXFx0XFx0XFx0c3RydWN0IHRhc2tfc3RydWN0ICp0ID1cXG4gXFx0XFx0XFx0XFx0dGFza19lYXJseV9raWxsKHRzaywgZm9yY2VfZWFybHkpO1xcbiBcXHRcXHRcXHRpZiAoIXQpXFxuIFxcdFxcdFxcdFxcdGNvbnRpbnVlO1xcbi1cXHRcXHRcXHRhbm9uX3ZtYV9pbnRlcnZhbF90cmVlX2ZvcmVhY2godm1hYywgXFx1MDAyNmF2LVxcdTAwM2VyYl9yb290LCAwLFxcbi1cXHRcXHRcXHRcXHRcXHRcXHQgICAgICAgVUxPTkdfTUFYKVxcbitcXHRcXHRcXHRhbm9uX3ZtYV9pbnRlcnZhbF90cmVlX2ZvcmVhY2godm1hYywgXFx1MDAyNmF2LVxcdTAwM2VyYl9yb290LCBpbmRleCxcXG4rXFx0XFx0XFx0XFx0XFx0XFx0ICAgICAgIGluZGV4KVxcbiBcXHRcXHRcXHR7XFxuIFxcdFxcdFxcdFxcdHZtYSA9IHZtYWMtXFx1MDAzZXZtYTtcXG4gXFx0XFx0XFx0XFx0aWYgKHZtYS1cXHUwMDNldm1fbW0gPT0gdC1cXHUwMDNlbW0pIHtcXG4tXFx0XFx0XFx0XFx0XFx0YWRkciA9IHJtYXBfaXRlbS1cXHUwMDNlYWRkcmVzcyBcXHUwMDI2IFBBR0VfTUFTSztcXG4gXFx0XFx0XFx0XFx0XFx0YWRkX3RvX2tpbGxfa3NtKHQsIHBhZ2UsIHZtYSwgdG9fa2lsbCxcXG4gXFx0XFx0XFx0XFx0XFx0XFx0XFx0YWRkcik7XFxuIFxcdFxcdFxcdFxcdH1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDlUMDQ6MjY6MjAuNzM4NDE0Mjc2WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMTExOTMxMDgxNzEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiS1NNXCIsXG4gICAgXCJNRU1PUllfRkFJTFVSRVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImNvbGxlY3RfcHJvY3Nfa3NtXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGludGVydmFsIHRyZWUgc2VhcmNoIGJvdW5kcyBpbiBgY29sbGVjdF9wcm9jc19rc21gIGR1cmluZyBtZW1vcnkgZmFpbHVyZSBoYW5kbGluZyBmb3IgS1NNIHBhZ2VzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdGhhdCBhbHRlcnMgZXhlY3V0aW9uIGZsb3cuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXRcbiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSxcbiAgIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgNWI0MzdlZGIwM2NiMTMwMzk5NmNmYzFkMDNjYTJkMTNjZWM3OWU1ZlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUaHUgSnVsIDkgMDQ6MjY6MTggMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9tbS9rc20uYyBiL21tL2tzbS5jXG5pbmRleCBjMWRjYzNjYjQ4MzFjNC4uMjc5MWNlNWJkNDRiMWYgMTAwNjQ0XG4tLS0gYS9tbS9rc20uY1xuKysrIGIvbW0va3NtLmNcbkBAIC0zMjg5LDE3ICszMjg5LDE3IEBAIHZvaWQgY29sbGVjdF9wcm9jc19rc20oY29uc3Qgc3RydWN0IGZvbGlvICpmb2xpbywgY29uc3Qgc3RydWN0IHBhZ2UgKnBhZ2UsXG4gXHRcdHJjdV9yZWFkX2xvY2soKTtcbiBcdFx0Zm9yX2VhY2hfcHJvY2Vzcyh0c2spIHtcbiBcdFx0XHRzdHJ1Y3QgYW5vbl92bWFfY2hhaW4gKnZtYWM7XG4tXHRcdFx0dW5zaWduZWQgbG9uZyBhZGRyO1xuK1x0XHRcdGNvbnN0IHVuc2lnbmVkIGxvbmcgYWRkciA9IHJtYXBfaXRlbS1cdTAwM2VhZGRyZXNzIFx1MDAyNiBQQUdFX01BU0s7XG4rXHRcdFx0Y29uc3QgdW5zaWduZWQgbG9uZyBpbmRleCA9IHJtYXBfaXRlbS1cdTAwM2VsaW5lYXJfcGFnZV9pbmRleDtcbiBcdFx0XHRzdHJ1Y3QgdGFza19zdHJ1Y3QgKnQgPVxuIFx0XHRcdFx0dGFza19lYXJseV9raWxsKHRzaywgZm9yY2VfZWFybHkpO1xuIFx0XHRcdGlmICghdClcbiBcdFx0XHRcdGNvbnRpbnVlO1xuLVx0XHRcdGFub25fdm1hX2ludGVydmFsX3RyZWVfZm9yZWFjaCh2bWFjLCBcdTAwMjZhdi1cdTAwM2VyYl9yb290LCAwLFxuLVx0XHRcdFx0XHRcdCAgICAgICBVTE9OR19NQVgpXG4rXHRcdFx0YW5vbl92bWFfaW50ZXJ2YWxfdHJlZV9mb3JlYWNoKHZtYWMsIFx1MDAyNmF2LVx1MDAzZXJiX3Jvb3QsIGluZGV4LFxuK1x0XHRcdFx0XHRcdCAgICAgICBpbmRleClcbiBcdFx0XHR7XG4gXHRcdFx0XHR2bWEgPSB2bWFjLVx1MDAzZXZtYTtcbiBcdFx0XHRcdGlmICh2bWEtXHUwMDNldm1fbW0gPT0gdC1cdTAwM2VtbSkge1xuLVx0XHRcdFx0XHRhZGRyID0gcm1hcF9pdGVtLVx1MDAzZWFkZHJlc3MgXHUwMDI2IFBBR0VfTUFTSztcbiBcdFx0XHRcdFx0YWRkX3RvX2tpbGxfa3NtKHQsIHBhZ2UsIHZtYSwgdG9fa2lsbCxcbiBcdFx0XHRcdFx0XHRcdGFkZHIpO1xuIFx0XHRcdFx0fVxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDlUMDQ6MjY6MjAuNzM4NDE2MjU2WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTA4NDY2NDE1OTcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgS1NNIFBhdGNoKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBmb3IgYG1tL2tzbS5jYC4gSXQncyBhIHJlbGF0aXZlbHkgZm9jdXNlZCBjaGFuZ2U7IGl0IHNlZW1zIHRvIGJlIGFmZmVjdGluZyB0aGUgYGNvbGxlY3RfcHJvY3Nfa3NtYCBmdW5jdGlvbi4gVGhlIGtleSBoZXJlIGlzIHRoYXQgdGhleSd2ZSBhbHRlcmVkIHRoZSBhcmd1bWVudHMgcGFzc2VkIHRvIGBhbm9uX3ZtYV9pbnRlcnZhbF90cmVlX2ZvcmVhY2hgLiBJbml0aWFsbHksIGl0IHdhcyBpdGVyYXRpbmcgb3ZlciB0aGUgZW50aXJlIGFkZHJlc3Mgc3BhY2Ug4oCTIGZyb20gMCB0byBgVUxPTkdfTUFYYC4gTm93LCBpdCdzIG5hcnJvd2VkIGRvd24gdG8gdXNpbmcgYGluZGV4LCBpbmRleGAuIEkgY2FuIGltbWVkaWF0ZWx5IHNlZSB0aGF0IHRoaXMgaXMgYSBzaWduaWZpY2FudCBjaGFuZ2UsIGxpa2VseSBhaW1pbmcgZm9yIHByZWNpc2lvbi5cblxuSSBuZWVkIHRvIHVuZGVyc3RhbmQgKndoeSogdGhleSdyZSBkb2luZyB0aGlzLiBUaGUgY29udGV4dCBwcm92aWRlZCBpcyBjcnVjaWFsOiBgY29sbGVjdF9wcm9jc19rc21gIGlzIGludm9rZWQgZHVyaW5nIG1lbW9yeSBmYWlsdXJlIGhhbmRsaW5nLCBzcGVjaWZpY2FsbHkgd2hlbiBhIEtTTSBwYWdlIGV4cGVyaWVuY2VzIGFuIGVycm9yLiBUaGlzIGZ1bmN0aW9uJ3Mgam9iIGlzIHRvIGlkZW50aWZ5IHdoaWNoIHByb2Nlc3NlcyBhcmUgY3VycmVudGx5IG1hcHBpbmcgdGhhdCB0cm91YmxlZCBwYWdlLiBTbywgdGhpcyBhcmd1bWVudCBtb2RpZmljYXRpb24gaXMgYWltZWQgYXQgb25seSBsb29raW5nIGF0IG9uZSBzcGVjaWZpYyBpbmRleC5cblxuVGhlcmVmb3JlLCB0aGUgY2hhbmdlIGxpa2VseSBhaW1zIHRvIG9ubHkgY29uc2lkZXIgdGhlIHNwZWNpZmljIGFkZHJlc3Mgd2l0aGluIHRoZSBhbm9uX3ZtYSBpbnRlcnZhbCB0cmVlIGZvciB0aGUgS1NNIHBhZ2UgYmVpbmcgY2hlY2tlZCBhdCB0aGUgdGltZS4gSSB3aWxsIG5vdyBkcmlsbCBkb3duIGludG8gdGhlIGNvZGUgaXRzZWxmIHRvIGhhdmUgYSBtb3JlIGRldGFpbGVkIHZpZXcgb2YgdGhlIGNvZGUgYW5kIHRoZSBjb250ZXh0LlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMDAxLCJPdXRwdXRUb2tlbnMiOjIxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTU1LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDlUMDQ6MjY6MzEuNTg1MDU5NjEzWiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjMwNDQxOTM3MjQsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29sbGVjdF9wcm9jc19rc21cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiaW5jbHVkZS9saW51eC9rc20uaD05OD12b2lkIGZvbGlvX21pZ3JhdGVfa3NtKHN0cnVjdCBmb2xpbyAqbmV3Zm9saW8sIHN0cnVjdCBmb2xpbyAqZm9saW8pO1xcbmluY2x1ZGUvbGludXgva3NtLmg6OTk6dm9pZCBjb2xsZWN0X3Byb2NzX2tzbShjb25zdCBzdHJ1Y3QgZm9saW8gKmZvbGlvLCBjb25zdCBzdHJ1Y3QgcGFnZSAqcGFnZSxcXG5pbmNsdWRlL2xpbnV4L2tzbS5oLTEwMC1cXHRcXHRzdHJ1Y3QgbGlzdF9oZWFkICp0b19raWxsLCBpbnQgZm9yY2VfZWFybHkpO1xcbi0tXFxuaW5jbHVkZS9saW51eC9rc20uaD0xMzA9c3RhdGljIGlubGluZSB2b2lkIGtzbV9taWdodF91bm1hcF96ZXJvX3BhZ2Uoc3RydWN0IG1tX3N0cnVjdCAqbW0sIHB0ZV90IHB0ZSlcXG4tLVxcbmluY2x1ZGUvbGludXgva3NtLmgtMTMzLVxcbmluY2x1ZGUvbGludXgva3NtLmg6MTM0OnN0YXRpYyBpbmxpbmUgdm9pZCBjb2xsZWN0X3Byb2NzX2tzbShjb25zdCBzdHJ1Y3QgZm9saW8gKmZvbGlvLFxcbmluY2x1ZGUvbGludXgva3NtLmgtMTM1LVxcdFxcdGNvbnN0IHN0cnVjdCBwYWdlICpwYWdlLCBzdHJ1Y3QgbGlzdF9oZWFkICp0b19raWxsLFxcbi0tXFxubW0va3NtLmM9MzE5MD12b2lkIHJtYXBfd2Fsa19rc20oc3RydWN0IGZvbGlvICpmb2xpbywgc3RydWN0IHJtYXBfd2Fsa19jb250cm9sICpyd2MpXFxuLS1cXG5tbS9rc20uYy0zMjczLSAqL1xcbm1tL2tzbS5jOjMyNzQ6dm9pZCBjb2xsZWN0X3Byb2NzX2tzbShjb25zdCBzdHJ1Y3QgZm9saW8gKmZvbGlvLCBjb25zdCBzdHJ1Y3QgcGFnZSAqcGFnZSxcXG5tbS9rc20uYy0zMjc1LVxcdFxcdHN0cnVjdCBsaXN0X2hlYWQgKnRvX2tpbGwsIGludCBmb3JjZV9lYXJseSlcXG4tLVxcbm1tL21lbW9yeS1mYWlsdXJlLmM9NjY2PXN0YXRpYyB2b2lkIGNvbGxlY3RfcHJvY3MoY29uc3Qgc3RydWN0IGZvbGlvICpmb2xpbywgY29uc3Qgc3RydWN0IHBhZ2UgKnBhZ2UsXFxuLS1cXG5tbS9tZW1vcnktZmFpbHVyZS5jLTY3MS1cXHRpZiAodW5saWtlbHkoZm9saW9fdGVzdF9rc20oZm9saW8pKSlcXG5tbS9tZW1vcnktZmFpbHVyZS5jOjY3MjpcXHRcXHRjb2xsZWN0X3Byb2NzX2tzbShmb2xpbywgcGFnZSwgdG9raWxsLCBmb3JjZV9lYXJseSk7XFxubW0vbWVtb3J5LWZhaWx1cmUuYy02NzMtXFx0ZWxzZSBpZiAoZm9saW9fdGVzdF9hbm9uKGZvbGlvKSlcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDlUMDQ6MjY6MzQuNjI5MjU4Mjc3WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzY3NjIzNTM1NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLlxuXG4qKkRpdmluZyBpbnRvIHRoZSBNZW1vcnkgRmFpbHVyZSBIYW5kbGluZyBQYXRjaCoqXG5cbkFscmlnaHQsIHNvIHRoZSBjb3JlIG9mIHRoaXMgc2VlbXMgdG8gYmUgdGhlIGBjb2xsZWN0X3Byb2NzX2tzbWAgZnVuY3Rpb24uIEl0J3MgaGFuZ2luZyBvdXQgaW4gYGNvbGxlY3RfcHJvY3NgIHdpdGhpbiBgbW0vbWVtb3J5LWZhaWx1cmUuY2AuIFRoYXQncyB0aGUga2V5IGZpbGUgZm9yIG1lbW9yeSBmYWlsdXJlIG1hbmFnZW1lbnQsIHdoaWNoIGlzIGltcG9ydGFudCBnaXZlbiBob3cgY3J1Y2lhbCBtZW1vcnkgc3RhYmlsaXR5IGlzLlxuXG5Ob3csIG1lbW9yeSBmYWlsdXJlIGNhbiBzdGVtIGZyb20gaGFyZHdhcmUgZXJyb3JzLCB3aGljaCBtYWtlcyBzZW5zZS4gQnV0IGludGVyZXN0aW5nbHksIHRoZXJlIGFyZSBhbHNvIGRlbGliZXJhdGUgdHJpZ2dlcnM6IGBtYWR2aXNlKE1BRFZfSFdQT0lTT04pYCBhbmQgZGVidWdmcyBpbnRlcmZhY2VzLiBUaGF0J3MgZ29vZCB0byBrbm93LCBhbmQgc3VnZ2VzdHMgd2UgaGF2ZSBzb21lIGNvbnRyb2wgZm9yIHRlc3RpbmcgYW5kIGRlYnVnZ2luZy5cblxuVGhlIG5leHQgcXVlc3Rpb246IGRvZXMgdGhpcyBwYXRjaCBpbnRlcmFjdCB3aXRoIEtTTSBpbiBhIHdheSB0aGF0J3MgZGVwZW5kZW50IG9uIGEgc3BlY2lmaWMgY29uZmlndXJhdGlvbiwgb3IgaXMgaXQgZ29pbmcgdG8gYmUgZW5hYmxlZCBieSBkZWZhdWx0PyBJIG5lZWQgdG8gY2hlY2sgaG93IHRoZSBwYXRjaCBoYW5kbGVzIEtTTSdzIHByZXNlbmNlIHRvIHVuZGVyc3RhbmQgaXRzIG92ZXJhbGwgaW1wYWN0LiBUaGF0IHdpbGwgaW5mbHVlbmNlIGhvdyBJIGFwcHJvYWNoIHVuZGVyc3RhbmRpbmcgdGhlIGltcGxpY2F0aW9ucyBvZiB0aGUgY2hhbmdlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyOTA2LCJPdXRwdXRUb2tlbnMiOjE3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6ODIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDlUMDQ6MjY6MzguMzA1NDk1NjYxWiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIxMjc4MTgxNjgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIEtTTVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJtbS9LY29uZmlnPTczNj1jb25maWcgTU1VX05PVElGSUVSXFxuLS1cXG5tbS9LY29uZmlnLTczOS1cXG5tbS9LY29uZmlnOjc0MDpjb25maWcgS1NNXFxubW0vS2NvbmZpZy03NDEtXFx0Ym9vbCBcXFwiRW5hYmxlIEtTTSBmb3IgcGFnZSBtZXJnaW5nXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wOVQwNDoyNjo0MC40MzMzMTg4M1oiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI4ODM0NDY5NjU3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGFuIGV4cGVydCdzIGludGVybmFsIG1vbm9sb2d1ZTpcblxuKipDaGVja2luZyBDb25maWd1cmF0aW9uIERlcGVuZGVuY2llcyoqXG5cbkFscmlnaHQsIEtTTSDigJMgS2VybmVsIFNhbWVwYWdlIE1lcmdpbmcg4oCTIHRoYXQncyBhIGtub3duIGNvbmZpZ3VyYXRpb24gcGFyYW1ldGVyLiBJJ20gYWxyZWFkeSBtZW50YWxseSBmbGFnZ2VkIGZvciBpdHMgaW1wbGljYXRpb25zIG9uIG1lbW9yeSBtYW5hZ2VtZW50IGFuZCBwZXJmb3JtYW5jZS4gTm93LCBsZXQncyBqdXN0IG1ha2Ugc3VyZSBJIGhhdmUgbXkgYmFzZXMgY292ZXJlZC4gSSBuZWVkIHRvIHF1aWNrbHkgZGV0ZXJtaW5lIGlmIGBNRU1PUllfRkFJTFVSRWAgaXMgYWxzbyBhIGNvbXBpbGUtdGltZSBjb25maWd1cmF0aW9uIG9wdGlvbi4gSSBuZWVkIHRvIGtub3cgaWYgSSBjYW4gZW5hYmxlIHRoaXMgZmVhdHVyZSwgb3IgaWYgaXQncyBhbHJlYWR5IGVuYWJsZWQuIFRoaXMgaXMgY3J1Y2lhbCBmb3IgdW5kZXJzdGFuZGluZyBob3cgdGhlIHN5c3RlbSB3aWxsIHJlYWN0IHRvIG1lbW9yeSBhbm9tYWxpZXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMyOTAsIk91dHB1dFRva2VucyI6MTksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wOVQwNDoyNzowOS4yNjc3OTAyNjdaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzIxNDk1Mjk0MSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgTUVNT1JZX0ZBSUxVUkVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibW0vS2NvbmZpZz03NzQ9Y29uZmlnIEFSQ0hfU1VQUE9SVFNfTUVNT1JZX0ZBSUxVUkVcXG4tLVxcbm1tL0tjb25maWctNzc2LVxcbm1tL0tjb25maWc6Nzc3OmNvbmZpZyBNRU1PUllfRkFJTFVSRVxcbm1tL0tjb25maWctNzc4LVxcdGRlcGVuZHMgb24gTU1VXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA5VDA0OjI3OjEyLjQ4Mjc0NzM3OVoiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI3MzI2Mjc5NjcwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgYGNvbGxlY3RfcHJvY3Nfa3NtYCBGdW5jdGlvbioqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIGltbWVkaWF0ZWx5LCB0aGUgY29uZmlncyB0aGF0IGp1bXAgb3V0IGFyZSBgS1NNYCBhbmQgYE1FTU9SWV9GQUlMVVJFYC4gVGhlIGtleSBmdW5jdGlvbiBoZXJlIGlzIGBjb2xsZWN0X3Byb2NzX2tzbWAuIExldCdzIGNvbmZpcm0gdGhhdCBubyBvdGhlciByZWxhdGVkIGZ1bmN0aW9ucyBhcmUgbW9kaWZpZWQ7IGl0IHNlZW1zIHRoaXMgaXMgdGhlIHByaW1hcnkgZm9jdXMuXG5cbk5vdywgbGV0J3MgdGFrZSBhbm90aGVyIGxvb2sgYXQgdGhlIGNvZGUgaXRzZWxmLiBUaGUgY29yZSBvZiB0aGUgY2hhbmdlIGlzIGNsZWFybHkgd2l0aGluIHRoZSBsb29wLiBQcmV2aW91c2x5LCB0aGUgaW50ZXJ2YWwgdHJlZSBzZWFyY2ggdXNlZCBgWzAsIFVMT05HX01BWF1gIHdoaWNoIG1lYW5zIGl0IGl0ZXJhdGVkIHRocm91Z2ggdGhlIGVudGlyZSB0cmVlLiBOb3csIHRoZXkndmUgcmVzdHJpY3RlZCB0aGUgc2VhcmNoIHRvIGBbaW5kZXgsIGluZGV4XWAuIFRoZSBjaGFuZ2Ugbm93IHVzZXMgYHJtYXBfaXRlbS1cdTAwM2VsaW5lYXJfcGFnZV9pbmRleGAgZGlyZWN0bHkuXG5cblRoaXMgaXMgZGVmaW5pdGVseSBhIGZ1bmN0aW9uYWwgY2hhbmdlLiBUaGUgZXhlY3V0aW9uIGZsb3cgaXMgYmVpbmcgYWx0ZXJlZDsgdGhlIGxvb3Agd2lsbCBpdGVyYXRlIGZld2VyIHRpbWVzLiBUaGlzIGlzIGxpa2VseSBlaXRoZXIgYW4gb3B0aW1pemF0aW9uIHRvIHJlZHVjZSB1bm5lY2Vzc2FyeSBpdGVyYXRpb25zIG9yLCBwb3RlbnRpYWxseSwgYSBidWcgZml4IGJ5IGVuc3VyaW5nIGl0IG9ubHkgcHJvY2Vzc2VzIHRoZSByZWxldmFudCBub2RlLiBJIG5lZWQgdG8gZGlnIGRlZXBlciB0byBzZWUgd2h5IHRoaXMgY2hhbmdlIHdhcyBuZWNlc3NhcnkgYW5kIHdoYXQgcHJvYmxlbSBpdCdzIGFkZHJlc3NpbmcuXG5cblRvIGJlIHRob3JvdWdoLCBJJ2xsIHF1aWNrbHkgZG91YmxlLWNoZWNrIHRoYXQgdGhlcmUgYXJlbid0IGFueSBvdGhlciByZWxhdGVkIGNvbmZpZ3Mgb3IgbW9kaWZpZWQgZnVuY3Rpb25zIHRoYXQgSSdtIG92ZXJsb29raW5nLlxuXG5cbiIsIklucHV0VG9rZW5zIjozNTM0LCJPdXRwdXRUb2tlbnMiOjE5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDYzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA5VDA0OjI3OjM5LjgwOTAyOTMyOFoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzIxNzY5MjM4MiwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZGVwZW5kcyBvbi4qS1NNXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wOVQwNDoyNzo0My4wMjY3Mzc0OVoiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxNDM2MTU5MzY2NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0J3Mgc2VlLiBJIG5lZWQgdG8gZmlndXJlIG91dCBpZiBgTUVNT1JZX0ZBSUxVUkVgIGlzIGEgbmVjZXNzYXJ5IGNvbXBvbmVudCBoZXJlLiBSaWdodCwgSSByZW1lbWJlciB0aGF0IGBjb2xsZWN0X3Byb2NzX2tzbWAgaXMgY2FsbGVkIGZyb20gYGNvbGxlY3RfcHJvY3NgIHdpdGhpbiB0aGUgYG1tL21lbW9yeS1mYWlsdXJlLmNgIGZpbGUuIFdhaXQgYSBzZWNvbmQuLi4gaXQncyBjcnVjaWFsIHRvIGNvbmZpcm0gd2hldGhlciBgY29sbGVjdF9wcm9jc19rc21gIGlzICpjb25kaXRpb25hbGx5KiBjb21waWxlZC4gU3BlY2lmaWNhbGx5LCBJIG5lZWQgdG8gdmVyaWZ5IHRoYXQgaXQncyAqb25seSogY29tcGlsZWQgd2hlbiBgTUVNT1JZX0ZBSUxVUkVgIGlzLCBpbiBmYWN0LCBlbmFibGVkLiBUaGlzIGlzIGtleSB0byB1bmRlcnN0YW5kIGhvdyB0aGUgZnVuY3Rpb25zIHdvcmsgaW4gcmVsYXRpb24gdG8gYE1FTU9SWV9GQUlMVVJFYC4gSSdsbCBuZWVkIHRvIGNoZWNrIHRoZSBidWlsZCBjb25maWd1cmF0aW9ucyB0byBiZSBzdXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0MjkwLCJPdXRwdXRUb2tlbnMiOjMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NjYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDlUMDQ6Mjc6NTcuMzg4MzM0ODY1WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozMzY0NDg0NDYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29sbGVjdF9wcm9jc19rc21cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibW0va3NtLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibW0va3NtLmM9MzE5MD12b2lkIHJtYXBfd2Fsa19rc20oc3RydWN0IGZvbGlvICpmb2xpbywgc3RydWN0IHJtYXBfd2Fsa19jb250cm9sICpyd2MpXFxuLS1cXG5tbS9rc20uYy0zMjczLSAqL1xcbm1tL2tzbS5jOjMyNzQ6dm9pZCBjb2xsZWN0X3Byb2NzX2tzbShjb25zdCBzdHJ1Y3QgZm9saW8gKmZvbGlvLCBjb25zdCBzdHJ1Y3QgcGFnZSAqcGFnZSxcXG5tbS9rc20uYy0zMjc1LVxcdFxcdHN0cnVjdCBsaXN0X2hlYWQgKnRvX2tpbGwsIGludCBmb3JjZV9lYXJseSlcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDlUMDQ6Mjc6NTcuNzI0NzkxMDA5WiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjk0MTM1NTQ0NzgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gSGVyZSdzIGhvdyBJJ2QgYXBwcm9hY2ggdGhpcyB0YXNrLCBhcyBpZiB0aGVzZSB3ZXJlIG15IGludGVybmFsIHRob3VnaHRzOlxuXG4qKkNoZWNraW5nIENvbmRpdGlvbmFsIENvbXBpbGF0aW9uIGluIEtlcm5lbCBDb2RlKipcblxuUmlnaHQsIHNvIEknbSBsb29raW5nIGF0IGBjb2xsZWN0X3Byb2NzX2tzbWAuIFRoZSBmaXJzdCB0aGluZyBJJ20gZ29pbmcgdG8gZG8gaXMgZGV0ZXJtaW5lIGlmIGl0J3MgY29uZGl0aW9uYWxseSBjb21waWxlZC4gR2l2ZW4gbXkgZmFtaWxpYXJpdHkgd2l0aCBrZXJuZWwgY29kZSwgSSBpbW1lZGlhdGVseSBzdXNwZWN0IGl0J3MgcHJvdGVjdGVkIGJ5IGFuIGAjaWZkZWZgIHByZXByb2Nlc3NvciBkaXJlY3RpdmUuIEl0J3MgYSBjb21tb24gcHJhY3RpY2UgdG8gc2VsZWN0aXZlbHkgZW5hYmxlIG9yIGRpc2FibGUgZmVhdHVyZXMgYmFzZWQgb24ga2VybmVsIGNvbmZpZ3VyYXRpb24gb3B0aW9ucy5cblxuU3BlY2lmaWNhbGx5LCB0aGUgY29udGV4dCBvZiBtZW1vcnkgbWFuYWdlbWVudCBvZnRlbiBpbnZvbHZlcyBjb25kaXRpb25hbCBjb21waWxhdGlvbiBhcm91bmQgbWVtb3J5IGZhaWx1cmUgaGFuZGxpbmcuIFRoZXJlZm9yZSwgSSBzdXNwZWN0IGBjb2xsZWN0X3Byb2NzX2tzbWAgKm1pZ2h0KiBiZSBjb25kaXRpb25hbGx5IGNvbXBpbGVkIHVuZGVyIGAjaWZkZWYgQ09ORklHX01FTU9SWV9GQUlMVVJFYC4gVGhpcyB3b3VsZCBiZSB0aGUgbmF0dXJhbCBzcG90IHRvIGNoZWNrIGZpcnN0LiBJdCdzIHRoZSBtb3N0IGxpa2VseSBjb25maWd1cmF0aW9uIG9wdGlvbiB0byBiZSByZWxldmFudCBoZXJlLiBMZXQncyBzdGFydCB0aGVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NDY2MiwiT3V0cHV0VG9rZW5zIjozMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA5VDA0OjI4OjA3LjEzODM0NzMwOFoiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTY0ODU2OTc4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIkNPTkZJR19NRU1PUllfRkFJTFVSRVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJtbS9rc20uY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJtbS9rc20uYz0zMTkwPXZvaWQgcm1hcF93YWxrX2tzbShzdHJ1Y3QgZm9saW8gKmZvbGlvLCBzdHJ1Y3Qgcm1hcF93YWxrX2NvbnRyb2wgKnJ3YylcXG4tLVxcbm1tL2tzbS5jLTMyNjktXFxubW0va3NtLmM6MzI3MDojaWZkZWYgQ09ORklHX01FTU9SWV9GQUlMVVJFXFxubW0va3NtLmMtMzI3MS0vKlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wOVQwNDoyODowNy4zMDMyMDkwOTZaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDU0OTYyODA1MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFBvdGVudGlhbCBmb3IgRnV6emluZyoqXG5cbk9rYXksIGhlcmUncyB3aGF0IEkndmUgZ290LiBUaGUgY29kZSBjaGFuZ2UgaXMgZGVmaW5pdGVseSB3aXRoaW4gdGhlIGAjaWZkZWYgQ09ORklHX01FTU9SWV9GQUlMVVJFYCBibG9jayDigJMgdGhhdCdzIG91ciBmaXJzdCBjbHVlLiBTbywgbG9va2luZyBhdCB0aGUgY29uZmlndXJhdGlvbnMsIGl0IGhpbmdlcyBvbiBgS1NNYCBhbmQsIG9mIGNvdXJzZSwgYE1FTU9SWV9GQUlMVVJFYC4gVGhlIHJlYWwgdGFyZ2V0IGhlcmUgaXMgYGNvbGxlY3RfcHJvY3Nfa3NtYC4gSSdtIGZvY3VzaW5nIG9uIHRoYXQgZnVuY3Rpb24gYmVjYXVzZSB0aGUgY2hhbmdlIHNwZWNpZmljYWxseSB0d2Vha3MgdGhlIGJvdW5kcyB1c2VkIGluIHRoZSBpbnRlcnZhbCB0cmVlIHNlYXJjaCAqd2l0aGluKiBgY29sbGVjdF9wcm9jc19rc21gLiBBbmQgd2h5IGlzIHRoYXQgcmVsZXZhbnQ/IEJlY2F1c2UgdGhpcyB3aG9sZSBzZWN0aW9uIGlzIGFib3V0IG1lbW9yeSBmYWlsdXJlIGhhbmRsaW5nIGZvciBLU00gcGFnZXMuXG5cblB1dHRpbmcgaXQgYWxsIHRvZ2V0aGVyLCBJJ20gZ29pbmcgdG8gZmxhZyB0aGlzIGFzIHdvcnRoIGZ1enppbmcuIFRoZSBrZXkgY29uZmlndXJhdGlvbnMgYXJlIGBLU01gIGFuZCBgTUVNT1JZX0ZBSUxVUkVgLiBUaGUgcHJpbWFyeSBmb2N1cywgbmF0dXJhbGx5LCBpcyBgY29sbGVjdF9wcm9jc19rc21gLiBNeSByZWFzb25pbmcgaXMgc3RyYWlnaHRmb3J3YXJkOiB0aGlzIGlzIGEgKmZ1bmN0aW9uYWwqIG1vZGlmaWNhdGlvbi4gVGhlIHBhdGNoIGRpcmVjdGx5IGltcGFjdHMgaG93IGBjb2xsZWN0X3Byb2NzX2tzbWAgYmVoYXZlcyBkdXJpbmcgbWVtb3J5IGZhaWx1cmUgc2NlbmFyaW9zIGZvciBLU00gcGFnZXMuIEl04oCZcyBjaGFuZ2luZyB0aGUgZXhlY3V0aW9uIGZsb3cgYnkgYWx0ZXJpbmcgdGhlIGludGVydmFsIHRyZWUgc2VhcmNoLiBUaGlzIHNlZW1zIGxpa2UgYSBqdWljeSB0YXJnZXQgZm9yIGZ1enppbmcgdG8gcmV2ZWFsIHVuZXhwZWN0ZWQgaW50ZXJhY3Rpb25zIG9yIGVkZ2UgY2FzZXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjUwMDUsIk91dHB1dFRva2VucyI6ODcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNTksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDlUMDQ6Mjg6MTEuODUyODM4OTQ3WiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Nzg2Nzk3NzksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIktTTVwiLFxuICAgIFwiTUVNT1JZX0ZBSUxVUkVcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJjb2xsZWN0X3Byb2NzX2tzbVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBpbnRlcnZhbCB0cmVlIHNlYXJjaCBib3VuZHMgaW4gYGNvbGxlY3RfcHJvY3Nfa3NtYCBkdXJpbmcgbWVtb3J5IGZhaWx1cmUgaGFuZGxpbmcgZm9yIEtTTSBwYWdlcy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRoYXQgYWx0ZXJzIGV4ZWN1dGlvbiBmbG93LlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIktTTVwiLFxuICAgIFwiTUVNT1JZX0ZBSUxVUkVcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJjb2xsZWN0X3Byb2NzX2tzbVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBpbnRlcnZhbCB0cmVlIHNlYXJjaCBib3VuZHMgaW4gYGNvbGxlY3RfcHJvY3Nfa3NtYCBkdXJpbmcgbWVtb3J5IGZhaWx1cmUgaGFuZGxpbmcgZm9yIEtTTSBwYWdlcy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRoYXQgYWx0ZXJzIGV4ZWN1dGlvbiBmbG93LlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+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-workflowrhldw[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-09 03:48:32 +0000 UTC FinishedAt: 2026-07-09 04:28:13 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "mm-new", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git", "commit_hash": "302dfbff3e73be2ba5723237c6303244ec27cebb", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "KSM", "MEMORY_FAILURE" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "mm-new", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git", "commit_hash": "302dfbff3e73be2ba5723237c6303244ec27cebb", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "KSM", "MEMORY_FAILURE" ], "series_id": "9a66ec5f-7075-4ce5-a394-0a0b389fae5a" }, "track": "KASAN", "fuzz": { "focus": null, "focus_symbols": [ "collect_procs_ksm" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db" ], "skip_cover_check": true, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA5IDA0OjI2PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0tTTSYjMzQ7LAogICAgJiMzNDtNRU1PUllfRkFJTFVSRSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2NvbGxlY3RfcHJvY3Nfa3NtJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBpbnRlcnZhbCB0cmVlIHNlYXJjaCBib3VuZHMgaW4gYGNvbGxlY3RfcHJvY3Nfa3NtYCBkdXJpbmcgbWVtb3J5IGZhaWx1cmUgaGFuZGxpbmcgZm9yIEtTTSBwYWdlcy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRoYXQgYWx0ZXJzIGV4ZWN1dGlvbiBmbG93LiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA5IDA0OjI2PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgNWI0MzdlZGIwM2NiMTMwMzk5NmNmYzFkMDNjYTJkMTNjZWM3OWU1ZlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUaHUgSnVsIDkgMDQ6MjY6MTggMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbW0va3NtLmMgYi9tbS9rc20uY1xuaW5kZXggYzFkY2MzY2I0ODMxYzQuLjI3OTFjZTViZDQ0YjFmIDEwMDY0NFxuLS0tIGEvbW0va3NtLmNcbiYjNDM7JiM0MzsmIzQzOyBiL21tL2tzbS5jXG5AQCAtMzI4OSwxNyAmIzQzOzMyODksMTcgQEAgdm9pZCBjb2xsZWN0X3Byb2NzX2tzbShjb25zdCBzdHJ1Y3QgZm9saW8gKmZvbGlvLCBjb25zdCBzdHJ1Y3QgcGFnZSAqcGFnZSxcbiBcdFx0cmN1X3JlYWRfbG9jaygpO1xuIFx0XHRmb3JfZWFjaF9wcm9jZXNzKHRzaykge1xuIFx0XHRcdHN0cnVjdCBhbm9uX3ZtYV9jaGFpbiAqdm1hYztcbi1cdFx0XHR1bnNpZ25lZCBsb25nIGFkZHI7XG4mIzQzO1x0XHRcdGNvbnN0IHVuc2lnbmVkIGxvbmcgYWRkciA9IHJtYXBfaXRlbS1cdTAwM2VhZGRyZXNzIFx1MDAyNiBQQUdFX01BU0s7XG4mIzQzO1x0XHRcdGNvbnN0IHVuc2lnbmVkIGxvbmcgaW5kZXggPSBybWFwX2l0ZW0tXHUwMDNlbGluZWFyX3BhZ2VfaW5kZXg7XG4gXHRcdFx0c3RydWN0IHRhc2tfc3RydWN0ICp0ID1cbiBcdFx0XHRcdHRhc2tfZWFybHlfa2lsbCh0c2ssIGZvcmNlX2Vhcmx5KTtcbiBcdFx0XHRpZiAoIXQpXG4gXHRcdFx0XHRjb250aW51ZTtcbi1cdFx0XHRhbm9uX3ZtYV9pbnRlcnZhbF90cmVlX2ZvcmVhY2godm1hYywgXHUwMDI2YXYtXHUwMDNlcmJfcm9vdCwgMCxcbi1cdFx0XHRcdFx0XHQgICAgICAgVUxPTkdfTUFYKVxuJiM0MztcdFx0XHRhbm9uX3ZtYV9pbnRlcnZhbF90cmVlX2ZvcmVhY2godm1hYywgXHUwMDI2YXYtXHUwMDNlcmJfcm9vdCwgaW5kZXgsXG4mIzQzO1x0XHRcdFx0XHRcdCAgICAgICBpbmRleClcbiBcdFx0XHR7XG4gXHRcdFx0XHR2bWEgPSB2bWFjLVx1MDAzZXZtYTtcbiBcdFx0XHRcdGlmICh2bWEtXHUwMDNldm1fbW0gPT0gdC1cdTAwM2VtbSkge1xuLVx0XHRcdFx0XHRhZGRyID0gcm1hcF9pdGVtLVx1MDAzZWFkZHJlc3MgXHUwMDI2IFBBR0VfTUFTSztcbiBcdFx0XHRcdFx0YWRkX3RvX2tpbGxfa3NtKHQsIHBhZ2UsIHZtYSwgdG9fa2lsbCxcbiBcdFx0XHRcdFx0XHRcdGFkZHIpO1xuIFx0XHRcdFx0fVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA5IDA0OjI2PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjFtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0tTTSYjMzQ7LAogICAgJiMzNDtNRU1PUllfRkFJTFVSRSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2NvbGxlY3RfcHJvY3Nfa3NtJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBpbnRlcnZhbCB0cmVlIHNlYXJjaCBib3VuZHMgaW4gYGNvbGxlY3RfcHJvY3Nfa3NtYCBkdXJpbmcgbWVtb3J5IGZhaWx1cmUgaGFuZGxpbmcgZm9yIEtTTSBwYWdlcy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRoYXQgYWx0ZXJzIGV4ZWN1dGlvbiBmbG93LiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdAogICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksCiAgIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCA1YjQzN2VkYjAzY2IxMzAzOTk2Y2ZjMWQwM2NhMmQxM2NlYzc5ZTVmCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFRodSBKdWwgOSAwNDoyNjoxOCAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL21tL2tzbS5jIGIvbW0va3NtLmMKaW5kZXggYzFkY2MzY2I0ODMxYzQuLjI3OTFjZTViZDQ0YjFmIDEwMDY0NAotLS0gYS9tbS9rc20uYwomIzQzOyYjNDM7JiM0MzsgYi9tbS9rc20uYwpAQCAtMzI4OSwxNyAmIzQzOzMyODksMTcgQEAgdm9pZCBjb2xsZWN0X3Byb2NzX2tzbShjb25zdCBzdHJ1Y3QgZm9saW8gKmZvbGlvLCBjb25zdCBzdHJ1Y3QgcGFnZSAqcGFnZSwKIAkJcmN1X3JlYWRfbG9jaygpOwogCQlmb3JfZWFjaF9wcm9jZXNzKHRzaykgewogCQkJc3RydWN0IGFub25fdm1hX2NoYWluICp2bWFjOwotCQkJdW5zaWduZWQgbG9uZyBhZGRyOwomIzQzOwkJCWNvbnN0IHVuc2lnbmVkIGxvbmcgYWRkciA9IHJtYXBfaXRlbS0mZ3Q7YWRkcmVzcyAmYW1wOyBQQUdFX01BU0s7CiYjNDM7CQkJY29uc3QgdW5zaWduZWQgbG9uZyBpbmRleCA9IHJtYXBfaXRlbS0mZ3Q7bGluZWFyX3BhZ2VfaW5kZXg7CiAJCQlzdHJ1Y3QgdGFza19zdHJ1Y3QgKnQgPQogCQkJCXRhc2tfZWFybHlfa2lsbCh0c2ssIGZvcmNlX2Vhcmx5KTsKIAkJCWlmICghdCkKIAkJCQljb250aW51ZTsKLQkJCWFub25fdm1hX2ludGVydmFsX3RyZWVfZm9yZWFjaCh2bWFjLCAmYW1wO2F2LSZndDtyYl9yb290LCAwLAotCQkJCQkJICAgICAgIFVMT05HX01BWCkKJiM0MzsJCQlhbm9uX3ZtYV9pbnRlcnZhbF90cmVlX2ZvcmVhY2godm1hYywgJmFtcDthdi0mZ3Q7cmJfcm9vdCwgaW5kZXgsCiYjNDM7CQkJCQkJICAgICAgIGluZGV4KQogCQkJewogCQkJCXZtYSA9IHZtYWMtJmd0O3ZtYTsKIAkJCQlpZiAodm1hLSZndDt2bV9tbSA9PSB0LSZndDttbSkgewotCQkJCQlhZGRyID0gcm1hcF9pdGVtLSZndDthZGRyZXNzICZhbXA7IFBBR0VfTUFTSzsKIAkJCQkJYWRkX3RvX2tpbGxfa3NtKHQsIHBhZ2UsIHZtYSwgdG9fa2lsbCwKIAkJCQkJCQlhZGRyKTsKIAkJCQl9CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA5IDA0OjI2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIwMDEKCQkJCQkJCW91dHB1dDogMjEKCQkJCQkJCXRob3VnaHRzOiAxNTUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgS1NNIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGZvciBgbW0va3NtLmNgLiBJdCYjMzk7cyBhIHJlbGF0aXZlbHkgZm9jdXNlZCBjaGFuZ2U7IGl0IHNlZW1zIHRvIGJlIGFmZmVjdGluZyB0aGUgYGNvbGxlY3RfcHJvY3Nfa3NtYCBmdW5jdGlvbi4gVGhlIGtleSBoZXJlIGlzIHRoYXQgdGhleSYjMzk7dmUgYWx0ZXJlZCB0aGUgYXJndW1lbnRzIHBhc3NlZCB0byBgYW5vbl92bWFfaW50ZXJ2YWxfdHJlZV9mb3JlYWNoYC4gSW5pdGlhbGx5LCBpdCB3YXMgaXRlcmF0aW5nIG92ZXIgdGhlIGVudGlyZSBhZGRyZXNzIHNwYWNlIOKAkyBmcm9tIDAgdG8gYFVMT05HX01BWGAuIE5vdywgaXQmIzM5O3MgbmFycm93ZWQgZG93biB0byB1c2luZyBgaW5kZXgsIGluZGV4YC4gSSBjYW4gaW1tZWRpYXRlbHkgc2VlIHRoYXQgdGhpcyBpcyBhIHNpZ25pZmljYW50IGNoYW5nZSwgbGlrZWx5IGFpbWluZyBmb3IgcHJlY2lzaW9uLgoKSSBuZWVkIHRvIHVuZGVyc3RhbmQgKndoeSogdGhleSYjMzk7cmUgZG9pbmcgdGhpcy4gVGhlIGNvbnRleHQgcHJvdmlkZWQgaXMgY3J1Y2lhbDogYGNvbGxlY3RfcHJvY3Nfa3NtYCBpcyBpbnZva2VkIGR1cmluZyBtZW1vcnkgZmFpbHVyZSBoYW5kbGluZywgc3BlY2lmaWNhbGx5IHdoZW4gYSBLU00gcGFnZSBleHBlcmllbmNlcyBhbiBlcnJvci4gVGhpcyBmdW5jdGlvbiYjMzk7cyBqb2IgaXMgdG8gaWRlbnRpZnkgd2hpY2ggcHJvY2Vzc2VzIGFyZSBjdXJyZW50bHkgbWFwcGluZyB0aGF0IHRyb3VibGVkIHBhZ2UuIFNvLCB0aGlzIGFyZ3VtZW50IG1vZGlmaWNhdGlvbiBpcyBhaW1lZCBhdCBvbmx5IGxvb2tpbmcgYXQgb25lIHNwZWNpZmljIGluZGV4LgoKVGhlcmVmb3JlLCB0aGUgY2hhbmdlIGxpa2VseSBhaW1zIHRvIG9ubHkgY29uc2lkZXIgdGhlIHNwZWNpZmljIGFkZHJlc3Mgd2l0aGluIHRoZSBhbm9uX3ZtYSBpbnRlcnZhbCB0cmVlIGZvciB0aGUgS1NNIHBhZ2UgYmVpbmcgY2hlY2tlZCBhdCB0aGUgdGltZS4gSSB3aWxsIG5vdyBkcmlsbCBkb3duIGludG8gdGhlIGNvZGUgaXRzZWxmIHRvIGhhdmUgYSBtb3JlIGRldGFpbGVkIHZpZXcgb2YgdGhlIGNvZGUgYW5kIHRoZSBjb250ZXh0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA5IDA0OjI2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbGxlY3RfcHJvY3Nfa3NtJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2luY2x1ZGUvbGludXgva3NtLmg9OTg9dm9pZCBmb2xpb19taWdyYXRlX2tzbShzdHJ1Y3QgZm9saW8gKm5ld2ZvbGlvLCBzdHJ1Y3QgZm9saW8gKmZvbGlvKTtcbmluY2x1ZGUvbGludXgva3NtLmg6OTk6dm9pZCBjb2xsZWN0X3Byb2NzX2tzbShjb25zdCBzdHJ1Y3QgZm9saW8gKmZvbGlvLCBjb25zdCBzdHJ1Y3QgcGFnZSAqcGFnZSxcbmluY2x1ZGUvbGludXgva3NtLmgtMTAwLVx0XHRzdHJ1Y3QgbGlzdF9oZWFkICp0b19raWxsLCBpbnQgZm9yY2VfZWFybHkpO1xuLS1cbmluY2x1ZGUvbGludXgva3NtLmg9MTMwPXN0YXRpYyBpbmxpbmUgdm9pZCBrc21fbWlnaHRfdW5tYXBfemVyb19wYWdlKHN0cnVjdCBtbV9zdHJ1Y3QgKm1tLCBwdGVfdCBwdGUpXG4tLVxuaW5jbHVkZS9saW51eC9rc20uaC0xMzMtXG5pbmNsdWRlL2xpbnV4L2tzbS5oOjEzNDpzdGF0aWMgaW5saW5lIHZvaWQgY29sbGVjdF9wcm9jc19rc20oY29uc3Qgc3RydWN0IGZvbGlvICpmb2xpbyxcbmluY2x1ZGUvbGludXgva3NtLmgtMTM1LVx0XHRjb25zdCBzdHJ1Y3QgcGFnZSAqcGFnZSwgc3RydWN0IGxpc3RfaGVhZCAqdG9fa2lsbCxcbi0tXG5tbS9rc20uYz0zMTkwPXZvaWQgcm1hcF93YWxrX2tzbShzdHJ1Y3QgZm9saW8gKmZvbGlvLCBzdHJ1Y3Qgcm1hcF93YWxrX2NvbnRyb2wgKnJ3Yylcbi0tXG5tbS9rc20uYy0zMjczLSAqL1xubW0va3NtLmM6MzI3NDp2b2lkIGNvbGxlY3RfcHJvY3Nfa3NtKGNvbnN0IHN0cnVjdCBmb2xpbyAqZm9saW8sIGNvbnN0IHN0cnVjdCBwYWdlICpwYWdlLFxubW0va3NtLmMtMzI3NS1cdFx0c3RydWN0IGxpc3RfaGVhZCAqdG9fa2lsbCwgaW50IGZvcmNlX2Vhcmx5KVxuLS1cbm1tL21lbW9yeS1mYWlsdXJlLmM9NjY2PXN0YXRpYyB2b2lkIGNvbGxlY3RfcHJvY3MoY29uc3Qgc3RydWN0IGZvbGlvICpmb2xpbywgY29uc3Qgc3RydWN0IHBhZ2UgKnBhZ2UsXG4tLVxubW0vbWVtb3J5LWZhaWx1cmUuYy02NzEtXHRpZiAodW5saWtlbHkoZm9saW9fdGVzdF9rc20oZm9saW8pKSlcbm1tL21lbW9yeS1mYWlsdXJlLmM6NjcyOlx0XHRjb2xsZWN0X3Byb2NzX2tzbShmb2xpbywgcGFnZSwgdG9raWxsLCBmb3JjZV9lYXJseSk7XG5tbS9tZW1vcnktZmFpbHVyZS5jLTY3My1cdGVsc2UgaWYgKGZvbGlvX3Rlc3RfYW5vbihmb2xpbykpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDkgMDQ6MjY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjkwNgoJCQkJCQkJb3V0cHV0OiAxNwoJCQkJCQkJdGhvdWdodHM6IDgyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLgoKKipEaXZpbmcgaW50byB0aGUgTWVtb3J5IEZhaWx1cmUgSGFuZGxpbmcgUGF0Y2gqKgoKQWxyaWdodCwgc28gdGhlIGNvcmUgb2YgdGhpcyBzZWVtcyB0byBiZSB0aGUgYGNvbGxlY3RfcHJvY3Nfa3NtYCBmdW5jdGlvbi4gSXQmIzM5O3MgaGFuZ2luZyBvdXQgaW4gYGNvbGxlY3RfcHJvY3NgIHdpdGhpbiBgbW0vbWVtb3J5LWZhaWx1cmUuY2AuIFRoYXQmIzM5O3MgdGhlIGtleSBmaWxlIGZvciBtZW1vcnkgZmFpbHVyZSBtYW5hZ2VtZW50LCB3aGljaCBpcyBpbXBvcnRhbnQgZ2l2ZW4gaG93IGNydWNpYWwgbWVtb3J5IHN0YWJpbGl0eSBpcy4KCk5vdywgbWVtb3J5IGZhaWx1cmUgY2FuIHN0ZW0gZnJvbSBoYXJkd2FyZSBlcnJvcnMsIHdoaWNoIG1ha2VzIHNlbnNlLiBCdXQgaW50ZXJlc3RpbmdseSwgdGhlcmUgYXJlIGFsc28gZGVsaWJlcmF0ZSB0cmlnZ2VyczogYG1hZHZpc2UoTUFEVl9IV1BPSVNPTilgIGFuZCBkZWJ1Z2ZzIGludGVyZmFjZXMuIFRoYXQmIzM5O3MgZ29vZCB0byBrbm93LCBhbmQgc3VnZ2VzdHMgd2UgaGF2ZSBzb21lIGNvbnRyb2wgZm9yIHRlc3RpbmcgYW5kIGRlYnVnZ2luZy4KClRoZSBuZXh0IHF1ZXN0aW9uOiBkb2VzIHRoaXMgcGF0Y2ggaW50ZXJhY3Qgd2l0aCBLU00gaW4gYSB3YXkgdGhhdCYjMzk7cyBkZXBlbmRlbnQgb24gYSBzcGVjaWZpYyBjb25maWd1cmF0aW9uLCBvciBpcyBpdCBnb2luZyB0byBiZSBlbmFibGVkIGJ5IGRlZmF1bHQ/IEkgbmVlZCB0byBjaGVjayBob3cgdGhlIHBhdGNoIGhhbmRsZXMgS1NNJiMzOTtzIHByZXNlbmNlIHRvIHVuZGVyc3RhbmQgaXRzIG92ZXJhbGwgaW1wYWN0LiBUaGF0IHdpbGwgaW5mbHVlbmNlIGhvdyBJIGFwcHJvYWNoIHVuZGVyc3RhbmRpbmcgdGhlIGltcGxpY2F0aW9ucyBvZiB0aGUgY2hhbmdlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA5IDA0OjI2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBLU00mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bW0vS2NvbmZpZz03MzY9Y29uZmlnIE1NVV9OT1RJRklFUlxuLS1cbm1tL0tjb25maWctNzM5LVxubW0vS2NvbmZpZzo3NDA6Y29uZmlnIEtTTVxubW0vS2NvbmZpZy03NDEtXHRib29sIFwmIzM0O0VuYWJsZSBLU00gZm9yIHBhZ2UgbWVyZ2luZ1wmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA5IDA0OjI2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMyOTAKCQkJCQkJCW91dHB1dDogMTkKCQkJCQkJCXRob3VnaHRzOiAyMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0JiMzOTtzIGludGVybmFsIG1vbm9sb2d1ZToKCioqQ2hlY2tpbmcgQ29uZmlndXJhdGlvbiBEZXBlbmRlbmNpZXMqKgoKQWxyaWdodCwgS1NNIOKAkyBLZXJuZWwgU2FtZXBhZ2UgTWVyZ2luZyDigJMgdGhhdCYjMzk7cyBhIGtub3duIGNvbmZpZ3VyYXRpb24gcGFyYW1ldGVyLiBJJiMzOTttIGFscmVhZHkgbWVudGFsbHkgZmxhZ2dlZCBmb3IgaXRzIGltcGxpY2F0aW9ucyBvbiBtZW1vcnkgbWFuYWdlbWVudCBhbmQgcGVyZm9ybWFuY2UuIE5vdywgbGV0JiMzOTtzIGp1c3QgbWFrZSBzdXJlIEkgaGF2ZSBteSBiYXNlcyBjb3ZlcmVkLiBJIG5lZWQgdG8gcXVpY2tseSBkZXRlcm1pbmUgaWYgYE1FTU9SWV9GQUlMVVJFYCBpcyBhbHNvIGEgY29tcGlsZS10aW1lIGNvbmZpZ3VyYXRpb24gb3B0aW9uLiBJIG5lZWQgdG8ga25vdyBpZiBJIGNhbiBlbmFibGUgdGhpcyBmZWF0dXJlLCBvciBpZiBpdCYjMzk7cyBhbHJlYWR5IGVuYWJsZWQuIFRoaXMgaXMgY3J1Y2lhbCBmb3IgdW5kZXJzdGFuZGluZyBob3cgdGhlIHN5c3RlbSB3aWxsIHJlYWN0IHRvIG1lbW9yeSBhbm9tYWxpZXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDkgMDQ6Mjc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIE1FTU9SWV9GQUlMVVJFJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O21tL0tjb25maWc9Nzc0PWNvbmZpZyBBUkNIX1NVUFBPUlRTX01FTU9SWV9GQUlMVVJFXG4tLVxubW0vS2NvbmZpZy03NzYtXG5tbS9LY29uZmlnOjc3Nzpjb25maWcgTUVNT1JZX0ZBSUxVUkVcbm1tL0tjb25maWctNzc4LVx0ZGVwZW5kcyBvbiBNTVVcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wOSAwNDoyNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNTM0CgkJCQkJCQlvdXRwdXQ6IDE5CgkJCQkJCQl0aG91Z2h0czogNDYzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgYGNvbGxlY3RfcHJvY3Nfa3NtYCBGdW5jdGlvbioqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgaW1tZWRpYXRlbHksIHRoZSBjb25maWdzIHRoYXQganVtcCBvdXQgYXJlIGBLU01gIGFuZCBgTUVNT1JZX0ZBSUxVUkVgLiBUaGUga2V5IGZ1bmN0aW9uIGhlcmUgaXMgYGNvbGxlY3RfcHJvY3Nfa3NtYC4gTGV0JiMzOTtzIGNvbmZpcm0gdGhhdCBubyBvdGhlciByZWxhdGVkIGZ1bmN0aW9ucyBhcmUgbW9kaWZpZWQ7IGl0IHNlZW1zIHRoaXMgaXMgdGhlIHByaW1hcnkgZm9jdXMuCgpOb3csIGxldCYjMzk7cyB0YWtlIGFub3RoZXIgbG9vayBhdCB0aGUgY29kZSBpdHNlbGYuIFRoZSBjb3JlIG9mIHRoZSBjaGFuZ2UgaXMgY2xlYXJseSB3aXRoaW4gdGhlIGxvb3AuIFByZXZpb3VzbHksIHRoZSBpbnRlcnZhbCB0cmVlIHNlYXJjaCB1c2VkIGBbMCwgVUxPTkdfTUFYXWAgd2hpY2ggbWVhbnMgaXQgaXRlcmF0ZWQgdGhyb3VnaCB0aGUgZW50aXJlIHRyZWUuIE5vdywgdGhleSYjMzk7dmUgcmVzdHJpY3RlZCB0aGUgc2VhcmNoIHRvIGBbaW5kZXgsIGluZGV4XWAuIFRoZSBjaGFuZ2Ugbm93IHVzZXMgYHJtYXBfaXRlbS0mZ3Q7bGluZWFyX3BhZ2VfaW5kZXhgIGRpcmVjdGx5LgoKVGhpcyBpcyBkZWZpbml0ZWx5IGEgZnVuY3Rpb25hbCBjaGFuZ2UuIFRoZSBleGVjdXRpb24gZmxvdyBpcyBiZWluZyBhbHRlcmVkOyB0aGUgbG9vcCB3aWxsIGl0ZXJhdGUgZmV3ZXIgdGltZXMuIFRoaXMgaXMgbGlrZWx5IGVpdGhlciBhbiBvcHRpbWl6YXRpb24gdG8gcmVkdWNlIHVubmVjZXNzYXJ5IGl0ZXJhdGlvbnMgb3IsIHBvdGVudGlhbGx5LCBhIGJ1ZyBmaXggYnkgZW5zdXJpbmcgaXQgb25seSBwcm9jZXNzZXMgdGhlIHJlbGV2YW50IG5vZGUuIEkgbmVlZCB0byBkaWcgZGVlcGVyIHRvIHNlZSB3aHkgdGhpcyBjaGFuZ2Ugd2FzIG5lY2Vzc2FyeSBhbmQgd2hhdCBwcm9ibGVtIGl0JiMzOTtzIGFkZHJlc3NpbmcuCgpUbyBiZSB0aG9yb3VnaCwgSSYjMzk7bGwgcXVpY2tseSBkb3VibGUtY2hlY2sgdGhhdCB0aGVyZSBhcmVuJiMzOTt0IGFueSBvdGhlciByZWxhdGVkIGNvbmZpZ3Mgb3IgbW9kaWZpZWQgZnVuY3Rpb25zIHRoYXQgSSYjMzk7bSBvdmVybG9va2luZy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDkgMDQ6Mjc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtkZXBlbmRzIG9uLipLU00mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wOSAwNDoyNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0MjkwCgkJCQkJCQlvdXRwdXQ6IDMzCgkJCQkJCQl0aG91Z2h0czogNjYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCYjMzk7cyBzZWUuIEkgbmVlZCB0byBmaWd1cmUgb3V0IGlmIGBNRU1PUllfRkFJTFVSRWAgaXMgYSBuZWNlc3NhcnkgY29tcG9uZW50IGhlcmUuIFJpZ2h0LCBJIHJlbWVtYmVyIHRoYXQgYGNvbGxlY3RfcHJvY3Nfa3NtYCBpcyBjYWxsZWQgZnJvbSBgY29sbGVjdF9wcm9jc2Agd2l0aGluIHRoZSBgbW0vbWVtb3J5LWZhaWx1cmUuY2AgZmlsZS4gV2FpdCBhIHNlY29uZC4uLiBpdCYjMzk7cyBjcnVjaWFsIHRvIGNvbmZpcm0gd2hldGhlciBgY29sbGVjdF9wcm9jc19rc21gIGlzICpjb25kaXRpb25hbGx5KiBjb21waWxlZC4gU3BlY2lmaWNhbGx5LCBJIG5lZWQgdG8gdmVyaWZ5IHRoYXQgaXQmIzM5O3MgKm9ubHkqIGNvbXBpbGVkIHdoZW4gYE1FTU9SWV9GQUlMVVJFYCBpcywgaW4gZmFjdCwgZW5hYmxlZC4gVGhpcyBpcyBrZXkgdG8gdW5kZXJzdGFuZCBob3cgdGhlIGZ1bmN0aW9ucyB3b3JrIGluIHJlbGF0aW9uIHRvIGBNRU1PUllfRkFJTFVSRWAuIEkmIzM5O2xsIG5lZWQgdG8gY2hlY2sgdGhlIGJ1aWxkIGNvbmZpZ3VyYXRpb25zIHRvIGJlIHN1cmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA5IDA0OjI3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbGxlY3RfcHJvY3Nfa3NtJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bW0va3NtLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bW0va3NtLmM9MzE5MD12b2lkIHJtYXBfd2Fsa19rc20oc3RydWN0IGZvbGlvICpmb2xpbywgc3RydWN0IHJtYXBfd2Fsa19jb250cm9sICpyd2MpXG4tLVxubW0va3NtLmMtMzI3My0gKi9cbm1tL2tzbS5jOjMyNzQ6dm9pZCBjb2xsZWN0X3Byb2NzX2tzbShjb25zdCBzdHJ1Y3QgZm9saW8gKmZvbGlvLCBjb25zdCBzdHJ1Y3QgcGFnZSAqcGFnZSxcbm1tL2tzbS5jLTMyNzUtXHRcdHN0cnVjdCBsaXN0X2hlYWQgKnRvX2tpbGwsIGludCBmb3JjZV9lYXJseSlcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDkgMDQ6Mjc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDY2MgoJCQkJCQkJb3V0cHV0OiAzMQoJCQkJCQkJdGhvdWdodHM6IDI1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBIZXJlJiMzOTtzIGhvdyBJJiMzOTtkIGFwcHJvYWNoIHRoaXMgdGFzaywgYXMgaWYgdGhlc2Ugd2VyZSBteSBpbnRlcm5hbCB0aG91Z2h0czoKCioqQ2hlY2tpbmcgQ29uZGl0aW9uYWwgQ29tcGlsYXRpb24gaW4gS2VybmVsIENvZGUqKgoKUmlnaHQsIHNvIEkmIzM5O20gbG9va2luZyBhdCBgY29sbGVjdF9wcm9jc19rc21gLiBUaGUgZmlyc3QgdGhpbmcgSSYjMzk7bSBnb2luZyB0byBkbyBpcyBkZXRlcm1pbmUgaWYgaXQmIzM5O3MgY29uZGl0aW9uYWxseSBjb21waWxlZC4gR2l2ZW4gbXkgZmFtaWxpYXJpdHkgd2l0aCBrZXJuZWwgY29kZSwgSSBpbW1lZGlhdGVseSBzdXNwZWN0IGl0JiMzOTtzIHByb3RlY3RlZCBieSBhbiBgI2lmZGVmYCBwcmVwcm9jZXNzb3IgZGlyZWN0aXZlLiBJdCYjMzk7cyBhIGNvbW1vbiBwcmFjdGljZSB0byBzZWxlY3RpdmVseSBlbmFibGUgb3IgZGlzYWJsZSBmZWF0dXJlcyBiYXNlZCBvbiBrZXJuZWwgY29uZmlndXJhdGlvbiBvcHRpb25zLgoKU3BlY2lmaWNhbGx5LCB0aGUgY29udGV4dCBvZiBtZW1vcnkgbWFuYWdlbWVudCBvZnRlbiBpbnZvbHZlcyBjb25kaXRpb25hbCBjb21waWxhdGlvbiBhcm91bmQgbWVtb3J5IGZhaWx1cmUgaGFuZGxpbmcuIFRoZXJlZm9yZSwgSSBzdXNwZWN0IGBjb2xsZWN0X3Byb2NzX2tzbWAgKm1pZ2h0KiBiZSBjb25kaXRpb25hbGx5IGNvbXBpbGVkIHVuZGVyIGAjaWZkZWYgQ09ORklHX01FTU9SWV9GQUlMVVJFYC4gVGhpcyB3b3VsZCBiZSB0aGUgbmF0dXJhbCBzcG90IHRvIGNoZWNrIGZpcnN0LiBJdCYjMzk7cyB0aGUgbW9zdCBsaWtlbHkgY29uZmlndXJhdGlvbiBvcHRpb24gdG8gYmUgcmVsZXZhbnQgaGVyZS4gTGV0JiMzOTtzIHN0YXJ0IHRoZXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wOSAwNDoyODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtDT05GSUdfTUVNT1JZX0ZBSUxVUkUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDttbS9rc20uYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDttbS9rc20uYz0zMTkwPXZvaWQgcm1hcF93YWxrX2tzbShzdHJ1Y3QgZm9saW8gKmZvbGlvLCBzdHJ1Y3Qgcm1hcF93YWxrX2NvbnRyb2wgKnJ3Yylcbi0tXG5tbS9rc20uYy0zMjY5LVxubW0va3NtLmM6MzI3MDojaWZkZWYgQ09ORklHX01FTU9SWV9GQUlMVVJFXG5tbS9rc20uYy0zMjcxLS8qXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA5IDA0OjI4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDUwMDUKCQkJCQkJCW91dHB1dDogODcKCQkJCQkJCXRob3VnaHRzOiAxNTkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBQb3RlbnRpYWwgZm9yIEZ1enppbmcqKgoKT2theSwgaGVyZSYjMzk7cyB3aGF0IEkmIzM5O3ZlIGdvdC4gVGhlIGNvZGUgY2hhbmdlIGlzIGRlZmluaXRlbHkgd2l0aGluIHRoZSBgI2lmZGVmIENPTkZJR19NRU1PUllfRkFJTFVSRWAgYmxvY2sg4oCTIHRoYXQmIzM5O3Mgb3VyIGZpcnN0IGNsdWUuIFNvLCBsb29raW5nIGF0IHRoZSBjb25maWd1cmF0aW9ucywgaXQgaGluZ2VzIG9uIGBLU01gIGFuZCwgb2YgY291cnNlLCBgTUVNT1JZX0ZBSUxVUkVgLiBUaGUgcmVhbCB0YXJnZXQgaGVyZSBpcyBgY29sbGVjdF9wcm9jc19rc21gLiBJJiMzOTttIGZvY3VzaW5nIG9uIHRoYXQgZnVuY3Rpb24gYmVjYXVzZSB0aGUgY2hhbmdlIHNwZWNpZmljYWxseSB0d2Vha3MgdGhlIGJvdW5kcyB1c2VkIGluIHRoZSBpbnRlcnZhbCB0cmVlIHNlYXJjaCAqd2l0aGluKiBgY29sbGVjdF9wcm9jc19rc21gLiBBbmQgd2h5IGlzIHRoYXQgcmVsZXZhbnQ/IEJlY2F1c2UgdGhpcyB3aG9sZSBzZWN0aW9uIGlzIGFib3V0IG1lbW9yeSBmYWlsdXJlIGhhbmRsaW5nIGZvciBLU00gcGFnZXMuCgpQdXR0aW5nIGl0IGFsbCB0b2dldGhlciwgSSYjMzk7bSBnb2luZyB0byBmbGFnIHRoaXMgYXMgd29ydGggZnV6emluZy4gVGhlIGtleSBjb25maWd1cmF0aW9ucyBhcmUgYEtTTWAgYW5kIGBNRU1PUllfRkFJTFVSRWAuIFRoZSBwcmltYXJ5IGZvY3VzLCBuYXR1cmFsbHksIGlzIGBjb2xsZWN0X3Byb2NzX2tzbWAuIE15IHJlYXNvbmluZyBpcyBzdHJhaWdodGZvcndhcmQ6IHRoaXMgaXMgYSAqZnVuY3Rpb25hbCogbW9kaWZpY2F0aW9uLiBUaGUgcGF0Y2ggZGlyZWN0bHkgaW1wYWN0cyBob3cgYGNvbGxlY3RfcHJvY3Nfa3NtYCBiZWhhdmVzIGR1cmluZyBtZW1vcnkgZmFpbHVyZSBzY2VuYXJpb3MgZm9yIEtTTSBwYWdlcy4gSXTigJlzIGNoYW5naW5nIHRoZSBleGVjdXRpb24gZmxvdyBieSBhbHRlcmluZyB0aGUgaW50ZXJ2YWwgdHJlZSBzZWFyY2guIFRoaXMgc2VlbXMgbGlrZSBhIGp1aWN5IHRhcmdldCBmb3IgZnV6emluZyB0byByZXZlYWwgdW5leHBlY3RlZCBpbnRlcmFjdGlvbnMgb3IgZWRnZSBjYXNlcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDkgMDQ6Mjg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0tTTSYjMzQ7LAogICAgJiMzNDtNRU1PUllfRkFJTFVSRSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2NvbGxlY3RfcHJvY3Nfa3NtJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBpbnRlcnZhbCB0cmVlIHNlYXJjaCBib3VuZHMgaW4gYGNvbGxlY3RfcHJvY3Nfa3NtYCBkdXJpbmcgbWVtb3J5IGZhaWx1cmUgaGFuZGxpbmcgZm9yIEtTTSBwYWdlcy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRoYXQgYWx0ZXJzIGV4ZWN1dGlvbiBmbG93LiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtLU00mIzM0OywKICAgICYjMzQ7TUVNT1JZX0ZBSUxVUkUmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtjb2xsZWN0X3Byb2NzX2tzbSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgaW50ZXJ2YWwgdHJlZSBzZWFyY2ggYm91bmRzIGluIGBjb2xsZWN0X3Byb2NzX2tzbWAgZHVyaW5nIG1lbW9yeSBmYWlsdXJlIGhhbmRsaW5nIGZvciBLU00gcGFnZXMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0aGF0IGFsdGVycyBleGVjdXRpb24gZmxvdy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA5VDA0OjI2OjIwLjI2MDc0OTE5M1oiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjExMTY3MDc4MjkxMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJLU01cIixcbiAgICBcIk1FTU9SWV9GQUlMVVJFXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiY29sbGVjdF9wcm9jc19rc21cIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgaW50ZXJ2YWwgdHJlZSBzZWFyY2ggYm91bmRzIGluIGBjb2xsZWN0X3Byb2NzX2tzbWAgZHVyaW5nIG1lbW9yeSBmYWlsdXJlIGhhbmRsaW5nIGZvciBLU00gcGFnZXMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0aGF0IGFsdGVycyBleGVjdXRpb24gZmxvdy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDlUMDQ6MjY6MjAuMjYwNzU0NzAzWiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NzY4NTM4MTMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCA1YjQzN2VkYjAzY2IxMzAzOTk2Y2ZjMWQwM2NhMmQxM2NlYzc5ZTVmXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBUaHUgSnVsIDkgMDQ6MjY6MTggMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvbW0va3NtLmMgYi9tbS9rc20uY1xcbmluZGV4IGMxZGNjM2NiNDgzMWM0Li4yNzkxY2U1YmQ0NGIxZiAxMDA2NDRcXG4tLS0gYS9tbS9rc20uY1xcbisrKyBiL21tL2tzbS5jXFxuQEAgLTMyODksMTcgKzMyODksMTcgQEAgdm9pZCBjb2xsZWN0X3Byb2NzX2tzbShjb25zdCBzdHJ1Y3QgZm9saW8gKmZvbGlvLCBjb25zdCBzdHJ1Y3QgcGFnZSAqcGFnZSxcXG4gXFx0XFx0cmN1X3JlYWRfbG9jaygpO1xcbiBcXHRcXHRmb3JfZWFjaF9wcm9jZXNzKHRzaykge1xcbiBcXHRcXHRcXHRzdHJ1Y3QgYW5vbl92bWFfY2hhaW4gKnZtYWM7XFxuLVxcdFxcdFxcdHVuc2lnbmVkIGxvbmcgYWRkcjtcXG4rXFx0XFx0XFx0Y29uc3QgdW5zaWduZWQgbG9uZyBhZGRyID0gcm1hcF9pdGVtLVxcdTAwM2VhZGRyZXNzIFxcdTAwMjYgUEFHRV9NQVNLO1xcbitcXHRcXHRcXHRjb25zdCB1bnNpZ25lZCBsb25nIGluZGV4ID0gcm1hcF9pdGVtLVxcdTAwM2VsaW5lYXJfcGFnZV9pbmRleDtcXG4gXFx0XFx0XFx0c3RydWN0IHRhc2tfc3RydWN0ICp0ID1cXG4gXFx0XFx0XFx0XFx0dGFza19lYXJseV9raWxsKHRzaywgZm9yY2VfZWFybHkpO1xcbiBcXHRcXHRcXHRpZiAoIXQpXFxuIFxcdFxcdFxcdFxcdGNvbnRpbnVlO1xcbi1cXHRcXHRcXHRhbm9uX3ZtYV9pbnRlcnZhbF90cmVlX2ZvcmVhY2godm1hYywgXFx1MDAyNmF2LVxcdTAwM2VyYl9yb290LCAwLFxcbi1cXHRcXHRcXHRcXHRcXHRcXHQgICAgICAgVUxPTkdfTUFYKVxcbitcXHRcXHRcXHRhbm9uX3ZtYV9pbnRlcnZhbF90cmVlX2ZvcmVhY2godm1hYywgXFx1MDAyNmF2LVxcdTAwM2VyYl9yb290LCBpbmRleCxcXG4rXFx0XFx0XFx0XFx0XFx0XFx0ICAgICAgIGluZGV4KVxcbiBcXHRcXHRcXHR7XFxuIFxcdFxcdFxcdFxcdHZtYSA9IHZtYWMtXFx1MDAzZXZtYTtcXG4gXFx0XFx0XFx0XFx0aWYgKHZtYS1cXHUwMDNldm1fbW0gPT0gdC1cXHUwMDNlbW0pIHtcXG4tXFx0XFx0XFx0XFx0XFx0YWRkciA9IHJtYXBfaXRlbS1cXHUwMDNlYWRkcmVzcyBcXHUwMDI2IFBBR0VfTUFTSztcXG4gXFx0XFx0XFx0XFx0XFx0YWRkX3RvX2tpbGxfa3NtKHQsIHBhZ2UsIHZtYSwgdG9fa2lsbCxcXG4gXFx0XFx0XFx0XFx0XFx0XFx0XFx0YWRkcik7XFxuIFxcdFxcdFxcdFxcdH1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDlUMDQ6MjY6MjAuNzM4NDE0Mjc2WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMTExOTMxMDgxNzEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiS1NNXCIsXG4gICAgXCJNRU1PUllfRkFJTFVSRVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImNvbGxlY3RfcHJvY3Nfa3NtXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGludGVydmFsIHRyZWUgc2VhcmNoIGJvdW5kcyBpbiBgY29sbGVjdF9wcm9jc19rc21gIGR1cmluZyBtZW1vcnkgZmFpbHVyZSBoYW5kbGluZyBmb3IgS1NNIHBhZ2VzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdGhhdCBhbHRlcnMgZXhlY3V0aW9uIGZsb3cuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXRcbiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSxcbiAgIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgNWI0MzdlZGIwM2NiMTMwMzk5NmNmYzFkMDNjYTJkMTNjZWM3OWU1ZlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUaHUgSnVsIDkgMDQ6MjY6MTggMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9tbS9rc20uYyBiL21tL2tzbS5jXG5pbmRleCBjMWRjYzNjYjQ4MzFjNC4uMjc5MWNlNWJkNDRiMWYgMTAwNjQ0XG4tLS0gYS9tbS9rc20uY1xuKysrIGIvbW0va3NtLmNcbkBAIC0zMjg5LDE3ICszMjg5LDE3IEBAIHZvaWQgY29sbGVjdF9wcm9jc19rc20oY29uc3Qgc3RydWN0IGZvbGlvICpmb2xpbywgY29uc3Qgc3RydWN0IHBhZ2UgKnBhZ2UsXG4gXHRcdHJjdV9yZWFkX2xvY2soKTtcbiBcdFx0Zm9yX2VhY2hfcHJvY2Vzcyh0c2spIHtcbiBcdFx0XHRzdHJ1Y3QgYW5vbl92bWFfY2hhaW4gKnZtYWM7XG4tXHRcdFx0dW5zaWduZWQgbG9uZyBhZGRyO1xuK1x0XHRcdGNvbnN0IHVuc2lnbmVkIGxvbmcgYWRkciA9IHJtYXBfaXRlbS1cdTAwM2VhZGRyZXNzIFx1MDAyNiBQQUdFX01BU0s7XG4rXHRcdFx0Y29uc3QgdW5zaWduZWQgbG9uZyBpbmRleCA9IHJtYXBfaXRlbS1cdTAwM2VsaW5lYXJfcGFnZV9pbmRleDtcbiBcdFx0XHRzdHJ1Y3QgdGFza19zdHJ1Y3QgKnQgPVxuIFx0XHRcdFx0dGFza19lYXJseV9raWxsKHRzaywgZm9yY2VfZWFybHkpO1xuIFx0XHRcdGlmICghdClcbiBcdFx0XHRcdGNvbnRpbnVlO1xuLVx0XHRcdGFub25fdm1hX2ludGVydmFsX3RyZWVfZm9yZWFjaCh2bWFjLCBcdTAwMjZhdi1cdTAwM2VyYl9yb290LCAwLFxuLVx0XHRcdFx0XHRcdCAgICAgICBVTE9OR19NQVgpXG4rXHRcdFx0YW5vbl92bWFfaW50ZXJ2YWxfdHJlZV9mb3JlYWNoKHZtYWMsIFx1MDAyNmF2LVx1MDAzZXJiX3Jvb3QsIGluZGV4LFxuK1x0XHRcdFx0XHRcdCAgICAgICBpbmRleClcbiBcdFx0XHR7XG4gXHRcdFx0XHR2bWEgPSB2bWFjLVx1MDAzZXZtYTtcbiBcdFx0XHRcdGlmICh2bWEtXHUwMDNldm1fbW0gPT0gdC1cdTAwM2VtbSkge1xuLVx0XHRcdFx0XHRhZGRyID0gcm1hcF9pdGVtLVx1MDAzZWFkZHJlc3MgXHUwMDI2IFBBR0VfTUFTSztcbiBcdFx0XHRcdFx0YWRkX3RvX2tpbGxfa3NtKHQsIHBhZ2UsIHZtYSwgdG9fa2lsbCxcbiBcdFx0XHRcdFx0XHRcdGFkZHIpO1xuIFx0XHRcdFx0fVxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDlUMDQ6MjY6MjAuNzM4NDE2MjU2WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTA4NDY2NDE1OTcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgS1NNIFBhdGNoKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBmb3IgYG1tL2tzbS5jYC4gSXQncyBhIHJlbGF0aXZlbHkgZm9jdXNlZCBjaGFuZ2U7IGl0IHNlZW1zIHRvIGJlIGFmZmVjdGluZyB0aGUgYGNvbGxlY3RfcHJvY3Nfa3NtYCBmdW5jdGlvbi4gVGhlIGtleSBoZXJlIGlzIHRoYXQgdGhleSd2ZSBhbHRlcmVkIHRoZSBhcmd1bWVudHMgcGFzc2VkIHRvIGBhbm9uX3ZtYV9pbnRlcnZhbF90cmVlX2ZvcmVhY2hgLiBJbml0aWFsbHksIGl0IHdhcyBpdGVyYXRpbmcgb3ZlciB0aGUgZW50aXJlIGFkZHJlc3Mgc3BhY2Ug4oCTIGZyb20gMCB0byBgVUxPTkdfTUFYYC4gTm93LCBpdCdzIG5hcnJvd2VkIGRvd24gdG8gdXNpbmcgYGluZGV4LCBpbmRleGAuIEkgY2FuIGltbWVkaWF0ZWx5IHNlZSB0aGF0IHRoaXMgaXMgYSBzaWduaWZpY2FudCBjaGFuZ2UsIGxpa2VseSBhaW1pbmcgZm9yIHByZWNpc2lvbi5cblxuSSBuZWVkIHRvIHVuZGVyc3RhbmQgKndoeSogdGhleSdyZSBkb2luZyB0aGlzLiBUaGUgY29udGV4dCBwcm92aWRlZCBpcyBjcnVjaWFsOiBgY29sbGVjdF9wcm9jc19rc21gIGlzIGludm9rZWQgZHVyaW5nIG1lbW9yeSBmYWlsdXJlIGhhbmRsaW5nLCBzcGVjaWZpY2FsbHkgd2hlbiBhIEtTTSBwYWdlIGV4cGVyaWVuY2VzIGFuIGVycm9yLiBUaGlzIGZ1bmN0aW9uJ3Mgam9iIGlzIHRvIGlkZW50aWZ5IHdoaWNoIHByb2Nlc3NlcyBhcmUgY3VycmVudGx5IG1hcHBpbmcgdGhhdCB0cm91YmxlZCBwYWdlLiBTbywgdGhpcyBhcmd1bWVudCBtb2RpZmljYXRpb24gaXMgYWltZWQgYXQgb25seSBsb29raW5nIGF0IG9uZSBzcGVjaWZpYyBpbmRleC5cblxuVGhlcmVmb3JlLCB0aGUgY2hhbmdlIGxpa2VseSBhaW1zIHRvIG9ubHkgY29uc2lkZXIgdGhlIHNwZWNpZmljIGFkZHJlc3Mgd2l0aGluIHRoZSBhbm9uX3ZtYSBpbnRlcnZhbCB0cmVlIGZvciB0aGUgS1NNIHBhZ2UgYmVpbmcgY2hlY2tlZCBhdCB0aGUgdGltZS4gSSB3aWxsIG5vdyBkcmlsbCBkb3duIGludG8gdGhlIGNvZGUgaXRzZWxmIHRvIGhhdmUgYSBtb3JlIGRldGFpbGVkIHZpZXcgb2YgdGhlIGNvZGUgYW5kIHRoZSBjb250ZXh0LlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMDAxLCJPdXRwdXRUb2tlbnMiOjIxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTU1LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDlUMDQ6MjY6MzEuNTg1MDU5NjEzWiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjMwNDQxOTM3MjQsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29sbGVjdF9wcm9jc19rc21cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiaW5jbHVkZS9saW51eC9rc20uaD05OD12b2lkIGZvbGlvX21pZ3JhdGVfa3NtKHN0cnVjdCBmb2xpbyAqbmV3Zm9saW8sIHN0cnVjdCBmb2xpbyAqZm9saW8pO1xcbmluY2x1ZGUvbGludXgva3NtLmg6OTk6dm9pZCBjb2xsZWN0X3Byb2NzX2tzbShjb25zdCBzdHJ1Y3QgZm9saW8gKmZvbGlvLCBjb25zdCBzdHJ1Y3QgcGFnZSAqcGFnZSxcXG5pbmNsdWRlL2xpbnV4L2tzbS5oLTEwMC1cXHRcXHRzdHJ1Y3QgbGlzdF9oZWFkICp0b19raWxsLCBpbnQgZm9yY2VfZWFybHkpO1xcbi0tXFxuaW5jbHVkZS9saW51eC9rc20uaD0xMzA9c3RhdGljIGlubGluZSB2b2lkIGtzbV9taWdodF91bm1hcF96ZXJvX3BhZ2Uoc3RydWN0IG1tX3N0cnVjdCAqbW0sIHB0ZV90IHB0ZSlcXG4tLVxcbmluY2x1ZGUvbGludXgva3NtLmgtMTMzLVxcbmluY2x1ZGUvbGludXgva3NtLmg6MTM0OnN0YXRpYyBpbmxpbmUgdm9pZCBjb2xsZWN0X3Byb2NzX2tzbShjb25zdCBzdHJ1Y3QgZm9saW8gKmZvbGlvLFxcbmluY2x1ZGUvbGludXgva3NtLmgtMTM1LVxcdFxcdGNvbnN0IHN0cnVjdCBwYWdlICpwYWdlLCBzdHJ1Y3QgbGlzdF9oZWFkICp0b19raWxsLFxcbi0tXFxubW0va3NtLmM9MzE5MD12b2lkIHJtYXBfd2Fsa19rc20oc3RydWN0IGZvbGlvICpmb2xpbywgc3RydWN0IHJtYXBfd2Fsa19jb250cm9sICpyd2MpXFxuLS1cXG5tbS9rc20uYy0zMjczLSAqL1xcbm1tL2tzbS5jOjMyNzQ6dm9pZCBjb2xsZWN0X3Byb2NzX2tzbShjb25zdCBzdHJ1Y3QgZm9saW8gKmZvbGlvLCBjb25zdCBzdHJ1Y3QgcGFnZSAqcGFnZSxcXG5tbS9rc20uYy0zMjc1LVxcdFxcdHN0cnVjdCBsaXN0X2hlYWQgKnRvX2tpbGwsIGludCBmb3JjZV9lYXJseSlcXG4tLVxcbm1tL21lbW9yeS1mYWlsdXJlLmM9NjY2PXN0YXRpYyB2b2lkIGNvbGxlY3RfcHJvY3MoY29uc3Qgc3RydWN0IGZvbGlvICpmb2xpbywgY29uc3Qgc3RydWN0IHBhZ2UgKnBhZ2UsXFxuLS1cXG5tbS9tZW1vcnktZmFpbHVyZS5jLTY3MS1cXHRpZiAodW5saWtlbHkoZm9saW9fdGVzdF9rc20oZm9saW8pKSlcXG5tbS9tZW1vcnktZmFpbHVyZS5jOjY3MjpcXHRcXHRjb2xsZWN0X3Byb2NzX2tzbShmb2xpbywgcGFnZSwgdG9raWxsLCBmb3JjZV9lYXJseSk7XFxubW0vbWVtb3J5LWZhaWx1cmUuYy02NzMtXFx0ZWxzZSBpZiAoZm9saW9fdGVzdF9hbm9uKGZvbGlvKSlcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDlUMDQ6MjY6MzQuNjI5MjU4Mjc3WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzY3NjIzNTM1NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLlxuXG4qKkRpdmluZyBpbnRvIHRoZSBNZW1vcnkgRmFpbHVyZSBIYW5kbGluZyBQYXRjaCoqXG5cbkFscmlnaHQsIHNvIHRoZSBjb3JlIG9mIHRoaXMgc2VlbXMgdG8gYmUgdGhlIGBjb2xsZWN0X3Byb2NzX2tzbWAgZnVuY3Rpb24uIEl0J3MgaGFuZ2luZyBvdXQgaW4gYGNvbGxlY3RfcHJvY3NgIHdpdGhpbiBgbW0vbWVtb3J5LWZhaWx1cmUuY2AuIFRoYXQncyB0aGUga2V5IGZpbGUgZm9yIG1lbW9yeSBmYWlsdXJlIG1hbmFnZW1lbnQsIHdoaWNoIGlzIGltcG9ydGFudCBnaXZlbiBob3cgY3J1Y2lhbCBtZW1vcnkgc3RhYmlsaXR5IGlzLlxuXG5Ob3csIG1lbW9yeSBmYWlsdXJlIGNhbiBzdGVtIGZyb20gaGFyZHdhcmUgZXJyb3JzLCB3aGljaCBtYWtlcyBzZW5zZS4gQnV0IGludGVyZXN0aW5nbHksIHRoZXJlIGFyZSBhbHNvIGRlbGliZXJhdGUgdHJpZ2dlcnM6IGBtYWR2aXNlKE1BRFZfSFdQT0lTT04pYCBhbmQgZGVidWdmcyBpbnRlcmZhY2VzLiBUaGF0J3MgZ29vZCB0byBrbm93LCBhbmQgc3VnZ2VzdHMgd2UgaGF2ZSBzb21lIGNvbnRyb2wgZm9yIHRlc3RpbmcgYW5kIGRlYnVnZ2luZy5cblxuVGhlIG5leHQgcXVlc3Rpb246IGRvZXMgdGhpcyBwYXRjaCBpbnRlcmFjdCB3aXRoIEtTTSBpbiBhIHdheSB0aGF0J3MgZGVwZW5kZW50IG9uIGEgc3BlY2lmaWMgY29uZmlndXJhdGlvbiwgb3IgaXMgaXQgZ29pbmcgdG8gYmUgZW5hYmxlZCBieSBkZWZhdWx0PyBJIG5lZWQgdG8gY2hlY2sgaG93IHRoZSBwYXRjaCBoYW5kbGVzIEtTTSdzIHByZXNlbmNlIHRvIHVuZGVyc3RhbmQgaXRzIG92ZXJhbGwgaW1wYWN0LiBUaGF0IHdpbGwgaW5mbHVlbmNlIGhvdyBJIGFwcHJvYWNoIHVuZGVyc3RhbmRpbmcgdGhlIGltcGxpY2F0aW9ucyBvZiB0aGUgY2hhbmdlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyOTA2LCJPdXRwdXRUb2tlbnMiOjE3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6ODIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDlUMDQ6MjY6MzguMzA1NDk1NjYxWiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIxMjc4MTgxNjgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIEtTTVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJtbS9LY29uZmlnPTczNj1jb25maWcgTU1VX05PVElGSUVSXFxuLS1cXG5tbS9LY29uZmlnLTczOS1cXG5tbS9LY29uZmlnOjc0MDpjb25maWcgS1NNXFxubW0vS2NvbmZpZy03NDEtXFx0Ym9vbCBcXFwiRW5hYmxlIEtTTSBmb3IgcGFnZSBtZXJnaW5nXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wOVQwNDoyNjo0MC40MzMzMTg4M1oiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI4ODM0NDY5NjU3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGFuIGV4cGVydCdzIGludGVybmFsIG1vbm9sb2d1ZTpcblxuKipDaGVja2luZyBDb25maWd1cmF0aW9uIERlcGVuZGVuY2llcyoqXG5cbkFscmlnaHQsIEtTTSDigJMgS2VybmVsIFNhbWVwYWdlIE1lcmdpbmcg4oCTIHRoYXQncyBhIGtub3duIGNvbmZpZ3VyYXRpb24gcGFyYW1ldGVyLiBJJ20gYWxyZWFkeSBtZW50YWxseSBmbGFnZ2VkIGZvciBpdHMgaW1wbGljYXRpb25zIG9uIG1lbW9yeSBtYW5hZ2VtZW50IGFuZCBwZXJmb3JtYW5jZS4gTm93LCBsZXQncyBqdXN0IG1ha2Ugc3VyZSBJIGhhdmUgbXkgYmFzZXMgY292ZXJlZC4gSSBuZWVkIHRvIHF1aWNrbHkgZGV0ZXJtaW5lIGlmIGBNRU1PUllfRkFJTFVSRWAgaXMgYWxzbyBhIGNvbXBpbGUtdGltZSBjb25maWd1cmF0aW9uIG9wdGlvbi4gSSBuZWVkIHRvIGtub3cgaWYgSSBjYW4gZW5hYmxlIHRoaXMgZmVhdHVyZSwgb3IgaWYgaXQncyBhbHJlYWR5IGVuYWJsZWQuIFRoaXMgaXMgY3J1Y2lhbCBmb3IgdW5kZXJzdGFuZGluZyBob3cgdGhlIHN5c3RlbSB3aWxsIHJlYWN0IHRvIG1lbW9yeSBhbm9tYWxpZXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMyOTAsIk91dHB1dFRva2VucyI6MTksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wOVQwNDoyNzowOS4yNjc3OTAyNjdaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzIxNDk1Mjk0MSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgTUVNT1JZX0ZBSUxVUkVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibW0vS2NvbmZpZz03NzQ9Y29uZmlnIEFSQ0hfU1VQUE9SVFNfTUVNT1JZX0ZBSUxVUkVcXG4tLVxcbm1tL0tjb25maWctNzc2LVxcbm1tL0tjb25maWc6Nzc3OmNvbmZpZyBNRU1PUllfRkFJTFVSRVxcbm1tL0tjb25maWctNzc4LVxcdGRlcGVuZHMgb24gTU1VXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA5VDA0OjI3OjEyLjQ4Mjc0NzM3OVoiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI3MzI2Mjc5NjcwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgYGNvbGxlY3RfcHJvY3Nfa3NtYCBGdW5jdGlvbioqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIGltbWVkaWF0ZWx5LCB0aGUgY29uZmlncyB0aGF0IGp1bXAgb3V0IGFyZSBgS1NNYCBhbmQgYE1FTU9SWV9GQUlMVVJFYC4gVGhlIGtleSBmdW5jdGlvbiBoZXJlIGlzIGBjb2xsZWN0X3Byb2NzX2tzbWAuIExldCdzIGNvbmZpcm0gdGhhdCBubyBvdGhlciByZWxhdGVkIGZ1bmN0aW9ucyBhcmUgbW9kaWZpZWQ7IGl0IHNlZW1zIHRoaXMgaXMgdGhlIHByaW1hcnkgZm9jdXMuXG5cbk5vdywgbGV0J3MgdGFrZSBhbm90aGVyIGxvb2sgYXQgdGhlIGNvZGUgaXRzZWxmLiBUaGUgY29yZSBvZiB0aGUgY2hhbmdlIGlzIGNsZWFybHkgd2l0aGluIHRoZSBsb29wLiBQcmV2aW91c2x5LCB0aGUgaW50ZXJ2YWwgdHJlZSBzZWFyY2ggdXNlZCBgWzAsIFVMT05HX01BWF1gIHdoaWNoIG1lYW5zIGl0IGl0ZXJhdGVkIHRocm91Z2ggdGhlIGVudGlyZSB0cmVlLiBOb3csIHRoZXkndmUgcmVzdHJpY3RlZCB0aGUgc2VhcmNoIHRvIGBbaW5kZXgsIGluZGV4XWAuIFRoZSBjaGFuZ2Ugbm93IHVzZXMgYHJtYXBfaXRlbS1cdTAwM2VsaW5lYXJfcGFnZV9pbmRleGAgZGlyZWN0bHkuXG5cblRoaXMgaXMgZGVmaW5pdGVseSBhIGZ1bmN0aW9uYWwgY2hhbmdlLiBUaGUgZXhlY3V0aW9uIGZsb3cgaXMgYmVpbmcgYWx0ZXJlZDsgdGhlIGxvb3Agd2lsbCBpdGVyYXRlIGZld2VyIHRpbWVzLiBUaGlzIGlzIGxpa2VseSBlaXRoZXIgYW4gb3B0aW1pemF0aW9uIHRvIHJlZHVjZSB1bm5lY2Vzc2FyeSBpdGVyYXRpb25zIG9yLCBwb3RlbnRpYWxseSwgYSBidWcgZml4IGJ5IGVuc3VyaW5nIGl0IG9ubHkgcHJvY2Vzc2VzIHRoZSByZWxldmFudCBub2RlLiBJIG5lZWQgdG8gZGlnIGRlZXBlciB0byBzZWUgd2h5IHRoaXMgY2hhbmdlIHdhcyBuZWNlc3NhcnkgYW5kIHdoYXQgcHJvYmxlbSBpdCdzIGFkZHJlc3NpbmcuXG5cblRvIGJlIHRob3JvdWdoLCBJJ2xsIHF1aWNrbHkgZG91YmxlLWNoZWNrIHRoYXQgdGhlcmUgYXJlbid0IGFueSBvdGhlciByZWxhdGVkIGNvbmZpZ3Mgb3IgbW9kaWZpZWQgZnVuY3Rpb25zIHRoYXQgSSdtIG92ZXJsb29raW5nLlxuXG5cbiIsIklucHV0VG9rZW5zIjozNTM0LCJPdXRwdXRUb2tlbnMiOjE5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDYzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA5VDA0OjI3OjM5LjgwOTAyOTMyOFoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzIxNzY5MjM4MiwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZGVwZW5kcyBvbi4qS1NNXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wOVQwNDoyNzo0My4wMjY3Mzc0OVoiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxNDM2MTU5MzY2NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0J3Mgc2VlLiBJIG5lZWQgdG8gZmlndXJlIG91dCBpZiBgTUVNT1JZX0ZBSUxVUkVgIGlzIGEgbmVjZXNzYXJ5IGNvbXBvbmVudCBoZXJlLiBSaWdodCwgSSByZW1lbWJlciB0aGF0IGBjb2xsZWN0X3Byb2NzX2tzbWAgaXMgY2FsbGVkIGZyb20gYGNvbGxlY3RfcHJvY3NgIHdpdGhpbiB0aGUgYG1tL21lbW9yeS1mYWlsdXJlLmNgIGZpbGUuIFdhaXQgYSBzZWNvbmQuLi4gaXQncyBjcnVjaWFsIHRvIGNvbmZpcm0gd2hldGhlciBgY29sbGVjdF9wcm9jc19rc21gIGlzICpjb25kaXRpb25hbGx5KiBjb21waWxlZC4gU3BlY2lmaWNhbGx5LCBJIG5lZWQgdG8gdmVyaWZ5IHRoYXQgaXQncyAqb25seSogY29tcGlsZWQgd2hlbiBgTUVNT1JZX0ZBSUxVUkVgIGlzLCBpbiBmYWN0LCBlbmFibGVkLiBUaGlzIGlzIGtleSB0byB1bmRlcnN0YW5kIGhvdyB0aGUgZnVuY3Rpb25zIHdvcmsgaW4gcmVsYXRpb24gdG8gYE1FTU9SWV9GQUlMVVJFYC4gSSdsbCBuZWVkIHRvIGNoZWNrIHRoZSBidWlsZCBjb25maWd1cmF0aW9ucyB0byBiZSBzdXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0MjkwLCJPdXRwdXRUb2tlbnMiOjMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NjYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDlUMDQ6Mjc6NTcuMzg4MzM0ODY1WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozMzY0NDg0NDYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29sbGVjdF9wcm9jc19rc21cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibW0va3NtLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibW0va3NtLmM9MzE5MD12b2lkIHJtYXBfd2Fsa19rc20oc3RydWN0IGZvbGlvICpmb2xpbywgc3RydWN0IHJtYXBfd2Fsa19jb250cm9sICpyd2MpXFxuLS1cXG5tbS9rc20uYy0zMjczLSAqL1xcbm1tL2tzbS5jOjMyNzQ6dm9pZCBjb2xsZWN0X3Byb2NzX2tzbShjb25zdCBzdHJ1Y3QgZm9saW8gKmZvbGlvLCBjb25zdCBzdHJ1Y3QgcGFnZSAqcGFnZSxcXG5tbS9rc20uYy0zMjc1LVxcdFxcdHN0cnVjdCBsaXN0X2hlYWQgKnRvX2tpbGwsIGludCBmb3JjZV9lYXJseSlcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDlUMDQ6Mjc6NTcuNzI0NzkxMDA5WiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjk0MTM1NTQ0NzgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gSGVyZSdzIGhvdyBJJ2QgYXBwcm9hY2ggdGhpcyB0YXNrLCBhcyBpZiB0aGVzZSB3ZXJlIG15IGludGVybmFsIHRob3VnaHRzOlxuXG4qKkNoZWNraW5nIENvbmRpdGlvbmFsIENvbXBpbGF0aW9uIGluIEtlcm5lbCBDb2RlKipcblxuUmlnaHQsIHNvIEknbSBsb29raW5nIGF0IGBjb2xsZWN0X3Byb2NzX2tzbWAuIFRoZSBmaXJzdCB0aGluZyBJJ20gZ29pbmcgdG8gZG8gaXMgZGV0ZXJtaW5lIGlmIGl0J3MgY29uZGl0aW9uYWxseSBjb21waWxlZC4gR2l2ZW4gbXkgZmFtaWxpYXJpdHkgd2l0aCBrZXJuZWwgY29kZSwgSSBpbW1lZGlhdGVseSBzdXNwZWN0IGl0J3MgcHJvdGVjdGVkIGJ5IGFuIGAjaWZkZWZgIHByZXByb2Nlc3NvciBkaXJlY3RpdmUuIEl0J3MgYSBjb21tb24gcHJhY3RpY2UgdG8gc2VsZWN0aXZlbHkgZW5hYmxlIG9yIGRpc2FibGUgZmVhdHVyZXMgYmFzZWQgb24ga2VybmVsIGNvbmZpZ3VyYXRpb24gb3B0aW9ucy5cblxuU3BlY2lmaWNhbGx5LCB0aGUgY29udGV4dCBvZiBtZW1vcnkgbWFuYWdlbWVudCBvZnRlbiBpbnZvbHZlcyBjb25kaXRpb25hbCBjb21waWxhdGlvbiBhcm91bmQgbWVtb3J5IGZhaWx1cmUgaGFuZGxpbmcuIFRoZXJlZm9yZSwgSSBzdXNwZWN0IGBjb2xsZWN0X3Byb2NzX2tzbWAgKm1pZ2h0KiBiZSBjb25kaXRpb25hbGx5IGNvbXBpbGVkIHVuZGVyIGAjaWZkZWYgQ09ORklHX01FTU9SWV9GQUlMVVJFYC4gVGhpcyB3b3VsZCBiZSB0aGUgbmF0dXJhbCBzcG90IHRvIGNoZWNrIGZpcnN0LiBJdCdzIHRoZSBtb3N0IGxpa2VseSBjb25maWd1cmF0aW9uIG9wdGlvbiB0byBiZSByZWxldmFudCBoZXJlLiBMZXQncyBzdGFydCB0aGVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NDY2MiwiT3V0cHV0VG9rZW5zIjozMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA5VDA0OjI4OjA3LjEzODM0NzMwOFoiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTY0ODU2OTc4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIkNPTkZJR19NRU1PUllfRkFJTFVSRVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJtbS9rc20uY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJtbS9rc20uYz0zMTkwPXZvaWQgcm1hcF93YWxrX2tzbShzdHJ1Y3QgZm9saW8gKmZvbGlvLCBzdHJ1Y3Qgcm1hcF93YWxrX2NvbnRyb2wgKnJ3YylcXG4tLVxcbm1tL2tzbS5jLTMyNjktXFxubW0va3NtLmM6MzI3MDojaWZkZWYgQ09ORklHX01FTU9SWV9GQUlMVVJFXFxubW0va3NtLmMtMzI3MS0vKlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wOVQwNDoyODowNy4zMDMyMDkwOTZaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDU0OTYyODA1MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFBvdGVudGlhbCBmb3IgRnV6emluZyoqXG5cbk9rYXksIGhlcmUncyB3aGF0IEkndmUgZ290LiBUaGUgY29kZSBjaGFuZ2UgaXMgZGVmaW5pdGVseSB3aXRoaW4gdGhlIGAjaWZkZWYgQ09ORklHX01FTU9SWV9GQUlMVVJFYCBibG9jayDigJMgdGhhdCdzIG91ciBmaXJzdCBjbHVlLiBTbywgbG9va2luZyBhdCB0aGUgY29uZmlndXJhdGlvbnMsIGl0IGhpbmdlcyBvbiBgS1NNYCBhbmQsIG9mIGNvdXJzZSwgYE1FTU9SWV9GQUlMVVJFYC4gVGhlIHJlYWwgdGFyZ2V0IGhlcmUgaXMgYGNvbGxlY3RfcHJvY3Nfa3NtYC4gSSdtIGZvY3VzaW5nIG9uIHRoYXQgZnVuY3Rpb24gYmVjYXVzZSB0aGUgY2hhbmdlIHNwZWNpZmljYWxseSB0d2Vha3MgdGhlIGJvdW5kcyB1c2VkIGluIHRoZSBpbnRlcnZhbCB0cmVlIHNlYXJjaCAqd2l0aGluKiBgY29sbGVjdF9wcm9jc19rc21gLiBBbmQgd2h5IGlzIHRoYXQgcmVsZXZhbnQ/IEJlY2F1c2UgdGhpcyB3aG9sZSBzZWN0aW9uIGlzIGFib3V0IG1lbW9yeSBmYWlsdXJlIGhhbmRsaW5nIGZvciBLU00gcGFnZXMuXG5cblB1dHRpbmcgaXQgYWxsIHRvZ2V0aGVyLCBJJ20gZ29pbmcgdG8gZmxhZyB0aGlzIGFzIHdvcnRoIGZ1enppbmcuIFRoZSBrZXkgY29uZmlndXJhdGlvbnMgYXJlIGBLU01gIGFuZCBgTUVNT1JZX0ZBSUxVUkVgLiBUaGUgcHJpbWFyeSBmb2N1cywgbmF0dXJhbGx5LCBpcyBgY29sbGVjdF9wcm9jc19rc21gLiBNeSByZWFzb25pbmcgaXMgc3RyYWlnaHRmb3J3YXJkOiB0aGlzIGlzIGEgKmZ1bmN0aW9uYWwqIG1vZGlmaWNhdGlvbi4gVGhlIHBhdGNoIGRpcmVjdGx5IGltcGFjdHMgaG93IGBjb2xsZWN0X3Byb2NzX2tzbWAgYmVoYXZlcyBkdXJpbmcgbWVtb3J5IGZhaWx1cmUgc2NlbmFyaW9zIGZvciBLU00gcGFnZXMuIEl04oCZcyBjaGFuZ2luZyB0aGUgZXhlY3V0aW9uIGZsb3cgYnkgYWx0ZXJpbmcgdGhlIGludGVydmFsIHRyZWUgc2VhcmNoLiBUaGlzIHNlZW1zIGxpa2UgYSBqdWljeSB0YXJnZXQgZm9yIGZ1enppbmcgdG8gcmV2ZWFsIHVuZXhwZWN0ZWQgaW50ZXJhY3Rpb25zIG9yIGVkZ2UgY2FzZXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjUwMDUsIk91dHB1dFRva2VucyI6ODcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNTksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDlUMDQ6Mjg6MTEuODUyODM4OTQ3WiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Nzg2Nzk3NzksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIktTTVwiLFxuICAgIFwiTUVNT1JZX0ZBSUxVUkVcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJjb2xsZWN0X3Byb2NzX2tzbVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBpbnRlcnZhbCB0cmVlIHNlYXJjaCBib3VuZHMgaW4gYGNvbGxlY3RfcHJvY3Nfa3NtYCBkdXJpbmcgbWVtb3J5IGZhaWx1cmUgaGFuZGxpbmcgZm9yIEtTTSBwYWdlcy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRoYXQgYWx0ZXJzIGV4ZWN1dGlvbiBmbG93LlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIktTTVwiLFxuICAgIFwiTUVNT1JZX0ZBSUxVUkVcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJjb2xsZWN0X3Byb2NzX2tzbVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBpbnRlcnZhbCB0cmVlIHNlYXJjaCBib3VuZHMgaW4gYGNvbGxlY3RfcHJvY3Nfa3NtYCBkdXJpbmcgbWVtb3J5IGZhaWx1cmUgaGFuZGxpbmcgZm9yIEtTTSBwYWdlcy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRoYXQgYWx0ZXJzIGV4ZWN1dGlvbiBmbG93LlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+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-workflowrhldw[1] Phase: Succeeded StartedAt: 2026-07-09 04:28:44 +0000 UTC FinishedAt: 2026-07-09 04:28:44 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrhldw[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-07-09 04:28:44 +0000 UTC FinishedAt: 2026-07-09 04:28:44 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrhldw[2] Phase: Succeeded StartedAt: 2026-07-09 04:28:44 +0000 UTC FinishedAt: 2026-07-09 09:01:36 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrhldw[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"302dfbff3e73be2ba5723237c6303244ec27cebb","config_name":"upstream-apparmor-kasan.config","enable_configs":["KSM","MEMORY_FAILURE"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["collect_procs_ksm"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"302dfbff3e73be2ba5723237c6303244ec27cebb","config_name":"upstream-apparmor-kasan.config","enable_configs":["KSM","MEMORY_FAILURE"],"series_id":"9a66ec5f-7075-4ce5-a394-0a0b389fae5a","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-07-09 04:28:44 +0000 UTC FinishedAt: 2026-07-09 09:01:36 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"302dfbff3e73be2ba5723237c6303244ec27cebb","config_name":"upstream-apparmor-kasan.config","enable_configs":["KSM","MEMORY_FAILURE"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["collect_procs_ksm"],"skip_cover_check":true},"patched":{"arch":"amd64","commit_hash":"302dfbff3e73be2ba5723237c6303244ec27cebb","config_name":"upstream-apparmor-kasan.config","enable_configs":["KSM","MEMORY_FAILURE"],"series_id":"9a66ec5f-7075-4ce5-a394-0a0b389fae5a","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowrhldw[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"302dfbff3e73be2ba5723237c6303244ec27cebb","config_name":"upstream-apparmor-kasan.config","enable_configs":["KSM","MEMORY_FAILURE"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["collect_procs_ksm"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"302dfbff3e73be2ba5723237c6303244ec27cebb","config_name":"upstream-apparmor-kasan.config","enable_configs":["KSM","MEMORY_FAILURE"],"series_id":"9a66ec5f-7075-4ce5-a394-0a0b389fae5a","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-07-09 04:28:44 +0000 UTC FinishedAt: 2026-07-09 04:31:37 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrhldw[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"302dfbff3e73be2ba5723237c6303244ec27cebb","config_name":"upstream-apparmor-kasan.config","enable_configs":["KSM","MEMORY_FAILURE"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["collect_procs_ksm"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"302dfbff3e73be2ba5723237c6303244ec27cebb","config_name":"upstream-apparmor-kasan.config","enable_configs":["KSM","MEMORY_FAILURE"],"series_id":"9a66ec5f-7075-4ce5-a394-0a0b389fae5a","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-07-09 04:28:44 +0000 UTC FinishedAt: 2026-07-09 04:30:16 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"302dfbff3e73be2ba5723237c6303244ec27cebb","config_name":"upstream-apparmor-kasan.config","enable_configs":["KSM","MEMORY_FAILURE"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowrhldw/series-workflowrhldw-convert-artifact-1985867243/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowrhldw[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"302dfbff3e73be2ba5723237c6303244ec27cebb","config_name":"upstream-apparmor-kasan.config","enable_configs":["KSM","MEMORY_FAILURE"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["collect_procs_ksm"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"302dfbff3e73be2ba5723237c6303244ec27cebb","config_name":"upstream-apparmor-kasan.config","enable_configs":["KSM","MEMORY_FAILURE"],"series_id":"9a66ec5f-7075-4ce5-a394-0a0b389fae5a","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-07-09 04:31:37 +0000 UTC FinishedAt: 2026-07-09 05:17:38 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrhldw[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"302dfbff3e73be2ba5723237c6303244ec27cebb","config_name":"upstream-apparmor-kasan.config","enable_configs":["KSM","MEMORY_FAILURE"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["collect_procs_ksm"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"302dfbff3e73be2ba5723237c6303244ec27cebb","config_name":"upstream-apparmor-kasan.config","enable_configs":["KSM","MEMORY_FAILURE"],"series_id":"9a66ec5f-7075-4ce5-a394-0a0b389fae5a","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-07-09 04:31:37 +0000 UTC FinishedAt: 2026-07-09 05:17:38 +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:*9a038c32-004b-434a-bccf-5dd4c321c10e,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-workflowrhldw/series-workflowrhldw-convert-artifact-1985867243/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": "46953d49-c102-4d14-8b56-bf95e4d98944", "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-workflowrhldw/series-workflowrhldw-build-action-1031823849/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowrhldw[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"302dfbff3e73be2ba5723237c6303244ec27cebb","config_name":"upstream-apparmor-kasan.config","enable_configs":["KSM","MEMORY_FAILURE"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["collect_procs_ksm"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"302dfbff3e73be2ba5723237c6303244ec27cebb","config_name":"upstream-apparmor-kasan.config","enable_configs":["KSM","MEMORY_FAILURE"],"series_id":"9a66ec5f-7075-4ce5-a394-0a0b389fae5a","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-07-09 04:31:37 +0000 UTC FinishedAt: 2026-07-09 05:17:28 +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:*9a038c32-004b-434a-bccf-5dd4c321c10e,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-workflowrhldw/series-workflowrhldw-convert-artifact-1985867243/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": "46953d49-c102-4d14-8b56-bf95e4d98944", "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-workflowrhldw/series-workflowrhldw-build-action-1031823849/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowrhldw[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"302dfbff3e73be2ba5723237c6303244ec27cebb","config_name":"upstream-apparmor-kasan.config","enable_configs":["KSM","MEMORY_FAILURE"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["collect_procs_ksm"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"302dfbff3e73be2ba5723237c6303244ec27cebb","config_name":"upstream-apparmor-kasan.config","enable_configs":["KSM","MEMORY_FAILURE"],"series_id":"9a66ec5f-7075-4ce5-a394-0a0b389fae5a","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-07-09 05:17:38 +0000 UTC FinishedAt: 2026-07-09 05:17:38 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrhldw[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"302dfbff3e73be2ba5723237c6303244ec27cebb","config_name":"upstream-apparmor-kasan.config","enable_configs":["KSM","MEMORY_FAILURE"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["collect_procs_ksm"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"302dfbff3e73be2ba5723237c6303244ec27cebb","config_name":"upstream-apparmor-kasan.config","enable_configs":["KSM","MEMORY_FAILURE"],"series_id":"9a66ec5f-7075-4ce5-a394-0a0b389fae5a","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-07-09 05:17:38 +0000 UTC FinishedAt: 2026-07-09 05:17:38 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrhldw[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"302dfbff3e73be2ba5723237c6303244ec27cebb","config_name":"upstream-apparmor-kasan.config","enable_configs":["KSM","MEMORY_FAILURE"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["collect_procs_ksm"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"302dfbff3e73be2ba5723237c6303244ec27cebb","config_name":"upstream-apparmor-kasan.config","enable_configs":["KSM","MEMORY_FAILURE"],"series_id":"9a66ec5f-7075-4ce5-a394-0a0b389fae5a","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-07-09 05:17:38 +0000 UTC FinishedAt: 2026-07-09 05:17:48 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrhldw[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"302dfbff3e73be2ba5723237c6303244ec27cebb","config_name":"upstream-apparmor-kasan.config","enable_configs":["KSM","MEMORY_FAILURE"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["collect_procs_ksm"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"302dfbff3e73be2ba5723237c6303244ec27cebb","config_name":"upstream-apparmor-kasan.config","enable_configs":["KSM","MEMORY_FAILURE"],"series_id":"9a66ec5f-7075-4ce5-a394-0a0b389fae5a","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-07-09 05:17:38 +0000 UTC FinishedAt: 2026-07-09 05:17:44 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"302dfbff3e73be2ba5723237c6303244ec27cebb","config_name":"upstream-apparmor-kasan.config","enable_configs":["KSM","MEMORY_FAILURE"],"series_id":"9a66ec5f-7075-4ce5-a394-0a0b389fae5a","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowrhldw/series-workflowrhldw-convert-artifact-1773278402/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowrhldw[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"302dfbff3e73be2ba5723237c6303244ec27cebb","config_name":"upstream-apparmor-kasan.config","enable_configs":["KSM","MEMORY_FAILURE"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["collect_procs_ksm"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"302dfbff3e73be2ba5723237c6303244ec27cebb","config_name":"upstream-apparmor-kasan.config","enable_configs":["KSM","MEMORY_FAILURE"],"series_id":"9a66ec5f-7075-4ce5-a394-0a0b389fae5a","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-07-09 05:17:48 +0000 UTC FinishedAt: 2026-07-09 05:19:44 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrhldw[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"302dfbff3e73be2ba5723237c6303244ec27cebb","config_name":"upstream-apparmor-kasan.config","enable_configs":["KSM","MEMORY_FAILURE"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["collect_procs_ksm"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"302dfbff3e73be2ba5723237c6303244ec27cebb","config_name":"upstream-apparmor-kasan.config","enable_configs":["KSM","MEMORY_FAILURE"],"series_id":"9a66ec5f-7075-4ce5-a394-0a0b389fae5a","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-07-09 05:17:48 +0000 UTC FinishedAt: 2026-07-09 05:19:34 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*46953d49-c102-4d14-8b56-bf95e4d98944,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-workflowrhldw/series-workflowrhldw-build-action-1031823849/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-workflowrhldw[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"302dfbff3e73be2ba5723237c6303244ec27cebb","config_name":"upstream-apparmor-kasan.config","enable_configs":["KSM","MEMORY_FAILURE"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["collect_procs_ksm"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"302dfbff3e73be2ba5723237c6303244ec27cebb","config_name":"upstream-apparmor-kasan.config","enable_configs":["KSM","MEMORY_FAILURE"],"series_id":"9a66ec5f-7075-4ce5-a394-0a0b389fae5a","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-07-09 05:19:44 +0000 UTC FinishedAt: 2026-07-09 05:19:44 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrhldw[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"302dfbff3e73be2ba5723237c6303244ec27cebb","config_name":"upstream-apparmor-kasan.config","enable_configs":["KSM","MEMORY_FAILURE"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["collect_procs_ksm"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"302dfbff3e73be2ba5723237c6303244ec27cebb","config_name":"upstream-apparmor-kasan.config","enable_configs":["KSM","MEMORY_FAILURE"],"series_id":"9a66ec5f-7075-4ce5-a394-0a0b389fae5a","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-07-09 05:19:44 +0000 UTC FinishedAt: 2026-07-09 05:19:44 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrhldw[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"302dfbff3e73be2ba5723237c6303244ec27cebb","config_name":"upstream-apparmor-kasan.config","enable_configs":["KSM","MEMORY_FAILURE"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["collect_procs_ksm"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"302dfbff3e73be2ba5723237c6303244ec27cebb","config_name":"upstream-apparmor-kasan.config","enable_configs":["KSM","MEMORY_FAILURE"],"series_id":"9a66ec5f-7075-4ce5-a394-0a0b389fae5a","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-07-09 05:19:44 +0000 UTC FinishedAt: 2026-07-09 05:55:45 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrhldw[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"302dfbff3e73be2ba5723237c6303244ec27cebb","config_name":"upstream-apparmor-kasan.config","enable_configs":["KSM","MEMORY_FAILURE"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["collect_procs_ksm"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"302dfbff3e73be2ba5723237c6303244ec27cebb","config_name":"upstream-apparmor-kasan.config","enable_configs":["KSM","MEMORY_FAILURE"],"series_id":"9a66ec5f-7075-4ce5-a394-0a0b389fae5a","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-07-09 05:19:44 +0000 UTC FinishedAt: 2026-07-09 05:55:45 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*true,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Patched,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*9a038c32-004b-434a-bccf-5dd4c321c10e,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-workflowrhldw/series-workflowrhldw-convert-artifact-1773278402/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": "a68cd824-66c4-44d4-a149-b6e15ee80e36", "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-workflowrhldw/series-workflowrhldw-build-action-2628830998/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowrhldw[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"302dfbff3e73be2ba5723237c6303244ec27cebb","config_name":"upstream-apparmor-kasan.config","enable_configs":["KSM","MEMORY_FAILURE"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["collect_procs_ksm"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"302dfbff3e73be2ba5723237c6303244ec27cebb","config_name":"upstream-apparmor-kasan.config","enable_configs":["KSM","MEMORY_FAILURE"],"series_id":"9a66ec5f-7075-4ce5-a394-0a0b389fae5a","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-07-09 05:19:44 +0000 UTC FinishedAt: 2026-07-09 05:55:35 +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:*9a038c32-004b-434a-bccf-5dd4c321c10e,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-workflowrhldw/series-workflowrhldw-convert-artifact-1773278402/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": "a68cd824-66c4-44d4-a149-b6e15ee80e36", "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-workflowrhldw/series-workflowrhldw-build-action-2628830998/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowrhldw[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"302dfbff3e73be2ba5723237c6303244ec27cebb","config_name":"upstream-apparmor-kasan.config","enable_configs":["KSM","MEMORY_FAILURE"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["collect_procs_ksm"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"302dfbff3e73be2ba5723237c6303244ec27cebb","config_name":"upstream-apparmor-kasan.config","enable_configs":["KSM","MEMORY_FAILURE"],"series_id":"9a66ec5f-7075-4ce5-a394-0a0b389fae5a","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-07-09 05:55:45 +0000 UTC FinishedAt: 2026-07-09 05:55:45 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrhldw[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"302dfbff3e73be2ba5723237c6303244ec27cebb","config_name":"upstream-apparmor-kasan.config","enable_configs":["KSM","MEMORY_FAILURE"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["collect_procs_ksm"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"302dfbff3e73be2ba5723237c6303244ec27cebb","config_name":"upstream-apparmor-kasan.config","enable_configs":["KSM","MEMORY_FAILURE"],"series_id":"9a66ec5f-7075-4ce5-a394-0a0b389fae5a","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-07-09 05:55:45 +0000 UTC FinishedAt: 2026-07-09 05:55:45 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrhldw[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"302dfbff3e73be2ba5723237c6303244ec27cebb","config_name":"upstream-apparmor-kasan.config","enable_configs":["KSM","MEMORY_FAILURE"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["collect_procs_ksm"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"302dfbff3e73be2ba5723237c6303244ec27cebb","config_name":"upstream-apparmor-kasan.config","enable_configs":["KSM","MEMORY_FAILURE"],"series_id":"9a66ec5f-7075-4ce5-a394-0a0b389fae5a","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-07-09 05:55:45 +0000 UTC FinishedAt: 2026-07-09 05:57:51 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrhldw[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"302dfbff3e73be2ba5723237c6303244ec27cebb","config_name":"upstream-apparmor-kasan.config","enable_configs":["KSM","MEMORY_FAILURE"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["collect_procs_ksm"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"302dfbff3e73be2ba5723237c6303244ec27cebb","config_name":"upstream-apparmor-kasan.config","enable_configs":["KSM","MEMORY_FAILURE"],"series_id":"9a66ec5f-7075-4ce5-a394-0a0b389fae5a","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-07-09 05:55:45 +0000 UTC FinishedAt: 2026-07-09 05:57: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:*a68cd824-66c4-44d4-a149-b6e15ee80e36,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-workflowrhldw/series-workflowrhldw-build-action-2628830998/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-workflowrhldw[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"302dfbff3e73be2ba5723237c6303244ec27cebb","config_name":"upstream-apparmor-kasan.config","enable_configs":["KSM","MEMORY_FAILURE"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["collect_procs_ksm"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"302dfbff3e73be2ba5723237c6303244ec27cebb","config_name":"upstream-apparmor-kasan.config","enable_configs":["KSM","MEMORY_FAILURE"],"series_id":"9a66ec5f-7075-4ce5-a394-0a0b389fae5a","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-07-09 05:57:51 +0000 UTC FinishedAt: 2026-07-09 09:01:36 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrhldw[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"302dfbff3e73be2ba5723237c6303244ec27cebb","config_name":"upstream-apparmor-kasan.config","enable_configs":["KSM","MEMORY_FAILURE"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["collect_procs_ksm"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"302dfbff3e73be2ba5723237c6303244ec27cebb","config_name":"upstream-apparmor-kasan.config","enable_configs":["KSM","MEMORY_FAILURE"],"series_id":"9a66ec5f-7075-4ce5-a394-0a0b389fae5a","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-07-09 05:57:51 +0000 UTC FinishedAt: 2026-07-09 09:01:36 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:config,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["collect_procs_ksm"],"skip_cover_check":true},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:track,Default:nil,Value:*KASAN,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:base-build-id,Default:nil,Value:*46953d49-c102-4d14-8b56-bf95e4d98944,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*a68cd824-66c4-44d4-a149-b6e15ee80e36,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-workflowrhldw/series-workflowrhldw-build-action-1031823849/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-workflowrhldw/series-workflowrhldw-build-action-2628830998/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowrhldw[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"302dfbff3e73be2ba5723237c6303244ec27cebb","config_name":"upstream-apparmor-kasan.config","enable_configs":["KSM","MEMORY_FAILURE"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["collect_procs_ksm"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"302dfbff3e73be2ba5723237c6303244ec27cebb","config_name":"upstream-apparmor-kasan.config","enable_configs":["KSM","MEMORY_FAILURE"],"series_id":"9a66ec5f-7075-4ce5-a394-0a0b389fae5a","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-07-09 05:57:51 +0000 UTC FinishedAt: 2026-07-09 05:58:01 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrhldw[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"302dfbff3e73be2ba5723237c6303244ec27cebb","config_name":"upstream-apparmor-kasan.config","enable_configs":["KSM","MEMORY_FAILURE"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["collect_procs_ksm"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"302dfbff3e73be2ba5723237c6303244ec27cebb","config_name":"upstream-apparmor-kasan.config","enable_configs":["KSM","MEMORY_FAILURE"],"series_id":"9a66ec5f-7075-4ce5-a394-0a0b389fae5a","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-07-09 05:57:51 +0000 UTC FinishedAt: 2026-07-09 05:57:57 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["collect_procs_ksm"],"skip_cover_check":true},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowrhldw/series-workflowrhldw-convert-artifact-1676817399/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowrhldw[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"302dfbff3e73be2ba5723237c6303244ec27cebb","config_name":"upstream-apparmor-kasan.config","enable_configs":["KSM","MEMORY_FAILURE"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["collect_procs_ksm"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"302dfbff3e73be2ba5723237c6303244ec27cebb","config_name":"upstream-apparmor-kasan.config","enable_configs":["KSM","MEMORY_FAILURE"],"series_id":"9a66ec5f-7075-4ce5-a394-0a0b389fae5a","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-07-09 05:57:51 +0000 UTC FinishedAt: 2026-07-09 05:57:51 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrhldw[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"302dfbff3e73be2ba5723237c6303244ec27cebb","config_name":"upstream-apparmor-kasan.config","enable_configs":["KSM","MEMORY_FAILURE"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["collect_procs_ksm"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"302dfbff3e73be2ba5723237c6303244ec27cebb","config_name":"upstream-apparmor-kasan.config","enable_configs":["KSM","MEMORY_FAILURE"],"series_id":"9a66ec5f-7075-4ce5-a394-0a0b389fae5a","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-07-09 05:57:51 +0000 UTC FinishedAt: 2026-07-09 05:57:51 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrhldw[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"302dfbff3e73be2ba5723237c6303244ec27cebb","config_name":"upstream-apparmor-kasan.config","enable_configs":["KSM","MEMORY_FAILURE"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["collect_procs_ksm"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"302dfbff3e73be2ba5723237c6303244ec27cebb","config_name":"upstream-apparmor-kasan.config","enable_configs":["KSM","MEMORY_FAILURE"],"series_id":"9a66ec5f-7075-4ce5-a394-0a0b389fae5a","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-07-09 05:57:51 +0000 UTC FinishedAt: 2026-07-09 05:57:51 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrhldw[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"302dfbff3e73be2ba5723237c6303244ec27cebb","config_name":"upstream-apparmor-kasan.config","enable_configs":["KSM","MEMORY_FAILURE"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["collect_procs_ksm"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"302dfbff3e73be2ba5723237c6303244ec27cebb","config_name":"upstream-apparmor-kasan.config","enable_configs":["KSM","MEMORY_FAILURE"],"series_id":"9a66ec5f-7075-4ce5-a394-0a0b389fae5a","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-07-09 05:58:01 +0000 UTC FinishedAt: 2026-07-09 09:01:36 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrhldw[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"302dfbff3e73be2ba5723237c6303244ec27cebb","config_name":"upstream-apparmor-kasan.config","enable_configs":["KSM","MEMORY_FAILURE"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["collect_procs_ksm"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"302dfbff3e73be2ba5723237c6303244ec27cebb","config_name":"upstream-apparmor-kasan.config","enable_configs":["KSM","MEMORY_FAILURE"],"series_id":"9a66ec5f-7075-4ce5-a394-0a0b389fae5a","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-07-09 05:58:01 +0000 UTC FinishedAt: 2026-07-09 09:01:27 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*46953d49-c102-4d14-8b56-bf95e4d98944,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*a68cd824-66c4-44d4-a149-b6e15ee80e36,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-workflowrhldw/series-workflowrhldw-build-action-1031823849/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-workflowrhldw/series-workflowrhldw-build-action-2628830998/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-workflowrhldw/series-workflowrhldw-convert-artifact-1676817399/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,}