Name: series-workflowwwthk Phase: Succeeded StartedAt: 2026-07-22 17:36:25 +0000 UTC FinishedAt: 2026-07-22 22:38:48 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwwthk[0] Phase: Succeeded StartedAt: 2026-07-22 17:36:25 +0000 UTC FinishedAt: 2026-07-22 17:53:29 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwwthk[0].run-triage Phase: Succeeded StartedAt: 2026-07-22 17:36:25 +0000 UTC FinishedAt: 2026-07-22 17:53:29 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "bpf-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git", "commit_hash": "dc59e4fea9d83f03bad6bddf3fa2e52491777482", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "MAC80211" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "bpf-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git", "commit_hash": "dc59e4fea9d83f03bad6bddf3fa2e52491777482", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "MAC80211" ], "series_id": "f8ac1f48-e023-4ce5-93cc-375ffa07b351" }, "track": "KASAN", "fuzz": { "focus": null, "focus_symbols": [ "sta_apply_auth_flags", "sta_apply_parameters", "ieee80211_add_station", "ieee80211_change_station" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIyIDE3OjUyPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O01BQzgwMjExJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7c3RhX2FwcGx5X2F1dGhfZmxhZ3MmIzM0OywKICAgICYjMzQ7c3RhX2FwcGx5X3BhcmFtZXRlcnMmIzM0OywKICAgICYjMzQ7aWVlZTgwMjExX2FkZF9zdGF0aW9uJiMzNDssCiAgICAmIzM0O2llZWU4MDIxMV9jaGFuZ2Vfc3RhdGlvbiYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIGEgdmFsaWRhdGlvbiBjaGVjayBpbiBgc3RhX2FwcGx5X2F1dGhfZmxhZ3NgIHRvIHByZXZlbnQgYW4gaW52YWxpZCBzdGF0ZSB3aGVuIHJhdGUgY29udHJvbCBpcyBub3QgaW5pdGlhbGl6ZWQgZm9yIG5vbi1NTEQgaW50ZXJmYWNlcy4gVGhpcyBpcyByZWFjaGFibGUgdmlhIG5sODAyMTEgY29tbWFuZHMgKGUuZy4sIE5FV19TVEFUSU9OLCBTRVRfU1RBVElPTikgYW5kIG1vZGlmaWVzIGNvcmUgbWFjODAyMTEgbG9naWMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjIgMTc6NTI8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCBiNzMzNzRkZjM4NDNhODM5OGVhMjQ1MThhMTMzMTc2MDI2OGE5NTBiXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFdlZCBKdWwgMjIgMTc6NTI6MTggMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbmV0L21hYzgwMjExL2NmZy5jIGIvbmV0L21hYzgwMjExL2NmZy5jXG5pbmRleCAzYjU4YWY1OWY3ZTQyOS4uODMwYzlmYzk1ZGYyMjggMTAwNjQ0XG4tLS0gYS9uZXQvbWFjODAyMTEvY2ZnLmNcbiYjNDM7JiM0MzsmIzQzOyBiL25ldC9tYWM4MDIxMS9jZmcuY1xuQEAgLTIxNDgsOCAmIzQzOzIxNDgsMTMgQEAgc3RhdGljIGludCBzdGFfYXBwbHlfYXV0aF9mbGFncyhzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbCxcbiBcdFx0ICogd2VsbC4gU29tZSBkcml2ZXJzIHJlcXVpcmUgcmF0ZSBjb250cm9sIGluaXRpYWxpemVkXG4gXHRcdCAqIGJlZm9yZSBkcnZfc3RhX3N0YXRlKCkgaXMgY2FsbGVkLlxuIFx0XHQgKi9cbi1cdFx0aWYgKCF0ZXN0X3N0YV9mbGFnKHN0YSwgV0xBTl9TVEFfUkFURV9DT05UUk9MKSlcbiYjNDM7XHRcdGlmICghdGVzdF9zdGFfZmxhZyhzdGEsIFdMQU5fU1RBX1JBVEVfQ09OVFJPTCkpIHtcbiYjNDM7XHRcdFx0aWYgKCFpZWVlODAyMTFfdmlmX2lzX21sZChcdTAwMjZzdGEtXHUwMDNlc2RhdGEtXHUwMDNldmlmKSBcdTAwMjZcdTAwMjZcbiYjNDM7XHRcdFx0ICAgICFyY3VfYWNjZXNzX3BvaW50ZXIoc3RhLVx1MDAzZXNkYXRhLVx1MDAzZXZpZi5ic3NfY29uZi5jaGFuY3R4X2NvbmYpKVxuJiM0MztcdFx0XHRcdHJldHVybiAtRUlOVkFMO1xuJiM0MztcbiBcdFx0XHRyYXRlX2NvbnRyb2xfcmF0ZV9pbml0X2FsbF9saW5rcyhzdGEpO1xuJiM0MztcdFx0fVxuIFxuIFx0XHRyZXQgPSBzdGFfaW5mb19tb3ZlX3N0YXRlKHN0YSwgSUVFRTgwMjExX1NUQV9BU1NPQyk7XG4gXHRcdGlmIChyZXQpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjIgMTc6NTI8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O01BQzgwMjExJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7c3RhX2FwcGx5X2F1dGhfZmxhZ3MmIzM0OywKICAgICYjMzQ7c3RhX2FwcGx5X3BhcmFtZXRlcnMmIzM0OywKICAgICYjMzQ7aWVlZTgwMjExX2FkZF9zdGF0aW9uJiMzNDssCiAgICAmIzM0O2llZWU4MDIxMV9jaGFuZ2Vfc3RhdGlvbiYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIGEgdmFsaWRhdGlvbiBjaGVjayBpbiBgc3RhX2FwcGx5X2F1dGhfZmxhZ3NgIHRvIHByZXZlbnQgYW4gaW52YWxpZCBzdGF0ZSB3aGVuIHJhdGUgY29udHJvbCBpcyBub3QgaW5pdGlhbGl6ZWQgZm9yIG5vbi1NTEQgaW50ZXJmYWNlcy4gVGhpcyBpcyByZWFjaGFibGUgdmlhIG5sODAyMTEgY29tbWFuZHMgKGUuZy4sIE5FV19TVEFUSU9OLCBTRVRfU1RBVElPTikgYW5kIG1vZGlmaWVzIGNvcmUgbWFjODAyMTEgbG9naWMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0CiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSwKICAgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IGI3MzM3NGRmMzg0M2E4Mzk4ZWEyNDUxOGExMzMxNzYwMjY4YTk1MGIKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgV2VkIEp1bCAyMiAxNzo1MjoxOCAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL25ldC9tYWM4MDIxMS9jZmcuYyBiL25ldC9tYWM4MDIxMS9jZmcuYwppbmRleCAzYjU4YWY1OWY3ZTQyOS4uODMwYzlmYzk1ZGYyMjggMTAwNjQ0Ci0tLSBhL25ldC9tYWM4MDIxMS9jZmcuYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvbWFjODAyMTEvY2ZnLmMKQEAgLTIxNDgsOCAmIzQzOzIxNDgsMTMgQEAgc3RhdGljIGludCBzdGFfYXBwbHlfYXV0aF9mbGFncyhzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbCwKIAkJICogd2VsbC4gU29tZSBkcml2ZXJzIHJlcXVpcmUgcmF0ZSBjb250cm9sIGluaXRpYWxpemVkCiAJCSAqIGJlZm9yZSBkcnZfc3RhX3N0YXRlKCkgaXMgY2FsbGVkLgogCQkgKi8KLQkJaWYgKCF0ZXN0X3N0YV9mbGFnKHN0YSwgV0xBTl9TVEFfUkFURV9DT05UUk9MKSkKJiM0MzsJCWlmICghdGVzdF9zdGFfZmxhZyhzdGEsIFdMQU5fU1RBX1JBVEVfQ09OVFJPTCkpIHsKJiM0MzsJCQlpZiAoIWllZWU4MDIxMV92aWZfaXNfbWxkKCZhbXA7c3RhLSZndDtzZGF0YS0mZ3Q7dmlmKSAmYW1wOyZhbXA7CiYjNDM7CQkJICAgICFyY3VfYWNjZXNzX3BvaW50ZXIoc3RhLSZndDtzZGF0YS0mZ3Q7dmlmLmJzc19jb25mLmNoYW5jdHhfY29uZikpCiYjNDM7CQkJCXJldHVybiAtRUlOVkFMOwomIzQzOwogCQkJcmF0ZV9jb250cm9sX3JhdGVfaW5pdF9hbGxfbGlua3Moc3RhKTsKJiM0MzsJCX0KIAogCQlyZXQgPSBzdGFfaW5mb19tb3ZlX3N0YXRlKHN0YSwgSUVFRTgwMjExX1NUQV9BU1NPQyk7CiAJCWlmIChyZXQpCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIyIDE3OjUyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIwMjgKCQkJCQkJCW91dHB1dDogMzkKCQkJCQkJCXRob3VnaHRzOiAyMTcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgVnVsbmVyYWJpbGl0eSBpbiBgbmV0L21hYzgwMjExYCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBpbiBgbmV0L21hYzgwMjExL2NmZy5jYC4gSXQgc2VlbXMgdGhleSYjMzk7dmUgYWRkZWQgYSBjaGVjayB3aXRoaW4gdGhlIGBzdGFfYXBwbHlfYXV0aF9mbGFnc2AgZnVuY3Rpb24uIFNwZWNpZmljYWxseSwgaXQmIzM5O3MgY2hlY2tpbmcgdGhlIGBXTEFOX1NUQV9SQVRFX0NPTlRST0xgIGZsYWcgb24gYSBzdGF0aW9uIChgc3RhYCkuIE15IGZpcnN0IGluc3RpbmN0IGlzIHRvIHVuZGVyc3RhbmQgdGhlIGNvbnRleHQuIGBtYWM4MDIxMWAgaXMgbm90b3Jpb3VzbHkgd2VsbC1mdXp6ZWQsIHBhcnRpY3VsYXJseSB3aXRoIGBtYWM4MDIxMV9od3NpbWAsIHNvIGFueSBjaGFuZ2VzIGhlcmUgaW1tZWRpYXRlbHkgZ3JhYiBteSBhdHRlbnRpb24uCgpUaGUgbmV3IGNvZGUgYmxvY2sgaXMgaW50ZXJlc3Rpbmc6IGlmIHRoZSBgV0xBTl9TVEFfUkFURV9DT05UUk9MYCBmbGFnIGlzbiYjMzk7dCBzZXQsIHRoZW4gYSBjaGVjayBpcyBwZXJmb3JtZWQuIElmIHRoZSBWaXJ0dWFsIEludGVyZmFjZSAoYHZpZmApIGlzbiYjMzk7dCBhIE1lc2ggTG9jYWwgRGVjaXNpb24gKE1MRCkgaW50ZXJmYWNlLCBhbmQgdGhlcmUgaXMgbm8gY2hhbm5lbCBjb250ZXh0IGNvbmZpZ3VyYXRpb24gYXR0YWNoZWQsIHRoZW4gaXQgcmV0dXJucyBgLUVJTlZBTGAuIE90aGVyd2lzZSwgaXQgcHJvY2VlZHMgdG8gaW5pdGlhbGl6ZSB0aGUgcmF0ZSBjb250cm9sIHZpYSBgcmF0ZV9jb250cm9sX3JhdGVfaW5pdF9hbGxfbGlua3NgLgoKTXkgaW1tZWRpYXRlIHF1ZXN0aW9uIGlzOiB3aGF0IHNjZW5hcmlvcyB0cmlnZ2VyIHRoaXMgc3BlY2lmaWMgY29kZSBwYXRoPyBBbmQgd2hhdCBhcmUgdGhlIGltcGxpY2F0aW9ucyBvZiB0aGUgYC1FSU5WQUxgIHJldHVybj8gV2UgbmVlZCB0byBkaWcgaW50byB0aGUgc3Vycm91bmRpbmcgY29kZSBpbiBgc3RhX2FwcGx5X2F1dGhfZmxhZ3NgIHRvIGZ1bGx5IHVuZGVyc3RhbmQgd2hhdCYjMzk7cyBoYXBwZW5pbmcgYW5kIGhvdyB0aGlzIGNvbmRpdGlvbiBjYW4gYmUgbWV0LiBJJiMzOTttIGdvaW5nIHRvIGNhcmVmdWxseSBhbmFseXplIHRoZSBjYWxsIHNpdGVzIGFuZCByZWxhdGVkIGRhdGEgc3RydWN0dXJlcyB0byBnZXQgYSBjb21wbGV0ZSBwaWN0dXJlLiBUaGlzIGAtRUlOVkFMYCBjb3VsZCBiZSBhIHZ1bG5lcmFiaWxpdHkgbWl0aWdhdGlvbiwgb3IgaXQgY291bGQgcG90ZW50aWFsbHkgaW50cm9kdWNlIHVuZXhwZWN0ZWQgYmVoYXZpb3IuIFRoZSBpbml0aWFsaXphdGlvbiBvZiB0aGUgcmF0ZSBjb250cm9sIGlzIG9idmlvdXNseSBhbiBpbXBvcnRhbnQgYXNwZWN0IHRoYXQgSSYjMzk7bGwgbmVlZCB0byBleHBsb3JlIGFzIHdlbGwuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjIgMTc6NTI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c3RhX2FwcGx5X2F1dGhfZmxhZ3MmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbWFjODAyMTEvY2ZnLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L21hYzgwMjExL2NmZy5jPTIwMTA9c3RhdGljIGludCBpZWVlODAyMTFfc3RvcF9hcChzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuLS1cbm5ldC9tYWM4MDIxMS9jZmcuYy0yMTI4LVxubmV0L21hYzgwMjExL2NmZy5jOjIxMjk6c3RhdGljIGludCBzdGFfYXBwbHlfYXV0aF9mbGFncyhzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbCxcbm5ldC9tYWM4MDIxMS9jZmcuYy0yMTMwLVx0XHRcdFx0c3RydWN0IHN0YV9pbmZvICpzdGEsXG4tLVxubmV0L21hYzgwMjExL2NmZy5jPTI0NTQ9c3RhdGljIGludCBzdGFfYXBwbHlfcGFyYW1ldGVycyhzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbCxcbi0tXG5uZXQvbWFjODAyMTEvY2ZnLmMtMjQ5OS1cdCAgICAgIChzZXQgXHUwMDI2IEJJVChOTDgwMjExX1NUQV9GTEFHX0FTU09DSUFURUQpKSkpIHtcbm5ldC9tYWM4MDIxMS9jZmcuYzoyNTAwOlx0XHRyZXQgPSBzdGFfYXBwbHlfYXV0aF9mbGFncyhsb2NhbCwgc3RhLCBtYXNrLCBzZXQpO1xubmV0L21hYzgwMjExL2NmZy5jLTI1MDEtXHRcdGlmIChyZXQpXG4tLVxubmV0L21hYzgwMjExL2NmZy5jLTI2MjItXHQgICAgc2V0IFx1MDAyNiBCSVQoTkw4MDIxMV9TVEFfRkxBR19BU1NPQ0lBVEVEKSkge1xubmV0L21hYzgwMjExL2NmZy5jOjI2MjM6XHRcdHJldCA9IHN0YV9hcHBseV9hdXRoX2ZsYWdzKGxvY2FsLCBzdGEsIG1hc2ssIHNldCk7XG5uZXQvbWFjODAyMTEvY2ZnLmMtMjYyNC1cdFx0aWYgKHJldClcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMiAxNzo1MjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMDMyCgkJCQkJCQlvdXRwdXQ6IDM2CgkJCQkJCQl0aG91Z2h0czogNzIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBgc3RhX2FwcGx5X2F1dGhfZmxhZ3NgIEZ1bmN0aW9uKioKCk9rYXksIHNvIEkgc2VlIHRoYXQgYHN0YV9hcHBseV9hdXRoX2ZsYWdzYCBpcyBhIGtleSBmdW5jdGlvbiwgYW5kIGl0JiMzOTtzIGJlaW5nIGNhbGxlZCBmcm9tIGF0IGxlYXN0IHR3byBjcml0aWNhbCBsb2NhdGlvbnM6IGBzdGFfYXBwbHlfcGFyYW1ldGVyc2AgYW5kLCBsaWtlbHksIGVpdGhlciBgaWVlZTgwMjExX2FkZF9zdGF0aW9uYCBvciBgaWVlZTgwMjExX2NoYW5nZV9zdGF0aW9uYC4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsIGxldCYjMzk7cyBkcmlsbCBkb3duIGludG8gdGhlIGNvbnRleHQgc3Vycm91bmRpbmcgdGhvc2UgY2FsbHMuIEkgbmVlZCB0byB1bmRlcnN0YW5kICp3aHkqIGBzdGFfYXBwbHlfYXV0aF9mbGFnc2AgaXMgYmVpbmcgaW52b2tlZCB3aGVyZSBpdCBpcy4gSSYjMzk7bSBlc3BlY2lhbGx5IGludGVyZXN0ZWQgaW4gdGhlIGRpZmZlcmVudCBwYXRocyBsZWFkaW5nIGludG8gaXQuIElzIGl0IGJlaW5nIHVzZWQgdG8gc2V0IHVwIGluaXRpYWwgYXV0aGVudGljYXRpb24gcGFyYW1ldGVycywgbW9kaWZ5IGV4aXN0aW5nIG9uZXMsIG9yIG1heWJlIGJvdGg/IFRoaXMgY29udGV4dCBpcyBjcnVjaWFsIHRvIGdyYXNwaW5nIHRoZSBpbnRlbmRlZCBiZWhhdmlvci4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hhdCBkYXRhIGlzIGJlaW5nIHBhc3NlZCBpbiwgdGhlIHN0YXRlIG9mIHRoZSBzeXN0ZW0gd2hlbiBpdCYjMzk7cyBjYWxsZWQsIGFuZCB3aGF0IHRoZSBmdW5jdGlvbiBpcyBhY3R1YWxseSAqZG9pbmcqIHRvIHRoZSBzdGF0aW9uJiMzOTtzIGF1dGhvcml6YXRpb24gZmxhZ3MuIEkgc3VzcGVjdCB0aGlzIHdpbGwgaWxsdW1pbmF0ZSBzb21lIGtleSBhc3BlY3RzIG9mIGhvdyBhdXRoZW50aWNhdGlvbiBpcyBoYW5kbGVkIGluIHRoaXMgZHJpdmVyLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIyIDE3OjUyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3N0YV9hcHBseV9hdXRoX2ZsYWdzJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L21hYzgwMjExLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbWFjODAyMTEvY2ZnLmM9MjAxMD1zdGF0aWMgaW50IGllZWU4MDIxMV9zdG9wX2FwKHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG4tLVxubmV0L21hYzgwMjExL2NmZy5jLTIxMjgtXG5uZXQvbWFjODAyMTEvY2ZnLmM6MjEyOTpzdGF0aWMgaW50IHN0YV9hcHBseV9hdXRoX2ZsYWdzKHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsLFxubmV0L21hYzgwMjExL2NmZy5jLTIxMzAtXHRcdFx0XHRzdHJ1Y3Qgc3RhX2luZm8gKnN0YSxcbi0tXG5uZXQvbWFjODAyMTEvY2ZnLmM9MjQ1ND1zdGF0aWMgaW50IHN0YV9hcHBseV9wYXJhbWV0ZXJzKHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsLFxuLS1cbm5ldC9tYWM4MDIxMS9jZmcuYy0yNDk5LVx0ICAgICAgKHNldCBcdTAwMjYgQklUKE5MODAyMTFfU1RBX0ZMQUdfQVNTT0NJQVRFRCkpKSkge1xubmV0L21hYzgwMjExL2NmZy5jOjI1MDA6XHRcdHJldCA9IHN0YV9hcHBseV9hdXRoX2ZsYWdzKGxvY2FsLCBzdGEsIG1hc2ssIHNldCk7XG5uZXQvbWFjODAyMTEvY2ZnLmMtMjUwMS1cdFx0aWYgKHJldClcbi0tXG5uZXQvbWFjODAyMTEvY2ZnLmMtMjYyMi1cdCAgICBzZXQgXHUwMDI2IEJJVChOTDgwMjExX1NUQV9GTEFHX0FTU09DSUFURUQpKSB7XG5uZXQvbWFjODAyMTEvY2ZnLmM6MjYyMzpcdFx0cmV0ID0gc3RhX2FwcGx5X2F1dGhfZmxhZ3MobG9jYWwsIHN0YSwgbWFzaywgc2V0KTtcbm5ldC9tYWM4MDIxMS9jZmcuYy0yNjI0LVx0XHRpZiAocmV0KVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIyIDE3OjUyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM3NjcKCQkJCQkJCW91dHB1dDogMzcKCQkJCQkJCXRob3VnaHRzOiAyOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhbmFseXNpcyBvZiB0aGUgc2l0dWF0aW9uOgoKKipJbnZlc3RpZ2F0aW5nIGEgU3BlY2lmaWMgRnVuY3Rpb24gaW4gbWFjODAyMTEgQ29uZmlndXJhdGlvbioqCgpPa2F5LCBzbyBJIG5lZWQgdG8gZGl2ZSBpbnRvIHRoZSBgbmV0L21hYzgwMjExL2NmZy5jYCBmaWxlLiBTcGVjaWZpY2FsbHksIEkmIzM5O20gaW50ZXJlc3RlZCBpbiB0aGUgZnVuY3Rpb24gZGVmaW5lZCBhdCBsaW5lIDI2MjIuIEdpdmVuIG15IHVuZGVyc3RhbmRpbmcgb2YgbWFjODAyMTEmIzM5O3MgYXJjaGl0ZWN0dXJlLCBwaW5wb2ludGluZyBhIHNwZWNpZmljIGxpbmUgbnVtYmVyIHVzdWFsbHkgc3VnZ2VzdHMgSSYjMzk7bSBsb29raW5nIGZvciBhIHBhcnRpY3VsYXIgY29uZmlndXJhdGlvbiBzZXR0aW5nLCBhIGZ1bmN0aW9uIGNhbGwgcmVsYXRlZCB0byBhIHNwZWNpZmljIGZlYXR1cmUmIzM5O3MgY29uZmlndXJhdGlvbiwgb3IgcGVyaGFwcyBhIHNlY3Rpb24gZGVhbGluZyB3aXRoIGEgcGFydGljdWxhciByZWd1bGF0b3J5IGRvbWFpbiBvciBoYXJkd2FyZSBpbnRlcmZhY2Ugc2V0dXAuIEkmIzM5O20gbGlrZWx5IHRyeWluZyB0byBkZWJ1ZyBhIGNvbmZpZ3VyYXRpb24gaXNzdWUsIHVuZGVyc3RhbmQgYSBiZWhhdmlvciwgb3IgbWF5YmUgZXZlbiBpZGVudGlmeSBhIHBvdGVudGlhbCBvcHRpbWl6YXRpb24gb3IgYSBzZWN1cml0eSB2dWxuZXJhYmlsaXR5IHRoYXQgbWF5IGhhdmUgYXJpc2VuLiBMZXQmIzM5O3Mgc2VlIHdoYXQgdGhhdCBmdW5jdGlvbiBpcyBhYm91dC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMiAxNzo1MjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtec3RhdGljIGludC4qc3RhJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L21hYzgwMjExL2NmZy5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9tYWM4MDIxMS9jZmcuYz0yNTk9c3RhdGljIGludCBpZWVlODAyMTFfY2hhbmdlX2lmYWNlKHN0cnVjdCB3aXBoeSAqd2lwaHksXG4tLVxubmV0L21hYzgwMjExL2NmZy5jLTMwNS1cbm5ldC9tYWM4MDIxMS9jZmcuYzozMDY6c3RhdGljIGludCBpZWVlODAyMTFfc3RhcnRfcDJwX2RldmljZShzdHJ1Y3Qgd2lwaHkgKndpcGh5LFxubmV0L21hYzgwMjExL2NmZy5jLTMwNy1cdFx0XHRcdCAgICAgIHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYpXG4tLVxubmV0L21hYzgwMjExL2NmZy5jPTM1MT1zdGF0aWMgaW50IGllZWU4MDIxMV9uYW5fY29uZl9jb3B5KHN0cnVjdCBjZmc4MDIxMV9uYW5fY29uZiAqZHN0LFxuLS1cbm5ldC9tYWM4MDIxMS9jZmcuYy00MDgtXG5uZXQvbWFjODAyMTEvY2ZnLmM6NDA5OnN0YXRpYyBpbnQgaWVlZTgwMjExX3N0YXJ0X25hbihzdHJ1Y3Qgd2lwaHkgKndpcGh5LFxubmV0L21hYzgwMjExL2NmZy5jLTQxMC1cdFx0XHQgICAgICAgc3RydWN0IHdpcmVsZXNzX2RldiAqd2Rldixcbi0tXG5uZXQvbWFjODAyMTEvY2ZnLmM9OTY3PXZvaWQgc3RhX3NldF9yYXRlX2luZm9fdHgoc3RydWN0IHN0YV9pbmZvICpzdGEsXG4tLVxubmV0L21hYzgwMjExL2NmZy5jLTk5OC1cbm5ldC9tYWM4MDIxMS9jZmcuYzo5OTk6c3RhdGljIGludCBpZWVlODAyMTFfZHVtcF9zdGF0aW9uKHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsXG5uZXQvbWFjODAyMTEvY2ZnLmMtMTAwMC1cdFx0XHRcdCAgaW50IGlkeCwgdTggKm1hYywgc3RydWN0IHN0YXRpb25faW5mbyAqc2luZm8pXG4tLVxubmV0L21hYzgwMjExL2NmZy5jPTEwMjY9c3RhdGljIGludCBpZWVlODAyMTFfZHVtcF9zdXJ2ZXkoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbi0tXG5uZXQvbWFjODAyMTEvY2ZnLmMtMTAzMy1cbm5ldC9tYWM4MDIxMS9jZmcuYzoxMDM0OnN0YXRpYyBpbnQgaWVlZTgwMjExX2dldF9zdGF0aW9uKHN0cnVjdCB3aXBoeSAqd2lwaHksXG5uZXQvbWFjODAyMTEvY2ZnLmMtMTAzNS1cdFx0XHRcdCBzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LFxuLS1cbm5ldC9tYWM4MDIxMS9jZmcuYz0xNjA2PXN0YXRpYyB1OCBpZWVlODAyMTFfbnVtX2JlYWNvbmluZ19saW5rcyhzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSlcbi0tXG5uZXQvbWFjODAyMTEvY2ZnLmMtMTYyOS1cbm5ldC9tYWM4MDIxMS9jZmcuYzoxNjMwOnN0YXRpYyBpbnQgaWVlZTgwMjExX3N0YXJ0X2FwKHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG5uZXQvbWFjODAyMTEvY2ZnLmMtMTYzMS1cdFx0XHQgICAgICBzdHJ1Y3QgY2ZnODAyMTFfYXBfc2V0dGluZ3MgKnBhcmFtcylcbi0tXG5uZXQvbWFjODAyMTEvY2ZnLmM9MjAxMD1zdGF0aWMgaW50IGllZWU4MDIxMV9zdG9wX2FwKHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG4tLVxubmV0L21hYzgwMjExL2NmZy5jLTIxMjgtXG5uZXQvbWFjODAyMTEvY2ZnLmM6MjEyOTpzdGF0aWMgaW50IHN0YV9hcHBseV9hdXRoX2ZsYWdzKHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsLFxubmV0L21hYzgwMjExL2NmZy5jLTIxMzAtXHRcdFx0XHRzdHJ1Y3Qgc3RhX2luZm8gKnN0YSxcbi0tXG5uZXQvbWFjODAyMTEvY2ZnLmM9MjI1OT1lbnVtIHN0YV9saW5rX2FwcGx5X21vZGUge1xuLS1cbm5ldC9tYWM4MDIxMS9jZmcuYy0yMjY0LVxubmV0L21hYzgwMjExL2NmZy5jOjIyNjU6c3RhdGljIGludCBzdGFfbGlua19hcHBseV9wYXJhbWV0ZXJzKHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsLFxubmV0L21hYzgwMjExL2NmZy5jLTIyNjYtXHRcdFx0XHQgICAgIHN0cnVjdCBzdGFfaW5mbyAqc3RhLFxuLS1cbm5ldC9tYWM4MDIxMS9jZmcuYy0yNDUzLVxubmV0L21hYzgwMjExL2NmZy5jOjI0NTQ6c3RhdGljIGludCBzdGFfYXBwbHlfcGFyYW1ldGVycyhzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbCxcbm5ldC9tYWM4MDIxMS9jZmcuYy0yNDU1LVx0XHRcdFx0c3RydWN0IHN0YV9pbmZvICpzdGEsXG4tLVxubmV0L21hYzgwMjExL2NmZy5jLTI2MzQtXG5uZXQvbWFjODAyMTEvY2ZnLmM6MjYzNTpzdGF0aWMgaW50IGllZWU4MDIxMV9hZGRfc3RhdGlvbihzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LFxubmV0L21hYzgwMjExL2NmZy5jLTI2MzYtXHRcdFx0XHQgY29uc3QgdTggKm1hYyxcbi0tXG5uZXQvbWFjODAyMTEvY2ZnLmMtMjcxNC1cbm5ldC9tYWM4MDIxMS9jZmcuYzoyNzE1OnN0YXRpYyBpbnQgaWVlZTgwMjExX2RlbF9zdGF0aW9uKHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsXG5uZXQvbWFjODAyMTEvY2ZnLmMtMjcxNi1cdFx0XHRcdCBzdHJ1Y3Qgc3RhdGlvbl9kZWxfcGFyYW1ldGVycyAqcGFyYW1zKVxuLS1cbm5ldC9tYWM4MDIxMS9jZmcuYy0yNzI4LVxubmV0L21hYzgwMjExL2NmZy5jOjI3Mjk6c3RhdGljIGludCBpZWVlODAyMTFfc2V0X3N0YV80YWRkcihzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbCxcbm5ldC9tYWM4MDIxMS9jZmcuYy0yNzMwLVx0XHRcdFx0ICAgc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsXG4tLVxubmV0L21hYzgwMjExL2NmZy5jLTI3ODctXG5uZXQvbWFjODAyMTEvY2ZnLmM6Mjc4ODpzdGF0aWMgaW50IGllZWU4MDIxMV9jaGFuZ2Vfc3RhdGlvbihzdHJ1Y3Qgd2lwaHkgKndpcGh5LFxubmV0L21hYzgwMjExL2NmZy5jLTI3ODktXHRcdFx0XHQgICAgc3RydWN0IHdpcmVsZXNzX2RldiAqd2RldiwgY29uc3QgdTggKm1hYyxcbi0tXG5uZXQvbWFjODAyMTEvY2ZnLmM9NDE3ND1zdGF0aWMgYm9vbCBpZWVlODAyMTFfaXNfc2Nhbl9vbmdvaW5nKHN0cnVjdCB3aXBoeSAqd2lwaHksXG4tLVxubmV0L21hYzgwMjExL2NmZy5jLTQyMTAtXG5uZXQvbWFjODAyMTEvY2ZnLmM6NDIxMTpzdGF0aWMgaW50IGllZWU4MDIxMV9zdGFydF9yYWRhcl9kZXRlY3Rpb24oc3RydWN0IHdpcGh5ICp3aXBoeSxcbm5ldC9tYWM4MDIxMS9jZmcuYy00MjEyLVx0XHRcdFx0XHQgICBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuLS1cbm5ldC9tYWM4MDIxMS9jZmcuYz01MzM1PXZvaWQgaWVlZTgwMjExX2ZpbGxfdHhxX3N0YXRzKHN0cnVjdCBjZmc4MDIxMV90eHFfc3RhdHMgKnR4cXN0YXRzLFxuLS1cbm5ldC9tYWM4MDIxMS9jZmcuYy01MzgzLVxubmV0L21hYzgwMjExL2NmZy5jOjUzODQ6c3RhdGljIGludCBpZWVlODAyMTFfZ2V0X3R4cV9zdGF0cyhzdHJ1Y3Qgd2lwaHkgKndpcGh5LFxubmV0L21hYzgwMjExL2NmZy5jLTUzODUtXHRcdFx0XHQgICBzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LFxuLS1cbm5ldC9tYWM4MDIxMS9jZmcuYz01ODk4PWllZWU4MDIxMV9kZWxfbGlua19zdGF0aW9uKHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG4tLVxubmV0L21hYzgwMjExL2NmZy5jLTU5MjEtXG5uZXQvbWFjODAyMTEvY2ZnLmM6NTkyMjpzdGF0aWMgaW50IGllZWU4MDIxMV9zZXRfaHdfdGltZXN0YW1wKHN0cnVjdCB3aXBoeSAqd2lwaHksXG5uZXQvbWFjODAyMTEvY2ZnLmMtNTkyMy1cdFx0XHRcdCAgICAgIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjIgMTc6NTI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTg5MQoJCQkJCQkJb3V0cHV0OiAzOAoJCQkJCQkJdGhvdWdodHM6IDIyMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIEF1dGhlbnRpY2F0aW9uIEZsYWdzIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIHRoYXQgdHdlYWtzIGBzdGFfYXBwbHlfYXV0aF9mbGFnc2AuIEkgc2VlIHRoYXQgdGhpcyBmdW5jdGlvbiYjMzk7cyBjYWxsZWQgZnJvbSBgc3RhX2FwcGx5X3BhcmFtZXRlcnNgLCBhbmQgYWxzbyBmcm9tIGBpZWVlODAyMTFfYWRkX3N0YXRpb25gIGFuZCBgaWVlZTgwMjExX2NoYW5nZV9zdGF0aW9uYC4gUmlnaHQgYXdheSwgdGhhdCByYWlzZXMgYSBmbGFnOiB0aG9zZSBsYXR0ZXIgdHdvIGZ1bmN0aW9ucyBhcmUgZGlyZWN0bHkgZXhwb3NlZCB0byB1c2Vyc3BhY2UgdGhyb3VnaCBubDgwMjExIGNvbW1hbmRzIOKAkyBzcGVjaWZpY2FsbHksIGBOTDgwMjExX0NNRF9ORVdfU1RBVElPTmAgYW5kIGBOTDgwMjExX0NNRF9TRVRfU1RBVElPTmAuIEdvb2QuCgpUaGUgbWVhdCBvZiB0aGUgcGF0Y2ggYWRkcyBhIGNoZWNrLiBTcGVjaWZpY2FsbHksIGl0JiMzOTtzIGNoZWNraW5nIGBpZWVlODAyMTFfdmlmX2lzX21sZCgmYW1wO3N0YS0mZ3Q7c2RhdGEtJmd0O3ZpZilgIGFuZCBgcmN1X2FjY2Vzc19wb2ludGVyKHN0YS0mZ3Q7c2RhdGEtJmd0O3ZpZi5ic3NfY29uZi5jaGFuY3R4X2NvbmYpYC4gRnVuY3Rpb25hbGx5LCB0aGlzIGxvb2tzIHNvdW5kLiBJdCYjMzk7cyBjbGVhcmx5IHJlYWNoYWJsZSwgYW5kIEkmIzM5O20gY29uZmlkZW50IEkgY2FuIHRyaWdnZXIgaXQgdXNpbmcgbWFjODAyMTFfaHdzaW0uIFRoYXQmIzM5O3MgYSBzb2xpZCBzdGFydC4KCk5vdywgbGV0JiMzOTtzIGxvb2sgYXQgdGhlIGJpZ2dlciBwaWN0dXJlLiBJIG5lZWQgdG8ga25vdyB3aGF0IGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBhcmUgaW52b2x2ZWQuIGBNQUM4MDIxMWAgaXMgb2J2aW91c2x5IGEgZ2l2ZW4uIE5vIG5lZWQgdG8gb3ZlcnRoaW5rIHRoYXQgb25lLiBCdXQsIGlzIHRoZXJlIGFueXRoaW5nIGVsc2UgdGhhdCBpdCB0b3VjaGVzPyBMZXQmIzM5O3MgZGl2ZSBpbnRvIHRoZSBgbmV0L21hYzgwMjExL0tjb25maWdgIGZpbGUgYW5kIHRha2UgYSBsb29rLiBOZWVkIHRvIGtub3cgaWYgdGhlcmUmIzM5O3MgYW55IG90aGVyIGRlcGVuZGVuY3kuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIyIDE3OjUyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBNQUM4MDIxMSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9tYWM4MDIxMS9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9tYWM4MDIxMS9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyOmNvbmZpZyBNQUM4MDIxMVxubmV0L21hYzgwMjExL0tjb25maWctMy1cdHRyaXN0YXRlIFwmIzM0O0dlbmVyaWMgSUVFRSA4MDIuMTEgTmV0d29ya2luZyBTdGFjayAobWFjODAyMTEpXCYjMzQ7XG4tLVxubmV0L21hYzgwMjExL0tjb25maWc9MTk9aWYgTUFDODAyMTEgIT0gblxubmV0L21hYzgwMjExL0tjb25maWctMjAtXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyMTpjb25maWcgTUFDODAyMTFfSEFTX1JDXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yMi1cdGJvb2xcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTIzLVxubmV0L21hYzgwMjExL0tjb25maWc6MjQ6Y29uZmlnIE1BQzgwMjExX1JDX01JTlNUUkVMXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yNS1cdGJvb2wgXCYjMzQ7TWluc3RyZWxcJiMzNDsgaWYgRVhQRVJUXG4tLVxubmV0L21hYzgwMjExL0tjb25maWc9MzE9Y2hvaWNlXG4tLVxubmV0L21hYzgwMjExL0tjb25maWctNDAtXG5uZXQvbWFjODAyMTEvS2NvbmZpZzo0MTpjb25maWcgTUFDODAyMTFfUkNfREVGQVVMVF9NSU5TVFJFTFxubmV0L21hYzgwMjExL0tjb25maWctNDItXHRib29sIFwmIzM0O01pbnN0cmVsXCYjMzQ7XG4tLVxubmV0L21hYzgwMjExL0tjb25maWc9NDg9ZW5kY2hvaWNlXG5uZXQvbWFjODAyMTEvS2NvbmZpZy00OS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjUwOmNvbmZpZyBNQUM4MDIxMV9SQ19ERUZBVUxUXG5uZXQvbWFjODAyMTEvS2NvbmZpZy01MS1cdHN0cmluZ1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnPTU3PWNvbW1lbnQgXCYjMzQ7U29tZSB3aXJlbGVzcyBkcml2ZXJzIHJlcXVpcmUgYSByYXRlIGNvbnRyb2wgYWxnb3JpdGhtXCYjMzQ7XG4tLVxubmV0L21hYzgwMjExL0tjb25maWctNTktXG5uZXQvbWFjODAyMTEvS2NvbmZpZzo2MDpjb25maWcgTUFDODAyMTFfS1VOSVRfVEVTVFxubmV0L21hYzgwMjExL0tjb25maWctNjEtXHR0cmlzdGF0ZSBcJiMzNDtLVW5pdCB0ZXN0cyBmb3IgbWFjODAyMTFcJiMzNDsgaWYgIUtVTklUX0FMTF9URVNUU1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnLTY5LVxubmV0L21hYzgwMjExL0tjb25maWc6NzA6Y29uZmlnIE1BQzgwMjExX01FU0hcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTcxLVx0Ym9vbCBcJiMzNDtFbmFibGUgbWFjODAyMTEgbWVzaCBuZXR3b3JraW5nIHN1cHBvcnRcJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy03OC1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjc5OmNvbmZpZyBNQUM4MDIxMV9MRURTXG5uZXQvbWFjODAyMTEvS2NvbmZpZy04MC1cdGJvb2wgXCYjMzQ7RW5hYmxlIExFRCB0cmlnZ2Vyc1wmIzM0O1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnLTg3LVxubmV0L21hYzgwMjExL0tjb25maWc6ODg6Y29uZmlnIE1BQzgwMjExX0RFQlVHRlNcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTg5LVx0Ym9vbCBcJiMzNDtFeHBvcnQgbWFjODAyMTEgaW50ZXJuYWxzIGluIERlYnVnRlNcJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy05Ni1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjk3OmNvbmZpZyBNQUM4MDIxMV9NRVNTQUdFX1RSQUNJTkdcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTk4LVx0Ym9vbCBcJiMzNDtUcmFjZSBhbGwgbWFjODAyMTEgZGVidWcgbWVzc2FnZXNcJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xMDktXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoxMTA6bWVudWNvbmZpZyBNQUM4MDIxMV9ERUJVR19NRU5VXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xMTEtXHRib29sIFwmIzM0O1NlbGVjdCBtYWM4MDIxMSBkZWJ1Z2dpbmcgZmVhdHVyZXNcJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xMTUtXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoxMTY6Y29uZmlnIE1BQzgwMjExX05PSU5MSU5FXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xMTctXHRib29sIFwmIzM0O0RvIG5vdCBpbmxpbmUgVFgvUlggaGFuZGxlcnNcJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xMzEtXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoxMzI6Y29uZmlnIE1BQzgwMjExX1ZFUkJPU0VfREVCVUdcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTEzMy1cdGJvb2wgXCYjMzQ7VmVyYm9zZSBkZWJ1Z2dpbmcgb3V0cHV0XCYjMzQ7XG4tLVxubmV0L21hYzgwMjExL0tjb25maWctMTQyLVxubmV0L21hYzgwMjExL0tjb25maWc6MTQzOmNvbmZpZyBNQUM4MDIxMV9NTE1FX0RFQlVHXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xNDQtXHRib29sIFwmIzM0O1ZlcmJvc2UgbWFuYWdlZCBNTE1FIG91dHB1dFwmIzM0O1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE1My1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjE1NDpjb25maWcgTUFDODAyMTFfU1RBX0RFQlVHXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xNTUtXHRib29sIFwmIzM0O1ZlcmJvc2Ugc3RhdGlvbiBkZWJ1Z2dpbmdcJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xNjItXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoxNjM6Y29uZmlnIE1BQzgwMjExX0hUX0RFQlVHXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xNjQtXHRib29sIFwmIzM0O1ZlcmJvc2UgSFQgZGVidWdnaW5nXCYjMzQ7XG4tLVxubmV0L21hYzgwMjExL0tjb25maWctMTc0LVxubmV0L21hYzgwMjExL0tjb25maWc6MTc1OmNvbmZpZyBNQUM4MDIxMV9PQ0JfREVCVUdcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE3Ni1cdGJvb2wgXCYjMzQ7VmVyYm9zZSBPQ0IgZGVidWdnaW5nXCYjMzQ7XG4tLVxubmV0L21hYzgwMjExL0tjb25maWctMTg1LVxubmV0L21hYzgwMjExL0tjb25maWc6MTg2OmNvbmZpZyBNQUM4MDIxMV9JQlNTX0RFQlVHXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xODctXHRib29sIFwmIzM0O1ZlcmJvc2UgSUJTUyBkZWJ1Z2dpbmdcJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xOTYtXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoxOTc6Y29uZmlnIE1BQzgwMjExX1BTX0RFQlVHXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xOTgtXHRib29sIFwmIzM0O1ZlcmJvc2UgcG93ZXJzYXZlIG1vZGUgZGVidWdnaW5nXCYjMzQ7XG4tLVxubmV0L21hYzgwMjExL0tjb25maWctMjA4LVxubmV0L21hYzgwMjExL0tjb25maWc6MjA5OmNvbmZpZyBNQUM4MDIxMV9NUExfREVCVUdcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTIxMC1cdGJvb2wgXCYjMzQ7VmVyYm9zZSBtZXNoIHBlZXIgbGluayBkZWJ1Z2dpbmdcJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yMjEtXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyMjI6Y29uZmlnIE1BQzgwMjExX01QQVRIX0RFQlVHXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yMjMtXHRib29sIFwmIzM0O1ZlcmJvc2UgbWVzaCBwYXRoIGRlYnVnZ2luZ1wmIzM0O1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnLTIzNC1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjIzNTpjb25maWcgTUFDODAyMTFfTUhXTVBfREVCVUdcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTIzNi1cdGJvb2wgXCYjMzQ7VmVyYm9zZSBtZXNoIEhXTVAgcm91dGluZyBkZWJ1Z2dpbmdcJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yNDctXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyNDg6Y29uZmlnIE1BQzgwMjExX01FU0hfU1lOQ19ERUJVR1xubmV0L21hYzgwMjExL0tjb25maWctMjQ5LVx0Ym9vbCBcJiMzNDtWZXJib3NlIG1lc2ggc3luY2hyb25pemF0aW9uIGRlYnVnZ2luZ1wmIzM0O1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnLTI1OC1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjI1OTpjb25maWcgTUFDODAyMTFfTUVTSF9DU0FfREVCVUdcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTI2MC1cdGJvb2wgXCYjMzQ7VmVyYm9zZSBtZXNoIGNoYW5uZWwgc3dpdGNoIGRlYnVnZ2luZ1wmIzM0O1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnLTI2OS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjI3MDpjb25maWcgTUFDODAyMTFfTUVTSF9QU19ERUJVR1xubmV0L21hYzgwMjExL0tjb25maWctMjcxLVx0Ym9vbCBcJiMzNDtWZXJib3NlIG1lc2ggcG93ZXJzYXZlIGRlYnVnZ2luZ1wmIzM0O1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnLTI4MC1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjI4MTpjb25maWcgTUFDODAyMTFfVERMU19ERUJVR1xubmV0L21hYzgwMjExL0tjb25maWctMjgyLVx0Ym9vbCBcJiMzNDtWZXJib3NlIFRETFMgZGVidWdnaW5nXCYjMzQ7XG4tLVxubmV0L21hYzgwMjExL0tjb25maWctMjkyLVxubmV0L21hYzgwMjExL0tjb25maWc6MjkzOmNvbmZpZyBNQUM4MDIxMV9ERUJVR19DT1VOVEVSU1xubmV0L21hYzgwMjExL0tjb25maWctMjk0LVx0Ym9vbCBcJiMzNDtFeHRyYSBzdGF0aXN0aWNzIGZvciBUWC9SWCBkZWJ1Z2dpbmdcJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0zMDctXG5uZXQvbWFjODAyMTEvS2NvbmZpZzozMDg6Y29uZmlnIE1BQzgwMjExX1NUQV9IQVNIX01BWF9TSVpFXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0zMDktXHRpbnQgXCYjMzQ7U3RhdGlvbiBoYXNoIHRhYmxlIG1heGltdW0gc2l6ZVwmIzM0OyBpZiBNQUM4MDIxMV9ERUJVR19NRU5VXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIyIDE3OjUyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDg2NjUKCQkJCQkJCW91dHB1dDogNDQKCQkJCQkJCXRob3VnaHRzOiA2NAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duOgoKKipBbmFseXppbmcgdGhlIE1BQzgwMjExIENvbnRleHQqKgoKUmlnaHQsIE1BQzgwMjExIHNob3VsZCBiZSBzdWZmaWNpZW50IGZvciB0aGUgYmFzaWMgdW5kZXJzdGFuZGluZywgSSB0aGluay4gTGV0JiMzOTtzIGRpZyBpbiBhIGJpdCBmdXJ0aGVyLCB0aG91Z2guIFdlIHdhbnQgdG8gYmUgdGhvcm91Z2guIFRoZSBjb2RlJiMzOTtzIHVzaW5nIGBpZWVlODAyMTFfdmlmX2lzX21sZCgmYW1wO3N0YS0mZ3Q7c2RhdGEtJmd0O3ZpZilgLiBJIG5lZWQgdG8gZmlndXJlIG91dCB3aGF0LCBpZiBhbnksIHNwZWNpZmljIGNvbmZpZ3VyYXRpb24gb3IgaW1wbGljYXRpb25zIHRoYXQgcGFydGljdWxhciBmdW5jdGlvbiBjYWxsIGJyaW5ncyBpbnRvIHBsYXkgd2l0aGluIHRoaXMgY29udGV4dC4gVGhhdCBmdW5jdGlvbiBjYWxsIGlzIGtleSBoZXJlLiBJJiMzOTtsbCBuZWVkIHRvIGNoZWNrIHRoZSByZWxldmFudCBkb2N1bWVudGF0aW9uIG9yIHNvdXJjZSB0byBzZWUgaWYgd2UgcmVxdWlyZSBzcGVjaWFsIGNvbmZpZ3VyYXRpb25zLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMiAxNzo1MjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtpZWVlODAyMTFfdmlmX2lzX21sZCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9tYWM4MDIxMS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L21hYzgwMjExL2FwLmM9NTE9aWVlZTgwMjExX3J4X2VtbF9vcF9tb2RlX25vdGlmKHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLFxuLS1cbm5ldC9tYWM4MDIxMS9hcC5jLTY4LVxubmV0L21hYzgwMjExL2FwLmM6Njk6XHRpZiAoIWllZWU4MDIxMV92aWZfaXNfbWxkKFx1MDAyNnNkYXRhLVx1MDAzZXZpZikpXG5uZXQvbWFjODAyMTEvYXAuYy03MC1cdFx0cmV0dXJuO1xuLS1cbm5ldC9tYWM4MDIxMS9jZmcuYz0yNz1pZWVlODAyMTFfbGlua19vcl9kZWZsaW5rKHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLCBpbnQgbGlua19pZCxcbi0tXG5uZXQvbWFjODAyMTEvY2ZnLmMtMzctXHRcdCAqL1xubmV0L21hYzgwMjExL2NmZy5jOjM4Olx0XHRpZiAocmVxdWlyZV92YWxpZCBcdTAwMjZcdTAwMjYgaWVlZTgwMjExX3ZpZl9pc19tbGQoXHUwMDI2c2RhdGEtXHUwMDNldmlmKSlcbm5ldC9tYWM4MDIxMS9jZmcuYy0zOS1cdFx0XHRyZXR1cm4gRVJSX1BUUigtRUlOVkFMKTtcbi0tXG5uZXQvbWFjODAyMTEvY2ZnLmM9MjEyOT1zdGF0aWMgaW50IHN0YV9hcHBseV9hdXRoX2ZsYWdzKHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsLFxuLS1cbm5ldC9tYWM4MDIxMS9jZmcuYy0yMTUxLVx0XHRpZiAoIXRlc3Rfc3RhX2ZsYWcoc3RhLCBXTEFOX1NUQV9SQVRFX0NPTlRST0wpKSB7XG5uZXQvbWFjODAyMTEvY2ZnLmM6MjE1MjpcdFx0XHRpZiAoIWllZWU4MDIxMV92aWZfaXNfbWxkKFx1MDAyNnN0YS1cdTAwM2VzZGF0YS1cdTAwM2V2aWYpIFx1MDAyNlx1MDAyNlxubmV0L21hYzgwMjExL2NmZy5jLTIxNTMtXHRcdFx0ICAgICFyY3VfYWNjZXNzX3BvaW50ZXIoc3RhLVx1MDAzZXNkYXRhLVx1MDAzZXZpZi5ic3NfY29uZi5jaGFuY3R4X2NvbmYpKVxuLS1cbm5ldC9tYWM4MDIxMS9jZmcuYz0zOTExPWludCBfX2llZWU4MDIxMV9yZXF1ZXN0X3NtcHNfbWdkKHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLFxuLS1cbm5ldC9tYWM4MDIxMS9jZmcuYy0zOTczLVx0XHRcdFx0XHQgYXAsIGFwLFxubmV0L21hYzgwMjExL2NmZy5jOjM5NzQ6XHRcdFx0XHRcdCBpZWVlODAyMTFfdmlmX2lzX21sZChcdTAwMjZzZGF0YS1cdTAwM2V2aWYpID9cbm5ldC9tYWM4MDIxMS9jZmcuYy0zOTc1LVx0XHRcdFx0XHQgbGluay1cdTAwM2VsaW5rX2lkIDogLTEpO1xuLS1cbm5ldC9tYWM4MDIxMS9jZmcuYz00OTU3PXN0YXRpYyBpbnQgaWVlZTgwMjExX3Byb2JlX2NsaWVudChzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuLS1cbm5ldC9tYWM4MDIxMS9jZmcuYy00OTg2LVxubmV0L21hYzgwMjExL2NmZy5jOjQ5ODc6XHRpZiAoaWVlZTgwMjExX3ZpZl9pc19tbGQoXHUwMDI2c2RhdGEtXHUwMDNldmlmKSkge1xubmV0L21hYzgwMjExL2NmZy5jLTQ5ODgtXHRcdGlmIChzdGEtXHUwMDNlc3RhLm1sbykge1xuLS1cbm5ldC9tYWM4MDIxMS9jZmcuYy01MDQxLVx0bWVtY3B5KG51bGxmdW5jLVx1MDAzZWFkZHIxLCBzdGEtXHUwMDNlc3RhLmFkZHIsIEVUSF9BTEVOKTtcbm5ldC9tYWM4MDIxMS9jZmcuYzo1MDQyOlx0aWYgKGllZWU4MDIxMV92aWZfaXNfbWxkKFx1MDAyNnNkYXRhLVx1MDAzZXZpZikgXHUwMDI2XHUwMDI2ICFzdGEtXHUwMDNlc3RhLm1sbykge1xubmV0L21hYzgwMjExL2NmZy5jLTUwNDMtXHRcdG1lbWNweShudWxsZnVuYy1cdTAwM2VhZGRyMiwgY29uZi1cdTAwM2VhZGRyLCBFVEhfQUxFTik7XG4tLVxubmV0L21hYzgwMjExL2RlYnVnLmg9MTI1PWRvIHtcdFx0XHRcdFx0XHRcdFx0XHRcXFxuLS1cbm5ldC9tYWM4MDIxMS9kZWJ1Zy5oLTEzOS1cdGRvIHtcdFx0XHRcdFx0XHRcdFx0XFxcbm5ldC9tYWM4MDIxMS9kZWJ1Zy5oOjE0MDpcdFx0aWYgKGllZWU4MDIxMV92aWZfaXNfbWxkKFx1MDAyNihsaW5rKS1cdTAwM2VzZGF0YS1cdTAwM2V2aWYpKSAgICAgICAgICBcXFxubmV0L21hYzgwMjExL2RlYnVnLmgtMTQxLVx0XHRcdF9zZGF0YV9pbmZvKChsaW5rKS1cdTAwM2VzZGF0YSwgXCYjMzQ7W2xpbmsgJWRdIFwmIzM0OyBmbXQsXHRcXFxuLS1cbm5ldC9tYWM4MDIxMS9kZWJ1Zy5oLTE0OC1cdGRvIHtcdFx0XHRcdFx0XHRcdFx0XFxcbm5ldC9tYWM4MDIxMS9kZWJ1Zy5oOjE0OTpcdFx0aWYgKGllZWU4MDIxMV92aWZfaXNfbWxkKFx1MDAyNihsaW5rKS1cdTAwM2VzZGF0YS1cdTAwM2V2aWYpKSAgICAgICAgICBcXFxubmV0L21hYzgwMjExL2RlYnVnLmgtMTUwLVx0XHRcdF9zZGF0YV9lcnIoKGxpbmspLVx1MDAzZXNkYXRhLCBcJiMzNDtbbGluayAlZF0gXCYjMzQ7IGZtdCxcdFxcXG4tLVxubmV0L21hYzgwMjExL2RlYnVnLmgtMTU5LVx0ZG8ge1x0XHRcdFx0XHRcdFx0XHRcXFxubmV0L21hYzgwMjExL2RlYnVnLmg6MTYwOlx0XHRpZiAoaWVlZTgwMjExX3ZpZl9pc19tbGQoXHUwMDI2c2RhdGEtXHUwMDNldmlmKSlcdFx0XHRcXFxubmV0L21hYzgwMjExL2RlYnVnLmgtMTYxLVx0XHRcdF9zZGF0YV9pbmZvKHNkYXRhLCBcJiMzNDtbbGluayAlZF0gXCYjMzQ7IGZtdCwgbGlua19pZCxcdFxcXG4tLVxubmV0L21hYzgwMjExL2RlYnVnLmgtMTY3LVx0ZG8ge1x0XHRcdFx0XHRcdFx0XHRcXFxubmV0L21hYzgwMjExL2RlYnVnLmg6MTY4Olx0XHRpZiAoaWVlZTgwMjExX3ZpZl9pc19tbGQoXHUwMDI2KHNkYXRhKS1cdTAwM2V2aWYpKVx0XHRcXFxubmV0L21hYzgwMjExL2RlYnVnLmgtMTY5LVx0XHRcdF9zZGF0YV9kYmcocHJpbnQsIHNkYXRhLCBcJiMzNDtbbGluayAlZF0gXCYjMzQ7IGZtdCxcdFxcXG4tLVxubmV0L21hYzgwMjExL2llZWU4MDIxMV9pLmg9MTczOT1pZWVlODAyMTFfZ2V0X3NiYW5kKHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhKVxuLS1cbm5ldC9tYWM4MDIxMS9pZWVlODAyMTFfaS5oLTE3NDQtXG5uZXQvbWFjODAyMTEvaWVlZTgwMjExX2kuaDoxNzQ1Olx0V0FSTl9PTihpZWVlODAyMTFfdmlmX2lzX21sZChcdTAwMjZzZGF0YS1cdTAwM2V2aWYpKTtcbm5ldC9tYWM4MDIxMS9pZWVlODAyMTFfaS5oLTE3NDYtXG4tLVxubmV0L21hYzgwMjExL2lmYWNlLmM9NDc5PXN0YXRpYyB2b2lkIGllZWU4MDIxMV9kb19zdG9wKHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLCBib29sIGdvaW5nX2Rvd24pXG4tLVxubmV0L21hYzgwMjExL2lmYWNlLmMtNTYyLVxubmV0L21hYzgwMjExL2lmYWNlLmM6NTYzOlx0V0FSTihpZWVlODAyMTFfdmlmX2lzX21sZChcdTAwMjZzZGF0YS1cdTAwM2V2aWYpLFxubmV0L21hYzgwMjExL2lmYWNlLmMtNTY0LVx0ICAgICBcJiMzNDtkZXN0cm95aW5nIGludGVyZmFjZSB3aXRoIHZhbGlkIGxpbmtzIDB4JTA0eFxcblwmIzM0Oyxcbi0tXG5uZXQvbWFjODAyMTEvaWZhY2UuYz0xOTc0PXN0YXRpYyBpbnQgaWVlZTgwMjExX3J1bnRpbWVfY2hhbmdlX2lmdHlwZShzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSxcbi0tXG5uZXQvbWFjODAyMTEvaWZhY2UuYy0xOTg3LVx0LyogZm9yIG5vdywgZG9uJiMzOTt0IHN1cHBvcnQgY2hhbmdpbmcgd2hpbGUgbGlua3MgZXhpc3QgKi9cbm5ldC9tYWM4MDIxMS9pZmFjZS5jOjE5ODg6XHRpZiAoaWVlZTgwMjExX3ZpZl9pc19tbGQoXHUwMDI2c2RhdGEtXHUwMDNldmlmKSlcbm5ldC9tYWM4MDIxMS9pZmFjZS5jLTE5ODktXHRcdHJldHVybiAtRUJVU1k7XG4tLVxubmV0L21hYzgwMjExL21haW4uYz0zMzY9dm9pZCBpZWVlODAyMTFfYnNzX2luZm9fY2hhbmdlX25vdGlmeShzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSxcbi0tXG5uZXQvbWFjODAyMTEvbWFpbi5jLTM0Mi1cbm5ldC9tYWM4MDIxMS9tYWluLmM6MzQzOlx0V0FSTl9PTl9PTkNFKGllZWU4MDIxMV92aWZfaXNfbWxkKFx1MDAyNnNkYXRhLVx1MDAzZXZpZikpO1xubmV0L21hYzgwMjExL21haW4uYy0zNDQtXG4tLVxubmV0L21hYzgwMjExL21sbWUuYz0yNDE0PWllZWU4MDIxMV9hc3NvY19hZGRfbWxfZWxlbShzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSxcbi0tXG5uZXQvbWFjODAyMTEvbWxtZS5jLTI0MjgtXG5uZXQvbWFjODAyMTEvbWxtZS5jOjI0Mjk6XHRpZiAoIWllZWU4MDIxMV92aWZfaXNfbWxkKFx1MDAyNnNkYXRhLVx1MDAzZXZpZikpXG5uZXQvbWFjODAyMTEvbWxtZS5jLTI0MzAtXHRcdHJldHVybjtcbi0tXG5uZXQvbWFjODAyMTEvbWxtZS5jPTI1ODI9c3RhdGljIGludCBpZWVlODAyMTFfc2VuZF9hc3NvYyhzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSlcbi0tXG5uZXQvbWFjODAyMTEvbWxtZS5jLTI2MzktXG5uZXQvbWFjODAyMTEvbWxtZS5jOjI2NDA6XHRpZiAoaWVlZTgwMjExX3ZpZl9pc19tbGQoXHUwMDI2c2RhdGEtXHUwMDNldmlmKSkge1xubmV0L21hYzgwMjExL21sbWUuYy0yNjQxLVx0XHQvKiBjb25zaWRlciB0aGUgbXVsdGktbGluayBlbGVtZW50IHdpdGggU1RBIHByb2ZpbGUgKi9cbi0tXG5uZXQvbWFjODAyMTEvbWxtZS5jPTQzOTQ9c3RhdGljIHZvaWQgaWVlZTgwMjExX3NldF9hc3NvY2lhdGVkKHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLFxuLS1cbm5ldC9tYWM4MDIxMS9tbG1lLmMtNDQxNC1cbm5ldC9tYWM4MDIxMS9tbG1lLmM6NDQxNTpcdFx0aWYgKGllZWU4MDIxMV92aWZfaXNfbWxkKFx1MDAyNnNkYXRhLVx1MDAzZXZpZikgXHUwMDI2XHUwMDI2XG5uZXQvbWFjODAyMTEvbWxtZS5jLTQ0MTYtXHRcdCAgICAhKGllZWU4MDIxMV92aWZfdXNhYmxlX2xpbmtzKFx1MDAyNnNkYXRhLVx1MDAzZXZpZikgXHUwMDI2IEJJVChsaW5rX2lkKSkpXG4tLVxubmV0L21hYzgwMjExL21sbWUuYy00NDM2LVxubmV0L21hYzgwMjExL21sbWUuYzo0NDM3Olx0aWYgKGllZWU4MDIxMV92aWZfaXNfbWxkKFx1MDAyNnNkYXRhLVx1MDAzZXZpZikpIHtcbm5ldC9tYWM4MDIxMS9tbG1lLmMtNDQzOC1cdFx0Zm9yIChsaW5rX2lkID0gMDtcbi0tXG5uZXQvbWFjODAyMTEvbWxtZS5jLTQ0NjgtXHQvKiBsZWF2ZSB0aGlzIGhlcmUgdG8gbm90IGNoYW5nZSBvcmRlcmluZyBpbiBub24tTUxPIGNhc2VzICovXG5uZXQvbWFjODAyMTEvbWxtZS5jOjQ0Njk6XHRpZiAoIWllZWU4MDIxMV92aWZfaXNfbWxkKFx1MDAyNnNkYXRhLVx1MDAzZXZpZikpXG5uZXQvbWFjODAyMTEvbWxtZS5jLTQ0NzAtXHRcdGllZWU4MDIxMV9yZWNhbGNfc21wcyhzZGF0YSwgXHUwMDI2c2RhdGEtXHUwMDNlZGVmbGluayk7XG4tLVxubmV0L21hYzgwMjExL21sbWUuYz00NDc2PXN0YXRpYyB2b2lkIGllZWU4MDIxMV9tbF9yZWNvbmZfcmVzZXQoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEpXG4tLVxubmV0L21hYzgwMjExL21sbWUuYy00NDgwLVxubmV0L21hYzgwMjExL21sbWUuYzo0NDgxOlx0aWYgKCFpZWVlODAyMTFfdmlmX2lzX21sZChcdTAwMjZzZGF0YS1cdTAwM2V2aWYpIHx8XG5uZXQvbWFjODAyMTEvbWxtZS5jLTQ0ODItXHQgICAgIShzZGF0YS1cdTAwM2V1Lm1nZC5yZWNvbmYuYWRkZWRfbGlua3MgfFxuLS1cbm5ldC9tYWM4MDIxMS9tbG1lLmM9NDUwOD1zdGF0aWMgdm9pZCBpZWVlODAyMTFfc2V0X2Rpc2Fzc29jKHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLFxuLS1cbm5ldC9tYWM4MDIxMS9tbG1lLmMtNDYzMi1cdC8qIGZpbmFsbHkgcmVzZXQgYWxsIEJTUyAvIGNvbmZpZyBwYXJhbWV0ZXJzICovXG5uZXQvbWFjODAyMTEvbWxtZS5jOjQ2MzM6XHRpZiAoIWllZWU4MDIxMV92aWZfaXNfbWxkKFx1MDAyNnNkYXRhLVx1MDAzZXZpZikpXG5uZXQvbWFjODAyMTEvbWxtZS5jLTQ2MzQtXHRcdGNoYW5nZWQgfD0gaWVlZTgwMjExX3Jlc2V0X2VycF9pbmZvKHNkYXRhKTtcbi0tXG5uZXQvbWFjODAyMTEvbWxtZS5jLTQ2NTctXHQgICAgICAgc2l6ZW9mKHNkYXRhLVx1MDAzZXZpZi5ic3NfY29uZi5tdV9ncm91cC5wb3NpdGlvbikpO1xubmV0L21hYzgwMjExL21sbWUuYzo0NjU4Olx0aWYgKCFpZWVlODAyMTFfdmlmX2lzX21sZChcdTAwMjZzZGF0YS1cdTAwM2V2aWYpKVxubmV0L21hYzgwMjExL21sbWUuYy00NjU5LVx0XHRjaGFuZ2VkIHw9IEJTU19DSEFOR0VEX01VX0dST1VQUztcbi0tXG5uZXQvbWFjODAyMTEvbWxtZS5jLTQ2NzEtXHRzZGF0YS1cdTAwM2V2aWYuYnNzX2NvbmYucW9zID0gZmFsc2U7XG5uZXQvbWFjODAyMTEvbWxtZS5jOjQ2NzI6XHRpZiAoIWllZWU4MDIxMV92aWZfaXNfbWxkKFx1MDAyNnNkYXRhLVx1MDAzZXZpZikpIHtcbm5ldC9tYWM4MDIxMS9tbG1lLmMtNDY3My1cdFx0Y2hhbmdlZCB8PSBCU1NfQ0hBTkdFRF9RT1M7XG4tLVxubmV0L21hYzgwMjExL21sbWUuYz00OTcyPXN0cnVjdCBza19idWZmICppZWVlODAyMTFfYXBfcHJvYmVyZXFfZ2V0KHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxuLS1cbm5ldC9tYWM4MDIxMS9tbG1lLmMtNDk4NC1cdGlmIChXQVJOX09OKHNkYXRhLVx1MDAzZXZpZi50eXBlICE9IE5MODAyMTFfSUZUWVBFX1NUQVRJT04gfHxcbm5ldC9tYWM4MDIxMS9tbG1lLmM6NDk4NTpcdFx0ICAgIGllZWU4MDIxMV92aWZfaXNfbWxkKFx1MDAyNnNkYXRhLVx1MDAzZXZpZikpKVxubmV0L21hYzgwMjExL21sbWUuYy00OTg2LVx0XHRyZXR1cm4gTlVMTDtcbi0tXG5uZXQvbWFjODAyMTEvbWxtZS5jPTUzMDA9c3RhdGljIHZvaWQgaWVlZTgwMjExX2Rlc3Ryb3lfYXNzb2NfZGF0YShzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSxcbi0tXG5uZXQvbWFjODAyMTEvbWxtZS5jLTUzMzUtXG5uZXQvbWFjODAyMTEvbWxtZS5jOjUzMzY6XHRcdFx0aWYgKGllZWU4MDIxMV92aWZfaXNfbWxkKFx1MDAyNnNkYXRhLVx1MDAzZXZpZikpXG5uZXQvbWFjODAyMTEvbWxtZS5jLTUzMzctXHRcdFx0XHRkYXRhLmFwX21sZF9hZGRyID0gYXNzb2NfZGF0YS1cdTAwM2VhcF9hZGRyO1xuLS1cbm5ldC9tYWM4MDIxMS9tbG1lLmM9NjkyND1zdGF0aWMgYm9vbCBpZWVlODAyMTFfYXNzb2Nfc3VjY2VzcyhzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSxcbi0tXG5uZXQvbWFjODAyMTEvbWxtZS5jLTY5NDgtXG5uZXQvbWFjODAyMTEvbWxtZS5jOjY5NDk6XHRpZiAoaWVlZTgwMjExX3ZpZl9pc19tbGQoXHUwMDI2c2RhdGEtXHUwMDNldmlmKSkge1xubmV0L21hYzgwMjExL21sbWUuYy02OTUwLVx0XHRpZiAoIWVsZW1zLVx1MDAzZW1sX2Jhc2ljKVxuLS1cbm5ldC9tYWM4MDIxMS9tbG1lLmMtNzAxMC1cbm5ldC9tYWM4MDIxMS9tbG1lLmM6NzAxMTpcdFx0aWYgKGllZWU4MDIxMV92aWZfaXNfbWxkKFx1MDAyNnNkYXRhLVx1MDAzZXZpZikpXG5uZXQvbWFjODAyMTEvbWxtZS5jLTcwMTItXHRcdFx0bGlua19pbmZvKGxpbmssXG4tLVxubmV0L21hYzgwMjExL21sbWUuYz03MTM1PXN0YXRpYyB2b2lkIGllZWU4MDIxMV9yeF9tZ210X2Fzc29jX3Jlc3Aoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsXG4tLVxubmV0L21hYzgwMjExL21sbWUuYy03MjcyLVxubmV0L21hYzgwMjExL21sbWUuYzo3MjczOlx0XHRpZiAoaWVlZTgwMjExX3ZpZl9pc19tbGQoXHUwMDI2c2RhdGEtXHUwMDNldmlmKSkge1xubmV0L21hYzgwMjExL21sbWUuYy03Mjc0LVx0XHRcdHN0cnVjdCBpZWVlODAyMTFfbWxlX2Jhc2ljX2NvbW1vbl9pbmZvICpjb21tb247XG4tLVxubmV0L21hYzgwMjExL21sbWUuYy03MzM5LVxubmV0L21hYzgwMjExL21sbWUuYzo3MzQwOlx0aWYgKGllZWU4MDIxMV92aWZfaXNfbWxkKFx1MDAyNnNkYXRhLVx1MDAzZXZpZikpIHtcbm5ldC9tYWM4MDIxMS9tbG1lLmMtNzM0MS1cdFx0ZXRoZXJfYWRkcl9jb3B5KGFwX21sZF9hZGRyLCBzZGF0YS1cdTAwM2V2aWYuY2ZnLmFwX2FkZHIpO1xuLS1cbm5ldC9tYWM4MDIxMS9tbG1lLmM9NzYzMT1zdGF0aWMgdm9pZCBpZWVlODAyMTFfbWxfcmVjb25maWd1cmF0aW9uKHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLFxuLS1cbm5ldC9tYWM4MDIxMS9tbG1lLmMtNzYzOS1cbm5ldC9tYWM4MDIxMS9tbG1lLmM6NzY0MDpcdGlmICghaWVlZTgwMjExX3ZpZl9pc19tbGQoXHUwMDI2c2RhdGEtXHUwMDNldmlmKSB8fCAhZWxlbXMtXHUwMDNlbWxfcmVjb25mKVxubmV0L21hYzgwMjExL21sbWUuYy03NjQxLVx0XHRyZXR1cm47XG4tLVxubmV0L21hYzgwMjExL21sbWUuYz03ODAxPXN0YXRpYyB2b2lkIGllZWU4MDIxMV9wcm9jZXNzX2Fkdl90dGxtKHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLFxuLS1cbm5ldC9tYWM4MDIxMS9tbG1lLmMtNzgwNy1cbm5ldC9tYWM4MDIxMS9tbG1lLmM6NzgwODpcdGlmICghaWVlZTgwMjExX3ZpZl9pc19tbGQoXHUwMDI2c2RhdGEtXHUwMDNldmlmKSlcbm5ldC9tYWM4MDIxMS9tbG1lLmMtNzgwOS1cdFx0cmV0dXJuO1xuLS1cbm5ldC9tYWM4MDIxMS9tbG1lLmM9ODA1Nj1zdGF0aWMgdm9pZCBpZWVlODAyMTFfcnhfbWdtdF9iZWFjb24oc3RydWN0IGllZWU4MDIxMV9saW5rX2RhdGEgKmxpbmssXG4tLVxubmV0L21hYzgwMjExL21sbWUuYy04MTE3LVx0aWYgKGlmbWdkLVx1MDAzZWFzc29jX2RhdGEgXHUwMDI2XHUwMDI2IGlmbWdkLVx1MDAzZWFzc29jX2RhdGEtXHUwMDNlbmVlZF9iZWFjb24gXHUwMDI2XHUwMDI2XG5uZXQvbWFjODAyMTEvbWxtZS5jOjgxMTg6XHQgICAgIVdBUk5fT04oaWVlZTgwMjExX3ZpZl9pc19tbGQoXHUwMDI2c2RhdGEtXHUwMDNldmlmKSkgXHUwMDI2XHUwMDI2XG5uZXQvbWFjODAyMTEvbWxtZS5jLTgxMTktXHQgICAgaWVlZTgwMjExX3J4X291cl9iZWFjb24oYnNzaWQsIGlmbWdkLVx1MDAzZWFzc29jX2RhdGEtXHUwMDNlbGlua1swXS5ic3MpKSB7XG4tLVxubmV0L21hYzgwMjExL21sbWUuYz04NTQxPWludCBpZWVlODAyMTFfcmVxX25lZ190dGxtKHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLFxuLS1cbm5ldC9tYWM4MDIxMS9tbG1lLmMtODU0Ni1cbm5ldC9tYWM4MDIxMS9tbG1lLmM6ODU0NzpcdGlmICghaWVlZTgwMjExX3ZpZl9pc19tbGQoXHUwMDI2c2RhdGEtXHUwMDNldmlmKSB8fFxubmV0L21hYzgwMjExL21sbWUuYy04NTQ4LVx0ICAgICEoc2RhdGEtXHUwMDNldmlmLmNmZy5tbGRfY2FwYV9vcCBcdTAwMjZcbi0tXG5uZXQvbWFjODAyMTEvbWxtZS5jPTg3MDk9c3RhdGljIHZvaWQgaWVlZTgwMjExX3Byb2Nlc3NfbmVnX3R0bG1fcmVxKHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLFxuLS1cbm5ldC9tYWM4MDIxMS9tbG1lLmMtODcyMC1cbm5ldC9tYWM4MDIxMS9tbG1lLmM6ODcyMTpcdGlmICghaWVlZTgwMjExX3ZpZl9pc19tbGQoXHUwMDI2c2RhdGEtXHUwMDNldmlmKSlcbm5ldC9tYWM4MDIxMS9tbG1lLmMtODcyMi1cdFx0cmV0dXJuO1xuLS1cbm5ldC9tYWM4MDIxMS9tbG1lLmM9ODc3Mz1zdGF0aWMgdm9pZCBpZWVlODAyMTFfcHJvY2Vzc19uZWdfdHRsbV9yZXMoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsXG4tLVxubmV0L21hYzgwMjExL21sbWUuYy04Nzc2LXtcbm5ldC9tYWM4MDIxMS9tbG1lLmM6ODc3NzpcdGlmICghaWVlZTgwMjExX3ZpZl9pc19tbGQoXHUwMDI2c2RhdGEtXHUwMDNldmlmKSB8fFxubmV0L21hYzgwMjExL21sbWUuYy04Nzc4LVx0ICAgIG1nbXQtXHUwMDNldS5hY3Rpb24udHRsbV9yZXMuZGlhbG9nX3Rva2VuICE9IHNkYXRhLVx1MDAzZXUubWdkLmRpYWxvZ190b2tlbl9hbGxvYylcbi0tXG5uZXQvbWFjODAyMTEvbWxtZS5jPTg4OTU9c3RhdGljIGludCBpZWVlODAyMTFfYXV0aChzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSlcbi0tXG5uZXQvbWFjODAyMTEvbWxtZS5jLTg5MTItXHRpZiAoYXV0aF9kYXRhLVx1MDAzZWFsZ29yaXRobSA9PSBXTEFOX0FVVEhfRVBQS0UgXHUwMDI2XHUwMDI2XG5uZXQvbWFjODAyMTEvbWxtZS5jOjg5MTM6XHQgICAgaWVlZTgwMjExX3ZpZl9pc19tbGQoXHUwMDI2c2RhdGEtXHUwMDNldmlmKSBcdTAwMjZcdTAwMjZcbm5ldC9tYWM4MDIxMS9tbG1lLmMtODkxNC1cdCAgICAhY2ZnODAyMTFfZmluZF9leHRfZWxlbShXTEFOX0VJRF9FWFRfRUhUX01VTFRJX0xJTkssXG4tLVxubmV0L21hYzgwMjExL21sbWUuYz05ODQyPWludCBpZWVlODAyMTFfbWdkX2F1dGgoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsXG4tLVxubmV0L21hYzgwMjExL21sbWUuYy0xMDA0MC0gZXJyX2NsZWFyOlxubmV0L21hYzgwMjExL21sbWUuYzoxMDA0MTpcdGlmICghaWVlZTgwMjExX3ZpZl9pc19tbGQoXHUwMDI2c2RhdGEtXHUwMDNldmlmKSkge1xubmV0L21hYzgwMjExL21sbWUuYy0xMDA0Mi1cdFx0ZXRoX3plcm9fYWRkcihzZGF0YS1cdTAwM2VkZWZsaW5rLnUubWdkLmJzc2lkKTtcbi0tXG5uZXQvbWFjODAyMTEvbWxtZS5jPTEwODY4PWllZWU4MDIxMV9wcm9jZXNzX21sX3JlY29uZl9yZXNwKHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLFxuLS1cbm5ldC9tYWM4MDIxMS9tbG1lLmMtMTA4ODQtXG5uZXQvbWFjODAyMTEvbWxtZS5jOjEwODg1Olx0aWYgKCFpZWVlODAyMTFfdmlmX2lzX21sZChcdTAwMjZzZGF0YS1cdTAwM2V2aWYpIHx8XG5uZXQvbWFjODAyMTEvbWxtZS5jLTEwODg2LVx0ICAgIGxlbiBcdTAwM2MgSUVFRTgwMjExX01JTl9BQ1RJT05fU0laRShtbF9yZWNvbmZfcmVzcCkgfHxcbi0tXG5uZXQvbWFjODAyMTEvbWxtZS5jPTExMzMwPWludCBpZWVlODAyMTFfbWdkX2Fzc29jX21sX3JlY29uZihzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSxcbi0tXG5uZXQvbWFjODAyMTEvbWxtZS5jLTExMzQxLVxubmV0L21hYzgwMjExL21sbWUuYzoxMTM0MjpcdGlmICghaWVlZTgwMjExX3ZpZl9pc19tbGQoXHUwMDI2c2RhdGEtXHUwMDNldmlmKSB8fFxubmV0L21hYzgwMjExL21sbWUuYy0xMTM0My1cdCAgICAhKHNkYXRhLVx1MDAzZXZpZi5jZmcubWxkX2NhcGFfb3AgXHUwMDI2XG4tLVxubmV0L21hYzgwMjExL21sbWUuYz0xMTU1ND1zdGF0aWMgYm9vbCBpZWVlODAyMTFfbWdkX2VwY3Nfc3VwcChzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSlcbi0tXG5uZXQvbWFjODAyMTEvbWxtZS5jLTExNTYwLVxubmV0L21hYzgwMjExL21sbWUuYzoxMTU2MTpcdGlmICghaWVlZTgwMjExX3ZpZl9pc19tbGQoXHUwMDI2c2RhdGEtXHUwMDNldmlmKSlcbm5ldC9tYWM4MDIxMS9tbG1lLmMtMTE1NjItXHRcdHJldHVybiBmYWxzZTtcbi0tXG5uZXQvbWFjODAyMTEvbWxtZS5jPTExNjI4PXN0YXRpYyB2b2lkIGllZWU4MDIxMV9tbF9lcGNzKHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLFxuLS1cbm5ldC9tYWM4MDIxMS9tbG1lLmMtMTE2MzYtXG5uZXQvbWFjODAyMTEvbWxtZS5jOjExNjM3Olx0aWYgKCFpZWVlODAyMTFfdmlmX2lzX21sZChcdTAwMjZzZGF0YS1cdTAwM2V2aWYpIHx8ICFlbGVtcy1cdTAwM2VtbF9lcGNzKVxubmV0L21hYzgwMjExL21sbWUuYy0xMTYzOC1cdFx0cmV0dXJuO1xuLS1cbm5ldC9tYWM4MDIxMS9tbG1lLmM9MTE3NDY9c3RhdGljIHZvaWQgaWVlZTgwMjExX3Byb2Nlc3NfZXBjc190ZWFyZG93bihzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSxcbi0tXG5uZXQvbWFjODAyMTEvbWxtZS5jLTExNzQ5LXtcbm5ldC9tYWM4MDIxMS9tbG1lLmM6MTE3NTA6XHRpZiAoIWllZWU4MDIxMV92aWZfaXNfbWxkKFx1MDAyNnNkYXRhLVx1MDAzZXZpZikgfHxcbm5ldC9tYWM4MDIxMS9tbG1lLmMtMTE3NTEtXHQgICAgIXNkYXRhLVx1MDAzZXUubWdkLmVwY3MuZW5hYmxlZClcbi0tXG5uZXQvbWFjODAyMTEvcmF0ZS5jPTMxPXZvaWQgcmF0ZV9jb250cm9sX3JhdGVfaW5pdChzdHJ1Y3QgbGlua19zdGFfaW5mbyAqbGlua19zdGEpXG4tLVxubmV0L21hYzgwMjExL3JhdGUuYy00NC1cdC8qIFNXIHJhdGUgY29udHJvbCBpc24mIzM5O3Qgc3VwcG9ydGVkIHdpdGggTUxPIHJpZ2h0IG5vdyAqL1xubmV0L21hYzgwMjExL3JhdGUuYzo0NTpcdGlmIChXQVJOX09OKGllZWU4MDIxMV92aWZfaXNfbWxkKFx1MDAyNnN0YS1cdTAwM2VzZGF0YS1cdTAwM2V2aWYpKSlcbm5ldC9tYWM4MDIxMS9yYXRlLmMtNDYtXHRcdHJldHVybjtcbi0tXG5uZXQvbWFjODAyMTEvcnguYz0xNTIxPWllZWU4MDIxMV9yeF9oX2NoZWNrX2R1cChzdHJ1Y3QgaWVlZTgwMjExX3J4X2RhdGEgKnJ4KVxuLS1cbm5ldC9tYWM4MDIxMS9yeC5jLTE1NTAtXG5uZXQvbWFjODAyMTEvcnguYzoxNTUxOlx0XHRpZiAoIWllZWU4MDIxMV92aWZfaXNfbWxkKFx1MDAyNnNkYXRhLVx1MDAzZXZpZikgfHxcbm5ldC9tYWM4MDIxMS9yeC5jLTE1NTItXHRcdCAgICBzZGF0YS1cdTAwM2V2aWYudHlwZSAhPSBOTDgwMjExX0lGVFlQRV9TVEFUSU9OKVxuLS1cbm5ldC9tYWM4MDIxMS9yeC5jPTI2ODQ9Ym9vbCBpZWVlODAyMTFfaXNfb3VyX2FkZHIoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsXG4tLVxubmV0L21hYzgwMjExL3J4LmMtMjY5Mi1cbm5ldC9tYWM4MDIxMS9yeC5jOjI2OTM6XHRpZiAoIWllZWU4MDIxMV92aWZfaXNfbWxkKFx1MDAyNnNkYXRhLVx1MDAzZXZpZikpXG5uZXQvbWFjODAyMTEvcnguYy0yNjk0LVx0XHRyZXR1cm4gZmFsc2U7XG4tLVxubmV0L21hYzgwMjExL3J4LmM9NDM0MT1zdGF0aWMgYm9vbCBpZWVlODAyMTFfcnhfZGF0YV9zZXRfc3RhKHN0cnVjdCBpZWVlODAyMTFfcnhfZGF0YSAqcngsXG4tLVxubmV0L21hYzgwMjExL3J4LmMtNDM1Ni1cdGlmIChsaW5rX2lkIFx1MDAzYyAwKSB7XG5uZXQvbWFjODAyMTEvcnguYzo0MzU3Olx0XHRpZiAoaWVlZTgwMjExX3ZpZl9pc19tbGQoXHUwMDI2cngtXHUwMDNlc2RhdGEtXHUwMDNldmlmKSBcdTAwMjZcdTAwMjZcbm5ldC9tYWM4MDIxMS9yeC5jLTQzNTgtXHRcdCAgICBzdGEgXHUwMDI2XHUwMDI2ICFzdGEtXHUwMDNlc3RhLnZhbGlkX2xpbmtzKVxuLS1cbm5ldC9tYWM4MDIxMS9yeC5jPTUyOTY9c3RhdGljIGJvb2wgaWVlZTgwMjExX3J4X2Zvcl9pbnRlcmZhY2Uoc3RydWN0IGllZWU4MDIxMV9yeF9kYXRhICpyeCxcbi0tXG5uZXQvbWFjODAyMTEvcnguYy01MzE5LVx0XHRcdGxpbmtfaWQgPSBzdGF0dXMtXHUwMDNlbGlua19pZDtcbm5ldC9tYWM4MDIxMS9yeC5jOjUzMjA6XHRcdH0gZWxzZSBpZiAoaWVlZTgwMjExX3ZpZl9pc19tbGQoXHUwMDI2cngtXHUwMDNlc2RhdGEtXHUwMDNldmlmKSBcdTAwMjZcdTAwMjZcbm5ldC9tYWM4MDIxMS9yeC5jLTUzMjEtXHRcdFx0ICAgc3RhdHVzLVx1MDAzZWZyZXEpIHtcbi0tXG5uZXQvbWFjODAyMTEvc2Nhbi5jPTE2OD1pZWVlODAyMTFfYnNzX2luZm9fdXBkYXRlKHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsLFxuLS1cbm5ldC9tYWM4MDIxMS9zY2FuLmMtMjA1LVx0XHQgKi9cbm5ldC9tYWM4MDIxMS9zY2FuLmM6MjA2Olx0XHRpZiAoaWVlZTgwMjExX3ZpZl9pc19tbGQoXHUwMDI2c2Nhbl9zZGF0YS1cdTAwM2V2aWYpKSB7XG5uZXQvbWFjODAyMTEvc2Nhbi5jLTIwNy1cdFx0XHRpZiAocnhfc3RhdHVzLVx1MDAzZWxpbmtfdmFsaWQpIHtcbi0tXG5uZXQvbWFjODAyMTEvc2Nhbi5jPTczMT1zdGF0aWMgaW50IF9faWVlZTgwMjExX3N0YXJ0X3NjYW4oc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsXG4tLVxubmV0L21hYzgwMjExL3NjYW4uYy03NDUtXHQgKi9cbm5ldC9tYWM4MDIxMS9zY2FuLmM6NzQ2Olx0aWYgKGllZWU4MDIxMV92aWZfaXNfbWxkKFx1MDAyNnNkYXRhLVx1MDAzZXZpZikgXHUwMDI2XHUwMDI2IHJlcS1cdTAwM2V0c2ZfcmVwb3J0X2xpbmtfaWQgXHUwMDNlPSAwIFx1MDAyNlx1MDAyNlxubmV0L21hYzgwMjExL3NjYW4uYy03NDctXHQgICAgIShzZGF0YS1cdTAwM2V2aWYuYWN0aXZlX2xpbmtzIFx1MDAyNiBCSVQocmVxLVx1MDAzZXRzZl9yZXBvcnRfbGlua19pZCkpKVxuLS1cbm5ldC9tYWM4MDIxMS90eC5jPTgyMD1pZWVlODAyMTFfdHhfaF9zZXF1ZW5jZShzdHJ1Y3QgaWVlZTgwMjExX3R4X2RhdGEgKnR4KVxuLS1cbm5ldC9tYWM4MDIxMS90eC5jLTg0Ny1cdGlmICh1bmxpa2VseShpc19tdWx0aWNhc3RfZXRoZXJfYWRkcihoZHItXHUwMDNlYWRkcjEpIFx1MDAyNlx1MDAyNlxubmV0L21hYzgwMjExL3R4LmM6ODQ4Olx0XHQgICAgIGllZWU4MDIxMV92aWZfaXNfbWxkKGluZm8tXHUwMDNlY29udHJvbC52aWYpIFx1MDAyNlx1MDAyNlxubmV0L21hYzgwMjExL3R4LmMtODQ5LVx0XHQgICAgIGluZm8tXHUwMDNlY29udHJvbC52aWYtXHUwMDNldHlwZSA9PSBOTDgwMjExX0lGVFlQRV9BUCkpIHtcbi0tXG5uZXQvbWFjODAyMTEvdHguYz0yNjMxPXN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqaWVlZTgwMjExX2J1aWxkX2hkcihzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSxcbi0tXG5uZXQvbWFjODAyMTEvdHguYy0yNjY3LVxubmV0L21hYzgwMjExL3R4LmM6MjY2ODpcdGlmICghaWVlZTgwMjExX3ZpZl9pc19tbGQoXHUwMDI2c2RhdGEtXHUwMDNldmlmKSlcbm5ldC9tYWM4MDIxMS90eC5jLTI2NjktXHRcdGNoYW5jdHhfY29uZiA9XG4tLVxubmV0L21hYzgwMjExL3R4LmMtMjY4NC1cdFx0fVxubmV0L21hYzgwMjExL3R4LmM6MjY4NTpcdFx0aWYgKCFpZWVlODAyMTFfdmlmX2lzX21sZChcdTAwMjZzZGF0YS1cdTAwM2V2aWYpKSB7XG5uZXQvbWFjODAyMTEvdHguYy0yNjg2LVx0XHRcdHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKmFwX3NkYXRhO1xuLS1cbm5ldC9tYWM4MDIxMS90eC5jLTI3MDItXG5uZXQvbWFjODAyMTEvdHguYzoyNzAzOlx0XHRpZiAoaWVlZTgwMjExX3ZpZl9pc19tbGQoXHUwMDI2c2RhdGEtXHUwMDNldmlmKSBcdTAwMjZcdTAwMjYgc3RhIFx1MDAyNlx1MDAyNiAhc3RhLVx1MDAzZXN0YS5tbG8pIHtcbm5ldC9tYWM4MDIxMS90eC5jLTI3MDQtXHRcdFx0c3RydWN0IGllZWU4MDIxMV9saW5rX2RhdGEgKmxpbms7XG4tLVxubmV0L21hYzgwMjExL3R4LmMtMjg4MS1cdFx0XHRiYW5kID0gTlVNX05MODAyMTFfQkFORFM7XG5uZXQvbWFjODAyMTEvdHguYzoyODgyOlx0XHR9IGVsc2UgaWYgKCFpZWVlODAyMTFfdmlmX2lzX21sZChcdTAwMjZzZGF0YS1cdTAwM2V2aWYpKSB7XG5uZXQvbWFjODAyMTEvdHguYy0yODgzLVx0XHRcdHJldCA9IC1FTk9UQ09OTjtcbi0tXG5uZXQvbWFjODAyMTEvdHguYz0zMDc4PXZvaWQgaWVlZTgwMjExX2NoZWNrX2Zhc3RfeG1pdChzdHJ1Y3Qgc3RhX2luZm8gKnN0YSlcbi0tXG5uZXQvbWFjODAyMTEvdHguYy0zMTI3LVxubmV0L21hYzgwMjExL3R4LmM6MzEyODpcdGlmICghaWVlZTgwMjExX3ZpZl9pc19tbGQoXHUwMDI2c2RhdGEtXHUwMDNldmlmKSkge1xubmV0L21hYzgwMjExL3R4LmMtMzEyOS1cdFx0cmN1X3JlYWRfbG9jaygpO1xuLS1cbm5ldC9tYWM4MDIxMS90eC5jLTMyMDYtXHRcdGJ1aWxkLmRhX29mZnMgPSBvZmZzZXRvZihzdHJ1Y3QgaWVlZTgwMjExX2hkciwgYWRkcjEpO1xubmV0L21hYzgwMjExL3R4LmM6MzIwNzpcdFx0aWYgKHN0YS1cdTAwM2VzdGEubWxvIHx8ICFpZWVlODAyMTFfdmlmX2lzX21sZChcdTAwMjZzZGF0YS1cdTAwM2V2aWYpKSB7XG5uZXQvbWFjODAyMTEvdHguYy0zMjA4LVx0XHRcdG1lbWNweShoZHItXHUwMDNlYWRkcjIsIHNkYXRhLVx1MDAzZXZpZi5hZGRyLCBFVEhfQUxFTik7XG4tLVxubmV0L21hYzgwMjExL3R4LmM9NDU2MT1uZXRkZXZfdHhfdCBpZWVlODAyMTFfc3ViaWZfc3RhcnRfeG1pdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuLS1cbm5ldC9tYWM4MDIxMS90eC5jLTQ1ODMtXHRcdFx0XHRcdFx0ICAgICBOVUxMKTtcbm5ldC9tYWM4MDIxMS90eC5jOjQ1ODQ6XHR9IGVsc2UgaWYgKGllZWU4MDIxMV92aWZfaXNfbWxkKFx1MDAyNnNkYXRhLVx1MDAzZXZpZikgXHUwMDI2XHUwMDI2XG5uZXQvbWFjODAyMTEvdHguYy00NTg1LVx0XHQgICAoKHNkYXRhLVx1MDAzZXZpZi50eXBlID09IE5MODAyMTFfSUZUWVBFX0FQIFx1MDAyNlx1MDAyNlxuLS1cbm5ldC9tYWM4MDIxMS90eC5jPTQ3NTE9c3RhdGljIGJvb2wgaWVlZTgwMjExX2NoZWNrX21jYXN0X29mZmxvYWQoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsXG4tLVxubmV0L21hYzgwMjExL3R4LmMtNDc1NS1cbm5ldC9tYWM4MDIxMS90eC5jOjQ3NTY6XHRpZiAoKGllZWU4MDIxMV92aWZfaXNfbWxkKFx1MDAyNnNkYXRhLVx1MDAzZXZpZikgXHUwMDI2XHUwMDI2XG5uZXQvbWFjODAyMTEvdHguYy00NzU3LVx0ICAgICAoc2RhdGEtXHUwMDNldmlmLnR5cGUgPT0gTkw4MDIxMV9JRlRZUEVfQVAgXHUwMDI2XHUwMDI2XG4tLVxubmV0L21hYzgwMjExL3R4LmM9NDkxMT1zdGF0aWMgYm9vbCBpZWVlODAyMTFfdHhfcGVuZGluZ19za2Ioc3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwsXG4tLVxubmV0L21hYzgwMjExL3R4LmMtNDkyNC1cdFx0LyogdXBkYXRlIGJhbmQgb25seSBmb3Igbm9uLU1MRCAqL1xubmV0L21hYzgwMjExL3R4LmM6NDkyNTpcdFx0aWYgKCFpZWVlODAyMTFfdmlmX2lzX21sZChcdTAwMjZzZGF0YS1cdTAwM2V2aWYpKSB7XG5uZXQvbWFjODAyMTEvdHguYy00OTI2LVx0XHRcdGNoYW5jdHhfY29uZiA9XG4tLVxubmV0L21hYzgwMjExL3R4LmM9NjM5Nj12b2lkIF9faWVlZTgwMjExX3R4X3NrYl90aWRfYmFuZChzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSxcbi0tXG5uZXQvbWFjODAyMTEvdHguYy02NDEzLVxubmV0L21hYzgwMjExL3R4LmM6NjQxNDpcdGlmICghaWVlZTgwMjExX3ZpZl9pc19tbGQoXHUwMDI2c2RhdGEtXHUwMDNldmlmKSkge1xubmV0L21hYzgwMjExL3R4LmMtNjQxNS1cdFx0bGluayA9IDA7XG4tLVxubmV0L21hYzgwMjExL3R4LmM9NjQ1Mz12b2lkIGllZWU4MDIxMV90eF9za2JfdGlkKHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLFxuLS1cbm5ldC9tYWM4MDIxMS90eC5jLTY0NjItXHRcdGJhbmQgPSBOVU1fTkw4MDIxMV9CQU5EUztcbm5ldC9tYWM4MDIxMS90eC5jOjY0NjM6XHR9IGVsc2UgaWYgKCFpZWVlODAyMTFfdmlmX2lzX21sZChcdTAwMjZzZGF0YS1cdTAwM2V2aWYpKSB7XG5uZXQvbWFjODAyMTEvdHguYy02NDY0LVx0XHRXQVJOX09OKGxpbmtfaWQgXHUwMDNlPSAwKTtcbi0tXG5uZXQvbWFjODAyMTEvdXRpbC5jPTExMzQ9dm9pZCBpZWVlODAyMTFfc2VuZF9hdXRoKHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLFxuLS1cbm5ldC9tYWM4MDIxMS91dGlsLmMtMTE0Mi1cdHN0cnVjdCBpZWVlODAyMTFfbWdtdCAqbWdtdDtcbm5ldC9tYWM4MDIxMS91dGlsLmM6MTE0MzpcdGJvb2wgbXVsdGlfbGluayA9IGllZWU4MDIxMV92aWZfaXNfbWxkKFx1MDAyNnNkYXRhLVx1MDAzZXZpZik7XG5uZXQvbWFjODAyMTEvdXRpbC5jLTExNDQtXHRzdHJ1Y3Qge1xuLS1cbm5ldC9tYWM4MDIxMS91dGlsLmM9MTg4Mj1pbnQgaWVlZTgwMjExX3JlY29uZmlnKHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsKVxuLS1cbm5ldC9tYWM4MDIxMS91dGlsLmMtMjA3MS1cbm5ldC9tYWM4MDIxMS91dGlsLmM6MjA3MjpcdFx0aWYgKGllZWU4MDIxMV92aWZfaXNfbWxkKFx1MDAyNnNkYXRhLVx1MDAzZXZpZikpIHtcbm5ldC9tYWM4MDIxMS91dGlsLmMtMjA3My1cdFx0XHRzdHJ1Y3QgaWVlZTgwMjExX2Jzc19jb25mICpvbGRbSUVFRTgwMjExX01MRF9NQVhfTlVNX0xJTktTXSA9IHtcbi0tXG5uZXQvbWFjODAyMTEvdXRpbC5jLTIxMjgtXG5uZXQvbWFjODAyMTEvdXRpbC5jOjIxMjk6XHRcdGlmICghaWVlZTgwMjExX3ZpZl9pc19tbGQoXHUwMDI2c2RhdGEtXHUwMDNldmlmKSlcbm5ldC9tYWM4MDIxMS91dGlsLmMtMjEzMC1cdFx0XHRjaGFuZ2VkIHw9IEJTU19DSEFOR0VEX0lETEU7XG4tLVxubmV0L21hYzgwMjExL3V0aWwuYy0yMTMzLVx0XHRjYXNlIE5MODAyMTFfSUZUWVBFX1NUQVRJT046XG5uZXQvbWFjODAyMTEvdXRpbC5jOjIxMzQ6XHRcdFx0aWYgKCFpZWVlODAyMTFfdmlmX2lzX21sZChcdTAwMjZzZGF0YS1cdTAwM2V2aWYpKSB7XG5uZXQvbWFjODAyMTEvdXRpbC5jLTIxMzUtXHRcdFx0XHRjaGFuZ2VkIHw9IEJTU19DSEFOR0VEX0FTU09DIHxcbi0tXG5uZXQvbWFjODAyMTEvdXRpbC5jLTIxNzEtXG5uZXQvbWFjODAyMTEvdXRpbC5jOjIxNzI6XHRcdFx0aWYgKGllZWU4MDIxMV92aWZfaXNfbWxkKFx1MDAyNnNkYXRhLVx1MDAzZXZpZikpXG5uZXQvbWFjODAyMTEvdXRpbC5jLTIxNzMtXHRcdFx0XHRpZWVlODAyMTFfdmlmX2NmZ19jaGFuZ2Vfbm90aWZ5KHNkYXRhLFxuLS1cbm5ldC9tYWM4MDIxMS91dGlsLmMtMjE4NS1cbm5ldC9tYWM4MDIxMS91dGlsLmM6MjE4NjpcdFx0XHRcdGlmIChpZWVlODAyMTFfdmlmX2lzX21sZChcdTAwMjZzZGF0YS1cdTAwM2V2aWYpKSB7XG5uZXQvbWFjODAyMTEvdXRpbC5jLTIxODctXHRcdFx0XHRcdGllZWU4MDIxMV9yZWNvbmZpZ19hcF9saW5rcyhsb2NhbCxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjIgMTc6NTI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTg3OTEKCQkJCQkJCW91dHB1dDogMzMKCQkJCQkJCXRob3VnaHRzOiA0NQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0JiMzOTtzIGludGVybmFsIG1vbm9sb2d1ZToKCioqSW52ZXN0aWdhdGluZyB0aGUgTUxPIExpbmsqKgoKQWxyaWdodCwgc28gYGllZWU4MDIxMV92aWZfaXNfbWxkYC4uLiB0aGF0IHNlZW1zIHByZXR0eSBjbGVhcmx5IHRpZWQgdG8gTXVsdGktTGluayBPcGVyYXRpb24sIHJpZ2h0PyBObyBzdXJwcmlzZXMgdGhlcmUuIEJ1dCBJIG5lZWQgdG8gZ2V0IGEgYmV0dGVyIGhhbmRsZSBvbiB0aGUgc3BlY2lmaWNzIG9mIHRoaXMgaW1wbGVtZW50YXRpb24uIFRoZSBxdWVzdGlvbiB0aGF0IHJlYWxseSBqdW1wcyBvdXQgaXMsIGlzIHRoZXJlIGEgZGVkaWNhdGVkIGNvbmZpZ3VyYXRpb24gZmxhZyBvciBzZXR0aW5nIHNwZWNpZmljYWxseSBkZWRpY2F0ZWQgdG8gTUxPIHRoYXQgSSBuZWVkIHRvIGJlIGF3YXJlIG9mPyBJIG5lZWQgdG8gY2hlY2sgdGhlIHJlbGV2YW50IGNvbmZpZ3VyYXRpb24gZmlsZXMsIG1heWJlIHNvbWUga2VybmVsIGRvY3VtZW50YXRpb24sIGFuZCB0aGUgYnJvYWRlciB3aXJlbGVzcyBkcml2ZXIgY29kZWJhc2UuIEkmIzM5O20gZ29pbmcgdG8gZGlnIGluIGFuZCBzZWUgd2hhdCBjb25maWd1cmF0aW9uIHBhcmFtZXRlcnMgbWlnaHQgYmUgaW1wYWN0aW5nIHRoaXMgZnVuY3Rpb24sIG9yIGV2ZW4gdXRpbGl6aW5nIHRoZSBmdW5jdGlvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjIgMTc6NTM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtNTE8mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbWFjODAyMTEvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIyIDE3OjUzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE5MDQxCgkJCQkJCQlvdXRwdXQ6IDE1NQoJCQkJCQkJdGhvdWdodHM6IDQ2NwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBc3Nlc3NtZW50IG9mIHRoZSBtYWM4MDIxMSBQYXRjaCoqCgpPa2F5LCBzbyB0aGVyZSYjMzk7cyBubyBzcGVjaWZpYyBjb25maWd1cmF0aW9uIGl0ZW0gZGlyZWN0bHkgcmVsYXRlZCB0byBNTE8gaW4gbWFjODAyMTEsIHdoaWNoIGlzbiYjMzk7dCBhIHN1cnByaXNlLiBUaGF0IGJlaW5nIHNhaWQsIEkmIzM5O3ZlIHJldmlld2VkIHRoaXMgcGF0Y2gsIGFuZCBJJiMzOTttIHByZXR0eSBjb25maWRlbnQgaXQmIzM5O3MgZnVuY3Rpb25hbCBhbmQgYWJzb2x1dGVseSB3b3J0aCBmdXp6aW5nLiBJJiMzOTt2ZSBwaW5wb2ludGVkIGEgZmV3IGZvY3VzIHN5bWJvbHMgZm9yIHRoZSBmdXp6aW5nIGNhbXBhaWduOiBgc3RhX2FwcGx5X2F1dGhfZmxhZ3NgLCBgc3RhX2FwcGx5X3BhcmFtZXRlcnNgLCBgaWVlZTgwMjExX2FkZF9zdGF0aW9uYCwgYW5kIGBpZWVlODAyMTFfY2hhbmdlX3N0YXRpb25gLiBJbml0aWFsbHksIEkgd2FzIGEgYml0IGNvbmNlcm5lZCBhYm91dCBpbmNsdWRpbmcgYHN0YV9hcHBseV9hdXRoX2ZsYWdzYCBiZWNhdXNlIGl0JiMzOTtzIGEgc3RhdGljIGZ1bmN0aW9uLCBidXQgaXQmIzM5O3MgZmluZS4KCk5vdywgYSBxdWljayBjaGVjayB0byBzZWUgaWYgd2UmIzM5O3ZlIGdvdCB0aGUgbmVjZXNzYXJ5IGNvbmZpZ3VyYXRpb24gaXMgaW4gb3JkZXIuIFllYWgsIGBNQUM4MDIxMWAgYWxvbmUgd2lsbCBzdWZmaWNlIGZvciB0aGlzIHBhdGNoLgoKTGV0IG1lIGp1c3QgZG91YmxlLWNoZWNrIHRoZSBjb2RlIHNuaXBwZXQgYWdhaW46CgpgYGBjCgkJaWYgKCF0ZXN0X3N0YV9mbGFnKHN0YSwgV0xBTl9TVEFfUkFURV9DT05UUk9MKSkgewoJCQlpZiAoIWllZWU4MDIxMV92aWZfaXNfbWxkKCZhbXA7c3RhLSZndDtzZGF0YS0mZ3Q7dmlmKSAmYW1wOyZhbXA7CgkJCSAgICAhcmN1X2FjY2Vzc19wb2ludGVyKHN0YS0mZ3Q7c2RhdGEtJmd0O3ZpZi5ic3NfY29uZi5jaGFuY3R4X2NvbmYpKQoJCQkJcmV0dXJuIC1FSU5WQUw7CgoJCQlyYXRlX2NvbnRyb2xfcmF0ZV9pbml0X2FsbF9saW5rcyhzdGEpOwoJCX0KYGBgCgpSaWdodCwgaXQmIzM5O3MgYSBtaW5vciBidWcgZml4LiBJdCBpbnRyb2R1Y2VzIGEgY2hlY2sgdGhhdCByZXR1cm5zIGAtRUlOVkFMYCBpZiBgY2hhbmN0eF9jb25mYCBpcyBOVUxMIGZvciBub24tTUxEIGludGVyZmFjZXMgd2hlbiByYXRlIGNvbnRyb2wgaXNuJiMzOTt0IGluaXRpYWxpemVkLiBUaGlzIGlzIGFsbCBhYm91dCBwcmV2ZW50aW5nIGEgcG90ZW50aWFsIE5VTEwgcG9pbnRlciBkZXJlZmVyZW5jZSBvciBhIHNpbWlsYXIgaXNzdWUgZG93biB0aGUgbGluZSwgc3BlY2lmaWNhbGx5IGluIGByYXRlX2NvbnRyb2xfcmF0ZV9pbml0X2FsbF9saW5rc2Agb3IgcmVsYXRlZCBmdW5jdGlvbnMuIFRoaXMgaXMgYSBzdWJ0bGUgYnV0IGltcG9ydGFudCBwaWVjZSBvZiB2YWxpZGF0aW9uLgoKU28sIGhlcmUmIzM5O3Mgd2hhdCBJJiMzOTttIGdvaW5nIHRvIHNldDoKCiogICAqKldvcnRoRnV6emluZyoqOiBgdHJ1ZWAKKiAgICoqRm9jdXNTeW1ib2xzKio6IGBbJiMzNDtzdGFfYXBwbHlfYXV0aF9mbGFncyYjMzQ7LCAmIzM0O3N0YV9hcHBseV9wYXJhbWV0ZXJzJiMzNDssICYjMzQ7aWVlZTgwMjExX2FkZF9zdGF0aW9uJiMzNDssICYjMzQ7aWVlZTgwMjExX2NoYW5nZV9zdGF0aW9uJiMzNDtdYAoqICAgKipFbmFibGVDb25maWdzKio6IGBbJiMzNDtNQUM4MDIxMSYjMzQ7XWAKKiAgICoqUmVhc29uaW5nKio6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgYSBjcnVjaWFsIHZhbGlkYXRpb24gY2hlY2sgaW4gYHN0YV9hcHBseV9hdXRoX2ZsYWdzYCB0byBwcmV2ZW50IGFuIGludmFsaWQgc3RhdGUgd2hlbiByYXRlIGNvbnRyb2wgaXMgbm90IGluaXRpYWxpemVkIGZvciBub24tTUxEIGludGVyZmFjZXMuIFRoaXMgZnVuY3Rpb25hbGl0eSBpcyBhY2Nlc3NpYmxlIHZpYSBubDgwMjExIGNvbW1hbmRzLCBzdWNoIGFzIGBORVdfU1RBVElPTmAgYW5kIGBTRVRfU1RBVElPTmAsIGFuZCBtb2RpZmllcyBjb3JlIG1hYzgwMjExIGxvZ2ljLiBUaGlzIG1lYW5zIHRoYXQsIGRlc3BpdGUgdGhlIGFwcGFyZW50IHNpbXBsaWNpdHksIGZ1enppbmcgaXMgdmVyeSB2YWx1YWJsZSBoZXJlLiYjMzQ7CgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIyIDE3OjUzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtNQUM4MDIxMSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3N0YV9hcHBseV9hdXRoX2ZsYWdzJiMzNDssCiAgICAmIzM0O3N0YV9hcHBseV9wYXJhbWV0ZXJzJiMzNDssCiAgICAmIzM0O2llZWU4MDIxMV9hZGRfc3RhdGlvbiYjMzQ7LAogICAgJiMzNDtpZWVlODAyMTFfY2hhbmdlX3N0YXRpb24mIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBhIHZhbGlkYXRpb24gY2hlY2sgaW4gYHN0YV9hcHBseV9hdXRoX2ZsYWdzYCB0byBwcmV2ZW50IGFuIGludmFsaWQgc3RhdGUgd2hlbiByYXRlIGNvbnRyb2wgaXMgbm90IGluaXRpYWxpemVkIGZvciBub24tTUxEIGludGVyZmFjZXMuIFRoaXMgaXMgcmVhY2hhYmxlIHZpYSBubDgwMjExIGNvbW1hbmRzIChlLmcuLCBORVdfU1RBVElPTiwgU0VUX1NUQVRJT04pIGFuZCBtb2RpZmllcyBjb3JlIG1hYzgwMjExIGxvZ2ljLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtNQUM4MDIxMSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3N0YV9hcHBseV9hdXRoX2ZsYWdzJiMzNDssCiAgICAmIzM0O3N0YV9hcHBseV9wYXJhbWV0ZXJzJiMzNDssCiAgICAmIzM0O2llZWU4MDIxMV9hZGRfc3RhdGlvbiYjMzQ7LAogICAgJiMzNDtpZWVlODAyMTFfY2hhbmdlX3N0YXRpb24mIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBhIHZhbGlkYXRpb24gY2hlY2sgaW4gYHN0YV9hcHBseV9hdXRoX2ZsYWdzYCB0byBwcmV2ZW50IGFuIGludmFsaWQgc3RhdGUgd2hlbiByYXRlIGNvbnRyb2wgaXMgbm90IGluaXRpYWxpemVkIGZvciBub24tTUxEIGludGVyZmFjZXMuIFRoaXMgaXMgcmVhY2hhYmxlIHZpYSBubDgwMjExIGNvbW1hbmRzIChlLmcuLCBORVdfU1RBVElPTiwgU0VUX1NUQVRJT04pIGFuZCBtb2RpZmllcyBjb3JlIG1hYzgwMjExIGxvZ2ljLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDctMjJUMTc6NTI6MjAuNzQwNTAxOTUxWiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTY3NTczNTk5NjUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTUFDODAyMTFcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJzdGFfYXBwbHlfYXV0aF9mbGFnc1wiLFxuICAgIFwic3RhX2FwcGx5X3BhcmFtZXRlcnNcIixcbiAgICBcImllZWU4MDIxMV9hZGRfc3RhdGlvblwiLFxuICAgIFwiaWVlZTgwMjExX2NoYW5nZV9zdGF0aW9uXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBhIHZhbGlkYXRpb24gY2hlY2sgaW4gYHN0YV9hcHBseV9hdXRoX2ZsYWdzYCB0byBwcmV2ZW50IGFuIGludmFsaWQgc3RhdGUgd2hlbiByYXRlIGNvbnRyb2wgaXMgbm90IGluaXRpYWxpemVkIGZvciBub24tTUxEIGludGVyZmFjZXMuIFRoaXMgaXMgcmVhY2hhYmxlIHZpYSBubDgwMjExIGNvbW1hbmRzIChlLmcuLCBORVdfU1RBVElPTiwgU0VUX1NUQVRJT04pIGFuZCBtb2RpZmllcyBjb3JlIG1hYzgwMjExIGxvZ2ljLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yMlQxNzo1MjoyMC43NDA1MDgyNDFaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjYyMzc2Njg1OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IGI3MzM3NGRmMzg0M2E4Mzk4ZWEyNDUxOGExMzMxNzYwMjY4YTk1MGJcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFdlZCBKdWwgMjIgMTc6NTI6MTggMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvbmV0L21hYzgwMjExL2NmZy5jIGIvbmV0L21hYzgwMjExL2NmZy5jXFxuaW5kZXggM2I1OGFmNTlmN2U0MjkuLjgzMGM5ZmM5NWRmMjI4IDEwMDY0NFxcbi0tLSBhL25ldC9tYWM4MDIxMS9jZmcuY1xcbisrKyBiL25ldC9tYWM4MDIxMS9jZmcuY1xcbkBAIC0yMTQ4LDggKzIxNDgsMTMgQEAgc3RhdGljIGludCBzdGFfYXBwbHlfYXV0aF9mbGFncyhzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbCxcXG4gXFx0XFx0ICogd2VsbC4gU29tZSBkcml2ZXJzIHJlcXVpcmUgcmF0ZSBjb250cm9sIGluaXRpYWxpemVkXFxuIFxcdFxcdCAqIGJlZm9yZSBkcnZfc3RhX3N0YXRlKCkgaXMgY2FsbGVkLlxcbiBcXHRcXHQgKi9cXG4tXFx0XFx0aWYgKCF0ZXN0X3N0YV9mbGFnKHN0YSwgV0xBTl9TVEFfUkFURV9DT05UUk9MKSlcXG4rXFx0XFx0aWYgKCF0ZXN0X3N0YV9mbGFnKHN0YSwgV0xBTl9TVEFfUkFURV9DT05UUk9MKSkge1xcbitcXHRcXHRcXHRpZiAoIWllZWU4MDIxMV92aWZfaXNfbWxkKFxcdTAwMjZzdGEtXFx1MDAzZXNkYXRhLVxcdTAwM2V2aWYpIFxcdTAwMjZcXHUwMDI2XFxuK1xcdFxcdFxcdCAgICAhcmN1X2FjY2Vzc19wb2ludGVyKHN0YS1cXHUwMDNlc2RhdGEtXFx1MDAzZXZpZi5ic3NfY29uZi5jaGFuY3R4X2NvbmYpKVxcbitcXHRcXHRcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4rXFxuIFxcdFxcdFxcdHJhdGVfY29udHJvbF9yYXRlX2luaXRfYWxsX2xpbmtzKHN0YSk7XFxuK1xcdFxcdH1cXG4gXFxuIFxcdFxcdHJldCA9IHN0YV9pbmZvX21vdmVfc3RhdGUoc3RhLCBJRUVFODAyMTFfU1RBX0FTU09DKTtcXG4gXFx0XFx0aWYgKHJldClcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjJUMTc6NTI6MjEuMzY1MzgxOTg5WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6NTYxMzI0NjUyOTYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTUFDODAyMTFcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJzdGFfYXBwbHlfYXV0aF9mbGFnc1wiLFxuICAgIFwic3RhX2FwcGx5X3BhcmFtZXRlcnNcIixcbiAgICBcImllZWU4MDIxMV9hZGRfc3RhdGlvblwiLFxuICAgIFwiaWVlZTgwMjExX2NoYW5nZV9zdGF0aW9uXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBhIHZhbGlkYXRpb24gY2hlY2sgaW4gYHN0YV9hcHBseV9hdXRoX2ZsYWdzYCB0byBwcmV2ZW50IGFuIGludmFsaWQgc3RhdGUgd2hlbiByYXRlIGNvbnRyb2wgaXMgbm90IGluaXRpYWxpemVkIGZvciBub24tTUxEIGludGVyZmFjZXMuIFRoaXMgaXMgcmVhY2hhYmxlIHZpYSBubDgwMjExIGNvbW1hbmRzIChlLmcuLCBORVdfU1RBVElPTiwgU0VUX1NUQVRJT04pIGFuZCBtb2RpZmllcyBjb3JlIG1hYzgwMjExIGxvZ2ljLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG5ldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0XG4gICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksXG4gICBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IGI3MzM3NGRmMzg0M2E4Mzk4ZWEyNDUxOGExMzMxNzYwMjY4YTk1MGJcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgV2VkIEp1bCAyMiAxNzo1MjoxOCAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL25ldC9tYWM4MDIxMS9jZmcuYyBiL25ldC9tYWM4MDIxMS9jZmcuY1xuaW5kZXggM2I1OGFmNTlmN2U0MjkuLjgzMGM5ZmM5NWRmMjI4IDEwMDY0NFxuLS0tIGEvbmV0L21hYzgwMjExL2NmZy5jXG4rKysgYi9uZXQvbWFjODAyMTEvY2ZnLmNcbkBAIC0yMTQ4LDggKzIxNDgsMTMgQEAgc3RhdGljIGludCBzdGFfYXBwbHlfYXV0aF9mbGFncyhzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbCxcbiBcdFx0ICogd2VsbC4gU29tZSBkcml2ZXJzIHJlcXVpcmUgcmF0ZSBjb250cm9sIGluaXRpYWxpemVkXG4gXHRcdCAqIGJlZm9yZSBkcnZfc3RhX3N0YXRlKCkgaXMgY2FsbGVkLlxuIFx0XHQgKi9cbi1cdFx0aWYgKCF0ZXN0X3N0YV9mbGFnKHN0YSwgV0xBTl9TVEFfUkFURV9DT05UUk9MKSlcbitcdFx0aWYgKCF0ZXN0X3N0YV9mbGFnKHN0YSwgV0xBTl9TVEFfUkFURV9DT05UUk9MKSkge1xuK1x0XHRcdGlmICghaWVlZTgwMjExX3ZpZl9pc19tbGQoXHUwMDI2c3RhLVx1MDAzZXNkYXRhLVx1MDAzZXZpZikgXHUwMDI2XHUwMDI2XG4rXHRcdFx0ICAgICFyY3VfYWNjZXNzX3BvaW50ZXIoc3RhLVx1MDAzZXNkYXRhLVx1MDAzZXZpZi5ic3NfY29uZi5jaGFuY3R4X2NvbmYpKVxuK1x0XHRcdFx0cmV0dXJuIC1FSU5WQUw7XG4rXG4gXHRcdFx0cmF0ZV9jb250cm9sX3JhdGVfaW5pdF9hbGxfbGlua3Moc3RhKTtcbitcdFx0fVxuIFxuIFx0XHRyZXQgPSBzdGFfaW5mb19tb3ZlX3N0YXRlKHN0YSwgSUVFRTgwMjExX1NUQV9BU1NPQyk7XG4gXHRcdGlmIChyZXQpXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yMlQxNzo1MjoyMS4zNjUzODU0MTlaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2NjU3OTQwNTc2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIFZ1bG5lcmFiaWxpdHkgaW4gYG5ldC9tYWM4MDIxMWAqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGluIGBuZXQvbWFjODAyMTEvY2ZnLmNgLiBJdCBzZWVtcyB0aGV5J3ZlIGFkZGVkIGEgY2hlY2sgd2l0aGluIHRoZSBgc3RhX2FwcGx5X2F1dGhfZmxhZ3NgIGZ1bmN0aW9uLiBTcGVjaWZpY2FsbHksIGl0J3MgY2hlY2tpbmcgdGhlIGBXTEFOX1NUQV9SQVRFX0NPTlRST0xgIGZsYWcgb24gYSBzdGF0aW9uIChgc3RhYCkuIE15IGZpcnN0IGluc3RpbmN0IGlzIHRvIHVuZGVyc3RhbmQgdGhlIGNvbnRleHQuIGBtYWM4MDIxMWAgaXMgbm90b3Jpb3VzbHkgd2VsbC1mdXp6ZWQsIHBhcnRpY3VsYXJseSB3aXRoIGBtYWM4MDIxMV9od3NpbWAsIHNvIGFueSBjaGFuZ2VzIGhlcmUgaW1tZWRpYXRlbHkgZ3JhYiBteSBhdHRlbnRpb24uXG5cblRoZSBuZXcgY29kZSBibG9jayBpcyBpbnRlcmVzdGluZzogaWYgdGhlIGBXTEFOX1NUQV9SQVRFX0NPTlRST0xgIGZsYWcgaXNuJ3Qgc2V0LCB0aGVuIGEgY2hlY2sgaXMgcGVyZm9ybWVkLiBJZiB0aGUgVmlydHVhbCBJbnRlcmZhY2UgKGB2aWZgKSBpc24ndCBhIE1lc2ggTG9jYWwgRGVjaXNpb24gKE1MRCkgaW50ZXJmYWNlLCBhbmQgdGhlcmUgaXMgbm8gY2hhbm5lbCBjb250ZXh0IGNvbmZpZ3VyYXRpb24gYXR0YWNoZWQsIHRoZW4gaXQgcmV0dXJucyBgLUVJTlZBTGAuIE90aGVyd2lzZSwgaXQgcHJvY2VlZHMgdG8gaW5pdGlhbGl6ZSB0aGUgcmF0ZSBjb250cm9sIHZpYSBgcmF0ZV9jb250cm9sX3JhdGVfaW5pdF9hbGxfbGlua3NgLlxuXG5NeSBpbW1lZGlhdGUgcXVlc3Rpb24gaXM6IHdoYXQgc2NlbmFyaW9zIHRyaWdnZXIgdGhpcyBzcGVjaWZpYyBjb2RlIHBhdGg/IEFuZCB3aGF0IGFyZSB0aGUgaW1wbGljYXRpb25zIG9mIHRoZSBgLUVJTlZBTGAgcmV0dXJuPyBXZSBuZWVkIHRvIGRpZyBpbnRvIHRoZSBzdXJyb3VuZGluZyBjb2RlIGluIGBzdGFfYXBwbHlfYXV0aF9mbGFnc2AgdG8gZnVsbHkgdW5kZXJzdGFuZCB3aGF0J3MgaGFwcGVuaW5nIGFuZCBob3cgdGhpcyBjb25kaXRpb24gY2FuIGJlIG1ldC4gSSdtIGdvaW5nIHRvIGNhcmVmdWxseSBhbmFseXplIHRoZSBjYWxsIHNpdGVzIGFuZCByZWxhdGVkIGRhdGEgc3RydWN0dXJlcyB0byBnZXQgYSBjb21wbGV0ZSBwaWN0dXJlLiBUaGlzIGAtRUlOVkFMYCBjb3VsZCBiZSBhIHZ1bG5lcmFiaWxpdHkgbWl0aWdhdGlvbiwgb3IgaXQgY291bGQgcG90ZW50aWFsbHkgaW50cm9kdWNlIHVuZXhwZWN0ZWQgYmVoYXZpb3IuIFRoZSBpbml0aWFsaXphdGlvbiBvZiB0aGUgcmF0ZSBjb250cm9sIGlzIG9idmlvdXNseSBhbiBpbXBvcnRhbnQgYXNwZWN0IHRoYXQgSSdsbCBuZWVkIHRvIGV4cGxvcmUgYXMgd2VsbC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjAyOCwiT3V0cHV0VG9rZW5zIjozOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIxNywiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIyVDE3OjUyOjI4LjAyMzMzMTk1NVoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozMDMyNzkzMTksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwic3RhX2FwcGx5X2F1dGhfZmxhZ3NcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L21hYzgwMjExL2NmZy5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9tYWM4MDIxMS9jZmcuYz0yMDEwPXN0YXRpYyBpbnQgaWVlZTgwMjExX3N0b3BfYXAoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG4tLVxcbm5ldC9tYWM4MDIxMS9jZmcuYy0yMTI4LVxcbm5ldC9tYWM4MDIxMS9jZmcuYzoyMTI5OnN0YXRpYyBpbnQgc3RhX2FwcGx5X2F1dGhfZmxhZ3Moc3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwsXFxubmV0L21hYzgwMjExL2NmZy5jLTIxMzAtXFx0XFx0XFx0XFx0c3RydWN0IHN0YV9pbmZvICpzdGEsXFxuLS1cXG5uZXQvbWFjODAyMTEvY2ZnLmM9MjQ1ND1zdGF0aWMgaW50IHN0YV9hcHBseV9wYXJhbWV0ZXJzKHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsLFxcbi0tXFxubmV0L21hYzgwMjExL2NmZy5jLTI0OTktXFx0ICAgICAgKHNldCBcXHUwMDI2IEJJVChOTDgwMjExX1NUQV9GTEFHX0FTU09DSUFURUQpKSkpIHtcXG5uZXQvbWFjODAyMTEvY2ZnLmM6MjUwMDpcXHRcXHRyZXQgPSBzdGFfYXBwbHlfYXV0aF9mbGFncyhsb2NhbCwgc3RhLCBtYXNrLCBzZXQpO1xcbm5ldC9tYWM4MDIxMS9jZmcuYy0yNTAxLVxcdFxcdGlmIChyZXQpXFxuLS1cXG5uZXQvbWFjODAyMTEvY2ZnLmMtMjYyMi1cXHQgICAgc2V0IFxcdTAwMjYgQklUKE5MODAyMTFfU1RBX0ZMQUdfQVNTT0NJQVRFRCkpIHtcXG5uZXQvbWFjODAyMTEvY2ZnLmM6MjYyMzpcXHRcXHRyZXQgPSBzdGFfYXBwbHlfYXV0aF9mbGFncyhsb2NhbCwgc3RhLCBtYXNrLCBzZXQpO1xcbm5ldC9tYWM4MDIxMS9jZmcuYy0yNjI0LVxcdFxcdGlmIChyZXQpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIyVDE3OjUyOjI4LjMyNjYxODMyNFoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjEzMDI5MDg5MjYyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgYHN0YV9hcHBseV9hdXRoX2ZsYWdzYCBGdW5jdGlvbioqXG5cbk9rYXksIHNvIEkgc2VlIHRoYXQgYHN0YV9hcHBseV9hdXRoX2ZsYWdzYCBpcyBhIGtleSBmdW5jdGlvbiwgYW5kIGl0J3MgYmVpbmcgY2FsbGVkIGZyb20gYXQgbGVhc3QgdHdvIGNyaXRpY2FsIGxvY2F0aW9uczogYHN0YV9hcHBseV9wYXJhbWV0ZXJzYCBhbmQsIGxpa2VseSwgZWl0aGVyIGBpZWVlODAyMTFfYWRkX3N0YXRpb25gIG9yIGBpZWVlODAyMTFfY2hhbmdlX3N0YXRpb25gLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgbGV0J3MgZHJpbGwgZG93biBpbnRvIHRoZSBjb250ZXh0IHN1cnJvdW5kaW5nIHRob3NlIGNhbGxzLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCAqd2h5KiBgc3RhX2FwcGx5X2F1dGhfZmxhZ3NgIGlzIGJlaW5nIGludm9rZWQgd2hlcmUgaXQgaXMuIEknbSBlc3BlY2lhbGx5IGludGVyZXN0ZWQgaW4gdGhlIGRpZmZlcmVudCBwYXRocyBsZWFkaW5nIGludG8gaXQuIElzIGl0IGJlaW5nIHVzZWQgdG8gc2V0IHVwIGluaXRpYWwgYXV0aGVudGljYXRpb24gcGFyYW1ldGVycywgbW9kaWZ5IGV4aXN0aW5nIG9uZXMsIG9yIG1heWJlIGJvdGg/IFRoaXMgY29udGV4dCBpcyBjcnVjaWFsIHRvIGdyYXNwaW5nIHRoZSBpbnRlbmRlZCBiZWhhdmlvci4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hhdCBkYXRhIGlzIGJlaW5nIHBhc3NlZCBpbiwgdGhlIHN0YXRlIG9mIHRoZSBzeXN0ZW0gd2hlbiBpdCdzIGNhbGxlZCwgYW5kIHdoYXQgdGhlIGZ1bmN0aW9uIGlzIGFjdHVhbGx5ICpkb2luZyogdG8gdGhlIHN0YXRpb24ncyBhdXRob3JpemF0aW9uIGZsYWdzLiBJIHN1c3BlY3QgdGhpcyB3aWxsIGlsbHVtaW5hdGUgc29tZSBrZXkgYXNwZWN0cyBvZiBob3cgYXV0aGVudGljYXRpb24gaXMgaGFuZGxlZCBpbiB0aGlzIGRyaXZlci5cblxuXG4iLCJJbnB1dFRva2VucyI6MzAzMiwiT3V0cHV0VG9rZW5zIjozNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjcyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIyVDE3OjUyOjQxLjM1NTcxMDA2NloiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0OTk2NzU5MjIsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwic3RhX2FwcGx5X2F1dGhfZmxhZ3NcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L21hYzgwMjExL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvbWFjODAyMTEvY2ZnLmM9MjAxMD1zdGF0aWMgaW50IGllZWU4MDIxMV9zdG9wX2FwKHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxuLS1cXG5uZXQvbWFjODAyMTEvY2ZnLmMtMjEyOC1cXG5uZXQvbWFjODAyMTEvY2ZnLmM6MjEyOTpzdGF0aWMgaW50IHN0YV9hcHBseV9hdXRoX2ZsYWdzKHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsLFxcbm5ldC9tYWM4MDIxMS9jZmcuYy0yMTMwLVxcdFxcdFxcdFxcdHN0cnVjdCBzdGFfaW5mbyAqc3RhLFxcbi0tXFxubmV0L21hYzgwMjExL2NmZy5jPTI0NTQ9c3RhdGljIGludCBzdGFfYXBwbHlfcGFyYW1ldGVycyhzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbCxcXG4tLVxcbm5ldC9tYWM4MDIxMS9jZmcuYy0yNDk5LVxcdCAgICAgIChzZXQgXFx1MDAyNiBCSVQoTkw4MDIxMV9TVEFfRkxBR19BU1NPQ0lBVEVEKSkpKSB7XFxubmV0L21hYzgwMjExL2NmZy5jOjI1MDA6XFx0XFx0cmV0ID0gc3RhX2FwcGx5X2F1dGhfZmxhZ3MobG9jYWwsIHN0YSwgbWFzaywgc2V0KTtcXG5uZXQvbWFjODAyMTEvY2ZnLmMtMjUwMS1cXHRcXHRpZiAocmV0KVxcbi0tXFxubmV0L21hYzgwMjExL2NmZy5jLTI2MjItXFx0ICAgIHNldCBcXHUwMDI2IEJJVChOTDgwMjExX1NUQV9GTEFHX0FTU09DSUFURUQpKSB7XFxubmV0L21hYzgwMjExL2NmZy5jOjI2MjM6XFx0XFx0cmV0ID0gc3RhX2FwcGx5X2F1dGhfZmxhZ3MobG9jYWwsIHN0YSwgbWFzaywgc2V0KTtcXG5uZXQvbWFjODAyMTEvY2ZnLmMtMjYyNC1cXHRcXHRpZiAocmV0KVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yMlQxNzo1Mjo0MS44NTUzOTA2MDhaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1MDAxOTAxMjI0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYW5hbHlzaXMgb2YgdGhlIHNpdHVhdGlvbjpcblxuKipJbnZlc3RpZ2F0aW5nIGEgU3BlY2lmaWMgRnVuY3Rpb24gaW4gbWFjODAyMTEgQ29uZmlndXJhdGlvbioqXG5cbk9rYXksIHNvIEkgbmVlZCB0byBkaXZlIGludG8gdGhlIGBuZXQvbWFjODAyMTEvY2ZnLmNgIGZpbGUuIFNwZWNpZmljYWxseSwgSSdtIGludGVyZXN0ZWQgaW4gdGhlIGZ1bmN0aW9uIGRlZmluZWQgYXQgbGluZSAyNjIyLiBHaXZlbiBteSB1bmRlcnN0YW5kaW5nIG9mIG1hYzgwMjExJ3MgYXJjaGl0ZWN0dXJlLCBwaW5wb2ludGluZyBhIHNwZWNpZmljIGxpbmUgbnVtYmVyIHVzdWFsbHkgc3VnZ2VzdHMgSSdtIGxvb2tpbmcgZm9yIGEgcGFydGljdWxhciBjb25maWd1cmF0aW9uIHNldHRpbmcsIGEgZnVuY3Rpb24gY2FsbCByZWxhdGVkIHRvIGEgc3BlY2lmaWMgZmVhdHVyZSdzIGNvbmZpZ3VyYXRpb24sIG9yIHBlcmhhcHMgYSBzZWN0aW9uIGRlYWxpbmcgd2l0aCBhIHBhcnRpY3VsYXIgcmVndWxhdG9yeSBkb21haW4gb3IgaGFyZHdhcmUgaW50ZXJmYWNlIHNldHVwLiBJJ20gbGlrZWx5IHRyeWluZyB0byBkZWJ1ZyBhIGNvbmZpZ3VyYXRpb24gaXNzdWUsIHVuZGVyc3RhbmQgYSBiZWhhdmlvciwgb3IgbWF5YmUgZXZlbiBpZGVudGlmeSBhIHBvdGVudGlhbCBvcHRpbWl6YXRpb24gb3IgYSBzZWN1cml0eSB2dWxuZXJhYmlsaXR5IHRoYXQgbWF5IGhhdmUgYXJpc2VuLiBMZXQncyBzZWUgd2hhdCB0aGF0IGZ1bmN0aW9uIGlzIGFib3V0LlxuXG5cbiIsIklucHV0VG9rZW5zIjozNzY3LCJPdXRwdXRUb2tlbnMiOjM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjJUMTc6NTI6NDYuODU3Mjk3MTMzWiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjg5NTIxMzI2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIl5zdGF0aWMgaW50LipzdGFcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L21hYzgwMjExL2NmZy5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9tYWM4MDIxMS9jZmcuYz0yNTk9c3RhdGljIGludCBpZWVlODAyMTFfY2hhbmdlX2lmYWNlKHN0cnVjdCB3aXBoeSAqd2lwaHksXFxuLS1cXG5uZXQvbWFjODAyMTEvY2ZnLmMtMzA1LVxcbm5ldC9tYWM4MDIxMS9jZmcuYzozMDY6c3RhdGljIGludCBpZWVlODAyMTFfc3RhcnRfcDJwX2RldmljZShzdHJ1Y3Qgd2lwaHkgKndpcGh5LFxcbm5ldC9tYWM4MDIxMS9jZmcuYy0zMDctXFx0XFx0XFx0XFx0ICAgICAgc3RydWN0IHdpcmVsZXNzX2RldiAqd2RldilcXG4tLVxcbm5ldC9tYWM4MDIxMS9jZmcuYz0zNTE9c3RhdGljIGludCBpZWVlODAyMTFfbmFuX2NvbmZfY29weShzdHJ1Y3QgY2ZnODAyMTFfbmFuX2NvbmYgKmRzdCxcXG4tLVxcbm5ldC9tYWM4MDIxMS9jZmcuYy00MDgtXFxubmV0L21hYzgwMjExL2NmZy5jOjQwOTpzdGF0aWMgaW50IGllZWU4MDIxMV9zdGFydF9uYW4oc3RydWN0IHdpcGh5ICp3aXBoeSxcXG5uZXQvbWFjODAyMTEvY2ZnLmMtNDEwLVxcdFxcdFxcdCAgICAgICBzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LFxcbi0tXFxubmV0L21hYzgwMjExL2NmZy5jPTk2Nz12b2lkIHN0YV9zZXRfcmF0ZV9pbmZvX3R4KHN0cnVjdCBzdGFfaW5mbyAqc3RhLFxcbi0tXFxubmV0L21hYzgwMjExL2NmZy5jLTk5OC1cXG5uZXQvbWFjODAyMTEvY2ZnLmM6OTk5OnN0YXRpYyBpbnQgaWVlZTgwMjExX2R1bXBfc3RhdGlvbihzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LFxcbm5ldC9tYWM4MDIxMS9jZmcuYy0xMDAwLVxcdFxcdFxcdFxcdCAgaW50IGlkeCwgdTggKm1hYywgc3RydWN0IHN0YXRpb25faW5mbyAqc2luZm8pXFxuLS1cXG5uZXQvbWFjODAyMTEvY2ZnLmM9MTAyNj1zdGF0aWMgaW50IGllZWU4MDIxMV9kdW1wX3N1cnZleShzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbi0tXFxubmV0L21hYzgwMjExL2NmZy5jLTEwMzMtXFxubmV0L21hYzgwMjExL2NmZy5jOjEwMzQ6c3RhdGljIGludCBpZWVlODAyMTFfZ2V0X3N0YXRpb24oc3RydWN0IHdpcGh5ICp3aXBoeSxcXG5uZXQvbWFjODAyMTEvY2ZnLmMtMTAzNS1cXHRcXHRcXHRcXHQgc3RydWN0IHdpcmVsZXNzX2RldiAqd2RldixcXG4tLVxcbm5ldC9tYWM4MDIxMS9jZmcuYz0xNjA2PXN0YXRpYyB1OCBpZWVlODAyMTFfbnVtX2JlYWNvbmluZ19saW5rcyhzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSlcXG4tLVxcbm5ldC9tYWM4MDIxMS9jZmcuYy0xNjI5LVxcbm5ldC9tYWM4MDIxMS9jZmcuYzoxNjMwOnN0YXRpYyBpbnQgaWVlZTgwMjExX3N0YXJ0X2FwKHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxubmV0L21hYzgwMjExL2NmZy5jLTE2MzEtXFx0XFx0XFx0ICAgICAgc3RydWN0IGNmZzgwMjExX2FwX3NldHRpbmdzICpwYXJhbXMpXFxuLS1cXG5uZXQvbWFjODAyMTEvY2ZnLmM9MjAxMD1zdGF0aWMgaW50IGllZWU4MDIxMV9zdG9wX2FwKHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxuLS1cXG5uZXQvbWFjODAyMTEvY2ZnLmMtMjEyOC1cXG5uZXQvbWFjODAyMTEvY2ZnLmM6MjEyOTpzdGF0aWMgaW50IHN0YV9hcHBseV9hdXRoX2ZsYWdzKHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsLFxcbm5ldC9tYWM4MDIxMS9jZmcuYy0yMTMwLVxcdFxcdFxcdFxcdHN0cnVjdCBzdGFfaW5mbyAqc3RhLFxcbi0tXFxubmV0L21hYzgwMjExL2NmZy5jPTIyNTk9ZW51bSBzdGFfbGlua19hcHBseV9tb2RlIHtcXG4tLVxcbm5ldC9tYWM4MDIxMS9jZmcuYy0yMjY0LVxcbm5ldC9tYWM4MDIxMS9jZmcuYzoyMjY1OnN0YXRpYyBpbnQgc3RhX2xpbmtfYXBwbHlfcGFyYW1ldGVycyhzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbCxcXG5uZXQvbWFjODAyMTEvY2ZnLmMtMjI2Ni1cXHRcXHRcXHRcXHQgICAgIHN0cnVjdCBzdGFfaW5mbyAqc3RhLFxcbi0tXFxubmV0L21hYzgwMjExL2NmZy5jLTI0NTMtXFxubmV0L21hYzgwMjExL2NmZy5jOjI0NTQ6c3RhdGljIGludCBzdGFfYXBwbHlfcGFyYW1ldGVycyhzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbCxcXG5uZXQvbWFjODAyMTEvY2ZnLmMtMjQ1NS1cXHRcXHRcXHRcXHRzdHJ1Y3Qgc3RhX2luZm8gKnN0YSxcXG4tLVxcbm5ldC9tYWM4MDIxMS9jZmcuYy0yNjM0LVxcbm5ldC9tYWM4MDIxMS9jZmcuYzoyNjM1OnN0YXRpYyBpbnQgaWVlZTgwMjExX2FkZF9zdGF0aW9uKHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsXFxubmV0L21hYzgwMjExL2NmZy5jLTI2MzYtXFx0XFx0XFx0XFx0IGNvbnN0IHU4ICptYWMsXFxuLS1cXG5uZXQvbWFjODAyMTEvY2ZnLmMtMjcxNC1cXG5uZXQvbWFjODAyMTEvY2ZnLmM6MjcxNTpzdGF0aWMgaW50IGllZWU4MDIxMV9kZWxfc3RhdGlvbihzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LFxcbm5ldC9tYWM4MDIxMS9jZmcuYy0yNzE2LVxcdFxcdFxcdFxcdCBzdHJ1Y3Qgc3RhdGlvbl9kZWxfcGFyYW1ldGVycyAqcGFyYW1zKVxcbi0tXFxubmV0L21hYzgwMjExL2NmZy5jLTI3MjgtXFxubmV0L21hYzgwMjExL2NmZy5jOjI3Mjk6c3RhdGljIGludCBpZWVlODAyMTFfc2V0X3N0YV80YWRkcihzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbCxcXG5uZXQvbWFjODAyMTEvY2ZnLmMtMjczMC1cXHRcXHRcXHRcXHQgICBzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSxcXG4tLVxcbm5ldC9tYWM4MDIxMS9jZmcuYy0yNzg3LVxcbm5ldC9tYWM4MDIxMS9jZmcuYzoyNzg4OnN0YXRpYyBpbnQgaWVlZTgwMjExX2NoYW5nZV9zdGF0aW9uKHN0cnVjdCB3aXBoeSAqd2lwaHksXFxubmV0L21hYzgwMjExL2NmZy5jLTI3ODktXFx0XFx0XFx0XFx0ICAgIHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsIGNvbnN0IHU4ICptYWMsXFxuLS1cXG5uZXQvbWFjODAyMTEvY2ZnLmM9NDE3ND1zdGF0aWMgYm9vbCBpZWVlODAyMTFfaXNfc2Nhbl9vbmdvaW5nKHN0cnVjdCB3aXBoeSAqd2lwaHksXFxuLS1cXG5uZXQvbWFjODAyMTEvY2ZnLmMtNDIxMC1cXG5uZXQvbWFjODAyMTEvY2ZnLmM6NDIxMTpzdGF0aWMgaW50IGllZWU4MDIxMV9zdGFydF9yYWRhcl9kZXRlY3Rpb24oc3RydWN0IHdpcGh5ICp3aXBoeSxcXG5uZXQvbWFjODAyMTEvY2ZnLmMtNDIxMi1cXHRcXHRcXHRcXHRcXHQgICBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbi0tXFxubmV0L21hYzgwMjExL2NmZy5jPTUzMzU9dm9pZCBpZWVlODAyMTFfZmlsbF90eHFfc3RhdHMoc3RydWN0IGNmZzgwMjExX3R4cV9zdGF0cyAqdHhxc3RhdHMsXFxuLS1cXG5uZXQvbWFjODAyMTEvY2ZnLmMtNTM4My1cXG5uZXQvbWFjODAyMTEvY2ZnLmM6NTM4NDpzdGF0aWMgaW50IGllZWU4MDIxMV9nZXRfdHhxX3N0YXRzKHN0cnVjdCB3aXBoeSAqd2lwaHksXFxubmV0L21hYzgwMjExL2NmZy5jLTUzODUtXFx0XFx0XFx0XFx0ICAgc3RydWN0IHdpcmVsZXNzX2RldiAqd2RldixcXG4tLVxcbm5ldC9tYWM4MDIxMS9jZmcuYz01ODk4PWllZWU4MDIxMV9kZWxfbGlua19zdGF0aW9uKHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxuLS1cXG5uZXQvbWFjODAyMTEvY2ZnLmMtNTkyMS1cXG5uZXQvbWFjODAyMTEvY2ZnLmM6NTkyMjpzdGF0aWMgaW50IGllZWU4MDIxMV9zZXRfaHdfdGltZXN0YW1wKHN0cnVjdCB3aXBoeSAqd2lwaHksXFxubmV0L21hYzgwMjExL2NmZy5jLTU5MjMtXFx0XFx0XFx0XFx0ICAgICAgc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjJUMTc6NTI6NDYuOTQ2ODIzOTQ5WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTE5MDYwMDI1OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIEF1dGhlbnRpY2F0aW9uIEZsYWdzIFBhdGNoKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCB0aGF0IHR3ZWFrcyBgc3RhX2FwcGx5X2F1dGhfZmxhZ3NgLiBJIHNlZSB0aGF0IHRoaXMgZnVuY3Rpb24ncyBjYWxsZWQgZnJvbSBgc3RhX2FwcGx5X3BhcmFtZXRlcnNgLCBhbmQgYWxzbyBmcm9tIGBpZWVlODAyMTFfYWRkX3N0YXRpb25gIGFuZCBgaWVlZTgwMjExX2NoYW5nZV9zdGF0aW9uYC4gUmlnaHQgYXdheSwgdGhhdCByYWlzZXMgYSBmbGFnOiB0aG9zZSBsYXR0ZXIgdHdvIGZ1bmN0aW9ucyBhcmUgZGlyZWN0bHkgZXhwb3NlZCB0byB1c2Vyc3BhY2UgdGhyb3VnaCBubDgwMjExIGNvbW1hbmRzIOKAkyBzcGVjaWZpY2FsbHksIGBOTDgwMjExX0NNRF9ORVdfU1RBVElPTmAgYW5kIGBOTDgwMjExX0NNRF9TRVRfU1RBVElPTmAuIEdvb2QuXG5cblRoZSBtZWF0IG9mIHRoZSBwYXRjaCBhZGRzIGEgY2hlY2suIFNwZWNpZmljYWxseSwgaXQncyBjaGVja2luZyBgaWVlZTgwMjExX3ZpZl9pc19tbGQoXHUwMDI2c3RhLVx1MDAzZXNkYXRhLVx1MDAzZXZpZilgIGFuZCBgcmN1X2FjY2Vzc19wb2ludGVyKHN0YS1cdTAwM2VzZGF0YS1cdTAwM2V2aWYuYnNzX2NvbmYuY2hhbmN0eF9jb25mKWAuIEZ1bmN0aW9uYWxseSwgdGhpcyBsb29rcyBzb3VuZC4gSXQncyBjbGVhcmx5IHJlYWNoYWJsZSwgYW5kIEknbSBjb25maWRlbnQgSSBjYW4gdHJpZ2dlciBpdCB1c2luZyBtYWM4MDIxMV9od3NpbS4gVGhhdCdzIGEgc29saWQgc3RhcnQuXG5cbk5vdywgbGV0J3MgbG9vayBhdCB0aGUgYmlnZ2VyIHBpY3R1cmUuIEkgbmVlZCB0byBrbm93IHdoYXQgY29uZmlndXJhdGlvbiBvcHRpb25zIGFyZSBpbnZvbHZlZC4gYE1BQzgwMjExYCBpcyBvYnZpb3VzbHkgYSBnaXZlbi4gTm8gbmVlZCB0byBvdmVydGhpbmsgdGhhdCBvbmUuIEJ1dCwgaXMgdGhlcmUgYW55dGhpbmcgZWxzZSB0aGF0IGl0IHRvdWNoZXM/IExldCdzIGRpdmUgaW50byB0aGUgYG5ldC9tYWM4MDIxMS9LY29uZmlnYCBmaWxlIGFuZCB0YWtlIGEgbG9vay4gTmVlZCB0byBrbm93IGlmIHRoZXJlJ3MgYW55IG90aGVyIGRlcGVuZGVuY3kuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU4OTEsIk91dHB1dFRva2VucyI6MzgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMjAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjJUMTc6NTI6NTIuMTM3NDI2OTU3WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMTE2MjUwOTYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIE1BQzgwMjExXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9tYWM4MDIxMS9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9tYWM4MDIxMS9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxubmV0L21hYzgwMjExL0tjb25maWc6Mjpjb25maWcgTUFDODAyMTFcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0zLVxcdHRyaXN0YXRlIFxcXCJHZW5lcmljIElFRUUgODAyLjExIE5ldHdvcmtpbmcgU3RhY2sgKG1hYzgwMjExKVxcXCJcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnPTE5PWlmIE1BQzgwMjExICE9IG5cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yMC1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyMTpjb25maWcgTUFDODAyMTFfSEFTX1JDXFxubmV0L21hYzgwMjExL0tjb25maWctMjItXFx0Ym9vbFxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTIzLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjI0OmNvbmZpZyBNQUM4MDIxMV9SQ19NSU5TVFJFTFxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTI1LVxcdGJvb2wgXFxcIk1pbnN0cmVsXFxcIiBpZiBFWFBFUlRcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnPTMxPWNob2ljZVxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWctNDAtXFxubmV0L21hYzgwMjExL0tjb25maWc6NDE6Y29uZmlnIE1BQzgwMjExX1JDX0RFRkFVTFRfTUlOU1RSRUxcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy00Mi1cXHRib29sIFxcXCJNaW5zdHJlbFxcXCJcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnPTQ4PWVuZGNob2ljZVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTQ5LVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjUwOmNvbmZpZyBNQUM4MDIxMV9SQ19ERUZBVUxUXFxubmV0L21hYzgwMjExL0tjb25maWctNTEtXFx0c3RyaW5nXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZz01Nz1jb21tZW50IFxcXCJTb21lIHdpcmVsZXNzIGRyaXZlcnMgcmVxdWlyZSBhIHJhdGUgY29udHJvbCBhbGdvcml0aG1cXFwiXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy01OS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzo2MDpjb25maWcgTUFDODAyMTFfS1VOSVRfVEVTVFxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTYxLVxcdHRyaXN0YXRlIFxcXCJLVW5pdCB0ZXN0cyBmb3IgbWFjODAyMTFcXFwiIGlmICFLVU5JVF9BTExfVEVTVFNcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTY5LVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjcwOmNvbmZpZyBNQUM4MDIxMV9NRVNIXFxubmV0L21hYzgwMjExL0tjb25maWctNzEtXFx0Ym9vbCBcXFwiRW5hYmxlIG1hYzgwMjExIG1lc2ggbmV0d29ya2luZyBzdXBwb3J0XFxcIlxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWctNzgtXFxubmV0L21hYzgwMjExL0tjb25maWc6Nzk6Y29uZmlnIE1BQzgwMjExX0xFRFNcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy04MC1cXHRib29sIFxcXCJFbmFibGUgTEVEIHRyaWdnZXJzXFxcIlxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWctODctXFxubmV0L21hYzgwMjExL0tjb25maWc6ODg6Y29uZmlnIE1BQzgwMjExX0RFQlVHRlNcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy04OS1cXHRib29sIFxcXCJFeHBvcnQgbWFjODAyMTEgaW50ZXJuYWxzIGluIERlYnVnRlNcXFwiXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy05Ni1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzo5Nzpjb25maWcgTUFDODAyMTFfTUVTU0FHRV9UUkFDSU5HXFxubmV0L21hYzgwMjExL0tjb25maWctOTgtXFx0Ym9vbCBcXFwiVHJhY2UgYWxsIG1hYzgwMjExIGRlYnVnIG1lc3NhZ2VzXFxcIlxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWctMTA5LVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjExMDptZW51Y29uZmlnIE1BQzgwMjExX0RFQlVHX01FTlVcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xMTEtXFx0Ym9vbCBcXFwiU2VsZWN0IG1hYzgwMjExIGRlYnVnZ2luZyBmZWF0dXJlc1xcXCJcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTExNS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoxMTY6Y29uZmlnIE1BQzgwMjExX05PSU5MSU5FXFxubmV0L21hYzgwMjExL0tjb25maWctMTE3LVxcdGJvb2wgXFxcIkRvIG5vdCBpbmxpbmUgVFgvUlggaGFuZGxlcnNcXFwiXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xMzEtXFxubmV0L21hYzgwMjExL0tjb25maWc6MTMyOmNvbmZpZyBNQUM4MDIxMV9WRVJCT1NFX0RFQlVHXFxubmV0L21hYzgwMjExL0tjb25maWctMTMzLVxcdGJvb2wgXFxcIlZlcmJvc2UgZGVidWdnaW5nIG91dHB1dFxcXCJcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE0Mi1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoxNDM6Y29uZmlnIE1BQzgwMjExX01MTUVfREVCVUdcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xNDQtXFx0Ym9vbCBcXFwiVmVyYm9zZSBtYW5hZ2VkIE1MTUUgb3V0cHV0XFxcIlxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWctMTUzLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjE1NDpjb25maWcgTUFDODAyMTFfU1RBX0RFQlVHXFxubmV0L21hYzgwMjExL0tjb25maWctMTU1LVxcdGJvb2wgXFxcIlZlcmJvc2Ugc3RhdGlvbiBkZWJ1Z2dpbmdcXFwiXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xNjItXFxubmV0L21hYzgwMjExL0tjb25maWc6MTYzOmNvbmZpZyBNQUM4MDIxMV9IVF9ERUJVR1xcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE2NC1cXHRib29sIFxcXCJWZXJib3NlIEhUIGRlYnVnZ2luZ1xcXCJcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE3NC1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoxNzU6Y29uZmlnIE1BQzgwMjExX09DQl9ERUJVR1xcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE3Ni1cXHRib29sIFxcXCJWZXJib3NlIE9DQiBkZWJ1Z2dpbmdcXFwiXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xODUtXFxubmV0L21hYzgwMjExL0tjb25maWc6MTg2OmNvbmZpZyBNQUM4MDIxMV9JQlNTX0RFQlVHXFxubmV0L21hYzgwMjExL0tjb25maWctMTg3LVxcdGJvb2wgXFxcIlZlcmJvc2UgSUJTUyBkZWJ1Z2dpbmdcXFwiXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xOTYtXFxubmV0L21hYzgwMjExL0tjb25maWc6MTk3OmNvbmZpZyBNQUM4MDIxMV9QU19ERUJVR1xcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE5OC1cXHRib29sIFxcXCJWZXJib3NlIHBvd2Vyc2F2ZSBtb2RlIGRlYnVnZ2luZ1xcXCJcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTIwOC1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyMDk6Y29uZmlnIE1BQzgwMjExX01QTF9ERUJVR1xcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTIxMC1cXHRib29sIFxcXCJWZXJib3NlIG1lc2ggcGVlciBsaW5rIGRlYnVnZ2luZ1xcXCJcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTIyMS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyMjI6Y29uZmlnIE1BQzgwMjExX01QQVRIX0RFQlVHXFxubmV0L21hYzgwMjExL0tjb25maWctMjIzLVxcdGJvb2wgXFxcIlZlcmJvc2UgbWVzaCBwYXRoIGRlYnVnZ2luZ1xcXCJcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTIzNC1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyMzU6Y29uZmlnIE1BQzgwMjExX01IV01QX0RFQlVHXFxubmV0L21hYzgwMjExL0tjb25maWctMjM2LVxcdGJvb2wgXFxcIlZlcmJvc2UgbWVzaCBIV01QIHJvdXRpbmcgZGVidWdnaW5nXFxcIlxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWctMjQ3LVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjI0ODpjb25maWcgTUFDODAyMTFfTUVTSF9TWU5DX0RFQlVHXFxubmV0L21hYzgwMjExL0tjb25maWctMjQ5LVxcdGJvb2wgXFxcIlZlcmJvc2UgbWVzaCBzeW5jaHJvbml6YXRpb24gZGVidWdnaW5nXFxcIlxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWctMjU4LVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjI1OTpjb25maWcgTUFDODAyMTFfTUVTSF9DU0FfREVCVUdcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yNjAtXFx0Ym9vbCBcXFwiVmVyYm9zZSBtZXNoIGNoYW5uZWwgc3dpdGNoIGRlYnVnZ2luZ1xcXCJcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTI2OS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyNzA6Y29uZmlnIE1BQzgwMjExX01FU0hfUFNfREVCVUdcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yNzEtXFx0Ym9vbCBcXFwiVmVyYm9zZSBtZXNoIHBvd2Vyc2F2ZSBkZWJ1Z2dpbmdcXFwiXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yODAtXFxubmV0L21hYzgwMjExL0tjb25maWc6MjgxOmNvbmZpZyBNQUM4MDIxMV9URExTX0RFQlVHXFxubmV0L21hYzgwMjExL0tjb25maWctMjgyLVxcdGJvb2wgXFxcIlZlcmJvc2UgVERMUyBkZWJ1Z2dpbmdcXFwiXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yOTItXFxubmV0L21hYzgwMjExL0tjb25maWc6MjkzOmNvbmZpZyBNQUM4MDIxMV9ERUJVR19DT1VOVEVSU1xcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTI5NC1cXHRib29sIFxcXCJFeHRyYSBzdGF0aXN0aWNzIGZvciBUWC9SWCBkZWJ1Z2dpbmdcXFwiXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0zMDctXFxubmV0L21hYzgwMjExL0tjb25maWc6MzA4OmNvbmZpZyBNQUM4MDIxMV9TVEFfSEFTSF9NQVhfU0laRVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTMwOS1cXHRpbnQgXFxcIlN0YXRpb24gaGFzaCB0YWJsZSBtYXhpbXVtIHNpemVcXFwiIGlmIE1BQzgwMjExX0RFQlVHX01FTlVcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjJUMTc6NTI6NTIuMjQ5MDU3NzQzWiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM5NjI3OTA0OTEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duOlxuXG4qKkFuYWx5emluZyB0aGUgTUFDODAyMTEgQ29udGV4dCoqXG5cblJpZ2h0LCBNQUM4MDIxMSBzaG91bGQgYmUgc3VmZmljaWVudCBmb3IgdGhlIGJhc2ljIHVuZGVyc3RhbmRpbmcsIEkgdGhpbmsuIExldCdzIGRpZyBpbiBhIGJpdCBmdXJ0aGVyLCB0aG91Z2guIFdlIHdhbnQgdG8gYmUgdGhvcm91Z2guIFRoZSBjb2RlJ3MgdXNpbmcgYGllZWU4MDIxMV92aWZfaXNfbWxkKFx1MDAyNnN0YS1cdTAwM2VzZGF0YS1cdTAwM2V2aWYpYC4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hhdCwgaWYgYW55LCBzcGVjaWZpYyBjb25maWd1cmF0aW9uIG9yIGltcGxpY2F0aW9ucyB0aGF0IHBhcnRpY3VsYXIgZnVuY3Rpb24gY2FsbCBicmluZ3MgaW50byBwbGF5IHdpdGhpbiB0aGlzIGNvbnRleHQuIFRoYXQgZnVuY3Rpb24gY2FsbCBpcyBrZXkgaGVyZS4gSSdsbCBuZWVkIHRvIGNoZWNrIHRoZSByZWxldmFudCBkb2N1bWVudGF0aW9uIG9yIHNvdXJjZSB0byBzZWUgaWYgd2UgcmVxdWlyZSBzcGVjaWFsIGNvbmZpZ3VyYXRpb25zLlxuXG5cbiIsIklucHV0VG9rZW5zIjo4NjY1LCJPdXRwdXRUb2tlbnMiOjQ0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NjQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjJUMTc6NTI6NTYuMjExODUxNjM0WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMjc5NzI4MTUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiaWVlZTgwMjExX3ZpZl9pc19tbGRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L21hYzgwMjExL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvbWFjODAyMTEvYXAuYz01MT1pZWVlODAyMTFfcnhfZW1sX29wX21vZGVfbm90aWYoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsXFxuLS1cXG5uZXQvbWFjODAyMTEvYXAuYy02OC1cXG5uZXQvbWFjODAyMTEvYXAuYzo2OTpcXHRpZiAoIWllZWU4MDIxMV92aWZfaXNfbWxkKFxcdTAwMjZzZGF0YS1cXHUwMDNldmlmKSlcXG5uZXQvbWFjODAyMTEvYXAuYy03MC1cXHRcXHRyZXR1cm47XFxuLS1cXG5uZXQvbWFjODAyMTEvY2ZnLmM9Mjc9aWVlZTgwMjExX2xpbmtfb3JfZGVmbGluayhzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSwgaW50IGxpbmtfaWQsXFxuLS1cXG5uZXQvbWFjODAyMTEvY2ZnLmMtMzctXFx0XFx0ICovXFxubmV0L21hYzgwMjExL2NmZy5jOjM4OlxcdFxcdGlmIChyZXF1aXJlX3ZhbGlkIFxcdTAwMjZcXHUwMDI2IGllZWU4MDIxMV92aWZfaXNfbWxkKFxcdTAwMjZzZGF0YS1cXHUwMDNldmlmKSlcXG5uZXQvbWFjODAyMTEvY2ZnLmMtMzktXFx0XFx0XFx0cmV0dXJuIEVSUl9QVFIoLUVJTlZBTCk7XFxuLS1cXG5uZXQvbWFjODAyMTEvY2ZnLmM9MjEyOT1zdGF0aWMgaW50IHN0YV9hcHBseV9hdXRoX2ZsYWdzKHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsLFxcbi0tXFxubmV0L21hYzgwMjExL2NmZy5jLTIxNTEtXFx0XFx0aWYgKCF0ZXN0X3N0YV9mbGFnKHN0YSwgV0xBTl9TVEFfUkFURV9DT05UUk9MKSkge1xcbm5ldC9tYWM4MDIxMS9jZmcuYzoyMTUyOlxcdFxcdFxcdGlmICghaWVlZTgwMjExX3ZpZl9pc19tbGQoXFx1MDAyNnN0YS1cXHUwMDNlc2RhdGEtXFx1MDAzZXZpZikgXFx1MDAyNlxcdTAwMjZcXG5uZXQvbWFjODAyMTEvY2ZnLmMtMjE1My1cXHRcXHRcXHQgICAgIXJjdV9hY2Nlc3NfcG9pbnRlcihzdGEtXFx1MDAzZXNkYXRhLVxcdTAwM2V2aWYuYnNzX2NvbmYuY2hhbmN0eF9jb25mKSlcXG4tLVxcbm5ldC9tYWM4MDIxMS9jZmcuYz0zOTExPWludCBfX2llZWU4MDIxMV9yZXF1ZXN0X3NtcHNfbWdkKHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLFxcbi0tXFxubmV0L21hYzgwMjExL2NmZy5jLTM5NzMtXFx0XFx0XFx0XFx0XFx0IGFwLCBhcCxcXG5uZXQvbWFjODAyMTEvY2ZnLmM6Mzk3NDpcXHRcXHRcXHRcXHRcXHQgaWVlZTgwMjExX3ZpZl9pc19tbGQoXFx1MDAyNnNkYXRhLVxcdTAwM2V2aWYpID9cXG5uZXQvbWFjODAyMTEvY2ZnLmMtMzk3NS1cXHRcXHRcXHRcXHRcXHQgbGluay1cXHUwMDNlbGlua19pZCA6IC0xKTtcXG4tLVxcbm5ldC9tYWM4MDIxMS9jZmcuYz00OTU3PXN0YXRpYyBpbnQgaWVlZTgwMjExX3Byb2JlX2NsaWVudChzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbi0tXFxubmV0L21hYzgwMjExL2NmZy5jLTQ5ODYtXFxubmV0L21hYzgwMjExL2NmZy5jOjQ5ODc6XFx0aWYgKGllZWU4MDIxMV92aWZfaXNfbWxkKFxcdTAwMjZzZGF0YS1cXHUwMDNldmlmKSkge1xcbm5ldC9tYWM4MDIxMS9jZmcuYy00OTg4LVxcdFxcdGlmIChzdGEtXFx1MDAzZXN0YS5tbG8pIHtcXG4tLVxcbm5ldC9tYWM4MDIxMS9jZmcuYy01MDQxLVxcdG1lbWNweShudWxsZnVuYy1cXHUwMDNlYWRkcjEsIHN0YS1cXHUwMDNlc3RhLmFkZHIsIEVUSF9BTEVOKTtcXG5uZXQvbWFjODAyMTEvY2ZnLmM6NTA0MjpcXHRpZiAoaWVlZTgwMjExX3ZpZl9pc19tbGQoXFx1MDAyNnNkYXRhLVxcdTAwM2V2aWYpIFxcdTAwMjZcXHUwMDI2ICFzdGEtXFx1MDAzZXN0YS5tbG8pIHtcXG5uZXQvbWFjODAyMTEvY2ZnLmMtNTA0My1cXHRcXHRtZW1jcHkobnVsbGZ1bmMtXFx1MDAzZWFkZHIyLCBjb25mLVxcdTAwM2VhZGRyLCBFVEhfQUxFTik7XFxuLS1cXG5uZXQvbWFjODAyMTEvZGVidWcuaD0xMjU9ZG8ge1xcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4tLVxcbm5ldC9tYWM4MDIxMS9kZWJ1Zy5oLTEzOS1cXHRkbyB7XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbm5ldC9tYWM4MDIxMS9kZWJ1Zy5oOjE0MDpcXHRcXHRpZiAoaWVlZTgwMjExX3ZpZl9pc19tbGQoXFx1MDAyNihsaW5rKS1cXHUwMDNlc2RhdGEtXFx1MDAzZXZpZikpICAgICAgICAgIFxcXFxcXG5uZXQvbWFjODAyMTEvZGVidWcuaC0xNDEtXFx0XFx0XFx0X3NkYXRhX2luZm8oKGxpbmspLVxcdTAwM2VzZGF0YSwgXFxcIltsaW5rICVkXSBcXFwiIGZtdCxcXHRcXFxcXFxuLS1cXG5uZXQvbWFjODAyMTEvZGVidWcuaC0xNDgtXFx0ZG8ge1xcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG5uZXQvbWFjODAyMTEvZGVidWcuaDoxNDk6XFx0XFx0aWYgKGllZWU4MDIxMV92aWZfaXNfbWxkKFxcdTAwMjYobGluayktXFx1MDAzZXNkYXRhLVxcdTAwM2V2aWYpKSAgICAgICAgICBcXFxcXFxubmV0L21hYzgwMjExL2RlYnVnLmgtMTUwLVxcdFxcdFxcdF9zZGF0YV9lcnIoKGxpbmspLVxcdTAwM2VzZGF0YSwgXFxcIltsaW5rICVkXSBcXFwiIGZtdCxcXHRcXFxcXFxuLS1cXG5uZXQvbWFjODAyMTEvZGVidWcuaC0xNTktXFx0ZG8ge1xcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG5uZXQvbWFjODAyMTEvZGVidWcuaDoxNjA6XFx0XFx0aWYgKGllZWU4MDIxMV92aWZfaXNfbWxkKFxcdTAwMjZzZGF0YS1cXHUwMDNldmlmKSlcXHRcXHRcXHRcXFxcXFxubmV0L21hYzgwMjExL2RlYnVnLmgtMTYxLVxcdFxcdFxcdF9zZGF0YV9pbmZvKHNkYXRhLCBcXFwiW2xpbmsgJWRdIFxcXCIgZm10LCBsaW5rX2lkLFxcdFxcXFxcXG4tLVxcbm5ldC9tYWM4MDIxMS9kZWJ1Zy5oLTE2Ny1cXHRkbyB7XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbm5ldC9tYWM4MDIxMS9kZWJ1Zy5oOjE2ODpcXHRcXHRpZiAoaWVlZTgwMjExX3ZpZl9pc19tbGQoXFx1MDAyNihzZGF0YSktXFx1MDAzZXZpZikpXFx0XFx0XFxcXFxcbm5ldC9tYWM4MDIxMS9kZWJ1Zy5oLTE2OS1cXHRcXHRcXHRfc2RhdGFfZGJnKHByaW50LCBzZGF0YSwgXFxcIltsaW5rICVkXSBcXFwiIGZtdCxcXHRcXFxcXFxuLS1cXG5uZXQvbWFjODAyMTEvaWVlZTgwMjExX2kuaD0xNzM5PWllZWU4MDIxMV9nZXRfc2JhbmQoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEpXFxuLS1cXG5uZXQvbWFjODAyMTEvaWVlZTgwMjExX2kuaC0xNzQ0LVxcbm5ldC9tYWM4MDIxMS9pZWVlODAyMTFfaS5oOjE3NDU6XFx0V0FSTl9PTihpZWVlODAyMTFfdmlmX2lzX21sZChcXHUwMDI2c2RhdGEtXFx1MDAzZXZpZikpO1xcbm5ldC9tYWM4MDIxMS9pZWVlODAyMTFfaS5oLTE3NDYtXFxuLS1cXG5uZXQvbWFjODAyMTEvaWZhY2UuYz00Nzk9c3RhdGljIHZvaWQgaWVlZTgwMjExX2RvX3N0b3Aoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsIGJvb2wgZ29pbmdfZG93bilcXG4tLVxcbm5ldC9tYWM4MDIxMS9pZmFjZS5jLTU2Mi1cXG5uZXQvbWFjODAyMTEvaWZhY2UuYzo1NjM6XFx0V0FSTihpZWVlODAyMTFfdmlmX2lzX21sZChcXHUwMDI2c2RhdGEtXFx1MDAzZXZpZiksXFxubmV0L21hYzgwMjExL2lmYWNlLmMtNTY0LVxcdCAgICAgXFxcImRlc3Ryb3lpbmcgaW50ZXJmYWNlIHdpdGggdmFsaWQgbGlua3MgMHglMDR4XFxcXG5cXFwiLFxcbi0tXFxubmV0L21hYzgwMjExL2lmYWNlLmM9MTk3ND1zdGF0aWMgaW50IGllZWU4MDIxMV9ydW50aW1lX2NoYW5nZV9pZnR5cGUoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsXFxuLS1cXG5uZXQvbWFjODAyMTEvaWZhY2UuYy0xOTg3LVxcdC8qIGZvciBub3csIGRvbid0IHN1cHBvcnQgY2hhbmdpbmcgd2hpbGUgbGlua3MgZXhpc3QgKi9cXG5uZXQvbWFjODAyMTEvaWZhY2UuYzoxOTg4OlxcdGlmIChpZWVlODAyMTFfdmlmX2lzX21sZChcXHUwMDI2c2RhdGEtXFx1MDAzZXZpZikpXFxubmV0L21hYzgwMjExL2lmYWNlLmMtMTk4OS1cXHRcXHRyZXR1cm4gLUVCVVNZO1xcbi0tXFxubmV0L21hYzgwMjExL21haW4uYz0zMzY9dm9pZCBpZWVlODAyMTFfYnNzX2luZm9fY2hhbmdlX25vdGlmeShzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSxcXG4tLVxcbm5ldC9tYWM4MDIxMS9tYWluLmMtMzQyLVxcbm5ldC9tYWM4MDIxMS9tYWluLmM6MzQzOlxcdFdBUk5fT05fT05DRShpZWVlODAyMTFfdmlmX2lzX21sZChcXHUwMDI2c2RhdGEtXFx1MDAzZXZpZikpO1xcbm5ldC9tYWM4MDIxMS9tYWluLmMtMzQ0LVxcbi0tXFxubmV0L21hYzgwMjExL21sbWUuYz0yNDE0PWllZWU4MDIxMV9hc3NvY19hZGRfbWxfZWxlbShzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSxcXG4tLVxcbm5ldC9tYWM4MDIxMS9tbG1lLmMtMjQyOC1cXG5uZXQvbWFjODAyMTEvbWxtZS5jOjI0Mjk6XFx0aWYgKCFpZWVlODAyMTFfdmlmX2lzX21sZChcXHUwMDI2c2RhdGEtXFx1MDAzZXZpZikpXFxubmV0L21hYzgwMjExL21sbWUuYy0yNDMwLVxcdFxcdHJldHVybjtcXG4tLVxcbm5ldC9tYWM4MDIxMS9tbG1lLmM9MjU4Mj1zdGF0aWMgaW50IGllZWU4MDIxMV9zZW5kX2Fzc29jKHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhKVxcbi0tXFxubmV0L21hYzgwMjExL21sbWUuYy0yNjM5LVxcbm5ldC9tYWM4MDIxMS9tbG1lLmM6MjY0MDpcXHRpZiAoaWVlZTgwMjExX3ZpZl9pc19tbGQoXFx1MDAyNnNkYXRhLVxcdTAwM2V2aWYpKSB7XFxubmV0L21hYzgwMjExL21sbWUuYy0yNjQxLVxcdFxcdC8qIGNvbnNpZGVyIHRoZSBtdWx0aS1saW5rIGVsZW1lbnQgd2l0aCBTVEEgcHJvZmlsZSAqL1xcbi0tXFxubmV0L21hYzgwMjExL21sbWUuYz00Mzk0PXN0YXRpYyB2b2lkIGllZWU4MDIxMV9zZXRfYXNzb2NpYXRlZChzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSxcXG4tLVxcbm5ldC9tYWM4MDIxMS9tbG1lLmMtNDQxNC1cXG5uZXQvbWFjODAyMTEvbWxtZS5jOjQ0MTU6XFx0XFx0aWYgKGllZWU4MDIxMV92aWZfaXNfbWxkKFxcdTAwMjZzZGF0YS1cXHUwMDNldmlmKSBcXHUwMDI2XFx1MDAyNlxcbm5ldC9tYWM4MDIxMS9tbG1lLmMtNDQxNi1cXHRcXHQgICAgIShpZWVlODAyMTFfdmlmX3VzYWJsZV9saW5rcyhcXHUwMDI2c2RhdGEtXFx1MDAzZXZpZikgXFx1MDAyNiBCSVQobGlua19pZCkpKVxcbi0tXFxubmV0L21hYzgwMjExL21sbWUuYy00NDM2LVxcbm5ldC9tYWM4MDIxMS9tbG1lLmM6NDQzNzpcXHRpZiAoaWVlZTgwMjExX3ZpZl9pc19tbGQoXFx1MDAyNnNkYXRhLVxcdTAwM2V2aWYpKSB7XFxubmV0L21hYzgwMjExL21sbWUuYy00NDM4LVxcdFxcdGZvciAobGlua19pZCA9IDA7XFxuLS1cXG5uZXQvbWFjODAyMTEvbWxtZS5jLTQ0NjgtXFx0LyogbGVhdmUgdGhpcyBoZXJlIHRvIG5vdCBjaGFuZ2Ugb3JkZXJpbmcgaW4gbm9uLU1MTyBjYXNlcyAqL1xcbm5ldC9tYWM4MDIxMS9tbG1lLmM6NDQ2OTpcXHRpZiAoIWllZWU4MDIxMV92aWZfaXNfbWxkKFxcdTAwMjZzZGF0YS1cXHUwMDNldmlmKSlcXG5uZXQvbWFjODAyMTEvbWxtZS5jLTQ0NzAtXFx0XFx0aWVlZTgwMjExX3JlY2FsY19zbXBzKHNkYXRhLCBcXHUwMDI2c2RhdGEtXFx1MDAzZWRlZmxpbmspO1xcbi0tXFxubmV0L21hYzgwMjExL21sbWUuYz00NDc2PXN0YXRpYyB2b2lkIGllZWU4MDIxMV9tbF9yZWNvbmZfcmVzZXQoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEpXFxuLS1cXG5uZXQvbWFjODAyMTEvbWxtZS5jLTQ0ODAtXFxubmV0L21hYzgwMjExL21sbWUuYzo0NDgxOlxcdGlmICghaWVlZTgwMjExX3ZpZl9pc19tbGQoXFx1MDAyNnNkYXRhLVxcdTAwM2V2aWYpIHx8XFxubmV0L21hYzgwMjExL21sbWUuYy00NDgyLVxcdCAgICAhKHNkYXRhLVxcdTAwM2V1Lm1nZC5yZWNvbmYuYWRkZWRfbGlua3MgfFxcbi0tXFxubmV0L21hYzgwMjExL21sbWUuYz00NTA4PXN0YXRpYyB2b2lkIGllZWU4MDIxMV9zZXRfZGlzYXNzb2Moc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsXFxuLS1cXG5uZXQvbWFjODAyMTEvbWxtZS5jLTQ2MzItXFx0LyogZmluYWxseSByZXNldCBhbGwgQlNTIC8gY29uZmlnIHBhcmFtZXRlcnMgKi9cXG5uZXQvbWFjODAyMTEvbWxtZS5jOjQ2MzM6XFx0aWYgKCFpZWVlODAyMTFfdmlmX2lzX21sZChcXHUwMDI2c2RhdGEtXFx1MDAzZXZpZikpXFxubmV0L21hYzgwMjExL21sbWUuYy00NjM0LVxcdFxcdGNoYW5nZWQgfD0gaWVlZTgwMjExX3Jlc2V0X2VycF9pbmZvKHNkYXRhKTtcXG4tLVxcbm5ldC9tYWM4MDIxMS9tbG1lLmMtNDY1Ny1cXHQgICAgICAgc2l6ZW9mKHNkYXRhLVxcdTAwM2V2aWYuYnNzX2NvbmYubXVfZ3JvdXAucG9zaXRpb24pKTtcXG5uZXQvbWFjODAyMTEvbWxtZS5jOjQ2NTg6XFx0aWYgKCFpZWVlODAyMTFfdmlmX2lzX21sZChcXHUwMDI2c2RhdGEtXFx1MDAzZXZpZikpXFxubmV0L21hYzgwMjExL21sbWUuYy00NjU5LVxcdFxcdGNoYW5nZWQgfD0gQlNTX0NIQU5HRURfTVVfR1JPVVBTO1xcbi0tXFxubmV0L21hYzgwMjExL21sbWUuYy00NjcxLVxcdHNkYXRhLVxcdTAwM2V2aWYuYnNzX2NvbmYucW9zID0gZmFsc2U7XFxubmV0L21hYzgwMjExL21sbWUuYzo0NjcyOlxcdGlmICghaWVlZTgwMjExX3ZpZl9pc19tbGQoXFx1MDAyNnNkYXRhLVxcdTAwM2V2aWYpKSB7XFxubmV0L21hYzgwMjExL21sbWUuYy00NjczLVxcdFxcdGNoYW5nZWQgfD0gQlNTX0NIQU5HRURfUU9TO1xcbi0tXFxubmV0L21hYzgwMjExL21sbWUuYz00OTcyPXN0cnVjdCBza19idWZmICppZWVlODAyMTFfYXBfcHJvYmVyZXFfZ2V0KHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxcbi0tXFxubmV0L21hYzgwMjExL21sbWUuYy00OTg0LVxcdGlmIChXQVJOX09OKHNkYXRhLVxcdTAwM2V2aWYudHlwZSAhPSBOTDgwMjExX0lGVFlQRV9TVEFUSU9OIHx8XFxubmV0L21hYzgwMjExL21sbWUuYzo0OTg1OlxcdFxcdCAgICBpZWVlODAyMTFfdmlmX2lzX21sZChcXHUwMDI2c2RhdGEtXFx1MDAzZXZpZikpKVxcbm5ldC9tYWM4MDIxMS9tbG1lLmMtNDk4Ni1cXHRcXHRyZXR1cm4gTlVMTDtcXG4tLVxcbm5ldC9tYWM4MDIxMS9tbG1lLmM9NTMwMD1zdGF0aWMgdm9pZCBpZWVlODAyMTFfZGVzdHJveV9hc3NvY19kYXRhKHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLFxcbi0tXFxubmV0L21hYzgwMjExL21sbWUuYy01MzM1LVxcbm5ldC9tYWM4MDIxMS9tbG1lLmM6NTMzNjpcXHRcXHRcXHRpZiAoaWVlZTgwMjExX3ZpZl9pc19tbGQoXFx1MDAyNnNkYXRhLVxcdTAwM2V2aWYpKVxcbm5ldC9tYWM4MDIxMS9tbG1lLmMtNTMzNy1cXHRcXHRcXHRcXHRkYXRhLmFwX21sZF9hZGRyID0gYXNzb2NfZGF0YS1cXHUwMDNlYXBfYWRkcjtcXG4tLVxcbm5ldC9tYWM4MDIxMS9tbG1lLmM9NjkyND1zdGF0aWMgYm9vbCBpZWVlODAyMTFfYXNzb2Nfc3VjY2VzcyhzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSxcXG4tLVxcbm5ldC9tYWM4MDIxMS9tbG1lLmMtNjk0OC1cXG5uZXQvbWFjODAyMTEvbWxtZS5jOjY5NDk6XFx0aWYgKGllZWU4MDIxMV92aWZfaXNfbWxkKFxcdTAwMjZzZGF0YS1cXHUwMDNldmlmKSkge1xcbm5ldC9tYWM4MDIxMS9tbG1lLmMtNjk1MC1cXHRcXHRpZiAoIWVsZW1zLVxcdTAwM2VtbF9iYXNpYylcXG4tLVxcbm5ldC9tYWM4MDIxMS9tbG1lLmMtNzAxMC1cXG5uZXQvbWFjODAyMTEvbWxtZS5jOjcwMTE6XFx0XFx0aWYgKGllZWU4MDIxMV92aWZfaXNfbWxkKFxcdTAwMjZzZGF0YS1cXHUwMDNldmlmKSlcXG5uZXQvbWFjODAyMTEvbWxtZS5jLTcwMTItXFx0XFx0XFx0bGlua19pbmZvKGxpbmssXFxuLS1cXG5uZXQvbWFjODAyMTEvbWxtZS5jPTcxMzU9c3RhdGljIHZvaWQgaWVlZTgwMjExX3J4X21nbXRfYXNzb2NfcmVzcChzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSxcXG4tLVxcbm5ldC9tYWM4MDIxMS9tbG1lLmMtNzI3Mi1cXG5uZXQvbWFjODAyMTEvbWxtZS5jOjcyNzM6XFx0XFx0aWYgKGllZWU4MDIxMV92aWZfaXNfbWxkKFxcdTAwMjZzZGF0YS1cXHUwMDNldmlmKSkge1xcbm5ldC9tYWM4MDIxMS9tbG1lLmMtNzI3NC1cXHRcXHRcXHRzdHJ1Y3QgaWVlZTgwMjExX21sZV9iYXNpY19jb21tb25faW5mbyAqY29tbW9uO1xcbi0tXFxubmV0L21hYzgwMjExL21sbWUuYy03MzM5LVxcbm5ldC9tYWM4MDIxMS9tbG1lLmM6NzM0MDpcXHRpZiAoaWVlZTgwMjExX3ZpZl9pc19tbGQoXFx1MDAyNnNkYXRhLVxcdTAwM2V2aWYpKSB7XFxubmV0L21hYzgwMjExL21sbWUuYy03MzQxLVxcdFxcdGV0aGVyX2FkZHJfY29weShhcF9tbGRfYWRkciwgc2RhdGEtXFx1MDAzZXZpZi5jZmcuYXBfYWRkcik7XFxuLS1cXG5uZXQvbWFjODAyMTEvbWxtZS5jPTc2MzE9c3RhdGljIHZvaWQgaWVlZTgwMjExX21sX3JlY29uZmlndXJhdGlvbihzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSxcXG4tLVxcbm5ldC9tYWM4MDIxMS9tbG1lLmMtNzYzOS1cXG5uZXQvbWFjODAyMTEvbWxtZS5jOjc2NDA6XFx0aWYgKCFpZWVlODAyMTFfdmlmX2lzX21sZChcXHUwMDI2c2RhdGEtXFx1MDAzZXZpZikgfHwgIWVsZW1zLVxcdTAwM2VtbF9yZWNvbmYpXFxubmV0L21hYzgwMjExL21sbWUuYy03NjQxLVxcdFxcdHJldHVybjtcXG4tLVxcbm5ldC9tYWM4MDIxMS9tbG1lLmM9NzgwMT1zdGF0aWMgdm9pZCBpZWVlODAyMTFfcHJvY2Vzc19hZHZfdHRsbShzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSxcXG4tLVxcbm5ldC9tYWM4MDIxMS9tbG1lLmMtNzgwNy1cXG5uZXQvbWFjODAyMTEvbWxtZS5jOjc4MDg6XFx0aWYgKCFpZWVlODAyMTFfdmlmX2lzX21sZChcXHUwMDI2c2RhdGEtXFx1MDAzZXZpZikpXFxubmV0L21hYzgwMjExL21sbWUuYy03ODA5LVxcdFxcdHJldHVybjtcXG4tLVxcbm5ldC9tYWM4MDIxMS9tbG1lLmM9ODA1Nj1zdGF0aWMgdm9pZCBpZWVlODAyMTFfcnhfbWdtdF9iZWFjb24oc3RydWN0IGllZWU4MDIxMV9saW5rX2RhdGEgKmxpbmssXFxuLS1cXG5uZXQvbWFjODAyMTEvbWxtZS5jLTgxMTctXFx0aWYgKGlmbWdkLVxcdTAwM2Vhc3NvY19kYXRhIFxcdTAwMjZcXHUwMDI2IGlmbWdkLVxcdTAwM2Vhc3NvY19kYXRhLVxcdTAwM2VuZWVkX2JlYWNvbiBcXHUwMDI2XFx1MDAyNlxcbm5ldC9tYWM4MDIxMS9tbG1lLmM6ODExODpcXHQgICAgIVdBUk5fT04oaWVlZTgwMjExX3ZpZl9pc19tbGQoXFx1MDAyNnNkYXRhLVxcdTAwM2V2aWYpKSBcXHUwMDI2XFx1MDAyNlxcbm5ldC9tYWM4MDIxMS9tbG1lLmMtODExOS1cXHQgICAgaWVlZTgwMjExX3J4X291cl9iZWFjb24oYnNzaWQsIGlmbWdkLVxcdTAwM2Vhc3NvY19kYXRhLVxcdTAwM2VsaW5rWzBdLmJzcykpIHtcXG4tLVxcbm5ldC9tYWM4MDIxMS9tbG1lLmM9ODU0MT1pbnQgaWVlZTgwMjExX3JlcV9uZWdfdHRsbShzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSxcXG4tLVxcbm5ldC9tYWM4MDIxMS9tbG1lLmMtODU0Ni1cXG5uZXQvbWFjODAyMTEvbWxtZS5jOjg1NDc6XFx0aWYgKCFpZWVlODAyMTFfdmlmX2lzX21sZChcXHUwMDI2c2RhdGEtXFx1MDAzZXZpZikgfHxcXG5uZXQvbWFjODAyMTEvbWxtZS5jLTg1NDgtXFx0ICAgICEoc2RhdGEtXFx1MDAzZXZpZi5jZmcubWxkX2NhcGFfb3AgXFx1MDAyNlxcbi0tXFxubmV0L21hYzgwMjExL21sbWUuYz04NzA5PXN0YXRpYyB2b2lkIGllZWU4MDIxMV9wcm9jZXNzX25lZ190dGxtX3JlcShzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSxcXG4tLVxcbm5ldC9tYWM4MDIxMS9tbG1lLmMtODcyMC1cXG5uZXQvbWFjODAyMTEvbWxtZS5jOjg3MjE6XFx0aWYgKCFpZWVlODAyMTFfdmlmX2lzX21sZChcXHUwMDI2c2RhdGEtXFx1MDAzZXZpZikpXFxubmV0L21hYzgwMjExL21sbWUuYy04NzIyLVxcdFxcdHJldHVybjtcXG4tLVxcbm5ldC9tYWM4MDIxMS9tbG1lLmM9ODc3Mz1zdGF0aWMgdm9pZCBpZWVlODAyMTFfcHJvY2Vzc19uZWdfdHRsbV9yZXMoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsXFxuLS1cXG5uZXQvbWFjODAyMTEvbWxtZS5jLTg3NzYte1xcbm5ldC9tYWM4MDIxMS9tbG1lLmM6ODc3NzpcXHRpZiAoIWllZWU4MDIxMV92aWZfaXNfbWxkKFxcdTAwMjZzZGF0YS1cXHUwMDNldmlmKSB8fFxcbm5ldC9tYWM4MDIxMS9tbG1lLmMtODc3OC1cXHQgICAgbWdtdC1cXHUwMDNldS5hY3Rpb24udHRsbV9yZXMuZGlhbG9nX3Rva2VuICE9IHNkYXRhLVxcdTAwM2V1Lm1nZC5kaWFsb2dfdG9rZW5fYWxsb2MpXFxuLS1cXG5uZXQvbWFjODAyMTEvbWxtZS5jPTg4OTU9c3RhdGljIGludCBpZWVlODAyMTFfYXV0aChzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSlcXG4tLVxcbm5ldC9tYWM4MDIxMS9tbG1lLmMtODkxMi1cXHRpZiAoYXV0aF9kYXRhLVxcdTAwM2VhbGdvcml0aG0gPT0gV0xBTl9BVVRIX0VQUEtFIFxcdTAwMjZcXHUwMDI2XFxubmV0L21hYzgwMjExL21sbWUuYzo4OTEzOlxcdCAgICBpZWVlODAyMTFfdmlmX2lzX21sZChcXHUwMDI2c2RhdGEtXFx1MDAzZXZpZikgXFx1MDAyNlxcdTAwMjZcXG5uZXQvbWFjODAyMTEvbWxtZS5jLTg5MTQtXFx0ICAgICFjZmc4MDIxMV9maW5kX2V4dF9lbGVtKFdMQU5fRUlEX0VYVF9FSFRfTVVMVElfTElOSyxcXG4tLVxcbm5ldC9tYWM4MDIxMS9tbG1lLmM9OTg0Mj1pbnQgaWVlZTgwMjExX21nZF9hdXRoKHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLFxcbi0tXFxubmV0L21hYzgwMjExL21sbWUuYy0xMDA0MC0gZXJyX2NsZWFyOlxcbm5ldC9tYWM4MDIxMS9tbG1lLmM6MTAwNDE6XFx0aWYgKCFpZWVlODAyMTFfdmlmX2lzX21sZChcXHUwMDI2c2RhdGEtXFx1MDAzZXZpZikpIHtcXG5uZXQvbWFjODAyMTEvbWxtZS5jLTEwMDQyLVxcdFxcdGV0aF96ZXJvX2FkZHIoc2RhdGEtXFx1MDAzZWRlZmxpbmsudS5tZ2QuYnNzaWQpO1xcbi0tXFxubmV0L21hYzgwMjExL21sbWUuYz0xMDg2OD1pZWVlODAyMTFfcHJvY2Vzc19tbF9yZWNvbmZfcmVzcChzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSxcXG4tLVxcbm5ldC9tYWM4MDIxMS9tbG1lLmMtMTA4ODQtXFxubmV0L21hYzgwMjExL21sbWUuYzoxMDg4NTpcXHRpZiAoIWllZWU4MDIxMV92aWZfaXNfbWxkKFxcdTAwMjZzZGF0YS1cXHUwMDNldmlmKSB8fFxcbm5ldC9tYWM4MDIxMS9tbG1lLmMtMTA4ODYtXFx0ICAgIGxlbiBcXHUwMDNjIElFRUU4MDIxMV9NSU5fQUNUSU9OX1NJWkUobWxfcmVjb25mX3Jlc3ApIHx8XFxuLS1cXG5uZXQvbWFjODAyMTEvbWxtZS5jPTExMzMwPWludCBpZWVlODAyMTFfbWdkX2Fzc29jX21sX3JlY29uZihzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSxcXG4tLVxcbm5ldC9tYWM4MDIxMS9tbG1lLmMtMTEzNDEtXFxubmV0L21hYzgwMjExL21sbWUuYzoxMTM0MjpcXHRpZiAoIWllZWU4MDIxMV92aWZfaXNfbWxkKFxcdTAwMjZzZGF0YS1cXHUwMDNldmlmKSB8fFxcbm5ldC9tYWM4MDIxMS9tbG1lLmMtMTEzNDMtXFx0ICAgICEoc2RhdGEtXFx1MDAzZXZpZi5jZmcubWxkX2NhcGFfb3AgXFx1MDAyNlxcbi0tXFxubmV0L21hYzgwMjExL21sbWUuYz0xMTU1ND1zdGF0aWMgYm9vbCBpZWVlODAyMTFfbWdkX2VwY3Nfc3VwcChzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSlcXG4tLVxcbm5ldC9tYWM4MDIxMS9tbG1lLmMtMTE1NjAtXFxubmV0L21hYzgwMjExL21sbWUuYzoxMTU2MTpcXHRpZiAoIWllZWU4MDIxMV92aWZfaXNfbWxkKFxcdTAwMjZzZGF0YS1cXHUwMDNldmlmKSlcXG5uZXQvbWFjODAyMTEvbWxtZS5jLTExNTYyLVxcdFxcdHJldHVybiBmYWxzZTtcXG4tLVxcbm5ldC9tYWM4MDIxMS9tbG1lLmM9MTE2Mjg9c3RhdGljIHZvaWQgaWVlZTgwMjExX21sX2VwY3Moc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsXFxuLS1cXG5uZXQvbWFjODAyMTEvbWxtZS5jLTExNjM2LVxcbm5ldC9tYWM4MDIxMS9tbG1lLmM6MTE2Mzc6XFx0aWYgKCFpZWVlODAyMTFfdmlmX2lzX21sZChcXHUwMDI2c2RhdGEtXFx1MDAzZXZpZikgfHwgIWVsZW1zLVxcdTAwM2VtbF9lcGNzKVxcbm5ldC9tYWM4MDIxMS9tbG1lLmMtMTE2MzgtXFx0XFx0cmV0dXJuO1xcbi0tXFxubmV0L21hYzgwMjExL21sbWUuYz0xMTc0Nj1zdGF0aWMgdm9pZCBpZWVlODAyMTFfcHJvY2Vzc19lcGNzX3RlYXJkb3duKHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLFxcbi0tXFxubmV0L21hYzgwMjExL21sbWUuYy0xMTc0OS17XFxubmV0L21hYzgwMjExL21sbWUuYzoxMTc1MDpcXHRpZiAoIWllZWU4MDIxMV92aWZfaXNfbWxkKFxcdTAwMjZzZGF0YS1cXHUwMDNldmlmKSB8fFxcbm5ldC9tYWM4MDIxMS9tbG1lLmMtMTE3NTEtXFx0ICAgICFzZGF0YS1cXHUwMDNldS5tZ2QuZXBjcy5lbmFibGVkKVxcbi0tXFxubmV0L21hYzgwMjExL3JhdGUuYz0zMT12b2lkIHJhdGVfY29udHJvbF9yYXRlX2luaXQoc3RydWN0IGxpbmtfc3RhX2luZm8gKmxpbmtfc3RhKVxcbi0tXFxubmV0L21hYzgwMjExL3JhdGUuYy00NC1cXHQvKiBTVyByYXRlIGNvbnRyb2wgaXNuJ3Qgc3VwcG9ydGVkIHdpdGggTUxPIHJpZ2h0IG5vdyAqL1xcbm5ldC9tYWM4MDIxMS9yYXRlLmM6NDU6XFx0aWYgKFdBUk5fT04oaWVlZTgwMjExX3ZpZl9pc19tbGQoXFx1MDAyNnN0YS1cXHUwMDNlc2RhdGEtXFx1MDAzZXZpZikpKVxcbm5ldC9tYWM4MDIxMS9yYXRlLmMtNDYtXFx0XFx0cmV0dXJuO1xcbi0tXFxubmV0L21hYzgwMjExL3J4LmM9MTUyMT1pZWVlODAyMTFfcnhfaF9jaGVja19kdXAoc3RydWN0IGllZWU4MDIxMV9yeF9kYXRhICpyeClcXG4tLVxcbm5ldC9tYWM4MDIxMS9yeC5jLTE1NTAtXFxubmV0L21hYzgwMjExL3J4LmM6MTU1MTpcXHRcXHRpZiAoIWllZWU4MDIxMV92aWZfaXNfbWxkKFxcdTAwMjZzZGF0YS1cXHUwMDNldmlmKSB8fFxcbm5ldC9tYWM4MDIxMS9yeC5jLTE1NTItXFx0XFx0ICAgIHNkYXRhLVxcdTAwM2V2aWYudHlwZSAhPSBOTDgwMjExX0lGVFlQRV9TVEFUSU9OKVxcbi0tXFxubmV0L21hYzgwMjExL3J4LmM9MjY4ND1ib29sIGllZWU4MDIxMV9pc19vdXJfYWRkcihzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSxcXG4tLVxcbm5ldC9tYWM4MDIxMS9yeC5jLTI2OTItXFxubmV0L21hYzgwMjExL3J4LmM6MjY5MzpcXHRpZiAoIWllZWU4MDIxMV92aWZfaXNfbWxkKFxcdTAwMjZzZGF0YS1cXHUwMDNldmlmKSlcXG5uZXQvbWFjODAyMTEvcnguYy0yNjk0LVxcdFxcdHJldHVybiBmYWxzZTtcXG4tLVxcbm5ldC9tYWM4MDIxMS9yeC5jPTQzNDE9c3RhdGljIGJvb2wgaWVlZTgwMjExX3J4X2RhdGFfc2V0X3N0YShzdHJ1Y3QgaWVlZTgwMjExX3J4X2RhdGEgKnJ4LFxcbi0tXFxubmV0L21hYzgwMjExL3J4LmMtNDM1Ni1cXHRpZiAobGlua19pZCBcXHUwMDNjIDApIHtcXG5uZXQvbWFjODAyMTEvcnguYzo0MzU3OlxcdFxcdGlmIChpZWVlODAyMTFfdmlmX2lzX21sZChcXHUwMDI2cngtXFx1MDAzZXNkYXRhLVxcdTAwM2V2aWYpIFxcdTAwMjZcXHUwMDI2XFxubmV0L21hYzgwMjExL3J4LmMtNDM1OC1cXHRcXHQgICAgc3RhIFxcdTAwMjZcXHUwMDI2ICFzdGEtXFx1MDAzZXN0YS52YWxpZF9saW5rcylcXG4tLVxcbm5ldC9tYWM4MDIxMS9yeC5jPTUyOTY9c3RhdGljIGJvb2wgaWVlZTgwMjExX3J4X2Zvcl9pbnRlcmZhY2Uoc3RydWN0IGllZWU4MDIxMV9yeF9kYXRhICpyeCxcXG4tLVxcbm5ldC9tYWM4MDIxMS9yeC5jLTUzMTktXFx0XFx0XFx0bGlua19pZCA9IHN0YXR1cy1cXHUwMDNlbGlua19pZDtcXG5uZXQvbWFjODAyMTEvcnguYzo1MzIwOlxcdFxcdH0gZWxzZSBpZiAoaWVlZTgwMjExX3ZpZl9pc19tbGQoXFx1MDAyNnJ4LVxcdTAwM2VzZGF0YS1cXHUwMDNldmlmKSBcXHUwMDI2XFx1MDAyNlxcbm5ldC9tYWM4MDIxMS9yeC5jLTUzMjEtXFx0XFx0XFx0ICAgc3RhdHVzLVxcdTAwM2VmcmVxKSB7XFxuLS1cXG5uZXQvbWFjODAyMTEvc2Nhbi5jPTE2OD1pZWVlODAyMTFfYnNzX2luZm9fdXBkYXRlKHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsLFxcbi0tXFxubmV0L21hYzgwMjExL3NjYW4uYy0yMDUtXFx0XFx0ICovXFxubmV0L21hYzgwMjExL3NjYW4uYzoyMDY6XFx0XFx0aWYgKGllZWU4MDIxMV92aWZfaXNfbWxkKFxcdTAwMjZzY2FuX3NkYXRhLVxcdTAwM2V2aWYpKSB7XFxubmV0L21hYzgwMjExL3NjYW4uYy0yMDctXFx0XFx0XFx0aWYgKHJ4X3N0YXR1cy1cXHUwMDNlbGlua192YWxpZCkge1xcbi0tXFxubmV0L21hYzgwMjExL3NjYW4uYz03MzE9c3RhdGljIGludCBfX2llZWU4MDIxMV9zdGFydF9zY2FuKHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLFxcbi0tXFxubmV0L21hYzgwMjExL3NjYW4uYy03NDUtXFx0ICovXFxubmV0L21hYzgwMjExL3NjYW4uYzo3NDY6XFx0aWYgKGllZWU4MDIxMV92aWZfaXNfbWxkKFxcdTAwMjZzZGF0YS1cXHUwMDNldmlmKSBcXHUwMDI2XFx1MDAyNiByZXEtXFx1MDAzZXRzZl9yZXBvcnRfbGlua19pZCBcXHUwMDNlPSAwIFxcdTAwMjZcXHUwMDI2XFxubmV0L21hYzgwMjExL3NjYW4uYy03NDctXFx0ICAgICEoc2RhdGEtXFx1MDAzZXZpZi5hY3RpdmVfbGlua3MgXFx1MDAyNiBCSVQocmVxLVxcdTAwM2V0c2ZfcmVwb3J0X2xpbmtfaWQpKSlcXG4tLVxcbm5ldC9tYWM4MDIxMS90eC5jPTgyMD1pZWVlODAyMTFfdHhfaF9zZXF1ZW5jZShzdHJ1Y3QgaWVlZTgwMjExX3R4X2RhdGEgKnR4KVxcbi0tXFxubmV0L21hYzgwMjExL3R4LmMtODQ3LVxcdGlmICh1bmxpa2VseShpc19tdWx0aWNhc3RfZXRoZXJfYWRkcihoZHItXFx1MDAzZWFkZHIxKSBcXHUwMDI2XFx1MDAyNlxcbm5ldC9tYWM4MDIxMS90eC5jOjg0ODpcXHRcXHQgICAgIGllZWU4MDIxMV92aWZfaXNfbWxkKGluZm8tXFx1MDAzZWNvbnRyb2wudmlmKSBcXHUwMDI2XFx1MDAyNlxcbm5ldC9tYWM4MDIxMS90eC5jLTg0OS1cXHRcXHQgICAgIGluZm8tXFx1MDAzZWNvbnRyb2wudmlmLVxcdTAwM2V0eXBlID09IE5MODAyMTFfSUZUWVBFX0FQKSkge1xcbi0tXFxubmV0L21hYzgwMjExL3R4LmM9MjYzMT1zdGF0aWMgc3RydWN0IHNrX2J1ZmYgKmllZWU4MDIxMV9idWlsZF9oZHIoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsXFxuLS1cXG5uZXQvbWFjODAyMTEvdHguYy0yNjY3LVxcbm5ldC9tYWM4MDIxMS90eC5jOjI2Njg6XFx0aWYgKCFpZWVlODAyMTFfdmlmX2lzX21sZChcXHUwMDI2c2RhdGEtXFx1MDAzZXZpZikpXFxubmV0L21hYzgwMjExL3R4LmMtMjY2OS1cXHRcXHRjaGFuY3R4X2NvbmYgPVxcbi0tXFxubmV0L21hYzgwMjExL3R4LmMtMjY4NC1cXHRcXHR9XFxubmV0L21hYzgwMjExL3R4LmM6MjY4NTpcXHRcXHRpZiAoIWllZWU4MDIxMV92aWZfaXNfbWxkKFxcdTAwMjZzZGF0YS1cXHUwMDNldmlmKSkge1xcbm5ldC9tYWM4MDIxMS90eC5jLTI2ODYtXFx0XFx0XFx0c3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqYXBfc2RhdGE7XFxuLS1cXG5uZXQvbWFjODAyMTEvdHguYy0yNzAyLVxcbm5ldC9tYWM4MDIxMS90eC5jOjI3MDM6XFx0XFx0aWYgKGllZWU4MDIxMV92aWZfaXNfbWxkKFxcdTAwMjZzZGF0YS1cXHUwMDNldmlmKSBcXHUwMDI2XFx1MDAyNiBzdGEgXFx1MDAyNlxcdTAwMjYgIXN0YS1cXHUwMDNlc3RhLm1sbykge1xcbm5ldC9tYWM4MDIxMS90eC5jLTI3MDQtXFx0XFx0XFx0c3RydWN0IGllZWU4MDIxMV9saW5rX2RhdGEgKmxpbms7XFxuLS1cXG5uZXQvbWFjODAyMTEvdHguYy0yODgxLVxcdFxcdFxcdGJhbmQgPSBOVU1fTkw4MDIxMV9CQU5EUztcXG5uZXQvbWFjODAyMTEvdHguYzoyODgyOlxcdFxcdH0gZWxzZSBpZiAoIWllZWU4MDIxMV92aWZfaXNfbWxkKFxcdTAwMjZzZGF0YS1cXHUwMDNldmlmKSkge1xcbm5ldC9tYWM4MDIxMS90eC5jLTI4ODMtXFx0XFx0XFx0cmV0ID0gLUVOT1RDT05OO1xcbi0tXFxubmV0L21hYzgwMjExL3R4LmM9MzA3OD12b2lkIGllZWU4MDIxMV9jaGVja19mYXN0X3htaXQoc3RydWN0IHN0YV9pbmZvICpzdGEpXFxuLS1cXG5uZXQvbWFjODAyMTEvdHguYy0zMTI3LVxcbm5ldC9tYWM4MDIxMS90eC5jOjMxMjg6XFx0aWYgKCFpZWVlODAyMTFfdmlmX2lzX21sZChcXHUwMDI2c2RhdGEtXFx1MDAzZXZpZikpIHtcXG5uZXQvbWFjODAyMTEvdHguYy0zMTI5LVxcdFxcdHJjdV9yZWFkX2xvY2soKTtcXG4tLVxcbm5ldC9tYWM4MDIxMS90eC5jLTMyMDYtXFx0XFx0YnVpbGQuZGFfb2ZmcyA9IG9mZnNldG9mKHN0cnVjdCBpZWVlODAyMTFfaGRyLCBhZGRyMSk7XFxubmV0L21hYzgwMjExL3R4LmM6MzIwNzpcXHRcXHRpZiAoc3RhLVxcdTAwM2VzdGEubWxvIHx8ICFpZWVlODAyMTFfdmlmX2lzX21sZChcXHUwMDI2c2RhdGEtXFx1MDAzZXZpZikpIHtcXG5uZXQvbWFjODAyMTEvdHguYy0zMjA4LVxcdFxcdFxcdG1lbWNweShoZHItXFx1MDAzZWFkZHIyLCBzZGF0YS1cXHUwMDNldmlmLmFkZHIsIEVUSF9BTEVOKTtcXG4tLVxcbm5ldC9tYWM4MDIxMS90eC5jPTQ1NjE9bmV0ZGV2X3R4X3QgaWVlZTgwMjExX3N1YmlmX3N0YXJ0X3htaXQoc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4tLVxcbm5ldC9tYWM4MDIxMS90eC5jLTQ1ODMtXFx0XFx0XFx0XFx0XFx0XFx0ICAgICBOVUxMKTtcXG5uZXQvbWFjODAyMTEvdHguYzo0NTg0OlxcdH0gZWxzZSBpZiAoaWVlZTgwMjExX3ZpZl9pc19tbGQoXFx1MDAyNnNkYXRhLVxcdTAwM2V2aWYpIFxcdTAwMjZcXHUwMDI2XFxubmV0L21hYzgwMjExL3R4LmMtNDU4NS1cXHRcXHQgICAoKHNkYXRhLVxcdTAwM2V2aWYudHlwZSA9PSBOTDgwMjExX0lGVFlQRV9BUCBcXHUwMDI2XFx1MDAyNlxcbi0tXFxubmV0L21hYzgwMjExL3R4LmM9NDc1MT1zdGF0aWMgYm9vbCBpZWVlODAyMTFfY2hlY2tfbWNhc3Rfb2ZmbG9hZChzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSxcXG4tLVxcbm5ldC9tYWM4MDIxMS90eC5jLTQ3NTUtXFxubmV0L21hYzgwMjExL3R4LmM6NDc1NjpcXHRpZiAoKGllZWU4MDIxMV92aWZfaXNfbWxkKFxcdTAwMjZzZGF0YS1cXHUwMDNldmlmKSBcXHUwMDI2XFx1MDAyNlxcbm5ldC9tYWM4MDIxMS90eC5jLTQ3NTctXFx0ICAgICAoc2RhdGEtXFx1MDAzZXZpZi50eXBlID09IE5MODAyMTFfSUZUWVBFX0FQIFxcdTAwMjZcXHUwMDI2XFxuLS1cXG5uZXQvbWFjODAyMTEvdHguYz00OTExPXN0YXRpYyBib29sIGllZWU4MDIxMV90eF9wZW5kaW5nX3NrYihzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbCxcXG4tLVxcbm5ldC9tYWM4MDIxMS90eC5jLTQ5MjQtXFx0XFx0LyogdXBkYXRlIGJhbmQgb25seSBmb3Igbm9uLU1MRCAqL1xcbm5ldC9tYWM4MDIxMS90eC5jOjQ5MjU6XFx0XFx0aWYgKCFpZWVlODAyMTFfdmlmX2lzX21sZChcXHUwMDI2c2RhdGEtXFx1MDAzZXZpZikpIHtcXG5uZXQvbWFjODAyMTEvdHguYy00OTI2LVxcdFxcdFxcdGNoYW5jdHhfY29uZiA9XFxuLS1cXG5uZXQvbWFjODAyMTEvdHguYz02Mzk2PXZvaWQgX19pZWVlODAyMTFfdHhfc2tiX3RpZF9iYW5kKHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLFxcbi0tXFxubmV0L21hYzgwMjExL3R4LmMtNjQxMy1cXG5uZXQvbWFjODAyMTEvdHguYzo2NDE0OlxcdGlmICghaWVlZTgwMjExX3ZpZl9pc19tbGQoXFx1MDAyNnNkYXRhLVxcdTAwM2V2aWYpKSB7XFxubmV0L21hYzgwMjExL3R4LmMtNjQxNS1cXHRcXHRsaW5rID0gMDtcXG4tLVxcbm5ldC9tYWM4MDIxMS90eC5jPTY0NTM9dm9pZCBpZWVlODAyMTFfdHhfc2tiX3RpZChzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSxcXG4tLVxcbm5ldC9tYWM4MDIxMS90eC5jLTY0NjItXFx0XFx0YmFuZCA9IE5VTV9OTDgwMjExX0JBTkRTO1xcbm5ldC9tYWM4MDIxMS90eC5jOjY0NjM6XFx0fSBlbHNlIGlmICghaWVlZTgwMjExX3ZpZl9pc19tbGQoXFx1MDAyNnNkYXRhLVxcdTAwM2V2aWYpKSB7XFxubmV0L21hYzgwMjExL3R4LmMtNjQ2NC1cXHRcXHRXQVJOX09OKGxpbmtfaWQgXFx1MDAzZT0gMCk7XFxuLS1cXG5uZXQvbWFjODAyMTEvdXRpbC5jPTExMzQ9dm9pZCBpZWVlODAyMTFfc2VuZF9hdXRoKHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLFxcbi0tXFxubmV0L21hYzgwMjExL3V0aWwuYy0xMTQyLVxcdHN0cnVjdCBpZWVlODAyMTFfbWdtdCAqbWdtdDtcXG5uZXQvbWFjODAyMTEvdXRpbC5jOjExNDM6XFx0Ym9vbCBtdWx0aV9saW5rID0gaWVlZTgwMjExX3ZpZl9pc19tbGQoXFx1MDAyNnNkYXRhLVxcdTAwM2V2aWYpO1xcbm5ldC9tYWM4MDIxMS91dGlsLmMtMTE0NC1cXHRzdHJ1Y3Qge1xcbi0tXFxubmV0L21hYzgwMjExL3V0aWwuYz0xODgyPWludCBpZWVlODAyMTFfcmVjb25maWcoc3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwpXFxuLS1cXG5uZXQvbWFjODAyMTEvdXRpbC5jLTIwNzEtXFxubmV0L21hYzgwMjExL3V0aWwuYzoyMDcyOlxcdFxcdGlmIChpZWVlODAyMTFfdmlmX2lzX21sZChcXHUwMDI2c2RhdGEtXFx1MDAzZXZpZikpIHtcXG5uZXQvbWFjODAyMTEvdXRpbC5jLTIwNzMtXFx0XFx0XFx0c3RydWN0IGllZWU4MDIxMV9ic3NfY29uZiAqb2xkW0lFRUU4MDIxMV9NTERfTUFYX05VTV9MSU5LU10gPSB7XFxuLS1cXG5uZXQvbWFjODAyMTEvdXRpbC5jLTIxMjgtXFxubmV0L21hYzgwMjExL3V0aWwuYzoyMTI5OlxcdFxcdGlmICghaWVlZTgwMjExX3ZpZl9pc19tbGQoXFx1MDAyNnNkYXRhLVxcdTAwM2V2aWYpKVxcbm5ldC9tYWM4MDIxMS91dGlsLmMtMjEzMC1cXHRcXHRcXHRjaGFuZ2VkIHw9IEJTU19DSEFOR0VEX0lETEU7XFxuLS1cXG5uZXQvbWFjODAyMTEvdXRpbC5jLTIxMzMtXFx0XFx0Y2FzZSBOTDgwMjExX0lGVFlQRV9TVEFUSU9OOlxcbm5ldC9tYWM4MDIxMS91dGlsLmM6MjEzNDpcXHRcXHRcXHRpZiAoIWllZWU4MDIxMV92aWZfaXNfbWxkKFxcdTAwMjZzZGF0YS1cXHUwMDNldmlmKSkge1xcbm5ldC9tYWM4MDIxMS91dGlsLmMtMjEzNS1cXHRcXHRcXHRcXHRjaGFuZ2VkIHw9IEJTU19DSEFOR0VEX0FTU09DIHxcXG4tLVxcbm5ldC9tYWM4MDIxMS91dGlsLmMtMjE3MS1cXG5uZXQvbWFjODAyMTEvdXRpbC5jOjIxNzI6XFx0XFx0XFx0aWYgKGllZWU4MDIxMV92aWZfaXNfbWxkKFxcdTAwMjZzZGF0YS1cXHUwMDNldmlmKSlcXG5uZXQvbWFjODAyMTEvdXRpbC5jLTIxNzMtXFx0XFx0XFx0XFx0aWVlZTgwMjExX3ZpZl9jZmdfY2hhbmdlX25vdGlmeShzZGF0YSxcXG4tLVxcbm5ldC9tYWM4MDIxMS91dGlsLmMtMjE4NS1cXG5uZXQvbWFjODAyMTEvdXRpbC5jOjIxODY6XFx0XFx0XFx0XFx0aWYgKGllZWU4MDIxMV92aWZfaXNfbWxkKFxcdTAwMjZzZGF0YS1cXHUwMDNldmlmKSkge1xcbm5ldC9tYWM4MDIxMS91dGlsLmMtMjE4Ny1cXHRcXHRcXHRcXHRcXHRpZWVlODAyMTFfcmVjb25maWdfYXBfbGlua3MobG9jYWwsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIyVDE3OjUyOjU2LjMzOTgzMDkyOVoiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozOTg5OTQ5ODkwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGFuIGV4cGVydCdzIGludGVybmFsIG1vbm9sb2d1ZTpcblxuKipJbnZlc3RpZ2F0aW5nIHRoZSBNTE8gTGluayoqXG5cbkFscmlnaHQsIHNvIGBpZWVlODAyMTFfdmlmX2lzX21sZGAuLi4gdGhhdCBzZWVtcyBwcmV0dHkgY2xlYXJseSB0aWVkIHRvIE11bHRpLUxpbmsgT3BlcmF0aW9uLCByaWdodD8gTm8gc3VycHJpc2VzIHRoZXJlLiBCdXQgSSBuZWVkIHRvIGdldCBhIGJldHRlciBoYW5kbGUgb24gdGhlIHNwZWNpZmljcyBvZiB0aGlzIGltcGxlbWVudGF0aW9uLiBUaGUgcXVlc3Rpb24gdGhhdCByZWFsbHkganVtcHMgb3V0IGlzLCBpcyB0aGVyZSBhIGRlZGljYXRlZCBjb25maWd1cmF0aW9uIGZsYWcgb3Igc2V0dGluZyBzcGVjaWZpY2FsbHkgZGVkaWNhdGVkIHRvIE1MTyB0aGF0IEkgbmVlZCB0byBiZSBhd2FyZSBvZj8gSSBuZWVkIHRvIGNoZWNrIHRoZSByZWxldmFudCBjb25maWd1cmF0aW9uIGZpbGVzLCBtYXliZSBzb21lIGtlcm5lbCBkb2N1bWVudGF0aW9uLCBhbmQgdGhlIGJyb2FkZXIgd2lyZWxlc3MgZHJpdmVyIGNvZGViYXNlLiBJJ20gZ29pbmcgdG8gZGlnIGluIGFuZCBzZWUgd2hhdCBjb25maWd1cmF0aW9uIHBhcmFtZXRlcnMgbWlnaHQgYmUgaW1wYWN0aW5nIHRoaXMgZnVuY3Rpb24sIG9yIGV2ZW4gdXRpbGl6aW5nIHRoZSBmdW5jdGlvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6MTg3OTEsIk91dHB1dFRva2VucyI6MzMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0NSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yMlQxNzo1MzowMC4zMjk3ODM5MTlaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjExOTU0NzAyNiwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiTUxPXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9tYWM4MDIxMS9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yMlQxNzo1MzowMC40NDkzNDA4NDVaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTY4Mzk4MjkwODgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudCBvZiB0aGUgbWFjODAyMTEgUGF0Y2gqKlxuXG5Pa2F5LCBzbyB0aGVyZSdzIG5vIHNwZWNpZmljIGNvbmZpZ3VyYXRpb24gaXRlbSBkaXJlY3RseSByZWxhdGVkIHRvIE1MTyBpbiBtYWM4MDIxMSwgd2hpY2ggaXNuJ3QgYSBzdXJwcmlzZS4gVGhhdCBiZWluZyBzYWlkLCBJJ3ZlIHJldmlld2VkIHRoaXMgcGF0Y2gsIGFuZCBJJ20gcHJldHR5IGNvbmZpZGVudCBpdCdzIGZ1bmN0aW9uYWwgYW5kIGFic29sdXRlbHkgd29ydGggZnV6emluZy4gSSd2ZSBwaW5wb2ludGVkIGEgZmV3IGZvY3VzIHN5bWJvbHMgZm9yIHRoZSBmdXp6aW5nIGNhbXBhaWduOiBgc3RhX2FwcGx5X2F1dGhfZmxhZ3NgLCBgc3RhX2FwcGx5X3BhcmFtZXRlcnNgLCBgaWVlZTgwMjExX2FkZF9zdGF0aW9uYCwgYW5kIGBpZWVlODAyMTFfY2hhbmdlX3N0YXRpb25gLiBJbml0aWFsbHksIEkgd2FzIGEgYml0IGNvbmNlcm5lZCBhYm91dCBpbmNsdWRpbmcgYHN0YV9hcHBseV9hdXRoX2ZsYWdzYCBiZWNhdXNlIGl0J3MgYSBzdGF0aWMgZnVuY3Rpb24sIGJ1dCBpdCdzIGZpbmUuXG5cbk5vdywgYSBxdWljayBjaGVjayB0byBzZWUgaWYgd2UndmUgZ290IHRoZSBuZWNlc3NhcnkgY29uZmlndXJhdGlvbiBpcyBpbiBvcmRlci4gWWVhaCwgYE1BQzgwMjExYCBhbG9uZSB3aWxsIHN1ZmZpY2UgZm9yIHRoaXMgcGF0Y2guXG5cbkxldCBtZSBqdXN0IGRvdWJsZS1jaGVjayB0aGUgY29kZSBzbmlwcGV0IGFnYWluOlxuXG5gYGBjXG5cdFx0aWYgKCF0ZXN0X3N0YV9mbGFnKHN0YSwgV0xBTl9TVEFfUkFURV9DT05UUk9MKSkge1xuXHRcdFx0aWYgKCFpZWVlODAyMTFfdmlmX2lzX21sZChcdTAwMjZzdGEtXHUwMDNlc2RhdGEtXHUwMDNldmlmKSBcdTAwMjZcdTAwMjZcblx0XHRcdCAgICAhcmN1X2FjY2Vzc19wb2ludGVyKHN0YS1cdTAwM2VzZGF0YS1cdTAwM2V2aWYuYnNzX2NvbmYuY2hhbmN0eF9jb25mKSlcblx0XHRcdFx0cmV0dXJuIC1FSU5WQUw7XG5cblx0XHRcdHJhdGVfY29udHJvbF9yYXRlX2luaXRfYWxsX2xpbmtzKHN0YSk7XG5cdFx0fVxuYGBgXG5cblJpZ2h0LCBpdCdzIGEgbWlub3IgYnVnIGZpeC4gSXQgaW50cm9kdWNlcyBhIGNoZWNrIHRoYXQgcmV0dXJucyBgLUVJTlZBTGAgaWYgYGNoYW5jdHhfY29uZmAgaXMgTlVMTCBmb3Igbm9uLU1MRCBpbnRlcmZhY2VzIHdoZW4gcmF0ZSBjb250cm9sIGlzbid0IGluaXRpYWxpemVkLiBUaGlzIGlzIGFsbCBhYm91dCBwcmV2ZW50aW5nIGEgcG90ZW50aWFsIE5VTEwgcG9pbnRlciBkZXJlZmVyZW5jZSBvciBhIHNpbWlsYXIgaXNzdWUgZG93biB0aGUgbGluZSwgc3BlY2lmaWNhbGx5IGluIGByYXRlX2NvbnRyb2xfcmF0ZV9pbml0X2FsbF9saW5rc2Agb3IgcmVsYXRlZCBmdW5jdGlvbnMuIFRoaXMgaXMgYSBzdWJ0bGUgYnV0IGltcG9ydGFudCBwaWVjZSBvZiB2YWxpZGF0aW9uLlxuXG5TbywgaGVyZSdzIHdoYXQgSSdtIGdvaW5nIHRvIHNldDpcblxuKiAgICoqV29ydGhGdXp6aW5nKio6IGB0cnVlYFxuKiAgICoqRm9jdXNTeW1ib2xzKio6IGBbXCJzdGFfYXBwbHlfYXV0aF9mbGFnc1wiLCBcInN0YV9hcHBseV9wYXJhbWV0ZXJzXCIsIFwiaWVlZTgwMjExX2FkZF9zdGF0aW9uXCIsIFwiaWVlZTgwMjExX2NoYW5nZV9zdGF0aW9uXCJdYFxuKiAgICoqRW5hYmxlQ29uZmlncyoqOiBgW1wiTUFDODAyMTFcIl1gXG4qICAgKipSZWFzb25pbmcqKjogXCJUaGUgcGF0Y2ggYWRkcyBhIGNydWNpYWwgdmFsaWRhdGlvbiBjaGVjayBpbiBgc3RhX2FwcGx5X2F1dGhfZmxhZ3NgIHRvIHByZXZlbnQgYW4gaW52YWxpZCBzdGF0ZSB3aGVuIHJhdGUgY29udHJvbCBpcyBub3QgaW5pdGlhbGl6ZWQgZm9yIG5vbi1NTEQgaW50ZXJmYWNlcy4gVGhpcyBmdW5jdGlvbmFsaXR5IGlzIGFjY2Vzc2libGUgdmlhIG5sODAyMTEgY29tbWFuZHMsIHN1Y2ggYXMgYE5FV19TVEFUSU9OYCBhbmQgYFNFVF9TVEFUSU9OYCwgYW5kIG1vZGlmaWVzIGNvcmUgbWFjODAyMTEgbG9naWMuIFRoaXMgbWVhbnMgdGhhdCwgZGVzcGl0ZSB0aGUgYXBwYXJlbnQgc2ltcGxpY2l0eSwgZnV6emluZyBpcyB2ZXJ5IHZhbHVhYmxlIGhlcmUuXCJcblxuXG4iLCJJbnB1dFRva2VucyI6MTkwNDEsIk91dHB1dFRva2VucyI6MTU1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDY3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIyVDE3OjUzOjE3LjI4OTE3NTU5M1oiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIwODY2NTM1MywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTUFDODAyMTFcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJzdGFfYXBwbHlfYXV0aF9mbGFnc1wiLFxuICAgIFwic3RhX2FwcGx5X3BhcmFtZXRlcnNcIixcbiAgICBcImllZWU4MDIxMV9hZGRfc3RhdGlvblwiLFxuICAgIFwiaWVlZTgwMjExX2NoYW5nZV9zdGF0aW9uXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBhIHZhbGlkYXRpb24gY2hlY2sgaW4gYHN0YV9hcHBseV9hdXRoX2ZsYWdzYCB0byBwcmV2ZW50IGFuIGludmFsaWQgc3RhdGUgd2hlbiByYXRlIGNvbnRyb2wgaXMgbm90IGluaXRpYWxpemVkIGZvciBub24tTUxEIGludGVyZmFjZXMuIFRoaXMgaXMgcmVhY2hhYmxlIHZpYSBubDgwMjExIGNvbW1hbmRzIChlLmcuLCBORVdfU1RBVElPTiwgU0VUX1NUQVRJT04pIGFuZCBtb2RpZmllcyBjb3JlIG1hYzgwMjExIGxvZ2ljLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk1BQzgwMjExXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwic3RhX2FwcGx5X2F1dGhfZmxhZ3NcIixcbiAgICBcInN0YV9hcHBseV9wYXJhbWV0ZXJzXCIsXG4gICAgXCJpZWVlODAyMTFfYWRkX3N0YXRpb25cIixcbiAgICBcImllZWU4MDIxMV9jaGFuZ2Vfc3RhdGlvblwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgYSB2YWxpZGF0aW9uIGNoZWNrIGluIGBzdGFfYXBwbHlfYXV0aF9mbGFnc2AgdG8gcHJldmVudCBhbiBpbnZhbGlkIHN0YXRlIHdoZW4gcmF0ZSBjb250cm9sIGlzIG5vdCBpbml0aWFsaXplZCBmb3Igbm9uLU1MRCBpbnRlcmZhY2VzLiBUaGlzIGlzIHJlYWNoYWJsZSB2aWEgbmw4MDIxMSBjb21tYW5kcyAoZS5nLiwgTkVXX1NUQVRJT04sIFNFVF9TVEFUSU9OKSBhbmQgbW9kaWZpZXMgY29yZSBtYWM4MDIxMSBsb2dpYy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },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-workflowwwthk[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-22 17:36:25 +0000 UTC FinishedAt: 2026-07-22 17:53:19 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "bpf-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git", "commit_hash": "dc59e4fea9d83f03bad6bddf3fa2e52491777482", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "MAC80211" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "bpf-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git", "commit_hash": "dc59e4fea9d83f03bad6bddf3fa2e52491777482", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "MAC80211" ], "series_id": "f8ac1f48-e023-4ce5-93cc-375ffa07b351" }, "track": "KASAN", "fuzz": { "focus": null, "focus_symbols": [ "sta_apply_auth_flags", "sta_apply_parameters", "ieee80211_add_station", "ieee80211_change_station" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIyIDE3OjUyPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O01BQzgwMjExJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7c3RhX2FwcGx5X2F1dGhfZmxhZ3MmIzM0OywKICAgICYjMzQ7c3RhX2FwcGx5X3BhcmFtZXRlcnMmIzM0OywKICAgICYjMzQ7aWVlZTgwMjExX2FkZF9zdGF0aW9uJiMzNDssCiAgICAmIzM0O2llZWU4MDIxMV9jaGFuZ2Vfc3RhdGlvbiYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIGEgdmFsaWRhdGlvbiBjaGVjayBpbiBgc3RhX2FwcGx5X2F1dGhfZmxhZ3NgIHRvIHByZXZlbnQgYW4gaW52YWxpZCBzdGF0ZSB3aGVuIHJhdGUgY29udHJvbCBpcyBub3QgaW5pdGlhbGl6ZWQgZm9yIG5vbi1NTEQgaW50ZXJmYWNlcy4gVGhpcyBpcyByZWFjaGFibGUgdmlhIG5sODAyMTEgY29tbWFuZHMgKGUuZy4sIE5FV19TVEFUSU9OLCBTRVRfU1RBVElPTikgYW5kIG1vZGlmaWVzIGNvcmUgbWFjODAyMTEgbG9naWMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjIgMTc6NTI8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCBiNzMzNzRkZjM4NDNhODM5OGVhMjQ1MThhMTMzMTc2MDI2OGE5NTBiXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFdlZCBKdWwgMjIgMTc6NTI6MTggMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbmV0L21hYzgwMjExL2NmZy5jIGIvbmV0L21hYzgwMjExL2NmZy5jXG5pbmRleCAzYjU4YWY1OWY3ZTQyOS4uODMwYzlmYzk1ZGYyMjggMTAwNjQ0XG4tLS0gYS9uZXQvbWFjODAyMTEvY2ZnLmNcbiYjNDM7JiM0MzsmIzQzOyBiL25ldC9tYWM4MDIxMS9jZmcuY1xuQEAgLTIxNDgsOCAmIzQzOzIxNDgsMTMgQEAgc3RhdGljIGludCBzdGFfYXBwbHlfYXV0aF9mbGFncyhzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbCxcbiBcdFx0ICogd2VsbC4gU29tZSBkcml2ZXJzIHJlcXVpcmUgcmF0ZSBjb250cm9sIGluaXRpYWxpemVkXG4gXHRcdCAqIGJlZm9yZSBkcnZfc3RhX3N0YXRlKCkgaXMgY2FsbGVkLlxuIFx0XHQgKi9cbi1cdFx0aWYgKCF0ZXN0X3N0YV9mbGFnKHN0YSwgV0xBTl9TVEFfUkFURV9DT05UUk9MKSlcbiYjNDM7XHRcdGlmICghdGVzdF9zdGFfZmxhZyhzdGEsIFdMQU5fU1RBX1JBVEVfQ09OVFJPTCkpIHtcbiYjNDM7XHRcdFx0aWYgKCFpZWVlODAyMTFfdmlmX2lzX21sZChcdTAwMjZzdGEtXHUwMDNlc2RhdGEtXHUwMDNldmlmKSBcdTAwMjZcdTAwMjZcbiYjNDM7XHRcdFx0ICAgICFyY3VfYWNjZXNzX3BvaW50ZXIoc3RhLVx1MDAzZXNkYXRhLVx1MDAzZXZpZi5ic3NfY29uZi5jaGFuY3R4X2NvbmYpKVxuJiM0MztcdFx0XHRcdHJldHVybiAtRUlOVkFMO1xuJiM0MztcbiBcdFx0XHRyYXRlX2NvbnRyb2xfcmF0ZV9pbml0X2FsbF9saW5rcyhzdGEpO1xuJiM0MztcdFx0fVxuIFxuIFx0XHRyZXQgPSBzdGFfaW5mb19tb3ZlX3N0YXRlKHN0YSwgSUVFRTgwMjExX1NUQV9BU1NPQyk7XG4gXHRcdGlmIChyZXQpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjIgMTc6NTI8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O01BQzgwMjExJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7c3RhX2FwcGx5X2F1dGhfZmxhZ3MmIzM0OywKICAgICYjMzQ7c3RhX2FwcGx5X3BhcmFtZXRlcnMmIzM0OywKICAgICYjMzQ7aWVlZTgwMjExX2FkZF9zdGF0aW9uJiMzNDssCiAgICAmIzM0O2llZWU4MDIxMV9jaGFuZ2Vfc3RhdGlvbiYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIGEgdmFsaWRhdGlvbiBjaGVjayBpbiBgc3RhX2FwcGx5X2F1dGhfZmxhZ3NgIHRvIHByZXZlbnQgYW4gaW52YWxpZCBzdGF0ZSB3aGVuIHJhdGUgY29udHJvbCBpcyBub3QgaW5pdGlhbGl6ZWQgZm9yIG5vbi1NTEQgaW50ZXJmYWNlcy4gVGhpcyBpcyByZWFjaGFibGUgdmlhIG5sODAyMTEgY29tbWFuZHMgKGUuZy4sIE5FV19TVEFUSU9OLCBTRVRfU1RBVElPTikgYW5kIG1vZGlmaWVzIGNvcmUgbWFjODAyMTEgbG9naWMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0CiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSwKICAgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IGI3MzM3NGRmMzg0M2E4Mzk4ZWEyNDUxOGExMzMxNzYwMjY4YTk1MGIKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgV2VkIEp1bCAyMiAxNzo1MjoxOCAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL25ldC9tYWM4MDIxMS9jZmcuYyBiL25ldC9tYWM4MDIxMS9jZmcuYwppbmRleCAzYjU4YWY1OWY3ZTQyOS4uODMwYzlmYzk1ZGYyMjggMTAwNjQ0Ci0tLSBhL25ldC9tYWM4MDIxMS9jZmcuYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvbWFjODAyMTEvY2ZnLmMKQEAgLTIxNDgsOCAmIzQzOzIxNDgsMTMgQEAgc3RhdGljIGludCBzdGFfYXBwbHlfYXV0aF9mbGFncyhzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbCwKIAkJICogd2VsbC4gU29tZSBkcml2ZXJzIHJlcXVpcmUgcmF0ZSBjb250cm9sIGluaXRpYWxpemVkCiAJCSAqIGJlZm9yZSBkcnZfc3RhX3N0YXRlKCkgaXMgY2FsbGVkLgogCQkgKi8KLQkJaWYgKCF0ZXN0X3N0YV9mbGFnKHN0YSwgV0xBTl9TVEFfUkFURV9DT05UUk9MKSkKJiM0MzsJCWlmICghdGVzdF9zdGFfZmxhZyhzdGEsIFdMQU5fU1RBX1JBVEVfQ09OVFJPTCkpIHsKJiM0MzsJCQlpZiAoIWllZWU4MDIxMV92aWZfaXNfbWxkKCZhbXA7c3RhLSZndDtzZGF0YS0mZ3Q7dmlmKSAmYW1wOyZhbXA7CiYjNDM7CQkJICAgICFyY3VfYWNjZXNzX3BvaW50ZXIoc3RhLSZndDtzZGF0YS0mZ3Q7dmlmLmJzc19jb25mLmNoYW5jdHhfY29uZikpCiYjNDM7CQkJCXJldHVybiAtRUlOVkFMOwomIzQzOwogCQkJcmF0ZV9jb250cm9sX3JhdGVfaW5pdF9hbGxfbGlua3Moc3RhKTsKJiM0MzsJCX0KIAogCQlyZXQgPSBzdGFfaW5mb19tb3ZlX3N0YXRlKHN0YSwgSUVFRTgwMjExX1NUQV9BU1NPQyk7CiAJCWlmIChyZXQpCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIyIDE3OjUyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIwMjgKCQkJCQkJCW91dHB1dDogMzkKCQkJCQkJCXRob3VnaHRzOiAyMTcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgVnVsbmVyYWJpbGl0eSBpbiBgbmV0L21hYzgwMjExYCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBpbiBgbmV0L21hYzgwMjExL2NmZy5jYC4gSXQgc2VlbXMgdGhleSYjMzk7dmUgYWRkZWQgYSBjaGVjayB3aXRoaW4gdGhlIGBzdGFfYXBwbHlfYXV0aF9mbGFnc2AgZnVuY3Rpb24uIFNwZWNpZmljYWxseSwgaXQmIzM5O3MgY2hlY2tpbmcgdGhlIGBXTEFOX1NUQV9SQVRFX0NPTlRST0xgIGZsYWcgb24gYSBzdGF0aW9uIChgc3RhYCkuIE15IGZpcnN0IGluc3RpbmN0IGlzIHRvIHVuZGVyc3RhbmQgdGhlIGNvbnRleHQuIGBtYWM4MDIxMWAgaXMgbm90b3Jpb3VzbHkgd2VsbC1mdXp6ZWQsIHBhcnRpY3VsYXJseSB3aXRoIGBtYWM4MDIxMV9od3NpbWAsIHNvIGFueSBjaGFuZ2VzIGhlcmUgaW1tZWRpYXRlbHkgZ3JhYiBteSBhdHRlbnRpb24uCgpUaGUgbmV3IGNvZGUgYmxvY2sgaXMgaW50ZXJlc3Rpbmc6IGlmIHRoZSBgV0xBTl9TVEFfUkFURV9DT05UUk9MYCBmbGFnIGlzbiYjMzk7dCBzZXQsIHRoZW4gYSBjaGVjayBpcyBwZXJmb3JtZWQuIElmIHRoZSBWaXJ0dWFsIEludGVyZmFjZSAoYHZpZmApIGlzbiYjMzk7dCBhIE1lc2ggTG9jYWwgRGVjaXNpb24gKE1MRCkgaW50ZXJmYWNlLCBhbmQgdGhlcmUgaXMgbm8gY2hhbm5lbCBjb250ZXh0IGNvbmZpZ3VyYXRpb24gYXR0YWNoZWQsIHRoZW4gaXQgcmV0dXJucyBgLUVJTlZBTGAuIE90aGVyd2lzZSwgaXQgcHJvY2VlZHMgdG8gaW5pdGlhbGl6ZSB0aGUgcmF0ZSBjb250cm9sIHZpYSBgcmF0ZV9jb250cm9sX3JhdGVfaW5pdF9hbGxfbGlua3NgLgoKTXkgaW1tZWRpYXRlIHF1ZXN0aW9uIGlzOiB3aGF0IHNjZW5hcmlvcyB0cmlnZ2VyIHRoaXMgc3BlY2lmaWMgY29kZSBwYXRoPyBBbmQgd2hhdCBhcmUgdGhlIGltcGxpY2F0aW9ucyBvZiB0aGUgYC1FSU5WQUxgIHJldHVybj8gV2UgbmVlZCB0byBkaWcgaW50byB0aGUgc3Vycm91bmRpbmcgY29kZSBpbiBgc3RhX2FwcGx5X2F1dGhfZmxhZ3NgIHRvIGZ1bGx5IHVuZGVyc3RhbmQgd2hhdCYjMzk7cyBoYXBwZW5pbmcgYW5kIGhvdyB0aGlzIGNvbmRpdGlvbiBjYW4gYmUgbWV0LiBJJiMzOTttIGdvaW5nIHRvIGNhcmVmdWxseSBhbmFseXplIHRoZSBjYWxsIHNpdGVzIGFuZCByZWxhdGVkIGRhdGEgc3RydWN0dXJlcyB0byBnZXQgYSBjb21wbGV0ZSBwaWN0dXJlLiBUaGlzIGAtRUlOVkFMYCBjb3VsZCBiZSBhIHZ1bG5lcmFiaWxpdHkgbWl0aWdhdGlvbiwgb3IgaXQgY291bGQgcG90ZW50aWFsbHkgaW50cm9kdWNlIHVuZXhwZWN0ZWQgYmVoYXZpb3IuIFRoZSBpbml0aWFsaXphdGlvbiBvZiB0aGUgcmF0ZSBjb250cm9sIGlzIG9idmlvdXNseSBhbiBpbXBvcnRhbnQgYXNwZWN0IHRoYXQgSSYjMzk7bGwgbmVlZCB0byBleHBsb3JlIGFzIHdlbGwuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjIgMTc6NTI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c3RhX2FwcGx5X2F1dGhfZmxhZ3MmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbWFjODAyMTEvY2ZnLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L21hYzgwMjExL2NmZy5jPTIwMTA9c3RhdGljIGludCBpZWVlODAyMTFfc3RvcF9hcChzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuLS1cbm5ldC9tYWM4MDIxMS9jZmcuYy0yMTI4LVxubmV0L21hYzgwMjExL2NmZy5jOjIxMjk6c3RhdGljIGludCBzdGFfYXBwbHlfYXV0aF9mbGFncyhzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbCxcbm5ldC9tYWM4MDIxMS9jZmcuYy0yMTMwLVx0XHRcdFx0c3RydWN0IHN0YV9pbmZvICpzdGEsXG4tLVxubmV0L21hYzgwMjExL2NmZy5jPTI0NTQ9c3RhdGljIGludCBzdGFfYXBwbHlfcGFyYW1ldGVycyhzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbCxcbi0tXG5uZXQvbWFjODAyMTEvY2ZnLmMtMjQ5OS1cdCAgICAgIChzZXQgXHUwMDI2IEJJVChOTDgwMjExX1NUQV9GTEFHX0FTU09DSUFURUQpKSkpIHtcbm5ldC9tYWM4MDIxMS9jZmcuYzoyNTAwOlx0XHRyZXQgPSBzdGFfYXBwbHlfYXV0aF9mbGFncyhsb2NhbCwgc3RhLCBtYXNrLCBzZXQpO1xubmV0L21hYzgwMjExL2NmZy5jLTI1MDEtXHRcdGlmIChyZXQpXG4tLVxubmV0L21hYzgwMjExL2NmZy5jLTI2MjItXHQgICAgc2V0IFx1MDAyNiBCSVQoTkw4MDIxMV9TVEFfRkxBR19BU1NPQ0lBVEVEKSkge1xubmV0L21hYzgwMjExL2NmZy5jOjI2MjM6XHRcdHJldCA9IHN0YV9hcHBseV9hdXRoX2ZsYWdzKGxvY2FsLCBzdGEsIG1hc2ssIHNldCk7XG5uZXQvbWFjODAyMTEvY2ZnLmMtMjYyNC1cdFx0aWYgKHJldClcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMiAxNzo1MjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMDMyCgkJCQkJCQlvdXRwdXQ6IDM2CgkJCQkJCQl0aG91Z2h0czogNzIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBgc3RhX2FwcGx5X2F1dGhfZmxhZ3NgIEZ1bmN0aW9uKioKCk9rYXksIHNvIEkgc2VlIHRoYXQgYHN0YV9hcHBseV9hdXRoX2ZsYWdzYCBpcyBhIGtleSBmdW5jdGlvbiwgYW5kIGl0JiMzOTtzIGJlaW5nIGNhbGxlZCBmcm9tIGF0IGxlYXN0IHR3byBjcml0aWNhbCBsb2NhdGlvbnM6IGBzdGFfYXBwbHlfcGFyYW1ldGVyc2AgYW5kLCBsaWtlbHksIGVpdGhlciBgaWVlZTgwMjExX2FkZF9zdGF0aW9uYCBvciBgaWVlZTgwMjExX2NoYW5nZV9zdGF0aW9uYC4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsIGxldCYjMzk7cyBkcmlsbCBkb3duIGludG8gdGhlIGNvbnRleHQgc3Vycm91bmRpbmcgdGhvc2UgY2FsbHMuIEkgbmVlZCB0byB1bmRlcnN0YW5kICp3aHkqIGBzdGFfYXBwbHlfYXV0aF9mbGFnc2AgaXMgYmVpbmcgaW52b2tlZCB3aGVyZSBpdCBpcy4gSSYjMzk7bSBlc3BlY2lhbGx5IGludGVyZXN0ZWQgaW4gdGhlIGRpZmZlcmVudCBwYXRocyBsZWFkaW5nIGludG8gaXQuIElzIGl0IGJlaW5nIHVzZWQgdG8gc2V0IHVwIGluaXRpYWwgYXV0aGVudGljYXRpb24gcGFyYW1ldGVycywgbW9kaWZ5IGV4aXN0aW5nIG9uZXMsIG9yIG1heWJlIGJvdGg/IFRoaXMgY29udGV4dCBpcyBjcnVjaWFsIHRvIGdyYXNwaW5nIHRoZSBpbnRlbmRlZCBiZWhhdmlvci4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hhdCBkYXRhIGlzIGJlaW5nIHBhc3NlZCBpbiwgdGhlIHN0YXRlIG9mIHRoZSBzeXN0ZW0gd2hlbiBpdCYjMzk7cyBjYWxsZWQsIGFuZCB3aGF0IHRoZSBmdW5jdGlvbiBpcyBhY3R1YWxseSAqZG9pbmcqIHRvIHRoZSBzdGF0aW9uJiMzOTtzIGF1dGhvcml6YXRpb24gZmxhZ3MuIEkgc3VzcGVjdCB0aGlzIHdpbGwgaWxsdW1pbmF0ZSBzb21lIGtleSBhc3BlY3RzIG9mIGhvdyBhdXRoZW50aWNhdGlvbiBpcyBoYW5kbGVkIGluIHRoaXMgZHJpdmVyLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIyIDE3OjUyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3N0YV9hcHBseV9hdXRoX2ZsYWdzJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L21hYzgwMjExLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbWFjODAyMTEvY2ZnLmM9MjAxMD1zdGF0aWMgaW50IGllZWU4MDIxMV9zdG9wX2FwKHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG4tLVxubmV0L21hYzgwMjExL2NmZy5jLTIxMjgtXG5uZXQvbWFjODAyMTEvY2ZnLmM6MjEyOTpzdGF0aWMgaW50IHN0YV9hcHBseV9hdXRoX2ZsYWdzKHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsLFxubmV0L21hYzgwMjExL2NmZy5jLTIxMzAtXHRcdFx0XHRzdHJ1Y3Qgc3RhX2luZm8gKnN0YSxcbi0tXG5uZXQvbWFjODAyMTEvY2ZnLmM9MjQ1ND1zdGF0aWMgaW50IHN0YV9hcHBseV9wYXJhbWV0ZXJzKHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsLFxuLS1cbm5ldC9tYWM4MDIxMS9jZmcuYy0yNDk5LVx0ICAgICAgKHNldCBcdTAwMjYgQklUKE5MODAyMTFfU1RBX0ZMQUdfQVNTT0NJQVRFRCkpKSkge1xubmV0L21hYzgwMjExL2NmZy5jOjI1MDA6XHRcdHJldCA9IHN0YV9hcHBseV9hdXRoX2ZsYWdzKGxvY2FsLCBzdGEsIG1hc2ssIHNldCk7XG5uZXQvbWFjODAyMTEvY2ZnLmMtMjUwMS1cdFx0aWYgKHJldClcbi0tXG5uZXQvbWFjODAyMTEvY2ZnLmMtMjYyMi1cdCAgICBzZXQgXHUwMDI2IEJJVChOTDgwMjExX1NUQV9GTEFHX0FTU09DSUFURUQpKSB7XG5uZXQvbWFjODAyMTEvY2ZnLmM6MjYyMzpcdFx0cmV0ID0gc3RhX2FwcGx5X2F1dGhfZmxhZ3MobG9jYWwsIHN0YSwgbWFzaywgc2V0KTtcbm5ldC9tYWM4MDIxMS9jZmcuYy0yNjI0LVx0XHRpZiAocmV0KVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIyIDE3OjUyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM3NjcKCQkJCQkJCW91dHB1dDogMzcKCQkJCQkJCXRob3VnaHRzOiAyOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhbmFseXNpcyBvZiB0aGUgc2l0dWF0aW9uOgoKKipJbnZlc3RpZ2F0aW5nIGEgU3BlY2lmaWMgRnVuY3Rpb24gaW4gbWFjODAyMTEgQ29uZmlndXJhdGlvbioqCgpPa2F5LCBzbyBJIG5lZWQgdG8gZGl2ZSBpbnRvIHRoZSBgbmV0L21hYzgwMjExL2NmZy5jYCBmaWxlLiBTcGVjaWZpY2FsbHksIEkmIzM5O20gaW50ZXJlc3RlZCBpbiB0aGUgZnVuY3Rpb24gZGVmaW5lZCBhdCBsaW5lIDI2MjIuIEdpdmVuIG15IHVuZGVyc3RhbmRpbmcgb2YgbWFjODAyMTEmIzM5O3MgYXJjaGl0ZWN0dXJlLCBwaW5wb2ludGluZyBhIHNwZWNpZmljIGxpbmUgbnVtYmVyIHVzdWFsbHkgc3VnZ2VzdHMgSSYjMzk7bSBsb29raW5nIGZvciBhIHBhcnRpY3VsYXIgY29uZmlndXJhdGlvbiBzZXR0aW5nLCBhIGZ1bmN0aW9uIGNhbGwgcmVsYXRlZCB0byBhIHNwZWNpZmljIGZlYXR1cmUmIzM5O3MgY29uZmlndXJhdGlvbiwgb3IgcGVyaGFwcyBhIHNlY3Rpb24gZGVhbGluZyB3aXRoIGEgcGFydGljdWxhciByZWd1bGF0b3J5IGRvbWFpbiBvciBoYXJkd2FyZSBpbnRlcmZhY2Ugc2V0dXAuIEkmIzM5O20gbGlrZWx5IHRyeWluZyB0byBkZWJ1ZyBhIGNvbmZpZ3VyYXRpb24gaXNzdWUsIHVuZGVyc3RhbmQgYSBiZWhhdmlvciwgb3IgbWF5YmUgZXZlbiBpZGVudGlmeSBhIHBvdGVudGlhbCBvcHRpbWl6YXRpb24gb3IgYSBzZWN1cml0eSB2dWxuZXJhYmlsaXR5IHRoYXQgbWF5IGhhdmUgYXJpc2VuLiBMZXQmIzM5O3Mgc2VlIHdoYXQgdGhhdCBmdW5jdGlvbiBpcyBhYm91dC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMiAxNzo1MjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtec3RhdGljIGludC4qc3RhJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L21hYzgwMjExL2NmZy5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9tYWM4MDIxMS9jZmcuYz0yNTk9c3RhdGljIGludCBpZWVlODAyMTFfY2hhbmdlX2lmYWNlKHN0cnVjdCB3aXBoeSAqd2lwaHksXG4tLVxubmV0L21hYzgwMjExL2NmZy5jLTMwNS1cbm5ldC9tYWM4MDIxMS9jZmcuYzozMDY6c3RhdGljIGludCBpZWVlODAyMTFfc3RhcnRfcDJwX2RldmljZShzdHJ1Y3Qgd2lwaHkgKndpcGh5LFxubmV0L21hYzgwMjExL2NmZy5jLTMwNy1cdFx0XHRcdCAgICAgIHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYpXG4tLVxubmV0L21hYzgwMjExL2NmZy5jPTM1MT1zdGF0aWMgaW50IGllZWU4MDIxMV9uYW5fY29uZl9jb3B5KHN0cnVjdCBjZmc4MDIxMV9uYW5fY29uZiAqZHN0LFxuLS1cbm5ldC9tYWM4MDIxMS9jZmcuYy00MDgtXG5uZXQvbWFjODAyMTEvY2ZnLmM6NDA5OnN0YXRpYyBpbnQgaWVlZTgwMjExX3N0YXJ0X25hbihzdHJ1Y3Qgd2lwaHkgKndpcGh5LFxubmV0L21hYzgwMjExL2NmZy5jLTQxMC1cdFx0XHQgICAgICAgc3RydWN0IHdpcmVsZXNzX2RldiAqd2Rldixcbi0tXG5uZXQvbWFjODAyMTEvY2ZnLmM9OTY3PXZvaWQgc3RhX3NldF9yYXRlX2luZm9fdHgoc3RydWN0IHN0YV9pbmZvICpzdGEsXG4tLVxubmV0L21hYzgwMjExL2NmZy5jLTk5OC1cbm5ldC9tYWM4MDIxMS9jZmcuYzo5OTk6c3RhdGljIGludCBpZWVlODAyMTFfZHVtcF9zdGF0aW9uKHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsXG5uZXQvbWFjODAyMTEvY2ZnLmMtMTAwMC1cdFx0XHRcdCAgaW50IGlkeCwgdTggKm1hYywgc3RydWN0IHN0YXRpb25faW5mbyAqc2luZm8pXG4tLVxubmV0L21hYzgwMjExL2NmZy5jPTEwMjY9c3RhdGljIGludCBpZWVlODAyMTFfZHVtcF9zdXJ2ZXkoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbi0tXG5uZXQvbWFjODAyMTEvY2ZnLmMtMTAzMy1cbm5ldC9tYWM4MDIxMS9jZmcuYzoxMDM0OnN0YXRpYyBpbnQgaWVlZTgwMjExX2dldF9zdGF0aW9uKHN0cnVjdCB3aXBoeSAqd2lwaHksXG5uZXQvbWFjODAyMTEvY2ZnLmMtMTAzNS1cdFx0XHRcdCBzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LFxuLS1cbm5ldC9tYWM4MDIxMS9jZmcuYz0xNjA2PXN0YXRpYyB1OCBpZWVlODAyMTFfbnVtX2JlYWNvbmluZ19saW5rcyhzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSlcbi0tXG5uZXQvbWFjODAyMTEvY2ZnLmMtMTYyOS1cbm5ldC9tYWM4MDIxMS9jZmcuYzoxNjMwOnN0YXRpYyBpbnQgaWVlZTgwMjExX3N0YXJ0X2FwKHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG5uZXQvbWFjODAyMTEvY2ZnLmMtMTYzMS1cdFx0XHQgICAgICBzdHJ1Y3QgY2ZnODAyMTFfYXBfc2V0dGluZ3MgKnBhcmFtcylcbi0tXG5uZXQvbWFjODAyMTEvY2ZnLmM9MjAxMD1zdGF0aWMgaW50IGllZWU4MDIxMV9zdG9wX2FwKHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG4tLVxubmV0L21hYzgwMjExL2NmZy5jLTIxMjgtXG5uZXQvbWFjODAyMTEvY2ZnLmM6MjEyOTpzdGF0aWMgaW50IHN0YV9hcHBseV9hdXRoX2ZsYWdzKHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsLFxubmV0L21hYzgwMjExL2NmZy5jLTIxMzAtXHRcdFx0XHRzdHJ1Y3Qgc3RhX2luZm8gKnN0YSxcbi0tXG5uZXQvbWFjODAyMTEvY2ZnLmM9MjI1OT1lbnVtIHN0YV9saW5rX2FwcGx5X21vZGUge1xuLS1cbm5ldC9tYWM4MDIxMS9jZmcuYy0yMjY0LVxubmV0L21hYzgwMjExL2NmZy5jOjIyNjU6c3RhdGljIGludCBzdGFfbGlua19hcHBseV9wYXJhbWV0ZXJzKHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsLFxubmV0L21hYzgwMjExL2NmZy5jLTIyNjYtXHRcdFx0XHQgICAgIHN0cnVjdCBzdGFfaW5mbyAqc3RhLFxuLS1cbm5ldC9tYWM4MDIxMS9jZmcuYy0yNDUzLVxubmV0L21hYzgwMjExL2NmZy5jOjI0NTQ6c3RhdGljIGludCBzdGFfYXBwbHlfcGFyYW1ldGVycyhzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbCxcbm5ldC9tYWM4MDIxMS9jZmcuYy0yNDU1LVx0XHRcdFx0c3RydWN0IHN0YV9pbmZvICpzdGEsXG4tLVxubmV0L21hYzgwMjExL2NmZy5jLTI2MzQtXG5uZXQvbWFjODAyMTEvY2ZnLmM6MjYzNTpzdGF0aWMgaW50IGllZWU4MDIxMV9hZGRfc3RhdGlvbihzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LFxubmV0L21hYzgwMjExL2NmZy5jLTI2MzYtXHRcdFx0XHQgY29uc3QgdTggKm1hYyxcbi0tXG5uZXQvbWFjODAyMTEvY2ZnLmMtMjcxNC1cbm5ldC9tYWM4MDIxMS9jZmcuYzoyNzE1OnN0YXRpYyBpbnQgaWVlZTgwMjExX2RlbF9zdGF0aW9uKHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsXG5uZXQvbWFjODAyMTEvY2ZnLmMtMjcxNi1cdFx0XHRcdCBzdHJ1Y3Qgc3RhdGlvbl9kZWxfcGFyYW1ldGVycyAqcGFyYW1zKVxuLS1cbm5ldC9tYWM4MDIxMS9jZmcuYy0yNzI4LVxubmV0L21hYzgwMjExL2NmZy5jOjI3Mjk6c3RhdGljIGludCBpZWVlODAyMTFfc2V0X3N0YV80YWRkcihzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbCxcbm5ldC9tYWM4MDIxMS9jZmcuYy0yNzMwLVx0XHRcdFx0ICAgc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsXG4tLVxubmV0L21hYzgwMjExL2NmZy5jLTI3ODctXG5uZXQvbWFjODAyMTEvY2ZnLmM6Mjc4ODpzdGF0aWMgaW50IGllZWU4MDIxMV9jaGFuZ2Vfc3RhdGlvbihzdHJ1Y3Qgd2lwaHkgKndpcGh5LFxubmV0L21hYzgwMjExL2NmZy5jLTI3ODktXHRcdFx0XHQgICAgc3RydWN0IHdpcmVsZXNzX2RldiAqd2RldiwgY29uc3QgdTggKm1hYyxcbi0tXG5uZXQvbWFjODAyMTEvY2ZnLmM9NDE3ND1zdGF0aWMgYm9vbCBpZWVlODAyMTFfaXNfc2Nhbl9vbmdvaW5nKHN0cnVjdCB3aXBoeSAqd2lwaHksXG4tLVxubmV0L21hYzgwMjExL2NmZy5jLTQyMTAtXG5uZXQvbWFjODAyMTEvY2ZnLmM6NDIxMTpzdGF0aWMgaW50IGllZWU4MDIxMV9zdGFydF9yYWRhcl9kZXRlY3Rpb24oc3RydWN0IHdpcGh5ICp3aXBoeSxcbm5ldC9tYWM4MDIxMS9jZmcuYy00MjEyLVx0XHRcdFx0XHQgICBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuLS1cbm5ldC9tYWM4MDIxMS9jZmcuYz01MzM1PXZvaWQgaWVlZTgwMjExX2ZpbGxfdHhxX3N0YXRzKHN0cnVjdCBjZmc4MDIxMV90eHFfc3RhdHMgKnR4cXN0YXRzLFxuLS1cbm5ldC9tYWM4MDIxMS9jZmcuYy01MzgzLVxubmV0L21hYzgwMjExL2NmZy5jOjUzODQ6c3RhdGljIGludCBpZWVlODAyMTFfZ2V0X3R4cV9zdGF0cyhzdHJ1Y3Qgd2lwaHkgKndpcGh5LFxubmV0L21hYzgwMjExL2NmZy5jLTUzODUtXHRcdFx0XHQgICBzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LFxuLS1cbm5ldC9tYWM4MDIxMS9jZmcuYz01ODk4PWllZWU4MDIxMV9kZWxfbGlua19zdGF0aW9uKHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG4tLVxubmV0L21hYzgwMjExL2NmZy5jLTU5MjEtXG5uZXQvbWFjODAyMTEvY2ZnLmM6NTkyMjpzdGF0aWMgaW50IGllZWU4MDIxMV9zZXRfaHdfdGltZXN0YW1wKHN0cnVjdCB3aXBoeSAqd2lwaHksXG5uZXQvbWFjODAyMTEvY2ZnLmMtNTkyMy1cdFx0XHRcdCAgICAgIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjIgMTc6NTI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTg5MQoJCQkJCQkJb3V0cHV0OiAzOAoJCQkJCQkJdGhvdWdodHM6IDIyMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIEF1dGhlbnRpY2F0aW9uIEZsYWdzIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIHRoYXQgdHdlYWtzIGBzdGFfYXBwbHlfYXV0aF9mbGFnc2AuIEkgc2VlIHRoYXQgdGhpcyBmdW5jdGlvbiYjMzk7cyBjYWxsZWQgZnJvbSBgc3RhX2FwcGx5X3BhcmFtZXRlcnNgLCBhbmQgYWxzbyBmcm9tIGBpZWVlODAyMTFfYWRkX3N0YXRpb25gIGFuZCBgaWVlZTgwMjExX2NoYW5nZV9zdGF0aW9uYC4gUmlnaHQgYXdheSwgdGhhdCByYWlzZXMgYSBmbGFnOiB0aG9zZSBsYXR0ZXIgdHdvIGZ1bmN0aW9ucyBhcmUgZGlyZWN0bHkgZXhwb3NlZCB0byB1c2Vyc3BhY2UgdGhyb3VnaCBubDgwMjExIGNvbW1hbmRzIOKAkyBzcGVjaWZpY2FsbHksIGBOTDgwMjExX0NNRF9ORVdfU1RBVElPTmAgYW5kIGBOTDgwMjExX0NNRF9TRVRfU1RBVElPTmAuIEdvb2QuCgpUaGUgbWVhdCBvZiB0aGUgcGF0Y2ggYWRkcyBhIGNoZWNrLiBTcGVjaWZpY2FsbHksIGl0JiMzOTtzIGNoZWNraW5nIGBpZWVlODAyMTFfdmlmX2lzX21sZCgmYW1wO3N0YS0mZ3Q7c2RhdGEtJmd0O3ZpZilgIGFuZCBgcmN1X2FjY2Vzc19wb2ludGVyKHN0YS0mZ3Q7c2RhdGEtJmd0O3ZpZi5ic3NfY29uZi5jaGFuY3R4X2NvbmYpYC4gRnVuY3Rpb25hbGx5LCB0aGlzIGxvb2tzIHNvdW5kLiBJdCYjMzk7cyBjbGVhcmx5IHJlYWNoYWJsZSwgYW5kIEkmIzM5O20gY29uZmlkZW50IEkgY2FuIHRyaWdnZXIgaXQgdXNpbmcgbWFjODAyMTFfaHdzaW0uIFRoYXQmIzM5O3MgYSBzb2xpZCBzdGFydC4KCk5vdywgbGV0JiMzOTtzIGxvb2sgYXQgdGhlIGJpZ2dlciBwaWN0dXJlLiBJIG5lZWQgdG8ga25vdyB3aGF0IGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBhcmUgaW52b2x2ZWQuIGBNQUM4MDIxMWAgaXMgb2J2aW91c2x5IGEgZ2l2ZW4uIE5vIG5lZWQgdG8gb3ZlcnRoaW5rIHRoYXQgb25lLiBCdXQsIGlzIHRoZXJlIGFueXRoaW5nIGVsc2UgdGhhdCBpdCB0b3VjaGVzPyBMZXQmIzM5O3MgZGl2ZSBpbnRvIHRoZSBgbmV0L21hYzgwMjExL0tjb25maWdgIGZpbGUgYW5kIHRha2UgYSBsb29rLiBOZWVkIHRvIGtub3cgaWYgdGhlcmUmIzM5O3MgYW55IG90aGVyIGRlcGVuZGVuY3kuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIyIDE3OjUyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBNQUM4MDIxMSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9tYWM4MDIxMS9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9tYWM4MDIxMS9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyOmNvbmZpZyBNQUM4MDIxMVxubmV0L21hYzgwMjExL0tjb25maWctMy1cdHRyaXN0YXRlIFwmIzM0O0dlbmVyaWMgSUVFRSA4MDIuMTEgTmV0d29ya2luZyBTdGFjayAobWFjODAyMTEpXCYjMzQ7XG4tLVxubmV0L21hYzgwMjExL0tjb25maWc9MTk9aWYgTUFDODAyMTEgIT0gblxubmV0L21hYzgwMjExL0tjb25maWctMjAtXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyMTpjb25maWcgTUFDODAyMTFfSEFTX1JDXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yMi1cdGJvb2xcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTIzLVxubmV0L21hYzgwMjExL0tjb25maWc6MjQ6Y29uZmlnIE1BQzgwMjExX1JDX01JTlNUUkVMXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yNS1cdGJvb2wgXCYjMzQ7TWluc3RyZWxcJiMzNDsgaWYgRVhQRVJUXG4tLVxubmV0L21hYzgwMjExL0tjb25maWc9MzE9Y2hvaWNlXG4tLVxubmV0L21hYzgwMjExL0tjb25maWctNDAtXG5uZXQvbWFjODAyMTEvS2NvbmZpZzo0MTpjb25maWcgTUFDODAyMTFfUkNfREVGQVVMVF9NSU5TVFJFTFxubmV0L21hYzgwMjExL0tjb25maWctNDItXHRib29sIFwmIzM0O01pbnN0cmVsXCYjMzQ7XG4tLVxubmV0L21hYzgwMjExL0tjb25maWc9NDg9ZW5kY2hvaWNlXG5uZXQvbWFjODAyMTEvS2NvbmZpZy00OS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjUwOmNvbmZpZyBNQUM4MDIxMV9SQ19ERUZBVUxUXG5uZXQvbWFjODAyMTEvS2NvbmZpZy01MS1cdHN0cmluZ1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnPTU3PWNvbW1lbnQgXCYjMzQ7U29tZSB3aXJlbGVzcyBkcml2ZXJzIHJlcXVpcmUgYSByYXRlIGNvbnRyb2wgYWxnb3JpdGhtXCYjMzQ7XG4tLVxubmV0L21hYzgwMjExL0tjb25maWctNTktXG5uZXQvbWFjODAyMTEvS2NvbmZpZzo2MDpjb25maWcgTUFDODAyMTFfS1VOSVRfVEVTVFxubmV0L21hYzgwMjExL0tjb25maWctNjEtXHR0cmlzdGF0ZSBcJiMzNDtLVW5pdCB0ZXN0cyBmb3IgbWFjODAyMTFcJiMzNDsgaWYgIUtVTklUX0FMTF9URVNUU1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnLTY5LVxubmV0L21hYzgwMjExL0tjb25maWc6NzA6Y29uZmlnIE1BQzgwMjExX01FU0hcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTcxLVx0Ym9vbCBcJiMzNDtFbmFibGUgbWFjODAyMTEgbWVzaCBuZXR3b3JraW5nIHN1cHBvcnRcJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy03OC1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjc5OmNvbmZpZyBNQUM4MDIxMV9MRURTXG5uZXQvbWFjODAyMTEvS2NvbmZpZy04MC1cdGJvb2wgXCYjMzQ7RW5hYmxlIExFRCB0cmlnZ2Vyc1wmIzM0O1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnLTg3LVxubmV0L21hYzgwMjExL0tjb25maWc6ODg6Y29uZmlnIE1BQzgwMjExX0RFQlVHRlNcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTg5LVx0Ym9vbCBcJiMzNDtFeHBvcnQgbWFjODAyMTEgaW50ZXJuYWxzIGluIERlYnVnRlNcJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy05Ni1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjk3OmNvbmZpZyBNQUM4MDIxMV9NRVNTQUdFX1RSQUNJTkdcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTk4LVx0Ym9vbCBcJiMzNDtUcmFjZSBhbGwgbWFjODAyMTEgZGVidWcgbWVzc2FnZXNcJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xMDktXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoxMTA6bWVudWNvbmZpZyBNQUM4MDIxMV9ERUJVR19NRU5VXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xMTEtXHRib29sIFwmIzM0O1NlbGVjdCBtYWM4MDIxMSBkZWJ1Z2dpbmcgZmVhdHVyZXNcJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xMTUtXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoxMTY6Y29uZmlnIE1BQzgwMjExX05PSU5MSU5FXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xMTctXHRib29sIFwmIzM0O0RvIG5vdCBpbmxpbmUgVFgvUlggaGFuZGxlcnNcJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xMzEtXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoxMzI6Y29uZmlnIE1BQzgwMjExX1ZFUkJPU0VfREVCVUdcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTEzMy1cdGJvb2wgXCYjMzQ7VmVyYm9zZSBkZWJ1Z2dpbmcgb3V0cHV0XCYjMzQ7XG4tLVxubmV0L21hYzgwMjExL0tjb25maWctMTQyLVxubmV0L21hYzgwMjExL0tjb25maWc6MTQzOmNvbmZpZyBNQUM4MDIxMV9NTE1FX0RFQlVHXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xNDQtXHRib29sIFwmIzM0O1ZlcmJvc2UgbWFuYWdlZCBNTE1FIG91dHB1dFwmIzM0O1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE1My1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjE1NDpjb25maWcgTUFDODAyMTFfU1RBX0RFQlVHXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xNTUtXHRib29sIFwmIzM0O1ZlcmJvc2Ugc3RhdGlvbiBkZWJ1Z2dpbmdcJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xNjItXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoxNjM6Y29uZmlnIE1BQzgwMjExX0hUX0RFQlVHXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xNjQtXHRib29sIFwmIzM0O1ZlcmJvc2UgSFQgZGVidWdnaW5nXCYjMzQ7XG4tLVxubmV0L21hYzgwMjExL0tjb25maWctMTc0LVxubmV0L21hYzgwMjExL0tjb25maWc6MTc1OmNvbmZpZyBNQUM4MDIxMV9PQ0JfREVCVUdcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE3Ni1cdGJvb2wgXCYjMzQ7VmVyYm9zZSBPQ0IgZGVidWdnaW5nXCYjMzQ7XG4tLVxubmV0L21hYzgwMjExL0tjb25maWctMTg1LVxubmV0L21hYzgwMjExL0tjb25maWc6MTg2OmNvbmZpZyBNQUM4MDIxMV9JQlNTX0RFQlVHXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xODctXHRib29sIFwmIzM0O1ZlcmJvc2UgSUJTUyBkZWJ1Z2dpbmdcJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xOTYtXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoxOTc6Y29uZmlnIE1BQzgwMjExX1BTX0RFQlVHXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xOTgtXHRib29sIFwmIzM0O1ZlcmJvc2UgcG93ZXJzYXZlIG1vZGUgZGVidWdnaW5nXCYjMzQ7XG4tLVxubmV0L21hYzgwMjExL0tjb25maWctMjA4LVxubmV0L21hYzgwMjExL0tjb25maWc6MjA5OmNvbmZpZyBNQUM4MDIxMV9NUExfREVCVUdcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTIxMC1cdGJvb2wgXCYjMzQ7VmVyYm9zZSBtZXNoIHBlZXIgbGluayBkZWJ1Z2dpbmdcJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yMjEtXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyMjI6Y29uZmlnIE1BQzgwMjExX01QQVRIX0RFQlVHXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yMjMtXHRib29sIFwmIzM0O1ZlcmJvc2UgbWVzaCBwYXRoIGRlYnVnZ2luZ1wmIzM0O1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnLTIzNC1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjIzNTpjb25maWcgTUFDODAyMTFfTUhXTVBfREVCVUdcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTIzNi1cdGJvb2wgXCYjMzQ7VmVyYm9zZSBtZXNoIEhXTVAgcm91dGluZyBkZWJ1Z2dpbmdcJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yNDctXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyNDg6Y29uZmlnIE1BQzgwMjExX01FU0hfU1lOQ19ERUJVR1xubmV0L21hYzgwMjExL0tjb25maWctMjQ5LVx0Ym9vbCBcJiMzNDtWZXJib3NlIG1lc2ggc3luY2hyb25pemF0aW9uIGRlYnVnZ2luZ1wmIzM0O1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnLTI1OC1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjI1OTpjb25maWcgTUFDODAyMTFfTUVTSF9DU0FfREVCVUdcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTI2MC1cdGJvb2wgXCYjMzQ7VmVyYm9zZSBtZXNoIGNoYW5uZWwgc3dpdGNoIGRlYnVnZ2luZ1wmIzM0O1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnLTI2OS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjI3MDpjb25maWcgTUFDODAyMTFfTUVTSF9QU19ERUJVR1xubmV0L21hYzgwMjExL0tjb25maWctMjcxLVx0Ym9vbCBcJiMzNDtWZXJib3NlIG1lc2ggcG93ZXJzYXZlIGRlYnVnZ2luZ1wmIzM0O1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnLTI4MC1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjI4MTpjb25maWcgTUFDODAyMTFfVERMU19ERUJVR1xubmV0L21hYzgwMjExL0tjb25maWctMjgyLVx0Ym9vbCBcJiMzNDtWZXJib3NlIFRETFMgZGVidWdnaW5nXCYjMzQ7XG4tLVxubmV0L21hYzgwMjExL0tjb25maWctMjkyLVxubmV0L21hYzgwMjExL0tjb25maWc6MjkzOmNvbmZpZyBNQUM4MDIxMV9ERUJVR19DT1VOVEVSU1xubmV0L21hYzgwMjExL0tjb25maWctMjk0LVx0Ym9vbCBcJiMzNDtFeHRyYSBzdGF0aXN0aWNzIGZvciBUWC9SWCBkZWJ1Z2dpbmdcJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0zMDctXG5uZXQvbWFjODAyMTEvS2NvbmZpZzozMDg6Y29uZmlnIE1BQzgwMjExX1NUQV9IQVNIX01BWF9TSVpFXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0zMDktXHRpbnQgXCYjMzQ7U3RhdGlvbiBoYXNoIHRhYmxlIG1heGltdW0gc2l6ZVwmIzM0OyBpZiBNQUM4MDIxMV9ERUJVR19NRU5VXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIyIDE3OjUyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDg2NjUKCQkJCQkJCW91dHB1dDogNDQKCQkJCQkJCXRob3VnaHRzOiA2NAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duOgoKKipBbmFseXppbmcgdGhlIE1BQzgwMjExIENvbnRleHQqKgoKUmlnaHQsIE1BQzgwMjExIHNob3VsZCBiZSBzdWZmaWNpZW50IGZvciB0aGUgYmFzaWMgdW5kZXJzdGFuZGluZywgSSB0aGluay4gTGV0JiMzOTtzIGRpZyBpbiBhIGJpdCBmdXJ0aGVyLCB0aG91Z2guIFdlIHdhbnQgdG8gYmUgdGhvcm91Z2guIFRoZSBjb2RlJiMzOTtzIHVzaW5nIGBpZWVlODAyMTFfdmlmX2lzX21sZCgmYW1wO3N0YS0mZ3Q7c2RhdGEtJmd0O3ZpZilgLiBJIG5lZWQgdG8gZmlndXJlIG91dCB3aGF0LCBpZiBhbnksIHNwZWNpZmljIGNvbmZpZ3VyYXRpb24gb3IgaW1wbGljYXRpb25zIHRoYXQgcGFydGljdWxhciBmdW5jdGlvbiBjYWxsIGJyaW5ncyBpbnRvIHBsYXkgd2l0aGluIHRoaXMgY29udGV4dC4gVGhhdCBmdW5jdGlvbiBjYWxsIGlzIGtleSBoZXJlLiBJJiMzOTtsbCBuZWVkIHRvIGNoZWNrIHRoZSByZWxldmFudCBkb2N1bWVudGF0aW9uIG9yIHNvdXJjZSB0byBzZWUgaWYgd2UgcmVxdWlyZSBzcGVjaWFsIGNvbmZpZ3VyYXRpb25zLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMiAxNzo1MjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtpZWVlODAyMTFfdmlmX2lzX21sZCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9tYWM4MDIxMS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L21hYzgwMjExL2FwLmM9NTE9aWVlZTgwMjExX3J4X2VtbF9vcF9tb2RlX25vdGlmKHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLFxuLS1cbm5ldC9tYWM4MDIxMS9hcC5jLTY4LVxubmV0L21hYzgwMjExL2FwLmM6Njk6XHRpZiAoIWllZWU4MDIxMV92aWZfaXNfbWxkKFx1MDAyNnNkYXRhLVx1MDAzZXZpZikpXG5uZXQvbWFjODAyMTEvYXAuYy03MC1cdFx0cmV0dXJuO1xuLS1cbm5ldC9tYWM4MDIxMS9jZmcuYz0yNz1pZWVlODAyMTFfbGlua19vcl9kZWZsaW5rKHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLCBpbnQgbGlua19pZCxcbi0tXG5uZXQvbWFjODAyMTEvY2ZnLmMtMzctXHRcdCAqL1xubmV0L21hYzgwMjExL2NmZy5jOjM4Olx0XHRpZiAocmVxdWlyZV92YWxpZCBcdTAwMjZcdTAwMjYgaWVlZTgwMjExX3ZpZl9pc19tbGQoXHUwMDI2c2RhdGEtXHUwMDNldmlmKSlcbm5ldC9tYWM4MDIxMS9jZmcuYy0zOS1cdFx0XHRyZXR1cm4gRVJSX1BUUigtRUlOVkFMKTtcbi0tXG5uZXQvbWFjODAyMTEvY2ZnLmM9MjEyOT1zdGF0aWMgaW50IHN0YV9hcHBseV9hdXRoX2ZsYWdzKHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsLFxuLS1cbm5ldC9tYWM4MDIxMS9jZmcuYy0yMTUxLVx0XHRpZiAoIXRlc3Rfc3RhX2ZsYWcoc3RhLCBXTEFOX1NUQV9SQVRFX0NPTlRST0wpKSB7XG5uZXQvbWFjODAyMTEvY2ZnLmM6MjE1MjpcdFx0XHRpZiAoIWllZWU4MDIxMV92aWZfaXNfbWxkKFx1MDAyNnN0YS1cdTAwM2VzZGF0YS1cdTAwM2V2aWYpIFx1MDAyNlx1MDAyNlxubmV0L21hYzgwMjExL2NmZy5jLTIxNTMtXHRcdFx0ICAgICFyY3VfYWNjZXNzX3BvaW50ZXIoc3RhLVx1MDAzZXNkYXRhLVx1MDAzZXZpZi5ic3NfY29uZi5jaGFuY3R4X2NvbmYpKVxuLS1cbm5ldC9tYWM4MDIxMS9jZmcuYz0zOTExPWludCBfX2llZWU4MDIxMV9yZXF1ZXN0X3NtcHNfbWdkKHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLFxuLS1cbm5ldC9tYWM4MDIxMS9jZmcuYy0zOTczLVx0XHRcdFx0XHQgYXAsIGFwLFxubmV0L21hYzgwMjExL2NmZy5jOjM5NzQ6XHRcdFx0XHRcdCBpZWVlODAyMTFfdmlmX2lzX21sZChcdTAwMjZzZGF0YS1cdTAwM2V2aWYpID9cbm5ldC9tYWM4MDIxMS9jZmcuYy0zOTc1LVx0XHRcdFx0XHQgbGluay1cdTAwM2VsaW5rX2lkIDogLTEpO1xuLS1cbm5ldC9tYWM4MDIxMS9jZmcuYz00OTU3PXN0YXRpYyBpbnQgaWVlZTgwMjExX3Byb2JlX2NsaWVudChzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuLS1cbm5ldC9tYWM4MDIxMS9jZmcuYy00OTg2LVxubmV0L21hYzgwMjExL2NmZy5jOjQ5ODc6XHRpZiAoaWVlZTgwMjExX3ZpZl9pc19tbGQoXHUwMDI2c2RhdGEtXHUwMDNldmlmKSkge1xubmV0L21hYzgwMjExL2NmZy5jLTQ5ODgtXHRcdGlmIChzdGEtXHUwMDNlc3RhLm1sbykge1xuLS1cbm5ldC9tYWM4MDIxMS9jZmcuYy01MDQxLVx0bWVtY3B5KG51bGxmdW5jLVx1MDAzZWFkZHIxLCBzdGEtXHUwMDNlc3RhLmFkZHIsIEVUSF9BTEVOKTtcbm5ldC9tYWM4MDIxMS9jZmcuYzo1MDQyOlx0aWYgKGllZWU4MDIxMV92aWZfaXNfbWxkKFx1MDAyNnNkYXRhLVx1MDAzZXZpZikgXHUwMDI2XHUwMDI2ICFzdGEtXHUwMDNlc3RhLm1sbykge1xubmV0L21hYzgwMjExL2NmZy5jLTUwNDMtXHRcdG1lbWNweShudWxsZnVuYy1cdTAwM2VhZGRyMiwgY29uZi1cdTAwM2VhZGRyLCBFVEhfQUxFTik7XG4tLVxubmV0L21hYzgwMjExL2RlYnVnLmg9MTI1PWRvIHtcdFx0XHRcdFx0XHRcdFx0XHRcXFxuLS1cbm5ldC9tYWM4MDIxMS9kZWJ1Zy5oLTEzOS1cdGRvIHtcdFx0XHRcdFx0XHRcdFx0XFxcbm5ldC9tYWM4MDIxMS9kZWJ1Zy5oOjE0MDpcdFx0aWYgKGllZWU4MDIxMV92aWZfaXNfbWxkKFx1MDAyNihsaW5rKS1cdTAwM2VzZGF0YS1cdTAwM2V2aWYpKSAgICAgICAgICBcXFxubmV0L21hYzgwMjExL2RlYnVnLmgtMTQxLVx0XHRcdF9zZGF0YV9pbmZvKChsaW5rKS1cdTAwM2VzZGF0YSwgXCYjMzQ7W2xpbmsgJWRdIFwmIzM0OyBmbXQsXHRcXFxuLS1cbm5ldC9tYWM4MDIxMS9kZWJ1Zy5oLTE0OC1cdGRvIHtcdFx0XHRcdFx0XHRcdFx0XFxcbm5ldC9tYWM4MDIxMS9kZWJ1Zy5oOjE0OTpcdFx0aWYgKGllZWU4MDIxMV92aWZfaXNfbWxkKFx1MDAyNihsaW5rKS1cdTAwM2VzZGF0YS1cdTAwM2V2aWYpKSAgICAgICAgICBcXFxubmV0L21hYzgwMjExL2RlYnVnLmgtMTUwLVx0XHRcdF9zZGF0YV9lcnIoKGxpbmspLVx1MDAzZXNkYXRhLCBcJiMzNDtbbGluayAlZF0gXCYjMzQ7IGZtdCxcdFxcXG4tLVxubmV0L21hYzgwMjExL2RlYnVnLmgtMTU5LVx0ZG8ge1x0XHRcdFx0XHRcdFx0XHRcXFxubmV0L21hYzgwMjExL2RlYnVnLmg6MTYwOlx0XHRpZiAoaWVlZTgwMjExX3ZpZl9pc19tbGQoXHUwMDI2c2RhdGEtXHUwMDNldmlmKSlcdFx0XHRcXFxubmV0L21hYzgwMjExL2RlYnVnLmgtMTYxLVx0XHRcdF9zZGF0YV9pbmZvKHNkYXRhLCBcJiMzNDtbbGluayAlZF0gXCYjMzQ7IGZtdCwgbGlua19pZCxcdFxcXG4tLVxubmV0L21hYzgwMjExL2RlYnVnLmgtMTY3LVx0ZG8ge1x0XHRcdFx0XHRcdFx0XHRcXFxubmV0L21hYzgwMjExL2RlYnVnLmg6MTY4Olx0XHRpZiAoaWVlZTgwMjExX3ZpZl9pc19tbGQoXHUwMDI2KHNkYXRhKS1cdTAwM2V2aWYpKVx0XHRcXFxubmV0L21hYzgwMjExL2RlYnVnLmgtMTY5LVx0XHRcdF9zZGF0YV9kYmcocHJpbnQsIHNkYXRhLCBcJiMzNDtbbGluayAlZF0gXCYjMzQ7IGZtdCxcdFxcXG4tLVxubmV0L21hYzgwMjExL2llZWU4MDIxMV9pLmg9MTczOT1pZWVlODAyMTFfZ2V0X3NiYW5kKHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhKVxuLS1cbm5ldC9tYWM4MDIxMS9pZWVlODAyMTFfaS5oLTE3NDQtXG5uZXQvbWFjODAyMTEvaWVlZTgwMjExX2kuaDoxNzQ1Olx0V0FSTl9PTihpZWVlODAyMTFfdmlmX2lzX21sZChcdTAwMjZzZGF0YS1cdTAwM2V2aWYpKTtcbm5ldC9tYWM4MDIxMS9pZWVlODAyMTFfaS5oLTE3NDYtXG4tLVxubmV0L21hYzgwMjExL2lmYWNlLmM9NDc5PXN0YXRpYyB2b2lkIGllZWU4MDIxMV9kb19zdG9wKHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLCBib29sIGdvaW5nX2Rvd24pXG4tLVxubmV0L21hYzgwMjExL2lmYWNlLmMtNTYyLVxubmV0L21hYzgwMjExL2lmYWNlLmM6NTYzOlx0V0FSTihpZWVlODAyMTFfdmlmX2lzX21sZChcdTAwMjZzZGF0YS1cdTAwM2V2aWYpLFxubmV0L21hYzgwMjExL2lmYWNlLmMtNTY0LVx0ICAgICBcJiMzNDtkZXN0cm95aW5nIGludGVyZmFjZSB3aXRoIHZhbGlkIGxpbmtzIDB4JTA0eFxcblwmIzM0Oyxcbi0tXG5uZXQvbWFjODAyMTEvaWZhY2UuYz0xOTc0PXN0YXRpYyBpbnQgaWVlZTgwMjExX3J1bnRpbWVfY2hhbmdlX2lmdHlwZShzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSxcbi0tXG5uZXQvbWFjODAyMTEvaWZhY2UuYy0xOTg3LVx0LyogZm9yIG5vdywgZG9uJiMzOTt0IHN1cHBvcnQgY2hhbmdpbmcgd2hpbGUgbGlua3MgZXhpc3QgKi9cbm5ldC9tYWM4MDIxMS9pZmFjZS5jOjE5ODg6XHRpZiAoaWVlZTgwMjExX3ZpZl9pc19tbGQoXHUwMDI2c2RhdGEtXHUwMDNldmlmKSlcbm5ldC9tYWM4MDIxMS9pZmFjZS5jLTE5ODktXHRcdHJldHVybiAtRUJVU1k7XG4tLVxubmV0L21hYzgwMjExL21haW4uYz0zMzY9dm9pZCBpZWVlODAyMTFfYnNzX2luZm9fY2hhbmdlX25vdGlmeShzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSxcbi0tXG5uZXQvbWFjODAyMTEvbWFpbi5jLTM0Mi1cbm5ldC9tYWM4MDIxMS9tYWluLmM6MzQzOlx0V0FSTl9PTl9PTkNFKGllZWU4MDIxMV92aWZfaXNfbWxkKFx1MDAyNnNkYXRhLVx1MDAzZXZpZikpO1xubmV0L21hYzgwMjExL21haW4uYy0zNDQtXG4tLVxubmV0L21hYzgwMjExL21sbWUuYz0yNDE0PWllZWU4MDIxMV9hc3NvY19hZGRfbWxfZWxlbShzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSxcbi0tXG5uZXQvbWFjODAyMTEvbWxtZS5jLTI0MjgtXG5uZXQvbWFjODAyMTEvbWxtZS5jOjI0Mjk6XHRpZiAoIWllZWU4MDIxMV92aWZfaXNfbWxkKFx1MDAyNnNkYXRhLVx1MDAzZXZpZikpXG5uZXQvbWFjODAyMTEvbWxtZS5jLTI0MzAtXHRcdHJldHVybjtcbi0tXG5uZXQvbWFjODAyMTEvbWxtZS5jPTI1ODI9c3RhdGljIGludCBpZWVlODAyMTFfc2VuZF9hc3NvYyhzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSlcbi0tXG5uZXQvbWFjODAyMTEvbWxtZS5jLTI2MzktXG5uZXQvbWFjODAyMTEvbWxtZS5jOjI2NDA6XHRpZiAoaWVlZTgwMjExX3ZpZl9pc19tbGQoXHUwMDI2c2RhdGEtXHUwMDNldmlmKSkge1xubmV0L21hYzgwMjExL21sbWUuYy0yNjQxLVx0XHQvKiBjb25zaWRlciB0aGUgbXVsdGktbGluayBlbGVtZW50IHdpdGggU1RBIHByb2ZpbGUgKi9cbi0tXG5uZXQvbWFjODAyMTEvbWxtZS5jPTQzOTQ9c3RhdGljIHZvaWQgaWVlZTgwMjExX3NldF9hc3NvY2lhdGVkKHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLFxuLS1cbm5ldC9tYWM4MDIxMS9tbG1lLmMtNDQxNC1cbm5ldC9tYWM4MDIxMS9tbG1lLmM6NDQxNTpcdFx0aWYgKGllZWU4MDIxMV92aWZfaXNfbWxkKFx1MDAyNnNkYXRhLVx1MDAzZXZpZikgXHUwMDI2XHUwMDI2XG5uZXQvbWFjODAyMTEvbWxtZS5jLTQ0MTYtXHRcdCAgICAhKGllZWU4MDIxMV92aWZfdXNhYmxlX2xpbmtzKFx1MDAyNnNkYXRhLVx1MDAzZXZpZikgXHUwMDI2IEJJVChsaW5rX2lkKSkpXG4tLVxubmV0L21hYzgwMjExL21sbWUuYy00NDM2LVxubmV0L21hYzgwMjExL21sbWUuYzo0NDM3Olx0aWYgKGllZWU4MDIxMV92aWZfaXNfbWxkKFx1MDAyNnNkYXRhLVx1MDAzZXZpZikpIHtcbm5ldC9tYWM4MDIxMS9tbG1lLmMtNDQzOC1cdFx0Zm9yIChsaW5rX2lkID0gMDtcbi0tXG5uZXQvbWFjODAyMTEvbWxtZS5jLTQ0NjgtXHQvKiBsZWF2ZSB0aGlzIGhlcmUgdG8gbm90IGNoYW5nZSBvcmRlcmluZyBpbiBub24tTUxPIGNhc2VzICovXG5uZXQvbWFjODAyMTEvbWxtZS5jOjQ0Njk6XHRpZiAoIWllZWU4MDIxMV92aWZfaXNfbWxkKFx1MDAyNnNkYXRhLVx1MDAzZXZpZikpXG5uZXQvbWFjODAyMTEvbWxtZS5jLTQ0NzAtXHRcdGllZWU4MDIxMV9yZWNhbGNfc21wcyhzZGF0YSwgXHUwMDI2c2RhdGEtXHUwMDNlZGVmbGluayk7XG4tLVxubmV0L21hYzgwMjExL21sbWUuYz00NDc2PXN0YXRpYyB2b2lkIGllZWU4MDIxMV9tbF9yZWNvbmZfcmVzZXQoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEpXG4tLVxubmV0L21hYzgwMjExL21sbWUuYy00NDgwLVxubmV0L21hYzgwMjExL21sbWUuYzo0NDgxOlx0aWYgKCFpZWVlODAyMTFfdmlmX2lzX21sZChcdTAwMjZzZGF0YS1cdTAwM2V2aWYpIHx8XG5uZXQvbWFjODAyMTEvbWxtZS5jLTQ0ODItXHQgICAgIShzZGF0YS1cdTAwM2V1Lm1nZC5yZWNvbmYuYWRkZWRfbGlua3MgfFxuLS1cbm5ldC9tYWM4MDIxMS9tbG1lLmM9NDUwOD1zdGF0aWMgdm9pZCBpZWVlODAyMTFfc2V0X2Rpc2Fzc29jKHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLFxuLS1cbm5ldC9tYWM4MDIxMS9tbG1lLmMtNDYzMi1cdC8qIGZpbmFsbHkgcmVzZXQgYWxsIEJTUyAvIGNvbmZpZyBwYXJhbWV0ZXJzICovXG5uZXQvbWFjODAyMTEvbWxtZS5jOjQ2MzM6XHRpZiAoIWllZWU4MDIxMV92aWZfaXNfbWxkKFx1MDAyNnNkYXRhLVx1MDAzZXZpZikpXG5uZXQvbWFjODAyMTEvbWxtZS5jLTQ2MzQtXHRcdGNoYW5nZWQgfD0gaWVlZTgwMjExX3Jlc2V0X2VycF9pbmZvKHNkYXRhKTtcbi0tXG5uZXQvbWFjODAyMTEvbWxtZS5jLTQ2NTctXHQgICAgICAgc2l6ZW9mKHNkYXRhLVx1MDAzZXZpZi5ic3NfY29uZi5tdV9ncm91cC5wb3NpdGlvbikpO1xubmV0L21hYzgwMjExL21sbWUuYzo0NjU4Olx0aWYgKCFpZWVlODAyMTFfdmlmX2lzX21sZChcdTAwMjZzZGF0YS1cdTAwM2V2aWYpKVxubmV0L21hYzgwMjExL21sbWUuYy00NjU5LVx0XHRjaGFuZ2VkIHw9IEJTU19DSEFOR0VEX01VX0dST1VQUztcbi0tXG5uZXQvbWFjODAyMTEvbWxtZS5jLTQ2NzEtXHRzZGF0YS1cdTAwM2V2aWYuYnNzX2NvbmYucW9zID0gZmFsc2U7XG5uZXQvbWFjODAyMTEvbWxtZS5jOjQ2NzI6XHRpZiAoIWllZWU4MDIxMV92aWZfaXNfbWxkKFx1MDAyNnNkYXRhLVx1MDAzZXZpZikpIHtcbm5ldC9tYWM4MDIxMS9tbG1lLmMtNDY3My1cdFx0Y2hhbmdlZCB8PSBCU1NfQ0hBTkdFRF9RT1M7XG4tLVxubmV0L21hYzgwMjExL21sbWUuYz00OTcyPXN0cnVjdCBza19idWZmICppZWVlODAyMTFfYXBfcHJvYmVyZXFfZ2V0KHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxuLS1cbm5ldC9tYWM4MDIxMS9tbG1lLmMtNDk4NC1cdGlmIChXQVJOX09OKHNkYXRhLVx1MDAzZXZpZi50eXBlICE9IE5MODAyMTFfSUZUWVBFX1NUQVRJT04gfHxcbm5ldC9tYWM4MDIxMS9tbG1lLmM6NDk4NTpcdFx0ICAgIGllZWU4MDIxMV92aWZfaXNfbWxkKFx1MDAyNnNkYXRhLVx1MDAzZXZpZikpKVxubmV0L21hYzgwMjExL21sbWUuYy00OTg2LVx0XHRyZXR1cm4gTlVMTDtcbi0tXG5uZXQvbWFjODAyMTEvbWxtZS5jPTUzMDA9c3RhdGljIHZvaWQgaWVlZTgwMjExX2Rlc3Ryb3lfYXNzb2NfZGF0YShzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSxcbi0tXG5uZXQvbWFjODAyMTEvbWxtZS5jLTUzMzUtXG5uZXQvbWFjODAyMTEvbWxtZS5jOjUzMzY6XHRcdFx0aWYgKGllZWU4MDIxMV92aWZfaXNfbWxkKFx1MDAyNnNkYXRhLVx1MDAzZXZpZikpXG5uZXQvbWFjODAyMTEvbWxtZS5jLTUzMzctXHRcdFx0XHRkYXRhLmFwX21sZF9hZGRyID0gYXNzb2NfZGF0YS1cdTAwM2VhcF9hZGRyO1xuLS1cbm5ldC9tYWM4MDIxMS9tbG1lLmM9NjkyND1zdGF0aWMgYm9vbCBpZWVlODAyMTFfYXNzb2Nfc3VjY2VzcyhzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSxcbi0tXG5uZXQvbWFjODAyMTEvbWxtZS5jLTY5NDgtXG5uZXQvbWFjODAyMTEvbWxtZS5jOjY5NDk6XHRpZiAoaWVlZTgwMjExX3ZpZl9pc19tbGQoXHUwMDI2c2RhdGEtXHUwMDNldmlmKSkge1xubmV0L21hYzgwMjExL21sbWUuYy02OTUwLVx0XHRpZiAoIWVsZW1zLVx1MDAzZW1sX2Jhc2ljKVxuLS1cbm5ldC9tYWM4MDIxMS9tbG1lLmMtNzAxMC1cbm5ldC9tYWM4MDIxMS9tbG1lLmM6NzAxMTpcdFx0aWYgKGllZWU4MDIxMV92aWZfaXNfbWxkKFx1MDAyNnNkYXRhLVx1MDAzZXZpZikpXG5uZXQvbWFjODAyMTEvbWxtZS5jLTcwMTItXHRcdFx0bGlua19pbmZvKGxpbmssXG4tLVxubmV0L21hYzgwMjExL21sbWUuYz03MTM1PXN0YXRpYyB2b2lkIGllZWU4MDIxMV9yeF9tZ210X2Fzc29jX3Jlc3Aoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsXG4tLVxubmV0L21hYzgwMjExL21sbWUuYy03MjcyLVxubmV0L21hYzgwMjExL21sbWUuYzo3MjczOlx0XHRpZiAoaWVlZTgwMjExX3ZpZl9pc19tbGQoXHUwMDI2c2RhdGEtXHUwMDNldmlmKSkge1xubmV0L21hYzgwMjExL21sbWUuYy03Mjc0LVx0XHRcdHN0cnVjdCBpZWVlODAyMTFfbWxlX2Jhc2ljX2NvbW1vbl9pbmZvICpjb21tb247XG4tLVxubmV0L21hYzgwMjExL21sbWUuYy03MzM5LVxubmV0L21hYzgwMjExL21sbWUuYzo3MzQwOlx0aWYgKGllZWU4MDIxMV92aWZfaXNfbWxkKFx1MDAyNnNkYXRhLVx1MDAzZXZpZikpIHtcbm5ldC9tYWM4MDIxMS9tbG1lLmMtNzM0MS1cdFx0ZXRoZXJfYWRkcl9jb3B5KGFwX21sZF9hZGRyLCBzZGF0YS1cdTAwM2V2aWYuY2ZnLmFwX2FkZHIpO1xuLS1cbm5ldC9tYWM4MDIxMS9tbG1lLmM9NzYzMT1zdGF0aWMgdm9pZCBpZWVlODAyMTFfbWxfcmVjb25maWd1cmF0aW9uKHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLFxuLS1cbm5ldC9tYWM4MDIxMS9tbG1lLmMtNzYzOS1cbm5ldC9tYWM4MDIxMS9tbG1lLmM6NzY0MDpcdGlmICghaWVlZTgwMjExX3ZpZl9pc19tbGQoXHUwMDI2c2RhdGEtXHUwMDNldmlmKSB8fCAhZWxlbXMtXHUwMDNlbWxfcmVjb25mKVxubmV0L21hYzgwMjExL21sbWUuYy03NjQxLVx0XHRyZXR1cm47XG4tLVxubmV0L21hYzgwMjExL21sbWUuYz03ODAxPXN0YXRpYyB2b2lkIGllZWU4MDIxMV9wcm9jZXNzX2Fkdl90dGxtKHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLFxuLS1cbm5ldC9tYWM4MDIxMS9tbG1lLmMtNzgwNy1cbm5ldC9tYWM4MDIxMS9tbG1lLmM6NzgwODpcdGlmICghaWVlZTgwMjExX3ZpZl9pc19tbGQoXHUwMDI2c2RhdGEtXHUwMDNldmlmKSlcbm5ldC9tYWM4MDIxMS9tbG1lLmMtNzgwOS1cdFx0cmV0dXJuO1xuLS1cbm5ldC9tYWM4MDIxMS9tbG1lLmM9ODA1Nj1zdGF0aWMgdm9pZCBpZWVlODAyMTFfcnhfbWdtdF9iZWFjb24oc3RydWN0IGllZWU4MDIxMV9saW5rX2RhdGEgKmxpbmssXG4tLVxubmV0L21hYzgwMjExL21sbWUuYy04MTE3LVx0aWYgKGlmbWdkLVx1MDAzZWFzc29jX2RhdGEgXHUwMDI2XHUwMDI2IGlmbWdkLVx1MDAzZWFzc29jX2RhdGEtXHUwMDNlbmVlZF9iZWFjb24gXHUwMDI2XHUwMDI2XG5uZXQvbWFjODAyMTEvbWxtZS5jOjgxMTg6XHQgICAgIVdBUk5fT04oaWVlZTgwMjExX3ZpZl9pc19tbGQoXHUwMDI2c2RhdGEtXHUwMDNldmlmKSkgXHUwMDI2XHUwMDI2XG5uZXQvbWFjODAyMTEvbWxtZS5jLTgxMTktXHQgICAgaWVlZTgwMjExX3J4X291cl9iZWFjb24oYnNzaWQsIGlmbWdkLVx1MDAzZWFzc29jX2RhdGEtXHUwMDNlbGlua1swXS5ic3MpKSB7XG4tLVxubmV0L21hYzgwMjExL21sbWUuYz04NTQxPWludCBpZWVlODAyMTFfcmVxX25lZ190dGxtKHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLFxuLS1cbm5ldC9tYWM4MDIxMS9tbG1lLmMtODU0Ni1cbm5ldC9tYWM4MDIxMS9tbG1lLmM6ODU0NzpcdGlmICghaWVlZTgwMjExX3ZpZl9pc19tbGQoXHUwMDI2c2RhdGEtXHUwMDNldmlmKSB8fFxubmV0L21hYzgwMjExL21sbWUuYy04NTQ4LVx0ICAgICEoc2RhdGEtXHUwMDNldmlmLmNmZy5tbGRfY2FwYV9vcCBcdTAwMjZcbi0tXG5uZXQvbWFjODAyMTEvbWxtZS5jPTg3MDk9c3RhdGljIHZvaWQgaWVlZTgwMjExX3Byb2Nlc3NfbmVnX3R0bG1fcmVxKHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLFxuLS1cbm5ldC9tYWM4MDIxMS9tbG1lLmMtODcyMC1cbm5ldC9tYWM4MDIxMS9tbG1lLmM6ODcyMTpcdGlmICghaWVlZTgwMjExX3ZpZl9pc19tbGQoXHUwMDI2c2RhdGEtXHUwMDNldmlmKSlcbm5ldC9tYWM4MDIxMS9tbG1lLmMtODcyMi1cdFx0cmV0dXJuO1xuLS1cbm5ldC9tYWM4MDIxMS9tbG1lLmM9ODc3Mz1zdGF0aWMgdm9pZCBpZWVlODAyMTFfcHJvY2Vzc19uZWdfdHRsbV9yZXMoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsXG4tLVxubmV0L21hYzgwMjExL21sbWUuYy04Nzc2LXtcbm5ldC9tYWM4MDIxMS9tbG1lLmM6ODc3NzpcdGlmICghaWVlZTgwMjExX3ZpZl9pc19tbGQoXHUwMDI2c2RhdGEtXHUwMDNldmlmKSB8fFxubmV0L21hYzgwMjExL21sbWUuYy04Nzc4LVx0ICAgIG1nbXQtXHUwMDNldS5hY3Rpb24udHRsbV9yZXMuZGlhbG9nX3Rva2VuICE9IHNkYXRhLVx1MDAzZXUubWdkLmRpYWxvZ190b2tlbl9hbGxvYylcbi0tXG5uZXQvbWFjODAyMTEvbWxtZS5jPTg4OTU9c3RhdGljIGludCBpZWVlODAyMTFfYXV0aChzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSlcbi0tXG5uZXQvbWFjODAyMTEvbWxtZS5jLTg5MTItXHRpZiAoYXV0aF9kYXRhLVx1MDAzZWFsZ29yaXRobSA9PSBXTEFOX0FVVEhfRVBQS0UgXHUwMDI2XHUwMDI2XG5uZXQvbWFjODAyMTEvbWxtZS5jOjg5MTM6XHQgICAgaWVlZTgwMjExX3ZpZl9pc19tbGQoXHUwMDI2c2RhdGEtXHUwMDNldmlmKSBcdTAwMjZcdTAwMjZcbm5ldC9tYWM4MDIxMS9tbG1lLmMtODkxNC1cdCAgICAhY2ZnODAyMTFfZmluZF9leHRfZWxlbShXTEFOX0VJRF9FWFRfRUhUX01VTFRJX0xJTkssXG4tLVxubmV0L21hYzgwMjExL21sbWUuYz05ODQyPWludCBpZWVlODAyMTFfbWdkX2F1dGgoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsXG4tLVxubmV0L21hYzgwMjExL21sbWUuYy0xMDA0MC0gZXJyX2NsZWFyOlxubmV0L21hYzgwMjExL21sbWUuYzoxMDA0MTpcdGlmICghaWVlZTgwMjExX3ZpZl9pc19tbGQoXHUwMDI2c2RhdGEtXHUwMDNldmlmKSkge1xubmV0L21hYzgwMjExL21sbWUuYy0xMDA0Mi1cdFx0ZXRoX3plcm9fYWRkcihzZGF0YS1cdTAwM2VkZWZsaW5rLnUubWdkLmJzc2lkKTtcbi0tXG5uZXQvbWFjODAyMTEvbWxtZS5jPTEwODY4PWllZWU4MDIxMV9wcm9jZXNzX21sX3JlY29uZl9yZXNwKHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLFxuLS1cbm5ldC9tYWM4MDIxMS9tbG1lLmMtMTA4ODQtXG5uZXQvbWFjODAyMTEvbWxtZS5jOjEwODg1Olx0aWYgKCFpZWVlODAyMTFfdmlmX2lzX21sZChcdTAwMjZzZGF0YS1cdTAwM2V2aWYpIHx8XG5uZXQvbWFjODAyMTEvbWxtZS5jLTEwODg2LVx0ICAgIGxlbiBcdTAwM2MgSUVFRTgwMjExX01JTl9BQ1RJT05fU0laRShtbF9yZWNvbmZfcmVzcCkgfHxcbi0tXG5uZXQvbWFjODAyMTEvbWxtZS5jPTExMzMwPWludCBpZWVlODAyMTFfbWdkX2Fzc29jX21sX3JlY29uZihzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSxcbi0tXG5uZXQvbWFjODAyMTEvbWxtZS5jLTExMzQxLVxubmV0L21hYzgwMjExL21sbWUuYzoxMTM0MjpcdGlmICghaWVlZTgwMjExX3ZpZl9pc19tbGQoXHUwMDI2c2RhdGEtXHUwMDNldmlmKSB8fFxubmV0L21hYzgwMjExL21sbWUuYy0xMTM0My1cdCAgICAhKHNkYXRhLVx1MDAzZXZpZi5jZmcubWxkX2NhcGFfb3AgXHUwMDI2XG4tLVxubmV0L21hYzgwMjExL21sbWUuYz0xMTU1ND1zdGF0aWMgYm9vbCBpZWVlODAyMTFfbWdkX2VwY3Nfc3VwcChzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSlcbi0tXG5uZXQvbWFjODAyMTEvbWxtZS5jLTExNTYwLVxubmV0L21hYzgwMjExL21sbWUuYzoxMTU2MTpcdGlmICghaWVlZTgwMjExX3ZpZl9pc19tbGQoXHUwMDI2c2RhdGEtXHUwMDNldmlmKSlcbm5ldC9tYWM4MDIxMS9tbG1lLmMtMTE1NjItXHRcdHJldHVybiBmYWxzZTtcbi0tXG5uZXQvbWFjODAyMTEvbWxtZS5jPTExNjI4PXN0YXRpYyB2b2lkIGllZWU4MDIxMV9tbF9lcGNzKHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLFxuLS1cbm5ldC9tYWM4MDIxMS9tbG1lLmMtMTE2MzYtXG5uZXQvbWFjODAyMTEvbWxtZS5jOjExNjM3Olx0aWYgKCFpZWVlODAyMTFfdmlmX2lzX21sZChcdTAwMjZzZGF0YS1cdTAwM2V2aWYpIHx8ICFlbGVtcy1cdTAwM2VtbF9lcGNzKVxubmV0L21hYzgwMjExL21sbWUuYy0xMTYzOC1cdFx0cmV0dXJuO1xuLS1cbm5ldC9tYWM4MDIxMS9tbG1lLmM9MTE3NDY9c3RhdGljIHZvaWQgaWVlZTgwMjExX3Byb2Nlc3NfZXBjc190ZWFyZG93bihzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSxcbi0tXG5uZXQvbWFjODAyMTEvbWxtZS5jLTExNzQ5LXtcbm5ldC9tYWM4MDIxMS9tbG1lLmM6MTE3NTA6XHRpZiAoIWllZWU4MDIxMV92aWZfaXNfbWxkKFx1MDAyNnNkYXRhLVx1MDAzZXZpZikgfHxcbm5ldC9tYWM4MDIxMS9tbG1lLmMtMTE3NTEtXHQgICAgIXNkYXRhLVx1MDAzZXUubWdkLmVwY3MuZW5hYmxlZClcbi0tXG5uZXQvbWFjODAyMTEvcmF0ZS5jPTMxPXZvaWQgcmF0ZV9jb250cm9sX3JhdGVfaW5pdChzdHJ1Y3QgbGlua19zdGFfaW5mbyAqbGlua19zdGEpXG4tLVxubmV0L21hYzgwMjExL3JhdGUuYy00NC1cdC8qIFNXIHJhdGUgY29udHJvbCBpc24mIzM5O3Qgc3VwcG9ydGVkIHdpdGggTUxPIHJpZ2h0IG5vdyAqL1xubmV0L21hYzgwMjExL3JhdGUuYzo0NTpcdGlmIChXQVJOX09OKGllZWU4MDIxMV92aWZfaXNfbWxkKFx1MDAyNnN0YS1cdTAwM2VzZGF0YS1cdTAwM2V2aWYpKSlcbm5ldC9tYWM4MDIxMS9yYXRlLmMtNDYtXHRcdHJldHVybjtcbi0tXG5uZXQvbWFjODAyMTEvcnguYz0xNTIxPWllZWU4MDIxMV9yeF9oX2NoZWNrX2R1cChzdHJ1Y3QgaWVlZTgwMjExX3J4X2RhdGEgKnJ4KVxuLS1cbm5ldC9tYWM4MDIxMS9yeC5jLTE1NTAtXG5uZXQvbWFjODAyMTEvcnguYzoxNTUxOlx0XHRpZiAoIWllZWU4MDIxMV92aWZfaXNfbWxkKFx1MDAyNnNkYXRhLVx1MDAzZXZpZikgfHxcbm5ldC9tYWM4MDIxMS9yeC5jLTE1NTItXHRcdCAgICBzZGF0YS1cdTAwM2V2aWYudHlwZSAhPSBOTDgwMjExX0lGVFlQRV9TVEFUSU9OKVxuLS1cbm5ldC9tYWM4MDIxMS9yeC5jPTI2ODQ9Ym9vbCBpZWVlODAyMTFfaXNfb3VyX2FkZHIoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsXG4tLVxubmV0L21hYzgwMjExL3J4LmMtMjY5Mi1cbm5ldC9tYWM4MDIxMS9yeC5jOjI2OTM6XHRpZiAoIWllZWU4MDIxMV92aWZfaXNfbWxkKFx1MDAyNnNkYXRhLVx1MDAzZXZpZikpXG5uZXQvbWFjODAyMTEvcnguYy0yNjk0LVx0XHRyZXR1cm4gZmFsc2U7XG4tLVxubmV0L21hYzgwMjExL3J4LmM9NDM0MT1zdGF0aWMgYm9vbCBpZWVlODAyMTFfcnhfZGF0YV9zZXRfc3RhKHN0cnVjdCBpZWVlODAyMTFfcnhfZGF0YSAqcngsXG4tLVxubmV0L21hYzgwMjExL3J4LmMtNDM1Ni1cdGlmIChsaW5rX2lkIFx1MDAzYyAwKSB7XG5uZXQvbWFjODAyMTEvcnguYzo0MzU3Olx0XHRpZiAoaWVlZTgwMjExX3ZpZl9pc19tbGQoXHUwMDI2cngtXHUwMDNlc2RhdGEtXHUwMDNldmlmKSBcdTAwMjZcdTAwMjZcbm5ldC9tYWM4MDIxMS9yeC5jLTQzNTgtXHRcdCAgICBzdGEgXHUwMDI2XHUwMDI2ICFzdGEtXHUwMDNlc3RhLnZhbGlkX2xpbmtzKVxuLS1cbm5ldC9tYWM4MDIxMS9yeC5jPTUyOTY9c3RhdGljIGJvb2wgaWVlZTgwMjExX3J4X2Zvcl9pbnRlcmZhY2Uoc3RydWN0IGllZWU4MDIxMV9yeF9kYXRhICpyeCxcbi0tXG5uZXQvbWFjODAyMTEvcnguYy01MzE5LVx0XHRcdGxpbmtfaWQgPSBzdGF0dXMtXHUwMDNlbGlua19pZDtcbm5ldC9tYWM4MDIxMS9yeC5jOjUzMjA6XHRcdH0gZWxzZSBpZiAoaWVlZTgwMjExX3ZpZl9pc19tbGQoXHUwMDI2cngtXHUwMDNlc2RhdGEtXHUwMDNldmlmKSBcdTAwMjZcdTAwMjZcbm5ldC9tYWM4MDIxMS9yeC5jLTUzMjEtXHRcdFx0ICAgc3RhdHVzLVx1MDAzZWZyZXEpIHtcbi0tXG5uZXQvbWFjODAyMTEvc2Nhbi5jPTE2OD1pZWVlODAyMTFfYnNzX2luZm9fdXBkYXRlKHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsLFxuLS1cbm5ldC9tYWM4MDIxMS9zY2FuLmMtMjA1LVx0XHQgKi9cbm5ldC9tYWM4MDIxMS9zY2FuLmM6MjA2Olx0XHRpZiAoaWVlZTgwMjExX3ZpZl9pc19tbGQoXHUwMDI2c2Nhbl9zZGF0YS1cdTAwM2V2aWYpKSB7XG5uZXQvbWFjODAyMTEvc2Nhbi5jLTIwNy1cdFx0XHRpZiAocnhfc3RhdHVzLVx1MDAzZWxpbmtfdmFsaWQpIHtcbi0tXG5uZXQvbWFjODAyMTEvc2Nhbi5jPTczMT1zdGF0aWMgaW50IF9faWVlZTgwMjExX3N0YXJ0X3NjYW4oc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsXG4tLVxubmV0L21hYzgwMjExL3NjYW4uYy03NDUtXHQgKi9cbm5ldC9tYWM4MDIxMS9zY2FuLmM6NzQ2Olx0aWYgKGllZWU4MDIxMV92aWZfaXNfbWxkKFx1MDAyNnNkYXRhLVx1MDAzZXZpZikgXHUwMDI2XHUwMDI2IHJlcS1cdTAwM2V0c2ZfcmVwb3J0X2xpbmtfaWQgXHUwMDNlPSAwIFx1MDAyNlx1MDAyNlxubmV0L21hYzgwMjExL3NjYW4uYy03NDctXHQgICAgIShzZGF0YS1cdTAwM2V2aWYuYWN0aXZlX2xpbmtzIFx1MDAyNiBCSVQocmVxLVx1MDAzZXRzZl9yZXBvcnRfbGlua19pZCkpKVxuLS1cbm5ldC9tYWM4MDIxMS90eC5jPTgyMD1pZWVlODAyMTFfdHhfaF9zZXF1ZW5jZShzdHJ1Y3QgaWVlZTgwMjExX3R4X2RhdGEgKnR4KVxuLS1cbm5ldC9tYWM4MDIxMS90eC5jLTg0Ny1cdGlmICh1bmxpa2VseShpc19tdWx0aWNhc3RfZXRoZXJfYWRkcihoZHItXHUwMDNlYWRkcjEpIFx1MDAyNlx1MDAyNlxubmV0L21hYzgwMjExL3R4LmM6ODQ4Olx0XHQgICAgIGllZWU4MDIxMV92aWZfaXNfbWxkKGluZm8tXHUwMDNlY29udHJvbC52aWYpIFx1MDAyNlx1MDAyNlxubmV0L21hYzgwMjExL3R4LmMtODQ5LVx0XHQgICAgIGluZm8tXHUwMDNlY29udHJvbC52aWYtXHUwMDNldHlwZSA9PSBOTDgwMjExX0lGVFlQRV9BUCkpIHtcbi0tXG5uZXQvbWFjODAyMTEvdHguYz0yNjMxPXN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqaWVlZTgwMjExX2J1aWxkX2hkcihzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSxcbi0tXG5uZXQvbWFjODAyMTEvdHguYy0yNjY3LVxubmV0L21hYzgwMjExL3R4LmM6MjY2ODpcdGlmICghaWVlZTgwMjExX3ZpZl9pc19tbGQoXHUwMDI2c2RhdGEtXHUwMDNldmlmKSlcbm5ldC9tYWM4MDIxMS90eC5jLTI2NjktXHRcdGNoYW5jdHhfY29uZiA9XG4tLVxubmV0L21hYzgwMjExL3R4LmMtMjY4NC1cdFx0fVxubmV0L21hYzgwMjExL3R4LmM6MjY4NTpcdFx0aWYgKCFpZWVlODAyMTFfdmlmX2lzX21sZChcdTAwMjZzZGF0YS1cdTAwM2V2aWYpKSB7XG5uZXQvbWFjODAyMTEvdHguYy0yNjg2LVx0XHRcdHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKmFwX3NkYXRhO1xuLS1cbm5ldC9tYWM4MDIxMS90eC5jLTI3MDItXG5uZXQvbWFjODAyMTEvdHguYzoyNzAzOlx0XHRpZiAoaWVlZTgwMjExX3ZpZl9pc19tbGQoXHUwMDI2c2RhdGEtXHUwMDNldmlmKSBcdTAwMjZcdTAwMjYgc3RhIFx1MDAyNlx1MDAyNiAhc3RhLVx1MDAzZXN0YS5tbG8pIHtcbm5ldC9tYWM4MDIxMS90eC5jLTI3MDQtXHRcdFx0c3RydWN0IGllZWU4MDIxMV9saW5rX2RhdGEgKmxpbms7XG4tLVxubmV0L21hYzgwMjExL3R4LmMtMjg4MS1cdFx0XHRiYW5kID0gTlVNX05MODAyMTFfQkFORFM7XG5uZXQvbWFjODAyMTEvdHguYzoyODgyOlx0XHR9IGVsc2UgaWYgKCFpZWVlODAyMTFfdmlmX2lzX21sZChcdTAwMjZzZGF0YS1cdTAwM2V2aWYpKSB7XG5uZXQvbWFjODAyMTEvdHguYy0yODgzLVx0XHRcdHJldCA9IC1FTk9UQ09OTjtcbi0tXG5uZXQvbWFjODAyMTEvdHguYz0zMDc4PXZvaWQgaWVlZTgwMjExX2NoZWNrX2Zhc3RfeG1pdChzdHJ1Y3Qgc3RhX2luZm8gKnN0YSlcbi0tXG5uZXQvbWFjODAyMTEvdHguYy0zMTI3LVxubmV0L21hYzgwMjExL3R4LmM6MzEyODpcdGlmICghaWVlZTgwMjExX3ZpZl9pc19tbGQoXHUwMDI2c2RhdGEtXHUwMDNldmlmKSkge1xubmV0L21hYzgwMjExL3R4LmMtMzEyOS1cdFx0cmN1X3JlYWRfbG9jaygpO1xuLS1cbm5ldC9tYWM4MDIxMS90eC5jLTMyMDYtXHRcdGJ1aWxkLmRhX29mZnMgPSBvZmZzZXRvZihzdHJ1Y3QgaWVlZTgwMjExX2hkciwgYWRkcjEpO1xubmV0L21hYzgwMjExL3R4LmM6MzIwNzpcdFx0aWYgKHN0YS1cdTAwM2VzdGEubWxvIHx8ICFpZWVlODAyMTFfdmlmX2lzX21sZChcdTAwMjZzZGF0YS1cdTAwM2V2aWYpKSB7XG5uZXQvbWFjODAyMTEvdHguYy0zMjA4LVx0XHRcdG1lbWNweShoZHItXHUwMDNlYWRkcjIsIHNkYXRhLVx1MDAzZXZpZi5hZGRyLCBFVEhfQUxFTik7XG4tLVxubmV0L21hYzgwMjExL3R4LmM9NDU2MT1uZXRkZXZfdHhfdCBpZWVlODAyMTFfc3ViaWZfc3RhcnRfeG1pdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuLS1cbm5ldC9tYWM4MDIxMS90eC5jLTQ1ODMtXHRcdFx0XHRcdFx0ICAgICBOVUxMKTtcbm5ldC9tYWM4MDIxMS90eC5jOjQ1ODQ6XHR9IGVsc2UgaWYgKGllZWU4MDIxMV92aWZfaXNfbWxkKFx1MDAyNnNkYXRhLVx1MDAzZXZpZikgXHUwMDI2XHUwMDI2XG5uZXQvbWFjODAyMTEvdHguYy00NTg1LVx0XHQgICAoKHNkYXRhLVx1MDAzZXZpZi50eXBlID09IE5MODAyMTFfSUZUWVBFX0FQIFx1MDAyNlx1MDAyNlxuLS1cbm5ldC9tYWM4MDIxMS90eC5jPTQ3NTE9c3RhdGljIGJvb2wgaWVlZTgwMjExX2NoZWNrX21jYXN0X29mZmxvYWQoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsXG4tLVxubmV0L21hYzgwMjExL3R4LmMtNDc1NS1cbm5ldC9tYWM4MDIxMS90eC5jOjQ3NTY6XHRpZiAoKGllZWU4MDIxMV92aWZfaXNfbWxkKFx1MDAyNnNkYXRhLVx1MDAzZXZpZikgXHUwMDI2XHUwMDI2XG5uZXQvbWFjODAyMTEvdHguYy00NzU3LVx0ICAgICAoc2RhdGEtXHUwMDNldmlmLnR5cGUgPT0gTkw4MDIxMV9JRlRZUEVfQVAgXHUwMDI2XHUwMDI2XG4tLVxubmV0L21hYzgwMjExL3R4LmM9NDkxMT1zdGF0aWMgYm9vbCBpZWVlODAyMTFfdHhfcGVuZGluZ19za2Ioc3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwsXG4tLVxubmV0L21hYzgwMjExL3R4LmMtNDkyNC1cdFx0LyogdXBkYXRlIGJhbmQgb25seSBmb3Igbm9uLU1MRCAqL1xubmV0L21hYzgwMjExL3R4LmM6NDkyNTpcdFx0aWYgKCFpZWVlODAyMTFfdmlmX2lzX21sZChcdTAwMjZzZGF0YS1cdTAwM2V2aWYpKSB7XG5uZXQvbWFjODAyMTEvdHguYy00OTI2LVx0XHRcdGNoYW5jdHhfY29uZiA9XG4tLVxubmV0L21hYzgwMjExL3R4LmM9NjM5Nj12b2lkIF9faWVlZTgwMjExX3R4X3NrYl90aWRfYmFuZChzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSxcbi0tXG5uZXQvbWFjODAyMTEvdHguYy02NDEzLVxubmV0L21hYzgwMjExL3R4LmM6NjQxNDpcdGlmICghaWVlZTgwMjExX3ZpZl9pc19tbGQoXHUwMDI2c2RhdGEtXHUwMDNldmlmKSkge1xubmV0L21hYzgwMjExL3R4LmMtNjQxNS1cdFx0bGluayA9IDA7XG4tLVxubmV0L21hYzgwMjExL3R4LmM9NjQ1Mz12b2lkIGllZWU4MDIxMV90eF9za2JfdGlkKHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLFxuLS1cbm5ldC9tYWM4MDIxMS90eC5jLTY0NjItXHRcdGJhbmQgPSBOVU1fTkw4MDIxMV9CQU5EUztcbm5ldC9tYWM4MDIxMS90eC5jOjY0NjM6XHR9IGVsc2UgaWYgKCFpZWVlODAyMTFfdmlmX2lzX21sZChcdTAwMjZzZGF0YS1cdTAwM2V2aWYpKSB7XG5uZXQvbWFjODAyMTEvdHguYy02NDY0LVx0XHRXQVJOX09OKGxpbmtfaWQgXHUwMDNlPSAwKTtcbi0tXG5uZXQvbWFjODAyMTEvdXRpbC5jPTExMzQ9dm9pZCBpZWVlODAyMTFfc2VuZF9hdXRoKHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLFxuLS1cbm5ldC9tYWM4MDIxMS91dGlsLmMtMTE0Mi1cdHN0cnVjdCBpZWVlODAyMTFfbWdtdCAqbWdtdDtcbm5ldC9tYWM4MDIxMS91dGlsLmM6MTE0MzpcdGJvb2wgbXVsdGlfbGluayA9IGllZWU4MDIxMV92aWZfaXNfbWxkKFx1MDAyNnNkYXRhLVx1MDAzZXZpZik7XG5uZXQvbWFjODAyMTEvdXRpbC5jLTExNDQtXHRzdHJ1Y3Qge1xuLS1cbm5ldC9tYWM4MDIxMS91dGlsLmM9MTg4Mj1pbnQgaWVlZTgwMjExX3JlY29uZmlnKHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsKVxuLS1cbm5ldC9tYWM4MDIxMS91dGlsLmMtMjA3MS1cbm5ldC9tYWM4MDIxMS91dGlsLmM6MjA3MjpcdFx0aWYgKGllZWU4MDIxMV92aWZfaXNfbWxkKFx1MDAyNnNkYXRhLVx1MDAzZXZpZikpIHtcbm5ldC9tYWM4MDIxMS91dGlsLmMtMjA3My1cdFx0XHRzdHJ1Y3QgaWVlZTgwMjExX2Jzc19jb25mICpvbGRbSUVFRTgwMjExX01MRF9NQVhfTlVNX0xJTktTXSA9IHtcbi0tXG5uZXQvbWFjODAyMTEvdXRpbC5jLTIxMjgtXG5uZXQvbWFjODAyMTEvdXRpbC5jOjIxMjk6XHRcdGlmICghaWVlZTgwMjExX3ZpZl9pc19tbGQoXHUwMDI2c2RhdGEtXHUwMDNldmlmKSlcbm5ldC9tYWM4MDIxMS91dGlsLmMtMjEzMC1cdFx0XHRjaGFuZ2VkIHw9IEJTU19DSEFOR0VEX0lETEU7XG4tLVxubmV0L21hYzgwMjExL3V0aWwuYy0yMTMzLVx0XHRjYXNlIE5MODAyMTFfSUZUWVBFX1NUQVRJT046XG5uZXQvbWFjODAyMTEvdXRpbC5jOjIxMzQ6XHRcdFx0aWYgKCFpZWVlODAyMTFfdmlmX2lzX21sZChcdTAwMjZzZGF0YS1cdTAwM2V2aWYpKSB7XG5uZXQvbWFjODAyMTEvdXRpbC5jLTIxMzUtXHRcdFx0XHRjaGFuZ2VkIHw9IEJTU19DSEFOR0VEX0FTU09DIHxcbi0tXG5uZXQvbWFjODAyMTEvdXRpbC5jLTIxNzEtXG5uZXQvbWFjODAyMTEvdXRpbC5jOjIxNzI6XHRcdFx0aWYgKGllZWU4MDIxMV92aWZfaXNfbWxkKFx1MDAyNnNkYXRhLVx1MDAzZXZpZikpXG5uZXQvbWFjODAyMTEvdXRpbC5jLTIxNzMtXHRcdFx0XHRpZWVlODAyMTFfdmlmX2NmZ19jaGFuZ2Vfbm90aWZ5KHNkYXRhLFxuLS1cbm5ldC9tYWM4MDIxMS91dGlsLmMtMjE4NS1cbm5ldC9tYWM4MDIxMS91dGlsLmM6MjE4NjpcdFx0XHRcdGlmIChpZWVlODAyMTFfdmlmX2lzX21sZChcdTAwMjZzZGF0YS1cdTAwM2V2aWYpKSB7XG5uZXQvbWFjODAyMTEvdXRpbC5jLTIxODctXHRcdFx0XHRcdGllZWU4MDIxMV9yZWNvbmZpZ19hcF9saW5rcyhsb2NhbCxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjIgMTc6NTI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTg3OTEKCQkJCQkJCW91dHB1dDogMzMKCQkJCQkJCXRob3VnaHRzOiA0NQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0JiMzOTtzIGludGVybmFsIG1vbm9sb2d1ZToKCioqSW52ZXN0aWdhdGluZyB0aGUgTUxPIExpbmsqKgoKQWxyaWdodCwgc28gYGllZWU4MDIxMV92aWZfaXNfbWxkYC4uLiB0aGF0IHNlZW1zIHByZXR0eSBjbGVhcmx5IHRpZWQgdG8gTXVsdGktTGluayBPcGVyYXRpb24sIHJpZ2h0PyBObyBzdXJwcmlzZXMgdGhlcmUuIEJ1dCBJIG5lZWQgdG8gZ2V0IGEgYmV0dGVyIGhhbmRsZSBvbiB0aGUgc3BlY2lmaWNzIG9mIHRoaXMgaW1wbGVtZW50YXRpb24uIFRoZSBxdWVzdGlvbiB0aGF0IHJlYWxseSBqdW1wcyBvdXQgaXMsIGlzIHRoZXJlIGEgZGVkaWNhdGVkIGNvbmZpZ3VyYXRpb24gZmxhZyBvciBzZXR0aW5nIHNwZWNpZmljYWxseSBkZWRpY2F0ZWQgdG8gTUxPIHRoYXQgSSBuZWVkIHRvIGJlIGF3YXJlIG9mPyBJIG5lZWQgdG8gY2hlY2sgdGhlIHJlbGV2YW50IGNvbmZpZ3VyYXRpb24gZmlsZXMsIG1heWJlIHNvbWUga2VybmVsIGRvY3VtZW50YXRpb24sIGFuZCB0aGUgYnJvYWRlciB3aXJlbGVzcyBkcml2ZXIgY29kZWJhc2UuIEkmIzM5O20gZ29pbmcgdG8gZGlnIGluIGFuZCBzZWUgd2hhdCBjb25maWd1cmF0aW9uIHBhcmFtZXRlcnMgbWlnaHQgYmUgaW1wYWN0aW5nIHRoaXMgZnVuY3Rpb24sIG9yIGV2ZW4gdXRpbGl6aW5nIHRoZSBmdW5jdGlvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjIgMTc6NTM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtNTE8mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbWFjODAyMTEvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIyIDE3OjUzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE5MDQxCgkJCQkJCQlvdXRwdXQ6IDE1NQoJCQkJCQkJdGhvdWdodHM6IDQ2NwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBc3Nlc3NtZW50IG9mIHRoZSBtYWM4MDIxMSBQYXRjaCoqCgpPa2F5LCBzbyB0aGVyZSYjMzk7cyBubyBzcGVjaWZpYyBjb25maWd1cmF0aW9uIGl0ZW0gZGlyZWN0bHkgcmVsYXRlZCB0byBNTE8gaW4gbWFjODAyMTEsIHdoaWNoIGlzbiYjMzk7dCBhIHN1cnByaXNlLiBUaGF0IGJlaW5nIHNhaWQsIEkmIzM5O3ZlIHJldmlld2VkIHRoaXMgcGF0Y2gsIGFuZCBJJiMzOTttIHByZXR0eSBjb25maWRlbnQgaXQmIzM5O3MgZnVuY3Rpb25hbCBhbmQgYWJzb2x1dGVseSB3b3J0aCBmdXp6aW5nLiBJJiMzOTt2ZSBwaW5wb2ludGVkIGEgZmV3IGZvY3VzIHN5bWJvbHMgZm9yIHRoZSBmdXp6aW5nIGNhbXBhaWduOiBgc3RhX2FwcGx5X2F1dGhfZmxhZ3NgLCBgc3RhX2FwcGx5X3BhcmFtZXRlcnNgLCBgaWVlZTgwMjExX2FkZF9zdGF0aW9uYCwgYW5kIGBpZWVlODAyMTFfY2hhbmdlX3N0YXRpb25gLiBJbml0aWFsbHksIEkgd2FzIGEgYml0IGNvbmNlcm5lZCBhYm91dCBpbmNsdWRpbmcgYHN0YV9hcHBseV9hdXRoX2ZsYWdzYCBiZWNhdXNlIGl0JiMzOTtzIGEgc3RhdGljIGZ1bmN0aW9uLCBidXQgaXQmIzM5O3MgZmluZS4KCk5vdywgYSBxdWljayBjaGVjayB0byBzZWUgaWYgd2UmIzM5O3ZlIGdvdCB0aGUgbmVjZXNzYXJ5IGNvbmZpZ3VyYXRpb24gaXMgaW4gb3JkZXIuIFllYWgsIGBNQUM4MDIxMWAgYWxvbmUgd2lsbCBzdWZmaWNlIGZvciB0aGlzIHBhdGNoLgoKTGV0IG1lIGp1c3QgZG91YmxlLWNoZWNrIHRoZSBjb2RlIHNuaXBwZXQgYWdhaW46CgpgYGBjCgkJaWYgKCF0ZXN0X3N0YV9mbGFnKHN0YSwgV0xBTl9TVEFfUkFURV9DT05UUk9MKSkgewoJCQlpZiAoIWllZWU4MDIxMV92aWZfaXNfbWxkKCZhbXA7c3RhLSZndDtzZGF0YS0mZ3Q7dmlmKSAmYW1wOyZhbXA7CgkJCSAgICAhcmN1X2FjY2Vzc19wb2ludGVyKHN0YS0mZ3Q7c2RhdGEtJmd0O3ZpZi5ic3NfY29uZi5jaGFuY3R4X2NvbmYpKQoJCQkJcmV0dXJuIC1FSU5WQUw7CgoJCQlyYXRlX2NvbnRyb2xfcmF0ZV9pbml0X2FsbF9saW5rcyhzdGEpOwoJCX0KYGBgCgpSaWdodCwgaXQmIzM5O3MgYSBtaW5vciBidWcgZml4LiBJdCBpbnRyb2R1Y2VzIGEgY2hlY2sgdGhhdCByZXR1cm5zIGAtRUlOVkFMYCBpZiBgY2hhbmN0eF9jb25mYCBpcyBOVUxMIGZvciBub24tTUxEIGludGVyZmFjZXMgd2hlbiByYXRlIGNvbnRyb2wgaXNuJiMzOTt0IGluaXRpYWxpemVkLiBUaGlzIGlzIGFsbCBhYm91dCBwcmV2ZW50aW5nIGEgcG90ZW50aWFsIE5VTEwgcG9pbnRlciBkZXJlZmVyZW5jZSBvciBhIHNpbWlsYXIgaXNzdWUgZG93biB0aGUgbGluZSwgc3BlY2lmaWNhbGx5IGluIGByYXRlX2NvbnRyb2xfcmF0ZV9pbml0X2FsbF9saW5rc2Agb3IgcmVsYXRlZCBmdW5jdGlvbnMuIFRoaXMgaXMgYSBzdWJ0bGUgYnV0IGltcG9ydGFudCBwaWVjZSBvZiB2YWxpZGF0aW9uLgoKU28sIGhlcmUmIzM5O3Mgd2hhdCBJJiMzOTttIGdvaW5nIHRvIHNldDoKCiogICAqKldvcnRoRnV6emluZyoqOiBgdHJ1ZWAKKiAgICoqRm9jdXNTeW1ib2xzKio6IGBbJiMzNDtzdGFfYXBwbHlfYXV0aF9mbGFncyYjMzQ7LCAmIzM0O3N0YV9hcHBseV9wYXJhbWV0ZXJzJiMzNDssICYjMzQ7aWVlZTgwMjExX2FkZF9zdGF0aW9uJiMzNDssICYjMzQ7aWVlZTgwMjExX2NoYW5nZV9zdGF0aW9uJiMzNDtdYAoqICAgKipFbmFibGVDb25maWdzKio6IGBbJiMzNDtNQUM4MDIxMSYjMzQ7XWAKKiAgICoqUmVhc29uaW5nKio6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgYSBjcnVjaWFsIHZhbGlkYXRpb24gY2hlY2sgaW4gYHN0YV9hcHBseV9hdXRoX2ZsYWdzYCB0byBwcmV2ZW50IGFuIGludmFsaWQgc3RhdGUgd2hlbiByYXRlIGNvbnRyb2wgaXMgbm90IGluaXRpYWxpemVkIGZvciBub24tTUxEIGludGVyZmFjZXMuIFRoaXMgZnVuY3Rpb25hbGl0eSBpcyBhY2Nlc3NpYmxlIHZpYSBubDgwMjExIGNvbW1hbmRzLCBzdWNoIGFzIGBORVdfU1RBVElPTmAgYW5kIGBTRVRfU1RBVElPTmAsIGFuZCBtb2RpZmllcyBjb3JlIG1hYzgwMjExIGxvZ2ljLiBUaGlzIG1lYW5zIHRoYXQsIGRlc3BpdGUgdGhlIGFwcGFyZW50IHNpbXBsaWNpdHksIGZ1enppbmcgaXMgdmVyeSB2YWx1YWJsZSBoZXJlLiYjMzQ7CgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIyIDE3OjUzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtNQUM4MDIxMSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3N0YV9hcHBseV9hdXRoX2ZsYWdzJiMzNDssCiAgICAmIzM0O3N0YV9hcHBseV9wYXJhbWV0ZXJzJiMzNDssCiAgICAmIzM0O2llZWU4MDIxMV9hZGRfc3RhdGlvbiYjMzQ7LAogICAgJiMzNDtpZWVlODAyMTFfY2hhbmdlX3N0YXRpb24mIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBhIHZhbGlkYXRpb24gY2hlY2sgaW4gYHN0YV9hcHBseV9hdXRoX2ZsYWdzYCB0byBwcmV2ZW50IGFuIGludmFsaWQgc3RhdGUgd2hlbiByYXRlIGNvbnRyb2wgaXMgbm90IGluaXRpYWxpemVkIGZvciBub24tTUxEIGludGVyZmFjZXMuIFRoaXMgaXMgcmVhY2hhYmxlIHZpYSBubDgwMjExIGNvbW1hbmRzIChlLmcuLCBORVdfU1RBVElPTiwgU0VUX1NUQVRJT04pIGFuZCBtb2RpZmllcyBjb3JlIG1hYzgwMjExIGxvZ2ljLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtNQUM4MDIxMSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3N0YV9hcHBseV9hdXRoX2ZsYWdzJiMzNDssCiAgICAmIzM0O3N0YV9hcHBseV9wYXJhbWV0ZXJzJiMzNDssCiAgICAmIzM0O2llZWU4MDIxMV9hZGRfc3RhdGlvbiYjMzQ7LAogICAgJiMzNDtpZWVlODAyMTFfY2hhbmdlX3N0YXRpb24mIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBhIHZhbGlkYXRpb24gY2hlY2sgaW4gYHN0YV9hcHBseV9hdXRoX2ZsYWdzYCB0byBwcmV2ZW50IGFuIGludmFsaWQgc3RhdGUgd2hlbiByYXRlIGNvbnRyb2wgaXMgbm90IGluaXRpYWxpemVkIGZvciBub24tTUxEIGludGVyZmFjZXMuIFRoaXMgaXMgcmVhY2hhYmxlIHZpYSBubDgwMjExIGNvbW1hbmRzIChlLmcuLCBORVdfU1RBVElPTiwgU0VUX1NUQVRJT04pIGFuZCBtb2RpZmllcyBjb3JlIG1hYzgwMjExIGxvZ2ljLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDctMjJUMTc6NTI6MjAuNzQwNTAxOTUxWiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTY3NTczNTk5NjUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTUFDODAyMTFcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJzdGFfYXBwbHlfYXV0aF9mbGFnc1wiLFxuICAgIFwic3RhX2FwcGx5X3BhcmFtZXRlcnNcIixcbiAgICBcImllZWU4MDIxMV9hZGRfc3RhdGlvblwiLFxuICAgIFwiaWVlZTgwMjExX2NoYW5nZV9zdGF0aW9uXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBhIHZhbGlkYXRpb24gY2hlY2sgaW4gYHN0YV9hcHBseV9hdXRoX2ZsYWdzYCB0byBwcmV2ZW50IGFuIGludmFsaWQgc3RhdGUgd2hlbiByYXRlIGNvbnRyb2wgaXMgbm90IGluaXRpYWxpemVkIGZvciBub24tTUxEIGludGVyZmFjZXMuIFRoaXMgaXMgcmVhY2hhYmxlIHZpYSBubDgwMjExIGNvbW1hbmRzIChlLmcuLCBORVdfU1RBVElPTiwgU0VUX1NUQVRJT04pIGFuZCBtb2RpZmllcyBjb3JlIG1hYzgwMjExIGxvZ2ljLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yMlQxNzo1MjoyMC43NDA1MDgyNDFaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjYyMzc2Njg1OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IGI3MzM3NGRmMzg0M2E4Mzk4ZWEyNDUxOGExMzMxNzYwMjY4YTk1MGJcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFdlZCBKdWwgMjIgMTc6NTI6MTggMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvbmV0L21hYzgwMjExL2NmZy5jIGIvbmV0L21hYzgwMjExL2NmZy5jXFxuaW5kZXggM2I1OGFmNTlmN2U0MjkuLjgzMGM5ZmM5NWRmMjI4IDEwMDY0NFxcbi0tLSBhL25ldC9tYWM4MDIxMS9jZmcuY1xcbisrKyBiL25ldC9tYWM4MDIxMS9jZmcuY1xcbkBAIC0yMTQ4LDggKzIxNDgsMTMgQEAgc3RhdGljIGludCBzdGFfYXBwbHlfYXV0aF9mbGFncyhzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbCxcXG4gXFx0XFx0ICogd2VsbC4gU29tZSBkcml2ZXJzIHJlcXVpcmUgcmF0ZSBjb250cm9sIGluaXRpYWxpemVkXFxuIFxcdFxcdCAqIGJlZm9yZSBkcnZfc3RhX3N0YXRlKCkgaXMgY2FsbGVkLlxcbiBcXHRcXHQgKi9cXG4tXFx0XFx0aWYgKCF0ZXN0X3N0YV9mbGFnKHN0YSwgV0xBTl9TVEFfUkFURV9DT05UUk9MKSlcXG4rXFx0XFx0aWYgKCF0ZXN0X3N0YV9mbGFnKHN0YSwgV0xBTl9TVEFfUkFURV9DT05UUk9MKSkge1xcbitcXHRcXHRcXHRpZiAoIWllZWU4MDIxMV92aWZfaXNfbWxkKFxcdTAwMjZzdGEtXFx1MDAzZXNkYXRhLVxcdTAwM2V2aWYpIFxcdTAwMjZcXHUwMDI2XFxuK1xcdFxcdFxcdCAgICAhcmN1X2FjY2Vzc19wb2ludGVyKHN0YS1cXHUwMDNlc2RhdGEtXFx1MDAzZXZpZi5ic3NfY29uZi5jaGFuY3R4X2NvbmYpKVxcbitcXHRcXHRcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4rXFxuIFxcdFxcdFxcdHJhdGVfY29udHJvbF9yYXRlX2luaXRfYWxsX2xpbmtzKHN0YSk7XFxuK1xcdFxcdH1cXG4gXFxuIFxcdFxcdHJldCA9IHN0YV9pbmZvX21vdmVfc3RhdGUoc3RhLCBJRUVFODAyMTFfU1RBX0FTU09DKTtcXG4gXFx0XFx0aWYgKHJldClcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjJUMTc6NTI6MjEuMzY1MzgxOTg5WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6NTYxMzI0NjUyOTYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTUFDODAyMTFcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJzdGFfYXBwbHlfYXV0aF9mbGFnc1wiLFxuICAgIFwic3RhX2FwcGx5X3BhcmFtZXRlcnNcIixcbiAgICBcImllZWU4MDIxMV9hZGRfc3RhdGlvblwiLFxuICAgIFwiaWVlZTgwMjExX2NoYW5nZV9zdGF0aW9uXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBhIHZhbGlkYXRpb24gY2hlY2sgaW4gYHN0YV9hcHBseV9hdXRoX2ZsYWdzYCB0byBwcmV2ZW50IGFuIGludmFsaWQgc3RhdGUgd2hlbiByYXRlIGNvbnRyb2wgaXMgbm90IGluaXRpYWxpemVkIGZvciBub24tTUxEIGludGVyZmFjZXMuIFRoaXMgaXMgcmVhY2hhYmxlIHZpYSBubDgwMjExIGNvbW1hbmRzIChlLmcuLCBORVdfU1RBVElPTiwgU0VUX1NUQVRJT04pIGFuZCBtb2RpZmllcyBjb3JlIG1hYzgwMjExIGxvZ2ljLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG5ldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0XG4gICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksXG4gICBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IGI3MzM3NGRmMzg0M2E4Mzk4ZWEyNDUxOGExMzMxNzYwMjY4YTk1MGJcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgV2VkIEp1bCAyMiAxNzo1MjoxOCAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL25ldC9tYWM4MDIxMS9jZmcuYyBiL25ldC9tYWM4MDIxMS9jZmcuY1xuaW5kZXggM2I1OGFmNTlmN2U0MjkuLjgzMGM5ZmM5NWRmMjI4IDEwMDY0NFxuLS0tIGEvbmV0L21hYzgwMjExL2NmZy5jXG4rKysgYi9uZXQvbWFjODAyMTEvY2ZnLmNcbkBAIC0yMTQ4LDggKzIxNDgsMTMgQEAgc3RhdGljIGludCBzdGFfYXBwbHlfYXV0aF9mbGFncyhzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbCxcbiBcdFx0ICogd2VsbC4gU29tZSBkcml2ZXJzIHJlcXVpcmUgcmF0ZSBjb250cm9sIGluaXRpYWxpemVkXG4gXHRcdCAqIGJlZm9yZSBkcnZfc3RhX3N0YXRlKCkgaXMgY2FsbGVkLlxuIFx0XHQgKi9cbi1cdFx0aWYgKCF0ZXN0X3N0YV9mbGFnKHN0YSwgV0xBTl9TVEFfUkFURV9DT05UUk9MKSlcbitcdFx0aWYgKCF0ZXN0X3N0YV9mbGFnKHN0YSwgV0xBTl9TVEFfUkFURV9DT05UUk9MKSkge1xuK1x0XHRcdGlmICghaWVlZTgwMjExX3ZpZl9pc19tbGQoXHUwMDI2c3RhLVx1MDAzZXNkYXRhLVx1MDAzZXZpZikgXHUwMDI2XHUwMDI2XG4rXHRcdFx0ICAgICFyY3VfYWNjZXNzX3BvaW50ZXIoc3RhLVx1MDAzZXNkYXRhLVx1MDAzZXZpZi5ic3NfY29uZi5jaGFuY3R4X2NvbmYpKVxuK1x0XHRcdFx0cmV0dXJuIC1FSU5WQUw7XG4rXG4gXHRcdFx0cmF0ZV9jb250cm9sX3JhdGVfaW5pdF9hbGxfbGlua3Moc3RhKTtcbitcdFx0fVxuIFxuIFx0XHRyZXQgPSBzdGFfaW5mb19tb3ZlX3N0YXRlKHN0YSwgSUVFRTgwMjExX1NUQV9BU1NPQyk7XG4gXHRcdGlmIChyZXQpXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yMlQxNzo1MjoyMS4zNjUzODU0MTlaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2NjU3OTQwNTc2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIFZ1bG5lcmFiaWxpdHkgaW4gYG5ldC9tYWM4MDIxMWAqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGluIGBuZXQvbWFjODAyMTEvY2ZnLmNgLiBJdCBzZWVtcyB0aGV5J3ZlIGFkZGVkIGEgY2hlY2sgd2l0aGluIHRoZSBgc3RhX2FwcGx5X2F1dGhfZmxhZ3NgIGZ1bmN0aW9uLiBTcGVjaWZpY2FsbHksIGl0J3MgY2hlY2tpbmcgdGhlIGBXTEFOX1NUQV9SQVRFX0NPTlRST0xgIGZsYWcgb24gYSBzdGF0aW9uIChgc3RhYCkuIE15IGZpcnN0IGluc3RpbmN0IGlzIHRvIHVuZGVyc3RhbmQgdGhlIGNvbnRleHQuIGBtYWM4MDIxMWAgaXMgbm90b3Jpb3VzbHkgd2VsbC1mdXp6ZWQsIHBhcnRpY3VsYXJseSB3aXRoIGBtYWM4MDIxMV9od3NpbWAsIHNvIGFueSBjaGFuZ2VzIGhlcmUgaW1tZWRpYXRlbHkgZ3JhYiBteSBhdHRlbnRpb24uXG5cblRoZSBuZXcgY29kZSBibG9jayBpcyBpbnRlcmVzdGluZzogaWYgdGhlIGBXTEFOX1NUQV9SQVRFX0NPTlRST0xgIGZsYWcgaXNuJ3Qgc2V0LCB0aGVuIGEgY2hlY2sgaXMgcGVyZm9ybWVkLiBJZiB0aGUgVmlydHVhbCBJbnRlcmZhY2UgKGB2aWZgKSBpc24ndCBhIE1lc2ggTG9jYWwgRGVjaXNpb24gKE1MRCkgaW50ZXJmYWNlLCBhbmQgdGhlcmUgaXMgbm8gY2hhbm5lbCBjb250ZXh0IGNvbmZpZ3VyYXRpb24gYXR0YWNoZWQsIHRoZW4gaXQgcmV0dXJucyBgLUVJTlZBTGAuIE90aGVyd2lzZSwgaXQgcHJvY2VlZHMgdG8gaW5pdGlhbGl6ZSB0aGUgcmF0ZSBjb250cm9sIHZpYSBgcmF0ZV9jb250cm9sX3JhdGVfaW5pdF9hbGxfbGlua3NgLlxuXG5NeSBpbW1lZGlhdGUgcXVlc3Rpb24gaXM6IHdoYXQgc2NlbmFyaW9zIHRyaWdnZXIgdGhpcyBzcGVjaWZpYyBjb2RlIHBhdGg/IEFuZCB3aGF0IGFyZSB0aGUgaW1wbGljYXRpb25zIG9mIHRoZSBgLUVJTlZBTGAgcmV0dXJuPyBXZSBuZWVkIHRvIGRpZyBpbnRvIHRoZSBzdXJyb3VuZGluZyBjb2RlIGluIGBzdGFfYXBwbHlfYXV0aF9mbGFnc2AgdG8gZnVsbHkgdW5kZXJzdGFuZCB3aGF0J3MgaGFwcGVuaW5nIGFuZCBob3cgdGhpcyBjb25kaXRpb24gY2FuIGJlIG1ldC4gSSdtIGdvaW5nIHRvIGNhcmVmdWxseSBhbmFseXplIHRoZSBjYWxsIHNpdGVzIGFuZCByZWxhdGVkIGRhdGEgc3RydWN0dXJlcyB0byBnZXQgYSBjb21wbGV0ZSBwaWN0dXJlLiBUaGlzIGAtRUlOVkFMYCBjb3VsZCBiZSBhIHZ1bG5lcmFiaWxpdHkgbWl0aWdhdGlvbiwgb3IgaXQgY291bGQgcG90ZW50aWFsbHkgaW50cm9kdWNlIHVuZXhwZWN0ZWQgYmVoYXZpb3IuIFRoZSBpbml0aWFsaXphdGlvbiBvZiB0aGUgcmF0ZSBjb250cm9sIGlzIG9idmlvdXNseSBhbiBpbXBvcnRhbnQgYXNwZWN0IHRoYXQgSSdsbCBuZWVkIHRvIGV4cGxvcmUgYXMgd2VsbC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjAyOCwiT3V0cHV0VG9rZW5zIjozOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIxNywiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIyVDE3OjUyOjI4LjAyMzMzMTk1NVoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozMDMyNzkzMTksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwic3RhX2FwcGx5X2F1dGhfZmxhZ3NcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L21hYzgwMjExL2NmZy5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9tYWM4MDIxMS9jZmcuYz0yMDEwPXN0YXRpYyBpbnQgaWVlZTgwMjExX3N0b3BfYXAoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG4tLVxcbm5ldC9tYWM4MDIxMS9jZmcuYy0yMTI4LVxcbm5ldC9tYWM4MDIxMS9jZmcuYzoyMTI5OnN0YXRpYyBpbnQgc3RhX2FwcGx5X2F1dGhfZmxhZ3Moc3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwsXFxubmV0L21hYzgwMjExL2NmZy5jLTIxMzAtXFx0XFx0XFx0XFx0c3RydWN0IHN0YV9pbmZvICpzdGEsXFxuLS1cXG5uZXQvbWFjODAyMTEvY2ZnLmM9MjQ1ND1zdGF0aWMgaW50IHN0YV9hcHBseV9wYXJhbWV0ZXJzKHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsLFxcbi0tXFxubmV0L21hYzgwMjExL2NmZy5jLTI0OTktXFx0ICAgICAgKHNldCBcXHUwMDI2IEJJVChOTDgwMjExX1NUQV9GTEFHX0FTU09DSUFURUQpKSkpIHtcXG5uZXQvbWFjODAyMTEvY2ZnLmM6MjUwMDpcXHRcXHRyZXQgPSBzdGFfYXBwbHlfYXV0aF9mbGFncyhsb2NhbCwgc3RhLCBtYXNrLCBzZXQpO1xcbm5ldC9tYWM4MDIxMS9jZmcuYy0yNTAxLVxcdFxcdGlmIChyZXQpXFxuLS1cXG5uZXQvbWFjODAyMTEvY2ZnLmMtMjYyMi1cXHQgICAgc2V0IFxcdTAwMjYgQklUKE5MODAyMTFfU1RBX0ZMQUdfQVNTT0NJQVRFRCkpIHtcXG5uZXQvbWFjODAyMTEvY2ZnLmM6MjYyMzpcXHRcXHRyZXQgPSBzdGFfYXBwbHlfYXV0aF9mbGFncyhsb2NhbCwgc3RhLCBtYXNrLCBzZXQpO1xcbm5ldC9tYWM4MDIxMS9jZmcuYy0yNjI0LVxcdFxcdGlmIChyZXQpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIyVDE3OjUyOjI4LjMyNjYxODMyNFoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjEzMDI5MDg5MjYyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgYHN0YV9hcHBseV9hdXRoX2ZsYWdzYCBGdW5jdGlvbioqXG5cbk9rYXksIHNvIEkgc2VlIHRoYXQgYHN0YV9hcHBseV9hdXRoX2ZsYWdzYCBpcyBhIGtleSBmdW5jdGlvbiwgYW5kIGl0J3MgYmVpbmcgY2FsbGVkIGZyb20gYXQgbGVhc3QgdHdvIGNyaXRpY2FsIGxvY2F0aW9uczogYHN0YV9hcHBseV9wYXJhbWV0ZXJzYCBhbmQsIGxpa2VseSwgZWl0aGVyIGBpZWVlODAyMTFfYWRkX3N0YXRpb25gIG9yIGBpZWVlODAyMTFfY2hhbmdlX3N0YXRpb25gLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgbGV0J3MgZHJpbGwgZG93biBpbnRvIHRoZSBjb250ZXh0IHN1cnJvdW5kaW5nIHRob3NlIGNhbGxzLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCAqd2h5KiBgc3RhX2FwcGx5X2F1dGhfZmxhZ3NgIGlzIGJlaW5nIGludm9rZWQgd2hlcmUgaXQgaXMuIEknbSBlc3BlY2lhbGx5IGludGVyZXN0ZWQgaW4gdGhlIGRpZmZlcmVudCBwYXRocyBsZWFkaW5nIGludG8gaXQuIElzIGl0IGJlaW5nIHVzZWQgdG8gc2V0IHVwIGluaXRpYWwgYXV0aGVudGljYXRpb24gcGFyYW1ldGVycywgbW9kaWZ5IGV4aXN0aW5nIG9uZXMsIG9yIG1heWJlIGJvdGg/IFRoaXMgY29udGV4dCBpcyBjcnVjaWFsIHRvIGdyYXNwaW5nIHRoZSBpbnRlbmRlZCBiZWhhdmlvci4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hhdCBkYXRhIGlzIGJlaW5nIHBhc3NlZCBpbiwgdGhlIHN0YXRlIG9mIHRoZSBzeXN0ZW0gd2hlbiBpdCdzIGNhbGxlZCwgYW5kIHdoYXQgdGhlIGZ1bmN0aW9uIGlzIGFjdHVhbGx5ICpkb2luZyogdG8gdGhlIHN0YXRpb24ncyBhdXRob3JpemF0aW9uIGZsYWdzLiBJIHN1c3BlY3QgdGhpcyB3aWxsIGlsbHVtaW5hdGUgc29tZSBrZXkgYXNwZWN0cyBvZiBob3cgYXV0aGVudGljYXRpb24gaXMgaGFuZGxlZCBpbiB0aGlzIGRyaXZlci5cblxuXG4iLCJJbnB1dFRva2VucyI6MzAzMiwiT3V0cHV0VG9rZW5zIjozNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjcyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIyVDE3OjUyOjQxLjM1NTcxMDA2NloiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0OTk2NzU5MjIsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwic3RhX2FwcGx5X2F1dGhfZmxhZ3NcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L21hYzgwMjExL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvbWFjODAyMTEvY2ZnLmM9MjAxMD1zdGF0aWMgaW50IGllZWU4MDIxMV9zdG9wX2FwKHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxuLS1cXG5uZXQvbWFjODAyMTEvY2ZnLmMtMjEyOC1cXG5uZXQvbWFjODAyMTEvY2ZnLmM6MjEyOTpzdGF0aWMgaW50IHN0YV9hcHBseV9hdXRoX2ZsYWdzKHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsLFxcbm5ldC9tYWM4MDIxMS9jZmcuYy0yMTMwLVxcdFxcdFxcdFxcdHN0cnVjdCBzdGFfaW5mbyAqc3RhLFxcbi0tXFxubmV0L21hYzgwMjExL2NmZy5jPTI0NTQ9c3RhdGljIGludCBzdGFfYXBwbHlfcGFyYW1ldGVycyhzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbCxcXG4tLVxcbm5ldC9tYWM4MDIxMS9jZmcuYy0yNDk5LVxcdCAgICAgIChzZXQgXFx1MDAyNiBCSVQoTkw4MDIxMV9TVEFfRkxBR19BU1NPQ0lBVEVEKSkpKSB7XFxubmV0L21hYzgwMjExL2NmZy5jOjI1MDA6XFx0XFx0cmV0ID0gc3RhX2FwcGx5X2F1dGhfZmxhZ3MobG9jYWwsIHN0YSwgbWFzaywgc2V0KTtcXG5uZXQvbWFjODAyMTEvY2ZnLmMtMjUwMS1cXHRcXHRpZiAocmV0KVxcbi0tXFxubmV0L21hYzgwMjExL2NmZy5jLTI2MjItXFx0ICAgIHNldCBcXHUwMDI2IEJJVChOTDgwMjExX1NUQV9GTEFHX0FTU09DSUFURUQpKSB7XFxubmV0L21hYzgwMjExL2NmZy5jOjI2MjM6XFx0XFx0cmV0ID0gc3RhX2FwcGx5X2F1dGhfZmxhZ3MobG9jYWwsIHN0YSwgbWFzaywgc2V0KTtcXG5uZXQvbWFjODAyMTEvY2ZnLmMtMjYyNC1cXHRcXHRpZiAocmV0KVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yMlQxNzo1Mjo0MS44NTUzOTA2MDhaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1MDAxOTAxMjI0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYW5hbHlzaXMgb2YgdGhlIHNpdHVhdGlvbjpcblxuKipJbnZlc3RpZ2F0aW5nIGEgU3BlY2lmaWMgRnVuY3Rpb24gaW4gbWFjODAyMTEgQ29uZmlndXJhdGlvbioqXG5cbk9rYXksIHNvIEkgbmVlZCB0byBkaXZlIGludG8gdGhlIGBuZXQvbWFjODAyMTEvY2ZnLmNgIGZpbGUuIFNwZWNpZmljYWxseSwgSSdtIGludGVyZXN0ZWQgaW4gdGhlIGZ1bmN0aW9uIGRlZmluZWQgYXQgbGluZSAyNjIyLiBHaXZlbiBteSB1bmRlcnN0YW5kaW5nIG9mIG1hYzgwMjExJ3MgYXJjaGl0ZWN0dXJlLCBwaW5wb2ludGluZyBhIHNwZWNpZmljIGxpbmUgbnVtYmVyIHVzdWFsbHkgc3VnZ2VzdHMgSSdtIGxvb2tpbmcgZm9yIGEgcGFydGljdWxhciBjb25maWd1cmF0aW9uIHNldHRpbmcsIGEgZnVuY3Rpb24gY2FsbCByZWxhdGVkIHRvIGEgc3BlY2lmaWMgZmVhdHVyZSdzIGNvbmZpZ3VyYXRpb24sIG9yIHBlcmhhcHMgYSBzZWN0aW9uIGRlYWxpbmcgd2l0aCBhIHBhcnRpY3VsYXIgcmVndWxhdG9yeSBkb21haW4gb3IgaGFyZHdhcmUgaW50ZXJmYWNlIHNldHVwLiBJJ20gbGlrZWx5IHRyeWluZyB0byBkZWJ1ZyBhIGNvbmZpZ3VyYXRpb24gaXNzdWUsIHVuZGVyc3RhbmQgYSBiZWhhdmlvciwgb3IgbWF5YmUgZXZlbiBpZGVudGlmeSBhIHBvdGVudGlhbCBvcHRpbWl6YXRpb24gb3IgYSBzZWN1cml0eSB2dWxuZXJhYmlsaXR5IHRoYXQgbWF5IGhhdmUgYXJpc2VuLiBMZXQncyBzZWUgd2hhdCB0aGF0IGZ1bmN0aW9uIGlzIGFib3V0LlxuXG5cbiIsIklucHV0VG9rZW5zIjozNzY3LCJPdXRwdXRUb2tlbnMiOjM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjJUMTc6NTI6NDYuODU3Mjk3MTMzWiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjg5NTIxMzI2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIl5zdGF0aWMgaW50LipzdGFcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L21hYzgwMjExL2NmZy5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9tYWM4MDIxMS9jZmcuYz0yNTk9c3RhdGljIGludCBpZWVlODAyMTFfY2hhbmdlX2lmYWNlKHN0cnVjdCB3aXBoeSAqd2lwaHksXFxuLS1cXG5uZXQvbWFjODAyMTEvY2ZnLmMtMzA1LVxcbm5ldC9tYWM4MDIxMS9jZmcuYzozMDY6c3RhdGljIGludCBpZWVlODAyMTFfc3RhcnRfcDJwX2RldmljZShzdHJ1Y3Qgd2lwaHkgKndpcGh5LFxcbm5ldC9tYWM4MDIxMS9jZmcuYy0zMDctXFx0XFx0XFx0XFx0ICAgICAgc3RydWN0IHdpcmVsZXNzX2RldiAqd2RldilcXG4tLVxcbm5ldC9tYWM4MDIxMS9jZmcuYz0zNTE9c3RhdGljIGludCBpZWVlODAyMTFfbmFuX2NvbmZfY29weShzdHJ1Y3QgY2ZnODAyMTFfbmFuX2NvbmYgKmRzdCxcXG4tLVxcbm5ldC9tYWM4MDIxMS9jZmcuYy00MDgtXFxubmV0L21hYzgwMjExL2NmZy5jOjQwOTpzdGF0aWMgaW50IGllZWU4MDIxMV9zdGFydF9uYW4oc3RydWN0IHdpcGh5ICp3aXBoeSxcXG5uZXQvbWFjODAyMTEvY2ZnLmMtNDEwLVxcdFxcdFxcdCAgICAgICBzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LFxcbi0tXFxubmV0L21hYzgwMjExL2NmZy5jPTk2Nz12b2lkIHN0YV9zZXRfcmF0ZV9pbmZvX3R4KHN0cnVjdCBzdGFfaW5mbyAqc3RhLFxcbi0tXFxubmV0L21hYzgwMjExL2NmZy5jLTk5OC1cXG5uZXQvbWFjODAyMTEvY2ZnLmM6OTk5OnN0YXRpYyBpbnQgaWVlZTgwMjExX2R1bXBfc3RhdGlvbihzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LFxcbm5ldC9tYWM4MDIxMS9jZmcuYy0xMDAwLVxcdFxcdFxcdFxcdCAgaW50IGlkeCwgdTggKm1hYywgc3RydWN0IHN0YXRpb25faW5mbyAqc2luZm8pXFxuLS1cXG5uZXQvbWFjODAyMTEvY2ZnLmM9MTAyNj1zdGF0aWMgaW50IGllZWU4MDIxMV9kdW1wX3N1cnZleShzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbi0tXFxubmV0L21hYzgwMjExL2NmZy5jLTEwMzMtXFxubmV0L21hYzgwMjExL2NmZy5jOjEwMzQ6c3RhdGljIGludCBpZWVlODAyMTFfZ2V0X3N0YXRpb24oc3RydWN0IHdpcGh5ICp3aXBoeSxcXG5uZXQvbWFjODAyMTEvY2ZnLmMtMTAzNS1cXHRcXHRcXHRcXHQgc3RydWN0IHdpcmVsZXNzX2RldiAqd2RldixcXG4tLVxcbm5ldC9tYWM4MDIxMS9jZmcuYz0xNjA2PXN0YXRpYyB1OCBpZWVlODAyMTFfbnVtX2JlYWNvbmluZ19saW5rcyhzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSlcXG4tLVxcbm5ldC9tYWM4MDIxMS9jZmcuYy0xNjI5LVxcbm5ldC9tYWM4MDIxMS9jZmcuYzoxNjMwOnN0YXRpYyBpbnQgaWVlZTgwMjExX3N0YXJ0X2FwKHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxubmV0L21hYzgwMjExL2NmZy5jLTE2MzEtXFx0XFx0XFx0ICAgICAgc3RydWN0IGNmZzgwMjExX2FwX3NldHRpbmdzICpwYXJhbXMpXFxuLS1cXG5uZXQvbWFjODAyMTEvY2ZnLmM9MjAxMD1zdGF0aWMgaW50IGllZWU4MDIxMV9zdG9wX2FwKHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxuLS1cXG5uZXQvbWFjODAyMTEvY2ZnLmMtMjEyOC1cXG5uZXQvbWFjODAyMTEvY2ZnLmM6MjEyOTpzdGF0aWMgaW50IHN0YV9hcHBseV9hdXRoX2ZsYWdzKHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsLFxcbm5ldC9tYWM4MDIxMS9jZmcuYy0yMTMwLVxcdFxcdFxcdFxcdHN0cnVjdCBzdGFfaW5mbyAqc3RhLFxcbi0tXFxubmV0L21hYzgwMjExL2NmZy5jPTIyNTk9ZW51bSBzdGFfbGlua19hcHBseV9tb2RlIHtcXG4tLVxcbm5ldC9tYWM4MDIxMS9jZmcuYy0yMjY0LVxcbm5ldC9tYWM4MDIxMS9jZmcuYzoyMjY1OnN0YXRpYyBpbnQgc3RhX2xpbmtfYXBwbHlfcGFyYW1ldGVycyhzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbCxcXG5uZXQvbWFjODAyMTEvY2ZnLmMtMjI2Ni1cXHRcXHRcXHRcXHQgICAgIHN0cnVjdCBzdGFfaW5mbyAqc3RhLFxcbi0tXFxubmV0L21hYzgwMjExL2NmZy5jLTI0NTMtXFxubmV0L21hYzgwMjExL2NmZy5jOjI0NTQ6c3RhdGljIGludCBzdGFfYXBwbHlfcGFyYW1ldGVycyhzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbCxcXG5uZXQvbWFjODAyMTEvY2ZnLmMtMjQ1NS1cXHRcXHRcXHRcXHRzdHJ1Y3Qgc3RhX2luZm8gKnN0YSxcXG4tLVxcbm5ldC9tYWM4MDIxMS9jZmcuYy0yNjM0LVxcbm5ldC9tYWM4MDIxMS9jZmcuYzoyNjM1OnN0YXRpYyBpbnQgaWVlZTgwMjExX2FkZF9zdGF0aW9uKHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsXFxubmV0L21hYzgwMjExL2NmZy5jLTI2MzYtXFx0XFx0XFx0XFx0IGNvbnN0IHU4ICptYWMsXFxuLS1cXG5uZXQvbWFjODAyMTEvY2ZnLmMtMjcxNC1cXG5uZXQvbWFjODAyMTEvY2ZnLmM6MjcxNTpzdGF0aWMgaW50IGllZWU4MDIxMV9kZWxfc3RhdGlvbihzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LFxcbm5ldC9tYWM4MDIxMS9jZmcuYy0yNzE2LVxcdFxcdFxcdFxcdCBzdHJ1Y3Qgc3RhdGlvbl9kZWxfcGFyYW1ldGVycyAqcGFyYW1zKVxcbi0tXFxubmV0L21hYzgwMjExL2NmZy5jLTI3MjgtXFxubmV0L21hYzgwMjExL2NmZy5jOjI3Mjk6c3RhdGljIGludCBpZWVlODAyMTFfc2V0X3N0YV80YWRkcihzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbCxcXG5uZXQvbWFjODAyMTEvY2ZnLmMtMjczMC1cXHRcXHRcXHRcXHQgICBzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSxcXG4tLVxcbm5ldC9tYWM4MDIxMS9jZmcuYy0yNzg3LVxcbm5ldC9tYWM4MDIxMS9jZmcuYzoyNzg4OnN0YXRpYyBpbnQgaWVlZTgwMjExX2NoYW5nZV9zdGF0aW9uKHN0cnVjdCB3aXBoeSAqd2lwaHksXFxubmV0L21hYzgwMjExL2NmZy5jLTI3ODktXFx0XFx0XFx0XFx0ICAgIHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsIGNvbnN0IHU4ICptYWMsXFxuLS1cXG5uZXQvbWFjODAyMTEvY2ZnLmM9NDE3ND1zdGF0aWMgYm9vbCBpZWVlODAyMTFfaXNfc2Nhbl9vbmdvaW5nKHN0cnVjdCB3aXBoeSAqd2lwaHksXFxuLS1cXG5uZXQvbWFjODAyMTEvY2ZnLmMtNDIxMC1cXG5uZXQvbWFjODAyMTEvY2ZnLmM6NDIxMTpzdGF0aWMgaW50IGllZWU4MDIxMV9zdGFydF9yYWRhcl9kZXRlY3Rpb24oc3RydWN0IHdpcGh5ICp3aXBoeSxcXG5uZXQvbWFjODAyMTEvY2ZnLmMtNDIxMi1cXHRcXHRcXHRcXHRcXHQgICBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbi0tXFxubmV0L21hYzgwMjExL2NmZy5jPTUzMzU9dm9pZCBpZWVlODAyMTFfZmlsbF90eHFfc3RhdHMoc3RydWN0IGNmZzgwMjExX3R4cV9zdGF0cyAqdHhxc3RhdHMsXFxuLS1cXG5uZXQvbWFjODAyMTEvY2ZnLmMtNTM4My1cXG5uZXQvbWFjODAyMTEvY2ZnLmM6NTM4NDpzdGF0aWMgaW50IGllZWU4MDIxMV9nZXRfdHhxX3N0YXRzKHN0cnVjdCB3aXBoeSAqd2lwaHksXFxubmV0L21hYzgwMjExL2NmZy5jLTUzODUtXFx0XFx0XFx0XFx0ICAgc3RydWN0IHdpcmVsZXNzX2RldiAqd2RldixcXG4tLVxcbm5ldC9tYWM4MDIxMS9jZmcuYz01ODk4PWllZWU4MDIxMV9kZWxfbGlua19zdGF0aW9uKHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxuLS1cXG5uZXQvbWFjODAyMTEvY2ZnLmMtNTkyMS1cXG5uZXQvbWFjODAyMTEvY2ZnLmM6NTkyMjpzdGF0aWMgaW50IGllZWU4MDIxMV9zZXRfaHdfdGltZXN0YW1wKHN0cnVjdCB3aXBoeSAqd2lwaHksXFxubmV0L21hYzgwMjExL2NmZy5jLTU5MjMtXFx0XFx0XFx0XFx0ICAgICAgc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjJUMTc6NTI6NDYuOTQ2ODIzOTQ5WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTE5MDYwMDI1OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIEF1dGhlbnRpY2F0aW9uIEZsYWdzIFBhdGNoKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCB0aGF0IHR3ZWFrcyBgc3RhX2FwcGx5X2F1dGhfZmxhZ3NgLiBJIHNlZSB0aGF0IHRoaXMgZnVuY3Rpb24ncyBjYWxsZWQgZnJvbSBgc3RhX2FwcGx5X3BhcmFtZXRlcnNgLCBhbmQgYWxzbyBmcm9tIGBpZWVlODAyMTFfYWRkX3N0YXRpb25gIGFuZCBgaWVlZTgwMjExX2NoYW5nZV9zdGF0aW9uYC4gUmlnaHQgYXdheSwgdGhhdCByYWlzZXMgYSBmbGFnOiB0aG9zZSBsYXR0ZXIgdHdvIGZ1bmN0aW9ucyBhcmUgZGlyZWN0bHkgZXhwb3NlZCB0byB1c2Vyc3BhY2UgdGhyb3VnaCBubDgwMjExIGNvbW1hbmRzIOKAkyBzcGVjaWZpY2FsbHksIGBOTDgwMjExX0NNRF9ORVdfU1RBVElPTmAgYW5kIGBOTDgwMjExX0NNRF9TRVRfU1RBVElPTmAuIEdvb2QuXG5cblRoZSBtZWF0IG9mIHRoZSBwYXRjaCBhZGRzIGEgY2hlY2suIFNwZWNpZmljYWxseSwgaXQncyBjaGVja2luZyBgaWVlZTgwMjExX3ZpZl9pc19tbGQoXHUwMDI2c3RhLVx1MDAzZXNkYXRhLVx1MDAzZXZpZilgIGFuZCBgcmN1X2FjY2Vzc19wb2ludGVyKHN0YS1cdTAwM2VzZGF0YS1cdTAwM2V2aWYuYnNzX2NvbmYuY2hhbmN0eF9jb25mKWAuIEZ1bmN0aW9uYWxseSwgdGhpcyBsb29rcyBzb3VuZC4gSXQncyBjbGVhcmx5IHJlYWNoYWJsZSwgYW5kIEknbSBjb25maWRlbnQgSSBjYW4gdHJpZ2dlciBpdCB1c2luZyBtYWM4MDIxMV9od3NpbS4gVGhhdCdzIGEgc29saWQgc3RhcnQuXG5cbk5vdywgbGV0J3MgbG9vayBhdCB0aGUgYmlnZ2VyIHBpY3R1cmUuIEkgbmVlZCB0byBrbm93IHdoYXQgY29uZmlndXJhdGlvbiBvcHRpb25zIGFyZSBpbnZvbHZlZC4gYE1BQzgwMjExYCBpcyBvYnZpb3VzbHkgYSBnaXZlbi4gTm8gbmVlZCB0byBvdmVydGhpbmsgdGhhdCBvbmUuIEJ1dCwgaXMgdGhlcmUgYW55dGhpbmcgZWxzZSB0aGF0IGl0IHRvdWNoZXM/IExldCdzIGRpdmUgaW50byB0aGUgYG5ldC9tYWM4MDIxMS9LY29uZmlnYCBmaWxlIGFuZCB0YWtlIGEgbG9vay4gTmVlZCB0byBrbm93IGlmIHRoZXJlJ3MgYW55IG90aGVyIGRlcGVuZGVuY3kuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU4OTEsIk91dHB1dFRva2VucyI6MzgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMjAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjJUMTc6NTI6NTIuMTM3NDI2OTU3WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMTE2MjUwOTYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIE1BQzgwMjExXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9tYWM4MDIxMS9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9tYWM4MDIxMS9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxubmV0L21hYzgwMjExL0tjb25maWc6Mjpjb25maWcgTUFDODAyMTFcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0zLVxcdHRyaXN0YXRlIFxcXCJHZW5lcmljIElFRUUgODAyLjExIE5ldHdvcmtpbmcgU3RhY2sgKG1hYzgwMjExKVxcXCJcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnPTE5PWlmIE1BQzgwMjExICE9IG5cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yMC1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyMTpjb25maWcgTUFDODAyMTFfSEFTX1JDXFxubmV0L21hYzgwMjExL0tjb25maWctMjItXFx0Ym9vbFxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTIzLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjI0OmNvbmZpZyBNQUM4MDIxMV9SQ19NSU5TVFJFTFxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTI1LVxcdGJvb2wgXFxcIk1pbnN0cmVsXFxcIiBpZiBFWFBFUlRcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnPTMxPWNob2ljZVxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWctNDAtXFxubmV0L21hYzgwMjExL0tjb25maWc6NDE6Y29uZmlnIE1BQzgwMjExX1JDX0RFRkFVTFRfTUlOU1RSRUxcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy00Mi1cXHRib29sIFxcXCJNaW5zdHJlbFxcXCJcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnPTQ4PWVuZGNob2ljZVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTQ5LVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjUwOmNvbmZpZyBNQUM4MDIxMV9SQ19ERUZBVUxUXFxubmV0L21hYzgwMjExL0tjb25maWctNTEtXFx0c3RyaW5nXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZz01Nz1jb21tZW50IFxcXCJTb21lIHdpcmVsZXNzIGRyaXZlcnMgcmVxdWlyZSBhIHJhdGUgY29udHJvbCBhbGdvcml0aG1cXFwiXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy01OS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzo2MDpjb25maWcgTUFDODAyMTFfS1VOSVRfVEVTVFxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTYxLVxcdHRyaXN0YXRlIFxcXCJLVW5pdCB0ZXN0cyBmb3IgbWFjODAyMTFcXFwiIGlmICFLVU5JVF9BTExfVEVTVFNcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTY5LVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjcwOmNvbmZpZyBNQUM4MDIxMV9NRVNIXFxubmV0L21hYzgwMjExL0tjb25maWctNzEtXFx0Ym9vbCBcXFwiRW5hYmxlIG1hYzgwMjExIG1lc2ggbmV0d29ya2luZyBzdXBwb3J0XFxcIlxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWctNzgtXFxubmV0L21hYzgwMjExL0tjb25maWc6Nzk6Y29uZmlnIE1BQzgwMjExX0xFRFNcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy04MC1cXHRib29sIFxcXCJFbmFibGUgTEVEIHRyaWdnZXJzXFxcIlxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWctODctXFxubmV0L21hYzgwMjExL0tjb25maWc6ODg6Y29uZmlnIE1BQzgwMjExX0RFQlVHRlNcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy04OS1cXHRib29sIFxcXCJFeHBvcnQgbWFjODAyMTEgaW50ZXJuYWxzIGluIERlYnVnRlNcXFwiXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy05Ni1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzo5Nzpjb25maWcgTUFDODAyMTFfTUVTU0FHRV9UUkFDSU5HXFxubmV0L21hYzgwMjExL0tjb25maWctOTgtXFx0Ym9vbCBcXFwiVHJhY2UgYWxsIG1hYzgwMjExIGRlYnVnIG1lc3NhZ2VzXFxcIlxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWctMTA5LVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjExMDptZW51Y29uZmlnIE1BQzgwMjExX0RFQlVHX01FTlVcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xMTEtXFx0Ym9vbCBcXFwiU2VsZWN0IG1hYzgwMjExIGRlYnVnZ2luZyBmZWF0dXJlc1xcXCJcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTExNS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoxMTY6Y29uZmlnIE1BQzgwMjExX05PSU5MSU5FXFxubmV0L21hYzgwMjExL0tjb25maWctMTE3LVxcdGJvb2wgXFxcIkRvIG5vdCBpbmxpbmUgVFgvUlggaGFuZGxlcnNcXFwiXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xMzEtXFxubmV0L21hYzgwMjExL0tjb25maWc6MTMyOmNvbmZpZyBNQUM4MDIxMV9WRVJCT1NFX0RFQlVHXFxubmV0L21hYzgwMjExL0tjb25maWctMTMzLVxcdGJvb2wgXFxcIlZlcmJvc2UgZGVidWdnaW5nIG91dHB1dFxcXCJcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE0Mi1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoxNDM6Y29uZmlnIE1BQzgwMjExX01MTUVfREVCVUdcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xNDQtXFx0Ym9vbCBcXFwiVmVyYm9zZSBtYW5hZ2VkIE1MTUUgb3V0cHV0XFxcIlxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWctMTUzLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjE1NDpjb25maWcgTUFDODAyMTFfU1RBX0RFQlVHXFxubmV0L21hYzgwMjExL0tjb25maWctMTU1LVxcdGJvb2wgXFxcIlZlcmJvc2Ugc3RhdGlvbiBkZWJ1Z2dpbmdcXFwiXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xNjItXFxubmV0L21hYzgwMjExL0tjb25maWc6MTYzOmNvbmZpZyBNQUM4MDIxMV9IVF9ERUJVR1xcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE2NC1cXHRib29sIFxcXCJWZXJib3NlIEhUIGRlYnVnZ2luZ1xcXCJcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE3NC1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoxNzU6Y29uZmlnIE1BQzgwMjExX09DQl9ERUJVR1xcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE3Ni1cXHRib29sIFxcXCJWZXJib3NlIE9DQiBkZWJ1Z2dpbmdcXFwiXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xODUtXFxubmV0L21hYzgwMjExL0tjb25maWc6MTg2OmNvbmZpZyBNQUM4MDIxMV9JQlNTX0RFQlVHXFxubmV0L21hYzgwMjExL0tjb25maWctMTg3LVxcdGJvb2wgXFxcIlZlcmJvc2UgSUJTUyBkZWJ1Z2dpbmdcXFwiXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xOTYtXFxubmV0L21hYzgwMjExL0tjb25maWc6MTk3OmNvbmZpZyBNQUM4MDIxMV9QU19ERUJVR1xcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE5OC1cXHRib29sIFxcXCJWZXJib3NlIHBvd2Vyc2F2ZSBtb2RlIGRlYnVnZ2luZ1xcXCJcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTIwOC1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyMDk6Y29uZmlnIE1BQzgwMjExX01QTF9ERUJVR1xcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTIxMC1cXHRib29sIFxcXCJWZXJib3NlIG1lc2ggcGVlciBsaW5rIGRlYnVnZ2luZ1xcXCJcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTIyMS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyMjI6Y29uZmlnIE1BQzgwMjExX01QQVRIX0RFQlVHXFxubmV0L21hYzgwMjExL0tjb25maWctMjIzLVxcdGJvb2wgXFxcIlZlcmJvc2UgbWVzaCBwYXRoIGRlYnVnZ2luZ1xcXCJcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTIzNC1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyMzU6Y29uZmlnIE1BQzgwMjExX01IV01QX0RFQlVHXFxubmV0L21hYzgwMjExL0tjb25maWctMjM2LVxcdGJvb2wgXFxcIlZlcmJvc2UgbWVzaCBIV01QIHJvdXRpbmcgZGVidWdnaW5nXFxcIlxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWctMjQ3LVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjI0ODpjb25maWcgTUFDODAyMTFfTUVTSF9TWU5DX0RFQlVHXFxubmV0L21hYzgwMjExL0tjb25maWctMjQ5LVxcdGJvb2wgXFxcIlZlcmJvc2UgbWVzaCBzeW5jaHJvbml6YXRpb24gZGVidWdnaW5nXFxcIlxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWctMjU4LVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjI1OTpjb25maWcgTUFDODAyMTFfTUVTSF9DU0FfREVCVUdcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yNjAtXFx0Ym9vbCBcXFwiVmVyYm9zZSBtZXNoIGNoYW5uZWwgc3dpdGNoIGRlYnVnZ2luZ1xcXCJcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTI2OS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyNzA6Y29uZmlnIE1BQzgwMjExX01FU0hfUFNfREVCVUdcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yNzEtXFx0Ym9vbCBcXFwiVmVyYm9zZSBtZXNoIHBvd2Vyc2F2ZSBkZWJ1Z2dpbmdcXFwiXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yODAtXFxubmV0L21hYzgwMjExL0tjb25maWc6MjgxOmNvbmZpZyBNQUM4MDIxMV9URExTX0RFQlVHXFxubmV0L21hYzgwMjExL0tjb25maWctMjgyLVxcdGJvb2wgXFxcIlZlcmJvc2UgVERMUyBkZWJ1Z2dpbmdcXFwiXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yOTItXFxubmV0L21hYzgwMjExL0tjb25maWc6MjkzOmNvbmZpZyBNQUM4MDIxMV9ERUJVR19DT1VOVEVSU1xcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTI5NC1cXHRib29sIFxcXCJFeHRyYSBzdGF0aXN0aWNzIGZvciBUWC9SWCBkZWJ1Z2dpbmdcXFwiXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0zMDctXFxubmV0L21hYzgwMjExL0tjb25maWc6MzA4OmNvbmZpZyBNQUM4MDIxMV9TVEFfSEFTSF9NQVhfU0laRVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTMwOS1cXHRpbnQgXFxcIlN0YXRpb24gaGFzaCB0YWJsZSBtYXhpbXVtIHNpemVcXFwiIGlmIE1BQzgwMjExX0RFQlVHX01FTlVcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjJUMTc6NTI6NTIuMjQ5MDU3NzQzWiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM5NjI3OTA0OTEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duOlxuXG4qKkFuYWx5emluZyB0aGUgTUFDODAyMTEgQ29udGV4dCoqXG5cblJpZ2h0LCBNQUM4MDIxMSBzaG91bGQgYmUgc3VmZmljaWVudCBmb3IgdGhlIGJhc2ljIHVuZGVyc3RhbmRpbmcsIEkgdGhpbmsuIExldCdzIGRpZyBpbiBhIGJpdCBmdXJ0aGVyLCB0aG91Z2guIFdlIHdhbnQgdG8gYmUgdGhvcm91Z2guIFRoZSBjb2RlJ3MgdXNpbmcgYGllZWU4MDIxMV92aWZfaXNfbWxkKFx1MDAyNnN0YS1cdTAwM2VzZGF0YS1cdTAwM2V2aWYpYC4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hhdCwgaWYgYW55LCBzcGVjaWZpYyBjb25maWd1cmF0aW9uIG9yIGltcGxpY2F0aW9ucyB0aGF0IHBhcnRpY3VsYXIgZnVuY3Rpb24gY2FsbCBicmluZ3MgaW50byBwbGF5IHdpdGhpbiB0aGlzIGNvbnRleHQuIFRoYXQgZnVuY3Rpb24gY2FsbCBpcyBrZXkgaGVyZS4gSSdsbCBuZWVkIHRvIGNoZWNrIHRoZSByZWxldmFudCBkb2N1bWVudGF0aW9uIG9yIHNvdXJjZSB0byBzZWUgaWYgd2UgcmVxdWlyZSBzcGVjaWFsIGNvbmZpZ3VyYXRpb25zLlxuXG5cbiIsIklucHV0VG9rZW5zIjo4NjY1LCJPdXRwdXRUb2tlbnMiOjQ0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NjQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjJUMTc6NTI6NTYuMjExODUxNjM0WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMjc5NzI4MTUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiaWVlZTgwMjExX3ZpZl9pc19tbGRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L21hYzgwMjExL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvbWFjODAyMTEvYXAuYz01MT1pZWVlODAyMTFfcnhfZW1sX29wX21vZGVfbm90aWYoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsXFxuLS1cXG5uZXQvbWFjODAyMTEvYXAuYy02OC1cXG5uZXQvbWFjODAyMTEvYXAuYzo2OTpcXHRpZiAoIWllZWU4MDIxMV92aWZfaXNfbWxkKFxcdTAwMjZzZGF0YS1cXHUwMDNldmlmKSlcXG5uZXQvbWFjODAyMTEvYXAuYy03MC1cXHRcXHRyZXR1cm47XFxuLS1cXG5uZXQvbWFjODAyMTEvY2ZnLmM9Mjc9aWVlZTgwMjExX2xpbmtfb3JfZGVmbGluayhzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSwgaW50IGxpbmtfaWQsXFxuLS1cXG5uZXQvbWFjODAyMTEvY2ZnLmMtMzctXFx0XFx0ICovXFxubmV0L21hYzgwMjExL2NmZy5jOjM4OlxcdFxcdGlmIChyZXF1aXJlX3ZhbGlkIFxcdTAwMjZcXHUwMDI2IGllZWU4MDIxMV92aWZfaXNfbWxkKFxcdTAwMjZzZGF0YS1cXHUwMDNldmlmKSlcXG5uZXQvbWFjODAyMTEvY2ZnLmMtMzktXFx0XFx0XFx0cmV0dXJuIEVSUl9QVFIoLUVJTlZBTCk7XFxuLS1cXG5uZXQvbWFjODAyMTEvY2ZnLmM9MjEyOT1zdGF0aWMgaW50IHN0YV9hcHBseV9hdXRoX2ZsYWdzKHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsLFxcbi0tXFxubmV0L21hYzgwMjExL2NmZy5jLTIxNTEtXFx0XFx0aWYgKCF0ZXN0X3N0YV9mbGFnKHN0YSwgV0xBTl9TVEFfUkFURV9DT05UUk9MKSkge1xcbm5ldC9tYWM4MDIxMS9jZmcuYzoyMTUyOlxcdFxcdFxcdGlmICghaWVlZTgwMjExX3ZpZl9pc19tbGQoXFx1MDAyNnN0YS1cXHUwMDNlc2RhdGEtXFx1MDAzZXZpZikgXFx1MDAyNlxcdTAwMjZcXG5uZXQvbWFjODAyMTEvY2ZnLmMtMjE1My1cXHRcXHRcXHQgICAgIXJjdV9hY2Nlc3NfcG9pbnRlcihzdGEtXFx1MDAzZXNkYXRhLVxcdTAwM2V2aWYuYnNzX2NvbmYuY2hhbmN0eF9jb25mKSlcXG4tLVxcbm5ldC9tYWM4MDIxMS9jZmcuYz0zOTExPWludCBfX2llZWU4MDIxMV9yZXF1ZXN0X3NtcHNfbWdkKHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLFxcbi0tXFxubmV0L21hYzgwMjExL2NmZy5jLTM5NzMtXFx0XFx0XFx0XFx0XFx0IGFwLCBhcCxcXG5uZXQvbWFjODAyMTEvY2ZnLmM6Mzk3NDpcXHRcXHRcXHRcXHRcXHQgaWVlZTgwMjExX3ZpZl9pc19tbGQoXFx1MDAyNnNkYXRhLVxcdTAwM2V2aWYpID9cXG5uZXQvbWFjODAyMTEvY2ZnLmMtMzk3NS1cXHRcXHRcXHRcXHRcXHQgbGluay1cXHUwMDNlbGlua19pZCA6IC0xKTtcXG4tLVxcbm5ldC9tYWM4MDIxMS9jZmcuYz00OTU3PXN0YXRpYyBpbnQgaWVlZTgwMjExX3Byb2JlX2NsaWVudChzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbi0tXFxubmV0L21hYzgwMjExL2NmZy5jLTQ5ODYtXFxubmV0L21hYzgwMjExL2NmZy5jOjQ5ODc6XFx0aWYgKGllZWU4MDIxMV92aWZfaXNfbWxkKFxcdTAwMjZzZGF0YS1cXHUwMDNldmlmKSkge1xcbm5ldC9tYWM4MDIxMS9jZmcuYy00OTg4LVxcdFxcdGlmIChzdGEtXFx1MDAzZXN0YS5tbG8pIHtcXG4tLVxcbm5ldC9tYWM4MDIxMS9jZmcuYy01MDQxLVxcdG1lbWNweShudWxsZnVuYy1cXHUwMDNlYWRkcjEsIHN0YS1cXHUwMDNlc3RhLmFkZHIsIEVUSF9BTEVOKTtcXG5uZXQvbWFjODAyMTEvY2ZnLmM6NTA0MjpcXHRpZiAoaWVlZTgwMjExX3ZpZl9pc19tbGQoXFx1MDAyNnNkYXRhLVxcdTAwM2V2aWYpIFxcdTAwMjZcXHUwMDI2ICFzdGEtXFx1MDAzZXN0YS5tbG8pIHtcXG5uZXQvbWFjODAyMTEvY2ZnLmMtNTA0My1cXHRcXHRtZW1jcHkobnVsbGZ1bmMtXFx1MDAzZWFkZHIyLCBjb25mLVxcdTAwM2VhZGRyLCBFVEhfQUxFTik7XFxuLS1cXG5uZXQvbWFjODAyMTEvZGVidWcuaD0xMjU9ZG8ge1xcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4tLVxcbm5ldC9tYWM4MDIxMS9kZWJ1Zy5oLTEzOS1cXHRkbyB7XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbm5ldC9tYWM4MDIxMS9kZWJ1Zy5oOjE0MDpcXHRcXHRpZiAoaWVlZTgwMjExX3ZpZl9pc19tbGQoXFx1MDAyNihsaW5rKS1cXHUwMDNlc2RhdGEtXFx1MDAzZXZpZikpICAgICAgICAgIFxcXFxcXG5uZXQvbWFjODAyMTEvZGVidWcuaC0xNDEtXFx0XFx0XFx0X3NkYXRhX2luZm8oKGxpbmspLVxcdTAwM2VzZGF0YSwgXFxcIltsaW5rICVkXSBcXFwiIGZtdCxcXHRcXFxcXFxuLS1cXG5uZXQvbWFjODAyMTEvZGVidWcuaC0xNDgtXFx0ZG8ge1xcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG5uZXQvbWFjODAyMTEvZGVidWcuaDoxNDk6XFx0XFx0aWYgKGllZWU4MDIxMV92aWZfaXNfbWxkKFxcdTAwMjYobGluayktXFx1MDAzZXNkYXRhLVxcdTAwM2V2aWYpKSAgICAgICAgICBcXFxcXFxubmV0L21hYzgwMjExL2RlYnVnLmgtMTUwLVxcdFxcdFxcdF9zZGF0YV9lcnIoKGxpbmspLVxcdTAwM2VzZGF0YSwgXFxcIltsaW5rICVkXSBcXFwiIGZtdCxcXHRcXFxcXFxuLS1cXG5uZXQvbWFjODAyMTEvZGVidWcuaC0xNTktXFx0ZG8ge1xcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG5uZXQvbWFjODAyMTEvZGVidWcuaDoxNjA6XFx0XFx0aWYgKGllZWU4MDIxMV92aWZfaXNfbWxkKFxcdTAwMjZzZGF0YS1cXHUwMDNldmlmKSlcXHRcXHRcXHRcXFxcXFxubmV0L21hYzgwMjExL2RlYnVnLmgtMTYxLVxcdFxcdFxcdF9zZGF0YV9pbmZvKHNkYXRhLCBcXFwiW2xpbmsgJWRdIFxcXCIgZm10LCBsaW5rX2lkLFxcdFxcXFxcXG4tLVxcbm5ldC9tYWM4MDIxMS9kZWJ1Zy5oLTE2Ny1cXHRkbyB7XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbm5ldC9tYWM4MDIxMS9kZWJ1Zy5oOjE2ODpcXHRcXHRpZiAoaWVlZTgwMjExX3ZpZl9pc19tbGQoXFx1MDAyNihzZGF0YSktXFx1MDAzZXZpZikpXFx0XFx0XFxcXFxcbm5ldC9tYWM4MDIxMS9kZWJ1Zy5oLTE2OS1cXHRcXHRcXHRfc2RhdGFfZGJnKHByaW50LCBzZGF0YSwgXFxcIltsaW5rICVkXSBcXFwiIGZtdCxcXHRcXFxcXFxuLS1cXG5uZXQvbWFjODAyMTEvaWVlZTgwMjExX2kuaD0xNzM5PWllZWU4MDIxMV9nZXRfc2JhbmQoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEpXFxuLS1cXG5uZXQvbWFjODAyMTEvaWVlZTgwMjExX2kuaC0xNzQ0LVxcbm5ldC9tYWM4MDIxMS9pZWVlODAyMTFfaS5oOjE3NDU6XFx0V0FSTl9PTihpZWVlODAyMTFfdmlmX2lzX21sZChcXHUwMDI2c2RhdGEtXFx1MDAzZXZpZikpO1xcbm5ldC9tYWM4MDIxMS9pZWVlODAyMTFfaS5oLTE3NDYtXFxuLS1cXG5uZXQvbWFjODAyMTEvaWZhY2UuYz00Nzk9c3RhdGljIHZvaWQgaWVlZTgwMjExX2RvX3N0b3Aoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsIGJvb2wgZ29pbmdfZG93bilcXG4tLVxcbm5ldC9tYWM4MDIxMS9pZmFjZS5jLTU2Mi1cXG5uZXQvbWFjODAyMTEvaWZhY2UuYzo1NjM6XFx0V0FSTihpZWVlODAyMTFfdmlmX2lzX21sZChcXHUwMDI2c2RhdGEtXFx1MDAzZXZpZiksXFxubmV0L21hYzgwMjExL2lmYWNlLmMtNTY0LVxcdCAgICAgXFxcImRlc3Ryb3lpbmcgaW50ZXJmYWNlIHdpdGggdmFsaWQgbGlua3MgMHglMDR4XFxcXG5cXFwiLFxcbi0tXFxubmV0L21hYzgwMjExL2lmYWNlLmM9MTk3ND1zdGF0aWMgaW50IGllZWU4MDIxMV9ydW50aW1lX2NoYW5nZV9pZnR5cGUoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsXFxuLS1cXG5uZXQvbWFjODAyMTEvaWZhY2UuYy0xOTg3LVxcdC8qIGZvciBub3csIGRvbid0IHN1cHBvcnQgY2hhbmdpbmcgd2hpbGUgbGlua3MgZXhpc3QgKi9cXG5uZXQvbWFjODAyMTEvaWZhY2UuYzoxOTg4OlxcdGlmIChpZWVlODAyMTFfdmlmX2lzX21sZChcXHUwMDI2c2RhdGEtXFx1MDAzZXZpZikpXFxubmV0L21hYzgwMjExL2lmYWNlLmMtMTk4OS1cXHRcXHRyZXR1cm4gLUVCVVNZO1xcbi0tXFxubmV0L21hYzgwMjExL21haW4uYz0zMzY9dm9pZCBpZWVlODAyMTFfYnNzX2luZm9fY2hhbmdlX25vdGlmeShzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSxcXG4tLVxcbm5ldC9tYWM4MDIxMS9tYWluLmMtMzQyLVxcbm5ldC9tYWM4MDIxMS9tYWluLmM6MzQzOlxcdFdBUk5fT05fT05DRShpZWVlODAyMTFfdmlmX2lzX21sZChcXHUwMDI2c2RhdGEtXFx1MDAzZXZpZikpO1xcbm5ldC9tYWM4MDIxMS9tYWluLmMtMzQ0LVxcbi0tXFxubmV0L21hYzgwMjExL21sbWUuYz0yNDE0PWllZWU4MDIxMV9hc3NvY19hZGRfbWxfZWxlbShzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSxcXG4tLVxcbm5ldC9tYWM4MDIxMS9tbG1lLmMtMjQyOC1cXG5uZXQvbWFjODAyMTEvbWxtZS5jOjI0Mjk6XFx0aWYgKCFpZWVlODAyMTFfdmlmX2lzX21sZChcXHUwMDI2c2RhdGEtXFx1MDAzZXZpZikpXFxubmV0L21hYzgwMjExL21sbWUuYy0yNDMwLVxcdFxcdHJldHVybjtcXG4tLVxcbm5ldC9tYWM4MDIxMS9tbG1lLmM9MjU4Mj1zdGF0aWMgaW50IGllZWU4MDIxMV9zZW5kX2Fzc29jKHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhKVxcbi0tXFxubmV0L21hYzgwMjExL21sbWUuYy0yNjM5LVxcbm5ldC9tYWM4MDIxMS9tbG1lLmM6MjY0MDpcXHRpZiAoaWVlZTgwMjExX3ZpZl9pc19tbGQoXFx1MDAyNnNkYXRhLVxcdTAwM2V2aWYpKSB7XFxubmV0L21hYzgwMjExL21sbWUuYy0yNjQxLVxcdFxcdC8qIGNvbnNpZGVyIHRoZSBtdWx0aS1saW5rIGVsZW1lbnQgd2l0aCBTVEEgcHJvZmlsZSAqL1xcbi0tXFxubmV0L21hYzgwMjExL21sbWUuYz00Mzk0PXN0YXRpYyB2b2lkIGllZWU4MDIxMV9zZXRfYXNzb2NpYXRlZChzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSxcXG4tLVxcbm5ldC9tYWM4MDIxMS9tbG1lLmMtNDQxNC1cXG5uZXQvbWFjODAyMTEvbWxtZS5jOjQ0MTU6XFx0XFx0aWYgKGllZWU4MDIxMV92aWZfaXNfbWxkKFxcdTAwMjZzZGF0YS1cXHUwMDNldmlmKSBcXHUwMDI2XFx1MDAyNlxcbm5ldC9tYWM4MDIxMS9tbG1lLmMtNDQxNi1cXHRcXHQgICAgIShpZWVlODAyMTFfdmlmX3VzYWJsZV9saW5rcyhcXHUwMDI2c2RhdGEtXFx1MDAzZXZpZikgXFx1MDAyNiBCSVQobGlua19pZCkpKVxcbi0tXFxubmV0L21hYzgwMjExL21sbWUuYy00NDM2LVxcbm5ldC9tYWM4MDIxMS9tbG1lLmM6NDQzNzpcXHRpZiAoaWVlZTgwMjExX3ZpZl9pc19tbGQoXFx1MDAyNnNkYXRhLVxcdTAwM2V2aWYpKSB7XFxubmV0L21hYzgwMjExL21sbWUuYy00NDM4LVxcdFxcdGZvciAobGlua19pZCA9IDA7XFxuLS1cXG5uZXQvbWFjODAyMTEvbWxtZS5jLTQ0NjgtXFx0LyogbGVhdmUgdGhpcyBoZXJlIHRvIG5vdCBjaGFuZ2Ugb3JkZXJpbmcgaW4gbm9uLU1MTyBjYXNlcyAqL1xcbm5ldC9tYWM4MDIxMS9tbG1lLmM6NDQ2OTpcXHRpZiAoIWllZWU4MDIxMV92aWZfaXNfbWxkKFxcdTAwMjZzZGF0YS1cXHUwMDNldmlmKSlcXG5uZXQvbWFjODAyMTEvbWxtZS5jLTQ0NzAtXFx0XFx0aWVlZTgwMjExX3JlY2FsY19zbXBzKHNkYXRhLCBcXHUwMDI2c2RhdGEtXFx1MDAzZWRlZmxpbmspO1xcbi0tXFxubmV0L21hYzgwMjExL21sbWUuYz00NDc2PXN0YXRpYyB2b2lkIGllZWU4MDIxMV9tbF9yZWNvbmZfcmVzZXQoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEpXFxuLS1cXG5uZXQvbWFjODAyMTEvbWxtZS5jLTQ0ODAtXFxubmV0L21hYzgwMjExL21sbWUuYzo0NDgxOlxcdGlmICghaWVlZTgwMjExX3ZpZl9pc19tbGQoXFx1MDAyNnNkYXRhLVxcdTAwM2V2aWYpIHx8XFxubmV0L21hYzgwMjExL21sbWUuYy00NDgyLVxcdCAgICAhKHNkYXRhLVxcdTAwM2V1Lm1nZC5yZWNvbmYuYWRkZWRfbGlua3MgfFxcbi0tXFxubmV0L21hYzgwMjExL21sbWUuYz00NTA4PXN0YXRpYyB2b2lkIGllZWU4MDIxMV9zZXRfZGlzYXNzb2Moc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsXFxuLS1cXG5uZXQvbWFjODAyMTEvbWxtZS5jLTQ2MzItXFx0LyogZmluYWxseSByZXNldCBhbGwgQlNTIC8gY29uZmlnIHBhcmFtZXRlcnMgKi9cXG5uZXQvbWFjODAyMTEvbWxtZS5jOjQ2MzM6XFx0aWYgKCFpZWVlODAyMTFfdmlmX2lzX21sZChcXHUwMDI2c2RhdGEtXFx1MDAzZXZpZikpXFxubmV0L21hYzgwMjExL21sbWUuYy00NjM0LVxcdFxcdGNoYW5nZWQgfD0gaWVlZTgwMjExX3Jlc2V0X2VycF9pbmZvKHNkYXRhKTtcXG4tLVxcbm5ldC9tYWM4MDIxMS9tbG1lLmMtNDY1Ny1cXHQgICAgICAgc2l6ZW9mKHNkYXRhLVxcdTAwM2V2aWYuYnNzX2NvbmYubXVfZ3JvdXAucG9zaXRpb24pKTtcXG5uZXQvbWFjODAyMTEvbWxtZS5jOjQ2NTg6XFx0aWYgKCFpZWVlODAyMTFfdmlmX2lzX21sZChcXHUwMDI2c2RhdGEtXFx1MDAzZXZpZikpXFxubmV0L21hYzgwMjExL21sbWUuYy00NjU5LVxcdFxcdGNoYW5nZWQgfD0gQlNTX0NIQU5HRURfTVVfR1JPVVBTO1xcbi0tXFxubmV0L21hYzgwMjExL21sbWUuYy00NjcxLVxcdHNkYXRhLVxcdTAwM2V2aWYuYnNzX2NvbmYucW9zID0gZmFsc2U7XFxubmV0L21hYzgwMjExL21sbWUuYzo0NjcyOlxcdGlmICghaWVlZTgwMjExX3ZpZl9pc19tbGQoXFx1MDAyNnNkYXRhLVxcdTAwM2V2aWYpKSB7XFxubmV0L21hYzgwMjExL21sbWUuYy00NjczLVxcdFxcdGNoYW5nZWQgfD0gQlNTX0NIQU5HRURfUU9TO1xcbi0tXFxubmV0L21hYzgwMjExL21sbWUuYz00OTcyPXN0cnVjdCBza19idWZmICppZWVlODAyMTFfYXBfcHJvYmVyZXFfZ2V0KHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxcbi0tXFxubmV0L21hYzgwMjExL21sbWUuYy00OTg0LVxcdGlmIChXQVJOX09OKHNkYXRhLVxcdTAwM2V2aWYudHlwZSAhPSBOTDgwMjExX0lGVFlQRV9TVEFUSU9OIHx8XFxubmV0L21hYzgwMjExL21sbWUuYzo0OTg1OlxcdFxcdCAgICBpZWVlODAyMTFfdmlmX2lzX21sZChcXHUwMDI2c2RhdGEtXFx1MDAzZXZpZikpKVxcbm5ldC9tYWM4MDIxMS9tbG1lLmMtNDk4Ni1cXHRcXHRyZXR1cm4gTlVMTDtcXG4tLVxcbm5ldC9tYWM4MDIxMS9tbG1lLmM9NTMwMD1zdGF0aWMgdm9pZCBpZWVlODAyMTFfZGVzdHJveV9hc3NvY19kYXRhKHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLFxcbi0tXFxubmV0L21hYzgwMjExL21sbWUuYy01MzM1LVxcbm5ldC9tYWM4MDIxMS9tbG1lLmM6NTMzNjpcXHRcXHRcXHRpZiAoaWVlZTgwMjExX3ZpZl9pc19tbGQoXFx1MDAyNnNkYXRhLVxcdTAwM2V2aWYpKVxcbm5ldC9tYWM4MDIxMS9tbG1lLmMtNTMzNy1cXHRcXHRcXHRcXHRkYXRhLmFwX21sZF9hZGRyID0gYXNzb2NfZGF0YS1cXHUwMDNlYXBfYWRkcjtcXG4tLVxcbm5ldC9tYWM4MDIxMS9tbG1lLmM9NjkyND1zdGF0aWMgYm9vbCBpZWVlODAyMTFfYXNzb2Nfc3VjY2VzcyhzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSxcXG4tLVxcbm5ldC9tYWM4MDIxMS9tbG1lLmMtNjk0OC1cXG5uZXQvbWFjODAyMTEvbWxtZS5jOjY5NDk6XFx0aWYgKGllZWU4MDIxMV92aWZfaXNfbWxkKFxcdTAwMjZzZGF0YS1cXHUwMDNldmlmKSkge1xcbm5ldC9tYWM4MDIxMS9tbG1lLmMtNjk1MC1cXHRcXHRpZiAoIWVsZW1zLVxcdTAwM2VtbF9iYXNpYylcXG4tLVxcbm5ldC9tYWM4MDIxMS9tbG1lLmMtNzAxMC1cXG5uZXQvbWFjODAyMTEvbWxtZS5jOjcwMTE6XFx0XFx0aWYgKGllZWU4MDIxMV92aWZfaXNfbWxkKFxcdTAwMjZzZGF0YS1cXHUwMDNldmlmKSlcXG5uZXQvbWFjODAyMTEvbWxtZS5jLTcwMTItXFx0XFx0XFx0bGlua19pbmZvKGxpbmssXFxuLS1cXG5uZXQvbWFjODAyMTEvbWxtZS5jPTcxMzU9c3RhdGljIHZvaWQgaWVlZTgwMjExX3J4X21nbXRfYXNzb2NfcmVzcChzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSxcXG4tLVxcbm5ldC9tYWM4MDIxMS9tbG1lLmMtNzI3Mi1cXG5uZXQvbWFjODAyMTEvbWxtZS5jOjcyNzM6XFx0XFx0aWYgKGllZWU4MDIxMV92aWZfaXNfbWxkKFxcdTAwMjZzZGF0YS1cXHUwMDNldmlmKSkge1xcbm5ldC9tYWM4MDIxMS9tbG1lLmMtNzI3NC1cXHRcXHRcXHRzdHJ1Y3QgaWVlZTgwMjExX21sZV9iYXNpY19jb21tb25faW5mbyAqY29tbW9uO1xcbi0tXFxubmV0L21hYzgwMjExL21sbWUuYy03MzM5LVxcbm5ldC9tYWM4MDIxMS9tbG1lLmM6NzM0MDpcXHRpZiAoaWVlZTgwMjExX3ZpZl9pc19tbGQoXFx1MDAyNnNkYXRhLVxcdTAwM2V2aWYpKSB7XFxubmV0L21hYzgwMjExL21sbWUuYy03MzQxLVxcdFxcdGV0aGVyX2FkZHJfY29weShhcF9tbGRfYWRkciwgc2RhdGEtXFx1MDAzZXZpZi5jZmcuYXBfYWRkcik7XFxuLS1cXG5uZXQvbWFjODAyMTEvbWxtZS5jPTc2MzE9c3RhdGljIHZvaWQgaWVlZTgwMjExX21sX3JlY29uZmlndXJhdGlvbihzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSxcXG4tLVxcbm5ldC9tYWM4MDIxMS9tbG1lLmMtNzYzOS1cXG5uZXQvbWFjODAyMTEvbWxtZS5jOjc2NDA6XFx0aWYgKCFpZWVlODAyMTFfdmlmX2lzX21sZChcXHUwMDI2c2RhdGEtXFx1MDAzZXZpZikgfHwgIWVsZW1zLVxcdTAwM2VtbF9yZWNvbmYpXFxubmV0L21hYzgwMjExL21sbWUuYy03NjQxLVxcdFxcdHJldHVybjtcXG4tLVxcbm5ldC9tYWM4MDIxMS9tbG1lLmM9NzgwMT1zdGF0aWMgdm9pZCBpZWVlODAyMTFfcHJvY2Vzc19hZHZfdHRsbShzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSxcXG4tLVxcbm5ldC9tYWM4MDIxMS9tbG1lLmMtNzgwNy1cXG5uZXQvbWFjODAyMTEvbWxtZS5jOjc4MDg6XFx0aWYgKCFpZWVlODAyMTFfdmlmX2lzX21sZChcXHUwMDI2c2RhdGEtXFx1MDAzZXZpZikpXFxubmV0L21hYzgwMjExL21sbWUuYy03ODA5LVxcdFxcdHJldHVybjtcXG4tLVxcbm5ldC9tYWM4MDIxMS9tbG1lLmM9ODA1Nj1zdGF0aWMgdm9pZCBpZWVlODAyMTFfcnhfbWdtdF9iZWFjb24oc3RydWN0IGllZWU4MDIxMV9saW5rX2RhdGEgKmxpbmssXFxuLS1cXG5uZXQvbWFjODAyMTEvbWxtZS5jLTgxMTctXFx0aWYgKGlmbWdkLVxcdTAwM2Vhc3NvY19kYXRhIFxcdTAwMjZcXHUwMDI2IGlmbWdkLVxcdTAwM2Vhc3NvY19kYXRhLVxcdTAwM2VuZWVkX2JlYWNvbiBcXHUwMDI2XFx1MDAyNlxcbm5ldC9tYWM4MDIxMS9tbG1lLmM6ODExODpcXHQgICAgIVdBUk5fT04oaWVlZTgwMjExX3ZpZl9pc19tbGQoXFx1MDAyNnNkYXRhLVxcdTAwM2V2aWYpKSBcXHUwMDI2XFx1MDAyNlxcbm5ldC9tYWM4MDIxMS9tbG1lLmMtODExOS1cXHQgICAgaWVlZTgwMjExX3J4X291cl9iZWFjb24oYnNzaWQsIGlmbWdkLVxcdTAwM2Vhc3NvY19kYXRhLVxcdTAwM2VsaW5rWzBdLmJzcykpIHtcXG4tLVxcbm5ldC9tYWM4MDIxMS9tbG1lLmM9ODU0MT1pbnQgaWVlZTgwMjExX3JlcV9uZWdfdHRsbShzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSxcXG4tLVxcbm5ldC9tYWM4MDIxMS9tbG1lLmMtODU0Ni1cXG5uZXQvbWFjODAyMTEvbWxtZS5jOjg1NDc6XFx0aWYgKCFpZWVlODAyMTFfdmlmX2lzX21sZChcXHUwMDI2c2RhdGEtXFx1MDAzZXZpZikgfHxcXG5uZXQvbWFjODAyMTEvbWxtZS5jLTg1NDgtXFx0ICAgICEoc2RhdGEtXFx1MDAzZXZpZi5jZmcubWxkX2NhcGFfb3AgXFx1MDAyNlxcbi0tXFxubmV0L21hYzgwMjExL21sbWUuYz04NzA5PXN0YXRpYyB2b2lkIGllZWU4MDIxMV9wcm9jZXNzX25lZ190dGxtX3JlcShzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSxcXG4tLVxcbm5ldC9tYWM4MDIxMS9tbG1lLmMtODcyMC1cXG5uZXQvbWFjODAyMTEvbWxtZS5jOjg3MjE6XFx0aWYgKCFpZWVlODAyMTFfdmlmX2lzX21sZChcXHUwMDI2c2RhdGEtXFx1MDAzZXZpZikpXFxubmV0L21hYzgwMjExL21sbWUuYy04NzIyLVxcdFxcdHJldHVybjtcXG4tLVxcbm5ldC9tYWM4MDIxMS9tbG1lLmM9ODc3Mz1zdGF0aWMgdm9pZCBpZWVlODAyMTFfcHJvY2Vzc19uZWdfdHRsbV9yZXMoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsXFxuLS1cXG5uZXQvbWFjODAyMTEvbWxtZS5jLTg3NzYte1xcbm5ldC9tYWM4MDIxMS9tbG1lLmM6ODc3NzpcXHRpZiAoIWllZWU4MDIxMV92aWZfaXNfbWxkKFxcdTAwMjZzZGF0YS1cXHUwMDNldmlmKSB8fFxcbm5ldC9tYWM4MDIxMS9tbG1lLmMtODc3OC1cXHQgICAgbWdtdC1cXHUwMDNldS5hY3Rpb24udHRsbV9yZXMuZGlhbG9nX3Rva2VuICE9IHNkYXRhLVxcdTAwM2V1Lm1nZC5kaWFsb2dfdG9rZW5fYWxsb2MpXFxuLS1cXG5uZXQvbWFjODAyMTEvbWxtZS5jPTg4OTU9c3RhdGljIGludCBpZWVlODAyMTFfYXV0aChzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSlcXG4tLVxcbm5ldC9tYWM4MDIxMS9tbG1lLmMtODkxMi1cXHRpZiAoYXV0aF9kYXRhLVxcdTAwM2VhbGdvcml0aG0gPT0gV0xBTl9BVVRIX0VQUEtFIFxcdTAwMjZcXHUwMDI2XFxubmV0L21hYzgwMjExL21sbWUuYzo4OTEzOlxcdCAgICBpZWVlODAyMTFfdmlmX2lzX21sZChcXHUwMDI2c2RhdGEtXFx1MDAzZXZpZikgXFx1MDAyNlxcdTAwMjZcXG5uZXQvbWFjODAyMTEvbWxtZS5jLTg5MTQtXFx0ICAgICFjZmc4MDIxMV9maW5kX2V4dF9lbGVtKFdMQU5fRUlEX0VYVF9FSFRfTVVMVElfTElOSyxcXG4tLVxcbm5ldC9tYWM4MDIxMS9tbG1lLmM9OTg0Mj1pbnQgaWVlZTgwMjExX21nZF9hdXRoKHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLFxcbi0tXFxubmV0L21hYzgwMjExL21sbWUuYy0xMDA0MC0gZXJyX2NsZWFyOlxcbm5ldC9tYWM4MDIxMS9tbG1lLmM6MTAwNDE6XFx0aWYgKCFpZWVlODAyMTFfdmlmX2lzX21sZChcXHUwMDI2c2RhdGEtXFx1MDAzZXZpZikpIHtcXG5uZXQvbWFjODAyMTEvbWxtZS5jLTEwMDQyLVxcdFxcdGV0aF96ZXJvX2FkZHIoc2RhdGEtXFx1MDAzZWRlZmxpbmsudS5tZ2QuYnNzaWQpO1xcbi0tXFxubmV0L21hYzgwMjExL21sbWUuYz0xMDg2OD1pZWVlODAyMTFfcHJvY2Vzc19tbF9yZWNvbmZfcmVzcChzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSxcXG4tLVxcbm5ldC9tYWM4MDIxMS9tbG1lLmMtMTA4ODQtXFxubmV0L21hYzgwMjExL21sbWUuYzoxMDg4NTpcXHRpZiAoIWllZWU4MDIxMV92aWZfaXNfbWxkKFxcdTAwMjZzZGF0YS1cXHUwMDNldmlmKSB8fFxcbm5ldC9tYWM4MDIxMS9tbG1lLmMtMTA4ODYtXFx0ICAgIGxlbiBcXHUwMDNjIElFRUU4MDIxMV9NSU5fQUNUSU9OX1NJWkUobWxfcmVjb25mX3Jlc3ApIHx8XFxuLS1cXG5uZXQvbWFjODAyMTEvbWxtZS5jPTExMzMwPWludCBpZWVlODAyMTFfbWdkX2Fzc29jX21sX3JlY29uZihzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSxcXG4tLVxcbm5ldC9tYWM4MDIxMS9tbG1lLmMtMTEzNDEtXFxubmV0L21hYzgwMjExL21sbWUuYzoxMTM0MjpcXHRpZiAoIWllZWU4MDIxMV92aWZfaXNfbWxkKFxcdTAwMjZzZGF0YS1cXHUwMDNldmlmKSB8fFxcbm5ldC9tYWM4MDIxMS9tbG1lLmMtMTEzNDMtXFx0ICAgICEoc2RhdGEtXFx1MDAzZXZpZi5jZmcubWxkX2NhcGFfb3AgXFx1MDAyNlxcbi0tXFxubmV0L21hYzgwMjExL21sbWUuYz0xMTU1ND1zdGF0aWMgYm9vbCBpZWVlODAyMTFfbWdkX2VwY3Nfc3VwcChzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSlcXG4tLVxcbm5ldC9tYWM4MDIxMS9tbG1lLmMtMTE1NjAtXFxubmV0L21hYzgwMjExL21sbWUuYzoxMTU2MTpcXHRpZiAoIWllZWU4MDIxMV92aWZfaXNfbWxkKFxcdTAwMjZzZGF0YS1cXHUwMDNldmlmKSlcXG5uZXQvbWFjODAyMTEvbWxtZS5jLTExNTYyLVxcdFxcdHJldHVybiBmYWxzZTtcXG4tLVxcbm5ldC9tYWM4MDIxMS9tbG1lLmM9MTE2Mjg9c3RhdGljIHZvaWQgaWVlZTgwMjExX21sX2VwY3Moc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsXFxuLS1cXG5uZXQvbWFjODAyMTEvbWxtZS5jLTExNjM2LVxcbm5ldC9tYWM4MDIxMS9tbG1lLmM6MTE2Mzc6XFx0aWYgKCFpZWVlODAyMTFfdmlmX2lzX21sZChcXHUwMDI2c2RhdGEtXFx1MDAzZXZpZikgfHwgIWVsZW1zLVxcdTAwM2VtbF9lcGNzKVxcbm5ldC9tYWM4MDIxMS9tbG1lLmMtMTE2MzgtXFx0XFx0cmV0dXJuO1xcbi0tXFxubmV0L21hYzgwMjExL21sbWUuYz0xMTc0Nj1zdGF0aWMgdm9pZCBpZWVlODAyMTFfcHJvY2Vzc19lcGNzX3RlYXJkb3duKHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLFxcbi0tXFxubmV0L21hYzgwMjExL21sbWUuYy0xMTc0OS17XFxubmV0L21hYzgwMjExL21sbWUuYzoxMTc1MDpcXHRpZiAoIWllZWU4MDIxMV92aWZfaXNfbWxkKFxcdTAwMjZzZGF0YS1cXHUwMDNldmlmKSB8fFxcbm5ldC9tYWM4MDIxMS9tbG1lLmMtMTE3NTEtXFx0ICAgICFzZGF0YS1cXHUwMDNldS5tZ2QuZXBjcy5lbmFibGVkKVxcbi0tXFxubmV0L21hYzgwMjExL3JhdGUuYz0zMT12b2lkIHJhdGVfY29udHJvbF9yYXRlX2luaXQoc3RydWN0IGxpbmtfc3RhX2luZm8gKmxpbmtfc3RhKVxcbi0tXFxubmV0L21hYzgwMjExL3JhdGUuYy00NC1cXHQvKiBTVyByYXRlIGNvbnRyb2wgaXNuJ3Qgc3VwcG9ydGVkIHdpdGggTUxPIHJpZ2h0IG5vdyAqL1xcbm5ldC9tYWM4MDIxMS9yYXRlLmM6NDU6XFx0aWYgKFdBUk5fT04oaWVlZTgwMjExX3ZpZl9pc19tbGQoXFx1MDAyNnN0YS1cXHUwMDNlc2RhdGEtXFx1MDAzZXZpZikpKVxcbm5ldC9tYWM4MDIxMS9yYXRlLmMtNDYtXFx0XFx0cmV0dXJuO1xcbi0tXFxubmV0L21hYzgwMjExL3J4LmM9MTUyMT1pZWVlODAyMTFfcnhfaF9jaGVja19kdXAoc3RydWN0IGllZWU4MDIxMV9yeF9kYXRhICpyeClcXG4tLVxcbm5ldC9tYWM4MDIxMS9yeC5jLTE1NTAtXFxubmV0L21hYzgwMjExL3J4LmM6MTU1MTpcXHRcXHRpZiAoIWllZWU4MDIxMV92aWZfaXNfbWxkKFxcdTAwMjZzZGF0YS1cXHUwMDNldmlmKSB8fFxcbm5ldC9tYWM4MDIxMS9yeC5jLTE1NTItXFx0XFx0ICAgIHNkYXRhLVxcdTAwM2V2aWYudHlwZSAhPSBOTDgwMjExX0lGVFlQRV9TVEFUSU9OKVxcbi0tXFxubmV0L21hYzgwMjExL3J4LmM9MjY4ND1ib29sIGllZWU4MDIxMV9pc19vdXJfYWRkcihzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSxcXG4tLVxcbm5ldC9tYWM4MDIxMS9yeC5jLTI2OTItXFxubmV0L21hYzgwMjExL3J4LmM6MjY5MzpcXHRpZiAoIWllZWU4MDIxMV92aWZfaXNfbWxkKFxcdTAwMjZzZGF0YS1cXHUwMDNldmlmKSlcXG5uZXQvbWFjODAyMTEvcnguYy0yNjk0LVxcdFxcdHJldHVybiBmYWxzZTtcXG4tLVxcbm5ldC9tYWM4MDIxMS9yeC5jPTQzNDE9c3RhdGljIGJvb2wgaWVlZTgwMjExX3J4X2RhdGFfc2V0X3N0YShzdHJ1Y3QgaWVlZTgwMjExX3J4X2RhdGEgKnJ4LFxcbi0tXFxubmV0L21hYzgwMjExL3J4LmMtNDM1Ni1cXHRpZiAobGlua19pZCBcXHUwMDNjIDApIHtcXG5uZXQvbWFjODAyMTEvcnguYzo0MzU3OlxcdFxcdGlmIChpZWVlODAyMTFfdmlmX2lzX21sZChcXHUwMDI2cngtXFx1MDAzZXNkYXRhLVxcdTAwM2V2aWYpIFxcdTAwMjZcXHUwMDI2XFxubmV0L21hYzgwMjExL3J4LmMtNDM1OC1cXHRcXHQgICAgc3RhIFxcdTAwMjZcXHUwMDI2ICFzdGEtXFx1MDAzZXN0YS52YWxpZF9saW5rcylcXG4tLVxcbm5ldC9tYWM4MDIxMS9yeC5jPTUyOTY9c3RhdGljIGJvb2wgaWVlZTgwMjExX3J4X2Zvcl9pbnRlcmZhY2Uoc3RydWN0IGllZWU4MDIxMV9yeF9kYXRhICpyeCxcXG4tLVxcbm5ldC9tYWM4MDIxMS9yeC5jLTUzMTktXFx0XFx0XFx0bGlua19pZCA9IHN0YXR1cy1cXHUwMDNlbGlua19pZDtcXG5uZXQvbWFjODAyMTEvcnguYzo1MzIwOlxcdFxcdH0gZWxzZSBpZiAoaWVlZTgwMjExX3ZpZl9pc19tbGQoXFx1MDAyNnJ4LVxcdTAwM2VzZGF0YS1cXHUwMDNldmlmKSBcXHUwMDI2XFx1MDAyNlxcbm5ldC9tYWM4MDIxMS9yeC5jLTUzMjEtXFx0XFx0XFx0ICAgc3RhdHVzLVxcdTAwM2VmcmVxKSB7XFxuLS1cXG5uZXQvbWFjODAyMTEvc2Nhbi5jPTE2OD1pZWVlODAyMTFfYnNzX2luZm9fdXBkYXRlKHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsLFxcbi0tXFxubmV0L21hYzgwMjExL3NjYW4uYy0yMDUtXFx0XFx0ICovXFxubmV0L21hYzgwMjExL3NjYW4uYzoyMDY6XFx0XFx0aWYgKGllZWU4MDIxMV92aWZfaXNfbWxkKFxcdTAwMjZzY2FuX3NkYXRhLVxcdTAwM2V2aWYpKSB7XFxubmV0L21hYzgwMjExL3NjYW4uYy0yMDctXFx0XFx0XFx0aWYgKHJ4X3N0YXR1cy1cXHUwMDNlbGlua192YWxpZCkge1xcbi0tXFxubmV0L21hYzgwMjExL3NjYW4uYz03MzE9c3RhdGljIGludCBfX2llZWU4MDIxMV9zdGFydF9zY2FuKHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLFxcbi0tXFxubmV0L21hYzgwMjExL3NjYW4uYy03NDUtXFx0ICovXFxubmV0L21hYzgwMjExL3NjYW4uYzo3NDY6XFx0aWYgKGllZWU4MDIxMV92aWZfaXNfbWxkKFxcdTAwMjZzZGF0YS1cXHUwMDNldmlmKSBcXHUwMDI2XFx1MDAyNiByZXEtXFx1MDAzZXRzZl9yZXBvcnRfbGlua19pZCBcXHUwMDNlPSAwIFxcdTAwMjZcXHUwMDI2XFxubmV0L21hYzgwMjExL3NjYW4uYy03NDctXFx0ICAgICEoc2RhdGEtXFx1MDAzZXZpZi5hY3RpdmVfbGlua3MgXFx1MDAyNiBCSVQocmVxLVxcdTAwM2V0c2ZfcmVwb3J0X2xpbmtfaWQpKSlcXG4tLVxcbm5ldC9tYWM4MDIxMS90eC5jPTgyMD1pZWVlODAyMTFfdHhfaF9zZXF1ZW5jZShzdHJ1Y3QgaWVlZTgwMjExX3R4X2RhdGEgKnR4KVxcbi0tXFxubmV0L21hYzgwMjExL3R4LmMtODQ3LVxcdGlmICh1bmxpa2VseShpc19tdWx0aWNhc3RfZXRoZXJfYWRkcihoZHItXFx1MDAzZWFkZHIxKSBcXHUwMDI2XFx1MDAyNlxcbm5ldC9tYWM4MDIxMS90eC5jOjg0ODpcXHRcXHQgICAgIGllZWU4MDIxMV92aWZfaXNfbWxkKGluZm8tXFx1MDAzZWNvbnRyb2wudmlmKSBcXHUwMDI2XFx1MDAyNlxcbm5ldC9tYWM4MDIxMS90eC5jLTg0OS1cXHRcXHQgICAgIGluZm8tXFx1MDAzZWNvbnRyb2wudmlmLVxcdTAwM2V0eXBlID09IE5MODAyMTFfSUZUWVBFX0FQKSkge1xcbi0tXFxubmV0L21hYzgwMjExL3R4LmM9MjYzMT1zdGF0aWMgc3RydWN0IHNrX2J1ZmYgKmllZWU4MDIxMV9idWlsZF9oZHIoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsXFxuLS1cXG5uZXQvbWFjODAyMTEvdHguYy0yNjY3LVxcbm5ldC9tYWM4MDIxMS90eC5jOjI2Njg6XFx0aWYgKCFpZWVlODAyMTFfdmlmX2lzX21sZChcXHUwMDI2c2RhdGEtXFx1MDAzZXZpZikpXFxubmV0L21hYzgwMjExL3R4LmMtMjY2OS1cXHRcXHRjaGFuY3R4X2NvbmYgPVxcbi0tXFxubmV0L21hYzgwMjExL3R4LmMtMjY4NC1cXHRcXHR9XFxubmV0L21hYzgwMjExL3R4LmM6MjY4NTpcXHRcXHRpZiAoIWllZWU4MDIxMV92aWZfaXNfbWxkKFxcdTAwMjZzZGF0YS1cXHUwMDNldmlmKSkge1xcbm5ldC9tYWM4MDIxMS90eC5jLTI2ODYtXFx0XFx0XFx0c3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqYXBfc2RhdGE7XFxuLS1cXG5uZXQvbWFjODAyMTEvdHguYy0yNzAyLVxcbm5ldC9tYWM4MDIxMS90eC5jOjI3MDM6XFx0XFx0aWYgKGllZWU4MDIxMV92aWZfaXNfbWxkKFxcdTAwMjZzZGF0YS1cXHUwMDNldmlmKSBcXHUwMDI2XFx1MDAyNiBzdGEgXFx1MDAyNlxcdTAwMjYgIXN0YS1cXHUwMDNlc3RhLm1sbykge1xcbm5ldC9tYWM4MDIxMS90eC5jLTI3MDQtXFx0XFx0XFx0c3RydWN0IGllZWU4MDIxMV9saW5rX2RhdGEgKmxpbms7XFxuLS1cXG5uZXQvbWFjODAyMTEvdHguYy0yODgxLVxcdFxcdFxcdGJhbmQgPSBOVU1fTkw4MDIxMV9CQU5EUztcXG5uZXQvbWFjODAyMTEvdHguYzoyODgyOlxcdFxcdH0gZWxzZSBpZiAoIWllZWU4MDIxMV92aWZfaXNfbWxkKFxcdTAwMjZzZGF0YS1cXHUwMDNldmlmKSkge1xcbm5ldC9tYWM4MDIxMS90eC5jLTI4ODMtXFx0XFx0XFx0cmV0ID0gLUVOT1RDT05OO1xcbi0tXFxubmV0L21hYzgwMjExL3R4LmM9MzA3OD12b2lkIGllZWU4MDIxMV9jaGVja19mYXN0X3htaXQoc3RydWN0IHN0YV9pbmZvICpzdGEpXFxuLS1cXG5uZXQvbWFjODAyMTEvdHguYy0zMTI3LVxcbm5ldC9tYWM4MDIxMS90eC5jOjMxMjg6XFx0aWYgKCFpZWVlODAyMTFfdmlmX2lzX21sZChcXHUwMDI2c2RhdGEtXFx1MDAzZXZpZikpIHtcXG5uZXQvbWFjODAyMTEvdHguYy0zMTI5LVxcdFxcdHJjdV9yZWFkX2xvY2soKTtcXG4tLVxcbm5ldC9tYWM4MDIxMS90eC5jLTMyMDYtXFx0XFx0YnVpbGQuZGFfb2ZmcyA9IG9mZnNldG9mKHN0cnVjdCBpZWVlODAyMTFfaGRyLCBhZGRyMSk7XFxubmV0L21hYzgwMjExL3R4LmM6MzIwNzpcXHRcXHRpZiAoc3RhLVxcdTAwM2VzdGEubWxvIHx8ICFpZWVlODAyMTFfdmlmX2lzX21sZChcXHUwMDI2c2RhdGEtXFx1MDAzZXZpZikpIHtcXG5uZXQvbWFjODAyMTEvdHguYy0zMjA4LVxcdFxcdFxcdG1lbWNweShoZHItXFx1MDAzZWFkZHIyLCBzZGF0YS1cXHUwMDNldmlmLmFkZHIsIEVUSF9BTEVOKTtcXG4tLVxcbm5ldC9tYWM4MDIxMS90eC5jPTQ1NjE9bmV0ZGV2X3R4X3QgaWVlZTgwMjExX3N1YmlmX3N0YXJ0X3htaXQoc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4tLVxcbm5ldC9tYWM4MDIxMS90eC5jLTQ1ODMtXFx0XFx0XFx0XFx0XFx0XFx0ICAgICBOVUxMKTtcXG5uZXQvbWFjODAyMTEvdHguYzo0NTg0OlxcdH0gZWxzZSBpZiAoaWVlZTgwMjExX3ZpZl9pc19tbGQoXFx1MDAyNnNkYXRhLVxcdTAwM2V2aWYpIFxcdTAwMjZcXHUwMDI2XFxubmV0L21hYzgwMjExL3R4LmMtNDU4NS1cXHRcXHQgICAoKHNkYXRhLVxcdTAwM2V2aWYudHlwZSA9PSBOTDgwMjExX0lGVFlQRV9BUCBcXHUwMDI2XFx1MDAyNlxcbi0tXFxubmV0L21hYzgwMjExL3R4LmM9NDc1MT1zdGF0aWMgYm9vbCBpZWVlODAyMTFfY2hlY2tfbWNhc3Rfb2ZmbG9hZChzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSxcXG4tLVxcbm5ldC9tYWM4MDIxMS90eC5jLTQ3NTUtXFxubmV0L21hYzgwMjExL3R4LmM6NDc1NjpcXHRpZiAoKGllZWU4MDIxMV92aWZfaXNfbWxkKFxcdTAwMjZzZGF0YS1cXHUwMDNldmlmKSBcXHUwMDI2XFx1MDAyNlxcbm5ldC9tYWM4MDIxMS90eC5jLTQ3NTctXFx0ICAgICAoc2RhdGEtXFx1MDAzZXZpZi50eXBlID09IE5MODAyMTFfSUZUWVBFX0FQIFxcdTAwMjZcXHUwMDI2XFxuLS1cXG5uZXQvbWFjODAyMTEvdHguYz00OTExPXN0YXRpYyBib29sIGllZWU4MDIxMV90eF9wZW5kaW5nX3NrYihzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbCxcXG4tLVxcbm5ldC9tYWM4MDIxMS90eC5jLTQ5MjQtXFx0XFx0LyogdXBkYXRlIGJhbmQgb25seSBmb3Igbm9uLU1MRCAqL1xcbm5ldC9tYWM4MDIxMS90eC5jOjQ5MjU6XFx0XFx0aWYgKCFpZWVlODAyMTFfdmlmX2lzX21sZChcXHUwMDI2c2RhdGEtXFx1MDAzZXZpZikpIHtcXG5uZXQvbWFjODAyMTEvdHguYy00OTI2LVxcdFxcdFxcdGNoYW5jdHhfY29uZiA9XFxuLS1cXG5uZXQvbWFjODAyMTEvdHguYz02Mzk2PXZvaWQgX19pZWVlODAyMTFfdHhfc2tiX3RpZF9iYW5kKHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLFxcbi0tXFxubmV0L21hYzgwMjExL3R4LmMtNjQxMy1cXG5uZXQvbWFjODAyMTEvdHguYzo2NDE0OlxcdGlmICghaWVlZTgwMjExX3ZpZl9pc19tbGQoXFx1MDAyNnNkYXRhLVxcdTAwM2V2aWYpKSB7XFxubmV0L21hYzgwMjExL3R4LmMtNjQxNS1cXHRcXHRsaW5rID0gMDtcXG4tLVxcbm5ldC9tYWM4MDIxMS90eC5jPTY0NTM9dm9pZCBpZWVlODAyMTFfdHhfc2tiX3RpZChzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSxcXG4tLVxcbm5ldC9tYWM4MDIxMS90eC5jLTY0NjItXFx0XFx0YmFuZCA9IE5VTV9OTDgwMjExX0JBTkRTO1xcbm5ldC9tYWM4MDIxMS90eC5jOjY0NjM6XFx0fSBlbHNlIGlmICghaWVlZTgwMjExX3ZpZl9pc19tbGQoXFx1MDAyNnNkYXRhLVxcdTAwM2V2aWYpKSB7XFxubmV0L21hYzgwMjExL3R4LmMtNjQ2NC1cXHRcXHRXQVJOX09OKGxpbmtfaWQgXFx1MDAzZT0gMCk7XFxuLS1cXG5uZXQvbWFjODAyMTEvdXRpbC5jPTExMzQ9dm9pZCBpZWVlODAyMTFfc2VuZF9hdXRoKHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLFxcbi0tXFxubmV0L21hYzgwMjExL3V0aWwuYy0xMTQyLVxcdHN0cnVjdCBpZWVlODAyMTFfbWdtdCAqbWdtdDtcXG5uZXQvbWFjODAyMTEvdXRpbC5jOjExNDM6XFx0Ym9vbCBtdWx0aV9saW5rID0gaWVlZTgwMjExX3ZpZl9pc19tbGQoXFx1MDAyNnNkYXRhLVxcdTAwM2V2aWYpO1xcbm5ldC9tYWM4MDIxMS91dGlsLmMtMTE0NC1cXHRzdHJ1Y3Qge1xcbi0tXFxubmV0L21hYzgwMjExL3V0aWwuYz0xODgyPWludCBpZWVlODAyMTFfcmVjb25maWcoc3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwpXFxuLS1cXG5uZXQvbWFjODAyMTEvdXRpbC5jLTIwNzEtXFxubmV0L21hYzgwMjExL3V0aWwuYzoyMDcyOlxcdFxcdGlmIChpZWVlODAyMTFfdmlmX2lzX21sZChcXHUwMDI2c2RhdGEtXFx1MDAzZXZpZikpIHtcXG5uZXQvbWFjODAyMTEvdXRpbC5jLTIwNzMtXFx0XFx0XFx0c3RydWN0IGllZWU4MDIxMV9ic3NfY29uZiAqb2xkW0lFRUU4MDIxMV9NTERfTUFYX05VTV9MSU5LU10gPSB7XFxuLS1cXG5uZXQvbWFjODAyMTEvdXRpbC5jLTIxMjgtXFxubmV0L21hYzgwMjExL3V0aWwuYzoyMTI5OlxcdFxcdGlmICghaWVlZTgwMjExX3ZpZl9pc19tbGQoXFx1MDAyNnNkYXRhLVxcdTAwM2V2aWYpKVxcbm5ldC9tYWM4MDIxMS91dGlsLmMtMjEzMC1cXHRcXHRcXHRjaGFuZ2VkIHw9IEJTU19DSEFOR0VEX0lETEU7XFxuLS1cXG5uZXQvbWFjODAyMTEvdXRpbC5jLTIxMzMtXFx0XFx0Y2FzZSBOTDgwMjExX0lGVFlQRV9TVEFUSU9OOlxcbm5ldC9tYWM4MDIxMS91dGlsLmM6MjEzNDpcXHRcXHRcXHRpZiAoIWllZWU4MDIxMV92aWZfaXNfbWxkKFxcdTAwMjZzZGF0YS1cXHUwMDNldmlmKSkge1xcbm5ldC9tYWM4MDIxMS91dGlsLmMtMjEzNS1cXHRcXHRcXHRcXHRjaGFuZ2VkIHw9IEJTU19DSEFOR0VEX0FTU09DIHxcXG4tLVxcbm5ldC9tYWM4MDIxMS91dGlsLmMtMjE3MS1cXG5uZXQvbWFjODAyMTEvdXRpbC5jOjIxNzI6XFx0XFx0XFx0aWYgKGllZWU4MDIxMV92aWZfaXNfbWxkKFxcdTAwMjZzZGF0YS1cXHUwMDNldmlmKSlcXG5uZXQvbWFjODAyMTEvdXRpbC5jLTIxNzMtXFx0XFx0XFx0XFx0aWVlZTgwMjExX3ZpZl9jZmdfY2hhbmdlX25vdGlmeShzZGF0YSxcXG4tLVxcbm5ldC9tYWM4MDIxMS91dGlsLmMtMjE4NS1cXG5uZXQvbWFjODAyMTEvdXRpbC5jOjIxODY6XFx0XFx0XFx0XFx0aWYgKGllZWU4MDIxMV92aWZfaXNfbWxkKFxcdTAwMjZzZGF0YS1cXHUwMDNldmlmKSkge1xcbm5ldC9tYWM4MDIxMS91dGlsLmMtMjE4Ny1cXHRcXHRcXHRcXHRcXHRpZWVlODAyMTFfcmVjb25maWdfYXBfbGlua3MobG9jYWwsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIyVDE3OjUyOjU2LjMzOTgzMDkyOVoiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozOTg5OTQ5ODkwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGFuIGV4cGVydCdzIGludGVybmFsIG1vbm9sb2d1ZTpcblxuKipJbnZlc3RpZ2F0aW5nIHRoZSBNTE8gTGluayoqXG5cbkFscmlnaHQsIHNvIGBpZWVlODAyMTFfdmlmX2lzX21sZGAuLi4gdGhhdCBzZWVtcyBwcmV0dHkgY2xlYXJseSB0aWVkIHRvIE11bHRpLUxpbmsgT3BlcmF0aW9uLCByaWdodD8gTm8gc3VycHJpc2VzIHRoZXJlLiBCdXQgSSBuZWVkIHRvIGdldCBhIGJldHRlciBoYW5kbGUgb24gdGhlIHNwZWNpZmljcyBvZiB0aGlzIGltcGxlbWVudGF0aW9uLiBUaGUgcXVlc3Rpb24gdGhhdCByZWFsbHkganVtcHMgb3V0IGlzLCBpcyB0aGVyZSBhIGRlZGljYXRlZCBjb25maWd1cmF0aW9uIGZsYWcgb3Igc2V0dGluZyBzcGVjaWZpY2FsbHkgZGVkaWNhdGVkIHRvIE1MTyB0aGF0IEkgbmVlZCB0byBiZSBhd2FyZSBvZj8gSSBuZWVkIHRvIGNoZWNrIHRoZSByZWxldmFudCBjb25maWd1cmF0aW9uIGZpbGVzLCBtYXliZSBzb21lIGtlcm5lbCBkb2N1bWVudGF0aW9uLCBhbmQgdGhlIGJyb2FkZXIgd2lyZWxlc3MgZHJpdmVyIGNvZGViYXNlLiBJJ20gZ29pbmcgdG8gZGlnIGluIGFuZCBzZWUgd2hhdCBjb25maWd1cmF0aW9uIHBhcmFtZXRlcnMgbWlnaHQgYmUgaW1wYWN0aW5nIHRoaXMgZnVuY3Rpb24sIG9yIGV2ZW4gdXRpbGl6aW5nIHRoZSBmdW5jdGlvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6MTg3OTEsIk91dHB1dFRva2VucyI6MzMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0NSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yMlQxNzo1MzowMC4zMjk3ODM5MTlaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjExOTU0NzAyNiwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiTUxPXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9tYWM4MDIxMS9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yMlQxNzo1MzowMC40NDkzNDA4NDVaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTY4Mzk4MjkwODgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudCBvZiB0aGUgbWFjODAyMTEgUGF0Y2gqKlxuXG5Pa2F5LCBzbyB0aGVyZSdzIG5vIHNwZWNpZmljIGNvbmZpZ3VyYXRpb24gaXRlbSBkaXJlY3RseSByZWxhdGVkIHRvIE1MTyBpbiBtYWM4MDIxMSwgd2hpY2ggaXNuJ3QgYSBzdXJwcmlzZS4gVGhhdCBiZWluZyBzYWlkLCBJJ3ZlIHJldmlld2VkIHRoaXMgcGF0Y2gsIGFuZCBJJ20gcHJldHR5IGNvbmZpZGVudCBpdCdzIGZ1bmN0aW9uYWwgYW5kIGFic29sdXRlbHkgd29ydGggZnV6emluZy4gSSd2ZSBwaW5wb2ludGVkIGEgZmV3IGZvY3VzIHN5bWJvbHMgZm9yIHRoZSBmdXp6aW5nIGNhbXBhaWduOiBgc3RhX2FwcGx5X2F1dGhfZmxhZ3NgLCBgc3RhX2FwcGx5X3BhcmFtZXRlcnNgLCBgaWVlZTgwMjExX2FkZF9zdGF0aW9uYCwgYW5kIGBpZWVlODAyMTFfY2hhbmdlX3N0YXRpb25gLiBJbml0aWFsbHksIEkgd2FzIGEgYml0IGNvbmNlcm5lZCBhYm91dCBpbmNsdWRpbmcgYHN0YV9hcHBseV9hdXRoX2ZsYWdzYCBiZWNhdXNlIGl0J3MgYSBzdGF0aWMgZnVuY3Rpb24sIGJ1dCBpdCdzIGZpbmUuXG5cbk5vdywgYSBxdWljayBjaGVjayB0byBzZWUgaWYgd2UndmUgZ290IHRoZSBuZWNlc3NhcnkgY29uZmlndXJhdGlvbiBpcyBpbiBvcmRlci4gWWVhaCwgYE1BQzgwMjExYCBhbG9uZSB3aWxsIHN1ZmZpY2UgZm9yIHRoaXMgcGF0Y2guXG5cbkxldCBtZSBqdXN0IGRvdWJsZS1jaGVjayB0aGUgY29kZSBzbmlwcGV0IGFnYWluOlxuXG5gYGBjXG5cdFx0aWYgKCF0ZXN0X3N0YV9mbGFnKHN0YSwgV0xBTl9TVEFfUkFURV9DT05UUk9MKSkge1xuXHRcdFx0aWYgKCFpZWVlODAyMTFfdmlmX2lzX21sZChcdTAwMjZzdGEtXHUwMDNlc2RhdGEtXHUwMDNldmlmKSBcdTAwMjZcdTAwMjZcblx0XHRcdCAgICAhcmN1X2FjY2Vzc19wb2ludGVyKHN0YS1cdTAwM2VzZGF0YS1cdTAwM2V2aWYuYnNzX2NvbmYuY2hhbmN0eF9jb25mKSlcblx0XHRcdFx0cmV0dXJuIC1FSU5WQUw7XG5cblx0XHRcdHJhdGVfY29udHJvbF9yYXRlX2luaXRfYWxsX2xpbmtzKHN0YSk7XG5cdFx0fVxuYGBgXG5cblJpZ2h0LCBpdCdzIGEgbWlub3IgYnVnIGZpeC4gSXQgaW50cm9kdWNlcyBhIGNoZWNrIHRoYXQgcmV0dXJucyBgLUVJTlZBTGAgaWYgYGNoYW5jdHhfY29uZmAgaXMgTlVMTCBmb3Igbm9uLU1MRCBpbnRlcmZhY2VzIHdoZW4gcmF0ZSBjb250cm9sIGlzbid0IGluaXRpYWxpemVkLiBUaGlzIGlzIGFsbCBhYm91dCBwcmV2ZW50aW5nIGEgcG90ZW50aWFsIE5VTEwgcG9pbnRlciBkZXJlZmVyZW5jZSBvciBhIHNpbWlsYXIgaXNzdWUgZG93biB0aGUgbGluZSwgc3BlY2lmaWNhbGx5IGluIGByYXRlX2NvbnRyb2xfcmF0ZV9pbml0X2FsbF9saW5rc2Agb3IgcmVsYXRlZCBmdW5jdGlvbnMuIFRoaXMgaXMgYSBzdWJ0bGUgYnV0IGltcG9ydGFudCBwaWVjZSBvZiB2YWxpZGF0aW9uLlxuXG5TbywgaGVyZSdzIHdoYXQgSSdtIGdvaW5nIHRvIHNldDpcblxuKiAgICoqV29ydGhGdXp6aW5nKio6IGB0cnVlYFxuKiAgICoqRm9jdXNTeW1ib2xzKio6IGBbXCJzdGFfYXBwbHlfYXV0aF9mbGFnc1wiLCBcInN0YV9hcHBseV9wYXJhbWV0ZXJzXCIsIFwiaWVlZTgwMjExX2FkZF9zdGF0aW9uXCIsIFwiaWVlZTgwMjExX2NoYW5nZV9zdGF0aW9uXCJdYFxuKiAgICoqRW5hYmxlQ29uZmlncyoqOiBgW1wiTUFDODAyMTFcIl1gXG4qICAgKipSZWFzb25pbmcqKjogXCJUaGUgcGF0Y2ggYWRkcyBhIGNydWNpYWwgdmFsaWRhdGlvbiBjaGVjayBpbiBgc3RhX2FwcGx5X2F1dGhfZmxhZ3NgIHRvIHByZXZlbnQgYW4gaW52YWxpZCBzdGF0ZSB3aGVuIHJhdGUgY29udHJvbCBpcyBub3QgaW5pdGlhbGl6ZWQgZm9yIG5vbi1NTEQgaW50ZXJmYWNlcy4gVGhpcyBmdW5jdGlvbmFsaXR5IGlzIGFjY2Vzc2libGUgdmlhIG5sODAyMTEgY29tbWFuZHMsIHN1Y2ggYXMgYE5FV19TVEFUSU9OYCBhbmQgYFNFVF9TVEFUSU9OYCwgYW5kIG1vZGlmaWVzIGNvcmUgbWFjODAyMTEgbG9naWMuIFRoaXMgbWVhbnMgdGhhdCwgZGVzcGl0ZSB0aGUgYXBwYXJlbnQgc2ltcGxpY2l0eSwgZnV6emluZyBpcyB2ZXJ5IHZhbHVhYmxlIGhlcmUuXCJcblxuXG4iLCJJbnB1dFRva2VucyI6MTkwNDEsIk91dHB1dFRva2VucyI6MTU1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDY3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIyVDE3OjUzOjE3LjI4OTE3NTU5M1oiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIwODY2NTM1MywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTUFDODAyMTFcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJzdGFfYXBwbHlfYXV0aF9mbGFnc1wiLFxuICAgIFwic3RhX2FwcGx5X3BhcmFtZXRlcnNcIixcbiAgICBcImllZWU4MDIxMV9hZGRfc3RhdGlvblwiLFxuICAgIFwiaWVlZTgwMjExX2NoYW5nZV9zdGF0aW9uXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBhIHZhbGlkYXRpb24gY2hlY2sgaW4gYHN0YV9hcHBseV9hdXRoX2ZsYWdzYCB0byBwcmV2ZW50IGFuIGludmFsaWQgc3RhdGUgd2hlbiByYXRlIGNvbnRyb2wgaXMgbm90IGluaXRpYWxpemVkIGZvciBub24tTUxEIGludGVyZmFjZXMuIFRoaXMgaXMgcmVhY2hhYmxlIHZpYSBubDgwMjExIGNvbW1hbmRzIChlLmcuLCBORVdfU1RBVElPTiwgU0VUX1NUQVRJT04pIGFuZCBtb2RpZmllcyBjb3JlIG1hYzgwMjExIGxvZ2ljLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk1BQzgwMjExXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwic3RhX2FwcGx5X2F1dGhfZmxhZ3NcIixcbiAgICBcInN0YV9hcHBseV9wYXJhbWV0ZXJzXCIsXG4gICAgXCJpZWVlODAyMTFfYWRkX3N0YXRpb25cIixcbiAgICBcImllZWU4MDIxMV9jaGFuZ2Vfc3RhdGlvblwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgYSB2YWxpZGF0aW9uIGNoZWNrIGluIGBzdGFfYXBwbHlfYXV0aF9mbGFnc2AgdG8gcHJldmVudCBhbiBpbnZhbGlkIHN0YXRlIHdoZW4gcmF0ZSBjb250cm9sIGlzIG5vdCBpbml0aWFsaXplZCBmb3Igbm9uLU1MRCBpbnRlcmZhY2VzLiBUaGlzIGlzIHJlYWNoYWJsZSB2aWEgbmw4MDIxMSBjb21tYW5kcyAoZS5nLiwgTkVXX1NUQVRJT04sIFNFVF9TVEFUSU9OKSBhbmQgbW9kaWZpZXMgY29yZSBtYWM4MDIxMSBsb2dpYy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },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-workflowwwthk[1] Phase: Succeeded StartedAt: 2026-07-22 17:53:29 +0000 UTC FinishedAt: 2026-07-22 17:53:29 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwwthk[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-07-22 17:53:29 +0000 UTC FinishedAt: 2026-07-22 17:53:29 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwwthk[2] Phase: Succeeded StartedAt: 2026-07-22 17:53:29 +0000 UTC FinishedAt: 2026-07-22 22:38:48 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwwthk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["sta_apply_auth_flags","sta_apply_parameters","ieee80211_add_station","ieee80211_change_station"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"f8ac1f48-e023-4ce5-93cc-375ffa07b351","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-07-22 17:53:29 +0000 UTC FinishedAt: 2026-07-22 22:38:48 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["sta_apply_auth_flags","sta_apply_parameters","ieee80211_add_station","ieee80211_change_station"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"f8ac1f48-e023-4ce5-93cc-375ffa07b351","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowwwthk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["sta_apply_auth_flags","sta_apply_parameters","ieee80211_add_station","ieee80211_change_station"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"f8ac1f48-e023-4ce5-93cc-375ffa07b351","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-07-22 17:53:29 +0000 UTC FinishedAt: 2026-07-22 17:53:50 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwwthk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["sta_apply_auth_flags","sta_apply_parameters","ieee80211_add_station","ieee80211_change_station"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"f8ac1f48-e023-4ce5-93cc-375ffa07b351","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-07-22 17:53:29 +0000 UTC FinishedAt: 2026-07-22 17:53:38 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowwwthk/series-workflowwwthk-convert-artifact-3881184332/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowwwthk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["sta_apply_auth_flags","sta_apply_parameters","ieee80211_add_station","ieee80211_change_station"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"f8ac1f48-e023-4ce5-93cc-375ffa07b351","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-07-22 17:53:50 +0000 UTC FinishedAt: 2026-07-22 18:42:37 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwwthk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["sta_apply_auth_flags","sta_apply_parameters","ieee80211_add_station","ieee80211_change_station"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"f8ac1f48-e023-4ce5-93cc-375ffa07b351","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-07-22 17:53:50 +0000 UTC FinishedAt: 2026-07-22 18:42:37 +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:*0a4d0fe3-edaf-41d4-83d6-60f8590c9fa7,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-workflowwwthk/series-workflowwwthk-convert-artifact-3881184332/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": "29acf607-8277-486d-8ad3-7d1e64ed0678", "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-workflowwwthk/series-workflowwwthk-build-action-3710134906/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowwwthk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["sta_apply_auth_flags","sta_apply_parameters","ieee80211_add_station","ieee80211_change_station"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"f8ac1f48-e023-4ce5-93cc-375ffa07b351","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-07-22 17:53:50 +0000 UTC FinishedAt: 2026-07-22 18:41:14 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Base,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*0a4d0fe3-edaf-41d4-83d6-60f8590c9fa7,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-workflowwwthk/series-workflowwwthk-convert-artifact-3881184332/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": "29acf607-8277-486d-8ad3-7d1e64ed0678", "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-workflowwwthk/series-workflowwwthk-build-action-3710134906/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowwwthk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["sta_apply_auth_flags","sta_apply_parameters","ieee80211_add_station","ieee80211_change_station"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"f8ac1f48-e023-4ce5-93cc-375ffa07b351","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-07-22 18:42:37 +0000 UTC FinishedAt: 2026-07-22 18:42:37 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwwthk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["sta_apply_auth_flags","sta_apply_parameters","ieee80211_add_station","ieee80211_change_station"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"f8ac1f48-e023-4ce5-93cc-375ffa07b351","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-07-22 18:42:37 +0000 UTC FinishedAt: 2026-07-22 18:42:37 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwwthk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["sta_apply_auth_flags","sta_apply_parameters","ieee80211_add_station","ieee80211_change_station"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"f8ac1f48-e023-4ce5-93cc-375ffa07b351","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-07-22 18:42:37 +0000 UTC FinishedAt: 2026-07-22 18:42:47 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwwthk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["sta_apply_auth_flags","sta_apply_parameters","ieee80211_add_station","ieee80211_change_station"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"f8ac1f48-e023-4ce5-93cc-375ffa07b351","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-07-22 18:42:37 +0000 UTC FinishedAt: 2026-07-22 18:42:44 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"f8ac1f48-e023-4ce5-93cc-375ffa07b351","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowwwthk/series-workflowwwthk-convert-artifact-3693890443/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowwwthk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["sta_apply_auth_flags","sta_apply_parameters","ieee80211_add_station","ieee80211_change_station"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"f8ac1f48-e023-4ce5-93cc-375ffa07b351","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-07-22 18:42:47 +0000 UTC FinishedAt: 2026-07-22 18:44:47 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwwthk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["sta_apply_auth_flags","sta_apply_parameters","ieee80211_add_station","ieee80211_change_station"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"f8ac1f48-e023-4ce5-93cc-375ffa07b351","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-07-22 18:42:47 +0000 UTC FinishedAt: 2026-07-22 18:44:38 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*29acf607-8277-486d-8ad3-7d1e64ed0678,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-workflowwwthk/series-workflowwwthk-build-action-3710134906/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-workflowwwthk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["sta_apply_auth_flags","sta_apply_parameters","ieee80211_add_station","ieee80211_change_station"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"f8ac1f48-e023-4ce5-93cc-375ffa07b351","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-07-22 18:44:47 +0000 UTC FinishedAt: 2026-07-22 18:44:47 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwwthk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["sta_apply_auth_flags","sta_apply_parameters","ieee80211_add_station","ieee80211_change_station"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"f8ac1f48-e023-4ce5-93cc-375ffa07b351","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-07-22 18:44:47 +0000 UTC FinishedAt: 2026-07-22 18:44:47 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwwthk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["sta_apply_auth_flags","sta_apply_parameters","ieee80211_add_station","ieee80211_change_station"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"f8ac1f48-e023-4ce5-93cc-375ffa07b351","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-07-22 18:44:47 +0000 UTC FinishedAt: 2026-07-22 19:32:27 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwwthk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["sta_apply_auth_flags","sta_apply_parameters","ieee80211_add_station","ieee80211_change_station"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"f8ac1f48-e023-4ce5-93cc-375ffa07b351","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-07-22 18:44:47 +0000 UTC FinishedAt: 2026-07-22 19:32: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:*0a4d0fe3-edaf-41d4-83d6-60f8590c9fa7,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-workflowwwthk/series-workflowwwthk-convert-artifact-3693890443/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": "3e12be92-dd79-471a-952d-7505bbb4ef64", "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-workflowwwthk/series-workflowwwthk-build-action-2068245039/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowwwthk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["sta_apply_auth_flags","sta_apply_parameters","ieee80211_add_station","ieee80211_change_station"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"f8ac1f48-e023-4ce5-93cc-375ffa07b351","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-07-22 18:44:47 +0000 UTC FinishedAt: 2026-07-22 19:32: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:*0a4d0fe3-edaf-41d4-83d6-60f8590c9fa7,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-workflowwwthk/series-workflowwwthk-convert-artifact-3693890443/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": "3e12be92-dd79-471a-952d-7505bbb4ef64", "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-workflowwwthk/series-workflowwwthk-build-action-2068245039/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowwwthk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["sta_apply_auth_flags","sta_apply_parameters","ieee80211_add_station","ieee80211_change_station"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"f8ac1f48-e023-4ce5-93cc-375ffa07b351","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-07-22 19:32:27 +0000 UTC FinishedAt: 2026-07-22 19:32:27 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwwthk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["sta_apply_auth_flags","sta_apply_parameters","ieee80211_add_station","ieee80211_change_station"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"f8ac1f48-e023-4ce5-93cc-375ffa07b351","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-07-22 19:32:27 +0000 UTC FinishedAt: 2026-07-22 19:32:27 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwwthk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["sta_apply_auth_flags","sta_apply_parameters","ieee80211_add_station","ieee80211_change_station"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"f8ac1f48-e023-4ce5-93cc-375ffa07b351","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-07-22 19:32:27 +0000 UTC FinishedAt: 2026-07-22 19:34:34 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwwthk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["sta_apply_auth_flags","sta_apply_parameters","ieee80211_add_station","ieee80211_change_station"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"f8ac1f48-e023-4ce5-93cc-375ffa07b351","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-07-22 19:32:27 +0000 UTC FinishedAt: 2026-07-22 19:34:24 +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:*3e12be92-dd79-471a-952d-7505bbb4ef64,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-workflowwwthk/series-workflowwwthk-build-action-2068245039/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-workflowwwthk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["sta_apply_auth_flags","sta_apply_parameters","ieee80211_add_station","ieee80211_change_station"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"f8ac1f48-e023-4ce5-93cc-375ffa07b351","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-07-22 19:34:34 +0000 UTC FinishedAt: 2026-07-22 22:38:48 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwwthk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["sta_apply_auth_flags","sta_apply_parameters","ieee80211_add_station","ieee80211_change_station"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"f8ac1f48-e023-4ce5-93cc-375ffa07b351","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-07-22 19:34:34 +0000 UTC FinishedAt: 2026-07-22 22:38:48 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:config,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["sta_apply_auth_flags","sta_apply_parameters","ieee80211_add_station","ieee80211_change_station"],"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:*29acf607-8277-486d-8ad3-7d1e64ed0678,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*3e12be92-dd79-471a-952d-7505bbb4ef64,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-workflowwwthk/series-workflowwwthk-build-action-3710134906/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-workflowwwthk/series-workflowwwthk-build-action-2068245039/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowwwthk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["sta_apply_auth_flags","sta_apply_parameters","ieee80211_add_station","ieee80211_change_station"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"f8ac1f48-e023-4ce5-93cc-375ffa07b351","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-07-22 19:34:34 +0000 UTC FinishedAt: 2026-07-22 19:34:44 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwwthk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["sta_apply_auth_flags","sta_apply_parameters","ieee80211_add_station","ieee80211_change_station"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"f8ac1f48-e023-4ce5-93cc-375ffa07b351","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-07-22 19:34:34 +0000 UTC FinishedAt: 2026-07-22 19:34:40 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["sta_apply_auth_flags","sta_apply_parameters","ieee80211_add_station","ieee80211_change_station"],"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-workflowwwthk/series-workflowwwthk-convert-artifact-421823268/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowwwthk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["sta_apply_auth_flags","sta_apply_parameters","ieee80211_add_station","ieee80211_change_station"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"f8ac1f48-e023-4ce5-93cc-375ffa07b351","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-07-22 19:34:34 +0000 UTC FinishedAt: 2026-07-22 19:34:34 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwwthk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["sta_apply_auth_flags","sta_apply_parameters","ieee80211_add_station","ieee80211_change_station"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"f8ac1f48-e023-4ce5-93cc-375ffa07b351","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-07-22 19:34:34 +0000 UTC FinishedAt: 2026-07-22 19:34:34 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwwthk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["sta_apply_auth_flags","sta_apply_parameters","ieee80211_add_station","ieee80211_change_station"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"f8ac1f48-e023-4ce5-93cc-375ffa07b351","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-07-22 19:34:34 +0000 UTC FinishedAt: 2026-07-22 19:34:34 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwwthk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["sta_apply_auth_flags","sta_apply_parameters","ieee80211_add_station","ieee80211_change_station"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"f8ac1f48-e023-4ce5-93cc-375ffa07b351","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-07-22 19:34:44 +0000 UTC FinishedAt: 2026-07-22 22:38:48 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwwthk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["sta_apply_auth_flags","sta_apply_parameters","ieee80211_add_station","ieee80211_change_station"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"f8ac1f48-e023-4ce5-93cc-375ffa07b351","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-07-22 19:34:44 +0000 UTC FinishedAt: 2026-07-22 22:38:38 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*29acf607-8277-486d-8ad3-7d1e64ed0678,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*3e12be92-dd79-471a-952d-7505bbb4ef64,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-workflowwwthk/series-workflowwwthk-build-action-3710134906/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-workflowwwthk/series-workflowwwthk-build-action-2068245039/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-workflowwwthk/series-workflowwwthk-convert-artifact-421823268/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,}