Name: series-workflowmnh4c Phase: Succeeded StartedAt: 2026-06-20 06:10:50 +0000 UTC FinishedAt: 2026-06-20 07:14:59 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmnh4c[0] Phase: Succeeded StartedAt: 2026-06-20 06:10:50 +0000 UTC FinishedAt: 2026-06-20 06:23:22 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmnh4c[0].run-triage Phase: Succeeded StartedAt: 2026-06-20 06:10:50 +0000 UTC FinishedAt: 2026-06-20 06:23:22 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "torvalds", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux", "commit_hash": "1a3746ccbb0a97bed3c06ccde6b880013b1dddc1", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "IPW2100" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "torvalds", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux", "commit_hash": "1a3746ccbb0a97bed3c06ccde6b880013b1dddc1", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "IPW2100" ], "series_id": "b5bd17ee-c86f-409a-9df5-238622954789" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "ipw2100_pci_init_one" ], "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+CgkJCTx0ZD4yMDI2LzA2LzIwIDA2OjIyPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0lQVzIxMDAmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtpcHcyMTAwX3BjaV9pbml0X29uZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyByZXNvdXJjZSBsZWFrcyBpbiB0aGUgZXJyb3IgcGF0aHMgb2YgdGhlIFBDSSBwcm9iZSBmdW5jdGlvbiBgaXB3MjEwMF9wY2lfaW5pdF9vbmVgLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdGhhdCBjYW4gYmUgdHJpZ2dlcmVkIGJ5IHN5emthbGxlciYjMzk7cyBQQ0kgZGV2aWNlIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjAgMDY6MjI8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCBkOWRiZDAyYTkxNGIxYjBlYWFhMTY3NmI1NGE4OTgxNzNiYWRiYjc5XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFNhdCBKdW4gMjAgMDY6MjI6MzcgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMTAwLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIxMDAuY1xuaW5kZXggYzExNDI4NDg1ZGNjZjUuLjgyMjgwODkwZjFjMGU3IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMTAwLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjEwMC5jXG5AQCAtNjE1Nyw3ICYjNDM7NjE1Nyw3IEBAIHN0YXRpYyBpbnQgaXB3MjEwMF9wY2lfaW5pdF9vbmUoc3RydWN0IHBjaV9kZXYgKnBjaV9kZXYsXG4gXHRpZiAoZXJyKSB7XG4gXHRcdHByaW50ayhLRVJOX1dBUk5JTkcgRFJWX05BTUVcbiBcdFx0ICAgICAgIFwmIzM0O0Vycm9yIGNhbGxpbmcgcGNpX2VuYWJsZV9kZXZpY2UuXFxuXCYjMzQ7KTtcbi1cdFx0cmV0dXJuIGVycjtcbiYjNDM7XHRcdGdvdG8gZmFpbDtcbiBcdH1cbiBcbiBcdHByaXYgPSBsaWJpcHdfcHJpdihkZXYpO1xuQEAgLTYxNjksMTYgJiM0Mzs2MTY5LDE0IEBAIHN0YXRpYyBpbnQgaXB3MjEwMF9wY2lfaW5pdF9vbmUoc3RydWN0IHBjaV9kZXYgKnBjaV9kZXYsXG4gXHRpZiAoZXJyKSB7XG4gXHRcdHByaW50ayhLRVJOX1dBUk5JTkcgRFJWX05BTUVcbiBcdFx0ICAgICAgIFwmIzM0O0Vycm9yIGNhbGxpbmcgcGNpX3NldF9kbWFfbWFzay5cXG5cJiMzNDspO1xuLVx0XHRwY2lfZGlzYWJsZV9kZXZpY2UocGNpX2Rldik7XG4tXHRcdHJldHVybiBlcnI7XG4mIzQzO1x0XHRnb3RvIGZhaWw7XG4gXHR9XG4gXG4gXHRlcnIgPSBwY2lfcmVxdWVzdF9yZWdpb25zKHBjaV9kZXYsIERSVl9OQU1FKTtcbiBcdGlmIChlcnIpIHtcbiBcdFx0cHJpbnRrKEtFUk5fV0FSTklORyBEUlZfTkFNRVxuIFx0XHQgICAgICAgXCYjMzQ7RXJyb3IgY2FsbGluZyBwY2lfcmVxdWVzdF9yZWdpb25zLlxcblwmIzM0Oyk7XG4tXHRcdHBjaV9kaXNhYmxlX2RldmljZShwY2lfZGV2KTtcbi1cdFx0cmV0dXJuIGVycjtcbiYjNDM7XHRcdGdvdG8gZmFpbDtcbiBcdH1cbiBcbiBcdC8qIFdlIGRpc2FibGUgdGhlIFJFVFJZX1RJTUVPVVQgcmVnaXN0ZXIgKDB4NDEpIHRvIGtlZXBcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yMCAwNjoyMjwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtJUFcyMTAwJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7aXB3MjEwMF9wY2lfaW5pdF9vbmUmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgcmVzb3VyY2UgbGVha3MgaW4gdGhlIGVycm9yIHBhdGhzIG9mIHRoZSBQQ0kgcHJvYmUgZnVuY3Rpb24gYGlwdzIxMDBfcGNpX2luaXRfb25lYC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRoYXQgY2FuIGJlIHRyaWdnZXJlZCBieSBzeXprYWxsZXImIzM5O3MgUENJIGRldmljZSBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdAogICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksCiAgIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCBkOWRiZDAyYTkxNGIxYjBlYWFhMTY3NmI1NGE4OTgxNzNiYWRiYjc5CkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFNhdCBKdW4gMjAgMDY6MjI6MzcgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIxMDAuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjEwMC5jCmluZGV4IGMxMTQyODQ4NWRjY2Y1Li44MjI4MDg5MGYxYzBlNyAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMTAwLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMTAwLmMKQEAgLTYxNTcsNyAmIzQzOzYxNTcsNyBAQCBzdGF0aWMgaW50IGlwdzIxMDBfcGNpX2luaXRfb25lKHN0cnVjdCBwY2lfZGV2ICpwY2lfZGV2LAogCWlmIChlcnIpIHsKIAkJcHJpbnRrKEtFUk5fV0FSTklORyBEUlZfTkFNRQogCQkgICAgICAgJiMzNDtFcnJvciBjYWxsaW5nIHBjaV9lbmFibGVfZGV2aWNlLlxuJiMzNDspOwotCQlyZXR1cm4gZXJyOwomIzQzOwkJZ290byBmYWlsOwogCX0KIAogCXByaXYgPSBsaWJpcHdfcHJpdihkZXYpOwpAQCAtNjE2OSwxNiAmIzQzOzYxNjksMTQgQEAgc3RhdGljIGludCBpcHcyMTAwX3BjaV9pbml0X29uZShzdHJ1Y3QgcGNpX2RldiAqcGNpX2RldiwKIAlpZiAoZXJyKSB7CiAJCXByaW50ayhLRVJOX1dBUk5JTkcgRFJWX05BTUUKIAkJICAgICAgICYjMzQ7RXJyb3IgY2FsbGluZyBwY2lfc2V0X2RtYV9tYXNrLlxuJiMzNDspOwotCQlwY2lfZGlzYWJsZV9kZXZpY2UocGNpX2Rldik7Ci0JCXJldHVybiBlcnI7CiYjNDM7CQlnb3RvIGZhaWw7CiAJfQogCiAJZXJyID0gcGNpX3JlcXVlc3RfcmVnaW9ucyhwY2lfZGV2LCBEUlZfTkFNRSk7CiAJaWYgKGVycikgewogCQlwcmludGsoS0VSTl9XQVJOSU5HIERSVl9OQU1FCiAJCSAgICAgICAmIzM0O0Vycm9yIGNhbGxpbmcgcGNpX3JlcXVlc3RfcmVnaW9ucy5cbiYjMzQ7KTsKLQkJcGNpX2Rpc2FibGVfZGV2aWNlKHBjaV9kZXYpOwotCQlyZXR1cm4gZXJyOwomIzQzOwkJZ290byBmYWlsOwogCX0KIAogCS8qIFdlIGRpc2FibGUgdGhlIFJFVFJZX1RJTUVPVVQgcmVnaXN0ZXIgKDB4NDEpIHRvIGtlZXAKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjAgMDY6MjI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjEwNgoJCQkJCQkJb3V0cHV0OiA1NgoJCQkJCQkJdGhvdWdodHM6IDEwOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBXaXJlbGVzcyBEcml2ZXIgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggZm9yIGBkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIxMDAuY2AuIEl0IGxvb2tzIGxpa2UgaXQmIzM5O3MgbWFraW5nIGEgc3VidGxlIGJ1dCBpbXBvcnRhbnQgY2hhbmdlIGluIGhvdyB0aGUgYGlwdzIxMDBfcGNpX2luaXRfb25lYCBmdW5jdGlvbiBoYW5kbGVzIGVycm9ycy4gU3BlY2lmaWNhbGx5LCBpdCYjMzk7cyBzd2FwcGluZyBvdXQgdGhlIGRpcmVjdCByZXR1cm5zIGFuZCBgcGNpX2Rpc2FibGVfZGV2aWNlKHBjaV9kZXYpYCBjYWxscyBmb3IgYSBgZ290byBmYWlsO2AgYXBwcm9hY2guIEhtbSwgSSBrbm93IHRoYXQgZnVuY3Rpb247IEkmIzM5O2xsIG5lZWQgdG8ganVtcCBpbnRvIGBpcHcyMTAwX3BjaV9pbml0X29uZWAgaXRzZWxmIHRvIHNlZSBleGFjdGx5IHdoYXQgdGhhdCBgZmFpbDpgIGxhYmVsIGlzIGRvaW5nIHdpdGhpbiB0aGlzIGNvbnRleHQuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQmIzM5O3MgYmVpbmcgY2xlYW5lZCB1cCwgYW5kIG1ha2Ugc3VyZSB0aGF0IHRoaXMgaXMgYSBzYWZlIHJlZmFjdG9yaW5nIGFuZCBub3QgY3JlYXRpbmcgYW55IHJlZ3Jlc3Npb24gb3IgcG90ZW50aWFsIHJlc291cmNlIGxlYWsuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjAgMDY6MjI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7aXB3MjEwMF9wY2lfaW5pdF9vbmUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIxMDAuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIxMDAuYz01OTk2PXN0YXRpYyBzdHJ1Y3QgbmV0X2RldmljZSAqaXB3MjEwMF9hbGxvY19kZXZpY2Uoc3RydWN0IHBjaV9kZXYgKnBjaV9kZXYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMTAwLmMtNjExOS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjEwMC5jOjYxMjA6c3RhdGljIGludCBpcHcyMTAwX3BjaV9pbml0X29uZShzdHJ1Y3QgcGNpX2RldiAqcGNpX2RldixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjEwMC5jLTYxMjEtXHRcdFx0XHRjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCAqZW50KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjEwMC5jPTY0OTU9c3RhdGljIHN0cnVjdCBwY2lfZHJpdmVyIGlwdzIxMDBfcGNpX2RyaXZlciA9IHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIxMDAuYy02NDk3LVx0LmlkX3RhYmxlID0gaXB3MjEwMF9wY2lfaWRfdGFibGUsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIxMDAuYzo2NDk4Olx0LnByb2JlID0gaXB3MjEwMF9wY2lfaW5pdF9vbmUsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIxMDAuYy02NDk5LVx0LnJlbW92ZSA9IGlwdzIxMDBfcGNpX3JlbW92ZV9vbmUsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjAgMDY6MjI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjg2MAoJCQkJCQkJb3V0cHV0OiA1MwoJCQkJCQkJdGhvdWdodHM6IDU4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGFuYWx5c2lzIG9mIHdoYXQgSSYjMzk7bSBhYm91dCB0byBkbzoKCioqRGl2aW5nIGludG8gdGhlIGlwdzIxMDAgRHJpdmVyJiMzOTtzIFBDSSBJbml0aWFsaXphdGlvbioqCgpPa2F5LCBzbyBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlIEludGVsIElQVzIxMDAgd2lyZWxlc3MgZHJpdmVyIGluaXRpYWxpemVzIGEgUENJIGRldmljZS4gU2luY2UgSSYjMzk7bSBmYW1pbGlhciB3aXRoIHRoaXMgYXJjaGl0ZWN0dXJlLCBJIGZpZ3VyZSB0aGUgYmVzdCBwbGFjZSB0byBzdGFydCBpcyB0aGUgYGlwdzIxMDAuY2AgZmlsZSB3aXRoaW4gdGhlIGBkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwYCBkaXJlY3RvcnkuIFNwZWNpZmljYWxseSwgSSYjMzk7bSB0YXJnZXRpbmcgdGhlIGBpcHcyMTAwX3BjaV9pbml0X29uZWAgZnVuY3Rpb24sIGFuZCBiYXNlZCBvbiBteSBtZW1vcnkgb2Ygc2ltaWxhciBkcml2ZXJzLCBpdCYjMzk7cyBsaWtlbHkgZGVmaW5lZCBhcm91bmQgbGluZSA2MTIwLiBUaGF0JiMzOTtzIGEgcmVhc29uYWJsZSBzdGFydGluZyBwb2ludCB0byBiZWdpbiByZXZlcnNlLWVuZ2luZWVyaW5nIHRoZSBpbml0aWFsaXphdGlvbiBwcm9jZXNzLiBUaGlzIHNob3VsZCBnaXZlIG1lIGEgc29saWQgdmlldyBpbnRvIGhvdyB0aGUgZGV2aWNlIGlzIGVudW1lcmF0ZWQsIGNvbmZpZ3VyZWQsIGFuZCBpbnRlZ3JhdGVkIHdpdGggdGhlIFBDSSBzdWJzeXN0ZW0uIEkgZXhwZWN0IHRvIHNlZSB0aGUgdHlwaWNhbCBQQ0kgcHJvYmluZywgcmVzb3VyY2UgYWxsb2NhdGlvbiwgYW5kIHByb2JhYmx5IHNvbWUgZWFybHkgZmlybXdhcmUgbG9hZGluZyBvciBkZXZpY2UgcmVzZXQgcm91dGluZXMgd2l0aGluIHRoYXQgZnVuY3Rpb24uIFRpbWUgdG8gZGlnIGluIGFuZCBzZWUgaG93IHRoZSBtYWdpYyBoYXBwZW5zIQoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzIwIDA2OjIyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMTAwLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiA2MTIwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDEwMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDs2MTIwOlx0c3RhdGljIGludCBpcHcyMTAwX3BjaV9pbml0X29uZShzdHJ1Y3QgcGNpX2RldiAqcGNpX2RldixcbjYxMjE6XHRcdFx0XHRcdGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkICplbnQpXG42MTIyOlx0e1xuNjEyMzpcdFx0dm9pZCBfX2lvbWVtICppb2FkZHI7XG42MTI0Olx0XHRzdHJ1Y3QgbmV0X2RldmljZSAqZGV2ID0gTlVMTDtcbjYxMjU6XHRcdHN0cnVjdCBpcHcyMTAwX3ByaXYgKnByaXYgPSBOVUxMO1xuNjEyNjpcdFx0aW50IGVyciA9IDA7XG42MTI3Olx0XHRpbnQgcmVnaXN0ZXJlZCA9IDA7XG42MTI4Olx0XHR1MzIgdmFsO1xuNjEyOTpcdFxuNjEzMDpcdFx0SVBXX0RFQlVHX0lORk8oXCYjMzQ7ZW50ZXJcXG5cJiMzNDspO1xuNjEzMTpcdFxuNjEzMjpcdFx0aWYgKCEocGNpX3Jlc291cmNlX2ZsYWdzKHBjaV9kZXYsIDApIFx1MDAyNiBJT1JFU09VUkNFX01FTSkpIHtcbjYxMzM6XHRcdFx0SVBXX0RFQlVHX0lORk8oXCYjMzQ7d2VpcmQgLSByZXNvdXJjZSB0eXBlIGlzIG5vdCBtZW1vcnlcXG5cJiMzNDspO1xuNjEzNDpcdFx0XHRlcnIgPSAtRU5PREVWO1xuNjEzNTpcdFx0XHRnb3RvIG91dDtcbjYxMzY6XHRcdH1cbjYxMzc6XHRcbjYxMzg6XHRcdGlvYWRkciA9IHBjaV9pb21hcChwY2lfZGV2LCAwLCAwKTtcbjYxMzk6XHRcdGlmICghaW9hZGRyKSB7XG42MTQwOlx0XHRcdHByaW50ayhLRVJOX1dBUk5JTkcgRFJWX05BTUVcbjYxNDE6XHRcdFx0ICAgICAgIFwmIzM0O0Vycm9yIGNhbGxpbmcgaW9yZW1hcC5cXG5cJiMzNDspO1xuNjE0MjpcdFx0XHRlcnIgPSAtRUlPO1xuNjE0MzpcdFx0XHRnb3RvIGZhaWw7XG42MTQ0Olx0XHR9XG42MTQ1Olx0XG42MTQ2Olx0XHQvKiBhbGxvY2F0ZSBhbmQgaW5pdGlhbGl6ZSBvdXIgbmV0X2RldmljZSAqL1xuNjE0NzpcdFx0ZGV2ID0gaXB3MjEwMF9hbGxvY19kZXZpY2UocGNpX2RldiwgaW9hZGRyKTtcbjYxNDg6XHRcdGlmICghZGV2KSB7XG42MTQ5Olx0XHRcdHByaW50ayhLRVJOX1dBUk5JTkcgRFJWX05BTUVcbjYxNTA6XHRcdFx0ICAgICAgIFwmIzM0O0Vycm9yIGNhbGxpbmcgaXB3MjEwMF9hbGxvY19kZXZpY2UuXFxuXCYjMzQ7KTtcbjYxNTE6XHRcdFx0ZXJyID0gLUVOT01FTTtcbjYxNTI6XHRcdFx0Z290byBmYWlsO1xuNjE1MzpcdFx0fVxuNjE1NDpcdFxuNjE1NTpcdFx0Lyogc2V0IHVwIFBDSSBtYXBwaW5ncyBmb3IgZGV2aWNlICovXG42MTU2Olx0XHRlcnIgPSBwY2lfZW5hYmxlX2RldmljZShwY2lfZGV2KTtcbjYxNTc6XHRcdGlmIChlcnIpIHtcbjYxNTg6XHRcdFx0cHJpbnRrKEtFUk5fV0FSTklORyBEUlZfTkFNRVxuNjE1OTpcdFx0XHQgICAgICAgXCYjMzQ7RXJyb3IgY2FsbGluZyBwY2lfZW5hYmxlX2RldmljZS5cXG5cJiMzNDspO1xuNjE2MDpcdFx0XHRnb3RvIGZhaWw7XG42MTYxOlx0XHR9XG42MTYyOlx0XG42MTYzOlx0XHRwcml2ID0gbGliaXB3X3ByaXYoZGV2KTtcbjYxNjQ6XHRcbjYxNjU6XHRcdHBjaV9zZXRfbWFzdGVyKHBjaV9kZXYpO1xuNjE2NjpcdFx0cGNpX3NldF9kcnZkYXRhKHBjaV9kZXYsIHByaXYpO1xuNjE2NzpcdFxuNjE2ODpcdFx0ZXJyID0gZG1hX3NldF9tYXNrKFx1MDAyNnBjaV9kZXYtXHUwMDNlZGV2LCBETUFfQklUX01BU0soMzIpKTtcbjYxNjk6XHRcdGlmIChlcnIpIHtcbjYxNzA6XHRcdFx0cHJpbnRrKEtFUk5fV0FSTklORyBEUlZfTkFNRVxuNjE3MTpcdFx0XHQgICAgICAgXCYjMzQ7RXJyb3IgY2FsbGluZyBwY2lfc2V0X2RtYV9tYXNrLlxcblwmIzM0Oyk7XG42MTcyOlx0XHRcdGdvdG8gZmFpbDtcbjYxNzM6XHRcdH1cbjYxNzQ6XHRcbjYxNzU6XHRcdGVyciA9IHBjaV9yZXF1ZXN0X3JlZ2lvbnMocGNpX2RldiwgRFJWX05BTUUpO1xuNjE3NjpcdFx0aWYgKGVycikge1xuNjE3NzpcdFx0XHRwcmludGsoS0VSTl9XQVJOSU5HIERSVl9OQU1FXG42MTc4Olx0XHRcdCAgICAgICBcJiMzNDtFcnJvciBjYWxsaW5nIHBjaV9yZXF1ZXN0X3JlZ2lvbnMuXFxuXCYjMzQ7KTtcbjYxNzk6XHRcdFx0Z290byBmYWlsO1xuNjE4MDpcdFx0fVxuNjE4MTpcdFxuNjE4MjpcdFx0LyogV2UgZGlzYWJsZSB0aGUgUkVUUllfVElNRU9VVCByZWdpc3RlciAoMHg0MSkgdG8ga2VlcFxuNjE4MzpcdFx0ICogUENJIFR4IHJldHJpZXMgZnJvbSBpbnRlcmZlcmluZyB3aXRoIEMzIENQVSBzdGF0ZSAqL1xuNjE4NDpcdFx0cGNpX3JlYWRfY29uZmlnX2R3b3JkKHBjaV9kZXYsIDB4NDAsIFx1MDAyNnZhbCk7XG42MTg1Olx0XHRpZiAoKHZhbCBcdTAwMjYgMHgwMDAwZmYwMCkgIT0gMClcbjYxODY6XHRcdFx0cGNpX3dyaXRlX2NvbmZpZ19kd29yZChwY2lfZGV2LCAweDQwLCB2YWwgXHUwMDI2IDB4ZmZmZjAwZmYpO1xuNjE4NzpcdFxuNjE4ODpcdFx0aWYgKCFpcHcyMTAwX2h3X2lzX2FkYXB0ZXJfaW5fc3lzdGVtKGRldikpIHtcbjYxODk6XHRcdFx0cHJpbnRrKEtFUk5fV0FSTklORyBEUlZfTkFNRVxuNjE5MDpcdFx0XHQgICAgICAgXCYjMzQ7RGV2aWNlIG5vdCBmb3VuZCB2aWEgcmVnaXN0ZXIgcmVhZC5cXG5cJiMzNDspO1xuNjE5MTpcdFx0XHRlcnIgPSAtRU5PREVWO1xuNjE5MjpcdFx0XHRnb3RvIGZhaWw7XG42MTkzOlx0XHR9XG42MTk0Olx0XG42MTk1Olx0XHRTRVRfTkVUREVWX0RFVihkZXYsIFx1MDAyNnBjaV9kZXYtXHUwMDNlZGV2KTtcbjYxOTY6XHRcbjYxOTc6XHRcdC8qIEZvcmNlIGludGVycnVwdHMgdG8gYmUgc2h1dCBvZmYgb24gdGhlIGRldmljZSAqL1xuNjE5ODpcdFx0cHJpdi1cdTAwM2VzdGF0dXMgfD0gU1RBVFVTX0lOVF9FTkFCTEVEO1xuNjE5OTpcdFx0aXB3MjEwMF9kaXNhYmxlX2ludGVycnVwdHMocHJpdik7XG42MjAwOlx0XG42MjAxOlx0XHQvKiBBbGxvY2F0ZSBhbmQgaW5pdGlhbGl6ZSB0aGUgVHgvUnggcXVldWVzIGFuZCBsaXN0cyAqL1xuNjIwMjpcdFx0aWYgKGlwdzIxMDBfcXVldWVzX2FsbG9jYXRlKHByaXYpKSB7XG42MjAzOlx0XHRcdHByaW50ayhLRVJOX1dBUk5JTkcgRFJWX05BTUVcbjYyMDQ6XHRcdFx0ICAgICAgIFwmIzM0O0Vycm9yIGNhbGxpbmcgaXB3MjEwMF9xdWV1ZXNfYWxsb2NhdGUuXFxuXCYjMzQ7KTtcbjYyMDU6XHRcdFx0ZXJyID0gLUVOT01FTTtcbjYyMDY6XHRcdFx0Z290byBmYWlsO1xuNjIwNzpcdFx0fVxuNjIwODpcdFx0aXB3MjEwMF9xdWV1ZXNfaW5pdGlhbGl6ZShwcml2KTtcbjYyMDk6XHRcbjYyMTA6XHRcdGVyciA9IHJlcXVlc3RfaXJxKHBjaV9kZXYtXHUwMDNlaXJxLFxuNjIxMTpcdFx0XHRcdCAgaXB3MjEwMF9pbnRlcnJ1cHQsIElSUUZfU0hBUkVELCBkZXYtXHUwMDNlbmFtZSwgcHJpdik7XG42MjEyOlx0XHRpZiAoZXJyKSB7XG42MjEzOlx0XHRcdHByaW50ayhLRVJOX1dBUk5JTkcgRFJWX05BTUVcbjYyMTQ6XHRcdFx0ICAgICAgIFwmIzM0O0Vycm9yIGNhbGxpbmcgcmVxdWVzdF9pcnE6ICVkLlxcblwmIzM0OywgcGNpX2Rldi1cdTAwM2VpcnEpO1xuNjIxNTpcdFx0XHRnb3RvIGZhaWw7XG42MjE2Olx0XHR9XG42MjE3Olx0XHRkZXYtXHUwMDNlaXJxID0gcGNpX2Rldi1cdTAwM2VpcnE7XG42MjE4Olx0XG42MjE5Olx0XHRJUFdfREVCVUdfSU5GTyhcJiMzNDtBdHRlbXB0aW5nIHRvIHJlZ2lzdGVyIGRldmljZS4uLlxcblwmIzM0Oyk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjAgMDY6MjI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDc4MgoJCQkJCQkJb3V0cHV0OiA1MwoJCQkJCQkJdGhvdWdodHM6IDE3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3Mgc2VlIHdoYXQgd2UmIzM5O3JlIGRlYWxpbmcgd2l0aCBoZXJlLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gc2tpcCBhaGVhZCBhbmQgbG9vayBmb3IgdGhlIGBmYWlsOmAgbGFiZWwsIGJlY2F1c2UgdGhlIG1lcmUgbWVudGlvbiBvZiBpdCB0ZWxscyBtZSBzb21ldGhpbmcgYWJvdXQgdGhlIGxvZ2ljIGZsb3cuIEl0IHN1Z2dlc3RzIGFuIGVhcmx5IGV4aXQgY29uZGl0aW9uLCBwcm9iYWJseSBzb21ldGhpbmcgdGhhdCBpbmRpY2F0ZXMgYW4gdW5zdWNjZXNzZnVsIG9wZXJhdGlvbi4gVGhpcyBjb250ZXh0IGdpdmVzIG1lIGEgc3RhcnRpbmcgcG9pbnQgdG8gYmVnaW4gdG8gdW5kZXJzdGFuZCB0aGUgZnVuY3Rpb24gYXMgYSB3aG9sZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yMCAwNjoyMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjEwMC5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogNjIyMCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAxMDAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7NjIyMDpcdFxuNjIyMTpcdFx0cHJpbnRrKEtFUk5fSU5GTyBEUlZfTkFNRVxuNjIyMjpcdFx0ICAgICAgIFwmIzM0OzogRGV0ZWN0ZWQgSW50ZWwgUFJPL1dpcmVsZXNzIDIxMDAgTmV0d29yayBDb25uZWN0aW9uXFxuXCYjMzQ7KTtcbjYyMjM6XHRcbjYyMjQ6XHRcdGVyciA9IGlwdzIxMDBfdXAocHJpdiwgMSk7XG42MjI1Olx0XHRpZiAoZXJyKVxuNjIyNjpcdFx0XHRnb3RvIGZhaWw7XG42MjI3Olx0XG42MjI4Olx0XHRlcnIgPSBpcHcyMTAwX3dkZXZfaW5pdChkZXYpO1xuNjIyOTpcdFx0aWYgKGVycilcbjYyMzA6XHRcdFx0Z290byBmYWlsO1xuNjIzMTpcdFx0cmVnaXN0ZXJlZCA9IDE7XG42MjMyOlx0XG42MjMzOlx0XHQvKiBCcmluZyB1cCB0aGUgaW50ZXJmYWNlLiAgUHJlIDAuNDYsIGFmdGVyIHdlIHJlZ2lzdGVyZWQgdGhlXG42MjM0Olx0XHQgKiBuZXR3b3JrIGRldmljZSB3ZSB3b3VsZCBjYWxsIGlwdzIxMDBfdXAuICBUaGlzIGludHJvZHVjZWQgYSByYWNlXG42MjM1Olx0XHQgKiBjb25kaXRpb24gd2l0aCBuZXdlciBob3RwbHVnIGNvbmZpZ3VyYXRpb25zIChuZXR3b3JrIHdhcyBjb21pbmdcbjYyMzY6XHRcdCAqIHVwIGFuZCBtYWtpbmcgY2FsbHMgYmVmb3JlIHRoZSBkZXZpY2Ugd2FzIGluaXRpYWxpemVkKS5cbjYyMzc6XHRcdCAqL1xuNjIzODpcdFx0ZXJyID0gcmVnaXN0ZXJfbmV0ZGV2KGRldik7XG42MjM5Olx0XHRpZiAoZXJyKSB7XG42MjQwOlx0XHRcdHByaW50ayhLRVJOX1dBUk5JTkcgRFJWX05BTUVcbjYyNDE6XHRcdFx0ICAgICAgIFwmIzM0O0Vycm9yIGNhbGxpbmcgcmVnaXN0ZXJfbmV0ZGV2LlxcblwmIzM0Oyk7XG42MjQyOlx0XHRcdGdvdG8gZmFpbDtcbjYyNDM6XHRcdH1cbjYyNDQ6XHRcdHJlZ2lzdGVyZWQgPSAyO1xuNjI0NTpcdFxuNjI0NjpcdFx0bXV0ZXhfbG9jayhcdTAwMjZwcml2LVx1MDAzZWFjdGlvbl9tdXRleCk7XG42MjQ3Olx0XG42MjQ4Olx0XHRJUFdfREVCVUdfSU5GTyhcJiMzNDslczogQm91bmQgdG8gJXNcXG5cJiMzNDssIGRldi1cdTAwM2VuYW1lLCBwY2lfbmFtZShwY2lfZGV2KSk7XG42MjQ5Olx0XG42MjUwOlx0XHQvKiBwZXJmb3JtIHRoaXMgYWZ0ZXIgcmVnaXN0ZXJfbmV0ZGV2IHNvIHRoYXQgZGV2LVx1MDAzZW5hbWUgaXMgc2V0ICovXG42MjUxOlx0XHRlcnIgPSBzeXNmc19jcmVhdGVfZ3JvdXAoXHUwMDI2cGNpX2Rldi1cdTAwM2VkZXYua29iaiwgXHUwMDI2aXB3MjEwMF9hdHRyaWJ1dGVfZ3JvdXApO1xuNjI1MjpcdFx0aWYgKGVycilcbjYyNTM6XHRcdFx0Z290byBmYWlsX3VubG9jaztcbjYyNTQ6XHRcbjYyNTU6XHRcdC8qIElmIHRoZSBSRiBLaWxsIHN3aXRjaCBpcyBkaXNhYmxlZCwgZ28gYWhlYWQgYW5kIGNvbXBsZXRlIHRoZVxuNjI1NjpcdFx0ICogc3RhcnR1cCBzZXF1ZW5jZSAqL1xuNjI1NzpcdFx0aWYgKCEocHJpdi1cdTAwM2VzdGF0dXMgXHUwMDI2IFNUQVRVU19SRl9LSUxMX01BU0spKSB7XG42MjU4Olx0XHRcdC8qIEVuYWJsZSB0aGUgYWRhcHRlciAtIHNlbmRzIEhPU1RfQ09NUExFVEUgKi9cbjYyNTk6XHRcdFx0aWYgKGlwdzIxMDBfZW5hYmxlX2FkYXB0ZXIocHJpdikpIHtcbjYyNjA6XHRcdFx0XHRwcmludGsoS0VSTl9XQVJOSU5HIERSVl9OQU1FXG42MjYxOlx0XHRcdFx0ICAgICAgIFwmIzM0OzogJXM6IGZhaWxlZCBpbiBjYWxsIHRvIGVuYWJsZSBhZGFwdGVyLlxcblwmIzM0OyxcbjYyNjI6XHRcdFx0XHQgICAgICAgcHJpdi1cdTAwM2VuZXRfZGV2LVx1MDAzZW5hbWUpO1xuNjI2MzpcdFx0XHRcdGlwdzIxMDBfaHdfc3RvcF9hZGFwdGVyKHByaXYpO1xuNjI2NDpcdFx0XHRcdGVyciA9IC1FSU87XG42MjY1Olx0XHRcdFx0Z290byBmYWlsX3VubG9jaztcbjYyNjY6XHRcdFx0fVxuNjI2NzpcdFxuNjI2ODpcdFx0XHQvKiBTdGFydCBhIHNjYW4gLiAuIC4gKi9cbjYyNjk6XHRcdFx0aXB3MjEwMF9zZXRfc2Nhbl9vcHRpb25zKHByaXYpO1xuNjI3MDpcdFx0XHRpcHcyMTAwX3N0YXJ0X3NjYW4ocHJpdik7XG42MjcxOlx0XHR9XG42MjcyOlx0XG42MjczOlx0XHRJUFdfREVCVUdfSU5GTyhcJiMzNDtleGl0XFxuXCYjMzQ7KTtcbjYyNzQ6XHRcbjYyNzU6XHRcdHByaXYtXHUwMDNlc3RhdHVzIHw9IFNUQVRVU19JTklUSUFMSVpFRDtcbjYyNzY6XHRcbjYyNzc6XHRcdG11dGV4X3VubG9jayhcdTAwMjZwcml2LVx1MDAzZWFjdGlvbl9tdXRleCk7XG42Mjc4Olx0b3V0OlxuNjI3OTpcdFx0cmV0dXJuIGVycjtcbjYyODA6XHRcbjYyODE6XHQgICAgICBmYWlsX3VubG9jazpcbjYyODI6XHRcdG11dGV4X3VubG9jayhcdTAwMjZwcml2LVx1MDAzZWFjdGlvbl9tdXRleCk7XG42MjgzOlx0ICAgICAgZmFpbDpcbjYyODQ6XHRcdGlmIChkZXYpIHtcbjYyODU6XHRcdFx0aWYgKHJlZ2lzdGVyZWQgXHUwMDNlPSAyKVxuNjI4NjpcdFx0XHRcdHVucmVnaXN0ZXJfbmV0ZGV2KGRldik7XG42Mjg3Olx0XG42Mjg4Olx0XHRcdGlmIChyZWdpc3RlcmVkKSB7XG42Mjg5Olx0XHRcdFx0d2lwaHlfdW5yZWdpc3Rlcihwcml2LVx1MDAzZWllZWUtXHUwMDNld2Rldi53aXBoeSk7XG42MjkwOlx0XHRcdFx0a2ZyZWUocHJpdi1cdTAwM2VpZWVlLVx1MDAzZWJnX2JhbmQuY2hhbm5lbHMpO1xuNjI5MTpcdFx0XHR9XG42MjkyOlx0XG42MjkzOlx0XHRcdGlwdzIxMDBfaHdfc3RvcF9hZGFwdGVyKHByaXYpO1xuNjI5NDpcdFxuNjI5NTpcdFx0XHRpcHcyMTAwX2Rpc2FibGVfaW50ZXJydXB0cyhwcml2KTtcbjYyOTY6XHRcbjYyOTc6XHRcdFx0aWYgKGRldi1cdTAwM2VpcnEpXG42Mjk4Olx0XHRcdFx0ZnJlZV9pcnEoZGV2LVx1MDAzZWlycSwgcHJpdik7XG42Mjk5Olx0XG42MzAwOlx0XHRcdGlwdzIxMDBfa2lsbF93b3Jrcyhwcml2KTtcbjYzMDE6XHRcbjYzMDI6XHRcdFx0LyogVGhlc2UgYXJlIHNhZmUgdG8gY2FsbCBldmVuIGlmIHRoZXkgd2VyZW4mIzM5O3QgYWxsb2NhdGVkICovXG42MzAzOlx0XHRcdGlwdzIxMDBfcXVldWVzX2ZyZWUocHJpdik7XG42MzA0Olx0XHRcdHN5c2ZzX3JlbW92ZV9ncm91cChcdTAwMjZwY2lfZGV2LVx1MDAzZWRldi5rb2JqLFxuNjMwNTpcdFx0XHRcdFx0ICAgXHUwMDI2aXB3MjEwMF9hdHRyaWJ1dGVfZ3JvdXApO1xuNjMwNjpcdFxuNjMwNzpcdFx0XHRmcmVlX2xpYmlwdyhkZXYsIDApO1xuNjMwODpcdFx0fVxuNjMwOTpcdFxuNjMxMDpcdFx0cGNpX2lvdW5tYXAocGNpX2RldiwgaW9hZGRyKTtcbjYzMTE6XHRcbjYzMTI6XHRcdHBjaV9yZWxlYXNlX3JlZ2lvbnMocGNpX2Rldik7XG42MzEzOlx0XHRwY2lfZGlzYWJsZV9kZXZpY2UocGNpX2Rldik7XG42MzE0Olx0XHRnb3RvIG91dDtcbjYzMTU6XHR9XG42MzE2Olx0XG42MzE3Olx0c3RhdGljIHZvaWQgaXB3MjEwMF9wY2lfcmVtb3ZlX29uZShzdHJ1Y3QgcGNpX2RldiAqcGNpX2RldilcbjYzMTg6XHR7XG42MzE5Olx0XHRzdHJ1Y3QgaXB3MjEwMF9wcml2ICpwcml2ID0gcGNpX2dldF9kcnZkYXRhKHBjaV9kZXYpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzIwIDA2OjIyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDY0MDkKCQkJCQkJCW91dHB1dDogNDQKCQkJCQkJCXRob3VnaHRzOiA5NDMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgUENJIERyaXZlciBJbml0aWFsaXphdGlvbiBCdWcgRml4KioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGZvciB0aGUgYGlwdzIxMDBgIGRyaXZlci4gSXQgYXBwZWFycyB0byBiZSBhZGRyZXNzaW5nIHJlc291cmNlIGxlYWtzIHdpdGhpbiB0aGUgYGlwdzIxMDBfcGNpX2luaXRfb25lYCBmdW5jdGlvbi4gU3BlY2lmaWNhbGx5LCB0aGUgb3JpZ2luYWwgY29kZSBoYWQgdGhlc2UgZXJyb3IgcGF0aHMgdGhhdCB3ZXJlIGluY29tcGxldGU6IGlmIGBwY2lfZW5hYmxlX2RldmljZWAsIGBkbWFfc2V0X21hc2tgLCBvciBgcGNpX3JlcXVlc3RfcmVnaW9uc2AgZmFpbGVkLCB0aGUgY29kZSB3b3VsZCBqdXN0IGByZXR1cm5gIHByZW1hdHVyZWx5LiBUaGlzIG1lYW50IHRoYXQgdGhlIGRyaXZlciB3b3VsZCBsZWFrIGFsbG9jYXRlZCByZXNvdXJjZXMg4oCTIHRoZSBgaW9hZGRyYCBtYXBwZWQgd2l0aCBgcGNpX2lvbWFwYCwgYW5kIHRoZSBuZXR3b3JrIGRldmljZSBgZGV2YCBhbGxvY2F0ZWQgdmlhIGBpcHcyMTAwX2FsbG9jX2RldmljZWAuCgpUaGlzIHBhdGNoIGlzIGEgc3RyYWlnaHRmb3J3YXJkIGZpeCwgaXQgc2VlbXMuIEJ5IGNoYW5naW5nIHRoZXNlIHJldHVybiBzdGF0ZW1lbnRzIHRvIGBnb3RvIGZhaWw7YCwgaXQgZW5zdXJlcyB0aGUgY29kZSBleGVjdXRlcyB0aGUgY2xlYW51cCBibG9jayBsYWJlbGxlZCBgZmFpbGAuIFRoZSBgZmFpbGAgbGFiZWwgY29udGFpbnMgYWxsIHRoZSBuZWNlc3NhcnkgY2xlYW51cCBzdGVwczogIGBmcmVlX2xpYmlwdyhkZXYsIDApO2AsIGBwY2lfaW91bm1hcChwY2lfZGV2LCBpb2FkZHIpO2AsIGBwY2lfcmVsZWFzZV9yZWdpb25zKHBjaV9kZXYpO2AsIGFuZCBgcGNpX2Rpc2FibGVfZGV2aWNlKHBjaV9kZXYpO2AuIEJhc2ljYWxseSwgaXQgbm93IHJlbGVhc2VzIGV2ZXJ5dGhpbmcgcHJvcGVybHkuIFNvLCB0aGlzIGlzIGEgcHJldHR5IGNsZWFyIG1lbW9yeS9yZXNvdXJjZSBsZWFrIGZpeC4KCk5vdywgdGhlIHF1ZXN0aW9uIGlzLCBzaG91bGQgSSBmdXp6IHRoaXM/IEl0JiMzOTtzIGEgUENJIGRldmljZSBkcml2ZXIgaW5pdGlhbGl6YXRpb24sIHdoaWNoIG1ha2VzIGl0IGFuIGludGVyZXN0aW5nIHRhcmdldC4gSXQgKnNob3VsZCogYmUgcmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cywgYXNzdW1pbmcgd2UgY2FuIGVtdWxhdGUgYSBQQ0kgZGV2aWNlIG9yIGxldmVyYWdlIHN5emthbGxlciYjMzk7cyBQQ0kgZnV6emluZyBjYXBhYmlsaXRpZXMuICBTeXprYWxsZXIgKmRvZXMqIGhhdmUgUENJIGZ1enppbmcgc3VwcG9ydDsgSSYjMzk7dmUgdXNlZCBpdCBiZWZvcmUsIGluY2x1ZGluZyB0aGUgYHN5el9wY2lfZGV2aWNlX2FkZGAgY2FsbC4gSG93ZXZlciwgdGhpcyBpcyBhbiBvbGQgZHJpdmVyLCBJbnRlbCBQUk8vV2lyZWxlc3MgMjEwMC4gU28gSSYjMzk7bGwgbmVlZCB0byBkb3VibGUgY2hlY2sgdGhlIEtjb25maWcgZm9yIGl0LiBUaGlzIHdpbGwgaGVscCBkZXRlcm1pbmUgaWYgaXQmIzM5O3MgZXZlbiBjb25maWd1cmVkIGFuZCBpZiBpdCBpcyBzdXBwb3J0ZWQgdG8gYmVnaW4gd2l0aC4gIExldCBtZSBxdWlja2x5IHZlcmlmeS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjAgMDY6MjI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIElQVzIxMDAmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9LY29uZmlnLTUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL0tjb25maWc6Njpjb25maWcgSVBXMjEwMFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9LY29uZmlnLTctXHR0cmlzdGF0ZSBcJiMzNDtJbnRlbCBQUk8vV2lyZWxlc3MgMjEwMCBOZXR3b3JrIENvbm5lY3Rpb25cJiMzNDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL0tjb25maWctMzgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL0tjb25maWc6Mzk6Y29uZmlnIElQVzIxMDBfTU9OSVRPUlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9LY29uZmlnLTQwLVx0Ym9vbCBcJiMzNDtFbmFibGUgcHJvbWlzY3VvdXMgbW9kZVwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvS2NvbmZpZy00Ny1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvS2NvbmZpZzo0ODpjb25maWcgSVBXMjEwMF9ERUJVR1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9LY29uZmlnLTQ5LVx0Ym9vbCBcJiMzNDtFbmFibGUgZnVsbCBkZWJ1Z2dpbmcgb3V0cHV0IGluIElQVzIxMDAgbW9kdWxlLlwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yMCAwNjoyMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4MTA2CgkJCQkJCQlvdXRwdXQ6IDU2CgkJCQkJCQl0aG91Z2h0czogNzQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBJUFcyMTAwIEluaXRpYWxpemF0aW9uKioKCk9rYXksIHNvIHRoZSBjb2RlIEkmIzM5O20gbG9va2luZyBhdCByZXZvbHZlcyBhcm91bmQgdGhlIGNvbmZpZ3VyYXRpb24gZm9yIHRoZSBgSVBXMjEwMGAgZGV2aWNlLiBNeSBmb2N1cyBpcyBvbiB0aGUgYGlwdzIxMDBfcGNpX2luaXRfb25lYCBmdW5jdGlvbiwgbmF0dXJhbGx5LiBUaGUga2V5IHF1ZXN0aW9uIGluIG15IG1pbmQgaXM6IGNhbiBJIGdldCB0aGlzIGZ1bmN0aW9uIHRvIGV4ZWN1dGU/IFRoZSBvYnZpb3VzIGFuc3dlciBpcyB5ZXMuIEl0IGxvb2tzIGxpa2UgdGhlIG1vc3QgZGlyZWN0IGFwcHJvYWNoIHdvdWxkIGJlIHRvIGluamVjdCBhIFBDSSBkZXZpY2UgdGhhdCBoYXMgdGhlIGNvcnJlY3QgdmVuZG9yIGFuZCBkZXZpY2UgSURzIHRvIHRyaWdnZXIgaXQuIFNvLCBsZXQmIzM5O3MgdHJhY2sgZG93biB0aG9zZSBQQ0kgSURzIGZvciB0aGUgYGlwdzIxMDBgIHNwZWNpZmljYWxseSwgdGhhdCYjMzk7cyB3aGVyZSBJIG5lZWQgdG8gc3RhcnQgbXkgaW52ZXN0aWdhdGlvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjAgMDY6MjM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7aXB3MjEwMF9wY2lfaWRfdGFibGUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIxMDAuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIxMDAuYz02NDI5PXN0YXRpYyB2b2lkIGlwdzIxMDBfc2h1dGRvd24oc3RydWN0IHBjaV9kZXYgKnBjaV9kZXYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMTAwLmMtNjQ0MC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjEwMC5jOjY0NDE6c3RhdGljIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkIGlwdzIxMDBfcGNpX2lkX3RhYmxlW10gPSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIxMDAuYy02NDQyLVx0SVBXMjEwMF9ERVZfSUQoMHgyNTIwKSxcdC8qIElOIDIxMDBBIG1QQ0kgM0EgKi9cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIxMDAuYy02NDkwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMTAwLmM6NjQ5MTpNT0RVTEVfREVWSUNFX1RBQkxFKHBjaSwgaXB3MjEwMF9wY2lfaWRfdGFibGUpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMTAwLmMtNjQ5Mi1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIxMDAuYz02NDk1PXN0YXRpYyBzdHJ1Y3QgcGNpX2RyaXZlciBpcHcyMTAwX3BjaV9kcml2ZXIgPSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIxMDAuYy02NDk2LVx0Lm5hbWUgPSBEUlZfTkFNRSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjEwMC5jOjY0OTc6XHQuaWRfdGFibGUgPSBpcHcyMTAwX3BjaV9pZF90YWJsZSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjEwMC5jLTY0OTgtXHQucHJvYmUgPSBpcHcyMTAwX3BjaV9pbml0X29uZSxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjAgMDY6MjM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogODg5OAoJCQkJCQkJb3V0cHV0OiA0MwoJCQkJCQkJdGhvdWdodHM6IDQ2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRha2Ugb24gdGhlIHRob3VnaHQgcHJvY2VzczoKCioqRnV6emluZyBQQ0kgRGV2aWNlcyB3aXRoIFN5emthbGxlcioqCgpPa2F5LCBzbyBJJiMzOTttIHRoaW5raW5nIGFib3V0IGZ1enppbmcgc29tZSBQQ0kgZGV2aWNlcyB1c2luZyBTeXprYWxsZXIuIEl0IGxvb2tzIGxpa2UgaXQgY2FuIGRvIHRoaXMgYnkgc2ltdWxhdGluZyB0aGUgZGV2aWNlcyB0aGVtc2VsdmVzLCB3aGljaCBpcyBwcmV0dHkgbmVhdC4gVGhlIGRvY3VtZW50YXRpb24gcG9pbnRzIHRvIGVuYWJsaW5nIHRoZSBgSVBXMjEwMGAgY29uZmlnIG9wdGlvbiB0byBnZXQgdGhpcyBmdW5jdGlvbmFsaXR5IGdvaW5nLiBCdXQgaG9sZCBvbiwgYmVmb3JlIEkgZGl2ZSBpbiB0b28gZGVlcCwgbGV0JiMzOTtzIGp1c3QgZG91YmxlLWNoZWNrIGlmIGVuYWJsaW5nIHRoYXQgb3B0aW9uIGhhcyBhbnkgdW5kZXJseWluZyBkZXBlbmRlbmNpZXMuIEdvdHRhIG1ha2Ugc3VyZSBJIGhhdmUgYWxsIHRoZSBwaWVjZXMgaW4gcGxhY2UgYmVmb3JlIEkgc3RhcnQuIFdvdWxkbiYjMzk7dCB3YW50IHRvIHdhc3RlIHRpbWUgY2hhc2luZyBkb3duIG1pc3NpbmcgY29tcG9uZW50cyBsYXRlci4gR290dGEgYmUgdGhvcm91Z2guCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzIwIDA2OjIzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAyMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgICAxOlx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG4gICAyOlx0I1xuICAgMzpcdCMgSW50ZWwgQ2VudHJpbm8gd2lyZWxlc3MgZHJpdmVyc1xuICAgNDpcdCNcbiAgIDU6XHRcbiAgIDY6XHRjb25maWcgSVBXMjEwMFxuICAgNzpcdFx0dHJpc3RhdGUgXCYjMzQ7SW50ZWwgUFJPL1dpcmVsZXNzIDIxMDAgTmV0d29yayBDb25uZWN0aW9uXCYjMzQ7XG4gICA4Olx0XHRkZXBlbmRzIG9uIFBDSSBcdTAwMjZcdTAwMjYgQ0ZHODAyMTFcbiAgIDk6XHRcdHNlbGVjdCBXSVJFTEVTU19FWFRcbiAgMTA6XHRcdHNlbGVjdCBXRVhUX1BSSVZcbiAgMTE6XHRcdHNlbGVjdCBGV19MT0FERVJcbiAgMTI6XHRcdHNlbGVjdCBMSUJJUFdcbiAgMTM6XHRcdGhlbHBcbiAgMTQ6XHRcdCAgQSBkcml2ZXIgZm9yIHRoZSBJbnRlbCBQUk8vV2lyZWxlc3MgMjEwMCBOZXR3b3JrXG4gIDE1Olx0XHQgIENvbm5lY3Rpb24gODAyLjExYiB3aXJlbGVzcyBuZXR3b3JrIGFkYXB0ZXIuXG4gIDE2Olx0XG4gIDE3Olx0XHQgIFNlZSBcdTAwM2NmaWxlOkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9kZXZpY2VfZHJpdmVycy93aWZpL2ludGVsL2lwdzIxMDAucnN0XHUwMDNlXG4gIDE4Olx0XHQgIGZvciBpbmZvcm1hdGlvbiBvbiB0aGUgY2FwYWJpbGl0aWVzIGN1cnJlbnRseSBlbmFibGVkIGluIHRoaXMgZHJpdmVyXG4gIDE5Olx0XHQgIGFuZCBmb3IgdGlwcyBmb3IgZGVidWdnaW5nIGlzc3VlcyBhbmQgcHJvYmxlbXMuXG4gIDIwOlx0XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzIwIDA2OjIzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDk0MDMKCQkJCQkJCW91dHB1dDogMTAzCgkJCQkJCQl0aG91Z2h0czogMjI2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgUG90ZW50aWFsIEltcGFjdCBvZiBhIFBDSSBEcml2ZXIgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIGltbWVkaWF0ZWx5LCBteSBtaW5kIGp1bXBzIHRvIHRoZSBkZXBlbmRlbmNpZXM6IGBQQ0lgIGFuZCBgQ0ZHODAyMTFgLiBUaGF0JiMzOTtzIHdoZXJlIEkgbmVlZCB0byBzdGFydC4gVGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9uIHdlJiMzOTtsbCBuZWVkIHRvIGVuYWJsZSB0byB0ZXN0IHRoaXMgaXMgYElQVzIxMDBgLgoKVGhlIG1lYXQgb2YgaXQgc2VlbXMgdG8gYmUgYSBmaXggZm9yIGEgcmVzb3VyY2UgbGVhayB3aXRoaW4gdGhlIGVycm9yIGhhbmRsaW5nIG9mIHRoZSBQQ0kgcHJvYmUgZnVuY3Rpb24uIFRoYXQmIzM5O3MgaW50ZXJlc3RpbmcsIGFuZCBiZWNhdXNlIGl0JiMzOTtzIGZ1bmN0aW9uYWwsIGl0IGFic29sdXRlbHkgaGFzIGEgY2hhbmNlIHRvIGJlIHRyaWdnZXJlZCBieSBmdXp6aW5nLCBzcGVjaWZpY2FsbHkgc3l6a2FsbGVyJiMzOTtzIFBDSSBmdXp6aW5nLiBUaGUga2V5IGZ1bmN0aW9uIGhlcmUgaXMgY2xlYXJseSBgaXB3MjEwMF9wY2lfaW5pdF9vbmVgLgoKSnVzdCB0byBiZSB0aG9yb3VnaCwgSSYjMzk7bGwgcXVpY2tseSBjaGVjayBmb3IgYW55IG90aGVyIG1vZGlmaWVkIGZ1bmN0aW9ucywgYnV0IGl0IGxvb2tzIGxpa2UgYGlwdzIxMDBfcGNpX2luaXRfb25lYCBpcyB0aGUgb25seSBvbmUuIEdvb2QuCgpBbHJpZ2h0LCBsZXQmIzM5O3Mgc3VtbWFyaXplIG15IGZpbmRpbmdzLiBJJiMzOTtsbCBub3RlIHRoZXNlIGRvd24gZm9yIGNsYXJpdHk6CgoqICAgKipXb3J0aEZ1enppbmc6KiogVHJ1ZSAtIHRoaXMgaXMgYSBkZWZpbml0ZSBjYW5kaWRhdGUuCiogICAqKkZvY3VzU3ltYm9sczoqKiBgWyYjMzQ7aXB3MjEwMF9wY2lfaW5pdF9vbmUmIzM0O11gIC0gcGlucG9pbnQgdGhhdCBmdW5jdGlvbi4KKiAgICoqRW5hYmxlQ29uZmlnczoqKiBgWyYjMzQ7SVBXMjEwMCYjMzQ7XWAgLSB0aGUgcHJlcmVxdWlzaXRlIHRvIGdldCBoZXJlLgoqICAgKipSZWFzb25pbmc6KiogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgcmVzb3VyY2UgbGVha3MgaW4gdGhlIGVycm9yIHBhdGhzIG9mIHRoZSBQQ0kgcHJvYmUgZnVuY3Rpb24gYGlwdzIxMDBfcGNpX2luaXRfb25lYC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRoYXQgY2FuIGJlIHRyaWdnZXJlZCBieSBzeXprYWxsZXImIzM5O3MgUENJIGRldmljZSBmdXp6aW5nLiYjMzQ7CgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzIwIDA2OjIzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtJUFcyMTAwJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7aXB3MjEwMF9wY2lfaW5pdF9vbmUmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgcmVzb3VyY2UgbGVha3MgaW4gdGhlIGVycm9yIHBhdGhzIG9mIHRoZSBQQ0kgcHJvYmUgZnVuY3Rpb24gYGlwdzIxMDBfcGNpX2luaXRfb25lYC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRoYXQgY2FuIGJlIHRyaWdnZXJlZCBieSBzeXprYWxsZXImIzM5O3MgUENJIGRldmljZSBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtJUFcyMTAwJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7aXB3MjEwMF9wY2lfaW5pdF9vbmUmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgcmVzb3VyY2UgbGVha3MgaW4gdGhlIGVycm9yIHBhdGhzIG9mIHRoZSBQQ0kgcHJvYmUgZnVuY3Rpb24gYGlwdzIxMDBfcGNpX2luaXRfb25lYC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRoYXQgY2FuIGJlIHRyaWdnZXJlZCBieSBzeXprYWxsZXImIzM5O3MgUENJIGRldmljZSBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDYtMjBUMDY6MjI6MzguNzQ0Nzc0NjQ1WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzI3ODAyMTUzMjMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiSVBXMjEwMFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImlwdzIxMDBfcGNpX2luaXRfb25lXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgcmVzb3VyY2UgbGVha3MgaW4gdGhlIGVycm9yIHBhdGhzIG9mIHRoZSBQQ0kgcHJvYmUgZnVuY3Rpb24gYGlwdzIxMDBfcGNpX2luaXRfb25lYC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRoYXQgY2FuIGJlIHRyaWdnZXJlZCBieSBzeXprYWxsZXIncyBQQ0kgZGV2aWNlIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTIwVDA2OjIyOjM4Ljc0NDc4MDQ5NVoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDU3NjI0MTMxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgZDlkYmQwMmE5MTRiMWIwZWFhYTE2NzZiNTRhODk4MTczYmFkYmI3OVxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgU2F0IEp1biAyMCAwNjoyMjozNyAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIxMDAuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjEwMC5jXFxuaW5kZXggYzExNDI4NDg1ZGNjZjUuLjgyMjgwODkwZjFjMGU3IDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjEwMC5jXFxuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMTAwLmNcXG5AQCAtNjE1Nyw3ICs2MTU3LDcgQEAgc3RhdGljIGludCBpcHcyMTAwX3BjaV9pbml0X29uZShzdHJ1Y3QgcGNpX2RldiAqcGNpX2RldixcXG4gXFx0aWYgKGVycikge1xcbiBcXHRcXHRwcmludGsoS0VSTl9XQVJOSU5HIERSVl9OQU1FXFxuIFxcdFxcdCAgICAgICBcXFwiRXJyb3IgY2FsbGluZyBwY2lfZW5hYmxlX2RldmljZS5cXFxcblxcXCIpO1xcbi1cXHRcXHRyZXR1cm4gZXJyO1xcbitcXHRcXHRnb3RvIGZhaWw7XFxuIFxcdH1cXG4gXFxuIFxcdHByaXYgPSBsaWJpcHdfcHJpdihkZXYpO1xcbkBAIC02MTY5LDE2ICs2MTY5LDE0IEBAIHN0YXRpYyBpbnQgaXB3MjEwMF9wY2lfaW5pdF9vbmUoc3RydWN0IHBjaV9kZXYgKnBjaV9kZXYsXFxuIFxcdGlmIChlcnIpIHtcXG4gXFx0XFx0cHJpbnRrKEtFUk5fV0FSTklORyBEUlZfTkFNRVxcbiBcXHRcXHQgICAgICAgXFxcIkVycm9yIGNhbGxpbmcgcGNpX3NldF9kbWFfbWFzay5cXFxcblxcXCIpO1xcbi1cXHRcXHRwY2lfZGlzYWJsZV9kZXZpY2UocGNpX2Rldik7XFxuLVxcdFxcdHJldHVybiBlcnI7XFxuK1xcdFxcdGdvdG8gZmFpbDtcXG4gXFx0fVxcbiBcXG4gXFx0ZXJyID0gcGNpX3JlcXVlc3RfcmVnaW9ucyhwY2lfZGV2LCBEUlZfTkFNRSk7XFxuIFxcdGlmIChlcnIpIHtcXG4gXFx0XFx0cHJpbnRrKEtFUk5fV0FSTklORyBEUlZfTkFNRVxcbiBcXHRcXHQgICAgICAgXFxcIkVycm9yIGNhbGxpbmcgcGNpX3JlcXVlc3RfcmVnaW9ucy5cXFxcblxcXCIpO1xcbi1cXHRcXHRwY2lfZGlzYWJsZV9kZXZpY2UocGNpX2Rldik7XFxuLVxcdFxcdHJldHVybiBlcnI7XFxuK1xcdFxcdGdvdG8gZmFpbDtcXG4gXFx0fVxcbiBcXG4gXFx0LyogV2UgZGlzYWJsZSB0aGUgUkVUUllfVElNRU9VVCByZWdpc3RlciAoMHg0MSkgdG8ga2VlcFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yMFQwNjoyMjozOS4yMDMxOTUwMjZaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMyMzIxNzg0NjEyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIklQVzIxMDBcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJpcHcyMTAwX3BjaV9pbml0X29uZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIHJlc291cmNlIGxlYWtzIGluIHRoZSBlcnJvciBwYXRocyBvZiB0aGUgUENJIHByb2JlIGZ1bmN0aW9uIGBpcHcyMTAwX3BjaV9pbml0X29uZWAuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0aGF0IGNhbiBiZSB0cmlnZ2VyZWQgYnkgc3l6a2FsbGVyJ3MgUENJIGRldmljZSBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG5ldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0XG4gICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksXG4gICBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IGQ5ZGJkMDJhOTE0YjFiMGVhYWExNjc2YjU0YTg5ODE3M2JhZGJiNzlcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgU2F0IEp1biAyMCAwNjoyMjozNyAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjEwMC5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMTAwLmNcbmluZGV4IGMxMTQyODQ4NWRjY2Y1Li44MjI4MDg5MGYxYzBlNyAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjEwMC5jXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIxMDAuY1xuQEAgLTYxNTcsNyArNjE1Nyw3IEBAIHN0YXRpYyBpbnQgaXB3MjEwMF9wY2lfaW5pdF9vbmUoc3RydWN0IHBjaV9kZXYgKnBjaV9kZXYsXG4gXHRpZiAoZXJyKSB7XG4gXHRcdHByaW50ayhLRVJOX1dBUk5JTkcgRFJWX05BTUVcbiBcdFx0ICAgICAgIFwiRXJyb3IgY2FsbGluZyBwY2lfZW5hYmxlX2RldmljZS5cXG5cIik7XG4tXHRcdHJldHVybiBlcnI7XG4rXHRcdGdvdG8gZmFpbDtcbiBcdH1cbiBcbiBcdHByaXYgPSBsaWJpcHdfcHJpdihkZXYpO1xuQEAgLTYxNjksMTYgKzYxNjksMTQgQEAgc3RhdGljIGludCBpcHcyMTAwX3BjaV9pbml0X29uZShzdHJ1Y3QgcGNpX2RldiAqcGNpX2RldixcbiBcdGlmIChlcnIpIHtcbiBcdFx0cHJpbnRrKEtFUk5fV0FSTklORyBEUlZfTkFNRVxuIFx0XHQgICAgICAgXCJFcnJvciBjYWxsaW5nIHBjaV9zZXRfZG1hX21hc2suXFxuXCIpO1xuLVx0XHRwY2lfZGlzYWJsZV9kZXZpY2UocGNpX2Rldik7XG4tXHRcdHJldHVybiBlcnI7XG4rXHRcdGdvdG8gZmFpbDtcbiBcdH1cbiBcbiBcdGVyciA9IHBjaV9yZXF1ZXN0X3JlZ2lvbnMocGNpX2RldiwgRFJWX05BTUUpO1xuIFx0aWYgKGVycikge1xuIFx0XHRwcmludGsoS0VSTl9XQVJOSU5HIERSVl9OQU1FXG4gXHRcdCAgICAgICBcIkVycm9yIGNhbGxpbmcgcGNpX3JlcXVlc3RfcmVnaW9ucy5cXG5cIik7XG4tXHRcdHBjaV9kaXNhYmxlX2RldmljZShwY2lfZGV2KTtcbi1cdFx0cmV0dXJuIGVycjtcbitcdFx0Z290byBmYWlsO1xuIFx0fVxuIFxuIFx0LyogV2UgZGlzYWJsZSB0aGUgUkVUUllfVElNRU9VVCByZWdpc3RlciAoMHg0MSkgdG8ga2VlcFxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjBUMDY6MjI6MzkuMjAzMTk2NTM1WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzUwOTU0NDY1OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBXaXJlbGVzcyBEcml2ZXIgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGZvciBgZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMTAwLmNgLiBJdCBsb29rcyBsaWtlIGl0J3MgbWFraW5nIGEgc3VidGxlIGJ1dCBpbXBvcnRhbnQgY2hhbmdlIGluIGhvdyB0aGUgYGlwdzIxMDBfcGNpX2luaXRfb25lYCBmdW5jdGlvbiBoYW5kbGVzIGVycm9ycy4gU3BlY2lmaWNhbGx5LCBpdCdzIHN3YXBwaW5nIG91dCB0aGUgZGlyZWN0IHJldHVybnMgYW5kIGBwY2lfZGlzYWJsZV9kZXZpY2UocGNpX2RldilgIGNhbGxzIGZvciBhIGBnb3RvIGZhaWw7YCBhcHByb2FjaC4gSG1tLCBJIGtub3cgdGhhdCBmdW5jdGlvbjsgSSdsbCBuZWVkIHRvIGp1bXAgaW50byBgaXB3MjEwMF9wY2lfaW5pdF9vbmVgIGl0c2VsZiB0byBzZWUgZXhhY3RseSB3aGF0IHRoYXQgYGZhaWw6YCBsYWJlbCBpcyBkb2luZyB3aXRoaW4gdGhpcyBjb250ZXh0LiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0J3MgYmVpbmcgY2xlYW5lZCB1cCwgYW5kIG1ha2Ugc3VyZSB0aGF0IHRoaXMgaXMgYSBzYWZlIHJlZmFjdG9yaW5nIGFuZCBub3QgY3JlYXRpbmcgYW55IHJlZ3Jlc3Npb24gb3IgcG90ZW50aWFsIHJlc291cmNlIGxlYWsuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIxMDYsIk91dHB1dFRva2VucyI6NTYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMDksIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yMFQwNjoyMjo0Mi43MTI3NTI2MzNaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTYyMTA4OTksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiaXB3MjEwMF9wY2lfaW5pdF9vbmVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMTAwLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMTAwLmM9NTk5Nj1zdGF0aWMgc3RydWN0IG5ldF9kZXZpY2UgKmlwdzIxMDBfYWxsb2NfZGV2aWNlKHN0cnVjdCBwY2lfZGV2ICpwY2lfZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMTAwLmMtNjExOS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIxMDAuYzo2MTIwOnN0YXRpYyBpbnQgaXB3MjEwMF9wY2lfaW5pdF9vbmUoc3RydWN0IHBjaV9kZXYgKnBjaV9kZXYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMTAwLmMtNjEyMS1cXHRcXHRcXHRcXHRjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCAqZW50KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMTAwLmM9NjQ5NT1zdGF0aWMgc3RydWN0IHBjaV9kcml2ZXIgaXB3MjEwMF9wY2lfZHJpdmVyID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMTAwLmMtNjQ5Ny1cXHQuaWRfdGFibGUgPSBpcHcyMTAwX3BjaV9pZF90YWJsZSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIxMDAuYzo2NDk4OlxcdC5wcm9iZSA9IGlwdzIxMDBfcGNpX2luaXRfb25lLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjEwMC5jLTY0OTktXFx0LnJlbW92ZSA9IGlwdzIxMDBfcGNpX3JlbW92ZV9vbmUsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTIwVDA2OjIyOjQyLjc2ODk2OTYxMloiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMzNDkwMTcxMTEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBhbmFseXNpcyBvZiB3aGF0IEknbSBhYm91dCB0byBkbzpcblxuKipEaXZpbmcgaW50byB0aGUgaXB3MjEwMCBEcml2ZXIncyBQQ0kgSW5pdGlhbGl6YXRpb24qKlxuXG5Pa2F5LCBzbyBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlIEludGVsIElQVzIxMDAgd2lyZWxlc3MgZHJpdmVyIGluaXRpYWxpemVzIGEgUENJIGRldmljZS4gU2luY2UgSSdtIGZhbWlsaWFyIHdpdGggdGhpcyBhcmNoaXRlY3R1cmUsIEkgZmlndXJlIHRoZSBiZXN0IHBsYWNlIHRvIHN0YXJ0IGlzIHRoZSBgaXB3MjEwMC5jYCBmaWxlIHdpdGhpbiB0aGUgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDBgIGRpcmVjdG9yeS4gU3BlY2lmaWNhbGx5LCBJJ20gdGFyZ2V0aW5nIHRoZSBgaXB3MjEwMF9wY2lfaW5pdF9vbmVgIGZ1bmN0aW9uLCBhbmQgYmFzZWQgb24gbXkgbWVtb3J5IG9mIHNpbWlsYXIgZHJpdmVycywgaXQncyBsaWtlbHkgZGVmaW5lZCBhcm91bmQgbGluZSA2MTIwLiBUaGF0J3MgYSByZWFzb25hYmxlIHN0YXJ0aW5nIHBvaW50IHRvIGJlZ2luIHJldmVyc2UtZW5naW5lZXJpbmcgdGhlIGluaXRpYWxpemF0aW9uIHByb2Nlc3MuIFRoaXMgc2hvdWxkIGdpdmUgbWUgYSBzb2xpZCB2aWV3IGludG8gaG93IHRoZSBkZXZpY2UgaXMgZW51bWVyYXRlZCwgY29uZmlndXJlZCwgYW5kIGludGVncmF0ZWQgd2l0aCB0aGUgUENJIHN1YnN5c3RlbS4gSSBleHBlY3QgdG8gc2VlIHRoZSB0eXBpY2FsIFBDSSBwcm9iaW5nLCByZXNvdXJjZSBhbGxvY2F0aW9uLCBhbmQgcHJvYmFibHkgc29tZSBlYXJseSBmaXJtd2FyZSBsb2FkaW5nIG9yIGRldmljZSByZXNldCByb3V0aW5lcyB3aXRoaW4gdGhhdCBmdW5jdGlvbi4gVGltZSB0byBkaWcgaW4gYW5kIHNlZSBob3cgdGhlIG1hZ2ljIGhhcHBlbnMhXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI4NjAsIk91dHB1dFRva2VucyI6NTMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1OCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yMFQwNjoyMjo0Ni4xMTc5ODkyNTNaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyOTg5MjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMTAwLmNcIixcbiAgXCJGaXJzdExpbmVcIjogNjEyMCxcbiAgXCJMaW5lQ291bnRcIjogMTAwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIjYxMjA6XFx0c3RhdGljIGludCBpcHcyMTAwX3BjaV9pbml0X29uZShzdHJ1Y3QgcGNpX2RldiAqcGNpX2RldixcXG42MTIxOlxcdFxcdFxcdFxcdFxcdGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkICplbnQpXFxuNjEyMjpcXHR7XFxuNjEyMzpcXHRcXHR2b2lkIF9faW9tZW0gKmlvYWRkcjtcXG42MTI0OlxcdFxcdHN0cnVjdCBuZXRfZGV2aWNlICpkZXYgPSBOVUxMO1xcbjYxMjU6XFx0XFx0c3RydWN0IGlwdzIxMDBfcHJpdiAqcHJpdiA9IE5VTEw7XFxuNjEyNjpcXHRcXHRpbnQgZXJyID0gMDtcXG42MTI3OlxcdFxcdGludCByZWdpc3RlcmVkID0gMDtcXG42MTI4OlxcdFxcdHUzMiB2YWw7XFxuNjEyOTpcXHRcXG42MTMwOlxcdFxcdElQV19ERUJVR19JTkZPKFxcXCJlbnRlclxcXFxuXFxcIik7XFxuNjEzMTpcXHRcXG42MTMyOlxcdFxcdGlmICghKHBjaV9yZXNvdXJjZV9mbGFncyhwY2lfZGV2LCAwKSBcXHUwMDI2IElPUkVTT1VSQ0VfTUVNKSkge1xcbjYxMzM6XFx0XFx0XFx0SVBXX0RFQlVHX0lORk8oXFxcIndlaXJkIC0gcmVzb3VyY2UgdHlwZSBpcyBub3QgbWVtb3J5XFxcXG5cXFwiKTtcXG42MTM0OlxcdFxcdFxcdGVyciA9IC1FTk9ERVY7XFxuNjEzNTpcXHRcXHRcXHRnb3RvIG91dDtcXG42MTM2OlxcdFxcdH1cXG42MTM3OlxcdFxcbjYxMzg6XFx0XFx0aW9hZGRyID0gcGNpX2lvbWFwKHBjaV9kZXYsIDAsIDApO1xcbjYxMzk6XFx0XFx0aWYgKCFpb2FkZHIpIHtcXG42MTQwOlxcdFxcdFxcdHByaW50ayhLRVJOX1dBUk5JTkcgRFJWX05BTUVcXG42MTQxOlxcdFxcdFxcdCAgICAgICBcXFwiRXJyb3IgY2FsbGluZyBpb3JlbWFwLlxcXFxuXFxcIik7XFxuNjE0MjpcXHRcXHRcXHRlcnIgPSAtRUlPO1xcbjYxNDM6XFx0XFx0XFx0Z290byBmYWlsO1xcbjYxNDQ6XFx0XFx0fVxcbjYxNDU6XFx0XFxuNjE0NjpcXHRcXHQvKiBhbGxvY2F0ZSBhbmQgaW5pdGlhbGl6ZSBvdXIgbmV0X2RldmljZSAqL1xcbjYxNDc6XFx0XFx0ZGV2ID0gaXB3MjEwMF9hbGxvY19kZXZpY2UocGNpX2RldiwgaW9hZGRyKTtcXG42MTQ4OlxcdFxcdGlmICghZGV2KSB7XFxuNjE0OTpcXHRcXHRcXHRwcmludGsoS0VSTl9XQVJOSU5HIERSVl9OQU1FXFxuNjE1MDpcXHRcXHRcXHQgICAgICAgXFxcIkVycm9yIGNhbGxpbmcgaXB3MjEwMF9hbGxvY19kZXZpY2UuXFxcXG5cXFwiKTtcXG42MTUxOlxcdFxcdFxcdGVyciA9IC1FTk9NRU07XFxuNjE1MjpcXHRcXHRcXHRnb3RvIGZhaWw7XFxuNjE1MzpcXHRcXHR9XFxuNjE1NDpcXHRcXG42MTU1OlxcdFxcdC8qIHNldCB1cCBQQ0kgbWFwcGluZ3MgZm9yIGRldmljZSAqL1xcbjYxNTY6XFx0XFx0ZXJyID0gcGNpX2VuYWJsZV9kZXZpY2UocGNpX2Rldik7XFxuNjE1NzpcXHRcXHRpZiAoZXJyKSB7XFxuNjE1ODpcXHRcXHRcXHRwcmludGsoS0VSTl9XQVJOSU5HIERSVl9OQU1FXFxuNjE1OTpcXHRcXHRcXHQgICAgICAgXFxcIkVycm9yIGNhbGxpbmcgcGNpX2VuYWJsZV9kZXZpY2UuXFxcXG5cXFwiKTtcXG42MTYwOlxcdFxcdFxcdGdvdG8gZmFpbDtcXG42MTYxOlxcdFxcdH1cXG42MTYyOlxcdFxcbjYxNjM6XFx0XFx0cHJpdiA9IGxpYmlwd19wcml2KGRldik7XFxuNjE2NDpcXHRcXG42MTY1OlxcdFxcdHBjaV9zZXRfbWFzdGVyKHBjaV9kZXYpO1xcbjYxNjY6XFx0XFx0cGNpX3NldF9kcnZkYXRhKHBjaV9kZXYsIHByaXYpO1xcbjYxNjc6XFx0XFxuNjE2ODpcXHRcXHRlcnIgPSBkbWFfc2V0X21hc2soXFx1MDAyNnBjaV9kZXYtXFx1MDAzZWRldiwgRE1BX0JJVF9NQVNLKDMyKSk7XFxuNjE2OTpcXHRcXHRpZiAoZXJyKSB7XFxuNjE3MDpcXHRcXHRcXHRwcmludGsoS0VSTl9XQVJOSU5HIERSVl9OQU1FXFxuNjE3MTpcXHRcXHRcXHQgICAgICAgXFxcIkVycm9yIGNhbGxpbmcgcGNpX3NldF9kbWFfbWFzay5cXFxcblxcXCIpO1xcbjYxNzI6XFx0XFx0XFx0Z290byBmYWlsO1xcbjYxNzM6XFx0XFx0fVxcbjYxNzQ6XFx0XFxuNjE3NTpcXHRcXHRlcnIgPSBwY2lfcmVxdWVzdF9yZWdpb25zKHBjaV9kZXYsIERSVl9OQU1FKTtcXG42MTc2OlxcdFxcdGlmIChlcnIpIHtcXG42MTc3OlxcdFxcdFxcdHByaW50ayhLRVJOX1dBUk5JTkcgRFJWX05BTUVcXG42MTc4OlxcdFxcdFxcdCAgICAgICBcXFwiRXJyb3IgY2FsbGluZyBwY2lfcmVxdWVzdF9yZWdpb25zLlxcXFxuXFxcIik7XFxuNjE3OTpcXHRcXHRcXHRnb3RvIGZhaWw7XFxuNjE4MDpcXHRcXHR9XFxuNjE4MTpcXHRcXG42MTgyOlxcdFxcdC8qIFdlIGRpc2FibGUgdGhlIFJFVFJZX1RJTUVPVVQgcmVnaXN0ZXIgKDB4NDEpIHRvIGtlZXBcXG42MTgzOlxcdFxcdCAqIFBDSSBUeCByZXRyaWVzIGZyb20gaW50ZXJmZXJpbmcgd2l0aCBDMyBDUFUgc3RhdGUgKi9cXG42MTg0OlxcdFxcdHBjaV9yZWFkX2NvbmZpZ19kd29yZChwY2lfZGV2LCAweDQwLCBcXHUwMDI2dmFsKTtcXG42MTg1OlxcdFxcdGlmICgodmFsIFxcdTAwMjYgMHgwMDAwZmYwMCkgIT0gMClcXG42MTg2OlxcdFxcdFxcdHBjaV93cml0ZV9jb25maWdfZHdvcmQocGNpX2RldiwgMHg0MCwgdmFsIFxcdTAwMjYgMHhmZmZmMDBmZik7XFxuNjE4NzpcXHRcXG42MTg4OlxcdFxcdGlmICghaXB3MjEwMF9od19pc19hZGFwdGVyX2luX3N5c3RlbShkZXYpKSB7XFxuNjE4OTpcXHRcXHRcXHRwcmludGsoS0VSTl9XQVJOSU5HIERSVl9OQU1FXFxuNjE5MDpcXHRcXHRcXHQgICAgICAgXFxcIkRldmljZSBub3QgZm91bmQgdmlhIHJlZ2lzdGVyIHJlYWQuXFxcXG5cXFwiKTtcXG42MTkxOlxcdFxcdFxcdGVyciA9IC1FTk9ERVY7XFxuNjE5MjpcXHRcXHRcXHRnb3RvIGZhaWw7XFxuNjE5MzpcXHRcXHR9XFxuNjE5NDpcXHRcXG42MTk1OlxcdFxcdFNFVF9ORVRERVZfREVWKGRldiwgXFx1MDAyNnBjaV9kZXYtXFx1MDAzZWRldik7XFxuNjE5NjpcXHRcXG42MTk3OlxcdFxcdC8qIEZvcmNlIGludGVycnVwdHMgdG8gYmUgc2h1dCBvZmYgb24gdGhlIGRldmljZSAqL1xcbjYxOTg6XFx0XFx0cHJpdi1cXHUwMDNlc3RhdHVzIHw9IFNUQVRVU19JTlRfRU5BQkxFRDtcXG42MTk5OlxcdFxcdGlwdzIxMDBfZGlzYWJsZV9pbnRlcnJ1cHRzKHByaXYpO1xcbjYyMDA6XFx0XFxuNjIwMTpcXHRcXHQvKiBBbGxvY2F0ZSBhbmQgaW5pdGlhbGl6ZSB0aGUgVHgvUnggcXVldWVzIGFuZCBsaXN0cyAqL1xcbjYyMDI6XFx0XFx0aWYgKGlwdzIxMDBfcXVldWVzX2FsbG9jYXRlKHByaXYpKSB7XFxuNjIwMzpcXHRcXHRcXHRwcmludGsoS0VSTl9XQVJOSU5HIERSVl9OQU1FXFxuNjIwNDpcXHRcXHRcXHQgICAgICAgXFxcIkVycm9yIGNhbGxpbmcgaXB3MjEwMF9xdWV1ZXNfYWxsb2NhdGUuXFxcXG5cXFwiKTtcXG42MjA1OlxcdFxcdFxcdGVyciA9IC1FTk9NRU07XFxuNjIwNjpcXHRcXHRcXHRnb3RvIGZhaWw7XFxuNjIwNzpcXHRcXHR9XFxuNjIwODpcXHRcXHRpcHcyMTAwX3F1ZXVlc19pbml0aWFsaXplKHByaXYpO1xcbjYyMDk6XFx0XFxuNjIxMDpcXHRcXHRlcnIgPSByZXF1ZXN0X2lycShwY2lfZGV2LVxcdTAwM2VpcnEsXFxuNjIxMTpcXHRcXHRcXHRcXHQgIGlwdzIxMDBfaW50ZXJydXB0LCBJUlFGX1NIQVJFRCwgZGV2LVxcdTAwM2VuYW1lLCBwcml2KTtcXG42MjEyOlxcdFxcdGlmIChlcnIpIHtcXG42MjEzOlxcdFxcdFxcdHByaW50ayhLRVJOX1dBUk5JTkcgRFJWX05BTUVcXG42MjE0OlxcdFxcdFxcdCAgICAgICBcXFwiRXJyb3IgY2FsbGluZyByZXF1ZXN0X2lycTogJWQuXFxcXG5cXFwiLCBwY2lfZGV2LVxcdTAwM2VpcnEpO1xcbjYyMTU6XFx0XFx0XFx0Z290byBmYWlsO1xcbjYyMTY6XFx0XFx0fVxcbjYyMTc6XFx0XFx0ZGV2LVxcdTAwM2VpcnEgPSBwY2lfZGV2LVxcdTAwM2VpcnE7XFxuNjIxODpcXHRcXG42MjE5OlxcdFxcdElQV19ERUJVR19JTkZPKFxcXCJBdHRlbXB0aW5nIHRvIHJlZ2lzdGVyIGRldmljZS4uLlxcXFxuXFxcIik7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTIwVDA2OjIyOjQ2LjExODI5MDM1M1oiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI2MzQyNTE0MTUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCdzIHNlZSB3aGF0IHdlJ3JlIGRlYWxpbmcgd2l0aCBoZXJlLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gc2tpcCBhaGVhZCBhbmQgbG9vayBmb3IgdGhlIGBmYWlsOmAgbGFiZWwsIGJlY2F1c2UgdGhlIG1lcmUgbWVudGlvbiBvZiBpdCB0ZWxscyBtZSBzb21ldGhpbmcgYWJvdXQgdGhlIGxvZ2ljIGZsb3cuIEl0IHN1Z2dlc3RzIGFuIGVhcmx5IGV4aXQgY29uZGl0aW9uLCBwcm9iYWJseSBzb21ldGhpbmcgdGhhdCBpbmRpY2F0ZXMgYW4gdW5zdWNjZXNzZnVsIG9wZXJhdGlvbi4gVGhpcyBjb250ZXh0IGdpdmVzIG1lIGEgc3RhcnRpbmcgcG9pbnQgdG8gYmVnaW4gdG8gdW5kZXJzdGFuZCB0aGUgZnVuY3Rpb24gYXMgYSB3aG9sZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NDc4MiwiT3V0cHV0VG9rZW5zIjo1MywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE3LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjBUMDY6MjI6NDguNzUyNTQ0MTI5WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzMyNTgwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjEwMC5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDYyMjAsXG4gIFwiTGluZUNvdW50XCI6IDEwMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCI2MjIwOlxcdFxcbjYyMjE6XFx0XFx0cHJpbnRrKEtFUk5fSU5GTyBEUlZfTkFNRVxcbjYyMjI6XFx0XFx0ICAgICAgIFxcXCI6IERldGVjdGVkIEludGVsIFBSTy9XaXJlbGVzcyAyMTAwIE5ldHdvcmsgQ29ubmVjdGlvblxcXFxuXFxcIik7XFxuNjIyMzpcXHRcXG42MjI0OlxcdFxcdGVyciA9IGlwdzIxMDBfdXAocHJpdiwgMSk7XFxuNjIyNTpcXHRcXHRpZiAoZXJyKVxcbjYyMjY6XFx0XFx0XFx0Z290byBmYWlsO1xcbjYyMjc6XFx0XFxuNjIyODpcXHRcXHRlcnIgPSBpcHcyMTAwX3dkZXZfaW5pdChkZXYpO1xcbjYyMjk6XFx0XFx0aWYgKGVycilcXG42MjMwOlxcdFxcdFxcdGdvdG8gZmFpbDtcXG42MjMxOlxcdFxcdHJlZ2lzdGVyZWQgPSAxO1xcbjYyMzI6XFx0XFxuNjIzMzpcXHRcXHQvKiBCcmluZyB1cCB0aGUgaW50ZXJmYWNlLiAgUHJlIDAuNDYsIGFmdGVyIHdlIHJlZ2lzdGVyZWQgdGhlXFxuNjIzNDpcXHRcXHQgKiBuZXR3b3JrIGRldmljZSB3ZSB3b3VsZCBjYWxsIGlwdzIxMDBfdXAuICBUaGlzIGludHJvZHVjZWQgYSByYWNlXFxuNjIzNTpcXHRcXHQgKiBjb25kaXRpb24gd2l0aCBuZXdlciBob3RwbHVnIGNvbmZpZ3VyYXRpb25zIChuZXR3b3JrIHdhcyBjb21pbmdcXG42MjM2OlxcdFxcdCAqIHVwIGFuZCBtYWtpbmcgY2FsbHMgYmVmb3JlIHRoZSBkZXZpY2Ugd2FzIGluaXRpYWxpemVkKS5cXG42MjM3OlxcdFxcdCAqL1xcbjYyMzg6XFx0XFx0ZXJyID0gcmVnaXN0ZXJfbmV0ZGV2KGRldik7XFxuNjIzOTpcXHRcXHRpZiAoZXJyKSB7XFxuNjI0MDpcXHRcXHRcXHRwcmludGsoS0VSTl9XQVJOSU5HIERSVl9OQU1FXFxuNjI0MTpcXHRcXHRcXHQgICAgICAgXFxcIkVycm9yIGNhbGxpbmcgcmVnaXN0ZXJfbmV0ZGV2LlxcXFxuXFxcIik7XFxuNjI0MjpcXHRcXHRcXHRnb3RvIGZhaWw7XFxuNjI0MzpcXHRcXHR9XFxuNjI0NDpcXHRcXHRyZWdpc3RlcmVkID0gMjtcXG42MjQ1OlxcdFxcbjYyNDY6XFx0XFx0bXV0ZXhfbG9jayhcXHUwMDI2cHJpdi1cXHUwMDNlYWN0aW9uX211dGV4KTtcXG42MjQ3OlxcdFxcbjYyNDg6XFx0XFx0SVBXX0RFQlVHX0lORk8oXFxcIiVzOiBCb3VuZCB0byAlc1xcXFxuXFxcIiwgZGV2LVxcdTAwM2VuYW1lLCBwY2lfbmFtZShwY2lfZGV2KSk7XFxuNjI0OTpcXHRcXG42MjUwOlxcdFxcdC8qIHBlcmZvcm0gdGhpcyBhZnRlciByZWdpc3Rlcl9uZXRkZXYgc28gdGhhdCBkZXYtXFx1MDAzZW5hbWUgaXMgc2V0ICovXFxuNjI1MTpcXHRcXHRlcnIgPSBzeXNmc19jcmVhdGVfZ3JvdXAoXFx1MDAyNnBjaV9kZXYtXFx1MDAzZWRldi5rb2JqLCBcXHUwMDI2aXB3MjEwMF9hdHRyaWJ1dGVfZ3JvdXApO1xcbjYyNTI6XFx0XFx0aWYgKGVycilcXG42MjUzOlxcdFxcdFxcdGdvdG8gZmFpbF91bmxvY2s7XFxuNjI1NDpcXHRcXG42MjU1OlxcdFxcdC8qIElmIHRoZSBSRiBLaWxsIHN3aXRjaCBpcyBkaXNhYmxlZCwgZ28gYWhlYWQgYW5kIGNvbXBsZXRlIHRoZVxcbjYyNTY6XFx0XFx0ICogc3RhcnR1cCBzZXF1ZW5jZSAqL1xcbjYyNTc6XFx0XFx0aWYgKCEocHJpdi1cXHUwMDNlc3RhdHVzIFxcdTAwMjYgU1RBVFVTX1JGX0tJTExfTUFTSykpIHtcXG42MjU4OlxcdFxcdFxcdC8qIEVuYWJsZSB0aGUgYWRhcHRlciAtIHNlbmRzIEhPU1RfQ09NUExFVEUgKi9cXG42MjU5OlxcdFxcdFxcdGlmIChpcHcyMTAwX2VuYWJsZV9hZGFwdGVyKHByaXYpKSB7XFxuNjI2MDpcXHRcXHRcXHRcXHRwcmludGsoS0VSTl9XQVJOSU5HIERSVl9OQU1FXFxuNjI2MTpcXHRcXHRcXHRcXHQgICAgICAgXFxcIjogJXM6IGZhaWxlZCBpbiBjYWxsIHRvIGVuYWJsZSBhZGFwdGVyLlxcXFxuXFxcIixcXG42MjYyOlxcdFxcdFxcdFxcdCAgICAgICBwcml2LVxcdTAwM2VuZXRfZGV2LVxcdTAwM2VuYW1lKTtcXG42MjYzOlxcdFxcdFxcdFxcdGlwdzIxMDBfaHdfc3RvcF9hZGFwdGVyKHByaXYpO1xcbjYyNjQ6XFx0XFx0XFx0XFx0ZXJyID0gLUVJTztcXG42MjY1OlxcdFxcdFxcdFxcdGdvdG8gZmFpbF91bmxvY2s7XFxuNjI2NjpcXHRcXHRcXHR9XFxuNjI2NzpcXHRcXG42MjY4OlxcdFxcdFxcdC8qIFN0YXJ0IGEgc2NhbiAuIC4gLiAqL1xcbjYyNjk6XFx0XFx0XFx0aXB3MjEwMF9zZXRfc2Nhbl9vcHRpb25zKHByaXYpO1xcbjYyNzA6XFx0XFx0XFx0aXB3MjEwMF9zdGFydF9zY2FuKHByaXYpO1xcbjYyNzE6XFx0XFx0fVxcbjYyNzI6XFx0XFxuNjI3MzpcXHRcXHRJUFdfREVCVUdfSU5GTyhcXFwiZXhpdFxcXFxuXFxcIik7XFxuNjI3NDpcXHRcXG42Mjc1OlxcdFxcdHByaXYtXFx1MDAzZXN0YXR1cyB8PSBTVEFUVVNfSU5JVElBTElaRUQ7XFxuNjI3NjpcXHRcXG42Mjc3OlxcdFxcdG11dGV4X3VubG9jayhcXHUwMDI2cHJpdi1cXHUwMDNlYWN0aW9uX211dGV4KTtcXG42Mjc4OlxcdG91dDpcXG42Mjc5OlxcdFxcdHJldHVybiBlcnI7XFxuNjI4MDpcXHRcXG42MjgxOlxcdCAgICAgIGZhaWxfdW5sb2NrOlxcbjYyODI6XFx0XFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZwcml2LVxcdTAwM2VhY3Rpb25fbXV0ZXgpO1xcbjYyODM6XFx0ICAgICAgZmFpbDpcXG42Mjg0OlxcdFxcdGlmIChkZXYpIHtcXG42Mjg1OlxcdFxcdFxcdGlmIChyZWdpc3RlcmVkIFxcdTAwM2U9IDIpXFxuNjI4NjpcXHRcXHRcXHRcXHR1bnJlZ2lzdGVyX25ldGRldihkZXYpO1xcbjYyODc6XFx0XFxuNjI4ODpcXHRcXHRcXHRpZiAocmVnaXN0ZXJlZCkge1xcbjYyODk6XFx0XFx0XFx0XFx0d2lwaHlfdW5yZWdpc3Rlcihwcml2LVxcdTAwM2VpZWVlLVxcdTAwM2V3ZGV2LndpcGh5KTtcXG42MjkwOlxcdFxcdFxcdFxcdGtmcmVlKHByaXYtXFx1MDAzZWllZWUtXFx1MDAzZWJnX2JhbmQuY2hhbm5lbHMpO1xcbjYyOTE6XFx0XFx0XFx0fVxcbjYyOTI6XFx0XFxuNjI5MzpcXHRcXHRcXHRpcHcyMTAwX2h3X3N0b3BfYWRhcHRlcihwcml2KTtcXG42Mjk0OlxcdFxcbjYyOTU6XFx0XFx0XFx0aXB3MjEwMF9kaXNhYmxlX2ludGVycnVwdHMocHJpdik7XFxuNjI5NjpcXHRcXG42Mjk3OlxcdFxcdFxcdGlmIChkZXYtXFx1MDAzZWlycSlcXG42Mjk4OlxcdFxcdFxcdFxcdGZyZWVfaXJxKGRldi1cXHUwMDNlaXJxLCBwcml2KTtcXG42Mjk5OlxcdFxcbjYzMDA6XFx0XFx0XFx0aXB3MjEwMF9raWxsX3dvcmtzKHByaXYpO1xcbjYzMDE6XFx0XFxuNjMwMjpcXHRcXHRcXHQvKiBUaGVzZSBhcmUgc2FmZSB0byBjYWxsIGV2ZW4gaWYgdGhleSB3ZXJlbid0IGFsbG9jYXRlZCAqL1xcbjYzMDM6XFx0XFx0XFx0aXB3MjEwMF9xdWV1ZXNfZnJlZShwcml2KTtcXG42MzA0OlxcdFxcdFxcdHN5c2ZzX3JlbW92ZV9ncm91cChcXHUwMDI2cGNpX2Rldi1cXHUwMDNlZGV2LmtvYmosXFxuNjMwNTpcXHRcXHRcXHRcXHRcXHQgICBcXHUwMDI2aXB3MjEwMF9hdHRyaWJ1dGVfZ3JvdXApO1xcbjYzMDY6XFx0XFxuNjMwNzpcXHRcXHRcXHRmcmVlX2xpYmlwdyhkZXYsIDApO1xcbjYzMDg6XFx0XFx0fVxcbjYzMDk6XFx0XFxuNjMxMDpcXHRcXHRwY2lfaW91bm1hcChwY2lfZGV2LCBpb2FkZHIpO1xcbjYzMTE6XFx0XFxuNjMxMjpcXHRcXHRwY2lfcmVsZWFzZV9yZWdpb25zKHBjaV9kZXYpO1xcbjYzMTM6XFx0XFx0cGNpX2Rpc2FibGVfZGV2aWNlKHBjaV9kZXYpO1xcbjYzMTQ6XFx0XFx0Z290byBvdXQ7XFxuNjMxNTpcXHR9XFxuNjMxNjpcXHRcXG42MzE3OlxcdHN0YXRpYyB2b2lkIGlwdzIxMDBfcGNpX3JlbW92ZV9vbmUoc3RydWN0IHBjaV9kZXYgKnBjaV9kZXYpXFxuNjMxODpcXHR7XFxuNjMxOTpcXHRcXHRzdHJ1Y3QgaXB3MjEwMF9wcml2ICpwcml2ID0gcGNpX2dldF9kcnZkYXRhKHBjaV9kZXYpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yMFQwNjoyMjo0OC43NTI4Nzg3MzhaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMDE1NzU5NzkxMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBQQ0kgRHJpdmVyIEluaXRpYWxpemF0aW9uIEJ1ZyBGaXgqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGZvciB0aGUgYGlwdzIxMDBgIGRyaXZlci4gSXQgYXBwZWFycyB0byBiZSBhZGRyZXNzaW5nIHJlc291cmNlIGxlYWtzIHdpdGhpbiB0aGUgYGlwdzIxMDBfcGNpX2luaXRfb25lYCBmdW5jdGlvbi4gU3BlY2lmaWNhbGx5LCB0aGUgb3JpZ2luYWwgY29kZSBoYWQgdGhlc2UgZXJyb3IgcGF0aHMgdGhhdCB3ZXJlIGluY29tcGxldGU6IGlmIGBwY2lfZW5hYmxlX2RldmljZWAsIGBkbWFfc2V0X21hc2tgLCBvciBgcGNpX3JlcXVlc3RfcmVnaW9uc2AgZmFpbGVkLCB0aGUgY29kZSB3b3VsZCBqdXN0IGByZXR1cm5gIHByZW1hdHVyZWx5LiBUaGlzIG1lYW50IHRoYXQgdGhlIGRyaXZlciB3b3VsZCBsZWFrIGFsbG9jYXRlZCByZXNvdXJjZXMg4oCTIHRoZSBgaW9hZGRyYCBtYXBwZWQgd2l0aCBgcGNpX2lvbWFwYCwgYW5kIHRoZSBuZXR3b3JrIGRldmljZSBgZGV2YCBhbGxvY2F0ZWQgdmlhIGBpcHcyMTAwX2FsbG9jX2RldmljZWAuXG5cblRoaXMgcGF0Y2ggaXMgYSBzdHJhaWdodGZvcndhcmQgZml4LCBpdCBzZWVtcy4gQnkgY2hhbmdpbmcgdGhlc2UgcmV0dXJuIHN0YXRlbWVudHMgdG8gYGdvdG8gZmFpbDtgLCBpdCBlbnN1cmVzIHRoZSBjb2RlIGV4ZWN1dGVzIHRoZSBjbGVhbnVwIGJsb2NrIGxhYmVsbGVkIGBmYWlsYC4gVGhlIGBmYWlsYCBsYWJlbCBjb250YWlucyBhbGwgdGhlIG5lY2Vzc2FyeSBjbGVhbnVwIHN0ZXBzOiAgYGZyZWVfbGliaXB3KGRldiwgMCk7YCwgYHBjaV9pb3VubWFwKHBjaV9kZXYsIGlvYWRkcik7YCwgYHBjaV9yZWxlYXNlX3JlZ2lvbnMocGNpX2Rldik7YCwgYW5kIGBwY2lfZGlzYWJsZV9kZXZpY2UocGNpX2Rldik7YC4gQmFzaWNhbGx5LCBpdCBub3cgcmVsZWFzZXMgZXZlcnl0aGluZyBwcm9wZXJseS4gU28sIHRoaXMgaXMgYSBwcmV0dHkgY2xlYXIgbWVtb3J5L3Jlc291cmNlIGxlYWsgZml4LlxuXG5Ob3csIHRoZSBxdWVzdGlvbiBpcywgc2hvdWxkIEkgZnV6eiB0aGlzPyBJdCdzIGEgUENJIGRldmljZSBkcml2ZXIgaW5pdGlhbGl6YXRpb24sIHdoaWNoIG1ha2VzIGl0IGFuIGludGVyZXN0aW5nIHRhcmdldC4gSXQgKnNob3VsZCogYmUgcmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cywgYXNzdW1pbmcgd2UgY2FuIGVtdWxhdGUgYSBQQ0kgZGV2aWNlIG9yIGxldmVyYWdlIHN5emthbGxlcidzIFBDSSBmdXp6aW5nIGNhcGFiaWxpdGllcy4gIFN5emthbGxlciAqZG9lcyogaGF2ZSBQQ0kgZnV6emluZyBzdXBwb3J0OyBJJ3ZlIHVzZWQgaXQgYmVmb3JlLCBpbmNsdWRpbmcgdGhlIGBzeXpfcGNpX2RldmljZV9hZGRgIGNhbGwuIEhvd2V2ZXIsIHRoaXMgaXMgYW4gb2xkIGRyaXZlciwgSW50ZWwgUFJPL1dpcmVsZXNzIDIxMDAuIFNvIEknbGwgbmVlZCB0byBkb3VibGUgY2hlY2sgdGhlIEtjb25maWcgZm9yIGl0LiBUaGlzIHdpbGwgaGVscCBkZXRlcm1pbmUgaWYgaXQncyBldmVuIGNvbmZpZ3VyZWQgYW5kIGlmIGl0IGlzIHN1cHBvcnRlZCB0byBiZWdpbiB3aXRoLiAgTGV0IG1lIHF1aWNrbHkgdmVyaWZ5LlxuXG5cbiIsIklucHV0VG9rZW5zIjo2NDA5LCJPdXRwdXRUb2tlbnMiOjQ0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6OTQzLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjBUMDY6MjI6NTguOTEwNDc5Mjk5WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2MTA0NzE5OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgSVBXMjEwMFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9LY29uZmlnLTUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9LY29uZmlnOjY6Y29uZmlnIElQVzIxMDBcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL0tjb25maWctNy1cXHR0cmlzdGF0ZSBcXFwiSW50ZWwgUFJPL1dpcmVsZXNzIDIxMDAgTmV0d29yayBDb25uZWN0aW9uXFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9LY29uZmlnLTM4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvS2NvbmZpZzozOTpjb25maWcgSVBXMjEwMF9NT05JVE9SXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9LY29uZmlnLTQwLVxcdGJvb2wgXFxcIkVuYWJsZSBwcm9taXNjdW91cyBtb2RlXFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9LY29uZmlnLTQ3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvS2NvbmZpZzo0ODpjb25maWcgSVBXMjEwMF9ERUJVR1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvS2NvbmZpZy00OS1cXHRib29sIFxcXCJFbmFibGUgZnVsbCBkZWJ1Z2dpbmcgb3V0cHV0IGluIElQVzIxMDAgbW9kdWxlLlxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjBUMDY6MjI6NTguOTcxNTMyNzE4WiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMyMDg4OTI4NDMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBJUFcyMTAwIEluaXRpYWxpemF0aW9uKipcblxuT2theSwgc28gdGhlIGNvZGUgSSdtIGxvb2tpbmcgYXQgcmV2b2x2ZXMgYXJvdW5kIHRoZSBjb25maWd1cmF0aW9uIGZvciB0aGUgYElQVzIxMDBgIGRldmljZS4gTXkgZm9jdXMgaXMgb24gdGhlIGBpcHcyMTAwX3BjaV9pbml0X29uZWAgZnVuY3Rpb24sIG5hdHVyYWxseS4gVGhlIGtleSBxdWVzdGlvbiBpbiBteSBtaW5kIGlzOiBjYW4gSSBnZXQgdGhpcyBmdW5jdGlvbiB0byBleGVjdXRlPyBUaGUgb2J2aW91cyBhbnN3ZXIgaXMgeWVzLiBJdCBsb29rcyBsaWtlIHRoZSBtb3N0IGRpcmVjdCBhcHByb2FjaCB3b3VsZCBiZSB0byBpbmplY3QgYSBQQ0kgZGV2aWNlIHRoYXQgaGFzIHRoZSBjb3JyZWN0IHZlbmRvciBhbmQgZGV2aWNlIElEcyB0byB0cmlnZ2VyIGl0LiBTbywgbGV0J3MgdHJhY2sgZG93biB0aG9zZSBQQ0kgSURzIGZvciB0aGUgYGlwdzIxMDBgIHNwZWNpZmljYWxseSwgdGhhdCdzIHdoZXJlIEkgbmVlZCB0byBzdGFydCBteSBpbnZlc3RpZ2F0aW9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjo4MTA2LCJPdXRwdXRUb2tlbnMiOjU2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NzQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjBUMDY6MjM6MDIuMTgwNDI3NzQxWiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NTA2MjYyOSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJpcHcyMTAwX3BjaV9pZF90YWJsZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIxMDAuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIxMDAuYz02NDI5PXN0YXRpYyB2b2lkIGlwdzIxMDBfc2h1dGRvd24oc3RydWN0IHBjaV9kZXYgKnBjaV9kZXYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIxMDAuYy02NDQwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjEwMC5jOjY0NDE6c3RhdGljIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkIGlwdzIxMDBfcGNpX2lkX3RhYmxlW10gPSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMTAwLmMtNjQ0Mi1cXHRJUFcyMTAwX0RFVl9JRCgweDI1MjApLFxcdC8qIElOIDIxMDBBIG1QQ0kgM0EgKi9cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjEwMC5jLTY0OTAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMTAwLmM6NjQ5MTpNT0RVTEVfREVWSUNFX1RBQkxFKHBjaSwgaXB3MjEwMF9wY2lfaWRfdGFibGUpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjEwMC5jLTY0OTItXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIxMDAuYz02NDk1PXN0YXRpYyBzdHJ1Y3QgcGNpX2RyaXZlciBpcHcyMTAwX3BjaV9kcml2ZXIgPSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMTAwLmMtNjQ5Ni1cXHQubmFtZSA9IERSVl9OQU1FLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjEwMC5jOjY0OTc6XFx0LmlkX3RhYmxlID0gaXB3MjEwMF9wY2lfaWRfdGFibGUsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMTAwLmMtNjQ5OC1cXHQucHJvYmUgPSBpcHcyMTAwX3BjaV9pbml0X29uZSxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjBUMDY6MjM6MDIuMjM1NDk2NDNaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzQ3MjkzNjE0OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRha2Ugb24gdGhlIHRob3VnaHQgcHJvY2VzczpcblxuKipGdXp6aW5nIFBDSSBEZXZpY2VzIHdpdGggU3l6a2FsbGVyKipcblxuT2theSwgc28gSSdtIHRoaW5raW5nIGFib3V0IGZ1enppbmcgc29tZSBQQ0kgZGV2aWNlcyB1c2luZyBTeXprYWxsZXIuIEl0IGxvb2tzIGxpa2UgaXQgY2FuIGRvIHRoaXMgYnkgc2ltdWxhdGluZyB0aGUgZGV2aWNlcyB0aGVtc2VsdmVzLCB3aGljaCBpcyBwcmV0dHkgbmVhdC4gVGhlIGRvY3VtZW50YXRpb24gcG9pbnRzIHRvIGVuYWJsaW5nIHRoZSBgSVBXMjEwMGAgY29uZmlnIG9wdGlvbiB0byBnZXQgdGhpcyBmdW5jdGlvbmFsaXR5IGdvaW5nLiBCdXQgaG9sZCBvbiwgYmVmb3JlIEkgZGl2ZSBpbiB0b28gZGVlcCwgbGV0J3MganVzdCBkb3VibGUtY2hlY2sgaWYgZW5hYmxpbmcgdGhhdCBvcHRpb24gaGFzIGFueSB1bmRlcmx5aW5nIGRlcGVuZGVuY2llcy4gR290dGEgbWFrZSBzdXJlIEkgaGF2ZSBhbGwgdGhlIHBpZWNlcyBpbiBwbGFjZSBiZWZvcmUgSSBzdGFydC4gV291bGRuJ3Qgd2FudCB0byB3YXN0ZSB0aW1lIGNoYXNpbmcgZG93biBtaXNzaW5nIGNvbXBvbmVudHMgbGF0ZXIuIEdvdHRhIGJlIHRob3JvdWdoLlxuXG5cbiIsIklucHV0VG9rZW5zIjo4ODk4LCJPdXRwdXRUb2tlbnMiOjQzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjBUMDY6MjM6MDUuNzA4NDM0Njk5WiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjc3NjIwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAxLFxuICBcIkxpbmVDb3VudFwiOiAyMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgICAxOlxcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbiAgIDI6XFx0I1xcbiAgIDM6XFx0IyBJbnRlbCBDZW50cmlubyB3aXJlbGVzcyBkcml2ZXJzXFxuICAgNDpcXHQjXFxuICAgNTpcXHRcXG4gICA2OlxcdGNvbmZpZyBJUFcyMTAwXFxuICAgNzpcXHRcXHR0cmlzdGF0ZSBcXFwiSW50ZWwgUFJPL1dpcmVsZXNzIDIxMDAgTmV0d29yayBDb25uZWN0aW9uXFxcIlxcbiAgIDg6XFx0XFx0ZGVwZW5kcyBvbiBQQ0kgXFx1MDAyNlxcdTAwMjYgQ0ZHODAyMTFcXG4gICA5OlxcdFxcdHNlbGVjdCBXSVJFTEVTU19FWFRcXG4gIDEwOlxcdFxcdHNlbGVjdCBXRVhUX1BSSVZcXG4gIDExOlxcdFxcdHNlbGVjdCBGV19MT0FERVJcXG4gIDEyOlxcdFxcdHNlbGVjdCBMSUJJUFdcXG4gIDEzOlxcdFxcdGhlbHBcXG4gIDE0OlxcdFxcdCAgQSBkcml2ZXIgZm9yIHRoZSBJbnRlbCBQUk8vV2lyZWxlc3MgMjEwMCBOZXR3b3JrXFxuICAxNTpcXHRcXHQgIENvbm5lY3Rpb24gODAyLjExYiB3aXJlbGVzcyBuZXR3b3JrIGFkYXB0ZXIuXFxuICAxNjpcXHRcXG4gIDE3OlxcdFxcdCAgU2VlIFxcdTAwM2NmaWxlOkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9kZXZpY2VfZHJpdmVycy93aWZpL2ludGVsL2lwdzIxMDAucnN0XFx1MDAzZVxcbiAgMTg6XFx0XFx0ICBmb3IgaW5mb3JtYXRpb24gb24gdGhlIGNhcGFiaWxpdGllcyBjdXJyZW50bHkgZW5hYmxlZCBpbiB0aGlzIGRyaXZlclxcbiAgMTk6XFx0XFx0ICBhbmQgZm9yIHRpcHMgZm9yIGRlYnVnZ2luZyBpc3N1ZXMgYW5kIHByb2JsZW1zLlxcbiAgMjA6XFx0XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTIwVDA2OjIzOjA1LjcwODUxMzU4OFoiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1NzM2MDk4MTgxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgUG90ZW50aWFsIEltcGFjdCBvZiBhIFBDSSBEcml2ZXIgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCBpbW1lZGlhdGVseSwgbXkgbWluZCBqdW1wcyB0byB0aGUgZGVwZW5kZW5jaWVzOiBgUENJYCBhbmQgYENGRzgwMjExYC4gVGhhdCdzIHdoZXJlIEkgbmVlZCB0byBzdGFydC4gVGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9uIHdlJ2xsIG5lZWQgdG8gZW5hYmxlIHRvIHRlc3QgdGhpcyBpcyBgSVBXMjEwMGAuXG5cblRoZSBtZWF0IG9mIGl0IHNlZW1zIHRvIGJlIGEgZml4IGZvciBhIHJlc291cmNlIGxlYWsgd2l0aGluIHRoZSBlcnJvciBoYW5kbGluZyBvZiB0aGUgUENJIHByb2JlIGZ1bmN0aW9uLiBUaGF0J3MgaW50ZXJlc3RpbmcsIGFuZCBiZWNhdXNlIGl0J3MgZnVuY3Rpb25hbCwgaXQgYWJzb2x1dGVseSBoYXMgYSBjaGFuY2UgdG8gYmUgdHJpZ2dlcmVkIGJ5IGZ1enppbmcsIHNwZWNpZmljYWxseSBzeXprYWxsZXIncyBQQ0kgZnV6emluZy4gVGhlIGtleSBmdW5jdGlvbiBoZXJlIGlzIGNsZWFybHkgYGlwdzIxMDBfcGNpX2luaXRfb25lYC5cblxuSnVzdCB0byBiZSB0aG9yb3VnaCwgSSdsbCBxdWlja2x5IGNoZWNrIGZvciBhbnkgb3RoZXIgbW9kaWZpZWQgZnVuY3Rpb25zLCBidXQgaXQgbG9va3MgbGlrZSBgaXB3MjEwMF9wY2lfaW5pdF9vbmVgIGlzIHRoZSBvbmx5IG9uZS4gR29vZC5cblxuQWxyaWdodCwgbGV0J3Mgc3VtbWFyaXplIG15IGZpbmRpbmdzLiBJJ2xsIG5vdGUgdGhlc2UgZG93biBmb3IgY2xhcml0eTpcblxuKiAgICoqV29ydGhGdXp6aW5nOioqIFRydWUgLSB0aGlzIGlzIGEgZGVmaW5pdGUgY2FuZGlkYXRlLlxuKiAgICoqRm9jdXNTeW1ib2xzOioqIGBbXCJpcHcyMTAwX3BjaV9pbml0X29uZVwiXWAgLSBwaW5wb2ludCB0aGF0IGZ1bmN0aW9uLlxuKiAgICoqRW5hYmxlQ29uZmlnczoqKiBgW1wiSVBXMjEwMFwiXWAgLSB0aGUgcHJlcmVxdWlzaXRlIHRvIGdldCBoZXJlLlxuKiAgICoqUmVhc29uaW5nOioqIFwiVGhlIHBhdGNoIGZpeGVzIHJlc291cmNlIGxlYWtzIGluIHRoZSBlcnJvciBwYXRocyBvZiB0aGUgUENJIHByb2JlIGZ1bmN0aW9uIGBpcHcyMTAwX3BjaV9pbml0X29uZWAuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0aGF0IGNhbiBiZSB0cmlnZ2VyZWQgYnkgc3l6a2FsbGVyJ3MgUENJIGRldmljZSBmdXp6aW5nLlwiXG5cblxuIiwiSW5wdXRUb2tlbnMiOjk0MDMsIk91dHB1dFRva2VucyI6MTAzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjI2LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjBUMDY6MjM6MTEuNDQ0NjE0NThaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4MDM2MDYwOCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiSVBXMjEwMFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImlwdzIxMDBfcGNpX2luaXRfb25lXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgcmVzb3VyY2UgbGVha3MgaW4gdGhlIGVycm9yIHBhdGhzIG9mIHRoZSBQQ0kgcHJvYmUgZnVuY3Rpb24gYGlwdzIxMDBfcGNpX2luaXRfb25lYC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRoYXQgY2FuIGJlIHRyaWdnZXJlZCBieSBzeXprYWxsZXIncyBQQ0kgZGV2aWNlIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiSVBXMjEwMFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImlwdzIxMDBfcGNpX2luaXRfb25lXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgcmVzb3VyY2UgbGVha3MgaW4gdGhlIGVycm9yIHBhdGhzIG9mIHRoZSBQQ0kgcHJvYmUgZnVuY3Rpb24gYGlwdzIxMDBfcGNpX2luaXRfb25lYC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRoYXQgY2FuIGJlIHRyaWdnZXJlZCBieSBzeXprYWxsZXIncyBQQ0kgZGV2aWNlIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/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-workflowmnh4c[0].run-triage(0) Phase: Succeeded StartedAt: 2026-06-20 06:10:50 +0000 UTC FinishedAt: 2026-06-20 06:23:12 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "torvalds", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux", "commit_hash": "1a3746ccbb0a97bed3c06ccde6b880013b1dddc1", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "IPW2100" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "torvalds", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux", "commit_hash": "1a3746ccbb0a97bed3c06ccde6b880013b1dddc1", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "IPW2100" ], "series_id": "b5bd17ee-c86f-409a-9df5-238622954789" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "ipw2100_pci_init_one" ], "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+CgkJCTx0ZD4yMDI2LzA2LzIwIDA2OjIyPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0lQVzIxMDAmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtpcHcyMTAwX3BjaV9pbml0X29uZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyByZXNvdXJjZSBsZWFrcyBpbiB0aGUgZXJyb3IgcGF0aHMgb2YgdGhlIFBDSSBwcm9iZSBmdW5jdGlvbiBgaXB3MjEwMF9wY2lfaW5pdF9vbmVgLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdGhhdCBjYW4gYmUgdHJpZ2dlcmVkIGJ5IHN5emthbGxlciYjMzk7cyBQQ0kgZGV2aWNlIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjAgMDY6MjI8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCBkOWRiZDAyYTkxNGIxYjBlYWFhMTY3NmI1NGE4OTgxNzNiYWRiYjc5XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFNhdCBKdW4gMjAgMDY6MjI6MzcgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMTAwLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIxMDAuY1xuaW5kZXggYzExNDI4NDg1ZGNjZjUuLjgyMjgwODkwZjFjMGU3IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMTAwLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjEwMC5jXG5AQCAtNjE1Nyw3ICYjNDM7NjE1Nyw3IEBAIHN0YXRpYyBpbnQgaXB3MjEwMF9wY2lfaW5pdF9vbmUoc3RydWN0IHBjaV9kZXYgKnBjaV9kZXYsXG4gXHRpZiAoZXJyKSB7XG4gXHRcdHByaW50ayhLRVJOX1dBUk5JTkcgRFJWX05BTUVcbiBcdFx0ICAgICAgIFwmIzM0O0Vycm9yIGNhbGxpbmcgcGNpX2VuYWJsZV9kZXZpY2UuXFxuXCYjMzQ7KTtcbi1cdFx0cmV0dXJuIGVycjtcbiYjNDM7XHRcdGdvdG8gZmFpbDtcbiBcdH1cbiBcbiBcdHByaXYgPSBsaWJpcHdfcHJpdihkZXYpO1xuQEAgLTYxNjksMTYgJiM0Mzs2MTY5LDE0IEBAIHN0YXRpYyBpbnQgaXB3MjEwMF9wY2lfaW5pdF9vbmUoc3RydWN0IHBjaV9kZXYgKnBjaV9kZXYsXG4gXHRpZiAoZXJyKSB7XG4gXHRcdHByaW50ayhLRVJOX1dBUk5JTkcgRFJWX05BTUVcbiBcdFx0ICAgICAgIFwmIzM0O0Vycm9yIGNhbGxpbmcgcGNpX3NldF9kbWFfbWFzay5cXG5cJiMzNDspO1xuLVx0XHRwY2lfZGlzYWJsZV9kZXZpY2UocGNpX2Rldik7XG4tXHRcdHJldHVybiBlcnI7XG4mIzQzO1x0XHRnb3RvIGZhaWw7XG4gXHR9XG4gXG4gXHRlcnIgPSBwY2lfcmVxdWVzdF9yZWdpb25zKHBjaV9kZXYsIERSVl9OQU1FKTtcbiBcdGlmIChlcnIpIHtcbiBcdFx0cHJpbnRrKEtFUk5fV0FSTklORyBEUlZfTkFNRVxuIFx0XHQgICAgICAgXCYjMzQ7RXJyb3IgY2FsbGluZyBwY2lfcmVxdWVzdF9yZWdpb25zLlxcblwmIzM0Oyk7XG4tXHRcdHBjaV9kaXNhYmxlX2RldmljZShwY2lfZGV2KTtcbi1cdFx0cmV0dXJuIGVycjtcbiYjNDM7XHRcdGdvdG8gZmFpbDtcbiBcdH1cbiBcbiBcdC8qIFdlIGRpc2FibGUgdGhlIFJFVFJZX1RJTUVPVVQgcmVnaXN0ZXIgKDB4NDEpIHRvIGtlZXBcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yMCAwNjoyMjwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtJUFcyMTAwJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7aXB3MjEwMF9wY2lfaW5pdF9vbmUmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgcmVzb3VyY2UgbGVha3MgaW4gdGhlIGVycm9yIHBhdGhzIG9mIHRoZSBQQ0kgcHJvYmUgZnVuY3Rpb24gYGlwdzIxMDBfcGNpX2luaXRfb25lYC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRoYXQgY2FuIGJlIHRyaWdnZXJlZCBieSBzeXprYWxsZXImIzM5O3MgUENJIGRldmljZSBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdAogICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksCiAgIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCBkOWRiZDAyYTkxNGIxYjBlYWFhMTY3NmI1NGE4OTgxNzNiYWRiYjc5CkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFNhdCBKdW4gMjAgMDY6MjI6MzcgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIxMDAuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjEwMC5jCmluZGV4IGMxMTQyODQ4NWRjY2Y1Li44MjI4MDg5MGYxYzBlNyAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMTAwLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMTAwLmMKQEAgLTYxNTcsNyAmIzQzOzYxNTcsNyBAQCBzdGF0aWMgaW50IGlwdzIxMDBfcGNpX2luaXRfb25lKHN0cnVjdCBwY2lfZGV2ICpwY2lfZGV2LAogCWlmIChlcnIpIHsKIAkJcHJpbnRrKEtFUk5fV0FSTklORyBEUlZfTkFNRQogCQkgICAgICAgJiMzNDtFcnJvciBjYWxsaW5nIHBjaV9lbmFibGVfZGV2aWNlLlxuJiMzNDspOwotCQlyZXR1cm4gZXJyOwomIzQzOwkJZ290byBmYWlsOwogCX0KIAogCXByaXYgPSBsaWJpcHdfcHJpdihkZXYpOwpAQCAtNjE2OSwxNiAmIzQzOzYxNjksMTQgQEAgc3RhdGljIGludCBpcHcyMTAwX3BjaV9pbml0X29uZShzdHJ1Y3QgcGNpX2RldiAqcGNpX2RldiwKIAlpZiAoZXJyKSB7CiAJCXByaW50ayhLRVJOX1dBUk5JTkcgRFJWX05BTUUKIAkJICAgICAgICYjMzQ7RXJyb3IgY2FsbGluZyBwY2lfc2V0X2RtYV9tYXNrLlxuJiMzNDspOwotCQlwY2lfZGlzYWJsZV9kZXZpY2UocGNpX2Rldik7Ci0JCXJldHVybiBlcnI7CiYjNDM7CQlnb3RvIGZhaWw7CiAJfQogCiAJZXJyID0gcGNpX3JlcXVlc3RfcmVnaW9ucyhwY2lfZGV2LCBEUlZfTkFNRSk7CiAJaWYgKGVycikgewogCQlwcmludGsoS0VSTl9XQVJOSU5HIERSVl9OQU1FCiAJCSAgICAgICAmIzM0O0Vycm9yIGNhbGxpbmcgcGNpX3JlcXVlc3RfcmVnaW9ucy5cbiYjMzQ7KTsKLQkJcGNpX2Rpc2FibGVfZGV2aWNlKHBjaV9kZXYpOwotCQlyZXR1cm4gZXJyOwomIzQzOwkJZ290byBmYWlsOwogCX0KIAogCS8qIFdlIGRpc2FibGUgdGhlIFJFVFJZX1RJTUVPVVQgcmVnaXN0ZXIgKDB4NDEpIHRvIGtlZXAKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjAgMDY6MjI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjEwNgoJCQkJCQkJb3V0cHV0OiA1NgoJCQkJCQkJdGhvdWdodHM6IDEwOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBXaXJlbGVzcyBEcml2ZXIgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggZm9yIGBkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIxMDAuY2AuIEl0IGxvb2tzIGxpa2UgaXQmIzM5O3MgbWFraW5nIGEgc3VidGxlIGJ1dCBpbXBvcnRhbnQgY2hhbmdlIGluIGhvdyB0aGUgYGlwdzIxMDBfcGNpX2luaXRfb25lYCBmdW5jdGlvbiBoYW5kbGVzIGVycm9ycy4gU3BlY2lmaWNhbGx5LCBpdCYjMzk7cyBzd2FwcGluZyBvdXQgdGhlIGRpcmVjdCByZXR1cm5zIGFuZCBgcGNpX2Rpc2FibGVfZGV2aWNlKHBjaV9kZXYpYCBjYWxscyBmb3IgYSBgZ290byBmYWlsO2AgYXBwcm9hY2guIEhtbSwgSSBrbm93IHRoYXQgZnVuY3Rpb247IEkmIzM5O2xsIG5lZWQgdG8ganVtcCBpbnRvIGBpcHcyMTAwX3BjaV9pbml0X29uZWAgaXRzZWxmIHRvIHNlZSBleGFjdGx5IHdoYXQgdGhhdCBgZmFpbDpgIGxhYmVsIGlzIGRvaW5nIHdpdGhpbiB0aGlzIGNvbnRleHQuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQmIzM5O3MgYmVpbmcgY2xlYW5lZCB1cCwgYW5kIG1ha2Ugc3VyZSB0aGF0IHRoaXMgaXMgYSBzYWZlIHJlZmFjdG9yaW5nIGFuZCBub3QgY3JlYXRpbmcgYW55IHJlZ3Jlc3Npb24gb3IgcG90ZW50aWFsIHJlc291cmNlIGxlYWsuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjAgMDY6MjI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7aXB3MjEwMF9wY2lfaW5pdF9vbmUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIxMDAuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIxMDAuYz01OTk2PXN0YXRpYyBzdHJ1Y3QgbmV0X2RldmljZSAqaXB3MjEwMF9hbGxvY19kZXZpY2Uoc3RydWN0IHBjaV9kZXYgKnBjaV9kZXYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMTAwLmMtNjExOS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjEwMC5jOjYxMjA6c3RhdGljIGludCBpcHcyMTAwX3BjaV9pbml0X29uZShzdHJ1Y3QgcGNpX2RldiAqcGNpX2RldixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjEwMC5jLTYxMjEtXHRcdFx0XHRjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCAqZW50KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjEwMC5jPTY0OTU9c3RhdGljIHN0cnVjdCBwY2lfZHJpdmVyIGlwdzIxMDBfcGNpX2RyaXZlciA9IHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIxMDAuYy02NDk3LVx0LmlkX3RhYmxlID0gaXB3MjEwMF9wY2lfaWRfdGFibGUsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIxMDAuYzo2NDk4Olx0LnByb2JlID0gaXB3MjEwMF9wY2lfaW5pdF9vbmUsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIxMDAuYy02NDk5LVx0LnJlbW92ZSA9IGlwdzIxMDBfcGNpX3JlbW92ZV9vbmUsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjAgMDY6MjI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjg2MAoJCQkJCQkJb3V0cHV0OiA1MwoJCQkJCQkJdGhvdWdodHM6IDU4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGFuYWx5c2lzIG9mIHdoYXQgSSYjMzk7bSBhYm91dCB0byBkbzoKCioqRGl2aW5nIGludG8gdGhlIGlwdzIxMDAgRHJpdmVyJiMzOTtzIFBDSSBJbml0aWFsaXphdGlvbioqCgpPa2F5LCBzbyBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlIEludGVsIElQVzIxMDAgd2lyZWxlc3MgZHJpdmVyIGluaXRpYWxpemVzIGEgUENJIGRldmljZS4gU2luY2UgSSYjMzk7bSBmYW1pbGlhciB3aXRoIHRoaXMgYXJjaGl0ZWN0dXJlLCBJIGZpZ3VyZSB0aGUgYmVzdCBwbGFjZSB0byBzdGFydCBpcyB0aGUgYGlwdzIxMDAuY2AgZmlsZSB3aXRoaW4gdGhlIGBkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwYCBkaXJlY3RvcnkuIFNwZWNpZmljYWxseSwgSSYjMzk7bSB0YXJnZXRpbmcgdGhlIGBpcHcyMTAwX3BjaV9pbml0X29uZWAgZnVuY3Rpb24sIGFuZCBiYXNlZCBvbiBteSBtZW1vcnkgb2Ygc2ltaWxhciBkcml2ZXJzLCBpdCYjMzk7cyBsaWtlbHkgZGVmaW5lZCBhcm91bmQgbGluZSA2MTIwLiBUaGF0JiMzOTtzIGEgcmVhc29uYWJsZSBzdGFydGluZyBwb2ludCB0byBiZWdpbiByZXZlcnNlLWVuZ2luZWVyaW5nIHRoZSBpbml0aWFsaXphdGlvbiBwcm9jZXNzLiBUaGlzIHNob3VsZCBnaXZlIG1lIGEgc29saWQgdmlldyBpbnRvIGhvdyB0aGUgZGV2aWNlIGlzIGVudW1lcmF0ZWQsIGNvbmZpZ3VyZWQsIGFuZCBpbnRlZ3JhdGVkIHdpdGggdGhlIFBDSSBzdWJzeXN0ZW0uIEkgZXhwZWN0IHRvIHNlZSB0aGUgdHlwaWNhbCBQQ0kgcHJvYmluZywgcmVzb3VyY2UgYWxsb2NhdGlvbiwgYW5kIHByb2JhYmx5IHNvbWUgZWFybHkgZmlybXdhcmUgbG9hZGluZyBvciBkZXZpY2UgcmVzZXQgcm91dGluZXMgd2l0aGluIHRoYXQgZnVuY3Rpb24uIFRpbWUgdG8gZGlnIGluIGFuZCBzZWUgaG93IHRoZSBtYWdpYyBoYXBwZW5zIQoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzIwIDA2OjIyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMTAwLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiA2MTIwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDEwMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDs2MTIwOlx0c3RhdGljIGludCBpcHcyMTAwX3BjaV9pbml0X29uZShzdHJ1Y3QgcGNpX2RldiAqcGNpX2RldixcbjYxMjE6XHRcdFx0XHRcdGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkICplbnQpXG42MTIyOlx0e1xuNjEyMzpcdFx0dm9pZCBfX2lvbWVtICppb2FkZHI7XG42MTI0Olx0XHRzdHJ1Y3QgbmV0X2RldmljZSAqZGV2ID0gTlVMTDtcbjYxMjU6XHRcdHN0cnVjdCBpcHcyMTAwX3ByaXYgKnByaXYgPSBOVUxMO1xuNjEyNjpcdFx0aW50IGVyciA9IDA7XG42MTI3Olx0XHRpbnQgcmVnaXN0ZXJlZCA9IDA7XG42MTI4Olx0XHR1MzIgdmFsO1xuNjEyOTpcdFxuNjEzMDpcdFx0SVBXX0RFQlVHX0lORk8oXCYjMzQ7ZW50ZXJcXG5cJiMzNDspO1xuNjEzMTpcdFxuNjEzMjpcdFx0aWYgKCEocGNpX3Jlc291cmNlX2ZsYWdzKHBjaV9kZXYsIDApIFx1MDAyNiBJT1JFU09VUkNFX01FTSkpIHtcbjYxMzM6XHRcdFx0SVBXX0RFQlVHX0lORk8oXCYjMzQ7d2VpcmQgLSByZXNvdXJjZSB0eXBlIGlzIG5vdCBtZW1vcnlcXG5cJiMzNDspO1xuNjEzNDpcdFx0XHRlcnIgPSAtRU5PREVWO1xuNjEzNTpcdFx0XHRnb3RvIG91dDtcbjYxMzY6XHRcdH1cbjYxMzc6XHRcbjYxMzg6XHRcdGlvYWRkciA9IHBjaV9pb21hcChwY2lfZGV2LCAwLCAwKTtcbjYxMzk6XHRcdGlmICghaW9hZGRyKSB7XG42MTQwOlx0XHRcdHByaW50ayhLRVJOX1dBUk5JTkcgRFJWX05BTUVcbjYxNDE6XHRcdFx0ICAgICAgIFwmIzM0O0Vycm9yIGNhbGxpbmcgaW9yZW1hcC5cXG5cJiMzNDspO1xuNjE0MjpcdFx0XHRlcnIgPSAtRUlPO1xuNjE0MzpcdFx0XHRnb3RvIGZhaWw7XG42MTQ0Olx0XHR9XG42MTQ1Olx0XG42MTQ2Olx0XHQvKiBhbGxvY2F0ZSBhbmQgaW5pdGlhbGl6ZSBvdXIgbmV0X2RldmljZSAqL1xuNjE0NzpcdFx0ZGV2ID0gaXB3MjEwMF9hbGxvY19kZXZpY2UocGNpX2RldiwgaW9hZGRyKTtcbjYxNDg6XHRcdGlmICghZGV2KSB7XG42MTQ5Olx0XHRcdHByaW50ayhLRVJOX1dBUk5JTkcgRFJWX05BTUVcbjYxNTA6XHRcdFx0ICAgICAgIFwmIzM0O0Vycm9yIGNhbGxpbmcgaXB3MjEwMF9hbGxvY19kZXZpY2UuXFxuXCYjMzQ7KTtcbjYxNTE6XHRcdFx0ZXJyID0gLUVOT01FTTtcbjYxNTI6XHRcdFx0Z290byBmYWlsO1xuNjE1MzpcdFx0fVxuNjE1NDpcdFxuNjE1NTpcdFx0Lyogc2V0IHVwIFBDSSBtYXBwaW5ncyBmb3IgZGV2aWNlICovXG42MTU2Olx0XHRlcnIgPSBwY2lfZW5hYmxlX2RldmljZShwY2lfZGV2KTtcbjYxNTc6XHRcdGlmIChlcnIpIHtcbjYxNTg6XHRcdFx0cHJpbnRrKEtFUk5fV0FSTklORyBEUlZfTkFNRVxuNjE1OTpcdFx0XHQgICAgICAgXCYjMzQ7RXJyb3IgY2FsbGluZyBwY2lfZW5hYmxlX2RldmljZS5cXG5cJiMzNDspO1xuNjE2MDpcdFx0XHRnb3RvIGZhaWw7XG42MTYxOlx0XHR9XG42MTYyOlx0XG42MTYzOlx0XHRwcml2ID0gbGliaXB3X3ByaXYoZGV2KTtcbjYxNjQ6XHRcbjYxNjU6XHRcdHBjaV9zZXRfbWFzdGVyKHBjaV9kZXYpO1xuNjE2NjpcdFx0cGNpX3NldF9kcnZkYXRhKHBjaV9kZXYsIHByaXYpO1xuNjE2NzpcdFxuNjE2ODpcdFx0ZXJyID0gZG1hX3NldF9tYXNrKFx1MDAyNnBjaV9kZXYtXHUwMDNlZGV2LCBETUFfQklUX01BU0soMzIpKTtcbjYxNjk6XHRcdGlmIChlcnIpIHtcbjYxNzA6XHRcdFx0cHJpbnRrKEtFUk5fV0FSTklORyBEUlZfTkFNRVxuNjE3MTpcdFx0XHQgICAgICAgXCYjMzQ7RXJyb3IgY2FsbGluZyBwY2lfc2V0X2RtYV9tYXNrLlxcblwmIzM0Oyk7XG42MTcyOlx0XHRcdGdvdG8gZmFpbDtcbjYxNzM6XHRcdH1cbjYxNzQ6XHRcbjYxNzU6XHRcdGVyciA9IHBjaV9yZXF1ZXN0X3JlZ2lvbnMocGNpX2RldiwgRFJWX05BTUUpO1xuNjE3NjpcdFx0aWYgKGVycikge1xuNjE3NzpcdFx0XHRwcmludGsoS0VSTl9XQVJOSU5HIERSVl9OQU1FXG42MTc4Olx0XHRcdCAgICAgICBcJiMzNDtFcnJvciBjYWxsaW5nIHBjaV9yZXF1ZXN0X3JlZ2lvbnMuXFxuXCYjMzQ7KTtcbjYxNzk6XHRcdFx0Z290byBmYWlsO1xuNjE4MDpcdFx0fVxuNjE4MTpcdFxuNjE4MjpcdFx0LyogV2UgZGlzYWJsZSB0aGUgUkVUUllfVElNRU9VVCByZWdpc3RlciAoMHg0MSkgdG8ga2VlcFxuNjE4MzpcdFx0ICogUENJIFR4IHJldHJpZXMgZnJvbSBpbnRlcmZlcmluZyB3aXRoIEMzIENQVSBzdGF0ZSAqL1xuNjE4NDpcdFx0cGNpX3JlYWRfY29uZmlnX2R3b3JkKHBjaV9kZXYsIDB4NDAsIFx1MDAyNnZhbCk7XG42MTg1Olx0XHRpZiAoKHZhbCBcdTAwMjYgMHgwMDAwZmYwMCkgIT0gMClcbjYxODY6XHRcdFx0cGNpX3dyaXRlX2NvbmZpZ19kd29yZChwY2lfZGV2LCAweDQwLCB2YWwgXHUwMDI2IDB4ZmZmZjAwZmYpO1xuNjE4NzpcdFxuNjE4ODpcdFx0aWYgKCFpcHcyMTAwX2h3X2lzX2FkYXB0ZXJfaW5fc3lzdGVtKGRldikpIHtcbjYxODk6XHRcdFx0cHJpbnRrKEtFUk5fV0FSTklORyBEUlZfTkFNRVxuNjE5MDpcdFx0XHQgICAgICAgXCYjMzQ7RGV2aWNlIG5vdCBmb3VuZCB2aWEgcmVnaXN0ZXIgcmVhZC5cXG5cJiMzNDspO1xuNjE5MTpcdFx0XHRlcnIgPSAtRU5PREVWO1xuNjE5MjpcdFx0XHRnb3RvIGZhaWw7XG42MTkzOlx0XHR9XG42MTk0Olx0XG42MTk1Olx0XHRTRVRfTkVUREVWX0RFVihkZXYsIFx1MDAyNnBjaV9kZXYtXHUwMDNlZGV2KTtcbjYxOTY6XHRcbjYxOTc6XHRcdC8qIEZvcmNlIGludGVycnVwdHMgdG8gYmUgc2h1dCBvZmYgb24gdGhlIGRldmljZSAqL1xuNjE5ODpcdFx0cHJpdi1cdTAwM2VzdGF0dXMgfD0gU1RBVFVTX0lOVF9FTkFCTEVEO1xuNjE5OTpcdFx0aXB3MjEwMF9kaXNhYmxlX2ludGVycnVwdHMocHJpdik7XG42MjAwOlx0XG42MjAxOlx0XHQvKiBBbGxvY2F0ZSBhbmQgaW5pdGlhbGl6ZSB0aGUgVHgvUnggcXVldWVzIGFuZCBsaXN0cyAqL1xuNjIwMjpcdFx0aWYgKGlwdzIxMDBfcXVldWVzX2FsbG9jYXRlKHByaXYpKSB7XG42MjAzOlx0XHRcdHByaW50ayhLRVJOX1dBUk5JTkcgRFJWX05BTUVcbjYyMDQ6XHRcdFx0ICAgICAgIFwmIzM0O0Vycm9yIGNhbGxpbmcgaXB3MjEwMF9xdWV1ZXNfYWxsb2NhdGUuXFxuXCYjMzQ7KTtcbjYyMDU6XHRcdFx0ZXJyID0gLUVOT01FTTtcbjYyMDY6XHRcdFx0Z290byBmYWlsO1xuNjIwNzpcdFx0fVxuNjIwODpcdFx0aXB3MjEwMF9xdWV1ZXNfaW5pdGlhbGl6ZShwcml2KTtcbjYyMDk6XHRcbjYyMTA6XHRcdGVyciA9IHJlcXVlc3RfaXJxKHBjaV9kZXYtXHUwMDNlaXJxLFxuNjIxMTpcdFx0XHRcdCAgaXB3MjEwMF9pbnRlcnJ1cHQsIElSUUZfU0hBUkVELCBkZXYtXHUwMDNlbmFtZSwgcHJpdik7XG42MjEyOlx0XHRpZiAoZXJyKSB7XG42MjEzOlx0XHRcdHByaW50ayhLRVJOX1dBUk5JTkcgRFJWX05BTUVcbjYyMTQ6XHRcdFx0ICAgICAgIFwmIzM0O0Vycm9yIGNhbGxpbmcgcmVxdWVzdF9pcnE6ICVkLlxcblwmIzM0OywgcGNpX2Rldi1cdTAwM2VpcnEpO1xuNjIxNTpcdFx0XHRnb3RvIGZhaWw7XG42MjE2Olx0XHR9XG42MjE3Olx0XHRkZXYtXHUwMDNlaXJxID0gcGNpX2Rldi1cdTAwM2VpcnE7XG42MjE4Olx0XG42MjE5Olx0XHRJUFdfREVCVUdfSU5GTyhcJiMzNDtBdHRlbXB0aW5nIHRvIHJlZ2lzdGVyIGRldmljZS4uLlxcblwmIzM0Oyk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjAgMDY6MjI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDc4MgoJCQkJCQkJb3V0cHV0OiA1MwoJCQkJCQkJdGhvdWdodHM6IDE3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3Mgc2VlIHdoYXQgd2UmIzM5O3JlIGRlYWxpbmcgd2l0aCBoZXJlLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gc2tpcCBhaGVhZCBhbmQgbG9vayBmb3IgdGhlIGBmYWlsOmAgbGFiZWwsIGJlY2F1c2UgdGhlIG1lcmUgbWVudGlvbiBvZiBpdCB0ZWxscyBtZSBzb21ldGhpbmcgYWJvdXQgdGhlIGxvZ2ljIGZsb3cuIEl0IHN1Z2dlc3RzIGFuIGVhcmx5IGV4aXQgY29uZGl0aW9uLCBwcm9iYWJseSBzb21ldGhpbmcgdGhhdCBpbmRpY2F0ZXMgYW4gdW5zdWNjZXNzZnVsIG9wZXJhdGlvbi4gVGhpcyBjb250ZXh0IGdpdmVzIG1lIGEgc3RhcnRpbmcgcG9pbnQgdG8gYmVnaW4gdG8gdW5kZXJzdGFuZCB0aGUgZnVuY3Rpb24gYXMgYSB3aG9sZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yMCAwNjoyMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjEwMC5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogNjIyMCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAxMDAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7NjIyMDpcdFxuNjIyMTpcdFx0cHJpbnRrKEtFUk5fSU5GTyBEUlZfTkFNRVxuNjIyMjpcdFx0ICAgICAgIFwmIzM0OzogRGV0ZWN0ZWQgSW50ZWwgUFJPL1dpcmVsZXNzIDIxMDAgTmV0d29yayBDb25uZWN0aW9uXFxuXCYjMzQ7KTtcbjYyMjM6XHRcbjYyMjQ6XHRcdGVyciA9IGlwdzIxMDBfdXAocHJpdiwgMSk7XG42MjI1Olx0XHRpZiAoZXJyKVxuNjIyNjpcdFx0XHRnb3RvIGZhaWw7XG42MjI3Olx0XG42MjI4Olx0XHRlcnIgPSBpcHcyMTAwX3dkZXZfaW5pdChkZXYpO1xuNjIyOTpcdFx0aWYgKGVycilcbjYyMzA6XHRcdFx0Z290byBmYWlsO1xuNjIzMTpcdFx0cmVnaXN0ZXJlZCA9IDE7XG42MjMyOlx0XG42MjMzOlx0XHQvKiBCcmluZyB1cCB0aGUgaW50ZXJmYWNlLiAgUHJlIDAuNDYsIGFmdGVyIHdlIHJlZ2lzdGVyZWQgdGhlXG42MjM0Olx0XHQgKiBuZXR3b3JrIGRldmljZSB3ZSB3b3VsZCBjYWxsIGlwdzIxMDBfdXAuICBUaGlzIGludHJvZHVjZWQgYSByYWNlXG42MjM1Olx0XHQgKiBjb25kaXRpb24gd2l0aCBuZXdlciBob3RwbHVnIGNvbmZpZ3VyYXRpb25zIChuZXR3b3JrIHdhcyBjb21pbmdcbjYyMzY6XHRcdCAqIHVwIGFuZCBtYWtpbmcgY2FsbHMgYmVmb3JlIHRoZSBkZXZpY2Ugd2FzIGluaXRpYWxpemVkKS5cbjYyMzc6XHRcdCAqL1xuNjIzODpcdFx0ZXJyID0gcmVnaXN0ZXJfbmV0ZGV2KGRldik7XG42MjM5Olx0XHRpZiAoZXJyKSB7XG42MjQwOlx0XHRcdHByaW50ayhLRVJOX1dBUk5JTkcgRFJWX05BTUVcbjYyNDE6XHRcdFx0ICAgICAgIFwmIzM0O0Vycm9yIGNhbGxpbmcgcmVnaXN0ZXJfbmV0ZGV2LlxcblwmIzM0Oyk7XG42MjQyOlx0XHRcdGdvdG8gZmFpbDtcbjYyNDM6XHRcdH1cbjYyNDQ6XHRcdHJlZ2lzdGVyZWQgPSAyO1xuNjI0NTpcdFxuNjI0NjpcdFx0bXV0ZXhfbG9jayhcdTAwMjZwcml2LVx1MDAzZWFjdGlvbl9tdXRleCk7XG42MjQ3Olx0XG42MjQ4Olx0XHRJUFdfREVCVUdfSU5GTyhcJiMzNDslczogQm91bmQgdG8gJXNcXG5cJiMzNDssIGRldi1cdTAwM2VuYW1lLCBwY2lfbmFtZShwY2lfZGV2KSk7XG42MjQ5Olx0XG42MjUwOlx0XHQvKiBwZXJmb3JtIHRoaXMgYWZ0ZXIgcmVnaXN0ZXJfbmV0ZGV2IHNvIHRoYXQgZGV2LVx1MDAzZW5hbWUgaXMgc2V0ICovXG42MjUxOlx0XHRlcnIgPSBzeXNmc19jcmVhdGVfZ3JvdXAoXHUwMDI2cGNpX2Rldi1cdTAwM2VkZXYua29iaiwgXHUwMDI2aXB3MjEwMF9hdHRyaWJ1dGVfZ3JvdXApO1xuNjI1MjpcdFx0aWYgKGVycilcbjYyNTM6XHRcdFx0Z290byBmYWlsX3VubG9jaztcbjYyNTQ6XHRcbjYyNTU6XHRcdC8qIElmIHRoZSBSRiBLaWxsIHN3aXRjaCBpcyBkaXNhYmxlZCwgZ28gYWhlYWQgYW5kIGNvbXBsZXRlIHRoZVxuNjI1NjpcdFx0ICogc3RhcnR1cCBzZXF1ZW5jZSAqL1xuNjI1NzpcdFx0aWYgKCEocHJpdi1cdTAwM2VzdGF0dXMgXHUwMDI2IFNUQVRVU19SRl9LSUxMX01BU0spKSB7XG42MjU4Olx0XHRcdC8qIEVuYWJsZSB0aGUgYWRhcHRlciAtIHNlbmRzIEhPU1RfQ09NUExFVEUgKi9cbjYyNTk6XHRcdFx0aWYgKGlwdzIxMDBfZW5hYmxlX2FkYXB0ZXIocHJpdikpIHtcbjYyNjA6XHRcdFx0XHRwcmludGsoS0VSTl9XQVJOSU5HIERSVl9OQU1FXG42MjYxOlx0XHRcdFx0ICAgICAgIFwmIzM0OzogJXM6IGZhaWxlZCBpbiBjYWxsIHRvIGVuYWJsZSBhZGFwdGVyLlxcblwmIzM0OyxcbjYyNjI6XHRcdFx0XHQgICAgICAgcHJpdi1cdTAwM2VuZXRfZGV2LVx1MDAzZW5hbWUpO1xuNjI2MzpcdFx0XHRcdGlwdzIxMDBfaHdfc3RvcF9hZGFwdGVyKHByaXYpO1xuNjI2NDpcdFx0XHRcdGVyciA9IC1FSU87XG42MjY1Olx0XHRcdFx0Z290byBmYWlsX3VubG9jaztcbjYyNjY6XHRcdFx0fVxuNjI2NzpcdFxuNjI2ODpcdFx0XHQvKiBTdGFydCBhIHNjYW4gLiAuIC4gKi9cbjYyNjk6XHRcdFx0aXB3MjEwMF9zZXRfc2Nhbl9vcHRpb25zKHByaXYpO1xuNjI3MDpcdFx0XHRpcHcyMTAwX3N0YXJ0X3NjYW4ocHJpdik7XG42MjcxOlx0XHR9XG42MjcyOlx0XG42MjczOlx0XHRJUFdfREVCVUdfSU5GTyhcJiMzNDtleGl0XFxuXCYjMzQ7KTtcbjYyNzQ6XHRcbjYyNzU6XHRcdHByaXYtXHUwMDNlc3RhdHVzIHw9IFNUQVRVU19JTklUSUFMSVpFRDtcbjYyNzY6XHRcbjYyNzc6XHRcdG11dGV4X3VubG9jayhcdTAwMjZwcml2LVx1MDAzZWFjdGlvbl9tdXRleCk7XG42Mjc4Olx0b3V0OlxuNjI3OTpcdFx0cmV0dXJuIGVycjtcbjYyODA6XHRcbjYyODE6XHQgICAgICBmYWlsX3VubG9jazpcbjYyODI6XHRcdG11dGV4X3VubG9jayhcdTAwMjZwcml2LVx1MDAzZWFjdGlvbl9tdXRleCk7XG42MjgzOlx0ICAgICAgZmFpbDpcbjYyODQ6XHRcdGlmIChkZXYpIHtcbjYyODU6XHRcdFx0aWYgKHJlZ2lzdGVyZWQgXHUwMDNlPSAyKVxuNjI4NjpcdFx0XHRcdHVucmVnaXN0ZXJfbmV0ZGV2KGRldik7XG42Mjg3Olx0XG42Mjg4Olx0XHRcdGlmIChyZWdpc3RlcmVkKSB7XG42Mjg5Olx0XHRcdFx0d2lwaHlfdW5yZWdpc3Rlcihwcml2LVx1MDAzZWllZWUtXHUwMDNld2Rldi53aXBoeSk7XG42MjkwOlx0XHRcdFx0a2ZyZWUocHJpdi1cdTAwM2VpZWVlLVx1MDAzZWJnX2JhbmQuY2hhbm5lbHMpO1xuNjI5MTpcdFx0XHR9XG42MjkyOlx0XG42MjkzOlx0XHRcdGlwdzIxMDBfaHdfc3RvcF9hZGFwdGVyKHByaXYpO1xuNjI5NDpcdFxuNjI5NTpcdFx0XHRpcHcyMTAwX2Rpc2FibGVfaW50ZXJydXB0cyhwcml2KTtcbjYyOTY6XHRcbjYyOTc6XHRcdFx0aWYgKGRldi1cdTAwM2VpcnEpXG42Mjk4Olx0XHRcdFx0ZnJlZV9pcnEoZGV2LVx1MDAzZWlycSwgcHJpdik7XG42Mjk5Olx0XG42MzAwOlx0XHRcdGlwdzIxMDBfa2lsbF93b3Jrcyhwcml2KTtcbjYzMDE6XHRcbjYzMDI6XHRcdFx0LyogVGhlc2UgYXJlIHNhZmUgdG8gY2FsbCBldmVuIGlmIHRoZXkgd2VyZW4mIzM5O3QgYWxsb2NhdGVkICovXG42MzAzOlx0XHRcdGlwdzIxMDBfcXVldWVzX2ZyZWUocHJpdik7XG42MzA0Olx0XHRcdHN5c2ZzX3JlbW92ZV9ncm91cChcdTAwMjZwY2lfZGV2LVx1MDAzZWRldi5rb2JqLFxuNjMwNTpcdFx0XHRcdFx0ICAgXHUwMDI2aXB3MjEwMF9hdHRyaWJ1dGVfZ3JvdXApO1xuNjMwNjpcdFxuNjMwNzpcdFx0XHRmcmVlX2xpYmlwdyhkZXYsIDApO1xuNjMwODpcdFx0fVxuNjMwOTpcdFxuNjMxMDpcdFx0cGNpX2lvdW5tYXAocGNpX2RldiwgaW9hZGRyKTtcbjYzMTE6XHRcbjYzMTI6XHRcdHBjaV9yZWxlYXNlX3JlZ2lvbnMocGNpX2Rldik7XG42MzEzOlx0XHRwY2lfZGlzYWJsZV9kZXZpY2UocGNpX2Rldik7XG42MzE0Olx0XHRnb3RvIG91dDtcbjYzMTU6XHR9XG42MzE2Olx0XG42MzE3Olx0c3RhdGljIHZvaWQgaXB3MjEwMF9wY2lfcmVtb3ZlX29uZShzdHJ1Y3QgcGNpX2RldiAqcGNpX2RldilcbjYzMTg6XHR7XG42MzE5Olx0XHRzdHJ1Y3QgaXB3MjEwMF9wcml2ICpwcml2ID0gcGNpX2dldF9kcnZkYXRhKHBjaV9kZXYpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzIwIDA2OjIyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDY0MDkKCQkJCQkJCW91dHB1dDogNDQKCQkJCQkJCXRob3VnaHRzOiA5NDMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgUENJIERyaXZlciBJbml0aWFsaXphdGlvbiBCdWcgRml4KioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGZvciB0aGUgYGlwdzIxMDBgIGRyaXZlci4gSXQgYXBwZWFycyB0byBiZSBhZGRyZXNzaW5nIHJlc291cmNlIGxlYWtzIHdpdGhpbiB0aGUgYGlwdzIxMDBfcGNpX2luaXRfb25lYCBmdW5jdGlvbi4gU3BlY2lmaWNhbGx5LCB0aGUgb3JpZ2luYWwgY29kZSBoYWQgdGhlc2UgZXJyb3IgcGF0aHMgdGhhdCB3ZXJlIGluY29tcGxldGU6IGlmIGBwY2lfZW5hYmxlX2RldmljZWAsIGBkbWFfc2V0X21hc2tgLCBvciBgcGNpX3JlcXVlc3RfcmVnaW9uc2AgZmFpbGVkLCB0aGUgY29kZSB3b3VsZCBqdXN0IGByZXR1cm5gIHByZW1hdHVyZWx5LiBUaGlzIG1lYW50IHRoYXQgdGhlIGRyaXZlciB3b3VsZCBsZWFrIGFsbG9jYXRlZCByZXNvdXJjZXMg4oCTIHRoZSBgaW9hZGRyYCBtYXBwZWQgd2l0aCBgcGNpX2lvbWFwYCwgYW5kIHRoZSBuZXR3b3JrIGRldmljZSBgZGV2YCBhbGxvY2F0ZWQgdmlhIGBpcHcyMTAwX2FsbG9jX2RldmljZWAuCgpUaGlzIHBhdGNoIGlzIGEgc3RyYWlnaHRmb3J3YXJkIGZpeCwgaXQgc2VlbXMuIEJ5IGNoYW5naW5nIHRoZXNlIHJldHVybiBzdGF0ZW1lbnRzIHRvIGBnb3RvIGZhaWw7YCwgaXQgZW5zdXJlcyB0aGUgY29kZSBleGVjdXRlcyB0aGUgY2xlYW51cCBibG9jayBsYWJlbGxlZCBgZmFpbGAuIFRoZSBgZmFpbGAgbGFiZWwgY29udGFpbnMgYWxsIHRoZSBuZWNlc3NhcnkgY2xlYW51cCBzdGVwczogIGBmcmVlX2xpYmlwdyhkZXYsIDApO2AsIGBwY2lfaW91bm1hcChwY2lfZGV2LCBpb2FkZHIpO2AsIGBwY2lfcmVsZWFzZV9yZWdpb25zKHBjaV9kZXYpO2AsIGFuZCBgcGNpX2Rpc2FibGVfZGV2aWNlKHBjaV9kZXYpO2AuIEJhc2ljYWxseSwgaXQgbm93IHJlbGVhc2VzIGV2ZXJ5dGhpbmcgcHJvcGVybHkuIFNvLCB0aGlzIGlzIGEgcHJldHR5IGNsZWFyIG1lbW9yeS9yZXNvdXJjZSBsZWFrIGZpeC4KCk5vdywgdGhlIHF1ZXN0aW9uIGlzLCBzaG91bGQgSSBmdXp6IHRoaXM/IEl0JiMzOTtzIGEgUENJIGRldmljZSBkcml2ZXIgaW5pdGlhbGl6YXRpb24sIHdoaWNoIG1ha2VzIGl0IGFuIGludGVyZXN0aW5nIHRhcmdldC4gSXQgKnNob3VsZCogYmUgcmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cywgYXNzdW1pbmcgd2UgY2FuIGVtdWxhdGUgYSBQQ0kgZGV2aWNlIG9yIGxldmVyYWdlIHN5emthbGxlciYjMzk7cyBQQ0kgZnV6emluZyBjYXBhYmlsaXRpZXMuICBTeXprYWxsZXIgKmRvZXMqIGhhdmUgUENJIGZ1enppbmcgc3VwcG9ydDsgSSYjMzk7dmUgdXNlZCBpdCBiZWZvcmUsIGluY2x1ZGluZyB0aGUgYHN5el9wY2lfZGV2aWNlX2FkZGAgY2FsbC4gSG93ZXZlciwgdGhpcyBpcyBhbiBvbGQgZHJpdmVyLCBJbnRlbCBQUk8vV2lyZWxlc3MgMjEwMC4gU28gSSYjMzk7bGwgbmVlZCB0byBkb3VibGUgY2hlY2sgdGhlIEtjb25maWcgZm9yIGl0LiBUaGlzIHdpbGwgaGVscCBkZXRlcm1pbmUgaWYgaXQmIzM5O3MgZXZlbiBjb25maWd1cmVkIGFuZCBpZiBpdCBpcyBzdXBwb3J0ZWQgdG8gYmVnaW4gd2l0aC4gIExldCBtZSBxdWlja2x5IHZlcmlmeS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjAgMDY6MjI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIElQVzIxMDAmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9LY29uZmlnLTUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL0tjb25maWc6Njpjb25maWcgSVBXMjEwMFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9LY29uZmlnLTctXHR0cmlzdGF0ZSBcJiMzNDtJbnRlbCBQUk8vV2lyZWxlc3MgMjEwMCBOZXR3b3JrIENvbm5lY3Rpb25cJiMzNDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL0tjb25maWctMzgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL0tjb25maWc6Mzk6Y29uZmlnIElQVzIxMDBfTU9OSVRPUlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9LY29uZmlnLTQwLVx0Ym9vbCBcJiMzNDtFbmFibGUgcHJvbWlzY3VvdXMgbW9kZVwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvS2NvbmZpZy00Ny1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvS2NvbmZpZzo0ODpjb25maWcgSVBXMjEwMF9ERUJVR1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9LY29uZmlnLTQ5LVx0Ym9vbCBcJiMzNDtFbmFibGUgZnVsbCBkZWJ1Z2dpbmcgb3V0cHV0IGluIElQVzIxMDAgbW9kdWxlLlwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yMCAwNjoyMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4MTA2CgkJCQkJCQlvdXRwdXQ6IDU2CgkJCQkJCQl0aG91Z2h0czogNzQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBJUFcyMTAwIEluaXRpYWxpemF0aW9uKioKCk9rYXksIHNvIHRoZSBjb2RlIEkmIzM5O20gbG9va2luZyBhdCByZXZvbHZlcyBhcm91bmQgdGhlIGNvbmZpZ3VyYXRpb24gZm9yIHRoZSBgSVBXMjEwMGAgZGV2aWNlLiBNeSBmb2N1cyBpcyBvbiB0aGUgYGlwdzIxMDBfcGNpX2luaXRfb25lYCBmdW5jdGlvbiwgbmF0dXJhbGx5LiBUaGUga2V5IHF1ZXN0aW9uIGluIG15IG1pbmQgaXM6IGNhbiBJIGdldCB0aGlzIGZ1bmN0aW9uIHRvIGV4ZWN1dGU/IFRoZSBvYnZpb3VzIGFuc3dlciBpcyB5ZXMuIEl0IGxvb2tzIGxpa2UgdGhlIG1vc3QgZGlyZWN0IGFwcHJvYWNoIHdvdWxkIGJlIHRvIGluamVjdCBhIFBDSSBkZXZpY2UgdGhhdCBoYXMgdGhlIGNvcnJlY3QgdmVuZG9yIGFuZCBkZXZpY2UgSURzIHRvIHRyaWdnZXIgaXQuIFNvLCBsZXQmIzM5O3MgdHJhY2sgZG93biB0aG9zZSBQQ0kgSURzIGZvciB0aGUgYGlwdzIxMDBgIHNwZWNpZmljYWxseSwgdGhhdCYjMzk7cyB3aGVyZSBJIG5lZWQgdG8gc3RhcnQgbXkgaW52ZXN0aWdhdGlvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjAgMDY6MjM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7aXB3MjEwMF9wY2lfaWRfdGFibGUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIxMDAuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIxMDAuYz02NDI5PXN0YXRpYyB2b2lkIGlwdzIxMDBfc2h1dGRvd24oc3RydWN0IHBjaV9kZXYgKnBjaV9kZXYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMTAwLmMtNjQ0MC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjEwMC5jOjY0NDE6c3RhdGljIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkIGlwdzIxMDBfcGNpX2lkX3RhYmxlW10gPSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIxMDAuYy02NDQyLVx0SVBXMjEwMF9ERVZfSUQoMHgyNTIwKSxcdC8qIElOIDIxMDBBIG1QQ0kgM0EgKi9cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIxMDAuYy02NDkwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMTAwLmM6NjQ5MTpNT0RVTEVfREVWSUNFX1RBQkxFKHBjaSwgaXB3MjEwMF9wY2lfaWRfdGFibGUpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMTAwLmMtNjQ5Mi1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIxMDAuYz02NDk1PXN0YXRpYyBzdHJ1Y3QgcGNpX2RyaXZlciBpcHcyMTAwX3BjaV9kcml2ZXIgPSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIxMDAuYy02NDk2LVx0Lm5hbWUgPSBEUlZfTkFNRSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjEwMC5jOjY0OTc6XHQuaWRfdGFibGUgPSBpcHcyMTAwX3BjaV9pZF90YWJsZSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjEwMC5jLTY0OTgtXHQucHJvYmUgPSBpcHcyMTAwX3BjaV9pbml0X29uZSxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjAgMDY6MjM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogODg5OAoJCQkJCQkJb3V0cHV0OiA0MwoJCQkJCQkJdGhvdWdodHM6IDQ2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRha2Ugb24gdGhlIHRob3VnaHQgcHJvY2VzczoKCioqRnV6emluZyBQQ0kgRGV2aWNlcyB3aXRoIFN5emthbGxlcioqCgpPa2F5LCBzbyBJJiMzOTttIHRoaW5raW5nIGFib3V0IGZ1enppbmcgc29tZSBQQ0kgZGV2aWNlcyB1c2luZyBTeXprYWxsZXIuIEl0IGxvb2tzIGxpa2UgaXQgY2FuIGRvIHRoaXMgYnkgc2ltdWxhdGluZyB0aGUgZGV2aWNlcyB0aGVtc2VsdmVzLCB3aGljaCBpcyBwcmV0dHkgbmVhdC4gVGhlIGRvY3VtZW50YXRpb24gcG9pbnRzIHRvIGVuYWJsaW5nIHRoZSBgSVBXMjEwMGAgY29uZmlnIG9wdGlvbiB0byBnZXQgdGhpcyBmdW5jdGlvbmFsaXR5IGdvaW5nLiBCdXQgaG9sZCBvbiwgYmVmb3JlIEkgZGl2ZSBpbiB0b28gZGVlcCwgbGV0JiMzOTtzIGp1c3QgZG91YmxlLWNoZWNrIGlmIGVuYWJsaW5nIHRoYXQgb3B0aW9uIGhhcyBhbnkgdW5kZXJseWluZyBkZXBlbmRlbmNpZXMuIEdvdHRhIG1ha2Ugc3VyZSBJIGhhdmUgYWxsIHRoZSBwaWVjZXMgaW4gcGxhY2UgYmVmb3JlIEkgc3RhcnQuIFdvdWxkbiYjMzk7dCB3YW50IHRvIHdhc3RlIHRpbWUgY2hhc2luZyBkb3duIG1pc3NpbmcgY29tcG9uZW50cyBsYXRlci4gR290dGEgYmUgdGhvcm91Z2guCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzIwIDA2OjIzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAyMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgICAxOlx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG4gICAyOlx0I1xuICAgMzpcdCMgSW50ZWwgQ2VudHJpbm8gd2lyZWxlc3MgZHJpdmVyc1xuICAgNDpcdCNcbiAgIDU6XHRcbiAgIDY6XHRjb25maWcgSVBXMjEwMFxuICAgNzpcdFx0dHJpc3RhdGUgXCYjMzQ7SW50ZWwgUFJPL1dpcmVsZXNzIDIxMDAgTmV0d29yayBDb25uZWN0aW9uXCYjMzQ7XG4gICA4Olx0XHRkZXBlbmRzIG9uIFBDSSBcdTAwMjZcdTAwMjYgQ0ZHODAyMTFcbiAgIDk6XHRcdHNlbGVjdCBXSVJFTEVTU19FWFRcbiAgMTA6XHRcdHNlbGVjdCBXRVhUX1BSSVZcbiAgMTE6XHRcdHNlbGVjdCBGV19MT0FERVJcbiAgMTI6XHRcdHNlbGVjdCBMSUJJUFdcbiAgMTM6XHRcdGhlbHBcbiAgMTQ6XHRcdCAgQSBkcml2ZXIgZm9yIHRoZSBJbnRlbCBQUk8vV2lyZWxlc3MgMjEwMCBOZXR3b3JrXG4gIDE1Olx0XHQgIENvbm5lY3Rpb24gODAyLjExYiB3aXJlbGVzcyBuZXR3b3JrIGFkYXB0ZXIuXG4gIDE2Olx0XG4gIDE3Olx0XHQgIFNlZSBcdTAwM2NmaWxlOkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9kZXZpY2VfZHJpdmVycy93aWZpL2ludGVsL2lwdzIxMDAucnN0XHUwMDNlXG4gIDE4Olx0XHQgIGZvciBpbmZvcm1hdGlvbiBvbiB0aGUgY2FwYWJpbGl0aWVzIGN1cnJlbnRseSBlbmFibGVkIGluIHRoaXMgZHJpdmVyXG4gIDE5Olx0XHQgIGFuZCBmb3IgdGlwcyBmb3IgZGVidWdnaW5nIGlzc3VlcyBhbmQgcHJvYmxlbXMuXG4gIDIwOlx0XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzIwIDA2OjIzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDk0MDMKCQkJCQkJCW91dHB1dDogMTAzCgkJCQkJCQl0aG91Z2h0czogMjI2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgUG90ZW50aWFsIEltcGFjdCBvZiBhIFBDSSBEcml2ZXIgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIGltbWVkaWF0ZWx5LCBteSBtaW5kIGp1bXBzIHRvIHRoZSBkZXBlbmRlbmNpZXM6IGBQQ0lgIGFuZCBgQ0ZHODAyMTFgLiBUaGF0JiMzOTtzIHdoZXJlIEkgbmVlZCB0byBzdGFydC4gVGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9uIHdlJiMzOTtsbCBuZWVkIHRvIGVuYWJsZSB0byB0ZXN0IHRoaXMgaXMgYElQVzIxMDBgLgoKVGhlIG1lYXQgb2YgaXQgc2VlbXMgdG8gYmUgYSBmaXggZm9yIGEgcmVzb3VyY2UgbGVhayB3aXRoaW4gdGhlIGVycm9yIGhhbmRsaW5nIG9mIHRoZSBQQ0kgcHJvYmUgZnVuY3Rpb24uIFRoYXQmIzM5O3MgaW50ZXJlc3RpbmcsIGFuZCBiZWNhdXNlIGl0JiMzOTtzIGZ1bmN0aW9uYWwsIGl0IGFic29sdXRlbHkgaGFzIGEgY2hhbmNlIHRvIGJlIHRyaWdnZXJlZCBieSBmdXp6aW5nLCBzcGVjaWZpY2FsbHkgc3l6a2FsbGVyJiMzOTtzIFBDSSBmdXp6aW5nLiBUaGUga2V5IGZ1bmN0aW9uIGhlcmUgaXMgY2xlYXJseSBgaXB3MjEwMF9wY2lfaW5pdF9vbmVgLgoKSnVzdCB0byBiZSB0aG9yb3VnaCwgSSYjMzk7bGwgcXVpY2tseSBjaGVjayBmb3IgYW55IG90aGVyIG1vZGlmaWVkIGZ1bmN0aW9ucywgYnV0IGl0IGxvb2tzIGxpa2UgYGlwdzIxMDBfcGNpX2luaXRfb25lYCBpcyB0aGUgb25seSBvbmUuIEdvb2QuCgpBbHJpZ2h0LCBsZXQmIzM5O3Mgc3VtbWFyaXplIG15IGZpbmRpbmdzLiBJJiMzOTtsbCBub3RlIHRoZXNlIGRvd24gZm9yIGNsYXJpdHk6CgoqICAgKipXb3J0aEZ1enppbmc6KiogVHJ1ZSAtIHRoaXMgaXMgYSBkZWZpbml0ZSBjYW5kaWRhdGUuCiogICAqKkZvY3VzU3ltYm9sczoqKiBgWyYjMzQ7aXB3MjEwMF9wY2lfaW5pdF9vbmUmIzM0O11gIC0gcGlucG9pbnQgdGhhdCBmdW5jdGlvbi4KKiAgICoqRW5hYmxlQ29uZmlnczoqKiBgWyYjMzQ7SVBXMjEwMCYjMzQ7XWAgLSB0aGUgcHJlcmVxdWlzaXRlIHRvIGdldCBoZXJlLgoqICAgKipSZWFzb25pbmc6KiogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgcmVzb3VyY2UgbGVha3MgaW4gdGhlIGVycm9yIHBhdGhzIG9mIHRoZSBQQ0kgcHJvYmUgZnVuY3Rpb24gYGlwdzIxMDBfcGNpX2luaXRfb25lYC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRoYXQgY2FuIGJlIHRyaWdnZXJlZCBieSBzeXprYWxsZXImIzM5O3MgUENJIGRldmljZSBmdXp6aW5nLiYjMzQ7CgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzIwIDA2OjIzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtJUFcyMTAwJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7aXB3MjEwMF9wY2lfaW5pdF9vbmUmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgcmVzb3VyY2UgbGVha3MgaW4gdGhlIGVycm9yIHBhdGhzIG9mIHRoZSBQQ0kgcHJvYmUgZnVuY3Rpb24gYGlwdzIxMDBfcGNpX2luaXRfb25lYC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRoYXQgY2FuIGJlIHRyaWdnZXJlZCBieSBzeXprYWxsZXImIzM5O3MgUENJIGRldmljZSBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtJUFcyMTAwJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7aXB3MjEwMF9wY2lfaW5pdF9vbmUmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgcmVzb3VyY2UgbGVha3MgaW4gdGhlIGVycm9yIHBhdGhzIG9mIHRoZSBQQ0kgcHJvYmUgZnVuY3Rpb24gYGlwdzIxMDBfcGNpX2luaXRfb25lYC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRoYXQgY2FuIGJlIHRyaWdnZXJlZCBieSBzeXprYWxsZXImIzM5O3MgUENJIGRldmljZSBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDYtMjBUMDY6MjI6MzguNzQ0Nzc0NjQ1WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzI3ODAyMTUzMjMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiSVBXMjEwMFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImlwdzIxMDBfcGNpX2luaXRfb25lXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgcmVzb3VyY2UgbGVha3MgaW4gdGhlIGVycm9yIHBhdGhzIG9mIHRoZSBQQ0kgcHJvYmUgZnVuY3Rpb24gYGlwdzIxMDBfcGNpX2luaXRfb25lYC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRoYXQgY2FuIGJlIHRyaWdnZXJlZCBieSBzeXprYWxsZXIncyBQQ0kgZGV2aWNlIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTIwVDA2OjIyOjM4Ljc0NDc4MDQ5NVoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDU3NjI0MTMxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgZDlkYmQwMmE5MTRiMWIwZWFhYTE2NzZiNTRhODk4MTczYmFkYmI3OVxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgU2F0IEp1biAyMCAwNjoyMjozNyAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIxMDAuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjEwMC5jXFxuaW5kZXggYzExNDI4NDg1ZGNjZjUuLjgyMjgwODkwZjFjMGU3IDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjEwMC5jXFxuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMTAwLmNcXG5AQCAtNjE1Nyw3ICs2MTU3LDcgQEAgc3RhdGljIGludCBpcHcyMTAwX3BjaV9pbml0X29uZShzdHJ1Y3QgcGNpX2RldiAqcGNpX2RldixcXG4gXFx0aWYgKGVycikge1xcbiBcXHRcXHRwcmludGsoS0VSTl9XQVJOSU5HIERSVl9OQU1FXFxuIFxcdFxcdCAgICAgICBcXFwiRXJyb3IgY2FsbGluZyBwY2lfZW5hYmxlX2RldmljZS5cXFxcblxcXCIpO1xcbi1cXHRcXHRyZXR1cm4gZXJyO1xcbitcXHRcXHRnb3RvIGZhaWw7XFxuIFxcdH1cXG4gXFxuIFxcdHByaXYgPSBsaWJpcHdfcHJpdihkZXYpO1xcbkBAIC02MTY5LDE2ICs2MTY5LDE0IEBAIHN0YXRpYyBpbnQgaXB3MjEwMF9wY2lfaW5pdF9vbmUoc3RydWN0IHBjaV9kZXYgKnBjaV9kZXYsXFxuIFxcdGlmIChlcnIpIHtcXG4gXFx0XFx0cHJpbnRrKEtFUk5fV0FSTklORyBEUlZfTkFNRVxcbiBcXHRcXHQgICAgICAgXFxcIkVycm9yIGNhbGxpbmcgcGNpX3NldF9kbWFfbWFzay5cXFxcblxcXCIpO1xcbi1cXHRcXHRwY2lfZGlzYWJsZV9kZXZpY2UocGNpX2Rldik7XFxuLVxcdFxcdHJldHVybiBlcnI7XFxuK1xcdFxcdGdvdG8gZmFpbDtcXG4gXFx0fVxcbiBcXG4gXFx0ZXJyID0gcGNpX3JlcXVlc3RfcmVnaW9ucyhwY2lfZGV2LCBEUlZfTkFNRSk7XFxuIFxcdGlmIChlcnIpIHtcXG4gXFx0XFx0cHJpbnRrKEtFUk5fV0FSTklORyBEUlZfTkFNRVxcbiBcXHRcXHQgICAgICAgXFxcIkVycm9yIGNhbGxpbmcgcGNpX3JlcXVlc3RfcmVnaW9ucy5cXFxcblxcXCIpO1xcbi1cXHRcXHRwY2lfZGlzYWJsZV9kZXZpY2UocGNpX2Rldik7XFxuLVxcdFxcdHJldHVybiBlcnI7XFxuK1xcdFxcdGdvdG8gZmFpbDtcXG4gXFx0fVxcbiBcXG4gXFx0LyogV2UgZGlzYWJsZSB0aGUgUkVUUllfVElNRU9VVCByZWdpc3RlciAoMHg0MSkgdG8ga2VlcFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yMFQwNjoyMjozOS4yMDMxOTUwMjZaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMyMzIxNzg0NjEyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIklQVzIxMDBcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJpcHcyMTAwX3BjaV9pbml0X29uZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIHJlc291cmNlIGxlYWtzIGluIHRoZSBlcnJvciBwYXRocyBvZiB0aGUgUENJIHByb2JlIGZ1bmN0aW9uIGBpcHcyMTAwX3BjaV9pbml0X29uZWAuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0aGF0IGNhbiBiZSB0cmlnZ2VyZWQgYnkgc3l6a2FsbGVyJ3MgUENJIGRldmljZSBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG5ldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0XG4gICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksXG4gICBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IGQ5ZGJkMDJhOTE0YjFiMGVhYWExNjc2YjU0YTg5ODE3M2JhZGJiNzlcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgU2F0IEp1biAyMCAwNjoyMjozNyAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjEwMC5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMTAwLmNcbmluZGV4IGMxMTQyODQ4NWRjY2Y1Li44MjI4MDg5MGYxYzBlNyAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjEwMC5jXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIxMDAuY1xuQEAgLTYxNTcsNyArNjE1Nyw3IEBAIHN0YXRpYyBpbnQgaXB3MjEwMF9wY2lfaW5pdF9vbmUoc3RydWN0IHBjaV9kZXYgKnBjaV9kZXYsXG4gXHRpZiAoZXJyKSB7XG4gXHRcdHByaW50ayhLRVJOX1dBUk5JTkcgRFJWX05BTUVcbiBcdFx0ICAgICAgIFwiRXJyb3IgY2FsbGluZyBwY2lfZW5hYmxlX2RldmljZS5cXG5cIik7XG4tXHRcdHJldHVybiBlcnI7XG4rXHRcdGdvdG8gZmFpbDtcbiBcdH1cbiBcbiBcdHByaXYgPSBsaWJpcHdfcHJpdihkZXYpO1xuQEAgLTYxNjksMTYgKzYxNjksMTQgQEAgc3RhdGljIGludCBpcHcyMTAwX3BjaV9pbml0X29uZShzdHJ1Y3QgcGNpX2RldiAqcGNpX2RldixcbiBcdGlmIChlcnIpIHtcbiBcdFx0cHJpbnRrKEtFUk5fV0FSTklORyBEUlZfTkFNRVxuIFx0XHQgICAgICAgXCJFcnJvciBjYWxsaW5nIHBjaV9zZXRfZG1hX21hc2suXFxuXCIpO1xuLVx0XHRwY2lfZGlzYWJsZV9kZXZpY2UocGNpX2Rldik7XG4tXHRcdHJldHVybiBlcnI7XG4rXHRcdGdvdG8gZmFpbDtcbiBcdH1cbiBcbiBcdGVyciA9IHBjaV9yZXF1ZXN0X3JlZ2lvbnMocGNpX2RldiwgRFJWX05BTUUpO1xuIFx0aWYgKGVycikge1xuIFx0XHRwcmludGsoS0VSTl9XQVJOSU5HIERSVl9OQU1FXG4gXHRcdCAgICAgICBcIkVycm9yIGNhbGxpbmcgcGNpX3JlcXVlc3RfcmVnaW9ucy5cXG5cIik7XG4tXHRcdHBjaV9kaXNhYmxlX2RldmljZShwY2lfZGV2KTtcbi1cdFx0cmV0dXJuIGVycjtcbitcdFx0Z290byBmYWlsO1xuIFx0fVxuIFxuIFx0LyogV2UgZGlzYWJsZSB0aGUgUkVUUllfVElNRU9VVCByZWdpc3RlciAoMHg0MSkgdG8ga2VlcFxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjBUMDY6MjI6MzkuMjAzMTk2NTM1WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzUwOTU0NDY1OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBXaXJlbGVzcyBEcml2ZXIgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGZvciBgZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMTAwLmNgLiBJdCBsb29rcyBsaWtlIGl0J3MgbWFraW5nIGEgc3VidGxlIGJ1dCBpbXBvcnRhbnQgY2hhbmdlIGluIGhvdyB0aGUgYGlwdzIxMDBfcGNpX2luaXRfb25lYCBmdW5jdGlvbiBoYW5kbGVzIGVycm9ycy4gU3BlY2lmaWNhbGx5LCBpdCdzIHN3YXBwaW5nIG91dCB0aGUgZGlyZWN0IHJldHVybnMgYW5kIGBwY2lfZGlzYWJsZV9kZXZpY2UocGNpX2RldilgIGNhbGxzIGZvciBhIGBnb3RvIGZhaWw7YCBhcHByb2FjaC4gSG1tLCBJIGtub3cgdGhhdCBmdW5jdGlvbjsgSSdsbCBuZWVkIHRvIGp1bXAgaW50byBgaXB3MjEwMF9wY2lfaW5pdF9vbmVgIGl0c2VsZiB0byBzZWUgZXhhY3RseSB3aGF0IHRoYXQgYGZhaWw6YCBsYWJlbCBpcyBkb2luZyB3aXRoaW4gdGhpcyBjb250ZXh0LiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0J3MgYmVpbmcgY2xlYW5lZCB1cCwgYW5kIG1ha2Ugc3VyZSB0aGF0IHRoaXMgaXMgYSBzYWZlIHJlZmFjdG9yaW5nIGFuZCBub3QgY3JlYXRpbmcgYW55IHJlZ3Jlc3Npb24gb3IgcG90ZW50aWFsIHJlc291cmNlIGxlYWsuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIxMDYsIk91dHB1dFRva2VucyI6NTYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMDksIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yMFQwNjoyMjo0Mi43MTI3NTI2MzNaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTYyMTA4OTksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiaXB3MjEwMF9wY2lfaW5pdF9vbmVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMTAwLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMTAwLmM9NTk5Nj1zdGF0aWMgc3RydWN0IG5ldF9kZXZpY2UgKmlwdzIxMDBfYWxsb2NfZGV2aWNlKHN0cnVjdCBwY2lfZGV2ICpwY2lfZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMTAwLmMtNjExOS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIxMDAuYzo2MTIwOnN0YXRpYyBpbnQgaXB3MjEwMF9wY2lfaW5pdF9vbmUoc3RydWN0IHBjaV9kZXYgKnBjaV9kZXYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMTAwLmMtNjEyMS1cXHRcXHRcXHRcXHRjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCAqZW50KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMTAwLmM9NjQ5NT1zdGF0aWMgc3RydWN0IHBjaV9kcml2ZXIgaXB3MjEwMF9wY2lfZHJpdmVyID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMTAwLmMtNjQ5Ny1cXHQuaWRfdGFibGUgPSBpcHcyMTAwX3BjaV9pZF90YWJsZSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIxMDAuYzo2NDk4OlxcdC5wcm9iZSA9IGlwdzIxMDBfcGNpX2luaXRfb25lLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjEwMC5jLTY0OTktXFx0LnJlbW92ZSA9IGlwdzIxMDBfcGNpX3JlbW92ZV9vbmUsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTIwVDA2OjIyOjQyLjc2ODk2OTYxMloiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMzNDkwMTcxMTEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBhbmFseXNpcyBvZiB3aGF0IEknbSBhYm91dCB0byBkbzpcblxuKipEaXZpbmcgaW50byB0aGUgaXB3MjEwMCBEcml2ZXIncyBQQ0kgSW5pdGlhbGl6YXRpb24qKlxuXG5Pa2F5LCBzbyBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlIEludGVsIElQVzIxMDAgd2lyZWxlc3MgZHJpdmVyIGluaXRpYWxpemVzIGEgUENJIGRldmljZS4gU2luY2UgSSdtIGZhbWlsaWFyIHdpdGggdGhpcyBhcmNoaXRlY3R1cmUsIEkgZmlndXJlIHRoZSBiZXN0IHBsYWNlIHRvIHN0YXJ0IGlzIHRoZSBgaXB3MjEwMC5jYCBmaWxlIHdpdGhpbiB0aGUgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDBgIGRpcmVjdG9yeS4gU3BlY2lmaWNhbGx5LCBJJ20gdGFyZ2V0aW5nIHRoZSBgaXB3MjEwMF9wY2lfaW5pdF9vbmVgIGZ1bmN0aW9uLCBhbmQgYmFzZWQgb24gbXkgbWVtb3J5IG9mIHNpbWlsYXIgZHJpdmVycywgaXQncyBsaWtlbHkgZGVmaW5lZCBhcm91bmQgbGluZSA2MTIwLiBUaGF0J3MgYSByZWFzb25hYmxlIHN0YXJ0aW5nIHBvaW50IHRvIGJlZ2luIHJldmVyc2UtZW5naW5lZXJpbmcgdGhlIGluaXRpYWxpemF0aW9uIHByb2Nlc3MuIFRoaXMgc2hvdWxkIGdpdmUgbWUgYSBzb2xpZCB2aWV3IGludG8gaG93IHRoZSBkZXZpY2UgaXMgZW51bWVyYXRlZCwgY29uZmlndXJlZCwgYW5kIGludGVncmF0ZWQgd2l0aCB0aGUgUENJIHN1YnN5c3RlbS4gSSBleHBlY3QgdG8gc2VlIHRoZSB0eXBpY2FsIFBDSSBwcm9iaW5nLCByZXNvdXJjZSBhbGxvY2F0aW9uLCBhbmQgcHJvYmFibHkgc29tZSBlYXJseSBmaXJtd2FyZSBsb2FkaW5nIG9yIGRldmljZSByZXNldCByb3V0aW5lcyB3aXRoaW4gdGhhdCBmdW5jdGlvbi4gVGltZSB0byBkaWcgaW4gYW5kIHNlZSBob3cgdGhlIG1hZ2ljIGhhcHBlbnMhXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI4NjAsIk91dHB1dFRva2VucyI6NTMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1OCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yMFQwNjoyMjo0Ni4xMTc5ODkyNTNaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyOTg5MjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMTAwLmNcIixcbiAgXCJGaXJzdExpbmVcIjogNjEyMCxcbiAgXCJMaW5lQ291bnRcIjogMTAwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIjYxMjA6XFx0c3RhdGljIGludCBpcHcyMTAwX3BjaV9pbml0X29uZShzdHJ1Y3QgcGNpX2RldiAqcGNpX2RldixcXG42MTIxOlxcdFxcdFxcdFxcdFxcdGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkICplbnQpXFxuNjEyMjpcXHR7XFxuNjEyMzpcXHRcXHR2b2lkIF9faW9tZW0gKmlvYWRkcjtcXG42MTI0OlxcdFxcdHN0cnVjdCBuZXRfZGV2aWNlICpkZXYgPSBOVUxMO1xcbjYxMjU6XFx0XFx0c3RydWN0IGlwdzIxMDBfcHJpdiAqcHJpdiA9IE5VTEw7XFxuNjEyNjpcXHRcXHRpbnQgZXJyID0gMDtcXG42MTI3OlxcdFxcdGludCByZWdpc3RlcmVkID0gMDtcXG42MTI4OlxcdFxcdHUzMiB2YWw7XFxuNjEyOTpcXHRcXG42MTMwOlxcdFxcdElQV19ERUJVR19JTkZPKFxcXCJlbnRlclxcXFxuXFxcIik7XFxuNjEzMTpcXHRcXG42MTMyOlxcdFxcdGlmICghKHBjaV9yZXNvdXJjZV9mbGFncyhwY2lfZGV2LCAwKSBcXHUwMDI2IElPUkVTT1VSQ0VfTUVNKSkge1xcbjYxMzM6XFx0XFx0XFx0SVBXX0RFQlVHX0lORk8oXFxcIndlaXJkIC0gcmVzb3VyY2UgdHlwZSBpcyBub3QgbWVtb3J5XFxcXG5cXFwiKTtcXG42MTM0OlxcdFxcdFxcdGVyciA9IC1FTk9ERVY7XFxuNjEzNTpcXHRcXHRcXHRnb3RvIG91dDtcXG42MTM2OlxcdFxcdH1cXG42MTM3OlxcdFxcbjYxMzg6XFx0XFx0aW9hZGRyID0gcGNpX2lvbWFwKHBjaV9kZXYsIDAsIDApO1xcbjYxMzk6XFx0XFx0aWYgKCFpb2FkZHIpIHtcXG42MTQwOlxcdFxcdFxcdHByaW50ayhLRVJOX1dBUk5JTkcgRFJWX05BTUVcXG42MTQxOlxcdFxcdFxcdCAgICAgICBcXFwiRXJyb3IgY2FsbGluZyBpb3JlbWFwLlxcXFxuXFxcIik7XFxuNjE0MjpcXHRcXHRcXHRlcnIgPSAtRUlPO1xcbjYxNDM6XFx0XFx0XFx0Z290byBmYWlsO1xcbjYxNDQ6XFx0XFx0fVxcbjYxNDU6XFx0XFxuNjE0NjpcXHRcXHQvKiBhbGxvY2F0ZSBhbmQgaW5pdGlhbGl6ZSBvdXIgbmV0X2RldmljZSAqL1xcbjYxNDc6XFx0XFx0ZGV2ID0gaXB3MjEwMF9hbGxvY19kZXZpY2UocGNpX2RldiwgaW9hZGRyKTtcXG42MTQ4OlxcdFxcdGlmICghZGV2KSB7XFxuNjE0OTpcXHRcXHRcXHRwcmludGsoS0VSTl9XQVJOSU5HIERSVl9OQU1FXFxuNjE1MDpcXHRcXHRcXHQgICAgICAgXFxcIkVycm9yIGNhbGxpbmcgaXB3MjEwMF9hbGxvY19kZXZpY2UuXFxcXG5cXFwiKTtcXG42MTUxOlxcdFxcdFxcdGVyciA9IC1FTk9NRU07XFxuNjE1MjpcXHRcXHRcXHRnb3RvIGZhaWw7XFxuNjE1MzpcXHRcXHR9XFxuNjE1NDpcXHRcXG42MTU1OlxcdFxcdC8qIHNldCB1cCBQQ0kgbWFwcGluZ3MgZm9yIGRldmljZSAqL1xcbjYxNTY6XFx0XFx0ZXJyID0gcGNpX2VuYWJsZV9kZXZpY2UocGNpX2Rldik7XFxuNjE1NzpcXHRcXHRpZiAoZXJyKSB7XFxuNjE1ODpcXHRcXHRcXHRwcmludGsoS0VSTl9XQVJOSU5HIERSVl9OQU1FXFxuNjE1OTpcXHRcXHRcXHQgICAgICAgXFxcIkVycm9yIGNhbGxpbmcgcGNpX2VuYWJsZV9kZXZpY2UuXFxcXG5cXFwiKTtcXG42MTYwOlxcdFxcdFxcdGdvdG8gZmFpbDtcXG42MTYxOlxcdFxcdH1cXG42MTYyOlxcdFxcbjYxNjM6XFx0XFx0cHJpdiA9IGxpYmlwd19wcml2KGRldik7XFxuNjE2NDpcXHRcXG42MTY1OlxcdFxcdHBjaV9zZXRfbWFzdGVyKHBjaV9kZXYpO1xcbjYxNjY6XFx0XFx0cGNpX3NldF9kcnZkYXRhKHBjaV9kZXYsIHByaXYpO1xcbjYxNjc6XFx0XFxuNjE2ODpcXHRcXHRlcnIgPSBkbWFfc2V0X21hc2soXFx1MDAyNnBjaV9kZXYtXFx1MDAzZWRldiwgRE1BX0JJVF9NQVNLKDMyKSk7XFxuNjE2OTpcXHRcXHRpZiAoZXJyKSB7XFxuNjE3MDpcXHRcXHRcXHRwcmludGsoS0VSTl9XQVJOSU5HIERSVl9OQU1FXFxuNjE3MTpcXHRcXHRcXHQgICAgICAgXFxcIkVycm9yIGNhbGxpbmcgcGNpX3NldF9kbWFfbWFzay5cXFxcblxcXCIpO1xcbjYxNzI6XFx0XFx0XFx0Z290byBmYWlsO1xcbjYxNzM6XFx0XFx0fVxcbjYxNzQ6XFx0XFxuNjE3NTpcXHRcXHRlcnIgPSBwY2lfcmVxdWVzdF9yZWdpb25zKHBjaV9kZXYsIERSVl9OQU1FKTtcXG42MTc2OlxcdFxcdGlmIChlcnIpIHtcXG42MTc3OlxcdFxcdFxcdHByaW50ayhLRVJOX1dBUk5JTkcgRFJWX05BTUVcXG42MTc4OlxcdFxcdFxcdCAgICAgICBcXFwiRXJyb3IgY2FsbGluZyBwY2lfcmVxdWVzdF9yZWdpb25zLlxcXFxuXFxcIik7XFxuNjE3OTpcXHRcXHRcXHRnb3RvIGZhaWw7XFxuNjE4MDpcXHRcXHR9XFxuNjE4MTpcXHRcXG42MTgyOlxcdFxcdC8qIFdlIGRpc2FibGUgdGhlIFJFVFJZX1RJTUVPVVQgcmVnaXN0ZXIgKDB4NDEpIHRvIGtlZXBcXG42MTgzOlxcdFxcdCAqIFBDSSBUeCByZXRyaWVzIGZyb20gaW50ZXJmZXJpbmcgd2l0aCBDMyBDUFUgc3RhdGUgKi9cXG42MTg0OlxcdFxcdHBjaV9yZWFkX2NvbmZpZ19kd29yZChwY2lfZGV2LCAweDQwLCBcXHUwMDI2dmFsKTtcXG42MTg1OlxcdFxcdGlmICgodmFsIFxcdTAwMjYgMHgwMDAwZmYwMCkgIT0gMClcXG42MTg2OlxcdFxcdFxcdHBjaV93cml0ZV9jb25maWdfZHdvcmQocGNpX2RldiwgMHg0MCwgdmFsIFxcdTAwMjYgMHhmZmZmMDBmZik7XFxuNjE4NzpcXHRcXG42MTg4OlxcdFxcdGlmICghaXB3MjEwMF9od19pc19hZGFwdGVyX2luX3N5c3RlbShkZXYpKSB7XFxuNjE4OTpcXHRcXHRcXHRwcmludGsoS0VSTl9XQVJOSU5HIERSVl9OQU1FXFxuNjE5MDpcXHRcXHRcXHQgICAgICAgXFxcIkRldmljZSBub3QgZm91bmQgdmlhIHJlZ2lzdGVyIHJlYWQuXFxcXG5cXFwiKTtcXG42MTkxOlxcdFxcdFxcdGVyciA9IC1FTk9ERVY7XFxuNjE5MjpcXHRcXHRcXHRnb3RvIGZhaWw7XFxuNjE5MzpcXHRcXHR9XFxuNjE5NDpcXHRcXG42MTk1OlxcdFxcdFNFVF9ORVRERVZfREVWKGRldiwgXFx1MDAyNnBjaV9kZXYtXFx1MDAzZWRldik7XFxuNjE5NjpcXHRcXG42MTk3OlxcdFxcdC8qIEZvcmNlIGludGVycnVwdHMgdG8gYmUgc2h1dCBvZmYgb24gdGhlIGRldmljZSAqL1xcbjYxOTg6XFx0XFx0cHJpdi1cXHUwMDNlc3RhdHVzIHw9IFNUQVRVU19JTlRfRU5BQkxFRDtcXG42MTk5OlxcdFxcdGlwdzIxMDBfZGlzYWJsZV9pbnRlcnJ1cHRzKHByaXYpO1xcbjYyMDA6XFx0XFxuNjIwMTpcXHRcXHQvKiBBbGxvY2F0ZSBhbmQgaW5pdGlhbGl6ZSB0aGUgVHgvUnggcXVldWVzIGFuZCBsaXN0cyAqL1xcbjYyMDI6XFx0XFx0aWYgKGlwdzIxMDBfcXVldWVzX2FsbG9jYXRlKHByaXYpKSB7XFxuNjIwMzpcXHRcXHRcXHRwcmludGsoS0VSTl9XQVJOSU5HIERSVl9OQU1FXFxuNjIwNDpcXHRcXHRcXHQgICAgICAgXFxcIkVycm9yIGNhbGxpbmcgaXB3MjEwMF9xdWV1ZXNfYWxsb2NhdGUuXFxcXG5cXFwiKTtcXG42MjA1OlxcdFxcdFxcdGVyciA9IC1FTk9NRU07XFxuNjIwNjpcXHRcXHRcXHRnb3RvIGZhaWw7XFxuNjIwNzpcXHRcXHR9XFxuNjIwODpcXHRcXHRpcHcyMTAwX3F1ZXVlc19pbml0aWFsaXplKHByaXYpO1xcbjYyMDk6XFx0XFxuNjIxMDpcXHRcXHRlcnIgPSByZXF1ZXN0X2lycShwY2lfZGV2LVxcdTAwM2VpcnEsXFxuNjIxMTpcXHRcXHRcXHRcXHQgIGlwdzIxMDBfaW50ZXJydXB0LCBJUlFGX1NIQVJFRCwgZGV2LVxcdTAwM2VuYW1lLCBwcml2KTtcXG42MjEyOlxcdFxcdGlmIChlcnIpIHtcXG42MjEzOlxcdFxcdFxcdHByaW50ayhLRVJOX1dBUk5JTkcgRFJWX05BTUVcXG42MjE0OlxcdFxcdFxcdCAgICAgICBcXFwiRXJyb3IgY2FsbGluZyByZXF1ZXN0X2lycTogJWQuXFxcXG5cXFwiLCBwY2lfZGV2LVxcdTAwM2VpcnEpO1xcbjYyMTU6XFx0XFx0XFx0Z290byBmYWlsO1xcbjYyMTY6XFx0XFx0fVxcbjYyMTc6XFx0XFx0ZGV2LVxcdTAwM2VpcnEgPSBwY2lfZGV2LVxcdTAwM2VpcnE7XFxuNjIxODpcXHRcXG42MjE5OlxcdFxcdElQV19ERUJVR19JTkZPKFxcXCJBdHRlbXB0aW5nIHRvIHJlZ2lzdGVyIGRldmljZS4uLlxcXFxuXFxcIik7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTIwVDA2OjIyOjQ2LjExODI5MDM1M1oiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI2MzQyNTE0MTUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCdzIHNlZSB3aGF0IHdlJ3JlIGRlYWxpbmcgd2l0aCBoZXJlLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gc2tpcCBhaGVhZCBhbmQgbG9vayBmb3IgdGhlIGBmYWlsOmAgbGFiZWwsIGJlY2F1c2UgdGhlIG1lcmUgbWVudGlvbiBvZiBpdCB0ZWxscyBtZSBzb21ldGhpbmcgYWJvdXQgdGhlIGxvZ2ljIGZsb3cuIEl0IHN1Z2dlc3RzIGFuIGVhcmx5IGV4aXQgY29uZGl0aW9uLCBwcm9iYWJseSBzb21ldGhpbmcgdGhhdCBpbmRpY2F0ZXMgYW4gdW5zdWNjZXNzZnVsIG9wZXJhdGlvbi4gVGhpcyBjb250ZXh0IGdpdmVzIG1lIGEgc3RhcnRpbmcgcG9pbnQgdG8gYmVnaW4gdG8gdW5kZXJzdGFuZCB0aGUgZnVuY3Rpb24gYXMgYSB3aG9sZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NDc4MiwiT3V0cHV0VG9rZW5zIjo1MywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE3LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjBUMDY6MjI6NDguNzUyNTQ0MTI5WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzMyNTgwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjEwMC5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDYyMjAsXG4gIFwiTGluZUNvdW50XCI6IDEwMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCI2MjIwOlxcdFxcbjYyMjE6XFx0XFx0cHJpbnRrKEtFUk5fSU5GTyBEUlZfTkFNRVxcbjYyMjI6XFx0XFx0ICAgICAgIFxcXCI6IERldGVjdGVkIEludGVsIFBSTy9XaXJlbGVzcyAyMTAwIE5ldHdvcmsgQ29ubmVjdGlvblxcXFxuXFxcIik7XFxuNjIyMzpcXHRcXG42MjI0OlxcdFxcdGVyciA9IGlwdzIxMDBfdXAocHJpdiwgMSk7XFxuNjIyNTpcXHRcXHRpZiAoZXJyKVxcbjYyMjY6XFx0XFx0XFx0Z290byBmYWlsO1xcbjYyMjc6XFx0XFxuNjIyODpcXHRcXHRlcnIgPSBpcHcyMTAwX3dkZXZfaW5pdChkZXYpO1xcbjYyMjk6XFx0XFx0aWYgKGVycilcXG42MjMwOlxcdFxcdFxcdGdvdG8gZmFpbDtcXG42MjMxOlxcdFxcdHJlZ2lzdGVyZWQgPSAxO1xcbjYyMzI6XFx0XFxuNjIzMzpcXHRcXHQvKiBCcmluZyB1cCB0aGUgaW50ZXJmYWNlLiAgUHJlIDAuNDYsIGFmdGVyIHdlIHJlZ2lzdGVyZWQgdGhlXFxuNjIzNDpcXHRcXHQgKiBuZXR3b3JrIGRldmljZSB3ZSB3b3VsZCBjYWxsIGlwdzIxMDBfdXAuICBUaGlzIGludHJvZHVjZWQgYSByYWNlXFxuNjIzNTpcXHRcXHQgKiBjb25kaXRpb24gd2l0aCBuZXdlciBob3RwbHVnIGNvbmZpZ3VyYXRpb25zIChuZXR3b3JrIHdhcyBjb21pbmdcXG42MjM2OlxcdFxcdCAqIHVwIGFuZCBtYWtpbmcgY2FsbHMgYmVmb3JlIHRoZSBkZXZpY2Ugd2FzIGluaXRpYWxpemVkKS5cXG42MjM3OlxcdFxcdCAqL1xcbjYyMzg6XFx0XFx0ZXJyID0gcmVnaXN0ZXJfbmV0ZGV2KGRldik7XFxuNjIzOTpcXHRcXHRpZiAoZXJyKSB7XFxuNjI0MDpcXHRcXHRcXHRwcmludGsoS0VSTl9XQVJOSU5HIERSVl9OQU1FXFxuNjI0MTpcXHRcXHRcXHQgICAgICAgXFxcIkVycm9yIGNhbGxpbmcgcmVnaXN0ZXJfbmV0ZGV2LlxcXFxuXFxcIik7XFxuNjI0MjpcXHRcXHRcXHRnb3RvIGZhaWw7XFxuNjI0MzpcXHRcXHR9XFxuNjI0NDpcXHRcXHRyZWdpc3RlcmVkID0gMjtcXG42MjQ1OlxcdFxcbjYyNDY6XFx0XFx0bXV0ZXhfbG9jayhcXHUwMDI2cHJpdi1cXHUwMDNlYWN0aW9uX211dGV4KTtcXG42MjQ3OlxcdFxcbjYyNDg6XFx0XFx0SVBXX0RFQlVHX0lORk8oXFxcIiVzOiBCb3VuZCB0byAlc1xcXFxuXFxcIiwgZGV2LVxcdTAwM2VuYW1lLCBwY2lfbmFtZShwY2lfZGV2KSk7XFxuNjI0OTpcXHRcXG42MjUwOlxcdFxcdC8qIHBlcmZvcm0gdGhpcyBhZnRlciByZWdpc3Rlcl9uZXRkZXYgc28gdGhhdCBkZXYtXFx1MDAzZW5hbWUgaXMgc2V0ICovXFxuNjI1MTpcXHRcXHRlcnIgPSBzeXNmc19jcmVhdGVfZ3JvdXAoXFx1MDAyNnBjaV9kZXYtXFx1MDAzZWRldi5rb2JqLCBcXHUwMDI2aXB3MjEwMF9hdHRyaWJ1dGVfZ3JvdXApO1xcbjYyNTI6XFx0XFx0aWYgKGVycilcXG42MjUzOlxcdFxcdFxcdGdvdG8gZmFpbF91bmxvY2s7XFxuNjI1NDpcXHRcXG42MjU1OlxcdFxcdC8qIElmIHRoZSBSRiBLaWxsIHN3aXRjaCBpcyBkaXNhYmxlZCwgZ28gYWhlYWQgYW5kIGNvbXBsZXRlIHRoZVxcbjYyNTY6XFx0XFx0ICogc3RhcnR1cCBzZXF1ZW5jZSAqL1xcbjYyNTc6XFx0XFx0aWYgKCEocHJpdi1cXHUwMDNlc3RhdHVzIFxcdTAwMjYgU1RBVFVTX1JGX0tJTExfTUFTSykpIHtcXG42MjU4OlxcdFxcdFxcdC8qIEVuYWJsZSB0aGUgYWRhcHRlciAtIHNlbmRzIEhPU1RfQ09NUExFVEUgKi9cXG42MjU5OlxcdFxcdFxcdGlmIChpcHcyMTAwX2VuYWJsZV9hZGFwdGVyKHByaXYpKSB7XFxuNjI2MDpcXHRcXHRcXHRcXHRwcmludGsoS0VSTl9XQVJOSU5HIERSVl9OQU1FXFxuNjI2MTpcXHRcXHRcXHRcXHQgICAgICAgXFxcIjogJXM6IGZhaWxlZCBpbiBjYWxsIHRvIGVuYWJsZSBhZGFwdGVyLlxcXFxuXFxcIixcXG42MjYyOlxcdFxcdFxcdFxcdCAgICAgICBwcml2LVxcdTAwM2VuZXRfZGV2LVxcdTAwM2VuYW1lKTtcXG42MjYzOlxcdFxcdFxcdFxcdGlwdzIxMDBfaHdfc3RvcF9hZGFwdGVyKHByaXYpO1xcbjYyNjQ6XFx0XFx0XFx0XFx0ZXJyID0gLUVJTztcXG42MjY1OlxcdFxcdFxcdFxcdGdvdG8gZmFpbF91bmxvY2s7XFxuNjI2NjpcXHRcXHRcXHR9XFxuNjI2NzpcXHRcXG42MjY4OlxcdFxcdFxcdC8qIFN0YXJ0IGEgc2NhbiAuIC4gLiAqL1xcbjYyNjk6XFx0XFx0XFx0aXB3MjEwMF9zZXRfc2Nhbl9vcHRpb25zKHByaXYpO1xcbjYyNzA6XFx0XFx0XFx0aXB3MjEwMF9zdGFydF9zY2FuKHByaXYpO1xcbjYyNzE6XFx0XFx0fVxcbjYyNzI6XFx0XFxuNjI3MzpcXHRcXHRJUFdfREVCVUdfSU5GTyhcXFwiZXhpdFxcXFxuXFxcIik7XFxuNjI3NDpcXHRcXG42Mjc1OlxcdFxcdHByaXYtXFx1MDAzZXN0YXR1cyB8PSBTVEFUVVNfSU5JVElBTElaRUQ7XFxuNjI3NjpcXHRcXG42Mjc3OlxcdFxcdG11dGV4X3VubG9jayhcXHUwMDI2cHJpdi1cXHUwMDNlYWN0aW9uX211dGV4KTtcXG42Mjc4OlxcdG91dDpcXG42Mjc5OlxcdFxcdHJldHVybiBlcnI7XFxuNjI4MDpcXHRcXG42MjgxOlxcdCAgICAgIGZhaWxfdW5sb2NrOlxcbjYyODI6XFx0XFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZwcml2LVxcdTAwM2VhY3Rpb25fbXV0ZXgpO1xcbjYyODM6XFx0ICAgICAgZmFpbDpcXG42Mjg0OlxcdFxcdGlmIChkZXYpIHtcXG42Mjg1OlxcdFxcdFxcdGlmIChyZWdpc3RlcmVkIFxcdTAwM2U9IDIpXFxuNjI4NjpcXHRcXHRcXHRcXHR1bnJlZ2lzdGVyX25ldGRldihkZXYpO1xcbjYyODc6XFx0XFxuNjI4ODpcXHRcXHRcXHRpZiAocmVnaXN0ZXJlZCkge1xcbjYyODk6XFx0XFx0XFx0XFx0d2lwaHlfdW5yZWdpc3Rlcihwcml2LVxcdTAwM2VpZWVlLVxcdTAwM2V3ZGV2LndpcGh5KTtcXG42MjkwOlxcdFxcdFxcdFxcdGtmcmVlKHByaXYtXFx1MDAzZWllZWUtXFx1MDAzZWJnX2JhbmQuY2hhbm5lbHMpO1xcbjYyOTE6XFx0XFx0XFx0fVxcbjYyOTI6XFx0XFxuNjI5MzpcXHRcXHRcXHRpcHcyMTAwX2h3X3N0b3BfYWRhcHRlcihwcml2KTtcXG42Mjk0OlxcdFxcbjYyOTU6XFx0XFx0XFx0aXB3MjEwMF9kaXNhYmxlX2ludGVycnVwdHMocHJpdik7XFxuNjI5NjpcXHRcXG42Mjk3OlxcdFxcdFxcdGlmIChkZXYtXFx1MDAzZWlycSlcXG42Mjk4OlxcdFxcdFxcdFxcdGZyZWVfaXJxKGRldi1cXHUwMDNlaXJxLCBwcml2KTtcXG42Mjk5OlxcdFxcbjYzMDA6XFx0XFx0XFx0aXB3MjEwMF9raWxsX3dvcmtzKHByaXYpO1xcbjYzMDE6XFx0XFxuNjMwMjpcXHRcXHRcXHQvKiBUaGVzZSBhcmUgc2FmZSB0byBjYWxsIGV2ZW4gaWYgdGhleSB3ZXJlbid0IGFsbG9jYXRlZCAqL1xcbjYzMDM6XFx0XFx0XFx0aXB3MjEwMF9xdWV1ZXNfZnJlZShwcml2KTtcXG42MzA0OlxcdFxcdFxcdHN5c2ZzX3JlbW92ZV9ncm91cChcXHUwMDI2cGNpX2Rldi1cXHUwMDNlZGV2LmtvYmosXFxuNjMwNTpcXHRcXHRcXHRcXHRcXHQgICBcXHUwMDI2aXB3MjEwMF9hdHRyaWJ1dGVfZ3JvdXApO1xcbjYzMDY6XFx0XFxuNjMwNzpcXHRcXHRcXHRmcmVlX2xpYmlwdyhkZXYsIDApO1xcbjYzMDg6XFx0XFx0fVxcbjYzMDk6XFx0XFxuNjMxMDpcXHRcXHRwY2lfaW91bm1hcChwY2lfZGV2LCBpb2FkZHIpO1xcbjYzMTE6XFx0XFxuNjMxMjpcXHRcXHRwY2lfcmVsZWFzZV9yZWdpb25zKHBjaV9kZXYpO1xcbjYzMTM6XFx0XFx0cGNpX2Rpc2FibGVfZGV2aWNlKHBjaV9kZXYpO1xcbjYzMTQ6XFx0XFx0Z290byBvdXQ7XFxuNjMxNTpcXHR9XFxuNjMxNjpcXHRcXG42MzE3OlxcdHN0YXRpYyB2b2lkIGlwdzIxMDBfcGNpX3JlbW92ZV9vbmUoc3RydWN0IHBjaV9kZXYgKnBjaV9kZXYpXFxuNjMxODpcXHR7XFxuNjMxOTpcXHRcXHRzdHJ1Y3QgaXB3MjEwMF9wcml2ICpwcml2ID0gcGNpX2dldF9kcnZkYXRhKHBjaV9kZXYpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yMFQwNjoyMjo0OC43NTI4Nzg3MzhaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMDE1NzU5NzkxMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBQQ0kgRHJpdmVyIEluaXRpYWxpemF0aW9uIEJ1ZyBGaXgqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGZvciB0aGUgYGlwdzIxMDBgIGRyaXZlci4gSXQgYXBwZWFycyB0byBiZSBhZGRyZXNzaW5nIHJlc291cmNlIGxlYWtzIHdpdGhpbiB0aGUgYGlwdzIxMDBfcGNpX2luaXRfb25lYCBmdW5jdGlvbi4gU3BlY2lmaWNhbGx5LCB0aGUgb3JpZ2luYWwgY29kZSBoYWQgdGhlc2UgZXJyb3IgcGF0aHMgdGhhdCB3ZXJlIGluY29tcGxldGU6IGlmIGBwY2lfZW5hYmxlX2RldmljZWAsIGBkbWFfc2V0X21hc2tgLCBvciBgcGNpX3JlcXVlc3RfcmVnaW9uc2AgZmFpbGVkLCB0aGUgY29kZSB3b3VsZCBqdXN0IGByZXR1cm5gIHByZW1hdHVyZWx5LiBUaGlzIG1lYW50IHRoYXQgdGhlIGRyaXZlciB3b3VsZCBsZWFrIGFsbG9jYXRlZCByZXNvdXJjZXMg4oCTIHRoZSBgaW9hZGRyYCBtYXBwZWQgd2l0aCBgcGNpX2lvbWFwYCwgYW5kIHRoZSBuZXR3b3JrIGRldmljZSBgZGV2YCBhbGxvY2F0ZWQgdmlhIGBpcHcyMTAwX2FsbG9jX2RldmljZWAuXG5cblRoaXMgcGF0Y2ggaXMgYSBzdHJhaWdodGZvcndhcmQgZml4LCBpdCBzZWVtcy4gQnkgY2hhbmdpbmcgdGhlc2UgcmV0dXJuIHN0YXRlbWVudHMgdG8gYGdvdG8gZmFpbDtgLCBpdCBlbnN1cmVzIHRoZSBjb2RlIGV4ZWN1dGVzIHRoZSBjbGVhbnVwIGJsb2NrIGxhYmVsbGVkIGBmYWlsYC4gVGhlIGBmYWlsYCBsYWJlbCBjb250YWlucyBhbGwgdGhlIG5lY2Vzc2FyeSBjbGVhbnVwIHN0ZXBzOiAgYGZyZWVfbGliaXB3KGRldiwgMCk7YCwgYHBjaV9pb3VubWFwKHBjaV9kZXYsIGlvYWRkcik7YCwgYHBjaV9yZWxlYXNlX3JlZ2lvbnMocGNpX2Rldik7YCwgYW5kIGBwY2lfZGlzYWJsZV9kZXZpY2UocGNpX2Rldik7YC4gQmFzaWNhbGx5LCBpdCBub3cgcmVsZWFzZXMgZXZlcnl0aGluZyBwcm9wZXJseS4gU28sIHRoaXMgaXMgYSBwcmV0dHkgY2xlYXIgbWVtb3J5L3Jlc291cmNlIGxlYWsgZml4LlxuXG5Ob3csIHRoZSBxdWVzdGlvbiBpcywgc2hvdWxkIEkgZnV6eiB0aGlzPyBJdCdzIGEgUENJIGRldmljZSBkcml2ZXIgaW5pdGlhbGl6YXRpb24sIHdoaWNoIG1ha2VzIGl0IGFuIGludGVyZXN0aW5nIHRhcmdldC4gSXQgKnNob3VsZCogYmUgcmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cywgYXNzdW1pbmcgd2UgY2FuIGVtdWxhdGUgYSBQQ0kgZGV2aWNlIG9yIGxldmVyYWdlIHN5emthbGxlcidzIFBDSSBmdXp6aW5nIGNhcGFiaWxpdGllcy4gIFN5emthbGxlciAqZG9lcyogaGF2ZSBQQ0kgZnV6emluZyBzdXBwb3J0OyBJJ3ZlIHVzZWQgaXQgYmVmb3JlLCBpbmNsdWRpbmcgdGhlIGBzeXpfcGNpX2RldmljZV9hZGRgIGNhbGwuIEhvd2V2ZXIsIHRoaXMgaXMgYW4gb2xkIGRyaXZlciwgSW50ZWwgUFJPL1dpcmVsZXNzIDIxMDAuIFNvIEknbGwgbmVlZCB0byBkb3VibGUgY2hlY2sgdGhlIEtjb25maWcgZm9yIGl0LiBUaGlzIHdpbGwgaGVscCBkZXRlcm1pbmUgaWYgaXQncyBldmVuIGNvbmZpZ3VyZWQgYW5kIGlmIGl0IGlzIHN1cHBvcnRlZCB0byBiZWdpbiB3aXRoLiAgTGV0IG1lIHF1aWNrbHkgdmVyaWZ5LlxuXG5cbiIsIklucHV0VG9rZW5zIjo2NDA5LCJPdXRwdXRUb2tlbnMiOjQ0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6OTQzLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjBUMDY6MjI6NTguOTEwNDc5Mjk5WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2MTA0NzE5OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgSVBXMjEwMFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9LY29uZmlnLTUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9LY29uZmlnOjY6Y29uZmlnIElQVzIxMDBcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL0tjb25maWctNy1cXHR0cmlzdGF0ZSBcXFwiSW50ZWwgUFJPL1dpcmVsZXNzIDIxMDAgTmV0d29yayBDb25uZWN0aW9uXFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9LY29uZmlnLTM4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvS2NvbmZpZzozOTpjb25maWcgSVBXMjEwMF9NT05JVE9SXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9LY29uZmlnLTQwLVxcdGJvb2wgXFxcIkVuYWJsZSBwcm9taXNjdW91cyBtb2RlXFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9LY29uZmlnLTQ3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvS2NvbmZpZzo0ODpjb25maWcgSVBXMjEwMF9ERUJVR1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvS2NvbmZpZy00OS1cXHRib29sIFxcXCJFbmFibGUgZnVsbCBkZWJ1Z2dpbmcgb3V0cHV0IGluIElQVzIxMDAgbW9kdWxlLlxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjBUMDY6MjI6NTguOTcxNTMyNzE4WiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMyMDg4OTI4NDMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBJUFcyMTAwIEluaXRpYWxpemF0aW9uKipcblxuT2theSwgc28gdGhlIGNvZGUgSSdtIGxvb2tpbmcgYXQgcmV2b2x2ZXMgYXJvdW5kIHRoZSBjb25maWd1cmF0aW9uIGZvciB0aGUgYElQVzIxMDBgIGRldmljZS4gTXkgZm9jdXMgaXMgb24gdGhlIGBpcHcyMTAwX3BjaV9pbml0X29uZWAgZnVuY3Rpb24sIG5hdHVyYWxseS4gVGhlIGtleSBxdWVzdGlvbiBpbiBteSBtaW5kIGlzOiBjYW4gSSBnZXQgdGhpcyBmdW5jdGlvbiB0byBleGVjdXRlPyBUaGUgb2J2aW91cyBhbnN3ZXIgaXMgeWVzLiBJdCBsb29rcyBsaWtlIHRoZSBtb3N0IGRpcmVjdCBhcHByb2FjaCB3b3VsZCBiZSB0byBpbmplY3QgYSBQQ0kgZGV2aWNlIHRoYXQgaGFzIHRoZSBjb3JyZWN0IHZlbmRvciBhbmQgZGV2aWNlIElEcyB0byB0cmlnZ2VyIGl0LiBTbywgbGV0J3MgdHJhY2sgZG93biB0aG9zZSBQQ0kgSURzIGZvciB0aGUgYGlwdzIxMDBgIHNwZWNpZmljYWxseSwgdGhhdCdzIHdoZXJlIEkgbmVlZCB0byBzdGFydCBteSBpbnZlc3RpZ2F0aW9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjo4MTA2LCJPdXRwdXRUb2tlbnMiOjU2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NzQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjBUMDY6MjM6MDIuMTgwNDI3NzQxWiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NTA2MjYyOSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJpcHcyMTAwX3BjaV9pZF90YWJsZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIxMDAuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIxMDAuYz02NDI5PXN0YXRpYyB2b2lkIGlwdzIxMDBfc2h1dGRvd24oc3RydWN0IHBjaV9kZXYgKnBjaV9kZXYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIxMDAuYy02NDQwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjEwMC5jOjY0NDE6c3RhdGljIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkIGlwdzIxMDBfcGNpX2lkX3RhYmxlW10gPSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMTAwLmMtNjQ0Mi1cXHRJUFcyMTAwX0RFVl9JRCgweDI1MjApLFxcdC8qIElOIDIxMDBBIG1QQ0kgM0EgKi9cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjEwMC5jLTY0OTAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMTAwLmM6NjQ5MTpNT0RVTEVfREVWSUNFX1RBQkxFKHBjaSwgaXB3MjEwMF9wY2lfaWRfdGFibGUpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjEwMC5jLTY0OTItXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIxMDAuYz02NDk1PXN0YXRpYyBzdHJ1Y3QgcGNpX2RyaXZlciBpcHcyMTAwX3BjaV9kcml2ZXIgPSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMTAwLmMtNjQ5Ni1cXHQubmFtZSA9IERSVl9OQU1FLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjEwMC5jOjY0OTc6XFx0LmlkX3RhYmxlID0gaXB3MjEwMF9wY2lfaWRfdGFibGUsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMTAwLmMtNjQ5OC1cXHQucHJvYmUgPSBpcHcyMTAwX3BjaV9pbml0X29uZSxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjBUMDY6MjM6MDIuMjM1NDk2NDNaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzQ3MjkzNjE0OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRha2Ugb24gdGhlIHRob3VnaHQgcHJvY2VzczpcblxuKipGdXp6aW5nIFBDSSBEZXZpY2VzIHdpdGggU3l6a2FsbGVyKipcblxuT2theSwgc28gSSdtIHRoaW5raW5nIGFib3V0IGZ1enppbmcgc29tZSBQQ0kgZGV2aWNlcyB1c2luZyBTeXprYWxsZXIuIEl0IGxvb2tzIGxpa2UgaXQgY2FuIGRvIHRoaXMgYnkgc2ltdWxhdGluZyB0aGUgZGV2aWNlcyB0aGVtc2VsdmVzLCB3aGljaCBpcyBwcmV0dHkgbmVhdC4gVGhlIGRvY3VtZW50YXRpb24gcG9pbnRzIHRvIGVuYWJsaW5nIHRoZSBgSVBXMjEwMGAgY29uZmlnIG9wdGlvbiB0byBnZXQgdGhpcyBmdW5jdGlvbmFsaXR5IGdvaW5nLiBCdXQgaG9sZCBvbiwgYmVmb3JlIEkgZGl2ZSBpbiB0b28gZGVlcCwgbGV0J3MganVzdCBkb3VibGUtY2hlY2sgaWYgZW5hYmxpbmcgdGhhdCBvcHRpb24gaGFzIGFueSB1bmRlcmx5aW5nIGRlcGVuZGVuY2llcy4gR290dGEgbWFrZSBzdXJlIEkgaGF2ZSBhbGwgdGhlIHBpZWNlcyBpbiBwbGFjZSBiZWZvcmUgSSBzdGFydC4gV291bGRuJ3Qgd2FudCB0byB3YXN0ZSB0aW1lIGNoYXNpbmcgZG93biBtaXNzaW5nIGNvbXBvbmVudHMgbGF0ZXIuIEdvdHRhIGJlIHRob3JvdWdoLlxuXG5cbiIsIklucHV0VG9rZW5zIjo4ODk4LCJPdXRwdXRUb2tlbnMiOjQzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjBUMDY6MjM6MDUuNzA4NDM0Njk5WiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjc3NjIwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAxLFxuICBcIkxpbmVDb3VudFwiOiAyMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgICAxOlxcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbiAgIDI6XFx0I1xcbiAgIDM6XFx0IyBJbnRlbCBDZW50cmlubyB3aXJlbGVzcyBkcml2ZXJzXFxuICAgNDpcXHQjXFxuICAgNTpcXHRcXG4gICA2OlxcdGNvbmZpZyBJUFcyMTAwXFxuICAgNzpcXHRcXHR0cmlzdGF0ZSBcXFwiSW50ZWwgUFJPL1dpcmVsZXNzIDIxMDAgTmV0d29yayBDb25uZWN0aW9uXFxcIlxcbiAgIDg6XFx0XFx0ZGVwZW5kcyBvbiBQQ0kgXFx1MDAyNlxcdTAwMjYgQ0ZHODAyMTFcXG4gICA5OlxcdFxcdHNlbGVjdCBXSVJFTEVTU19FWFRcXG4gIDEwOlxcdFxcdHNlbGVjdCBXRVhUX1BSSVZcXG4gIDExOlxcdFxcdHNlbGVjdCBGV19MT0FERVJcXG4gIDEyOlxcdFxcdHNlbGVjdCBMSUJJUFdcXG4gIDEzOlxcdFxcdGhlbHBcXG4gIDE0OlxcdFxcdCAgQSBkcml2ZXIgZm9yIHRoZSBJbnRlbCBQUk8vV2lyZWxlc3MgMjEwMCBOZXR3b3JrXFxuICAxNTpcXHRcXHQgIENvbm5lY3Rpb24gODAyLjExYiB3aXJlbGVzcyBuZXR3b3JrIGFkYXB0ZXIuXFxuICAxNjpcXHRcXG4gIDE3OlxcdFxcdCAgU2VlIFxcdTAwM2NmaWxlOkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9kZXZpY2VfZHJpdmVycy93aWZpL2ludGVsL2lwdzIxMDAucnN0XFx1MDAzZVxcbiAgMTg6XFx0XFx0ICBmb3IgaW5mb3JtYXRpb24gb24gdGhlIGNhcGFiaWxpdGllcyBjdXJyZW50bHkgZW5hYmxlZCBpbiB0aGlzIGRyaXZlclxcbiAgMTk6XFx0XFx0ICBhbmQgZm9yIHRpcHMgZm9yIGRlYnVnZ2luZyBpc3N1ZXMgYW5kIHByb2JsZW1zLlxcbiAgMjA6XFx0XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTIwVDA2OjIzOjA1LjcwODUxMzU4OFoiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1NzM2MDk4MTgxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgUG90ZW50aWFsIEltcGFjdCBvZiBhIFBDSSBEcml2ZXIgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCBpbW1lZGlhdGVseSwgbXkgbWluZCBqdW1wcyB0byB0aGUgZGVwZW5kZW5jaWVzOiBgUENJYCBhbmQgYENGRzgwMjExYC4gVGhhdCdzIHdoZXJlIEkgbmVlZCB0byBzdGFydC4gVGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9uIHdlJ2xsIG5lZWQgdG8gZW5hYmxlIHRvIHRlc3QgdGhpcyBpcyBgSVBXMjEwMGAuXG5cblRoZSBtZWF0IG9mIGl0IHNlZW1zIHRvIGJlIGEgZml4IGZvciBhIHJlc291cmNlIGxlYWsgd2l0aGluIHRoZSBlcnJvciBoYW5kbGluZyBvZiB0aGUgUENJIHByb2JlIGZ1bmN0aW9uLiBUaGF0J3MgaW50ZXJlc3RpbmcsIGFuZCBiZWNhdXNlIGl0J3MgZnVuY3Rpb25hbCwgaXQgYWJzb2x1dGVseSBoYXMgYSBjaGFuY2UgdG8gYmUgdHJpZ2dlcmVkIGJ5IGZ1enppbmcsIHNwZWNpZmljYWxseSBzeXprYWxsZXIncyBQQ0kgZnV6emluZy4gVGhlIGtleSBmdW5jdGlvbiBoZXJlIGlzIGNsZWFybHkgYGlwdzIxMDBfcGNpX2luaXRfb25lYC5cblxuSnVzdCB0byBiZSB0aG9yb3VnaCwgSSdsbCBxdWlja2x5IGNoZWNrIGZvciBhbnkgb3RoZXIgbW9kaWZpZWQgZnVuY3Rpb25zLCBidXQgaXQgbG9va3MgbGlrZSBgaXB3MjEwMF9wY2lfaW5pdF9vbmVgIGlzIHRoZSBvbmx5IG9uZS4gR29vZC5cblxuQWxyaWdodCwgbGV0J3Mgc3VtbWFyaXplIG15IGZpbmRpbmdzLiBJJ2xsIG5vdGUgdGhlc2UgZG93biBmb3IgY2xhcml0eTpcblxuKiAgICoqV29ydGhGdXp6aW5nOioqIFRydWUgLSB0aGlzIGlzIGEgZGVmaW5pdGUgY2FuZGlkYXRlLlxuKiAgICoqRm9jdXNTeW1ib2xzOioqIGBbXCJpcHcyMTAwX3BjaV9pbml0X29uZVwiXWAgLSBwaW5wb2ludCB0aGF0IGZ1bmN0aW9uLlxuKiAgICoqRW5hYmxlQ29uZmlnczoqKiBgW1wiSVBXMjEwMFwiXWAgLSB0aGUgcHJlcmVxdWlzaXRlIHRvIGdldCBoZXJlLlxuKiAgICoqUmVhc29uaW5nOioqIFwiVGhlIHBhdGNoIGZpeGVzIHJlc291cmNlIGxlYWtzIGluIHRoZSBlcnJvciBwYXRocyBvZiB0aGUgUENJIHByb2JlIGZ1bmN0aW9uIGBpcHcyMTAwX3BjaV9pbml0X29uZWAuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0aGF0IGNhbiBiZSB0cmlnZ2VyZWQgYnkgc3l6a2FsbGVyJ3MgUENJIGRldmljZSBmdXp6aW5nLlwiXG5cblxuIiwiSW5wdXRUb2tlbnMiOjk0MDMsIk91dHB1dFRva2VucyI6MTAzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjI2LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjBUMDY6MjM6MTEuNDQ0NjE0NThaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4MDM2MDYwOCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiSVBXMjEwMFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImlwdzIxMDBfcGNpX2luaXRfb25lXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgcmVzb3VyY2UgbGVha3MgaW4gdGhlIGVycm9yIHBhdGhzIG9mIHRoZSBQQ0kgcHJvYmUgZnVuY3Rpb24gYGlwdzIxMDBfcGNpX2luaXRfb25lYC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRoYXQgY2FuIGJlIHRyaWdnZXJlZCBieSBzeXprYWxsZXIncyBQQ0kgZGV2aWNlIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiSVBXMjEwMFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImlwdzIxMDBfcGNpX2luaXRfb25lXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgcmVzb3VyY2UgbGVha3MgaW4gdGhlIGVycm9yIHBhdGhzIG9mIHRoZSBQQ0kgcHJvYmUgZnVuY3Rpb24gYGlwdzIxMDBfcGNpX2luaXRfb25lYC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRoYXQgY2FuIGJlIHRyaWdnZXJlZCBieSBzeXprYWxsZXIncyBQQ0kgZGV2aWNlIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/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-workflowmnh4c[1] Phase: Succeeded StartedAt: 2026-06-20 06:23:22 +0000 UTC FinishedAt: 2026-06-20 06:23:22 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmnh4c[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-06-20 06:23:22 +0000 UTC FinishedAt: 2026-06-20 06:23:22 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmnh4c[2] Phase: Succeeded StartedAt: 2026-06-20 06:23:22 +0000 UTC FinishedAt: 2026-06-20 07:14:59 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmnh4c[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1a3746ccbb0a97bed3c06ccde6b880013b1dddc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPW2100"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ipw2100_pci_init_one"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1a3746ccbb0a97bed3c06ccde6b880013b1dddc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPW2100"],"series_id":"b5bd17ee-c86f-409a-9df5-238622954789","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-06-20 06:23:22 +0000 UTC FinishedAt: 2026-06-20 07:14:59 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"1a3746ccbb0a97bed3c06ccde6b880013b1dddc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPW2100"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ipw2100_pci_init_one"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"1a3746ccbb0a97bed3c06ccde6b880013b1dddc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPW2100"],"series_id":"b5bd17ee-c86f-409a-9df5-238622954789","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowmnh4c[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1a3746ccbb0a97bed3c06ccde6b880013b1dddc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPW2100"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ipw2100_pci_init_one"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1a3746ccbb0a97bed3c06ccde6b880013b1dddc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPW2100"],"series_id":"b5bd17ee-c86f-409a-9df5-238622954789","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-06-20 06:23:22 +0000 UTC FinishedAt: 2026-06-20 06:23:32 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmnh4c[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1a3746ccbb0a97bed3c06ccde6b880013b1dddc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPW2100"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ipw2100_pci_init_one"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1a3746ccbb0a97bed3c06ccde6b880013b1dddc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPW2100"],"series_id":"b5bd17ee-c86f-409a-9df5-238622954789","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-06-20 06:23:22 +0000 UTC FinishedAt: 2026-06-20 06:23:28 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"1a3746ccbb0a97bed3c06ccde6b880013b1dddc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPW2100"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},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-workflowmnh4c/series-workflowmnh4c-convert-artifact-3949989952/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowmnh4c[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1a3746ccbb0a97bed3c06ccde6b880013b1dddc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPW2100"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ipw2100_pci_init_one"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1a3746ccbb0a97bed3c06ccde6b880013b1dddc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPW2100"],"series_id":"b5bd17ee-c86f-409a-9df5-238622954789","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-06-20 06:23:32 +0000 UTC FinishedAt: 2026-06-20 06:45:39 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmnh4c[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1a3746ccbb0a97bed3c06ccde6b880013b1dddc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPW2100"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ipw2100_pci_init_one"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1a3746ccbb0a97bed3c06ccde6b880013b1dddc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPW2100"],"series_id":"b5bd17ee-c86f-409a-9df5-238622954789","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-06-20 06:23:32 +0000 UTC FinishedAt: 2026-06-20 06:45:39 +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:*52275ac9-201a-453c-9559-608cd98bf9a8,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-workflowmnh4c/series-workflowmnh4c-convert-artifact-3949989952/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": "fdb517c0-58ca-4fb2-a462-297ee2aa78cc", "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-workflowmnh4c/series-workflowmnh4c-build-action-2414016518/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowmnh4c[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1a3746ccbb0a97bed3c06ccde6b880013b1dddc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPW2100"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ipw2100_pci_init_one"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1a3746ccbb0a97bed3c06ccde6b880013b1dddc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPW2100"],"series_id":"b5bd17ee-c86f-409a-9df5-238622954789","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-06-20 06:23:32 +0000 UTC FinishedAt: 2026-06-20 06:45:29 +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:*52275ac9-201a-453c-9559-608cd98bf9a8,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-workflowmnh4c/series-workflowmnh4c-convert-artifact-3949989952/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": "fdb517c0-58ca-4fb2-a462-297ee2aa78cc", "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-workflowmnh4c/series-workflowmnh4c-build-action-2414016518/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowmnh4c[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1a3746ccbb0a97bed3c06ccde6b880013b1dddc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPW2100"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ipw2100_pci_init_one"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1a3746ccbb0a97bed3c06ccde6b880013b1dddc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPW2100"],"series_id":"b5bd17ee-c86f-409a-9df5-238622954789","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-06-20 06:45:39 +0000 UTC FinishedAt: 2026-06-20 06:45:39 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmnh4c[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1a3746ccbb0a97bed3c06ccde6b880013b1dddc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPW2100"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ipw2100_pci_init_one"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1a3746ccbb0a97bed3c06ccde6b880013b1dddc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPW2100"],"series_id":"b5bd17ee-c86f-409a-9df5-238622954789","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-06-20 06:45:39 +0000 UTC FinishedAt: 2026-06-20 06:45:39 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmnh4c[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1a3746ccbb0a97bed3c06ccde6b880013b1dddc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPW2100"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ipw2100_pci_init_one"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1a3746ccbb0a97bed3c06ccde6b880013b1dddc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPW2100"],"series_id":"b5bd17ee-c86f-409a-9df5-238622954789","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-06-20 06:45:39 +0000 UTC FinishedAt: 2026-06-20 06:45:49 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmnh4c[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1a3746ccbb0a97bed3c06ccde6b880013b1dddc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPW2100"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ipw2100_pci_init_one"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1a3746ccbb0a97bed3c06ccde6b880013b1dddc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPW2100"],"series_id":"b5bd17ee-c86f-409a-9df5-238622954789","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-06-20 06:45:39 +0000 UTC FinishedAt: 2026-06-20 06:45:44 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"1a3746ccbb0a97bed3c06ccde6b880013b1dddc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPW2100"],"series_id":"b5bd17ee-c86f-409a-9df5-238622954789","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},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-workflowmnh4c/series-workflowmnh4c-convert-artifact-2645747687/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowmnh4c[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1a3746ccbb0a97bed3c06ccde6b880013b1dddc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPW2100"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ipw2100_pci_init_one"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1a3746ccbb0a97bed3c06ccde6b880013b1dddc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPW2100"],"series_id":"b5bd17ee-c86f-409a-9df5-238622954789","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-06-20 06:45:49 +0000 UTC FinishedAt: 2026-06-20 06:47:41 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmnh4c[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1a3746ccbb0a97bed3c06ccde6b880013b1dddc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPW2100"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ipw2100_pci_init_one"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1a3746ccbb0a97bed3c06ccde6b880013b1dddc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPW2100"],"series_id":"b5bd17ee-c86f-409a-9df5-238622954789","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-06-20 06:45:49 +0000 UTC FinishedAt: 2026-06-20 06:47:31 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*fdb517c0-58ca-4fb2-a462-297ee2aa78cc,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-workflowmnh4c/series-workflowmnh4c-build-action-2414016518/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-workflowmnh4c[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1a3746ccbb0a97bed3c06ccde6b880013b1dddc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPW2100"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ipw2100_pci_init_one"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1a3746ccbb0a97bed3c06ccde6b880013b1dddc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPW2100"],"series_id":"b5bd17ee-c86f-409a-9df5-238622954789","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-06-20 06:47:41 +0000 UTC FinishedAt: 2026-06-20 06:47:41 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmnh4c[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1a3746ccbb0a97bed3c06ccde6b880013b1dddc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPW2100"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ipw2100_pci_init_one"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1a3746ccbb0a97bed3c06ccde6b880013b1dddc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPW2100"],"series_id":"b5bd17ee-c86f-409a-9df5-238622954789","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-06-20 06:47:41 +0000 UTC FinishedAt: 2026-06-20 06:47:41 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmnh4c[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1a3746ccbb0a97bed3c06ccde6b880013b1dddc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPW2100"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ipw2100_pci_init_one"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1a3746ccbb0a97bed3c06ccde6b880013b1dddc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPW2100"],"series_id":"b5bd17ee-c86f-409a-9df5-238622954789","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-06-20 06:47:41 +0000 UTC FinishedAt: 2026-06-20 07:09:36 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmnh4c[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1a3746ccbb0a97bed3c06ccde6b880013b1dddc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPW2100"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ipw2100_pci_init_one"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1a3746ccbb0a97bed3c06ccde6b880013b1dddc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPW2100"],"series_id":"b5bd17ee-c86f-409a-9df5-238622954789","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-06-20 06:47:41 +0000 UTC FinishedAt: 2026-06-20 07:09:36 +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:*52275ac9-201a-453c-9559-608cd98bf9a8,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-workflowmnh4c/series-workflowmnh4c-convert-artifact-2645747687/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": "a8280e9b-f2cf-41ce-9d36-351ca5a9d569", "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-workflowmnh4c/series-workflowmnh4c-build-action-2222956395/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowmnh4c[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1a3746ccbb0a97bed3c06ccde6b880013b1dddc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPW2100"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ipw2100_pci_init_one"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1a3746ccbb0a97bed3c06ccde6b880013b1dddc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPW2100"],"series_id":"b5bd17ee-c86f-409a-9df5-238622954789","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-06-20 06:47:41 +0000 UTC FinishedAt: 2026-06-20 07:09:26 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*true,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Patched,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*52275ac9-201a-453c-9559-608cd98bf9a8,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-workflowmnh4c/series-workflowmnh4c-convert-artifact-2645747687/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": "a8280e9b-f2cf-41ce-9d36-351ca5a9d569", "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-workflowmnh4c/series-workflowmnh4c-build-action-2222956395/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowmnh4c[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1a3746ccbb0a97bed3c06ccde6b880013b1dddc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPW2100"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ipw2100_pci_init_one"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1a3746ccbb0a97bed3c06ccde6b880013b1dddc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPW2100"],"series_id":"b5bd17ee-c86f-409a-9df5-238622954789","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-06-20 07:09:36 +0000 UTC FinishedAt: 2026-06-20 07:09:36 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmnh4c[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1a3746ccbb0a97bed3c06ccde6b880013b1dddc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPW2100"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ipw2100_pci_init_one"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1a3746ccbb0a97bed3c06ccde6b880013b1dddc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPW2100"],"series_id":"b5bd17ee-c86f-409a-9df5-238622954789","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-06-20 07:09:36 +0000 UTC FinishedAt: 2026-06-20 07:09:36 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmnh4c[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1a3746ccbb0a97bed3c06ccde6b880013b1dddc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPW2100"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ipw2100_pci_init_one"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1a3746ccbb0a97bed3c06ccde6b880013b1dddc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPW2100"],"series_id":"b5bd17ee-c86f-409a-9df5-238622954789","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-06-20 07:09:36 +0000 UTC FinishedAt: 2026-06-20 07:11:51 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmnh4c[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1a3746ccbb0a97bed3c06ccde6b880013b1dddc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPW2100"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ipw2100_pci_init_one"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1a3746ccbb0a97bed3c06ccde6b880013b1dddc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPW2100"],"series_id":"b5bd17ee-c86f-409a-9df5-238622954789","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-06-20 07:09:36 +0000 UTC FinishedAt: 2026-06-20 07:11:41 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*a8280e9b-f2cf-41ce-9d36-351ca5a9d569,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-workflowmnh4c/series-workflowmnh4c-build-action-2222956395/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-workflowmnh4c[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1a3746ccbb0a97bed3c06ccde6b880013b1dddc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPW2100"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ipw2100_pci_init_one"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1a3746ccbb0a97bed3c06ccde6b880013b1dddc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPW2100"],"series_id":"b5bd17ee-c86f-409a-9df5-238622954789","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-06-20 07:11:51 +0000 UTC FinishedAt: 2026-06-20 07:14:59 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmnh4c[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1a3746ccbb0a97bed3c06ccde6b880013b1dddc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPW2100"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ipw2100_pci_init_one"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1a3746ccbb0a97bed3c06ccde6b880013b1dddc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPW2100"],"series_id":"b5bd17ee-c86f-409a-9df5-238622954789","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-06-20 07:11:51 +0000 UTC FinishedAt: 2026-06-20 07:14:59 +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":["ipw2100_pci_init_one"],"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:*fdb517c0-58ca-4fb2-a462-297ee2aa78cc,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*a8280e9b-f2cf-41ce-9d36-351ca5a9d569,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-workflowmnh4c/series-workflowmnh4c-build-action-2414016518/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-workflowmnh4c/series-workflowmnh4c-build-action-2222956395/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowmnh4c[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1a3746ccbb0a97bed3c06ccde6b880013b1dddc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPW2100"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ipw2100_pci_init_one"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1a3746ccbb0a97bed3c06ccde6b880013b1dddc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPW2100"],"series_id":"b5bd17ee-c86f-409a-9df5-238622954789","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-06-20 07:11:51 +0000 UTC FinishedAt: 2026-06-20 07:12:12 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmnh4c[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1a3746ccbb0a97bed3c06ccde6b880013b1dddc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPW2100"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ipw2100_pci_init_one"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1a3746ccbb0a97bed3c06ccde6b880013b1dddc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPW2100"],"series_id":"b5bd17ee-c86f-409a-9df5-238622954789","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-06-20 07:11:51 +0000 UTC FinishedAt: 2026-06-20 07:11:59 +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":["ipw2100_pci_init_one"],"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-workflowmnh4c/series-workflowmnh4c-convert-artifact-218381632/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowmnh4c[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1a3746ccbb0a97bed3c06ccde6b880013b1dddc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPW2100"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ipw2100_pci_init_one"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1a3746ccbb0a97bed3c06ccde6b880013b1dddc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPW2100"],"series_id":"b5bd17ee-c86f-409a-9df5-238622954789","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-06-20 07:11:51 +0000 UTC FinishedAt: 2026-06-20 07:11:51 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmnh4c[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1a3746ccbb0a97bed3c06ccde6b880013b1dddc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPW2100"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ipw2100_pci_init_one"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1a3746ccbb0a97bed3c06ccde6b880013b1dddc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPW2100"],"series_id":"b5bd17ee-c86f-409a-9df5-238622954789","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-06-20 07:11:51 +0000 UTC FinishedAt: 2026-06-20 07:11:51 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmnh4c[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1a3746ccbb0a97bed3c06ccde6b880013b1dddc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPW2100"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ipw2100_pci_init_one"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1a3746ccbb0a97bed3c06ccde6b880013b1dddc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPW2100"],"series_id":"b5bd17ee-c86f-409a-9df5-238622954789","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-06-20 07:11:51 +0000 UTC FinishedAt: 2026-06-20 07:11:51 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmnh4c[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1a3746ccbb0a97bed3c06ccde6b880013b1dddc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPW2100"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ipw2100_pci_init_one"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1a3746ccbb0a97bed3c06ccde6b880013b1dddc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPW2100"],"series_id":"b5bd17ee-c86f-409a-9df5-238622954789","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-06-20 07:12:12 +0000 UTC FinishedAt: 2026-06-20 07:14:59 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmnh4c[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1a3746ccbb0a97bed3c06ccde6b880013b1dddc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPW2100"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ipw2100_pci_init_one"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1a3746ccbb0a97bed3c06ccde6b880013b1dddc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPW2100"],"series_id":"b5bd17ee-c86f-409a-9df5-238622954789","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-06-20 07:12:12 +0000 UTC FinishedAt: 2026-06-20 07:14:38 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*fdb517c0-58ca-4fb2-a462-297ee2aa78cc,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*a8280e9b-f2cf-41ce-9d36-351ca5a9d569,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-workflowmnh4c/series-workflowmnh4c-build-action-2414016518/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-workflowmnh4c/series-workflowmnh4c-build-action-2222956395/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-workflowmnh4c/series-workflowmnh4c-convert-artifact-218381632/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,}