Name: series-workflowfzd6c Phase: Succeeded StartedAt: 2026-06-30 02:29:43 +0000 UTC FinishedAt: 2026-06-30 07:00:34 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfzd6c[0] Phase: Succeeded StartedAt: 2026-06-30 02:29:43 +0000 UTC FinishedAt: 2026-06-30 02:42:41 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfzd6c[0].run-triage Phase: Succeeded StartedAt: 2026-06-30 02:29:43 +0000 UTC FinishedAt: 2026-06-30 02:42:41 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git", "commit_hash": "805185b7c7a1069e407b6f7b3bc98e44d415f484", "config_name": "upstream-apparmor-kasan.config", "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git", "commit_hash": "805185b7c7a1069e407b6f7b3bc98e44d415f484", "config_name": "upstream-apparmor-kasan.config", "series_id": "1f5e4510-25bd-409d-a974-27e112ee672e" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "ip_mc_destroy_dev" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzMwIDAyOjQxPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7aXBfbWNfZGVzdHJveV9kZXYmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBhIG1pc3NpbmcgaXBfbWNfaGFzaF9yZW1vdmUgY2FsbCBpbiBpcF9tY19kZXN0cm95X2RldiB0byBlbnN1cmUgbXVsdGljYXN0IGdyb3VwcyBhcmUgcHJvcGVybHkgcmVtb3ZlZCBmcm9tIHRoZSBkZXZpY2UmIzM5O3MgbXVsdGljYXN0IGhhc2ggdGFibGUgd2hlbiB0aGUgZGV2aWNlIGlzIGRlc3Ryb3llZC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIElQdjQgbXVsdGljYXN0IGxvZ2ljLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzMwIDAyOjQxPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgZGZhMjk2ZWE2OTNhYWY1NWM2NjIzNjdmYTEzZDljOWQzMDUzZTRlYVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUdWUgSnVuIDMwIDAyOjQxOjI1IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL25ldC9pcHY0L2lnbXAuYyBiL25ldC9pcHY0L2lnbXAuY1xuaW5kZXggYjYzMzdhNDdjMTQxODUuLmFmMzgwNzNhODIyZGJlIDEwMDY0NFxuLS0tIGEvbmV0L2lwdjQvaWdtcC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvaXB2NC9pZ21wLmNcbkBAIC0xOTIzLDYgJiM0MzsxOTIzLDcgQEAgdm9pZCBpcF9tY19kZXN0cm95X2RldihzdHJ1Y3QgaW5fZGV2aWNlICppbl9kZXYpXG4gXG4gXHR3aGlsZSAoKGkgPSBydG5sX2RlcmVmZXJlbmNlKGluX2Rldi1cdTAwM2VtY19saXN0KSkgIT0gTlVMTCkge1xuIFx0XHRpbl9kZXYtXHUwMDNlbWNfbGlzdCA9IGktXHUwMDNlbmV4dF9yY3U7XG4mIzQzO1x0XHRpcF9tY19oYXNoX3JlbW92ZShpbl9kZXYsIGkpO1xuIFx0XHRXUklURV9PTkNFKGluX2Rldi1cdTAwM2VtY19jb3VudCwgaW5fZGV2LVx1MDAzZW1jX2NvdW50IC0gMSk7XG4gXHRcdGlwX21jX2NsZWFyX3NyYyhpKTtcbiBcdFx0aXBfbWFfcHV0KGkpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzMwIDAyOjQxPC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7aXBfbWNfZGVzdHJveV9kZXYmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBhIG1pc3NpbmcgaXBfbWNfaGFzaF9yZW1vdmUgY2FsbCBpbiBpcF9tY19kZXN0cm95X2RldiB0byBlbnN1cmUgbXVsdGljYXN0IGdyb3VwcyBhcmUgcHJvcGVybHkgcmVtb3ZlZCBmcm9tIHRoZSBkZXZpY2UmIzM5O3MgbXVsdGljYXN0IGhhc2ggdGFibGUgd2hlbiB0aGUgZGV2aWNlIGlzIGRlc3Ryb3llZC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIElQdjQgbXVsdGljYXN0IGxvZ2ljLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdAogICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksCiAgIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCBkZmEyOTZlYTY5M2FhZjU1YzY2MjM2N2ZhMTNkOWM5ZDMwNTNlNGVhCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFR1ZSBKdW4gMzAgMDI6NDE6MjUgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9uZXQvaXB2NC9pZ21wLmMgYi9uZXQvaXB2NC9pZ21wLmMKaW5kZXggYjYzMzdhNDdjMTQxODUuLmFmMzgwNzNhODIyZGJlIDEwMDY0NAotLS0gYS9uZXQvaXB2NC9pZ21wLmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L2lwdjQvaWdtcC5jCkBAIC0xOTIzLDYgJiM0MzsxOTIzLDcgQEAgdm9pZCBpcF9tY19kZXN0cm95X2RldihzdHJ1Y3QgaW5fZGV2aWNlICppbl9kZXYpCiAKIAl3aGlsZSAoKGkgPSBydG5sX2RlcmVmZXJlbmNlKGluX2Rldi0mZ3Q7bWNfbGlzdCkpICE9IE5VTEwpIHsKIAkJaW5fZGV2LSZndDttY19saXN0ID0gaS0mZ3Q7bmV4dF9yY3U7CiYjNDM7CQlpcF9tY19oYXNoX3JlbW92ZShpbl9kZXYsIGkpOwogCQlXUklURV9PTkNFKGluX2Rldi0mZ3Q7bWNfY291bnQsIGluX2Rldi0mZ3Q7bWNfY291bnQgLSAxKTsKIAkJaXBfbWNfY2xlYXJfc3JjKGkpOwogCQlpcF9tYV9wdXQoaSk7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzMwIDAyOjQxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE4NTcKCQkJCQkJCW91dHB1dDogMzYKCQkJCQkJCXRob3VnaHRzOiA5NAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIElHTVAgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggZm9yIGBuZXQvaXB2NC9pZ21wLmNgLiBJdCBzZWVtcyB0aGV5JiMzOTt2ZSBhZGRlZCBgaXBfbWNfaGFzaF9yZW1vdmUoaW5fZGV2LCBpKTtgIHdpdGhpbiB0aGUgYGlwX21jX2Rlc3Ryb3lfZGV2YCBmdW5jdGlvbi4gUmlnaHQgYXdheSwgSSByZWNvZ25pemUgdGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHJlbGF0ZWQgdG8gSVAgbXVsdGljYXN0LiBUaGUgYGlwX21jX2hhc2hfcmVtb3ZlYCBjYWxsIGltcGxpZXMgYW4gdXBkYXRlIHRvIHRoZSBtdWx0aWNhc3QgaGFzaCB0YWJsZSBkdXJpbmcgZGV2aWNlIGRlc3RydWN0aW9uLiBUaGF0JiMzOTtzIGludGVyZXN0aW5nLCBhbmQgcG90ZW50aWFsbHkgc2lnbmlmaWNhbnQuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBpbXBsaWNhdGlvbnMgb2YgdGhpcyBhZGRpdGlvbi4gVGltZSB0byBkaXZlIGludG8gdGhlIGBpcF9tY19kZXN0cm95X2RldmAgZnVuY3Rpb24gaXRzZWxmIGFuZCBzZWUgd2hhdCYjMzk7cyBnb2luZyBvbiB3aXRoaW4gdGhhdCBjb250ZXh0LiBJJiMzOTtsbCBuZWVkIHRvIGZvbGxvdyB0aGUgbG9naWMgZmxvdyB0aGVyZSB0byBmdWxseSBncmFzcCB0aGUgY2hhbmdlJiMzOTtzIGltcGFjdCBhbmQgaWYgaXQgaW50cm9kdWNlcyBhbnkgc2lkZSBlZmZlY3RzIG9yIHVuZm9yZXNlZW4gY29uc2VxdWVuY2VzIGluIHRoZSBtdWx0aWNhc3Qgc3Vic3lzdGVtLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzMwIDAyOjQxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2lwX21jX2Rlc3Ryb3lfZGV2JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L2lwdjQvaWdtcC5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9pcHY0L2lnbXAuYz0xODkxPXZvaWQgaXBfbWNfdXAoc3RydWN0IGluX2RldmljZSAqaW5fZGV2KVxuLS1cbm5ldC9pcHY0L2lnbXAuYy0xOTExLVxubmV0L2lwdjQvaWdtcC5jOjE5MTI6dm9pZCBpcF9tY19kZXN0cm95X2RldihzdHJ1Y3QgaW5fZGV2aWNlICppbl9kZXYpXG5uZXQvaXB2NC9pZ21wLmMtMTkxMy17XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMzAgMDI6NDE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjI4MgoJCQkJCQkJb3V0cHV0OiAzOAoJCQkJCQkJdGhvdWdodHM6IDE2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoaXMuIEhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgYXMgaWYgdGhleSYjMzk7cmUgbXkgb3duOgoKKipJbnZlc3RpZ2F0aW5nIHRoZSBgaXBfbWNfZGVzdHJveV9kZXZgIENvZGUqKgoKQWxyaWdodCwgdGltZSB0byBnZXQgbXkgaGFuZHMgZGlydHkuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQmIzM5O3MgaGFwcGVuaW5nIGFyb3VuZCB0aGF0IGBpcF9tY19kZXN0cm95X2RldmAgZnVuY3Rpb24uIFRoaXMgbGlrZWx5IG1lYW5zIHRyYWNpbmcgdGhlIGV4ZWN1dGlvbiBmbG93IGFuZCBsb29raW5nIGF0IHRoZSBjb250ZXh0IGluIHdoaWNoIHRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkLiBJJiMzOTttIGdvaW5nIHRvIHdhbnQgdG8gZXhhbWluZSB0aGUgc3Vycm91bmRpbmcgY29kZSDigJMgdGhlIGZ1bmN0aW9ucyB0aGF0IGNhbGwgKmludG8qIGl0LCBhbmQgdGhlIGZ1bmN0aW9ucyBpdCBjYWxscyAqb3V0KiB0by4gU3BlY2lmaWNhbGx5LCBJJiMzOTttIHRoaW5raW5nIGFib3V0IHRoZSBkYXRhIHN0cnVjdHVyZXMgYmVpbmcgbWFuaXB1bGF0ZWQgYXJvdW5kIHRoaXMgZnVuY3Rpb24uIFdoYXQga2luZCBvZiBtdWx0aWNhc3QgaW5mb3JtYXRpb24gaXMgYmVpbmcgZGVzdHJveWVkPyBXaGF0IHJlc291cmNlcyBhcmUgYmVpbmcgZnJlZWQ/IEFyZSB0aGVyZSBhbnkgcG90ZW50aWFsIHJhY2UgY29uZGl0aW9ucyBJIG5lZWQgdG8gYmUgYXdhcmUgb2Y/IEkmIzM5O2xsIHByb2JhYmx5IG5lZWQgdG8gbG9vayBhdCBob3cgdGhpcyBpbnRlcmFjdHMgd2l0aCB0aGUgb3ZlcmFsbCBuZXR3b3JraW5nIHN0YWNrLCBlc3BlY2lhbGx5IGhvdyBtdWx0aWNhc3QgaXMgaGFuZGxlZCB3aXRoaW4gdGhlIGtlcm5lbC4gVGltZSB0byBvcGVuIHRoZSBlZGl0b3IgYW5kIHN0YXJ0IG5hdmlnYXRpbmcgdGhlIHNvdXJjZS4gTGV0JiMzOTtzIHNlZSBpZiB0aGVyZSBhcmUgYW55IG9idmlvdXMgbWVtb3J5IG1hbmFnZW1lbnQgaXNzdWVzIG9yIHN5bmNocm9uaXphdGlvbiBwcmltaXRpdmVzIGludm9sdmVkLiBJJiMzOTttIGV4cGVjdGluZyB0byBmaW5kIGEgdHlwaWNhbCBjbGVhbnVwIHJvdXRpbmUsIGJ1dCBJIHdhbnQgdG8gbWFrZSBzdXJlIGl0JiMzOTtzICp0aG9yb3VnaCouIEFueSBzdWJ0bGUgbWlzc2VkIGNhc2VzIHdpbGwgYmUgaW1tZWRpYXRlbHkgb2J2aW91cy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8zMCAwMjo0MTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O25ldC9pcHY0L2lnbXAuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDE5MTAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMzAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7MTkxMDpcdCAqL1xuMTkxMTpcdFxuMTkxMjpcdHZvaWQgaXBfbWNfZGVzdHJveV9kZXYoc3RydWN0IGluX2RldmljZSAqaW5fZGV2KVxuMTkxMzpcdHtcbjE5MTQ6XHRcdHN0cnVjdCBpcF9tY19saXN0ICppO1xuMTkxNTpcdFxuMTkxNjpcdFx0QVNTRVJUX1JUTkwoKTtcbjE5MTc6XHRcbjE5MTg6XHRcdC8qIERlYWN0aXZhdGUgdGltZXJzICovXG4xOTE5Olx0XHRpcF9tY19kb3duKGluX2Rldik7XG4xOTIwOlx0I2lmZGVmIENPTkZJR19JUF9NVUxUSUNBU1RcbjE5MjE6XHRcdGlnbXB2M19jbGVhcl9kZWxyZWMoaW5fZGV2KTtcbjE5MjI6XHQjZW5kaWZcbjE5MjM6XHRcbjE5MjQ6XHRcdHdoaWxlICgoaSA9IHJ0bmxfZGVyZWZlcmVuY2UoaW5fZGV2LVx1MDAzZW1jX2xpc3QpKSAhPSBOVUxMKSB7XG4xOTI1Olx0XHRcdGluX2Rldi1cdTAwM2VtY19saXN0ID0gaS1cdTAwM2VuZXh0X3JjdTtcbjE5MjY6XHRcdFx0aXBfbWNfaGFzaF9yZW1vdmUoaW5fZGV2LCBpKTtcbjE5Mjc6XHRcdFx0V1JJVEVfT05DRShpbl9kZXYtXHUwMDNlbWNfY291bnQsIGluX2Rldi1cdTAwM2VtY19jb3VudCAtIDEpO1xuMTkyODpcdFx0XHRpcF9tY19jbGVhcl9zcmMoaSk7XG4xOTI5Olx0XHRcdGlwX21hX3B1dChpKTtcbjE5MzA6XHRcdH1cbjE5MzE6XHR9XG4xOTMyOlx0XG4xOTMzOlx0LyogUlROTCBpcyBsb2NrZWQgKi9cbjE5MzQ6XHRzdGF0aWMgc3RydWN0IGluX2RldmljZSAqaXBfbWNfZmluZF9kZXYoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3QgaXBfbXJlcW4gKmltcilcbjE5MzU6XHR7XG4xOTM2Olx0XHRzdHJ1Y3QgbmV0X2RldmljZSAqZGV2ID0gTlVMTDtcbjE5Mzc6XHRcdHN0cnVjdCBpbl9kZXZpY2UgKmlkZXYgPSBOVUxMO1xuMTkzODpcdFxuMTkzOTpcdFx0aWYgKGltci1cdTAwM2VpbXJfaWZpbmRleCkge1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzMwIDAyOjQxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMwNDkKCQkJCQkJCW91dHB1dDogMzIKCQkJCQkJCXRob3VnaHRzOiA0NQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIElQIE11bHRpY2FzdCBEZXZpY2UgRGVzdHJ1Y3Rpb24qKgoKT2theSwgc28gdGhlIG1vZGlmaWNhdGlvbiBjZW50ZXJzIGFyb3VuZCBgaXBfbWNfZGVzdHJveV9kZXZgLiBUaGF0IGZ1bmN0aW9uIGlzIHRyaWdnZXJlZCB3aGVuIGFuIGBpbl9kZXZpY2VgIGdldHMgZGVzdHJveWVkLCBhbmQgdGhhdCBzb3VuZHMgbGlrZSBpdCBjb3VsZCBiZSBhIHNpZ25pZmljYW50IHBvaW50IG9mIGZhaWx1cmUgb3Igb3B0aW1pemF0aW9uLiBNeSBuZXh0IHN0ZXAgaXMgdG8gdW5kZXJzdGFuZCB0aGUgc2NvcGUuIEkgbmVlZCB0byBwaW5wb2ludCBldmVyeSBpbnN0YW5jZSB3aGVyZSBgaXBfbWNfZGVzdHJveV9kZXZgIGlzIGFjdHVhbGx5IGNhbGxlZCB3aXRoaW4gdGhlIGNvZGViYXNlLiBLbm93aW5nIHRoYXQgY2FsbCBjaGFpbiBpcyBhYnNvbHV0ZWx5IGNydWNpYWwgZm9yIHVuZGVyc3RhbmRpbmcgdGhlIGltcGFjdCBvZiB0aGlzIGNoYW5nZSBhbmQgZm9yIGF2b2lkaW5nIGFueSByZWdyZXNzaW9ucy4gTGV0JiMzOTtzIHNlZSB3aGF0IHRoZSBjYWxsIGdyYXBoIHJldmVhbHMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMzAgMDI6NDE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7aXBfbWNfZGVzdHJveV9kZXYmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvaXB2NC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L2lwdjQvZGV2aW5ldC5jPTMxND1zdGF0aWMgdm9pZCBpbmV0ZGV2X2Rlc3Ryb3koc3RydWN0IGluX2RldmljZSAqaW5fZGV2KVxuLS1cbm5ldC9pcHY0L2RldmluZXQuYy0zMjQtXG5uZXQvaXB2NC9kZXZpbmV0LmM6MzI1Olx0aXBfbWNfZGVzdHJveV9kZXYoaW5fZGV2KTtcbm5ldC9pcHY0L2RldmluZXQuYy0zMjYtXG4tLVxubmV0L2lwdjQvaWdtcC5jPTE4OTE9dm9pZCBpcF9tY191cChzdHJ1Y3QgaW5fZGV2aWNlICppbl9kZXYpXG4tLVxubmV0L2lwdjQvaWdtcC5jLTE5MTEtXG5uZXQvaXB2NC9pZ21wLmM6MTkxMjp2b2lkIGlwX21jX2Rlc3Ryb3lfZGV2KHN0cnVjdCBpbl9kZXZpY2UgKmluX2Rldilcbm5ldC9pcHY0L2lnbXAuYy0xOTEzLXtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8zMCAwMjo0MTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNDQ5CgkJCQkJCQlvdXRwdXQ6IDMwCgkJCQkJCQl0aG91Z2h0czogMTU5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkZ1enppbmcgVGFyZ2V0OiBJUHY0IERldmljZSBEZXN0cnVjdGlvbioqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBjb2RlIGFuZCBpdCYjMzk7cyBjYWxsZWQgZnJvbSBgaW5ldGRldl9kZXN0cm95YC4gVGhhdCBmdW5jdGlvbiYjMzk7cyBpbnZva2VkIHdoZW4gYW4gSVB2NCBkZXZpY2UgaXMgdGFrZW4gZG93bi4gUmlnaHQgYXdheSwgSSBzZWUgdGhpcyBhcyBhIHBvdGVudGlhbCBmdW5jdGlvbmFsIGNoYW5nZSwgZGVmaW5pdGVseSBzb21ldGhpbmcgd29ydGggdGFyZ2V0aW5nIHdpdGggZnV6emluZy4gTXkgbWFpbiBmb2N1cyBzeW1ib2wgaGVyZSBpcyBnb2luZyB0byBiZSBgaXBfbWNfZGVzdHJveV9kZXZgLgoKSSBuZWVkIHRvIHF1aWNrbHkgY2hlY2sgdGhlIGNvbmZpZ3VyYXRpb24gZGVwZW5kZW5jaWVzLiBMZXQgbWUgc2VlLi4uIEkgc3BvdCBgQ09ORklHX0lQX01VTFRJQ0FTVGAgYXJvdW5kIHRoYXQgYGlnbXB2M19jbGVhcl9kZWxyZWMoaW5fZGV2KTtgIGNhbGwgaW4gdGhlIHNhbWUgZnVuY3Rpb24sIHdoaWNoIGlzIHVzZWZ1bCBpbmZvcm1hdGlvbiwgYnV0IHRoZSBwYXJ0IEkmIzM5O20gYWN0dWFsbHkgaW50ZXJlc3RlZCBpbiwgdGhlIGBpcF9tY19kZXN0cm95X2RldmAgZnVuY3Rpb24gaXRzZWxmIGFuZCB0aGUgc3BlY2lmaWMgY29kZSBJJiMzOTttIGFuYWx5emluZywgYXJlICpvdXRzaWRlKiB0aGF0IHBhcnRpY3VsYXIgY29uZmlnLiBXYWl0LCBhY3R1YWxseSwgYWZ0ZXIgYSBtb21lbnQmIzM5O3MgY29uc2lkZXJhdGlvbiwgaXQgbG9va3MgbGlrZSBgaXBfbWNfZGVzdHJveV9kZXZgIGlzIGFsd2F5cyBjb21waWxlZCBpZiBgbmV0L2lwdjQvaWdtcC5jYCBpcyBjb21waWxlZC4gT2theSwgc28gbm8gc3BlY2lmaWMsIG5hcnJvdyBjb25maWcgZGVwZW5kZW5jaWVzIHRoYXQgSSBuZWVkIHRvIGJlIGF3YXJlIG9mIGhlcmUuIFRvIGNvbmZpcm0gdGhhdCwgbGV0JiMzOTtzIHRha2UgYSBxdWljayBsb29rIGF0IHRoZSBgbmV0L2lwdjQvTWFrZWZpbGVgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8zMCAwMjo0MTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtpZ21wLm8mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvaXB2NC9NYWtlZmlsZSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvaXB2NC9NYWtlZmlsZT02PW9iai15ICAgICA6PSByb3V0ZS5vIGluZXRwZWVyLm8gcHJvdG9jb2wubyBcXFxuLS1cbm5ldC9pcHY0L01ha2VmaWxlLTEzLVx0ICAgICB0Y3Bfb2ZmbG9hZC5vIHRjcF9wbGIubyBkYXRhZ3JhbS5vIHJhdy5vIHVkcC5vIFxcXG5uZXQvaXB2NC9NYWtlZmlsZToxNDpcdCAgICAgdWRwX29mZmxvYWQubyBhcnAubyBpY21wLm8gZGV2aW5ldC5vIGFmX2luZXQubyBpZ21wLm8gXFxcbm5ldC9pcHY0L01ha2VmaWxlLTE1LVx0ICAgICBmaWJfZnJvbnRlbmQubyBmaWJfc2VtYW50aWNzLm8gZmliX3RyaWUubyBmaWJfbm90aWZpZXIubyBcXFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8zMCAwMjo0MTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0MDQ5CgkJCQkJCQlvdXRwdXQ6IDM2CgkJCQkJCQl0aG91Z2h0czogMjkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIG15IG93bjoKCioqSW52ZXN0aWdhdGluZyB0aGUgSVB2NCBEZXBlbmRlbmN5IGluIGBpZ21wLm9gIGFuZCBgaXBfbWNfaGFzaF9yZW1vdmVgKioKCkFscmlnaHQsIHNvIEkmIzM5O20gbG9va2luZyBhdCBgaWdtcC5vYCBhbmQgaXQgc2VlbXMgbGlrZSBpdCYjMzk7cyAqYWx3YXlzKiBjb21waWxlZCBzcGVjaWZpY2FsbHkgZm9yIElQdjQuIFRoYXQgcmFpc2VzIGEgcXVlc3Rpb24sIEkgd29uZGVyIGlmIHRoZXJlJiMzOTtzIGFueSBjb25maWd1cmF0aW9uIHRoYXQgbWlnaHQgaW5mbHVlbmNlIHRoYXQ/IE9yIGlzIGl0IGEgZnVuZGFtZW50YWwgYXJjaGl0ZWN0dXJhbCBkZWNpc2lvbiBpbiB0aGlzIHBhcnRpY3VsYXIgbW9kdWxlPyBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgY29uc3RyYWludHMgaGVyZSwgYW5kIHdoYXQgZHJpdmVzIHRoZSBkZXBlbmRlbmN5IG9uIHRoZSBJUHY0IGltcGxlbWVudGF0aW9uLiBJJiMzOTtsbCBuZWVkIHRvIGRpZyBkZWVwZXIgaW50byB0aGUgYnVpbGQgc3lzdGVtIGFuZCB0aGUgc3Vycm91bmRpbmcgY29kZSB0byB1bmRlcnN0YW5kIHRoZSByYXRpb25hbGUgYmVoaW5kIHRoYXQuCgpBbmQgd2hpbGUgSSYjMzk7bSBhdCBpdCwgd2hhdCBhYm91dCBgaXBfbWNfaGFzaF9yZW1vdmVgPyBBcmUgdGhlcmUgYW55IGFzc29jaWF0ZWQgY29uZmlndXJhdGlvbnMgb3Igc2V0dGluZ3MgcmVsYXRlZCB0byB0aGF0IGZ1bmN0aW9uPyBJIHdhbnQgdG8gbWFrZSBzdXJlIEkgZG9uJiMzOTt0IG1pc3MgYW55dGhpbmcgdGhhdCBjb3VsZCBiZSByZWxldmFudCB0byB0aGUgaW5pdGlhbCBvYnNlcnZhdGlvbi4gVGhpcyBjb3VsZCBiZSBpbXBvcnRhbnQgZm9yIHVuZGVyc3RhbmRpbmcgbXVsdGljYXN0IGFkZHJlc3MgY2xlYW51cCBhbmQgaG93IGl0IGludGVyYWN0cyB3aXRoIHRoZSB1bmRlcmx5aW5nIHJvdXRpbmcgdGFibGVzLiBMZXQgbWUgY2hlY2sgdGhlIGRvY3VtZW50YXRpb24gYW5kIGV4aXN0aW5nIGNvZGUgY29tbWVudHMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzMwIDAyOjQxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2lwX21jX2hhc2hfcmVtb3ZlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L2lwdjQvaWdtcC5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9pcHY0L2lnbXAuYz0xNDA0PXN0YXRpYyB2b2lkIGlwX21jX2hhc2hfYWRkKHN0cnVjdCBpbl9kZXZpY2UgKmluX2Rldixcbi0tXG5uZXQvaXB2NC9pZ21wLmMtMTQzNS1cbm5ldC9pcHY0L2lnbXAuYzoxNDM2OnN0YXRpYyB2b2lkIGlwX21jX2hhc2hfcmVtb3ZlKHN0cnVjdCBpbl9kZXZpY2UgKmluX2Rldixcbm5ldC9pcHY0L2lnbXAuYy0xNDM3LVx0XHRcdCAgICAgIHN0cnVjdCBpcF9tY19saXN0ICppbSlcbi0tXG5uZXQvaXB2NC9pZ21wLmM9MTc3Nj12b2lkIF9faXBfbWNfZGVjX2dyb3VwKHN0cnVjdCBpbl9kZXZpY2UgKmluX2RldiwgX19iZTMyIGFkZHIsIGdmcF90IGdmcClcbi0tXG5uZXQvaXB2NC9pZ21wLmMtMTc5MC1cdFx0XHRpZiAobmV3X3VzZXJzID09IDApIHtcbm5ldC9pcHY0L2lnbXAuYzoxNzkxOlx0XHRcdFx0aXBfbWNfaGFzaF9yZW1vdmUoaW5fZGV2LCBpKTtcbm5ldC9pcHY0L2lnbXAuYy0xNzkyLVx0XHRcdFx0KmlwID0gaS1cdTAwM2VuZXh0X3JjdTtcbi0tXG5uZXQvaXB2NC9pZ21wLmM9MTkxMj12b2lkIGlwX21jX2Rlc3Ryb3lfZGV2KHN0cnVjdCBpbl9kZXZpY2UgKmluX2Rldilcbi0tXG5uZXQvaXB2NC9pZ21wLmMtMTkyNS1cdFx0aW5fZGV2LVx1MDAzZW1jX2xpc3QgPSBpLVx1MDAzZW5leHRfcmN1O1xubmV0L2lwdjQvaWdtcC5jOjE5MjY6XHRcdGlwX21jX2hhc2hfcmVtb3ZlKGluX2RldiwgaSk7XG5uZXQvaXB2NC9pZ21wLmMtMTkyNy1cdFx0V1JJVEVfT05DRShpbl9kZXYtXHUwMDNlbWNfY291bnQsIGluX2Rldi1cdTAwM2VtY19jb3VudCAtIDEpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8zMCAwMjo0MTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0NzQ3CgkJCQkJCQlvdXRwdXQ6IDM4CgkJCQkJCQl0aG91Z2h0czogNzEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqSW52ZXN0aWdhdGluZyB0aGUgQ29tcGlsYXRpb24gb2YgYGlwX21jX2hhc2hfcmVtb3ZlYCoqCgpPa2F5LCBzbyBgaXBfbWNfaGFzaF9yZW1vdmVgIGlzIGFsd2F5cyBzaG93aW5nIHVwIGluIHRoZSBjb21waWxlZCBjb2RlLiBUaGF0JiMzOTtzIGEgYml0IG9kZC4gSSBrbm93IGBJUF9NVUxUSUNBU1RgIGlzIHRoaXMgY29uZmlndXJhdGlvbiBvcHRpb24gdGhhdCBjb250cm9scyB0aGUgaW5jbHVzaW9uIG9mIElHTVB2MyBhbmQgb3RoZXIgbXVsdGljYXN0IGdvb2RpZXMuIEJ1dCB0aGUgcHJlc2VuY2Ugb2YgYGlnbXAuY2AgaW4gdGhlIGNvbXBpbGVkIGJ1aWxkIHNlZW1zIGluZGVwZW5kZW50IG9mIHdoZXRoZXIgb3Igbm90IHRoaXMgYElQX01VTFRJQ0FTVGAgZmxhZyBpcyBzZXQuIE15IG1haW4gcXVlc3Rpb24gaGVyZSBpczogZG9lcyBgaXBfbWNfaGFzaF9yZW1vdmVgIGFjdHVhbGx5ICpkbyogYW55dGhpbmcgaWYgYElQX01VTFRJQ0FTVGAgaXMgZGlzYWJsZWQ/IE9yIGlzIHRoaXMganVzdCBkZWFkIGNvZGUgdGhhdCYjMzk7cyBnZXR0aW5nIGluY2x1ZGVkIHVubmVjZXNzYXJpbHk/IEkgbmVlZCB0byBmaWd1cmUgb3V0IGlmIHRoZXJlJiMzOTtzIGEgZnVuY3Rpb25hbCBkZXBlbmRlbmN5IGJldHdlZW4gdGhlIHR3bywgb3IgaWYgdGhpcyBmdW5jdGlvbiBpcyBhbHdheXMgY29tcGlsZWQgcmVnYXJkbGVzcyBvZiB3aGF0IG11bHRpY2FzdCBmZWF0dXJlcyBhcmUgZW5hYmxlZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMzAgMDI6NDE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtuZXQvaXB2NC9pZ21wLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxNDMwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDIwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OzE0MzA6XHRcdFx0UkNVX0lOSVRfUE9JTlRFUihtY19oYXNoW2hhc2hdLCBpbSk7XG4xNDMxOlx0XHR9XG4xNDMyOlx0XG4xNDMzOlx0XHRyY3VfYXNzaWduX3BvaW50ZXIoaW5fZGV2LVx1MDAzZW1jX2hhc2gsIG1jX2hhc2gpO1xuMTQzNDpcdH1cbjE0MzU6XHRcbjE0MzY6XHRzdGF0aWMgdm9pZCBpcF9tY19oYXNoX3JlbW92ZShzdHJ1Y3QgaW5fZGV2aWNlICppbl9kZXYsXG4xNDM3Olx0XHRcdFx0ICAgICAgc3RydWN0IGlwX21jX2xpc3QgKmltKVxuMTQzODpcdHtcbjE0Mzk6XHRcdHN0cnVjdCBpcF9tY19saXN0IF9fcmN1ICoqbWNfaGFzaCA9IHJ0bmxfZGVyZWZlcmVuY2UoaW5fZGV2LVx1MDAzZW1jX2hhc2gpO1xuMTQ0MDpcdFx0c3RydWN0IGlwX21jX2xpc3QgKmF1eDtcbjE0NDE6XHRcbjE0NDI6XHRcdGlmICghbWNfaGFzaClcbjE0NDM6XHRcdFx0cmV0dXJuO1xuMTQ0NDpcdFx0bWNfaGFzaCAmIzQzOz0gaXBfbWNfaGFzaChpbSk7XG4xNDQ1Olx0XHR3aGlsZSAoKGF1eCA9IHJ0bmxfZGVyZWZlcmVuY2UoKm1jX2hhc2gpKSAhPSBpbSlcbjE0NDY6XHRcdFx0bWNfaGFzaCA9IFx1MDAyNmF1eC1cdTAwM2VuZXh0X2hhc2g7XG4xNDQ3Olx0XHQqbWNfaGFzaCA9IGltLVx1MDAzZW5leHRfaGFzaDtcbjE0NDg6XHR9XG4xNDQ5Olx0XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzMwIDAyOjQxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDUzNTQKCQkJCQkJCW91dHB1dDogMzIKCQkJCQkJCXRob3VnaHRzOiAyMgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0JiMzOTtzIGludGVybmFsIG1vbm9sb2d1ZToKCioqRGVsdmluZyBpbnRvIE1lbW9yeSBBbGxvY2F0aW9uKioKCkFscmlnaHQsIHNvIEkmIzM5O20gdGhpbmtpbmcgYWJvdXQgdGhpcyBjb2RlLiBJdCBzZWVtcyB0byBiZSB3b3JraW5nIHdpdGggYGluX2Rldi0mZ3Q7bWNfaGFzaGAuIE15IGltbWVkaWF0ZSBxdWVzdGlvbiBpczogKndoZW4qIGV4YWN0bHkgaXMgdGhpcyBgbWNfaGFzaGAgYWxsb2NhdGVkPyBJcyBpdCBkdXJpbmcgdGhlIGluaXRpYWxpemF0aW9uIG9mIGBpbl9kZXZgLCBwZXJoYXBzPyBPciBpcyBpdCBsYXppbHkgYWxsb2NhdGVkIG9uIGZpcnN0IHVzZT8gS25vd2luZyB0aGlzIGlzIGFic29sdXRlbHkgY3J1Y2lhbCBmb3IgdW5kZXJzdGFuZGluZyBwb3RlbnRpYWwgcmFjZSBjb25kaXRpb25zLCBtZW1vcnkgbGVha3MsIGFuZCBvdmVyYWxsIHByb2dyYW0gc3RhYmlsaXR5LiBJIG5lZWQgdG8gdHJhY2UgYmFjayB0aGUgdXNhZ2Ugb2YgYGluX2RldmAgYW5kIGBtY19oYXNoYCB0byBmaWd1cmUgb3V0IHRoZSBleGFjdCBwb2ludCBvZiBhbGxvY2F0aW9uLiBUaGlzIGRldGFpbHMgd2lsbCBpbXBhY3QgdGhlIGVudGlyZSBwcm9qZWN0LCBzbyBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdCBmdWxseS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMzAgMDI6NDE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bWNfaGFzaCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9pcHY0L2lnbXAuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvaXB2NC9pZ21wLmM9MTM1Mj1zdGF0aWMgdm9pZCBpZ21wX2dyb3VwX2FkZGVkKHN0cnVjdCBpcF9tY19saXN0ICppbSlcbi0tXG5uZXQvaXB2NC9pZ21wLmMtMTM5OC1cbm5ldC9pcHY0L2lnbXAuYzoxMzk5OnN0YXRpYyB1MzIgaXBfbWNfaGFzaChjb25zdCBzdHJ1Y3QgaXBfbWNfbGlzdCAqaW0pXG5uZXQvaXB2NC9pZ21wLmMtMTQwMC17XG4tLVxubmV0L2lwdjQvaWdtcC5jLTE0MDMtXG5uZXQvaXB2NC9pZ21wLmM6MTQwNDpzdGF0aWMgdm9pZCBpcF9tY19oYXNoX2FkZChzdHJ1Y3QgaW5fZGV2aWNlICppbl9kZXYsXG5uZXQvaXB2NC9pZ21wLmMtMTQwNS1cdFx0XHQgICBzdHJ1Y3QgaXBfbWNfbGlzdCAqaW0pXG5uZXQvaXB2NC9pZ21wLmMtMTQwNi17XG5uZXQvaXB2NC9pZ21wLmM6MTQwNzpcdHN0cnVjdCBpcF9tY19saXN0IF9fcmN1ICoqbWNfaGFzaDtcbm5ldC9pcHY0L2lnbXAuYy0xNDA4LVx0dTMyIGhhc2g7XG5uZXQvaXB2NC9pZ21wLmMtMTQwOS1cbm5ldC9pcHY0L2lnbXAuYzoxNDEwOlx0bWNfaGFzaCA9IHJ0bmxfZGVyZWZlcmVuY2UoaW5fZGV2LVx1MDAzZW1jX2hhc2gpO1xubmV0L2lwdjQvaWdtcC5jOjE0MTE6XHRpZiAobWNfaGFzaCkge1xubmV0L2lwdjQvaWdtcC5jOjE0MTI6XHRcdGhhc2ggPSBpcF9tY19oYXNoKGltKTtcbm5ldC9pcHY0L2lnbXAuYzoxNDEzOlx0XHRpbS1cdTAwM2VuZXh0X2hhc2ggPSBtY19oYXNoW2hhc2hdO1xubmV0L2lwdjQvaWdtcC5jOjE0MTQ6XHRcdHJjdV9hc3NpZ25fcG9pbnRlcihtY19oYXNoW2hhc2hdLCBpbSk7XG5uZXQvaXB2NC9pZ21wLmMtMTQxNS1cdFx0cmV0dXJuO1xuLS1cbm5ldC9pcHY0L2lnbXAuYy0xNDIxLVxubmV0L2lwdjQvaWdtcC5jOjE0MjI6XHRtY19oYXNoID0ga3phbGxvYyhzaXplb2Yoc3RydWN0IGlwX21jX2xpc3QgKikgXHUwMDNjXHUwMDNjIE1DX0hBU0hfU1pfTE9HLFxubmV0L2lwdjQvaWdtcC5jLTE0MjMtXHRcdFx0ICBHRlBfS0VSTkVMKTtcbm5ldC9pcHY0L2lnbXAuYzoxNDI0Olx0aWYgKCFtY19oYXNoKVxubmV0L2lwdjQvaWdtcC5jLTE0MjUtXHRcdHJldHVybjtcbi0tXG5uZXQvaXB2NC9pZ21wLmMtMTQyNy1cdGZvcl9lYWNoX3BtY19ydG5sKGluX2RldiwgaW0pIHtcbm5ldC9pcHY0L2lnbXAuYzoxNDI4Olx0XHRoYXNoID0gaXBfbWNfaGFzaChpbSk7XG5uZXQvaXB2NC9pZ21wLmM6MTQyOTpcdFx0aW0tXHUwMDNlbmV4dF9oYXNoID0gbWNfaGFzaFtoYXNoXTtcbm5ldC9pcHY0L2lnbXAuYzoxNDMwOlx0XHRSQ1VfSU5JVF9QT0lOVEVSKG1jX2hhc2hbaGFzaF0sIGltKTtcbm5ldC9pcHY0L2lnbXAuYy0xNDMxLVx0fVxubmV0L2lwdjQvaWdtcC5jLTE0MzItXG5uZXQvaXB2NC9pZ21wLmM6MTQzMzpcdHJjdV9hc3NpZ25fcG9pbnRlcihpbl9kZXYtXHUwMDNlbWNfaGFzaCwgbWNfaGFzaCk7XG5uZXQvaXB2NC9pZ21wLmMtMTQzNC19XG5uZXQvaXB2NC9pZ21wLmMtMTQzNS1cbm5ldC9pcHY0L2lnbXAuYzoxNDM2OnN0YXRpYyB2b2lkIGlwX21jX2hhc2hfcmVtb3ZlKHN0cnVjdCBpbl9kZXZpY2UgKmluX2Rldixcbm5ldC9pcHY0L2lnbXAuYy0xNDM3LVx0XHRcdCAgICAgIHN0cnVjdCBpcF9tY19saXN0ICppbSlcbm5ldC9pcHY0L2lnbXAuYy0xNDM4LXtcbm5ldC9pcHY0L2lnbXAuYzoxNDM5Olx0c3RydWN0IGlwX21jX2xpc3QgX19yY3UgKiptY19oYXNoID0gcnRubF9kZXJlZmVyZW5jZShpbl9kZXYtXHUwMDNlbWNfaGFzaCk7XG5uZXQvaXB2NC9pZ21wLmMtMTQ0MC1cdHN0cnVjdCBpcF9tY19saXN0ICphdXg7XG5uZXQvaXB2NC9pZ21wLmMtMTQ0MS1cbm5ldC9pcHY0L2lnbXAuYzoxNDQyOlx0aWYgKCFtY19oYXNoKVxubmV0L2lwdjQvaWdtcC5jLTE0NDMtXHRcdHJldHVybjtcbm5ldC9pcHY0L2lnbXAuYzoxNDQ0Olx0bWNfaGFzaCAmIzQzOz0gaXBfbWNfaGFzaChpbSk7XG5uZXQvaXB2NC9pZ21wLmM6MTQ0NTpcdHdoaWxlICgoYXV4ID0gcnRubF9kZXJlZmVyZW5jZSgqbWNfaGFzaCkpICE9IGltKVxubmV0L2lwdjQvaWdtcC5jOjE0NDY6XHRcdG1jX2hhc2ggPSBcdTAwMjZhdXgtXHUwMDNlbmV4dF9oYXNoO1xubmV0L2lwdjQvaWdtcC5jOjE0NDc6XHQqbWNfaGFzaCA9IGltLVx1MDAzZW5leHRfaGFzaDtcbm5ldC9pcHY0L2lnbXAuYy0xNDQ4LX1cbi0tXG5uZXQvaXB2NC9pZ21wLmM9MTUxOD1zdGF0aWMgdm9pZCBfX19faXBfbWNfaW5jX2dyb3VwKHN0cnVjdCBpbl9kZXZpY2UgKmluX2RldiwgX19iZTMyIGFkZHIsXG4tLVxubmV0L2lwdjQvaWdtcC5jLTE1MjAte1xubmV0L2lwdjQvaWdtcC5jOjE1MjE6XHRzdHJ1Y3QgaXBfbWNfbGlzdCBfX3JjdSAqKm1jX2hhc2g7XG5uZXQvaXB2NC9pZ21wLmMtMTUyMi1cdHN0cnVjdCBpcF9tY19saXN0ICppbTtcbi0tXG5uZXQvaXB2NC9pZ21wLmMtMTUyNS1cbm5ldC9pcHY0L2lnbXAuYzoxNTI2Olx0bWNfaGFzaCA9IHJ0bmxfZGVyZWZlcmVuY2UoaW5fZGV2LVx1MDAzZW1jX2hhc2gpO1xubmV0L2lwdjQvaWdtcC5jOjE1Mjc6XHRpZiAobWNfaGFzaCkge1xubmV0L2lwdjQvaWdtcC5jLTE1MjgtXHRcdHUzMiBoYXNoID0gaGFzaF8zMigoX19mb3JjZSB1MzIpYWRkciwgTUNfSEFTSF9TWl9MT0cpO1xubmV0L2lwdjQvaWdtcC5jLTE1MjktXG5uZXQvaXB2NC9pZ21wLmM6MTUzMDpcdFx0Zm9yIChpbSA9IHJ0bmxfZGVyZWZlcmVuY2UobWNfaGFzaFtoYXNoXSk7XG5uZXQvaXB2NC9pZ21wLmMtMTUzMS1cdFx0ICAgICBpbTtcbi0tXG5uZXQvaXB2NC9pZ21wLmMtMTU3MS1cbm5ldC9pcHY0L2lnbXAuYzoxNTcyOlx0aXBfbWNfaGFzaF9hZGQoaW5fZGV2LCBpbSk7XG5uZXQvaXB2NC9pZ21wLmMtMTU3My1cbi0tXG5uZXQvaXB2NC9pZ21wLmM9MTc3Nj12b2lkIF9faXBfbWNfZGVjX2dyb3VwKHN0cnVjdCBpbl9kZXZpY2UgKmluX2RldiwgX19iZTMyIGFkZHIsIGdmcF90IGdmcClcbi0tXG5uZXQvaXB2NC9pZ21wLmMtMTc5MC1cdFx0XHRpZiAobmV3X3VzZXJzID09IDApIHtcbm5ldC9pcHY0L2lnbXAuYzoxNzkxOlx0XHRcdFx0aXBfbWNfaGFzaF9yZW1vdmUoaW5fZGV2LCBpKTtcbm5ldC9pcHY0L2lnbXAuYy0xNzkyLVx0XHRcdFx0KmlwID0gaS1cdTAwM2VuZXh0X3JjdTtcbi0tXG5uZXQvaXB2NC9pZ21wLmM9MTkxMj12b2lkIGlwX21jX2Rlc3Ryb3lfZGV2KHN0cnVjdCBpbl9kZXZpY2UgKmluX2Rldilcbi0tXG5uZXQvaXB2NC9pZ21wLmMtMTkyNS1cdFx0aW5fZGV2LVx1MDAzZW1jX2xpc3QgPSBpLVx1MDAzZW5leHRfcmN1O1xubmV0L2lwdjQvaWdtcC5jOjE5MjY6XHRcdGlwX21jX2hhc2hfcmVtb3ZlKGluX2RldiwgaSk7XG5uZXQvaXB2NC9pZ21wLmMtMTkyNy1cdFx0V1JJVEVfT05DRShpbl9kZXYtXHUwMDNlbWNfY291bnQsIGluX2Rldi1cdTAwM2VtY19jb3VudCAtIDEpO1xuLS1cbm5ldC9pcHY0L2lnbXAuYz0yODI2PWludCBpcF9jaGVja19tY19yY3Uoc3RydWN0IGluX2RldmljZSAqaW5fZGV2LCBfX2JlMzIgbWNfYWRkciwgX19iZTMyIHNyY19hZGRyLCB1OCBwcm90bylcbi0tXG5uZXQvaXB2NC9pZ21wLmMtMjgyOC1cdHN0cnVjdCBpcF9tY19saXN0ICppbTtcbm5ldC9pcHY0L2lnbXAuYzoyODI5Olx0c3RydWN0IGlwX21jX2xpc3QgX19yY3UgKiptY19oYXNoO1xubmV0L2lwdjQvaWdtcC5jLTI4MzAtXHRzdHJ1Y3QgaXBfc2ZfbGlzdCAqcHNmO1xuLS1cbm5ldC9pcHY0L2lnbXAuYy0yODMyLVxubmV0L2lwdjQvaWdtcC5jOjI4MzM6XHRtY19oYXNoID0gcmN1X2RlcmVmZXJlbmNlKGluX2Rldi1cdTAwM2VtY19oYXNoKTtcbm5ldC9pcHY0L2lnbXAuYzoyODM0Olx0aWYgKG1jX2hhc2gpIHtcbm5ldC9pcHY0L2lnbXAuYy0yODM1LVx0XHR1MzIgaGFzaCA9IGhhc2hfMzIoKF9fZm9yY2UgdTMyKW1jX2FkZHIsIE1DX0hBU0hfU1pfTE9HKTtcbm5ldC9pcHY0L2lnbXAuYy0yODM2LVxubmV0L2lwdjQvaWdtcC5jOjI4Mzc6XHRcdGZvciAoaW0gPSByY3VfZGVyZWZlcmVuY2UobWNfaGFzaFtoYXNoXSk7XG5uZXQvaXB2NC9pZ21wLmMtMjgzOC1cdFx0ICAgICBpbSAhPSBOVUxMO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8zMCAwMjo0MTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3Njk2CgkJCQkJCQlvdXRwdXQ6IDk1CgkJCQkJCQl0aG91Z2h0czogNjQyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFuYWx5c2lzIG9mIHRoZSBJUHY0IE11bHRpY2FzdCBDb2RlIE1vZGlmaWNhdGlvbioqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBNeSBpbml0aWFsIHRob3VnaHQgd2FzIHRvIGRvdWJsZS1jaGVjayB0aGUgZGVwZW5kZW5jaWVzLCBzcGVjaWZpY2FsbHkgd2hldGhlciBgSVBfTVVMVElDQVNUYCB3YXMgcmVxdWlyZWQgYmVjYXVzZSBpdCYjMzk7cyBhc3NvY2lhdGVkIHdpdGggSUdNUHYzIGFuZCBhZHZhbmNlZCByb3V0aW5nLiBCdXQgSSBxdWlja2x5IHJlYWxpemVkIHRoYXQgdGhlIGNvcmUgbXVsdGljYXN0IGdyb3VwIGpvaW5pbmcvbGVhdmluZyBmdW5jdGlvbnMgYXJlIGFsd2F5cyBhdmFpbGFibGUgaW4gSVB2NCwgcmVnYXJkbGVzcyBvZiB0aGF0IGNvbmZpZy4gYF9fX19pcF9tY19pbmNfZ3JvdXBgIGNvbmZpcm1lZCB0aGlzLCBhcyBpdCBkb2VzbiYjMzk7dCBoYXZlIGEgY29uZGl0aW9uYWwgY29tcGlsYXRpb24gYmFzZWQgb24gdGhlIGBJUF9NVUxUSUNBU1RgIGNvbmZpZy4gTXkgaW5pdGlhbCB0aG91Z2h0IHdhcyB0byBpbmNsdWRlIGl0IGFueXdheSwganVzdCB0byBiZSBzYWZlLCBidXQgdGhlbiB0aGUgcHJvbXB0IHJlbWluZGVkIG1lIHRvIGJlIHNwZWNpZmljLgoKTm93LCBmb2N1c2luZyBvbiB0aGUgY29kZSBpdHNlbGYsIGBpcF9tY19kZXN0cm95X2RldmAgaXMgdGhlIGZ1bmN0aW9uIHRoYXQmIzM5O3MgYmVpbmcgbW9kaWZpZWQuIEkgY2FuIHNlZSB0aGF0IGBpcF9tY19oYXNoX3JlbW92ZWAgaXMgY2FsbGVkIHdpdGhpbiB0aGUgY29kZS4gQW5kIEkgc2VlIHRoYXQgYGluZXRkZXZfZGVzdHJveWAgY2FsbHMgYGlwX21jX2Rlc3Ryb3lfZGV2YCwgd2hpY2ggaGVscHMgY2xhcmlmeSB0aGUgY2FsbCBjaGFpbi4KClJldmlld2luZyB0aGUgcGF0Y2gsIGl0JiMzOTtzIGltbWVkaWF0ZWx5IGNsZWFyIHRoYXQgdGhlIGNvZGUgbm93IGNhbGxzIGBpcF9tY19oYXNoX3JlbW92ZWAgdG8gcmVtb3ZlIHRoZSBtdWx0aWNhc3QgZ3JvdXAgZnJvbSB0aGUgaGFzaCB0YWJsZS4gVGhpcyBpcyBjcnVjaWFsIGJlY2F1c2UgaXQgYWRkcmVzc2VzIGEgYnVnIHdoZXJlIHRoZSBtdWx0aWNhc3QgZ3JvdXAgd2FzIHJlbW92ZWQgZnJvbSB0aGUgbGlua2VkIGxpc3QgKGBtY19saXN0YCkgYnV0ICpub3QqIGZyb20gdGhlIGhhc2ggdGFibGUgd2hlbiB0aGUgZGV2aWNlIGlzIGRlc3Ryb3llZC4gSXQmIzM5O3MgYSBjbGVhbiBmdW5jdGlvbmFsIGZpeC4gTm8gc3BlY2lmaWMgY29uZmlndXJhdGlvbnMgYXJlIG5lZWRlZCB0byBlbmFibGUgdGhpcyBjaGFuZ2UsIGFzIHRoaXMgaXMgY29yZSBJUHY0IG11bHRpY2FzdCBiZWhhdmlvci4gU28sIG5vIGNvbmZpZyBjaGFuZ2VzIG5lZWRlZCwgaXQmIzM5O3MgY29tcGlsZWQgYnkgZGVmYXVsdC4gSSBhbSBjb25maWRlbnQgaW4gdGhhdCBhc3Nlc3NtZW50LiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzMwIDAyOjQxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogW10sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtpcF9tY19kZXN0cm95X2RldiYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIGEgbWlzc2luZyBpcF9tY19oYXNoX3JlbW92ZSBjYWxsIGluIGlwX21jX2Rlc3Ryb3lfZGV2IHRvIGVuc3VyZSBtdWx0aWNhc3QgZ3JvdXBzIGFyZSBwcm9wZXJseSByZW1vdmVkIGZyb20gdGhlIGRldmljZSYjMzk7cyBtdWx0aWNhc3QgaGFzaCB0YWJsZSB3aGVuIHRoZSBkZXZpY2UgaXMgZGVzdHJveWVkLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgSVB2NCBtdWx0aWNhc3QgbG9naWMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7aXBfbWNfZGVzdHJveV9kZXYmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBhIG1pc3NpbmcgaXBfbWNfaGFzaF9yZW1vdmUgY2FsbCBpbiBpcF9tY19kZXN0cm95X2RldiB0byBlbnN1cmUgbXVsdGljYXN0IGdyb3VwcyBhcmUgcHJvcGVybHkgcmVtb3ZlZCBmcm9tIHRoZSBkZXZpY2UmIzM5O3MgbXVsdGljYXN0IGhhc2ggdGFibGUgd2hlbiB0aGUgZGV2aWNlIGlzIGRlc3Ryb3llZC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIElQdjQgbXVsdGljYXN0IGxvZ2ljLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDYtMzBUMDI6NDE6MjYuMjc5MzY3ODA3WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzI5Mzk0MDc0MjEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiaXBfbWNfZGVzdHJveV9kZXZcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIGEgbWlzc2luZyBpcF9tY19oYXNoX3JlbW92ZSBjYWxsIGluIGlwX21jX2Rlc3Ryb3lfZGV2IHRvIGVuc3VyZSBtdWx0aWNhc3QgZ3JvdXBzIGFyZSBwcm9wZXJseSByZW1vdmVkIGZyb20gdGhlIGRldmljZSdzIG11bHRpY2FzdCBoYXNoIHRhYmxlIHdoZW4gdGhlIGRldmljZSBpcyBkZXN0cm95ZWQuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBJUHY0IG11bHRpY2FzdCBsb2dpYy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMzBUMDI6NDE6MjYuMjc5Mzc3MzI3WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozODc0Mjk1NDIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCBkZmEyOTZlYTY5M2FhZjU1YzY2MjM2N2ZhMTNkOWM5ZDMwNTNlNGVhXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBUdWUgSnVuIDMwIDAyOjQxOjI1IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL25ldC9pcHY0L2lnbXAuYyBiL25ldC9pcHY0L2lnbXAuY1xcbmluZGV4IGI2MzM3YTQ3YzE0MTg1Li5hZjM4MDczYTgyMmRiZSAxMDA2NDRcXG4tLS0gYS9uZXQvaXB2NC9pZ21wLmNcXG4rKysgYi9uZXQvaXB2NC9pZ21wLmNcXG5AQCAtMTkyMyw2ICsxOTIzLDcgQEAgdm9pZCBpcF9tY19kZXN0cm95X2RldihzdHJ1Y3QgaW5fZGV2aWNlICppbl9kZXYpXFxuIFxcbiBcXHR3aGlsZSAoKGkgPSBydG5sX2RlcmVmZXJlbmNlKGluX2Rldi1cXHUwMDNlbWNfbGlzdCkpICE9IE5VTEwpIHtcXG4gXFx0XFx0aW5fZGV2LVxcdTAwM2VtY19saXN0ID0gaS1cXHUwMDNlbmV4dF9yY3U7XFxuK1xcdFxcdGlwX21jX2hhc2hfcmVtb3ZlKGluX2RldiwgaSk7XFxuIFxcdFxcdFdSSVRFX09OQ0UoaW5fZGV2LVxcdTAwM2VtY19jb3VudCwgaW5fZGV2LVxcdTAwM2VtY19jb3VudCAtIDEpO1xcbiBcXHRcXHRpcF9tY19jbGVhcl9zcmMoaSk7XFxuIFxcdFxcdGlwX21hX3B1dChpKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMzBUMDI6NDE6MjYuNjY3NzA4NjY5WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMjU1MTA1OTA0OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJpcF9tY19kZXN0cm95X2RldlwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgYSBtaXNzaW5nIGlwX21jX2hhc2hfcmVtb3ZlIGNhbGwgaW4gaXBfbWNfZGVzdHJveV9kZXYgdG8gZW5zdXJlIG11bHRpY2FzdCBncm91cHMgYXJlIHByb3Blcmx5IHJlbW92ZWQgZnJvbSB0aGUgZGV2aWNlJ3MgbXVsdGljYXN0IGhhc2ggdGFibGUgd2hlbiB0aGUgZGV2aWNlIGlzIGRlc3Ryb3llZC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIElQdjQgbXVsdGljYXN0IGxvZ2ljLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG5ldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0XG4gICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksXG4gICBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IGRmYTI5NmVhNjkzYWFmNTVjNjYyMzY3ZmExM2Q5YzlkMzA1M2U0ZWFcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVHVlIEp1biAzMCAwMjo0MToyNSAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL25ldC9pcHY0L2lnbXAuYyBiL25ldC9pcHY0L2lnbXAuY1xuaW5kZXggYjYzMzdhNDdjMTQxODUuLmFmMzgwNzNhODIyZGJlIDEwMDY0NFxuLS0tIGEvbmV0L2lwdjQvaWdtcC5jXG4rKysgYi9uZXQvaXB2NC9pZ21wLmNcbkBAIC0xOTIzLDYgKzE5MjMsNyBAQCB2b2lkIGlwX21jX2Rlc3Ryb3lfZGV2KHN0cnVjdCBpbl9kZXZpY2UgKmluX2RldilcbiBcbiBcdHdoaWxlICgoaSA9IHJ0bmxfZGVyZWZlcmVuY2UoaW5fZGV2LVx1MDAzZW1jX2xpc3QpKSAhPSBOVUxMKSB7XG4gXHRcdGluX2Rldi1cdTAwM2VtY19saXN0ID0gaS1cdTAwM2VuZXh0X3JjdTtcbitcdFx0aXBfbWNfaGFzaF9yZW1vdmUoaW5fZGV2LCBpKTtcbiBcdFx0V1JJVEVfT05DRShpbl9kZXYtXHUwMDNlbWNfY291bnQsIGluX2Rldi1cdTAwM2VtY19jb3VudCAtIDEpO1xuIFx0XHRpcF9tY19jbGVhcl9zcmMoaSk7XG4gXHRcdGlwX21hX3B1dChpKTtcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTMwVDAyOjQxOjI2LjY2NzcxMTE0OVoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM0OTg4NTYwNzEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBJR01QIFBhdGNoKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBmb3IgYG5ldC9pcHY0L2lnbXAuY2AuIEl0IHNlZW1zIHRoZXkndmUgYWRkZWQgYGlwX21jX2hhc2hfcmVtb3ZlKGluX2RldiwgaSk7YCB3aXRoaW4gdGhlIGBpcF9tY19kZXN0cm95X2RldmAgZnVuY3Rpb24uIFJpZ2h0IGF3YXksIEkgcmVjb2duaXplIHRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSByZWxhdGVkIHRvIElQIG11bHRpY2FzdC4gVGhlIGBpcF9tY19oYXNoX3JlbW92ZWAgY2FsbCBpbXBsaWVzIGFuIHVwZGF0ZSB0byB0aGUgbXVsdGljYXN0IGhhc2ggdGFibGUgZHVyaW5nIGRldmljZSBkZXN0cnVjdGlvbi4gVGhhdCdzIGludGVyZXN0aW5nLCBhbmQgcG90ZW50aWFsbHkgc2lnbmlmaWNhbnQuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBpbXBsaWNhdGlvbnMgb2YgdGhpcyBhZGRpdGlvbi4gVGltZSB0byBkaXZlIGludG8gdGhlIGBpcF9tY19kZXN0cm95X2RldmAgZnVuY3Rpb24gaXRzZWxmIGFuZCBzZWUgd2hhdCdzIGdvaW5nIG9uIHdpdGhpbiB0aGF0IGNvbnRleHQuIEknbGwgbmVlZCB0byBmb2xsb3cgdGhlIGxvZ2ljIGZsb3cgdGhlcmUgdG8gZnVsbHkgZ3Jhc3AgdGhlIGNoYW5nZSdzIGltcGFjdCBhbmQgaWYgaXQgaW50cm9kdWNlcyBhbnkgc2lkZSBlZmZlY3RzIG9yIHVuZm9yZXNlZW4gY29uc2VxdWVuY2VzIGluIHRoZSBtdWx0aWNhc3Qgc3Vic3lzdGVtLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxODU3LCJPdXRwdXRUb2tlbnMiOjM2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6OTQsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0zMFQwMjo0MTozMC4xNjY1NzAzMloiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2NTI0OTY3NCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJpcF9tY19kZXN0cm95X2RldlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvaXB2NC9pZ21wLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L2lwdjQvaWdtcC5jPTE4OTE9dm9pZCBpcF9tY191cChzdHJ1Y3QgaW5fZGV2aWNlICppbl9kZXYpXFxuLS1cXG5uZXQvaXB2NC9pZ21wLmMtMTkxMS1cXG5uZXQvaXB2NC9pZ21wLmM6MTkxMjp2b2lkIGlwX21jX2Rlc3Ryb3lfZGV2KHN0cnVjdCBpbl9kZXZpY2UgKmluX2RldilcXG5uZXQvaXB2NC9pZ21wLmMtMTkxMy17XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTMwVDAyOjQxOjMwLjIzMTgyOTI1NFoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM1MDM0NjQ1OTEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCdzIGRpdmUgaW50byB0aGlzLiBIZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgYXMgaWYgdGhleSdyZSBteSBvd246XG5cbioqSW52ZXN0aWdhdGluZyB0aGUgYGlwX21jX2Rlc3Ryb3lfZGV2YCBDb2RlKipcblxuQWxyaWdodCwgdGltZSB0byBnZXQgbXkgaGFuZHMgZGlydHkuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQncyBoYXBwZW5pbmcgYXJvdW5kIHRoYXQgYGlwX21jX2Rlc3Ryb3lfZGV2YCBmdW5jdGlvbi4gVGhpcyBsaWtlbHkgbWVhbnMgdHJhY2luZyB0aGUgZXhlY3V0aW9uIGZsb3cgYW5kIGxvb2tpbmcgYXQgdGhlIGNvbnRleHQgaW4gd2hpY2ggdGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQuIEknbSBnb2luZyB0byB3YW50IHRvIGV4YW1pbmUgdGhlIHN1cnJvdW5kaW5nIGNvZGUg4oCTIHRoZSBmdW5jdGlvbnMgdGhhdCBjYWxsICppbnRvKiBpdCwgYW5kIHRoZSBmdW5jdGlvbnMgaXQgY2FsbHMgKm91dCogdG8uIFNwZWNpZmljYWxseSwgSSdtIHRoaW5raW5nIGFib3V0IHRoZSBkYXRhIHN0cnVjdHVyZXMgYmVpbmcgbWFuaXB1bGF0ZWQgYXJvdW5kIHRoaXMgZnVuY3Rpb24uIFdoYXQga2luZCBvZiBtdWx0aWNhc3QgaW5mb3JtYXRpb24gaXMgYmVpbmcgZGVzdHJveWVkPyBXaGF0IHJlc291cmNlcyBhcmUgYmVpbmcgZnJlZWQ/IEFyZSB0aGVyZSBhbnkgcG90ZW50aWFsIHJhY2UgY29uZGl0aW9ucyBJIG5lZWQgdG8gYmUgYXdhcmUgb2Y/IEknbGwgcHJvYmFibHkgbmVlZCB0byBsb29rIGF0IGhvdyB0aGlzIGludGVyYWN0cyB3aXRoIHRoZSBvdmVyYWxsIG5ldHdvcmtpbmcgc3RhY2ssIGVzcGVjaWFsbHkgaG93IG11bHRpY2FzdCBpcyBoYW5kbGVkIHdpdGhpbiB0aGUga2VybmVsLiBUaW1lIHRvIG9wZW4gdGhlIGVkaXRvciBhbmQgc3RhcnQgbmF2aWdhdGluZyB0aGUgc291cmNlLiBMZXQncyBzZWUgaWYgdGhlcmUgYXJlIGFueSBvYnZpb3VzIG1lbW9yeSBtYW5hZ2VtZW50IGlzc3VlcyBvciBzeW5jaHJvbml6YXRpb24gcHJpbWl0aXZlcyBpbnZvbHZlZC4gSSdtIGV4cGVjdGluZyB0byBmaW5kIGEgdHlwaWNhbCBjbGVhbnVwIHJvdXRpbmUsIGJ1dCBJIHdhbnQgdG8gbWFrZSBzdXJlIGl0J3MgKnRob3JvdWdoKi4gQW55IHN1YnRsZSBtaXNzZWQgY2FzZXMgd2lsbCBiZSBpbW1lZGlhdGVseSBvYnZpb3VzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMjgyLCJPdXRwdXRUb2tlbnMiOjM4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMzBUMDI6NDE6MzMuNzM1Mjk2NjI1WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTc0ODgwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcIm5ldC9pcHY0L2lnbXAuY1wiLFxuICBcIkZpcnN0TGluZVwiOiAxOTEwLFxuICBcIkxpbmVDb3VudFwiOiAzMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIxOTEwOlxcdCAqL1xcbjE5MTE6XFx0XFxuMTkxMjpcXHR2b2lkIGlwX21jX2Rlc3Ryb3lfZGV2KHN0cnVjdCBpbl9kZXZpY2UgKmluX2RldilcXG4xOTEzOlxcdHtcXG4xOTE0OlxcdFxcdHN0cnVjdCBpcF9tY19saXN0ICppO1xcbjE5MTU6XFx0XFxuMTkxNjpcXHRcXHRBU1NFUlRfUlROTCgpO1xcbjE5MTc6XFx0XFxuMTkxODpcXHRcXHQvKiBEZWFjdGl2YXRlIHRpbWVycyAqL1xcbjE5MTk6XFx0XFx0aXBfbWNfZG93bihpbl9kZXYpO1xcbjE5MjA6XFx0I2lmZGVmIENPTkZJR19JUF9NVUxUSUNBU1RcXG4xOTIxOlxcdFxcdGlnbXB2M19jbGVhcl9kZWxyZWMoaW5fZGV2KTtcXG4xOTIyOlxcdCNlbmRpZlxcbjE5MjM6XFx0XFxuMTkyNDpcXHRcXHR3aGlsZSAoKGkgPSBydG5sX2RlcmVmZXJlbmNlKGluX2Rldi1cXHUwMDNlbWNfbGlzdCkpICE9IE5VTEwpIHtcXG4xOTI1OlxcdFxcdFxcdGluX2Rldi1cXHUwMDNlbWNfbGlzdCA9IGktXFx1MDAzZW5leHRfcmN1O1xcbjE5MjY6XFx0XFx0XFx0aXBfbWNfaGFzaF9yZW1vdmUoaW5fZGV2LCBpKTtcXG4xOTI3OlxcdFxcdFxcdFdSSVRFX09OQ0UoaW5fZGV2LVxcdTAwM2VtY19jb3VudCwgaW5fZGV2LVxcdTAwM2VtY19jb3VudCAtIDEpO1xcbjE5Mjg6XFx0XFx0XFx0aXBfbWNfY2xlYXJfc3JjKGkpO1xcbjE5Mjk6XFx0XFx0XFx0aXBfbWFfcHV0KGkpO1xcbjE5MzA6XFx0XFx0fVxcbjE5MzE6XFx0fVxcbjE5MzI6XFx0XFxuMTkzMzpcXHQvKiBSVE5MIGlzIGxvY2tlZCAqL1xcbjE5MzQ6XFx0c3RhdGljIHN0cnVjdCBpbl9kZXZpY2UgKmlwX21jX2ZpbmRfZGV2KHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IGlwX21yZXFuICppbXIpXFxuMTkzNTpcXHR7XFxuMTkzNjpcXHRcXHRzdHJ1Y3QgbmV0X2RldmljZSAqZGV2ID0gTlVMTDtcXG4xOTM3OlxcdFxcdHN0cnVjdCBpbl9kZXZpY2UgKmlkZXYgPSBOVUxMO1xcbjE5Mzg6XFx0XFxuMTkzOTpcXHRcXHRpZiAoaW1yLVxcdTAwM2VpbXJfaWZpbmRleCkge1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0zMFQwMjo0MTozMy43MzU0NzQyMzVaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMTAzNzA2NjM5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgSVAgTXVsdGljYXN0IERldmljZSBEZXN0cnVjdGlvbioqXG5cbk9rYXksIHNvIHRoZSBtb2RpZmljYXRpb24gY2VudGVycyBhcm91bmQgYGlwX21jX2Rlc3Ryb3lfZGV2YC4gVGhhdCBmdW5jdGlvbiBpcyB0cmlnZ2VyZWQgd2hlbiBhbiBgaW5fZGV2aWNlYCBnZXRzIGRlc3Ryb3llZCwgYW5kIHRoYXQgc291bmRzIGxpa2UgaXQgY291bGQgYmUgYSBzaWduaWZpY2FudCBwb2ludCBvZiBmYWlsdXJlIG9yIG9wdGltaXphdGlvbi4gTXkgbmV4dCBzdGVwIGlzIHRvIHVuZGVyc3RhbmQgdGhlIHNjb3BlLiBJIG5lZWQgdG8gcGlucG9pbnQgZXZlcnkgaW5zdGFuY2Ugd2hlcmUgYGlwX21jX2Rlc3Ryb3lfZGV2YCBpcyBhY3R1YWxseSBjYWxsZWQgd2l0aGluIHRoZSBjb2RlYmFzZS4gS25vd2luZyB0aGF0IGNhbGwgY2hhaW4gaXMgYWJzb2x1dGVseSBjcnVjaWFsIGZvciB1bmRlcnN0YW5kaW5nIHRoZSBpbXBhY3Qgb2YgdGhpcyBjaGFuZ2UgYW5kIGZvciBhdm9pZGluZyBhbnkgcmVncmVzc2lvbnMuIExldCdzIHNlZSB3aGF0IHRoZSBjYWxsIGdyYXBoIHJldmVhbHMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMwNDksIk91dHB1dFRva2VucyI6MzIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0NSwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTMwVDAyOjQxOjM2LjgzOTE4MzU5NFoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNzQzMjAzODQsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiaXBfbWNfZGVzdHJveV9kZXZcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L2lwdjQvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9pcHY0L2RldmluZXQuYz0zMTQ9c3RhdGljIHZvaWQgaW5ldGRldl9kZXN0cm95KHN0cnVjdCBpbl9kZXZpY2UgKmluX2RldilcXG4tLVxcbm5ldC9pcHY0L2RldmluZXQuYy0zMjQtXFxubmV0L2lwdjQvZGV2aW5ldC5jOjMyNTpcXHRpcF9tY19kZXN0cm95X2Rldihpbl9kZXYpO1xcbm5ldC9pcHY0L2RldmluZXQuYy0zMjYtXFxuLS1cXG5uZXQvaXB2NC9pZ21wLmM9MTg5MT12b2lkIGlwX21jX3VwKHN0cnVjdCBpbl9kZXZpY2UgKmluX2RldilcXG4tLVxcbm5ldC9pcHY0L2lnbXAuYy0xOTExLVxcbm5ldC9pcHY0L2lnbXAuYzoxOTEyOnZvaWQgaXBfbWNfZGVzdHJveV9kZXYoc3RydWN0IGluX2RldmljZSAqaW5fZGV2KVxcbm5ldC9pcHY0L2lnbXAuYy0xOTEzLXtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMzBUMDI6NDE6MzcuMTEzNTEzMzY4WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDIyOTY3MTM1MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipGdXp6aW5nIFRhcmdldDogSVB2NCBEZXZpY2UgRGVzdHJ1Y3Rpb24qKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIGNvZGUgYW5kIGl0J3MgY2FsbGVkIGZyb20gYGluZXRkZXZfZGVzdHJveWAuIFRoYXQgZnVuY3Rpb24ncyBpbnZva2VkIHdoZW4gYW4gSVB2NCBkZXZpY2UgaXMgdGFrZW4gZG93bi4gUmlnaHQgYXdheSwgSSBzZWUgdGhpcyBhcyBhIHBvdGVudGlhbCBmdW5jdGlvbmFsIGNoYW5nZSwgZGVmaW5pdGVseSBzb21ldGhpbmcgd29ydGggdGFyZ2V0aW5nIHdpdGggZnV6emluZy4gTXkgbWFpbiBmb2N1cyBzeW1ib2wgaGVyZSBpcyBnb2luZyB0byBiZSBgaXBfbWNfZGVzdHJveV9kZXZgLlxuXG5JIG5lZWQgdG8gcXVpY2tseSBjaGVjayB0aGUgY29uZmlndXJhdGlvbiBkZXBlbmRlbmNpZXMuIExldCBtZSBzZWUuLi4gSSBzcG90IGBDT05GSUdfSVBfTVVMVElDQVNUYCBhcm91bmQgdGhhdCBgaWdtcHYzX2NsZWFyX2RlbHJlYyhpbl9kZXYpO2AgY2FsbCBpbiB0aGUgc2FtZSBmdW5jdGlvbiwgd2hpY2ggaXMgdXNlZnVsIGluZm9ybWF0aW9uLCBidXQgdGhlIHBhcnQgSSdtIGFjdHVhbGx5IGludGVyZXN0ZWQgaW4sIHRoZSBgaXBfbWNfZGVzdHJveV9kZXZgIGZ1bmN0aW9uIGl0c2VsZiBhbmQgdGhlIHNwZWNpZmljIGNvZGUgSSdtIGFuYWx5emluZywgYXJlICpvdXRzaWRlKiB0aGF0IHBhcnRpY3VsYXIgY29uZmlnLiBXYWl0LCBhY3R1YWxseSwgYWZ0ZXIgYSBtb21lbnQncyBjb25zaWRlcmF0aW9uLCBpdCBsb29rcyBsaWtlIGBpcF9tY19kZXN0cm95X2RldmAgaXMgYWx3YXlzIGNvbXBpbGVkIGlmIGBuZXQvaXB2NC9pZ21wLmNgIGlzIGNvbXBpbGVkLiBPa2F5LCBzbyBubyBzcGVjaWZpYywgbmFycm93IGNvbmZpZyBkZXBlbmRlbmNpZXMgdGhhdCBJIG5lZWQgdG8gYmUgYXdhcmUgb2YgaGVyZS4gVG8gY29uZmlybSB0aGF0LCBsZXQncyB0YWtlIGEgcXVpY2sgbG9vayBhdCB0aGUgYG5ldC9pcHY0L01ha2VmaWxlYC5cblxuXG4iLCJJbnB1dFRva2VucyI6MzQ0OSwiT3V0cHV0VG9rZW5zIjozMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE1OSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0zMFQwMjo0MTo0MS4zNDMxODg4NThaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjY0ODU1ODY0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImlnbXAub1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvaXB2NC9NYWtlZmlsZVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvaXB2NC9NYWtlZmlsZT02PW9iai15ICAgICA6PSByb3V0ZS5vIGluZXRwZWVyLm8gcHJvdG9jb2wubyBcXFxcXFxuLS1cXG5uZXQvaXB2NC9NYWtlZmlsZS0xMy1cXHQgICAgIHRjcF9vZmZsb2FkLm8gdGNwX3BsYi5vIGRhdGFncmFtLm8gcmF3Lm8gdWRwLm8gXFxcXFxcbm5ldC9pcHY0L01ha2VmaWxlOjE0OlxcdCAgICAgdWRwX29mZmxvYWQubyBhcnAubyBpY21wLm8gZGV2aW5ldC5vIGFmX2luZXQubyBpZ21wLm8gXFxcXFxcbm5ldC9pcHY0L01ha2VmaWxlLTE1LVxcdCAgICAgZmliX2Zyb250ZW5kLm8gZmliX3NlbWFudGljcy5vIGZpYl90cmllLm8gZmliX25vdGlmaWVyLm8gXFxcXFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0zMFQwMjo0MTo0MS40MDgwNjIzODJaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzI3MTk0MjE2MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBteSBvd246XG5cbioqSW52ZXN0aWdhdGluZyB0aGUgSVB2NCBEZXBlbmRlbmN5IGluIGBpZ21wLm9gIGFuZCBgaXBfbWNfaGFzaF9yZW1vdmVgKipcblxuQWxyaWdodCwgc28gSSdtIGxvb2tpbmcgYXQgYGlnbXAub2AgYW5kIGl0IHNlZW1zIGxpa2UgaXQncyAqYWx3YXlzKiBjb21waWxlZCBzcGVjaWZpY2FsbHkgZm9yIElQdjQuIFRoYXQgcmFpc2VzIGEgcXVlc3Rpb24sIEkgd29uZGVyIGlmIHRoZXJlJ3MgYW55IGNvbmZpZ3VyYXRpb24gdGhhdCBtaWdodCBpbmZsdWVuY2UgdGhhdD8gT3IgaXMgaXQgYSBmdW5kYW1lbnRhbCBhcmNoaXRlY3R1cmFsIGRlY2lzaW9uIGluIHRoaXMgcGFydGljdWxhciBtb2R1bGU/IEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjb25zdHJhaW50cyBoZXJlLCBhbmQgd2hhdCBkcml2ZXMgdGhlIGRlcGVuZGVuY3kgb24gdGhlIElQdjQgaW1wbGVtZW50YXRpb24uIEknbGwgbmVlZCB0byBkaWcgZGVlcGVyIGludG8gdGhlIGJ1aWxkIHN5c3RlbSBhbmQgdGhlIHN1cnJvdW5kaW5nIGNvZGUgdG8gdW5kZXJzdGFuZCB0aGUgcmF0aW9uYWxlIGJlaGluZCB0aGF0LlxuXG5BbmQgd2hpbGUgSSdtIGF0IGl0LCB3aGF0IGFib3V0IGBpcF9tY19oYXNoX3JlbW92ZWA/IEFyZSB0aGVyZSBhbnkgYXNzb2NpYXRlZCBjb25maWd1cmF0aW9ucyBvciBzZXR0aW5ncyByZWxhdGVkIHRvIHRoYXQgZnVuY3Rpb24/IEkgd2FudCB0byBtYWtlIHN1cmUgSSBkb24ndCBtaXNzIGFueXRoaW5nIHRoYXQgY291bGQgYmUgcmVsZXZhbnQgdG8gdGhlIGluaXRpYWwgb2JzZXJ2YXRpb24uIFRoaXMgY291bGQgYmUgaW1wb3J0YW50IGZvciB1bmRlcnN0YW5kaW5nIG11bHRpY2FzdCBhZGRyZXNzIGNsZWFudXAgYW5kIGhvdyBpdCBpbnRlcmFjdHMgd2l0aCB0aGUgdW5kZXJseWluZyByb3V0aW5nIHRhYmxlcy4gTGV0IG1lIGNoZWNrIHRoZSBkb2N1bWVudGF0aW9uIGFuZCBleGlzdGluZyBjb2RlIGNvbW1lbnRzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0MDQ5LCJPdXRwdXRUb2tlbnMiOjM2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMzBUMDI6NDE6NDQuNjgwMDA4Mzc1WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2MDM5ODY2NCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJpcF9tY19oYXNoX3JlbW92ZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvaXB2NC9pZ21wLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L2lwdjQvaWdtcC5jPTE0MDQ9c3RhdGljIHZvaWQgaXBfbWNfaGFzaF9hZGQoc3RydWN0IGluX2RldmljZSAqaW5fZGV2LFxcbi0tXFxubmV0L2lwdjQvaWdtcC5jLTE0MzUtXFxubmV0L2lwdjQvaWdtcC5jOjE0MzY6c3RhdGljIHZvaWQgaXBfbWNfaGFzaF9yZW1vdmUoc3RydWN0IGluX2RldmljZSAqaW5fZGV2LFxcbm5ldC9pcHY0L2lnbXAuYy0xNDM3LVxcdFxcdFxcdCAgICAgIHN0cnVjdCBpcF9tY19saXN0ICppbSlcXG4tLVxcbm5ldC9pcHY0L2lnbXAuYz0xNzc2PXZvaWQgX19pcF9tY19kZWNfZ3JvdXAoc3RydWN0IGluX2RldmljZSAqaW5fZGV2LCBfX2JlMzIgYWRkciwgZ2ZwX3QgZ2ZwKVxcbi0tXFxubmV0L2lwdjQvaWdtcC5jLTE3OTAtXFx0XFx0XFx0aWYgKG5ld191c2VycyA9PSAwKSB7XFxubmV0L2lwdjQvaWdtcC5jOjE3OTE6XFx0XFx0XFx0XFx0aXBfbWNfaGFzaF9yZW1vdmUoaW5fZGV2LCBpKTtcXG5uZXQvaXB2NC9pZ21wLmMtMTc5Mi1cXHRcXHRcXHRcXHQqaXAgPSBpLVxcdTAwM2VuZXh0X3JjdTtcXG4tLVxcbm5ldC9pcHY0L2lnbXAuYz0xOTEyPXZvaWQgaXBfbWNfZGVzdHJveV9kZXYoc3RydWN0IGluX2RldmljZSAqaW5fZGV2KVxcbi0tXFxubmV0L2lwdjQvaWdtcC5jLTE5MjUtXFx0XFx0aW5fZGV2LVxcdTAwM2VtY19saXN0ID0gaS1cXHUwMDNlbmV4dF9yY3U7XFxubmV0L2lwdjQvaWdtcC5jOjE5MjY6XFx0XFx0aXBfbWNfaGFzaF9yZW1vdmUoaW5fZGV2LCBpKTtcXG5uZXQvaXB2NC9pZ21wLmMtMTkyNy1cXHRcXHRXUklURV9PTkNFKGluX2Rldi1cXHUwMDNlbWNfY291bnQsIGluX2Rldi1cXHUwMDNlbWNfY291bnQgLSAxKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMzBUMDI6NDE6NDQuNzQwNDE1Njg5WiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMwNTEzNDMyMTUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqSW52ZXN0aWdhdGluZyB0aGUgQ29tcGlsYXRpb24gb2YgYGlwX21jX2hhc2hfcmVtb3ZlYCoqXG5cbk9rYXksIHNvIGBpcF9tY19oYXNoX3JlbW92ZWAgaXMgYWx3YXlzIHNob3dpbmcgdXAgaW4gdGhlIGNvbXBpbGVkIGNvZGUuIFRoYXQncyBhIGJpdCBvZGQuIEkga25vdyBgSVBfTVVMVElDQVNUYCBpcyB0aGlzIGNvbmZpZ3VyYXRpb24gb3B0aW9uIHRoYXQgY29udHJvbHMgdGhlIGluY2x1c2lvbiBvZiBJR01QdjMgYW5kIG90aGVyIG11bHRpY2FzdCBnb29kaWVzLiBCdXQgdGhlIHByZXNlbmNlIG9mIGBpZ21wLmNgIGluIHRoZSBjb21waWxlZCBidWlsZCBzZWVtcyBpbmRlcGVuZGVudCBvZiB3aGV0aGVyIG9yIG5vdCB0aGlzIGBJUF9NVUxUSUNBU1RgIGZsYWcgaXMgc2V0LiBNeSBtYWluIHF1ZXN0aW9uIGhlcmUgaXM6IGRvZXMgYGlwX21jX2hhc2hfcmVtb3ZlYCBhY3R1YWxseSAqZG8qIGFueXRoaW5nIGlmIGBJUF9NVUxUSUNBU1RgIGlzIGRpc2FibGVkPyBPciBpcyB0aGlzIGp1c3QgZGVhZCBjb2RlIHRoYXQncyBnZXR0aW5nIGluY2x1ZGVkIHVubmVjZXNzYXJpbHk/IEkgbmVlZCB0byBmaWd1cmUgb3V0IGlmIHRoZXJlJ3MgYSBmdW5jdGlvbmFsIGRlcGVuZGVuY3kgYmV0d2VlbiB0aGUgdHdvLCBvciBpZiB0aGlzIGZ1bmN0aW9uIGlzIGFsd2F5cyBjb21waWxlZCByZWdhcmRsZXNzIG9mIHdoYXQgbXVsdGljYXN0IGZlYXR1cmVzIGFyZSBlbmFibGVkLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0NzQ3LCJPdXRwdXRUb2tlbnMiOjM4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NzEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMzBUMDI6NDE6NDcuNzkxNzYxNTU0WiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE3MjE2MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJuZXQvaXB2NC9pZ21wLmNcIixcbiAgXCJGaXJzdExpbmVcIjogMTQzMCxcbiAgXCJMaW5lQ291bnRcIjogMjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiMTQzMDpcXHRcXHRcXHRSQ1VfSU5JVF9QT0lOVEVSKG1jX2hhc2hbaGFzaF0sIGltKTtcXG4xNDMxOlxcdFxcdH1cXG4xNDMyOlxcdFxcbjE0MzM6XFx0XFx0cmN1X2Fzc2lnbl9wb2ludGVyKGluX2Rldi1cXHUwMDNlbWNfaGFzaCwgbWNfaGFzaCk7XFxuMTQzNDpcXHR9XFxuMTQzNTpcXHRcXG4xNDM2OlxcdHN0YXRpYyB2b2lkIGlwX21jX2hhc2hfcmVtb3ZlKHN0cnVjdCBpbl9kZXZpY2UgKmluX2RldixcXG4xNDM3OlxcdFxcdFxcdFxcdCAgICAgIHN0cnVjdCBpcF9tY19saXN0ICppbSlcXG4xNDM4OlxcdHtcXG4xNDM5OlxcdFxcdHN0cnVjdCBpcF9tY19saXN0IF9fcmN1ICoqbWNfaGFzaCA9IHJ0bmxfZGVyZWZlcmVuY2UoaW5fZGV2LVxcdTAwM2VtY19oYXNoKTtcXG4xNDQwOlxcdFxcdHN0cnVjdCBpcF9tY19saXN0ICphdXg7XFxuMTQ0MTpcXHRcXG4xNDQyOlxcdFxcdGlmICghbWNfaGFzaClcXG4xNDQzOlxcdFxcdFxcdHJldHVybjtcXG4xNDQ0OlxcdFxcdG1jX2hhc2ggKz0gaXBfbWNfaGFzaChpbSk7XFxuMTQ0NTpcXHRcXHR3aGlsZSAoKGF1eCA9IHJ0bmxfZGVyZWZlcmVuY2UoKm1jX2hhc2gpKSAhPSBpbSlcXG4xNDQ2OlxcdFxcdFxcdG1jX2hhc2ggPSBcXHUwMDI2YXV4LVxcdTAwM2VuZXh0X2hhc2g7XFxuMTQ0NzpcXHRcXHQqbWNfaGFzaCA9IGltLVxcdTAwM2VuZXh0X2hhc2g7XFxuMTQ0ODpcXHR9XFxuMTQ0OTpcXHRcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMzBUMDI6NDE6NDcuNzkxOTM2NjE0WiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI1OTE5MDI0ODksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0J3MgaW50ZXJuYWwgbW9ub2xvZ3VlOlxuXG4qKkRlbHZpbmcgaW50byBNZW1vcnkgQWxsb2NhdGlvbioqXG5cbkFscmlnaHQsIHNvIEknbSB0aGlua2luZyBhYm91dCB0aGlzIGNvZGUuIEl0IHNlZW1zIHRvIGJlIHdvcmtpbmcgd2l0aCBgaW5fZGV2LVx1MDAzZW1jX2hhc2hgLiBNeSBpbW1lZGlhdGUgcXVlc3Rpb24gaXM6ICp3aGVuKiBleGFjdGx5IGlzIHRoaXMgYG1jX2hhc2hgIGFsbG9jYXRlZD8gSXMgaXQgZHVyaW5nIHRoZSBpbml0aWFsaXphdGlvbiBvZiBgaW5fZGV2YCwgcGVyaGFwcz8gT3IgaXMgaXQgbGF6aWx5IGFsbG9jYXRlZCBvbiBmaXJzdCB1c2U/IEtub3dpbmcgdGhpcyBpcyBhYnNvbHV0ZWx5IGNydWNpYWwgZm9yIHVuZGVyc3RhbmRpbmcgcG90ZW50aWFsIHJhY2UgY29uZGl0aW9ucywgbWVtb3J5IGxlYWtzLCBhbmQgb3ZlcmFsbCBwcm9ncmFtIHN0YWJpbGl0eS4gSSBuZWVkIHRvIHRyYWNlIGJhY2sgdGhlIHVzYWdlIG9mIGBpbl9kZXZgIGFuZCBgbWNfaGFzaGAgdG8gZmlndXJlIG91dCB0aGUgZXhhY3QgcG9pbnQgb2YgYWxsb2NhdGlvbi4gVGhpcyBkZXRhaWxzIHdpbGwgaW1wYWN0IHRoZSBlbnRpcmUgcHJvamVjdCwgc28gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaXQgZnVsbHkuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjUzNTQsIk91dHB1dFRva2VucyI6MzIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMiwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTMwVDAyOjQxOjUwLjM4Mzg0MjkyM1oiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjYyNjQ2OTE0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm1jX2hhc2hcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L2lwdjQvaWdtcC5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9pcHY0L2lnbXAuYz0xMzUyPXN0YXRpYyB2b2lkIGlnbXBfZ3JvdXBfYWRkZWQoc3RydWN0IGlwX21jX2xpc3QgKmltKVxcbi0tXFxubmV0L2lwdjQvaWdtcC5jLTEzOTgtXFxubmV0L2lwdjQvaWdtcC5jOjEzOTk6c3RhdGljIHUzMiBpcF9tY19oYXNoKGNvbnN0IHN0cnVjdCBpcF9tY19saXN0ICppbSlcXG5uZXQvaXB2NC9pZ21wLmMtMTQwMC17XFxuLS1cXG5uZXQvaXB2NC9pZ21wLmMtMTQwMy1cXG5uZXQvaXB2NC9pZ21wLmM6MTQwNDpzdGF0aWMgdm9pZCBpcF9tY19oYXNoX2FkZChzdHJ1Y3QgaW5fZGV2aWNlICppbl9kZXYsXFxubmV0L2lwdjQvaWdtcC5jLTE0MDUtXFx0XFx0XFx0ICAgc3RydWN0IGlwX21jX2xpc3QgKmltKVxcbm5ldC9pcHY0L2lnbXAuYy0xNDA2LXtcXG5uZXQvaXB2NC9pZ21wLmM6MTQwNzpcXHRzdHJ1Y3QgaXBfbWNfbGlzdCBfX3JjdSAqKm1jX2hhc2g7XFxubmV0L2lwdjQvaWdtcC5jLTE0MDgtXFx0dTMyIGhhc2g7XFxubmV0L2lwdjQvaWdtcC5jLTE0MDktXFxubmV0L2lwdjQvaWdtcC5jOjE0MTA6XFx0bWNfaGFzaCA9IHJ0bmxfZGVyZWZlcmVuY2UoaW5fZGV2LVxcdTAwM2VtY19oYXNoKTtcXG5uZXQvaXB2NC9pZ21wLmM6MTQxMTpcXHRpZiAobWNfaGFzaCkge1xcbm5ldC9pcHY0L2lnbXAuYzoxNDEyOlxcdFxcdGhhc2ggPSBpcF9tY19oYXNoKGltKTtcXG5uZXQvaXB2NC9pZ21wLmM6MTQxMzpcXHRcXHRpbS1cXHUwMDNlbmV4dF9oYXNoID0gbWNfaGFzaFtoYXNoXTtcXG5uZXQvaXB2NC9pZ21wLmM6MTQxNDpcXHRcXHRyY3VfYXNzaWduX3BvaW50ZXIobWNfaGFzaFtoYXNoXSwgaW0pO1xcbm5ldC9pcHY0L2lnbXAuYy0xNDE1LVxcdFxcdHJldHVybjtcXG4tLVxcbm5ldC9pcHY0L2lnbXAuYy0xNDIxLVxcbm5ldC9pcHY0L2lnbXAuYzoxNDIyOlxcdG1jX2hhc2ggPSBremFsbG9jKHNpemVvZihzdHJ1Y3QgaXBfbWNfbGlzdCAqKSBcXHUwMDNjXFx1MDAzYyBNQ19IQVNIX1NaX0xPRyxcXG5uZXQvaXB2NC9pZ21wLmMtMTQyMy1cXHRcXHRcXHQgIEdGUF9LRVJORUwpO1xcbm5ldC9pcHY0L2lnbXAuYzoxNDI0OlxcdGlmICghbWNfaGFzaClcXG5uZXQvaXB2NC9pZ21wLmMtMTQyNS1cXHRcXHRyZXR1cm47XFxuLS1cXG5uZXQvaXB2NC9pZ21wLmMtMTQyNy1cXHRmb3JfZWFjaF9wbWNfcnRubChpbl9kZXYsIGltKSB7XFxubmV0L2lwdjQvaWdtcC5jOjE0Mjg6XFx0XFx0aGFzaCA9IGlwX21jX2hhc2goaW0pO1xcbm5ldC9pcHY0L2lnbXAuYzoxNDI5OlxcdFxcdGltLVxcdTAwM2VuZXh0X2hhc2ggPSBtY19oYXNoW2hhc2hdO1xcbm5ldC9pcHY0L2lnbXAuYzoxNDMwOlxcdFxcdFJDVV9JTklUX1BPSU5URVIobWNfaGFzaFtoYXNoXSwgaW0pO1xcbm5ldC9pcHY0L2lnbXAuYy0xNDMxLVxcdH1cXG5uZXQvaXB2NC9pZ21wLmMtMTQzMi1cXG5uZXQvaXB2NC9pZ21wLmM6MTQzMzpcXHRyY3VfYXNzaWduX3BvaW50ZXIoaW5fZGV2LVxcdTAwM2VtY19oYXNoLCBtY19oYXNoKTtcXG5uZXQvaXB2NC9pZ21wLmMtMTQzNC19XFxubmV0L2lwdjQvaWdtcC5jLTE0MzUtXFxubmV0L2lwdjQvaWdtcC5jOjE0MzY6c3RhdGljIHZvaWQgaXBfbWNfaGFzaF9yZW1vdmUoc3RydWN0IGluX2RldmljZSAqaW5fZGV2LFxcbm5ldC9pcHY0L2lnbXAuYy0xNDM3LVxcdFxcdFxcdCAgICAgIHN0cnVjdCBpcF9tY19saXN0ICppbSlcXG5uZXQvaXB2NC9pZ21wLmMtMTQzOC17XFxubmV0L2lwdjQvaWdtcC5jOjE0Mzk6XFx0c3RydWN0IGlwX21jX2xpc3QgX19yY3UgKiptY19oYXNoID0gcnRubF9kZXJlZmVyZW5jZShpbl9kZXYtXFx1MDAzZW1jX2hhc2gpO1xcbm5ldC9pcHY0L2lnbXAuYy0xNDQwLVxcdHN0cnVjdCBpcF9tY19saXN0ICphdXg7XFxubmV0L2lwdjQvaWdtcC5jLTE0NDEtXFxubmV0L2lwdjQvaWdtcC5jOjE0NDI6XFx0aWYgKCFtY19oYXNoKVxcbm5ldC9pcHY0L2lnbXAuYy0xNDQzLVxcdFxcdHJldHVybjtcXG5uZXQvaXB2NC9pZ21wLmM6MTQ0NDpcXHRtY19oYXNoICs9IGlwX21jX2hhc2goaW0pO1xcbm5ldC9pcHY0L2lnbXAuYzoxNDQ1OlxcdHdoaWxlICgoYXV4ID0gcnRubF9kZXJlZmVyZW5jZSgqbWNfaGFzaCkpICE9IGltKVxcbm5ldC9pcHY0L2lnbXAuYzoxNDQ2OlxcdFxcdG1jX2hhc2ggPSBcXHUwMDI2YXV4LVxcdTAwM2VuZXh0X2hhc2g7XFxubmV0L2lwdjQvaWdtcC5jOjE0NDc6XFx0Km1jX2hhc2ggPSBpbS1cXHUwMDNlbmV4dF9oYXNoO1xcbm5ldC9pcHY0L2lnbXAuYy0xNDQ4LX1cXG4tLVxcbm5ldC9pcHY0L2lnbXAuYz0xNTE4PXN0YXRpYyB2b2lkIF9fX19pcF9tY19pbmNfZ3JvdXAoc3RydWN0IGluX2RldmljZSAqaW5fZGV2LCBfX2JlMzIgYWRkcixcXG4tLVxcbm5ldC9pcHY0L2lnbXAuYy0xNTIwLXtcXG5uZXQvaXB2NC9pZ21wLmM6MTUyMTpcXHRzdHJ1Y3QgaXBfbWNfbGlzdCBfX3JjdSAqKm1jX2hhc2g7XFxubmV0L2lwdjQvaWdtcC5jLTE1MjItXFx0c3RydWN0IGlwX21jX2xpc3QgKmltO1xcbi0tXFxubmV0L2lwdjQvaWdtcC5jLTE1MjUtXFxubmV0L2lwdjQvaWdtcC5jOjE1MjY6XFx0bWNfaGFzaCA9IHJ0bmxfZGVyZWZlcmVuY2UoaW5fZGV2LVxcdTAwM2VtY19oYXNoKTtcXG5uZXQvaXB2NC9pZ21wLmM6MTUyNzpcXHRpZiAobWNfaGFzaCkge1xcbm5ldC9pcHY0L2lnbXAuYy0xNTI4LVxcdFxcdHUzMiBoYXNoID0gaGFzaF8zMigoX19mb3JjZSB1MzIpYWRkciwgTUNfSEFTSF9TWl9MT0cpO1xcbm5ldC9pcHY0L2lnbXAuYy0xNTI5LVxcbm5ldC9pcHY0L2lnbXAuYzoxNTMwOlxcdFxcdGZvciAoaW0gPSBydG5sX2RlcmVmZXJlbmNlKG1jX2hhc2hbaGFzaF0pO1xcbm5ldC9pcHY0L2lnbXAuYy0xNTMxLVxcdFxcdCAgICAgaW07XFxuLS1cXG5uZXQvaXB2NC9pZ21wLmMtMTU3MS1cXG5uZXQvaXB2NC9pZ21wLmM6MTU3MjpcXHRpcF9tY19oYXNoX2FkZChpbl9kZXYsIGltKTtcXG5uZXQvaXB2NC9pZ21wLmMtMTU3My1cXG4tLVxcbm5ldC9pcHY0L2lnbXAuYz0xNzc2PXZvaWQgX19pcF9tY19kZWNfZ3JvdXAoc3RydWN0IGluX2RldmljZSAqaW5fZGV2LCBfX2JlMzIgYWRkciwgZ2ZwX3QgZ2ZwKVxcbi0tXFxubmV0L2lwdjQvaWdtcC5jLTE3OTAtXFx0XFx0XFx0aWYgKG5ld191c2VycyA9PSAwKSB7XFxubmV0L2lwdjQvaWdtcC5jOjE3OTE6XFx0XFx0XFx0XFx0aXBfbWNfaGFzaF9yZW1vdmUoaW5fZGV2LCBpKTtcXG5uZXQvaXB2NC9pZ21wLmMtMTc5Mi1cXHRcXHRcXHRcXHQqaXAgPSBpLVxcdTAwM2VuZXh0X3JjdTtcXG4tLVxcbm5ldC9pcHY0L2lnbXAuYz0xOTEyPXZvaWQgaXBfbWNfZGVzdHJveV9kZXYoc3RydWN0IGluX2RldmljZSAqaW5fZGV2KVxcbi0tXFxubmV0L2lwdjQvaWdtcC5jLTE5MjUtXFx0XFx0aW5fZGV2LVxcdTAwM2VtY19saXN0ID0gaS1cXHUwMDNlbmV4dF9yY3U7XFxubmV0L2lwdjQvaWdtcC5jOjE5MjY6XFx0XFx0aXBfbWNfaGFzaF9yZW1vdmUoaW5fZGV2LCBpKTtcXG5uZXQvaXB2NC9pZ21wLmMtMTkyNy1cXHRcXHRXUklURV9PTkNFKGluX2Rldi1cXHUwMDNlbWNfY291bnQsIGluX2Rldi1cXHUwMDNlbWNfY291bnQgLSAxKTtcXG4tLVxcbm5ldC9pcHY0L2lnbXAuYz0yODI2PWludCBpcF9jaGVja19tY19yY3Uoc3RydWN0IGluX2RldmljZSAqaW5fZGV2LCBfX2JlMzIgbWNfYWRkciwgX19iZTMyIHNyY19hZGRyLCB1OCBwcm90bylcXG4tLVxcbm5ldC9pcHY0L2lnbXAuYy0yODI4LVxcdHN0cnVjdCBpcF9tY19saXN0ICppbTtcXG5uZXQvaXB2NC9pZ21wLmM6MjgyOTpcXHRzdHJ1Y3QgaXBfbWNfbGlzdCBfX3JjdSAqKm1jX2hhc2g7XFxubmV0L2lwdjQvaWdtcC5jLTI4MzAtXFx0c3RydWN0IGlwX3NmX2xpc3QgKnBzZjtcXG4tLVxcbm5ldC9pcHY0L2lnbXAuYy0yODMyLVxcbm5ldC9pcHY0L2lnbXAuYzoyODMzOlxcdG1jX2hhc2ggPSByY3VfZGVyZWZlcmVuY2UoaW5fZGV2LVxcdTAwM2VtY19oYXNoKTtcXG5uZXQvaXB2NC9pZ21wLmM6MjgzNDpcXHRpZiAobWNfaGFzaCkge1xcbm5ldC9pcHY0L2lnbXAuYy0yODM1LVxcdFxcdHUzMiBoYXNoID0gaGFzaF8zMigoX19mb3JjZSB1MzIpbWNfYWRkciwgTUNfSEFTSF9TWl9MT0cpO1xcbm5ldC9pcHY0L2lnbXAuYy0yODM2LVxcbm5ldC9pcHY0L2lnbXAuYzoyODM3OlxcdFxcdGZvciAoaW0gPSByY3VfZGVyZWZlcmVuY2UobWNfaGFzaFtoYXNoXSk7XFxubmV0L2lwdjQvaWdtcC5jLTI4MzgtXFx0XFx0ICAgICBpbSAhPSBOVUxMO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0zMFQwMjo0MTo1MC42NDY0OTc4NzdaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6ODU3MjIzMjM5MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBbmFseXNpcyBvZiB0aGUgSVB2NCBNdWx0aWNhc3QgQ29kZSBNb2RpZmljYXRpb24qKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIE15IGluaXRpYWwgdGhvdWdodCB3YXMgdG8gZG91YmxlLWNoZWNrIHRoZSBkZXBlbmRlbmNpZXMsIHNwZWNpZmljYWxseSB3aGV0aGVyIGBJUF9NVUxUSUNBU1RgIHdhcyByZXF1aXJlZCBiZWNhdXNlIGl0J3MgYXNzb2NpYXRlZCB3aXRoIElHTVB2MyBhbmQgYWR2YW5jZWQgcm91dGluZy4gQnV0IEkgcXVpY2tseSByZWFsaXplZCB0aGF0IHRoZSBjb3JlIG11bHRpY2FzdCBncm91cCBqb2luaW5nL2xlYXZpbmcgZnVuY3Rpb25zIGFyZSBhbHdheXMgYXZhaWxhYmxlIGluIElQdjQsIHJlZ2FyZGxlc3Mgb2YgdGhhdCBjb25maWcuIGBfX19faXBfbWNfaW5jX2dyb3VwYCBjb25maXJtZWQgdGhpcywgYXMgaXQgZG9lc24ndCBoYXZlIGEgY29uZGl0aW9uYWwgY29tcGlsYXRpb24gYmFzZWQgb24gdGhlIGBJUF9NVUxUSUNBU1RgIGNvbmZpZy4gTXkgaW5pdGlhbCB0aG91Z2h0IHdhcyB0byBpbmNsdWRlIGl0IGFueXdheSwganVzdCB0byBiZSBzYWZlLCBidXQgdGhlbiB0aGUgcHJvbXB0IHJlbWluZGVkIG1lIHRvIGJlIHNwZWNpZmljLlxuXG5Ob3csIGZvY3VzaW5nIG9uIHRoZSBjb2RlIGl0c2VsZiwgYGlwX21jX2Rlc3Ryb3lfZGV2YCBpcyB0aGUgZnVuY3Rpb24gdGhhdCdzIGJlaW5nIG1vZGlmaWVkLiBJIGNhbiBzZWUgdGhhdCBgaXBfbWNfaGFzaF9yZW1vdmVgIGlzIGNhbGxlZCB3aXRoaW4gdGhlIGNvZGUuIEFuZCBJIHNlZSB0aGF0IGBpbmV0ZGV2X2Rlc3Ryb3lgIGNhbGxzIGBpcF9tY19kZXN0cm95X2RldmAsIHdoaWNoIGhlbHBzIGNsYXJpZnkgdGhlIGNhbGwgY2hhaW4uXG5cblJldmlld2luZyB0aGUgcGF0Y2gsIGl0J3MgaW1tZWRpYXRlbHkgY2xlYXIgdGhhdCB0aGUgY29kZSBub3cgY2FsbHMgYGlwX21jX2hhc2hfcmVtb3ZlYCB0byByZW1vdmUgdGhlIG11bHRpY2FzdCBncm91cCBmcm9tIHRoZSBoYXNoIHRhYmxlLiBUaGlzIGlzIGNydWNpYWwgYmVjYXVzZSBpdCBhZGRyZXNzZXMgYSBidWcgd2hlcmUgdGhlIG11bHRpY2FzdCBncm91cCB3YXMgcmVtb3ZlZCBmcm9tIHRoZSBsaW5rZWQgbGlzdCAoYG1jX2xpc3RgKSBidXQgKm5vdCogZnJvbSB0aGUgaGFzaCB0YWJsZSB3aGVuIHRoZSBkZXZpY2UgaXMgZGVzdHJveWVkLiBJdCdzIGEgY2xlYW4gZnVuY3Rpb25hbCBmaXguIE5vIHNwZWNpZmljIGNvbmZpZ3VyYXRpb25zIGFyZSBuZWVkZWQgdG8gZW5hYmxlIHRoaXMgY2hhbmdlLCBhcyB0aGlzIGlzIGNvcmUgSVB2NCBtdWx0aWNhc3QgYmVoYXZpb3IuIFNvLCBubyBjb25maWcgY2hhbmdlcyBuZWVkZWQsIGl0J3MgY29tcGlsZWQgYnkgZGVmYXVsdC4gSSBhbSBjb25maWRlbnQgaW4gdGhhdCBhc3Nlc3NtZW50LiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjc2OTYsIk91dHB1dFRva2VucyI6OTUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2NDIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMzBUMDI6NDE6NTkuMjE4NzMyNTM4WiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzMxMTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJpcF9tY19kZXN0cm95X2RldlwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgYSBtaXNzaW5nIGlwX21jX2hhc2hfcmVtb3ZlIGNhbGwgaW4gaXBfbWNfZGVzdHJveV9kZXYgdG8gZW5zdXJlIG11bHRpY2FzdCBncm91cHMgYXJlIHByb3Blcmx5IHJlbW92ZWQgZnJvbSB0aGUgZGV2aWNlJ3MgbXVsdGljYXN0IGhhc2ggdGFibGUgd2hlbiB0aGUgZGV2aWNlIGlzIGRlc3Ryb3llZC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIElQdjQgbXVsdGljYXN0IGxvZ2ljLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImlwX21jX2Rlc3Ryb3lfZGV2XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBhIG1pc3NpbmcgaXBfbWNfaGFzaF9yZW1vdmUgY2FsbCBpbiBpcF9tY19kZXN0cm95X2RldiB0byBlbnN1cmUgbXVsdGljYXN0IGdyb3VwcyBhcmUgcHJvcGVybHkgcmVtb3ZlZCBmcm9tIHRoZSBkZXZpY2UncyBtdWx0aWNhc3QgaGFzaCB0YWJsZSB3aGVuIHRoZSBkZXZpY2UgaXMgZGVzdHJveWVkLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgSVB2NCBtdWx0aWNhc3QgbG9naWMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowfzd6c[0].run-triage(0) Phase: Succeeded StartedAt: 2026-06-30 02:29:43 +0000 UTC FinishedAt: 2026-06-30 02:42:00 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git", "commit_hash": "805185b7c7a1069e407b6f7b3bc98e44d415f484", "config_name": "upstream-apparmor-kasan.config", "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git", "commit_hash": "805185b7c7a1069e407b6f7b3bc98e44d415f484", "config_name": "upstream-apparmor-kasan.config", "series_id": "1f5e4510-25bd-409d-a974-27e112ee672e" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "ip_mc_destroy_dev" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzMwIDAyOjQxPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7aXBfbWNfZGVzdHJveV9kZXYmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBhIG1pc3NpbmcgaXBfbWNfaGFzaF9yZW1vdmUgY2FsbCBpbiBpcF9tY19kZXN0cm95X2RldiB0byBlbnN1cmUgbXVsdGljYXN0IGdyb3VwcyBhcmUgcHJvcGVybHkgcmVtb3ZlZCBmcm9tIHRoZSBkZXZpY2UmIzM5O3MgbXVsdGljYXN0IGhhc2ggdGFibGUgd2hlbiB0aGUgZGV2aWNlIGlzIGRlc3Ryb3llZC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIElQdjQgbXVsdGljYXN0IGxvZ2ljLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzMwIDAyOjQxPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgZGZhMjk2ZWE2OTNhYWY1NWM2NjIzNjdmYTEzZDljOWQzMDUzZTRlYVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUdWUgSnVuIDMwIDAyOjQxOjI1IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL25ldC9pcHY0L2lnbXAuYyBiL25ldC9pcHY0L2lnbXAuY1xuaW5kZXggYjYzMzdhNDdjMTQxODUuLmFmMzgwNzNhODIyZGJlIDEwMDY0NFxuLS0tIGEvbmV0L2lwdjQvaWdtcC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvaXB2NC9pZ21wLmNcbkBAIC0xOTIzLDYgJiM0MzsxOTIzLDcgQEAgdm9pZCBpcF9tY19kZXN0cm95X2RldihzdHJ1Y3QgaW5fZGV2aWNlICppbl9kZXYpXG4gXG4gXHR3aGlsZSAoKGkgPSBydG5sX2RlcmVmZXJlbmNlKGluX2Rldi1cdTAwM2VtY19saXN0KSkgIT0gTlVMTCkge1xuIFx0XHRpbl9kZXYtXHUwMDNlbWNfbGlzdCA9IGktXHUwMDNlbmV4dF9yY3U7XG4mIzQzO1x0XHRpcF9tY19oYXNoX3JlbW92ZShpbl9kZXYsIGkpO1xuIFx0XHRXUklURV9PTkNFKGluX2Rldi1cdTAwM2VtY19jb3VudCwgaW5fZGV2LVx1MDAzZW1jX2NvdW50IC0gMSk7XG4gXHRcdGlwX21jX2NsZWFyX3NyYyhpKTtcbiBcdFx0aXBfbWFfcHV0KGkpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzMwIDAyOjQxPC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7aXBfbWNfZGVzdHJveV9kZXYmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBhIG1pc3NpbmcgaXBfbWNfaGFzaF9yZW1vdmUgY2FsbCBpbiBpcF9tY19kZXN0cm95X2RldiB0byBlbnN1cmUgbXVsdGljYXN0IGdyb3VwcyBhcmUgcHJvcGVybHkgcmVtb3ZlZCBmcm9tIHRoZSBkZXZpY2UmIzM5O3MgbXVsdGljYXN0IGhhc2ggdGFibGUgd2hlbiB0aGUgZGV2aWNlIGlzIGRlc3Ryb3llZC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIElQdjQgbXVsdGljYXN0IGxvZ2ljLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdAogICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksCiAgIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCBkZmEyOTZlYTY5M2FhZjU1YzY2MjM2N2ZhMTNkOWM5ZDMwNTNlNGVhCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFR1ZSBKdW4gMzAgMDI6NDE6MjUgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9uZXQvaXB2NC9pZ21wLmMgYi9uZXQvaXB2NC9pZ21wLmMKaW5kZXggYjYzMzdhNDdjMTQxODUuLmFmMzgwNzNhODIyZGJlIDEwMDY0NAotLS0gYS9uZXQvaXB2NC9pZ21wLmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L2lwdjQvaWdtcC5jCkBAIC0xOTIzLDYgJiM0MzsxOTIzLDcgQEAgdm9pZCBpcF9tY19kZXN0cm95X2RldihzdHJ1Y3QgaW5fZGV2aWNlICppbl9kZXYpCiAKIAl3aGlsZSAoKGkgPSBydG5sX2RlcmVmZXJlbmNlKGluX2Rldi0mZ3Q7bWNfbGlzdCkpICE9IE5VTEwpIHsKIAkJaW5fZGV2LSZndDttY19saXN0ID0gaS0mZ3Q7bmV4dF9yY3U7CiYjNDM7CQlpcF9tY19oYXNoX3JlbW92ZShpbl9kZXYsIGkpOwogCQlXUklURV9PTkNFKGluX2Rldi0mZ3Q7bWNfY291bnQsIGluX2Rldi0mZ3Q7bWNfY291bnQgLSAxKTsKIAkJaXBfbWNfY2xlYXJfc3JjKGkpOwogCQlpcF9tYV9wdXQoaSk7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzMwIDAyOjQxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE4NTcKCQkJCQkJCW91dHB1dDogMzYKCQkJCQkJCXRob3VnaHRzOiA5NAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIElHTVAgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggZm9yIGBuZXQvaXB2NC9pZ21wLmNgLiBJdCBzZWVtcyB0aGV5JiMzOTt2ZSBhZGRlZCBgaXBfbWNfaGFzaF9yZW1vdmUoaW5fZGV2LCBpKTtgIHdpdGhpbiB0aGUgYGlwX21jX2Rlc3Ryb3lfZGV2YCBmdW5jdGlvbi4gUmlnaHQgYXdheSwgSSByZWNvZ25pemUgdGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHJlbGF0ZWQgdG8gSVAgbXVsdGljYXN0LiBUaGUgYGlwX21jX2hhc2hfcmVtb3ZlYCBjYWxsIGltcGxpZXMgYW4gdXBkYXRlIHRvIHRoZSBtdWx0aWNhc3QgaGFzaCB0YWJsZSBkdXJpbmcgZGV2aWNlIGRlc3RydWN0aW9uLiBUaGF0JiMzOTtzIGludGVyZXN0aW5nLCBhbmQgcG90ZW50aWFsbHkgc2lnbmlmaWNhbnQuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBpbXBsaWNhdGlvbnMgb2YgdGhpcyBhZGRpdGlvbi4gVGltZSB0byBkaXZlIGludG8gdGhlIGBpcF9tY19kZXN0cm95X2RldmAgZnVuY3Rpb24gaXRzZWxmIGFuZCBzZWUgd2hhdCYjMzk7cyBnb2luZyBvbiB3aXRoaW4gdGhhdCBjb250ZXh0LiBJJiMzOTtsbCBuZWVkIHRvIGZvbGxvdyB0aGUgbG9naWMgZmxvdyB0aGVyZSB0byBmdWxseSBncmFzcCB0aGUgY2hhbmdlJiMzOTtzIGltcGFjdCBhbmQgaWYgaXQgaW50cm9kdWNlcyBhbnkgc2lkZSBlZmZlY3RzIG9yIHVuZm9yZXNlZW4gY29uc2VxdWVuY2VzIGluIHRoZSBtdWx0aWNhc3Qgc3Vic3lzdGVtLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzMwIDAyOjQxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2lwX21jX2Rlc3Ryb3lfZGV2JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L2lwdjQvaWdtcC5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9pcHY0L2lnbXAuYz0xODkxPXZvaWQgaXBfbWNfdXAoc3RydWN0IGluX2RldmljZSAqaW5fZGV2KVxuLS1cbm5ldC9pcHY0L2lnbXAuYy0xOTExLVxubmV0L2lwdjQvaWdtcC5jOjE5MTI6dm9pZCBpcF9tY19kZXN0cm95X2RldihzdHJ1Y3QgaW5fZGV2aWNlICppbl9kZXYpXG5uZXQvaXB2NC9pZ21wLmMtMTkxMy17XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMzAgMDI6NDE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjI4MgoJCQkJCQkJb3V0cHV0OiAzOAoJCQkJCQkJdGhvdWdodHM6IDE2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoaXMuIEhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgYXMgaWYgdGhleSYjMzk7cmUgbXkgb3duOgoKKipJbnZlc3RpZ2F0aW5nIHRoZSBgaXBfbWNfZGVzdHJveV9kZXZgIENvZGUqKgoKQWxyaWdodCwgdGltZSB0byBnZXQgbXkgaGFuZHMgZGlydHkuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQmIzM5O3MgaGFwcGVuaW5nIGFyb3VuZCB0aGF0IGBpcF9tY19kZXN0cm95X2RldmAgZnVuY3Rpb24uIFRoaXMgbGlrZWx5IG1lYW5zIHRyYWNpbmcgdGhlIGV4ZWN1dGlvbiBmbG93IGFuZCBsb29raW5nIGF0IHRoZSBjb250ZXh0IGluIHdoaWNoIHRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkLiBJJiMzOTttIGdvaW5nIHRvIHdhbnQgdG8gZXhhbWluZSB0aGUgc3Vycm91bmRpbmcgY29kZSDigJMgdGhlIGZ1bmN0aW9ucyB0aGF0IGNhbGwgKmludG8qIGl0LCBhbmQgdGhlIGZ1bmN0aW9ucyBpdCBjYWxscyAqb3V0KiB0by4gU3BlY2lmaWNhbGx5LCBJJiMzOTttIHRoaW5raW5nIGFib3V0IHRoZSBkYXRhIHN0cnVjdHVyZXMgYmVpbmcgbWFuaXB1bGF0ZWQgYXJvdW5kIHRoaXMgZnVuY3Rpb24uIFdoYXQga2luZCBvZiBtdWx0aWNhc3QgaW5mb3JtYXRpb24gaXMgYmVpbmcgZGVzdHJveWVkPyBXaGF0IHJlc291cmNlcyBhcmUgYmVpbmcgZnJlZWQ/IEFyZSB0aGVyZSBhbnkgcG90ZW50aWFsIHJhY2UgY29uZGl0aW9ucyBJIG5lZWQgdG8gYmUgYXdhcmUgb2Y/IEkmIzM5O2xsIHByb2JhYmx5IG5lZWQgdG8gbG9vayBhdCBob3cgdGhpcyBpbnRlcmFjdHMgd2l0aCB0aGUgb3ZlcmFsbCBuZXR3b3JraW5nIHN0YWNrLCBlc3BlY2lhbGx5IGhvdyBtdWx0aWNhc3QgaXMgaGFuZGxlZCB3aXRoaW4gdGhlIGtlcm5lbC4gVGltZSB0byBvcGVuIHRoZSBlZGl0b3IgYW5kIHN0YXJ0IG5hdmlnYXRpbmcgdGhlIHNvdXJjZS4gTGV0JiMzOTtzIHNlZSBpZiB0aGVyZSBhcmUgYW55IG9idmlvdXMgbWVtb3J5IG1hbmFnZW1lbnQgaXNzdWVzIG9yIHN5bmNocm9uaXphdGlvbiBwcmltaXRpdmVzIGludm9sdmVkLiBJJiMzOTttIGV4cGVjdGluZyB0byBmaW5kIGEgdHlwaWNhbCBjbGVhbnVwIHJvdXRpbmUsIGJ1dCBJIHdhbnQgdG8gbWFrZSBzdXJlIGl0JiMzOTtzICp0aG9yb3VnaCouIEFueSBzdWJ0bGUgbWlzc2VkIGNhc2VzIHdpbGwgYmUgaW1tZWRpYXRlbHkgb2J2aW91cy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8zMCAwMjo0MTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O25ldC9pcHY0L2lnbXAuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDE5MTAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMzAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7MTkxMDpcdCAqL1xuMTkxMTpcdFxuMTkxMjpcdHZvaWQgaXBfbWNfZGVzdHJveV9kZXYoc3RydWN0IGluX2RldmljZSAqaW5fZGV2KVxuMTkxMzpcdHtcbjE5MTQ6XHRcdHN0cnVjdCBpcF9tY19saXN0ICppO1xuMTkxNTpcdFxuMTkxNjpcdFx0QVNTRVJUX1JUTkwoKTtcbjE5MTc6XHRcbjE5MTg6XHRcdC8qIERlYWN0aXZhdGUgdGltZXJzICovXG4xOTE5Olx0XHRpcF9tY19kb3duKGluX2Rldik7XG4xOTIwOlx0I2lmZGVmIENPTkZJR19JUF9NVUxUSUNBU1RcbjE5MjE6XHRcdGlnbXB2M19jbGVhcl9kZWxyZWMoaW5fZGV2KTtcbjE5MjI6XHQjZW5kaWZcbjE5MjM6XHRcbjE5MjQ6XHRcdHdoaWxlICgoaSA9IHJ0bmxfZGVyZWZlcmVuY2UoaW5fZGV2LVx1MDAzZW1jX2xpc3QpKSAhPSBOVUxMKSB7XG4xOTI1Olx0XHRcdGluX2Rldi1cdTAwM2VtY19saXN0ID0gaS1cdTAwM2VuZXh0X3JjdTtcbjE5MjY6XHRcdFx0aXBfbWNfaGFzaF9yZW1vdmUoaW5fZGV2LCBpKTtcbjE5Mjc6XHRcdFx0V1JJVEVfT05DRShpbl9kZXYtXHUwMDNlbWNfY291bnQsIGluX2Rldi1cdTAwM2VtY19jb3VudCAtIDEpO1xuMTkyODpcdFx0XHRpcF9tY19jbGVhcl9zcmMoaSk7XG4xOTI5Olx0XHRcdGlwX21hX3B1dChpKTtcbjE5MzA6XHRcdH1cbjE5MzE6XHR9XG4xOTMyOlx0XG4xOTMzOlx0LyogUlROTCBpcyBsb2NrZWQgKi9cbjE5MzQ6XHRzdGF0aWMgc3RydWN0IGluX2RldmljZSAqaXBfbWNfZmluZF9kZXYoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3QgaXBfbXJlcW4gKmltcilcbjE5MzU6XHR7XG4xOTM2Olx0XHRzdHJ1Y3QgbmV0X2RldmljZSAqZGV2ID0gTlVMTDtcbjE5Mzc6XHRcdHN0cnVjdCBpbl9kZXZpY2UgKmlkZXYgPSBOVUxMO1xuMTkzODpcdFxuMTkzOTpcdFx0aWYgKGltci1cdTAwM2VpbXJfaWZpbmRleCkge1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzMwIDAyOjQxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMwNDkKCQkJCQkJCW91dHB1dDogMzIKCQkJCQkJCXRob3VnaHRzOiA0NQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIElQIE11bHRpY2FzdCBEZXZpY2UgRGVzdHJ1Y3Rpb24qKgoKT2theSwgc28gdGhlIG1vZGlmaWNhdGlvbiBjZW50ZXJzIGFyb3VuZCBgaXBfbWNfZGVzdHJveV9kZXZgLiBUaGF0IGZ1bmN0aW9uIGlzIHRyaWdnZXJlZCB3aGVuIGFuIGBpbl9kZXZpY2VgIGdldHMgZGVzdHJveWVkLCBhbmQgdGhhdCBzb3VuZHMgbGlrZSBpdCBjb3VsZCBiZSBhIHNpZ25pZmljYW50IHBvaW50IG9mIGZhaWx1cmUgb3Igb3B0aW1pemF0aW9uLiBNeSBuZXh0IHN0ZXAgaXMgdG8gdW5kZXJzdGFuZCB0aGUgc2NvcGUuIEkgbmVlZCB0byBwaW5wb2ludCBldmVyeSBpbnN0YW5jZSB3aGVyZSBgaXBfbWNfZGVzdHJveV9kZXZgIGlzIGFjdHVhbGx5IGNhbGxlZCB3aXRoaW4gdGhlIGNvZGViYXNlLiBLbm93aW5nIHRoYXQgY2FsbCBjaGFpbiBpcyBhYnNvbHV0ZWx5IGNydWNpYWwgZm9yIHVuZGVyc3RhbmRpbmcgdGhlIGltcGFjdCBvZiB0aGlzIGNoYW5nZSBhbmQgZm9yIGF2b2lkaW5nIGFueSByZWdyZXNzaW9ucy4gTGV0JiMzOTtzIHNlZSB3aGF0IHRoZSBjYWxsIGdyYXBoIHJldmVhbHMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMzAgMDI6NDE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7aXBfbWNfZGVzdHJveV9kZXYmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvaXB2NC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L2lwdjQvZGV2aW5ldC5jPTMxND1zdGF0aWMgdm9pZCBpbmV0ZGV2X2Rlc3Ryb3koc3RydWN0IGluX2RldmljZSAqaW5fZGV2KVxuLS1cbm5ldC9pcHY0L2RldmluZXQuYy0zMjQtXG5uZXQvaXB2NC9kZXZpbmV0LmM6MzI1Olx0aXBfbWNfZGVzdHJveV9kZXYoaW5fZGV2KTtcbm5ldC9pcHY0L2RldmluZXQuYy0zMjYtXG4tLVxubmV0L2lwdjQvaWdtcC5jPTE4OTE9dm9pZCBpcF9tY191cChzdHJ1Y3QgaW5fZGV2aWNlICppbl9kZXYpXG4tLVxubmV0L2lwdjQvaWdtcC5jLTE5MTEtXG5uZXQvaXB2NC9pZ21wLmM6MTkxMjp2b2lkIGlwX21jX2Rlc3Ryb3lfZGV2KHN0cnVjdCBpbl9kZXZpY2UgKmluX2Rldilcbm5ldC9pcHY0L2lnbXAuYy0xOTEzLXtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8zMCAwMjo0MTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNDQ5CgkJCQkJCQlvdXRwdXQ6IDMwCgkJCQkJCQl0aG91Z2h0czogMTU5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkZ1enppbmcgVGFyZ2V0OiBJUHY0IERldmljZSBEZXN0cnVjdGlvbioqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBjb2RlIGFuZCBpdCYjMzk7cyBjYWxsZWQgZnJvbSBgaW5ldGRldl9kZXN0cm95YC4gVGhhdCBmdW5jdGlvbiYjMzk7cyBpbnZva2VkIHdoZW4gYW4gSVB2NCBkZXZpY2UgaXMgdGFrZW4gZG93bi4gUmlnaHQgYXdheSwgSSBzZWUgdGhpcyBhcyBhIHBvdGVudGlhbCBmdW5jdGlvbmFsIGNoYW5nZSwgZGVmaW5pdGVseSBzb21ldGhpbmcgd29ydGggdGFyZ2V0aW5nIHdpdGggZnV6emluZy4gTXkgbWFpbiBmb2N1cyBzeW1ib2wgaGVyZSBpcyBnb2luZyB0byBiZSBgaXBfbWNfZGVzdHJveV9kZXZgLgoKSSBuZWVkIHRvIHF1aWNrbHkgY2hlY2sgdGhlIGNvbmZpZ3VyYXRpb24gZGVwZW5kZW5jaWVzLiBMZXQgbWUgc2VlLi4uIEkgc3BvdCBgQ09ORklHX0lQX01VTFRJQ0FTVGAgYXJvdW5kIHRoYXQgYGlnbXB2M19jbGVhcl9kZWxyZWMoaW5fZGV2KTtgIGNhbGwgaW4gdGhlIHNhbWUgZnVuY3Rpb24sIHdoaWNoIGlzIHVzZWZ1bCBpbmZvcm1hdGlvbiwgYnV0IHRoZSBwYXJ0IEkmIzM5O20gYWN0dWFsbHkgaW50ZXJlc3RlZCBpbiwgdGhlIGBpcF9tY19kZXN0cm95X2RldmAgZnVuY3Rpb24gaXRzZWxmIGFuZCB0aGUgc3BlY2lmaWMgY29kZSBJJiMzOTttIGFuYWx5emluZywgYXJlICpvdXRzaWRlKiB0aGF0IHBhcnRpY3VsYXIgY29uZmlnLiBXYWl0LCBhY3R1YWxseSwgYWZ0ZXIgYSBtb21lbnQmIzM5O3MgY29uc2lkZXJhdGlvbiwgaXQgbG9va3MgbGlrZSBgaXBfbWNfZGVzdHJveV9kZXZgIGlzIGFsd2F5cyBjb21waWxlZCBpZiBgbmV0L2lwdjQvaWdtcC5jYCBpcyBjb21waWxlZC4gT2theSwgc28gbm8gc3BlY2lmaWMsIG5hcnJvdyBjb25maWcgZGVwZW5kZW5jaWVzIHRoYXQgSSBuZWVkIHRvIGJlIGF3YXJlIG9mIGhlcmUuIFRvIGNvbmZpcm0gdGhhdCwgbGV0JiMzOTtzIHRha2UgYSBxdWljayBsb29rIGF0IHRoZSBgbmV0L2lwdjQvTWFrZWZpbGVgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8zMCAwMjo0MTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtpZ21wLm8mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvaXB2NC9NYWtlZmlsZSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvaXB2NC9NYWtlZmlsZT02PW9iai15ICAgICA6PSByb3V0ZS5vIGluZXRwZWVyLm8gcHJvdG9jb2wubyBcXFxuLS1cbm5ldC9pcHY0L01ha2VmaWxlLTEzLVx0ICAgICB0Y3Bfb2ZmbG9hZC5vIHRjcF9wbGIubyBkYXRhZ3JhbS5vIHJhdy5vIHVkcC5vIFxcXG5uZXQvaXB2NC9NYWtlZmlsZToxNDpcdCAgICAgdWRwX29mZmxvYWQubyBhcnAubyBpY21wLm8gZGV2aW5ldC5vIGFmX2luZXQubyBpZ21wLm8gXFxcbm5ldC9pcHY0L01ha2VmaWxlLTE1LVx0ICAgICBmaWJfZnJvbnRlbmQubyBmaWJfc2VtYW50aWNzLm8gZmliX3RyaWUubyBmaWJfbm90aWZpZXIubyBcXFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8zMCAwMjo0MTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0MDQ5CgkJCQkJCQlvdXRwdXQ6IDM2CgkJCQkJCQl0aG91Z2h0czogMjkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIG15IG93bjoKCioqSW52ZXN0aWdhdGluZyB0aGUgSVB2NCBEZXBlbmRlbmN5IGluIGBpZ21wLm9gIGFuZCBgaXBfbWNfaGFzaF9yZW1vdmVgKioKCkFscmlnaHQsIHNvIEkmIzM5O20gbG9va2luZyBhdCBgaWdtcC5vYCBhbmQgaXQgc2VlbXMgbGlrZSBpdCYjMzk7cyAqYWx3YXlzKiBjb21waWxlZCBzcGVjaWZpY2FsbHkgZm9yIElQdjQuIFRoYXQgcmFpc2VzIGEgcXVlc3Rpb24sIEkgd29uZGVyIGlmIHRoZXJlJiMzOTtzIGFueSBjb25maWd1cmF0aW9uIHRoYXQgbWlnaHQgaW5mbHVlbmNlIHRoYXQ/IE9yIGlzIGl0IGEgZnVuZGFtZW50YWwgYXJjaGl0ZWN0dXJhbCBkZWNpc2lvbiBpbiB0aGlzIHBhcnRpY3VsYXIgbW9kdWxlPyBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgY29uc3RyYWludHMgaGVyZSwgYW5kIHdoYXQgZHJpdmVzIHRoZSBkZXBlbmRlbmN5IG9uIHRoZSBJUHY0IGltcGxlbWVudGF0aW9uLiBJJiMzOTtsbCBuZWVkIHRvIGRpZyBkZWVwZXIgaW50byB0aGUgYnVpbGQgc3lzdGVtIGFuZCB0aGUgc3Vycm91bmRpbmcgY29kZSB0byB1bmRlcnN0YW5kIHRoZSByYXRpb25hbGUgYmVoaW5kIHRoYXQuCgpBbmQgd2hpbGUgSSYjMzk7bSBhdCBpdCwgd2hhdCBhYm91dCBgaXBfbWNfaGFzaF9yZW1vdmVgPyBBcmUgdGhlcmUgYW55IGFzc29jaWF0ZWQgY29uZmlndXJhdGlvbnMgb3Igc2V0dGluZ3MgcmVsYXRlZCB0byB0aGF0IGZ1bmN0aW9uPyBJIHdhbnQgdG8gbWFrZSBzdXJlIEkgZG9uJiMzOTt0IG1pc3MgYW55dGhpbmcgdGhhdCBjb3VsZCBiZSByZWxldmFudCB0byB0aGUgaW5pdGlhbCBvYnNlcnZhdGlvbi4gVGhpcyBjb3VsZCBiZSBpbXBvcnRhbnQgZm9yIHVuZGVyc3RhbmRpbmcgbXVsdGljYXN0IGFkZHJlc3MgY2xlYW51cCBhbmQgaG93IGl0IGludGVyYWN0cyB3aXRoIHRoZSB1bmRlcmx5aW5nIHJvdXRpbmcgdGFibGVzLiBMZXQgbWUgY2hlY2sgdGhlIGRvY3VtZW50YXRpb24gYW5kIGV4aXN0aW5nIGNvZGUgY29tbWVudHMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzMwIDAyOjQxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2lwX21jX2hhc2hfcmVtb3ZlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L2lwdjQvaWdtcC5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9pcHY0L2lnbXAuYz0xNDA0PXN0YXRpYyB2b2lkIGlwX21jX2hhc2hfYWRkKHN0cnVjdCBpbl9kZXZpY2UgKmluX2Rldixcbi0tXG5uZXQvaXB2NC9pZ21wLmMtMTQzNS1cbm5ldC9pcHY0L2lnbXAuYzoxNDM2OnN0YXRpYyB2b2lkIGlwX21jX2hhc2hfcmVtb3ZlKHN0cnVjdCBpbl9kZXZpY2UgKmluX2Rldixcbm5ldC9pcHY0L2lnbXAuYy0xNDM3LVx0XHRcdCAgICAgIHN0cnVjdCBpcF9tY19saXN0ICppbSlcbi0tXG5uZXQvaXB2NC9pZ21wLmM9MTc3Nj12b2lkIF9faXBfbWNfZGVjX2dyb3VwKHN0cnVjdCBpbl9kZXZpY2UgKmluX2RldiwgX19iZTMyIGFkZHIsIGdmcF90IGdmcClcbi0tXG5uZXQvaXB2NC9pZ21wLmMtMTc5MC1cdFx0XHRpZiAobmV3X3VzZXJzID09IDApIHtcbm5ldC9pcHY0L2lnbXAuYzoxNzkxOlx0XHRcdFx0aXBfbWNfaGFzaF9yZW1vdmUoaW5fZGV2LCBpKTtcbm5ldC9pcHY0L2lnbXAuYy0xNzkyLVx0XHRcdFx0KmlwID0gaS1cdTAwM2VuZXh0X3JjdTtcbi0tXG5uZXQvaXB2NC9pZ21wLmM9MTkxMj12b2lkIGlwX21jX2Rlc3Ryb3lfZGV2KHN0cnVjdCBpbl9kZXZpY2UgKmluX2Rldilcbi0tXG5uZXQvaXB2NC9pZ21wLmMtMTkyNS1cdFx0aW5fZGV2LVx1MDAzZW1jX2xpc3QgPSBpLVx1MDAzZW5leHRfcmN1O1xubmV0L2lwdjQvaWdtcC5jOjE5MjY6XHRcdGlwX21jX2hhc2hfcmVtb3ZlKGluX2RldiwgaSk7XG5uZXQvaXB2NC9pZ21wLmMtMTkyNy1cdFx0V1JJVEVfT05DRShpbl9kZXYtXHUwMDNlbWNfY291bnQsIGluX2Rldi1cdTAwM2VtY19jb3VudCAtIDEpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8zMCAwMjo0MTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0NzQ3CgkJCQkJCQlvdXRwdXQ6IDM4CgkJCQkJCQl0aG91Z2h0czogNzEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqSW52ZXN0aWdhdGluZyB0aGUgQ29tcGlsYXRpb24gb2YgYGlwX21jX2hhc2hfcmVtb3ZlYCoqCgpPa2F5LCBzbyBgaXBfbWNfaGFzaF9yZW1vdmVgIGlzIGFsd2F5cyBzaG93aW5nIHVwIGluIHRoZSBjb21waWxlZCBjb2RlLiBUaGF0JiMzOTtzIGEgYml0IG9kZC4gSSBrbm93IGBJUF9NVUxUSUNBU1RgIGlzIHRoaXMgY29uZmlndXJhdGlvbiBvcHRpb24gdGhhdCBjb250cm9scyB0aGUgaW5jbHVzaW9uIG9mIElHTVB2MyBhbmQgb3RoZXIgbXVsdGljYXN0IGdvb2RpZXMuIEJ1dCB0aGUgcHJlc2VuY2Ugb2YgYGlnbXAuY2AgaW4gdGhlIGNvbXBpbGVkIGJ1aWxkIHNlZW1zIGluZGVwZW5kZW50IG9mIHdoZXRoZXIgb3Igbm90IHRoaXMgYElQX01VTFRJQ0FTVGAgZmxhZyBpcyBzZXQuIE15IG1haW4gcXVlc3Rpb24gaGVyZSBpczogZG9lcyBgaXBfbWNfaGFzaF9yZW1vdmVgIGFjdHVhbGx5ICpkbyogYW55dGhpbmcgaWYgYElQX01VTFRJQ0FTVGAgaXMgZGlzYWJsZWQ/IE9yIGlzIHRoaXMganVzdCBkZWFkIGNvZGUgdGhhdCYjMzk7cyBnZXR0aW5nIGluY2x1ZGVkIHVubmVjZXNzYXJpbHk/IEkgbmVlZCB0byBmaWd1cmUgb3V0IGlmIHRoZXJlJiMzOTtzIGEgZnVuY3Rpb25hbCBkZXBlbmRlbmN5IGJldHdlZW4gdGhlIHR3bywgb3IgaWYgdGhpcyBmdW5jdGlvbiBpcyBhbHdheXMgY29tcGlsZWQgcmVnYXJkbGVzcyBvZiB3aGF0IG11bHRpY2FzdCBmZWF0dXJlcyBhcmUgZW5hYmxlZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMzAgMDI6NDE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtuZXQvaXB2NC9pZ21wLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxNDMwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDIwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OzE0MzA6XHRcdFx0UkNVX0lOSVRfUE9JTlRFUihtY19oYXNoW2hhc2hdLCBpbSk7XG4xNDMxOlx0XHR9XG4xNDMyOlx0XG4xNDMzOlx0XHRyY3VfYXNzaWduX3BvaW50ZXIoaW5fZGV2LVx1MDAzZW1jX2hhc2gsIG1jX2hhc2gpO1xuMTQzNDpcdH1cbjE0MzU6XHRcbjE0MzY6XHRzdGF0aWMgdm9pZCBpcF9tY19oYXNoX3JlbW92ZShzdHJ1Y3QgaW5fZGV2aWNlICppbl9kZXYsXG4xNDM3Olx0XHRcdFx0ICAgICAgc3RydWN0IGlwX21jX2xpc3QgKmltKVxuMTQzODpcdHtcbjE0Mzk6XHRcdHN0cnVjdCBpcF9tY19saXN0IF9fcmN1ICoqbWNfaGFzaCA9IHJ0bmxfZGVyZWZlcmVuY2UoaW5fZGV2LVx1MDAzZW1jX2hhc2gpO1xuMTQ0MDpcdFx0c3RydWN0IGlwX21jX2xpc3QgKmF1eDtcbjE0NDE6XHRcbjE0NDI6XHRcdGlmICghbWNfaGFzaClcbjE0NDM6XHRcdFx0cmV0dXJuO1xuMTQ0NDpcdFx0bWNfaGFzaCAmIzQzOz0gaXBfbWNfaGFzaChpbSk7XG4xNDQ1Olx0XHR3aGlsZSAoKGF1eCA9IHJ0bmxfZGVyZWZlcmVuY2UoKm1jX2hhc2gpKSAhPSBpbSlcbjE0NDY6XHRcdFx0bWNfaGFzaCA9IFx1MDAyNmF1eC1cdTAwM2VuZXh0X2hhc2g7XG4xNDQ3Olx0XHQqbWNfaGFzaCA9IGltLVx1MDAzZW5leHRfaGFzaDtcbjE0NDg6XHR9XG4xNDQ5Olx0XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzMwIDAyOjQxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDUzNTQKCQkJCQkJCW91dHB1dDogMzIKCQkJCQkJCXRob3VnaHRzOiAyMgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0JiMzOTtzIGludGVybmFsIG1vbm9sb2d1ZToKCioqRGVsdmluZyBpbnRvIE1lbW9yeSBBbGxvY2F0aW9uKioKCkFscmlnaHQsIHNvIEkmIzM5O20gdGhpbmtpbmcgYWJvdXQgdGhpcyBjb2RlLiBJdCBzZWVtcyB0byBiZSB3b3JraW5nIHdpdGggYGluX2Rldi0mZ3Q7bWNfaGFzaGAuIE15IGltbWVkaWF0ZSBxdWVzdGlvbiBpczogKndoZW4qIGV4YWN0bHkgaXMgdGhpcyBgbWNfaGFzaGAgYWxsb2NhdGVkPyBJcyBpdCBkdXJpbmcgdGhlIGluaXRpYWxpemF0aW9uIG9mIGBpbl9kZXZgLCBwZXJoYXBzPyBPciBpcyBpdCBsYXppbHkgYWxsb2NhdGVkIG9uIGZpcnN0IHVzZT8gS25vd2luZyB0aGlzIGlzIGFic29sdXRlbHkgY3J1Y2lhbCBmb3IgdW5kZXJzdGFuZGluZyBwb3RlbnRpYWwgcmFjZSBjb25kaXRpb25zLCBtZW1vcnkgbGVha3MsIGFuZCBvdmVyYWxsIHByb2dyYW0gc3RhYmlsaXR5LiBJIG5lZWQgdG8gdHJhY2UgYmFjayB0aGUgdXNhZ2Ugb2YgYGluX2RldmAgYW5kIGBtY19oYXNoYCB0byBmaWd1cmUgb3V0IHRoZSBleGFjdCBwb2ludCBvZiBhbGxvY2F0aW9uLiBUaGlzIGRldGFpbHMgd2lsbCBpbXBhY3QgdGhlIGVudGlyZSBwcm9qZWN0LCBzbyBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdCBmdWxseS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMzAgMDI6NDE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bWNfaGFzaCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9pcHY0L2lnbXAuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvaXB2NC9pZ21wLmM9MTM1Mj1zdGF0aWMgdm9pZCBpZ21wX2dyb3VwX2FkZGVkKHN0cnVjdCBpcF9tY19saXN0ICppbSlcbi0tXG5uZXQvaXB2NC9pZ21wLmMtMTM5OC1cbm5ldC9pcHY0L2lnbXAuYzoxMzk5OnN0YXRpYyB1MzIgaXBfbWNfaGFzaChjb25zdCBzdHJ1Y3QgaXBfbWNfbGlzdCAqaW0pXG5uZXQvaXB2NC9pZ21wLmMtMTQwMC17XG4tLVxubmV0L2lwdjQvaWdtcC5jLTE0MDMtXG5uZXQvaXB2NC9pZ21wLmM6MTQwNDpzdGF0aWMgdm9pZCBpcF9tY19oYXNoX2FkZChzdHJ1Y3QgaW5fZGV2aWNlICppbl9kZXYsXG5uZXQvaXB2NC9pZ21wLmMtMTQwNS1cdFx0XHQgICBzdHJ1Y3QgaXBfbWNfbGlzdCAqaW0pXG5uZXQvaXB2NC9pZ21wLmMtMTQwNi17XG5uZXQvaXB2NC9pZ21wLmM6MTQwNzpcdHN0cnVjdCBpcF9tY19saXN0IF9fcmN1ICoqbWNfaGFzaDtcbm5ldC9pcHY0L2lnbXAuYy0xNDA4LVx0dTMyIGhhc2g7XG5uZXQvaXB2NC9pZ21wLmMtMTQwOS1cbm5ldC9pcHY0L2lnbXAuYzoxNDEwOlx0bWNfaGFzaCA9IHJ0bmxfZGVyZWZlcmVuY2UoaW5fZGV2LVx1MDAzZW1jX2hhc2gpO1xubmV0L2lwdjQvaWdtcC5jOjE0MTE6XHRpZiAobWNfaGFzaCkge1xubmV0L2lwdjQvaWdtcC5jOjE0MTI6XHRcdGhhc2ggPSBpcF9tY19oYXNoKGltKTtcbm5ldC9pcHY0L2lnbXAuYzoxNDEzOlx0XHRpbS1cdTAwM2VuZXh0X2hhc2ggPSBtY19oYXNoW2hhc2hdO1xubmV0L2lwdjQvaWdtcC5jOjE0MTQ6XHRcdHJjdV9hc3NpZ25fcG9pbnRlcihtY19oYXNoW2hhc2hdLCBpbSk7XG5uZXQvaXB2NC9pZ21wLmMtMTQxNS1cdFx0cmV0dXJuO1xuLS1cbm5ldC9pcHY0L2lnbXAuYy0xNDIxLVxubmV0L2lwdjQvaWdtcC5jOjE0MjI6XHRtY19oYXNoID0ga3phbGxvYyhzaXplb2Yoc3RydWN0IGlwX21jX2xpc3QgKikgXHUwMDNjXHUwMDNjIE1DX0hBU0hfU1pfTE9HLFxubmV0L2lwdjQvaWdtcC5jLTE0MjMtXHRcdFx0ICBHRlBfS0VSTkVMKTtcbm5ldC9pcHY0L2lnbXAuYzoxNDI0Olx0aWYgKCFtY19oYXNoKVxubmV0L2lwdjQvaWdtcC5jLTE0MjUtXHRcdHJldHVybjtcbi0tXG5uZXQvaXB2NC9pZ21wLmMtMTQyNy1cdGZvcl9lYWNoX3BtY19ydG5sKGluX2RldiwgaW0pIHtcbm5ldC9pcHY0L2lnbXAuYzoxNDI4Olx0XHRoYXNoID0gaXBfbWNfaGFzaChpbSk7XG5uZXQvaXB2NC9pZ21wLmM6MTQyOTpcdFx0aW0tXHUwMDNlbmV4dF9oYXNoID0gbWNfaGFzaFtoYXNoXTtcbm5ldC9pcHY0L2lnbXAuYzoxNDMwOlx0XHRSQ1VfSU5JVF9QT0lOVEVSKG1jX2hhc2hbaGFzaF0sIGltKTtcbm5ldC9pcHY0L2lnbXAuYy0xNDMxLVx0fVxubmV0L2lwdjQvaWdtcC5jLTE0MzItXG5uZXQvaXB2NC9pZ21wLmM6MTQzMzpcdHJjdV9hc3NpZ25fcG9pbnRlcihpbl9kZXYtXHUwMDNlbWNfaGFzaCwgbWNfaGFzaCk7XG5uZXQvaXB2NC9pZ21wLmMtMTQzNC19XG5uZXQvaXB2NC9pZ21wLmMtMTQzNS1cbm5ldC9pcHY0L2lnbXAuYzoxNDM2OnN0YXRpYyB2b2lkIGlwX21jX2hhc2hfcmVtb3ZlKHN0cnVjdCBpbl9kZXZpY2UgKmluX2Rldixcbm5ldC9pcHY0L2lnbXAuYy0xNDM3LVx0XHRcdCAgICAgIHN0cnVjdCBpcF9tY19saXN0ICppbSlcbm5ldC9pcHY0L2lnbXAuYy0xNDM4LXtcbm5ldC9pcHY0L2lnbXAuYzoxNDM5Olx0c3RydWN0IGlwX21jX2xpc3QgX19yY3UgKiptY19oYXNoID0gcnRubF9kZXJlZmVyZW5jZShpbl9kZXYtXHUwMDNlbWNfaGFzaCk7XG5uZXQvaXB2NC9pZ21wLmMtMTQ0MC1cdHN0cnVjdCBpcF9tY19saXN0ICphdXg7XG5uZXQvaXB2NC9pZ21wLmMtMTQ0MS1cbm5ldC9pcHY0L2lnbXAuYzoxNDQyOlx0aWYgKCFtY19oYXNoKVxubmV0L2lwdjQvaWdtcC5jLTE0NDMtXHRcdHJldHVybjtcbm5ldC9pcHY0L2lnbXAuYzoxNDQ0Olx0bWNfaGFzaCAmIzQzOz0gaXBfbWNfaGFzaChpbSk7XG5uZXQvaXB2NC9pZ21wLmM6MTQ0NTpcdHdoaWxlICgoYXV4ID0gcnRubF9kZXJlZmVyZW5jZSgqbWNfaGFzaCkpICE9IGltKVxubmV0L2lwdjQvaWdtcC5jOjE0NDY6XHRcdG1jX2hhc2ggPSBcdTAwMjZhdXgtXHUwMDNlbmV4dF9oYXNoO1xubmV0L2lwdjQvaWdtcC5jOjE0NDc6XHQqbWNfaGFzaCA9IGltLVx1MDAzZW5leHRfaGFzaDtcbm5ldC9pcHY0L2lnbXAuYy0xNDQ4LX1cbi0tXG5uZXQvaXB2NC9pZ21wLmM9MTUxOD1zdGF0aWMgdm9pZCBfX19faXBfbWNfaW5jX2dyb3VwKHN0cnVjdCBpbl9kZXZpY2UgKmluX2RldiwgX19iZTMyIGFkZHIsXG4tLVxubmV0L2lwdjQvaWdtcC5jLTE1MjAte1xubmV0L2lwdjQvaWdtcC5jOjE1MjE6XHRzdHJ1Y3QgaXBfbWNfbGlzdCBfX3JjdSAqKm1jX2hhc2g7XG5uZXQvaXB2NC9pZ21wLmMtMTUyMi1cdHN0cnVjdCBpcF9tY19saXN0ICppbTtcbi0tXG5uZXQvaXB2NC9pZ21wLmMtMTUyNS1cbm5ldC9pcHY0L2lnbXAuYzoxNTI2Olx0bWNfaGFzaCA9IHJ0bmxfZGVyZWZlcmVuY2UoaW5fZGV2LVx1MDAzZW1jX2hhc2gpO1xubmV0L2lwdjQvaWdtcC5jOjE1Mjc6XHRpZiAobWNfaGFzaCkge1xubmV0L2lwdjQvaWdtcC5jLTE1MjgtXHRcdHUzMiBoYXNoID0gaGFzaF8zMigoX19mb3JjZSB1MzIpYWRkciwgTUNfSEFTSF9TWl9MT0cpO1xubmV0L2lwdjQvaWdtcC5jLTE1MjktXG5uZXQvaXB2NC9pZ21wLmM6MTUzMDpcdFx0Zm9yIChpbSA9IHJ0bmxfZGVyZWZlcmVuY2UobWNfaGFzaFtoYXNoXSk7XG5uZXQvaXB2NC9pZ21wLmMtMTUzMS1cdFx0ICAgICBpbTtcbi0tXG5uZXQvaXB2NC9pZ21wLmMtMTU3MS1cbm5ldC9pcHY0L2lnbXAuYzoxNTcyOlx0aXBfbWNfaGFzaF9hZGQoaW5fZGV2LCBpbSk7XG5uZXQvaXB2NC9pZ21wLmMtMTU3My1cbi0tXG5uZXQvaXB2NC9pZ21wLmM9MTc3Nj12b2lkIF9faXBfbWNfZGVjX2dyb3VwKHN0cnVjdCBpbl9kZXZpY2UgKmluX2RldiwgX19iZTMyIGFkZHIsIGdmcF90IGdmcClcbi0tXG5uZXQvaXB2NC9pZ21wLmMtMTc5MC1cdFx0XHRpZiAobmV3X3VzZXJzID09IDApIHtcbm5ldC9pcHY0L2lnbXAuYzoxNzkxOlx0XHRcdFx0aXBfbWNfaGFzaF9yZW1vdmUoaW5fZGV2LCBpKTtcbm5ldC9pcHY0L2lnbXAuYy0xNzkyLVx0XHRcdFx0KmlwID0gaS1cdTAwM2VuZXh0X3JjdTtcbi0tXG5uZXQvaXB2NC9pZ21wLmM9MTkxMj12b2lkIGlwX21jX2Rlc3Ryb3lfZGV2KHN0cnVjdCBpbl9kZXZpY2UgKmluX2Rldilcbi0tXG5uZXQvaXB2NC9pZ21wLmMtMTkyNS1cdFx0aW5fZGV2LVx1MDAzZW1jX2xpc3QgPSBpLVx1MDAzZW5leHRfcmN1O1xubmV0L2lwdjQvaWdtcC5jOjE5MjY6XHRcdGlwX21jX2hhc2hfcmVtb3ZlKGluX2RldiwgaSk7XG5uZXQvaXB2NC9pZ21wLmMtMTkyNy1cdFx0V1JJVEVfT05DRShpbl9kZXYtXHUwMDNlbWNfY291bnQsIGluX2Rldi1cdTAwM2VtY19jb3VudCAtIDEpO1xuLS1cbm5ldC9pcHY0L2lnbXAuYz0yODI2PWludCBpcF9jaGVja19tY19yY3Uoc3RydWN0IGluX2RldmljZSAqaW5fZGV2LCBfX2JlMzIgbWNfYWRkciwgX19iZTMyIHNyY19hZGRyLCB1OCBwcm90bylcbi0tXG5uZXQvaXB2NC9pZ21wLmMtMjgyOC1cdHN0cnVjdCBpcF9tY19saXN0ICppbTtcbm5ldC9pcHY0L2lnbXAuYzoyODI5Olx0c3RydWN0IGlwX21jX2xpc3QgX19yY3UgKiptY19oYXNoO1xubmV0L2lwdjQvaWdtcC5jLTI4MzAtXHRzdHJ1Y3QgaXBfc2ZfbGlzdCAqcHNmO1xuLS1cbm5ldC9pcHY0L2lnbXAuYy0yODMyLVxubmV0L2lwdjQvaWdtcC5jOjI4MzM6XHRtY19oYXNoID0gcmN1X2RlcmVmZXJlbmNlKGluX2Rldi1cdTAwM2VtY19oYXNoKTtcbm5ldC9pcHY0L2lnbXAuYzoyODM0Olx0aWYgKG1jX2hhc2gpIHtcbm5ldC9pcHY0L2lnbXAuYy0yODM1LVx0XHR1MzIgaGFzaCA9IGhhc2hfMzIoKF9fZm9yY2UgdTMyKW1jX2FkZHIsIE1DX0hBU0hfU1pfTE9HKTtcbm5ldC9pcHY0L2lnbXAuYy0yODM2LVxubmV0L2lwdjQvaWdtcC5jOjI4Mzc6XHRcdGZvciAoaW0gPSByY3VfZGVyZWZlcmVuY2UobWNfaGFzaFtoYXNoXSk7XG5uZXQvaXB2NC9pZ21wLmMtMjgzOC1cdFx0ICAgICBpbSAhPSBOVUxMO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8zMCAwMjo0MTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3Njk2CgkJCQkJCQlvdXRwdXQ6IDk1CgkJCQkJCQl0aG91Z2h0czogNjQyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFuYWx5c2lzIG9mIHRoZSBJUHY0IE11bHRpY2FzdCBDb2RlIE1vZGlmaWNhdGlvbioqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBNeSBpbml0aWFsIHRob3VnaHQgd2FzIHRvIGRvdWJsZS1jaGVjayB0aGUgZGVwZW5kZW5jaWVzLCBzcGVjaWZpY2FsbHkgd2hldGhlciBgSVBfTVVMVElDQVNUYCB3YXMgcmVxdWlyZWQgYmVjYXVzZSBpdCYjMzk7cyBhc3NvY2lhdGVkIHdpdGggSUdNUHYzIGFuZCBhZHZhbmNlZCByb3V0aW5nLiBCdXQgSSBxdWlja2x5IHJlYWxpemVkIHRoYXQgdGhlIGNvcmUgbXVsdGljYXN0IGdyb3VwIGpvaW5pbmcvbGVhdmluZyBmdW5jdGlvbnMgYXJlIGFsd2F5cyBhdmFpbGFibGUgaW4gSVB2NCwgcmVnYXJkbGVzcyBvZiB0aGF0IGNvbmZpZy4gYF9fX19pcF9tY19pbmNfZ3JvdXBgIGNvbmZpcm1lZCB0aGlzLCBhcyBpdCBkb2VzbiYjMzk7dCBoYXZlIGEgY29uZGl0aW9uYWwgY29tcGlsYXRpb24gYmFzZWQgb24gdGhlIGBJUF9NVUxUSUNBU1RgIGNvbmZpZy4gTXkgaW5pdGlhbCB0aG91Z2h0IHdhcyB0byBpbmNsdWRlIGl0IGFueXdheSwganVzdCB0byBiZSBzYWZlLCBidXQgdGhlbiB0aGUgcHJvbXB0IHJlbWluZGVkIG1lIHRvIGJlIHNwZWNpZmljLgoKTm93LCBmb2N1c2luZyBvbiB0aGUgY29kZSBpdHNlbGYsIGBpcF9tY19kZXN0cm95X2RldmAgaXMgdGhlIGZ1bmN0aW9uIHRoYXQmIzM5O3MgYmVpbmcgbW9kaWZpZWQuIEkgY2FuIHNlZSB0aGF0IGBpcF9tY19oYXNoX3JlbW92ZWAgaXMgY2FsbGVkIHdpdGhpbiB0aGUgY29kZS4gQW5kIEkgc2VlIHRoYXQgYGluZXRkZXZfZGVzdHJveWAgY2FsbHMgYGlwX21jX2Rlc3Ryb3lfZGV2YCwgd2hpY2ggaGVscHMgY2xhcmlmeSB0aGUgY2FsbCBjaGFpbi4KClJldmlld2luZyB0aGUgcGF0Y2gsIGl0JiMzOTtzIGltbWVkaWF0ZWx5IGNsZWFyIHRoYXQgdGhlIGNvZGUgbm93IGNhbGxzIGBpcF9tY19oYXNoX3JlbW92ZWAgdG8gcmVtb3ZlIHRoZSBtdWx0aWNhc3QgZ3JvdXAgZnJvbSB0aGUgaGFzaCB0YWJsZS4gVGhpcyBpcyBjcnVjaWFsIGJlY2F1c2UgaXQgYWRkcmVzc2VzIGEgYnVnIHdoZXJlIHRoZSBtdWx0aWNhc3QgZ3JvdXAgd2FzIHJlbW92ZWQgZnJvbSB0aGUgbGlua2VkIGxpc3QgKGBtY19saXN0YCkgYnV0ICpub3QqIGZyb20gdGhlIGhhc2ggdGFibGUgd2hlbiB0aGUgZGV2aWNlIGlzIGRlc3Ryb3llZC4gSXQmIzM5O3MgYSBjbGVhbiBmdW5jdGlvbmFsIGZpeC4gTm8gc3BlY2lmaWMgY29uZmlndXJhdGlvbnMgYXJlIG5lZWRlZCB0byBlbmFibGUgdGhpcyBjaGFuZ2UsIGFzIHRoaXMgaXMgY29yZSBJUHY0IG11bHRpY2FzdCBiZWhhdmlvci4gU28sIG5vIGNvbmZpZyBjaGFuZ2VzIG5lZWRlZCwgaXQmIzM5O3MgY29tcGlsZWQgYnkgZGVmYXVsdC4gSSBhbSBjb25maWRlbnQgaW4gdGhhdCBhc3Nlc3NtZW50LiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzMwIDAyOjQxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogW10sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtpcF9tY19kZXN0cm95X2RldiYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIGEgbWlzc2luZyBpcF9tY19oYXNoX3JlbW92ZSBjYWxsIGluIGlwX21jX2Rlc3Ryb3lfZGV2IHRvIGVuc3VyZSBtdWx0aWNhc3QgZ3JvdXBzIGFyZSBwcm9wZXJseSByZW1vdmVkIGZyb20gdGhlIGRldmljZSYjMzk7cyBtdWx0aWNhc3QgaGFzaCB0YWJsZSB3aGVuIHRoZSBkZXZpY2UgaXMgZGVzdHJveWVkLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgSVB2NCBtdWx0aWNhc3QgbG9naWMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7aXBfbWNfZGVzdHJveV9kZXYmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBhIG1pc3NpbmcgaXBfbWNfaGFzaF9yZW1vdmUgY2FsbCBpbiBpcF9tY19kZXN0cm95X2RldiB0byBlbnN1cmUgbXVsdGljYXN0IGdyb3VwcyBhcmUgcHJvcGVybHkgcmVtb3ZlZCBmcm9tIHRoZSBkZXZpY2UmIzM5O3MgbXVsdGljYXN0IGhhc2ggdGFibGUgd2hlbiB0aGUgZGV2aWNlIGlzIGRlc3Ryb3llZC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIElQdjQgbXVsdGljYXN0IGxvZ2ljLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDYtMzBUMDI6NDE6MjYuMjc5MzY3ODA3WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzI5Mzk0MDc0MjEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiaXBfbWNfZGVzdHJveV9kZXZcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIGEgbWlzc2luZyBpcF9tY19oYXNoX3JlbW92ZSBjYWxsIGluIGlwX21jX2Rlc3Ryb3lfZGV2IHRvIGVuc3VyZSBtdWx0aWNhc3QgZ3JvdXBzIGFyZSBwcm9wZXJseSByZW1vdmVkIGZyb20gdGhlIGRldmljZSdzIG11bHRpY2FzdCBoYXNoIHRhYmxlIHdoZW4gdGhlIGRldmljZSBpcyBkZXN0cm95ZWQuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBJUHY0IG11bHRpY2FzdCBsb2dpYy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMzBUMDI6NDE6MjYuMjc5Mzc3MzI3WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozODc0Mjk1NDIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCBkZmEyOTZlYTY5M2FhZjU1YzY2MjM2N2ZhMTNkOWM5ZDMwNTNlNGVhXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBUdWUgSnVuIDMwIDAyOjQxOjI1IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL25ldC9pcHY0L2lnbXAuYyBiL25ldC9pcHY0L2lnbXAuY1xcbmluZGV4IGI2MzM3YTQ3YzE0MTg1Li5hZjM4MDczYTgyMmRiZSAxMDA2NDRcXG4tLS0gYS9uZXQvaXB2NC9pZ21wLmNcXG4rKysgYi9uZXQvaXB2NC9pZ21wLmNcXG5AQCAtMTkyMyw2ICsxOTIzLDcgQEAgdm9pZCBpcF9tY19kZXN0cm95X2RldihzdHJ1Y3QgaW5fZGV2aWNlICppbl9kZXYpXFxuIFxcbiBcXHR3aGlsZSAoKGkgPSBydG5sX2RlcmVmZXJlbmNlKGluX2Rldi1cXHUwMDNlbWNfbGlzdCkpICE9IE5VTEwpIHtcXG4gXFx0XFx0aW5fZGV2LVxcdTAwM2VtY19saXN0ID0gaS1cXHUwMDNlbmV4dF9yY3U7XFxuK1xcdFxcdGlwX21jX2hhc2hfcmVtb3ZlKGluX2RldiwgaSk7XFxuIFxcdFxcdFdSSVRFX09OQ0UoaW5fZGV2LVxcdTAwM2VtY19jb3VudCwgaW5fZGV2LVxcdTAwM2VtY19jb3VudCAtIDEpO1xcbiBcXHRcXHRpcF9tY19jbGVhcl9zcmMoaSk7XFxuIFxcdFxcdGlwX21hX3B1dChpKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMzBUMDI6NDE6MjYuNjY3NzA4NjY5WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMjU1MTA1OTA0OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJpcF9tY19kZXN0cm95X2RldlwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgYSBtaXNzaW5nIGlwX21jX2hhc2hfcmVtb3ZlIGNhbGwgaW4gaXBfbWNfZGVzdHJveV9kZXYgdG8gZW5zdXJlIG11bHRpY2FzdCBncm91cHMgYXJlIHByb3Blcmx5IHJlbW92ZWQgZnJvbSB0aGUgZGV2aWNlJ3MgbXVsdGljYXN0IGhhc2ggdGFibGUgd2hlbiB0aGUgZGV2aWNlIGlzIGRlc3Ryb3llZC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIElQdjQgbXVsdGljYXN0IGxvZ2ljLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG5ldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0XG4gICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksXG4gICBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IGRmYTI5NmVhNjkzYWFmNTVjNjYyMzY3ZmExM2Q5YzlkMzA1M2U0ZWFcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVHVlIEp1biAzMCAwMjo0MToyNSAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL25ldC9pcHY0L2lnbXAuYyBiL25ldC9pcHY0L2lnbXAuY1xuaW5kZXggYjYzMzdhNDdjMTQxODUuLmFmMzgwNzNhODIyZGJlIDEwMDY0NFxuLS0tIGEvbmV0L2lwdjQvaWdtcC5jXG4rKysgYi9uZXQvaXB2NC9pZ21wLmNcbkBAIC0xOTIzLDYgKzE5MjMsNyBAQCB2b2lkIGlwX21jX2Rlc3Ryb3lfZGV2KHN0cnVjdCBpbl9kZXZpY2UgKmluX2RldilcbiBcbiBcdHdoaWxlICgoaSA9IHJ0bmxfZGVyZWZlcmVuY2UoaW5fZGV2LVx1MDAzZW1jX2xpc3QpKSAhPSBOVUxMKSB7XG4gXHRcdGluX2Rldi1cdTAwM2VtY19saXN0ID0gaS1cdTAwM2VuZXh0X3JjdTtcbitcdFx0aXBfbWNfaGFzaF9yZW1vdmUoaW5fZGV2LCBpKTtcbiBcdFx0V1JJVEVfT05DRShpbl9kZXYtXHUwMDNlbWNfY291bnQsIGluX2Rldi1cdTAwM2VtY19jb3VudCAtIDEpO1xuIFx0XHRpcF9tY19jbGVhcl9zcmMoaSk7XG4gXHRcdGlwX21hX3B1dChpKTtcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTMwVDAyOjQxOjI2LjY2NzcxMTE0OVoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM0OTg4NTYwNzEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBJR01QIFBhdGNoKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBmb3IgYG5ldC9pcHY0L2lnbXAuY2AuIEl0IHNlZW1zIHRoZXkndmUgYWRkZWQgYGlwX21jX2hhc2hfcmVtb3ZlKGluX2RldiwgaSk7YCB3aXRoaW4gdGhlIGBpcF9tY19kZXN0cm95X2RldmAgZnVuY3Rpb24uIFJpZ2h0IGF3YXksIEkgcmVjb2duaXplIHRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSByZWxhdGVkIHRvIElQIG11bHRpY2FzdC4gVGhlIGBpcF9tY19oYXNoX3JlbW92ZWAgY2FsbCBpbXBsaWVzIGFuIHVwZGF0ZSB0byB0aGUgbXVsdGljYXN0IGhhc2ggdGFibGUgZHVyaW5nIGRldmljZSBkZXN0cnVjdGlvbi4gVGhhdCdzIGludGVyZXN0aW5nLCBhbmQgcG90ZW50aWFsbHkgc2lnbmlmaWNhbnQuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBpbXBsaWNhdGlvbnMgb2YgdGhpcyBhZGRpdGlvbi4gVGltZSB0byBkaXZlIGludG8gdGhlIGBpcF9tY19kZXN0cm95X2RldmAgZnVuY3Rpb24gaXRzZWxmIGFuZCBzZWUgd2hhdCdzIGdvaW5nIG9uIHdpdGhpbiB0aGF0IGNvbnRleHQuIEknbGwgbmVlZCB0byBmb2xsb3cgdGhlIGxvZ2ljIGZsb3cgdGhlcmUgdG8gZnVsbHkgZ3Jhc3AgdGhlIGNoYW5nZSdzIGltcGFjdCBhbmQgaWYgaXQgaW50cm9kdWNlcyBhbnkgc2lkZSBlZmZlY3RzIG9yIHVuZm9yZXNlZW4gY29uc2VxdWVuY2VzIGluIHRoZSBtdWx0aWNhc3Qgc3Vic3lzdGVtLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxODU3LCJPdXRwdXRUb2tlbnMiOjM2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6OTQsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0zMFQwMjo0MTozMC4xNjY1NzAzMloiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2NTI0OTY3NCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJpcF9tY19kZXN0cm95X2RldlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvaXB2NC9pZ21wLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L2lwdjQvaWdtcC5jPTE4OTE9dm9pZCBpcF9tY191cChzdHJ1Y3QgaW5fZGV2aWNlICppbl9kZXYpXFxuLS1cXG5uZXQvaXB2NC9pZ21wLmMtMTkxMS1cXG5uZXQvaXB2NC9pZ21wLmM6MTkxMjp2b2lkIGlwX21jX2Rlc3Ryb3lfZGV2KHN0cnVjdCBpbl9kZXZpY2UgKmluX2RldilcXG5uZXQvaXB2NC9pZ21wLmMtMTkxMy17XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTMwVDAyOjQxOjMwLjIzMTgyOTI1NFoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM1MDM0NjQ1OTEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCdzIGRpdmUgaW50byB0aGlzLiBIZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgYXMgaWYgdGhleSdyZSBteSBvd246XG5cbioqSW52ZXN0aWdhdGluZyB0aGUgYGlwX21jX2Rlc3Ryb3lfZGV2YCBDb2RlKipcblxuQWxyaWdodCwgdGltZSB0byBnZXQgbXkgaGFuZHMgZGlydHkuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQncyBoYXBwZW5pbmcgYXJvdW5kIHRoYXQgYGlwX21jX2Rlc3Ryb3lfZGV2YCBmdW5jdGlvbi4gVGhpcyBsaWtlbHkgbWVhbnMgdHJhY2luZyB0aGUgZXhlY3V0aW9uIGZsb3cgYW5kIGxvb2tpbmcgYXQgdGhlIGNvbnRleHQgaW4gd2hpY2ggdGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQuIEknbSBnb2luZyB0byB3YW50IHRvIGV4YW1pbmUgdGhlIHN1cnJvdW5kaW5nIGNvZGUg4oCTIHRoZSBmdW5jdGlvbnMgdGhhdCBjYWxsICppbnRvKiBpdCwgYW5kIHRoZSBmdW5jdGlvbnMgaXQgY2FsbHMgKm91dCogdG8uIFNwZWNpZmljYWxseSwgSSdtIHRoaW5raW5nIGFib3V0IHRoZSBkYXRhIHN0cnVjdHVyZXMgYmVpbmcgbWFuaXB1bGF0ZWQgYXJvdW5kIHRoaXMgZnVuY3Rpb24uIFdoYXQga2luZCBvZiBtdWx0aWNhc3QgaW5mb3JtYXRpb24gaXMgYmVpbmcgZGVzdHJveWVkPyBXaGF0IHJlc291cmNlcyBhcmUgYmVpbmcgZnJlZWQ/IEFyZSB0aGVyZSBhbnkgcG90ZW50aWFsIHJhY2UgY29uZGl0aW9ucyBJIG5lZWQgdG8gYmUgYXdhcmUgb2Y/IEknbGwgcHJvYmFibHkgbmVlZCB0byBsb29rIGF0IGhvdyB0aGlzIGludGVyYWN0cyB3aXRoIHRoZSBvdmVyYWxsIG5ldHdvcmtpbmcgc3RhY2ssIGVzcGVjaWFsbHkgaG93IG11bHRpY2FzdCBpcyBoYW5kbGVkIHdpdGhpbiB0aGUga2VybmVsLiBUaW1lIHRvIG9wZW4gdGhlIGVkaXRvciBhbmQgc3RhcnQgbmF2aWdhdGluZyB0aGUgc291cmNlLiBMZXQncyBzZWUgaWYgdGhlcmUgYXJlIGFueSBvYnZpb3VzIG1lbW9yeSBtYW5hZ2VtZW50IGlzc3VlcyBvciBzeW5jaHJvbml6YXRpb24gcHJpbWl0aXZlcyBpbnZvbHZlZC4gSSdtIGV4cGVjdGluZyB0byBmaW5kIGEgdHlwaWNhbCBjbGVhbnVwIHJvdXRpbmUsIGJ1dCBJIHdhbnQgdG8gbWFrZSBzdXJlIGl0J3MgKnRob3JvdWdoKi4gQW55IHN1YnRsZSBtaXNzZWQgY2FzZXMgd2lsbCBiZSBpbW1lZGlhdGVseSBvYnZpb3VzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMjgyLCJPdXRwdXRUb2tlbnMiOjM4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMzBUMDI6NDE6MzMuNzM1Mjk2NjI1WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTc0ODgwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcIm5ldC9pcHY0L2lnbXAuY1wiLFxuICBcIkZpcnN0TGluZVwiOiAxOTEwLFxuICBcIkxpbmVDb3VudFwiOiAzMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIxOTEwOlxcdCAqL1xcbjE5MTE6XFx0XFxuMTkxMjpcXHR2b2lkIGlwX21jX2Rlc3Ryb3lfZGV2KHN0cnVjdCBpbl9kZXZpY2UgKmluX2RldilcXG4xOTEzOlxcdHtcXG4xOTE0OlxcdFxcdHN0cnVjdCBpcF9tY19saXN0ICppO1xcbjE5MTU6XFx0XFxuMTkxNjpcXHRcXHRBU1NFUlRfUlROTCgpO1xcbjE5MTc6XFx0XFxuMTkxODpcXHRcXHQvKiBEZWFjdGl2YXRlIHRpbWVycyAqL1xcbjE5MTk6XFx0XFx0aXBfbWNfZG93bihpbl9kZXYpO1xcbjE5MjA6XFx0I2lmZGVmIENPTkZJR19JUF9NVUxUSUNBU1RcXG4xOTIxOlxcdFxcdGlnbXB2M19jbGVhcl9kZWxyZWMoaW5fZGV2KTtcXG4xOTIyOlxcdCNlbmRpZlxcbjE5MjM6XFx0XFxuMTkyNDpcXHRcXHR3aGlsZSAoKGkgPSBydG5sX2RlcmVmZXJlbmNlKGluX2Rldi1cXHUwMDNlbWNfbGlzdCkpICE9IE5VTEwpIHtcXG4xOTI1OlxcdFxcdFxcdGluX2Rldi1cXHUwMDNlbWNfbGlzdCA9IGktXFx1MDAzZW5leHRfcmN1O1xcbjE5MjY6XFx0XFx0XFx0aXBfbWNfaGFzaF9yZW1vdmUoaW5fZGV2LCBpKTtcXG4xOTI3OlxcdFxcdFxcdFdSSVRFX09OQ0UoaW5fZGV2LVxcdTAwM2VtY19jb3VudCwgaW5fZGV2LVxcdTAwM2VtY19jb3VudCAtIDEpO1xcbjE5Mjg6XFx0XFx0XFx0aXBfbWNfY2xlYXJfc3JjKGkpO1xcbjE5Mjk6XFx0XFx0XFx0aXBfbWFfcHV0KGkpO1xcbjE5MzA6XFx0XFx0fVxcbjE5MzE6XFx0fVxcbjE5MzI6XFx0XFxuMTkzMzpcXHQvKiBSVE5MIGlzIGxvY2tlZCAqL1xcbjE5MzQ6XFx0c3RhdGljIHN0cnVjdCBpbl9kZXZpY2UgKmlwX21jX2ZpbmRfZGV2KHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IGlwX21yZXFuICppbXIpXFxuMTkzNTpcXHR7XFxuMTkzNjpcXHRcXHRzdHJ1Y3QgbmV0X2RldmljZSAqZGV2ID0gTlVMTDtcXG4xOTM3OlxcdFxcdHN0cnVjdCBpbl9kZXZpY2UgKmlkZXYgPSBOVUxMO1xcbjE5Mzg6XFx0XFxuMTkzOTpcXHRcXHRpZiAoaW1yLVxcdTAwM2VpbXJfaWZpbmRleCkge1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0zMFQwMjo0MTozMy43MzU0NzQyMzVaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMTAzNzA2NjM5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgSVAgTXVsdGljYXN0IERldmljZSBEZXN0cnVjdGlvbioqXG5cbk9rYXksIHNvIHRoZSBtb2RpZmljYXRpb24gY2VudGVycyBhcm91bmQgYGlwX21jX2Rlc3Ryb3lfZGV2YC4gVGhhdCBmdW5jdGlvbiBpcyB0cmlnZ2VyZWQgd2hlbiBhbiBgaW5fZGV2aWNlYCBnZXRzIGRlc3Ryb3llZCwgYW5kIHRoYXQgc291bmRzIGxpa2UgaXQgY291bGQgYmUgYSBzaWduaWZpY2FudCBwb2ludCBvZiBmYWlsdXJlIG9yIG9wdGltaXphdGlvbi4gTXkgbmV4dCBzdGVwIGlzIHRvIHVuZGVyc3RhbmQgdGhlIHNjb3BlLiBJIG5lZWQgdG8gcGlucG9pbnQgZXZlcnkgaW5zdGFuY2Ugd2hlcmUgYGlwX21jX2Rlc3Ryb3lfZGV2YCBpcyBhY3R1YWxseSBjYWxsZWQgd2l0aGluIHRoZSBjb2RlYmFzZS4gS25vd2luZyB0aGF0IGNhbGwgY2hhaW4gaXMgYWJzb2x1dGVseSBjcnVjaWFsIGZvciB1bmRlcnN0YW5kaW5nIHRoZSBpbXBhY3Qgb2YgdGhpcyBjaGFuZ2UgYW5kIGZvciBhdm9pZGluZyBhbnkgcmVncmVzc2lvbnMuIExldCdzIHNlZSB3aGF0IHRoZSBjYWxsIGdyYXBoIHJldmVhbHMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMwNDksIk91dHB1dFRva2VucyI6MzIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0NSwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTMwVDAyOjQxOjM2LjgzOTE4MzU5NFoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNzQzMjAzODQsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiaXBfbWNfZGVzdHJveV9kZXZcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L2lwdjQvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9pcHY0L2RldmluZXQuYz0zMTQ9c3RhdGljIHZvaWQgaW5ldGRldl9kZXN0cm95KHN0cnVjdCBpbl9kZXZpY2UgKmluX2RldilcXG4tLVxcbm5ldC9pcHY0L2RldmluZXQuYy0zMjQtXFxubmV0L2lwdjQvZGV2aW5ldC5jOjMyNTpcXHRpcF9tY19kZXN0cm95X2Rldihpbl9kZXYpO1xcbm5ldC9pcHY0L2RldmluZXQuYy0zMjYtXFxuLS1cXG5uZXQvaXB2NC9pZ21wLmM9MTg5MT12b2lkIGlwX21jX3VwKHN0cnVjdCBpbl9kZXZpY2UgKmluX2RldilcXG4tLVxcbm5ldC9pcHY0L2lnbXAuYy0xOTExLVxcbm5ldC9pcHY0L2lnbXAuYzoxOTEyOnZvaWQgaXBfbWNfZGVzdHJveV9kZXYoc3RydWN0IGluX2RldmljZSAqaW5fZGV2KVxcbm5ldC9pcHY0L2lnbXAuYy0xOTEzLXtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMzBUMDI6NDE6MzcuMTEzNTEzMzY4WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDIyOTY3MTM1MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipGdXp6aW5nIFRhcmdldDogSVB2NCBEZXZpY2UgRGVzdHJ1Y3Rpb24qKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIGNvZGUgYW5kIGl0J3MgY2FsbGVkIGZyb20gYGluZXRkZXZfZGVzdHJveWAuIFRoYXQgZnVuY3Rpb24ncyBpbnZva2VkIHdoZW4gYW4gSVB2NCBkZXZpY2UgaXMgdGFrZW4gZG93bi4gUmlnaHQgYXdheSwgSSBzZWUgdGhpcyBhcyBhIHBvdGVudGlhbCBmdW5jdGlvbmFsIGNoYW5nZSwgZGVmaW5pdGVseSBzb21ldGhpbmcgd29ydGggdGFyZ2V0aW5nIHdpdGggZnV6emluZy4gTXkgbWFpbiBmb2N1cyBzeW1ib2wgaGVyZSBpcyBnb2luZyB0byBiZSBgaXBfbWNfZGVzdHJveV9kZXZgLlxuXG5JIG5lZWQgdG8gcXVpY2tseSBjaGVjayB0aGUgY29uZmlndXJhdGlvbiBkZXBlbmRlbmNpZXMuIExldCBtZSBzZWUuLi4gSSBzcG90IGBDT05GSUdfSVBfTVVMVElDQVNUYCBhcm91bmQgdGhhdCBgaWdtcHYzX2NsZWFyX2RlbHJlYyhpbl9kZXYpO2AgY2FsbCBpbiB0aGUgc2FtZSBmdW5jdGlvbiwgd2hpY2ggaXMgdXNlZnVsIGluZm9ybWF0aW9uLCBidXQgdGhlIHBhcnQgSSdtIGFjdHVhbGx5IGludGVyZXN0ZWQgaW4sIHRoZSBgaXBfbWNfZGVzdHJveV9kZXZgIGZ1bmN0aW9uIGl0c2VsZiBhbmQgdGhlIHNwZWNpZmljIGNvZGUgSSdtIGFuYWx5emluZywgYXJlICpvdXRzaWRlKiB0aGF0IHBhcnRpY3VsYXIgY29uZmlnLiBXYWl0LCBhY3R1YWxseSwgYWZ0ZXIgYSBtb21lbnQncyBjb25zaWRlcmF0aW9uLCBpdCBsb29rcyBsaWtlIGBpcF9tY19kZXN0cm95X2RldmAgaXMgYWx3YXlzIGNvbXBpbGVkIGlmIGBuZXQvaXB2NC9pZ21wLmNgIGlzIGNvbXBpbGVkLiBPa2F5LCBzbyBubyBzcGVjaWZpYywgbmFycm93IGNvbmZpZyBkZXBlbmRlbmNpZXMgdGhhdCBJIG5lZWQgdG8gYmUgYXdhcmUgb2YgaGVyZS4gVG8gY29uZmlybSB0aGF0LCBsZXQncyB0YWtlIGEgcXVpY2sgbG9vayBhdCB0aGUgYG5ldC9pcHY0L01ha2VmaWxlYC5cblxuXG4iLCJJbnB1dFRva2VucyI6MzQ0OSwiT3V0cHV0VG9rZW5zIjozMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE1OSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0zMFQwMjo0MTo0MS4zNDMxODg4NThaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjY0ODU1ODY0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImlnbXAub1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvaXB2NC9NYWtlZmlsZVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvaXB2NC9NYWtlZmlsZT02PW9iai15ICAgICA6PSByb3V0ZS5vIGluZXRwZWVyLm8gcHJvdG9jb2wubyBcXFxcXFxuLS1cXG5uZXQvaXB2NC9NYWtlZmlsZS0xMy1cXHQgICAgIHRjcF9vZmZsb2FkLm8gdGNwX3BsYi5vIGRhdGFncmFtLm8gcmF3Lm8gdWRwLm8gXFxcXFxcbm5ldC9pcHY0L01ha2VmaWxlOjE0OlxcdCAgICAgdWRwX29mZmxvYWQubyBhcnAubyBpY21wLm8gZGV2aW5ldC5vIGFmX2luZXQubyBpZ21wLm8gXFxcXFxcbm5ldC9pcHY0L01ha2VmaWxlLTE1LVxcdCAgICAgZmliX2Zyb250ZW5kLm8gZmliX3NlbWFudGljcy5vIGZpYl90cmllLm8gZmliX25vdGlmaWVyLm8gXFxcXFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0zMFQwMjo0MTo0MS40MDgwNjIzODJaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzI3MTk0MjE2MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBteSBvd246XG5cbioqSW52ZXN0aWdhdGluZyB0aGUgSVB2NCBEZXBlbmRlbmN5IGluIGBpZ21wLm9gIGFuZCBgaXBfbWNfaGFzaF9yZW1vdmVgKipcblxuQWxyaWdodCwgc28gSSdtIGxvb2tpbmcgYXQgYGlnbXAub2AgYW5kIGl0IHNlZW1zIGxpa2UgaXQncyAqYWx3YXlzKiBjb21waWxlZCBzcGVjaWZpY2FsbHkgZm9yIElQdjQuIFRoYXQgcmFpc2VzIGEgcXVlc3Rpb24sIEkgd29uZGVyIGlmIHRoZXJlJ3MgYW55IGNvbmZpZ3VyYXRpb24gdGhhdCBtaWdodCBpbmZsdWVuY2UgdGhhdD8gT3IgaXMgaXQgYSBmdW5kYW1lbnRhbCBhcmNoaXRlY3R1cmFsIGRlY2lzaW9uIGluIHRoaXMgcGFydGljdWxhciBtb2R1bGU/IEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjb25zdHJhaW50cyBoZXJlLCBhbmQgd2hhdCBkcml2ZXMgdGhlIGRlcGVuZGVuY3kgb24gdGhlIElQdjQgaW1wbGVtZW50YXRpb24uIEknbGwgbmVlZCB0byBkaWcgZGVlcGVyIGludG8gdGhlIGJ1aWxkIHN5c3RlbSBhbmQgdGhlIHN1cnJvdW5kaW5nIGNvZGUgdG8gdW5kZXJzdGFuZCB0aGUgcmF0aW9uYWxlIGJlaGluZCB0aGF0LlxuXG5BbmQgd2hpbGUgSSdtIGF0IGl0LCB3aGF0IGFib3V0IGBpcF9tY19oYXNoX3JlbW92ZWA/IEFyZSB0aGVyZSBhbnkgYXNzb2NpYXRlZCBjb25maWd1cmF0aW9ucyBvciBzZXR0aW5ncyByZWxhdGVkIHRvIHRoYXQgZnVuY3Rpb24/IEkgd2FudCB0byBtYWtlIHN1cmUgSSBkb24ndCBtaXNzIGFueXRoaW5nIHRoYXQgY291bGQgYmUgcmVsZXZhbnQgdG8gdGhlIGluaXRpYWwgb2JzZXJ2YXRpb24uIFRoaXMgY291bGQgYmUgaW1wb3J0YW50IGZvciB1bmRlcnN0YW5kaW5nIG11bHRpY2FzdCBhZGRyZXNzIGNsZWFudXAgYW5kIGhvdyBpdCBpbnRlcmFjdHMgd2l0aCB0aGUgdW5kZXJseWluZyByb3V0aW5nIHRhYmxlcy4gTGV0IG1lIGNoZWNrIHRoZSBkb2N1bWVudGF0aW9uIGFuZCBleGlzdGluZyBjb2RlIGNvbW1lbnRzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0MDQ5LCJPdXRwdXRUb2tlbnMiOjM2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMzBUMDI6NDE6NDQuNjgwMDA4Mzc1WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2MDM5ODY2NCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJpcF9tY19oYXNoX3JlbW92ZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvaXB2NC9pZ21wLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L2lwdjQvaWdtcC5jPTE0MDQ9c3RhdGljIHZvaWQgaXBfbWNfaGFzaF9hZGQoc3RydWN0IGluX2RldmljZSAqaW5fZGV2LFxcbi0tXFxubmV0L2lwdjQvaWdtcC5jLTE0MzUtXFxubmV0L2lwdjQvaWdtcC5jOjE0MzY6c3RhdGljIHZvaWQgaXBfbWNfaGFzaF9yZW1vdmUoc3RydWN0IGluX2RldmljZSAqaW5fZGV2LFxcbm5ldC9pcHY0L2lnbXAuYy0xNDM3LVxcdFxcdFxcdCAgICAgIHN0cnVjdCBpcF9tY19saXN0ICppbSlcXG4tLVxcbm5ldC9pcHY0L2lnbXAuYz0xNzc2PXZvaWQgX19pcF9tY19kZWNfZ3JvdXAoc3RydWN0IGluX2RldmljZSAqaW5fZGV2LCBfX2JlMzIgYWRkciwgZ2ZwX3QgZ2ZwKVxcbi0tXFxubmV0L2lwdjQvaWdtcC5jLTE3OTAtXFx0XFx0XFx0aWYgKG5ld191c2VycyA9PSAwKSB7XFxubmV0L2lwdjQvaWdtcC5jOjE3OTE6XFx0XFx0XFx0XFx0aXBfbWNfaGFzaF9yZW1vdmUoaW5fZGV2LCBpKTtcXG5uZXQvaXB2NC9pZ21wLmMtMTc5Mi1cXHRcXHRcXHRcXHQqaXAgPSBpLVxcdTAwM2VuZXh0X3JjdTtcXG4tLVxcbm5ldC9pcHY0L2lnbXAuYz0xOTEyPXZvaWQgaXBfbWNfZGVzdHJveV9kZXYoc3RydWN0IGluX2RldmljZSAqaW5fZGV2KVxcbi0tXFxubmV0L2lwdjQvaWdtcC5jLTE5MjUtXFx0XFx0aW5fZGV2LVxcdTAwM2VtY19saXN0ID0gaS1cXHUwMDNlbmV4dF9yY3U7XFxubmV0L2lwdjQvaWdtcC5jOjE5MjY6XFx0XFx0aXBfbWNfaGFzaF9yZW1vdmUoaW5fZGV2LCBpKTtcXG5uZXQvaXB2NC9pZ21wLmMtMTkyNy1cXHRcXHRXUklURV9PTkNFKGluX2Rldi1cXHUwMDNlbWNfY291bnQsIGluX2Rldi1cXHUwMDNlbWNfY291bnQgLSAxKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMzBUMDI6NDE6NDQuNzQwNDE1Njg5WiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMwNTEzNDMyMTUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqSW52ZXN0aWdhdGluZyB0aGUgQ29tcGlsYXRpb24gb2YgYGlwX21jX2hhc2hfcmVtb3ZlYCoqXG5cbk9rYXksIHNvIGBpcF9tY19oYXNoX3JlbW92ZWAgaXMgYWx3YXlzIHNob3dpbmcgdXAgaW4gdGhlIGNvbXBpbGVkIGNvZGUuIFRoYXQncyBhIGJpdCBvZGQuIEkga25vdyBgSVBfTVVMVElDQVNUYCBpcyB0aGlzIGNvbmZpZ3VyYXRpb24gb3B0aW9uIHRoYXQgY29udHJvbHMgdGhlIGluY2x1c2lvbiBvZiBJR01QdjMgYW5kIG90aGVyIG11bHRpY2FzdCBnb29kaWVzLiBCdXQgdGhlIHByZXNlbmNlIG9mIGBpZ21wLmNgIGluIHRoZSBjb21waWxlZCBidWlsZCBzZWVtcyBpbmRlcGVuZGVudCBvZiB3aGV0aGVyIG9yIG5vdCB0aGlzIGBJUF9NVUxUSUNBU1RgIGZsYWcgaXMgc2V0LiBNeSBtYWluIHF1ZXN0aW9uIGhlcmUgaXM6IGRvZXMgYGlwX21jX2hhc2hfcmVtb3ZlYCBhY3R1YWxseSAqZG8qIGFueXRoaW5nIGlmIGBJUF9NVUxUSUNBU1RgIGlzIGRpc2FibGVkPyBPciBpcyB0aGlzIGp1c3QgZGVhZCBjb2RlIHRoYXQncyBnZXR0aW5nIGluY2x1ZGVkIHVubmVjZXNzYXJpbHk/IEkgbmVlZCB0byBmaWd1cmUgb3V0IGlmIHRoZXJlJ3MgYSBmdW5jdGlvbmFsIGRlcGVuZGVuY3kgYmV0d2VlbiB0aGUgdHdvLCBvciBpZiB0aGlzIGZ1bmN0aW9uIGlzIGFsd2F5cyBjb21waWxlZCByZWdhcmRsZXNzIG9mIHdoYXQgbXVsdGljYXN0IGZlYXR1cmVzIGFyZSBlbmFibGVkLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0NzQ3LCJPdXRwdXRUb2tlbnMiOjM4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NzEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMzBUMDI6NDE6NDcuNzkxNzYxNTU0WiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE3MjE2MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJuZXQvaXB2NC9pZ21wLmNcIixcbiAgXCJGaXJzdExpbmVcIjogMTQzMCxcbiAgXCJMaW5lQ291bnRcIjogMjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiMTQzMDpcXHRcXHRcXHRSQ1VfSU5JVF9QT0lOVEVSKG1jX2hhc2hbaGFzaF0sIGltKTtcXG4xNDMxOlxcdFxcdH1cXG4xNDMyOlxcdFxcbjE0MzM6XFx0XFx0cmN1X2Fzc2lnbl9wb2ludGVyKGluX2Rldi1cXHUwMDNlbWNfaGFzaCwgbWNfaGFzaCk7XFxuMTQzNDpcXHR9XFxuMTQzNTpcXHRcXG4xNDM2OlxcdHN0YXRpYyB2b2lkIGlwX21jX2hhc2hfcmVtb3ZlKHN0cnVjdCBpbl9kZXZpY2UgKmluX2RldixcXG4xNDM3OlxcdFxcdFxcdFxcdCAgICAgIHN0cnVjdCBpcF9tY19saXN0ICppbSlcXG4xNDM4OlxcdHtcXG4xNDM5OlxcdFxcdHN0cnVjdCBpcF9tY19saXN0IF9fcmN1ICoqbWNfaGFzaCA9IHJ0bmxfZGVyZWZlcmVuY2UoaW5fZGV2LVxcdTAwM2VtY19oYXNoKTtcXG4xNDQwOlxcdFxcdHN0cnVjdCBpcF9tY19saXN0ICphdXg7XFxuMTQ0MTpcXHRcXG4xNDQyOlxcdFxcdGlmICghbWNfaGFzaClcXG4xNDQzOlxcdFxcdFxcdHJldHVybjtcXG4xNDQ0OlxcdFxcdG1jX2hhc2ggKz0gaXBfbWNfaGFzaChpbSk7XFxuMTQ0NTpcXHRcXHR3aGlsZSAoKGF1eCA9IHJ0bmxfZGVyZWZlcmVuY2UoKm1jX2hhc2gpKSAhPSBpbSlcXG4xNDQ2OlxcdFxcdFxcdG1jX2hhc2ggPSBcXHUwMDI2YXV4LVxcdTAwM2VuZXh0X2hhc2g7XFxuMTQ0NzpcXHRcXHQqbWNfaGFzaCA9IGltLVxcdTAwM2VuZXh0X2hhc2g7XFxuMTQ0ODpcXHR9XFxuMTQ0OTpcXHRcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMzBUMDI6NDE6NDcuNzkxOTM2NjE0WiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI1OTE5MDI0ODksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0J3MgaW50ZXJuYWwgbW9ub2xvZ3VlOlxuXG4qKkRlbHZpbmcgaW50byBNZW1vcnkgQWxsb2NhdGlvbioqXG5cbkFscmlnaHQsIHNvIEknbSB0aGlua2luZyBhYm91dCB0aGlzIGNvZGUuIEl0IHNlZW1zIHRvIGJlIHdvcmtpbmcgd2l0aCBgaW5fZGV2LVx1MDAzZW1jX2hhc2hgLiBNeSBpbW1lZGlhdGUgcXVlc3Rpb24gaXM6ICp3aGVuKiBleGFjdGx5IGlzIHRoaXMgYG1jX2hhc2hgIGFsbG9jYXRlZD8gSXMgaXQgZHVyaW5nIHRoZSBpbml0aWFsaXphdGlvbiBvZiBgaW5fZGV2YCwgcGVyaGFwcz8gT3IgaXMgaXQgbGF6aWx5IGFsbG9jYXRlZCBvbiBmaXJzdCB1c2U/IEtub3dpbmcgdGhpcyBpcyBhYnNvbHV0ZWx5IGNydWNpYWwgZm9yIHVuZGVyc3RhbmRpbmcgcG90ZW50aWFsIHJhY2UgY29uZGl0aW9ucywgbWVtb3J5IGxlYWtzLCBhbmQgb3ZlcmFsbCBwcm9ncmFtIHN0YWJpbGl0eS4gSSBuZWVkIHRvIHRyYWNlIGJhY2sgdGhlIHVzYWdlIG9mIGBpbl9kZXZgIGFuZCBgbWNfaGFzaGAgdG8gZmlndXJlIG91dCB0aGUgZXhhY3QgcG9pbnQgb2YgYWxsb2NhdGlvbi4gVGhpcyBkZXRhaWxzIHdpbGwgaW1wYWN0IHRoZSBlbnRpcmUgcHJvamVjdCwgc28gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaXQgZnVsbHkuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjUzNTQsIk91dHB1dFRva2VucyI6MzIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMiwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTMwVDAyOjQxOjUwLjM4Mzg0MjkyM1oiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjYyNjQ2OTE0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm1jX2hhc2hcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L2lwdjQvaWdtcC5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9pcHY0L2lnbXAuYz0xMzUyPXN0YXRpYyB2b2lkIGlnbXBfZ3JvdXBfYWRkZWQoc3RydWN0IGlwX21jX2xpc3QgKmltKVxcbi0tXFxubmV0L2lwdjQvaWdtcC5jLTEzOTgtXFxubmV0L2lwdjQvaWdtcC5jOjEzOTk6c3RhdGljIHUzMiBpcF9tY19oYXNoKGNvbnN0IHN0cnVjdCBpcF9tY19saXN0ICppbSlcXG5uZXQvaXB2NC9pZ21wLmMtMTQwMC17XFxuLS1cXG5uZXQvaXB2NC9pZ21wLmMtMTQwMy1cXG5uZXQvaXB2NC9pZ21wLmM6MTQwNDpzdGF0aWMgdm9pZCBpcF9tY19oYXNoX2FkZChzdHJ1Y3QgaW5fZGV2aWNlICppbl9kZXYsXFxubmV0L2lwdjQvaWdtcC5jLTE0MDUtXFx0XFx0XFx0ICAgc3RydWN0IGlwX21jX2xpc3QgKmltKVxcbm5ldC9pcHY0L2lnbXAuYy0xNDA2LXtcXG5uZXQvaXB2NC9pZ21wLmM6MTQwNzpcXHRzdHJ1Y3QgaXBfbWNfbGlzdCBfX3JjdSAqKm1jX2hhc2g7XFxubmV0L2lwdjQvaWdtcC5jLTE0MDgtXFx0dTMyIGhhc2g7XFxubmV0L2lwdjQvaWdtcC5jLTE0MDktXFxubmV0L2lwdjQvaWdtcC5jOjE0MTA6XFx0bWNfaGFzaCA9IHJ0bmxfZGVyZWZlcmVuY2UoaW5fZGV2LVxcdTAwM2VtY19oYXNoKTtcXG5uZXQvaXB2NC9pZ21wLmM6MTQxMTpcXHRpZiAobWNfaGFzaCkge1xcbm5ldC9pcHY0L2lnbXAuYzoxNDEyOlxcdFxcdGhhc2ggPSBpcF9tY19oYXNoKGltKTtcXG5uZXQvaXB2NC9pZ21wLmM6MTQxMzpcXHRcXHRpbS1cXHUwMDNlbmV4dF9oYXNoID0gbWNfaGFzaFtoYXNoXTtcXG5uZXQvaXB2NC9pZ21wLmM6MTQxNDpcXHRcXHRyY3VfYXNzaWduX3BvaW50ZXIobWNfaGFzaFtoYXNoXSwgaW0pO1xcbm5ldC9pcHY0L2lnbXAuYy0xNDE1LVxcdFxcdHJldHVybjtcXG4tLVxcbm5ldC9pcHY0L2lnbXAuYy0xNDIxLVxcbm5ldC9pcHY0L2lnbXAuYzoxNDIyOlxcdG1jX2hhc2ggPSBremFsbG9jKHNpemVvZihzdHJ1Y3QgaXBfbWNfbGlzdCAqKSBcXHUwMDNjXFx1MDAzYyBNQ19IQVNIX1NaX0xPRyxcXG5uZXQvaXB2NC9pZ21wLmMtMTQyMy1cXHRcXHRcXHQgIEdGUF9LRVJORUwpO1xcbm5ldC9pcHY0L2lnbXAuYzoxNDI0OlxcdGlmICghbWNfaGFzaClcXG5uZXQvaXB2NC9pZ21wLmMtMTQyNS1cXHRcXHRyZXR1cm47XFxuLS1cXG5uZXQvaXB2NC9pZ21wLmMtMTQyNy1cXHRmb3JfZWFjaF9wbWNfcnRubChpbl9kZXYsIGltKSB7XFxubmV0L2lwdjQvaWdtcC5jOjE0Mjg6XFx0XFx0aGFzaCA9IGlwX21jX2hhc2goaW0pO1xcbm5ldC9pcHY0L2lnbXAuYzoxNDI5OlxcdFxcdGltLVxcdTAwM2VuZXh0X2hhc2ggPSBtY19oYXNoW2hhc2hdO1xcbm5ldC9pcHY0L2lnbXAuYzoxNDMwOlxcdFxcdFJDVV9JTklUX1BPSU5URVIobWNfaGFzaFtoYXNoXSwgaW0pO1xcbm5ldC9pcHY0L2lnbXAuYy0xNDMxLVxcdH1cXG5uZXQvaXB2NC9pZ21wLmMtMTQzMi1cXG5uZXQvaXB2NC9pZ21wLmM6MTQzMzpcXHRyY3VfYXNzaWduX3BvaW50ZXIoaW5fZGV2LVxcdTAwM2VtY19oYXNoLCBtY19oYXNoKTtcXG5uZXQvaXB2NC9pZ21wLmMtMTQzNC19XFxubmV0L2lwdjQvaWdtcC5jLTE0MzUtXFxubmV0L2lwdjQvaWdtcC5jOjE0MzY6c3RhdGljIHZvaWQgaXBfbWNfaGFzaF9yZW1vdmUoc3RydWN0IGluX2RldmljZSAqaW5fZGV2LFxcbm5ldC9pcHY0L2lnbXAuYy0xNDM3LVxcdFxcdFxcdCAgICAgIHN0cnVjdCBpcF9tY19saXN0ICppbSlcXG5uZXQvaXB2NC9pZ21wLmMtMTQzOC17XFxubmV0L2lwdjQvaWdtcC5jOjE0Mzk6XFx0c3RydWN0IGlwX21jX2xpc3QgX19yY3UgKiptY19oYXNoID0gcnRubF9kZXJlZmVyZW5jZShpbl9kZXYtXFx1MDAzZW1jX2hhc2gpO1xcbm5ldC9pcHY0L2lnbXAuYy0xNDQwLVxcdHN0cnVjdCBpcF9tY19saXN0ICphdXg7XFxubmV0L2lwdjQvaWdtcC5jLTE0NDEtXFxubmV0L2lwdjQvaWdtcC5jOjE0NDI6XFx0aWYgKCFtY19oYXNoKVxcbm5ldC9pcHY0L2lnbXAuYy0xNDQzLVxcdFxcdHJldHVybjtcXG5uZXQvaXB2NC9pZ21wLmM6MTQ0NDpcXHRtY19oYXNoICs9IGlwX21jX2hhc2goaW0pO1xcbm5ldC9pcHY0L2lnbXAuYzoxNDQ1OlxcdHdoaWxlICgoYXV4ID0gcnRubF9kZXJlZmVyZW5jZSgqbWNfaGFzaCkpICE9IGltKVxcbm5ldC9pcHY0L2lnbXAuYzoxNDQ2OlxcdFxcdG1jX2hhc2ggPSBcXHUwMDI2YXV4LVxcdTAwM2VuZXh0X2hhc2g7XFxubmV0L2lwdjQvaWdtcC5jOjE0NDc6XFx0Km1jX2hhc2ggPSBpbS1cXHUwMDNlbmV4dF9oYXNoO1xcbm5ldC9pcHY0L2lnbXAuYy0xNDQ4LX1cXG4tLVxcbm5ldC9pcHY0L2lnbXAuYz0xNTE4PXN0YXRpYyB2b2lkIF9fX19pcF9tY19pbmNfZ3JvdXAoc3RydWN0IGluX2RldmljZSAqaW5fZGV2LCBfX2JlMzIgYWRkcixcXG4tLVxcbm5ldC9pcHY0L2lnbXAuYy0xNTIwLXtcXG5uZXQvaXB2NC9pZ21wLmM6MTUyMTpcXHRzdHJ1Y3QgaXBfbWNfbGlzdCBfX3JjdSAqKm1jX2hhc2g7XFxubmV0L2lwdjQvaWdtcC5jLTE1MjItXFx0c3RydWN0IGlwX21jX2xpc3QgKmltO1xcbi0tXFxubmV0L2lwdjQvaWdtcC5jLTE1MjUtXFxubmV0L2lwdjQvaWdtcC5jOjE1MjY6XFx0bWNfaGFzaCA9IHJ0bmxfZGVyZWZlcmVuY2UoaW5fZGV2LVxcdTAwM2VtY19oYXNoKTtcXG5uZXQvaXB2NC9pZ21wLmM6MTUyNzpcXHRpZiAobWNfaGFzaCkge1xcbm5ldC9pcHY0L2lnbXAuYy0xNTI4LVxcdFxcdHUzMiBoYXNoID0gaGFzaF8zMigoX19mb3JjZSB1MzIpYWRkciwgTUNfSEFTSF9TWl9MT0cpO1xcbm5ldC9pcHY0L2lnbXAuYy0xNTI5LVxcbm5ldC9pcHY0L2lnbXAuYzoxNTMwOlxcdFxcdGZvciAoaW0gPSBydG5sX2RlcmVmZXJlbmNlKG1jX2hhc2hbaGFzaF0pO1xcbm5ldC9pcHY0L2lnbXAuYy0xNTMxLVxcdFxcdCAgICAgaW07XFxuLS1cXG5uZXQvaXB2NC9pZ21wLmMtMTU3MS1cXG5uZXQvaXB2NC9pZ21wLmM6MTU3MjpcXHRpcF9tY19oYXNoX2FkZChpbl9kZXYsIGltKTtcXG5uZXQvaXB2NC9pZ21wLmMtMTU3My1cXG4tLVxcbm5ldC9pcHY0L2lnbXAuYz0xNzc2PXZvaWQgX19pcF9tY19kZWNfZ3JvdXAoc3RydWN0IGluX2RldmljZSAqaW5fZGV2LCBfX2JlMzIgYWRkciwgZ2ZwX3QgZ2ZwKVxcbi0tXFxubmV0L2lwdjQvaWdtcC5jLTE3OTAtXFx0XFx0XFx0aWYgKG5ld191c2VycyA9PSAwKSB7XFxubmV0L2lwdjQvaWdtcC5jOjE3OTE6XFx0XFx0XFx0XFx0aXBfbWNfaGFzaF9yZW1vdmUoaW5fZGV2LCBpKTtcXG5uZXQvaXB2NC9pZ21wLmMtMTc5Mi1cXHRcXHRcXHRcXHQqaXAgPSBpLVxcdTAwM2VuZXh0X3JjdTtcXG4tLVxcbm5ldC9pcHY0L2lnbXAuYz0xOTEyPXZvaWQgaXBfbWNfZGVzdHJveV9kZXYoc3RydWN0IGluX2RldmljZSAqaW5fZGV2KVxcbi0tXFxubmV0L2lwdjQvaWdtcC5jLTE5MjUtXFx0XFx0aW5fZGV2LVxcdTAwM2VtY19saXN0ID0gaS1cXHUwMDNlbmV4dF9yY3U7XFxubmV0L2lwdjQvaWdtcC5jOjE5MjY6XFx0XFx0aXBfbWNfaGFzaF9yZW1vdmUoaW5fZGV2LCBpKTtcXG5uZXQvaXB2NC9pZ21wLmMtMTkyNy1cXHRcXHRXUklURV9PTkNFKGluX2Rldi1cXHUwMDNlbWNfY291bnQsIGluX2Rldi1cXHUwMDNlbWNfY291bnQgLSAxKTtcXG4tLVxcbm5ldC9pcHY0L2lnbXAuYz0yODI2PWludCBpcF9jaGVja19tY19yY3Uoc3RydWN0IGluX2RldmljZSAqaW5fZGV2LCBfX2JlMzIgbWNfYWRkciwgX19iZTMyIHNyY19hZGRyLCB1OCBwcm90bylcXG4tLVxcbm5ldC9pcHY0L2lnbXAuYy0yODI4LVxcdHN0cnVjdCBpcF9tY19saXN0ICppbTtcXG5uZXQvaXB2NC9pZ21wLmM6MjgyOTpcXHRzdHJ1Y3QgaXBfbWNfbGlzdCBfX3JjdSAqKm1jX2hhc2g7XFxubmV0L2lwdjQvaWdtcC5jLTI4MzAtXFx0c3RydWN0IGlwX3NmX2xpc3QgKnBzZjtcXG4tLVxcbm5ldC9pcHY0L2lnbXAuYy0yODMyLVxcbm5ldC9pcHY0L2lnbXAuYzoyODMzOlxcdG1jX2hhc2ggPSByY3VfZGVyZWZlcmVuY2UoaW5fZGV2LVxcdTAwM2VtY19oYXNoKTtcXG5uZXQvaXB2NC9pZ21wLmM6MjgzNDpcXHRpZiAobWNfaGFzaCkge1xcbm5ldC9pcHY0L2lnbXAuYy0yODM1LVxcdFxcdHUzMiBoYXNoID0gaGFzaF8zMigoX19mb3JjZSB1MzIpbWNfYWRkciwgTUNfSEFTSF9TWl9MT0cpO1xcbm5ldC9pcHY0L2lnbXAuYy0yODM2LVxcbm5ldC9pcHY0L2lnbXAuYzoyODM3OlxcdFxcdGZvciAoaW0gPSByY3VfZGVyZWZlcmVuY2UobWNfaGFzaFtoYXNoXSk7XFxubmV0L2lwdjQvaWdtcC5jLTI4MzgtXFx0XFx0ICAgICBpbSAhPSBOVUxMO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0zMFQwMjo0MTo1MC42NDY0OTc4NzdaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6ODU3MjIzMjM5MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBbmFseXNpcyBvZiB0aGUgSVB2NCBNdWx0aWNhc3QgQ29kZSBNb2RpZmljYXRpb24qKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIE15IGluaXRpYWwgdGhvdWdodCB3YXMgdG8gZG91YmxlLWNoZWNrIHRoZSBkZXBlbmRlbmNpZXMsIHNwZWNpZmljYWxseSB3aGV0aGVyIGBJUF9NVUxUSUNBU1RgIHdhcyByZXF1aXJlZCBiZWNhdXNlIGl0J3MgYXNzb2NpYXRlZCB3aXRoIElHTVB2MyBhbmQgYWR2YW5jZWQgcm91dGluZy4gQnV0IEkgcXVpY2tseSByZWFsaXplZCB0aGF0IHRoZSBjb3JlIG11bHRpY2FzdCBncm91cCBqb2luaW5nL2xlYXZpbmcgZnVuY3Rpb25zIGFyZSBhbHdheXMgYXZhaWxhYmxlIGluIElQdjQsIHJlZ2FyZGxlc3Mgb2YgdGhhdCBjb25maWcuIGBfX19faXBfbWNfaW5jX2dyb3VwYCBjb25maXJtZWQgdGhpcywgYXMgaXQgZG9lc24ndCBoYXZlIGEgY29uZGl0aW9uYWwgY29tcGlsYXRpb24gYmFzZWQgb24gdGhlIGBJUF9NVUxUSUNBU1RgIGNvbmZpZy4gTXkgaW5pdGlhbCB0aG91Z2h0IHdhcyB0byBpbmNsdWRlIGl0IGFueXdheSwganVzdCB0byBiZSBzYWZlLCBidXQgdGhlbiB0aGUgcHJvbXB0IHJlbWluZGVkIG1lIHRvIGJlIHNwZWNpZmljLlxuXG5Ob3csIGZvY3VzaW5nIG9uIHRoZSBjb2RlIGl0c2VsZiwgYGlwX21jX2Rlc3Ryb3lfZGV2YCBpcyB0aGUgZnVuY3Rpb24gdGhhdCdzIGJlaW5nIG1vZGlmaWVkLiBJIGNhbiBzZWUgdGhhdCBgaXBfbWNfaGFzaF9yZW1vdmVgIGlzIGNhbGxlZCB3aXRoaW4gdGhlIGNvZGUuIEFuZCBJIHNlZSB0aGF0IGBpbmV0ZGV2X2Rlc3Ryb3lgIGNhbGxzIGBpcF9tY19kZXN0cm95X2RldmAsIHdoaWNoIGhlbHBzIGNsYXJpZnkgdGhlIGNhbGwgY2hhaW4uXG5cblJldmlld2luZyB0aGUgcGF0Y2gsIGl0J3MgaW1tZWRpYXRlbHkgY2xlYXIgdGhhdCB0aGUgY29kZSBub3cgY2FsbHMgYGlwX21jX2hhc2hfcmVtb3ZlYCB0byByZW1vdmUgdGhlIG11bHRpY2FzdCBncm91cCBmcm9tIHRoZSBoYXNoIHRhYmxlLiBUaGlzIGlzIGNydWNpYWwgYmVjYXVzZSBpdCBhZGRyZXNzZXMgYSBidWcgd2hlcmUgdGhlIG11bHRpY2FzdCBncm91cCB3YXMgcmVtb3ZlZCBmcm9tIHRoZSBsaW5rZWQgbGlzdCAoYG1jX2xpc3RgKSBidXQgKm5vdCogZnJvbSB0aGUgaGFzaCB0YWJsZSB3aGVuIHRoZSBkZXZpY2UgaXMgZGVzdHJveWVkLiBJdCdzIGEgY2xlYW4gZnVuY3Rpb25hbCBmaXguIE5vIHNwZWNpZmljIGNvbmZpZ3VyYXRpb25zIGFyZSBuZWVkZWQgdG8gZW5hYmxlIHRoaXMgY2hhbmdlLCBhcyB0aGlzIGlzIGNvcmUgSVB2NCBtdWx0aWNhc3QgYmVoYXZpb3IuIFNvLCBubyBjb25maWcgY2hhbmdlcyBuZWVkZWQsIGl0J3MgY29tcGlsZWQgYnkgZGVmYXVsdC4gSSBhbSBjb25maWRlbnQgaW4gdGhhdCBhc3Nlc3NtZW50LiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjc2OTYsIk91dHB1dFRva2VucyI6OTUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2NDIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMzBUMDI6NDE6NTkuMjE4NzMyNTM4WiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzMxMTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJpcF9tY19kZXN0cm95X2RldlwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgYSBtaXNzaW5nIGlwX21jX2hhc2hfcmVtb3ZlIGNhbGwgaW4gaXBfbWNfZGVzdHJveV9kZXYgdG8gZW5zdXJlIG11bHRpY2FzdCBncm91cHMgYXJlIHByb3Blcmx5IHJlbW92ZWQgZnJvbSB0aGUgZGV2aWNlJ3MgbXVsdGljYXN0IGhhc2ggdGFibGUgd2hlbiB0aGUgZGV2aWNlIGlzIGRlc3Ryb3llZC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIElQdjQgbXVsdGljYXN0IGxvZ2ljLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImlwX21jX2Rlc3Ryb3lfZGV2XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBhIG1pc3NpbmcgaXBfbWNfaGFzaF9yZW1vdmUgY2FsbCBpbiBpcF9tY19kZXN0cm95X2RldiB0byBlbnN1cmUgbXVsdGljYXN0IGdyb3VwcyBhcmUgcHJvcGVybHkgcmVtb3ZlZCBmcm9tIHRoZSBkZXZpY2UncyBtdWx0aWNhc3QgaGFzaCB0YWJsZSB3aGVuIHRoZSBkZXZpY2UgaXMgZGVzdHJveWVkLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgSVB2NCBtdWx0aWNhc3QgbG9naWMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowfzd6c[1] Phase: Succeeded StartedAt: 2026-06-30 02:42:41 +0000 UTC FinishedAt: 2026-06-30 02:42:41 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfzd6c[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-06-30 02:42:41 +0000 UTC FinishedAt: 2026-06-30 02:42:41 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfzd6c[2] Phase: Succeeded StartedAt: 2026-06-30 02:42:41 +0000 UTC FinishedAt: 2026-06-30 07:00:34 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfzd6c[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_mc_destroy_dev"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","series_id":"1f5e4510-25bd-409d-a974-27e112ee672e","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-06-30 02:42:41 +0000 UTC FinishedAt: 2026-06-30 07:00:34 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_mc_destroy_dev"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","series_id":"1f5e4510-25bd-409d-a974-27e112ee672e","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowfzd6c[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_mc_destroy_dev"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","series_id":"1f5e4510-25bd-409d-a974-27e112ee672e","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-06-30 02:42:41 +0000 UTC FinishedAt: 2026-06-30 02:42:51 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfzd6c[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_mc_destroy_dev"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","series_id":"1f5e4510-25bd-409d-a974-27e112ee672e","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-06-30 02:42:41 +0000 UTC FinishedAt: 2026-06-30 02:42:49 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowfzd6c/series-workflowfzd6c-convert-artifact-8365421/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowfzd6c[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_mc_destroy_dev"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","series_id":"1f5e4510-25bd-409d-a974-27e112ee672e","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-06-30 02:42:51 +0000 UTC FinishedAt: 2026-06-30 03:14:25 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfzd6c[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_mc_destroy_dev"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","series_id":"1f5e4510-25bd-409d-a974-27e112ee672e","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-06-30 02:42:51 +0000 UTC FinishedAt: 2026-06-30 03:14:25 +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:*f5487a75-d05e-4fa5-8279-78e1cc0ad675,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-workflowfzd6c/series-workflowfzd6c-convert-artifact-8365421/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": "dd3346ac-559d-44e7-b0b0-0ce1863fce77", "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-workflowfzd6c/series-workflowfzd6c-build-action-1996754787/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowfzd6c[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_mc_destroy_dev"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","series_id":"1f5e4510-25bd-409d-a974-27e112ee672e","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-06-30 02:42:51 +0000 UTC FinishedAt: 2026-06-30 03:14:14 +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:*f5487a75-d05e-4fa5-8279-78e1cc0ad675,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-workflowfzd6c/series-workflowfzd6c-convert-artifact-8365421/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": "dd3346ac-559d-44e7-b0b0-0ce1863fce77", "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-workflowfzd6c/series-workflowfzd6c-build-action-1996754787/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowfzd6c[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_mc_destroy_dev"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","series_id":"1f5e4510-25bd-409d-a974-27e112ee672e","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-06-30 03:14:25 +0000 UTC FinishedAt: 2026-06-30 03:14:25 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfzd6c[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_mc_destroy_dev"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","series_id":"1f5e4510-25bd-409d-a974-27e112ee672e","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-06-30 03:14:25 +0000 UTC FinishedAt: 2026-06-30 03:14:25 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfzd6c[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_mc_destroy_dev"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","series_id":"1f5e4510-25bd-409d-a974-27e112ee672e","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-06-30 03:14:25 +0000 UTC FinishedAt: 2026-06-30 03:15:06 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfzd6c[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_mc_destroy_dev"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","series_id":"1f5e4510-25bd-409d-a974-27e112ee672e","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-06-30 03:14:25 +0000 UTC FinishedAt: 2026-06-30 03:14:57 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","series_id":"1f5e4510-25bd-409d-a974-27e112ee672e","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowfzd6c/series-workflowfzd6c-convert-artifact-1231458760/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowfzd6c[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_mc_destroy_dev"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","series_id":"1f5e4510-25bd-409d-a974-27e112ee672e","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-06-30 03:15:06 +0000 UTC FinishedAt: 2026-06-30 03:17:12 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfzd6c[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_mc_destroy_dev"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","series_id":"1f5e4510-25bd-409d-a974-27e112ee672e","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-06-30 03:15:06 +0000 UTC FinishedAt: 2026-06-30 03:17:03 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*dd3346ac-559d-44e7-b0b0-0ce1863fce77,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-workflowfzd6c/series-workflowfzd6c-build-action-1996754787/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-workflowfzd6c[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_mc_destroy_dev"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","series_id":"1f5e4510-25bd-409d-a974-27e112ee672e","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-06-30 03:17:12 +0000 UTC FinishedAt: 2026-06-30 03:17:12 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfzd6c[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_mc_destroy_dev"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","series_id":"1f5e4510-25bd-409d-a974-27e112ee672e","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-06-30 03:17:12 +0000 UTC FinishedAt: 2026-06-30 03:17:12 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfzd6c[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_mc_destroy_dev"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","series_id":"1f5e4510-25bd-409d-a974-27e112ee672e","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-06-30 03:17:12 +0000 UTC FinishedAt: 2026-06-30 03:53:13 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfzd6c[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_mc_destroy_dev"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","series_id":"1f5e4510-25bd-409d-a974-27e112ee672e","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-06-30 03:17:12 +0000 UTC FinishedAt: 2026-06-30 03:53:13 +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:*f5487a75-d05e-4fa5-8279-78e1cc0ad675,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-workflowfzd6c/series-workflowfzd6c-convert-artifact-1231458760/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": "b37bf027-cc2e-48df-b9d3-254110254b79", "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-workflowfzd6c/series-workflowfzd6c-build-action-3444557428/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowfzd6c[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_mc_destroy_dev"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","series_id":"1f5e4510-25bd-409d-a974-27e112ee672e","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-06-30 03:17:12 +0000 UTC FinishedAt: 2026-06-30 03:52:51 +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:*f5487a75-d05e-4fa5-8279-78e1cc0ad675,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-workflowfzd6c/series-workflowfzd6c-convert-artifact-1231458760/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": "b37bf027-cc2e-48df-b9d3-254110254b79", "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-workflowfzd6c/series-workflowfzd6c-build-action-3444557428/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowfzd6c[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_mc_destroy_dev"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","series_id":"1f5e4510-25bd-409d-a974-27e112ee672e","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-06-30 03:53:13 +0000 UTC FinishedAt: 2026-06-30 03:53:13 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfzd6c[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_mc_destroy_dev"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","series_id":"1f5e4510-25bd-409d-a974-27e112ee672e","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-06-30 03:53:13 +0000 UTC FinishedAt: 2026-06-30 03:53:13 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfzd6c[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_mc_destroy_dev"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","series_id":"1f5e4510-25bd-409d-a974-27e112ee672e","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-06-30 03:53:13 +0000 UTC FinishedAt: 2026-06-30 03:55:36 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfzd6c[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_mc_destroy_dev"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","series_id":"1f5e4510-25bd-409d-a974-27e112ee672e","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-06-30 03:53:13 +0000 UTC FinishedAt: 2026-06-30 03:55:26 +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:*b37bf027-cc2e-48df-b9d3-254110254b79,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-workflowfzd6c/series-workflowfzd6c-build-action-3444557428/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-workflowfzd6c[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_mc_destroy_dev"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","series_id":"1f5e4510-25bd-409d-a974-27e112ee672e","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-06-30 03:55:36 +0000 UTC FinishedAt: 2026-06-30 07:00:34 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfzd6c[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_mc_destroy_dev"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","series_id":"1f5e4510-25bd-409d-a974-27e112ee672e","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-06-30 03:55:36 +0000 UTC FinishedAt: 2026-06-30 07:00:34 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:config,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_mc_destroy_dev"],"skip_cover_check":false},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:track,Default:nil,Value:*KASAN,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:base-build-id,Default:nil,Value:*dd3346ac-559d-44e7-b0b0-0ce1863fce77,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*b37bf027-cc2e-48df-b9d3-254110254b79,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-workflowfzd6c/series-workflowfzd6c-build-action-1996754787/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-workflowfzd6c/series-workflowfzd6c-build-action-3444557428/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowfzd6c[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_mc_destroy_dev"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","series_id":"1f5e4510-25bd-409d-a974-27e112ee672e","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-06-30 03:55:36 +0000 UTC FinishedAt: 2026-06-30 03:57:48 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfzd6c[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_mc_destroy_dev"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","series_id":"1f5e4510-25bd-409d-a974-27e112ee672e","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-06-30 03:55:36 +0000 UTC FinishedAt: 2026-06-30 03:57:39 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_mc_destroy_dev"],"skip_cover_check":false},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowfzd6c/series-workflowfzd6c-convert-artifact-2130593153/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowfzd6c[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_mc_destroy_dev"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","series_id":"1f5e4510-25bd-409d-a974-27e112ee672e","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-06-30 03:55:36 +0000 UTC FinishedAt: 2026-06-30 03:55:36 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfzd6c[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_mc_destroy_dev"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","series_id":"1f5e4510-25bd-409d-a974-27e112ee672e","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-06-30 03:55:36 +0000 UTC FinishedAt: 2026-06-30 03:55:36 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfzd6c[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_mc_destroy_dev"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","series_id":"1f5e4510-25bd-409d-a974-27e112ee672e","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-06-30 03:55:36 +0000 UTC FinishedAt: 2026-06-30 03:55:36 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfzd6c[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_mc_destroy_dev"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","series_id":"1f5e4510-25bd-409d-a974-27e112ee672e","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-06-30 03:57:48 +0000 UTC FinishedAt: 2026-06-30 07:00:34 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfzd6c[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_mc_destroy_dev"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","series_id":"1f5e4510-25bd-409d-a974-27e112ee672e","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-06-30 03:57:48 +0000 UTC FinishedAt: 2026-06-30 07:00:23 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*dd3346ac-559d-44e7-b0b0-0ce1863fce77,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*b37bf027-cc2e-48df-b9d3-254110254b79,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-workflowfzd6c/series-workflowfzd6c-build-action-1996754787/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-workflowfzd6c/series-workflowfzd6c-build-action-3444557428/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-workflowfzd6c/series-workflowfzd6c-convert-artifact-2130593153/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,}