Name: series-workflowp9b7c Phase: Succeeded StartedAt: 2026-08-05 12:17:06 +0000 UTC FinishedAt: 2026-08-05 16:01:06 +0000 UTC Input: nil Output: nil --------- Name: series-workflowp9b7c[0] Phase: Succeeded StartedAt: 2026-08-05 12:17:06 +0000 UTC FinishedAt: 2026-08-05 12:19:56 +0000 UTC Input: nil Output: nil --------- Name: series-workflowp9b7c[0].run-triage Phase: Succeeded StartedAt: 2026-08-05 12:17:06 +0000 UTC FinishedAt: 2026-08-05 12:19:56 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "linux-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next", "commit_hash": "6c5fc504d0d6934132637aa3db4b9b58148eaa78", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "CFG80211", "MAC80211", "MAC80211_HWSIM" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "linux-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next", "commit_hash": "6c5fc504d0d6934132637aa3db4b9b58148eaa78", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "CFG80211", "MAC80211", "MAC80211_HWSIM" ], "series_id": "93ca1051-b648-4df1-a8e9-869d8d0fd39f" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "nl80211_set_pmk", "nl80211_send_connect_result", "nl80211_send_roamed", "cfg80211_connect_done", "cfg80211_roamed" ], "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+CgkJCTx0ZD4yMDI2LzA4LzA1IDEyOjE4PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0NGRzgwMjExJiMzNDssCiAgICAmIzM0O01BQzgwMjExJiMzNDssCiAgICAmIzM0O01BQzgwMjExX0hXU0lNJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7bmw4MDIxMV9zZXRfcG1rJiMzNDssCiAgICAmIzM0O25sODAyMTFfc2VuZF9jb25uZWN0X3Jlc3VsdCYjMzQ7LAogICAgJiMzNDtubDgwMjExX3NlbmRfcm9hbWVkJiMzNDssCiAgICAmIzM0O2NmZzgwMjExX2Nvbm5lY3RfZG9uZSYjMzQ7LAogICAgJiMzNDtjZmc4MDIxMV9yb2FtZWQmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBhIG5ldyAmIzM5O2F1dGhvcml6ZWQmIzM5OyBmbGFnIHRvIGNvbm5lY3Rpb24gYW5kIHJvYW1pbmcgcmVzcG9uc2UgcGFyYW1ldGVycyBpbiBjZmc4MDIxMSwgZXhwb3NpbmcgaXQgdG8gdXNlcnNwYWNlIHZpYSB0aGUgTkw4MDIxMV9BVFRSX1BPUlRfQVVUSE9SSVpFRCBuZXRsaW5rIGF0dHJpYnV0ZS4gSXQgYWxzbyBpbnRyb2R1Y2VzIHRoZSBOTDgwMjExX0VYVF9GRUFUVVJFX1JPQU1fT0ZGTE9BRCBmZWF0dXJlIGZsYWcgYW5kIG1vZGlmaWVzIG5sODAyMTFfc2V0X3BtayB0byBhbGxvdyBzZXR0aW5nIHRoZSBQTUsgd2hlbiB0aGlzIGZlYXR1cmUgaXMgc3VwcG9ydGVkLiBUaGVzZSBhcmUgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBjb3JlIHdpcmVsZXNzIHN1YnN5c3RlbSAoY2ZnODAyMTEpIGFuZCBpdHMgbmV0bGluayBBUEksIHdoaWNoIGNhbiBiZSByZWFjaGVkIGFuZCB0ZXN0ZWQgdXNpbmcgdGhlIHNvZnR3YXJlLWVtdWxhdGVkIG1hYzgwMjExX2h3c2ltIGRyaXZlci4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNSAxMjoxODwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDU2NWY3ZWU4YmI0OWU3YzNiNDk5ZjgxZjczNDc2MTU3MzdmMDEyODVcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgV2VkIEF1ZyA1IDEyOjE4OjM2IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmV0L2NmZzgwMjExLmggYi9pbmNsdWRlL25ldC9jZmc4MDIxMS5oXG5pbmRleCA5N2MxNmQ0ZmYxMjcxLi43ZjU3NmJiNzMyNWM3IDEwMDY0NFxuLS0tIGEvaW5jbHVkZS9uZXQvY2ZnODAyMTEuaFxuJiM0MzsmIzQzOyYjNDM7IGIvaW5jbHVkZS9uZXQvY2ZnODAyMTEuaFxuQEAgLTkxMDMsNiAmIzQzOzkxMDMsOCBAQCBzdHJ1Y3QgY2ZnODAyMTFfZmlsc19yZXNwX3BhcmFtcyB7XG4gICogQGFzc29jX2VuY3J5cHRlZDogVGhlIGRyaXZlciBzaG91bGQgc2V0IHRoaXMgZmxhZyB0byBpbmRpY2F0ZSB0aGF0IHRoZVxuICAqXHQoUmUpQXNzb2NpYXRpb24gUmVxdWVzdC9SZXNwb25zZSBmcmFtZXMgYXJlIHRyYW5zbWl0dGVkIGVuY3J5cHRlZCBvdmVyXG4gICpcdHRoZSBhaXIuXG4mIzQzOyAqIEBhdXRob3JpemVkOiBJbmRpY2F0ZXMgd2hldGhlciB0aGUgY29ubmVjdGlvbiBpcyByZWFkeSB0byB0cmFuc3BvcnQgZGF0YVxuJiM0MzsgKlx0cGFja2V0cy5cbiAgKi9cbiBzdHJ1Y3QgY2ZnODAyMTFfY29ubmVjdF9yZXNwX3BhcmFtcyB7XG4gXHRpbnQgc3RhdHVzO1xuQEAgLTkxMTMsNiAmIzQzOzkxMTUsNyBAQCBzdHJ1Y3QgY2ZnODAyMTFfY29ubmVjdF9yZXNwX3BhcmFtcyB7XG4gXHRzdHJ1Y3QgY2ZnODAyMTFfZmlsc19yZXNwX3BhcmFtcyBmaWxzO1xuIFx0ZW51bSBubDgwMjExX3RpbWVvdXRfcmVhc29uIHRpbWVvdXRfcmVhc29uO1xuIFx0Ym9vbCBhc3NvY19lbmNyeXB0ZWQ7XG4mIzQzO1x0Ym9vbCBhdXRob3JpemVkO1xuIFxuIFx0Y29uc3QgdTggKmFwX21sZF9hZGRyO1xuIFx0dTE2IHZhbGlkX2xpbmtzO1xuQEAgLTkyODEsNiAmIzQzOzkyODQsOCBAQCBjZmc4MDIxMV9jb25uZWN0X3RpbWVvdXQoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgY29uc3QgdTggKmJzc2lkLFxuICAqIEBsaW5rcy5ic3M6IEZvciBNTE8gcm9hbWluZywgZW50cnkgb2YgbmV3IGJzcyB0byB3aGljaCBTVEEgbGluayBnb3RcbiAgKlx0cm9hbWVkLiBGb3Igbm9uLU1MTyByb2FtaW5nLCBsaW5rc1swXS5ic3MgcG9pbnRzIHRvIGVudHJ5IG9mIGJzcyB0b1xuICAqXHR3aGljaCBTVEEgZ290IHJvYW1lZCAobWF5IGJlICVOVUxMIGlmICVsaW5rcy5ic3NpZCBpcyBzZXQpXG4mIzQzOyAqIEBhdXRob3JpemVkOiBJbmRpY2F0ZXMgd2hldGhlciB0aGUgbmV3IGNvbm5lY3Rpb24gaXMgcmVhZHkgdG8gdHJhbnNwb3J0IGRhdGFcbiYjNDM7ICpcdHBhY2tldHMuXG4gICovXG4gc3RydWN0IGNmZzgwMjExX3JvYW1faW5mbyB7XG4gXHRjb25zdCB1OCAqcmVxX2llO1xuQEAgLTkyOTcsNiAmIzQzOzkzMDIsNyBAQCBzdHJ1Y3QgY2ZnODAyMTFfcm9hbV9pbmZvIHtcbiBcdFx0c3RydWN0IGllZWU4MDIxMV9jaGFubmVsICpjaGFubmVsO1xuIFx0XHRzdHJ1Y3QgY2ZnODAyMTFfYnNzICpic3M7XG4gXHR9IGxpbmtzW0lFRUU4MDIxMV9NTERfTUFYX05VTV9MSU5LU107XG4mIzQzO1x0Ym9vbCBhdXRob3JpemVkO1xuIH07XG4gXG4gLyoqXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS91YXBpL2xpbnV4L25sODAyMTEuaCBiL2luY2x1ZGUvdWFwaS9saW51eC9ubDgwMjExLmhcbmluZGV4IDAyMDM4N2Q3NjQxMjIuLjJiOTZhMThkZWY5YjMgMTAwNjQ0XG4tLS0gYS9pbmNsdWRlL3VhcGkvbGludXgvbmw4MDIxMS5oXG4mIzQzOyYjNDM7JiM0MzsgYi9pbmNsdWRlL3VhcGkvbGludXgvbmw4MDIxMS5oXG5AQCAtMjcwNSw3ICYjNDM7MjcwNSw5IEBAIGVudW0gbmw4MDIxMV9jb21tYW5kcyB7XG4gICpcdGluICVOTDgwMjExX0NNRF9DT05ORUNUIHRvIGluZGljYXRlIHRoYXQgZm9yIDgwMi4xWCBhdXRoZW50aWNhdGlvbiBpdFxuICAqXHR3YW50cyB0byB1c2UgdGhlIHN1cHBvcnRlZCBvZmZsb2FkIG9mIHRoZSA0LXdheSBoYW5kc2hha2UuXG4gICogQE5MODAyMTFfQVRUUl9QTUtSMF9OQU1FOiBQTUstUjAgTmFtZSBmb3Igb2ZmbG9hZGVkIEZULlxuLSAqIEBOTDgwMjExX0FUVFJfUE9SVF9BVVRIT1JJWkVEOiAocmVzZXJ2ZWQpXG4mIzQzOyAqIEBOTDgwMjExX0FUVFJfUE9SVF9BVVRIT1JJWkVEOiBmbGFnIGF0dHJpYnV0ZSB1c2VkIGluICVOTDgwMjExX0NNRF9DT05ORUNUXG4mIzQzOyAqXHRvciAlTkw4MDIxMV9DTURfUk9BTSBub3RpZmljYXRpb25zIHRvIGluZGljYXRlIHRoYXQgODAyLjFYXG4mIzQzOyAqXHRhdXRoZW50aWNhdGlvbiB3YXMgZG9uZSBieSB0aGUgZHJpdmVyIG9yIGlzIG5vdCBuZWVkZWQuXG4gICpcbiAgKiBATkw4MDIxMV9BVFRSX0VYVEVSTkFMX0FVVEhfQUNUSU9OOiBJZGVudGlmeSB0aGUgcmVxdWVzdGVkIGV4dGVybmFsXG4gICogICAgIGF1dGhlbnRpY2F0aW9uIG9wZXJhdGlvbiAodTMyIGF0dHJpYnV0ZSB3aXRoIGFuXG5AQCAtNzExMCw2ICYjNDM7NzExMiw5IEBAIGVudW0gbmw4MDIxMV9mZWF0dXJlX2ZsYWdzIHtcbiAgKiBATkw4MDIxMV9FWFRfRkVBVFVSRV9QUk9CRV9BUDogRHJpdmVyIHN1cHBvcnRzIHByb2JpbmcgdGhlIGFzc29jaWF0ZWQgQVBcbiAgKlx0aW4gU1RBIG1vZGUgdXNpbmcgQE5MODAyMTFfQ01EX1BST0JFX1BFRVIuXG4gICpcbiYjNDM7ICogQE5MODAyMTFfRVhUX0ZFQVRVUkVfUk9BTV9PRkZMT0FEOiBEcml2ZXIgc3VwcG9ydHMgRmFzdCBUcmFuc2l0aW9uIG9yXG4mIzQzOyAqXHRPcHBvcnR1bmlzdGljIEtleSBDYWNoaW5nIHJvYW1pbmcgb2ZmbG9hZCBpbiBzdGF0aW9uIG1vZGUuXG4mIzQzOyAqXG4gICogQE5VTV9OTDgwMjExX0VYVF9GRUFUVVJFUzogbnVtYmVyIG9mIGV4dGVuZGVkIGZlYXR1cmVzLlxuICAqIEBNQVhfTkw4MDIxMV9FWFRfRkVBVFVSRVM6IGhpZ2hlc3QgZXh0ZW5kZWQgZmVhdHVyZSBpbmRleC5cbiAgKi9cbkBAIC03MTkyLDYgJiM0Mzs3MTk3LDcgQEAgZW51bSBubDgwMjExX2V4dF9mZWF0dXJlX2luZGV4IHtcbiBcdE5MODAyMTFfRVhUX0ZFQVRVUkVfUk9DX0FERFJfRklMVEVSLFxuIFx0Tkw4MDIxMV9FWFRfRkVBVFVSRV9TRVRfS0VZX0xURl9TRUVELFxuIFx0Tkw4MDIxMV9FWFRfRkVBVFVSRV9QUk9CRV9BUCxcbiYjNDM7XHROTDgwMjExX0VYVF9GRUFUVVJFX1JPQU1fT0ZGTE9BRCxcbiBcbiBcdC8qIGFkZCBuZXcgZmVhdHVyZXMgYmVmb3JlIHRoZSBkZWZpbml0aW9uIGJlbG93ICovXG4gXHROVU1fTkw4MDIxMV9FWFRfRkVBVFVSRVMsXG5kaWZmIC0tZ2l0IGEvbmV0L3dpcmVsZXNzL25sODAyMTEuYyBiL25ldC93aXJlbGVzcy9ubDgwMjExLmNcbmluZGV4IDQ0ZjJiYWQwODY3MDUuLjdkYmQ0Y2FmMjYwOTEgMTAwNjQ0XG4tLS0gYS9uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jXG5AQCAtMTg0NDMsNyAmIzQzOzE4NDQzLDkgQEAgc3RhdGljIGludCBubDgwMjExX3NldF9wbWsoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGdlbmxfaW5mbyAqaW5mbylcbiBcdFx0cmV0dXJuIC1FT1BOT1RTVVBQO1xuIFxuIFx0aWYgKCF3aXBoeV9leHRfZmVhdHVyZV9pc3NldChcdTAwMjZyZGV2LVx1MDAzZXdpcGh5LFxuLVx0XHRcdFx0ICAgICBOTDgwMjExX0VYVF9GRUFUVVJFXzRXQVlfSEFORFNIQUtFX1NUQV8xWCkpXG4mIzQzO1x0XHRcdFx0ICAgICBOTDgwMjExX0VYVF9GRUFUVVJFXzRXQVlfSEFORFNIQUtFX1NUQV8xWCkgXHUwMDI2XHUwMDI2XG4mIzQzO1x0ICAgICF3aXBoeV9leHRfZmVhdHVyZV9pc3NldChcdTAwMjZyZGV2LVx1MDAzZXdpcGh5LFxuJiM0MztcdFx0XHRcdCAgICAgTkw4MDIxMV9FWFRfRkVBVFVSRV9ST0FNX09GRkxPQUQpKVxuIFx0XHRyZXR1cm4gLUVPUE5PVFNVUFA7XG4gXG4gXHRpZiAoIWluZm8tXHUwMDNlYXR0cnNbTkw4MDIxMV9BVFRSX01BQ10gfHwgIWluZm8tXHUwMDNlYXR0cnNbTkw4MDIxMV9BVFRSX1BNS10pXG5AQCAtMjExOTgsNiAmIzQzOzIxMjAwLDggQEAgdm9pZCBubDgwMjExX3NlbmRfY29ubmVjdF9yZXN1bHQoc3RydWN0IGNmZzgwMjExX3JlZ2lzdGVyZWRfZGV2aWNlICpyZGV2LFxuIFx0ICAgICAobmxhX3B1dF9mbGFnKG1zZywgTkw4MDIxMV9BVFRSX1RJTUVEX09VVCkgfHxcbiBcdCAgICAgIG5sYV9wdXRfdTMyKG1zZywgTkw4MDIxMV9BVFRSX1RJTUVPVVRfUkVBU09OLFxuIFx0XHRcdCAgY3ItXHUwMDNldGltZW91dF9yZWFzb24pKSkgfHxcbiYjNDM7XHQgICAgKGNyLVx1MDAzZWF1dGhvcml6ZWQgXHUwMDI2XHUwMDI2XG4mIzQzO1x0ICAgICBubGFfcHV0X2ZsYWcobXNnLCBOTDgwMjExX0FUVFJfUE9SVF9BVVRIT1JJWkVEKSkgfHxcbiBcdCAgICAoY3ItXHUwMDNlcmVxX2llIFx1MDAyNlx1MDAyNlxuIFx0ICAgICBubGFfcHV0KG1zZywgTkw4MDIxMV9BVFRSX1JFUV9JRSwgY3ItXHUwMDNlcmVxX2llX2xlbiwgY3ItXHUwMDNlcmVxX2llKSkgfHxcbiBcdCAgICAoY3ItXHUwMDNlcmVzcF9pZSBcdTAwMjZcdTAwMjZcbkBAIC0yMTMyMSw3ICYjNDM7MjEzMjUsOSBAQCB2b2lkIG5sODAyMTFfc2VuZF9yb2FtZWQoc3RydWN0IGNmZzgwMjExX3JlZ2lzdGVyZWRfZGV2aWNlICpyZGV2LFxuIFx0ICAgIChpbmZvLVx1MDAzZWZpbHMucG1rIFx1MDAyNlx1MDAyNlxuIFx0ICAgICBubGFfcHV0KG1zZywgTkw4MDIxMV9BVFRSX1BNSywgaW5mby1cdTAwM2VmaWxzLnBta19sZW4sIGluZm8tXHUwMDNlZmlscy5wbWspKSB8fFxuIFx0ICAgIChpbmZvLVx1MDAzZWZpbHMucG1raWQgXHUwMDI2XHUwMDI2XG4tXHQgICAgIG5sYV9wdXQobXNnLCBOTDgwMjExX0FUVFJfUE1LSUQsIFdMQU5fUE1LSURfTEVOLCBpbmZvLVx1MDAzZWZpbHMucG1raWQpKSlcbiYjNDM7XHQgICAgIG5sYV9wdXQobXNnLCBOTDgwMjExX0FUVFJfUE1LSUQsIFdMQU5fUE1LSURfTEVOLCBpbmZvLVx1MDAzZWZpbHMucG1raWQpKSB8fFxuJiM0MztcdCAgICAoaW5mby1cdTAwM2VhdXRob3JpemVkIFx1MDAyNlx1MDAyNlxuJiM0MztcdCAgICAgbmxhX3B1dF9mbGFnKG1zZywgTkw4MDIxMV9BVFRSX1BPUlRfQVVUSE9SSVpFRCkpKVxuIFx0XHRnb3RvIG5sYV9wdXRfZmFpbHVyZTtcbiBcbiBcdGlmIChpbmZvLVx1MDAzZXZhbGlkX2xpbmtzKSB7XG5kaWZmIC0tZ2l0IGEvbmV0L3dpcmVsZXNzL3NtZS5jIGIvbmV0L3dpcmVsZXNzL3NtZS5jXG5pbmRleCAyYTcxOWI1YzQ4N2UzLi45NzRlNzlmNTczOTJkIDEwMDY0NFxuLS0tIGEvbmV0L3dpcmVsZXNzL3NtZS5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvd2lyZWxlc3Mvc21lLmNcbkBAIC0xMDY3LDYgJiM0MzsxMDY3LDcgQEAgdm9pZCBjZmc4MDIxMV9jb25uZWN0X2RvbmUoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbiBcdGV2LVx1MDAzZWNyLnN0YXR1cyA9IHBhcmFtcy1cdTAwM2VzdGF0dXM7XG4gXHRldi1cdTAwM2Vjci50aW1lb3V0X3JlYXNvbiA9IHBhcmFtcy1cdTAwM2V0aW1lb3V0X3JlYXNvbjtcbiBcdGV2LVx1MDAzZWNyLmFzc29jX2VuY3J5cHRlZCA9IHBhcmFtcy1cdTAwM2Vhc3NvY19lbmNyeXB0ZWQ7XG4mIzQzO1x0ZXYtXHUwMDNlY3IuYXV0aG9yaXplZCA9IHBhcmFtcy1cdTAwM2VhdXRob3JpemVkO1xuIFxuIFx0c3Bpbl9sb2NrX2lycXNhdmUoXHUwMDI2d2Rldi1cdTAwM2VldmVudF9sb2NrLCBmbGFncyk7XG4gXHRsaXN0X2FkZF90YWlsKFx1MDAyNmV2LVx1MDAzZWxpc3QsIFx1MDAyNndkZXYtXHUwMDNlZXZlbnRfbGlzdCk7XG5AQCAtMTI1Myw2ICYjNDM7MTI1NCw3IEBAIHZvaWQgY2ZnODAyMTFfcm9hbWVkKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBjZmc4MDIxMV9yb2FtX2luZm8gKmluZm8sXG4gXHRcdG5leHQgJiM0Mzs9IEVUSF9BTEVOO1xuIFx0fVxuIFx0ZXYtXHUwMDNlcm0udmFsaWRfbGlua3MgPSBpbmZvLVx1MDAzZXZhbGlkX2xpbmtzO1xuJiM0MztcdGV2LVx1MDAzZXJtLmF1dGhvcml6ZWQgPSBpbmZvLVx1MDAzZWF1dGhvcml6ZWQ7XG4gXHRmb3JfZWFjaF92YWxpZF9saW5rKGluZm8sIGxpbmspIHtcbiBcdFx0ZXYtXHUwMDNlcm0ubGlua3NbbGlua10uYnNzID0gaW5mby1cdTAwM2VsaW5rc1tsaW5rXS5ic3M7XG4gXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDUgMTI6MTg8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0NGRzgwMjExJiMzNDssCiAgICAmIzM0O01BQzgwMjExJiMzNDssCiAgICAmIzM0O01BQzgwMjExX0hXU0lNJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7bmw4MDIxMV9zZXRfcG1rJiMzNDssCiAgICAmIzM0O25sODAyMTFfc2VuZF9jb25uZWN0X3Jlc3VsdCYjMzQ7LAogICAgJiMzNDtubDgwMjExX3NlbmRfcm9hbWVkJiMzNDssCiAgICAmIzM0O2NmZzgwMjExX2Nvbm5lY3RfZG9uZSYjMzQ7LAogICAgJiMzNDtjZmc4MDIxMV9yb2FtZWQmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBhIG5ldyAmIzM5O2F1dGhvcml6ZWQmIzM5OyBmbGFnIHRvIGNvbm5lY3Rpb24gYW5kIHJvYW1pbmcgcmVzcG9uc2UgcGFyYW1ldGVycyBpbiBjZmc4MDIxMSwgZXhwb3NpbmcgaXQgdG8gdXNlcnNwYWNlIHZpYSB0aGUgTkw4MDIxMV9BVFRSX1BPUlRfQVVUSE9SSVpFRCBuZXRsaW5rIGF0dHJpYnV0ZS4gSXQgYWxzbyBpbnRyb2R1Y2VzIHRoZSBOTDgwMjExX0VYVF9GRUFUVVJFX1JPQU1fT0ZGTE9BRCBmZWF0dXJlIGZsYWcgYW5kIG1vZGlmaWVzIG5sODAyMTFfc2V0X3BtayB0byBhbGxvdyBzZXR0aW5nIHRoZSBQTUsgd2hlbiB0aGlzIGZlYXR1cmUgaXMgc3VwcG9ydGVkLiBUaGVzZSBhcmUgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBjb3JlIHdpcmVsZXNzIHN1YnN5c3RlbSAoY2ZnODAyMTEpIGFuZCBpdHMgbmV0bGluayBBUEksIHdoaWNoIGNhbiBiZSByZWFjaGVkIGFuZCB0ZXN0ZWQgdXNpbmcgdGhlIHNvZnR3YXJlLWVtdWxhdGVkIG1hYzgwMjExX2h3c2ltIGRyaXZlci4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDU2NWY3ZWU4YmI0OWU3YzNiNDk5ZjgxZjczNDc2MTU3MzdmMDEyODUKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgV2VkIEF1ZyA1IDEyOjE4OjM2IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZXQvY2ZnODAyMTEuaCBiL2luY2x1ZGUvbmV0L2NmZzgwMjExLmgKaW5kZXggOTdjMTZkNGZmMTI3MS4uN2Y1NzZiYjczMjVjNyAxMDA2NDQKLS0tIGEvaW5jbHVkZS9uZXQvY2ZnODAyMTEuaAomIzQzOyYjNDM7JiM0MzsgYi9pbmNsdWRlL25ldC9jZmc4MDIxMS5oCkBAIC05MTAzLDYgJiM0Mzs5MTAzLDggQEAgc3RydWN0IGNmZzgwMjExX2ZpbHNfcmVzcF9wYXJhbXMgewogICogQGFzc29jX2VuY3J5cHRlZDogVGhlIGRyaXZlciBzaG91bGQgc2V0IHRoaXMgZmxhZyB0byBpbmRpY2F0ZSB0aGF0IHRoZQogICoJKFJlKUFzc29jaWF0aW9uIFJlcXVlc3QvUmVzcG9uc2UgZnJhbWVzIGFyZSB0cmFuc21pdHRlZCBlbmNyeXB0ZWQgb3ZlcgogICoJdGhlIGFpci4KJiM0MzsgKiBAYXV0aG9yaXplZDogSW5kaWNhdGVzIHdoZXRoZXIgdGhlIGNvbm5lY3Rpb24gaXMgcmVhZHkgdG8gdHJhbnNwb3J0IGRhdGEKJiM0MzsgKglwYWNrZXRzLgogICovCiBzdHJ1Y3QgY2ZnODAyMTFfY29ubmVjdF9yZXNwX3BhcmFtcyB7CiAJaW50IHN0YXR1czsKQEAgLTkxMTMsNiAmIzQzOzkxMTUsNyBAQCBzdHJ1Y3QgY2ZnODAyMTFfY29ubmVjdF9yZXNwX3BhcmFtcyB7CiAJc3RydWN0IGNmZzgwMjExX2ZpbHNfcmVzcF9wYXJhbXMgZmlsczsKIAllbnVtIG5sODAyMTFfdGltZW91dF9yZWFzb24gdGltZW91dF9yZWFzb247CiAJYm9vbCBhc3NvY19lbmNyeXB0ZWQ7CiYjNDM7CWJvb2wgYXV0aG9yaXplZDsKIAogCWNvbnN0IHU4ICphcF9tbGRfYWRkcjsKIAl1MTYgdmFsaWRfbGlua3M7CkBAIC05MjgxLDYgJiM0Mzs5Mjg0LDggQEAgY2ZnODAyMTFfY29ubmVjdF90aW1lb3V0KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIGNvbnN0IHU4ICpic3NpZCwKICAqIEBsaW5rcy5ic3M6IEZvciBNTE8gcm9hbWluZywgZW50cnkgb2YgbmV3IGJzcyB0byB3aGljaCBTVEEgbGluayBnb3QKICAqCXJvYW1lZC4gRm9yIG5vbi1NTE8gcm9hbWluZywgbGlua3NbMF0uYnNzIHBvaW50cyB0byBlbnRyeSBvZiBic3MgdG8KICAqCXdoaWNoIFNUQSBnb3Qgcm9hbWVkIChtYXkgYmUgJU5VTEwgaWYgJWxpbmtzLmJzc2lkIGlzIHNldCkKJiM0MzsgKiBAYXV0aG9yaXplZDogSW5kaWNhdGVzIHdoZXRoZXIgdGhlIG5ldyBjb25uZWN0aW9uIGlzIHJlYWR5IHRvIHRyYW5zcG9ydCBkYXRhCiYjNDM7ICoJcGFja2V0cy4KICAqLwogc3RydWN0IGNmZzgwMjExX3JvYW1faW5mbyB7CiAJY29uc3QgdTggKnJlcV9pZTsKQEAgLTkyOTcsNiAmIzQzOzkzMDIsNyBAQCBzdHJ1Y3QgY2ZnODAyMTFfcm9hbV9pbmZvIHsKIAkJc3RydWN0IGllZWU4MDIxMV9jaGFubmVsICpjaGFubmVsOwogCQlzdHJ1Y3QgY2ZnODAyMTFfYnNzICpic3M7CiAJfSBsaW5rc1tJRUVFODAyMTFfTUxEX01BWF9OVU1fTElOS1NdOwomIzQzOwlib29sIGF1dGhvcml6ZWQ7CiB9OwogCiAvKioKZGlmZiAtLWdpdCBhL2luY2x1ZGUvdWFwaS9saW51eC9ubDgwMjExLmggYi9pbmNsdWRlL3VhcGkvbGludXgvbmw4MDIxMS5oCmluZGV4IDAyMDM4N2Q3NjQxMjIuLjJiOTZhMThkZWY5YjMgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvdWFwaS9saW51eC9ubDgwMjExLmgKJiM0MzsmIzQzOyYjNDM7IGIvaW5jbHVkZS91YXBpL2xpbnV4L25sODAyMTEuaApAQCAtMjcwNSw3ICYjNDM7MjcwNSw5IEBAIGVudW0gbmw4MDIxMV9jb21tYW5kcyB7CiAgKglpbiAlTkw4MDIxMV9DTURfQ09OTkVDVCB0byBpbmRpY2F0ZSB0aGF0IGZvciA4MDIuMVggYXV0aGVudGljYXRpb24gaXQKICAqCXdhbnRzIHRvIHVzZSB0aGUgc3VwcG9ydGVkIG9mZmxvYWQgb2YgdGhlIDQtd2F5IGhhbmRzaGFrZS4KICAqIEBOTDgwMjExX0FUVFJfUE1LUjBfTkFNRTogUE1LLVIwIE5hbWUgZm9yIG9mZmxvYWRlZCBGVC4KLSAqIEBOTDgwMjExX0FUVFJfUE9SVF9BVVRIT1JJWkVEOiAocmVzZXJ2ZWQpCiYjNDM7ICogQE5MODAyMTFfQVRUUl9QT1JUX0FVVEhPUklaRUQ6IGZsYWcgYXR0cmlidXRlIHVzZWQgaW4gJU5MODAyMTFfQ01EX0NPTk5FQ1QKJiM0MzsgKglvciAlTkw4MDIxMV9DTURfUk9BTSBub3RpZmljYXRpb25zIHRvIGluZGljYXRlIHRoYXQgODAyLjFYCiYjNDM7ICoJYXV0aGVudGljYXRpb24gd2FzIGRvbmUgYnkgdGhlIGRyaXZlciBvciBpcyBub3QgbmVlZGVkLgogICoKICAqIEBOTDgwMjExX0FUVFJfRVhURVJOQUxfQVVUSF9BQ1RJT046IElkZW50aWZ5IHRoZSByZXF1ZXN0ZWQgZXh0ZXJuYWwKICAqICAgICBhdXRoZW50aWNhdGlvbiBvcGVyYXRpb24gKHUzMiBhdHRyaWJ1dGUgd2l0aCBhbgpAQCAtNzExMCw2ICYjNDM7NzExMiw5IEBAIGVudW0gbmw4MDIxMV9mZWF0dXJlX2ZsYWdzIHsKICAqIEBOTDgwMjExX0VYVF9GRUFUVVJFX1BST0JFX0FQOiBEcml2ZXIgc3VwcG9ydHMgcHJvYmluZyB0aGUgYXNzb2NpYXRlZCBBUAogICoJaW4gU1RBIG1vZGUgdXNpbmcgQE5MODAyMTFfQ01EX1BST0JFX1BFRVIuCiAgKgomIzQzOyAqIEBOTDgwMjExX0VYVF9GRUFUVVJFX1JPQU1fT0ZGTE9BRDogRHJpdmVyIHN1cHBvcnRzIEZhc3QgVHJhbnNpdGlvbiBvcgomIzQzOyAqCU9wcG9ydHVuaXN0aWMgS2V5IENhY2hpbmcgcm9hbWluZyBvZmZsb2FkIGluIHN0YXRpb24gbW9kZS4KJiM0MzsgKgogICogQE5VTV9OTDgwMjExX0VYVF9GRUFUVVJFUzogbnVtYmVyIG9mIGV4dGVuZGVkIGZlYXR1cmVzLgogICogQE1BWF9OTDgwMjExX0VYVF9GRUFUVVJFUzogaGlnaGVzdCBleHRlbmRlZCBmZWF0dXJlIGluZGV4LgogICovCkBAIC03MTkyLDYgJiM0Mzs3MTk3LDcgQEAgZW51bSBubDgwMjExX2V4dF9mZWF0dXJlX2luZGV4IHsKIAlOTDgwMjExX0VYVF9GRUFUVVJFX1JPQ19BRERSX0ZJTFRFUiwKIAlOTDgwMjExX0VYVF9GRUFUVVJFX1NFVF9LRVlfTFRGX1NFRUQsCiAJTkw4MDIxMV9FWFRfRkVBVFVSRV9QUk9CRV9BUCwKJiM0MzsJTkw4MDIxMV9FWFRfRkVBVFVSRV9ST0FNX09GRkxPQUQsCiAKIAkvKiBhZGQgbmV3IGZlYXR1cmVzIGJlZm9yZSB0aGUgZGVmaW5pdGlvbiBiZWxvdyAqLwogCU5VTV9OTDgwMjExX0VYVF9GRUFUVVJFUywKZGlmZiAtLWdpdCBhL25ldC93aXJlbGVzcy9ubDgwMjExLmMgYi9uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jCmluZGV4IDQ0ZjJiYWQwODY3MDUuLjdkYmQ0Y2FmMjYwOTEgMTAwNjQ0Ci0tLSBhL25ldC93aXJlbGVzcy9ubDgwMjExLmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L3dpcmVsZXNzL25sODAyMTEuYwpAQCAtMTg0NDMsNyAmIzQzOzE4NDQzLDkgQEAgc3RhdGljIGludCBubDgwMjExX3NldF9wbWsoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGdlbmxfaW5mbyAqaW5mbykKIAkJcmV0dXJuIC1FT1BOT1RTVVBQOwogCiAJaWYgKCF3aXBoeV9leHRfZmVhdHVyZV9pc3NldCgmYW1wO3JkZXYtJmd0O3dpcGh5LAotCQkJCSAgICAgTkw4MDIxMV9FWFRfRkVBVFVSRV80V0FZX0hBTkRTSEFLRV9TVEFfMVgpKQomIzQzOwkJCQkgICAgIE5MODAyMTFfRVhUX0ZFQVRVUkVfNFdBWV9IQU5EU0hBS0VfU1RBXzFYKSAmYW1wOyZhbXA7CiYjNDM7CSAgICAhd2lwaHlfZXh0X2ZlYXR1cmVfaXNzZXQoJmFtcDtyZGV2LSZndDt3aXBoeSwKJiM0MzsJCQkJICAgICBOTDgwMjExX0VYVF9GRUFUVVJFX1JPQU1fT0ZGTE9BRCkpCiAJCXJldHVybiAtRU9QTk9UU1VQUDsKIAogCWlmICghaW5mby0mZ3Q7YXR0cnNbTkw4MDIxMV9BVFRSX01BQ10gfHwgIWluZm8tJmd0O2F0dHJzW05MODAyMTFfQVRUUl9QTUtdKQpAQCAtMjExOTgsNiAmIzQzOzIxMjAwLDggQEAgdm9pZCBubDgwMjExX3NlbmRfY29ubmVjdF9yZXN1bHQoc3RydWN0IGNmZzgwMjExX3JlZ2lzdGVyZWRfZGV2aWNlICpyZGV2LAogCSAgICAgKG5sYV9wdXRfZmxhZyhtc2csIE5MODAyMTFfQVRUUl9USU1FRF9PVVQpIHx8CiAJICAgICAgbmxhX3B1dF91MzIobXNnLCBOTDgwMjExX0FUVFJfVElNRU9VVF9SRUFTT04sCiAJCQkgIGNyLSZndDt0aW1lb3V0X3JlYXNvbikpKSB8fAomIzQzOwkgICAgKGNyLSZndDthdXRob3JpemVkICZhbXA7JmFtcDsKJiM0MzsJICAgICBubGFfcHV0X2ZsYWcobXNnLCBOTDgwMjExX0FUVFJfUE9SVF9BVVRIT1JJWkVEKSkgfHwKIAkgICAgKGNyLSZndDtyZXFfaWUgJmFtcDsmYW1wOwogCSAgICAgbmxhX3B1dChtc2csIE5MODAyMTFfQVRUUl9SRVFfSUUsIGNyLSZndDtyZXFfaWVfbGVuLCBjci0mZ3Q7cmVxX2llKSkgfHwKIAkgICAgKGNyLSZndDtyZXNwX2llICZhbXA7JmFtcDsKQEAgLTIxMzIxLDcgJiM0MzsyMTMyNSw5IEBAIHZvaWQgbmw4MDIxMV9zZW5kX3JvYW1lZChzdHJ1Y3QgY2ZnODAyMTFfcmVnaXN0ZXJlZF9kZXZpY2UgKnJkZXYsCiAJICAgIChpbmZvLSZndDtmaWxzLnBtayAmYW1wOyZhbXA7CiAJICAgICBubGFfcHV0KG1zZywgTkw4MDIxMV9BVFRSX1BNSywgaW5mby0mZ3Q7Zmlscy5wbWtfbGVuLCBpbmZvLSZndDtmaWxzLnBtaykpIHx8CiAJICAgIChpbmZvLSZndDtmaWxzLnBta2lkICZhbXA7JmFtcDsKLQkgICAgIG5sYV9wdXQobXNnLCBOTDgwMjExX0FUVFJfUE1LSUQsIFdMQU5fUE1LSURfTEVOLCBpbmZvLSZndDtmaWxzLnBta2lkKSkpCiYjNDM7CSAgICAgbmxhX3B1dChtc2csIE5MODAyMTFfQVRUUl9QTUtJRCwgV0xBTl9QTUtJRF9MRU4sIGluZm8tJmd0O2ZpbHMucG1raWQpKSB8fAomIzQzOwkgICAgKGluZm8tJmd0O2F1dGhvcml6ZWQgJmFtcDsmYW1wOwomIzQzOwkgICAgIG5sYV9wdXRfZmxhZyhtc2csIE5MODAyMTFfQVRUUl9QT1JUX0FVVEhPUklaRUQpKSkKIAkJZ290byBubGFfcHV0X2ZhaWx1cmU7CiAKIAlpZiAoaW5mby0mZ3Q7dmFsaWRfbGlua3MpIHsKZGlmZiAtLWdpdCBhL25ldC93aXJlbGVzcy9zbWUuYyBiL25ldC93aXJlbGVzcy9zbWUuYwppbmRleCAyYTcxOWI1YzQ4N2UzLi45NzRlNzlmNTczOTJkIDEwMDY0NAotLS0gYS9uZXQvd2lyZWxlc3Mvc21lLmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L3dpcmVsZXNzL3NtZS5jCkBAIC0xMDY3LDYgJiM0MzsxMDY3LDcgQEAgdm9pZCBjZmc4MDIxMV9jb25uZWN0X2RvbmUoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwKIAlldi0mZ3Q7Y3Iuc3RhdHVzID0gcGFyYW1zLSZndDtzdGF0dXM7CiAJZXYtJmd0O2NyLnRpbWVvdXRfcmVhc29uID0gcGFyYW1zLSZndDt0aW1lb3V0X3JlYXNvbjsKIAlldi0mZ3Q7Y3IuYXNzb2NfZW5jcnlwdGVkID0gcGFyYW1zLSZndDthc3NvY19lbmNyeXB0ZWQ7CiYjNDM7CWV2LSZndDtjci5hdXRob3JpemVkID0gcGFyYW1zLSZndDthdXRob3JpemVkOwogCiAJc3Bpbl9sb2NrX2lycXNhdmUoJmFtcDt3ZGV2LSZndDtldmVudF9sb2NrLCBmbGFncyk7CiAJbGlzdF9hZGRfdGFpbCgmYW1wO2V2LSZndDtsaXN0LCAmYW1wO3dkZXYtJmd0O2V2ZW50X2xpc3QpOwpAQCAtMTI1Myw2ICYjNDM7MTI1NCw3IEBAIHZvaWQgY2ZnODAyMTFfcm9hbWVkKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBjZmc4MDIxMV9yb2FtX2luZm8gKmluZm8sCiAJCW5leHQgJiM0Mzs9IEVUSF9BTEVOOwogCX0KIAlldi0mZ3Q7cm0udmFsaWRfbGlua3MgPSBpbmZvLSZndDt2YWxpZF9saW5rczsKJiM0MzsJZXYtJmd0O3JtLmF1dGhvcml6ZWQgPSBpbmZvLSZndDthdXRob3JpemVkOwogCWZvcl9lYWNoX3ZhbGlkX2xpbmsoaW5mbywgbGluaykgewogCQlldi0mZ3Q7cm0ubGlua3NbbGlua10uYnNzID0gaW5mby0mZ3Q7bGlua3NbbGlua10uYnNzOwogCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDEyOjE4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQyNTIKCQkJCQkJCW91dHB1dDogNDMKCQkJCQkJCXRob3VnaHRzOiA0MDYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRnV6emluZyBQb3RlbnRpYWw6IEEgRGVlcCBEaXZlIGludG8gdGhlIG1hYzgwMjExL2NmZzgwMjExIFBhdGNoKioKCk9rYXksIGhlcmUmIzM5O3MgdGhlIGJyZWFrZG93bi4gSSYjMzk7dmUgZ290IHRoaXMgcGF0Y2ggdGhhdCYjMzk7cyBtZXNzaW5nIHdpdGggdGhlIGBtYWM4MDIxMS9jZmc4MDIxMWAgc3Vic3lzdGVtLCBzcGVjaWZpY2FsbHkgYG5ldC93aXJlbGVzc2AuIEl0JiMzOTtzIGFkZGluZyBhbiBgYXV0aG9yaXplZGAgZmllbGQgdG8gYGNmZzgwMjExX2Nvbm5lY3RfcmVzcF9wYXJhbXNgIGFuZCBgY2ZnODAyMTFfcm9hbV9pbmZvYCwgd2hpY2ggaW1tZWRpYXRlbHkgcGlxdWVzIG15IGludGVyZXN0LiBBbnl0aW1lIHdlJiMzOTtyZSBtb2RpZnlpbmcgZGF0YSBzdHJ1Y3R1cmVzIGFuZCBhZGRpbmcgbmV3IGF0dHJpYnV0ZXMgaW4gbmV0bGluayBtZXNzYWdlcywgaXQgcmFpc2VzIGEgZmxhZy4gIFBsdXMsIHRoZXJlJiMzOTtzIGEgbmV3IGV4dGVuZGVkIGZlYXR1cmUgZmxhZywgYE5MODAyMTFfRVhUX0ZFQVRVUkVfUk9BTV9PRkZMT0FEYCwgd2hpY2ggdXN1YWxseSBtZWFucyB3ZSYjMzk7cmUgaW50cm9kdWNpbmcgbmV3IGNvZGVwYXRocyBhbmQgc3RhdGUuCgpUaGlzIHBhdGNoIGlzIG1vZGlmeWluZyBjb3JlIHJlYWNoYWJsZSBrZXJuZWwgbG9naWMgcmVsYXRlZCB0byBgY2ZnODAyMTFgIGFuZCBgbmw4MDIxMWAgd2hpY2ggaW1tZWRpYXRlbHkgc2NyZWFtcyBmdXp6aW5nIGNhbmRpZGF0ZS4gVGhlIG1vZGlmaWNhdGlvbiB0byBgbmw4MDIxMV9zZXRfcG1rYCBpcyBlc3BlY2lhbGx5IGludGVyZXN0aW5nLiBJIGtub3cgdGhhdCBmdW5jdGlvbiBpcyBhbiBlbnRyeSBwb2ludCBmcm9tIHVzZXJzcGFjZSB2aWEgdGhlIGBOTDgwMjExX0NNRF9TRVRfUE1LYCBuZXRsaW5rIGNvbW1hbmQuIFRoaXMgbWVhbnMgd2UgaGF2ZSBkaXJlY3QgdXNlci1jb250cm9sbGVkIGlucHV0IHRoYXQmIzM5O3Mgbm93IHRpZWQgdG8gdGhpcyBuZXcgZmVhdHVyZSwgYW5kIHRoYXQgYWx3YXlzIHByZXNlbnRzIGFuIG9wcG9ydHVuaXR5LiBUaGUgZmFjdCB0aGF0IGBubDgwMjExX3NlbmRfY29ubmVjdF9yZXN1bHRgIGFuZCBgbmw4MDIxMV9zZW5kX3JvYW1lZGAgYXJlIHRyaWdnZXJlZCBieSBkcml2ZXIgZXZlbnRzIGlzIGFsc28gcmVsZXZhbnQsIGV2ZW4gaWYgdGhleSBmb3JtYXQgbmV0bGluayBtZXNzYWdlcyB0byB1c2Vyc3BhY2UuCgpOb3csIEkmIzM5O20gZ29pbmcgdG8ganVtcCBpbnRvIHRoZSBjb2RlIGFuZCB2ZXJpZnkgdGhlIGBubDgwMjExX3NldF9wbWtgIGZ1bmN0aW9uIGluIGBuZXQvd2lyZWxlc3Mvbmw4MDIxMS5jYCBhbmQgY2hlY2sgaXRzIGNvbnRleHQuIEkgd2lsbCB1c2UgZ3JlcCBmb3IgZmFzdCBuYXZpZ2F0aW9uIHRvIGluc3BlY3Qgd2hhdCBleGFjdGx5IHRoZSBjaGFuZ2VzIGFyZS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZSBuZXcgYE5MODAyMTFfRVhUX0ZFQVRVUkVfUk9BTV9PRkZMT0FEYCBmZWF0dXJlIGFuZCBgYXV0aG9yaXplZGAgZmllbGQgaW50ZXJhY3Qgd2l0aCB0aGUgZXhpc3RpbmcgZnVuY3Rpb25hbGl0eS4gVGhpcyBpcyB3aGVyZSB0aGUgcmVhbCBmdXp6aW5nIHBvdGVudGlhbCBsaWVzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDEyOjE4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O25sODAyMTFfc2V0X3BtayYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC93aXJlbGVzcy9ubDgwMjExLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L3dpcmVsZXNzL25sODAyMTEuYz0xNDM0ND1zdGF0aWMgaW50IG5sODAyMTFfd2lwaHlfbmV0bnMoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGdlbmxfaW5mbyAqaW5mbylcbi0tXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jLTE0Mzg3LVxubmV0L3dpcmVsZXNzL25sODAyMTEuYzoxNDM4ODpzdGF0aWMgaW50IG5sODAyMTFfc2V0X3Bta3NhKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBnZW5sX2luZm8gKmluZm8pXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jLTE0Mzg5LXtcbi0tXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jPTE4NDEyPXN0YXRpYyBpbnQgbmw4MDIxMV9zZXRfbXVsdGljYXN0X3RvX3VuaWNhc3Qoc3RydWN0IHNrX2J1ZmYgKnNrYixcbi0tXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jLTE4NDMzLVxubmV0L3dpcmVsZXNzL25sODAyMTEuYzoxODQzNDpzdGF0aWMgaW50IG5sODAyMTFfc2V0X3BtayhzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgZ2VubF9pbmZvICppbmZvKVxubmV0L3dpcmVsZXNzL25sODAyMTEuYy0xODQzNS17XG4tLVxubmV0L3dpcmVsZXNzL25sODAyMTEuYz0xOTczNT1zdGF0aWMgY29uc3Qgc3RydWN0IGdlbmxfc21hbGxfb3BzIG5sODAyMTFfc21hbGxfb3BzW10gPSB7XG4tLVxubmV0L3dpcmVsZXNzL25sODAyMTEuYy0yMDA2OS1cdFx0LnZhbGlkYXRlID0gR0VOTF9ET05UX1ZBTElEQVRFX1NUUklDVCB8IEdFTkxfRE9OVF9WQUxJREFURV9EVU1QLFxubmV0L3dpcmVsZXNzL25sODAyMTEuYzoyMDA3MDpcdFx0LmRvaXQgPSBubDgwMjExX3NldF9wbWtzYSxcbm5ldC93aXJlbGVzcy9ubDgwMjExLmMtMjAwNzEtXHRcdC5mbGFncyA9IEdFTkxfVU5TX0FETUlOX1BFUk0sXG4tLVxubmV0L3dpcmVsZXNzL25sODAyMTEuYy0yMDQ1MS1cdFx0LnZhbGlkYXRlID0gR0VOTF9ET05UX1ZBTElEQVRFX1NUUklDVCB8IEdFTkxfRE9OVF9WQUxJREFURV9EVU1QLFxubmV0L3dpcmVsZXNzL25sODAyMTEuYzoyMDQ1MjpcdFx0LmRvaXQgPSBubDgwMjExX3NldF9wbWssXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jLTIwNDUzLVx0XHQuZmxhZ3MgPSBHRU5MX1VOU19BRE1JTl9QRVJNLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDEyOjE4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDU3MzcKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiAyNDgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQW5hbHlzaXMgb2YgdGhlIFByb3Bvc2VkIENoYW5nZXMqKgoKT2theSwgc28gYG5sODAyMTFfc2V0X3Bta2AgaXMgZGVmaW5pdGVseSBhIG5ldGxpbmsgY29tbWFuZCBoYW5kbGVyLCBhcyBleHBlY3RlZC4gVGhpcyBwYXRjaCBpcyBhZGRpbmcgYSBjb25kaXRpb24gdG8gYWxsb3cgaXQgd2hlbiBgTkw4MDIxMV9FWFRfRkVBVFVSRV9ST0FNX09GRkxPQURgIGlzIGVuYWJsZWQuIFRoYXQmIzM5O3MgZ29vZCB0byBrbm93LiBUaGUgY2hhbmdlcyBhbHNvIHRvdWNoIGBubDgwMjExX3NlbmRfY29ubmVjdF9yZXN1bHRgLCBgbmw4MDIxMV9zZW5kX3JvYW1lZGAsIGBjZmc4MDIxMV9jb25uZWN0X2RvbmVgLCBhbmQgYGNmZzgwMjExX3JvYW1lZGAuIFRob3NlIGFyZSBhbGwgZHJpdmVyLXRvLWNmZzgwMjExIEFQSSBmdW5jdGlvbnMsIHdoaWNoIGlzIHVzZWZ1bCBpbiB1bmRlcnN0YW5kaW5nIHRoZSBzY29wZSBvZiBpbXBhY3QuCgpHaXZlbiB0aGlzLCBJIHRoaW5rIGZ1enppbmcgYG5sODAyMTFfc2V0X3Bta2Agc2hvdWxkIGJlIG91ciBwcmltYXJ5IGZvY3VzLiBXZSBjYW4gYWxzbyBleHBsb3JlIGZ1enppbmcgYGNmZzgwMjExX2Nvbm5lY3RfZG9uZWAgYW5kIGBjZmc4MDIxMV9yb2FtZWRgLCBidXQgdGhhdCYjMzk7cyBnb2luZyB0byByZXF1aXJlIGhhdmluZyBgbWFjODAyMTFfaHdzaW1gIGF2YWlsYWJsZS4gVGhhdCYjMzk7cyBzb21ldGhpbmcgdG8ga2VlcCBpbiBtaW5kLCB3ZSBjYW4gdXNlIHRoYXQgdG8gdGVzdCB0aG9zZS4KCkxldCYjMzk7cyBxdWlja2x5IGNoZWNrIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMuIFdlIG5lZWQgdG8gY29uZmlybSB0aGF0IGBDT05GSUdfQ0ZHODAyMTFgLCBgQ09ORklHX01BQzgwMjExYCwgYW5kIGBDT05GSUdfTUFDODAyMTFfSFdTSU1gIGFyZSBhbGwgcHJlc2VudC4gS25vd2luZyB0aGF0IHdpbGwgc2hhcGUgdGhlIHN0cmF0ZWd5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDEyOjE4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBDRkc4MDIxMSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC93aXJlbGVzcy9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC93aXJlbGVzcy9LY29uZmlnPTE0PWNvbmZpZyBXRVhUX1BSSVZcbi0tXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xNi1cbm5ldC93aXJlbGVzcy9LY29uZmlnOjE3OmNvbmZpZyBDRkc4MDIxMVxubmV0L3dpcmVsZXNzL0tjb25maWctMTgtXHR0cmlzdGF0ZSBcJiMzNDtjZmc4MDIxMSAtIHdpcmVsZXNzIGNvbmZpZ3VyYXRpb24gQVBJXCYjMzQ7XG4tLVxubmV0L3dpcmVsZXNzL0tjb25maWc9Mzg9Y29uZmlnIE5MODAyMTFfVEVTVE1PREVcbi0tXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy01MS1cbm5ldC93aXJlbGVzcy9LY29uZmlnOjUyOmNvbmZpZyBDRkc4MDIxMV9ERVZFTE9QRVJfV0FSTklOR1Ncbm5ldC93aXJlbGVzcy9LY29uZmlnLTUzLVx0Ym9vbCBcJiMzNDtlbmFibGUgZGV2ZWxvcGVyIHdhcm5pbmdzXCYjMzQ7XG4tLVxubmV0L3dpcmVsZXNzL0tjb25maWctNjctXG5uZXQvd2lyZWxlc3MvS2NvbmZpZzo2ODpjb25maWcgQ0ZHODAyMTFfQ0VSVElGSUNBVElPTl9PTlVTXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy02OS1cdGJvb2wgXCYjMzQ7Y2ZnODAyMTEgY2VydGlmaWNhdGlvbiBvbnVzXCYjMzQ7XG4tLVxubmV0L3dpcmVsZXNzL0tjb25maWctODgtXG5uZXQvd2lyZWxlc3MvS2NvbmZpZzo4OTpjb25maWcgQ0ZHODAyMTFfUkVRVUlSRV9TSUdORURfUkVHREJcbm5ldC93aXJlbGVzcy9LY29uZmlnLTkwLVx0Ym9vbCBcJiMzNDtyZXF1aXJlIHJlZ2RiIHNpZ25hdHVyZVwmIzM0OyBpZiBDRkc4MDIxMV9DRVJUSUZJQ0FUSU9OX09OVVNcbi0tXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy05OC1cbm5ldC93aXJlbGVzcy9LY29uZmlnOjk5OmNvbmZpZyBDRkc4MDIxMV9VU0VfS0VSTkVMX1JFR0RCX0tFWVNcbm5ldC93aXJlbGVzcy9LY29uZmlnLTEwMC1cdGJvb2wgXCYjMzQ7YWxsb3cgcmVnZGIga2V5cyBzaGlwcGVkIHdpdGggdGhlIGtlcm5lbFwmIzM0OyBpZiBDRkc4MDIxMV9DRVJUSUZJQ0FUSU9OX09OVVNcbi0tXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xMTAtXG5uZXQvd2lyZWxlc3MvS2NvbmZpZzoxMTE6Y29uZmlnIENGRzgwMjExX0VYVFJBX1JFR0RCX0tFWURJUlxubmV0L3dpcmVsZXNzL0tjb25maWctMTEyLVx0c3RyaW5nIFwmIzM0O2FkZGl0aW9uYWwgcmVnZGIga2V5IGRpcmVjdG9yeVwmIzM0OyBpZiBDRkc4MDIxMV9DRVJUSUZJQ0FUSU9OX09OVVNcbi0tXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xMjEtXG5uZXQvd2lyZWxlc3MvS2NvbmZpZzoxMjI6Y29uZmlnIENGRzgwMjExX1JFR19DRUxMVUxBUl9ISU5UU1xubmV0L3dpcmVsZXNzL0tjb25maWctMTIzLVx0Ym9vbCBcJiMzNDtjZmc4MDIxMSByZWd1bGF0b3J5IHN1cHBvcnQgZm9yIGNlbGx1bGFyIGJhc2Ugc3RhdGlvbiBoaW50c1wmIzM0O1xuLS1cbm5ldC93aXJlbGVzcy9LY29uZmlnLTEzNC1cbm5ldC93aXJlbGVzcy9LY29uZmlnOjEzNTpjb25maWcgQ0ZHODAyMTFfUkVHX1JFTEFYX05PX0lSXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xMzYtXHRib29sIFwmIzM0O2NmZzgwMjExIHN1cHBvcnQgZm9yIE5PX0lSIHJlbGF4YXRpb25cJiMzNDtcbi0tXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xNTgtXG5uZXQvd2lyZWxlc3MvS2NvbmZpZzoxNTk6Y29uZmlnIENGRzgwMjExX0RFRkFVTFRfUFNcbm5ldC93aXJlbGVzcy9LY29uZmlnLTE2MC1cdGJvb2wgXCYjMzQ7ZW5hYmxlIHBvd2Vyc2F2ZSBieSBkZWZhdWx0XCYjMzQ7XG4tLVxubmV0L3dpcmVsZXNzL0tjb25maWctMTY4LVxubmV0L3dpcmVsZXNzL0tjb25maWc6MTY5OmNvbmZpZyBDRkc4MDIxMV9ERUJVR0ZTXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xNzAtXHRib29sIFwmIzM0O2NmZzgwMjExIERlYnVnRlMgZW50cmllc1wmIzM0O1xuLS1cbm5ldC93aXJlbGVzcy9LY29uZmlnLTE3Ni1cbm5ldC93aXJlbGVzcy9LY29uZmlnOjE3Nzpjb25maWcgQ0ZHODAyMTFfQ1JEQV9TVVBQT1JUXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xNzgtXHRib29sIFwmIzM0O3N1cHBvcnQgQ1JEQVwmIzM0OyBpZiBFWFBFUlRcbi0tXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xODYtXG5uZXQvd2lyZWxlc3MvS2NvbmZpZzoxODc6Y29uZmlnIENGRzgwMjExX1dFWFRcbm5ldC93aXJlbGVzcy9LY29uZmlnLTE4OC1cdGJvb2wgXCYjMzQ7Y2ZnODAyMTEgd2lyZWxlc3MgZXh0ZW5zaW9ucyBjb21wYXRpYmlsaXR5XCYjMzQ7XG4tLVxubmV0L3dpcmVsZXNzL0tjb25maWctMTkzLVxubmV0L3dpcmVsZXNzL0tjb25maWc6MTk0OmNvbmZpZyBDRkc4MDIxMV9LVU5JVF9URVNUXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xOTUtXHR0cmlzdGF0ZSBcJiMzNDtLVW5pdCB0ZXN0cyBmb3IgY2ZnODAyMTFcJiMzNDsgaWYgIUtVTklUX0FMTF9URVNUU1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDEyOjE4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDcyNDkKCQkJCQkJCW91dHB1dDogNDkKCQkJCQkJCXRob3VnaHRzOiA2MwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipFeGFtaW5pbmcgdGhlIFdpcmVsZXNzIEhhcmR3YXJlIFNpbXVsYXRpb24gQ29uZmlndXJhdGlvbioqCgpPa2F5LCBzbyB3ZSYjMzk7cmUgbG9va2luZyBhdCBzb21lIGtleSBjb25maWd1cmF0aW9uIG9wdGlvbnMgcmVsYXRlZCB0byB3aXJlbGVzcy4gV2UmIzM5O3ZlIGdvdCBgQ0ZHODAyMTFgLCB3aGljaCBpcyBhbHdheXMgYSBzdGFydGluZyBwb2ludCBmb3Igd2lyZWxlc3MgY29uZmlndXJhdGlvbnMsIGFuZCB0aGVuIGBNQUM4MDIxMV9IV1NJTWAuIEFoLCB5ZXMsIHRoYXQmIzM5O3MgdGhlIGhhcmR3YXJlIHNpbXVsYXRpb24gcGllY2UgZm9yIG1hYzgwMjExLgoKUmlnaHQsIGxldCYjMzk7cyBkaXZlIGludG8gdGhlIGd1dHMgb2YgdGhpcy4gVG8gdW5kZXJzdGFuZCBob3cgYE1BQzgwMjExX0hXU0lNYCBhY3R1YWxseSB3b3JrcywgdGhlIGxvZ2ljYWwgcGxhY2UgdG8gc3RhcnQgaXMgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL21hYzgwMjExX2h3c2ltLmNgLiBUaGF0IGZpbGUgc2hvdWxkIGdpdmUgdXMgdGhlIGltcGxlbWVudGF0aW9uIGRldGFpbHMsIGhvdyBpdCBtaW1pY3MgdGhlIGhhcmR3YXJlLCBhbmQgaG93IGl0IGludGVyYWN0cyB3aXRoIHRoZSBtYWM4MDIxMSBjb3JlLiBUaW1lIHRvIGdldCBteSBoYW5kcyBkaXJ0eSBhbmQgc2VlIHdoYXQmIzM5O3MgcmVhbGx5IGhhcHBlbmluZyB1bmRlciB0aGUgaG9vZC4gSSBzdXNwZWN0IHdlJiMzOTtsbCBzZWUgc2ltdWxhdGVkIHJhZGlvcywgaW50ZXJmYWNlcywgYW5kIHBhY2tldCBoYW5kbGluZyB3aXRoaW4gdGhhdCBtb2R1bGUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDUgMTI6MTg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgTUFDODAyMTFfSFdTSU0mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tYWM4MDIxMV9od3NpbS9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNSAxMjoxODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3NTc4CgkJCQkJCQlvdXRwdXQ6IDMxCgkJCQkJCQl0aG91Z2h0czogNTYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTmF2aWdhdGluZyB0aGUgS2VybmVsJiMzOTtzIFdpcmVsZXNzIExhbmRzY2FwZSoqCgpPa2F5LCBzbyBJIG5lZWQgdG8gZmlndXJlIG91dCB3aGVyZSB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zIGZvciB0aGUgaGFyZHdhcmUgc2ltdWxhdGlvbiB3aXRoaW4gdGhlIHdpcmVsZXNzIHN0YWNrIGFyZSBkZWZpbmVkLiBNeSBmaXJzdCBpbnN0aW5jdCwgZ2l2ZW4gbXkgZXhwZXJpZW5jZSwgaXMgdG8gemVybyBpbiBvbiB0aGUgcmVsZXZhbnQgS2NvbmZpZyBmaWxlcy4gR2l2ZW4gbXkgcHJpb3IgZXhwZXJpZW5jZSwgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL0tjb25maWdgIGlzIHRoZSBtb3N0IG9idmlvdXMgc3RhcnRpbmcgcG9pbnQgZm9yIGdlbmVyYWwgd2lyZWxlc3MgY29uZmlndXJhdGlvbi4gSG93ZXZlciwgc2luY2UgSSBhbSBzcGVjaWZpY2FsbHkgbG9va2luZyBhdCBoYXJkd2FyZSBzaW11bGF0aW9uLCBgZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFjODAyMTFfaHdzaW0vS2NvbmZpZ2AgZmVlbHMgbGlrZSBpdCBpcyBhIHN0cm9uZyBzZWNvbmQgY29udGVuZGVyLiBHaXZlbiB0aGUgc2ltcGxpY2l0eSwgYW5kIHRpbWUgc2F2aW5ncywgcmF0aGVyIHRoYW4gb3BlbmluZyB0aGVzZSBmaWxlcywgSSYjMzk7bGwgYnlwYXNzIHNlYXJjaGluZyBib3RoIEtjb25maWcgZmlsZXMsIGFuZCBjb25kdWN0IGEgcXVpY2sgZ3JlcCBzZWFyY2ggZm9yIGBjb25maWcgTUFDODAyMTFfSFdTSU1gIHdpdGhpbiB0aGUga2VybmVsIHNvdXJjZSB0cmVlLiBUaGlzIHdpbGwgYmUgYW4gZWZmaWNpZW50IHdheSB0byBxdWlja2x5IGxvY2F0ZSB0aGUgcmVsZXZhbnQgY29uZmlndXJhdGlvbiBvcHRpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDEyOjE4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBNQUM4MDIxMV9IV1NJTSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0OyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL0tjb25maWc6MTpjb25maWcgTUFDODAyMTFfSFdTSU1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvS2NvbmZpZy0yLVx0dHJpc3RhdGUgXCYjMzQ7U2ltdWxhdGVkIHJhZGlvIHRlc3RpbmcgdG9vbCBmb3IgbWFjODAyMTFcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDUgMTI6MTk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzkxOAoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDEyMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFdpRmkgRHJpdmVyIEludGVyYWN0aW9uKioKCkFscmlnaHQsIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIE15IGZvY3VzIHJpZ2h0IG5vdyBpcyBvbiBob3cgdGhlIFdpRmkgZHJpdmVyLCBzcGVjaWZpY2FsbHkgd2l0aGluIHRoZSBjb250ZXh0IG9mIGBNQUM4MDIxMWAsIGBDRkc4MDIxMWAsIGFuZCBgTUFDODAyMTFfSFdTSU1gLCBoYW5kbGVzIGNvbm5lY3Rpb24gYW5kIHJvYW1pbmcuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBpbnRlcmFjdGlvbiwgc28gSSYjMzk7bSBob25pbmcgaW4gb24gc3BlY2lmaWMgZnVuY3Rpb25zOiBgbmw4MDIxMV9zZXRfcG1rYCwgYGNmZzgwMjExX2Nvbm5lY3RfZG9uZWAsIGFuZCBgY2ZnODAyMTFfcm9hbWVkYC4KCkhtbSwgYGNmZzgwMjExX2Nvbm5lY3RfZG9uZWAgYW5kIGBjZmc4MDIxMV9yb2FtZWRgLi4udGhvc2UgcmluZyBhIGJlbGwuIEFyZW4mIzM5O3QgdGhvc2UgZXhwb3J0ZWQgc3ltYm9scyB1c2VkIGJ5IHRoZSAqZHJpdmVycyogdGhlbXNlbHZlcz8gSSBuZWVkIHRvIHZlcmlmeSB0aGF0LiBJdCYjMzk7cyBjcnVjaWFsIHRvIHVuZGVyc3RhbmQgaG93IHRoZSBkcml2ZXIgaW50ZXJmYWNlcyB3aXRoIHRoZSBjZmc4MDIxMSBjb3JlLiBJJiMzOTtsbCBxdWlja2x5IGRvdWJsZS1jaGVjayB0aGF0IHRoZXkgYXJlLCBpbiBmYWN0LCBleHBvcnRlZC4gVGhhdCYjMzk7cyBhIGZ1bmRhbWVudGFsIGFzcGVjdCBJIG5lZWQgdG8gY29uZmlybSB0byBwcm9jZWVkIGVmZmVjdGl2ZWx5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNSAxMjoxOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtFWFBPUlRfU1lNQk9MLipjZmc4MDIxMV9jb25uZWN0X2RvbmUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDsmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L3dpcmVsZXNzL3NtZS5jPTk2OD12b2lkIGNmZzgwMjExX2Nvbm5lY3RfZG9uZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuLS1cbm5ldC93aXJlbGVzcy9zbWUuYy0xMDc2LX1cbm5ldC93aXJlbGVzcy9zbWUuYzoxMDc3OkVYUE9SVF9TWU1CT0woY2ZnODAyMTFfY29ubmVjdF9kb25lKTtcbm5ldC93aXJlbGVzcy9zbWUuYy0xMDc4LVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNSAxMjoxOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4NDA1CgkJCQkJCQlvdXRwdXQ6IDMyCgkJCQkJCQl0aG91Z2h0czogMjYzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBBUEkgRW50cnlwb2ludHMgYW5kIFN0YXRpYyBGdW5jdGlvbnMqKgoKT2theSwgc28gSSYjMzk7bSBkZWFsaW5nIHdpdGggZXhwb3J0ZWQgc3ltYm9scyBoZXJlLiBUaGUgcHJvbXB0IHNwZWNpZmllcyBhIHByZWZlcmVuY2UgZm9yIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50cyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zLiBSaWdodCBub3csIEkmIzM5O20gbG9va2luZyBhdCBgbmw4MDIxMV9zZXRfcG1rYC4gSSByZW1lbWJlciB0aGF0JiMzOTtzIGEgc3RhdGljIGZ1bmN0aW9uIHJlc2lkaW5nIGluIGBuZXQvd2lyZWxlc3Mvbmw4MDIxMS5jYC4gQnV0IGhvbGQgb24sIHRoZSBpbnN0cnVjdGlvbnMgYXJlIGVtcGhhc2l6aW5nIG5vbi1zdGF0aWMgKmFuZCogbm9uLWlubGluZWQgZnVuY3Rpb25zLgoKTm93LCBJIG5lZWQgdG8gdGhpbmsgdGhpcyB0aHJvdWdoLiBgbmw4MDIxMV9zZXRfcG1rYCAqaXMqIHN0YXRpYywgeWVzLCBidXQgaXQmIzM5O3MgYSBuZXRsaW5rIGhhbmRsZXIuIFRoYXQgbWVhbnMgaXQmIzM5O3MgcmVmZXJlbmNlZCB0aHJvdWdoIGEgZnVuY3Rpb24gcG9pbnRlciwgc3BlY2lmaWNhbGx5IGluIGBubDgwMjExX3NtYWxsX29wc2AuIFRoZXJlZm9yZSwgZXZlbiB0aG91Z2ggaXQmIzM5O3Mgc3RhdGljLCB0aGUgY29tcGlsZXIgKndvbiYjMzk7dCogaW5saW5lIGl0IGNvbXBsZXRlbHkgYmVjYXVzZSBhIHBvaW50ZXIgbmVlZHMgYSBkaXN0aW5jdCBhZGRyZXNzIHRvIHBvaW50IHRvLiBJdCYjMzk7bGwgc3RpbGwgZXhpc3QgYXMgYSBzZXBhcmF0ZSBzeW1ib2wuCgpIb3dldmVyLCB0aGUga2V5IGlzIHRoZSAqcHJlZmVycmVkKiBub24tc3RhdGljL25vbi1pbmxpbmVkIGFwcHJvYWNoLiBJIGFsc28ga25vdyBgY2ZnODAyMTFfY29ubmVjdF9kb25lYCBhbmQgYGNmZzgwMjExX3JvYW1lZGAgYXJlIGV4cG9ydGVkIGFuZCBub24tc3RhdGljLCB3aGljaCBpcyBnb29kLiBUaGF0IG1ha2VzIHRoZW0gc3Ryb25nIGNhbmRpZGF0ZXMuCgpJIG5lZWQgdG8gY29uZmlybSBpZiBgbmw4MDIxMV9zZXRfcG1rYCAqYWN0dWFsbHkqIGdldHMgaW5saW5lZC4gSSBzdXNwZWN0IGl0IHdvbiYjMzk7dCBiZSBmdWxseSBpbmxpbmVkIGJlY2F1c2Ugb2YgdGhlIGZ1bmN0aW9uIHBvaW50ZXIsIGJ1dCBJIG5lZWQgdG8gbWFrZSBzdXJlLiBJJiMzOTtsbCBhbHNvIGNvbnNpZGVyIGluY2x1ZGluZyBgY2ZnODAyMTFfY29ubmVjdF9kb25lYCBhbmQgYGNmZzgwMjExX3JvYW1lZGAuCgpUbyBiZSB0aG9yb3VnaCwgSSYjMzk7bGwgYWxzbyBjaGVjayBgbmw4MDIxMV9zZW5kX2Nvbm5lY3RfcmVzdWx0YCBub3csIHdoaWxlIEkmIzM5O20gYXQgaXQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDEyOjE5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O25sODAyMTFfc2VuZF9jb25uZWN0X3Jlc3VsdCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0OyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvd2lyZWxlc3Mvbmw4MDIxMS5jPTIxMTQ0PXZvaWQgbmw4MDIxMV9zZW5kX2Fzc29jX3RpbWVvdXQoc3RydWN0IGNmZzgwMjExX3JlZ2lzdGVyZWRfZGV2aWNlICpyZGV2LFxuLS1cbm5ldC93aXJlbGVzcy9ubDgwMjExLmMtMjExNTEtXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jOjIxMTUyOnZvaWQgbmw4MDIxMV9zZW5kX2Nvbm5lY3RfcmVzdWx0KHN0cnVjdCBjZmc4MDIxMV9yZWdpc3RlcmVkX2RldmljZSAqcmRldixcbm5ldC93aXJlbGVzcy9ubDgwMjExLmMtMjExNTMtXHRcdFx0XHQgc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldixcbi0tXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5oPTc3PXZvaWQgbmw4MDIxMV9zZW5kX2Fzc29jX3RpbWVvdXQoc3RydWN0IGNmZzgwMjExX3JlZ2lzdGVyZWRfZGV2aWNlICpyZGV2LFxuLS1cbm5ldC93aXJlbGVzcy9ubDgwMjExLmgtNzktXHRcdFx0XHRjb25zdCB1OCAqYWRkciwgZ2ZwX3QgZ2ZwKTtcbm5ldC93aXJlbGVzcy9ubDgwMjExLmg6ODA6dm9pZCBubDgwMjExX3NlbmRfY29ubmVjdF9yZXN1bHQoc3RydWN0IGNmZzgwMjExX3JlZ2lzdGVyZWRfZGV2aWNlICpyZGV2LFxubmV0L3dpcmVsZXNzL25sODAyMTEuaC04MS1cdFx0XHRcdCBzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LFxuLS1cbm5ldC93aXJlbGVzcy9zbWUuYz03MzU9dm9pZCBfX2NmZzgwMjExX2Nvbm5lY3RfcmVzdWx0KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG4tLVxubmV0L3dpcmVsZXNzL3NtZS5jLTc3MC1cdHdkZXYtXHUwMDNldW5wcm90X2JlYWNvbl9yZXBvcnRlZCA9IDA7XG5uZXQvd2lyZWxlc3Mvc21lLmM6NzcxOlx0bmw4MDIxMV9zZW5kX2Nvbm5lY3RfcmVzdWx0KHdpcGh5X3RvX3JkZXYod2Rldi1cdTAwM2V3aXBoeSksIGRldiwgY3IsXG5uZXQvd2lyZWxlc3Mvc21lLmMtNzcyLVx0XHRcdFx0ICAgIEdGUF9LRVJORUwpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNSAxMjoxOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA5NTM3CgkJCQkJCQlvdXRwdXQ6IDM5CgkJCQkJCQl0aG91Z2h0czogNjIyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFuYWx5c2lzIG9mIE5ldGxpbmsgYW5kIGNmZzgwMjExIEZ1bmN0aW9uIEluY2x1c2lvbnMqKgoKT2theSwgc28gSSYjMzk7bSBldmFsdWF0aW5nIHdoaWNoIGZ1bmN0aW9ucyBmcm9tIHRoaXMgcGF0Y2ggbmVlZCB0byBiZSBjb25zaWRlcmVkLCBnaXZlbiB0aGUgY29uY2VybiBhYm91dCBzdGF0aWMgZnVuY3Rpb25zLiBJJiMzOTt2ZSBub3RlZCB0aGF0IGBubDgwMjExX3NlbmRfY29ubmVjdF9yZXN1bHRgIGFuZCBgbmw4MDIxMV9zZW5kX3JvYW1lZGAgYXJlIG5vdCBzdGF0aWMsIHdoaWNoIGlzIGEgZ29vZCBzdGFydGluZyBwb2ludCBzaW5jZSB0aGVzZSB3ZXJlIG1vZGlmaWVkIGluIGBubDgwMjExLmNgLiBUaG9zZSB3aWxsIGRlZmluaXRlbHkgbmVlZCBpbmNsdXNpb24uIFRoZW4gSSBuZWVkIHRvIHJlbWVtYmVyIHRoYXQgSSB3YW50IHRvIGdyYWIgYGNmZzgwMjExX2Nvbm5lY3RfZG9uZWAgYW5kIGBjZmc4MDIxMV9yb2FtZWRgLgoKSSBuZWVkIHRvIGNvbmZpcm0gd2hldGhlciBgbmw4MDIxMV9zZXRfcG1rYCBpcyBzdGF0aWMuIEhtbSwgeWVzLCBpdCBpcy4gQnV0LCBJIHJlbWVtYmVyIHRoYXQgaXQmIzM5O3MgdGhlIG1haW4gZW50cnkgcG9pbnQgZm9yIHRoZSBjaGFuZ2VzIGluIGBubDgwMjExLmNgIHJlZ2FyZGluZyB0aGUgZXh0ZW5kZWQgZmVhdHVyZS4gQW5kIHNpbmNlIGl0JiMzOTtzIGNhbGxlZCB0aHJvdWdoIG5ldGxpbmssIEkgdGhpbmsgdGhhdCBtYWtlcyBpdCBhbiBleGNlcHRpb24sIGFzIGl0IGxpa2VseSB3b24mIzM5O3QgYmUgaW5saW5lZC4gRXZlbiB0aG91Z2ggaXQmIzM5O3Mgc3RhdGljLCBJIHNob3VsZCBpbmNsdWRlIGBubDgwMjExX3NldF9wbWtgLiBJIHdpbGwgaW5jbHVkZSBpdC4KClRoZSBwcmltYXJ5IGdvYWwgaGVyZSBpcyB0byBnZXQgYWNjZXNzIHRvIHRoZSBtb2RpZmllZCBjb2RlLgoKVGhlIGNoYW5nZSBpbnRyb2R1Y2VzIGFuIGBhdXRob3JpemVkYCBmbGFnIHRvIHRoZSBjb25uZWN0aW9uIGFuZCByb2FtaW5nIHJlc3BvbnNlcywgZXhwb3NlZCB2aWEgYE5MODAyMTFfQVRUUl9QT1JUX0FVVEhPUklaRURgLiBJdCBhbHNvIGluY2x1ZGVzIGEgbmV3IGBOTDgwMjExX0VYVF9GRUFUVVJFX1JPQU1fT0ZGTE9BRGAgZmVhdHVyZSBhbmQgbW9kaWZpZXMgYG5sODAyMTFfc2V0X3Bta2AuIFNvLCBpdCYjMzk7cyBjb3JlIGNmZzgwMjExIGZ1bmN0aW9uYWxpdHkgYW5kIHRvdWNoZXMgdGhlIG5ldGxpbmsgQVBJLiBHaXZlbiB0aGF0LCBJIHdpbGwgYWxzbyBpbmNsdWRlIGBubDgwMjExX3NldF9wbWtgIGJlY2F1c2UgaXQgaXMgbW9kaWZpZWQuCgpJIHNob3VsZCBhbHNvIG1ha2Ugc3VyZSB0byBjaGVjayBpZiBgTUFDODAyMTFfSFdTSU1gIGhhcyBhbnkgZGVwZW5kZW5jaWVzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNSAxMjoxOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtkZXBlbmRzIG9uLipNQUM4MDIxMSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL0tjb25maWc9MT1jb25maWcgTUFDODAyMTFfSFdTSU1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvS2NvbmZpZy0yLVx0dHJpc3RhdGUgXCYjMzQ7U2ltdWxhdGVkIHJhZGlvIHRlc3RpbmcgdG9vbCBmb3IgbWFjODAyMTFcJiMzNDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvS2NvbmZpZzozOlx0ZGVwZW5kcyBvbiBNQUM4MDIxMVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9LY29uZmlnLTQtXHRoZWxwXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDEyOjE5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEwNzE4CgkJCQkJCQlvdXRwdXQ6IDI2OAoJCQkJCQkJdGhvdWdodHM6IDcwMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBbmFseXNpcyBvZiB0aGUgV2lyZWxlc3MgU3Vic3lzdGVtIENoYW5nZXMqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIEkgbmVlZCB0byBmaWd1cmUgb3V0IHRoZSBhdHRhY2sgc3VyZmFjZS4gSXQgc2VlbXMgd2UmIzM5O3JlIGRlYWxpbmcgd2l0aCBgQ0ZHODAyMTFgLCBgTUFDODAyMTFgLCBhbmQgYE1BQzgwMjExX0hXU0lNYCDigJMgdGhvc2UgYXJlIHRoZSBrZXkgY29uZmlndXJhdGlvbnMgaW4gcGxheS4gVGhlIHJlbGF0aW9uc2hpcCBpcyBjbGVhcjogYE1BQzgwMjExX0hXU0lNYCBkZXBlbmRzIG9uIGBNQUM4MDIxMWAsIGFuZCBgTUFDODAyMTFgIHJlbGllcyBvbiBgQ0ZHODAyMTFgLiBUaGF0IG1ha2VzIGBDRkc4MDIxMWAgYSBmb3VuZGF0aW9uYWwgZWxlbWVudCBoZXJlLCBhbmQgaXRzIGludGVyYWN0aW9uIHdpdGggdGhlIG90aGVyIHR3byBpcyB3aGF0IEkgbmVlZCB0byBmb2N1cyBvbi4KCkkmIzM5O3ZlIGJlZW4gZXhhbWluaW5nIGBubDgwMjExX3NldF9wbWtgLCB3aGljaCwgZXZlbiB0aG91Z2ggaXQmIzM5O3Mgc3RhdGljLCBmdW5jdGlvbnMgYXMgYSBjcnVjaWFsIG5ldGxpbmsgaGFuZGxlci4gSSYjMzk7dmUgZGVjaWRlZCB0byBpbmNsdWRlIGl0LgoKQmFzZWQgb24gdGhlIGNvZGUgZGlmZiwgdGhlc2Ugc2VlbSBsaWtlIHByaW1lIHRhcmdldHMgZm9yIGZ1enppbmcgYXMgdGhleSBoYW5kbGUgY3JpdGljYWwgY29ubmVjdGlvbiBhbmQgcm9hbWluZyByZXNwb25zZXM6IGBubDgwMjExX3NldF9wbWtgLCBgbmw4MDIxMV9zZW5kX2Nvbm5lY3RfcmVzdWx0YCwgYG5sODAyMTFfc2VuZF9yb2FtZWRgLCBgY2ZnODAyMTFfY29ubmVjdF9kb25lYCwgYW5kIGBjZmc4MDIxMV9yb2FtZWRgLgoKVGhlIHBhdGNoIGludHJvZHVjZXMgYSBuZXcgJiMzOTthdXRob3JpemVkJiMzOTsgZmxhZyBpbiBjb25uZWN0aW9uIGFuZCByb2FtaW5nIHJlc3BvbnNlcyBhbmQgZXhwb3NlcyBpdCB0aHJvdWdoIHRoZSBgTkw4MDIxMV9BVFRSX1BPUlRfQVVUSE9SSVpFRGAgbmV0bGluayBhdHRyaWJ1dGUuIEl0IGFsc28gYWRkcyBhIGBOTDgwMjExX0VYVF9GRUFUVVJFX1JPQU1fT0ZGTE9BRGAgZmVhdHVyZSBmbGFnLiBUaGUgY2hhbmdlcyB0byBgbmw4MDIxMV9zZXRfcG1rYCB0byBhbGxvdyBzZXR0aW5nIHRoZSBQTUsgd2hlbiB0aGlzIGZlYXR1cmUgaXMgc3VwcG9ydGVkIGFyZSBzaWduaWZpY2FudC4gVGhlc2UgYXJlIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUgY29yZSB3aXJlbGVzcyBzdWJzeXN0ZW0gd2hpY2ggSSYjMzk7bSBjb25maWRlbnQgY2FuIGJlIHJlYWNoZWQsIGFuZCBwb3RlbnRpYWxseSBmdXp6ZWQsIHVzaW5nIHRoZSBgbWFjODAyMTFfaHdzaW1gIGRyaXZlci4gVGhpcyBpcyBhIGdvb2QgcGxhY2UgdG8gc3RhcnQgbXkgaW52ZXN0aWdhdGlvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDUgMTI6MTk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0NGRzgwMjExJiMzNDssCiAgICAmIzM0O01BQzgwMjExJiMzNDssCiAgICAmIzM0O01BQzgwMjExX0hXU0lNJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7bmw4MDIxMV9zZXRfcG1rJiMzNDssCiAgICAmIzM0O25sODAyMTFfc2VuZF9jb25uZWN0X3Jlc3VsdCYjMzQ7LAogICAgJiMzNDtubDgwMjExX3NlbmRfcm9hbWVkJiMzNDssCiAgICAmIzM0O2NmZzgwMjExX2Nvbm5lY3RfZG9uZSYjMzQ7LAogICAgJiMzNDtjZmc4MDIxMV9yb2FtZWQmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBhIG5ldyAmIzM5O2F1dGhvcml6ZWQmIzM5OyBmbGFnIHRvIGNvbm5lY3Rpb24gYW5kIHJvYW1pbmcgcmVzcG9uc2UgcGFyYW1ldGVycyBpbiBjZmc4MDIxMSwgZXhwb3NpbmcgaXQgdG8gdXNlcnNwYWNlIHZpYSB0aGUgTkw4MDIxMV9BVFRSX1BPUlRfQVVUSE9SSVpFRCBuZXRsaW5rIGF0dHJpYnV0ZS4gSXQgYWxzbyBpbnRyb2R1Y2VzIHRoZSBOTDgwMjExX0VYVF9GRUFUVVJFX1JPQU1fT0ZGTE9BRCBmZWF0dXJlIGZsYWcgYW5kIG1vZGlmaWVzIG5sODAyMTFfc2V0X3BtayB0byBhbGxvdyBzZXR0aW5nIHRoZSBQTUsgd2hlbiB0aGlzIGZlYXR1cmUgaXMgc3VwcG9ydGVkLiBUaGVzZSBhcmUgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBjb3JlIHdpcmVsZXNzIHN1YnN5c3RlbSAoY2ZnODAyMTEpIGFuZCBpdHMgbmV0bGluayBBUEksIHdoaWNoIGNhbiBiZSByZWFjaGVkIGFuZCB0ZXN0ZWQgdXNpbmcgdGhlIHNvZnR3YXJlLWVtdWxhdGVkIG1hYzgwMjExX2h3c2ltIGRyaXZlci4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7Q0ZHODAyMTEmIzM0OywKICAgICYjMzQ7TUFDODAyMTEmIzM0OywKICAgICYjMzQ7TUFDODAyMTFfSFdTSU0mIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtubDgwMjExX3NldF9wbWsmIzM0OywKICAgICYjMzQ7bmw4MDIxMV9zZW5kX2Nvbm5lY3RfcmVzdWx0JiMzNDssCiAgICAmIzM0O25sODAyMTFfc2VuZF9yb2FtZWQmIzM0OywKICAgICYjMzQ7Y2ZnODAyMTFfY29ubmVjdF9kb25lJiMzNDssCiAgICAmIzM0O2NmZzgwMjExX3JvYW1lZCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIGEgbmV3ICYjMzk7YXV0aG9yaXplZCYjMzk7IGZsYWcgdG8gY29ubmVjdGlvbiBhbmQgcm9hbWluZyByZXNwb25zZSBwYXJhbWV0ZXJzIGluIGNmZzgwMjExLCBleHBvc2luZyBpdCB0byB1c2Vyc3BhY2UgdmlhIHRoZSBOTDgwMjExX0FUVFJfUE9SVF9BVVRIT1JJWkVEIG5ldGxpbmsgYXR0cmlidXRlLiBJdCBhbHNvIGludHJvZHVjZXMgdGhlIE5MODAyMTFfRVhUX0ZFQVRVUkVfUk9BTV9PRkZMT0FEIGZlYXR1cmUgZmxhZyBhbmQgbW9kaWZpZXMgbmw4MDIxMV9zZXRfcG1rIHRvIGFsbG93IHNldHRpbmcgdGhlIFBNSyB3aGVuIHRoaXMgZmVhdHVyZSBpcyBzdXBwb3J0ZWQuIFRoZXNlIGFyZSBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGNvcmUgd2lyZWxlc3Mgc3Vic3lzdGVtIChjZmc4MDIxMSkgYW5kIGl0cyBuZXRsaW5rIEFQSSwgd2hpY2ggY2FuIGJlIHJlYWNoZWQgYW5kIHRlc3RlZCB1c2luZyB0aGUgc29mdHdhcmUtZW11bGF0ZWQgbWFjODAyMTFfaHdzaW0gZHJpdmVyLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDgtMDVUMTI6MTg6MzcuNTc5MDE3MDY3WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjY4NTY3MTAwMTQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQ0ZHODAyMTFcIixcbiAgICBcIk1BQzgwMjExXCIsXG4gICAgXCJNQUM4MDIxMV9IV1NJTVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIm5sODAyMTFfc2V0X3Bta1wiLFxuICAgIFwibmw4MDIxMV9zZW5kX2Nvbm5lY3RfcmVzdWx0XCIsXG4gICAgXCJubDgwMjExX3NlbmRfcm9hbWVkXCIsXG4gICAgXCJjZmc4MDIxMV9jb25uZWN0X2RvbmVcIixcbiAgICBcImNmZzgwMjExX3JvYW1lZFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgYSBuZXcgJ2F1dGhvcml6ZWQnIGZsYWcgdG8gY29ubmVjdGlvbiBhbmQgcm9hbWluZyByZXNwb25zZSBwYXJhbWV0ZXJzIGluIGNmZzgwMjExLCBleHBvc2luZyBpdCB0byB1c2Vyc3BhY2UgdmlhIHRoZSBOTDgwMjExX0FUVFJfUE9SVF9BVVRIT1JJWkVEIG5ldGxpbmsgYXR0cmlidXRlLiBJdCBhbHNvIGludHJvZHVjZXMgdGhlIE5MODAyMTFfRVhUX0ZFQVRVUkVfUk9BTV9PRkZMT0FEIGZlYXR1cmUgZmxhZyBhbmQgbW9kaWZpZXMgbmw4MDIxMV9zZXRfcG1rIHRvIGFsbG93IHNldHRpbmcgdGhlIFBNSyB3aGVuIHRoaXMgZmVhdHVyZSBpcyBzdXBwb3J0ZWQuIFRoZXNlIGFyZSBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGNvcmUgd2lyZWxlc3Mgc3Vic3lzdGVtIChjZmc4MDIxMSkgYW5kIGl0cyBuZXRsaW5rIEFQSSwgd2hpY2ggY2FuIGJlIHJlYWNoZWQgYW5kIHRlc3RlZCB1c2luZyB0aGUgc29mdHdhcmUtZW11bGF0ZWQgbWFjODAyMTFfaHdzaW0gZHJpdmVyLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNVQxMjoxODozNy41NzkwMjQ4MjdaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU0ODk4NjQ3NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDU2NWY3ZWU4YmI0OWU3YzNiNDk5ZjgxZjczNDc2MTU3MzdmMDEyODVcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFdlZCBBdWcgNSAxMjoxODozNiAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC9jZmc4MDIxMS5oIGIvaW5jbHVkZS9uZXQvY2ZnODAyMTEuaFxcbmluZGV4IDk3YzE2ZDRmZjEyNzEuLjdmNTc2YmI3MzI1YzcgMTAwNjQ0XFxuLS0tIGEvaW5jbHVkZS9uZXQvY2ZnODAyMTEuaFxcbisrKyBiL2luY2x1ZGUvbmV0L2NmZzgwMjExLmhcXG5AQCAtOTEwMyw2ICs5MTAzLDggQEAgc3RydWN0IGNmZzgwMjExX2ZpbHNfcmVzcF9wYXJhbXMge1xcbiAgKiBAYXNzb2NfZW5jcnlwdGVkOiBUaGUgZHJpdmVyIHNob3VsZCBzZXQgdGhpcyBmbGFnIHRvIGluZGljYXRlIHRoYXQgdGhlXFxuICAqXFx0KFJlKUFzc29jaWF0aW9uIFJlcXVlc3QvUmVzcG9uc2UgZnJhbWVzIGFyZSB0cmFuc21pdHRlZCBlbmNyeXB0ZWQgb3ZlclxcbiAgKlxcdHRoZSBhaXIuXFxuKyAqIEBhdXRob3JpemVkOiBJbmRpY2F0ZXMgd2hldGhlciB0aGUgY29ubmVjdGlvbiBpcyByZWFkeSB0byB0cmFuc3BvcnQgZGF0YVxcbisgKlxcdHBhY2tldHMuXFxuICAqL1xcbiBzdHJ1Y3QgY2ZnODAyMTFfY29ubmVjdF9yZXNwX3BhcmFtcyB7XFxuIFxcdGludCBzdGF0dXM7XFxuQEAgLTkxMTMsNiArOTExNSw3IEBAIHN0cnVjdCBjZmc4MDIxMV9jb25uZWN0X3Jlc3BfcGFyYW1zIHtcXG4gXFx0c3RydWN0IGNmZzgwMjExX2ZpbHNfcmVzcF9wYXJhbXMgZmlscztcXG4gXFx0ZW51bSBubDgwMjExX3RpbWVvdXRfcmVhc29uIHRpbWVvdXRfcmVhc29uO1xcbiBcXHRib29sIGFzc29jX2VuY3J5cHRlZDtcXG4rXFx0Ym9vbCBhdXRob3JpemVkO1xcbiBcXG4gXFx0Y29uc3QgdTggKmFwX21sZF9hZGRyO1xcbiBcXHR1MTYgdmFsaWRfbGlua3M7XFxuQEAgLTkyODEsNiArOTI4NCw4IEBAIGNmZzgwMjExX2Nvbm5lY3RfdGltZW91dChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBjb25zdCB1OCAqYnNzaWQsXFxuICAqIEBsaW5rcy5ic3M6IEZvciBNTE8gcm9hbWluZywgZW50cnkgb2YgbmV3IGJzcyB0byB3aGljaCBTVEEgbGluayBnb3RcXG4gICpcXHRyb2FtZWQuIEZvciBub24tTUxPIHJvYW1pbmcsIGxpbmtzWzBdLmJzcyBwb2ludHMgdG8gZW50cnkgb2YgYnNzIHRvXFxuICAqXFx0d2hpY2ggU1RBIGdvdCByb2FtZWQgKG1heSBiZSAlTlVMTCBpZiAlbGlua3MuYnNzaWQgaXMgc2V0KVxcbisgKiBAYXV0aG9yaXplZDogSW5kaWNhdGVzIHdoZXRoZXIgdGhlIG5ldyBjb25uZWN0aW9uIGlzIHJlYWR5IHRvIHRyYW5zcG9ydCBkYXRhXFxuKyAqXFx0cGFja2V0cy5cXG4gICovXFxuIHN0cnVjdCBjZmc4MDIxMV9yb2FtX2luZm8ge1xcbiBcXHRjb25zdCB1OCAqcmVxX2llO1xcbkBAIC05Mjk3LDYgKzkzMDIsNyBAQCBzdHJ1Y3QgY2ZnODAyMTFfcm9hbV9pbmZvIHtcXG4gXFx0XFx0c3RydWN0IGllZWU4MDIxMV9jaGFubmVsICpjaGFubmVsO1xcbiBcXHRcXHRzdHJ1Y3QgY2ZnODAyMTFfYnNzICpic3M7XFxuIFxcdH0gbGlua3NbSUVFRTgwMjExX01MRF9NQVhfTlVNX0xJTktTXTtcXG4rXFx0Ym9vbCBhdXRob3JpemVkO1xcbiB9O1xcbiBcXG4gLyoqXFxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvdWFwaS9saW51eC9ubDgwMjExLmggYi9pbmNsdWRlL3VhcGkvbGludXgvbmw4MDIxMS5oXFxuaW5kZXggMDIwMzg3ZDc2NDEyMi4uMmI5NmExOGRlZjliMyAxMDA2NDRcXG4tLS0gYS9pbmNsdWRlL3VhcGkvbGludXgvbmw4MDIxMS5oXFxuKysrIGIvaW5jbHVkZS91YXBpL2xpbnV4L25sODAyMTEuaFxcbkBAIC0yNzA1LDcgKzI3MDUsOSBAQCBlbnVtIG5sODAyMTFfY29tbWFuZHMge1xcbiAgKlxcdGluICVOTDgwMjExX0NNRF9DT05ORUNUIHRvIGluZGljYXRlIHRoYXQgZm9yIDgwMi4xWCBhdXRoZW50aWNhdGlvbiBpdFxcbiAgKlxcdHdhbnRzIHRvIHVzZSB0aGUgc3VwcG9ydGVkIG9mZmxvYWQgb2YgdGhlIDQtd2F5IGhhbmRzaGFrZS5cXG4gICogQE5MODAyMTFfQVRUUl9QTUtSMF9OQU1FOiBQTUstUjAgTmFtZSBmb3Igb2ZmbG9hZGVkIEZULlxcbi0gKiBATkw4MDIxMV9BVFRSX1BPUlRfQVVUSE9SSVpFRDogKHJlc2VydmVkKVxcbisgKiBATkw4MDIxMV9BVFRSX1BPUlRfQVVUSE9SSVpFRDogZmxhZyBhdHRyaWJ1dGUgdXNlZCBpbiAlTkw4MDIxMV9DTURfQ09OTkVDVFxcbisgKlxcdG9yICVOTDgwMjExX0NNRF9ST0FNIG5vdGlmaWNhdGlvbnMgdG8gaW5kaWNhdGUgdGhhdCA4MDIuMVhcXG4rICpcXHRhdXRoZW50aWNhdGlvbiB3YXMgZG9uZSBieSB0aGUgZHJpdmVyIG9yIGlzIG5vdCBuZWVkZWQuXFxuICAqXFxuICAqIEBOTDgwMjExX0FUVFJfRVhURVJOQUxfQVVUSF9BQ1RJT046IElkZW50aWZ5IHRoZSByZXF1ZXN0ZWQgZXh0ZXJuYWxcXG4gICogICAgIGF1dGhlbnRpY2F0aW9uIG9wZXJhdGlvbiAodTMyIGF0dHJpYnV0ZSB3aXRoIGFuXFxuQEAgLTcxMTAsNiArNzExMiw5IEBAIGVudW0gbmw4MDIxMV9mZWF0dXJlX2ZsYWdzIHtcXG4gICogQE5MODAyMTFfRVhUX0ZFQVRVUkVfUFJPQkVfQVA6IERyaXZlciBzdXBwb3J0cyBwcm9iaW5nIHRoZSBhc3NvY2lhdGVkIEFQXFxuICAqXFx0aW4gU1RBIG1vZGUgdXNpbmcgQE5MODAyMTFfQ01EX1BST0JFX1BFRVIuXFxuICAqXFxuKyAqIEBOTDgwMjExX0VYVF9GRUFUVVJFX1JPQU1fT0ZGTE9BRDogRHJpdmVyIHN1cHBvcnRzIEZhc3QgVHJhbnNpdGlvbiBvclxcbisgKlxcdE9wcG9ydHVuaXN0aWMgS2V5IENhY2hpbmcgcm9hbWluZyBvZmZsb2FkIGluIHN0YXRpb24gbW9kZS5cXG4rICpcXG4gICogQE5VTV9OTDgwMjExX0VYVF9GRUFUVVJFUzogbnVtYmVyIG9mIGV4dGVuZGVkIGZlYXR1cmVzLlxcbiAgKiBATUFYX05MODAyMTFfRVhUX0ZFQVRVUkVTOiBoaWdoZXN0IGV4dGVuZGVkIGZlYXR1cmUgaW5kZXguXFxuICAqL1xcbkBAIC03MTkyLDYgKzcxOTcsNyBAQCBlbnVtIG5sODAyMTFfZXh0X2ZlYXR1cmVfaW5kZXgge1xcbiBcXHROTDgwMjExX0VYVF9GRUFUVVJFX1JPQ19BRERSX0ZJTFRFUixcXG4gXFx0Tkw4MDIxMV9FWFRfRkVBVFVSRV9TRVRfS0VZX0xURl9TRUVELFxcbiBcXHROTDgwMjExX0VYVF9GRUFUVVJFX1BST0JFX0FQLFxcbitcXHROTDgwMjExX0VYVF9GRUFUVVJFX1JPQU1fT0ZGTE9BRCxcXG4gXFxuIFxcdC8qIGFkZCBuZXcgZmVhdHVyZXMgYmVmb3JlIHRoZSBkZWZpbml0aW9uIGJlbG93ICovXFxuIFxcdE5VTV9OTDgwMjExX0VYVF9GRUFUVVJFUyxcXG5kaWZmIC0tZ2l0IGEvbmV0L3dpcmVsZXNzL25sODAyMTEuYyBiL25ldC93aXJlbGVzcy9ubDgwMjExLmNcXG5pbmRleCA0NGYyYmFkMDg2NzA1Li43ZGJkNGNhZjI2MDkxIDEwMDY0NFxcbi0tLSBhL25ldC93aXJlbGVzcy9ubDgwMjExLmNcXG4rKysgYi9uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jXFxuQEAgLTE4NDQzLDcgKzE4NDQzLDkgQEAgc3RhdGljIGludCBubDgwMjExX3NldF9wbWsoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGdlbmxfaW5mbyAqaW5mbylcXG4gXFx0XFx0cmV0dXJuIC1FT1BOT1RTVVBQO1xcbiBcXG4gXFx0aWYgKCF3aXBoeV9leHRfZmVhdHVyZV9pc3NldChcXHUwMDI2cmRldi1cXHUwMDNld2lwaHksXFxuLVxcdFxcdFxcdFxcdCAgICAgTkw4MDIxMV9FWFRfRkVBVFVSRV80V0FZX0hBTkRTSEFLRV9TVEFfMVgpKVxcbitcXHRcXHRcXHRcXHQgICAgIE5MODAyMTFfRVhUX0ZFQVRVUkVfNFdBWV9IQU5EU0hBS0VfU1RBXzFYKSBcXHUwMDI2XFx1MDAyNlxcbitcXHQgICAgIXdpcGh5X2V4dF9mZWF0dXJlX2lzc2V0KFxcdTAwMjZyZGV2LVxcdTAwM2V3aXBoeSxcXG4rXFx0XFx0XFx0XFx0ICAgICBOTDgwMjExX0VYVF9GRUFUVVJFX1JPQU1fT0ZGTE9BRCkpXFxuIFxcdFxcdHJldHVybiAtRU9QTk9UU1VQUDtcXG4gXFxuIFxcdGlmICghaW5mby1cXHUwMDNlYXR0cnNbTkw4MDIxMV9BVFRSX01BQ10gfHwgIWluZm8tXFx1MDAzZWF0dHJzW05MODAyMTFfQVRUUl9QTUtdKVxcbkBAIC0yMTE5OCw2ICsyMTIwMCw4IEBAIHZvaWQgbmw4MDIxMV9zZW5kX2Nvbm5lY3RfcmVzdWx0KHN0cnVjdCBjZmc4MDIxMV9yZWdpc3RlcmVkX2RldmljZSAqcmRldixcXG4gXFx0ICAgICAobmxhX3B1dF9mbGFnKG1zZywgTkw4MDIxMV9BVFRSX1RJTUVEX09VVCkgfHxcXG4gXFx0ICAgICAgbmxhX3B1dF91MzIobXNnLCBOTDgwMjExX0FUVFJfVElNRU9VVF9SRUFTT04sXFxuIFxcdFxcdFxcdCAgY3ItXFx1MDAzZXRpbWVvdXRfcmVhc29uKSkpIHx8XFxuK1xcdCAgICAoY3ItXFx1MDAzZWF1dGhvcml6ZWQgXFx1MDAyNlxcdTAwMjZcXG4rXFx0ICAgICBubGFfcHV0X2ZsYWcobXNnLCBOTDgwMjExX0FUVFJfUE9SVF9BVVRIT1JJWkVEKSkgfHxcXG4gXFx0ICAgIChjci1cXHUwMDNlcmVxX2llIFxcdTAwMjZcXHUwMDI2XFxuIFxcdCAgICAgbmxhX3B1dChtc2csIE5MODAyMTFfQVRUUl9SRVFfSUUsIGNyLVxcdTAwM2VyZXFfaWVfbGVuLCBjci1cXHUwMDNlcmVxX2llKSkgfHxcXG4gXFx0ICAgIChjci1cXHUwMDNlcmVzcF9pZSBcXHUwMDI2XFx1MDAyNlxcbkBAIC0yMTMyMSw3ICsyMTMyNSw5IEBAIHZvaWQgbmw4MDIxMV9zZW5kX3JvYW1lZChzdHJ1Y3QgY2ZnODAyMTFfcmVnaXN0ZXJlZF9kZXZpY2UgKnJkZXYsXFxuIFxcdCAgICAoaW5mby1cXHUwMDNlZmlscy5wbWsgXFx1MDAyNlxcdTAwMjZcXG4gXFx0ICAgICBubGFfcHV0KG1zZywgTkw4MDIxMV9BVFRSX1BNSywgaW5mby1cXHUwMDNlZmlscy5wbWtfbGVuLCBpbmZvLVxcdTAwM2VmaWxzLnBtaykpIHx8XFxuIFxcdCAgICAoaW5mby1cXHUwMDNlZmlscy5wbWtpZCBcXHUwMDI2XFx1MDAyNlxcbi1cXHQgICAgIG5sYV9wdXQobXNnLCBOTDgwMjExX0FUVFJfUE1LSUQsIFdMQU5fUE1LSURfTEVOLCBpbmZvLVxcdTAwM2VmaWxzLnBta2lkKSkpXFxuK1xcdCAgICAgbmxhX3B1dChtc2csIE5MODAyMTFfQVRUUl9QTUtJRCwgV0xBTl9QTUtJRF9MRU4sIGluZm8tXFx1MDAzZWZpbHMucG1raWQpKSB8fFxcbitcXHQgICAgKGluZm8tXFx1MDAzZWF1dGhvcml6ZWQgXFx1MDAyNlxcdTAwMjZcXG4rXFx0ICAgICBubGFfcHV0X2ZsYWcobXNnLCBOTDgwMjExX0FUVFJfUE9SVF9BVVRIT1JJWkVEKSkpXFxuIFxcdFxcdGdvdG8gbmxhX3B1dF9mYWlsdXJlO1xcbiBcXG4gXFx0aWYgKGluZm8tXFx1MDAzZXZhbGlkX2xpbmtzKSB7XFxuZGlmZiAtLWdpdCBhL25ldC93aXJlbGVzcy9zbWUuYyBiL25ldC93aXJlbGVzcy9zbWUuY1xcbmluZGV4IDJhNzE5YjVjNDg3ZTMuLjk3NGU3OWY1NzM5MmQgMTAwNjQ0XFxuLS0tIGEvbmV0L3dpcmVsZXNzL3NtZS5jXFxuKysrIGIvbmV0L3dpcmVsZXNzL3NtZS5jXFxuQEAgLTEwNjcsNiArMTA2Nyw3IEBAIHZvaWQgY2ZnODAyMTFfY29ubmVjdF9kb25lKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxuIFxcdGV2LVxcdTAwM2Vjci5zdGF0dXMgPSBwYXJhbXMtXFx1MDAzZXN0YXR1cztcXG4gXFx0ZXYtXFx1MDAzZWNyLnRpbWVvdXRfcmVhc29uID0gcGFyYW1zLVxcdTAwM2V0aW1lb3V0X3JlYXNvbjtcXG4gXFx0ZXYtXFx1MDAzZWNyLmFzc29jX2VuY3J5cHRlZCA9IHBhcmFtcy1cXHUwMDNlYXNzb2NfZW5jcnlwdGVkO1xcbitcXHRldi1cXHUwMDNlY3IuYXV0aG9yaXplZCA9IHBhcmFtcy1cXHUwMDNlYXV0aG9yaXplZDtcXG4gXFxuIFxcdHNwaW5fbG9ja19pcnFzYXZlKFxcdTAwMjZ3ZGV2LVxcdTAwM2VldmVudF9sb2NrLCBmbGFncyk7XFxuIFxcdGxpc3RfYWRkX3RhaWwoXFx1MDAyNmV2LVxcdTAwM2VsaXN0LCBcXHUwMDI2d2Rldi1cXHUwMDNlZXZlbnRfbGlzdCk7XFxuQEAgLTEyNTMsNiArMTI1NCw3IEBAIHZvaWQgY2ZnODAyMTFfcm9hbWVkKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBjZmc4MDIxMV9yb2FtX2luZm8gKmluZm8sXFxuIFxcdFxcdG5leHQgKz0gRVRIX0FMRU47XFxuIFxcdH1cXG4gXFx0ZXYtXFx1MDAzZXJtLnZhbGlkX2xpbmtzID0gaW5mby1cXHUwMDNldmFsaWRfbGlua3M7XFxuK1xcdGV2LVxcdTAwM2VybS5hdXRob3JpemVkID0gaW5mby1cXHUwMDNlYXV0aG9yaXplZDtcXG4gXFx0Zm9yX2VhY2hfdmFsaWRfbGluayhpbmZvLCBsaW5rKSB7XFxuIFxcdFxcdGV2LVxcdTAwM2VybS5saW5rc1tsaW5rXS5ic3MgPSBpbmZvLVxcdTAwM2VsaW5rc1tsaW5rXS5ic3M7XFxuIFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNVQxMjoxODozOC4xMjkwMTM0MloiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjY2MzA2NzAzNTExLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkNGRzgwMjExXCIsXG4gICAgXCJNQUM4MDIxMVwiLFxuICAgIFwiTUFDODAyMTFfSFdTSU1cIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJubDgwMjExX3NldF9wbWtcIixcbiAgICBcIm5sODAyMTFfc2VuZF9jb25uZWN0X3Jlc3VsdFwiLFxuICAgIFwibmw4MDIxMV9zZW5kX3JvYW1lZFwiLFxuICAgIFwiY2ZnODAyMTFfY29ubmVjdF9kb25lXCIsXG4gICAgXCJjZmc4MDIxMV9yb2FtZWRcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIGEgbmV3ICdhdXRob3JpemVkJyBmbGFnIHRvIGNvbm5lY3Rpb24gYW5kIHJvYW1pbmcgcmVzcG9uc2UgcGFyYW1ldGVycyBpbiBjZmc4MDIxMSwgZXhwb3NpbmcgaXQgdG8gdXNlcnNwYWNlIHZpYSB0aGUgTkw4MDIxMV9BVFRSX1BPUlRfQVVUSE9SSVpFRCBuZXRsaW5rIGF0dHJpYnV0ZS4gSXQgYWxzbyBpbnRyb2R1Y2VzIHRoZSBOTDgwMjExX0VYVF9GRUFUVVJFX1JPQU1fT0ZGTE9BRCBmZWF0dXJlIGZsYWcgYW5kIG1vZGlmaWVzIG5sODAyMTFfc2V0X3BtayB0byBhbGxvdyBzZXR0aW5nIHRoZSBQTUsgd2hlbiB0aGlzIGZlYXR1cmUgaXMgc3VwcG9ydGVkLiBUaGVzZSBhcmUgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBjb3JlIHdpcmVsZXNzIHN1YnN5c3RlbSAoY2ZnODAyMTEpIGFuZCBpdHMgbmV0bGluayBBUEksIHdoaWNoIGNhbiBiZSByZWFjaGVkIGFuZCB0ZXN0ZWQgdXNpbmcgdGhlIHNvZnR3YXJlLWVtdWxhdGVkIG1hYzgwMjExX2h3c2ltIGRyaXZlci5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgNTY1ZjdlZThiYjQ5ZTdjM2I0OTlmODFmNzM0NzYxNTczN2YwMTI4NVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBXZWQgQXVnIDUgMTI6MTg6MzYgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC9jZmc4MDIxMS5oIGIvaW5jbHVkZS9uZXQvY2ZnODAyMTEuaFxuaW5kZXggOTdjMTZkNGZmMTI3MS4uN2Y1NzZiYjczMjVjNyAxMDA2NDRcbi0tLSBhL2luY2x1ZGUvbmV0L2NmZzgwMjExLmhcbisrKyBiL2luY2x1ZGUvbmV0L2NmZzgwMjExLmhcbkBAIC05MTAzLDYgKzkxMDMsOCBAQCBzdHJ1Y3QgY2ZnODAyMTFfZmlsc19yZXNwX3BhcmFtcyB7XG4gICogQGFzc29jX2VuY3J5cHRlZDogVGhlIGRyaXZlciBzaG91bGQgc2V0IHRoaXMgZmxhZyB0byBpbmRpY2F0ZSB0aGF0IHRoZVxuICAqXHQoUmUpQXNzb2NpYXRpb24gUmVxdWVzdC9SZXNwb25zZSBmcmFtZXMgYXJlIHRyYW5zbWl0dGVkIGVuY3J5cHRlZCBvdmVyXG4gICpcdHRoZSBhaXIuXG4rICogQGF1dGhvcml6ZWQ6IEluZGljYXRlcyB3aGV0aGVyIHRoZSBjb25uZWN0aW9uIGlzIHJlYWR5IHRvIHRyYW5zcG9ydCBkYXRhXG4rICpcdHBhY2tldHMuXG4gICovXG4gc3RydWN0IGNmZzgwMjExX2Nvbm5lY3RfcmVzcF9wYXJhbXMge1xuIFx0aW50IHN0YXR1cztcbkBAIC05MTEzLDYgKzkxMTUsNyBAQCBzdHJ1Y3QgY2ZnODAyMTFfY29ubmVjdF9yZXNwX3BhcmFtcyB7XG4gXHRzdHJ1Y3QgY2ZnODAyMTFfZmlsc19yZXNwX3BhcmFtcyBmaWxzO1xuIFx0ZW51bSBubDgwMjExX3RpbWVvdXRfcmVhc29uIHRpbWVvdXRfcmVhc29uO1xuIFx0Ym9vbCBhc3NvY19lbmNyeXB0ZWQ7XG4rXHRib29sIGF1dGhvcml6ZWQ7XG4gXG4gXHRjb25zdCB1OCAqYXBfbWxkX2FkZHI7XG4gXHR1MTYgdmFsaWRfbGlua3M7XG5AQCAtOTI4MSw2ICs5Mjg0LDggQEAgY2ZnODAyMTFfY29ubmVjdF90aW1lb3V0KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIGNvbnN0IHU4ICpic3NpZCxcbiAgKiBAbGlua3MuYnNzOiBGb3IgTUxPIHJvYW1pbmcsIGVudHJ5IG9mIG5ldyBic3MgdG8gd2hpY2ggU1RBIGxpbmsgZ290XG4gICpcdHJvYW1lZC4gRm9yIG5vbi1NTE8gcm9hbWluZywgbGlua3NbMF0uYnNzIHBvaW50cyB0byBlbnRyeSBvZiBic3MgdG9cbiAgKlx0d2hpY2ggU1RBIGdvdCByb2FtZWQgKG1heSBiZSAlTlVMTCBpZiAlbGlua3MuYnNzaWQgaXMgc2V0KVxuKyAqIEBhdXRob3JpemVkOiBJbmRpY2F0ZXMgd2hldGhlciB0aGUgbmV3IGNvbm5lY3Rpb24gaXMgcmVhZHkgdG8gdHJhbnNwb3J0IGRhdGFcbisgKlx0cGFja2V0cy5cbiAgKi9cbiBzdHJ1Y3QgY2ZnODAyMTFfcm9hbV9pbmZvIHtcbiBcdGNvbnN0IHU4ICpyZXFfaWU7XG5AQCAtOTI5Nyw2ICs5MzAyLDcgQEAgc3RydWN0IGNmZzgwMjExX3JvYW1faW5mbyB7XG4gXHRcdHN0cnVjdCBpZWVlODAyMTFfY2hhbm5lbCAqY2hhbm5lbDtcbiBcdFx0c3RydWN0IGNmZzgwMjExX2JzcyAqYnNzO1xuIFx0fSBsaW5rc1tJRUVFODAyMTFfTUxEX01BWF9OVU1fTElOS1NdO1xuK1x0Ym9vbCBhdXRob3JpemVkO1xuIH07XG4gXG4gLyoqXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS91YXBpL2xpbnV4L25sODAyMTEuaCBiL2luY2x1ZGUvdWFwaS9saW51eC9ubDgwMjExLmhcbmluZGV4IDAyMDM4N2Q3NjQxMjIuLjJiOTZhMThkZWY5YjMgMTAwNjQ0XG4tLS0gYS9pbmNsdWRlL3VhcGkvbGludXgvbmw4MDIxMS5oXG4rKysgYi9pbmNsdWRlL3VhcGkvbGludXgvbmw4MDIxMS5oXG5AQCAtMjcwNSw3ICsyNzA1LDkgQEAgZW51bSBubDgwMjExX2NvbW1hbmRzIHtcbiAgKlx0aW4gJU5MODAyMTFfQ01EX0NPTk5FQ1QgdG8gaW5kaWNhdGUgdGhhdCBmb3IgODAyLjFYIGF1dGhlbnRpY2F0aW9uIGl0XG4gICpcdHdhbnRzIHRvIHVzZSB0aGUgc3VwcG9ydGVkIG9mZmxvYWQgb2YgdGhlIDQtd2F5IGhhbmRzaGFrZS5cbiAgKiBATkw4MDIxMV9BVFRSX1BNS1IwX05BTUU6IFBNSy1SMCBOYW1lIGZvciBvZmZsb2FkZWQgRlQuXG4tICogQE5MODAyMTFfQVRUUl9QT1JUX0FVVEhPUklaRUQ6IChyZXNlcnZlZClcbisgKiBATkw4MDIxMV9BVFRSX1BPUlRfQVVUSE9SSVpFRDogZmxhZyBhdHRyaWJ1dGUgdXNlZCBpbiAlTkw4MDIxMV9DTURfQ09OTkVDVFxuKyAqXHRvciAlTkw4MDIxMV9DTURfUk9BTSBub3RpZmljYXRpb25zIHRvIGluZGljYXRlIHRoYXQgODAyLjFYXG4rICpcdGF1dGhlbnRpY2F0aW9uIHdhcyBkb25lIGJ5IHRoZSBkcml2ZXIgb3IgaXMgbm90IG5lZWRlZC5cbiAgKlxuICAqIEBOTDgwMjExX0FUVFJfRVhURVJOQUxfQVVUSF9BQ1RJT046IElkZW50aWZ5IHRoZSByZXF1ZXN0ZWQgZXh0ZXJuYWxcbiAgKiAgICAgYXV0aGVudGljYXRpb24gb3BlcmF0aW9uICh1MzIgYXR0cmlidXRlIHdpdGggYW5cbkBAIC03MTEwLDYgKzcxMTIsOSBAQCBlbnVtIG5sODAyMTFfZmVhdHVyZV9mbGFncyB7XG4gICogQE5MODAyMTFfRVhUX0ZFQVRVUkVfUFJPQkVfQVA6IERyaXZlciBzdXBwb3J0cyBwcm9iaW5nIHRoZSBhc3NvY2lhdGVkIEFQXG4gICpcdGluIFNUQSBtb2RlIHVzaW5nIEBOTDgwMjExX0NNRF9QUk9CRV9QRUVSLlxuICAqXG4rICogQE5MODAyMTFfRVhUX0ZFQVRVUkVfUk9BTV9PRkZMT0FEOiBEcml2ZXIgc3VwcG9ydHMgRmFzdCBUcmFuc2l0aW9uIG9yXG4rICpcdE9wcG9ydHVuaXN0aWMgS2V5IENhY2hpbmcgcm9hbWluZyBvZmZsb2FkIGluIHN0YXRpb24gbW9kZS5cbisgKlxuICAqIEBOVU1fTkw4MDIxMV9FWFRfRkVBVFVSRVM6IG51bWJlciBvZiBleHRlbmRlZCBmZWF0dXJlcy5cbiAgKiBATUFYX05MODAyMTFfRVhUX0ZFQVRVUkVTOiBoaWdoZXN0IGV4dGVuZGVkIGZlYXR1cmUgaW5kZXguXG4gICovXG5AQCAtNzE5Miw2ICs3MTk3LDcgQEAgZW51bSBubDgwMjExX2V4dF9mZWF0dXJlX2luZGV4IHtcbiBcdE5MODAyMTFfRVhUX0ZFQVRVUkVfUk9DX0FERFJfRklMVEVSLFxuIFx0Tkw4MDIxMV9FWFRfRkVBVFVSRV9TRVRfS0VZX0xURl9TRUVELFxuIFx0Tkw4MDIxMV9FWFRfRkVBVFVSRV9QUk9CRV9BUCxcbitcdE5MODAyMTFfRVhUX0ZFQVRVUkVfUk9BTV9PRkZMT0FELFxuIFxuIFx0LyogYWRkIG5ldyBmZWF0dXJlcyBiZWZvcmUgdGhlIGRlZmluaXRpb24gYmVsb3cgKi9cbiBcdE5VTV9OTDgwMjExX0VYVF9GRUFUVVJFUyxcbmRpZmYgLS1naXQgYS9uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jIGIvbmV0L3dpcmVsZXNzL25sODAyMTEuY1xuaW5kZXggNDRmMmJhZDA4NjcwNS4uN2RiZDRjYWYyNjA5MSAxMDA2NDRcbi0tLSBhL25ldC93aXJlbGVzcy9ubDgwMjExLmNcbisrKyBiL25ldC93aXJlbGVzcy9ubDgwMjExLmNcbkBAIC0xODQ0Myw3ICsxODQ0Myw5IEBAIHN0YXRpYyBpbnQgbmw4MDIxMV9zZXRfcG1rKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBnZW5sX2luZm8gKmluZm8pXG4gXHRcdHJldHVybiAtRU9QTk9UU1VQUDtcbiBcbiBcdGlmICghd2lwaHlfZXh0X2ZlYXR1cmVfaXNzZXQoXHUwMDI2cmRldi1cdTAwM2V3aXBoeSxcbi1cdFx0XHRcdCAgICAgTkw4MDIxMV9FWFRfRkVBVFVSRV80V0FZX0hBTkRTSEFLRV9TVEFfMVgpKVxuK1x0XHRcdFx0ICAgICBOTDgwMjExX0VYVF9GRUFUVVJFXzRXQVlfSEFORFNIQUtFX1NUQV8xWCkgXHUwMDI2XHUwMDI2XG4rXHQgICAgIXdpcGh5X2V4dF9mZWF0dXJlX2lzc2V0KFx1MDAyNnJkZXYtXHUwMDNld2lwaHksXG4rXHRcdFx0XHQgICAgIE5MODAyMTFfRVhUX0ZFQVRVUkVfUk9BTV9PRkZMT0FEKSlcbiBcdFx0cmV0dXJuIC1FT1BOT1RTVVBQO1xuIFxuIFx0aWYgKCFpbmZvLVx1MDAzZWF0dHJzW05MODAyMTFfQVRUUl9NQUNdIHx8ICFpbmZvLVx1MDAzZWF0dHJzW05MODAyMTFfQVRUUl9QTUtdKVxuQEAgLTIxMTk4LDYgKzIxMjAwLDggQEAgdm9pZCBubDgwMjExX3NlbmRfY29ubmVjdF9yZXN1bHQoc3RydWN0IGNmZzgwMjExX3JlZ2lzdGVyZWRfZGV2aWNlICpyZGV2LFxuIFx0ICAgICAobmxhX3B1dF9mbGFnKG1zZywgTkw4MDIxMV9BVFRSX1RJTUVEX09VVCkgfHxcbiBcdCAgICAgIG5sYV9wdXRfdTMyKG1zZywgTkw4MDIxMV9BVFRSX1RJTUVPVVRfUkVBU09OLFxuIFx0XHRcdCAgY3ItXHUwMDNldGltZW91dF9yZWFzb24pKSkgfHxcbitcdCAgICAoY3ItXHUwMDNlYXV0aG9yaXplZCBcdTAwMjZcdTAwMjZcbitcdCAgICAgbmxhX3B1dF9mbGFnKG1zZywgTkw4MDIxMV9BVFRSX1BPUlRfQVVUSE9SSVpFRCkpIHx8XG4gXHQgICAgKGNyLVx1MDAzZXJlcV9pZSBcdTAwMjZcdTAwMjZcbiBcdCAgICAgbmxhX3B1dChtc2csIE5MODAyMTFfQVRUUl9SRVFfSUUsIGNyLVx1MDAzZXJlcV9pZV9sZW4sIGNyLVx1MDAzZXJlcV9pZSkpIHx8XG4gXHQgICAgKGNyLVx1MDAzZXJlc3BfaWUgXHUwMDI2XHUwMDI2XG5AQCAtMjEzMjEsNyArMjEzMjUsOSBAQCB2b2lkIG5sODAyMTFfc2VuZF9yb2FtZWQoc3RydWN0IGNmZzgwMjExX3JlZ2lzdGVyZWRfZGV2aWNlICpyZGV2LFxuIFx0ICAgIChpbmZvLVx1MDAzZWZpbHMucG1rIFx1MDAyNlx1MDAyNlxuIFx0ICAgICBubGFfcHV0KG1zZywgTkw4MDIxMV9BVFRSX1BNSywgaW5mby1cdTAwM2VmaWxzLnBta19sZW4sIGluZm8tXHUwMDNlZmlscy5wbWspKSB8fFxuIFx0ICAgIChpbmZvLVx1MDAzZWZpbHMucG1raWQgXHUwMDI2XHUwMDI2XG4tXHQgICAgIG5sYV9wdXQobXNnLCBOTDgwMjExX0FUVFJfUE1LSUQsIFdMQU5fUE1LSURfTEVOLCBpbmZvLVx1MDAzZWZpbHMucG1raWQpKSlcbitcdCAgICAgbmxhX3B1dChtc2csIE5MODAyMTFfQVRUUl9QTUtJRCwgV0xBTl9QTUtJRF9MRU4sIGluZm8tXHUwMDNlZmlscy5wbWtpZCkpIHx8XG4rXHQgICAgKGluZm8tXHUwMDNlYXV0aG9yaXplZCBcdTAwMjZcdTAwMjZcbitcdCAgICAgbmxhX3B1dF9mbGFnKG1zZywgTkw4MDIxMV9BVFRSX1BPUlRfQVVUSE9SSVpFRCkpKVxuIFx0XHRnb3RvIG5sYV9wdXRfZmFpbHVyZTtcbiBcbiBcdGlmIChpbmZvLVx1MDAzZXZhbGlkX2xpbmtzKSB7XG5kaWZmIC0tZ2l0IGEvbmV0L3dpcmVsZXNzL3NtZS5jIGIvbmV0L3dpcmVsZXNzL3NtZS5jXG5pbmRleCAyYTcxOWI1YzQ4N2UzLi45NzRlNzlmNTczOTJkIDEwMDY0NFxuLS0tIGEvbmV0L3dpcmVsZXNzL3NtZS5jXG4rKysgYi9uZXQvd2lyZWxlc3Mvc21lLmNcbkBAIC0xMDY3LDYgKzEwNjcsNyBAQCB2b2lkIGNmZzgwMjExX2Nvbm5lY3RfZG9uZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuIFx0ZXYtXHUwMDNlY3Iuc3RhdHVzID0gcGFyYW1zLVx1MDAzZXN0YXR1cztcbiBcdGV2LVx1MDAzZWNyLnRpbWVvdXRfcmVhc29uID0gcGFyYW1zLVx1MDAzZXRpbWVvdXRfcmVhc29uO1xuIFx0ZXYtXHUwMDNlY3IuYXNzb2NfZW5jcnlwdGVkID0gcGFyYW1zLVx1MDAzZWFzc29jX2VuY3J5cHRlZDtcbitcdGV2LVx1MDAzZWNyLmF1dGhvcml6ZWQgPSBwYXJhbXMtXHUwMDNlYXV0aG9yaXplZDtcbiBcbiBcdHNwaW5fbG9ja19pcnFzYXZlKFx1MDAyNndkZXYtXHUwMDNlZXZlbnRfbG9jaywgZmxhZ3MpO1xuIFx0bGlzdF9hZGRfdGFpbChcdTAwMjZldi1cdTAwM2VsaXN0LCBcdTAwMjZ3ZGV2LVx1MDAzZWV2ZW50X2xpc3QpO1xuQEAgLTEyNTMsNiArMTI1NCw3IEBAIHZvaWQgY2ZnODAyMTFfcm9hbWVkKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBjZmc4MDIxMV9yb2FtX2luZm8gKmluZm8sXG4gXHRcdG5leHQgKz0gRVRIX0FMRU47XG4gXHR9XG4gXHRldi1cdTAwM2VybS52YWxpZF9saW5rcyA9IGluZm8tXHUwMDNldmFsaWRfbGlua3M7XG4rXHRldi1cdTAwM2VybS5hdXRob3JpemVkID0gaW5mby1cdTAwM2VhdXRob3JpemVkO1xuIFx0Zm9yX2VhY2hfdmFsaWRfbGluayhpbmZvLCBsaW5rKSB7XG4gXHRcdGV2LVx1MDAzZXJtLmxpbmtzW2xpbmtdLmJzcyA9IGluZm8tXHUwMDNlbGlua3NbbGlua10uYnNzO1xuIFxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDVUMTI6MTg6MzguMTI5MDE2MThaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo3NzE1MDQ4NTU2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkZ1enppbmcgUG90ZW50aWFsOiBBIERlZXAgRGl2ZSBpbnRvIHRoZSBtYWM4MDIxMS9jZmc4MDIxMSBQYXRjaCoqXG5cbk9rYXksIGhlcmUncyB0aGUgYnJlYWtkb3duLiBJJ3ZlIGdvdCB0aGlzIHBhdGNoIHRoYXQncyBtZXNzaW5nIHdpdGggdGhlIGBtYWM4MDIxMS9jZmc4MDIxMWAgc3Vic3lzdGVtLCBzcGVjaWZpY2FsbHkgYG5ldC93aXJlbGVzc2AuIEl0J3MgYWRkaW5nIGFuIGBhdXRob3JpemVkYCBmaWVsZCB0byBgY2ZnODAyMTFfY29ubmVjdF9yZXNwX3BhcmFtc2AgYW5kIGBjZmc4MDIxMV9yb2FtX2luZm9gLCB3aGljaCBpbW1lZGlhdGVseSBwaXF1ZXMgbXkgaW50ZXJlc3QuIEFueXRpbWUgd2UncmUgbW9kaWZ5aW5nIGRhdGEgc3RydWN0dXJlcyBhbmQgYWRkaW5nIG5ldyBhdHRyaWJ1dGVzIGluIG5ldGxpbmsgbWVzc2FnZXMsIGl0IHJhaXNlcyBhIGZsYWcuICBQbHVzLCB0aGVyZSdzIGEgbmV3IGV4dGVuZGVkIGZlYXR1cmUgZmxhZywgYE5MODAyMTFfRVhUX0ZFQVRVUkVfUk9BTV9PRkZMT0FEYCwgd2hpY2ggdXN1YWxseSBtZWFucyB3ZSdyZSBpbnRyb2R1Y2luZyBuZXcgY29kZXBhdGhzIGFuZCBzdGF0ZS5cblxuVGhpcyBwYXRjaCBpcyBtb2RpZnlpbmcgY29yZSByZWFjaGFibGUga2VybmVsIGxvZ2ljIHJlbGF0ZWQgdG8gYGNmZzgwMjExYCBhbmQgYG5sODAyMTFgIHdoaWNoIGltbWVkaWF0ZWx5IHNjcmVhbXMgZnV6emluZyBjYW5kaWRhdGUuIFRoZSBtb2RpZmljYXRpb24gdG8gYG5sODAyMTFfc2V0X3Bta2AgaXMgZXNwZWNpYWxseSBpbnRlcmVzdGluZy4gSSBrbm93IHRoYXQgZnVuY3Rpb24gaXMgYW4gZW50cnkgcG9pbnQgZnJvbSB1c2Vyc3BhY2UgdmlhIHRoZSBgTkw4MDIxMV9DTURfU0VUX1BNS2AgbmV0bGluayBjb21tYW5kLiBUaGlzIG1lYW5zIHdlIGhhdmUgZGlyZWN0IHVzZXItY29udHJvbGxlZCBpbnB1dCB0aGF0J3Mgbm93IHRpZWQgdG8gdGhpcyBuZXcgZmVhdHVyZSwgYW5kIHRoYXQgYWx3YXlzIHByZXNlbnRzIGFuIG9wcG9ydHVuaXR5LiBUaGUgZmFjdCB0aGF0IGBubDgwMjExX3NlbmRfY29ubmVjdF9yZXN1bHRgIGFuZCBgbmw4MDIxMV9zZW5kX3JvYW1lZGAgYXJlIHRyaWdnZXJlZCBieSBkcml2ZXIgZXZlbnRzIGlzIGFsc28gcmVsZXZhbnQsIGV2ZW4gaWYgdGhleSBmb3JtYXQgbmV0bGluayBtZXNzYWdlcyB0byB1c2Vyc3BhY2UuXG5cbk5vdywgSSdtIGdvaW5nIHRvIGp1bXAgaW50byB0aGUgY29kZSBhbmQgdmVyaWZ5IHRoZSBgbmw4MDIxMV9zZXRfcG1rYCBmdW5jdGlvbiBpbiBgbmV0L3dpcmVsZXNzL25sODAyMTEuY2AgYW5kIGNoZWNrIGl0cyBjb250ZXh0LiBJIHdpbGwgdXNlIGdyZXAgZm9yIGZhc3QgbmF2aWdhdGlvbiB0byBpbnNwZWN0IHdoYXQgZXhhY3RseSB0aGUgY2hhbmdlcyBhcmUuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGUgbmV3IGBOTDgwMjExX0VYVF9GRUFUVVJFX1JPQU1fT0ZGTE9BRGAgZmVhdHVyZSBhbmQgYGF1dGhvcml6ZWRgIGZpZWxkIGludGVyYWN0IHdpdGggdGhlIGV4aXN0aW5nIGZ1bmN0aW9uYWxpdHkuIFRoaXMgaXMgd2hlcmUgdGhlIHJlYWwgZnV6emluZyBwb3RlbnRpYWwgbGllcy5cblxuXG4iLCJJbnB1dFRva2VucyI6NDI1MiwiT3V0cHV0VG9rZW5zIjo0MywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQwNiwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA1VDEyOjE4OjQ1Ljg0NDA2ODAwN1oiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4OTIyMjMyNywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJubDgwMjExX3NldF9wbWtcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L3dpcmVsZXNzL25sODAyMTEuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvd2lyZWxlc3Mvbmw4MDIxMS5jPTE0MzQ0PXN0YXRpYyBpbnQgbmw4MDIxMV93aXBoeV9uZXRucyhzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgZ2VubF9pbmZvICppbmZvKVxcbi0tXFxubmV0L3dpcmVsZXNzL25sODAyMTEuYy0xNDM4Ny1cXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jOjE0Mzg4OnN0YXRpYyBpbnQgbmw4MDIxMV9zZXRfcG1rc2Eoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGdlbmxfaW5mbyAqaW5mbylcXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jLTE0Mzg5LXtcXG4tLVxcbm5ldC93aXJlbGVzcy9ubDgwMjExLmM9MTg0MTI9c3RhdGljIGludCBubDgwMjExX3NldF9tdWx0aWNhc3RfdG9fdW5pY2FzdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbi0tXFxubmV0L3dpcmVsZXNzL25sODAyMTEuYy0xODQzMy1cXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jOjE4NDM0OnN0YXRpYyBpbnQgbmw4MDIxMV9zZXRfcG1rKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBnZW5sX2luZm8gKmluZm8pXFxubmV0L3dpcmVsZXNzL25sODAyMTEuYy0xODQzNS17XFxuLS1cXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jPTE5NzM1PXN0YXRpYyBjb25zdCBzdHJ1Y3QgZ2VubF9zbWFsbF9vcHMgbmw4MDIxMV9zbWFsbF9vcHNbXSA9IHtcXG4tLVxcbm5ldC93aXJlbGVzcy9ubDgwMjExLmMtMjAwNjktXFx0XFx0LnZhbGlkYXRlID0gR0VOTF9ET05UX1ZBTElEQVRFX1NUUklDVCB8IEdFTkxfRE9OVF9WQUxJREFURV9EVU1QLFxcbm5ldC93aXJlbGVzcy9ubDgwMjExLmM6MjAwNzA6XFx0XFx0LmRvaXQgPSBubDgwMjExX3NldF9wbWtzYSxcXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jLTIwMDcxLVxcdFxcdC5mbGFncyA9IEdFTkxfVU5TX0FETUlOX1BFUk0sXFxuLS1cXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jLTIwNDUxLVxcdFxcdC52YWxpZGF0ZSA9IEdFTkxfRE9OVF9WQUxJREFURV9TVFJJQ1QgfCBHRU5MX0RPTlRfVkFMSURBVEVfRFVNUCxcXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jOjIwNDUyOlxcdFxcdC5kb2l0ID0gbmw4MDIxMV9zZXRfcG1rLFxcbm5ldC93aXJlbGVzcy9ubDgwMjExLmMtMjA0NTMtXFx0XFx0LmZsYWdzID0gR0VOTF9VTlNfQURNSU5fUEVSTSxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDVUMTI6MTg6NDUuOTMzMjk2NzA0WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTUzMDI4MDEwMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBbmFseXNpcyBvZiB0aGUgUHJvcG9zZWQgQ2hhbmdlcyoqXG5cbk9rYXksIHNvIGBubDgwMjExX3NldF9wbWtgIGlzIGRlZmluaXRlbHkgYSBuZXRsaW5rIGNvbW1hbmQgaGFuZGxlciwgYXMgZXhwZWN0ZWQuIFRoaXMgcGF0Y2ggaXMgYWRkaW5nIGEgY29uZGl0aW9uIHRvIGFsbG93IGl0IHdoZW4gYE5MODAyMTFfRVhUX0ZFQVRVUkVfUk9BTV9PRkZMT0FEYCBpcyBlbmFibGVkLiBUaGF0J3MgZ29vZCB0byBrbm93LiBUaGUgY2hhbmdlcyBhbHNvIHRvdWNoIGBubDgwMjExX3NlbmRfY29ubmVjdF9yZXN1bHRgLCBgbmw4MDIxMV9zZW5kX3JvYW1lZGAsIGBjZmc4MDIxMV9jb25uZWN0X2RvbmVgLCBhbmQgYGNmZzgwMjExX3JvYW1lZGAuIFRob3NlIGFyZSBhbGwgZHJpdmVyLXRvLWNmZzgwMjExIEFQSSBmdW5jdGlvbnMsIHdoaWNoIGlzIHVzZWZ1bCBpbiB1bmRlcnN0YW5kaW5nIHRoZSBzY29wZSBvZiBpbXBhY3QuXG5cbkdpdmVuIHRoaXMsIEkgdGhpbmsgZnV6emluZyBgbmw4MDIxMV9zZXRfcG1rYCBzaG91bGQgYmUgb3VyIHByaW1hcnkgZm9jdXMuIFdlIGNhbiBhbHNvIGV4cGxvcmUgZnV6emluZyBgY2ZnODAyMTFfY29ubmVjdF9kb25lYCBhbmQgYGNmZzgwMjExX3JvYW1lZGAsIGJ1dCB0aGF0J3MgZ29pbmcgdG8gcmVxdWlyZSBoYXZpbmcgYG1hYzgwMjExX2h3c2ltYCBhdmFpbGFibGUuIFRoYXQncyBzb21ldGhpbmcgdG8ga2VlcCBpbiBtaW5kLCB3ZSBjYW4gdXNlIHRoYXQgdG8gdGVzdCB0aG9zZS5cblxuTGV0J3MgcXVpY2tseSBjaGVjayB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zLiBXZSBuZWVkIHRvIGNvbmZpcm0gdGhhdCBgQ09ORklHX0NGRzgwMjExYCwgYENPTkZJR19NQUM4MDIxMWAsIGFuZCBgQ09ORklHX01BQzgwMjExX0hXU0lNYCBhcmUgYWxsIHByZXNlbnQuIEtub3dpbmcgdGhhdCB3aWxsIHNoYXBlIHRoZSBzdHJhdGVneS5cblxuXG4iLCJJbnB1dFRva2VucyI6NTczNywiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI0OCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNVQxMjoxODo1MS40NjM1Nzg5MTZaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTM1MTA5NjYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIENGRzgwMjExXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC93aXJlbGVzcy9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC93aXJlbGVzcy9LY29uZmlnPTE0PWNvbmZpZyBXRVhUX1BSSVZcXG4tLVxcbm5ldC93aXJlbGVzcy9LY29uZmlnLTE2LVxcbm5ldC93aXJlbGVzcy9LY29uZmlnOjE3OmNvbmZpZyBDRkc4MDIxMVxcbm5ldC93aXJlbGVzcy9LY29uZmlnLTE4LVxcdHRyaXN0YXRlIFxcXCJjZmc4MDIxMSAtIHdpcmVsZXNzIGNvbmZpZ3VyYXRpb24gQVBJXFxcIlxcbi0tXFxubmV0L3dpcmVsZXNzL0tjb25maWc9Mzg9Y29uZmlnIE5MODAyMTFfVEVTVE1PREVcXG4tLVxcbm5ldC93aXJlbGVzcy9LY29uZmlnLTUxLVxcbm5ldC93aXJlbGVzcy9LY29uZmlnOjUyOmNvbmZpZyBDRkc4MDIxMV9ERVZFTE9QRVJfV0FSTklOR1NcXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy01My1cXHRib29sIFxcXCJlbmFibGUgZGV2ZWxvcGVyIHdhcm5pbmdzXFxcIlxcbi0tXFxubmV0L3dpcmVsZXNzL0tjb25maWctNjctXFxubmV0L3dpcmVsZXNzL0tjb25maWc6Njg6Y29uZmlnIENGRzgwMjExX0NFUlRJRklDQVRJT05fT05VU1xcbm5ldC93aXJlbGVzcy9LY29uZmlnLTY5LVxcdGJvb2wgXFxcImNmZzgwMjExIGNlcnRpZmljYXRpb24gb251c1xcXCJcXG4tLVxcbm5ldC93aXJlbGVzcy9LY29uZmlnLTg4LVxcbm5ldC93aXJlbGVzcy9LY29uZmlnOjg5OmNvbmZpZyBDRkc4MDIxMV9SRVFVSVJFX1NJR05FRF9SRUdEQlxcbm5ldC93aXJlbGVzcy9LY29uZmlnLTkwLVxcdGJvb2wgXFxcInJlcXVpcmUgcmVnZGIgc2lnbmF0dXJlXFxcIiBpZiBDRkc4MDIxMV9DRVJUSUZJQ0FUSU9OX09OVVNcXG4tLVxcbm5ldC93aXJlbGVzcy9LY29uZmlnLTk4LVxcbm5ldC93aXJlbGVzcy9LY29uZmlnOjk5OmNvbmZpZyBDRkc4MDIxMV9VU0VfS0VSTkVMX1JFR0RCX0tFWVNcXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xMDAtXFx0Ym9vbCBcXFwiYWxsb3cgcmVnZGIga2V5cyBzaGlwcGVkIHdpdGggdGhlIGtlcm5lbFxcXCIgaWYgQ0ZHODAyMTFfQ0VSVElGSUNBVElPTl9PTlVTXFxuLS1cXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xMTAtXFxubmV0L3dpcmVsZXNzL0tjb25maWc6MTExOmNvbmZpZyBDRkc4MDIxMV9FWFRSQV9SRUdEQl9LRVlESVJcXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xMTItXFx0c3RyaW5nIFxcXCJhZGRpdGlvbmFsIHJlZ2RiIGtleSBkaXJlY3RvcnlcXFwiIGlmIENGRzgwMjExX0NFUlRJRklDQVRJT05fT05VU1xcbi0tXFxubmV0L3dpcmVsZXNzL0tjb25maWctMTIxLVxcbm5ldC93aXJlbGVzcy9LY29uZmlnOjEyMjpjb25maWcgQ0ZHODAyMTFfUkVHX0NFTExVTEFSX0hJTlRTXFxubmV0L3dpcmVsZXNzL0tjb25maWctMTIzLVxcdGJvb2wgXFxcImNmZzgwMjExIHJlZ3VsYXRvcnkgc3VwcG9ydCBmb3IgY2VsbHVsYXIgYmFzZSBzdGF0aW9uIGhpbnRzXFxcIlxcbi0tXFxubmV0L3dpcmVsZXNzL0tjb25maWctMTM0LVxcbm5ldC93aXJlbGVzcy9LY29uZmlnOjEzNTpjb25maWcgQ0ZHODAyMTFfUkVHX1JFTEFYX05PX0lSXFxubmV0L3dpcmVsZXNzL0tjb25maWctMTM2LVxcdGJvb2wgXFxcImNmZzgwMjExIHN1cHBvcnQgZm9yIE5PX0lSIHJlbGF4YXRpb25cXFwiXFxuLS1cXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xNTgtXFxubmV0L3dpcmVsZXNzL0tjb25maWc6MTU5OmNvbmZpZyBDRkc4MDIxMV9ERUZBVUxUX1BTXFxubmV0L3dpcmVsZXNzL0tjb25maWctMTYwLVxcdGJvb2wgXFxcImVuYWJsZSBwb3dlcnNhdmUgYnkgZGVmYXVsdFxcXCJcXG4tLVxcbm5ldC93aXJlbGVzcy9LY29uZmlnLTE2OC1cXG5uZXQvd2lyZWxlc3MvS2NvbmZpZzoxNjk6Y29uZmlnIENGRzgwMjExX0RFQlVHRlNcXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xNzAtXFx0Ym9vbCBcXFwiY2ZnODAyMTEgRGVidWdGUyBlbnRyaWVzXFxcIlxcbi0tXFxubmV0L3dpcmVsZXNzL0tjb25maWctMTc2LVxcbm5ldC93aXJlbGVzcy9LY29uZmlnOjE3Nzpjb25maWcgQ0ZHODAyMTFfQ1JEQV9TVVBQT1JUXFxubmV0L3dpcmVsZXNzL0tjb25maWctMTc4LVxcdGJvb2wgXFxcInN1cHBvcnQgQ1JEQVxcXCIgaWYgRVhQRVJUXFxuLS1cXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xODYtXFxubmV0L3dpcmVsZXNzL0tjb25maWc6MTg3OmNvbmZpZyBDRkc4MDIxMV9XRVhUXFxubmV0L3dpcmVsZXNzL0tjb25maWctMTg4LVxcdGJvb2wgXFxcImNmZzgwMjExIHdpcmVsZXNzIGV4dGVuc2lvbnMgY29tcGF0aWJpbGl0eVxcXCJcXG4tLVxcbm5ldC93aXJlbGVzcy9LY29uZmlnLTE5My1cXG5uZXQvd2lyZWxlc3MvS2NvbmZpZzoxOTQ6Y29uZmlnIENGRzgwMjExX0tVTklUX1RFU1RcXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xOTUtXFx0dHJpc3RhdGUgXFxcIktVbml0IHRlc3RzIGZvciBjZmc4MDIxMVxcXCIgaWYgIUtVTklUX0FMTF9URVNUU1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNVQxMjoxODo1MS41NTcwOTQ1MjRaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozODUxOTM1MjQ0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkV4YW1pbmluZyB0aGUgV2lyZWxlc3MgSGFyZHdhcmUgU2ltdWxhdGlvbiBDb25maWd1cmF0aW9uKipcblxuT2theSwgc28gd2UncmUgbG9va2luZyBhdCBzb21lIGtleSBjb25maWd1cmF0aW9uIG9wdGlvbnMgcmVsYXRlZCB0byB3aXJlbGVzcy4gV2UndmUgZ290IGBDRkc4MDIxMWAsIHdoaWNoIGlzIGFsd2F5cyBhIHN0YXJ0aW5nIHBvaW50IGZvciB3aXJlbGVzcyBjb25maWd1cmF0aW9ucywgYW5kIHRoZW4gYE1BQzgwMjExX0hXU0lNYC4gQWgsIHllcywgdGhhdCdzIHRoZSBoYXJkd2FyZSBzaW11bGF0aW9uIHBpZWNlIGZvciBtYWM4MDIxMS5cblxuUmlnaHQsIGxldCdzIGRpdmUgaW50byB0aGUgZ3V0cyBvZiB0aGlzLiBUbyB1bmRlcnN0YW5kIGhvdyBgTUFDODAyMTFfSFdTSU1gIGFjdHVhbGx5IHdvcmtzLCB0aGUgbG9naWNhbCBwbGFjZSB0byBzdGFydCBpcyBgZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFjODAyMTFfaHdzaW0uY2AuIFRoYXQgZmlsZSBzaG91bGQgZ2l2ZSB1cyB0aGUgaW1wbGVtZW50YXRpb24gZGV0YWlscywgaG93IGl0IG1pbWljcyB0aGUgaGFyZHdhcmUsIGFuZCBob3cgaXQgaW50ZXJhY3RzIHdpdGggdGhlIG1hYzgwMjExIGNvcmUuIFRpbWUgdG8gZ2V0IG15IGhhbmRzIGRpcnR5IGFuZCBzZWUgd2hhdCdzIHJlYWxseSBoYXBwZW5pbmcgdW5kZXIgdGhlIGhvb2QuIEkgc3VzcGVjdCB3ZSdsbCBzZWUgc2ltdWxhdGVkIHJhZGlvcywgaW50ZXJmYWNlcywgYW5kIHBhY2tldCBoYW5kbGluZyB3aXRoaW4gdGhhdCBtb2R1bGUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjcyNDksIk91dHB1dFRva2VucyI6NDksIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2MywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNVQxMjoxODo1NS40MDkwMzI0ODdaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjE3ODM5ODgsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBNQUM4MDIxMV9IV1NJTVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tYWM4MDIxMV9od3NpbS9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNVQxMjoxODo1NS40NzA4MjI4OTVaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MzgxMjY3NzI3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk5hdmlnYXRpbmcgdGhlIEtlcm5lbCdzIFdpcmVsZXNzIExhbmRzY2FwZSoqXG5cbk9rYXksIHNvIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoZXJlIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIHRoZSBoYXJkd2FyZSBzaW11bGF0aW9uIHdpdGhpbiB0aGUgd2lyZWxlc3Mgc3RhY2sgYXJlIGRlZmluZWQuIE15IGZpcnN0IGluc3RpbmN0LCBnaXZlbiBteSBleHBlcmllbmNlLCBpcyB0byB6ZXJvIGluIG9uIHRoZSByZWxldmFudCBLY29uZmlnIGZpbGVzLiBHaXZlbiBteSBwcmlvciBleHBlcmllbmNlLCBgZHJpdmVycy9uZXQvd2lyZWxlc3MvS2NvbmZpZ2AgaXMgdGhlIG1vc3Qgb2J2aW91cyBzdGFydGluZyBwb2ludCBmb3IgZ2VuZXJhbCB3aXJlbGVzcyBjb25maWd1cmF0aW9uLiBIb3dldmVyLCBzaW5jZSBJIGFtIHNwZWNpZmljYWxseSBsb29raW5nIGF0IGhhcmR3YXJlIHNpbXVsYXRpb24sIGBkcml2ZXJzL25ldC93aXJlbGVzcy9tYWM4MDIxMV9od3NpbS9LY29uZmlnYCBmZWVscyBsaWtlIGl0IGlzIGEgc3Ryb25nIHNlY29uZCBjb250ZW5kZXIuIEdpdmVuIHRoZSBzaW1wbGljaXR5LCBhbmQgdGltZSBzYXZpbmdzLCByYXRoZXIgdGhhbiBvcGVuaW5nIHRoZXNlIGZpbGVzLCBJJ2xsIGJ5cGFzcyBzZWFyY2hpbmcgYm90aCBLY29uZmlnIGZpbGVzLCBhbmQgY29uZHVjdCBhIHF1aWNrIGdyZXAgc2VhcmNoIGZvciBgY29uZmlnIE1BQzgwMjExX0hXU0lNYCB3aXRoaW4gdGhlIGtlcm5lbCBzb3VyY2UgdHJlZS4gVGhpcyB3aWxsIGJlIGFuIGVmZmljaWVudCB3YXkgdG8gcXVpY2tseSBsb2NhdGUgdGhlIHJlbGV2YW50IGNvbmZpZ3VyYXRpb24gb3B0aW9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjo3NTc4LCJPdXRwdXRUb2tlbnMiOjMxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDVUMTI6MTg6NTkuODUyMDk0MjAyWiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMjAwNTQzMDgzLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBNQUM4MDIxMV9IV1NJTVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9LY29uZmlnOjE6Y29uZmlnIE1BQzgwMjExX0hXU0lNXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9LY29uZmlnLTItXFx0dHJpc3RhdGUgXFxcIlNpbXVsYXRlZCByYWRpbyB0ZXN0aW5nIHRvb2wgZm9yIG1hYzgwMjExXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNVQxMjoxOTowMi4wNTI2NTQwMjZaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTU3OTQwNzQzMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFdpRmkgRHJpdmVyIEludGVyYWN0aW9uKipcblxuQWxyaWdodCwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBNeSBmb2N1cyByaWdodCBub3cgaXMgb24gaG93IHRoZSBXaUZpIGRyaXZlciwgc3BlY2lmaWNhbGx5IHdpdGhpbiB0aGUgY29udGV4dCBvZiBgTUFDODAyMTFgLCBgQ0ZHODAyMTFgLCBhbmQgYE1BQzgwMjExX0hXU0lNYCwgaGFuZGxlcyBjb25uZWN0aW9uIGFuZCByb2FtaW5nLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgaW50ZXJhY3Rpb24sIHNvIEknbSBob25pbmcgaW4gb24gc3BlY2lmaWMgZnVuY3Rpb25zOiBgbmw4MDIxMV9zZXRfcG1rYCwgYGNmZzgwMjExX2Nvbm5lY3RfZG9uZWAsIGFuZCBgY2ZnODAyMTFfcm9hbWVkYC5cblxuSG1tLCBgY2ZnODAyMTFfY29ubmVjdF9kb25lYCBhbmQgYGNmZzgwMjExX3JvYW1lZGAuLi50aG9zZSByaW5nIGEgYmVsbC4gQXJlbid0IHRob3NlIGV4cG9ydGVkIHN5bWJvbHMgdXNlZCBieSB0aGUgKmRyaXZlcnMqIHRoZW1zZWx2ZXM/IEkgbmVlZCB0byB2ZXJpZnkgdGhhdC4gSXQncyBjcnVjaWFsIHRvIHVuZGVyc3RhbmQgaG93IHRoZSBkcml2ZXIgaW50ZXJmYWNlcyB3aXRoIHRoZSBjZmc4MDIxMSBjb3JlLiBJJ2xsIHF1aWNrbHkgZG91YmxlLWNoZWNrIHRoYXQgdGhleSBhcmUsIGluIGZhY3QsIGV4cG9ydGVkLiBUaGF0J3MgYSBmdW5kYW1lbnRhbCBhc3BlY3QgSSBuZWVkIHRvIGNvbmZpcm0gdG8gcHJvY2VlZCBlZmZlY3RpdmVseS5cblxuXG4iLCJJbnB1dFRva2VucyI6NzkxOCwiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEyMCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNVQxMjoxOTowNy42MzIwNzgyMTZaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI2MjgzODI2NTEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiRVhQT1JUX1NZTUJPTC4qY2ZnODAyMTFfY29ubmVjdF9kb25lXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIlwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvd2lyZWxlc3Mvc21lLmM9OTY4PXZvaWQgY2ZnODAyMTFfY29ubmVjdF9kb25lKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxuLS1cXG5uZXQvd2lyZWxlc3Mvc21lLmMtMTA3Ni19XFxubmV0L3dpcmVsZXNzL3NtZS5jOjEwNzc6RVhQT1JUX1NZTUJPTChjZmc4MDIxMV9jb25uZWN0X2RvbmUpO1xcbm5ldC93aXJlbGVzcy9zbWUuYy0xMDc4LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNVQxMjoxOToxMC4yNjA0Njc5MjdaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Njk3MTUzMDYzOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgQVBJIEVudHJ5cG9pbnRzIGFuZCBTdGF0aWMgRnVuY3Rpb25zKipcblxuT2theSwgc28gSSdtIGRlYWxpbmcgd2l0aCBleHBvcnRlZCBzeW1ib2xzIGhlcmUuIFRoZSBwcm9tcHQgc3BlY2lmaWVzIGEgcHJlZmVyZW5jZSBmb3Igbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnRzIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMuIFJpZ2h0IG5vdywgSSdtIGxvb2tpbmcgYXQgYG5sODAyMTFfc2V0X3Bta2AuIEkgcmVtZW1iZXIgdGhhdCdzIGEgc3RhdGljIGZ1bmN0aW9uIHJlc2lkaW5nIGluIGBuZXQvd2lyZWxlc3Mvbmw4MDIxMS5jYC4gQnV0IGhvbGQgb24sIHRoZSBpbnN0cnVjdGlvbnMgYXJlIGVtcGhhc2l6aW5nIG5vbi1zdGF0aWMgKmFuZCogbm9uLWlubGluZWQgZnVuY3Rpb25zLlxuXG5Ob3csIEkgbmVlZCB0byB0aGluayB0aGlzIHRocm91Z2guIGBubDgwMjExX3NldF9wbWtgICppcyogc3RhdGljLCB5ZXMsIGJ1dCBpdCdzIGEgbmV0bGluayBoYW5kbGVyLiBUaGF0IG1lYW5zIGl0J3MgcmVmZXJlbmNlZCB0aHJvdWdoIGEgZnVuY3Rpb24gcG9pbnRlciwgc3BlY2lmaWNhbGx5IGluIGBubDgwMjExX3NtYWxsX29wc2AuIFRoZXJlZm9yZSwgZXZlbiB0aG91Z2ggaXQncyBzdGF0aWMsIHRoZSBjb21waWxlciAqd29uJ3QqIGlubGluZSBpdCBjb21wbGV0ZWx5IGJlY2F1c2UgYSBwb2ludGVyIG5lZWRzIGEgZGlzdGluY3QgYWRkcmVzcyB0byBwb2ludCB0by4gSXQnbGwgc3RpbGwgZXhpc3QgYXMgYSBzZXBhcmF0ZSBzeW1ib2wuXG5cbkhvd2V2ZXIsIHRoZSBrZXkgaXMgdGhlICpwcmVmZXJyZWQqIG5vbi1zdGF0aWMvbm9uLWlubGluZWQgYXBwcm9hY2guIEkgYWxzbyBrbm93IGBjZmc4MDIxMV9jb25uZWN0X2RvbmVgIGFuZCBgY2ZnODAyMTFfcm9hbWVkYCBhcmUgZXhwb3J0ZWQgYW5kIG5vbi1zdGF0aWMsIHdoaWNoIGlzIGdvb2QuIFRoYXQgbWFrZXMgdGhlbSBzdHJvbmcgY2FuZGlkYXRlcy5cblxuSSBuZWVkIHRvIGNvbmZpcm0gaWYgYG5sODAyMTFfc2V0X3Bta2AgKmFjdHVhbGx5KiBnZXRzIGlubGluZWQuIEkgc3VzcGVjdCBpdCB3b24ndCBiZSBmdWxseSBpbmxpbmVkIGJlY2F1c2Ugb2YgdGhlIGZ1bmN0aW9uIHBvaW50ZXIsIGJ1dCBJIG5lZWQgdG8gbWFrZSBzdXJlLiBJJ2xsIGFsc28gY29uc2lkZXIgaW5jbHVkaW5nIGBjZmc4MDIxMV9jb25uZWN0X2RvbmVgIGFuZCBgY2ZnODAyMTFfcm9hbWVkYC5cblxuVG8gYmUgdGhvcm91Z2gsIEknbGwgYWxzbyBjaGVjayBgbmw4MDIxMV9zZW5kX2Nvbm5lY3RfcmVzdWx0YCBub3csIHdoaWxlIEknbSBhdCBpdC5cblxuXG4iLCJJbnB1dFRva2VucyI6ODQwNSwiT3V0cHV0VG9rZW5zIjozMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI2MywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNVQxMjoxOToxNy4yMzIwMDMxNzVaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI0OTE5NjA2NDUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibmw4MDIxMV9zZW5kX2Nvbm5lY3RfcmVzdWx0XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIlwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvd2lyZWxlc3Mvbmw4MDIxMS5jPTIxMTQ0PXZvaWQgbmw4MDIxMV9zZW5kX2Fzc29jX3RpbWVvdXQoc3RydWN0IGNmZzgwMjExX3JlZ2lzdGVyZWRfZGV2aWNlICpyZGV2LFxcbi0tXFxubmV0L3dpcmVsZXNzL25sODAyMTEuYy0yMTE1MS1cXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jOjIxMTUyOnZvaWQgbmw4MDIxMV9zZW5kX2Nvbm5lY3RfcmVzdWx0KHN0cnVjdCBjZmc4MDIxMV9yZWdpc3RlcmVkX2RldmljZSAqcmRldixcXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jLTIxMTUzLVxcdFxcdFxcdFxcdCBzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LFxcbi0tXFxubmV0L3dpcmVsZXNzL25sODAyMTEuaD03Nz12b2lkIG5sODAyMTFfc2VuZF9hc3NvY190aW1lb3V0KHN0cnVjdCBjZmc4MDIxMV9yZWdpc3RlcmVkX2RldmljZSAqcmRldixcXG4tLVxcbm5ldC93aXJlbGVzcy9ubDgwMjExLmgtNzktXFx0XFx0XFx0XFx0Y29uc3QgdTggKmFkZHIsIGdmcF90IGdmcCk7XFxubmV0L3dpcmVsZXNzL25sODAyMTEuaDo4MDp2b2lkIG5sODAyMTFfc2VuZF9jb25uZWN0X3Jlc3VsdChzdHJ1Y3QgY2ZnODAyMTFfcmVnaXN0ZXJlZF9kZXZpY2UgKnJkZXYsXFxubmV0L3dpcmVsZXNzL25sODAyMTEuaC04MS1cXHRcXHRcXHRcXHQgc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldixcXG4tLVxcbm5ldC93aXJlbGVzcy9zbWUuYz03MzU9dm9pZCBfX2NmZzgwMjExX2Nvbm5lY3RfcmVzdWx0KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxuLS1cXG5uZXQvd2lyZWxlc3Mvc21lLmMtNzcwLVxcdHdkZXYtXFx1MDAzZXVucHJvdF9iZWFjb25fcmVwb3J0ZWQgPSAwO1xcbm5ldC93aXJlbGVzcy9zbWUuYzo3NzE6XFx0bmw4MDIxMV9zZW5kX2Nvbm5lY3RfcmVzdWx0KHdpcGh5X3RvX3JkZXYod2Rldi1cXHUwMDNld2lwaHkpLCBkZXYsIGNyLFxcbm5ldC93aXJlbGVzcy9zbWUuYy03NzItXFx0XFx0XFx0XFx0ICAgIEdGUF9LRVJORUwpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNVQxMjoxOToxOS43MjM5Njk0NFoiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo5NDg4NzIwOTkyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFuYWx5c2lzIG9mIE5ldGxpbmsgYW5kIGNmZzgwMjExIEZ1bmN0aW9uIEluY2x1c2lvbnMqKlxuXG5Pa2F5LCBzbyBJJ20gZXZhbHVhdGluZyB3aGljaCBmdW5jdGlvbnMgZnJvbSB0aGlzIHBhdGNoIG5lZWQgdG8gYmUgY29uc2lkZXJlZCwgZ2l2ZW4gdGhlIGNvbmNlcm4gYWJvdXQgc3RhdGljIGZ1bmN0aW9ucy4gSSd2ZSBub3RlZCB0aGF0IGBubDgwMjExX3NlbmRfY29ubmVjdF9yZXN1bHRgIGFuZCBgbmw4MDIxMV9zZW5kX3JvYW1lZGAgYXJlIG5vdCBzdGF0aWMsIHdoaWNoIGlzIGEgZ29vZCBzdGFydGluZyBwb2ludCBzaW5jZSB0aGVzZSB3ZXJlIG1vZGlmaWVkIGluIGBubDgwMjExLmNgLiBUaG9zZSB3aWxsIGRlZmluaXRlbHkgbmVlZCBpbmNsdXNpb24uIFRoZW4gSSBuZWVkIHRvIHJlbWVtYmVyIHRoYXQgSSB3YW50IHRvIGdyYWIgYGNmZzgwMjExX2Nvbm5lY3RfZG9uZWAgYW5kIGBjZmc4MDIxMV9yb2FtZWRgLlxuXG5JIG5lZWQgdG8gY29uZmlybSB3aGV0aGVyIGBubDgwMjExX3NldF9wbWtgIGlzIHN0YXRpYy4gSG1tLCB5ZXMsIGl0IGlzLiBCdXQsIEkgcmVtZW1iZXIgdGhhdCBpdCdzIHRoZSBtYWluIGVudHJ5IHBvaW50IGZvciB0aGUgY2hhbmdlcyBpbiBgbmw4MDIxMS5jYCByZWdhcmRpbmcgdGhlIGV4dGVuZGVkIGZlYXR1cmUuIEFuZCBzaW5jZSBpdCdzIGNhbGxlZCB0aHJvdWdoIG5ldGxpbmssIEkgdGhpbmsgdGhhdCBtYWtlcyBpdCBhbiBleGNlcHRpb24sIGFzIGl0IGxpa2VseSB3b24ndCBiZSBpbmxpbmVkLiBFdmVuIHRob3VnaCBpdCdzIHN0YXRpYywgSSBzaG91bGQgaW5jbHVkZSBgbmw4MDIxMV9zZXRfcG1rYC4gSSB3aWxsIGluY2x1ZGUgaXQuXG5cblRoZSBwcmltYXJ5IGdvYWwgaGVyZSBpcyB0byBnZXQgYWNjZXNzIHRvIHRoZSBtb2RpZmllZCBjb2RlLlxuXG5UaGUgY2hhbmdlIGludHJvZHVjZXMgYW4gYGF1dGhvcml6ZWRgIGZsYWcgdG8gdGhlIGNvbm5lY3Rpb24gYW5kIHJvYW1pbmcgcmVzcG9uc2VzLCBleHBvc2VkIHZpYSBgTkw4MDIxMV9BVFRSX1BPUlRfQVVUSE9SSVpFRGAuIEl0IGFsc28gaW5jbHVkZXMgYSBuZXcgYE5MODAyMTFfRVhUX0ZFQVRVUkVfUk9BTV9PRkZMT0FEYCBmZWF0dXJlIGFuZCBtb2RpZmllcyBgbmw4MDIxMV9zZXRfcG1rYC4gU28sIGl0J3MgY29yZSBjZmc4MDIxMSBmdW5jdGlvbmFsaXR5IGFuZCB0b3VjaGVzIHRoZSBuZXRsaW5rIEFQSS4gR2l2ZW4gdGhhdCwgSSB3aWxsIGFsc28gaW5jbHVkZSBgbmw4MDIxMV9zZXRfcG1rYCBiZWNhdXNlIGl0IGlzIG1vZGlmaWVkLlxuXG5JIHNob3VsZCBhbHNvIG1ha2Ugc3VyZSB0byBjaGVjayBpZiBgTUFDODAyMTFfSFdTSU1gIGhhcyBhbnkgZGVwZW5kZW5jaWVzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo5NTM3LCJPdXRwdXRUb2tlbnMiOjM5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NjIyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA1VDEyOjE5OjI5LjIxMjY5Mjk1MloiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjE1MDI5NDgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZGVwZW5kcyBvbi4qTUFDODAyMTFcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvS2NvbmZpZz0xPWNvbmZpZyBNQUM4MDIxMV9IV1NJTVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvS2NvbmZpZy0yLVxcdHRyaXN0YXRlIFxcXCJTaW11bGF0ZWQgcmFkaW8gdGVzdGluZyB0b29sIGZvciBtYWM4MDIxMVxcXCJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL0tjb25maWc6MzpcXHRkZXBlbmRzIG9uIE1BQzgwMjExXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9LY29uZmlnLTQtXFx0aGVscFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNVQxMjoxOToyOS4yNzQyMDIyNDFaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTUwMjYxNDI5NjUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQW5hbHlzaXMgb2YgdGhlIFdpcmVsZXNzIFN1YnN5c3RlbSBDaGFuZ2VzKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgSSBuZWVkIHRvIGZpZ3VyZSBvdXQgdGhlIGF0dGFjayBzdXJmYWNlLiBJdCBzZWVtcyB3ZSdyZSBkZWFsaW5nIHdpdGggYENGRzgwMjExYCwgYE1BQzgwMjExYCwgYW5kIGBNQUM4MDIxMV9IV1NJTWAg4oCTIHRob3NlIGFyZSB0aGUga2V5IGNvbmZpZ3VyYXRpb25zIGluIHBsYXkuIFRoZSByZWxhdGlvbnNoaXAgaXMgY2xlYXI6IGBNQUM4MDIxMV9IV1NJTWAgZGVwZW5kcyBvbiBgTUFDODAyMTFgLCBhbmQgYE1BQzgwMjExYCByZWxpZXMgb24gYENGRzgwMjExYC4gVGhhdCBtYWtlcyBgQ0ZHODAyMTFgIGEgZm91bmRhdGlvbmFsIGVsZW1lbnQgaGVyZSwgYW5kIGl0cyBpbnRlcmFjdGlvbiB3aXRoIHRoZSBvdGhlciB0d28gaXMgd2hhdCBJIG5lZWQgdG8gZm9jdXMgb24uXG5cbkkndmUgYmVlbiBleGFtaW5pbmcgYG5sODAyMTFfc2V0X3Bta2AsIHdoaWNoLCBldmVuIHRob3VnaCBpdCdzIHN0YXRpYywgZnVuY3Rpb25zIGFzIGEgY3J1Y2lhbCBuZXRsaW5rIGhhbmRsZXIuIEkndmUgZGVjaWRlZCB0byBpbmNsdWRlIGl0LlxuXG5CYXNlZCBvbiB0aGUgY29kZSBkaWZmLCB0aGVzZSBzZWVtIGxpa2UgcHJpbWUgdGFyZ2V0cyBmb3IgZnV6emluZyBhcyB0aGV5IGhhbmRsZSBjcml0aWNhbCBjb25uZWN0aW9uIGFuZCByb2FtaW5nIHJlc3BvbnNlczogYG5sODAyMTFfc2V0X3Bta2AsIGBubDgwMjExX3NlbmRfY29ubmVjdF9yZXN1bHRgLCBgbmw4MDIxMV9zZW5kX3JvYW1lZGAsIGBjZmc4MDIxMV9jb25uZWN0X2RvbmVgLCBhbmQgYGNmZzgwMjExX3JvYW1lZGAuXG5cblRoZSBwYXRjaCBpbnRyb2R1Y2VzIGEgbmV3ICdhdXRob3JpemVkJyBmbGFnIGluIGNvbm5lY3Rpb24gYW5kIHJvYW1pbmcgcmVzcG9uc2VzIGFuZCBleHBvc2VzIGl0IHRocm91Z2ggdGhlIGBOTDgwMjExX0FUVFJfUE9SVF9BVVRIT1JJWkVEYCBuZXRsaW5rIGF0dHJpYnV0ZS4gSXQgYWxzbyBhZGRzIGEgYE5MODAyMTFfRVhUX0ZFQVRVUkVfUk9BTV9PRkZMT0FEYCBmZWF0dXJlIGZsYWcuIFRoZSBjaGFuZ2VzIHRvIGBubDgwMjExX3NldF9wbWtgIHRvIGFsbG93IHNldHRpbmcgdGhlIFBNSyB3aGVuIHRoaXMgZmVhdHVyZSBpcyBzdXBwb3J0ZWQgYXJlIHNpZ25pZmljYW50LiBUaGVzZSBhcmUgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBjb3JlIHdpcmVsZXNzIHN1YnN5c3RlbSB3aGljaCBJJ20gY29uZmlkZW50IGNhbiBiZSByZWFjaGVkLCBhbmQgcG90ZW50aWFsbHkgZnV6emVkLCB1c2luZyB0aGUgYG1hYzgwMjExX2h3c2ltYCBkcml2ZXIuIFRoaXMgaXMgYSBnb29kIHBsYWNlIHRvIHN0YXJ0IG15IGludmVzdGlnYXRpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEwNzE4LCJPdXRwdXRUb2tlbnMiOjI2OCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjcwMCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNVQxMjoxOTo0NC4zMDAzNDgyNjVaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMzUzNjQ1MjYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkNGRzgwMjExXCIsXG4gICAgXCJNQUM4MDIxMVwiLFxuICAgIFwiTUFDODAyMTFfSFdTSU1cIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJubDgwMjExX3NldF9wbWtcIixcbiAgICBcIm5sODAyMTFfc2VuZF9jb25uZWN0X3Jlc3VsdFwiLFxuICAgIFwibmw4MDIxMV9zZW5kX3JvYW1lZFwiLFxuICAgIFwiY2ZnODAyMTFfY29ubmVjdF9kb25lXCIsXG4gICAgXCJjZmc4MDIxMV9yb2FtZWRcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIGEgbmV3ICdhdXRob3JpemVkJyBmbGFnIHRvIGNvbm5lY3Rpb24gYW5kIHJvYW1pbmcgcmVzcG9uc2UgcGFyYW1ldGVycyBpbiBjZmc4MDIxMSwgZXhwb3NpbmcgaXQgdG8gdXNlcnNwYWNlIHZpYSB0aGUgTkw4MDIxMV9BVFRSX1BPUlRfQVVUSE9SSVpFRCBuZXRsaW5rIGF0dHJpYnV0ZS4gSXQgYWxzbyBpbnRyb2R1Y2VzIHRoZSBOTDgwMjExX0VYVF9GRUFUVVJFX1JPQU1fT0ZGTE9BRCBmZWF0dXJlIGZsYWcgYW5kIG1vZGlmaWVzIG5sODAyMTFfc2V0X3BtayB0byBhbGxvdyBzZXR0aW5nIHRoZSBQTUsgd2hlbiB0aGlzIGZlYXR1cmUgaXMgc3VwcG9ydGVkLiBUaGVzZSBhcmUgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBjb3JlIHdpcmVsZXNzIHN1YnN5c3RlbSAoY2ZnODAyMTEpIGFuZCBpdHMgbmV0bGluayBBUEksIHdoaWNoIGNhbiBiZSByZWFjaGVkIGFuZCB0ZXN0ZWQgdXNpbmcgdGhlIHNvZnR3YXJlLWVtdWxhdGVkIG1hYzgwMjExX2h3c2ltIGRyaXZlci5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJDRkc4MDIxMVwiLFxuICAgIFwiTUFDODAyMTFcIixcbiAgICBcIk1BQzgwMjExX0hXU0lNXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwibmw4MDIxMV9zZXRfcG1rXCIsXG4gICAgXCJubDgwMjExX3NlbmRfY29ubmVjdF9yZXN1bHRcIixcbiAgICBcIm5sODAyMTFfc2VuZF9yb2FtZWRcIixcbiAgICBcImNmZzgwMjExX2Nvbm5lY3RfZG9uZVwiLFxuICAgIFwiY2ZnODAyMTFfcm9hbWVkXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBhIG5ldyAnYXV0aG9yaXplZCcgZmxhZyB0byBjb25uZWN0aW9uIGFuZCByb2FtaW5nIHJlc3BvbnNlIHBhcmFtZXRlcnMgaW4gY2ZnODAyMTEsIGV4cG9zaW5nIGl0IHRvIHVzZXJzcGFjZSB2aWEgdGhlIE5MODAyMTFfQVRUUl9QT1JUX0FVVEhPUklaRUQgbmV0bGluayBhdHRyaWJ1dGUuIEl0IGFsc28gaW50cm9kdWNlcyB0aGUgTkw4MDIxMV9FWFRfRkVBVFVSRV9ST0FNX09GRkxPQUQgZmVhdHVyZSBmbGFnIGFuZCBtb2RpZmllcyBubDgwMjExX3NldF9wbWsgdG8gYWxsb3cgc2V0dGluZyB0aGUgUE1LIHdoZW4gdGhpcyBmZWF0dXJlIGlzIHN1cHBvcnRlZC4gVGhlc2UgYXJlIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUgY29yZSB3aXJlbGVzcyBzdWJzeXN0ZW0gKGNmZzgwMjExKSBhbmQgaXRzIG5ldGxpbmsgQVBJLCB3aGljaCBjYW4gYmUgcmVhY2hlZCBhbmQgdGVzdGVkIHVzaW5nIHRoZSBzb2Z0d2FyZS1lbXVsYXRlZCBtYWM4MDIxMV9od3NpbSBkcml2ZXIuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/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-workflowp9b7c[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-05 12:17:06 +0000 UTC FinishedAt: 2026-08-05 12:19:46 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "linux-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next", "commit_hash": "6c5fc504d0d6934132637aa3db4b9b58148eaa78", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "CFG80211", "MAC80211", "MAC80211_HWSIM" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "linux-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next", "commit_hash": "6c5fc504d0d6934132637aa3db4b9b58148eaa78", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "CFG80211", "MAC80211", "MAC80211_HWSIM" ], "series_id": "93ca1051-b648-4df1-a8e9-869d8d0fd39f" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "nl80211_set_pmk", "nl80211_send_connect_result", "nl80211_send_roamed", "cfg80211_connect_done", "cfg80211_roamed" ], "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+CgkJCTx0ZD4yMDI2LzA4LzA1IDEyOjE4PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0NGRzgwMjExJiMzNDssCiAgICAmIzM0O01BQzgwMjExJiMzNDssCiAgICAmIzM0O01BQzgwMjExX0hXU0lNJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7bmw4MDIxMV9zZXRfcG1rJiMzNDssCiAgICAmIzM0O25sODAyMTFfc2VuZF9jb25uZWN0X3Jlc3VsdCYjMzQ7LAogICAgJiMzNDtubDgwMjExX3NlbmRfcm9hbWVkJiMzNDssCiAgICAmIzM0O2NmZzgwMjExX2Nvbm5lY3RfZG9uZSYjMzQ7LAogICAgJiMzNDtjZmc4MDIxMV9yb2FtZWQmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBhIG5ldyAmIzM5O2F1dGhvcml6ZWQmIzM5OyBmbGFnIHRvIGNvbm5lY3Rpb24gYW5kIHJvYW1pbmcgcmVzcG9uc2UgcGFyYW1ldGVycyBpbiBjZmc4MDIxMSwgZXhwb3NpbmcgaXQgdG8gdXNlcnNwYWNlIHZpYSB0aGUgTkw4MDIxMV9BVFRSX1BPUlRfQVVUSE9SSVpFRCBuZXRsaW5rIGF0dHJpYnV0ZS4gSXQgYWxzbyBpbnRyb2R1Y2VzIHRoZSBOTDgwMjExX0VYVF9GRUFUVVJFX1JPQU1fT0ZGTE9BRCBmZWF0dXJlIGZsYWcgYW5kIG1vZGlmaWVzIG5sODAyMTFfc2V0X3BtayB0byBhbGxvdyBzZXR0aW5nIHRoZSBQTUsgd2hlbiB0aGlzIGZlYXR1cmUgaXMgc3VwcG9ydGVkLiBUaGVzZSBhcmUgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBjb3JlIHdpcmVsZXNzIHN1YnN5c3RlbSAoY2ZnODAyMTEpIGFuZCBpdHMgbmV0bGluayBBUEksIHdoaWNoIGNhbiBiZSByZWFjaGVkIGFuZCB0ZXN0ZWQgdXNpbmcgdGhlIHNvZnR3YXJlLWVtdWxhdGVkIG1hYzgwMjExX2h3c2ltIGRyaXZlci4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNSAxMjoxODwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDU2NWY3ZWU4YmI0OWU3YzNiNDk5ZjgxZjczNDc2MTU3MzdmMDEyODVcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgV2VkIEF1ZyA1IDEyOjE4OjM2IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmV0L2NmZzgwMjExLmggYi9pbmNsdWRlL25ldC9jZmc4MDIxMS5oXG5pbmRleCA5N2MxNmQ0ZmYxMjcxLi43ZjU3NmJiNzMyNWM3IDEwMDY0NFxuLS0tIGEvaW5jbHVkZS9uZXQvY2ZnODAyMTEuaFxuJiM0MzsmIzQzOyYjNDM7IGIvaW5jbHVkZS9uZXQvY2ZnODAyMTEuaFxuQEAgLTkxMDMsNiAmIzQzOzkxMDMsOCBAQCBzdHJ1Y3QgY2ZnODAyMTFfZmlsc19yZXNwX3BhcmFtcyB7XG4gICogQGFzc29jX2VuY3J5cHRlZDogVGhlIGRyaXZlciBzaG91bGQgc2V0IHRoaXMgZmxhZyB0byBpbmRpY2F0ZSB0aGF0IHRoZVxuICAqXHQoUmUpQXNzb2NpYXRpb24gUmVxdWVzdC9SZXNwb25zZSBmcmFtZXMgYXJlIHRyYW5zbWl0dGVkIGVuY3J5cHRlZCBvdmVyXG4gICpcdHRoZSBhaXIuXG4mIzQzOyAqIEBhdXRob3JpemVkOiBJbmRpY2F0ZXMgd2hldGhlciB0aGUgY29ubmVjdGlvbiBpcyByZWFkeSB0byB0cmFuc3BvcnQgZGF0YVxuJiM0MzsgKlx0cGFja2V0cy5cbiAgKi9cbiBzdHJ1Y3QgY2ZnODAyMTFfY29ubmVjdF9yZXNwX3BhcmFtcyB7XG4gXHRpbnQgc3RhdHVzO1xuQEAgLTkxMTMsNiAmIzQzOzkxMTUsNyBAQCBzdHJ1Y3QgY2ZnODAyMTFfY29ubmVjdF9yZXNwX3BhcmFtcyB7XG4gXHRzdHJ1Y3QgY2ZnODAyMTFfZmlsc19yZXNwX3BhcmFtcyBmaWxzO1xuIFx0ZW51bSBubDgwMjExX3RpbWVvdXRfcmVhc29uIHRpbWVvdXRfcmVhc29uO1xuIFx0Ym9vbCBhc3NvY19lbmNyeXB0ZWQ7XG4mIzQzO1x0Ym9vbCBhdXRob3JpemVkO1xuIFxuIFx0Y29uc3QgdTggKmFwX21sZF9hZGRyO1xuIFx0dTE2IHZhbGlkX2xpbmtzO1xuQEAgLTkyODEsNiAmIzQzOzkyODQsOCBAQCBjZmc4MDIxMV9jb25uZWN0X3RpbWVvdXQoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgY29uc3QgdTggKmJzc2lkLFxuICAqIEBsaW5rcy5ic3M6IEZvciBNTE8gcm9hbWluZywgZW50cnkgb2YgbmV3IGJzcyB0byB3aGljaCBTVEEgbGluayBnb3RcbiAgKlx0cm9hbWVkLiBGb3Igbm9uLU1MTyByb2FtaW5nLCBsaW5rc1swXS5ic3MgcG9pbnRzIHRvIGVudHJ5IG9mIGJzcyB0b1xuICAqXHR3aGljaCBTVEEgZ290IHJvYW1lZCAobWF5IGJlICVOVUxMIGlmICVsaW5rcy5ic3NpZCBpcyBzZXQpXG4mIzQzOyAqIEBhdXRob3JpemVkOiBJbmRpY2F0ZXMgd2hldGhlciB0aGUgbmV3IGNvbm5lY3Rpb24gaXMgcmVhZHkgdG8gdHJhbnNwb3J0IGRhdGFcbiYjNDM7ICpcdHBhY2tldHMuXG4gICovXG4gc3RydWN0IGNmZzgwMjExX3JvYW1faW5mbyB7XG4gXHRjb25zdCB1OCAqcmVxX2llO1xuQEAgLTkyOTcsNiAmIzQzOzkzMDIsNyBAQCBzdHJ1Y3QgY2ZnODAyMTFfcm9hbV9pbmZvIHtcbiBcdFx0c3RydWN0IGllZWU4MDIxMV9jaGFubmVsICpjaGFubmVsO1xuIFx0XHRzdHJ1Y3QgY2ZnODAyMTFfYnNzICpic3M7XG4gXHR9IGxpbmtzW0lFRUU4MDIxMV9NTERfTUFYX05VTV9MSU5LU107XG4mIzQzO1x0Ym9vbCBhdXRob3JpemVkO1xuIH07XG4gXG4gLyoqXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS91YXBpL2xpbnV4L25sODAyMTEuaCBiL2luY2x1ZGUvdWFwaS9saW51eC9ubDgwMjExLmhcbmluZGV4IDAyMDM4N2Q3NjQxMjIuLjJiOTZhMThkZWY5YjMgMTAwNjQ0XG4tLS0gYS9pbmNsdWRlL3VhcGkvbGludXgvbmw4MDIxMS5oXG4mIzQzOyYjNDM7JiM0MzsgYi9pbmNsdWRlL3VhcGkvbGludXgvbmw4MDIxMS5oXG5AQCAtMjcwNSw3ICYjNDM7MjcwNSw5IEBAIGVudW0gbmw4MDIxMV9jb21tYW5kcyB7XG4gICpcdGluICVOTDgwMjExX0NNRF9DT05ORUNUIHRvIGluZGljYXRlIHRoYXQgZm9yIDgwMi4xWCBhdXRoZW50aWNhdGlvbiBpdFxuICAqXHR3YW50cyB0byB1c2UgdGhlIHN1cHBvcnRlZCBvZmZsb2FkIG9mIHRoZSA0LXdheSBoYW5kc2hha2UuXG4gICogQE5MODAyMTFfQVRUUl9QTUtSMF9OQU1FOiBQTUstUjAgTmFtZSBmb3Igb2ZmbG9hZGVkIEZULlxuLSAqIEBOTDgwMjExX0FUVFJfUE9SVF9BVVRIT1JJWkVEOiAocmVzZXJ2ZWQpXG4mIzQzOyAqIEBOTDgwMjExX0FUVFJfUE9SVF9BVVRIT1JJWkVEOiBmbGFnIGF0dHJpYnV0ZSB1c2VkIGluICVOTDgwMjExX0NNRF9DT05ORUNUXG4mIzQzOyAqXHRvciAlTkw4MDIxMV9DTURfUk9BTSBub3RpZmljYXRpb25zIHRvIGluZGljYXRlIHRoYXQgODAyLjFYXG4mIzQzOyAqXHRhdXRoZW50aWNhdGlvbiB3YXMgZG9uZSBieSB0aGUgZHJpdmVyIG9yIGlzIG5vdCBuZWVkZWQuXG4gICpcbiAgKiBATkw4MDIxMV9BVFRSX0VYVEVSTkFMX0FVVEhfQUNUSU9OOiBJZGVudGlmeSB0aGUgcmVxdWVzdGVkIGV4dGVybmFsXG4gICogICAgIGF1dGhlbnRpY2F0aW9uIG9wZXJhdGlvbiAodTMyIGF0dHJpYnV0ZSB3aXRoIGFuXG5AQCAtNzExMCw2ICYjNDM7NzExMiw5IEBAIGVudW0gbmw4MDIxMV9mZWF0dXJlX2ZsYWdzIHtcbiAgKiBATkw4MDIxMV9FWFRfRkVBVFVSRV9QUk9CRV9BUDogRHJpdmVyIHN1cHBvcnRzIHByb2JpbmcgdGhlIGFzc29jaWF0ZWQgQVBcbiAgKlx0aW4gU1RBIG1vZGUgdXNpbmcgQE5MODAyMTFfQ01EX1BST0JFX1BFRVIuXG4gICpcbiYjNDM7ICogQE5MODAyMTFfRVhUX0ZFQVRVUkVfUk9BTV9PRkZMT0FEOiBEcml2ZXIgc3VwcG9ydHMgRmFzdCBUcmFuc2l0aW9uIG9yXG4mIzQzOyAqXHRPcHBvcnR1bmlzdGljIEtleSBDYWNoaW5nIHJvYW1pbmcgb2ZmbG9hZCBpbiBzdGF0aW9uIG1vZGUuXG4mIzQzOyAqXG4gICogQE5VTV9OTDgwMjExX0VYVF9GRUFUVVJFUzogbnVtYmVyIG9mIGV4dGVuZGVkIGZlYXR1cmVzLlxuICAqIEBNQVhfTkw4MDIxMV9FWFRfRkVBVFVSRVM6IGhpZ2hlc3QgZXh0ZW5kZWQgZmVhdHVyZSBpbmRleC5cbiAgKi9cbkBAIC03MTkyLDYgJiM0Mzs3MTk3LDcgQEAgZW51bSBubDgwMjExX2V4dF9mZWF0dXJlX2luZGV4IHtcbiBcdE5MODAyMTFfRVhUX0ZFQVRVUkVfUk9DX0FERFJfRklMVEVSLFxuIFx0Tkw4MDIxMV9FWFRfRkVBVFVSRV9TRVRfS0VZX0xURl9TRUVELFxuIFx0Tkw4MDIxMV9FWFRfRkVBVFVSRV9QUk9CRV9BUCxcbiYjNDM7XHROTDgwMjExX0VYVF9GRUFUVVJFX1JPQU1fT0ZGTE9BRCxcbiBcbiBcdC8qIGFkZCBuZXcgZmVhdHVyZXMgYmVmb3JlIHRoZSBkZWZpbml0aW9uIGJlbG93ICovXG4gXHROVU1fTkw4MDIxMV9FWFRfRkVBVFVSRVMsXG5kaWZmIC0tZ2l0IGEvbmV0L3dpcmVsZXNzL25sODAyMTEuYyBiL25ldC93aXJlbGVzcy9ubDgwMjExLmNcbmluZGV4IDQ0ZjJiYWQwODY3MDUuLjdkYmQ0Y2FmMjYwOTEgMTAwNjQ0XG4tLS0gYS9uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jXG5AQCAtMTg0NDMsNyAmIzQzOzE4NDQzLDkgQEAgc3RhdGljIGludCBubDgwMjExX3NldF9wbWsoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGdlbmxfaW5mbyAqaW5mbylcbiBcdFx0cmV0dXJuIC1FT1BOT1RTVVBQO1xuIFxuIFx0aWYgKCF3aXBoeV9leHRfZmVhdHVyZV9pc3NldChcdTAwMjZyZGV2LVx1MDAzZXdpcGh5LFxuLVx0XHRcdFx0ICAgICBOTDgwMjExX0VYVF9GRUFUVVJFXzRXQVlfSEFORFNIQUtFX1NUQV8xWCkpXG4mIzQzO1x0XHRcdFx0ICAgICBOTDgwMjExX0VYVF9GRUFUVVJFXzRXQVlfSEFORFNIQUtFX1NUQV8xWCkgXHUwMDI2XHUwMDI2XG4mIzQzO1x0ICAgICF3aXBoeV9leHRfZmVhdHVyZV9pc3NldChcdTAwMjZyZGV2LVx1MDAzZXdpcGh5LFxuJiM0MztcdFx0XHRcdCAgICAgTkw4MDIxMV9FWFRfRkVBVFVSRV9ST0FNX09GRkxPQUQpKVxuIFx0XHRyZXR1cm4gLUVPUE5PVFNVUFA7XG4gXG4gXHRpZiAoIWluZm8tXHUwMDNlYXR0cnNbTkw4MDIxMV9BVFRSX01BQ10gfHwgIWluZm8tXHUwMDNlYXR0cnNbTkw4MDIxMV9BVFRSX1BNS10pXG5AQCAtMjExOTgsNiAmIzQzOzIxMjAwLDggQEAgdm9pZCBubDgwMjExX3NlbmRfY29ubmVjdF9yZXN1bHQoc3RydWN0IGNmZzgwMjExX3JlZ2lzdGVyZWRfZGV2aWNlICpyZGV2LFxuIFx0ICAgICAobmxhX3B1dF9mbGFnKG1zZywgTkw4MDIxMV9BVFRSX1RJTUVEX09VVCkgfHxcbiBcdCAgICAgIG5sYV9wdXRfdTMyKG1zZywgTkw4MDIxMV9BVFRSX1RJTUVPVVRfUkVBU09OLFxuIFx0XHRcdCAgY3ItXHUwMDNldGltZW91dF9yZWFzb24pKSkgfHxcbiYjNDM7XHQgICAgKGNyLVx1MDAzZWF1dGhvcml6ZWQgXHUwMDI2XHUwMDI2XG4mIzQzO1x0ICAgICBubGFfcHV0X2ZsYWcobXNnLCBOTDgwMjExX0FUVFJfUE9SVF9BVVRIT1JJWkVEKSkgfHxcbiBcdCAgICAoY3ItXHUwMDNlcmVxX2llIFx1MDAyNlx1MDAyNlxuIFx0ICAgICBubGFfcHV0KG1zZywgTkw4MDIxMV9BVFRSX1JFUV9JRSwgY3ItXHUwMDNlcmVxX2llX2xlbiwgY3ItXHUwMDNlcmVxX2llKSkgfHxcbiBcdCAgICAoY3ItXHUwMDNlcmVzcF9pZSBcdTAwMjZcdTAwMjZcbkBAIC0yMTMyMSw3ICYjNDM7MjEzMjUsOSBAQCB2b2lkIG5sODAyMTFfc2VuZF9yb2FtZWQoc3RydWN0IGNmZzgwMjExX3JlZ2lzdGVyZWRfZGV2aWNlICpyZGV2LFxuIFx0ICAgIChpbmZvLVx1MDAzZWZpbHMucG1rIFx1MDAyNlx1MDAyNlxuIFx0ICAgICBubGFfcHV0KG1zZywgTkw4MDIxMV9BVFRSX1BNSywgaW5mby1cdTAwM2VmaWxzLnBta19sZW4sIGluZm8tXHUwMDNlZmlscy5wbWspKSB8fFxuIFx0ICAgIChpbmZvLVx1MDAzZWZpbHMucG1raWQgXHUwMDI2XHUwMDI2XG4tXHQgICAgIG5sYV9wdXQobXNnLCBOTDgwMjExX0FUVFJfUE1LSUQsIFdMQU5fUE1LSURfTEVOLCBpbmZvLVx1MDAzZWZpbHMucG1raWQpKSlcbiYjNDM7XHQgICAgIG5sYV9wdXQobXNnLCBOTDgwMjExX0FUVFJfUE1LSUQsIFdMQU5fUE1LSURfTEVOLCBpbmZvLVx1MDAzZWZpbHMucG1raWQpKSB8fFxuJiM0MztcdCAgICAoaW5mby1cdTAwM2VhdXRob3JpemVkIFx1MDAyNlx1MDAyNlxuJiM0MztcdCAgICAgbmxhX3B1dF9mbGFnKG1zZywgTkw4MDIxMV9BVFRSX1BPUlRfQVVUSE9SSVpFRCkpKVxuIFx0XHRnb3RvIG5sYV9wdXRfZmFpbHVyZTtcbiBcbiBcdGlmIChpbmZvLVx1MDAzZXZhbGlkX2xpbmtzKSB7XG5kaWZmIC0tZ2l0IGEvbmV0L3dpcmVsZXNzL3NtZS5jIGIvbmV0L3dpcmVsZXNzL3NtZS5jXG5pbmRleCAyYTcxOWI1YzQ4N2UzLi45NzRlNzlmNTczOTJkIDEwMDY0NFxuLS0tIGEvbmV0L3dpcmVsZXNzL3NtZS5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvd2lyZWxlc3Mvc21lLmNcbkBAIC0xMDY3LDYgJiM0MzsxMDY3LDcgQEAgdm9pZCBjZmc4MDIxMV9jb25uZWN0X2RvbmUoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbiBcdGV2LVx1MDAzZWNyLnN0YXR1cyA9IHBhcmFtcy1cdTAwM2VzdGF0dXM7XG4gXHRldi1cdTAwM2Vjci50aW1lb3V0X3JlYXNvbiA9IHBhcmFtcy1cdTAwM2V0aW1lb3V0X3JlYXNvbjtcbiBcdGV2LVx1MDAzZWNyLmFzc29jX2VuY3J5cHRlZCA9IHBhcmFtcy1cdTAwM2Vhc3NvY19lbmNyeXB0ZWQ7XG4mIzQzO1x0ZXYtXHUwMDNlY3IuYXV0aG9yaXplZCA9IHBhcmFtcy1cdTAwM2VhdXRob3JpemVkO1xuIFxuIFx0c3Bpbl9sb2NrX2lycXNhdmUoXHUwMDI2d2Rldi1cdTAwM2VldmVudF9sb2NrLCBmbGFncyk7XG4gXHRsaXN0X2FkZF90YWlsKFx1MDAyNmV2LVx1MDAzZWxpc3QsIFx1MDAyNndkZXYtXHUwMDNlZXZlbnRfbGlzdCk7XG5AQCAtMTI1Myw2ICYjNDM7MTI1NCw3IEBAIHZvaWQgY2ZnODAyMTFfcm9hbWVkKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBjZmc4MDIxMV9yb2FtX2luZm8gKmluZm8sXG4gXHRcdG5leHQgJiM0Mzs9IEVUSF9BTEVOO1xuIFx0fVxuIFx0ZXYtXHUwMDNlcm0udmFsaWRfbGlua3MgPSBpbmZvLVx1MDAzZXZhbGlkX2xpbmtzO1xuJiM0MztcdGV2LVx1MDAzZXJtLmF1dGhvcml6ZWQgPSBpbmZvLVx1MDAzZWF1dGhvcml6ZWQ7XG4gXHRmb3JfZWFjaF92YWxpZF9saW5rKGluZm8sIGxpbmspIHtcbiBcdFx0ZXYtXHUwMDNlcm0ubGlua3NbbGlua10uYnNzID0gaW5mby1cdTAwM2VsaW5rc1tsaW5rXS5ic3M7XG4gXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDUgMTI6MTg8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0NGRzgwMjExJiMzNDssCiAgICAmIzM0O01BQzgwMjExJiMzNDssCiAgICAmIzM0O01BQzgwMjExX0hXU0lNJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7bmw4MDIxMV9zZXRfcG1rJiMzNDssCiAgICAmIzM0O25sODAyMTFfc2VuZF9jb25uZWN0X3Jlc3VsdCYjMzQ7LAogICAgJiMzNDtubDgwMjExX3NlbmRfcm9hbWVkJiMzNDssCiAgICAmIzM0O2NmZzgwMjExX2Nvbm5lY3RfZG9uZSYjMzQ7LAogICAgJiMzNDtjZmc4MDIxMV9yb2FtZWQmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBhIG5ldyAmIzM5O2F1dGhvcml6ZWQmIzM5OyBmbGFnIHRvIGNvbm5lY3Rpb24gYW5kIHJvYW1pbmcgcmVzcG9uc2UgcGFyYW1ldGVycyBpbiBjZmc4MDIxMSwgZXhwb3NpbmcgaXQgdG8gdXNlcnNwYWNlIHZpYSB0aGUgTkw4MDIxMV9BVFRSX1BPUlRfQVVUSE9SSVpFRCBuZXRsaW5rIGF0dHJpYnV0ZS4gSXQgYWxzbyBpbnRyb2R1Y2VzIHRoZSBOTDgwMjExX0VYVF9GRUFUVVJFX1JPQU1fT0ZGTE9BRCBmZWF0dXJlIGZsYWcgYW5kIG1vZGlmaWVzIG5sODAyMTFfc2V0X3BtayB0byBhbGxvdyBzZXR0aW5nIHRoZSBQTUsgd2hlbiB0aGlzIGZlYXR1cmUgaXMgc3VwcG9ydGVkLiBUaGVzZSBhcmUgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBjb3JlIHdpcmVsZXNzIHN1YnN5c3RlbSAoY2ZnODAyMTEpIGFuZCBpdHMgbmV0bGluayBBUEksIHdoaWNoIGNhbiBiZSByZWFjaGVkIGFuZCB0ZXN0ZWQgdXNpbmcgdGhlIHNvZnR3YXJlLWVtdWxhdGVkIG1hYzgwMjExX2h3c2ltIGRyaXZlci4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDU2NWY3ZWU4YmI0OWU3YzNiNDk5ZjgxZjczNDc2MTU3MzdmMDEyODUKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgV2VkIEF1ZyA1IDEyOjE4OjM2IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZXQvY2ZnODAyMTEuaCBiL2luY2x1ZGUvbmV0L2NmZzgwMjExLmgKaW5kZXggOTdjMTZkNGZmMTI3MS4uN2Y1NzZiYjczMjVjNyAxMDA2NDQKLS0tIGEvaW5jbHVkZS9uZXQvY2ZnODAyMTEuaAomIzQzOyYjNDM7JiM0MzsgYi9pbmNsdWRlL25ldC9jZmc4MDIxMS5oCkBAIC05MTAzLDYgJiM0Mzs5MTAzLDggQEAgc3RydWN0IGNmZzgwMjExX2ZpbHNfcmVzcF9wYXJhbXMgewogICogQGFzc29jX2VuY3J5cHRlZDogVGhlIGRyaXZlciBzaG91bGQgc2V0IHRoaXMgZmxhZyB0byBpbmRpY2F0ZSB0aGF0IHRoZQogICoJKFJlKUFzc29jaWF0aW9uIFJlcXVlc3QvUmVzcG9uc2UgZnJhbWVzIGFyZSB0cmFuc21pdHRlZCBlbmNyeXB0ZWQgb3ZlcgogICoJdGhlIGFpci4KJiM0MzsgKiBAYXV0aG9yaXplZDogSW5kaWNhdGVzIHdoZXRoZXIgdGhlIGNvbm5lY3Rpb24gaXMgcmVhZHkgdG8gdHJhbnNwb3J0IGRhdGEKJiM0MzsgKglwYWNrZXRzLgogICovCiBzdHJ1Y3QgY2ZnODAyMTFfY29ubmVjdF9yZXNwX3BhcmFtcyB7CiAJaW50IHN0YXR1czsKQEAgLTkxMTMsNiAmIzQzOzkxMTUsNyBAQCBzdHJ1Y3QgY2ZnODAyMTFfY29ubmVjdF9yZXNwX3BhcmFtcyB7CiAJc3RydWN0IGNmZzgwMjExX2ZpbHNfcmVzcF9wYXJhbXMgZmlsczsKIAllbnVtIG5sODAyMTFfdGltZW91dF9yZWFzb24gdGltZW91dF9yZWFzb247CiAJYm9vbCBhc3NvY19lbmNyeXB0ZWQ7CiYjNDM7CWJvb2wgYXV0aG9yaXplZDsKIAogCWNvbnN0IHU4ICphcF9tbGRfYWRkcjsKIAl1MTYgdmFsaWRfbGlua3M7CkBAIC05MjgxLDYgJiM0Mzs5Mjg0LDggQEAgY2ZnODAyMTFfY29ubmVjdF90aW1lb3V0KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIGNvbnN0IHU4ICpic3NpZCwKICAqIEBsaW5rcy5ic3M6IEZvciBNTE8gcm9hbWluZywgZW50cnkgb2YgbmV3IGJzcyB0byB3aGljaCBTVEEgbGluayBnb3QKICAqCXJvYW1lZC4gRm9yIG5vbi1NTE8gcm9hbWluZywgbGlua3NbMF0uYnNzIHBvaW50cyB0byBlbnRyeSBvZiBic3MgdG8KICAqCXdoaWNoIFNUQSBnb3Qgcm9hbWVkIChtYXkgYmUgJU5VTEwgaWYgJWxpbmtzLmJzc2lkIGlzIHNldCkKJiM0MzsgKiBAYXV0aG9yaXplZDogSW5kaWNhdGVzIHdoZXRoZXIgdGhlIG5ldyBjb25uZWN0aW9uIGlzIHJlYWR5IHRvIHRyYW5zcG9ydCBkYXRhCiYjNDM7ICoJcGFja2V0cy4KICAqLwogc3RydWN0IGNmZzgwMjExX3JvYW1faW5mbyB7CiAJY29uc3QgdTggKnJlcV9pZTsKQEAgLTkyOTcsNiAmIzQzOzkzMDIsNyBAQCBzdHJ1Y3QgY2ZnODAyMTFfcm9hbV9pbmZvIHsKIAkJc3RydWN0IGllZWU4MDIxMV9jaGFubmVsICpjaGFubmVsOwogCQlzdHJ1Y3QgY2ZnODAyMTFfYnNzICpic3M7CiAJfSBsaW5rc1tJRUVFODAyMTFfTUxEX01BWF9OVU1fTElOS1NdOwomIzQzOwlib29sIGF1dGhvcml6ZWQ7CiB9OwogCiAvKioKZGlmZiAtLWdpdCBhL2luY2x1ZGUvdWFwaS9saW51eC9ubDgwMjExLmggYi9pbmNsdWRlL3VhcGkvbGludXgvbmw4MDIxMS5oCmluZGV4IDAyMDM4N2Q3NjQxMjIuLjJiOTZhMThkZWY5YjMgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvdWFwaS9saW51eC9ubDgwMjExLmgKJiM0MzsmIzQzOyYjNDM7IGIvaW5jbHVkZS91YXBpL2xpbnV4L25sODAyMTEuaApAQCAtMjcwNSw3ICYjNDM7MjcwNSw5IEBAIGVudW0gbmw4MDIxMV9jb21tYW5kcyB7CiAgKglpbiAlTkw4MDIxMV9DTURfQ09OTkVDVCB0byBpbmRpY2F0ZSB0aGF0IGZvciA4MDIuMVggYXV0aGVudGljYXRpb24gaXQKICAqCXdhbnRzIHRvIHVzZSB0aGUgc3VwcG9ydGVkIG9mZmxvYWQgb2YgdGhlIDQtd2F5IGhhbmRzaGFrZS4KICAqIEBOTDgwMjExX0FUVFJfUE1LUjBfTkFNRTogUE1LLVIwIE5hbWUgZm9yIG9mZmxvYWRlZCBGVC4KLSAqIEBOTDgwMjExX0FUVFJfUE9SVF9BVVRIT1JJWkVEOiAocmVzZXJ2ZWQpCiYjNDM7ICogQE5MODAyMTFfQVRUUl9QT1JUX0FVVEhPUklaRUQ6IGZsYWcgYXR0cmlidXRlIHVzZWQgaW4gJU5MODAyMTFfQ01EX0NPTk5FQ1QKJiM0MzsgKglvciAlTkw4MDIxMV9DTURfUk9BTSBub3RpZmljYXRpb25zIHRvIGluZGljYXRlIHRoYXQgODAyLjFYCiYjNDM7ICoJYXV0aGVudGljYXRpb24gd2FzIGRvbmUgYnkgdGhlIGRyaXZlciBvciBpcyBub3QgbmVlZGVkLgogICoKICAqIEBOTDgwMjExX0FUVFJfRVhURVJOQUxfQVVUSF9BQ1RJT046IElkZW50aWZ5IHRoZSByZXF1ZXN0ZWQgZXh0ZXJuYWwKICAqICAgICBhdXRoZW50aWNhdGlvbiBvcGVyYXRpb24gKHUzMiBhdHRyaWJ1dGUgd2l0aCBhbgpAQCAtNzExMCw2ICYjNDM7NzExMiw5IEBAIGVudW0gbmw4MDIxMV9mZWF0dXJlX2ZsYWdzIHsKICAqIEBOTDgwMjExX0VYVF9GRUFUVVJFX1BST0JFX0FQOiBEcml2ZXIgc3VwcG9ydHMgcHJvYmluZyB0aGUgYXNzb2NpYXRlZCBBUAogICoJaW4gU1RBIG1vZGUgdXNpbmcgQE5MODAyMTFfQ01EX1BST0JFX1BFRVIuCiAgKgomIzQzOyAqIEBOTDgwMjExX0VYVF9GRUFUVVJFX1JPQU1fT0ZGTE9BRDogRHJpdmVyIHN1cHBvcnRzIEZhc3QgVHJhbnNpdGlvbiBvcgomIzQzOyAqCU9wcG9ydHVuaXN0aWMgS2V5IENhY2hpbmcgcm9hbWluZyBvZmZsb2FkIGluIHN0YXRpb24gbW9kZS4KJiM0MzsgKgogICogQE5VTV9OTDgwMjExX0VYVF9GRUFUVVJFUzogbnVtYmVyIG9mIGV4dGVuZGVkIGZlYXR1cmVzLgogICogQE1BWF9OTDgwMjExX0VYVF9GRUFUVVJFUzogaGlnaGVzdCBleHRlbmRlZCBmZWF0dXJlIGluZGV4LgogICovCkBAIC03MTkyLDYgJiM0Mzs3MTk3LDcgQEAgZW51bSBubDgwMjExX2V4dF9mZWF0dXJlX2luZGV4IHsKIAlOTDgwMjExX0VYVF9GRUFUVVJFX1JPQ19BRERSX0ZJTFRFUiwKIAlOTDgwMjExX0VYVF9GRUFUVVJFX1NFVF9LRVlfTFRGX1NFRUQsCiAJTkw4MDIxMV9FWFRfRkVBVFVSRV9QUk9CRV9BUCwKJiM0MzsJTkw4MDIxMV9FWFRfRkVBVFVSRV9ST0FNX09GRkxPQUQsCiAKIAkvKiBhZGQgbmV3IGZlYXR1cmVzIGJlZm9yZSB0aGUgZGVmaW5pdGlvbiBiZWxvdyAqLwogCU5VTV9OTDgwMjExX0VYVF9GRUFUVVJFUywKZGlmZiAtLWdpdCBhL25ldC93aXJlbGVzcy9ubDgwMjExLmMgYi9uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jCmluZGV4IDQ0ZjJiYWQwODY3MDUuLjdkYmQ0Y2FmMjYwOTEgMTAwNjQ0Ci0tLSBhL25ldC93aXJlbGVzcy9ubDgwMjExLmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L3dpcmVsZXNzL25sODAyMTEuYwpAQCAtMTg0NDMsNyAmIzQzOzE4NDQzLDkgQEAgc3RhdGljIGludCBubDgwMjExX3NldF9wbWsoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGdlbmxfaW5mbyAqaW5mbykKIAkJcmV0dXJuIC1FT1BOT1RTVVBQOwogCiAJaWYgKCF3aXBoeV9leHRfZmVhdHVyZV9pc3NldCgmYW1wO3JkZXYtJmd0O3dpcGh5LAotCQkJCSAgICAgTkw4MDIxMV9FWFRfRkVBVFVSRV80V0FZX0hBTkRTSEFLRV9TVEFfMVgpKQomIzQzOwkJCQkgICAgIE5MODAyMTFfRVhUX0ZFQVRVUkVfNFdBWV9IQU5EU0hBS0VfU1RBXzFYKSAmYW1wOyZhbXA7CiYjNDM7CSAgICAhd2lwaHlfZXh0X2ZlYXR1cmVfaXNzZXQoJmFtcDtyZGV2LSZndDt3aXBoeSwKJiM0MzsJCQkJICAgICBOTDgwMjExX0VYVF9GRUFUVVJFX1JPQU1fT0ZGTE9BRCkpCiAJCXJldHVybiAtRU9QTk9UU1VQUDsKIAogCWlmICghaW5mby0mZ3Q7YXR0cnNbTkw4MDIxMV9BVFRSX01BQ10gfHwgIWluZm8tJmd0O2F0dHJzW05MODAyMTFfQVRUUl9QTUtdKQpAQCAtMjExOTgsNiAmIzQzOzIxMjAwLDggQEAgdm9pZCBubDgwMjExX3NlbmRfY29ubmVjdF9yZXN1bHQoc3RydWN0IGNmZzgwMjExX3JlZ2lzdGVyZWRfZGV2aWNlICpyZGV2LAogCSAgICAgKG5sYV9wdXRfZmxhZyhtc2csIE5MODAyMTFfQVRUUl9USU1FRF9PVVQpIHx8CiAJICAgICAgbmxhX3B1dF91MzIobXNnLCBOTDgwMjExX0FUVFJfVElNRU9VVF9SRUFTT04sCiAJCQkgIGNyLSZndDt0aW1lb3V0X3JlYXNvbikpKSB8fAomIzQzOwkgICAgKGNyLSZndDthdXRob3JpemVkICZhbXA7JmFtcDsKJiM0MzsJICAgICBubGFfcHV0X2ZsYWcobXNnLCBOTDgwMjExX0FUVFJfUE9SVF9BVVRIT1JJWkVEKSkgfHwKIAkgICAgKGNyLSZndDtyZXFfaWUgJmFtcDsmYW1wOwogCSAgICAgbmxhX3B1dChtc2csIE5MODAyMTFfQVRUUl9SRVFfSUUsIGNyLSZndDtyZXFfaWVfbGVuLCBjci0mZ3Q7cmVxX2llKSkgfHwKIAkgICAgKGNyLSZndDtyZXNwX2llICZhbXA7JmFtcDsKQEAgLTIxMzIxLDcgJiM0MzsyMTMyNSw5IEBAIHZvaWQgbmw4MDIxMV9zZW5kX3JvYW1lZChzdHJ1Y3QgY2ZnODAyMTFfcmVnaXN0ZXJlZF9kZXZpY2UgKnJkZXYsCiAJICAgIChpbmZvLSZndDtmaWxzLnBtayAmYW1wOyZhbXA7CiAJICAgICBubGFfcHV0KG1zZywgTkw4MDIxMV9BVFRSX1BNSywgaW5mby0mZ3Q7Zmlscy5wbWtfbGVuLCBpbmZvLSZndDtmaWxzLnBtaykpIHx8CiAJICAgIChpbmZvLSZndDtmaWxzLnBta2lkICZhbXA7JmFtcDsKLQkgICAgIG5sYV9wdXQobXNnLCBOTDgwMjExX0FUVFJfUE1LSUQsIFdMQU5fUE1LSURfTEVOLCBpbmZvLSZndDtmaWxzLnBta2lkKSkpCiYjNDM7CSAgICAgbmxhX3B1dChtc2csIE5MODAyMTFfQVRUUl9QTUtJRCwgV0xBTl9QTUtJRF9MRU4sIGluZm8tJmd0O2ZpbHMucG1raWQpKSB8fAomIzQzOwkgICAgKGluZm8tJmd0O2F1dGhvcml6ZWQgJmFtcDsmYW1wOwomIzQzOwkgICAgIG5sYV9wdXRfZmxhZyhtc2csIE5MODAyMTFfQVRUUl9QT1JUX0FVVEhPUklaRUQpKSkKIAkJZ290byBubGFfcHV0X2ZhaWx1cmU7CiAKIAlpZiAoaW5mby0mZ3Q7dmFsaWRfbGlua3MpIHsKZGlmZiAtLWdpdCBhL25ldC93aXJlbGVzcy9zbWUuYyBiL25ldC93aXJlbGVzcy9zbWUuYwppbmRleCAyYTcxOWI1YzQ4N2UzLi45NzRlNzlmNTczOTJkIDEwMDY0NAotLS0gYS9uZXQvd2lyZWxlc3Mvc21lLmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L3dpcmVsZXNzL3NtZS5jCkBAIC0xMDY3LDYgJiM0MzsxMDY3LDcgQEAgdm9pZCBjZmc4MDIxMV9jb25uZWN0X2RvbmUoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwKIAlldi0mZ3Q7Y3Iuc3RhdHVzID0gcGFyYW1zLSZndDtzdGF0dXM7CiAJZXYtJmd0O2NyLnRpbWVvdXRfcmVhc29uID0gcGFyYW1zLSZndDt0aW1lb3V0X3JlYXNvbjsKIAlldi0mZ3Q7Y3IuYXNzb2NfZW5jcnlwdGVkID0gcGFyYW1zLSZndDthc3NvY19lbmNyeXB0ZWQ7CiYjNDM7CWV2LSZndDtjci5hdXRob3JpemVkID0gcGFyYW1zLSZndDthdXRob3JpemVkOwogCiAJc3Bpbl9sb2NrX2lycXNhdmUoJmFtcDt3ZGV2LSZndDtldmVudF9sb2NrLCBmbGFncyk7CiAJbGlzdF9hZGRfdGFpbCgmYW1wO2V2LSZndDtsaXN0LCAmYW1wO3dkZXYtJmd0O2V2ZW50X2xpc3QpOwpAQCAtMTI1Myw2ICYjNDM7MTI1NCw3IEBAIHZvaWQgY2ZnODAyMTFfcm9hbWVkKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBjZmc4MDIxMV9yb2FtX2luZm8gKmluZm8sCiAJCW5leHQgJiM0Mzs9IEVUSF9BTEVOOwogCX0KIAlldi0mZ3Q7cm0udmFsaWRfbGlua3MgPSBpbmZvLSZndDt2YWxpZF9saW5rczsKJiM0MzsJZXYtJmd0O3JtLmF1dGhvcml6ZWQgPSBpbmZvLSZndDthdXRob3JpemVkOwogCWZvcl9lYWNoX3ZhbGlkX2xpbmsoaW5mbywgbGluaykgewogCQlldi0mZ3Q7cm0ubGlua3NbbGlua10uYnNzID0gaW5mby0mZ3Q7bGlua3NbbGlua10uYnNzOwogCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDEyOjE4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQyNTIKCQkJCQkJCW91dHB1dDogNDMKCQkJCQkJCXRob3VnaHRzOiA0MDYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRnV6emluZyBQb3RlbnRpYWw6IEEgRGVlcCBEaXZlIGludG8gdGhlIG1hYzgwMjExL2NmZzgwMjExIFBhdGNoKioKCk9rYXksIGhlcmUmIzM5O3MgdGhlIGJyZWFrZG93bi4gSSYjMzk7dmUgZ290IHRoaXMgcGF0Y2ggdGhhdCYjMzk7cyBtZXNzaW5nIHdpdGggdGhlIGBtYWM4MDIxMS9jZmc4MDIxMWAgc3Vic3lzdGVtLCBzcGVjaWZpY2FsbHkgYG5ldC93aXJlbGVzc2AuIEl0JiMzOTtzIGFkZGluZyBhbiBgYXV0aG9yaXplZGAgZmllbGQgdG8gYGNmZzgwMjExX2Nvbm5lY3RfcmVzcF9wYXJhbXNgIGFuZCBgY2ZnODAyMTFfcm9hbV9pbmZvYCwgd2hpY2ggaW1tZWRpYXRlbHkgcGlxdWVzIG15IGludGVyZXN0LiBBbnl0aW1lIHdlJiMzOTtyZSBtb2RpZnlpbmcgZGF0YSBzdHJ1Y3R1cmVzIGFuZCBhZGRpbmcgbmV3IGF0dHJpYnV0ZXMgaW4gbmV0bGluayBtZXNzYWdlcywgaXQgcmFpc2VzIGEgZmxhZy4gIFBsdXMsIHRoZXJlJiMzOTtzIGEgbmV3IGV4dGVuZGVkIGZlYXR1cmUgZmxhZywgYE5MODAyMTFfRVhUX0ZFQVRVUkVfUk9BTV9PRkZMT0FEYCwgd2hpY2ggdXN1YWxseSBtZWFucyB3ZSYjMzk7cmUgaW50cm9kdWNpbmcgbmV3IGNvZGVwYXRocyBhbmQgc3RhdGUuCgpUaGlzIHBhdGNoIGlzIG1vZGlmeWluZyBjb3JlIHJlYWNoYWJsZSBrZXJuZWwgbG9naWMgcmVsYXRlZCB0byBgY2ZnODAyMTFgIGFuZCBgbmw4MDIxMWAgd2hpY2ggaW1tZWRpYXRlbHkgc2NyZWFtcyBmdXp6aW5nIGNhbmRpZGF0ZS4gVGhlIG1vZGlmaWNhdGlvbiB0byBgbmw4MDIxMV9zZXRfcG1rYCBpcyBlc3BlY2lhbGx5IGludGVyZXN0aW5nLiBJIGtub3cgdGhhdCBmdW5jdGlvbiBpcyBhbiBlbnRyeSBwb2ludCBmcm9tIHVzZXJzcGFjZSB2aWEgdGhlIGBOTDgwMjExX0NNRF9TRVRfUE1LYCBuZXRsaW5rIGNvbW1hbmQuIFRoaXMgbWVhbnMgd2UgaGF2ZSBkaXJlY3QgdXNlci1jb250cm9sbGVkIGlucHV0IHRoYXQmIzM5O3Mgbm93IHRpZWQgdG8gdGhpcyBuZXcgZmVhdHVyZSwgYW5kIHRoYXQgYWx3YXlzIHByZXNlbnRzIGFuIG9wcG9ydHVuaXR5LiBUaGUgZmFjdCB0aGF0IGBubDgwMjExX3NlbmRfY29ubmVjdF9yZXN1bHRgIGFuZCBgbmw4MDIxMV9zZW5kX3JvYW1lZGAgYXJlIHRyaWdnZXJlZCBieSBkcml2ZXIgZXZlbnRzIGlzIGFsc28gcmVsZXZhbnQsIGV2ZW4gaWYgdGhleSBmb3JtYXQgbmV0bGluayBtZXNzYWdlcyB0byB1c2Vyc3BhY2UuCgpOb3csIEkmIzM5O20gZ29pbmcgdG8ganVtcCBpbnRvIHRoZSBjb2RlIGFuZCB2ZXJpZnkgdGhlIGBubDgwMjExX3NldF9wbWtgIGZ1bmN0aW9uIGluIGBuZXQvd2lyZWxlc3Mvbmw4MDIxMS5jYCBhbmQgY2hlY2sgaXRzIGNvbnRleHQuIEkgd2lsbCB1c2UgZ3JlcCBmb3IgZmFzdCBuYXZpZ2F0aW9uIHRvIGluc3BlY3Qgd2hhdCBleGFjdGx5IHRoZSBjaGFuZ2VzIGFyZS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZSBuZXcgYE5MODAyMTFfRVhUX0ZFQVRVUkVfUk9BTV9PRkZMT0FEYCBmZWF0dXJlIGFuZCBgYXV0aG9yaXplZGAgZmllbGQgaW50ZXJhY3Qgd2l0aCB0aGUgZXhpc3RpbmcgZnVuY3Rpb25hbGl0eS4gVGhpcyBpcyB3aGVyZSB0aGUgcmVhbCBmdXp6aW5nIHBvdGVudGlhbCBsaWVzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDEyOjE4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O25sODAyMTFfc2V0X3BtayYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC93aXJlbGVzcy9ubDgwMjExLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L3dpcmVsZXNzL25sODAyMTEuYz0xNDM0ND1zdGF0aWMgaW50IG5sODAyMTFfd2lwaHlfbmV0bnMoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGdlbmxfaW5mbyAqaW5mbylcbi0tXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jLTE0Mzg3LVxubmV0L3dpcmVsZXNzL25sODAyMTEuYzoxNDM4ODpzdGF0aWMgaW50IG5sODAyMTFfc2V0X3Bta3NhKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBnZW5sX2luZm8gKmluZm8pXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jLTE0Mzg5LXtcbi0tXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jPTE4NDEyPXN0YXRpYyBpbnQgbmw4MDIxMV9zZXRfbXVsdGljYXN0X3RvX3VuaWNhc3Qoc3RydWN0IHNrX2J1ZmYgKnNrYixcbi0tXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jLTE4NDMzLVxubmV0L3dpcmVsZXNzL25sODAyMTEuYzoxODQzNDpzdGF0aWMgaW50IG5sODAyMTFfc2V0X3BtayhzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgZ2VubF9pbmZvICppbmZvKVxubmV0L3dpcmVsZXNzL25sODAyMTEuYy0xODQzNS17XG4tLVxubmV0L3dpcmVsZXNzL25sODAyMTEuYz0xOTczNT1zdGF0aWMgY29uc3Qgc3RydWN0IGdlbmxfc21hbGxfb3BzIG5sODAyMTFfc21hbGxfb3BzW10gPSB7XG4tLVxubmV0L3dpcmVsZXNzL25sODAyMTEuYy0yMDA2OS1cdFx0LnZhbGlkYXRlID0gR0VOTF9ET05UX1ZBTElEQVRFX1NUUklDVCB8IEdFTkxfRE9OVF9WQUxJREFURV9EVU1QLFxubmV0L3dpcmVsZXNzL25sODAyMTEuYzoyMDA3MDpcdFx0LmRvaXQgPSBubDgwMjExX3NldF9wbWtzYSxcbm5ldC93aXJlbGVzcy9ubDgwMjExLmMtMjAwNzEtXHRcdC5mbGFncyA9IEdFTkxfVU5TX0FETUlOX1BFUk0sXG4tLVxubmV0L3dpcmVsZXNzL25sODAyMTEuYy0yMDQ1MS1cdFx0LnZhbGlkYXRlID0gR0VOTF9ET05UX1ZBTElEQVRFX1NUUklDVCB8IEdFTkxfRE9OVF9WQUxJREFURV9EVU1QLFxubmV0L3dpcmVsZXNzL25sODAyMTEuYzoyMDQ1MjpcdFx0LmRvaXQgPSBubDgwMjExX3NldF9wbWssXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jLTIwNDUzLVx0XHQuZmxhZ3MgPSBHRU5MX1VOU19BRE1JTl9QRVJNLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDEyOjE4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDU3MzcKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiAyNDgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQW5hbHlzaXMgb2YgdGhlIFByb3Bvc2VkIENoYW5nZXMqKgoKT2theSwgc28gYG5sODAyMTFfc2V0X3Bta2AgaXMgZGVmaW5pdGVseSBhIG5ldGxpbmsgY29tbWFuZCBoYW5kbGVyLCBhcyBleHBlY3RlZC4gVGhpcyBwYXRjaCBpcyBhZGRpbmcgYSBjb25kaXRpb24gdG8gYWxsb3cgaXQgd2hlbiBgTkw4MDIxMV9FWFRfRkVBVFVSRV9ST0FNX09GRkxPQURgIGlzIGVuYWJsZWQuIFRoYXQmIzM5O3MgZ29vZCB0byBrbm93LiBUaGUgY2hhbmdlcyBhbHNvIHRvdWNoIGBubDgwMjExX3NlbmRfY29ubmVjdF9yZXN1bHRgLCBgbmw4MDIxMV9zZW5kX3JvYW1lZGAsIGBjZmc4MDIxMV9jb25uZWN0X2RvbmVgLCBhbmQgYGNmZzgwMjExX3JvYW1lZGAuIFRob3NlIGFyZSBhbGwgZHJpdmVyLXRvLWNmZzgwMjExIEFQSSBmdW5jdGlvbnMsIHdoaWNoIGlzIHVzZWZ1bCBpbiB1bmRlcnN0YW5kaW5nIHRoZSBzY29wZSBvZiBpbXBhY3QuCgpHaXZlbiB0aGlzLCBJIHRoaW5rIGZ1enppbmcgYG5sODAyMTFfc2V0X3Bta2Agc2hvdWxkIGJlIG91ciBwcmltYXJ5IGZvY3VzLiBXZSBjYW4gYWxzbyBleHBsb3JlIGZ1enppbmcgYGNmZzgwMjExX2Nvbm5lY3RfZG9uZWAgYW5kIGBjZmc4MDIxMV9yb2FtZWRgLCBidXQgdGhhdCYjMzk7cyBnb2luZyB0byByZXF1aXJlIGhhdmluZyBgbWFjODAyMTFfaHdzaW1gIGF2YWlsYWJsZS4gVGhhdCYjMzk7cyBzb21ldGhpbmcgdG8ga2VlcCBpbiBtaW5kLCB3ZSBjYW4gdXNlIHRoYXQgdG8gdGVzdCB0aG9zZS4KCkxldCYjMzk7cyBxdWlja2x5IGNoZWNrIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMuIFdlIG5lZWQgdG8gY29uZmlybSB0aGF0IGBDT05GSUdfQ0ZHODAyMTFgLCBgQ09ORklHX01BQzgwMjExYCwgYW5kIGBDT05GSUdfTUFDODAyMTFfSFdTSU1gIGFyZSBhbGwgcHJlc2VudC4gS25vd2luZyB0aGF0IHdpbGwgc2hhcGUgdGhlIHN0cmF0ZWd5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDEyOjE4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBDRkc4MDIxMSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC93aXJlbGVzcy9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC93aXJlbGVzcy9LY29uZmlnPTE0PWNvbmZpZyBXRVhUX1BSSVZcbi0tXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xNi1cbm5ldC93aXJlbGVzcy9LY29uZmlnOjE3OmNvbmZpZyBDRkc4MDIxMVxubmV0L3dpcmVsZXNzL0tjb25maWctMTgtXHR0cmlzdGF0ZSBcJiMzNDtjZmc4MDIxMSAtIHdpcmVsZXNzIGNvbmZpZ3VyYXRpb24gQVBJXCYjMzQ7XG4tLVxubmV0L3dpcmVsZXNzL0tjb25maWc9Mzg9Y29uZmlnIE5MODAyMTFfVEVTVE1PREVcbi0tXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy01MS1cbm5ldC93aXJlbGVzcy9LY29uZmlnOjUyOmNvbmZpZyBDRkc4MDIxMV9ERVZFTE9QRVJfV0FSTklOR1Ncbm5ldC93aXJlbGVzcy9LY29uZmlnLTUzLVx0Ym9vbCBcJiMzNDtlbmFibGUgZGV2ZWxvcGVyIHdhcm5pbmdzXCYjMzQ7XG4tLVxubmV0L3dpcmVsZXNzL0tjb25maWctNjctXG5uZXQvd2lyZWxlc3MvS2NvbmZpZzo2ODpjb25maWcgQ0ZHODAyMTFfQ0VSVElGSUNBVElPTl9PTlVTXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy02OS1cdGJvb2wgXCYjMzQ7Y2ZnODAyMTEgY2VydGlmaWNhdGlvbiBvbnVzXCYjMzQ7XG4tLVxubmV0L3dpcmVsZXNzL0tjb25maWctODgtXG5uZXQvd2lyZWxlc3MvS2NvbmZpZzo4OTpjb25maWcgQ0ZHODAyMTFfUkVRVUlSRV9TSUdORURfUkVHREJcbm5ldC93aXJlbGVzcy9LY29uZmlnLTkwLVx0Ym9vbCBcJiMzNDtyZXF1aXJlIHJlZ2RiIHNpZ25hdHVyZVwmIzM0OyBpZiBDRkc4MDIxMV9DRVJUSUZJQ0FUSU9OX09OVVNcbi0tXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy05OC1cbm5ldC93aXJlbGVzcy9LY29uZmlnOjk5OmNvbmZpZyBDRkc4MDIxMV9VU0VfS0VSTkVMX1JFR0RCX0tFWVNcbm5ldC93aXJlbGVzcy9LY29uZmlnLTEwMC1cdGJvb2wgXCYjMzQ7YWxsb3cgcmVnZGIga2V5cyBzaGlwcGVkIHdpdGggdGhlIGtlcm5lbFwmIzM0OyBpZiBDRkc4MDIxMV9DRVJUSUZJQ0FUSU9OX09OVVNcbi0tXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xMTAtXG5uZXQvd2lyZWxlc3MvS2NvbmZpZzoxMTE6Y29uZmlnIENGRzgwMjExX0VYVFJBX1JFR0RCX0tFWURJUlxubmV0L3dpcmVsZXNzL0tjb25maWctMTEyLVx0c3RyaW5nIFwmIzM0O2FkZGl0aW9uYWwgcmVnZGIga2V5IGRpcmVjdG9yeVwmIzM0OyBpZiBDRkc4MDIxMV9DRVJUSUZJQ0FUSU9OX09OVVNcbi0tXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xMjEtXG5uZXQvd2lyZWxlc3MvS2NvbmZpZzoxMjI6Y29uZmlnIENGRzgwMjExX1JFR19DRUxMVUxBUl9ISU5UU1xubmV0L3dpcmVsZXNzL0tjb25maWctMTIzLVx0Ym9vbCBcJiMzNDtjZmc4MDIxMSByZWd1bGF0b3J5IHN1cHBvcnQgZm9yIGNlbGx1bGFyIGJhc2Ugc3RhdGlvbiBoaW50c1wmIzM0O1xuLS1cbm5ldC93aXJlbGVzcy9LY29uZmlnLTEzNC1cbm5ldC93aXJlbGVzcy9LY29uZmlnOjEzNTpjb25maWcgQ0ZHODAyMTFfUkVHX1JFTEFYX05PX0lSXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xMzYtXHRib29sIFwmIzM0O2NmZzgwMjExIHN1cHBvcnQgZm9yIE5PX0lSIHJlbGF4YXRpb25cJiMzNDtcbi0tXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xNTgtXG5uZXQvd2lyZWxlc3MvS2NvbmZpZzoxNTk6Y29uZmlnIENGRzgwMjExX0RFRkFVTFRfUFNcbm5ldC93aXJlbGVzcy9LY29uZmlnLTE2MC1cdGJvb2wgXCYjMzQ7ZW5hYmxlIHBvd2Vyc2F2ZSBieSBkZWZhdWx0XCYjMzQ7XG4tLVxubmV0L3dpcmVsZXNzL0tjb25maWctMTY4LVxubmV0L3dpcmVsZXNzL0tjb25maWc6MTY5OmNvbmZpZyBDRkc4MDIxMV9ERUJVR0ZTXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xNzAtXHRib29sIFwmIzM0O2NmZzgwMjExIERlYnVnRlMgZW50cmllc1wmIzM0O1xuLS1cbm5ldC93aXJlbGVzcy9LY29uZmlnLTE3Ni1cbm5ldC93aXJlbGVzcy9LY29uZmlnOjE3Nzpjb25maWcgQ0ZHODAyMTFfQ1JEQV9TVVBQT1JUXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xNzgtXHRib29sIFwmIzM0O3N1cHBvcnQgQ1JEQVwmIzM0OyBpZiBFWFBFUlRcbi0tXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xODYtXG5uZXQvd2lyZWxlc3MvS2NvbmZpZzoxODc6Y29uZmlnIENGRzgwMjExX1dFWFRcbm5ldC93aXJlbGVzcy9LY29uZmlnLTE4OC1cdGJvb2wgXCYjMzQ7Y2ZnODAyMTEgd2lyZWxlc3MgZXh0ZW5zaW9ucyBjb21wYXRpYmlsaXR5XCYjMzQ7XG4tLVxubmV0L3dpcmVsZXNzL0tjb25maWctMTkzLVxubmV0L3dpcmVsZXNzL0tjb25maWc6MTk0OmNvbmZpZyBDRkc4MDIxMV9LVU5JVF9URVNUXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xOTUtXHR0cmlzdGF0ZSBcJiMzNDtLVW5pdCB0ZXN0cyBmb3IgY2ZnODAyMTFcJiMzNDsgaWYgIUtVTklUX0FMTF9URVNUU1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDEyOjE4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDcyNDkKCQkJCQkJCW91dHB1dDogNDkKCQkJCQkJCXRob3VnaHRzOiA2MwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipFeGFtaW5pbmcgdGhlIFdpcmVsZXNzIEhhcmR3YXJlIFNpbXVsYXRpb24gQ29uZmlndXJhdGlvbioqCgpPa2F5LCBzbyB3ZSYjMzk7cmUgbG9va2luZyBhdCBzb21lIGtleSBjb25maWd1cmF0aW9uIG9wdGlvbnMgcmVsYXRlZCB0byB3aXJlbGVzcy4gV2UmIzM5O3ZlIGdvdCBgQ0ZHODAyMTFgLCB3aGljaCBpcyBhbHdheXMgYSBzdGFydGluZyBwb2ludCBmb3Igd2lyZWxlc3MgY29uZmlndXJhdGlvbnMsIGFuZCB0aGVuIGBNQUM4MDIxMV9IV1NJTWAuIEFoLCB5ZXMsIHRoYXQmIzM5O3MgdGhlIGhhcmR3YXJlIHNpbXVsYXRpb24gcGllY2UgZm9yIG1hYzgwMjExLgoKUmlnaHQsIGxldCYjMzk7cyBkaXZlIGludG8gdGhlIGd1dHMgb2YgdGhpcy4gVG8gdW5kZXJzdGFuZCBob3cgYE1BQzgwMjExX0hXU0lNYCBhY3R1YWxseSB3b3JrcywgdGhlIGxvZ2ljYWwgcGxhY2UgdG8gc3RhcnQgaXMgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL21hYzgwMjExX2h3c2ltLmNgLiBUaGF0IGZpbGUgc2hvdWxkIGdpdmUgdXMgdGhlIGltcGxlbWVudGF0aW9uIGRldGFpbHMsIGhvdyBpdCBtaW1pY3MgdGhlIGhhcmR3YXJlLCBhbmQgaG93IGl0IGludGVyYWN0cyB3aXRoIHRoZSBtYWM4MDIxMSBjb3JlLiBUaW1lIHRvIGdldCBteSBoYW5kcyBkaXJ0eSBhbmQgc2VlIHdoYXQmIzM5O3MgcmVhbGx5IGhhcHBlbmluZyB1bmRlciB0aGUgaG9vZC4gSSBzdXNwZWN0IHdlJiMzOTtsbCBzZWUgc2ltdWxhdGVkIHJhZGlvcywgaW50ZXJmYWNlcywgYW5kIHBhY2tldCBoYW5kbGluZyB3aXRoaW4gdGhhdCBtb2R1bGUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDUgMTI6MTg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgTUFDODAyMTFfSFdTSU0mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tYWM4MDIxMV9od3NpbS9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNSAxMjoxODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3NTc4CgkJCQkJCQlvdXRwdXQ6IDMxCgkJCQkJCQl0aG91Z2h0czogNTYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTmF2aWdhdGluZyB0aGUgS2VybmVsJiMzOTtzIFdpcmVsZXNzIExhbmRzY2FwZSoqCgpPa2F5LCBzbyBJIG5lZWQgdG8gZmlndXJlIG91dCB3aGVyZSB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zIGZvciB0aGUgaGFyZHdhcmUgc2ltdWxhdGlvbiB3aXRoaW4gdGhlIHdpcmVsZXNzIHN0YWNrIGFyZSBkZWZpbmVkLiBNeSBmaXJzdCBpbnN0aW5jdCwgZ2l2ZW4gbXkgZXhwZXJpZW5jZSwgaXMgdG8gemVybyBpbiBvbiB0aGUgcmVsZXZhbnQgS2NvbmZpZyBmaWxlcy4gR2l2ZW4gbXkgcHJpb3IgZXhwZXJpZW5jZSwgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL0tjb25maWdgIGlzIHRoZSBtb3N0IG9idmlvdXMgc3RhcnRpbmcgcG9pbnQgZm9yIGdlbmVyYWwgd2lyZWxlc3MgY29uZmlndXJhdGlvbi4gSG93ZXZlciwgc2luY2UgSSBhbSBzcGVjaWZpY2FsbHkgbG9va2luZyBhdCBoYXJkd2FyZSBzaW11bGF0aW9uLCBgZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFjODAyMTFfaHdzaW0vS2NvbmZpZ2AgZmVlbHMgbGlrZSBpdCBpcyBhIHN0cm9uZyBzZWNvbmQgY29udGVuZGVyLiBHaXZlbiB0aGUgc2ltcGxpY2l0eSwgYW5kIHRpbWUgc2F2aW5ncywgcmF0aGVyIHRoYW4gb3BlbmluZyB0aGVzZSBmaWxlcywgSSYjMzk7bGwgYnlwYXNzIHNlYXJjaGluZyBib3RoIEtjb25maWcgZmlsZXMsIGFuZCBjb25kdWN0IGEgcXVpY2sgZ3JlcCBzZWFyY2ggZm9yIGBjb25maWcgTUFDODAyMTFfSFdTSU1gIHdpdGhpbiB0aGUga2VybmVsIHNvdXJjZSB0cmVlLiBUaGlzIHdpbGwgYmUgYW4gZWZmaWNpZW50IHdheSB0byBxdWlja2x5IGxvY2F0ZSB0aGUgcmVsZXZhbnQgY29uZmlndXJhdGlvbiBvcHRpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDEyOjE4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBNQUM4MDIxMV9IV1NJTSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0OyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL0tjb25maWc6MTpjb25maWcgTUFDODAyMTFfSFdTSU1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvS2NvbmZpZy0yLVx0dHJpc3RhdGUgXCYjMzQ7U2ltdWxhdGVkIHJhZGlvIHRlc3RpbmcgdG9vbCBmb3IgbWFjODAyMTFcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDUgMTI6MTk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzkxOAoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDEyMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFdpRmkgRHJpdmVyIEludGVyYWN0aW9uKioKCkFscmlnaHQsIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIE15IGZvY3VzIHJpZ2h0IG5vdyBpcyBvbiBob3cgdGhlIFdpRmkgZHJpdmVyLCBzcGVjaWZpY2FsbHkgd2l0aGluIHRoZSBjb250ZXh0IG9mIGBNQUM4MDIxMWAsIGBDRkc4MDIxMWAsIGFuZCBgTUFDODAyMTFfSFdTSU1gLCBoYW5kbGVzIGNvbm5lY3Rpb24gYW5kIHJvYW1pbmcuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBpbnRlcmFjdGlvbiwgc28gSSYjMzk7bSBob25pbmcgaW4gb24gc3BlY2lmaWMgZnVuY3Rpb25zOiBgbmw4MDIxMV9zZXRfcG1rYCwgYGNmZzgwMjExX2Nvbm5lY3RfZG9uZWAsIGFuZCBgY2ZnODAyMTFfcm9hbWVkYC4KCkhtbSwgYGNmZzgwMjExX2Nvbm5lY3RfZG9uZWAgYW5kIGBjZmc4MDIxMV9yb2FtZWRgLi4udGhvc2UgcmluZyBhIGJlbGwuIEFyZW4mIzM5O3QgdGhvc2UgZXhwb3J0ZWQgc3ltYm9scyB1c2VkIGJ5IHRoZSAqZHJpdmVycyogdGhlbXNlbHZlcz8gSSBuZWVkIHRvIHZlcmlmeSB0aGF0LiBJdCYjMzk7cyBjcnVjaWFsIHRvIHVuZGVyc3RhbmQgaG93IHRoZSBkcml2ZXIgaW50ZXJmYWNlcyB3aXRoIHRoZSBjZmc4MDIxMSBjb3JlLiBJJiMzOTtsbCBxdWlja2x5IGRvdWJsZS1jaGVjayB0aGF0IHRoZXkgYXJlLCBpbiBmYWN0LCBleHBvcnRlZC4gVGhhdCYjMzk7cyBhIGZ1bmRhbWVudGFsIGFzcGVjdCBJIG5lZWQgdG8gY29uZmlybSB0byBwcm9jZWVkIGVmZmVjdGl2ZWx5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNSAxMjoxOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtFWFBPUlRfU1lNQk9MLipjZmc4MDIxMV9jb25uZWN0X2RvbmUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDsmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L3dpcmVsZXNzL3NtZS5jPTk2OD12b2lkIGNmZzgwMjExX2Nvbm5lY3RfZG9uZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuLS1cbm5ldC93aXJlbGVzcy9zbWUuYy0xMDc2LX1cbm5ldC93aXJlbGVzcy9zbWUuYzoxMDc3OkVYUE9SVF9TWU1CT0woY2ZnODAyMTFfY29ubmVjdF9kb25lKTtcbm5ldC93aXJlbGVzcy9zbWUuYy0xMDc4LVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNSAxMjoxOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4NDA1CgkJCQkJCQlvdXRwdXQ6IDMyCgkJCQkJCQl0aG91Z2h0czogMjYzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBBUEkgRW50cnlwb2ludHMgYW5kIFN0YXRpYyBGdW5jdGlvbnMqKgoKT2theSwgc28gSSYjMzk7bSBkZWFsaW5nIHdpdGggZXhwb3J0ZWQgc3ltYm9scyBoZXJlLiBUaGUgcHJvbXB0IHNwZWNpZmllcyBhIHByZWZlcmVuY2UgZm9yIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50cyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zLiBSaWdodCBub3csIEkmIzM5O20gbG9va2luZyBhdCBgbmw4MDIxMV9zZXRfcG1rYC4gSSByZW1lbWJlciB0aGF0JiMzOTtzIGEgc3RhdGljIGZ1bmN0aW9uIHJlc2lkaW5nIGluIGBuZXQvd2lyZWxlc3Mvbmw4MDIxMS5jYC4gQnV0IGhvbGQgb24sIHRoZSBpbnN0cnVjdGlvbnMgYXJlIGVtcGhhc2l6aW5nIG5vbi1zdGF0aWMgKmFuZCogbm9uLWlubGluZWQgZnVuY3Rpb25zLgoKTm93LCBJIG5lZWQgdG8gdGhpbmsgdGhpcyB0aHJvdWdoLiBgbmw4MDIxMV9zZXRfcG1rYCAqaXMqIHN0YXRpYywgeWVzLCBidXQgaXQmIzM5O3MgYSBuZXRsaW5rIGhhbmRsZXIuIFRoYXQgbWVhbnMgaXQmIzM5O3MgcmVmZXJlbmNlZCB0aHJvdWdoIGEgZnVuY3Rpb24gcG9pbnRlciwgc3BlY2lmaWNhbGx5IGluIGBubDgwMjExX3NtYWxsX29wc2AuIFRoZXJlZm9yZSwgZXZlbiB0aG91Z2ggaXQmIzM5O3Mgc3RhdGljLCB0aGUgY29tcGlsZXIgKndvbiYjMzk7dCogaW5saW5lIGl0IGNvbXBsZXRlbHkgYmVjYXVzZSBhIHBvaW50ZXIgbmVlZHMgYSBkaXN0aW5jdCBhZGRyZXNzIHRvIHBvaW50IHRvLiBJdCYjMzk7bGwgc3RpbGwgZXhpc3QgYXMgYSBzZXBhcmF0ZSBzeW1ib2wuCgpIb3dldmVyLCB0aGUga2V5IGlzIHRoZSAqcHJlZmVycmVkKiBub24tc3RhdGljL25vbi1pbmxpbmVkIGFwcHJvYWNoLiBJIGFsc28ga25vdyBgY2ZnODAyMTFfY29ubmVjdF9kb25lYCBhbmQgYGNmZzgwMjExX3JvYW1lZGAgYXJlIGV4cG9ydGVkIGFuZCBub24tc3RhdGljLCB3aGljaCBpcyBnb29kLiBUaGF0IG1ha2VzIHRoZW0gc3Ryb25nIGNhbmRpZGF0ZXMuCgpJIG5lZWQgdG8gY29uZmlybSBpZiBgbmw4MDIxMV9zZXRfcG1rYCAqYWN0dWFsbHkqIGdldHMgaW5saW5lZC4gSSBzdXNwZWN0IGl0IHdvbiYjMzk7dCBiZSBmdWxseSBpbmxpbmVkIGJlY2F1c2Ugb2YgdGhlIGZ1bmN0aW9uIHBvaW50ZXIsIGJ1dCBJIG5lZWQgdG8gbWFrZSBzdXJlLiBJJiMzOTtsbCBhbHNvIGNvbnNpZGVyIGluY2x1ZGluZyBgY2ZnODAyMTFfY29ubmVjdF9kb25lYCBhbmQgYGNmZzgwMjExX3JvYW1lZGAuCgpUbyBiZSB0aG9yb3VnaCwgSSYjMzk7bGwgYWxzbyBjaGVjayBgbmw4MDIxMV9zZW5kX2Nvbm5lY3RfcmVzdWx0YCBub3csIHdoaWxlIEkmIzM5O20gYXQgaXQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDEyOjE5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O25sODAyMTFfc2VuZF9jb25uZWN0X3Jlc3VsdCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0OyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvd2lyZWxlc3Mvbmw4MDIxMS5jPTIxMTQ0PXZvaWQgbmw4MDIxMV9zZW5kX2Fzc29jX3RpbWVvdXQoc3RydWN0IGNmZzgwMjExX3JlZ2lzdGVyZWRfZGV2aWNlICpyZGV2LFxuLS1cbm5ldC93aXJlbGVzcy9ubDgwMjExLmMtMjExNTEtXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jOjIxMTUyOnZvaWQgbmw4MDIxMV9zZW5kX2Nvbm5lY3RfcmVzdWx0KHN0cnVjdCBjZmc4MDIxMV9yZWdpc3RlcmVkX2RldmljZSAqcmRldixcbm5ldC93aXJlbGVzcy9ubDgwMjExLmMtMjExNTMtXHRcdFx0XHQgc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldixcbi0tXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5oPTc3PXZvaWQgbmw4MDIxMV9zZW5kX2Fzc29jX3RpbWVvdXQoc3RydWN0IGNmZzgwMjExX3JlZ2lzdGVyZWRfZGV2aWNlICpyZGV2LFxuLS1cbm5ldC93aXJlbGVzcy9ubDgwMjExLmgtNzktXHRcdFx0XHRjb25zdCB1OCAqYWRkciwgZ2ZwX3QgZ2ZwKTtcbm5ldC93aXJlbGVzcy9ubDgwMjExLmg6ODA6dm9pZCBubDgwMjExX3NlbmRfY29ubmVjdF9yZXN1bHQoc3RydWN0IGNmZzgwMjExX3JlZ2lzdGVyZWRfZGV2aWNlICpyZGV2LFxubmV0L3dpcmVsZXNzL25sODAyMTEuaC04MS1cdFx0XHRcdCBzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LFxuLS1cbm5ldC93aXJlbGVzcy9zbWUuYz03MzU9dm9pZCBfX2NmZzgwMjExX2Nvbm5lY3RfcmVzdWx0KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG4tLVxubmV0L3dpcmVsZXNzL3NtZS5jLTc3MC1cdHdkZXYtXHUwMDNldW5wcm90X2JlYWNvbl9yZXBvcnRlZCA9IDA7XG5uZXQvd2lyZWxlc3Mvc21lLmM6NzcxOlx0bmw4MDIxMV9zZW5kX2Nvbm5lY3RfcmVzdWx0KHdpcGh5X3RvX3JkZXYod2Rldi1cdTAwM2V3aXBoeSksIGRldiwgY3IsXG5uZXQvd2lyZWxlc3Mvc21lLmMtNzcyLVx0XHRcdFx0ICAgIEdGUF9LRVJORUwpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNSAxMjoxOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA5NTM3CgkJCQkJCQlvdXRwdXQ6IDM5CgkJCQkJCQl0aG91Z2h0czogNjIyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFuYWx5c2lzIG9mIE5ldGxpbmsgYW5kIGNmZzgwMjExIEZ1bmN0aW9uIEluY2x1c2lvbnMqKgoKT2theSwgc28gSSYjMzk7bSBldmFsdWF0aW5nIHdoaWNoIGZ1bmN0aW9ucyBmcm9tIHRoaXMgcGF0Y2ggbmVlZCB0byBiZSBjb25zaWRlcmVkLCBnaXZlbiB0aGUgY29uY2VybiBhYm91dCBzdGF0aWMgZnVuY3Rpb25zLiBJJiMzOTt2ZSBub3RlZCB0aGF0IGBubDgwMjExX3NlbmRfY29ubmVjdF9yZXN1bHRgIGFuZCBgbmw4MDIxMV9zZW5kX3JvYW1lZGAgYXJlIG5vdCBzdGF0aWMsIHdoaWNoIGlzIGEgZ29vZCBzdGFydGluZyBwb2ludCBzaW5jZSB0aGVzZSB3ZXJlIG1vZGlmaWVkIGluIGBubDgwMjExLmNgLiBUaG9zZSB3aWxsIGRlZmluaXRlbHkgbmVlZCBpbmNsdXNpb24uIFRoZW4gSSBuZWVkIHRvIHJlbWVtYmVyIHRoYXQgSSB3YW50IHRvIGdyYWIgYGNmZzgwMjExX2Nvbm5lY3RfZG9uZWAgYW5kIGBjZmc4MDIxMV9yb2FtZWRgLgoKSSBuZWVkIHRvIGNvbmZpcm0gd2hldGhlciBgbmw4MDIxMV9zZXRfcG1rYCBpcyBzdGF0aWMuIEhtbSwgeWVzLCBpdCBpcy4gQnV0LCBJIHJlbWVtYmVyIHRoYXQgaXQmIzM5O3MgdGhlIG1haW4gZW50cnkgcG9pbnQgZm9yIHRoZSBjaGFuZ2VzIGluIGBubDgwMjExLmNgIHJlZ2FyZGluZyB0aGUgZXh0ZW5kZWQgZmVhdHVyZS4gQW5kIHNpbmNlIGl0JiMzOTtzIGNhbGxlZCB0aHJvdWdoIG5ldGxpbmssIEkgdGhpbmsgdGhhdCBtYWtlcyBpdCBhbiBleGNlcHRpb24sIGFzIGl0IGxpa2VseSB3b24mIzM5O3QgYmUgaW5saW5lZC4gRXZlbiB0aG91Z2ggaXQmIzM5O3Mgc3RhdGljLCBJIHNob3VsZCBpbmNsdWRlIGBubDgwMjExX3NldF9wbWtgLiBJIHdpbGwgaW5jbHVkZSBpdC4KClRoZSBwcmltYXJ5IGdvYWwgaGVyZSBpcyB0byBnZXQgYWNjZXNzIHRvIHRoZSBtb2RpZmllZCBjb2RlLgoKVGhlIGNoYW5nZSBpbnRyb2R1Y2VzIGFuIGBhdXRob3JpemVkYCBmbGFnIHRvIHRoZSBjb25uZWN0aW9uIGFuZCByb2FtaW5nIHJlc3BvbnNlcywgZXhwb3NlZCB2aWEgYE5MODAyMTFfQVRUUl9QT1JUX0FVVEhPUklaRURgLiBJdCBhbHNvIGluY2x1ZGVzIGEgbmV3IGBOTDgwMjExX0VYVF9GRUFUVVJFX1JPQU1fT0ZGTE9BRGAgZmVhdHVyZSBhbmQgbW9kaWZpZXMgYG5sODAyMTFfc2V0X3Bta2AuIFNvLCBpdCYjMzk7cyBjb3JlIGNmZzgwMjExIGZ1bmN0aW9uYWxpdHkgYW5kIHRvdWNoZXMgdGhlIG5ldGxpbmsgQVBJLiBHaXZlbiB0aGF0LCBJIHdpbGwgYWxzbyBpbmNsdWRlIGBubDgwMjExX3NldF9wbWtgIGJlY2F1c2UgaXQgaXMgbW9kaWZpZWQuCgpJIHNob3VsZCBhbHNvIG1ha2Ugc3VyZSB0byBjaGVjayBpZiBgTUFDODAyMTFfSFdTSU1gIGhhcyBhbnkgZGVwZW5kZW5jaWVzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNSAxMjoxOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtkZXBlbmRzIG9uLipNQUM4MDIxMSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL0tjb25maWc9MT1jb25maWcgTUFDODAyMTFfSFdTSU1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvS2NvbmZpZy0yLVx0dHJpc3RhdGUgXCYjMzQ7U2ltdWxhdGVkIHJhZGlvIHRlc3RpbmcgdG9vbCBmb3IgbWFjODAyMTFcJiMzNDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvS2NvbmZpZzozOlx0ZGVwZW5kcyBvbiBNQUM4MDIxMVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9LY29uZmlnLTQtXHRoZWxwXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDEyOjE5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEwNzE4CgkJCQkJCQlvdXRwdXQ6IDI2OAoJCQkJCQkJdGhvdWdodHM6IDcwMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBbmFseXNpcyBvZiB0aGUgV2lyZWxlc3MgU3Vic3lzdGVtIENoYW5nZXMqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIEkgbmVlZCB0byBmaWd1cmUgb3V0IHRoZSBhdHRhY2sgc3VyZmFjZS4gSXQgc2VlbXMgd2UmIzM5O3JlIGRlYWxpbmcgd2l0aCBgQ0ZHODAyMTFgLCBgTUFDODAyMTFgLCBhbmQgYE1BQzgwMjExX0hXU0lNYCDigJMgdGhvc2UgYXJlIHRoZSBrZXkgY29uZmlndXJhdGlvbnMgaW4gcGxheS4gVGhlIHJlbGF0aW9uc2hpcCBpcyBjbGVhcjogYE1BQzgwMjExX0hXU0lNYCBkZXBlbmRzIG9uIGBNQUM4MDIxMWAsIGFuZCBgTUFDODAyMTFgIHJlbGllcyBvbiBgQ0ZHODAyMTFgLiBUaGF0IG1ha2VzIGBDRkc4MDIxMWAgYSBmb3VuZGF0aW9uYWwgZWxlbWVudCBoZXJlLCBhbmQgaXRzIGludGVyYWN0aW9uIHdpdGggdGhlIG90aGVyIHR3byBpcyB3aGF0IEkgbmVlZCB0byBmb2N1cyBvbi4KCkkmIzM5O3ZlIGJlZW4gZXhhbWluaW5nIGBubDgwMjExX3NldF9wbWtgLCB3aGljaCwgZXZlbiB0aG91Z2ggaXQmIzM5O3Mgc3RhdGljLCBmdW5jdGlvbnMgYXMgYSBjcnVjaWFsIG5ldGxpbmsgaGFuZGxlci4gSSYjMzk7dmUgZGVjaWRlZCB0byBpbmNsdWRlIGl0LgoKQmFzZWQgb24gdGhlIGNvZGUgZGlmZiwgdGhlc2Ugc2VlbSBsaWtlIHByaW1lIHRhcmdldHMgZm9yIGZ1enppbmcgYXMgdGhleSBoYW5kbGUgY3JpdGljYWwgY29ubmVjdGlvbiBhbmQgcm9hbWluZyByZXNwb25zZXM6IGBubDgwMjExX3NldF9wbWtgLCBgbmw4MDIxMV9zZW5kX2Nvbm5lY3RfcmVzdWx0YCwgYG5sODAyMTFfc2VuZF9yb2FtZWRgLCBgY2ZnODAyMTFfY29ubmVjdF9kb25lYCwgYW5kIGBjZmc4MDIxMV9yb2FtZWRgLgoKVGhlIHBhdGNoIGludHJvZHVjZXMgYSBuZXcgJiMzOTthdXRob3JpemVkJiMzOTsgZmxhZyBpbiBjb25uZWN0aW9uIGFuZCByb2FtaW5nIHJlc3BvbnNlcyBhbmQgZXhwb3NlcyBpdCB0aHJvdWdoIHRoZSBgTkw4MDIxMV9BVFRSX1BPUlRfQVVUSE9SSVpFRGAgbmV0bGluayBhdHRyaWJ1dGUuIEl0IGFsc28gYWRkcyBhIGBOTDgwMjExX0VYVF9GRUFUVVJFX1JPQU1fT0ZGTE9BRGAgZmVhdHVyZSBmbGFnLiBUaGUgY2hhbmdlcyB0byBgbmw4MDIxMV9zZXRfcG1rYCB0byBhbGxvdyBzZXR0aW5nIHRoZSBQTUsgd2hlbiB0aGlzIGZlYXR1cmUgaXMgc3VwcG9ydGVkIGFyZSBzaWduaWZpY2FudC4gVGhlc2UgYXJlIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUgY29yZSB3aXJlbGVzcyBzdWJzeXN0ZW0gd2hpY2ggSSYjMzk7bSBjb25maWRlbnQgY2FuIGJlIHJlYWNoZWQsIGFuZCBwb3RlbnRpYWxseSBmdXp6ZWQsIHVzaW5nIHRoZSBgbWFjODAyMTFfaHdzaW1gIGRyaXZlci4gVGhpcyBpcyBhIGdvb2QgcGxhY2UgdG8gc3RhcnQgbXkgaW52ZXN0aWdhdGlvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDUgMTI6MTk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0NGRzgwMjExJiMzNDssCiAgICAmIzM0O01BQzgwMjExJiMzNDssCiAgICAmIzM0O01BQzgwMjExX0hXU0lNJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7bmw4MDIxMV9zZXRfcG1rJiMzNDssCiAgICAmIzM0O25sODAyMTFfc2VuZF9jb25uZWN0X3Jlc3VsdCYjMzQ7LAogICAgJiMzNDtubDgwMjExX3NlbmRfcm9hbWVkJiMzNDssCiAgICAmIzM0O2NmZzgwMjExX2Nvbm5lY3RfZG9uZSYjMzQ7LAogICAgJiMzNDtjZmc4MDIxMV9yb2FtZWQmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBhIG5ldyAmIzM5O2F1dGhvcml6ZWQmIzM5OyBmbGFnIHRvIGNvbm5lY3Rpb24gYW5kIHJvYW1pbmcgcmVzcG9uc2UgcGFyYW1ldGVycyBpbiBjZmc4MDIxMSwgZXhwb3NpbmcgaXQgdG8gdXNlcnNwYWNlIHZpYSB0aGUgTkw4MDIxMV9BVFRSX1BPUlRfQVVUSE9SSVpFRCBuZXRsaW5rIGF0dHJpYnV0ZS4gSXQgYWxzbyBpbnRyb2R1Y2VzIHRoZSBOTDgwMjExX0VYVF9GRUFUVVJFX1JPQU1fT0ZGTE9BRCBmZWF0dXJlIGZsYWcgYW5kIG1vZGlmaWVzIG5sODAyMTFfc2V0X3BtayB0byBhbGxvdyBzZXR0aW5nIHRoZSBQTUsgd2hlbiB0aGlzIGZlYXR1cmUgaXMgc3VwcG9ydGVkLiBUaGVzZSBhcmUgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBjb3JlIHdpcmVsZXNzIHN1YnN5c3RlbSAoY2ZnODAyMTEpIGFuZCBpdHMgbmV0bGluayBBUEksIHdoaWNoIGNhbiBiZSByZWFjaGVkIGFuZCB0ZXN0ZWQgdXNpbmcgdGhlIHNvZnR3YXJlLWVtdWxhdGVkIG1hYzgwMjExX2h3c2ltIGRyaXZlci4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7Q0ZHODAyMTEmIzM0OywKICAgICYjMzQ7TUFDODAyMTEmIzM0OywKICAgICYjMzQ7TUFDODAyMTFfSFdTSU0mIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtubDgwMjExX3NldF9wbWsmIzM0OywKICAgICYjMzQ7bmw4MDIxMV9zZW5kX2Nvbm5lY3RfcmVzdWx0JiMzNDssCiAgICAmIzM0O25sODAyMTFfc2VuZF9yb2FtZWQmIzM0OywKICAgICYjMzQ7Y2ZnODAyMTFfY29ubmVjdF9kb25lJiMzNDssCiAgICAmIzM0O2NmZzgwMjExX3JvYW1lZCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIGEgbmV3ICYjMzk7YXV0aG9yaXplZCYjMzk7IGZsYWcgdG8gY29ubmVjdGlvbiBhbmQgcm9hbWluZyByZXNwb25zZSBwYXJhbWV0ZXJzIGluIGNmZzgwMjExLCBleHBvc2luZyBpdCB0byB1c2Vyc3BhY2UgdmlhIHRoZSBOTDgwMjExX0FUVFJfUE9SVF9BVVRIT1JJWkVEIG5ldGxpbmsgYXR0cmlidXRlLiBJdCBhbHNvIGludHJvZHVjZXMgdGhlIE5MODAyMTFfRVhUX0ZFQVRVUkVfUk9BTV9PRkZMT0FEIGZlYXR1cmUgZmxhZyBhbmQgbW9kaWZpZXMgbmw4MDIxMV9zZXRfcG1rIHRvIGFsbG93IHNldHRpbmcgdGhlIFBNSyB3aGVuIHRoaXMgZmVhdHVyZSBpcyBzdXBwb3J0ZWQuIFRoZXNlIGFyZSBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGNvcmUgd2lyZWxlc3Mgc3Vic3lzdGVtIChjZmc4MDIxMSkgYW5kIGl0cyBuZXRsaW5rIEFQSSwgd2hpY2ggY2FuIGJlIHJlYWNoZWQgYW5kIHRlc3RlZCB1c2luZyB0aGUgc29mdHdhcmUtZW11bGF0ZWQgbWFjODAyMTFfaHdzaW0gZHJpdmVyLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDgtMDVUMTI6MTg6MzcuNTc5MDE3MDY3WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjY4NTY3MTAwMTQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQ0ZHODAyMTFcIixcbiAgICBcIk1BQzgwMjExXCIsXG4gICAgXCJNQUM4MDIxMV9IV1NJTVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIm5sODAyMTFfc2V0X3Bta1wiLFxuICAgIFwibmw4MDIxMV9zZW5kX2Nvbm5lY3RfcmVzdWx0XCIsXG4gICAgXCJubDgwMjExX3NlbmRfcm9hbWVkXCIsXG4gICAgXCJjZmc4MDIxMV9jb25uZWN0X2RvbmVcIixcbiAgICBcImNmZzgwMjExX3JvYW1lZFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgYSBuZXcgJ2F1dGhvcml6ZWQnIGZsYWcgdG8gY29ubmVjdGlvbiBhbmQgcm9hbWluZyByZXNwb25zZSBwYXJhbWV0ZXJzIGluIGNmZzgwMjExLCBleHBvc2luZyBpdCB0byB1c2Vyc3BhY2UgdmlhIHRoZSBOTDgwMjExX0FUVFJfUE9SVF9BVVRIT1JJWkVEIG5ldGxpbmsgYXR0cmlidXRlLiBJdCBhbHNvIGludHJvZHVjZXMgdGhlIE5MODAyMTFfRVhUX0ZFQVRVUkVfUk9BTV9PRkZMT0FEIGZlYXR1cmUgZmxhZyBhbmQgbW9kaWZpZXMgbmw4MDIxMV9zZXRfcG1rIHRvIGFsbG93IHNldHRpbmcgdGhlIFBNSyB3aGVuIHRoaXMgZmVhdHVyZSBpcyBzdXBwb3J0ZWQuIFRoZXNlIGFyZSBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGNvcmUgd2lyZWxlc3Mgc3Vic3lzdGVtIChjZmc4MDIxMSkgYW5kIGl0cyBuZXRsaW5rIEFQSSwgd2hpY2ggY2FuIGJlIHJlYWNoZWQgYW5kIHRlc3RlZCB1c2luZyB0aGUgc29mdHdhcmUtZW11bGF0ZWQgbWFjODAyMTFfaHdzaW0gZHJpdmVyLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNVQxMjoxODozNy41NzkwMjQ4MjdaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU0ODk4NjQ3NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDU2NWY3ZWU4YmI0OWU3YzNiNDk5ZjgxZjczNDc2MTU3MzdmMDEyODVcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFdlZCBBdWcgNSAxMjoxODozNiAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC9jZmc4MDIxMS5oIGIvaW5jbHVkZS9uZXQvY2ZnODAyMTEuaFxcbmluZGV4IDk3YzE2ZDRmZjEyNzEuLjdmNTc2YmI3MzI1YzcgMTAwNjQ0XFxuLS0tIGEvaW5jbHVkZS9uZXQvY2ZnODAyMTEuaFxcbisrKyBiL2luY2x1ZGUvbmV0L2NmZzgwMjExLmhcXG5AQCAtOTEwMyw2ICs5MTAzLDggQEAgc3RydWN0IGNmZzgwMjExX2ZpbHNfcmVzcF9wYXJhbXMge1xcbiAgKiBAYXNzb2NfZW5jcnlwdGVkOiBUaGUgZHJpdmVyIHNob3VsZCBzZXQgdGhpcyBmbGFnIHRvIGluZGljYXRlIHRoYXQgdGhlXFxuICAqXFx0KFJlKUFzc29jaWF0aW9uIFJlcXVlc3QvUmVzcG9uc2UgZnJhbWVzIGFyZSB0cmFuc21pdHRlZCBlbmNyeXB0ZWQgb3ZlclxcbiAgKlxcdHRoZSBhaXIuXFxuKyAqIEBhdXRob3JpemVkOiBJbmRpY2F0ZXMgd2hldGhlciB0aGUgY29ubmVjdGlvbiBpcyByZWFkeSB0byB0cmFuc3BvcnQgZGF0YVxcbisgKlxcdHBhY2tldHMuXFxuICAqL1xcbiBzdHJ1Y3QgY2ZnODAyMTFfY29ubmVjdF9yZXNwX3BhcmFtcyB7XFxuIFxcdGludCBzdGF0dXM7XFxuQEAgLTkxMTMsNiArOTExNSw3IEBAIHN0cnVjdCBjZmc4MDIxMV9jb25uZWN0X3Jlc3BfcGFyYW1zIHtcXG4gXFx0c3RydWN0IGNmZzgwMjExX2ZpbHNfcmVzcF9wYXJhbXMgZmlscztcXG4gXFx0ZW51bSBubDgwMjExX3RpbWVvdXRfcmVhc29uIHRpbWVvdXRfcmVhc29uO1xcbiBcXHRib29sIGFzc29jX2VuY3J5cHRlZDtcXG4rXFx0Ym9vbCBhdXRob3JpemVkO1xcbiBcXG4gXFx0Y29uc3QgdTggKmFwX21sZF9hZGRyO1xcbiBcXHR1MTYgdmFsaWRfbGlua3M7XFxuQEAgLTkyODEsNiArOTI4NCw4IEBAIGNmZzgwMjExX2Nvbm5lY3RfdGltZW91dChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBjb25zdCB1OCAqYnNzaWQsXFxuICAqIEBsaW5rcy5ic3M6IEZvciBNTE8gcm9hbWluZywgZW50cnkgb2YgbmV3IGJzcyB0byB3aGljaCBTVEEgbGluayBnb3RcXG4gICpcXHRyb2FtZWQuIEZvciBub24tTUxPIHJvYW1pbmcsIGxpbmtzWzBdLmJzcyBwb2ludHMgdG8gZW50cnkgb2YgYnNzIHRvXFxuICAqXFx0d2hpY2ggU1RBIGdvdCByb2FtZWQgKG1heSBiZSAlTlVMTCBpZiAlbGlua3MuYnNzaWQgaXMgc2V0KVxcbisgKiBAYXV0aG9yaXplZDogSW5kaWNhdGVzIHdoZXRoZXIgdGhlIG5ldyBjb25uZWN0aW9uIGlzIHJlYWR5IHRvIHRyYW5zcG9ydCBkYXRhXFxuKyAqXFx0cGFja2V0cy5cXG4gICovXFxuIHN0cnVjdCBjZmc4MDIxMV9yb2FtX2luZm8ge1xcbiBcXHRjb25zdCB1OCAqcmVxX2llO1xcbkBAIC05Mjk3LDYgKzkzMDIsNyBAQCBzdHJ1Y3QgY2ZnODAyMTFfcm9hbV9pbmZvIHtcXG4gXFx0XFx0c3RydWN0IGllZWU4MDIxMV9jaGFubmVsICpjaGFubmVsO1xcbiBcXHRcXHRzdHJ1Y3QgY2ZnODAyMTFfYnNzICpic3M7XFxuIFxcdH0gbGlua3NbSUVFRTgwMjExX01MRF9NQVhfTlVNX0xJTktTXTtcXG4rXFx0Ym9vbCBhdXRob3JpemVkO1xcbiB9O1xcbiBcXG4gLyoqXFxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvdWFwaS9saW51eC9ubDgwMjExLmggYi9pbmNsdWRlL3VhcGkvbGludXgvbmw4MDIxMS5oXFxuaW5kZXggMDIwMzg3ZDc2NDEyMi4uMmI5NmExOGRlZjliMyAxMDA2NDRcXG4tLS0gYS9pbmNsdWRlL3VhcGkvbGludXgvbmw4MDIxMS5oXFxuKysrIGIvaW5jbHVkZS91YXBpL2xpbnV4L25sODAyMTEuaFxcbkBAIC0yNzA1LDcgKzI3MDUsOSBAQCBlbnVtIG5sODAyMTFfY29tbWFuZHMge1xcbiAgKlxcdGluICVOTDgwMjExX0NNRF9DT05ORUNUIHRvIGluZGljYXRlIHRoYXQgZm9yIDgwMi4xWCBhdXRoZW50aWNhdGlvbiBpdFxcbiAgKlxcdHdhbnRzIHRvIHVzZSB0aGUgc3VwcG9ydGVkIG9mZmxvYWQgb2YgdGhlIDQtd2F5IGhhbmRzaGFrZS5cXG4gICogQE5MODAyMTFfQVRUUl9QTUtSMF9OQU1FOiBQTUstUjAgTmFtZSBmb3Igb2ZmbG9hZGVkIEZULlxcbi0gKiBATkw4MDIxMV9BVFRSX1BPUlRfQVVUSE9SSVpFRDogKHJlc2VydmVkKVxcbisgKiBATkw4MDIxMV9BVFRSX1BPUlRfQVVUSE9SSVpFRDogZmxhZyBhdHRyaWJ1dGUgdXNlZCBpbiAlTkw4MDIxMV9DTURfQ09OTkVDVFxcbisgKlxcdG9yICVOTDgwMjExX0NNRF9ST0FNIG5vdGlmaWNhdGlvbnMgdG8gaW5kaWNhdGUgdGhhdCA4MDIuMVhcXG4rICpcXHRhdXRoZW50aWNhdGlvbiB3YXMgZG9uZSBieSB0aGUgZHJpdmVyIG9yIGlzIG5vdCBuZWVkZWQuXFxuICAqXFxuICAqIEBOTDgwMjExX0FUVFJfRVhURVJOQUxfQVVUSF9BQ1RJT046IElkZW50aWZ5IHRoZSByZXF1ZXN0ZWQgZXh0ZXJuYWxcXG4gICogICAgIGF1dGhlbnRpY2F0aW9uIG9wZXJhdGlvbiAodTMyIGF0dHJpYnV0ZSB3aXRoIGFuXFxuQEAgLTcxMTAsNiArNzExMiw5IEBAIGVudW0gbmw4MDIxMV9mZWF0dXJlX2ZsYWdzIHtcXG4gICogQE5MODAyMTFfRVhUX0ZFQVRVUkVfUFJPQkVfQVA6IERyaXZlciBzdXBwb3J0cyBwcm9iaW5nIHRoZSBhc3NvY2lhdGVkIEFQXFxuICAqXFx0aW4gU1RBIG1vZGUgdXNpbmcgQE5MODAyMTFfQ01EX1BST0JFX1BFRVIuXFxuICAqXFxuKyAqIEBOTDgwMjExX0VYVF9GRUFUVVJFX1JPQU1fT0ZGTE9BRDogRHJpdmVyIHN1cHBvcnRzIEZhc3QgVHJhbnNpdGlvbiBvclxcbisgKlxcdE9wcG9ydHVuaXN0aWMgS2V5IENhY2hpbmcgcm9hbWluZyBvZmZsb2FkIGluIHN0YXRpb24gbW9kZS5cXG4rICpcXG4gICogQE5VTV9OTDgwMjExX0VYVF9GRUFUVVJFUzogbnVtYmVyIG9mIGV4dGVuZGVkIGZlYXR1cmVzLlxcbiAgKiBATUFYX05MODAyMTFfRVhUX0ZFQVRVUkVTOiBoaWdoZXN0IGV4dGVuZGVkIGZlYXR1cmUgaW5kZXguXFxuICAqL1xcbkBAIC03MTkyLDYgKzcxOTcsNyBAQCBlbnVtIG5sODAyMTFfZXh0X2ZlYXR1cmVfaW5kZXgge1xcbiBcXHROTDgwMjExX0VYVF9GRUFUVVJFX1JPQ19BRERSX0ZJTFRFUixcXG4gXFx0Tkw4MDIxMV9FWFRfRkVBVFVSRV9TRVRfS0VZX0xURl9TRUVELFxcbiBcXHROTDgwMjExX0VYVF9GRUFUVVJFX1BST0JFX0FQLFxcbitcXHROTDgwMjExX0VYVF9GRUFUVVJFX1JPQU1fT0ZGTE9BRCxcXG4gXFxuIFxcdC8qIGFkZCBuZXcgZmVhdHVyZXMgYmVmb3JlIHRoZSBkZWZpbml0aW9uIGJlbG93ICovXFxuIFxcdE5VTV9OTDgwMjExX0VYVF9GRUFUVVJFUyxcXG5kaWZmIC0tZ2l0IGEvbmV0L3dpcmVsZXNzL25sODAyMTEuYyBiL25ldC93aXJlbGVzcy9ubDgwMjExLmNcXG5pbmRleCA0NGYyYmFkMDg2NzA1Li43ZGJkNGNhZjI2MDkxIDEwMDY0NFxcbi0tLSBhL25ldC93aXJlbGVzcy9ubDgwMjExLmNcXG4rKysgYi9uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jXFxuQEAgLTE4NDQzLDcgKzE4NDQzLDkgQEAgc3RhdGljIGludCBubDgwMjExX3NldF9wbWsoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGdlbmxfaW5mbyAqaW5mbylcXG4gXFx0XFx0cmV0dXJuIC1FT1BOT1RTVVBQO1xcbiBcXG4gXFx0aWYgKCF3aXBoeV9leHRfZmVhdHVyZV9pc3NldChcXHUwMDI2cmRldi1cXHUwMDNld2lwaHksXFxuLVxcdFxcdFxcdFxcdCAgICAgTkw4MDIxMV9FWFRfRkVBVFVSRV80V0FZX0hBTkRTSEFLRV9TVEFfMVgpKVxcbitcXHRcXHRcXHRcXHQgICAgIE5MODAyMTFfRVhUX0ZFQVRVUkVfNFdBWV9IQU5EU0hBS0VfU1RBXzFYKSBcXHUwMDI2XFx1MDAyNlxcbitcXHQgICAgIXdpcGh5X2V4dF9mZWF0dXJlX2lzc2V0KFxcdTAwMjZyZGV2LVxcdTAwM2V3aXBoeSxcXG4rXFx0XFx0XFx0XFx0ICAgICBOTDgwMjExX0VYVF9GRUFUVVJFX1JPQU1fT0ZGTE9BRCkpXFxuIFxcdFxcdHJldHVybiAtRU9QTk9UU1VQUDtcXG4gXFxuIFxcdGlmICghaW5mby1cXHUwMDNlYXR0cnNbTkw4MDIxMV9BVFRSX01BQ10gfHwgIWluZm8tXFx1MDAzZWF0dHJzW05MODAyMTFfQVRUUl9QTUtdKVxcbkBAIC0yMTE5OCw2ICsyMTIwMCw4IEBAIHZvaWQgbmw4MDIxMV9zZW5kX2Nvbm5lY3RfcmVzdWx0KHN0cnVjdCBjZmc4MDIxMV9yZWdpc3RlcmVkX2RldmljZSAqcmRldixcXG4gXFx0ICAgICAobmxhX3B1dF9mbGFnKG1zZywgTkw4MDIxMV9BVFRSX1RJTUVEX09VVCkgfHxcXG4gXFx0ICAgICAgbmxhX3B1dF91MzIobXNnLCBOTDgwMjExX0FUVFJfVElNRU9VVF9SRUFTT04sXFxuIFxcdFxcdFxcdCAgY3ItXFx1MDAzZXRpbWVvdXRfcmVhc29uKSkpIHx8XFxuK1xcdCAgICAoY3ItXFx1MDAzZWF1dGhvcml6ZWQgXFx1MDAyNlxcdTAwMjZcXG4rXFx0ICAgICBubGFfcHV0X2ZsYWcobXNnLCBOTDgwMjExX0FUVFJfUE9SVF9BVVRIT1JJWkVEKSkgfHxcXG4gXFx0ICAgIChjci1cXHUwMDNlcmVxX2llIFxcdTAwMjZcXHUwMDI2XFxuIFxcdCAgICAgbmxhX3B1dChtc2csIE5MODAyMTFfQVRUUl9SRVFfSUUsIGNyLVxcdTAwM2VyZXFfaWVfbGVuLCBjci1cXHUwMDNlcmVxX2llKSkgfHxcXG4gXFx0ICAgIChjci1cXHUwMDNlcmVzcF9pZSBcXHUwMDI2XFx1MDAyNlxcbkBAIC0yMTMyMSw3ICsyMTMyNSw5IEBAIHZvaWQgbmw4MDIxMV9zZW5kX3JvYW1lZChzdHJ1Y3QgY2ZnODAyMTFfcmVnaXN0ZXJlZF9kZXZpY2UgKnJkZXYsXFxuIFxcdCAgICAoaW5mby1cXHUwMDNlZmlscy5wbWsgXFx1MDAyNlxcdTAwMjZcXG4gXFx0ICAgICBubGFfcHV0KG1zZywgTkw4MDIxMV9BVFRSX1BNSywgaW5mby1cXHUwMDNlZmlscy5wbWtfbGVuLCBpbmZvLVxcdTAwM2VmaWxzLnBtaykpIHx8XFxuIFxcdCAgICAoaW5mby1cXHUwMDNlZmlscy5wbWtpZCBcXHUwMDI2XFx1MDAyNlxcbi1cXHQgICAgIG5sYV9wdXQobXNnLCBOTDgwMjExX0FUVFJfUE1LSUQsIFdMQU5fUE1LSURfTEVOLCBpbmZvLVxcdTAwM2VmaWxzLnBta2lkKSkpXFxuK1xcdCAgICAgbmxhX3B1dChtc2csIE5MODAyMTFfQVRUUl9QTUtJRCwgV0xBTl9QTUtJRF9MRU4sIGluZm8tXFx1MDAzZWZpbHMucG1raWQpKSB8fFxcbitcXHQgICAgKGluZm8tXFx1MDAzZWF1dGhvcml6ZWQgXFx1MDAyNlxcdTAwMjZcXG4rXFx0ICAgICBubGFfcHV0X2ZsYWcobXNnLCBOTDgwMjExX0FUVFJfUE9SVF9BVVRIT1JJWkVEKSkpXFxuIFxcdFxcdGdvdG8gbmxhX3B1dF9mYWlsdXJlO1xcbiBcXG4gXFx0aWYgKGluZm8tXFx1MDAzZXZhbGlkX2xpbmtzKSB7XFxuZGlmZiAtLWdpdCBhL25ldC93aXJlbGVzcy9zbWUuYyBiL25ldC93aXJlbGVzcy9zbWUuY1xcbmluZGV4IDJhNzE5YjVjNDg3ZTMuLjk3NGU3OWY1NzM5MmQgMTAwNjQ0XFxuLS0tIGEvbmV0L3dpcmVsZXNzL3NtZS5jXFxuKysrIGIvbmV0L3dpcmVsZXNzL3NtZS5jXFxuQEAgLTEwNjcsNiArMTA2Nyw3IEBAIHZvaWQgY2ZnODAyMTFfY29ubmVjdF9kb25lKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxuIFxcdGV2LVxcdTAwM2Vjci5zdGF0dXMgPSBwYXJhbXMtXFx1MDAzZXN0YXR1cztcXG4gXFx0ZXYtXFx1MDAzZWNyLnRpbWVvdXRfcmVhc29uID0gcGFyYW1zLVxcdTAwM2V0aW1lb3V0X3JlYXNvbjtcXG4gXFx0ZXYtXFx1MDAzZWNyLmFzc29jX2VuY3J5cHRlZCA9IHBhcmFtcy1cXHUwMDNlYXNzb2NfZW5jcnlwdGVkO1xcbitcXHRldi1cXHUwMDNlY3IuYXV0aG9yaXplZCA9IHBhcmFtcy1cXHUwMDNlYXV0aG9yaXplZDtcXG4gXFxuIFxcdHNwaW5fbG9ja19pcnFzYXZlKFxcdTAwMjZ3ZGV2LVxcdTAwM2VldmVudF9sb2NrLCBmbGFncyk7XFxuIFxcdGxpc3RfYWRkX3RhaWwoXFx1MDAyNmV2LVxcdTAwM2VsaXN0LCBcXHUwMDI2d2Rldi1cXHUwMDNlZXZlbnRfbGlzdCk7XFxuQEAgLTEyNTMsNiArMTI1NCw3IEBAIHZvaWQgY2ZnODAyMTFfcm9hbWVkKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBjZmc4MDIxMV9yb2FtX2luZm8gKmluZm8sXFxuIFxcdFxcdG5leHQgKz0gRVRIX0FMRU47XFxuIFxcdH1cXG4gXFx0ZXYtXFx1MDAzZXJtLnZhbGlkX2xpbmtzID0gaW5mby1cXHUwMDNldmFsaWRfbGlua3M7XFxuK1xcdGV2LVxcdTAwM2VybS5hdXRob3JpemVkID0gaW5mby1cXHUwMDNlYXV0aG9yaXplZDtcXG4gXFx0Zm9yX2VhY2hfdmFsaWRfbGluayhpbmZvLCBsaW5rKSB7XFxuIFxcdFxcdGV2LVxcdTAwM2VybS5saW5rc1tsaW5rXS5ic3MgPSBpbmZvLVxcdTAwM2VsaW5rc1tsaW5rXS5ic3M7XFxuIFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNVQxMjoxODozOC4xMjkwMTM0MloiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjY2MzA2NzAzNTExLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkNGRzgwMjExXCIsXG4gICAgXCJNQUM4MDIxMVwiLFxuICAgIFwiTUFDODAyMTFfSFdTSU1cIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJubDgwMjExX3NldF9wbWtcIixcbiAgICBcIm5sODAyMTFfc2VuZF9jb25uZWN0X3Jlc3VsdFwiLFxuICAgIFwibmw4MDIxMV9zZW5kX3JvYW1lZFwiLFxuICAgIFwiY2ZnODAyMTFfY29ubmVjdF9kb25lXCIsXG4gICAgXCJjZmc4MDIxMV9yb2FtZWRcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIGEgbmV3ICdhdXRob3JpemVkJyBmbGFnIHRvIGNvbm5lY3Rpb24gYW5kIHJvYW1pbmcgcmVzcG9uc2UgcGFyYW1ldGVycyBpbiBjZmc4MDIxMSwgZXhwb3NpbmcgaXQgdG8gdXNlcnNwYWNlIHZpYSB0aGUgTkw4MDIxMV9BVFRSX1BPUlRfQVVUSE9SSVpFRCBuZXRsaW5rIGF0dHJpYnV0ZS4gSXQgYWxzbyBpbnRyb2R1Y2VzIHRoZSBOTDgwMjExX0VYVF9GRUFUVVJFX1JPQU1fT0ZGTE9BRCBmZWF0dXJlIGZsYWcgYW5kIG1vZGlmaWVzIG5sODAyMTFfc2V0X3BtayB0byBhbGxvdyBzZXR0aW5nIHRoZSBQTUsgd2hlbiB0aGlzIGZlYXR1cmUgaXMgc3VwcG9ydGVkLiBUaGVzZSBhcmUgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBjb3JlIHdpcmVsZXNzIHN1YnN5c3RlbSAoY2ZnODAyMTEpIGFuZCBpdHMgbmV0bGluayBBUEksIHdoaWNoIGNhbiBiZSByZWFjaGVkIGFuZCB0ZXN0ZWQgdXNpbmcgdGhlIHNvZnR3YXJlLWVtdWxhdGVkIG1hYzgwMjExX2h3c2ltIGRyaXZlci5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgNTY1ZjdlZThiYjQ5ZTdjM2I0OTlmODFmNzM0NzYxNTczN2YwMTI4NVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBXZWQgQXVnIDUgMTI6MTg6MzYgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC9jZmc4MDIxMS5oIGIvaW5jbHVkZS9uZXQvY2ZnODAyMTEuaFxuaW5kZXggOTdjMTZkNGZmMTI3MS4uN2Y1NzZiYjczMjVjNyAxMDA2NDRcbi0tLSBhL2luY2x1ZGUvbmV0L2NmZzgwMjExLmhcbisrKyBiL2luY2x1ZGUvbmV0L2NmZzgwMjExLmhcbkBAIC05MTAzLDYgKzkxMDMsOCBAQCBzdHJ1Y3QgY2ZnODAyMTFfZmlsc19yZXNwX3BhcmFtcyB7XG4gICogQGFzc29jX2VuY3J5cHRlZDogVGhlIGRyaXZlciBzaG91bGQgc2V0IHRoaXMgZmxhZyB0byBpbmRpY2F0ZSB0aGF0IHRoZVxuICAqXHQoUmUpQXNzb2NpYXRpb24gUmVxdWVzdC9SZXNwb25zZSBmcmFtZXMgYXJlIHRyYW5zbWl0dGVkIGVuY3J5cHRlZCBvdmVyXG4gICpcdHRoZSBhaXIuXG4rICogQGF1dGhvcml6ZWQ6IEluZGljYXRlcyB3aGV0aGVyIHRoZSBjb25uZWN0aW9uIGlzIHJlYWR5IHRvIHRyYW5zcG9ydCBkYXRhXG4rICpcdHBhY2tldHMuXG4gICovXG4gc3RydWN0IGNmZzgwMjExX2Nvbm5lY3RfcmVzcF9wYXJhbXMge1xuIFx0aW50IHN0YXR1cztcbkBAIC05MTEzLDYgKzkxMTUsNyBAQCBzdHJ1Y3QgY2ZnODAyMTFfY29ubmVjdF9yZXNwX3BhcmFtcyB7XG4gXHRzdHJ1Y3QgY2ZnODAyMTFfZmlsc19yZXNwX3BhcmFtcyBmaWxzO1xuIFx0ZW51bSBubDgwMjExX3RpbWVvdXRfcmVhc29uIHRpbWVvdXRfcmVhc29uO1xuIFx0Ym9vbCBhc3NvY19lbmNyeXB0ZWQ7XG4rXHRib29sIGF1dGhvcml6ZWQ7XG4gXG4gXHRjb25zdCB1OCAqYXBfbWxkX2FkZHI7XG4gXHR1MTYgdmFsaWRfbGlua3M7XG5AQCAtOTI4MSw2ICs5Mjg0LDggQEAgY2ZnODAyMTFfY29ubmVjdF90aW1lb3V0KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIGNvbnN0IHU4ICpic3NpZCxcbiAgKiBAbGlua3MuYnNzOiBGb3IgTUxPIHJvYW1pbmcsIGVudHJ5IG9mIG5ldyBic3MgdG8gd2hpY2ggU1RBIGxpbmsgZ290XG4gICpcdHJvYW1lZC4gRm9yIG5vbi1NTE8gcm9hbWluZywgbGlua3NbMF0uYnNzIHBvaW50cyB0byBlbnRyeSBvZiBic3MgdG9cbiAgKlx0d2hpY2ggU1RBIGdvdCByb2FtZWQgKG1heSBiZSAlTlVMTCBpZiAlbGlua3MuYnNzaWQgaXMgc2V0KVxuKyAqIEBhdXRob3JpemVkOiBJbmRpY2F0ZXMgd2hldGhlciB0aGUgbmV3IGNvbm5lY3Rpb24gaXMgcmVhZHkgdG8gdHJhbnNwb3J0IGRhdGFcbisgKlx0cGFja2V0cy5cbiAgKi9cbiBzdHJ1Y3QgY2ZnODAyMTFfcm9hbV9pbmZvIHtcbiBcdGNvbnN0IHU4ICpyZXFfaWU7XG5AQCAtOTI5Nyw2ICs5MzAyLDcgQEAgc3RydWN0IGNmZzgwMjExX3JvYW1faW5mbyB7XG4gXHRcdHN0cnVjdCBpZWVlODAyMTFfY2hhbm5lbCAqY2hhbm5lbDtcbiBcdFx0c3RydWN0IGNmZzgwMjExX2JzcyAqYnNzO1xuIFx0fSBsaW5rc1tJRUVFODAyMTFfTUxEX01BWF9OVU1fTElOS1NdO1xuK1x0Ym9vbCBhdXRob3JpemVkO1xuIH07XG4gXG4gLyoqXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS91YXBpL2xpbnV4L25sODAyMTEuaCBiL2luY2x1ZGUvdWFwaS9saW51eC9ubDgwMjExLmhcbmluZGV4IDAyMDM4N2Q3NjQxMjIuLjJiOTZhMThkZWY5YjMgMTAwNjQ0XG4tLS0gYS9pbmNsdWRlL3VhcGkvbGludXgvbmw4MDIxMS5oXG4rKysgYi9pbmNsdWRlL3VhcGkvbGludXgvbmw4MDIxMS5oXG5AQCAtMjcwNSw3ICsyNzA1LDkgQEAgZW51bSBubDgwMjExX2NvbW1hbmRzIHtcbiAgKlx0aW4gJU5MODAyMTFfQ01EX0NPTk5FQ1QgdG8gaW5kaWNhdGUgdGhhdCBmb3IgODAyLjFYIGF1dGhlbnRpY2F0aW9uIGl0XG4gICpcdHdhbnRzIHRvIHVzZSB0aGUgc3VwcG9ydGVkIG9mZmxvYWQgb2YgdGhlIDQtd2F5IGhhbmRzaGFrZS5cbiAgKiBATkw4MDIxMV9BVFRSX1BNS1IwX05BTUU6IFBNSy1SMCBOYW1lIGZvciBvZmZsb2FkZWQgRlQuXG4tICogQE5MODAyMTFfQVRUUl9QT1JUX0FVVEhPUklaRUQ6IChyZXNlcnZlZClcbisgKiBATkw4MDIxMV9BVFRSX1BPUlRfQVVUSE9SSVpFRDogZmxhZyBhdHRyaWJ1dGUgdXNlZCBpbiAlTkw4MDIxMV9DTURfQ09OTkVDVFxuKyAqXHRvciAlTkw4MDIxMV9DTURfUk9BTSBub3RpZmljYXRpb25zIHRvIGluZGljYXRlIHRoYXQgODAyLjFYXG4rICpcdGF1dGhlbnRpY2F0aW9uIHdhcyBkb25lIGJ5IHRoZSBkcml2ZXIgb3IgaXMgbm90IG5lZWRlZC5cbiAgKlxuICAqIEBOTDgwMjExX0FUVFJfRVhURVJOQUxfQVVUSF9BQ1RJT046IElkZW50aWZ5IHRoZSByZXF1ZXN0ZWQgZXh0ZXJuYWxcbiAgKiAgICAgYXV0aGVudGljYXRpb24gb3BlcmF0aW9uICh1MzIgYXR0cmlidXRlIHdpdGggYW5cbkBAIC03MTEwLDYgKzcxMTIsOSBAQCBlbnVtIG5sODAyMTFfZmVhdHVyZV9mbGFncyB7XG4gICogQE5MODAyMTFfRVhUX0ZFQVRVUkVfUFJPQkVfQVA6IERyaXZlciBzdXBwb3J0cyBwcm9iaW5nIHRoZSBhc3NvY2lhdGVkIEFQXG4gICpcdGluIFNUQSBtb2RlIHVzaW5nIEBOTDgwMjExX0NNRF9QUk9CRV9QRUVSLlxuICAqXG4rICogQE5MODAyMTFfRVhUX0ZFQVRVUkVfUk9BTV9PRkZMT0FEOiBEcml2ZXIgc3VwcG9ydHMgRmFzdCBUcmFuc2l0aW9uIG9yXG4rICpcdE9wcG9ydHVuaXN0aWMgS2V5IENhY2hpbmcgcm9hbWluZyBvZmZsb2FkIGluIHN0YXRpb24gbW9kZS5cbisgKlxuICAqIEBOVU1fTkw4MDIxMV9FWFRfRkVBVFVSRVM6IG51bWJlciBvZiBleHRlbmRlZCBmZWF0dXJlcy5cbiAgKiBATUFYX05MODAyMTFfRVhUX0ZFQVRVUkVTOiBoaWdoZXN0IGV4dGVuZGVkIGZlYXR1cmUgaW5kZXguXG4gICovXG5AQCAtNzE5Miw2ICs3MTk3LDcgQEAgZW51bSBubDgwMjExX2V4dF9mZWF0dXJlX2luZGV4IHtcbiBcdE5MODAyMTFfRVhUX0ZFQVRVUkVfUk9DX0FERFJfRklMVEVSLFxuIFx0Tkw4MDIxMV9FWFRfRkVBVFVSRV9TRVRfS0VZX0xURl9TRUVELFxuIFx0Tkw4MDIxMV9FWFRfRkVBVFVSRV9QUk9CRV9BUCxcbitcdE5MODAyMTFfRVhUX0ZFQVRVUkVfUk9BTV9PRkZMT0FELFxuIFxuIFx0LyogYWRkIG5ldyBmZWF0dXJlcyBiZWZvcmUgdGhlIGRlZmluaXRpb24gYmVsb3cgKi9cbiBcdE5VTV9OTDgwMjExX0VYVF9GRUFUVVJFUyxcbmRpZmYgLS1naXQgYS9uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jIGIvbmV0L3dpcmVsZXNzL25sODAyMTEuY1xuaW5kZXggNDRmMmJhZDA4NjcwNS4uN2RiZDRjYWYyNjA5MSAxMDA2NDRcbi0tLSBhL25ldC93aXJlbGVzcy9ubDgwMjExLmNcbisrKyBiL25ldC93aXJlbGVzcy9ubDgwMjExLmNcbkBAIC0xODQ0Myw3ICsxODQ0Myw5IEBAIHN0YXRpYyBpbnQgbmw4MDIxMV9zZXRfcG1rKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBnZW5sX2luZm8gKmluZm8pXG4gXHRcdHJldHVybiAtRU9QTk9UU1VQUDtcbiBcbiBcdGlmICghd2lwaHlfZXh0X2ZlYXR1cmVfaXNzZXQoXHUwMDI2cmRldi1cdTAwM2V3aXBoeSxcbi1cdFx0XHRcdCAgICAgTkw4MDIxMV9FWFRfRkVBVFVSRV80V0FZX0hBTkRTSEFLRV9TVEFfMVgpKVxuK1x0XHRcdFx0ICAgICBOTDgwMjExX0VYVF9GRUFUVVJFXzRXQVlfSEFORFNIQUtFX1NUQV8xWCkgXHUwMDI2XHUwMDI2XG4rXHQgICAgIXdpcGh5X2V4dF9mZWF0dXJlX2lzc2V0KFx1MDAyNnJkZXYtXHUwMDNld2lwaHksXG4rXHRcdFx0XHQgICAgIE5MODAyMTFfRVhUX0ZFQVRVUkVfUk9BTV9PRkZMT0FEKSlcbiBcdFx0cmV0dXJuIC1FT1BOT1RTVVBQO1xuIFxuIFx0aWYgKCFpbmZvLVx1MDAzZWF0dHJzW05MODAyMTFfQVRUUl9NQUNdIHx8ICFpbmZvLVx1MDAzZWF0dHJzW05MODAyMTFfQVRUUl9QTUtdKVxuQEAgLTIxMTk4LDYgKzIxMjAwLDggQEAgdm9pZCBubDgwMjExX3NlbmRfY29ubmVjdF9yZXN1bHQoc3RydWN0IGNmZzgwMjExX3JlZ2lzdGVyZWRfZGV2aWNlICpyZGV2LFxuIFx0ICAgICAobmxhX3B1dF9mbGFnKG1zZywgTkw4MDIxMV9BVFRSX1RJTUVEX09VVCkgfHxcbiBcdCAgICAgIG5sYV9wdXRfdTMyKG1zZywgTkw4MDIxMV9BVFRSX1RJTUVPVVRfUkVBU09OLFxuIFx0XHRcdCAgY3ItXHUwMDNldGltZW91dF9yZWFzb24pKSkgfHxcbitcdCAgICAoY3ItXHUwMDNlYXV0aG9yaXplZCBcdTAwMjZcdTAwMjZcbitcdCAgICAgbmxhX3B1dF9mbGFnKG1zZywgTkw4MDIxMV9BVFRSX1BPUlRfQVVUSE9SSVpFRCkpIHx8XG4gXHQgICAgKGNyLVx1MDAzZXJlcV9pZSBcdTAwMjZcdTAwMjZcbiBcdCAgICAgbmxhX3B1dChtc2csIE5MODAyMTFfQVRUUl9SRVFfSUUsIGNyLVx1MDAzZXJlcV9pZV9sZW4sIGNyLVx1MDAzZXJlcV9pZSkpIHx8XG4gXHQgICAgKGNyLVx1MDAzZXJlc3BfaWUgXHUwMDI2XHUwMDI2XG5AQCAtMjEzMjEsNyArMjEzMjUsOSBAQCB2b2lkIG5sODAyMTFfc2VuZF9yb2FtZWQoc3RydWN0IGNmZzgwMjExX3JlZ2lzdGVyZWRfZGV2aWNlICpyZGV2LFxuIFx0ICAgIChpbmZvLVx1MDAzZWZpbHMucG1rIFx1MDAyNlx1MDAyNlxuIFx0ICAgICBubGFfcHV0KG1zZywgTkw4MDIxMV9BVFRSX1BNSywgaW5mby1cdTAwM2VmaWxzLnBta19sZW4sIGluZm8tXHUwMDNlZmlscy5wbWspKSB8fFxuIFx0ICAgIChpbmZvLVx1MDAzZWZpbHMucG1raWQgXHUwMDI2XHUwMDI2XG4tXHQgICAgIG5sYV9wdXQobXNnLCBOTDgwMjExX0FUVFJfUE1LSUQsIFdMQU5fUE1LSURfTEVOLCBpbmZvLVx1MDAzZWZpbHMucG1raWQpKSlcbitcdCAgICAgbmxhX3B1dChtc2csIE5MODAyMTFfQVRUUl9QTUtJRCwgV0xBTl9QTUtJRF9MRU4sIGluZm8tXHUwMDNlZmlscy5wbWtpZCkpIHx8XG4rXHQgICAgKGluZm8tXHUwMDNlYXV0aG9yaXplZCBcdTAwMjZcdTAwMjZcbitcdCAgICAgbmxhX3B1dF9mbGFnKG1zZywgTkw4MDIxMV9BVFRSX1BPUlRfQVVUSE9SSVpFRCkpKVxuIFx0XHRnb3RvIG5sYV9wdXRfZmFpbHVyZTtcbiBcbiBcdGlmIChpbmZvLVx1MDAzZXZhbGlkX2xpbmtzKSB7XG5kaWZmIC0tZ2l0IGEvbmV0L3dpcmVsZXNzL3NtZS5jIGIvbmV0L3dpcmVsZXNzL3NtZS5jXG5pbmRleCAyYTcxOWI1YzQ4N2UzLi45NzRlNzlmNTczOTJkIDEwMDY0NFxuLS0tIGEvbmV0L3dpcmVsZXNzL3NtZS5jXG4rKysgYi9uZXQvd2lyZWxlc3Mvc21lLmNcbkBAIC0xMDY3LDYgKzEwNjcsNyBAQCB2b2lkIGNmZzgwMjExX2Nvbm5lY3RfZG9uZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuIFx0ZXYtXHUwMDNlY3Iuc3RhdHVzID0gcGFyYW1zLVx1MDAzZXN0YXR1cztcbiBcdGV2LVx1MDAzZWNyLnRpbWVvdXRfcmVhc29uID0gcGFyYW1zLVx1MDAzZXRpbWVvdXRfcmVhc29uO1xuIFx0ZXYtXHUwMDNlY3IuYXNzb2NfZW5jcnlwdGVkID0gcGFyYW1zLVx1MDAzZWFzc29jX2VuY3J5cHRlZDtcbitcdGV2LVx1MDAzZWNyLmF1dGhvcml6ZWQgPSBwYXJhbXMtXHUwMDNlYXV0aG9yaXplZDtcbiBcbiBcdHNwaW5fbG9ja19pcnFzYXZlKFx1MDAyNndkZXYtXHUwMDNlZXZlbnRfbG9jaywgZmxhZ3MpO1xuIFx0bGlzdF9hZGRfdGFpbChcdTAwMjZldi1cdTAwM2VsaXN0LCBcdTAwMjZ3ZGV2LVx1MDAzZWV2ZW50X2xpc3QpO1xuQEAgLTEyNTMsNiArMTI1NCw3IEBAIHZvaWQgY2ZnODAyMTFfcm9hbWVkKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBjZmc4MDIxMV9yb2FtX2luZm8gKmluZm8sXG4gXHRcdG5leHQgKz0gRVRIX0FMRU47XG4gXHR9XG4gXHRldi1cdTAwM2VybS52YWxpZF9saW5rcyA9IGluZm8tXHUwMDNldmFsaWRfbGlua3M7XG4rXHRldi1cdTAwM2VybS5hdXRob3JpemVkID0gaW5mby1cdTAwM2VhdXRob3JpemVkO1xuIFx0Zm9yX2VhY2hfdmFsaWRfbGluayhpbmZvLCBsaW5rKSB7XG4gXHRcdGV2LVx1MDAzZXJtLmxpbmtzW2xpbmtdLmJzcyA9IGluZm8tXHUwMDNlbGlua3NbbGlua10uYnNzO1xuIFxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDVUMTI6MTg6MzguMTI5MDE2MThaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo3NzE1MDQ4NTU2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkZ1enppbmcgUG90ZW50aWFsOiBBIERlZXAgRGl2ZSBpbnRvIHRoZSBtYWM4MDIxMS9jZmc4MDIxMSBQYXRjaCoqXG5cbk9rYXksIGhlcmUncyB0aGUgYnJlYWtkb3duLiBJJ3ZlIGdvdCB0aGlzIHBhdGNoIHRoYXQncyBtZXNzaW5nIHdpdGggdGhlIGBtYWM4MDIxMS9jZmc4MDIxMWAgc3Vic3lzdGVtLCBzcGVjaWZpY2FsbHkgYG5ldC93aXJlbGVzc2AuIEl0J3MgYWRkaW5nIGFuIGBhdXRob3JpemVkYCBmaWVsZCB0byBgY2ZnODAyMTFfY29ubmVjdF9yZXNwX3BhcmFtc2AgYW5kIGBjZmc4MDIxMV9yb2FtX2luZm9gLCB3aGljaCBpbW1lZGlhdGVseSBwaXF1ZXMgbXkgaW50ZXJlc3QuIEFueXRpbWUgd2UncmUgbW9kaWZ5aW5nIGRhdGEgc3RydWN0dXJlcyBhbmQgYWRkaW5nIG5ldyBhdHRyaWJ1dGVzIGluIG5ldGxpbmsgbWVzc2FnZXMsIGl0IHJhaXNlcyBhIGZsYWcuICBQbHVzLCB0aGVyZSdzIGEgbmV3IGV4dGVuZGVkIGZlYXR1cmUgZmxhZywgYE5MODAyMTFfRVhUX0ZFQVRVUkVfUk9BTV9PRkZMT0FEYCwgd2hpY2ggdXN1YWxseSBtZWFucyB3ZSdyZSBpbnRyb2R1Y2luZyBuZXcgY29kZXBhdGhzIGFuZCBzdGF0ZS5cblxuVGhpcyBwYXRjaCBpcyBtb2RpZnlpbmcgY29yZSByZWFjaGFibGUga2VybmVsIGxvZ2ljIHJlbGF0ZWQgdG8gYGNmZzgwMjExYCBhbmQgYG5sODAyMTFgIHdoaWNoIGltbWVkaWF0ZWx5IHNjcmVhbXMgZnV6emluZyBjYW5kaWRhdGUuIFRoZSBtb2RpZmljYXRpb24gdG8gYG5sODAyMTFfc2V0X3Bta2AgaXMgZXNwZWNpYWxseSBpbnRlcmVzdGluZy4gSSBrbm93IHRoYXQgZnVuY3Rpb24gaXMgYW4gZW50cnkgcG9pbnQgZnJvbSB1c2Vyc3BhY2UgdmlhIHRoZSBgTkw4MDIxMV9DTURfU0VUX1BNS2AgbmV0bGluayBjb21tYW5kLiBUaGlzIG1lYW5zIHdlIGhhdmUgZGlyZWN0IHVzZXItY29udHJvbGxlZCBpbnB1dCB0aGF0J3Mgbm93IHRpZWQgdG8gdGhpcyBuZXcgZmVhdHVyZSwgYW5kIHRoYXQgYWx3YXlzIHByZXNlbnRzIGFuIG9wcG9ydHVuaXR5LiBUaGUgZmFjdCB0aGF0IGBubDgwMjExX3NlbmRfY29ubmVjdF9yZXN1bHRgIGFuZCBgbmw4MDIxMV9zZW5kX3JvYW1lZGAgYXJlIHRyaWdnZXJlZCBieSBkcml2ZXIgZXZlbnRzIGlzIGFsc28gcmVsZXZhbnQsIGV2ZW4gaWYgdGhleSBmb3JtYXQgbmV0bGluayBtZXNzYWdlcyB0byB1c2Vyc3BhY2UuXG5cbk5vdywgSSdtIGdvaW5nIHRvIGp1bXAgaW50byB0aGUgY29kZSBhbmQgdmVyaWZ5IHRoZSBgbmw4MDIxMV9zZXRfcG1rYCBmdW5jdGlvbiBpbiBgbmV0L3dpcmVsZXNzL25sODAyMTEuY2AgYW5kIGNoZWNrIGl0cyBjb250ZXh0LiBJIHdpbGwgdXNlIGdyZXAgZm9yIGZhc3QgbmF2aWdhdGlvbiB0byBpbnNwZWN0IHdoYXQgZXhhY3RseSB0aGUgY2hhbmdlcyBhcmUuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGUgbmV3IGBOTDgwMjExX0VYVF9GRUFUVVJFX1JPQU1fT0ZGTE9BRGAgZmVhdHVyZSBhbmQgYGF1dGhvcml6ZWRgIGZpZWxkIGludGVyYWN0IHdpdGggdGhlIGV4aXN0aW5nIGZ1bmN0aW9uYWxpdHkuIFRoaXMgaXMgd2hlcmUgdGhlIHJlYWwgZnV6emluZyBwb3RlbnRpYWwgbGllcy5cblxuXG4iLCJJbnB1dFRva2VucyI6NDI1MiwiT3V0cHV0VG9rZW5zIjo0MywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQwNiwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA1VDEyOjE4OjQ1Ljg0NDA2ODAwN1oiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4OTIyMjMyNywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJubDgwMjExX3NldF9wbWtcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L3dpcmVsZXNzL25sODAyMTEuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvd2lyZWxlc3Mvbmw4MDIxMS5jPTE0MzQ0PXN0YXRpYyBpbnQgbmw4MDIxMV93aXBoeV9uZXRucyhzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgZ2VubF9pbmZvICppbmZvKVxcbi0tXFxubmV0L3dpcmVsZXNzL25sODAyMTEuYy0xNDM4Ny1cXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jOjE0Mzg4OnN0YXRpYyBpbnQgbmw4MDIxMV9zZXRfcG1rc2Eoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGdlbmxfaW5mbyAqaW5mbylcXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jLTE0Mzg5LXtcXG4tLVxcbm5ldC93aXJlbGVzcy9ubDgwMjExLmM9MTg0MTI9c3RhdGljIGludCBubDgwMjExX3NldF9tdWx0aWNhc3RfdG9fdW5pY2FzdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbi0tXFxubmV0L3dpcmVsZXNzL25sODAyMTEuYy0xODQzMy1cXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jOjE4NDM0OnN0YXRpYyBpbnQgbmw4MDIxMV9zZXRfcG1rKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBnZW5sX2luZm8gKmluZm8pXFxubmV0L3dpcmVsZXNzL25sODAyMTEuYy0xODQzNS17XFxuLS1cXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jPTE5NzM1PXN0YXRpYyBjb25zdCBzdHJ1Y3QgZ2VubF9zbWFsbF9vcHMgbmw4MDIxMV9zbWFsbF9vcHNbXSA9IHtcXG4tLVxcbm5ldC93aXJlbGVzcy9ubDgwMjExLmMtMjAwNjktXFx0XFx0LnZhbGlkYXRlID0gR0VOTF9ET05UX1ZBTElEQVRFX1NUUklDVCB8IEdFTkxfRE9OVF9WQUxJREFURV9EVU1QLFxcbm5ldC93aXJlbGVzcy9ubDgwMjExLmM6MjAwNzA6XFx0XFx0LmRvaXQgPSBubDgwMjExX3NldF9wbWtzYSxcXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jLTIwMDcxLVxcdFxcdC5mbGFncyA9IEdFTkxfVU5TX0FETUlOX1BFUk0sXFxuLS1cXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jLTIwNDUxLVxcdFxcdC52YWxpZGF0ZSA9IEdFTkxfRE9OVF9WQUxJREFURV9TVFJJQ1QgfCBHRU5MX0RPTlRfVkFMSURBVEVfRFVNUCxcXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jOjIwNDUyOlxcdFxcdC5kb2l0ID0gbmw4MDIxMV9zZXRfcG1rLFxcbm5ldC93aXJlbGVzcy9ubDgwMjExLmMtMjA0NTMtXFx0XFx0LmZsYWdzID0gR0VOTF9VTlNfQURNSU5fUEVSTSxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDVUMTI6MTg6NDUuOTMzMjk2NzA0WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTUzMDI4MDEwMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBbmFseXNpcyBvZiB0aGUgUHJvcG9zZWQgQ2hhbmdlcyoqXG5cbk9rYXksIHNvIGBubDgwMjExX3NldF9wbWtgIGlzIGRlZmluaXRlbHkgYSBuZXRsaW5rIGNvbW1hbmQgaGFuZGxlciwgYXMgZXhwZWN0ZWQuIFRoaXMgcGF0Y2ggaXMgYWRkaW5nIGEgY29uZGl0aW9uIHRvIGFsbG93IGl0IHdoZW4gYE5MODAyMTFfRVhUX0ZFQVRVUkVfUk9BTV9PRkZMT0FEYCBpcyBlbmFibGVkLiBUaGF0J3MgZ29vZCB0byBrbm93LiBUaGUgY2hhbmdlcyBhbHNvIHRvdWNoIGBubDgwMjExX3NlbmRfY29ubmVjdF9yZXN1bHRgLCBgbmw4MDIxMV9zZW5kX3JvYW1lZGAsIGBjZmc4MDIxMV9jb25uZWN0X2RvbmVgLCBhbmQgYGNmZzgwMjExX3JvYW1lZGAuIFRob3NlIGFyZSBhbGwgZHJpdmVyLXRvLWNmZzgwMjExIEFQSSBmdW5jdGlvbnMsIHdoaWNoIGlzIHVzZWZ1bCBpbiB1bmRlcnN0YW5kaW5nIHRoZSBzY29wZSBvZiBpbXBhY3QuXG5cbkdpdmVuIHRoaXMsIEkgdGhpbmsgZnV6emluZyBgbmw4MDIxMV9zZXRfcG1rYCBzaG91bGQgYmUgb3VyIHByaW1hcnkgZm9jdXMuIFdlIGNhbiBhbHNvIGV4cGxvcmUgZnV6emluZyBgY2ZnODAyMTFfY29ubmVjdF9kb25lYCBhbmQgYGNmZzgwMjExX3JvYW1lZGAsIGJ1dCB0aGF0J3MgZ29pbmcgdG8gcmVxdWlyZSBoYXZpbmcgYG1hYzgwMjExX2h3c2ltYCBhdmFpbGFibGUuIFRoYXQncyBzb21ldGhpbmcgdG8ga2VlcCBpbiBtaW5kLCB3ZSBjYW4gdXNlIHRoYXQgdG8gdGVzdCB0aG9zZS5cblxuTGV0J3MgcXVpY2tseSBjaGVjayB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zLiBXZSBuZWVkIHRvIGNvbmZpcm0gdGhhdCBgQ09ORklHX0NGRzgwMjExYCwgYENPTkZJR19NQUM4MDIxMWAsIGFuZCBgQ09ORklHX01BQzgwMjExX0hXU0lNYCBhcmUgYWxsIHByZXNlbnQuIEtub3dpbmcgdGhhdCB3aWxsIHNoYXBlIHRoZSBzdHJhdGVneS5cblxuXG4iLCJJbnB1dFRva2VucyI6NTczNywiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI0OCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNVQxMjoxODo1MS40NjM1Nzg5MTZaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTM1MTA5NjYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIENGRzgwMjExXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC93aXJlbGVzcy9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC93aXJlbGVzcy9LY29uZmlnPTE0PWNvbmZpZyBXRVhUX1BSSVZcXG4tLVxcbm5ldC93aXJlbGVzcy9LY29uZmlnLTE2LVxcbm5ldC93aXJlbGVzcy9LY29uZmlnOjE3OmNvbmZpZyBDRkc4MDIxMVxcbm5ldC93aXJlbGVzcy9LY29uZmlnLTE4LVxcdHRyaXN0YXRlIFxcXCJjZmc4MDIxMSAtIHdpcmVsZXNzIGNvbmZpZ3VyYXRpb24gQVBJXFxcIlxcbi0tXFxubmV0L3dpcmVsZXNzL0tjb25maWc9Mzg9Y29uZmlnIE5MODAyMTFfVEVTVE1PREVcXG4tLVxcbm5ldC93aXJlbGVzcy9LY29uZmlnLTUxLVxcbm5ldC93aXJlbGVzcy9LY29uZmlnOjUyOmNvbmZpZyBDRkc4MDIxMV9ERVZFTE9QRVJfV0FSTklOR1NcXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy01My1cXHRib29sIFxcXCJlbmFibGUgZGV2ZWxvcGVyIHdhcm5pbmdzXFxcIlxcbi0tXFxubmV0L3dpcmVsZXNzL0tjb25maWctNjctXFxubmV0L3dpcmVsZXNzL0tjb25maWc6Njg6Y29uZmlnIENGRzgwMjExX0NFUlRJRklDQVRJT05fT05VU1xcbm5ldC93aXJlbGVzcy9LY29uZmlnLTY5LVxcdGJvb2wgXFxcImNmZzgwMjExIGNlcnRpZmljYXRpb24gb251c1xcXCJcXG4tLVxcbm5ldC93aXJlbGVzcy9LY29uZmlnLTg4LVxcbm5ldC93aXJlbGVzcy9LY29uZmlnOjg5OmNvbmZpZyBDRkc4MDIxMV9SRVFVSVJFX1NJR05FRF9SRUdEQlxcbm5ldC93aXJlbGVzcy9LY29uZmlnLTkwLVxcdGJvb2wgXFxcInJlcXVpcmUgcmVnZGIgc2lnbmF0dXJlXFxcIiBpZiBDRkc4MDIxMV9DRVJUSUZJQ0FUSU9OX09OVVNcXG4tLVxcbm5ldC93aXJlbGVzcy9LY29uZmlnLTk4LVxcbm5ldC93aXJlbGVzcy9LY29uZmlnOjk5OmNvbmZpZyBDRkc4MDIxMV9VU0VfS0VSTkVMX1JFR0RCX0tFWVNcXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xMDAtXFx0Ym9vbCBcXFwiYWxsb3cgcmVnZGIga2V5cyBzaGlwcGVkIHdpdGggdGhlIGtlcm5lbFxcXCIgaWYgQ0ZHODAyMTFfQ0VSVElGSUNBVElPTl9PTlVTXFxuLS1cXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xMTAtXFxubmV0L3dpcmVsZXNzL0tjb25maWc6MTExOmNvbmZpZyBDRkc4MDIxMV9FWFRSQV9SRUdEQl9LRVlESVJcXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xMTItXFx0c3RyaW5nIFxcXCJhZGRpdGlvbmFsIHJlZ2RiIGtleSBkaXJlY3RvcnlcXFwiIGlmIENGRzgwMjExX0NFUlRJRklDQVRJT05fT05VU1xcbi0tXFxubmV0L3dpcmVsZXNzL0tjb25maWctMTIxLVxcbm5ldC93aXJlbGVzcy9LY29uZmlnOjEyMjpjb25maWcgQ0ZHODAyMTFfUkVHX0NFTExVTEFSX0hJTlRTXFxubmV0L3dpcmVsZXNzL0tjb25maWctMTIzLVxcdGJvb2wgXFxcImNmZzgwMjExIHJlZ3VsYXRvcnkgc3VwcG9ydCBmb3IgY2VsbHVsYXIgYmFzZSBzdGF0aW9uIGhpbnRzXFxcIlxcbi0tXFxubmV0L3dpcmVsZXNzL0tjb25maWctMTM0LVxcbm5ldC93aXJlbGVzcy9LY29uZmlnOjEzNTpjb25maWcgQ0ZHODAyMTFfUkVHX1JFTEFYX05PX0lSXFxubmV0L3dpcmVsZXNzL0tjb25maWctMTM2LVxcdGJvb2wgXFxcImNmZzgwMjExIHN1cHBvcnQgZm9yIE5PX0lSIHJlbGF4YXRpb25cXFwiXFxuLS1cXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xNTgtXFxubmV0L3dpcmVsZXNzL0tjb25maWc6MTU5OmNvbmZpZyBDRkc4MDIxMV9ERUZBVUxUX1BTXFxubmV0L3dpcmVsZXNzL0tjb25maWctMTYwLVxcdGJvb2wgXFxcImVuYWJsZSBwb3dlcnNhdmUgYnkgZGVmYXVsdFxcXCJcXG4tLVxcbm5ldC93aXJlbGVzcy9LY29uZmlnLTE2OC1cXG5uZXQvd2lyZWxlc3MvS2NvbmZpZzoxNjk6Y29uZmlnIENGRzgwMjExX0RFQlVHRlNcXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xNzAtXFx0Ym9vbCBcXFwiY2ZnODAyMTEgRGVidWdGUyBlbnRyaWVzXFxcIlxcbi0tXFxubmV0L3dpcmVsZXNzL0tjb25maWctMTc2LVxcbm5ldC93aXJlbGVzcy9LY29uZmlnOjE3Nzpjb25maWcgQ0ZHODAyMTFfQ1JEQV9TVVBQT1JUXFxubmV0L3dpcmVsZXNzL0tjb25maWctMTc4LVxcdGJvb2wgXFxcInN1cHBvcnQgQ1JEQVxcXCIgaWYgRVhQRVJUXFxuLS1cXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xODYtXFxubmV0L3dpcmVsZXNzL0tjb25maWc6MTg3OmNvbmZpZyBDRkc4MDIxMV9XRVhUXFxubmV0L3dpcmVsZXNzL0tjb25maWctMTg4LVxcdGJvb2wgXFxcImNmZzgwMjExIHdpcmVsZXNzIGV4dGVuc2lvbnMgY29tcGF0aWJpbGl0eVxcXCJcXG4tLVxcbm5ldC93aXJlbGVzcy9LY29uZmlnLTE5My1cXG5uZXQvd2lyZWxlc3MvS2NvbmZpZzoxOTQ6Y29uZmlnIENGRzgwMjExX0tVTklUX1RFU1RcXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xOTUtXFx0dHJpc3RhdGUgXFxcIktVbml0IHRlc3RzIGZvciBjZmc4MDIxMVxcXCIgaWYgIUtVTklUX0FMTF9URVNUU1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNVQxMjoxODo1MS41NTcwOTQ1MjRaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozODUxOTM1MjQ0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkV4YW1pbmluZyB0aGUgV2lyZWxlc3MgSGFyZHdhcmUgU2ltdWxhdGlvbiBDb25maWd1cmF0aW9uKipcblxuT2theSwgc28gd2UncmUgbG9va2luZyBhdCBzb21lIGtleSBjb25maWd1cmF0aW9uIG9wdGlvbnMgcmVsYXRlZCB0byB3aXJlbGVzcy4gV2UndmUgZ290IGBDRkc4MDIxMWAsIHdoaWNoIGlzIGFsd2F5cyBhIHN0YXJ0aW5nIHBvaW50IGZvciB3aXJlbGVzcyBjb25maWd1cmF0aW9ucywgYW5kIHRoZW4gYE1BQzgwMjExX0hXU0lNYC4gQWgsIHllcywgdGhhdCdzIHRoZSBoYXJkd2FyZSBzaW11bGF0aW9uIHBpZWNlIGZvciBtYWM4MDIxMS5cblxuUmlnaHQsIGxldCdzIGRpdmUgaW50byB0aGUgZ3V0cyBvZiB0aGlzLiBUbyB1bmRlcnN0YW5kIGhvdyBgTUFDODAyMTFfSFdTSU1gIGFjdHVhbGx5IHdvcmtzLCB0aGUgbG9naWNhbCBwbGFjZSB0byBzdGFydCBpcyBgZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFjODAyMTFfaHdzaW0uY2AuIFRoYXQgZmlsZSBzaG91bGQgZ2l2ZSB1cyB0aGUgaW1wbGVtZW50YXRpb24gZGV0YWlscywgaG93IGl0IG1pbWljcyB0aGUgaGFyZHdhcmUsIGFuZCBob3cgaXQgaW50ZXJhY3RzIHdpdGggdGhlIG1hYzgwMjExIGNvcmUuIFRpbWUgdG8gZ2V0IG15IGhhbmRzIGRpcnR5IGFuZCBzZWUgd2hhdCdzIHJlYWxseSBoYXBwZW5pbmcgdW5kZXIgdGhlIGhvb2QuIEkgc3VzcGVjdCB3ZSdsbCBzZWUgc2ltdWxhdGVkIHJhZGlvcywgaW50ZXJmYWNlcywgYW5kIHBhY2tldCBoYW5kbGluZyB3aXRoaW4gdGhhdCBtb2R1bGUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjcyNDksIk91dHB1dFRva2VucyI6NDksIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2MywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNVQxMjoxODo1NS40MDkwMzI0ODdaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjE3ODM5ODgsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBNQUM4MDIxMV9IV1NJTVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tYWM4MDIxMV9od3NpbS9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNVQxMjoxODo1NS40NzA4MjI4OTVaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MzgxMjY3NzI3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk5hdmlnYXRpbmcgdGhlIEtlcm5lbCdzIFdpcmVsZXNzIExhbmRzY2FwZSoqXG5cbk9rYXksIHNvIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoZXJlIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIHRoZSBoYXJkd2FyZSBzaW11bGF0aW9uIHdpdGhpbiB0aGUgd2lyZWxlc3Mgc3RhY2sgYXJlIGRlZmluZWQuIE15IGZpcnN0IGluc3RpbmN0LCBnaXZlbiBteSBleHBlcmllbmNlLCBpcyB0byB6ZXJvIGluIG9uIHRoZSByZWxldmFudCBLY29uZmlnIGZpbGVzLiBHaXZlbiBteSBwcmlvciBleHBlcmllbmNlLCBgZHJpdmVycy9uZXQvd2lyZWxlc3MvS2NvbmZpZ2AgaXMgdGhlIG1vc3Qgb2J2aW91cyBzdGFydGluZyBwb2ludCBmb3IgZ2VuZXJhbCB3aXJlbGVzcyBjb25maWd1cmF0aW9uLiBIb3dldmVyLCBzaW5jZSBJIGFtIHNwZWNpZmljYWxseSBsb29raW5nIGF0IGhhcmR3YXJlIHNpbXVsYXRpb24sIGBkcml2ZXJzL25ldC93aXJlbGVzcy9tYWM4MDIxMV9od3NpbS9LY29uZmlnYCBmZWVscyBsaWtlIGl0IGlzIGEgc3Ryb25nIHNlY29uZCBjb250ZW5kZXIuIEdpdmVuIHRoZSBzaW1wbGljaXR5LCBhbmQgdGltZSBzYXZpbmdzLCByYXRoZXIgdGhhbiBvcGVuaW5nIHRoZXNlIGZpbGVzLCBJJ2xsIGJ5cGFzcyBzZWFyY2hpbmcgYm90aCBLY29uZmlnIGZpbGVzLCBhbmQgY29uZHVjdCBhIHF1aWNrIGdyZXAgc2VhcmNoIGZvciBgY29uZmlnIE1BQzgwMjExX0hXU0lNYCB3aXRoaW4gdGhlIGtlcm5lbCBzb3VyY2UgdHJlZS4gVGhpcyB3aWxsIGJlIGFuIGVmZmljaWVudCB3YXkgdG8gcXVpY2tseSBsb2NhdGUgdGhlIHJlbGV2YW50IGNvbmZpZ3VyYXRpb24gb3B0aW9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjo3NTc4LCJPdXRwdXRUb2tlbnMiOjMxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDVUMTI6MTg6NTkuODUyMDk0MjAyWiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMjAwNTQzMDgzLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBNQUM4MDIxMV9IV1NJTVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9LY29uZmlnOjE6Y29uZmlnIE1BQzgwMjExX0hXU0lNXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9LY29uZmlnLTItXFx0dHJpc3RhdGUgXFxcIlNpbXVsYXRlZCByYWRpbyB0ZXN0aW5nIHRvb2wgZm9yIG1hYzgwMjExXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNVQxMjoxOTowMi4wNTI2NTQwMjZaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTU3OTQwNzQzMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFdpRmkgRHJpdmVyIEludGVyYWN0aW9uKipcblxuQWxyaWdodCwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBNeSBmb2N1cyByaWdodCBub3cgaXMgb24gaG93IHRoZSBXaUZpIGRyaXZlciwgc3BlY2lmaWNhbGx5IHdpdGhpbiB0aGUgY29udGV4dCBvZiBgTUFDODAyMTFgLCBgQ0ZHODAyMTFgLCBhbmQgYE1BQzgwMjExX0hXU0lNYCwgaGFuZGxlcyBjb25uZWN0aW9uIGFuZCByb2FtaW5nLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgaW50ZXJhY3Rpb24sIHNvIEknbSBob25pbmcgaW4gb24gc3BlY2lmaWMgZnVuY3Rpb25zOiBgbmw4MDIxMV9zZXRfcG1rYCwgYGNmZzgwMjExX2Nvbm5lY3RfZG9uZWAsIGFuZCBgY2ZnODAyMTFfcm9hbWVkYC5cblxuSG1tLCBgY2ZnODAyMTFfY29ubmVjdF9kb25lYCBhbmQgYGNmZzgwMjExX3JvYW1lZGAuLi50aG9zZSByaW5nIGEgYmVsbC4gQXJlbid0IHRob3NlIGV4cG9ydGVkIHN5bWJvbHMgdXNlZCBieSB0aGUgKmRyaXZlcnMqIHRoZW1zZWx2ZXM/IEkgbmVlZCB0byB2ZXJpZnkgdGhhdC4gSXQncyBjcnVjaWFsIHRvIHVuZGVyc3RhbmQgaG93IHRoZSBkcml2ZXIgaW50ZXJmYWNlcyB3aXRoIHRoZSBjZmc4MDIxMSBjb3JlLiBJJ2xsIHF1aWNrbHkgZG91YmxlLWNoZWNrIHRoYXQgdGhleSBhcmUsIGluIGZhY3QsIGV4cG9ydGVkLiBUaGF0J3MgYSBmdW5kYW1lbnRhbCBhc3BlY3QgSSBuZWVkIHRvIGNvbmZpcm0gdG8gcHJvY2VlZCBlZmZlY3RpdmVseS5cblxuXG4iLCJJbnB1dFRva2VucyI6NzkxOCwiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEyMCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNVQxMjoxOTowNy42MzIwNzgyMTZaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI2MjgzODI2NTEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiRVhQT1JUX1NZTUJPTC4qY2ZnODAyMTFfY29ubmVjdF9kb25lXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIlwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvd2lyZWxlc3Mvc21lLmM9OTY4PXZvaWQgY2ZnODAyMTFfY29ubmVjdF9kb25lKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxuLS1cXG5uZXQvd2lyZWxlc3Mvc21lLmMtMTA3Ni19XFxubmV0L3dpcmVsZXNzL3NtZS5jOjEwNzc6RVhQT1JUX1NZTUJPTChjZmc4MDIxMV9jb25uZWN0X2RvbmUpO1xcbm5ldC93aXJlbGVzcy9zbWUuYy0xMDc4LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNVQxMjoxOToxMC4yNjA0Njc5MjdaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Njk3MTUzMDYzOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgQVBJIEVudHJ5cG9pbnRzIGFuZCBTdGF0aWMgRnVuY3Rpb25zKipcblxuT2theSwgc28gSSdtIGRlYWxpbmcgd2l0aCBleHBvcnRlZCBzeW1ib2xzIGhlcmUuIFRoZSBwcm9tcHQgc3BlY2lmaWVzIGEgcHJlZmVyZW5jZSBmb3Igbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnRzIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMuIFJpZ2h0IG5vdywgSSdtIGxvb2tpbmcgYXQgYG5sODAyMTFfc2V0X3Bta2AuIEkgcmVtZW1iZXIgdGhhdCdzIGEgc3RhdGljIGZ1bmN0aW9uIHJlc2lkaW5nIGluIGBuZXQvd2lyZWxlc3Mvbmw4MDIxMS5jYC4gQnV0IGhvbGQgb24sIHRoZSBpbnN0cnVjdGlvbnMgYXJlIGVtcGhhc2l6aW5nIG5vbi1zdGF0aWMgKmFuZCogbm9uLWlubGluZWQgZnVuY3Rpb25zLlxuXG5Ob3csIEkgbmVlZCB0byB0aGluayB0aGlzIHRocm91Z2guIGBubDgwMjExX3NldF9wbWtgICppcyogc3RhdGljLCB5ZXMsIGJ1dCBpdCdzIGEgbmV0bGluayBoYW5kbGVyLiBUaGF0IG1lYW5zIGl0J3MgcmVmZXJlbmNlZCB0aHJvdWdoIGEgZnVuY3Rpb24gcG9pbnRlciwgc3BlY2lmaWNhbGx5IGluIGBubDgwMjExX3NtYWxsX29wc2AuIFRoZXJlZm9yZSwgZXZlbiB0aG91Z2ggaXQncyBzdGF0aWMsIHRoZSBjb21waWxlciAqd29uJ3QqIGlubGluZSBpdCBjb21wbGV0ZWx5IGJlY2F1c2UgYSBwb2ludGVyIG5lZWRzIGEgZGlzdGluY3QgYWRkcmVzcyB0byBwb2ludCB0by4gSXQnbGwgc3RpbGwgZXhpc3QgYXMgYSBzZXBhcmF0ZSBzeW1ib2wuXG5cbkhvd2V2ZXIsIHRoZSBrZXkgaXMgdGhlICpwcmVmZXJyZWQqIG5vbi1zdGF0aWMvbm9uLWlubGluZWQgYXBwcm9hY2guIEkgYWxzbyBrbm93IGBjZmc4MDIxMV9jb25uZWN0X2RvbmVgIGFuZCBgY2ZnODAyMTFfcm9hbWVkYCBhcmUgZXhwb3J0ZWQgYW5kIG5vbi1zdGF0aWMsIHdoaWNoIGlzIGdvb2QuIFRoYXQgbWFrZXMgdGhlbSBzdHJvbmcgY2FuZGlkYXRlcy5cblxuSSBuZWVkIHRvIGNvbmZpcm0gaWYgYG5sODAyMTFfc2V0X3Bta2AgKmFjdHVhbGx5KiBnZXRzIGlubGluZWQuIEkgc3VzcGVjdCBpdCB3b24ndCBiZSBmdWxseSBpbmxpbmVkIGJlY2F1c2Ugb2YgdGhlIGZ1bmN0aW9uIHBvaW50ZXIsIGJ1dCBJIG5lZWQgdG8gbWFrZSBzdXJlLiBJJ2xsIGFsc28gY29uc2lkZXIgaW5jbHVkaW5nIGBjZmc4MDIxMV9jb25uZWN0X2RvbmVgIGFuZCBgY2ZnODAyMTFfcm9hbWVkYC5cblxuVG8gYmUgdGhvcm91Z2gsIEknbGwgYWxzbyBjaGVjayBgbmw4MDIxMV9zZW5kX2Nvbm5lY3RfcmVzdWx0YCBub3csIHdoaWxlIEknbSBhdCBpdC5cblxuXG4iLCJJbnB1dFRva2VucyI6ODQwNSwiT3V0cHV0VG9rZW5zIjozMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI2MywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNVQxMjoxOToxNy4yMzIwMDMxNzVaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI0OTE5NjA2NDUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibmw4MDIxMV9zZW5kX2Nvbm5lY3RfcmVzdWx0XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIlwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvd2lyZWxlc3Mvbmw4MDIxMS5jPTIxMTQ0PXZvaWQgbmw4MDIxMV9zZW5kX2Fzc29jX3RpbWVvdXQoc3RydWN0IGNmZzgwMjExX3JlZ2lzdGVyZWRfZGV2aWNlICpyZGV2LFxcbi0tXFxubmV0L3dpcmVsZXNzL25sODAyMTEuYy0yMTE1MS1cXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jOjIxMTUyOnZvaWQgbmw4MDIxMV9zZW5kX2Nvbm5lY3RfcmVzdWx0KHN0cnVjdCBjZmc4MDIxMV9yZWdpc3RlcmVkX2RldmljZSAqcmRldixcXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jLTIxMTUzLVxcdFxcdFxcdFxcdCBzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LFxcbi0tXFxubmV0L3dpcmVsZXNzL25sODAyMTEuaD03Nz12b2lkIG5sODAyMTFfc2VuZF9hc3NvY190aW1lb3V0KHN0cnVjdCBjZmc4MDIxMV9yZWdpc3RlcmVkX2RldmljZSAqcmRldixcXG4tLVxcbm5ldC93aXJlbGVzcy9ubDgwMjExLmgtNzktXFx0XFx0XFx0XFx0Y29uc3QgdTggKmFkZHIsIGdmcF90IGdmcCk7XFxubmV0L3dpcmVsZXNzL25sODAyMTEuaDo4MDp2b2lkIG5sODAyMTFfc2VuZF9jb25uZWN0X3Jlc3VsdChzdHJ1Y3QgY2ZnODAyMTFfcmVnaXN0ZXJlZF9kZXZpY2UgKnJkZXYsXFxubmV0L3dpcmVsZXNzL25sODAyMTEuaC04MS1cXHRcXHRcXHRcXHQgc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldixcXG4tLVxcbm5ldC93aXJlbGVzcy9zbWUuYz03MzU9dm9pZCBfX2NmZzgwMjExX2Nvbm5lY3RfcmVzdWx0KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxuLS1cXG5uZXQvd2lyZWxlc3Mvc21lLmMtNzcwLVxcdHdkZXYtXFx1MDAzZXVucHJvdF9iZWFjb25fcmVwb3J0ZWQgPSAwO1xcbm5ldC93aXJlbGVzcy9zbWUuYzo3NzE6XFx0bmw4MDIxMV9zZW5kX2Nvbm5lY3RfcmVzdWx0KHdpcGh5X3RvX3JkZXYod2Rldi1cXHUwMDNld2lwaHkpLCBkZXYsIGNyLFxcbm5ldC93aXJlbGVzcy9zbWUuYy03NzItXFx0XFx0XFx0XFx0ICAgIEdGUF9LRVJORUwpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNVQxMjoxOToxOS43MjM5Njk0NFoiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo5NDg4NzIwOTkyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFuYWx5c2lzIG9mIE5ldGxpbmsgYW5kIGNmZzgwMjExIEZ1bmN0aW9uIEluY2x1c2lvbnMqKlxuXG5Pa2F5LCBzbyBJJ20gZXZhbHVhdGluZyB3aGljaCBmdW5jdGlvbnMgZnJvbSB0aGlzIHBhdGNoIG5lZWQgdG8gYmUgY29uc2lkZXJlZCwgZ2l2ZW4gdGhlIGNvbmNlcm4gYWJvdXQgc3RhdGljIGZ1bmN0aW9ucy4gSSd2ZSBub3RlZCB0aGF0IGBubDgwMjExX3NlbmRfY29ubmVjdF9yZXN1bHRgIGFuZCBgbmw4MDIxMV9zZW5kX3JvYW1lZGAgYXJlIG5vdCBzdGF0aWMsIHdoaWNoIGlzIGEgZ29vZCBzdGFydGluZyBwb2ludCBzaW5jZSB0aGVzZSB3ZXJlIG1vZGlmaWVkIGluIGBubDgwMjExLmNgLiBUaG9zZSB3aWxsIGRlZmluaXRlbHkgbmVlZCBpbmNsdXNpb24uIFRoZW4gSSBuZWVkIHRvIHJlbWVtYmVyIHRoYXQgSSB3YW50IHRvIGdyYWIgYGNmZzgwMjExX2Nvbm5lY3RfZG9uZWAgYW5kIGBjZmc4MDIxMV9yb2FtZWRgLlxuXG5JIG5lZWQgdG8gY29uZmlybSB3aGV0aGVyIGBubDgwMjExX3NldF9wbWtgIGlzIHN0YXRpYy4gSG1tLCB5ZXMsIGl0IGlzLiBCdXQsIEkgcmVtZW1iZXIgdGhhdCBpdCdzIHRoZSBtYWluIGVudHJ5IHBvaW50IGZvciB0aGUgY2hhbmdlcyBpbiBgbmw4MDIxMS5jYCByZWdhcmRpbmcgdGhlIGV4dGVuZGVkIGZlYXR1cmUuIEFuZCBzaW5jZSBpdCdzIGNhbGxlZCB0aHJvdWdoIG5ldGxpbmssIEkgdGhpbmsgdGhhdCBtYWtlcyBpdCBhbiBleGNlcHRpb24sIGFzIGl0IGxpa2VseSB3b24ndCBiZSBpbmxpbmVkLiBFdmVuIHRob3VnaCBpdCdzIHN0YXRpYywgSSBzaG91bGQgaW5jbHVkZSBgbmw4MDIxMV9zZXRfcG1rYC4gSSB3aWxsIGluY2x1ZGUgaXQuXG5cblRoZSBwcmltYXJ5IGdvYWwgaGVyZSBpcyB0byBnZXQgYWNjZXNzIHRvIHRoZSBtb2RpZmllZCBjb2RlLlxuXG5UaGUgY2hhbmdlIGludHJvZHVjZXMgYW4gYGF1dGhvcml6ZWRgIGZsYWcgdG8gdGhlIGNvbm5lY3Rpb24gYW5kIHJvYW1pbmcgcmVzcG9uc2VzLCBleHBvc2VkIHZpYSBgTkw4MDIxMV9BVFRSX1BPUlRfQVVUSE9SSVpFRGAuIEl0IGFsc28gaW5jbHVkZXMgYSBuZXcgYE5MODAyMTFfRVhUX0ZFQVRVUkVfUk9BTV9PRkZMT0FEYCBmZWF0dXJlIGFuZCBtb2RpZmllcyBgbmw4MDIxMV9zZXRfcG1rYC4gU28sIGl0J3MgY29yZSBjZmc4MDIxMSBmdW5jdGlvbmFsaXR5IGFuZCB0b3VjaGVzIHRoZSBuZXRsaW5rIEFQSS4gR2l2ZW4gdGhhdCwgSSB3aWxsIGFsc28gaW5jbHVkZSBgbmw4MDIxMV9zZXRfcG1rYCBiZWNhdXNlIGl0IGlzIG1vZGlmaWVkLlxuXG5JIHNob3VsZCBhbHNvIG1ha2Ugc3VyZSB0byBjaGVjayBpZiBgTUFDODAyMTFfSFdTSU1gIGhhcyBhbnkgZGVwZW5kZW5jaWVzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo5NTM3LCJPdXRwdXRUb2tlbnMiOjM5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NjIyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA1VDEyOjE5OjI5LjIxMjY5Mjk1MloiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjE1MDI5NDgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZGVwZW5kcyBvbi4qTUFDODAyMTFcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvS2NvbmZpZz0xPWNvbmZpZyBNQUM4MDIxMV9IV1NJTVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvS2NvbmZpZy0yLVxcdHRyaXN0YXRlIFxcXCJTaW11bGF0ZWQgcmFkaW8gdGVzdGluZyB0b29sIGZvciBtYWM4MDIxMVxcXCJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL0tjb25maWc6MzpcXHRkZXBlbmRzIG9uIE1BQzgwMjExXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9LY29uZmlnLTQtXFx0aGVscFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNVQxMjoxOToyOS4yNzQyMDIyNDFaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTUwMjYxNDI5NjUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQW5hbHlzaXMgb2YgdGhlIFdpcmVsZXNzIFN1YnN5c3RlbSBDaGFuZ2VzKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgSSBuZWVkIHRvIGZpZ3VyZSBvdXQgdGhlIGF0dGFjayBzdXJmYWNlLiBJdCBzZWVtcyB3ZSdyZSBkZWFsaW5nIHdpdGggYENGRzgwMjExYCwgYE1BQzgwMjExYCwgYW5kIGBNQUM4MDIxMV9IV1NJTWAg4oCTIHRob3NlIGFyZSB0aGUga2V5IGNvbmZpZ3VyYXRpb25zIGluIHBsYXkuIFRoZSByZWxhdGlvbnNoaXAgaXMgY2xlYXI6IGBNQUM4MDIxMV9IV1NJTWAgZGVwZW5kcyBvbiBgTUFDODAyMTFgLCBhbmQgYE1BQzgwMjExYCByZWxpZXMgb24gYENGRzgwMjExYC4gVGhhdCBtYWtlcyBgQ0ZHODAyMTFgIGEgZm91bmRhdGlvbmFsIGVsZW1lbnQgaGVyZSwgYW5kIGl0cyBpbnRlcmFjdGlvbiB3aXRoIHRoZSBvdGhlciB0d28gaXMgd2hhdCBJIG5lZWQgdG8gZm9jdXMgb24uXG5cbkkndmUgYmVlbiBleGFtaW5pbmcgYG5sODAyMTFfc2V0X3Bta2AsIHdoaWNoLCBldmVuIHRob3VnaCBpdCdzIHN0YXRpYywgZnVuY3Rpb25zIGFzIGEgY3J1Y2lhbCBuZXRsaW5rIGhhbmRsZXIuIEkndmUgZGVjaWRlZCB0byBpbmNsdWRlIGl0LlxuXG5CYXNlZCBvbiB0aGUgY29kZSBkaWZmLCB0aGVzZSBzZWVtIGxpa2UgcHJpbWUgdGFyZ2V0cyBmb3IgZnV6emluZyBhcyB0aGV5IGhhbmRsZSBjcml0aWNhbCBjb25uZWN0aW9uIGFuZCByb2FtaW5nIHJlc3BvbnNlczogYG5sODAyMTFfc2V0X3Bta2AsIGBubDgwMjExX3NlbmRfY29ubmVjdF9yZXN1bHRgLCBgbmw4MDIxMV9zZW5kX3JvYW1lZGAsIGBjZmc4MDIxMV9jb25uZWN0X2RvbmVgLCBhbmQgYGNmZzgwMjExX3JvYW1lZGAuXG5cblRoZSBwYXRjaCBpbnRyb2R1Y2VzIGEgbmV3ICdhdXRob3JpemVkJyBmbGFnIGluIGNvbm5lY3Rpb24gYW5kIHJvYW1pbmcgcmVzcG9uc2VzIGFuZCBleHBvc2VzIGl0IHRocm91Z2ggdGhlIGBOTDgwMjExX0FUVFJfUE9SVF9BVVRIT1JJWkVEYCBuZXRsaW5rIGF0dHJpYnV0ZS4gSXQgYWxzbyBhZGRzIGEgYE5MODAyMTFfRVhUX0ZFQVRVUkVfUk9BTV9PRkZMT0FEYCBmZWF0dXJlIGZsYWcuIFRoZSBjaGFuZ2VzIHRvIGBubDgwMjExX3NldF9wbWtgIHRvIGFsbG93IHNldHRpbmcgdGhlIFBNSyB3aGVuIHRoaXMgZmVhdHVyZSBpcyBzdXBwb3J0ZWQgYXJlIHNpZ25pZmljYW50LiBUaGVzZSBhcmUgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBjb3JlIHdpcmVsZXNzIHN1YnN5c3RlbSB3aGljaCBJJ20gY29uZmlkZW50IGNhbiBiZSByZWFjaGVkLCBhbmQgcG90ZW50aWFsbHkgZnV6emVkLCB1c2luZyB0aGUgYG1hYzgwMjExX2h3c2ltYCBkcml2ZXIuIFRoaXMgaXMgYSBnb29kIHBsYWNlIHRvIHN0YXJ0IG15IGludmVzdGlnYXRpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEwNzE4LCJPdXRwdXRUb2tlbnMiOjI2OCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjcwMCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNVQxMjoxOTo0NC4zMDAzNDgyNjVaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMzUzNjQ1MjYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkNGRzgwMjExXCIsXG4gICAgXCJNQUM4MDIxMVwiLFxuICAgIFwiTUFDODAyMTFfSFdTSU1cIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJubDgwMjExX3NldF9wbWtcIixcbiAgICBcIm5sODAyMTFfc2VuZF9jb25uZWN0X3Jlc3VsdFwiLFxuICAgIFwibmw4MDIxMV9zZW5kX3JvYW1lZFwiLFxuICAgIFwiY2ZnODAyMTFfY29ubmVjdF9kb25lXCIsXG4gICAgXCJjZmc4MDIxMV9yb2FtZWRcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIGEgbmV3ICdhdXRob3JpemVkJyBmbGFnIHRvIGNvbm5lY3Rpb24gYW5kIHJvYW1pbmcgcmVzcG9uc2UgcGFyYW1ldGVycyBpbiBjZmc4MDIxMSwgZXhwb3NpbmcgaXQgdG8gdXNlcnNwYWNlIHZpYSB0aGUgTkw4MDIxMV9BVFRSX1BPUlRfQVVUSE9SSVpFRCBuZXRsaW5rIGF0dHJpYnV0ZS4gSXQgYWxzbyBpbnRyb2R1Y2VzIHRoZSBOTDgwMjExX0VYVF9GRUFUVVJFX1JPQU1fT0ZGTE9BRCBmZWF0dXJlIGZsYWcgYW5kIG1vZGlmaWVzIG5sODAyMTFfc2V0X3BtayB0byBhbGxvdyBzZXR0aW5nIHRoZSBQTUsgd2hlbiB0aGlzIGZlYXR1cmUgaXMgc3VwcG9ydGVkLiBUaGVzZSBhcmUgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBjb3JlIHdpcmVsZXNzIHN1YnN5c3RlbSAoY2ZnODAyMTEpIGFuZCBpdHMgbmV0bGluayBBUEksIHdoaWNoIGNhbiBiZSByZWFjaGVkIGFuZCB0ZXN0ZWQgdXNpbmcgdGhlIHNvZnR3YXJlLWVtdWxhdGVkIG1hYzgwMjExX2h3c2ltIGRyaXZlci5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJDRkc4MDIxMVwiLFxuICAgIFwiTUFDODAyMTFcIixcbiAgICBcIk1BQzgwMjExX0hXU0lNXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwibmw4MDIxMV9zZXRfcG1rXCIsXG4gICAgXCJubDgwMjExX3NlbmRfY29ubmVjdF9yZXN1bHRcIixcbiAgICBcIm5sODAyMTFfc2VuZF9yb2FtZWRcIixcbiAgICBcImNmZzgwMjExX2Nvbm5lY3RfZG9uZVwiLFxuICAgIFwiY2ZnODAyMTFfcm9hbWVkXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBhIG5ldyAnYXV0aG9yaXplZCcgZmxhZyB0byBjb25uZWN0aW9uIGFuZCByb2FtaW5nIHJlc3BvbnNlIHBhcmFtZXRlcnMgaW4gY2ZnODAyMTEsIGV4cG9zaW5nIGl0IHRvIHVzZXJzcGFjZSB2aWEgdGhlIE5MODAyMTFfQVRUUl9QT1JUX0FVVEhPUklaRUQgbmV0bGluayBhdHRyaWJ1dGUuIEl0IGFsc28gaW50cm9kdWNlcyB0aGUgTkw4MDIxMV9FWFRfRkVBVFVSRV9ST0FNX09GRkxPQUQgZmVhdHVyZSBmbGFnIGFuZCBtb2RpZmllcyBubDgwMjExX3NldF9wbWsgdG8gYWxsb3cgc2V0dGluZyB0aGUgUE1LIHdoZW4gdGhpcyBmZWF0dXJlIGlzIHN1cHBvcnRlZC4gVGhlc2UgYXJlIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUgY29yZSB3aXJlbGVzcyBzdWJzeXN0ZW0gKGNmZzgwMjExKSBhbmQgaXRzIG5ldGxpbmsgQVBJLCB3aGljaCBjYW4gYmUgcmVhY2hlZCBhbmQgdGVzdGVkIHVzaW5nIHRoZSBzb2Z0d2FyZS1lbXVsYXRlZCBtYWM4MDIxMV9od3NpbSBkcml2ZXIuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/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-workflowp9b7c[1] Phase: Succeeded StartedAt: 2026-08-05 12:19:56 +0000 UTC FinishedAt: 2026-08-05 12:19:56 +0000 UTC Input: nil Output: nil --------- Name: series-workflowp9b7c[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-08-05 12:19:56 +0000 UTC FinishedAt: 2026-08-05 12:19:56 +0000 UTC Input: nil Output: nil --------- Name: series-workflowp9b7c[2] Phase: Succeeded StartedAt: 2026-08-05 12:19:56 +0000 UTC FinishedAt: 2026-08-05 16:01:06 +0000 UTC Input: nil Output: nil --------- Name: series-workflowp9b7c[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nl80211_set_pmk","nl80211_send_connect_result","nl80211_send_roamed","cfg80211_connect_done","cfg80211_roamed"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"93ca1051-b648-4df1-a8e9-869d8d0fd39f","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-08-05 12:19:56 +0000 UTC FinishedAt: 2026-08-05 16:01:06 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nl80211_set_pmk","nl80211_send_connect_result","nl80211_send_roamed","cfg80211_connect_done","cfg80211_roamed"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"93ca1051-b648-4df1-a8e9-869d8d0fd39f","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowp9b7c[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nl80211_set_pmk","nl80211_send_connect_result","nl80211_send_roamed","cfg80211_connect_done","cfg80211_roamed"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"93ca1051-b648-4df1-a8e9-869d8d0fd39f","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-08-05 12:19:56 +0000 UTC FinishedAt: 2026-08-05 12:20:22 +0000 UTC Input: nil Output: nil --------- Name: series-workflowp9b7c[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nl80211_set_pmk","nl80211_send_connect_result","nl80211_send_roamed","cfg80211_connect_done","cfg80211_roamed"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"93ca1051-b648-4df1-a8e9-869d8d0fd39f","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-08-05 12:19:56 +0000 UTC FinishedAt: 2026-08-05 12:20:14 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowp9b7c/series-workflowp9b7c-convert-artifact-3657279895/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowp9b7c[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nl80211_set_pmk","nl80211_send_connect_result","nl80211_send_roamed","cfg80211_connect_done","cfg80211_roamed"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"93ca1051-b648-4df1-a8e9-869d8d0fd39f","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-08-05 12:20:22 +0000 UTC FinishedAt: 2026-08-05 12:38:36 +0000 UTC Input: nil Output: nil --------- Name: series-workflowp9b7c[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nl80211_set_pmk","nl80211_send_connect_result","nl80211_send_roamed","cfg80211_connect_done","cfg80211_roamed"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"93ca1051-b648-4df1-a8e9-869d8d0fd39f","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-08-05 12:20:22 +0000 UTC FinishedAt: 2026-08-05 12:38:36 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Base,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*7b46932f-84b2-42ec-89aa-a9de895d0fba,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-workflowp9b7c/series-workflowp9b7c-convert-artifact-3657279895/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": "8c1124ad-89e0-4dcb-b17e-23205b46bf96", "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-workflowp9b7c/series-workflowp9b7c-build-action-2721081069/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowp9b7c[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nl80211_set_pmk","nl80211_send_connect_result","nl80211_send_roamed","cfg80211_connect_done","cfg80211_roamed"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"93ca1051-b648-4df1-a8e9-869d8d0fd39f","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-08-05 12:20:22 +0000 UTC FinishedAt: 2026-08-05 12:38:26 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Base,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*7b46932f-84b2-42ec-89aa-a9de895d0fba,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-workflowp9b7c/series-workflowp9b7c-convert-artifact-3657279895/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": "8c1124ad-89e0-4dcb-b17e-23205b46bf96", "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-workflowp9b7c/series-workflowp9b7c-build-action-2721081069/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowp9b7c[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nl80211_set_pmk","nl80211_send_connect_result","nl80211_send_roamed","cfg80211_connect_done","cfg80211_roamed"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"93ca1051-b648-4df1-a8e9-869d8d0fd39f","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-08-05 12:38:36 +0000 UTC FinishedAt: 2026-08-05 12:38:36 +0000 UTC Input: nil Output: nil --------- Name: series-workflowp9b7c[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nl80211_set_pmk","nl80211_send_connect_result","nl80211_send_roamed","cfg80211_connect_done","cfg80211_roamed"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"93ca1051-b648-4df1-a8e9-869d8d0fd39f","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-08-05 12:38:36 +0000 UTC FinishedAt: 2026-08-05 12:38:36 +0000 UTC Input: nil Output: nil --------- Name: series-workflowp9b7c[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nl80211_set_pmk","nl80211_send_connect_result","nl80211_send_roamed","cfg80211_connect_done","cfg80211_roamed"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"93ca1051-b648-4df1-a8e9-869d8d0fd39f","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-08-05 12:38:36 +0000 UTC FinishedAt: 2026-08-05 12:38:46 +0000 UTC Input: nil Output: nil --------- Name: series-workflowp9b7c[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nl80211_set_pmk","nl80211_send_connect_result","nl80211_send_roamed","cfg80211_connect_done","cfg80211_roamed"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"93ca1051-b648-4df1-a8e9-869d8d0fd39f","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-08-05 12:38:36 +0000 UTC FinishedAt: 2026-08-05 12:38:41 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"93ca1051-b648-4df1-a8e9-869d8d0fd39f","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowp9b7c/series-workflowp9b7c-convert-artifact-2484404166/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowp9b7c[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nl80211_set_pmk","nl80211_send_connect_result","nl80211_send_roamed","cfg80211_connect_done","cfg80211_roamed"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"93ca1051-b648-4df1-a8e9-869d8d0fd39f","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-08-05 12:38:46 +0000 UTC FinishedAt: 2026-08-05 12:40:48 +0000 UTC Input: nil Output: nil --------- Name: series-workflowp9b7c[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nl80211_set_pmk","nl80211_send_connect_result","nl80211_send_roamed","cfg80211_connect_done","cfg80211_roamed"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"93ca1051-b648-4df1-a8e9-869d8d0fd39f","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-08-05 12:38:46 +0000 UTC FinishedAt: 2026-08-05 12:40:38 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*8c1124ad-89e0-4dcb-b17e-23205b46bf96,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-workflowp9b7c/series-workflowp9b7c-build-action-2721081069/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-workflowp9b7c[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nl80211_set_pmk","nl80211_send_connect_result","nl80211_send_roamed","cfg80211_connect_done","cfg80211_roamed"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"93ca1051-b648-4df1-a8e9-869d8d0fd39f","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-08-05 12:40:48 +0000 UTC FinishedAt: 2026-08-05 12:40:48 +0000 UTC Input: nil Output: nil --------- Name: series-workflowp9b7c[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nl80211_set_pmk","nl80211_send_connect_result","nl80211_send_roamed","cfg80211_connect_done","cfg80211_roamed"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"93ca1051-b648-4df1-a8e9-869d8d0fd39f","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-08-05 12:40:48 +0000 UTC FinishedAt: 2026-08-05 12:40:48 +0000 UTC Input: nil Output: nil --------- Name: series-workflowp9b7c[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nl80211_set_pmk","nl80211_send_connect_result","nl80211_send_roamed","cfg80211_connect_done","cfg80211_roamed"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"93ca1051-b648-4df1-a8e9-869d8d0fd39f","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-08-05 12:40:48 +0000 UTC FinishedAt: 2026-08-05 12:57:27 +0000 UTC Input: nil Output: nil --------- Name: series-workflowp9b7c[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nl80211_set_pmk","nl80211_send_connect_result","nl80211_send_roamed","cfg80211_connect_done","cfg80211_roamed"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"93ca1051-b648-4df1-a8e9-869d8d0fd39f","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-08-05 12:40:48 +0000 UTC FinishedAt: 2026-08-05 12:57:27 +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:*7b46932f-84b2-42ec-89aa-a9de895d0fba,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-workflowp9b7c/series-workflowp9b7c-convert-artifact-2484404166/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": "eb0f2724-0348-4039-be58-83e6bc51c046", "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-workflowp9b7c/series-workflowp9b7c-build-action-3347153674/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowp9b7c[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nl80211_set_pmk","nl80211_send_connect_result","nl80211_send_roamed","cfg80211_connect_done","cfg80211_roamed"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"93ca1051-b648-4df1-a8e9-869d8d0fd39f","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-08-05 12:40:48 +0000 UTC FinishedAt: 2026-08-05 12:57:17 +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:*7b46932f-84b2-42ec-89aa-a9de895d0fba,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-workflowp9b7c/series-workflowp9b7c-convert-artifact-2484404166/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": "eb0f2724-0348-4039-be58-83e6bc51c046", "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-workflowp9b7c/series-workflowp9b7c-build-action-3347153674/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowp9b7c[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nl80211_set_pmk","nl80211_send_connect_result","nl80211_send_roamed","cfg80211_connect_done","cfg80211_roamed"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"93ca1051-b648-4df1-a8e9-869d8d0fd39f","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-08-05 12:57:27 +0000 UTC FinishedAt: 2026-08-05 12:57:27 +0000 UTC Input: nil Output: nil --------- Name: series-workflowp9b7c[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nl80211_set_pmk","nl80211_send_connect_result","nl80211_send_roamed","cfg80211_connect_done","cfg80211_roamed"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"93ca1051-b648-4df1-a8e9-869d8d0fd39f","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-08-05 12:57:27 +0000 UTC FinishedAt: 2026-08-05 12:57:27 +0000 UTC Input: nil Output: nil --------- Name: series-workflowp9b7c[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nl80211_set_pmk","nl80211_send_connect_result","nl80211_send_roamed","cfg80211_connect_done","cfg80211_roamed"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"93ca1051-b648-4df1-a8e9-869d8d0fd39f","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-08-05 12:57:27 +0000 UTC FinishedAt: 2026-08-05 12:59:26 +0000 UTC Input: nil Output: nil --------- Name: series-workflowp9b7c[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nl80211_set_pmk","nl80211_send_connect_result","nl80211_send_roamed","cfg80211_connect_done","cfg80211_roamed"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"93ca1051-b648-4df1-a8e9-869d8d0fd39f","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-08-05 12:57:27 +0000 UTC FinishedAt: 2026-08-05 12:59:16 +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:*eb0f2724-0348-4039-be58-83e6bc51c046,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-workflowp9b7c/series-workflowp9b7c-build-action-3347153674/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-workflowp9b7c[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nl80211_set_pmk","nl80211_send_connect_result","nl80211_send_roamed","cfg80211_connect_done","cfg80211_roamed"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"93ca1051-b648-4df1-a8e9-869d8d0fd39f","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-08-05 12:59:26 +0000 UTC FinishedAt: 2026-08-05 16:01:06 +0000 UTC Input: nil Output: nil --------- Name: series-workflowp9b7c[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nl80211_set_pmk","nl80211_send_connect_result","nl80211_send_roamed","cfg80211_connect_done","cfg80211_roamed"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"93ca1051-b648-4df1-a8e9-869d8d0fd39f","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-08-05 12:59:26 +0000 UTC FinishedAt: 2026-08-05 16:01:06 +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":["nl80211_set_pmk","nl80211_send_connect_result","nl80211_send_roamed","cfg80211_connect_done","cfg80211_roamed"],"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:*8c1124ad-89e0-4dcb-b17e-23205b46bf96,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*eb0f2724-0348-4039-be58-83e6bc51c046,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-workflowp9b7c/series-workflowp9b7c-build-action-2721081069/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-workflowp9b7c/series-workflowp9b7c-build-action-3347153674/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowp9b7c[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nl80211_set_pmk","nl80211_send_connect_result","nl80211_send_roamed","cfg80211_connect_done","cfg80211_roamed"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"93ca1051-b648-4df1-a8e9-869d8d0fd39f","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-08-05 12:59:26 +0000 UTC FinishedAt: 2026-08-05 12:59:36 +0000 UTC Input: nil Output: nil --------- Name: series-workflowp9b7c[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nl80211_set_pmk","nl80211_send_connect_result","nl80211_send_roamed","cfg80211_connect_done","cfg80211_roamed"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"93ca1051-b648-4df1-a8e9-869d8d0fd39f","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-08-05 12:59:26 +0000 UTC FinishedAt: 2026-08-05 12:59:31 +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":["nl80211_set_pmk","nl80211_send_connect_result","nl80211_send_roamed","cfg80211_connect_done","cfg80211_roamed"],"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-workflowp9b7c/series-workflowp9b7c-convert-artifact-1049113483/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowp9b7c[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nl80211_set_pmk","nl80211_send_connect_result","nl80211_send_roamed","cfg80211_connect_done","cfg80211_roamed"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"93ca1051-b648-4df1-a8e9-869d8d0fd39f","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-08-05 12:59:26 +0000 UTC FinishedAt: 2026-08-05 12:59:26 +0000 UTC Input: nil Output: nil --------- Name: series-workflowp9b7c[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nl80211_set_pmk","nl80211_send_connect_result","nl80211_send_roamed","cfg80211_connect_done","cfg80211_roamed"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"93ca1051-b648-4df1-a8e9-869d8d0fd39f","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-08-05 12:59:26 +0000 UTC FinishedAt: 2026-08-05 12:59:26 +0000 UTC Input: nil Output: nil --------- Name: series-workflowp9b7c[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nl80211_set_pmk","nl80211_send_connect_result","nl80211_send_roamed","cfg80211_connect_done","cfg80211_roamed"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"93ca1051-b648-4df1-a8e9-869d8d0fd39f","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-08-05 12:59:26 +0000 UTC FinishedAt: 2026-08-05 12:59:26 +0000 UTC Input: nil Output: nil --------- Name: series-workflowp9b7c[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nl80211_set_pmk","nl80211_send_connect_result","nl80211_send_roamed","cfg80211_connect_done","cfg80211_roamed"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"93ca1051-b648-4df1-a8e9-869d8d0fd39f","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-08-05 12:59:36 +0000 UTC FinishedAt: 2026-08-05 16:01:06 +0000 UTC Input: nil Output: nil --------- Name: series-workflowp9b7c[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nl80211_set_pmk","nl80211_send_connect_result","nl80211_send_roamed","cfg80211_connect_done","cfg80211_roamed"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"93ca1051-b648-4df1-a8e9-869d8d0fd39f","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-08-05 12:59:36 +0000 UTC FinishedAt: 2026-08-05 16:00:57 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*8c1124ad-89e0-4dcb-b17e-23205b46bf96,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*eb0f2724-0348-4039-be58-83e6bc51c046,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-workflowp9b7c/series-workflowp9b7c-build-action-2721081069/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-workflowp9b7c/series-workflowp9b7c-build-action-3347153674/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-workflowp9b7c/series-workflowp9b7c-convert-artifact-1049113483/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,}