Name: series-workflowcbhgk Phase: Succeeded StartedAt: 2026-07-06 20:49:27 +0000 UTC FinishedAt: 2026-07-07 01:14:19 +0000 UTC Input: nil Output: nil --------- Name: series-workflowcbhgk[0] Phase: Succeeded StartedAt: 2026-07-06 20:49:27 +0000 UTC FinishedAt: 2026-07-06 21:09:18 +0000 UTC Input: nil Output: nil --------- Name: series-workflowcbhgk[0].run-triage Phase: Succeeded StartedAt: 2026-07-06 20:49:27 +0000 UTC FinishedAt: 2026-07-06 21:09:18 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "torvalds", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux", "commit_hash": "8cdeaa50eae8dad34885515f62559ee83e7e8dda", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "MAC80211" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "torvalds", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux", "commit_hash": "8cdeaa50eae8dad34885515f62559ee83e7e8dda", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "MAC80211" ], "series_id": "83ef65ad-a367-473b-a77f-9f98ba2025f2" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "ieee80211_do_stop", "ieee80211_stop" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA2IDIxOjA2PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+Mm08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O01BQzgwMjExJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7aWVlZTgwMjExX2RvX3N0b3AmIzM0OywKICAgICYjMzQ7aWVlZTgwMjExX3N0b3AmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGludGVyZmFjZSBzdG9wIGxvZ2ljIGZvciBBUF9WTEFOIGludGVyZmFjZXMgaW4gbWFjODAyMTEsIGNoYW5naW5nIGhvdyBwYWNrZXRzIGFyZSBmcmVlZCB0byBhdm9pZCBkb2luZyBzbyB1bmRlciBhIHNwaW5sb2NrLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgbWFjODAyMTEgc3RhY2sgdGhhdCBpcyByZWFjaGFibGUgdmlhIG5ldGxpbmsgY29tbWFuZHMgKGUuZy4sIHN0b3BwaW5nIGFuIEFQX1ZMQU4gaW50ZXJmYWNlKS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNiAyMTowNjwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDU2MzQ3MjM1ZWRjZGEzYjZlODFiOWRjMjJlMGZmMzAzMmRlZTBjMzlcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgTW9uIEp1bCA2IDIxOjA2OjAzIDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL25ldC9tYWM4MDIxMS9pZmFjZS5jIGIvbmV0L21hYzgwMjExL2lmYWNlLmNcbmluZGV4IDA4NjI3MmMzZWMwOGMxLi40MzQ2MGE3MDVhNmJkMCAxMDA2NDRcbi0tLSBhL25ldC9tYWM4MDIxMS9pZmFjZS5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvbWFjODAyMTEvaWZhY2UuY1xuQEAgLTU4OCw2ICYjNDM7NTg4LDcgQEAgc3RhdGljIHZvaWQgaWVlZTgwMjExX2RvX3N0b3Aoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsIGJvb2wgZ29pbmdfZG9cbiBcdFx0V0FSTl9PTighbGlzdF9lbXB0eShcdTAwMjZzZGF0YS1cdTAwM2V1LmFwLnZsYW5zKSk7XG4gXHR9IGVsc2UgaWYgKHNkYXRhLVx1MDAzZXZpZi50eXBlID09IE5MODAyMTFfSUZUWVBFX0FQX1ZMQU4pIHtcbiBcdFx0LyogcmVtb3ZlIGFsbCBwYWNrZXRzIGluIHBhcmVudCBiY19idWYgcG9pbnRpbmcgdG8gdGhpcyBkZXYgKi9cbiYjNDM7XHRcdF9fc2tiX3F1ZXVlX2hlYWRfaW5pdChcdTAwMjZmcmVlcSk7XG4gXHRcdHBzID0gXHUwMDI2c2RhdGEtXHUwMDNlYnNzLVx1MDAzZXBzO1xuIFxuIFx0XHRzcGluX2xvY2tfaXJxc2F2ZShcdTAwMjZwcy1cdTAwM2ViY19idWYubG9jaywgZmxhZ3MpO1xuQEAgLTU5NSwxMCAmIzQzOzU5NiwxNSBAQCBzdGF0aWMgdm9pZCBpZWVlODAyMTFfZG9fc3RvcChzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSwgYm9vbCBnb2luZ19kb1xuIFx0XHRcdGlmIChza2ItXHUwMDNlZGV2ID09IHNkYXRhLVx1MDAzZWRldikge1xuIFx0XHRcdFx0X19za2JfdW5saW5rKHNrYiwgXHUwMDI2cHMtXHUwMDNlYmNfYnVmKTtcbiBcdFx0XHRcdGxvY2FsLVx1MDAzZXRvdGFsX3BzX2J1ZmZlcmVkLS07XG4tXHRcdFx0XHRpZWVlODAyMTFfZnJlZV90eHNrYihcdTAwMjZsb2NhbC1cdTAwM2Vodywgc2tiKTtcbiYjNDM7XHRcdFx0XHRfX3NrYl9xdWV1ZV90YWlsKFx1MDAyNmZyZWVxLCBza2IpO1xuIFx0XHRcdH1cbiBcdFx0fVxuIFx0XHRzcGluX3VubG9ja19pcnFyZXN0b3JlKFx1MDAyNnBzLVx1MDAzZWJjX2J1Zi5sb2NrLCBmbGFncyk7XG4mIzQzO1xuJiM0MztcdFx0c2tiX3F1ZXVlX3dhbGtfc2FmZShcdTAwMjZmcmVlcSwgc2tiLCB0bXApIHtcbiYjNDM7XHRcdFx0X19za2JfdW5saW5rKHNrYiwgXHUwMDI2ZnJlZXEpO1xuJiM0MztcdFx0XHRpZWVlODAyMTFfZnJlZV90eHNrYihcdTAwMjZsb2NhbC1cdTAwM2Vodywgc2tiKTtcbiYjNDM7XHRcdH1cbiBcdH1cbiBcbiBcdGlmIChnb2luZ19kb3duKVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA2IDIxOjA2PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjJtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O01BQzgwMjExJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7aWVlZTgwMjExX2RvX3N0b3AmIzM0OywKICAgICYjMzQ7aWVlZTgwMjExX3N0b3AmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGludGVyZmFjZSBzdG9wIGxvZ2ljIGZvciBBUF9WTEFOIGludGVyZmFjZXMgaW4gbWFjODAyMTEsIGNoYW5naW5nIGhvdyBwYWNrZXRzIGFyZSBmcmVlZCB0byBhdm9pZCBkb2luZyBzbyB1bmRlciBhIHNwaW5sb2NrLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgbWFjODAyMTEgc3RhY2sgdGhhdCBpcyByZWFjaGFibGUgdmlhIG5ldGxpbmsgY29tbWFuZHMgKGUuZy4sIHN0b3BwaW5nIGFuIEFQX1ZMQU4gaW50ZXJmYWNlKS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLApldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXQKICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LAogICBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgNTYzNDcyMzVlZGNkYTNiNmU4MWI5ZGMyMmUwZmYzMDMyZGVlMGMzOQpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBNb24gSnVsIDYgMjE6MDY6MDMgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9uZXQvbWFjODAyMTEvaWZhY2UuYyBiL25ldC9tYWM4MDIxMS9pZmFjZS5jCmluZGV4IDA4NjI3MmMzZWMwOGMxLi40MzQ2MGE3MDVhNmJkMCAxMDA2NDQKLS0tIGEvbmV0L21hYzgwMjExL2lmYWNlLmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L21hYzgwMjExL2lmYWNlLmMKQEAgLTU4OCw2ICYjNDM7NTg4LDcgQEAgc3RhdGljIHZvaWQgaWVlZTgwMjExX2RvX3N0b3Aoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsIGJvb2wgZ29pbmdfZG8KIAkJV0FSTl9PTighbGlzdF9lbXB0eSgmYW1wO3NkYXRhLSZndDt1LmFwLnZsYW5zKSk7CiAJfSBlbHNlIGlmIChzZGF0YS0mZ3Q7dmlmLnR5cGUgPT0gTkw4MDIxMV9JRlRZUEVfQVBfVkxBTikgewogCQkvKiByZW1vdmUgYWxsIHBhY2tldHMgaW4gcGFyZW50IGJjX2J1ZiBwb2ludGluZyB0byB0aGlzIGRldiAqLwomIzQzOwkJX19za2JfcXVldWVfaGVhZF9pbml0KCZhbXA7ZnJlZXEpOwogCQlwcyA9ICZhbXA7c2RhdGEtJmd0O2Jzcy0mZ3Q7cHM7CiAKIAkJc3Bpbl9sb2NrX2lycXNhdmUoJmFtcDtwcy0mZ3Q7YmNfYnVmLmxvY2ssIGZsYWdzKTsKQEAgLTU5NSwxMCAmIzQzOzU5NiwxNSBAQCBzdGF0aWMgdm9pZCBpZWVlODAyMTFfZG9fc3RvcChzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSwgYm9vbCBnb2luZ19kbwogCQkJaWYgKHNrYi0mZ3Q7ZGV2ID09IHNkYXRhLSZndDtkZXYpIHsKIAkJCQlfX3NrYl91bmxpbmsoc2tiLCAmYW1wO3BzLSZndDtiY19idWYpOwogCQkJCWxvY2FsLSZndDt0b3RhbF9wc19idWZmZXJlZC0tOwotCQkJCWllZWU4MDIxMV9mcmVlX3R4c2tiKCZhbXA7bG9jYWwtJmd0O2h3LCBza2IpOwomIzQzOwkJCQlfX3NrYl9xdWV1ZV90YWlsKCZhbXA7ZnJlZXEsIHNrYik7CiAJCQl9CiAJCX0KIAkJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmYW1wO3BzLSZndDtiY19idWYubG9jaywgZmxhZ3MpOwomIzQzOwomIzQzOwkJc2tiX3F1ZXVlX3dhbGtfc2FmZSgmYW1wO2ZyZWVxLCBza2IsIHRtcCkgewomIzQzOwkJCV9fc2tiX3VubGluayhza2IsICZhbXA7ZnJlZXEpOwomIzQzOwkJCWllZWU4MDIxMV9mcmVlX3R4c2tiKCZhbXA7bG9jYWwtJmd0O2h3LCBza2IpOwomIzQzOwkJfQogCX0KIAogCWlmIChnb2luZ19kb3duKQo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNiAyMTowNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMTQ5CgkJCQkJCQlvdXRwdXQ6IDQ0CgkJCQkJCQl0aG91Z2h0czogMTU1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIE1hYzgwMjExIFBhdGNoOiBBdm9pZGluZyBQb3RlbnRpYWwgQ29uY3VycmVuY3kgSXNzdWVzKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGZvciBgbmV0L21hYzgwMjExL2lmYWNlLmNgLiBJdCYjMzk7cyB0b3VjaGluZyB0aGUgYGllZWU4MDIxMV9kb19zdG9wYCBmdW5jdGlvbiwgd2hpY2ggaW1tZWRpYXRlbHkgdGVsbHMgbWUgdGhpcyBpcyByZWxhdGVkIHRvIGludGVyZmFjZSBzaHV0ZG93biBwcm9jZWR1cmVzLiBUaGUgbWVhdCBvZiB0aGUgY2hhbmdlIGlzIGhvdyBwYWNrZXRzIGFyZSBoYW5kbGVkIHdoZW4gYW4gQVBfVkxBTiBpbnRlcmZhY2UgaXMgc3RvcHBlZC4gU3BlY2lmaWNhbGx5LCBpdCBzZWVtcyBsaWtlIHRoZSBvbGQgY29kZSBpbiBgaWVlZTgwMjExX2RvX3N0b3BgIGhhZCBhIHByb2JsZW06IGl0IHdhcyBjYWxsaW5nIGBpZWVlODAyMTFfZnJlZV90eHNrYmAgd2hpbGUgaG9sZGluZyB0aGUgYHBzLSZndDtiY19idWYubG9ja2Agc3BpbmxvY2suIFRoYXQmIzM5O3MgYSByZWQgZmxhZy4gSSYjMzk7dmUgc2VlbiB0aGF0IGtpbmQgb2YgcGF0dGVybiBsZWFkIHRvIGFsbCBzb3J0cyBvZiBjb25jdXJyZW5jeSBoZWFkYWNoZXMsIG1heWJlIGV2ZW4gYSBzbGVlcC1pbi1hdG9taWMgc2l0dWF0aW9uIG9yIGEgY2xhc3NpYyBkZWFkbG9jaywgZGVwZW5kaW5nIG9uIHdoYXQgYGllZWU4MDIxMV9mcmVlX3R4c2tiYCBhY3R1YWxseSBkb2VzIGludGVybmFsbHkuCgpTbywgdGhlIHBhdGNoIGNsZXZlcmx5IHNpZGVzdGVwcyB0aGUgcG90ZW50aWFsIHByb2JsZW0gYnkgcXVldWluZyB0aGUgU0tCcyB0byBhIGxvY2FsIGBmcmVlcWAgaW5zdGVhZC4gVGhlIGJlYXV0eSBvZiB0aGlzIGlzIHRoYXQgaXQgYWxsb3dzIHRoZSBwcm9ibGVtYXRpYyBmcmVlaW5nIHByb2Nlc3MgdG8gaGFwcGVuICphZnRlciogdGhlIHNwaW5sb2NrIGlzIHJlbGVhc2VkLiBUaGlzIGlzIGEgc29saWQsIGZ1bmN0aW9uYWwgY2hhbmdlLiBJdCYjMzk7cyB0aGUgcmlnaHQgd2F5IHRvIGZpeCBzdWNoIHBvdGVudGlhbCBidWdzLgoKTm93LCBsZXQgbWUgZGlnIGRlZXBlciBhbmQgc2VlIHdoYXQgZWxzZSB0aGlzIGlzIGFmZmVjdGluZy4gSSYjMzk7bSBnb2luZyB0byBxdWlja2x5IHJldmlldyB0aGUgc3Vycm91bmRpbmcgY29udGV4dCBvZiBgaWVlZTgwMjExX2RvX3N0b3BgIHRvIGNvbmZpcm0gbXkgdW5kZXJzdGFuZGluZyBvZiB0aGUgaW50ZXJmYWNlJiMzOTtzIGJlaGF2aW9yIGR1cmluZyBhIHNodXRkb3duLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA2IDIxOjA2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2llZWU4MDIxMV9kb19zdG9wJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L21hYzgwMjExL2lmYWNlLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L21hYzgwMjExL2lmYWNlLmM9NDYxPXN0YXRpYyBpbnQgaWVlZTgwMjExX29wZW4oc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbi0tXG5uZXQvbWFjODAyMTEvaWZhY2UuYy00NzgtXG5uZXQvbWFjODAyMTEvaWZhY2UuYzo0Nzk6c3RhdGljIHZvaWQgaWVlZTgwMjExX2RvX3N0b3Aoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsIGJvb2wgZ29pbmdfZG93bilcbm5ldC9tYWM4MDIxMS9pZmFjZS5jLTQ4MC17XG4tLVxubmV0L21hYzgwMjExL2lmYWNlLmM9ODQ1PXN0YXRpYyBpbnQgaWVlZTgwMjExX3N0b3Aoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbi0tXG5uZXQvbWFjODAyMTEvaWZhY2UuYy04NjctXG5uZXQvbWFjODAyMTEvaWZhY2UuYzo4Njg6XHRpZWVlODAyMTFfZG9fc3RvcChzZGF0YSwgdHJ1ZSk7XG5uZXQvbWFjODAyMTEvaWZhY2UuYy04NjktXG4tLVxubmV0L21hYzgwMjExL2lmYWNlLmM9MTk4MD1zdGF0aWMgaW50IGllZWU4MDIxMV9ydW50aW1lX2NoYW5nZV9pZnR5cGUoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsXG4tLVxubmV0L21hYzgwMjExL2lmYWNlLmMtMjA0NC1cdC8qIGRvX3N0b3Agd2lsbCBzeW5jaHJvbml6ZV9yY3UoKSBmaXJzdCB0aGluZyAqL1xubmV0L21hYzgwMjExL2lmYWNlLmM6MjA0NTpcdGllZWU4MDIxMV9kb19zdG9wKHNkYXRhLCBmYWxzZSk7XG5uZXQvbWFjODAyMTEvaWZhY2UuYy0yMDQ2LVxuLS1cbm5ldC9tYWM4MDIxMS9pZmFjZS5jPTI0NDA9dm9pZCBpZWVlODAyMTFfc2RhdGFfc3RvcChzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSlcbi0tXG5uZXQvbWFjODAyMTEvaWZhY2UuYy0yNDQzLVx0XHRyZXR1cm47XG5uZXQvbWFjODAyMTEvaWZhY2UuYzoyNDQ0Olx0aWVlZTgwMjExX2RvX3N0b3Aoc2RhdGEsIHRydWUpO1xubmV0L21hYzgwMjExL2lmYWNlLmMtMjQ0NS19XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDYgMjE6MDY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzIzNQoJCQkJCQkJb3V0cHV0OiAzOAoJCQkJCQkJdGhvdWdodHM6IDk2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGFuYWx5c2lzIG9mIHRoZSBzaXR1YXRpb246CgoqKlJlYWNoaW5nIGEgU3RvcCoqCgpPa2F5LCBzbyBgaWVlZTgwMjExX2RvX3N0b3BgIGlzIHRoZSBmdW5jdGlvbiB3ZSYjMzk7cmUgY29uY2VybmVkIHdpdGguIEkga25vdyBpdCBnZXRzIGNhbGxlZCBpbiBhIGZldyBjcml0aWNhbCBwbGFjZXMgd2l0aGluIHRoZSBNQUM4MDIxMSBzdGFjazogYGllZWU4MDIxMV9zdG9wYCwgYGllZWU4MDIxMV9ydW50aW1lX2NoYW5nZV9pZnR5cGVgLCBhbmQgYGllZWU4MDIxMV9zZGF0YV9zdG9wYC4gR2l2ZW4gdGhvc2UgcG9pbnRzIG9mIG9yaWdpbiwgaXQmIzM5O3Mgc2FmZSB0byBzYXkgaXQmIzM5O3MgZGVmaW5pdGVseSByZWFjaGFibGUgY29kZSDigJMgbm8gd29ycmllcyBhYm91dCBkZWFkIGNvZGUgZWxpbWluYXRpb24gaGVyZS4gVGhlIHBhdGNoIGZvY3VzZXMgb24gaG93IHRoZSBBUF9WTEFOIGludGVyZmFjZSBiZWhhdmVzIHdoZW4gc3RvcHBpbmcuIE15IG5leHQgc3RlcCBpcyB0byBleGFtaW5lIHRoZSBLY29uZmlnIG9wdGlvbnMgZm9yIE1BQzgwMjExLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA2IDIxOjA2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBNQUM4MDIxMSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9tYWM4MDIxMS9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9tYWM4MDIxMS9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyOmNvbmZpZyBNQUM4MDIxMVxubmV0L21hYzgwMjExL0tjb25maWctMy1cdHRyaXN0YXRlIFwmIzM0O0dlbmVyaWMgSUVFRSA4MDIuMTEgTmV0d29ya2luZyBTdGFjayAobWFjODAyMTEpXCYjMzQ7XG4tLVxubmV0L21hYzgwMjExL0tjb25maWc9MTk9aWYgTUFDODAyMTEgIT0gblxubmV0L21hYzgwMjExL0tjb25maWctMjAtXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyMTpjb25maWcgTUFDODAyMTFfSEFTX1JDXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yMi1cdGJvb2xcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTIzLVxubmV0L21hYzgwMjExL0tjb25maWc6MjQ6Y29uZmlnIE1BQzgwMjExX1JDX01JTlNUUkVMXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yNS1cdGJvb2wgXCYjMzQ7TWluc3RyZWxcJiMzNDsgaWYgRVhQRVJUXG4tLVxubmV0L21hYzgwMjExL0tjb25maWc9MzE9Y2hvaWNlXG4tLVxubmV0L21hYzgwMjExL0tjb25maWctNDAtXG5uZXQvbWFjODAyMTEvS2NvbmZpZzo0MTpjb25maWcgTUFDODAyMTFfUkNfREVGQVVMVF9NSU5TVFJFTFxubmV0L21hYzgwMjExL0tjb25maWctNDItXHRib29sIFwmIzM0O01pbnN0cmVsXCYjMzQ7XG4tLVxubmV0L21hYzgwMjExL0tjb25maWc9NDg9ZW5kY2hvaWNlXG5uZXQvbWFjODAyMTEvS2NvbmZpZy00OS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjUwOmNvbmZpZyBNQUM4MDIxMV9SQ19ERUZBVUxUXG5uZXQvbWFjODAyMTEvS2NvbmZpZy01MS1cdHN0cmluZ1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnPTU3PWNvbW1lbnQgXCYjMzQ7U29tZSB3aXJlbGVzcyBkcml2ZXJzIHJlcXVpcmUgYSByYXRlIGNvbnRyb2wgYWxnb3JpdGhtXCYjMzQ7XG4tLVxubmV0L21hYzgwMjExL0tjb25maWctNTktXG5uZXQvbWFjODAyMTEvS2NvbmZpZzo2MDpjb25maWcgTUFDODAyMTFfS1VOSVRfVEVTVFxubmV0L21hYzgwMjExL0tjb25maWctNjEtXHR0cmlzdGF0ZSBcJiMzNDtLVW5pdCB0ZXN0cyBmb3IgbWFjODAyMTFcJiMzNDsgaWYgIUtVTklUX0FMTF9URVNUU1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnLTY5LVxubmV0L21hYzgwMjExL0tjb25maWc6NzA6Y29uZmlnIE1BQzgwMjExX01FU0hcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTcxLVx0Ym9vbCBcJiMzNDtFbmFibGUgbWFjODAyMTEgbWVzaCBuZXR3b3JraW5nIHN1cHBvcnRcJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy03OC1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjc5OmNvbmZpZyBNQUM4MDIxMV9MRURTXG5uZXQvbWFjODAyMTEvS2NvbmZpZy04MC1cdGJvb2wgXCYjMzQ7RW5hYmxlIExFRCB0cmlnZ2Vyc1wmIzM0O1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnLTg3LVxubmV0L21hYzgwMjExL0tjb25maWc6ODg6Y29uZmlnIE1BQzgwMjExX0RFQlVHRlNcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTg5LVx0Ym9vbCBcJiMzNDtFeHBvcnQgbWFjODAyMTEgaW50ZXJuYWxzIGluIERlYnVnRlNcJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy05Ni1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjk3OmNvbmZpZyBNQUM4MDIxMV9NRVNTQUdFX1RSQUNJTkdcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTk4LVx0Ym9vbCBcJiMzNDtUcmFjZSBhbGwgbWFjODAyMTEgZGVidWcgbWVzc2FnZXNcJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xMDktXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoxMTA6bWVudWNvbmZpZyBNQUM4MDIxMV9ERUJVR19NRU5VXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xMTEtXHRib29sIFwmIzM0O1NlbGVjdCBtYWM4MDIxMSBkZWJ1Z2dpbmcgZmVhdHVyZXNcJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xMTUtXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoxMTY6Y29uZmlnIE1BQzgwMjExX05PSU5MSU5FXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xMTctXHRib29sIFwmIzM0O0RvIG5vdCBpbmxpbmUgVFgvUlggaGFuZGxlcnNcJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xMzEtXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoxMzI6Y29uZmlnIE1BQzgwMjExX1ZFUkJPU0VfREVCVUdcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTEzMy1cdGJvb2wgXCYjMzQ7VmVyYm9zZSBkZWJ1Z2dpbmcgb3V0cHV0XCYjMzQ7XG4tLVxubmV0L21hYzgwMjExL0tjb25maWctMTQyLVxubmV0L21hYzgwMjExL0tjb25maWc6MTQzOmNvbmZpZyBNQUM4MDIxMV9NTE1FX0RFQlVHXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xNDQtXHRib29sIFwmIzM0O1ZlcmJvc2UgbWFuYWdlZCBNTE1FIG91dHB1dFwmIzM0O1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE1My1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjE1NDpjb25maWcgTUFDODAyMTFfU1RBX0RFQlVHXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xNTUtXHRib29sIFwmIzM0O1ZlcmJvc2Ugc3RhdGlvbiBkZWJ1Z2dpbmdcJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xNjItXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoxNjM6Y29uZmlnIE1BQzgwMjExX0hUX0RFQlVHXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xNjQtXHRib29sIFwmIzM0O1ZlcmJvc2UgSFQgZGVidWdnaW5nXCYjMzQ7XG4tLVxubmV0L21hYzgwMjExL0tjb25maWctMTc0LVxubmV0L21hYzgwMjExL0tjb25maWc6MTc1OmNvbmZpZyBNQUM4MDIxMV9PQ0JfREVCVUdcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE3Ni1cdGJvb2wgXCYjMzQ7VmVyYm9zZSBPQ0IgZGVidWdnaW5nXCYjMzQ7XG4tLVxubmV0L21hYzgwMjExL0tjb25maWctMTg1LVxubmV0L21hYzgwMjExL0tjb25maWc6MTg2OmNvbmZpZyBNQUM4MDIxMV9JQlNTX0RFQlVHXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xODctXHRib29sIFwmIzM0O1ZlcmJvc2UgSUJTUyBkZWJ1Z2dpbmdcJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xOTYtXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoxOTc6Y29uZmlnIE1BQzgwMjExX1BTX0RFQlVHXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xOTgtXHRib29sIFwmIzM0O1ZlcmJvc2UgcG93ZXJzYXZlIG1vZGUgZGVidWdnaW5nXCYjMzQ7XG4tLVxubmV0L21hYzgwMjExL0tjb25maWctMjA4LVxubmV0L21hYzgwMjExL0tjb25maWc6MjA5OmNvbmZpZyBNQUM4MDIxMV9NUExfREVCVUdcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTIxMC1cdGJvb2wgXCYjMzQ7VmVyYm9zZSBtZXNoIHBlZXIgbGluayBkZWJ1Z2dpbmdcJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yMjEtXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyMjI6Y29uZmlnIE1BQzgwMjExX01QQVRIX0RFQlVHXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yMjMtXHRib29sIFwmIzM0O1ZlcmJvc2UgbWVzaCBwYXRoIGRlYnVnZ2luZ1wmIzM0O1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnLTIzNC1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjIzNTpjb25maWcgTUFDODAyMTFfTUhXTVBfREVCVUdcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTIzNi1cdGJvb2wgXCYjMzQ7VmVyYm9zZSBtZXNoIEhXTVAgcm91dGluZyBkZWJ1Z2dpbmdcJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yNDctXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyNDg6Y29uZmlnIE1BQzgwMjExX01FU0hfU1lOQ19ERUJVR1xubmV0L21hYzgwMjExL0tjb25maWctMjQ5LVx0Ym9vbCBcJiMzNDtWZXJib3NlIG1lc2ggc3luY2hyb25pemF0aW9uIGRlYnVnZ2luZ1wmIzM0O1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnLTI1OC1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjI1OTpjb25maWcgTUFDODAyMTFfTUVTSF9DU0FfREVCVUdcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTI2MC1cdGJvb2wgXCYjMzQ7VmVyYm9zZSBtZXNoIGNoYW5uZWwgc3dpdGNoIGRlYnVnZ2luZ1wmIzM0O1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnLTI2OS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjI3MDpjb25maWcgTUFDODAyMTFfTUVTSF9QU19ERUJVR1xubmV0L21hYzgwMjExL0tjb25maWctMjcxLVx0Ym9vbCBcJiMzNDtWZXJib3NlIG1lc2ggcG93ZXJzYXZlIGRlYnVnZ2luZ1wmIzM0O1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnLTI4MC1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjI4MTpjb25maWcgTUFDODAyMTFfVERMU19ERUJVR1xubmV0L21hYzgwMjExL0tjb25maWctMjgyLVx0Ym9vbCBcJiMzNDtWZXJib3NlIFRETFMgZGVidWdnaW5nXCYjMzQ7XG4tLVxubmV0L21hYzgwMjExL0tjb25maWctMjkyLVxubmV0L21hYzgwMjExL0tjb25maWc6MjkzOmNvbmZpZyBNQUM4MDIxMV9ERUJVR19DT1VOVEVSU1xubmV0L21hYzgwMjExL0tjb25maWctMjk0LVx0Ym9vbCBcJiMzNDtFeHRyYSBzdGF0aXN0aWNzIGZvciBUWC9SWCBkZWJ1Z2dpbmdcJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0zMDctXG5uZXQvbWFjODAyMTEvS2NvbmZpZzozMDg6Y29uZmlnIE1BQzgwMjExX1NUQV9IQVNIX01BWF9TSVpFXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0zMDktXHRpbnQgXCYjMzQ7U3RhdGlvbiBoYXNoIHRhYmxlIG1heGltdW0gc2l6ZVwmIzM0OyBpZiBNQUM4MDIxMV9ERUJVR19NRU5VXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDYgMjE6MDY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTcxNQoJCQkJCQkJb3V0cHV0OiA0MgoJCQkJCQkJdGhvdWdodHM6IDE2MAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipGdXp6aW5nIHRoZSBgTUFDODAyMTFgIENvbmZpZyBhbmQgYGllZWU4MDIxMV9kb19zdG9wYCBGdW5jdGlvbioqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBgTUFDODAyMTFgIGNvbmZpZ3VyYXRpb24sIGFuZCB0aGUga2V5IGZ1bmN0aW9uIGhlcmUgc2VlbXMgdG8gYmUgYGllZWU4MDIxMV9kb19zdG9wYC4gTXkgaW1tZWRpYXRlIHRob3VnaHQ/IFRoaXMgaXMgKmRlZmluaXRlbHkqIHdvcnRoIGZ1enppbmcuIFRoZSBwb3RlbnRpYWwgZm9yIHVuY292ZXJpbmcgaW50ZXJlc3RpbmcgYnVncyBpbiB0aGlzIGFyZWEgaXMgaGlnaCwgZ2l2ZW4gaXRzIHJvbGUgaW4gc3RvcHBpbmcgdGhlIHdpcmVsZXNzIGludGVyZmFjZS4KClRoZSBwYXRjaCBtZW50aW9ucyBhIGJ1ZyByZWxhdGVkIHRvIGBpZWVlODAyMTFfZnJlZV90eHNrYmAgYmVpbmcgY2FsbGVkIHdoaWxlIGhvbGRpbmcgYSBzcGlubG9jay4gVGhhdCBpbW1lZGlhdGVseSBncmFicyBteSBhdHRlbnRpb24uIEFueXRpbWUgeW91IHNlZSBhIGZ1bmN0aW9uIGxpa2UgYGllZWU4MDIxMV9mcmVlX3R4c2tiYCBiZWluZyBjYWxsZWQgdW5kZXIgYSBzcGlubG9jaywgaXQmIzM5O3MgYSByZWQgZmxhZy4gVGhhdCBmdW5jdGlvbiBtaWdodCBzbGVlcCBvciBhY3F1aXJlIGEgbXV0ZXggaW50ZXJuYWxseSDigJMgd2hpY2ggaXMgYSBiaWcgbm8tbm8gd2hlbiB5b3UmIzM5O3JlIGFscmVhZHkgd2l0aGluIGEgc3BpbmxvY2smIzM5O3MgcHJvdGVjdGlvbi4gRXZlbiBpZiBpdCAqZG9lc24mIzM5O3QqIHNsZWVwLCBpdCYjMzk7cyBzdGlsbCBiYWQgcHJhY3RpY2UgdG8gcGVyZm9ybSBzdWNoIGFjdGlvbnMgd2l0aCBhIHNwaW5sb2NrIGhlbGQuCgpBaCwgcmlnaHQsIGBpZWVlODAyMTFfZnJlZV90eHNrYmAgaXMgcGFydCBvZiB0aGUgYG1hYzgwMjExYCBzdWJzeXN0ZW0uIE1ha2VzIHNlbnNlLiBPa2F5LCB0aW1lIHRvIGRpdmUgaW50byB0aGUgaW1wbGVtZW50YXRpb24gb2YgYGllZWU4MDIxMV9mcmVlX3R4c2tiYCBpdHNlbGYgYW5kIHNlZSBleGFjdGx5IHdoYXQmIzM5O3MgZ29pbmcgb24gaW4gdGhlcmUuIEdvdHRhIHVuZGVyc3RhbmQgdGhlIHJvb3QgY2F1c2Ugb2YgdGhpcyB2dWxuZXJhYmlsaXR5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA2IDIxOjA2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2llZWU4MDIxMV9mcmVlX3R4c2tiJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L21hYzgwMjExLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbWFjODAyMTEvaWZhY2UuYz00Nzk9c3RhdGljIHZvaWQgaWVlZTgwMjExX2RvX3N0b3Aoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsIGJvb2wgZ29pbmdfZG93bilcbi0tXG5uZXQvbWFjODAyMTEvaWZhY2UuYy02MDUtXHRcdFx0X19za2JfdW5saW5rKHNrYiwgXHUwMDI2ZnJlZXEpO1xubmV0L21hYzgwMjExL2lmYWNlLmM6NjA2Olx0XHRcdGllZWU4MDIxMV9mcmVlX3R4c2tiKFx1MDAyNmxvY2FsLVx1MDAzZWh3LCBza2IpO1xubmV0L21hYzgwMjExL2lmYWNlLmMtNjA3LVx0XHR9XG4tLVxubmV0L21hYzgwMjExL2lmYWNlLmMtNjg1LVx0Lypcbm5ldC9tYWM4MDIxMS9pZmFjZS5jOjY4NjpcdCAqIFNpbmNlIGllZWU4MDIxMV9mcmVlX3R4c2tiKCkgbWF5IGlzc3VlIF9fZGV2X3F1ZXVlX3htaXQoKVxubmV0L21hYzgwMjExL2lmYWNlLmMtNjg3LVx0ICogd2hpY2ggc2hvdWxkIGJlIGNhbGxlZCB3aXRoIGludGVycnVwdHMgZW5hYmxlZCwgcmVjbGFtYXRpb25cbi0tXG5uZXQvbWFjODAyMTEvaWZhY2UuYy03MDctXHRcdF9fc2tiX3VubGluayhza2IsIFx1MDAyNmZyZWVxKTtcbm5ldC9tYWM4MDIxMS9pZmFjZS5jOjcwODpcdFx0aWVlZTgwMjExX2ZyZWVfdHhza2IoXHUwMDI2bG9jYWwtXHUwMDNlaHcsIHNrYik7XG5uZXQvbWFjODAyMTEvaWZhY2UuYy03MDktXHR9XG4tLVxubmV0L21hYzgwMjExL21lc2hfcGF0aHRibC5jPTEwMDQ9dm9pZCBtZXNoX3BhdGhfZGlzY2FyZF9mcmFtZShzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSxcbi0tXG5uZXQvbWFjODAyMTEvbWVzaF9wYXRodGJsLmMtMTAwNi17XG5uZXQvbWFjODAyMTEvbWVzaF9wYXRodGJsLmM6MTAwNzpcdGllZWU4MDIxMV9mcmVlX3R4c2tiKFx1MDAyNnNkYXRhLVx1MDAzZWxvY2FsLVx1MDAzZWh3LCBza2IpO1xubmV0L21hYzgwMjExL21lc2hfcGF0aHRibC5jLTEwMDgtXHRzZGF0YS1cdTAwM2V1Lm1lc2gubXNoc3RhdHMuZHJvcHBlZF9mcmFtZXNfbm9fcm91dGUmIzQzOyYjNDM7O1xuLS1cbm5ldC9tYWM4MDIxMS9vZmZjaGFubmVsLmM9MTcxPXN0YXRpYyB2b2lkIGllZWU4MDIxMV9yb2Nfbm90aWZ5X2Rlc3Ryb3koc3RydWN0IGllZWU4MDIxMV9yb2Nfd29yayAqcm9jKVxuLS1cbm5ldC9tYWM4MDIxMS9vZmZjaGFubmVsLmMtMTc3LVx0XHRcdFx0XHRmYWxzZSwgR0ZQX0tFUk5FTCk7XG5uZXQvbWFjODAyMTEvb2ZmY2hhbm5lbC5jOjE3ODpcdFx0aWVlZTgwMjExX2ZyZWVfdHhza2IoXHUwMDI2cm9jLVx1MDAzZXNkYXRhLVx1MDAzZWxvY2FsLVx1MDAzZWh3LCByb2MtXHUwMDNlZnJhbWUpO1xubmV0L21hYzgwMjExL29mZmNoYW5uZWwuYy0xNzktXHR9XG4tLVxubmV0L21hYzgwMjExL29mZmNoYW5uZWwuYz04MTI9aW50IGllZWU4MDIxMV9tZ210X3R4KHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsXG4tLVxubmV0L21hYzgwMjExL29mZmNoYW5uZWwuYy0xMDQ5LVx0aWYgKHJldClcbm5ldC9tYWM4MDIxMS9vZmZjaGFubmVsLmM6MTA1MDpcdFx0aWVlZTgwMjExX2ZyZWVfdHhza2IoXHUwMDI2bG9jYWwtXHUwMDNlaHcsIHNrYik7XG5uZXQvbWFjODAyMTEvb2ZmY2hhbm5lbC5jLTEwNTEtIG91dF91bmxvY2s6XG4tLVxubmV0L21hYzgwMjExL3N0YV9pbmZvLmM9MTIwNz1zdGF0aWMgYm9vbCBzdGFfaW5mb19jbGVhbnVwX2V4cGlyZV9idWZmZXJlZF9hYyhzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbCxcbi0tXG5uZXQvbWFjODAyMTEvc3RhX2luZm8uYy0xMjM2LVx0XHRcdGJyZWFrO1xubmV0L21hYzgwMjExL3N0YV9pbmZvLmM6MTIzNzpcdFx0aWVlZTgwMjExX2ZyZWVfdHhza2IoXHUwMDI2bG9jYWwtXHUwMDNlaHcsIHNrYik7XG5uZXQvbWFjODAyMTEvc3RhX2luZm8uYy0xMjM4LVx0fVxuLS1cbm5ldC9tYWM4MDIxMS9zdGFfaW5mby5jLTEyNjUtXHRcdCAgICAgICBzdGEtXHUwMDNlc3RhLmFkZHIpO1xubmV0L21hYzgwMjExL3N0YV9pbmZvLmM6MTI2NjpcdFx0aWVlZTgwMjExX2ZyZWVfdHhza2IoXHUwMDI2bG9jYWwtXHUwMDNlaHcsIHNrYik7XG5uZXQvbWFjODAyMTEvc3RhX2luZm8uYy0xMjY3LVx0fVxuLS1cbm5ldC9tYWM4MDIxMS9zdGF0dXMuYz0yMj12b2lkIGllZWU4MDIxMV90eF9zdGF0dXNfaXJxc2FmZShzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcbi0tXG5uZXQvbWFjODAyMTEvc3RhdHVzLmMtMzUtXHQgICAgICAgKHNrYiA9IHNrYl9kZXF1ZXVlKFx1MDAyNmxvY2FsLVx1MDAzZXNrYl9xdWV1ZV91bnJlbGlhYmxlKSkpIHtcbm5ldC9tYWM4MDIxMS9zdGF0dXMuYzozNjpcdFx0aWVlZTgwMjExX2ZyZWVfdHhza2IoaHcsIHNrYik7XG5uZXQvbWFjODAyMTEvc3RhdHVzLmMtMzctXHRcdHRtcC0tO1xuLS1cbm5ldC9tYWM4MDIxMS9zdGF0dXMuYz00ND1zdGF0aWMgdm9pZCBpZWVlODAyMTFfaGFuZGxlX2ZpbHRlcmVkX2ZyYW1lKHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsLFxuLS1cbm5ldC9tYWM4MDIxMS9zdGF0dXMuYy01NC1cdFx0XHQgICBJRUVFODAyMTFfVFhfQ1RMX0hXXzgwMjExX0VOQ0FQKSkge1xubmV0L21hYzgwMjExL3N0YXR1cy5jOjU1Olx0XHRpZWVlODAyMTFfZnJlZV90eHNrYihcdTAwMjZsb2NhbC1cdTAwM2Vodywgc2tiKTtcbm5ldC9tYWM4MDIxMS9zdGF0dXMuYy01Ni1cdFx0cmV0dXJuO1xuLS1cbm5ldC9tYWM4MDIxMS9zdGF0dXMuYy0xNjgtXHRcdFx0ICAgISF0ZXN0X3N0YV9mbGFnKHN0YSwgV0xBTl9TVEFfUFNfU1RBKSwgamlmZmllcyk7XG5uZXQvbWFjODAyMTEvc3RhdHVzLmM6MTY5Olx0aWVlZTgwMjExX2ZyZWVfdHhza2IoXHUwMDI2bG9jYWwtXHUwMDNlaHcsIHNrYik7XG5uZXQvbWFjODAyMTEvc3RhdHVzLmMtMTcwLX1cbi0tXG5uZXQvbWFjODAyMTEvc3RhdHVzLmM9MTMxMj1FWFBPUlRfU1lNQk9MKGllZWU4MDIxMV9yZXBvcnRfbG93X2Fjayk7XG5uZXQvbWFjODAyMTEvc3RhdHVzLmMtMTMxMy1cbm5ldC9tYWM4MDIxMS9zdGF0dXMuYzoxMzE0OnZvaWQgaWVlZTgwMjExX2ZyZWVfdHhza2Ioc3RydWN0IGllZWU4MDIxMV9odyAqaHcsIHN0cnVjdCBza19idWZmICpza2IpXG5uZXQvbWFjODAyMTEvc3RhdHVzLmMtMTMxNS17XG4tLVxubmV0L21hYzgwMjExL3N0YXR1cy5jLTEzMjEtfVxubmV0L21hYzgwMjExL3N0YXR1cy5jOjEzMjI6RVhQT1JUX1NZTUJPTChpZWVlODAyMTFfZnJlZV90eHNrYik7XG5uZXQvbWFjODAyMTEvc3RhdHVzLmMtMTMyMy1cbm5ldC9tYWM4MDIxMS9zdGF0dXMuYz0xMzI0PXZvaWQgaWVlZTgwMjExX3B1cmdlX3R4X3F1ZXVlKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxuLS1cbm5ldC9tYWM4MDIxMS9zdGF0dXMuYy0xMzI5LVx0d2hpbGUgKChza2IgPSBfX3NrYl9kZXF1ZXVlKHNrYnMpKSlcbm5ldC9tYWM4MDIxMS9zdGF0dXMuYzoxMzMwOlx0XHRpZWVlODAyMTFfZnJlZV90eHNrYihodywgc2tiKTtcbm5ldC9tYWM4MDIxMS9zdGF0dXMuYy0xMzMxLX1cbi0tXG5uZXQvbWFjODAyMTEvdHguYz0zMzA9c3RhdGljIHZvaWQgcHVyZ2Vfb2xkX3BzX2J1ZmZlcnMoc3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwpXG4tLVxubmV0L21hYzgwMjExL3R4LmMtMzQ5LVx0XHRcdHB1cmdlZCYjNDM7JiM0Mzs7XG5uZXQvbWFjODAyMTEvdHguYzozNTA6XHRcdFx0aWVlZTgwMjExX2ZyZWVfdHhza2IoXHUwMDI2bG9jYWwtXHUwMDNlaHcsIHNrYik7XG5uZXQvbWFjODAyMTEvdHguYy0zNTEtXHRcdH1cbi0tXG5uZXQvbWFjODAyMTEvdHguYy0zNjYtXHRcdFx0XHRwdXJnZWQmIzQzOyYjNDM7O1xubmV0L21hYzgwMjExL3R4LmM6MzY3Olx0XHRcdFx0aWVlZTgwMjExX2ZyZWVfdHhza2IoXHUwMDI2bG9jYWwtXHUwMDNlaHcsIHNrYik7XG5uZXQvbWFjODAyMTEvdHguYy0zNjgtXHRcdFx0XHRicmVhaztcbi0tXG5uZXQvbWFjODAyMTEvdHguYz0zNzg9aWVlZTgwMjExX3R4X2hfbXVsdGljYXN0X3BzX2J1ZihzdHJ1Y3QgaWVlZTgwMjExX3R4X2RhdGEgKnR4KVxuLS1cbm5ldC9tYWM4MDIxMS90eC5jLTQzMi1cdFx0ICAgICAgIFwmIzM0O0JDIFRYIGJ1ZmZlciBmdWxsIC0gZHJvcHBpbmcgdGhlIG9sZGVzdCBmcmFtZVxcblwmIzM0Oyk7XG5uZXQvbWFjODAyMTEvdHguYzo0MzM6XHRcdGllZWU4MDIxMV9mcmVlX3R4c2tiKFx1MDAyNnR4LVx1MDAzZWxvY2FsLVx1MDAzZWh3LCBza2JfZGVxdWV1ZShcdTAwMjZwcy1cdTAwM2ViY19idWYpKTtcbm5ldC9tYWM4MDIxMS90eC5jLTQzNC1cdH0gZWxzZVxuLS1cbm5ldC9tYWM4MDIxMS90eC5jPTQ1OD1pZWVlODAyMTFfdHhfaF91bmljYXN0X3BzX2J1ZihzdHJ1Y3QgaWVlZTgwMjExX3R4X2RhdGEgKnR4KVxuLS1cbm5ldC9tYWM4MDIxMS90eC5jLTUwMy1cdFx0XHQgICAgICAgc3RhLVx1MDAzZXN0YS5hZGRyLCBhYyk7XG5uZXQvbWFjODAyMTEvdHguYzo1MDQ6XHRcdFx0aWVlZTgwMjExX2ZyZWVfdHhza2IoXHUwMDI2bG9jYWwtXHUwMDNlaHcsIG9sZCk7XG5uZXQvbWFjODAyMTEvdHguYy01MDUtXHRcdH0gZWxzZVxuLS1cbm5ldC9tYWM4MDIxMS90eC5jPTExMDg9c3RhdGljIGJvb2wgaWVlZTgwMjExX3R4X3ByZXBfYWdnKHN0cnVjdCBpZWVlODAyMTFfdHhfZGF0YSAqdHgsXG4tLVxubmV0L21hYzgwMjExL3R4LmMtMTE2OC1cdFx0aWYgKHB1cmdlX3NrYilcbm5ldC9tYWM4MDIxMS90eC5jOjExNjk6XHRcdFx0aWVlZTgwMjExX2ZyZWVfdHhza2IoXHUwMDI2dHgtXHUwMDNlbG9jYWwtXHUwMDNlaHcsIHB1cmdlX3NrYik7XG5uZXQvbWFjODAyMTEvdHguYy0xMTcwLVx0fVxuLS1cbm5ldC9tYWM4MDIxMS90eC5jPTEzODk9c3RhdGljIHZvaWQgY29kZWxfZHJvcF9mdW5jKHN0cnVjdCBza19idWZmICpza2IsXG4tLVxubmV0L21hYzgwMjExL3R4LmMtMTM5OS1cbm5ldC9tYWM4MDIxMS90eC5jOjE0MDA6XHRpZWVlODAyMTFfZnJlZV90eHNrYihodywgc2tiKTtcbm5ldC9tYWM4MDIxMS90eC5jLTE0MDEtfVxuLS1cbm5ldC9tYWM4MDIxMS90eC5jPTE0MzQ9c3RhdGljIHZvaWQgZnFfc2tiX2ZyZWVfZnVuYyhzdHJ1Y3QgZnEgKmZxLFxuLS1cbm5ldC9tYWM4MDIxMS90eC5jLTE0NDEtXHRsb2NhbCA9IGNvbnRhaW5lcl9vZihmcSwgc3RydWN0IGllZWU4MDIxMV9sb2NhbCwgZnEpO1xubmV0L21hYzgwMjExL3R4LmM6MTQ0MjpcdGllZWU4MDIxMV9mcmVlX3R4c2tiKFx1MDAyNmxvY2FsLVx1MDAzZWh3LCBza2IpO1xubmV0L21hYzgwMjExL3R4LmMtMTQ0My19XG4tLVxubmV0L21hYzgwMjExL3R4LmM9MTY3OT1zdGF0aWMgYm9vbCBpZWVlODAyMTFfdHhfZnJhZ3Moc3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwsXG4tLVxubmV0L21hYzgwMjExL3R4LmMtMTY5NS1cdFx0XHRfX3NrYl91bmxpbmsoc2tiLCBza2JzKTtcbm5ldC9tYWM4MDIxMS90eC5jOjE2OTY6XHRcdFx0aWVlZTgwMjExX2ZyZWVfdHhza2IoXHUwMDI2bG9jYWwtXHUwMDNlaHcsIHNrYik7XG5uZXQvbWFjODAyMTEvdHguYy0xNjk3LVx0XHRcdGNvbnRpbnVlO1xuLS1cbm5ldC9tYWM4MDIxMS90eC5jPTE4MTY9c3RhdGljIGludCBpbnZva2VfdHhfaGFuZGxlcnNfZWFybHkoc3RydWN0IGllZWU4MDIxMV90eF9kYXRhICp0eClcbi0tXG5uZXQvbWFjODAyMTEvdHguYy0xODM2LVx0XHRpZiAodHgtXHUwMDNlc2tiKVxubmV0L21hYzgwMjExL3R4LmM6MTgzNzpcdFx0XHRpZWVlODAyMTFfZnJlZV90eHNrYihcdTAwMjZ0eC1cdTAwM2Vsb2NhbC1cdTAwM2VodywgdHgtXHUwMDNlc2tiKTtcbm5ldC9tYWM4MDIxMS90eC5jLTE4MzgtXHRcdGVsc2Vcbi0tXG5uZXQvbWFjODAyMTEvdHguYz0xODUzPXN0YXRpYyBpbnQgaW52b2tlX3R4X2hhbmRsZXJzX2xhdGUoc3RydWN0IGllZWU4MDIxMV90eF9kYXRhICp0eClcbi0tXG5uZXQvbWFjODAyMTEvdHguYy0xODgwLVx0XHRpZiAodHgtXHUwMDNlc2tiKVxubmV0L21hYzgwMjExL3R4LmM6MTg4MTpcdFx0XHRpZWVlODAyMTFfZnJlZV90eHNrYihcdTAwMjZ0eC1cdTAwM2Vsb2NhbC1cdTAwM2VodywgdHgtXHUwMDNlc2tiKTtcbm5ldC9tYWM4MDIxMS90eC5jLTE4ODItXHRcdGVsc2Vcbi0tXG5uZXQvbWFjODAyMTEvdHguYz0xOTAyPWJvb2wgaWVlZTgwMjExX3R4X3ByZXBhcmVfc2tiKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxuLS1cbm5ldC9tYWM4MDIxMS90eC5jLTE5MzItXHRpZiAoV0FSTl9PTihza2IyICE9IHNrYiB8fCAhc2tiX3F1ZXVlX2VtcHR5KFx1MDAyNnR4LnNrYnMpKSkge1xubmV0L21hYzgwMjExL3R4LmM6MTkzMzpcdFx0aWVlZTgwMjExX2ZyZWVfdHhza2IoaHcsIHNrYjIpO1xubmV0L21hYzgwMjExL3R4LmMtMTkzNC1cdFx0aWVlZTgwMjExX3B1cmdlX3R4X3F1ZXVlKGh3LCBcdTAwMjZ0eC5za2JzKTtcbi0tXG5uZXQvbWFjODAyMTEvdHguYz0xOTQ1PXN0YXRpYyBib29sIGllZWU4MDIxMV90eChzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSxcbi0tXG5uZXQvbWFjODAyMTEvdHguYy0xOTYzLVx0aWYgKHVubGlrZWx5KHJlc19wcmVwYXJlID09IFRYX0RST1ApKSB7XG5uZXQvbWFjODAyMTEvdHguYzoxOTY0Olx0XHRpZWVlODAyMTFfZnJlZV90eHNrYihcdTAwMjZsb2NhbC1cdTAwM2Vodywgc2tiKTtcbm5ldC9tYWM4MDIxMS90eC5jLTE5NjUtXHRcdHR4LnNkYXRhLVx1MDAzZXR4X2hhbmRsZXJzX2Ryb3AmIzQzOyYjNDM7O1xuLS1cbm5ldC9tYWM4MDIxMS90eC5jPTIwMzQ9dm9pZCBpZWVlODAyMTFfeG1pdChzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSxcbi0tXG5uZXQvbWFjODAyMTEvdHguYy0yMDU2LVx0aWYgKGllZWU4MDIxMV9za2JfcmVzaXplKHNkYXRhLCBza2IsIGhlYWRyb29tLCBlbmNyeXB0KSkge1xubmV0L21hYzgwMjExL3R4LmM6MjA1NzpcdFx0aWVlZTgwMjExX2ZyZWVfdHhza2IoXHUwMDI2bG9jYWwtXHUwMDNlaHcsIHNrYik7XG5uZXQvbWFjODAyMTEvdHguYy0yMDU4LVx0XHRyZXR1cm47XG4tLVxubmV0L21hYzgwMjExL3R4LmM9MjYzMT1zdGF0aWMgc3RydWN0IHNrX2J1ZmYgKmllZWU4MDIxMV9idWlsZF9oZHIoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsXG4tLVxubmV0L21hYzgwMjExL3R4LmMtMjk4Mi1cdFx0aWYgKGllZWU4MDIxMV9za2JfcmVzaXplKHNkYXRhLCBza2IsIGhlYWRfbmVlZCwgRU5DUllQVF9EQVRBKSkge1xubmV0L21hYzgwMjExL3R4LmM6Mjk4MzpcdFx0XHRpZWVlODAyMTFfZnJlZV90eHNrYihcdTAwMjZsb2NhbC1cdTAwM2Vodywgc2tiKTtcbm5ldC9tYWM4MDIxMS90eC5jLTI5ODQtXHRcdFx0c2tiID0gTlVMTDtcbi0tXG5uZXQvbWFjODAyMTEvdHguYz0zODYwPXN0cnVjdCBza19idWZmICppZWVlODAyMTFfdHhfZGVxdWV1ZShzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcbi0tXG5uZXQvbWFjODAyMTEvdHguYy0zOTQwLVx0XHRcdEk4MDJfREVCVUdfSU5DKGxvY2FsLVx1MDAzZXR4X2hhbmRsZXJzX2Ryb3BfdW5hdXRoX3BvcnQpO1xubmV0L21hYzgwMjExL3R4LmM6Mzk0MTpcdFx0XHRpZWVlODAyMTFfZnJlZV90eHNrYihcdTAwMjZsb2NhbC1cdTAwM2Vodywgc2tiKTtcbm5ldC9tYWM4MDIxMS90eC5jLTM5NDItXHRcdFx0Z290byBiZWdpbjtcbi0tXG5uZXQvbWFjODAyMTEvdHguYy0zOTUyLVx0aWYgKHIgIT0gVFhfQ09OVElOVUUpIHtcbm5ldC9tYWM4MDIxMS90eC5jOjM5NTM6XHRcdGllZWU4MDIxMV9mcmVlX3R4c2tiKFx1MDAyNmxvY2FsLVx1MDAzZWh3LCBza2IpO1xubmV0L21hYzgwMjExL3R4LmMtMzk1NC1cdFx0Z290byBiZWdpbjtcbi0tXG5uZXQvbWFjODAyMTEvdHguYy0zOTY0LVx0XHRcdGlmIChyICE9IFRYX0NPTlRJTlVFKSB7XG5uZXQvbWFjODAyMTEvdHguYzozOTY1Olx0XHRcdFx0aWVlZTgwMjExX2ZyZWVfdHhza2IoXHUwMDI2bG9jYWwtXHUwMDNlaHcsIHNrYik7XG5uZXQvbWFjODAyMTEvdHguYy0zOTY2LVx0XHRcdFx0Z290byBiZWdpbjtcbi0tXG5uZXQvbWFjODAyMTEvdHguYy0zOTgzLVx0XHRpZiAociAhPSBUWF9DT05USU5VRSkge1xubmV0L21hYzgwMjExL3R4LmM6Mzk4NDpcdFx0XHRpZWVlODAyMTFfZnJlZV90eHNrYihcdTAwMjZsb2NhbC1cdTAwM2Vodywgc2tiKTtcbm5ldC9tYWM4MDIxMS90eC5jLTM5ODUtXHRcdFx0Z290byBiZWdpbjtcbi0tXG5uZXQvbWFjODAyMTEvdHguYy00MDAzLVx0XHRpZiAoc2tiX2xpbmVhcml6ZShza2IpKSB7XG5uZXQvbWFjODAyMTEvdHguYzo0MDA0Olx0XHRcdGllZWU4MDIxMV9mcmVlX3R4c2tiKFx1MDAyNmxvY2FsLVx1MDAzZWh3LCBza2IpO1xubmV0L21hYzgwMjExL3R4LmMtNDAwNS1cdFx0XHRnb3RvIGJlZ2luO1xuLS1cbm5ldC9tYWM4MDIxMS90eC5jLTQwMjItXHRcdH0gZWxzZSBpZiAoaWVlZTgwMjExX2h3X2NoZWNrKFx1MDAyNmxvY2FsLVx1MDAzZWh3LCBRVUVVRV9DT05UUk9MKSkge1xubmV0L21hYzgwMjExL3R4LmM6NDAyMzpcdFx0XHRpZWVlODAyMTFfZnJlZV90eHNrYihcdTAwMjZsb2NhbC1cdTAwM2Vodywgc2tiKTtcbm5ldC9tYWM4MDIxMS90eC5jLTQwMjQtXHRcdFx0Z290byBiZWdpbjtcbi0tXG5uZXQvbWFjODAyMTEvdHguYz00ODk1PXZvaWQgaWVlZTgwMjExX2NsZWFyX3R4X3BlbmRpbmcoc3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwpXG4tLVxubmV0L21hYzgwMjExL3R4LmMtNDkwMS1cdFx0d2hpbGUgKChza2IgPSBza2JfZGVxdWV1ZShcdTAwMjZsb2NhbC1cdTAwM2VwZW5kaW5nW2ldKSkgIT0gTlVMTClcbm5ldC9tYWM4MDIxMS90eC5jOjQ5MDI6XHRcdFx0aWVlZTgwMjExX2ZyZWVfdHhza2IoXHUwMDI2bG9jYWwtXHUwMDNlaHcsIHNrYik7XG5uZXQvbWFjODAyMTEvdHguYy00OTAzLVx0fVxuLS1cbm5ldC9tYWM4MDIxMS90eC5jPTQ5NjM9dm9pZCBpZWVlODAyMTFfdHhfcGVuZGluZyhzdHJ1Y3QgdGFza2xldF9zdHJ1Y3QgKnQpXG4tLVxubmV0L21hYzgwMjExL3R4LmMtNDk4Ny1cdFx0XHRpZiAoV0FSTl9PTighaW5mby1cdTAwM2Vjb250cm9sLnZpZikpIHtcbm5ldC9tYWM4MDIxMS90eC5jOjQ5ODg6XHRcdFx0XHRpZWVlODAyMTFfZnJlZV90eHNrYihcdTAwMjZsb2NhbC1cdTAwM2Vodywgc2tiKTtcbm5ldC9tYWM4MDIxMS90eC5jLTQ5ODktXHRcdFx0XHRjb250aW51ZTtcbi0tXG5uZXQvbWFjODAyMTEvdHguYz02MjMyPWllZWU4MDIxMV9nZXRfYnVmZmVyZWRfYmMoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXG4tLVxubmV0L21hYzgwMjExL3R4LmMtNjI4Ny1cdFx0XHRicmVhaztcbm5ldC9tYWM4MDIxMS90eC5jOjYyODg6XHRcdGllZWU4MDIxMV9mcmVlX3R4c2tiKGh3LCBza2IpO1xubmV0L21hYzgwMjExL3R4LmMtNjI4OS1cdH1cbi0tXG5uZXQvbWFjODAyMTEvdXRpbC5jPTU1MT12b2lkIGllZWU4MDIxMV9hZGRfcGVuZGluZ19za2Ioc3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwsXG4tLVxubmV0L21hYzgwMjExL3V0aWwuYy01NTktXHRpZiAoV0FSTl9PTighaW5mby1cdTAwM2Vjb250cm9sLnZpZikpIHtcbm5ldC9tYWM4MDIxMS91dGlsLmM6NTYwOlx0XHRpZWVlODAyMTFfZnJlZV90eHNrYihcdTAwMjZsb2NhbC1cdTAwM2Vodywgc2tiKTtcbm5ldC9tYWM4MDIxMS91dGlsLmMtNTYxLVx0XHRyZXR1cm47XG4tLVxubmV0L21hYzgwMjExL3V0aWwuYz01NzM9dm9pZCBpZWVlODAyMTFfYWRkX3BlbmRpbmdfc2ticyhzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbCxcbi0tXG5uZXQvbWFjODAyMTEvdXRpbC5jLTU4NS1cdFx0aWYgKFdBUk5fT04oIWluZm8tXHUwMDNlY29udHJvbC52aWYpKSB7XG5uZXQvbWFjODAyMTEvdXRpbC5jOjU4NjpcdFx0XHRpZWVlODAyMTFfZnJlZV90eHNrYihcdTAwMjZsb2NhbC1cdTAwM2Vodywgc2tiKTtcbm5ldC9tYWM4MDIxMS91dGlsLmMtNTg3LVx0XHRcdGNvbnRpbnVlO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA2IDIxOjA2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDExNDQyCgkJCQkJCQlvdXRwdXQ6IDMzCgkJCQkJCQl0aG91Z2h0czogMjY5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgUGF0Y2ggZm9yIFBvdGVudGlhbCBGdXp6aW5nKioKCk9rYXksIHNvIHRoZSBwYXRjaCBJJiMzOTttIGxvb2tpbmcgYXQgbW9kaWZpZXMgYGllZWU4MDIxMV9kb19zdG9wYCwgc3BlY2lmaWNhbGx5IHdpdGhpbiBgbmV0L21hYzgwMjExL2lmYWNlLmNgLiBUaGlzIGlzIHRoZSBmdW5jdGlvbiByZXNwb25zaWJsZSBmb3Igc3RvcHBpbmcgYW4gaW50ZXJmYWNlLCB3aGljaCwgYnkgaXRzIG5hdHVyZSwgaXNuJiMzOTt0IGEgaGlnaC1mcmVxdWVuY3kgb3BlcmF0aW9uIOKAkyBzbyBpdCYjMzk7cyBub3QgYSBob3QgcGF0aC4gSG93ZXZlciwgaXQgKmlzKiByZWFjaGFibGUg4oCTIHRoYXQmIzM5O3MgZ29vZC4gSSBjYW4gdHJpZ2dlciBpdCB3aXRoIHN0YW5kYXJkIG5ldGxpbmsgY29tbWFuZHMgbGlrZSBgaWZjb25maWcgd2xhbjAgZG93bmAuCgpOb3csIHRoZSBpbXBvcnRhbnQgcXVlc3Rpb246IGlzIGl0IHdvcnRoIGZ1enppbmc/IEdpdmVuIHRoYXQgaXQmIzM5O3MgYSBmdW5jdGlvbmFsIGNoYW5nZSB3aXRoaW4gdGhlIGtlcm5lbCwgdGhlIGFuc3dlciBpcyBhIGRlZmluaXRlIHllcy4gV2UgaGF2ZSB0aGUgYE1BQzgwMjExYCBjb25maWcsIHdoaWNoIGNvdmVycyB0aGlzIGNvZGUuIExldCBtZSBkb3VibGUtY2hlY2sgdGhvdWdoLi4uIFl1cCwgdGhlIGNvZGUgaXMgaW5kZWVkIGluIGBuZXQvbWFjODAyMTEvaWZhY2UuY2AuIEkmIzM5O20gZ29pbmcgdG8gbWFrZSBzdXJlIHRoZXJlIGFyZW4mIzM5O3QgYW55IG90aGVyIGRlcGVuZGVudCBjb25maWdzLgoKV2FpdCBhIHNlY29uZC4uLiB0aGUgcGF0Y2ggc3BlY2lmaWVzIGEgY2hlY2sgZm9yIGBzZGF0YS0mZ3Q7dmlmLnR5cGUgPT0gTkw4MDIxMV9JRlRZUEVfQVBfVkxBTmAuIE9rYXksIHNvIGl0JiMzOTtzICpzcGVjaWZpY2FsbHkqIHJlbGF0ZWQgdG8gQVBfVkxBTiBpbnRlcmZhY2VzLiBUaGF0IGNoYW5nZXMgdGhpbmdzIGEgYml0LiBEb2VzIEFQX1ZMQU4gaGF2ZSBpdHMgb3duIHNwZWNpZmljIGNvbmZpZ3VyYXRpb24/IExldCBtZSBjb25zdWx0IGBuZXQvbWFjODAyMTEvS2NvbmZpZ2Agb3IgcG9zc2libHkgYG5ldC93aXJlbGVzcy9LY29uZmlnYCB0byBzZWUgaWYgdGhlcmUmIzM5O3MgYSBkZWRpY2F0ZWQgY29uZmlnIG9wdGlvbiByZWxhdGVkIHRvIEFQX1ZMQU4gdGhhdCBJIG5lZWQgdG8gYmUgYXdhcmUgb2YuIEdvdHRhIGVuc3VyZSB0aGUgZnV6emluZyBzZXR1cCBhY2N1cmF0ZWx5IHJlZmxlY3RzIHRoZSByZWxldmFudCBrZXJuZWwgYnVpbGQgY29uZmlndXJhdGlvbnMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA2IDIxOjA3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O0FQX1ZMQU4mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbWFjODAyMTEvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O1xuRnVsbCBvdXRwdXQgaXMgdG9vIGxvbmcsIHNob3dpbmcgNTAwIG91dCBvZiA2NDIgbGluZXMuXG5Vc2UgbW9yZSBwcmVjaXNlIGV4cHJlc3Npb24gaWYgcG9zc2libGUuXG5cbm5ldC9tYWM4MDIxMS9hZ2ctdHguYz02MDM9aW50IGllZWU4MDIxMV9zdGFydF90eF9iYV9zZXNzaW9uKHN0cnVjdCBpZWVlODAyMTFfc3RhICpwdWJzdGEsIHUxNiB0aWQsXG4tLVxubmV0L21hYzgwMjExL2FnZy10eC5jLTY0MS1cdCAgICBzZGF0YS1cdTAwM2V2aWYudHlwZSAhPSBOTDgwMjExX0lGVFlQRV9NRVNIX1BPSU5UIFx1MDAyNlx1MDAyNlxubmV0L21hYzgwMjExL2FnZy10eC5jOjY0MjpcdCAgICBzZGF0YS1cdTAwM2V2aWYudHlwZSAhPSBOTDgwMjExX0lGVFlQRV9BUF9WTEFOIFx1MDAyNlx1MDAyNlxubmV0L21hYzgwMjExL2FnZy10eC5jLTY0My1cdCAgICBzZGF0YS1cdTAwM2V2aWYudHlwZSAhPSBOTDgwMjExX0lGVFlQRV9BUCBcdTAwMjZcdTAwMjZcbi0tXG5uZXQvbWFjODAyMTEvY2ZnLmM9MjA2PXN0YXRpYyBzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICppZWVlODAyMTFfYWRkX2lmYWNlKHN0cnVjdCB3aXBoeSAqd2lwaHksXG4tLVxubmV0L21hYzgwMjExL2NmZy5jLTIzNS1cdHN3aXRjaCAodHlwZSkge1xubmV0L21hYzgwMjExL2NmZy5jOjIzNjpcdGNhc2UgTkw4MDIxMV9JRlRZUEVfQVBfVkxBTjpcbm5ldC9tYWM4MDIxMS9jZmcuYy0yMzctXHRcdGJyZWFrO1xuLS1cbm5ldC9tYWM4MDIxMS9jZmcuYz0yNTk9c3RhdGljIGludCBpZWVlODAyMTFfY2hhbmdlX2lmYWNlKHN0cnVjdCB3aXBoeSAqd2lwaHksXG4tLVxubmV0L21hYzgwMjExL2NmZy5jLTI3NC1cbm5ldC9tYWM4MDIxMS9jZmcuYzoyNzU6XHRpZiAodHlwZSA9PSBOTDgwMjExX0lGVFlQRV9BUF9WTEFOIFx1MDAyNlx1MDAyNiBwYXJhbXMtXHUwMDNldXNlXzRhZGRyID09IDApIHtcbm5ldC9tYWM4MDIxMS9jZmcuYy0yNzYtXHRcdFJDVV9JTklUX1BPSU5URVIoc2RhdGEtXHUwMDNldS52bGFuLnN0YSwgTlVMTCk7XG4tLVxubmV0L21hYzgwMjExL2NmZy5jPTYxMz1zdGF0aWMgaW50IGllZWU4MDIxMV9hZGRfa2V5KHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsXG4tLVxubmV0L21hYzgwMjExL2NmZy5jLTY5OS1cdGNhc2UgTkw4MDIxMV9JRlRZUEVfQVA6XG5uZXQvbWFjODAyMTEvY2ZnLmM6NzAwOlx0Y2FzZSBOTDgwMjExX0lGVFlQRV9BUF9WTEFOOlxubmV0L21hYzgwMjExL2NmZy5jLTcwMS1cdGNhc2UgTkw4MDIxMV9JRlRZUEVfTkFOOlxuLS1cbm5ldC9tYWM4MDIxMS9jZmcuYz0yNjMwPXN0YXRpYyBpbnQgaWVlZTgwMjExX2FkZF9zdGF0aW9uKHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsXG4tLVxubmV0L21hYzgwMjExL2NmZy5jLTI2NDMtXG5uZXQvbWFjODAyMTEvY2ZnLmM6MjY0NDpcdFx0aWYgKHNkYXRhLVx1MDAzZXZpZi50eXBlICE9IE5MODAyMTFfSUZUWVBFX0FQX1ZMQU4gXHUwMDI2XHUwMDI2XG5uZXQvbWFjODAyMTEvY2ZnLmMtMjY0NS1cdFx0ICAgIHNkYXRhLVx1MDAzZXZpZi50eXBlICE9IE5MODAyMTFfSUZUWVBFX0FQKVxuLS1cbm5ldC9tYWM4MDIxMS9jZmcuYz0yNzgzPXN0YXRpYyBpbnQgaWVlZTgwMjExX2NoYW5nZV9zdGF0aW9uKHN0cnVjdCB3aXBoeSAqd2lwaHksXG4tLVxubmV0L21hYzgwMjExL2NmZy5jLTI4MjAtXHRjYXNlIE5MODAyMTFfSUZUWVBFX0FQOlxubmV0L21hYzgwMjExL2NmZy5jOjI4MjE6XHRjYXNlIE5MODAyMTFfSUZUWVBFX0FQX1ZMQU46XG5uZXQvbWFjODAyMTEvY2ZnLmMtMjgyMi1cdFx0aWYgKHRlc3Rfc3RhX2ZsYWcoc3RhLCBXTEFOX1NUQV9BU1NPQykpXG4tLVxubmV0L21hYzgwMjExL2NmZy5jLTI4NTAtXG5uZXQvbWFjODAyMTEvY2ZnLmM6Mjg1MTpcdFx0aWYgKHN0YS1cdTAwM2VzZGF0YS1cdTAwM2V2aWYudHlwZSA9PSBOTDgwMjExX0lGVFlQRV9BUF9WTEFOIFx1MDAyNlx1MDAyNlxubmV0L21hYzgwMjExL2NmZy5jLTI4NTItXHRcdCAgICBzdGEtXHUwMDNlc2RhdGEtXHUwMDNldS52bGFuLnN0YSlcbi0tXG5uZXQvbWFjODAyMTEvY2hhbi5jPTExMj1pZWVlODAyMTFfY2hhbmN0eF91c2VyX2l0ZXJfbmV4dChzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbCxcbi0tXG5uZXQvbWFjODAyMTEvY2hhbi5jLTE0Mi1cbm5ldC9tYWM4MDIxMS9jaGFuLmM6MTQzOlx0XHQvKiBBUF9WTEFOIGhhcyBhIGNoYW5jdHggcG9pbnRlciBidXQgZm9sbG93cyBBUCAqL1xubmV0L21hYzgwMjExL2NoYW4uYzoxNDQ6XHRcdGlmIChpdGVyLVx1MDAzZXNkYXRhLVx1MDAzZXZpZi50eXBlID09IE5MODAyMTFfSUZUWVBFX0FQX1ZMQU4pXG5uZXQvbWFjODAyMTEvY2hhbi5jLTE0NS1cdFx0XHRjb250aW51ZTtcbi0tXG5uZXQvbWFjODAyMTEvY2hhbi5jPTUxOT1pZWVlODAyMTFfZ2V0X3dpZHRoX29mX2xpbmsoc3RydWN0IGllZWU4MDIxMV9saW5rX2RhdGEgKmxpbmspXG4tLVxubmV0L21hYzgwMjExL2NoYW4uYy01NDAtXHRjYXNlIE5MODAyMTFfSUZUWVBFX0FQOlxubmV0L21hYzgwMjExL2NoYW4uYzo1NDE6XHRjYXNlIE5MODAyMTFfSUZUWVBFX0FQX1ZMQU46XG5uZXQvbWFjODAyMTEvY2hhbi5jLTU0Mi1cdFx0cmV0dXJuIGllZWU4MDIxMV9nZXRfbWF4X3JlcXVpcmVkX2J3KGxpbmspO1xuLS1cbm5ldC9tYWM4MDIxMS9jaGFuLmM9MTU3OT1pZWVlODAyMTFfbGlua19jaGFuY3R4X3Jlc2VydmF0aW9uX2NvbXBsZXRlKHN0cnVjdCBpZWVlODAyMTFfbGlua19kYXRhICpsaW5rKVxuLS1cbm5ldC9tYWM4MDIxMS9jaGFuLmMtMTU5NS1cdGNhc2UgTkw4MDIxMV9JRlRZUEVfVU5TUEVDSUZJRUQ6XG5uZXQvbWFjODAyMTEvY2hhbi5jOjE1OTY6XHRjYXNlIE5MODAyMTFfSUZUWVBFX0FQX1ZMQU46XG5uZXQvbWFjODAyMTEvY2hhbi5jLTE1OTctXHRjYXNlIE5MODAyMTFfSUZUWVBFX1dEUzpcbi0tXG5uZXQvbWFjODAyMTEvY2hhbi5jPTI0ODI9dm9pZCBpZWVlODAyMTFfbGlua19yZWxlYXNlX2NoYW5uZWwoc3RydWN0IGllZWU4MDIxMV9saW5rX2RhdGEgKmxpbmspXG4tLVxubmV0L21hYzgwMjExL2NoYW4uYy0yNDg1LVxubmV0L21hYzgwMjExL2NoYW4uYzoyNDg2Olx0aWYgKHNkYXRhLVx1MDAzZXZpZi50eXBlID09IE5MODAyMTFfSUZUWVBFX0FQX1ZMQU4pXG5uZXQvbWFjODAyMTEvY2hhbi5jLTI0ODctXHRcdHJldHVybjtcbi0tXG5uZXQvbWFjODAyMTEvY2hhbi5jPTI0OTU9dm9pZCBpZWVlODAyMTFfbGlua192bGFuX2NvcHlfY2hhbmN0eChzdHJ1Y3QgaWVlZTgwMjExX2xpbmtfZGF0YSAqbGluaylcbi0tXG5uZXQvbWFjODAyMTEvY2hhbi5jLTI1MDYtXG5uZXQvbWFjODAyMTEvY2hhbi5jOjI1MDc6XHRpZiAoV0FSTl9PTihzZGF0YS1cdTAwM2V2aWYudHlwZSAhPSBOTDgwMjExX0lGVFlQRV9BUF9WTEFOIHx8ICFzZGF0YS1cdTAwM2Vic3MpKVxubmV0L21hYzgwMjExL2NoYW4uYy0yNTA4LVx0XHRyZXR1cm47XG4tLVxubmV0L21hYzgwMjExL2RlYnVnZnNfbmV0ZGV2LmM9OTM3PXN0YXRpYyB2b2lkIGFkZF9maWxlcyhzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSlcbi0tXG5uZXQvbWFjODAyMTEvZGVidWdmc19uZXRkZXYuYy05NjQtXHRcdGJyZWFrO1xubmV0L21hYzgwMjExL2RlYnVnZnNfbmV0ZGV2LmM6OTY1Olx0Y2FzZSBOTDgwMjExX0lGVFlQRV9BUF9WTEFOOlxubmV0L21hYzgwMjExL2RlYnVnZnNfbmV0ZGV2LmMtOTY2LVx0XHRhZGRfdmxhbl9maWxlcyhzZGF0YSk7XG4tLVxubmV0L21hYzgwMjExL2RyaXZlci1vcHMuYz01Nz1pbnQgZHJ2X2FkZF9pbnRlcmZhY2Uoc3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwsXG4tLVxubmV0L21hYzgwMjExL2RyaXZlci1vcHMuYy02NC1cbm5ldC9tYWM4MDIxMS9kcml2ZXItb3BzLmM6NjU6XHRpZiAoV0FSTl9PTihzZGF0YS1cdTAwM2V2aWYudHlwZSA9PSBOTDgwMjExX0lGVFlQRV9BUF9WTEFOIHx8XG5uZXQvbWFjODAyMTEvZHJpdmVyLW9wcy5jLTY2LVx0XHQgICAgKHNkYXRhLVx1MDAzZXZpZi50eXBlID09IE5MODAyMTFfSUZUWVBFX01PTklUT1IgXHUwMDI2XHUwMDI2XG4tLVxubmV0L21hYzgwMjExL2RyaXZlci1vcHMuaD0yNT1nZXRfYnNzX3NkYXRhKHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhKVxubmV0L21hYzgwMjExL2RyaXZlci1vcHMuaC0yNi17XG5uZXQvbWFjODAyMTEvZHJpdmVyLW9wcy5oOjI3Olx0aWYgKHNkYXRhIFx1MDAyNlx1MDAyNiBzZGF0YS1cdTAwM2V2aWYudHlwZSA9PSBOTDgwMjExX0lGVFlQRV9BUF9WTEFOKVxubmV0L21hYzgwMjExL2RyaXZlci1vcHMuaC0yOC1cdFx0c2RhdGEgPSBjb250YWluZXJfb2Yoc2RhdGEtXHUwMDNlYnNzLCBzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhLFxuLS1cbm5ldC9tYWM4MDIxMS9oZS5jPTEzPWllZWU4MDIxMV91cGRhdGVfZnJvbV9oZV82Z2h6X2NhcGEoY29uc3Qgc3RydWN0IGllZWU4MDIxMV9oZV82Z2h6X2NhcGEgKmhlXzZnaHpfY2FwYSxcbi0tXG5uZXQvbWFjODAyMTEvaGUuYy0xOS1cdGlmIChzdGEtXHUwMDNlc2RhdGEtXHUwMDNldmlmLnR5cGUgPT0gTkw4MDIxMV9JRlRZUEVfQVAgfHxcbm5ldC9tYWM4MDIxMS9oZS5jOjIwOlx0ICAgIHN0YS1cdTAwM2VzZGF0YS1cdTAwM2V2aWYudHlwZSA9PSBOTDgwMjExX0lGVFlQRV9BUF9WTEFOKSB7XG5uZXQvbWFjODAyMTEvaGUuYy0yMS1cdFx0c3dpdGNoIChsZTE2X2dldF9iaXRzKGhlXzZnaHpfY2FwYS1cdTAwM2VjYXBhLFxuLS1cbm5ldC9tYWM4MDIxMS9odC5jPTEzOD1ib29sIGllZWU4MDIxMV9odF9jYXBfaWVfdG9fc3RhX2h0X2NhcChzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSxcbi0tXG5uZXQvbWFjODAyMTEvaHQuYy0yNTYtXHRpZiAoc3RhLVx1MDAzZXNkYXRhLVx1MDAzZXZpZi50eXBlID09IE5MODAyMTFfSUZUWVBFX0FQIHx8XG5uZXQvbWFjODAyMTEvaHQuYzoyNTc6XHQgICAgc3RhLVx1MDAzZXNkYXRhLVx1MDAzZXZpZi50eXBlID09IE5MODAyMTFfSUZUWVBFX0FQX1ZMQU4gfHxcbm5ldC9tYWM4MDIxMS9odC5jLTI1OC1cdCAgICBzdGEtXHUwMDNlc2RhdGEtXHUwMDNldmlmLnR5cGUgPT0gTkw4MDIxMV9JRlRZUEVfTkFOIHx8XG4tLVxubmV0L21hYzgwMjExL2llZWU4MDIxMV9pLmg9MTk1ND12b2lkIGllZWU4MDIxMV92aWZfdW5ibG9ja19xdWV1ZXNfY3NhKHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhKTtcbi0tXG5uZXQvbWFjODAyMTEvaWVlZTgwMjExX2kuaC0xOTU3LSAqIGludGVyZmFjZS4gSXQgcmV0dXJucyAtMSBpZiB0aGF0IG51bWJlciBpcyBub3QgdHJhY2tlZCwgdGhhdCBpcyBmb3IgbmV0ZGV2c1xubmV0L21hYzgwMjExL2llZWU4MDIxMV9pLmg6MTk1ODogKiBub3QgaW4gQVAgb3IgQVBfVkxBTiBtb2RlIG9yIHdoZW4gdXNpbmcgNGFkZHIuXG5uZXQvbWFjODAyMTEvaWVlZTgwMjExX2kuaC0xOTU5LSAqL1xuLS1cbm5ldC9tYWM4MDIxMS9pZWVlODAyMTFfaS5oPTE5NjE9aWVlZTgwMjExX3ZpZl9nZXRfbnVtX21jYXN0X2lmKHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhKVxuLS1cbm5ldC9tYWM4MDIxMS9pZWVlODAyMTFfaS5oLTE5NjQtXHRcdHJldHVybiBhdG9taWNfcmVhZChcdTAwMjZzZGF0YS1cdTAwM2V1LmFwLm51bV9tY2FzdF9zdGEpO1xubmV0L21hYzgwMjExL2llZWU4MDIxMV9pLmg6MTk2NTpcdGlmIChzZGF0YS1cdTAwM2V2aWYudHlwZSA9PSBOTDgwMjExX0lGVFlQRV9BUF9WTEFOIFx1MDAyNlx1MDAyNiAhc2RhdGEtXHUwMDNldS52bGFuLnN0YSlcbm5ldC9tYWM4MDIxMS9pZWVlODAyMTFfaS5oLTE5NjYtXHRcdHJldHVybiBhdG9taWNfcmVhZChcdTAwMjZzZGF0YS1cdTAwM2V1LnZsYW4ubnVtX21jYXN0X3N0YSk7XG4tLVxubmV0L21hYzgwMjExL2llZWU4MDIxMV9pLmg9MjMwNj1pZWVlODAyMTFfbWdtdF9iYShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBjb25zdCB1OCAqZGEsXG4tLVxubmV0L21hYzgwMjExL2llZWU4MDIxMV9pLmgtMjMxNC1cdGlmIChzZGF0YS1cdTAwM2V2aWYudHlwZSA9PSBOTDgwMjExX0lGVFlQRV9BUCB8fFxubmV0L21hYzgwMjExL2llZWU4MDIxMV9pLmg6MjMxNTpcdCAgICBzZGF0YS1cdTAwM2V2aWYudHlwZSA9PSBOTDgwMjExX0lGVFlQRV9BUF9WTEFOIHx8XG5uZXQvbWFjODAyMTEvaWVlZTgwMjExX2kuaC0yMzE2LVx0ICAgIHNkYXRhLVx1MDAzZXZpZi50eXBlID09IE5MODAyMTFfSUZUWVBFX01FU0hfUE9JTlQpXG4tLVxubmV0L21hYzgwMjExL2lmYWNlLmM9MzI5PXN0YXRpYyBpbmxpbmUgaW50IGlkZW50aWNhbF9tYWNfYWRkcl9hbGxvd2VkKGludCB0eXBlMSwgaW50IHR5cGUyKVxuLS1cbm5ldC9tYWM4MDIxMS9pZmFjZS5jLTMzNC1cdFx0dHlwZTIgPT0gTkw4MDIxMV9JRlRZUEVfUDJQX0RFVklDRSB8fFxubmV0L21hYzgwMjExL2lmYWNlLmM6MzM1Olx0XHQodHlwZTEgPT0gTkw4MDIxMV9JRlRZUEVfQVAgXHUwMDI2XHUwMDI2IHR5cGUyID09IE5MODAyMTFfSUZUWVBFX0FQX1ZMQU4pIHx8XG5uZXQvbWFjODAyMTEvaWZhY2UuYzozMzY6XHRcdCh0eXBlMSA9PSBOTDgwMjExX0lGVFlQRV9BUF9WTEFOIFx1MDAyNlx1MDAyNlxubmV0L21hYzgwMjExL2lmYWNlLmMtMzM3LVx0XHRcdCh0eXBlMiA9PSBOTDgwMjExX0lGVFlQRV9BUCB8fFxubmV0L21hYzgwMjExL2lmYWNlLmM6MzM4Olx0XHRcdCB0eXBlMiA9PSBOTDgwMjExX0lGVFlQRV9BUF9WTEFOKSk7XG5uZXQvbWFjODAyMTEvaWZhY2UuYy0zMzktfVxuLS1cbm5ldC9tYWM4MDIxMS9pZmFjZS5jPTM0MT1zdGF0aWMgaW50IGllZWU4MDIxMV9jaGVja19jb25jdXJyZW50X2lmYWNlKHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLFxuLS1cbm5ldC9tYWM4MDIxMS9pZmFjZS5jLTQxNC1cdFx0XHQgKi9cbm5ldC9tYWM4MDIxMS9pZmFjZS5jOjQxNTpcdFx0XHRpZiAoaWZ0eXBlID09IE5MODAyMTFfSUZUWVBFX0FQX1ZMQU4gXHUwMDI2XHUwMDI2XG5uZXQvbWFjODAyMTEvaWZhY2UuYy00MTYtXHRcdFx0ICAgIG5zZGF0YS1cdTAwM2V2aWYudHlwZSA9PSBOTDgwMjExX0lGVFlQRV9BUClcbi0tXG5uZXQvbWFjODAyMTEvaWZhY2UuYz00Nzk9c3RhdGljIHZvaWQgaWVlZTgwMjExX2RvX3N0b3Aoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsIGJvb2wgZ29pbmdfZG93bilcbi0tXG5uZXQvbWFjODAyMTEvaWZhY2UuYy01MTMtXHRcdGJyZWFrO1xubmV0L21hYzgwMjExL2lmYWNlLmM6NTE0Olx0Y2FzZSBOTDgwMjExX0lGVFlQRV9BUF9WTEFOOlxubmV0L21hYzgwMjExL2lmYWNlLmMtNTE1LVx0XHRpZWVlODAyMTFfYXB2bGFuX2xpbmtfY2xlYXIoc2RhdGEpO1xuLS1cbm5ldC9tYWM4MDIxMS9pZmFjZS5jLTUzMC1cdCAqXG5uZXQvbWFjODAyMTEvaWZhY2UuYzo1MzE6XHQgKiBGb3IgQVBfVkxBTnMsIE5BTiBhbmQgTkFOX0RBVEEgc3RhdGlvbnMgbWF5IGV4aXN0IHNpbmNlIHRoZXJlJiMzOTtzXG5uZXQvbWFjODAyMTEvaWZhY2UuYy01MzItXHQgKiBub3RoaW5nIGVsc2UgdGhhdCB3b3VsZCBoYXZlIHJlbW92ZWQgdGhlbSwgYnV0IGluIG90aGVyIG1vZGVzIHRoZXJlXG4tLVxubmV0L21hYzgwMjExL2lmYWNlLmMtNTM1LVx0Zmx1c2hlZCA9IHN0YV9pbmZvX2ZsdXNoKHNkYXRhLCAtMSk7XG5uZXQvbWFjODAyMTEvaWZhY2UuYzo1MzY6XHRXQVJOX09OX09OQ0Uoc2RhdGEtXHUwMDNldmlmLnR5cGUgIT0gTkw4MDIxMV9JRlRZUEVfQVBfVkxBTiBcdTAwMjZcdTAwMjZcbm5ldC9tYWM4MDIxMS9pZmFjZS5jLTUzNy1cdFx0ICAgICBzZGF0YS1cdTAwM2V2aWYudHlwZSAhPSBOTDgwMjExX0lGVFlQRV9OQU4gXHUwMDI2XHUwMDI2XG4tLVxubmV0L21hYzgwMjExL2lmYWNlLmMtNTg4LVx0XHRXQVJOX09OKCFsaXN0X2VtcHR5KFx1MDAyNnNkYXRhLVx1MDAzZXUuYXAudmxhbnMpKTtcbm5ldC9tYWM4MDIxMS9pZmFjZS5jOjU4OTpcdH0gZWxzZSBpZiAoc2RhdGEtXHUwMDNldmlmLnR5cGUgPT0gTkw4MDIxMV9JRlRZUEVfQVBfVkxBTikge1xubmV0L21hYzgwMjExL2lmYWNlLmMtNTkwLVx0XHQvKiByZW1vdmUgYWxsIHBhY2tldHMgaW4gcGFyZW50IGJjX2J1ZiBwb2ludGluZyB0byB0aGlzIGRldiAqL1xuLS1cbm5ldC9tYWM4MDIxMS9pZmFjZS5jLTYxMy1cdHN3aXRjaCAoc2RhdGEtXHUwMDNldmlmLnR5cGUpIHtcbm5ldC9tYWM4MDIxMS9pZmFjZS5jOjYxNDpcdGNhc2UgTkw4MDIxMV9JRlRZUEVfQVBfVkxBTjpcbm5ldC9tYWM4MDIxMS9pZmFjZS5jLTYxNS1cdFx0bGlzdF9kZWwoXHUwMDI2c2RhdGEtXHUwMDNldS52bGFuLmxpc3QpO1xuLS1cbm5ldC9tYWM4MDIxMS9pZmFjZS5jLTcxMC1cbm5ldC9tYWM4MDIxMS9pZmFjZS5jOjcxMTpcdGlmIChzZGF0YS1cdTAwM2V2aWYudHlwZSA9PSBOTDgwMjExX0lGVFlQRV9BUF9WTEFOKVxubmV0L21hYzgwMjExL2lmYWNlLmMtNzEyLVx0XHRpZWVlODAyMTFfdHhxX3JlbW92ZV92bGFuKGxvY2FsLCBzZGF0YSk7XG4tLVxubmV0L21hYzgwMjExL2lmYWNlLmMtNzQzLVx0c3dpdGNoIChzZGF0YS1cdTAwM2V2aWYudHlwZSkge1xubmV0L21hYzgwMjExL2lmYWNlLmM6NzQ0Olx0Y2FzZSBOTDgwMjExX0lGVFlQRV9BUF9WTEFOOlxubmV0L21hYzgwMjExL2lmYWNlLmMtNzQ1LVx0XHRicmVhaztcbi0tXG5uZXQvbWFjODAyMTEvaWZhY2UuYz05ODk9c3RhdGljIGludCBpZWVlODAyMTFfbmV0ZGV2X2ZpbGxfZm9yd2FyZF9wYXRoKHN0cnVjdCBuZXRfZGV2aWNlX3BhdGhfY3R4ICpjdHgsXG4tLVxubmV0L21hYzgwMjExL2lmYWNlLmMtMTAwNC1cdHN3aXRjaCAoc2RhdGEtXHUwMDNldmlmLnR5cGUpIHtcbm5ldC9tYWM4MDIxMS9pZmFjZS5jOjEwMDU6XHRjYXNlIE5MODAyMTFfSUZUWVBFX0FQX1ZMQU46XG5uZXQvbWFjODAyMTEvaWZhY2UuYy0xMDA2LVx0XHRzdGEgPSByY3VfZGVyZWZlcmVuY2Uoc2RhdGEtXHUwMDNldS52bGFuLnN0YSk7XG4tLVxubmV0L21hYzgwMjExL2lmYWNlLmM9MTExMD1zdGF0aWMgdm9pZCBpZWVlODAyMTFfc2V0X3ZpZl9lbmNhcF9vcHMoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEpXG4tLVxubmV0L21hYzgwMjExL2lmYWNlLmMtMTExNS1cbm5ldC9tYWM4MDIxMS9pZmFjZS5jOjExMTY6XHRpZiAoc2RhdGEtXHUwMDNldmlmLnR5cGUgPT0gTkw4MDIxMV9JRlRZUEVfQVBfVkxBTikge1xubmV0L21hYzgwMjExL2lmYWNlLmMtMTExNy1cdFx0aWYgKCFzZGF0YS1cdTAwM2Vic3MpXG4tLVxubmV0L21hYzgwMjExL2lmYWNlLmM9MTEzNj1zdGF0aWMgdm9pZCBpZWVlODAyMTFfcmVjYWxjX3NkYXRhX29mZmxvYWQoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEpXG4tLVxubmV0L21hYzgwMjExL2lmYWNlLmMtMTE0Ni1cdGxpc3RfZm9yX2VhY2hfZW50cnkodnNkYXRhLCBcdTAwMjZsb2NhbC1cdTAwM2VpbnRlcmZhY2VzLCBsaXN0KSB7XG5uZXQvbWFjODAyMTEvaWZhY2UuYzoxMTQ3Olx0XHRpZiAodnNkYXRhLVx1MDAzZXZpZi50eXBlICE9IE5MODAyMTFfSUZUWVBFX0FQX1ZMQU4gfHxcbm5ldC9tYWM4MDIxMS9pZmFjZS5jLTExNDgtXHRcdCAgICB2c2RhdGEtXHUwMDNlYnNzICE9IFx1MDAyNnNkYXRhLVx1MDAzZXUuYXApXG4tLVxubmV0L21hYzgwMjExL2lmYWNlLmM9MTM2NT1pbnQgaWVlZTgwMjExX2RvX29wZW4oc3RydWN0IHdpcmVsZXNzX2RldiAqd2RldiwgYm9vbCBjb21pbmdfdXApXG4tLVxubmV0L21hYzgwMjExL2lmYWNlLmMtMTM3Ni1cdHN3aXRjaCAoc2RhdGEtXHUwMDNldmlmLnR5cGUpIHtcbm5ldC9tYWM4MDIxMS9pZmFjZS5jOjEzNzc6XHRjYXNlIE5MODAyMTFfSUZUWVBFX0FQX1ZMQU46IHtcbm5ldC9tYWM4MDIxMS9pZmFjZS5jLTEzNzgtXHRcdHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKm1hc3Rlcjtcbi0tXG5uZXQvbWFjODAyMTEvaWZhY2UuYy0xNDM4LVx0XHRcdC8qXG5uZXQvbWFjODAyMTEvaWZhY2UuYzoxNDM5Olx0XHRcdCAqIG5vIG5lZWQgdG8gd29ycnkgYWJvdXQgQVBfVkxBTi9OQU5fREFUQSBjbGVhbnVwIHNpbmNlXG5uZXQvbWFjODAyMTEvaWZhY2UuYy0xNDQwLVx0XHRcdCAqIGluIHRoYXQgY2FzZSB3ZSBjYW4mIzM5O3QgaGF2ZSBvcGVuX2NvdW50ID09IDBcbi0tXG5uZXQvbWFjODAyMTEvaWZhY2UuYy0xNDY1LVx0c3dpdGNoIChzZGF0YS1cdTAwM2V2aWYudHlwZSkge1xubmV0L21hYzgwMjExL2lmYWNlLmM6MTQ2NjpcdGNhc2UgTkw4MDIxMV9JRlRZUEVfQVBfVkxBTjpcbm5ldC9tYWM4MDIxMS9pZmFjZS5jLTE0NjctXHRcdC8qIG5vIG5lZWQgdG8gdGVsbCBkcml2ZXIsIGJ1dCBzZXQgY2FycmllciBhbmQgY2hhbmN0eCAqL1xuLS1cbm5ldC9tYWM4MDIxMS9pZmFjZS5jLTE2MDktXHRcdFJDVV9JTklUX1BPSU5URVIoc2RhdGEtXHUwMDNldS5uYW5fZGF0YS5ubWksIE5VTEwpO1xubmV0L21hYzgwMjExL2lmYWNlLmM6MTYxMDpcdGlmIChzZGF0YS1cdTAwM2V2aWYudHlwZSA9PSBOTDgwMjExX0lGVFlQRV9BUF9WTEFOKVxubmV0L21hYzgwMjExL2lmYWNlLmMtMTYxMS1cdFx0bGlzdF9kZWwoXHUwMDI2c2RhdGEtXHUwMDNldS52bGFuLmxpc3QpO1xuLS1cbm5ldC9tYWM4MDIxMS9pZmFjZS5jPTE4Nzg9c3RhdGljIHZvaWQgaWVlZTgwMjExX3NldHVwX3NkYXRhKHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLFxuLS1cbm5ldC9tYWM4MDIxMS9pZmFjZS5jLTE5NTktXHRcdGJyZWFrO1xubmV0L21hYzgwMjExL2lmYWNlLmM6MTk2MDpcdGNhc2UgTkw4MDIxMV9JRlRZUEVfQVBfVkxBTjpcbm5ldC9tYWM4MDIxMS9pZmFjZS5jLTE5NjEtXHRjYXNlIE5MODAyMTFfSUZUWVBFX1AyUF9ERVZJQ0U6XG4tLVxubmV0L21hYzgwMjExL2lmYWNlLmM9MjA5OT1zdGF0aWMgdm9pZCBpZWVlODAyMTFfYXNzaWduX3Blcm1fYWRkcihzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbCxcbi0tXG5uZXQvbWFjODAyMTEvaWZhY2UuYy0yMTIwLVx0XHRicmVhaztcbm5ldC9tYWM4MDIxMS9pZmFjZS5jOjIxMjE6XHRjYXNlIE5MODAyMTFfSUZUWVBFX0FQX1ZMQU46XG5uZXQvbWFjODAyMTEvaWZhY2UuYy0yMTIyLVx0XHQvKiBtYXRjaCB1cCB3aXRoIGFuIEFQIGludGVyZmFjZSAqL1xuLS1cbm5ldC9tYWM4MDIxMS9pZmFjZS5jPTIyMjg9aW50IGllZWU4MDIxMV9pZl9hZGQoc3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwsIGNvbnN0IGNoYXIgKm5hbWUsXG4tLVxubmV0L21hYzgwMjExL2lmYWNlLmMtMjI4MC1cbm5ldC9tYWM4MDIxMS9pZmFjZS5jOjIyODE6XHRcdGlmICh0eXBlICE9IE5MODAyMTFfSUZUWVBFX0FQX1ZMQU4gXHUwMDI2XHUwMDI2XG5uZXQvbWFjODAyMTEvaWZhY2UuYy0yMjgyLVx0XHQgICAgKHR5cGUgIT0gTkw4MDIxMV9JRlRZUEVfTU9OSVRPUiB8fFxuLS1cbm5ldC9tYWM4MDIxMS9pZmFjZS5jPTI1MzU9dm9pZCBpZWVlODAyMTFfdmlmX2luY19udW1fbWNhc3Qoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEpXG4tLVxubmV0L21hYzgwMjExL2lmYWNlLmMtMjUzOC1cdFx0YXRvbWljX2luYyhcdTAwMjZzZGF0YS1cdTAwM2V1LmFwLm51bV9tY2FzdF9zdGEpO1xubmV0L21hYzgwMjExL2lmYWNlLmM6MjUzOTpcdGVsc2UgaWYgKHNkYXRhLVx1MDAzZXZpZi50eXBlID09IE5MODAyMTFfSUZUWVBFX0FQX1ZMQU4pXG5uZXQvbWFjODAyMTEvaWZhY2UuYy0yNTQwLVx0XHRhdG9taWNfaW5jKFx1MDAyNnNkYXRhLVx1MDAzZXUudmxhbi5udW1fbWNhc3Rfc3RhKTtcbi0tXG5uZXQvbWFjODAyMTEvaWZhY2UuYz0yNTQzPXZvaWQgaWVlZTgwMjExX3ZpZl9kZWNfbnVtX21jYXN0KHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhKVxuLS1cbm5ldC9tYWM4MDIxMS9pZmFjZS5jLTI1NDYtXHRcdGF0b21pY19kZWMoXHUwMDI2c2RhdGEtXHUwMDNldS5hcC5udW1fbWNhc3Rfc3RhKTtcbm5ldC9tYWM4MDIxMS9pZmFjZS5jOjI1NDc6XHRlbHNlIGlmIChzZGF0YS1cdTAwM2V2aWYudHlwZSA9PSBOTDgwMjExX0lGVFlQRV9BUF9WTEFOKVxubmV0L21hYzgwMjExL2lmYWNlLmMtMjU0OC1cdFx0YXRvbWljX2RlYyhcdTAwMjZzZGF0YS1cdTAwM2V1LnZsYW4ubnVtX21jYXN0X3N0YSk7XG4tLVxubmV0L21hYzgwMjExL2tleS5jPTEyMD1zdGF0aWMgaW50IGllZWU4MDIxMV9rZXlfZW5hYmxlX2h3X2FjY2VsKHN0cnVjdCBpZWVlODAyMTFfa2V5ICprZXkpXG4tLVxubmV0L21hYzgwMjExL2tleS5jLTE2NS1cbm5ldC9tYWM4MDIxMS9rZXkuYzoxNjY6XHRpZiAoc2RhdGEtXHUwMDNldmlmLnR5cGUgPT0gTkw4MDIxMV9JRlRZUEVfQVBfVkxBTikge1xubmV0L21hYzgwMjExL2tleS5jLTE2Ny1cdFx0Lypcbi0tXG5uZXQvbWFjODAyMTEva2V5LmM9MzUwPXN0YXRpYyB2b2lkIF9faWVlZTgwMjExX3NldF9kZWZhdWx0X2tleShzdHJ1Y3QgaWVlZTgwMjExX2xpbmtfZGF0YSAqbGluayxcbi0tXG5uZXQvbWFjODAyMTEva2V5LmMtMzY4LVx0XHRpZWVlODAyMTFfY2hlY2tfZmFzdF94bWl0X2lmYWNlKHNkYXRhKTtcbm5ldC9tYWM4MDIxMS9rZXkuYzozNjk6XHRcdGlmIChzZGF0YS1cdTAwM2V2aWYudHlwZSAhPSBOTDgwMjExX0lGVFlQRV9BUF9WTEFOKVxubmV0L21hYzgwMjExL2tleS5jLTM3MC1cdFx0XHRkcnZfc2V0X2RlZmF1bHRfdW5pY2FzdF9rZXkoc2RhdGEtXHUwMDNlbG9jYWwsIHNkYXRhLCBpZHgpO1xuLS1cbm5ldC9tYWM4MDIxMS9rZXkuYz0xMTM5PXZvaWQgaWVlZTgwMjExX2ZyZWVfa2V5cyhzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSxcbi0tXG5uZXQvbWFjODAyMTEva2V5LmMtMTE2NC1cbm5ldC9tYWM4MDIxMS9rZXkuYzoxMTY1Olx0aWYgKHNkYXRhLVx1MDAzZXZpZi50eXBlID09IE5MODAyMTFfSUZUWVBFX0FQX1ZMQU4pIHtcbm5ldC9tYWM4MDIxMS9rZXkuYy0xMTY2LVx0XHRpZiAoc2RhdGEtXHUwMDNlYnNzKSB7XG4tLVxubmV0L21hYzgwMjExL2xpbmsuYz05NT12b2lkIGllZWU4MDIxMV9saW5rX2luaXQoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsXG4tLVxubmV0L21hYzgwMjExL2xpbmsuYy0xMDQtXG5uZXQvbWFjODAyMTEvbGluay5jOjEwNTpcdGlmIChzZGF0YS1cdTAwM2V2aWYudHlwZSA9PSBOTDgwMjExX0lGVFlQRV9BUF9WTEFOKSB7XG5uZXQvbWFjODAyMTEvbGluay5jLTEwNi1cdFx0c3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqYXBfYnNzO1xuLS1cbm5ldC9tYWM4MDIxMS9saW5rLmMtMTQxLVx0XHRjYXNlIE5MODAyMTFfSUZUWVBFX0FQOlxubmV0L21hYzgwMjExL2xpbmsuYzoxNDI6XHRcdGNhc2UgTkw4MDIxMV9JRlRZUEVfQVBfVkxBTjpcbm5ldC9tYWM4MDIxMS9saW5rLmMtMTQzLVx0XHRcdGV0aGVyX2FkZHJfY29weShsaW5rX2NvbmYtXHUwMDNlYWRkcixcbi0tXG5uZXQvbWFjODAyMTEvbGluay5jPTI1MT1zdGF0aWMgdm9pZCBpZWVlODAyMTFfc2V0X3ZpZl9saW5rc19iaXRtYXBzKHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLFxuLS1cbm5ldC9tYWM4MDIxMS9saW5rLmMtMjY4LVx0Y2FzZSBOTDgwMjExX0lGVFlQRV9BUDpcbm5ldC9tYWM4MDIxMS9saW5rLmM6MjY5Olx0Y2FzZSBOTDgwMjExX0lGVFlQRV9BUF9WTEFOOlxubmV0L21hYzgwMjExL2xpbmsuYy0yNzAtXHRcdC8qIGluIGFuIEFQIGFsbCBsaW5rcyBhcmUgYWx3YXlzIGFjdGl2ZSAqL1xuLS1cbm5ldC9tYWM4MDIxMS9saW5rLmM9Mjg3PXN0YXRpYyBpbnQgaWVlZTgwMjExX3ZpZl91cGRhdGVfbGlua3Moc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsXG4tLVxubmV0L21hYzgwMjExL2xpbmsuYy0zNzctXHRcdC8qIHRlbGwgdGhlIGRyaXZlciAqL1xubmV0L21hYzgwMjExL2xpbmsuYzozNzg6XHRcdGlmIChzZGF0YS1cdTAwM2V2aWYudHlwZSAhPSBOTDgwMjExX0lGVFlQRV9BUF9WTEFOKVxubmV0L21hYzgwMjExL2xpbmsuYy0zNzktXHRcdFx0cmV0ID0gZHJ2X2NoYW5nZV92aWZfbGlua3Moc2RhdGEtXHUwMDNlbG9jYWwsIHNkYXRhLFxuLS1cbm5ldC9tYWM4MDIxMS9tYWluLmM9OTY9c3RhdGljIHUzMiBpZWVlODAyMTFfY2FsY19od19jb25mX2NoYW4oc3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwsXG4tLVxubmV0L21hYzgwMjExL21haW4uYy0xNzYtXHRcdFx0Y29udGludWU7XG5uZXQvbWFjODAyMTEvbWFpbi5jOjE3NzpcdFx0aWYgKHNkYXRhLVx1MDAzZXZpZi50eXBlID09IE5MODAyMTFfSUZUWVBFX0FQX1ZMQU4pXG5uZXQvbWFjODAyMTEvbWFpbi5jLTE3OC1cdFx0XHRjb250aW51ZTtcbi0tXG5uZXQvbWFjODAyMTEvbWFpbi5jPTMzNj12b2lkIGllZWU4MDIxMV9ic3NfaW5mb19jaGFuZ2Vfbm90aWZ5KHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLFxuLS1cbm5ldC9tYWM4MDIxMS9tYWluLmMtMzQ0LVxubmV0L21hYzgwMjExL21haW4uYzozNDU6XHRpZiAoIWNoYW5nZWQgfHwgc2RhdGEtXHUwMDNldmlmLnR5cGUgPT0gTkw4MDIxMV9JRlRZUEVfQVBfVkxBTilcbm5ldC9tYWM4MDIxMS9tYWluLmMtMzQ2LVx0XHRyZXR1cm47XG4tLVxubmV0L21hYzgwMjExL21haW4uYz0zODk9dm9pZCBpZWVlODAyMTFfdmlmX2NmZ19jaGFuZ2Vfbm90aWZ5KHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLFxuLS1cbm5ldC9tYWM4MDIxMS9tYWluLmMtMzk1LVxubmV0L21hYzgwMjExL21haW4uYzozOTY6XHRpZiAoIWNoYW5nZWQgfHwgc2RhdGEtXHUwMDNldmlmLnR5cGUgPT0gTkw4MDIxMV9JRlRZUEVfQVBfVkxBTilcbm5ldC9tYWM4MDIxMS9tYWluLmMtMzk3LVx0XHRyZXR1cm47XG4tLVxubmV0L21hYzgwMjExL21haW4uYz00MDI9dm9pZCBpZWVlODAyMTFfbGlua19pbmZvX2NoYW5nZV9ub3RpZnkoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsXG4tLVxubmV0L21hYzgwMjExL21haW4uYy00MTMtXHRzd2l0Y2ggKHNkYXRhLVx1MDAzZXZpZi50eXBlKSB7XG5uZXQvbWFjODAyMTEvbWFpbi5jOjQxNDpcdGNhc2UgTkw4MDIxMV9JRlRZUEVfQVBfVkxBTjpcbm5ldC9tYWM4MDIxMS9tYWluLmMtNDE1LVx0XHRyZXR1cm47XG4tLVxubmV0L21hYzgwMjExL21haW4uYz02Mzg9c3RhdGljIGludCBpZWVlODAyMTFfaWZhNl9jaGFuZ2VkKHN0cnVjdCBub3RpZmllcl9ibG9jayAqbmIsXG4tLVxubmV0L21hYzgwMjExL21haW4uYy02NTYtXHQgKiBGb3Igbm93IG9ubHkgc3VwcG9ydCBzdGF0aW9uIG1vZGUuIFRoaXMgaXMgbW9zdGx5IGJlY2F1c2Vcbm5ldC9tYWM4MDIxMS9tYWluLmM6NjU3Olx0ICogZG9pbmcgQVAgd291bGQgaGF2ZSB0byBoYW5kbGUgQVBfVkxBTiBpbiBzb21lIHdheSAuLi5cbm5ldC9tYWM4MDIxMS9tYWluLmMtNjU4LVx0ICovXG4tLVxubmV0L21hYzgwMjExL21haW4uYz02NzA9aWVlZTgwMjExX2RlZmF1bHRfbWdtdF9zdHlwZXNbTlVNX05MODAyMTFfSUZUWVBFU10gPSB7XG4tLVxubmV0L21hYzgwMjExL21haW4uYy03MDUtXHR9LFxubmV0L21hYzgwMjExL21haW4uYzo3MDY6XHRbTkw4MDIxMV9JRlRZUEVfQVBfVkxBTl0gPSB7XG5uZXQvbWFjODAyMTEvbWFpbi5jLTcwNy1cdFx0LyogY29weSBBUCAqL1xuLS1cbm5ldC9tYWM4MDIxMS9tYWluLmM9MTEzOD1pbnQgaWVlZTgwMjExX3JlZ2lzdGVyX2h3KHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3KVxuLS1cbm5ldC9tYWM4MDIxMS9tYWluLmMtMTM2Ni1cdC8qIGlmIGxvdy1sZXZlbCBkcml2ZXIgc3VwcG9ydHMgQVAsIHdlIGFsc28gc3VwcG9ydCBWTEFOLlxubmV0L21hYzgwMjExL21haW4uYzoxMzY3Olx0ICogZHJpdmVycyBhZHZlcnRpc2luZyBTV19DUllQVE9fQ09OVFJPTCBzaG91bGQgZW5hYmxlIEFQX1ZMQU5cbm5ldC9tYWM4MDIxMS9tYWluLmMtMTM2OC1cdCAqIGJhc2VkIG9uIHRoZWlyIHN1cHBvcnQgdG8gdHJhbnNtaXQgU1cgZW5jcnlwdGVkIHBhY2tldHMuXG4tLVxubmV0L21hYzgwMjExL21haW4uYy0xMzcxLVx0ICAgICFpZWVlODAyMTFfaHdfY2hlY2soXHUwMDI2bG9jYWwtXHUwMDNlaHcsIFNXX0NSWVBUT19DT05UUk9MKSkge1xubmV0L21hYzgwMjExL21haW4uYzoxMzcyOlx0XHRody1cdTAwM2V3aXBoeS1cdTAwM2VpbnRlcmZhY2VfbW9kZXMgfD0gQklUKE5MODAyMTFfSUZUWVBFX0FQX1ZMQU4pO1xubmV0L21hYzgwMjExL21haW4uYzoxMzczOlx0XHRody1cdTAwM2V3aXBoeS1cdTAwM2Vzb2Z0d2FyZV9pZnR5cGVzIHw9IEJJVChOTDgwMjExX0lGVFlQRV9BUF9WTEFOKTtcbm5ldC9tYWM4MDIxMS9tYWluLmMtMTM3NC1cdH1cbi0tXG5uZXQvbWFjODAyMTEvb2ZmY2hhbm5lbC5jPTgxMj1pbnQgaWVlZTgwMjExX21nbXRfdHgoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IHdpcmVsZXNzX2RldiAqd2Rldixcbi0tXG5uZXQvbWFjODAyMTEvb2ZmY2hhbm5lbC5jLTg1MC1cdGNhc2UgTkw4MDIxMV9JRlRZUEVfQVA6XG5uZXQvbWFjODAyMTEvb2ZmY2hhbm5lbC5jOjg1MTpcdGNhc2UgTkw4MDIxMV9JRlRZUEVfQVBfVkxBTjpcbm5ldC9tYWM4MDIxMS9vZmZjaGFubmVsLmMtODUyLVx0Y2FzZSBOTDgwMjExX0lGVFlQRV9QMlBfR086XG4tLVxubmV0L21hYzgwMjExL3BtLmM9MjE9aW50IF9faWVlZTgwMjExX3N1c3BlbmQoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsIHN0cnVjdCBjZmc4MDIxMV93b3dsYW4gKndvd2xhbilcbi0tXG5uZXQvbWFjODAyMTEvcG0uYy0xNTEtXHRcdHN3aXRjaCAoc2RhdGEtXHUwMDNldmlmLnR5cGUpIHtcbm5ldC9tYWM4MDIxMS9wbS5jOjE1MjpcdFx0Y2FzZSBOTDgwMjExX0lGVFlQRV9BUF9WTEFOOlxubmV0L21hYzgwMjExL3BtLmMtMTUzLVx0XHRjYXNlIE5MODAyMTFfSUZUWVBFX01PTklUT1I6XG4tLVxubmV0L21hYzgwMjExL3J4LmM9MTY4MT1zdGF0aWMgdm9pZCBzdGFfcHNfc3RhcnQoc3RydWN0IHN0YV9pbmZvICpzdGEpXG4tLVxubmV0L21hYzgwMjExL3J4LmMtMTY4OC1cdGlmIChzdGEtXHUwMDNlc2RhdGEtXHUwMDNldmlmLnR5cGUgPT0gTkw4MDIxMV9JRlRZUEVfQVAgfHxcbm5ldC9tYWM4MDIxMS9yeC5jOjE2ODk6XHQgICAgc3RhLVx1MDAzZXNkYXRhLVx1MDAzZXZpZi50eXBlID09IE5MODAyMTFfSUZUWVBFX0FQX1ZMQU4pXG5uZXQvbWFjODAyMTEvcnguYy0xNjkwLVx0XHRwcyA9IFx1MDAyNnNkYXRhLVx1MDAzZWJzcy1cdTAwM2Vwcztcbi0tXG5uZXQvbWFjODAyMTEvcnguYz0xODA2PWllZWU4MDIxMV9yeF9oX3VhcHNkX2FuZF9wc3BvbGwoc3RydWN0IGllZWU4MDIxMV9yeF9kYXRhICpyeClcbi0tXG5uZXQvbWFjODAyMTEvcnguYy0xODE1LVx0aWYgKHNkYXRhLVx1MDAzZXZpZi50eXBlICE9IE5MODAyMTFfSUZUWVBFX0FQIFx1MDAyNlx1MDAyNlxubmV0L21hYzgwMjExL3J4LmM6MTgxNjpcdCAgICBzZGF0YS1cdTAwM2V2aWYudHlwZSAhPSBOTDgwMjExX0lGVFlQRV9BUF9WTEFOKVxubmV0L21hYzgwMjExL3J4LmMtMTgxNy1cdFx0cmV0dXJuIFJYX0NPTlRJTlVFO1xuLS1cbm5ldC9tYWM4MDIxMS9yeC5jPTE4NTc9aWVlZTgwMjExX3J4X2hfc3RhX3Byb2Nlc3Moc3RydWN0IGllZWU4MDIxMV9yeF9kYXRhICpyeClcbi0tXG5uZXQvbWFjODAyMTEvcnguYy0xOTQxLVx0ICAgIChyeC1cdTAwM2VzZGF0YS1cdTAwM2V2aWYudHlwZSA9PSBOTDgwMjExX0lGVFlQRV9BUCB8fFxubmV0L21hYzgwMjExL3J4LmM6MTk0MjpcdCAgICAgcngtXHUwMDNlc2RhdGEtXHUwMDNldmlmLnR5cGUgPT0gTkw4MDIxMV9JRlRZUEVfQVBfVkxBTikpIHtcbm5ldC9tYWM4MDIxMS9yeC5jLTE5NDMtXHRcdGlmICh0ZXN0X3N0YV9mbGFnKHN0YSwgV0xBTl9TVEFfUFNfU1RBKSkge1xuLS1cbm5ldC9tYWM4MDIxMS9yeC5jLTE5NzAtXHRcdCAgICAocngtXHUwMDNlc2RhdGEtXHUwMDNldmlmLnR5cGUgPT0gTkw4MDIxMV9JRlRZUEVfQVAgfHxcbm5ldC9tYWM4MDIxMS9yeC5jOjE5NzE6XHRcdCAgICAgKHJ4LVx1MDAzZXNkYXRhLVx1MDAzZXZpZi50eXBlID09IE5MODAyMTFfSUZUWVBFX0FQX1ZMQU4gXHUwMDI2XHUwMDI2XG5uZXQvbWFjODAyMTEvcnguYy0xOTcyLVx0XHQgICAgICAhcngtXHUwMDNlc2RhdGEtXHUwMDNldS52bGFuLnN0YSkpKSB7XG4tLVxubmV0L21hYzgwMjExL3J4LmM9MjY0Nj1fX2llZWU4MDIxMV9kYXRhX3RvXzgwMjMoc3RydWN0IGllZWU4MDIxMV9yeF9kYXRhICpyeCwgYm9vbCAqcG9ydF9jb250cm9sKVxuLS1cbm5ldC9tYWM4MDIxMS9yeC5jLTI2NTUtXHRpZiAoaWVlZTgwMjExX2hhc19hNChoZHItXHUwMDNlZnJhbWVfY29udHJvbCkgXHUwMDI2XHUwMDI2XG5uZXQvbWFjODAyMTEvcnguYzoyNjU2Olx0ICAgIHNkYXRhLVx1MDAzZXZpZi50eXBlID09IE5MODAyMTFfSUZUWVBFX0FQX1ZMQU4gXHUwMDI2XHUwMDI2ICFzZGF0YS1cdTAwM2V1LnZsYW4uc3RhKVxubmV0L21hYzgwMjExL3J4LmMtMjY1Ny1cdFx0cmV0dXJuIFJYX0RST1BfVV9VTkVYUEVDVEVEX1ZMQU5fNEFERFI7XG4tLVxubmV0L21hYzgwMjExL3J4LmMtMjY2Ny1cdGlmIChpc19tdWx0aWNhc3RfZXRoZXJfYWRkcihoZHItXHUwMDNlYWRkcjEpIFx1MDAyNlx1MDAyNlxubmV0L21hYzgwMjExL3J4LmM6MjY2ODpcdCAgICBzZGF0YS1cdTAwM2V2aWYudHlwZSA9PSBOTDgwMjExX0lGVFlQRV9BUF9WTEFOIFx1MDAyNlx1MDAyNiBzZGF0YS1cdTAwM2V1LnZsYW4uc3RhKVxubmV0L21hYzgwMjExL3J4LmMtMjY2OS1cdFx0cmV0dXJuIFJYX0RST1BfVV9VTkVYUEVDVEVEX1ZMQU5fTUNBU1Q7XG4tLVxubmV0L21hYzgwMjExL3J4LmM9Mjc4OT1pZWVlODAyMTFfZGVsaXZlcl9za2Ioc3RydWN0IGllZWU4MDIxMV9yeF9kYXRhICpyeClcbi0tXG5uZXQvbWFjODAyMTEvcnguYy0yODEzLVx0aWYgKChzZGF0YS1cdTAwM2V2aWYudHlwZSA9PSBOTDgwMjExX0lGVFlQRV9BUCB8fFxubmV0L21hYzgwMjExL3J4LmM6MjgxNDpcdCAgICAgc2RhdGEtXHUwMDNldmlmLnR5cGUgPT0gTkw4MDIxMV9JRlRZUEVfQVBfVkxBTikgXHUwMDI2XHUwMDI2XG5uZXQvbWFjODAyMTEvcnguYy0yODE1LVx0ICAgICEoc2RhdGEtXHUwMDNlZmxhZ3MgXHUwMDI2IElFRUU4MDIxMV9TREFUQV9ET05UX0JSSURHRV9QQUNLRVRTKSBcdTAwMjZcdTAwMjZcbm5ldC9tYWM4MDIxMS9yeC5jLTI4MTYtXHQgICAgZWhkci1cdTAwM2VoX3Byb3RvICE9IHJ4LVx1MDAzZXNkYXRhLVx1MDAzZWNvbnRyb2xfcG9ydF9wcm90b2NvbCBcdTAwMjZcdTAwMjZcbm5ldC9tYWM4MDIxMS9yeC5jOjI4MTc6XHQgICAgKHNkYXRhLVx1MDAzZXZpZi50eXBlICE9IE5MODAyMTFfSUZUWVBFX0FQX1ZMQU4gfHwgIXNkYXRhLVx1MDAzZXUudmxhbi5zdGEpKSB7XG5uZXQvbWFjODAyMTEvcnguYy0yODE4LVx0XHRpZiAoaXNfbXVsdGljYXN0X2V0aGVyX2FkZHIoZWhkci1cdTAwM2VoX2Rlc3QpIFx1MDAyNlx1MDAyNlxuLS1cbm5ldC9tYWM4MDIxMS9yeC5jPTMxNDA9X19pZWVlODAyMTFfcnhfaF9hbXNkdShzdHJ1Y3QgaWVlZTgwMjExX3J4X2RhdGEgKnJ4LCB1OCBkYXRhX29mZnNldClcbi0tXG5uZXQvbWFjODAyMTEvcnguYy0zMTU0LVx0XHRjYXNlIE5MODAyMTFfSUZUWVBFX0FQOlxubmV0L21hYzgwMjExL3J4LmM6MzE1NTpcdFx0Y2FzZSBOTDgwMjExX0lGVFlQRV9BUF9WTEFOOlxubmV0L21hYzgwMjExL3J4LmMtMzE1Ni1cdFx0XHRjaGVja19kYSA9IE5VTEw7XG4tLVxubmV0L21hYzgwMjExL3J4LmM9MzIyNj1pZWVlODAyMTFfcnhfaF9hbXNkdShzdHJ1Y3QgaWVlZTgwMjExX3J4X2RhdGEgKnJ4KVxuLS1cbm5ldC9tYWM4MDIxMS9yeC5jLTMyNDMtXHRcdHN3aXRjaCAocngtXHUwMDNlc2RhdGEtXHUwMDNldmlmLnR5cGUpIHtcbm5ldC9tYWM4MDIxMS9yeC5jOjMyNDQ6XHRcdGNhc2UgTkw4MDIxMV9JRlRZUEVfQVBfVkxBTjpcbm5ldC9tYWM4MDIxMS9yeC5jLTMyNDUtXHRcdFx0aWYgKCFyeC1cdTAwM2VzZGF0YS1cdTAwM2V1LnZsYW4uc3RhKVxuLS1cbm5ldC9tYWM4MDIxMS9yeC5jPTMyODM9aWVlZTgwMjExX3J4X2hfZGF0YShzdHJ1Y3QgaWVlZTgwMjExX3J4X2RhdGEgKnJ4KVxuLS1cbm5ldC9tYWM4MDIxMS9yeC5jLTMzMzgtXG5uZXQvbWFjODAyMTEvcnguYzozMzM5Olx0aWYgKHJ4LVx1MDAzZXNkYXRhLVx1MDAzZXZpZi50eXBlID09IE5MODAyMTFfSUZUWVBFX0FQX1ZMQU4gXHUwMDI2XHUwMDI2XG5uZXQvbWFjODAyMTEvcnguYy0zMzQwLVx0ICAgIHVubGlrZWx5KHBvcnRfY29udHJvbCkgXHUwMDI2XHUwMDI2IHNkYXRhLVx1MDAzZWJzcykge1xuLS1cbm5ldC9tYWM4MDIxMS9yeC5jPTM2MjM9aWVlZTgwMjExX3J4X2hfYWN0aW9uKHN0cnVjdCBpZWVlODAyMTFfcnhfZGF0YSAqcngpXG4tLVxubmV0L21hYzgwMjExL3J4LmMtMzY0OS1cdFx0ICAgIHNkYXRhLVx1MDAzZXZpZi50eXBlICE9IE5MODAyMTFfSUZUWVBFX01FU0hfUE9JTlQgXHUwMDI2XHUwMDI2XG5uZXQvbWFjODAyMTEvcnguYzozNjUwOlx0XHQgICAgc2RhdGEtXHUwMDNldmlmLnR5cGUgIT0gTkw4MDIxMV9JRlRZUEVfQVBfVkxBTiBcdTAwMjZcdTAwMjZcbm5ldC9tYWM4MDIxMS9yeC5jLTM2NTEtXHRcdCAgICBzZGF0YS1cdTAwM2V2aWYudHlwZSAhPSBOTDgwMjExX0lGVFlQRV9BUCBcdTAwMjZcdTAwMjZcbi0tXG5uZXQvbWFjODAyMTEvcnguYy0zNjY1LVx0XHRcdGlmIChzZGF0YS1cdTAwM2V2aWYudHlwZSAhPSBOTDgwMjExX0lGVFlQRV9BUCBcdTAwMjZcdTAwMjZcbm5ldC9tYWM4MDIxMS9yeC5jOjM2NjY6XHRcdFx0ICAgIHNkYXRhLVx1MDAzZXZpZi50eXBlICE9IE5MODAyMTFfSUZUWVBFX0FQX1ZMQU4pXG5uZXQvbWFjODAyMTEvcnguYy0zNjY3LVx0XHRcdFx0Z290byBoYW5kbGVkO1xuLS1cbm5ldC9tYWM4MDIxMS9yeC5jLTM3MzktXHRcdCAgICBzZGF0YS1cdTAwM2V2aWYudHlwZSAhPSBOTDgwMjExX0lGVFlQRV9NRVNIX1BPSU5UIFx1MDAyNlx1MDAyNlxubmV0L21hYzgwMjExL3J4LmM6Mzc0MDpcdFx0ICAgIHNkYXRhLVx1MDAzZXZpZi50eXBlICE9IE5MODAyMTFfSUZUWVBFX0FQX1ZMQU4gXHUwMDI2XHUwMDI2XG5uZXQvbWFjODAyMTEvcnguYy0zNzQxLVx0XHQgICAgc2RhdGEtXHUwMDNldmlmLnR5cGUgIT0gTkw4MDIxMV9JRlRZUEVfQVAgXHUwMDI2XHUwMDI2XG4tLVxubmV0L21hYzgwMjExL3J4LmMtMzc2Ny1cdFx0ICAgIHNkYXRhLVx1MDAzZXZpZi50eXBlICE9IE5MODAyMTFfSUZUWVBFX01FU0hfUE9JTlQgXHUwMDI2XHUwMDI2XG5uZXQvbWFjODAyMTEvcnguYzozNzY4Olx0XHQgICAgc2RhdGEtXHUwMDNldmlmLnR5cGUgIT0gTkw4MDIxMV9JRlRZUEVfQVBfVkxBTiBcdTAwMjZcdTAwMjZcbm5ldC9tYWM4MDIxMS9yeC5jLTM3NjktXHRcdCAgICBzZGF0YS1cdTAwM2V2aWYudHlwZSAhPSBOTDgwMjExX0lGVFlQRV9BUCBcdTAwMjZcdTAwMjZcbi0tXG5uZXQvbWFjODAyMTEvcnguYz00MDcxPWllZWU4MDIxMV9yeF9oX2FjdGlvbl9yZXR1cm4oc3RydWN0IGllZWU4MDIxMV9yeF9kYXRhICpyeClcbi0tXG5uZXQvbWFjODAyMTEvcnguYy00MDkyLVx0ICAgIChzZGF0YS1cdTAwM2V2aWYudHlwZSA9PSBOTDgwMjExX0lGVFlQRV9BUCB8fFxubmV0L21hYzgwMjExL3J4LmM6NDA5MzpcdCAgICAgc2RhdGEtXHUwMDNldmlmLnR5cGUgPT0gTkw4MDIxMV9JRlRZUEVfQVBfVkxBTikpXG5uZXQvbWFjODAyMTEvcnguYy00MDk0LVx0XHRyZXR1cm4gUlhfRFJPUF9VX01BTEZPUk1FRF9BQ1RJT047XG4tLVxubmV0L21hYzgwMjExL3J4LmM9NDUwNj1zdGF0aWMgYm9vbCBpZWVlODAyMTFfYWNjZXB0X2ZyYW1lKHN0cnVjdCBpZWVlODAyMTFfcnhfZGF0YSAqcngpXG4tLVxubmV0L21hYzgwMjExL3J4LmMtNDU4Mi1cdFx0cmV0dXJuIGV0aGVyX2FkZHJfZXF1YWwoc2RhdGEtXHUwMDNldmlmLmFkZHIsIGhkci1cdTAwM2VhZGRyMSk7XG5uZXQvbWFjODAyMTEvcnguYzo0NTgzOlx0Y2FzZSBOTDgwMjExX0lGVFlQRV9BUF9WTEFOOlxubmV0L21hYzgwMjExL3J4LmMtNDU4NC1cdGNhc2UgTkw4MDIxMV9JRlRZUEVfQVA6XG4tLVxubmV0L21hYzgwMjExL3J4LmM9NDcxMz12b2lkIGllZWU4MDIxMV9jaGVja19mYXN0X3J4KHN0cnVjdCBzdGFfaW5mbyAqc3RhKVxuLS1cbm5ldC9tYWM4MDIxMS9yeC5jLTQ3NzItXHRcdGJyZWFrO1xubmV0L21hYzgwMjExL3J4LmM6NDc3MzpcdGNhc2UgTkw4MDIxMV9JRlRZUEVfQVBfVkxBTjpcbm5ldC9tYWM4MDIxMS9yeC5jLTQ3NzQtXHRjYXNlIE5MODAyMTFfSUZUWVBFX0FQOlxuLS1cbm5ldC9tYWM4MDIxMS9yeC5jLTQ3ODUtXHRcdFx0IShzZGF0YS1cdTAwM2VmbGFncyBcdTAwMjYgSUVFRTgwMjExX1NEQVRBX0RPTlRfQlJJREdFX1BBQ0tFVFMpIFx1MDAyNlx1MDAyNlxubmV0L21hYzgwMjExL3J4LmM6NDc4NjpcdFx0XHQoc2RhdGEtXHUwMDNldmlmLnR5cGUgIT0gTkw4MDIxMV9JRlRZUEVfQVBfVkxBTiB8fFxubmV0L21hYzgwMjExL3J4LmMtNDc4Ny1cdFx0XHQgIXNkYXRhLVx1MDAzZXUudmxhbi5zdGEpO1xubmV0L21hYzgwMjExL3J4LmMtNDc4OC1cbm5ldC9tYWM4MDIxMS9yeC5jOjQ3ODk6XHRcdGlmIChzZGF0YS1cdTAwM2V2aWYudHlwZSA9PSBOTDgwMjExX0lGVFlQRV9BUF9WTEFOIFx1MDAyNlx1MDAyNlxubmV0L21hYzgwMjExL3J4LmMtNDc5MC1cdFx0ICAgIHNkYXRhLVx1MDAzZXUudmxhbi5zdGEpIHtcbi0tXG5uZXQvbWFjODAyMTEvcnguYz01MzQ4PXN0YXRpYyB2b2lkIF9faWVlZTgwMjExX3J4X2hhbmRsZV9wYWNrZXQoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXG4tLVxubmV0L21hYzgwMjExL3J4LmMtNTQ5MS1cdFx0aWYgKHNkYXRhLVx1MDAzZXZpZi50eXBlID09IE5MODAyMTFfSUZUWVBFX01PTklUT1IgfHxcbm5ldC9tYWM4MDIxMS9yeC5jOjU0OTI6XHRcdCAgICBzZGF0YS1cdTAwM2V2aWYudHlwZSA9PSBOTDgwMjExX0lGVFlQRV9BUF9WTEFOKVxubmV0L21hYzgwMjExL3J4LmMtNTQ5My1cdFx0XHRjb250aW51ZTtcbi0tXG5uZXQvbWFjODAyMTEvc3RhX2luZm8uYz0xMzI9c3RhdGljIHZvaWQgX19jbGVhbnVwX3NpbmdsZV9zdGEoc3RydWN0IHN0YV9pbmZvICpzdGEpXG4tLVxubmV0L21hYzgwMjExL3N0YV9pbmZvLmMtMTQzLVx0XHRpZiAoc3RhLVx1MDAzZXNkYXRhLVx1MDAzZXZpZi50eXBlID09IE5MODAyMTFfSUZUWVBFX0FQIHx8XG5uZXQvbWFjODAyMTEvc3RhX2luZm8uYzoxNDQ6XHRcdCAgICBzdGEtXHUwMDNlc2RhdGEtXHUwMDNldmlmLnR5cGUgPT0gTkw4MDIxMV9JRlRZUEVfQVBfVkxBTilcbm5ldC9tYWM4MDIxMS9zdGFfaW5mby5jLTE0NS1cdFx0XHRwcyA9IFx1MDAyNnNkYXRhLVx1MDAzZWJzcy1cdTAwM2Vwcztcbi0tXG5uZXQvbWFjODAyMTEvc3RhX2luZm8uYz0xMTAwPXN0YXRpYyB2b2lkIF9fc3RhX2luZm9fcmVjYWxjX3RpbShzdHJ1Y3Qgc3RhX2luZm8gKnN0YSwgYm9vbCBpZ25vcmVfcGVuZGluZylcbi0tXG5uZXQvbWFjODAyMTEvc3RhX2luZm8uYy0xMTA5LVx0aWYgKHN0YS1cdTAwM2VzZGF0YS1cdTAwM2V2aWYudHlwZSA9PSBOTDgwMjExX0lGVFlQRV9BUCB8fFxubmV0L21hYzgwMjExL3N0YV9pbmZvLmM6MTExMDpcdCAgICBzdGEtXHUwMDNlc2RhdGEtXHUwMDNldmlmLnR5cGUgPT0gTkw4MDIxMV9JRlRZUEVfQVBfVkxBTikge1xubmV0L21hYzgwMjExL3N0YV9pbmZvLmMtMTExMS1cdFx0aWYgKFdBUk5fT05fT05DRSghc3RhLVx1MDAzZXNkYXRhLVx1MDAzZWJzcykpXG4tLVxubmV0L21hYzgwMjExL3N0YV9pbmZvLmM9MTMwMz1zdGF0aWMgaW50IF9fbXVzdF9jaGVjayBfX3N0YV9pbmZvX2Rlc3Ryb3lfcGFydDEoc3RydWN0IHN0YV9pbmZvICpzdGEpXG4tLVxubmV0L21hYzgwMjExL3N0YV9pbmZvLmMtMTM4MC1cbm5ldC9tYWM4MDIxMS9zdGFfaW5mby5jOjEzODE6XHRpZiAoc2RhdGEtXHUwMDNldmlmLnR5cGUgPT0gTkw4MDIxMV9JRlRZUEVfQVBfVkxBTiBcdTAwMjZcdTAwMjZcbm5ldC9tYWM4MDIxMS9zdGFfaW5mby5jLTEzODItXHQgICAgcmN1X2FjY2Vzc19wb2ludGVyKHNkYXRhLVx1MDAzZXUudmxhbi5zdGEpID09IHN0YSlcbi0tXG5uZXQvbWFjODAyMTEvc3RhX2luZm8uYz0xMzg4PXN0YXRpYyBpbnQgX3N0YV9pbmZvX21vdmVfc3RhdGUoc3RydWN0IHN0YV9pbmZvICpzdGEsXG4tLVxubmV0L21hYzgwMjExL3N0YV9pbmZvLmMtMTUwNS1cdFx0fVxubmV0L21hYzgwMjExL3N0YV9pbmZvLmM6MTUwNjpcdFx0aWYgKHN0YS1cdTAwM2VzZGF0YS1cdTAwM2V2aWYudHlwZSA9PSBOTDgwMjExX0lGVFlQRV9BUF9WTEFOIHx8XG5uZXQvbWFjODAyMTEvc3RhX2luZm8uYy0xNTA3LVx0XHQgICAgc3RhLVx1MDAzZXNkYXRhLVx1MDAzZXZpZi50eXBlID09IE5MODAyMTFfSUZUWVBFX0FQKVxuLS1cbm5ldC9tYWM4MDIxMS9zdGFfaW5mby5jPTE4MjA9dm9pZCBpZWVlODAyMTFfc3RhX3BzX2RlbGl2ZXJfd2FrZXVwKHN0cnVjdCBzdGFfaW5mbyAqc3RhKVxuLS1cbm5ldC9tYWM4MDIxMS9zdGFfaW5mby5jLTE4MjgtXG5uZXQvbWFjODAyMTEvc3RhX2luZm8uYzoxODI5Olx0aWYgKHNkYXRhLVx1MDAzZXZpZi50eXBlID09IE5MODAyMTFfSUZUWVBFX0FQX1ZMQU4pXG5uZXQvbWFjODAyMTEvc3RhX2luZm8uYy0xODMwLVx0XHRzZGF0YSA9IGNvbnRhaW5lcl9vZihzZGF0YS1cdTAwM2Vic3MsIHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEsXG4tLVxubmV0L21hYzgwMjExL3N0YV9pbmZvLmM9MzY3OT1pZWVlODAyMTFfc3RhX3VzYWJsZV9idyhzdHJ1Y3QgbGlua19zdGFfaW5mbyAqbGlua19zdGEsXG4tLVxubmV0L21hYzgwMjExL3N0YV9pbmZvLmMtMzY4Ny1cbm5ldC9tYWM4MDIxMS9zdGFfaW5mby5jOjM2ODg6XHRpZiAoc2RhdGEtXHUwMDNldmlmLnR5cGUgPT0gTkw4MDIxMV9JRlRZUEVfQVBfVkxBTikge1xubmV0L21hYzgwMjExL3N0YV9pbmZvLmMtMzY4OS1cdFx0c2RhdGEgPSBnZXRfYnNzX3NkYXRhKHNkYXRhKTtcbi0tXG5uZXQvbWFjODAyMTEvdGtpcC5jPTIzOT1pbnQgaWVlZTgwMjExX3RraXBfZGVjcnlwdF9kYXRhKHN0cnVjdCBhcmM0X2N0eCAqY3R4LFxuLS1cbm5ldC9tYWM4MDIxMS90a2lwLmMtMjk4LVxubmV0L21hYzgwMjExL3RraXAuYzoyOTk6XHRcdGlmIChzZGF0YS1cdTAwM2V2aWYudHlwZSA9PSBOTDgwMjExX0lGVFlQRV9BUF9WTEFOKVxubmV0L21hYzgwMjExL3RraXAuYy0zMDAtXHRcdFx0c2RhdGEgPSBjb250YWluZXJfb2Yoa2V5LVx1MDAzZXNkYXRhLVx1MDAzZWJzcyxcbi0tXG5uZXQvbWFjODAyMTEvdHguYz0zNzg9aWVlZTgwMjExX3R4X2hfbXVsdGljYXN0X3BzX2J1ZihzdHJ1Y3QgaWVlZTgwMjExX3R4X2RhdGEgKnR4KVxuLS1cbm5ldC9tYWM4MDIxMS90eC5jLTM5My1cdGlmICh0eC1cdTAwM2VzZGF0YS1cdTAwM2V2aWYudHlwZSA9PSBOTDgwMjExX0lGVFlQRV9BUCB8fFxubmV0L21hYzgwMjExL3R4LmM6Mzk0Olx0ICAgIHR4LVx1MDAzZXNkYXRhLVx1MDAzZXZpZi50eXBlID09IE5MODAyMTFfSUZUWVBFX0FQX1ZMQU4pIHtcbm5ldC9tYWM4MDIxMS90eC5jLTM5NS1cdFx0aWYgKCF0eC1cdTAwM2VzZGF0YS1cdTAwM2Vic3MpXG4tLVxubmV0L21hYzgwMjExL3R4LmM9MTIwOD1pZWVlODAyMTFfdHhfcHJlcGFyZShzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSxcbi0tXG5uZXQvbWFjODAyMTEvdHguYy0xMjM2LVx0fSBlbHNlIHtcbm5ldC9tYWM4MDIxMS90eC5jOjEyMzc6XHRcdGlmIChzZGF0YS1cdTAwM2V2aWYudHlwZSA9PSBOTDgwMjExX0lGVFlQRV9BUF9WTEFOKSB7XG5uZXQvbWFjODAyMTEvdHguYy0xMjM4LVx0XHRcdHR4LVx1MDAzZXN0YSA9IHJjdV9kZXJlZmVyZW5jZShzZGF0YS1cdTAwM2V1LnZsYW4uc3RhKTtcbi0tXG5uZXQvbWFjODAyMTEvdHguYz0xNDgzPXZvaWQgaWVlZTgwMjExX3R4cV9yZW1vdmVfdmxhbihzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbCxcbi0tXG5uZXQvbWFjODAyMTEvdHguYy0xNDkwLVxubmV0L21hYzgwMjExL3R4LmM6MTQ5MTpcdGlmIChXQVJOX09OKHNkYXRhLVx1MDAzZXZpZi50eXBlICE9IE5MODAyMTFfSUZUWVBFX0FQX1ZMQU4pKVxubmV0L21hYzgwMjExL3R4LmMtMTQ5Mi1cdFx0cmV0dXJuO1xuLS1cbm5ldC9tYWM4MDIxMS90eC5jPTE2NTE9c3RhdGljIGJvb2wgaWVlZTgwMjExX3F1ZXVlX3NrYihzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbCxcbi0tXG5uZXQvbWFjODAyMTEvdHguYy0xNjYxLVxubmV0L21hYzgwMjExL3R4LmM6MTY2MjpcdGlmIChzZGF0YS1cdTAwM2V2aWYudHlwZSA9PSBOTDgwMjExX0lGVFlQRV9BUF9WTEFOKVxuXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA2IDIxOjA3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI1ODE5CgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogMTkxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkludmVzdGlnYXRpbmcgQVBfVkxBTiBDb25maWd1cmF0aW9uKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIGFuZCB0aGUgaW50ZXJmYWNlIHR5cGUgYmVpbmcgdXNlZCBpcyBBUF9WTEFOLiBNeSBpbml0aWFsIHRob3VnaHQgaXMsICYjMzQ7QWxyaWdodCwgZG9lcyB0aGlzIEFQX1ZMQU4gdHlwZSBoYXZlIGFueSBzcGVjaWZpYyBjb25maWd1cmF0aW9uIG9wdGlvbnMgSSBuZWVkIHRvIGJlIGF3YXJlIG9mPyYjMzQ7IE15IG1pbmQgaW1tZWRpYXRlbHkganVtcHMgdG8gY2hlY2tpbmcgZm9yIGEgZGVkaWNhdGVkIGNvbmZpZy4gSGFuZyBvbiwgKk5MODAyMTFfSUZUWVBFX0FQX1ZMQU4qLi4udGhhdCYjMzk7cyBqdXN0IGFuIGVudW0gdmFsdWUsIGlzbiYjMzk7dCBpdD8gUmlnaHQuIE9rYXksIHNvIEkgc2hvdWxkIGJlIGxvb2tpbmcgYXQgdGhlIGFjdHVhbCBjb25maWd1cmF0aW9uIGZpbGVzLiBJJiMzOTtsbCBuZWVkIHRvIGRpZyBpbnRvIGBuZXQvd2lyZWxlc3MvS2NvbmZpZ2Agb3IgbWF5YmUgZXZlbiBgbmV0L21hYzgwMjExL0tjb25maWdgLgoKV2FpdCBhIG1pbnV0ZSwgQVBfVkxBTiBzdXBwb3J0IGlzIHByZXR0eSBzdGFuZGFyZCBpbiBtYWM4MDIxMSwgKmlmKiBBUCBzdXBwb3J0IGlzIGVuYWJsZWQgdG8gYmVnaW4gd2l0aCwgc28gSSBkb24mIzM5O3QgdGhpbmsgdGhlcmUmIzM5O3MgYSB1bmlxdWUgc2V0dGluZy4gTGV0IG1lIGp1c3QgY29uZmlybSB0aGF0IGJ5IGdvaW5nIGJhY2sgYW5kIGNoZWNraW5nIGBuZXQvbWFjODAyMTEvS2NvbmZpZ2AuIEFoLCBub3BlLCBub3RoaW5nIHNwZWNpZmljIGZvciBBUF9WTEFOLiBJbnRlcmVzdGluZy4gU28sIGRvZXMgKkFQKiBpdHNlbGYgaGF2ZSBhIGNvbmZpZ3VyYXRpb24gb3B0aW9uPyBObywgbWFjODAyMTEgc3VwcG9ydHMgQVAgbW9kZSBieSBkZWZhdWx0LiBIbW0uCgpSaWdodCwgc28gd2hhdCYjMzk7cyB0aGUgY29yZSBoZXJlPyAqTUFDODAyMTEqIGlzIHRoZSBwcmltYXJ5IGNvbmZpZ3VyYXRpb24sIG9idmlvdXNseS4gQnV0IGFyZSB0aGVyZSBhbnkgb3RoZXIgc2V0dGluZ3MgdGhhdCBtaWdodCBpbmRpcmVjdGx5IGFmZmVjdCBBUF9WTEFOIGJlaGF2aW9yPyBJIHNob3VsZCBwcm9iYWJseSBicm9hZGVuIG15IHNlYXJjaC4gTGV0IG1lIHNjYW4gYG5ldC93aXJlbGVzcy9LY29uZmlnYCBhbmQgc2VlIGlmIGFueXRoaW5nIGVsc2UganVtcHMgb3V0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNiAyMTowNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgQ0ZHODAyMTEmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvd2lyZWxlc3MvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvd2lyZWxlc3MvS2NvbmZpZz0xND1jb25maWcgV0VYVF9QUklWXG4tLVxubmV0L3dpcmVsZXNzL0tjb25maWctMTYtXG5uZXQvd2lyZWxlc3MvS2NvbmZpZzoxNzpjb25maWcgQ0ZHODAyMTFcbm5ldC93aXJlbGVzcy9LY29uZmlnLTE4LVx0dHJpc3RhdGUgXCYjMzQ7Y2ZnODAyMTEgLSB3aXJlbGVzcyBjb25maWd1cmF0aW9uIEFQSVwmIzM0O1xuLS1cbm5ldC93aXJlbGVzcy9LY29uZmlnPTM4PWNvbmZpZyBOTDgwMjExX1RFU1RNT0RFXG4tLVxubmV0L3dpcmVsZXNzL0tjb25maWctNTEtXG5uZXQvd2lyZWxlc3MvS2NvbmZpZzo1Mjpjb25maWcgQ0ZHODAyMTFfREVWRUxPUEVSX1dBUk5JTkdTXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy01My1cdGJvb2wgXCYjMzQ7ZW5hYmxlIGRldmVsb3BlciB3YXJuaW5nc1wmIzM0O1xuLS1cbm5ldC93aXJlbGVzcy9LY29uZmlnLTY3LVxubmV0L3dpcmVsZXNzL0tjb25maWc6Njg6Y29uZmlnIENGRzgwMjExX0NFUlRJRklDQVRJT05fT05VU1xubmV0L3dpcmVsZXNzL0tjb25maWctNjktXHRib29sIFwmIzM0O2NmZzgwMjExIGNlcnRpZmljYXRpb24gb251c1wmIzM0O1xuLS1cbm5ldC93aXJlbGVzcy9LY29uZmlnLTg4LVxubmV0L3dpcmVsZXNzL0tjb25maWc6ODk6Y29uZmlnIENGRzgwMjExX1JFUVVJUkVfU0lHTkVEX1JFR0RCXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy05MC1cdGJvb2wgXCYjMzQ7cmVxdWlyZSByZWdkYiBzaWduYXR1cmVcJiMzNDsgaWYgQ0ZHODAyMTFfQ0VSVElGSUNBVElPTl9PTlVTXG4tLVxubmV0L3dpcmVsZXNzL0tjb25maWctOTgtXG5uZXQvd2lyZWxlc3MvS2NvbmZpZzo5OTpjb25maWcgQ0ZHODAyMTFfVVNFX0tFUk5FTF9SRUdEQl9LRVlTXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xMDAtXHRib29sIFwmIzM0O2FsbG93IHJlZ2RiIGtleXMgc2hpcHBlZCB3aXRoIHRoZSBrZXJuZWxcJiMzNDsgaWYgQ0ZHODAyMTFfQ0VSVElGSUNBVElPTl9PTlVTXG4tLVxubmV0L3dpcmVsZXNzL0tjb25maWctMTEwLVxubmV0L3dpcmVsZXNzL0tjb25maWc6MTExOmNvbmZpZyBDRkc4MDIxMV9FWFRSQV9SRUdEQl9LRVlESVJcbm5ldC93aXJlbGVzcy9LY29uZmlnLTExMi1cdHN0cmluZyBcJiMzNDthZGRpdGlvbmFsIHJlZ2RiIGtleSBkaXJlY3RvcnlcJiMzNDsgaWYgQ0ZHODAyMTFfQ0VSVElGSUNBVElPTl9PTlVTXG4tLVxubmV0L3dpcmVsZXNzL0tjb25maWctMTIxLVxubmV0L3dpcmVsZXNzL0tjb25maWc6MTIyOmNvbmZpZyBDRkc4MDIxMV9SRUdfQ0VMTFVMQVJfSElOVFNcbm5ldC93aXJlbGVzcy9LY29uZmlnLTEyMy1cdGJvb2wgXCYjMzQ7Y2ZnODAyMTEgcmVndWxhdG9yeSBzdXBwb3J0IGZvciBjZWxsdWxhciBiYXNlIHN0YXRpb24gaGludHNcJiMzNDtcbi0tXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xMzQtXG5uZXQvd2lyZWxlc3MvS2NvbmZpZzoxMzU6Y29uZmlnIENGRzgwMjExX1JFR19SRUxBWF9OT19JUlxubmV0L3dpcmVsZXNzL0tjb25maWctMTM2LVx0Ym9vbCBcJiMzNDtjZmc4MDIxMSBzdXBwb3J0IGZvciBOT19JUiByZWxheGF0aW9uXCYjMzQ7XG4tLVxubmV0L3dpcmVsZXNzL0tjb25maWctMTU4LVxubmV0L3dpcmVsZXNzL0tjb25maWc6MTU5OmNvbmZpZyBDRkc4MDIxMV9ERUZBVUxUX1BTXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xNjAtXHRib29sIFwmIzM0O2VuYWJsZSBwb3dlcnNhdmUgYnkgZGVmYXVsdFwmIzM0O1xuLS1cbm5ldC93aXJlbGVzcy9LY29uZmlnLTE2OC1cbm5ldC93aXJlbGVzcy9LY29uZmlnOjE2OTpjb25maWcgQ0ZHODAyMTFfREVCVUdGU1xubmV0L3dpcmVsZXNzL0tjb25maWctMTcwLVx0Ym9vbCBcJiMzNDtjZmc4MDIxMSBEZWJ1Z0ZTIGVudHJpZXNcJiMzNDtcbi0tXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xNzYtXG5uZXQvd2lyZWxlc3MvS2NvbmZpZzoxNzc6Y29uZmlnIENGRzgwMjExX0NSREFfU1VQUE9SVFxubmV0L3dpcmVsZXNzL0tjb25maWctMTc4LVx0Ym9vbCBcJiMzNDtzdXBwb3J0IENSREFcJiMzNDsgaWYgRVhQRVJUXG4tLVxubmV0L3dpcmVsZXNzL0tjb25maWctMTg2LVxubmV0L3dpcmVsZXNzL0tjb25maWc6MTg3OmNvbmZpZyBDRkc4MDIxMV9XRVhUXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xODgtXHRib29sIFwmIzM0O2NmZzgwMjExIHdpcmVsZXNzIGV4dGVuc2lvbnMgY29tcGF0aWJpbGl0eVwmIzM0O1xuLS1cbm5ldC93aXJlbGVzcy9LY29uZmlnLTE5My1cbm5ldC93aXJlbGVzcy9LY29uZmlnOjE5NDpjb25maWcgQ0ZHODAyMTFfS1VOSVRfVEVTVFxubmV0L3dpcmVsZXNzL0tjb25maWctMTk1LVx0dHJpc3RhdGUgXCYjMzQ7S1VuaXQgdGVzdHMgZm9yIGNmZzgwMjExXCYjMzQ7IGlmICFLVU5JVF9BTExfVEVTVFNcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDYgMjE6MDc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjcyODgKCQkJCQkJCW91dHB1dDogMTM0CgkJCQkJCQl0aG91Z2h0czogMjQzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFuYWx5c2lzIG9mIE1BQzgwMjExIGFuZCBQb3RlbnRpYWwgRnV6emluZyBUYXJnZXRzKioKCk9rYXksIHNvIEkmIzM5O20gZGl2aW5nIGludG8gdGhlIGBNQUM4MDIxMWAgY29uZmlndXJhdGlvbiwgYW5kIG15IGluaXRpYWwgdGhvdWdodCBpcyB0aGF0IGBpZWVlODAyMTFfZG9fc3RvcGAgaXMgYSBrZXkgZm9jdXMgcG9pbnQuIEl0IGZlZWxzIGxpa2UgdGhpcyBjb3VsZCBiZSBhbiBpbnRlcmVzdGluZyBmdW5jdGlvbiB0byBpbnZlc3RpZ2F0ZS4gSG9sZCBvbi4uLiBpdCYjMzk7cyBhIHN0YXRpYyBmdW5jdGlvbi4gVGhhdCBpbml0aWFsbHkgdGhyb3dzIGEgd3JlbmNoIGluIHRoZSB3b3JrcywgYnV0IHRoZW4gSSByZW1lbWJlciBuZXRsaW5rIGNvbW1hbmRzIGNhbiBiZSB1c2VkIHRvIHN0b3AgdGhlIGludGVyZmFjZSwgcG90ZW50aWFsbHkgdHJpZ2dlcmluZyBpdC4gU28sIHRoYXQmIzM5O3MgcHJvbWlzaW5nOyBpdCAqY291bGQqIGJlIGZ1enplZC4KCk5vdywgbGV0JiMzOTtzIGV4cGxvcmUgdGhpcyBmdXJ0aGVyLiBJcyB0aGVyZSBhbm90aGVyIGZ1bmN0aW9uIGRpcmVjdGx5IHJlbGF0ZWQ/IEFoLCB5ZXMsIGBpZWVlODAyMTFfc3RvcGAgY2FsbHMgYGllZWU4MDIxMV9kb19zdG9wYC4gQnV0LCBhZ2FpbiwgYmVjYXVzZSBgaWVlZTgwMjExX2RvX3N0b3BgIGlzIHN0YXRpYywgaW5saW5pbmcgaXMgYSBwb3NzaWJpbGl0eS4gSG93ZXZlciwgaXQgbG9va3MgZmFpcmx5IHN1YnN0YW50aWFsLiBHaXZlbiBpdHMgc2l6ZSwgaXQgcHJvYmFibHkgaXNuJiMzOTt0LgoKSSBuZWVkIHRvIG1ha2Ugc3VyZSBJJiMzOTttIG9uIHRoZSByaWdodCB0cmFjayBoZXJlLiBJcyBgaWVlZTgwMjExX2RvX3N0b3BgIHJlYWxseSB0aGUgYmVzdCBmb2N1cyBzeW1ib2w/IExldCYjMzk7cyBjaGVjayB3aGVyZSBpdCYjMzk7cyBjYWxsZWQuIE9rYXksIGl0JiMzOTtzIGNhbGxlZCBmcm9tIGBpZWVlODAyMTFfc3RvcGAsIGBpZWVlODAyMTFfcnVudGltZV9jaGFuZ2VfaWZ0eXBlYCwgYW5kIGBpZWVlODAyMTFfc2RhdGFfc3RvcGAuIEkgdGhpbmsgSSB3aWxsIGxpc3QgYGllZWU4MDIxMV9kb19zdG9wYCBhbmQgYGllZWU4MDIxMV9zdG9wYCBhcyBwb3RlbnRpYWwgZnV6emluZyB0YXJnZXRzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNiAyMTowODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7TUFDODAyMTEmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtpZWVlODAyMTFfZG9fc3RvcCYjMzQ7LAogICAgJiMzNDtpZWVlODAyMTFfc3RvcCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgaW50ZXJmYWNlIHN0b3AgbG9naWMgZm9yIEFQX1ZMQU4gaW50ZXJmYWNlcyBpbiBtYWM4MDIxMSwgY2hhbmdpbmcgaG93IHBhY2tldHMgYXJlIGZyZWVkIHRvIGF2b2lkIGRvaW5nIHNvIHVuZGVyIGEgc3BpbmxvY2suIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBtYWM4MDIxMSBzdGFjayB0aGF0IGlzIHJlYWNoYWJsZSB2aWEgbmV0bGluayBjb21tYW5kcyAoZS5nLiwgc3RvcHBpbmcgYW4gQVBfVkxBTiBpbnRlcmZhY2UpLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtNQUM4MDIxMSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2llZWU4MDIxMV9kb19zdG9wJiMzNDssCiAgICAmIzM0O2llZWU4MDIxMV9zdG9wJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBpbnRlcmZhY2Ugc3RvcCBsb2dpYyBmb3IgQVBfVkxBTiBpbnRlcmZhY2VzIGluIG1hYzgwMjExLCBjaGFuZ2luZyBob3cgcGFja2V0cyBhcmUgZnJlZWQgdG8gYXZvaWQgZG9pbmcgc28gdW5kZXIgYSBzcGlubG9jay4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIG1hYzgwMjExIHN0YWNrIHRoYXQgaXMgcmVhY2hhYmxlIHZpYSBuZXRsaW5rIGNvbW1hbmRzIChlLmcuLCBzdG9wcGluZyBhbiBBUF9WTEFOIGludGVyZmFjZSkuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNy0wNlQyMTowNjowNS4xNjk1MzQ1ODhaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMjEwNDg1MTIwMjMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTUFDODAyMTFcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJpZWVlODAyMTFfZG9fc3RvcFwiLFxuICAgIFwiaWVlZTgwMjExX3N0b3BcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgaW50ZXJmYWNlIHN0b3AgbG9naWMgZm9yIEFQX1ZMQU4gaW50ZXJmYWNlcyBpbiBtYWM4MDIxMSwgY2hhbmdpbmcgaG93IHBhY2tldHMgYXJlIGZyZWVkIHRvIGF2b2lkIGRvaW5nIHNvIHVuZGVyIGEgc3BpbmxvY2suIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBtYWM4MDIxMSBzdGFjayB0aGF0IGlzIHJlYWNoYWJsZSB2aWEgbmV0bGluayBjb21tYW5kcyAoZS5nLiwgc3RvcHBpbmcgYW4gQVBfVkxBTiBpbnRlcmZhY2UpLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wNlQyMTowNjowNS4xNjk1NDEyMjhaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjYyNjU0NjI3MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDU2MzQ3MjM1ZWRjZGEzYjZlODFiOWRjMjJlMGZmMzAzMmRlZTBjMzlcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIE1vbiBKdWwgNiAyMTowNjowMyAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9uZXQvbWFjODAyMTEvaWZhY2UuYyBiL25ldC9tYWM4MDIxMS9pZmFjZS5jXFxuaW5kZXggMDg2MjcyYzNlYzA4YzEuLjQzNDYwYTcwNWE2YmQwIDEwMDY0NFxcbi0tLSBhL25ldC9tYWM4MDIxMS9pZmFjZS5jXFxuKysrIGIvbmV0L21hYzgwMjExL2lmYWNlLmNcXG5AQCAtNTg4LDYgKzU4OCw3IEBAIHN0YXRpYyB2b2lkIGllZWU4MDIxMV9kb19zdG9wKHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLCBib29sIGdvaW5nX2RvXFxuIFxcdFxcdFdBUk5fT04oIWxpc3RfZW1wdHkoXFx1MDAyNnNkYXRhLVxcdTAwM2V1LmFwLnZsYW5zKSk7XFxuIFxcdH0gZWxzZSBpZiAoc2RhdGEtXFx1MDAzZXZpZi50eXBlID09IE5MODAyMTFfSUZUWVBFX0FQX1ZMQU4pIHtcXG4gXFx0XFx0LyogcmVtb3ZlIGFsbCBwYWNrZXRzIGluIHBhcmVudCBiY19idWYgcG9pbnRpbmcgdG8gdGhpcyBkZXYgKi9cXG4rXFx0XFx0X19za2JfcXVldWVfaGVhZF9pbml0KFxcdTAwMjZmcmVlcSk7XFxuIFxcdFxcdHBzID0gXFx1MDAyNnNkYXRhLVxcdTAwM2Vic3MtXFx1MDAzZXBzO1xcbiBcXG4gXFx0XFx0c3Bpbl9sb2NrX2lycXNhdmUoXFx1MDAyNnBzLVxcdTAwM2ViY19idWYubG9jaywgZmxhZ3MpO1xcbkBAIC01OTUsMTAgKzU5NiwxNSBAQCBzdGF0aWMgdm9pZCBpZWVlODAyMTFfZG9fc3RvcChzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSwgYm9vbCBnb2luZ19kb1xcbiBcXHRcXHRcXHRpZiAoc2tiLVxcdTAwM2VkZXYgPT0gc2RhdGEtXFx1MDAzZWRldikge1xcbiBcXHRcXHRcXHRcXHRfX3NrYl91bmxpbmsoc2tiLCBcXHUwMDI2cHMtXFx1MDAzZWJjX2J1Zik7XFxuIFxcdFxcdFxcdFxcdGxvY2FsLVxcdTAwM2V0b3RhbF9wc19idWZmZXJlZC0tO1xcbi1cXHRcXHRcXHRcXHRpZWVlODAyMTFfZnJlZV90eHNrYihcXHUwMDI2bG9jYWwtXFx1MDAzZWh3LCBza2IpO1xcbitcXHRcXHRcXHRcXHRfX3NrYl9xdWV1ZV90YWlsKFxcdTAwMjZmcmVlcSwgc2tiKTtcXG4gXFx0XFx0XFx0fVxcbiBcXHRcXHR9XFxuIFxcdFxcdHNwaW5fdW5sb2NrX2lycXJlc3RvcmUoXFx1MDAyNnBzLVxcdTAwM2ViY19idWYubG9jaywgZmxhZ3MpO1xcbitcXG4rXFx0XFx0c2tiX3F1ZXVlX3dhbGtfc2FmZShcXHUwMDI2ZnJlZXEsIHNrYiwgdG1wKSB7XFxuK1xcdFxcdFxcdF9fc2tiX3VubGluayhza2IsIFxcdTAwMjZmcmVlcSk7XFxuK1xcdFxcdFxcdGllZWU4MDIxMV9mcmVlX3R4c2tiKFxcdTAwMjZsb2NhbC1cXHUwMDNlaHcsIHNrYik7XFxuK1xcdFxcdH1cXG4gXFx0fVxcbiBcXG4gXFx0aWYgKGdvaW5nX2Rvd24pXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA2VDIxOjA2OjA1Ljc5NzQ1MTk4WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMjA0MjA1Nzg3OTAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTUFDODAyMTFcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJpZWVlODAyMTFfZG9fc3RvcFwiLFxuICAgIFwiaWVlZTgwMjExX3N0b3BcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgaW50ZXJmYWNlIHN0b3AgbG9naWMgZm9yIEFQX1ZMQU4gaW50ZXJmYWNlcyBpbiBtYWM4MDIxMSwgY2hhbmdpbmcgaG93IHBhY2tldHMgYXJlIGZyZWVkIHRvIGF2b2lkIGRvaW5nIHNvIHVuZGVyIGEgc3BpbmxvY2suIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBtYWM4MDIxMSBzdGFjayB0aGF0IGlzIHJlYWNoYWJsZSB2aWEgbmV0bGluayBjb21tYW5kcyAoZS5nLiwgc3RvcHBpbmcgYW4gQVBfVkxBTiBpbnRlcmZhY2UpLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG5ldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0XG4gICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksXG4gICBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDU2MzQ3MjM1ZWRjZGEzYjZlODFiOWRjMjJlMGZmMzAzMmRlZTBjMzlcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgTW9uIEp1bCA2IDIxOjA2OjAzIDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbmV0L21hYzgwMjExL2lmYWNlLmMgYi9uZXQvbWFjODAyMTEvaWZhY2UuY1xuaW5kZXggMDg2MjcyYzNlYzA4YzEuLjQzNDYwYTcwNWE2YmQwIDEwMDY0NFxuLS0tIGEvbmV0L21hYzgwMjExL2lmYWNlLmNcbisrKyBiL25ldC9tYWM4MDIxMS9pZmFjZS5jXG5AQCAtNTg4LDYgKzU4OCw3IEBAIHN0YXRpYyB2b2lkIGllZWU4MDIxMV9kb19zdG9wKHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLCBib29sIGdvaW5nX2RvXG4gXHRcdFdBUk5fT04oIWxpc3RfZW1wdHkoXHUwMDI2c2RhdGEtXHUwMDNldS5hcC52bGFucykpO1xuIFx0fSBlbHNlIGlmIChzZGF0YS1cdTAwM2V2aWYudHlwZSA9PSBOTDgwMjExX0lGVFlQRV9BUF9WTEFOKSB7XG4gXHRcdC8qIHJlbW92ZSBhbGwgcGFja2V0cyBpbiBwYXJlbnQgYmNfYnVmIHBvaW50aW5nIHRvIHRoaXMgZGV2ICovXG4rXHRcdF9fc2tiX3F1ZXVlX2hlYWRfaW5pdChcdTAwMjZmcmVlcSk7XG4gXHRcdHBzID0gXHUwMDI2c2RhdGEtXHUwMDNlYnNzLVx1MDAzZXBzO1xuIFxuIFx0XHRzcGluX2xvY2tfaXJxc2F2ZShcdTAwMjZwcy1cdTAwM2ViY19idWYubG9jaywgZmxhZ3MpO1xuQEAgLTU5NSwxMCArNTk2LDE1IEBAIHN0YXRpYyB2b2lkIGllZWU4MDIxMV9kb19zdG9wKHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLCBib29sIGdvaW5nX2RvXG4gXHRcdFx0aWYgKHNrYi1cdTAwM2VkZXYgPT0gc2RhdGEtXHUwMDNlZGV2KSB7XG4gXHRcdFx0XHRfX3NrYl91bmxpbmsoc2tiLCBcdTAwMjZwcy1cdTAwM2ViY19idWYpO1xuIFx0XHRcdFx0bG9jYWwtXHUwMDNldG90YWxfcHNfYnVmZmVyZWQtLTtcbi1cdFx0XHRcdGllZWU4MDIxMV9mcmVlX3R4c2tiKFx1MDAyNmxvY2FsLVx1MDAzZWh3LCBza2IpO1xuK1x0XHRcdFx0X19za2JfcXVldWVfdGFpbChcdTAwMjZmcmVlcSwgc2tiKTtcbiBcdFx0XHR9XG4gXHRcdH1cbiBcdFx0c3Bpbl91bmxvY2tfaXJxcmVzdG9yZShcdTAwMjZwcy1cdTAwM2ViY19idWYubG9jaywgZmxhZ3MpO1xuK1xuK1x0XHRza2JfcXVldWVfd2Fsa19zYWZlKFx1MDAyNmZyZWVxLCBza2IsIHRtcCkge1xuK1x0XHRcdF9fc2tiX3VubGluayhza2IsIFx1MDAyNmZyZWVxKTtcbitcdFx0XHRpZWVlODAyMTFfZnJlZV90eHNrYihcdTAwMjZsb2NhbC1cdTAwM2Vodywgc2tiKTtcbitcdFx0fVxuIFx0fVxuIFxuIFx0aWYgKGdvaW5nX2Rvd24pXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wNlQyMTowNjowNS43OTc0NTU4NloiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjE1MjE1NzQ5NTYzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIE1hYzgwMjExIFBhdGNoOiBBdm9pZGluZyBQb3RlbnRpYWwgQ29uY3VycmVuY3kgSXNzdWVzKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBmb3IgYG5ldC9tYWM4MDIxMS9pZmFjZS5jYC4gSXQncyB0b3VjaGluZyB0aGUgYGllZWU4MDIxMV9kb19zdG9wYCBmdW5jdGlvbiwgd2hpY2ggaW1tZWRpYXRlbHkgdGVsbHMgbWUgdGhpcyBpcyByZWxhdGVkIHRvIGludGVyZmFjZSBzaHV0ZG93biBwcm9jZWR1cmVzLiBUaGUgbWVhdCBvZiB0aGUgY2hhbmdlIGlzIGhvdyBwYWNrZXRzIGFyZSBoYW5kbGVkIHdoZW4gYW4gQVBfVkxBTiBpbnRlcmZhY2UgaXMgc3RvcHBlZC4gU3BlY2lmaWNhbGx5LCBpdCBzZWVtcyBsaWtlIHRoZSBvbGQgY29kZSBpbiBgaWVlZTgwMjExX2RvX3N0b3BgIGhhZCBhIHByb2JsZW06IGl0IHdhcyBjYWxsaW5nIGBpZWVlODAyMTFfZnJlZV90eHNrYmAgd2hpbGUgaG9sZGluZyB0aGUgYHBzLVx1MDAzZWJjX2J1Zi5sb2NrYCBzcGlubG9jay4gVGhhdCdzIGEgcmVkIGZsYWcuIEkndmUgc2VlbiB0aGF0IGtpbmQgb2YgcGF0dGVybiBsZWFkIHRvIGFsbCBzb3J0cyBvZiBjb25jdXJyZW5jeSBoZWFkYWNoZXMsIG1heWJlIGV2ZW4gYSBzbGVlcC1pbi1hdG9taWMgc2l0dWF0aW9uIG9yIGEgY2xhc3NpYyBkZWFkbG9jaywgZGVwZW5kaW5nIG9uIHdoYXQgYGllZWU4MDIxMV9mcmVlX3R4c2tiYCBhY3R1YWxseSBkb2VzIGludGVybmFsbHkuXG5cblNvLCB0aGUgcGF0Y2ggY2xldmVybHkgc2lkZXN0ZXBzIHRoZSBwb3RlbnRpYWwgcHJvYmxlbSBieSBxdWV1aW5nIHRoZSBTS0JzIHRvIGEgbG9jYWwgYGZyZWVxYCBpbnN0ZWFkLiBUaGUgYmVhdXR5IG9mIHRoaXMgaXMgdGhhdCBpdCBhbGxvd3MgdGhlIHByb2JsZW1hdGljIGZyZWVpbmcgcHJvY2VzcyB0byBoYXBwZW4gKmFmdGVyKiB0aGUgc3BpbmxvY2sgaXMgcmVsZWFzZWQuIFRoaXMgaXMgYSBzb2xpZCwgZnVuY3Rpb25hbCBjaGFuZ2UuIEl0J3MgdGhlIHJpZ2h0IHdheSB0byBmaXggc3VjaCBwb3RlbnRpYWwgYnVncy5cblxuTm93LCBsZXQgbWUgZGlnIGRlZXBlciBhbmQgc2VlIHdoYXQgZWxzZSB0aGlzIGlzIGFmZmVjdGluZy4gSSdtIGdvaW5nIHRvIHF1aWNrbHkgcmV2aWV3IHRoZSBzdXJyb3VuZGluZyBjb250ZXh0IG9mIGBpZWVlODAyMTFfZG9fc3RvcGAgdG8gY29uZmlybSBteSB1bmRlcnN0YW5kaW5nIG9mIHRoZSBpbnRlcmZhY2UncyBiZWhhdmlvciBkdXJpbmcgYSBzaHV0ZG93bi5cblxuXG4iLCJJbnB1dFRva2VucyI6MjE0OSwiT3V0cHV0VG9rZW5zIjo0NCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE1NSwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA2VDIxOjA2OjIxLjAxMzIxMTM2M1oiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMjc2Mzc3MzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiaWVlZTgwMjExX2RvX3N0b3BcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L21hYzgwMjExL2lmYWNlLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L21hYzgwMjExL2lmYWNlLmM9NDYxPXN0YXRpYyBpbnQgaWVlZTgwMjExX29wZW4oc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG4tLVxcbm5ldC9tYWM4MDIxMS9pZmFjZS5jLTQ3OC1cXG5uZXQvbWFjODAyMTEvaWZhY2UuYzo0Nzk6c3RhdGljIHZvaWQgaWVlZTgwMjExX2RvX3N0b3Aoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsIGJvb2wgZ29pbmdfZG93bilcXG5uZXQvbWFjODAyMTEvaWZhY2UuYy00ODAte1xcbi0tXFxubmV0L21hYzgwMjExL2lmYWNlLmM9ODQ1PXN0YXRpYyBpbnQgaWVlZTgwMjExX3N0b3Aoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG4tLVxcbm5ldC9tYWM4MDIxMS9pZmFjZS5jLTg2Ny1cXG5uZXQvbWFjODAyMTEvaWZhY2UuYzo4Njg6XFx0aWVlZTgwMjExX2RvX3N0b3Aoc2RhdGEsIHRydWUpO1xcbm5ldC9tYWM4MDIxMS9pZmFjZS5jLTg2OS1cXG4tLVxcbm5ldC9tYWM4MDIxMS9pZmFjZS5jPTE5ODA9c3RhdGljIGludCBpZWVlODAyMTFfcnVudGltZV9jaGFuZ2VfaWZ0eXBlKHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLFxcbi0tXFxubmV0L21hYzgwMjExL2lmYWNlLmMtMjA0NC1cXHQvKiBkb19zdG9wIHdpbGwgc3luY2hyb25pemVfcmN1KCkgZmlyc3QgdGhpbmcgKi9cXG5uZXQvbWFjODAyMTEvaWZhY2UuYzoyMDQ1OlxcdGllZWU4MDIxMV9kb19zdG9wKHNkYXRhLCBmYWxzZSk7XFxubmV0L21hYzgwMjExL2lmYWNlLmMtMjA0Ni1cXG4tLVxcbm5ldC9tYWM4MDIxMS9pZmFjZS5jPTI0NDA9dm9pZCBpZWVlODAyMTFfc2RhdGFfc3RvcChzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSlcXG4tLVxcbm5ldC9tYWM4MDIxMS9pZmFjZS5jLTI0NDMtXFx0XFx0cmV0dXJuO1xcbm5ldC9tYWM4MDIxMS9pZmFjZS5jOjI0NDQ6XFx0aWVlZTgwMjExX2RvX3N0b3Aoc2RhdGEsIHRydWUpO1xcbm5ldC9tYWM4MDIxMS9pZmFjZS5jLTI0NDUtfVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wNlQyMTowNjoyMS4xNDA4NTY0NjNaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyMDM2OTI4MDQ4NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGFuYWx5c2lzIG9mIHRoZSBzaXR1YXRpb246XG5cbioqUmVhY2hpbmcgYSBTdG9wKipcblxuT2theSwgc28gYGllZWU4MDIxMV9kb19zdG9wYCBpcyB0aGUgZnVuY3Rpb24gd2UncmUgY29uY2VybmVkIHdpdGguIEkga25vdyBpdCBnZXRzIGNhbGxlZCBpbiBhIGZldyBjcml0aWNhbCBwbGFjZXMgd2l0aGluIHRoZSBNQUM4MDIxMSBzdGFjazogYGllZWU4MDIxMV9zdG9wYCwgYGllZWU4MDIxMV9ydW50aW1lX2NoYW5nZV9pZnR5cGVgLCBhbmQgYGllZWU4MDIxMV9zZGF0YV9zdG9wYC4gR2l2ZW4gdGhvc2UgcG9pbnRzIG9mIG9yaWdpbiwgaXQncyBzYWZlIHRvIHNheSBpdCdzIGRlZmluaXRlbHkgcmVhY2hhYmxlIGNvZGUg4oCTIG5vIHdvcnJpZXMgYWJvdXQgZGVhZCBjb2RlIGVsaW1pbmF0aW9uIGhlcmUuIFRoZSBwYXRjaCBmb2N1c2VzIG9uIGhvdyB0aGUgQVBfVkxBTiBpbnRlcmZhY2UgYmVoYXZlcyB3aGVuIHN0b3BwaW5nLiBNeSBuZXh0IHN0ZXAgaXMgdG8gZXhhbWluZSB0aGUgS2NvbmZpZyBvcHRpb25zIGZvciBNQUM4MDIxMS5cblxuXG4iLCJJbnB1dFRva2VucyI6MzIzNSwiT3V0cHV0VG9rZW5zIjozOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjk2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA2VDIxOjA2OjQxLjUxMDEzOTQ5N1oiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2MjU2MjU1NDMsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIE1BQzgwMjExXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9tYWM4MDIxMS9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9tYWM4MDIxMS9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxubmV0L21hYzgwMjExL0tjb25maWc6Mjpjb25maWcgTUFDODAyMTFcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0zLVxcdHRyaXN0YXRlIFxcXCJHZW5lcmljIElFRUUgODAyLjExIE5ldHdvcmtpbmcgU3RhY2sgKG1hYzgwMjExKVxcXCJcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnPTE5PWlmIE1BQzgwMjExICE9IG5cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yMC1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyMTpjb25maWcgTUFDODAyMTFfSEFTX1JDXFxubmV0L21hYzgwMjExL0tjb25maWctMjItXFx0Ym9vbFxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTIzLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjI0OmNvbmZpZyBNQUM4MDIxMV9SQ19NSU5TVFJFTFxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTI1LVxcdGJvb2wgXFxcIk1pbnN0cmVsXFxcIiBpZiBFWFBFUlRcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnPTMxPWNob2ljZVxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWctNDAtXFxubmV0L21hYzgwMjExL0tjb25maWc6NDE6Y29uZmlnIE1BQzgwMjExX1JDX0RFRkFVTFRfTUlOU1RSRUxcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy00Mi1cXHRib29sIFxcXCJNaW5zdHJlbFxcXCJcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnPTQ4PWVuZGNob2ljZVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTQ5LVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjUwOmNvbmZpZyBNQUM4MDIxMV9SQ19ERUZBVUxUXFxubmV0L21hYzgwMjExL0tjb25maWctNTEtXFx0c3RyaW5nXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZz01Nz1jb21tZW50IFxcXCJTb21lIHdpcmVsZXNzIGRyaXZlcnMgcmVxdWlyZSBhIHJhdGUgY29udHJvbCBhbGdvcml0aG1cXFwiXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy01OS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzo2MDpjb25maWcgTUFDODAyMTFfS1VOSVRfVEVTVFxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTYxLVxcdHRyaXN0YXRlIFxcXCJLVW5pdCB0ZXN0cyBmb3IgbWFjODAyMTFcXFwiIGlmICFLVU5JVF9BTExfVEVTVFNcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTY5LVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjcwOmNvbmZpZyBNQUM4MDIxMV9NRVNIXFxubmV0L21hYzgwMjExL0tjb25maWctNzEtXFx0Ym9vbCBcXFwiRW5hYmxlIG1hYzgwMjExIG1lc2ggbmV0d29ya2luZyBzdXBwb3J0XFxcIlxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWctNzgtXFxubmV0L21hYzgwMjExL0tjb25maWc6Nzk6Y29uZmlnIE1BQzgwMjExX0xFRFNcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy04MC1cXHRib29sIFxcXCJFbmFibGUgTEVEIHRyaWdnZXJzXFxcIlxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWctODctXFxubmV0L21hYzgwMjExL0tjb25maWc6ODg6Y29uZmlnIE1BQzgwMjExX0RFQlVHRlNcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy04OS1cXHRib29sIFxcXCJFeHBvcnQgbWFjODAyMTEgaW50ZXJuYWxzIGluIERlYnVnRlNcXFwiXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy05Ni1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzo5Nzpjb25maWcgTUFDODAyMTFfTUVTU0FHRV9UUkFDSU5HXFxubmV0L21hYzgwMjExL0tjb25maWctOTgtXFx0Ym9vbCBcXFwiVHJhY2UgYWxsIG1hYzgwMjExIGRlYnVnIG1lc3NhZ2VzXFxcIlxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWctMTA5LVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjExMDptZW51Y29uZmlnIE1BQzgwMjExX0RFQlVHX01FTlVcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xMTEtXFx0Ym9vbCBcXFwiU2VsZWN0IG1hYzgwMjExIGRlYnVnZ2luZyBmZWF0dXJlc1xcXCJcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTExNS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoxMTY6Y29uZmlnIE1BQzgwMjExX05PSU5MSU5FXFxubmV0L21hYzgwMjExL0tjb25maWctMTE3LVxcdGJvb2wgXFxcIkRvIG5vdCBpbmxpbmUgVFgvUlggaGFuZGxlcnNcXFwiXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xMzEtXFxubmV0L21hYzgwMjExL0tjb25maWc6MTMyOmNvbmZpZyBNQUM4MDIxMV9WRVJCT1NFX0RFQlVHXFxubmV0L21hYzgwMjExL0tjb25maWctMTMzLVxcdGJvb2wgXFxcIlZlcmJvc2UgZGVidWdnaW5nIG91dHB1dFxcXCJcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE0Mi1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoxNDM6Y29uZmlnIE1BQzgwMjExX01MTUVfREVCVUdcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xNDQtXFx0Ym9vbCBcXFwiVmVyYm9zZSBtYW5hZ2VkIE1MTUUgb3V0cHV0XFxcIlxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWctMTUzLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjE1NDpjb25maWcgTUFDODAyMTFfU1RBX0RFQlVHXFxubmV0L21hYzgwMjExL0tjb25maWctMTU1LVxcdGJvb2wgXFxcIlZlcmJvc2Ugc3RhdGlvbiBkZWJ1Z2dpbmdcXFwiXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xNjItXFxubmV0L21hYzgwMjExL0tjb25maWc6MTYzOmNvbmZpZyBNQUM4MDIxMV9IVF9ERUJVR1xcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE2NC1cXHRib29sIFxcXCJWZXJib3NlIEhUIGRlYnVnZ2luZ1xcXCJcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE3NC1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoxNzU6Y29uZmlnIE1BQzgwMjExX09DQl9ERUJVR1xcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE3Ni1cXHRib29sIFxcXCJWZXJib3NlIE9DQiBkZWJ1Z2dpbmdcXFwiXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xODUtXFxubmV0L21hYzgwMjExL0tjb25maWc6MTg2OmNvbmZpZyBNQUM4MDIxMV9JQlNTX0RFQlVHXFxubmV0L21hYzgwMjExL0tjb25maWctMTg3LVxcdGJvb2wgXFxcIlZlcmJvc2UgSUJTUyBkZWJ1Z2dpbmdcXFwiXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xOTYtXFxubmV0L21hYzgwMjExL0tjb25maWc6MTk3OmNvbmZpZyBNQUM4MDIxMV9QU19ERUJVR1xcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE5OC1cXHRib29sIFxcXCJWZXJib3NlIHBvd2Vyc2F2ZSBtb2RlIGRlYnVnZ2luZ1xcXCJcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTIwOC1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyMDk6Y29uZmlnIE1BQzgwMjExX01QTF9ERUJVR1xcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTIxMC1cXHRib29sIFxcXCJWZXJib3NlIG1lc2ggcGVlciBsaW5rIGRlYnVnZ2luZ1xcXCJcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTIyMS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyMjI6Y29uZmlnIE1BQzgwMjExX01QQVRIX0RFQlVHXFxubmV0L21hYzgwMjExL0tjb25maWctMjIzLVxcdGJvb2wgXFxcIlZlcmJvc2UgbWVzaCBwYXRoIGRlYnVnZ2luZ1xcXCJcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTIzNC1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyMzU6Y29uZmlnIE1BQzgwMjExX01IV01QX0RFQlVHXFxubmV0L21hYzgwMjExL0tjb25maWctMjM2LVxcdGJvb2wgXFxcIlZlcmJvc2UgbWVzaCBIV01QIHJvdXRpbmcgZGVidWdnaW5nXFxcIlxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWctMjQ3LVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjI0ODpjb25maWcgTUFDODAyMTFfTUVTSF9TWU5DX0RFQlVHXFxubmV0L21hYzgwMjExL0tjb25maWctMjQ5LVxcdGJvb2wgXFxcIlZlcmJvc2UgbWVzaCBzeW5jaHJvbml6YXRpb24gZGVidWdnaW5nXFxcIlxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWctMjU4LVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjI1OTpjb25maWcgTUFDODAyMTFfTUVTSF9DU0FfREVCVUdcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yNjAtXFx0Ym9vbCBcXFwiVmVyYm9zZSBtZXNoIGNoYW5uZWwgc3dpdGNoIGRlYnVnZ2luZ1xcXCJcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTI2OS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyNzA6Y29uZmlnIE1BQzgwMjExX01FU0hfUFNfREVCVUdcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yNzEtXFx0Ym9vbCBcXFwiVmVyYm9zZSBtZXNoIHBvd2Vyc2F2ZSBkZWJ1Z2dpbmdcXFwiXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yODAtXFxubmV0L21hYzgwMjExL0tjb25maWc6MjgxOmNvbmZpZyBNQUM4MDIxMV9URExTX0RFQlVHXFxubmV0L21hYzgwMjExL0tjb25maWctMjgyLVxcdGJvb2wgXFxcIlZlcmJvc2UgVERMUyBkZWJ1Z2dpbmdcXFwiXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yOTItXFxubmV0L21hYzgwMjExL0tjb25maWc6MjkzOmNvbmZpZyBNQUM4MDIxMV9ERUJVR19DT1VOVEVSU1xcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTI5NC1cXHRib29sIFxcXCJFeHRyYSBzdGF0aXN0aWNzIGZvciBUWC9SWCBkZWJ1Z2dpbmdcXFwiXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0zMDctXFxubmV0L21hYzgwMjExL0tjb25maWc6MzA4OmNvbmZpZyBNQUM4MDIxMV9TVEFfSEFTSF9NQVhfU0laRVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTMwOS1cXHRpbnQgXFxcIlN0YXRpb24gaGFzaCB0YWJsZSBtYXhpbXVtIHNpemVcXFwiIGlmIE1BQzgwMjExX0RFQlVHX01FTlVcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDZUMjE6MDY6NDIuMTM1Nzg0MzJaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NTEwNjIxMTMwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkZ1enppbmcgdGhlIGBNQUM4MDIxMWAgQ29uZmlnIGFuZCBgaWVlZTgwMjExX2RvX3N0b3BgIEZ1bmN0aW9uKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBgTUFDODAyMTFgIGNvbmZpZ3VyYXRpb24sIGFuZCB0aGUga2V5IGZ1bmN0aW9uIGhlcmUgc2VlbXMgdG8gYmUgYGllZWU4MDIxMV9kb19zdG9wYC4gTXkgaW1tZWRpYXRlIHRob3VnaHQ/IFRoaXMgaXMgKmRlZmluaXRlbHkqIHdvcnRoIGZ1enppbmcuIFRoZSBwb3RlbnRpYWwgZm9yIHVuY292ZXJpbmcgaW50ZXJlc3RpbmcgYnVncyBpbiB0aGlzIGFyZWEgaXMgaGlnaCwgZ2l2ZW4gaXRzIHJvbGUgaW4gc3RvcHBpbmcgdGhlIHdpcmVsZXNzIGludGVyZmFjZS5cblxuVGhlIHBhdGNoIG1lbnRpb25zIGEgYnVnIHJlbGF0ZWQgdG8gYGllZWU4MDIxMV9mcmVlX3R4c2tiYCBiZWluZyBjYWxsZWQgd2hpbGUgaG9sZGluZyBhIHNwaW5sb2NrLiBUaGF0IGltbWVkaWF0ZWx5IGdyYWJzIG15IGF0dGVudGlvbi4gQW55dGltZSB5b3Ugc2VlIGEgZnVuY3Rpb24gbGlrZSBgaWVlZTgwMjExX2ZyZWVfdHhza2JgIGJlaW5nIGNhbGxlZCB1bmRlciBhIHNwaW5sb2NrLCBpdCdzIGEgcmVkIGZsYWcuIFRoYXQgZnVuY3Rpb24gbWlnaHQgc2xlZXAgb3IgYWNxdWlyZSBhIG11dGV4IGludGVybmFsbHkg4oCTIHdoaWNoIGlzIGEgYmlnIG5vLW5vIHdoZW4geW91J3JlIGFscmVhZHkgd2l0aGluIGEgc3BpbmxvY2sncyBwcm90ZWN0aW9uLiBFdmVuIGlmIGl0ICpkb2Vzbid0KiBzbGVlcCwgaXQncyBzdGlsbCBiYWQgcHJhY3RpY2UgdG8gcGVyZm9ybSBzdWNoIGFjdGlvbnMgd2l0aCBhIHNwaW5sb2NrIGhlbGQuXG5cbkFoLCByaWdodCwgYGllZWU4MDIxMV9mcmVlX3R4c2tiYCBpcyBwYXJ0IG9mIHRoZSBgbWFjODAyMTFgIHN1YnN5c3RlbS4gTWFrZXMgc2Vuc2UuIE9rYXksIHRpbWUgdG8gZGl2ZSBpbnRvIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiBgaWVlZTgwMjExX2ZyZWVfdHhza2JgIGl0c2VsZiBhbmQgc2VlIGV4YWN0bHkgd2hhdCdzIGdvaW5nIG9uIGluIHRoZXJlLiBHb3R0YSB1bmRlcnN0YW5kIHRoZSByb290IGNhdXNlIG9mIHRoaXMgdnVsbmVyYWJpbGl0eS5cblxuXG4iLCJJbnB1dFRva2VucyI6NTcxNSwiT3V0cHV0VG9rZW5zIjo0MiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE2MCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wNlQyMTowNjo0Ni42NDY0MTgzNFoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMjM4NzQzNDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiaWVlZTgwMjExX2ZyZWVfdHhza2JcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L21hYzgwMjExL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvbWFjODAyMTEvaWZhY2UuYz00Nzk9c3RhdGljIHZvaWQgaWVlZTgwMjExX2RvX3N0b3Aoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsIGJvb2wgZ29pbmdfZG93bilcXG4tLVxcbm5ldC9tYWM4MDIxMS9pZmFjZS5jLTYwNS1cXHRcXHRcXHRfX3NrYl91bmxpbmsoc2tiLCBcXHUwMDI2ZnJlZXEpO1xcbm5ldC9tYWM4MDIxMS9pZmFjZS5jOjYwNjpcXHRcXHRcXHRpZWVlODAyMTFfZnJlZV90eHNrYihcXHUwMDI2bG9jYWwtXFx1MDAzZWh3LCBza2IpO1xcbm5ldC9tYWM4MDIxMS9pZmFjZS5jLTYwNy1cXHRcXHR9XFxuLS1cXG5uZXQvbWFjODAyMTEvaWZhY2UuYy02ODUtXFx0LypcXG5uZXQvbWFjODAyMTEvaWZhY2UuYzo2ODY6XFx0ICogU2luY2UgaWVlZTgwMjExX2ZyZWVfdHhza2IoKSBtYXkgaXNzdWUgX19kZXZfcXVldWVfeG1pdCgpXFxubmV0L21hYzgwMjExL2lmYWNlLmMtNjg3LVxcdCAqIHdoaWNoIHNob3VsZCBiZSBjYWxsZWQgd2l0aCBpbnRlcnJ1cHRzIGVuYWJsZWQsIHJlY2xhbWF0aW9uXFxuLS1cXG5uZXQvbWFjODAyMTEvaWZhY2UuYy03MDctXFx0XFx0X19za2JfdW5saW5rKHNrYiwgXFx1MDAyNmZyZWVxKTtcXG5uZXQvbWFjODAyMTEvaWZhY2UuYzo3MDg6XFx0XFx0aWVlZTgwMjExX2ZyZWVfdHhza2IoXFx1MDAyNmxvY2FsLVxcdTAwM2Vodywgc2tiKTtcXG5uZXQvbWFjODAyMTEvaWZhY2UuYy03MDktXFx0fVxcbi0tXFxubmV0L21hYzgwMjExL21lc2hfcGF0aHRibC5jPTEwMDQ9dm9pZCBtZXNoX3BhdGhfZGlzY2FyZF9mcmFtZShzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSxcXG4tLVxcbm5ldC9tYWM4MDIxMS9tZXNoX3BhdGh0YmwuYy0xMDA2LXtcXG5uZXQvbWFjODAyMTEvbWVzaF9wYXRodGJsLmM6MTAwNzpcXHRpZWVlODAyMTFfZnJlZV90eHNrYihcXHUwMDI2c2RhdGEtXFx1MDAzZWxvY2FsLVxcdTAwM2Vodywgc2tiKTtcXG5uZXQvbWFjODAyMTEvbWVzaF9wYXRodGJsLmMtMTAwOC1cXHRzZGF0YS1cXHUwMDNldS5tZXNoLm1zaHN0YXRzLmRyb3BwZWRfZnJhbWVzX25vX3JvdXRlKys7XFxuLS1cXG5uZXQvbWFjODAyMTEvb2ZmY2hhbm5lbC5jPTE3MT1zdGF0aWMgdm9pZCBpZWVlODAyMTFfcm9jX25vdGlmeV9kZXN0cm95KHN0cnVjdCBpZWVlODAyMTFfcm9jX3dvcmsgKnJvYylcXG4tLVxcbm5ldC9tYWM4MDIxMS9vZmZjaGFubmVsLmMtMTc3LVxcdFxcdFxcdFxcdFxcdGZhbHNlLCBHRlBfS0VSTkVMKTtcXG5uZXQvbWFjODAyMTEvb2ZmY2hhbm5lbC5jOjE3ODpcXHRcXHRpZWVlODAyMTFfZnJlZV90eHNrYihcXHUwMDI2cm9jLVxcdTAwM2VzZGF0YS1cXHUwMDNlbG9jYWwtXFx1MDAzZWh3LCByb2MtXFx1MDAzZWZyYW1lKTtcXG5uZXQvbWFjODAyMTEvb2ZmY2hhbm5lbC5jLTE3OS1cXHR9XFxuLS1cXG5uZXQvbWFjODAyMTEvb2ZmY2hhbm5lbC5jPTgxMj1pbnQgaWVlZTgwMjExX21nbXRfdHgoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IHdpcmVsZXNzX2RldiAqd2RldixcXG4tLVxcbm5ldC9tYWM4MDIxMS9vZmZjaGFubmVsLmMtMTA0OS1cXHRpZiAocmV0KVxcbm5ldC9tYWM4MDIxMS9vZmZjaGFubmVsLmM6MTA1MDpcXHRcXHRpZWVlODAyMTFfZnJlZV90eHNrYihcXHUwMDI2bG9jYWwtXFx1MDAzZWh3LCBza2IpO1xcbm5ldC9tYWM4MDIxMS9vZmZjaGFubmVsLmMtMTA1MS0gb3V0X3VubG9jazpcXG4tLVxcbm5ldC9tYWM4MDIxMS9zdGFfaW5mby5jPTEyMDc9c3RhdGljIGJvb2wgc3RhX2luZm9fY2xlYW51cF9leHBpcmVfYnVmZmVyZWRfYWMoc3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwsXFxuLS1cXG5uZXQvbWFjODAyMTEvc3RhX2luZm8uYy0xMjM2LVxcdFxcdFxcdGJyZWFrO1xcbm5ldC9tYWM4MDIxMS9zdGFfaW5mby5jOjEyMzc6XFx0XFx0aWVlZTgwMjExX2ZyZWVfdHhza2IoXFx1MDAyNmxvY2FsLVxcdTAwM2Vodywgc2tiKTtcXG5uZXQvbWFjODAyMTEvc3RhX2luZm8uYy0xMjM4LVxcdH1cXG4tLVxcbm5ldC9tYWM4MDIxMS9zdGFfaW5mby5jLTEyNjUtXFx0XFx0ICAgICAgIHN0YS1cXHUwMDNlc3RhLmFkZHIpO1xcbm5ldC9tYWM4MDIxMS9zdGFfaW5mby5jOjEyNjY6XFx0XFx0aWVlZTgwMjExX2ZyZWVfdHhza2IoXFx1MDAyNmxvY2FsLVxcdTAwM2Vodywgc2tiKTtcXG5uZXQvbWFjODAyMTEvc3RhX2luZm8uYy0xMjY3LVxcdH1cXG4tLVxcbm5ldC9tYWM4MDIxMS9zdGF0dXMuYz0yMj12b2lkIGllZWU4MDIxMV90eF9zdGF0dXNfaXJxc2FmZShzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcXG4tLVxcbm5ldC9tYWM4MDIxMS9zdGF0dXMuYy0zNS1cXHQgICAgICAgKHNrYiA9IHNrYl9kZXF1ZXVlKFxcdTAwMjZsb2NhbC1cXHUwMDNlc2tiX3F1ZXVlX3VucmVsaWFibGUpKSkge1xcbm5ldC9tYWM4MDIxMS9zdGF0dXMuYzozNjpcXHRcXHRpZWVlODAyMTFfZnJlZV90eHNrYihodywgc2tiKTtcXG5uZXQvbWFjODAyMTEvc3RhdHVzLmMtMzctXFx0XFx0dG1wLS07XFxuLS1cXG5uZXQvbWFjODAyMTEvc3RhdHVzLmM9NDQ9c3RhdGljIHZvaWQgaWVlZTgwMjExX2hhbmRsZV9maWx0ZXJlZF9mcmFtZShzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbCxcXG4tLVxcbm5ldC9tYWM4MDIxMS9zdGF0dXMuYy01NC1cXHRcXHRcXHQgICBJRUVFODAyMTFfVFhfQ1RMX0hXXzgwMjExX0VOQ0FQKSkge1xcbm5ldC9tYWM4MDIxMS9zdGF0dXMuYzo1NTpcXHRcXHRpZWVlODAyMTFfZnJlZV90eHNrYihcXHUwMDI2bG9jYWwtXFx1MDAzZWh3LCBza2IpO1xcbm5ldC9tYWM4MDIxMS9zdGF0dXMuYy01Ni1cXHRcXHRyZXR1cm47XFxuLS1cXG5uZXQvbWFjODAyMTEvc3RhdHVzLmMtMTY4LVxcdFxcdFxcdCAgICEhdGVzdF9zdGFfZmxhZyhzdGEsIFdMQU5fU1RBX1BTX1NUQSksIGppZmZpZXMpO1xcbm5ldC9tYWM4MDIxMS9zdGF0dXMuYzoxNjk6XFx0aWVlZTgwMjExX2ZyZWVfdHhza2IoXFx1MDAyNmxvY2FsLVxcdTAwM2Vodywgc2tiKTtcXG5uZXQvbWFjODAyMTEvc3RhdHVzLmMtMTcwLX1cXG4tLVxcbm5ldC9tYWM4MDIxMS9zdGF0dXMuYz0xMzEyPUVYUE9SVF9TWU1CT0woaWVlZTgwMjExX3JlcG9ydF9sb3dfYWNrKTtcXG5uZXQvbWFjODAyMTEvc3RhdHVzLmMtMTMxMy1cXG5uZXQvbWFjODAyMTEvc3RhdHVzLmM6MTMxNDp2b2lkIGllZWU4MDIxMV9mcmVlX3R4c2tiKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbm5ldC9tYWM4MDIxMS9zdGF0dXMuYy0xMzE1LXtcXG4tLVxcbm5ldC9tYWM4MDIxMS9zdGF0dXMuYy0xMzIxLX1cXG5uZXQvbWFjODAyMTEvc3RhdHVzLmM6MTMyMjpFWFBPUlRfU1lNQk9MKGllZWU4MDIxMV9mcmVlX3R4c2tiKTtcXG5uZXQvbWFjODAyMTEvc3RhdHVzLmMtMTMyMy1cXG5uZXQvbWFjODAyMTEvc3RhdHVzLmM9MTMyND12b2lkIGllZWU4MDIxMV9wdXJnZV90eF9xdWV1ZShzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcXG4tLVxcbm5ldC9tYWM4MDIxMS9zdGF0dXMuYy0xMzI5LVxcdHdoaWxlICgoc2tiID0gX19za2JfZGVxdWV1ZShza2JzKSkpXFxubmV0L21hYzgwMjExL3N0YXR1cy5jOjEzMzA6XFx0XFx0aWVlZTgwMjExX2ZyZWVfdHhza2IoaHcsIHNrYik7XFxubmV0L21hYzgwMjExL3N0YXR1cy5jLTEzMzEtfVxcbi0tXFxubmV0L21hYzgwMjExL3R4LmM9MzMwPXN0YXRpYyB2b2lkIHB1cmdlX29sZF9wc19idWZmZXJzKHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsKVxcbi0tXFxubmV0L21hYzgwMjExL3R4LmMtMzQ5LVxcdFxcdFxcdHB1cmdlZCsrO1xcbm5ldC9tYWM4MDIxMS90eC5jOjM1MDpcXHRcXHRcXHRpZWVlODAyMTFfZnJlZV90eHNrYihcXHUwMDI2bG9jYWwtXFx1MDAzZWh3LCBza2IpO1xcbm5ldC9tYWM4MDIxMS90eC5jLTM1MS1cXHRcXHR9XFxuLS1cXG5uZXQvbWFjODAyMTEvdHguYy0zNjYtXFx0XFx0XFx0XFx0cHVyZ2VkKys7XFxubmV0L21hYzgwMjExL3R4LmM6MzY3OlxcdFxcdFxcdFxcdGllZWU4MDIxMV9mcmVlX3R4c2tiKFxcdTAwMjZsb2NhbC1cXHUwMDNlaHcsIHNrYik7XFxubmV0L21hYzgwMjExL3R4LmMtMzY4LVxcdFxcdFxcdFxcdGJyZWFrO1xcbi0tXFxubmV0L21hYzgwMjExL3R4LmM9Mzc4PWllZWU4MDIxMV90eF9oX211bHRpY2FzdF9wc19idWYoc3RydWN0IGllZWU4MDIxMV90eF9kYXRhICp0eClcXG4tLVxcbm5ldC9tYWM4MDIxMS90eC5jLTQzMi1cXHRcXHQgICAgICAgXFxcIkJDIFRYIGJ1ZmZlciBmdWxsIC0gZHJvcHBpbmcgdGhlIG9sZGVzdCBmcmFtZVxcXFxuXFxcIik7XFxubmV0L21hYzgwMjExL3R4LmM6NDMzOlxcdFxcdGllZWU4MDIxMV9mcmVlX3R4c2tiKFxcdTAwMjZ0eC1cXHUwMDNlbG9jYWwtXFx1MDAzZWh3LCBza2JfZGVxdWV1ZShcXHUwMDI2cHMtXFx1MDAzZWJjX2J1ZikpO1xcbm5ldC9tYWM4MDIxMS90eC5jLTQzNC1cXHR9IGVsc2VcXG4tLVxcbm5ldC9tYWM4MDIxMS90eC5jPTQ1OD1pZWVlODAyMTFfdHhfaF91bmljYXN0X3BzX2J1ZihzdHJ1Y3QgaWVlZTgwMjExX3R4X2RhdGEgKnR4KVxcbi0tXFxubmV0L21hYzgwMjExL3R4LmMtNTAzLVxcdFxcdFxcdCAgICAgICBzdGEtXFx1MDAzZXN0YS5hZGRyLCBhYyk7XFxubmV0L21hYzgwMjExL3R4LmM6NTA0OlxcdFxcdFxcdGllZWU4MDIxMV9mcmVlX3R4c2tiKFxcdTAwMjZsb2NhbC1cXHUwMDNlaHcsIG9sZCk7XFxubmV0L21hYzgwMjExL3R4LmMtNTA1LVxcdFxcdH0gZWxzZVxcbi0tXFxubmV0L21hYzgwMjExL3R4LmM9MTEwOD1zdGF0aWMgYm9vbCBpZWVlODAyMTFfdHhfcHJlcF9hZ2coc3RydWN0IGllZWU4MDIxMV90eF9kYXRhICp0eCxcXG4tLVxcbm5ldC9tYWM4MDIxMS90eC5jLTExNjgtXFx0XFx0aWYgKHB1cmdlX3NrYilcXG5uZXQvbWFjODAyMTEvdHguYzoxMTY5OlxcdFxcdFxcdGllZWU4MDIxMV9mcmVlX3R4c2tiKFxcdTAwMjZ0eC1cXHUwMDNlbG9jYWwtXFx1MDAzZWh3LCBwdXJnZV9za2IpO1xcbm5ldC9tYWM4MDIxMS90eC5jLTExNzAtXFx0fVxcbi0tXFxubmV0L21hYzgwMjExL3R4LmM9MTM4OT1zdGF0aWMgdm9pZCBjb2RlbF9kcm9wX2Z1bmMoc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4tLVxcbm5ldC9tYWM4MDIxMS90eC5jLTEzOTktXFxubmV0L21hYzgwMjExL3R4LmM6MTQwMDpcXHRpZWVlODAyMTFfZnJlZV90eHNrYihodywgc2tiKTtcXG5uZXQvbWFjODAyMTEvdHguYy0xNDAxLX1cXG4tLVxcbm5ldC9tYWM4MDIxMS90eC5jPTE0MzQ9c3RhdGljIHZvaWQgZnFfc2tiX2ZyZWVfZnVuYyhzdHJ1Y3QgZnEgKmZxLFxcbi0tXFxubmV0L21hYzgwMjExL3R4LmMtMTQ0MS1cXHRsb2NhbCA9IGNvbnRhaW5lcl9vZihmcSwgc3RydWN0IGllZWU4MDIxMV9sb2NhbCwgZnEpO1xcbm5ldC9tYWM4MDIxMS90eC5jOjE0NDI6XFx0aWVlZTgwMjExX2ZyZWVfdHhza2IoXFx1MDAyNmxvY2FsLVxcdTAwM2Vodywgc2tiKTtcXG5uZXQvbWFjODAyMTEvdHguYy0xNDQzLX1cXG4tLVxcbm5ldC9tYWM4MDIxMS90eC5jPTE2Nzk9c3RhdGljIGJvb2wgaWVlZTgwMjExX3R4X2ZyYWdzKHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsLFxcbi0tXFxubmV0L21hYzgwMjExL3R4LmMtMTY5NS1cXHRcXHRcXHRfX3NrYl91bmxpbmsoc2tiLCBza2JzKTtcXG5uZXQvbWFjODAyMTEvdHguYzoxNjk2OlxcdFxcdFxcdGllZWU4MDIxMV9mcmVlX3R4c2tiKFxcdTAwMjZsb2NhbC1cXHUwMDNlaHcsIHNrYik7XFxubmV0L21hYzgwMjExL3R4LmMtMTY5Ny1cXHRcXHRcXHRjb250aW51ZTtcXG4tLVxcbm5ldC9tYWM4MDIxMS90eC5jPTE4MTY9c3RhdGljIGludCBpbnZva2VfdHhfaGFuZGxlcnNfZWFybHkoc3RydWN0IGllZWU4MDIxMV90eF9kYXRhICp0eClcXG4tLVxcbm5ldC9tYWM4MDIxMS90eC5jLTE4MzYtXFx0XFx0aWYgKHR4LVxcdTAwM2Vza2IpXFxubmV0L21hYzgwMjExL3R4LmM6MTgzNzpcXHRcXHRcXHRpZWVlODAyMTFfZnJlZV90eHNrYihcXHUwMDI2dHgtXFx1MDAzZWxvY2FsLVxcdTAwM2VodywgdHgtXFx1MDAzZXNrYik7XFxubmV0L21hYzgwMjExL3R4LmMtMTgzOC1cXHRcXHRlbHNlXFxuLS1cXG5uZXQvbWFjODAyMTEvdHguYz0xODUzPXN0YXRpYyBpbnQgaW52b2tlX3R4X2hhbmRsZXJzX2xhdGUoc3RydWN0IGllZWU4MDIxMV90eF9kYXRhICp0eClcXG4tLVxcbm5ldC9tYWM4MDIxMS90eC5jLTE4ODAtXFx0XFx0aWYgKHR4LVxcdTAwM2Vza2IpXFxubmV0L21hYzgwMjExL3R4LmM6MTg4MTpcXHRcXHRcXHRpZWVlODAyMTFfZnJlZV90eHNrYihcXHUwMDI2dHgtXFx1MDAzZWxvY2FsLVxcdTAwM2VodywgdHgtXFx1MDAzZXNrYik7XFxubmV0L21hYzgwMjExL3R4LmMtMTg4Mi1cXHRcXHRlbHNlXFxuLS1cXG5uZXQvbWFjODAyMTEvdHguYz0xOTAyPWJvb2wgaWVlZTgwMjExX3R4X3ByZXBhcmVfc2tiKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxcbi0tXFxubmV0L21hYzgwMjExL3R4LmMtMTkzMi1cXHRpZiAoV0FSTl9PTihza2IyICE9IHNrYiB8fCAhc2tiX3F1ZXVlX2VtcHR5KFxcdTAwMjZ0eC5za2JzKSkpIHtcXG5uZXQvbWFjODAyMTEvdHguYzoxOTMzOlxcdFxcdGllZWU4MDIxMV9mcmVlX3R4c2tiKGh3LCBza2IyKTtcXG5uZXQvbWFjODAyMTEvdHguYy0xOTM0LVxcdFxcdGllZWU4MDIxMV9wdXJnZV90eF9xdWV1ZShodywgXFx1MDAyNnR4LnNrYnMpO1xcbi0tXFxubmV0L21hYzgwMjExL3R4LmM9MTk0NT1zdGF0aWMgYm9vbCBpZWVlODAyMTFfdHgoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsXFxuLS1cXG5uZXQvbWFjODAyMTEvdHguYy0xOTYzLVxcdGlmICh1bmxpa2VseShyZXNfcHJlcGFyZSA9PSBUWF9EUk9QKSkge1xcbm5ldC9tYWM4MDIxMS90eC5jOjE5NjQ6XFx0XFx0aWVlZTgwMjExX2ZyZWVfdHhza2IoXFx1MDAyNmxvY2FsLVxcdTAwM2Vodywgc2tiKTtcXG5uZXQvbWFjODAyMTEvdHguYy0xOTY1LVxcdFxcdHR4LnNkYXRhLVxcdTAwM2V0eF9oYW5kbGVyc19kcm9wKys7XFxuLS1cXG5uZXQvbWFjODAyMTEvdHguYz0yMDM0PXZvaWQgaWVlZTgwMjExX3htaXQoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsXFxuLS1cXG5uZXQvbWFjODAyMTEvdHguYy0yMDU2LVxcdGlmIChpZWVlODAyMTFfc2tiX3Jlc2l6ZShzZGF0YSwgc2tiLCBoZWFkcm9vbSwgZW5jcnlwdCkpIHtcXG5uZXQvbWFjODAyMTEvdHguYzoyMDU3OlxcdFxcdGllZWU4MDIxMV9mcmVlX3R4c2tiKFxcdTAwMjZsb2NhbC1cXHUwMDNlaHcsIHNrYik7XFxubmV0L21hYzgwMjExL3R4LmMtMjA1OC1cXHRcXHRyZXR1cm47XFxuLS1cXG5uZXQvbWFjODAyMTEvdHguYz0yNjMxPXN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqaWVlZTgwMjExX2J1aWxkX2hkcihzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSxcXG4tLVxcbm5ldC9tYWM4MDIxMS90eC5jLTI5ODItXFx0XFx0aWYgKGllZWU4MDIxMV9za2JfcmVzaXplKHNkYXRhLCBza2IsIGhlYWRfbmVlZCwgRU5DUllQVF9EQVRBKSkge1xcbm5ldC9tYWM4MDIxMS90eC5jOjI5ODM6XFx0XFx0XFx0aWVlZTgwMjExX2ZyZWVfdHhza2IoXFx1MDAyNmxvY2FsLVxcdTAwM2Vodywgc2tiKTtcXG5uZXQvbWFjODAyMTEvdHguYy0yOTg0LVxcdFxcdFxcdHNrYiA9IE5VTEw7XFxuLS1cXG5uZXQvbWFjODAyMTEvdHguYz0zODYwPXN0cnVjdCBza19idWZmICppZWVlODAyMTFfdHhfZGVxdWV1ZShzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcXG4tLVxcbm5ldC9tYWM4MDIxMS90eC5jLTM5NDAtXFx0XFx0XFx0STgwMl9ERUJVR19JTkMobG9jYWwtXFx1MDAzZXR4X2hhbmRsZXJzX2Ryb3BfdW5hdXRoX3BvcnQpO1xcbm5ldC9tYWM4MDIxMS90eC5jOjM5NDE6XFx0XFx0XFx0aWVlZTgwMjExX2ZyZWVfdHhza2IoXFx1MDAyNmxvY2FsLVxcdTAwM2Vodywgc2tiKTtcXG5uZXQvbWFjODAyMTEvdHguYy0zOTQyLVxcdFxcdFxcdGdvdG8gYmVnaW47XFxuLS1cXG5uZXQvbWFjODAyMTEvdHguYy0zOTUyLVxcdGlmIChyICE9IFRYX0NPTlRJTlVFKSB7XFxubmV0L21hYzgwMjExL3R4LmM6Mzk1MzpcXHRcXHRpZWVlODAyMTFfZnJlZV90eHNrYihcXHUwMDI2bG9jYWwtXFx1MDAzZWh3LCBza2IpO1xcbm5ldC9tYWM4MDIxMS90eC5jLTM5NTQtXFx0XFx0Z290byBiZWdpbjtcXG4tLVxcbm5ldC9tYWM4MDIxMS90eC5jLTM5NjQtXFx0XFx0XFx0aWYgKHIgIT0gVFhfQ09OVElOVUUpIHtcXG5uZXQvbWFjODAyMTEvdHguYzozOTY1OlxcdFxcdFxcdFxcdGllZWU4MDIxMV9mcmVlX3R4c2tiKFxcdTAwMjZsb2NhbC1cXHUwMDNlaHcsIHNrYik7XFxubmV0L21hYzgwMjExL3R4LmMtMzk2Ni1cXHRcXHRcXHRcXHRnb3RvIGJlZ2luO1xcbi0tXFxubmV0L21hYzgwMjExL3R4LmMtMzk4My1cXHRcXHRpZiAociAhPSBUWF9DT05USU5VRSkge1xcbm5ldC9tYWM4MDIxMS90eC5jOjM5ODQ6XFx0XFx0XFx0aWVlZTgwMjExX2ZyZWVfdHhza2IoXFx1MDAyNmxvY2FsLVxcdTAwM2Vodywgc2tiKTtcXG5uZXQvbWFjODAyMTEvdHguYy0zOTg1LVxcdFxcdFxcdGdvdG8gYmVnaW47XFxuLS1cXG5uZXQvbWFjODAyMTEvdHguYy00MDAzLVxcdFxcdGlmIChza2JfbGluZWFyaXplKHNrYikpIHtcXG5uZXQvbWFjODAyMTEvdHguYzo0MDA0OlxcdFxcdFxcdGllZWU4MDIxMV9mcmVlX3R4c2tiKFxcdTAwMjZsb2NhbC1cXHUwMDNlaHcsIHNrYik7XFxubmV0L21hYzgwMjExL3R4LmMtNDAwNS1cXHRcXHRcXHRnb3RvIGJlZ2luO1xcbi0tXFxubmV0L21hYzgwMjExL3R4LmMtNDAyMi1cXHRcXHR9IGVsc2UgaWYgKGllZWU4MDIxMV9od19jaGVjayhcXHUwMDI2bG9jYWwtXFx1MDAzZWh3LCBRVUVVRV9DT05UUk9MKSkge1xcbm5ldC9tYWM4MDIxMS90eC5jOjQwMjM6XFx0XFx0XFx0aWVlZTgwMjExX2ZyZWVfdHhza2IoXFx1MDAyNmxvY2FsLVxcdTAwM2Vodywgc2tiKTtcXG5uZXQvbWFjODAyMTEvdHguYy00MDI0LVxcdFxcdFxcdGdvdG8gYmVnaW47XFxuLS1cXG5uZXQvbWFjODAyMTEvdHguYz00ODk1PXZvaWQgaWVlZTgwMjExX2NsZWFyX3R4X3BlbmRpbmcoc3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwpXFxuLS1cXG5uZXQvbWFjODAyMTEvdHguYy00OTAxLVxcdFxcdHdoaWxlICgoc2tiID0gc2tiX2RlcXVldWUoXFx1MDAyNmxvY2FsLVxcdTAwM2VwZW5kaW5nW2ldKSkgIT0gTlVMTClcXG5uZXQvbWFjODAyMTEvdHguYzo0OTAyOlxcdFxcdFxcdGllZWU4MDIxMV9mcmVlX3R4c2tiKFxcdTAwMjZsb2NhbC1cXHUwMDNlaHcsIHNrYik7XFxubmV0L21hYzgwMjExL3R4LmMtNDkwMy1cXHR9XFxuLS1cXG5uZXQvbWFjODAyMTEvdHguYz00OTYzPXZvaWQgaWVlZTgwMjExX3R4X3BlbmRpbmcoc3RydWN0IHRhc2tsZXRfc3RydWN0ICp0KVxcbi0tXFxubmV0L21hYzgwMjExL3R4LmMtNDk4Ny1cXHRcXHRcXHRpZiAoV0FSTl9PTighaW5mby1cXHUwMDNlY29udHJvbC52aWYpKSB7XFxubmV0L21hYzgwMjExL3R4LmM6NDk4ODpcXHRcXHRcXHRcXHRpZWVlODAyMTFfZnJlZV90eHNrYihcXHUwMDI2bG9jYWwtXFx1MDAzZWh3LCBza2IpO1xcbm5ldC9tYWM4MDIxMS90eC5jLTQ5ODktXFx0XFx0XFx0XFx0Y29udGludWU7XFxuLS1cXG5uZXQvbWFjODAyMTEvdHguYz02MjMyPWllZWU4MDIxMV9nZXRfYnVmZmVyZWRfYmMoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXFxuLS1cXG5uZXQvbWFjODAyMTEvdHguYy02Mjg3LVxcdFxcdFxcdGJyZWFrO1xcbm5ldC9tYWM4MDIxMS90eC5jOjYyODg6XFx0XFx0aWVlZTgwMjExX2ZyZWVfdHhza2IoaHcsIHNrYik7XFxubmV0L21hYzgwMjExL3R4LmMtNjI4OS1cXHR9XFxuLS1cXG5uZXQvbWFjODAyMTEvdXRpbC5jPTU1MT12b2lkIGllZWU4MDIxMV9hZGRfcGVuZGluZ19za2Ioc3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwsXFxuLS1cXG5uZXQvbWFjODAyMTEvdXRpbC5jLTU1OS1cXHRpZiAoV0FSTl9PTighaW5mby1cXHUwMDNlY29udHJvbC52aWYpKSB7XFxubmV0L21hYzgwMjExL3V0aWwuYzo1NjA6XFx0XFx0aWVlZTgwMjExX2ZyZWVfdHhza2IoXFx1MDAyNmxvY2FsLVxcdTAwM2Vodywgc2tiKTtcXG5uZXQvbWFjODAyMTEvdXRpbC5jLTU2MS1cXHRcXHRyZXR1cm47XFxuLS1cXG5uZXQvbWFjODAyMTEvdXRpbC5jPTU3Mz12b2lkIGllZWU4MDIxMV9hZGRfcGVuZGluZ19za2JzKHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsLFxcbi0tXFxubmV0L21hYzgwMjExL3V0aWwuYy01ODUtXFx0XFx0aWYgKFdBUk5fT04oIWluZm8tXFx1MDAzZWNvbnRyb2wudmlmKSkge1xcbm5ldC9tYWM4MDIxMS91dGlsLmM6NTg2OlxcdFxcdFxcdGllZWU4MDIxMV9mcmVlX3R4c2tiKFxcdTAwMjZsb2NhbC1cXHUwMDNlaHcsIHNrYik7XFxubmV0L21hYzgwMjExL3V0aWwuYy01ODctXFx0XFx0XFx0Y29udGludWU7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA2VDIxOjA2OjQ2Ljc3MDMwMDY3MVoiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI3MzMyNDIzNjU5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgUGF0Y2ggZm9yIFBvdGVudGlhbCBGdXp6aW5nKipcblxuT2theSwgc28gdGhlIHBhdGNoIEknbSBsb29raW5nIGF0IG1vZGlmaWVzIGBpZWVlODAyMTFfZG9fc3RvcGAsIHNwZWNpZmljYWxseSB3aXRoaW4gYG5ldC9tYWM4MDIxMS9pZmFjZS5jYC4gVGhpcyBpcyB0aGUgZnVuY3Rpb24gcmVzcG9uc2libGUgZm9yIHN0b3BwaW5nIGFuIGludGVyZmFjZSwgd2hpY2gsIGJ5IGl0cyBuYXR1cmUsIGlzbid0IGEgaGlnaC1mcmVxdWVuY3kgb3BlcmF0aW9uIOKAkyBzbyBpdCdzIG5vdCBhIGhvdCBwYXRoLiBIb3dldmVyLCBpdCAqaXMqIHJlYWNoYWJsZSDigJMgdGhhdCdzIGdvb2QuIEkgY2FuIHRyaWdnZXIgaXQgd2l0aCBzdGFuZGFyZCBuZXRsaW5rIGNvbW1hbmRzIGxpa2UgYGlmY29uZmlnIHdsYW4wIGRvd25gLlxuXG5Ob3csIHRoZSBpbXBvcnRhbnQgcXVlc3Rpb246IGlzIGl0IHdvcnRoIGZ1enppbmc/IEdpdmVuIHRoYXQgaXQncyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHdpdGhpbiB0aGUga2VybmVsLCB0aGUgYW5zd2VyIGlzIGEgZGVmaW5pdGUgeWVzLiBXZSBoYXZlIHRoZSBgTUFDODAyMTFgIGNvbmZpZywgd2hpY2ggY292ZXJzIHRoaXMgY29kZS4gTGV0IG1lIGRvdWJsZS1jaGVjayB0aG91Z2guLi4gWXVwLCB0aGUgY29kZSBpcyBpbmRlZWQgaW4gYG5ldC9tYWM4MDIxMS9pZmFjZS5jYC4gSSdtIGdvaW5nIHRvIG1ha2Ugc3VyZSB0aGVyZSBhcmVuJ3QgYW55IG90aGVyIGRlcGVuZGVudCBjb25maWdzLlxuXG5XYWl0IGEgc2Vjb25kLi4uIHRoZSBwYXRjaCBzcGVjaWZpZXMgYSBjaGVjayBmb3IgYHNkYXRhLVx1MDAzZXZpZi50eXBlID09IE5MODAyMTFfSUZUWVBFX0FQX1ZMQU5gLiBPa2F5LCBzbyBpdCdzICpzcGVjaWZpY2FsbHkqIHJlbGF0ZWQgdG8gQVBfVkxBTiBpbnRlcmZhY2VzLiBUaGF0IGNoYW5nZXMgdGhpbmdzIGEgYml0LiBEb2VzIEFQX1ZMQU4gaGF2ZSBpdHMgb3duIHNwZWNpZmljIGNvbmZpZ3VyYXRpb24/IExldCBtZSBjb25zdWx0IGBuZXQvbWFjODAyMTEvS2NvbmZpZ2Agb3IgcG9zc2libHkgYG5ldC93aXJlbGVzcy9LY29uZmlnYCB0byBzZWUgaWYgdGhlcmUncyBhIGRlZGljYXRlZCBjb25maWcgb3B0aW9uIHJlbGF0ZWQgdG8gQVBfVkxBTiB0aGF0IEkgbmVlZCB0byBiZSBhd2FyZSBvZi4gR290dGEgZW5zdXJlIHRoZSBmdXp6aW5nIHNldHVwIGFjY3VyYXRlbHkgcmVmbGVjdHMgdGhlIHJlbGV2YW50IGtlcm5lbCBidWlsZCBjb25maWd1cmF0aW9ucy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTE0NDIsIk91dHB1dFRva2VucyI6MzMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNjksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDZUMjE6MDc6MTQuMTAyNzI2OTc5WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxODkyMDQ4NDUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiQVBfVkxBTlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvbWFjODAyMTEvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIlxcbkZ1bGwgb3V0cHV0IGlzIHRvbyBsb25nLCBzaG93aW5nIDUwMCBvdXQgb2YgNjQyIGxpbmVzLlxcblVzZSBtb3JlIHByZWNpc2UgZXhwcmVzc2lvbiBpZiBwb3NzaWJsZS5cXG5cXG5uZXQvbWFjODAyMTEvYWdnLXR4LmM9NjAzPWludCBpZWVlODAyMTFfc3RhcnRfdHhfYmFfc2Vzc2lvbihzdHJ1Y3QgaWVlZTgwMjExX3N0YSAqcHVic3RhLCB1MTYgdGlkLFxcbi0tXFxubmV0L21hYzgwMjExL2FnZy10eC5jLTY0MS1cXHQgICAgc2RhdGEtXFx1MDAzZXZpZi50eXBlICE9IE5MODAyMTFfSUZUWVBFX01FU0hfUE9JTlQgXFx1MDAyNlxcdTAwMjZcXG5uZXQvbWFjODAyMTEvYWdnLXR4LmM6NjQyOlxcdCAgICBzZGF0YS1cXHUwMDNldmlmLnR5cGUgIT0gTkw4MDIxMV9JRlRZUEVfQVBfVkxBTiBcXHUwMDI2XFx1MDAyNlxcbm5ldC9tYWM4MDIxMS9hZ2ctdHguYy02NDMtXFx0ICAgIHNkYXRhLVxcdTAwM2V2aWYudHlwZSAhPSBOTDgwMjExX0lGVFlQRV9BUCBcXHUwMDI2XFx1MDAyNlxcbi0tXFxubmV0L21hYzgwMjExL2NmZy5jPTIwNj1zdGF0aWMgc3RydWN0IHdpcmVsZXNzX2RldiAqaWVlZTgwMjExX2FkZF9pZmFjZShzdHJ1Y3Qgd2lwaHkgKndpcGh5LFxcbi0tXFxubmV0L21hYzgwMjExL2NmZy5jLTIzNS1cXHRzd2l0Y2ggKHR5cGUpIHtcXG5uZXQvbWFjODAyMTEvY2ZnLmM6MjM2OlxcdGNhc2UgTkw4MDIxMV9JRlRZUEVfQVBfVkxBTjpcXG5uZXQvbWFjODAyMTEvY2ZnLmMtMjM3LVxcdFxcdGJyZWFrO1xcbi0tXFxubmV0L21hYzgwMjExL2NmZy5jPTI1OT1zdGF0aWMgaW50IGllZWU4MDIxMV9jaGFuZ2VfaWZhY2Uoc3RydWN0IHdpcGh5ICp3aXBoeSxcXG4tLVxcbm5ldC9tYWM4MDIxMS9jZmcuYy0yNzQtXFxubmV0L21hYzgwMjExL2NmZy5jOjI3NTpcXHRpZiAodHlwZSA9PSBOTDgwMjExX0lGVFlQRV9BUF9WTEFOIFxcdTAwMjZcXHUwMDI2IHBhcmFtcy1cXHUwMDNldXNlXzRhZGRyID09IDApIHtcXG5uZXQvbWFjODAyMTEvY2ZnLmMtMjc2LVxcdFxcdFJDVV9JTklUX1BPSU5URVIoc2RhdGEtXFx1MDAzZXUudmxhbi5zdGEsIE5VTEwpO1xcbi0tXFxubmV0L21hYzgwMjExL2NmZy5jPTYxMz1zdGF0aWMgaW50IGllZWU4MDIxMV9hZGRfa2V5KHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsXFxuLS1cXG5uZXQvbWFjODAyMTEvY2ZnLmMtNjk5LVxcdGNhc2UgTkw4MDIxMV9JRlRZUEVfQVA6XFxubmV0L21hYzgwMjExL2NmZy5jOjcwMDpcXHRjYXNlIE5MODAyMTFfSUZUWVBFX0FQX1ZMQU46XFxubmV0L21hYzgwMjExL2NmZy5jLTcwMS1cXHRjYXNlIE5MODAyMTFfSUZUWVBFX05BTjpcXG4tLVxcbm5ldC9tYWM4MDIxMS9jZmcuYz0yNjMwPXN0YXRpYyBpbnQgaWVlZTgwMjExX2FkZF9zdGF0aW9uKHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsXFxuLS1cXG5uZXQvbWFjODAyMTEvY2ZnLmMtMjY0My1cXG5uZXQvbWFjODAyMTEvY2ZnLmM6MjY0NDpcXHRcXHRpZiAoc2RhdGEtXFx1MDAzZXZpZi50eXBlICE9IE5MODAyMTFfSUZUWVBFX0FQX1ZMQU4gXFx1MDAyNlxcdTAwMjZcXG5uZXQvbWFjODAyMTEvY2ZnLmMtMjY0NS1cXHRcXHQgICAgc2RhdGEtXFx1MDAzZXZpZi50eXBlICE9IE5MODAyMTFfSUZUWVBFX0FQKVxcbi0tXFxubmV0L21hYzgwMjExL2NmZy5jPTI3ODM9c3RhdGljIGludCBpZWVlODAyMTFfY2hhbmdlX3N0YXRpb24oc3RydWN0IHdpcGh5ICp3aXBoeSxcXG4tLVxcbm5ldC9tYWM4MDIxMS9jZmcuYy0yODIwLVxcdGNhc2UgTkw4MDIxMV9JRlRZUEVfQVA6XFxubmV0L21hYzgwMjExL2NmZy5jOjI4MjE6XFx0Y2FzZSBOTDgwMjExX0lGVFlQRV9BUF9WTEFOOlxcbm5ldC9tYWM4MDIxMS9jZmcuYy0yODIyLVxcdFxcdGlmICh0ZXN0X3N0YV9mbGFnKHN0YSwgV0xBTl9TVEFfQVNTT0MpKVxcbi0tXFxubmV0L21hYzgwMjExL2NmZy5jLTI4NTAtXFxubmV0L21hYzgwMjExL2NmZy5jOjI4NTE6XFx0XFx0aWYgKHN0YS1cXHUwMDNlc2RhdGEtXFx1MDAzZXZpZi50eXBlID09IE5MODAyMTFfSUZUWVBFX0FQX1ZMQU4gXFx1MDAyNlxcdTAwMjZcXG5uZXQvbWFjODAyMTEvY2ZnLmMtMjg1Mi1cXHRcXHQgICAgc3RhLVxcdTAwM2VzZGF0YS1cXHUwMDNldS52bGFuLnN0YSlcXG4tLVxcbm5ldC9tYWM4MDIxMS9jaGFuLmM9MTEyPWllZWU4MDIxMV9jaGFuY3R4X3VzZXJfaXRlcl9uZXh0KHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsLFxcbi0tXFxubmV0L21hYzgwMjExL2NoYW4uYy0xNDItXFxubmV0L21hYzgwMjExL2NoYW4uYzoxNDM6XFx0XFx0LyogQVBfVkxBTiBoYXMgYSBjaGFuY3R4IHBvaW50ZXIgYnV0IGZvbGxvd3MgQVAgKi9cXG5uZXQvbWFjODAyMTEvY2hhbi5jOjE0NDpcXHRcXHRpZiAoaXRlci1cXHUwMDNlc2RhdGEtXFx1MDAzZXZpZi50eXBlID09IE5MODAyMTFfSUZUWVBFX0FQX1ZMQU4pXFxubmV0L21hYzgwMjExL2NoYW4uYy0xNDUtXFx0XFx0XFx0Y29udGludWU7XFxuLS1cXG5uZXQvbWFjODAyMTEvY2hhbi5jPTUxOT1pZWVlODAyMTFfZ2V0X3dpZHRoX29mX2xpbmsoc3RydWN0IGllZWU4MDIxMV9saW5rX2RhdGEgKmxpbmspXFxuLS1cXG5uZXQvbWFjODAyMTEvY2hhbi5jLTU0MC1cXHRjYXNlIE5MODAyMTFfSUZUWVBFX0FQOlxcbm5ldC9tYWM4MDIxMS9jaGFuLmM6NTQxOlxcdGNhc2UgTkw4MDIxMV9JRlRZUEVfQVBfVkxBTjpcXG5uZXQvbWFjODAyMTEvY2hhbi5jLTU0Mi1cXHRcXHRyZXR1cm4gaWVlZTgwMjExX2dldF9tYXhfcmVxdWlyZWRfYncobGluayk7XFxuLS1cXG5uZXQvbWFjODAyMTEvY2hhbi5jPTE1Nzk9aWVlZTgwMjExX2xpbmtfY2hhbmN0eF9yZXNlcnZhdGlvbl9jb21wbGV0ZShzdHJ1Y3QgaWVlZTgwMjExX2xpbmtfZGF0YSAqbGluaylcXG4tLVxcbm5ldC9tYWM4MDIxMS9jaGFuLmMtMTU5NS1cXHRjYXNlIE5MODAyMTFfSUZUWVBFX1VOU1BFQ0lGSUVEOlxcbm5ldC9tYWM4MDIxMS9jaGFuLmM6MTU5NjpcXHRjYXNlIE5MODAyMTFfSUZUWVBFX0FQX1ZMQU46XFxubmV0L21hYzgwMjExL2NoYW4uYy0xNTk3LVxcdGNhc2UgTkw4MDIxMV9JRlRZUEVfV0RTOlxcbi0tXFxubmV0L21hYzgwMjExL2NoYW4uYz0yNDgyPXZvaWQgaWVlZTgwMjExX2xpbmtfcmVsZWFzZV9jaGFubmVsKHN0cnVjdCBpZWVlODAyMTFfbGlua19kYXRhICpsaW5rKVxcbi0tXFxubmV0L21hYzgwMjExL2NoYW4uYy0yNDg1LVxcbm5ldC9tYWM4MDIxMS9jaGFuLmM6MjQ4NjpcXHRpZiAoc2RhdGEtXFx1MDAzZXZpZi50eXBlID09IE5MODAyMTFfSUZUWVBFX0FQX1ZMQU4pXFxubmV0L21hYzgwMjExL2NoYW4uYy0yNDg3LVxcdFxcdHJldHVybjtcXG4tLVxcbm5ldC9tYWM4MDIxMS9jaGFuLmM9MjQ5NT12b2lkIGllZWU4MDIxMV9saW5rX3ZsYW5fY29weV9jaGFuY3R4KHN0cnVjdCBpZWVlODAyMTFfbGlua19kYXRhICpsaW5rKVxcbi0tXFxubmV0L21hYzgwMjExL2NoYW4uYy0yNTA2LVxcbm5ldC9tYWM4MDIxMS9jaGFuLmM6MjUwNzpcXHRpZiAoV0FSTl9PTihzZGF0YS1cXHUwMDNldmlmLnR5cGUgIT0gTkw4MDIxMV9JRlRZUEVfQVBfVkxBTiB8fCAhc2RhdGEtXFx1MDAzZWJzcykpXFxubmV0L21hYzgwMjExL2NoYW4uYy0yNTA4LVxcdFxcdHJldHVybjtcXG4tLVxcbm5ldC9tYWM4MDIxMS9kZWJ1Z2ZzX25ldGRldi5jPTkzNz1zdGF0aWMgdm9pZCBhZGRfZmlsZXMoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEpXFxuLS1cXG5uZXQvbWFjODAyMTEvZGVidWdmc19uZXRkZXYuYy05NjQtXFx0XFx0YnJlYWs7XFxubmV0L21hYzgwMjExL2RlYnVnZnNfbmV0ZGV2LmM6OTY1OlxcdGNhc2UgTkw4MDIxMV9JRlRZUEVfQVBfVkxBTjpcXG5uZXQvbWFjODAyMTEvZGVidWdmc19uZXRkZXYuYy05NjYtXFx0XFx0YWRkX3ZsYW5fZmlsZXMoc2RhdGEpO1xcbi0tXFxubmV0L21hYzgwMjExL2RyaXZlci1vcHMuYz01Nz1pbnQgZHJ2X2FkZF9pbnRlcmZhY2Uoc3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwsXFxuLS1cXG5uZXQvbWFjODAyMTEvZHJpdmVyLW9wcy5jLTY0LVxcbm5ldC9tYWM4MDIxMS9kcml2ZXItb3BzLmM6NjU6XFx0aWYgKFdBUk5fT04oc2RhdGEtXFx1MDAzZXZpZi50eXBlID09IE5MODAyMTFfSUZUWVBFX0FQX1ZMQU4gfHxcXG5uZXQvbWFjODAyMTEvZHJpdmVyLW9wcy5jLTY2LVxcdFxcdCAgICAoc2RhdGEtXFx1MDAzZXZpZi50eXBlID09IE5MODAyMTFfSUZUWVBFX01PTklUT1IgXFx1MDAyNlxcdTAwMjZcXG4tLVxcbm5ldC9tYWM4MDIxMS9kcml2ZXItb3BzLmg9MjU9Z2V0X2Jzc19zZGF0YShzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSlcXG5uZXQvbWFjODAyMTEvZHJpdmVyLW9wcy5oLTI2LXtcXG5uZXQvbWFjODAyMTEvZHJpdmVyLW9wcy5oOjI3OlxcdGlmIChzZGF0YSBcXHUwMDI2XFx1MDAyNiBzZGF0YS1cXHUwMDNldmlmLnR5cGUgPT0gTkw4MDIxMV9JRlRZUEVfQVBfVkxBTilcXG5uZXQvbWFjODAyMTEvZHJpdmVyLW9wcy5oLTI4LVxcdFxcdHNkYXRhID0gY29udGFpbmVyX29mKHNkYXRhLVxcdTAwM2Vic3MsIHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEsXFxuLS1cXG5uZXQvbWFjODAyMTEvaGUuYz0xMz1pZWVlODAyMTFfdXBkYXRlX2Zyb21faGVfNmdoel9jYXBhKGNvbnN0IHN0cnVjdCBpZWVlODAyMTFfaGVfNmdoel9jYXBhICpoZV82Z2h6X2NhcGEsXFxuLS1cXG5uZXQvbWFjODAyMTEvaGUuYy0xOS1cXHRpZiAoc3RhLVxcdTAwM2VzZGF0YS1cXHUwMDNldmlmLnR5cGUgPT0gTkw4MDIxMV9JRlRZUEVfQVAgfHxcXG5uZXQvbWFjODAyMTEvaGUuYzoyMDpcXHQgICAgc3RhLVxcdTAwM2VzZGF0YS1cXHUwMDNldmlmLnR5cGUgPT0gTkw4MDIxMV9JRlRZUEVfQVBfVkxBTikge1xcbm5ldC9tYWM4MDIxMS9oZS5jLTIxLVxcdFxcdHN3aXRjaCAobGUxNl9nZXRfYml0cyhoZV82Z2h6X2NhcGEtXFx1MDAzZWNhcGEsXFxuLS1cXG5uZXQvbWFjODAyMTEvaHQuYz0xMzg9Ym9vbCBpZWVlODAyMTFfaHRfY2FwX2llX3RvX3N0YV9odF9jYXAoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsXFxuLS1cXG5uZXQvbWFjODAyMTEvaHQuYy0yNTYtXFx0aWYgKHN0YS1cXHUwMDNlc2RhdGEtXFx1MDAzZXZpZi50eXBlID09IE5MODAyMTFfSUZUWVBFX0FQIHx8XFxubmV0L21hYzgwMjExL2h0LmM6MjU3OlxcdCAgICBzdGEtXFx1MDAzZXNkYXRhLVxcdTAwM2V2aWYudHlwZSA9PSBOTDgwMjExX0lGVFlQRV9BUF9WTEFOIHx8XFxubmV0L21hYzgwMjExL2h0LmMtMjU4LVxcdCAgICBzdGEtXFx1MDAzZXNkYXRhLVxcdTAwM2V2aWYudHlwZSA9PSBOTDgwMjExX0lGVFlQRV9OQU4gfHxcXG4tLVxcbm5ldC9tYWM4MDIxMS9pZWVlODAyMTFfaS5oPTE5NTQ9dm9pZCBpZWVlODAyMTFfdmlmX3VuYmxvY2tfcXVldWVzX2NzYShzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSk7XFxuLS1cXG5uZXQvbWFjODAyMTEvaWVlZTgwMjExX2kuaC0xOTU3LSAqIGludGVyZmFjZS4gSXQgcmV0dXJucyAtMSBpZiB0aGF0IG51bWJlciBpcyBub3QgdHJhY2tlZCwgdGhhdCBpcyBmb3IgbmV0ZGV2c1xcbm5ldC9tYWM4MDIxMS9pZWVlODAyMTFfaS5oOjE5NTg6ICogbm90IGluIEFQIG9yIEFQX1ZMQU4gbW9kZSBvciB3aGVuIHVzaW5nIDRhZGRyLlxcbm5ldC9tYWM4MDIxMS9pZWVlODAyMTFfaS5oLTE5NTktICovXFxuLS1cXG5uZXQvbWFjODAyMTEvaWVlZTgwMjExX2kuaD0xOTYxPWllZWU4MDIxMV92aWZfZ2V0X251bV9tY2FzdF9pZihzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSlcXG4tLVxcbm5ldC9tYWM4MDIxMS9pZWVlODAyMTFfaS5oLTE5NjQtXFx0XFx0cmV0dXJuIGF0b21pY19yZWFkKFxcdTAwMjZzZGF0YS1cXHUwMDNldS5hcC5udW1fbWNhc3Rfc3RhKTtcXG5uZXQvbWFjODAyMTEvaWVlZTgwMjExX2kuaDoxOTY1OlxcdGlmIChzZGF0YS1cXHUwMDNldmlmLnR5cGUgPT0gTkw4MDIxMV9JRlRZUEVfQVBfVkxBTiBcXHUwMDI2XFx1MDAyNiAhc2RhdGEtXFx1MDAzZXUudmxhbi5zdGEpXFxubmV0L21hYzgwMjExL2llZWU4MDIxMV9pLmgtMTk2Ni1cXHRcXHRyZXR1cm4gYXRvbWljX3JlYWQoXFx1MDAyNnNkYXRhLVxcdTAwM2V1LnZsYW4ubnVtX21jYXN0X3N0YSk7XFxuLS1cXG5uZXQvbWFjODAyMTEvaWVlZTgwMjExX2kuaD0yMzA2PWllZWU4MDIxMV9tZ210X2JhKHN0cnVjdCBza19idWZmICpza2IsIGNvbnN0IHU4ICpkYSxcXG4tLVxcbm5ldC9tYWM4MDIxMS9pZWVlODAyMTFfaS5oLTIzMTQtXFx0aWYgKHNkYXRhLVxcdTAwM2V2aWYudHlwZSA9PSBOTDgwMjExX0lGVFlQRV9BUCB8fFxcbm5ldC9tYWM4MDIxMS9pZWVlODAyMTFfaS5oOjIzMTU6XFx0ICAgIHNkYXRhLVxcdTAwM2V2aWYudHlwZSA9PSBOTDgwMjExX0lGVFlQRV9BUF9WTEFOIHx8XFxubmV0L21hYzgwMjExL2llZWU4MDIxMV9pLmgtMjMxNi1cXHQgICAgc2RhdGEtXFx1MDAzZXZpZi50eXBlID09IE5MODAyMTFfSUZUWVBFX01FU0hfUE9JTlQpXFxuLS1cXG5uZXQvbWFjODAyMTEvaWZhY2UuYz0zMjk9c3RhdGljIGlubGluZSBpbnQgaWRlbnRpY2FsX21hY19hZGRyX2FsbG93ZWQoaW50IHR5cGUxLCBpbnQgdHlwZTIpXFxuLS1cXG5uZXQvbWFjODAyMTEvaWZhY2UuYy0zMzQtXFx0XFx0dHlwZTIgPT0gTkw4MDIxMV9JRlRZUEVfUDJQX0RFVklDRSB8fFxcbm5ldC9tYWM4MDIxMS9pZmFjZS5jOjMzNTpcXHRcXHQodHlwZTEgPT0gTkw4MDIxMV9JRlRZUEVfQVAgXFx1MDAyNlxcdTAwMjYgdHlwZTIgPT0gTkw4MDIxMV9JRlRZUEVfQVBfVkxBTikgfHxcXG5uZXQvbWFjODAyMTEvaWZhY2UuYzozMzY6XFx0XFx0KHR5cGUxID09IE5MODAyMTFfSUZUWVBFX0FQX1ZMQU4gXFx1MDAyNlxcdTAwMjZcXG5uZXQvbWFjODAyMTEvaWZhY2UuYy0zMzctXFx0XFx0XFx0KHR5cGUyID09IE5MODAyMTFfSUZUWVBFX0FQIHx8XFxubmV0L21hYzgwMjExL2lmYWNlLmM6MzM4OlxcdFxcdFxcdCB0eXBlMiA9PSBOTDgwMjExX0lGVFlQRV9BUF9WTEFOKSk7XFxubmV0L21hYzgwMjExL2lmYWNlLmMtMzM5LX1cXG4tLVxcbm5ldC9tYWM4MDIxMS9pZmFjZS5jPTM0MT1zdGF0aWMgaW50IGllZWU4MDIxMV9jaGVja19jb25jdXJyZW50X2lmYWNlKHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLFxcbi0tXFxubmV0L21hYzgwMjExL2lmYWNlLmMtNDE0LVxcdFxcdFxcdCAqL1xcbm5ldC9tYWM4MDIxMS9pZmFjZS5jOjQxNTpcXHRcXHRcXHRpZiAoaWZ0eXBlID09IE5MODAyMTFfSUZUWVBFX0FQX1ZMQU4gXFx1MDAyNlxcdTAwMjZcXG5uZXQvbWFjODAyMTEvaWZhY2UuYy00MTYtXFx0XFx0XFx0ICAgIG5zZGF0YS1cXHUwMDNldmlmLnR5cGUgPT0gTkw4MDIxMV9JRlRZUEVfQVApXFxuLS1cXG5uZXQvbWFjODAyMTEvaWZhY2UuYz00Nzk9c3RhdGljIHZvaWQgaWVlZTgwMjExX2RvX3N0b3Aoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsIGJvb2wgZ29pbmdfZG93bilcXG4tLVxcbm5ldC9tYWM4MDIxMS9pZmFjZS5jLTUxMy1cXHRcXHRicmVhaztcXG5uZXQvbWFjODAyMTEvaWZhY2UuYzo1MTQ6XFx0Y2FzZSBOTDgwMjExX0lGVFlQRV9BUF9WTEFOOlxcbm5ldC9tYWM4MDIxMS9pZmFjZS5jLTUxNS1cXHRcXHRpZWVlODAyMTFfYXB2bGFuX2xpbmtfY2xlYXIoc2RhdGEpO1xcbi0tXFxubmV0L21hYzgwMjExL2lmYWNlLmMtNTMwLVxcdCAqXFxubmV0L21hYzgwMjExL2lmYWNlLmM6NTMxOlxcdCAqIEZvciBBUF9WTEFOcywgTkFOIGFuZCBOQU5fREFUQSBzdGF0aW9ucyBtYXkgZXhpc3Qgc2luY2UgdGhlcmUnc1xcbm5ldC9tYWM4MDIxMS9pZmFjZS5jLTUzMi1cXHQgKiBub3RoaW5nIGVsc2UgdGhhdCB3b3VsZCBoYXZlIHJlbW92ZWQgdGhlbSwgYnV0IGluIG90aGVyIG1vZGVzIHRoZXJlXFxuLS1cXG5uZXQvbWFjODAyMTEvaWZhY2UuYy01MzUtXFx0Zmx1c2hlZCA9IHN0YV9pbmZvX2ZsdXNoKHNkYXRhLCAtMSk7XFxubmV0L21hYzgwMjExL2lmYWNlLmM6NTM2OlxcdFdBUk5fT05fT05DRShzZGF0YS1cXHUwMDNldmlmLnR5cGUgIT0gTkw4MDIxMV9JRlRZUEVfQVBfVkxBTiBcXHUwMDI2XFx1MDAyNlxcbm5ldC9tYWM4MDIxMS9pZmFjZS5jLTUzNy1cXHRcXHQgICAgIHNkYXRhLVxcdTAwM2V2aWYudHlwZSAhPSBOTDgwMjExX0lGVFlQRV9OQU4gXFx1MDAyNlxcdTAwMjZcXG4tLVxcbm5ldC9tYWM4MDIxMS9pZmFjZS5jLTU4OC1cXHRcXHRXQVJOX09OKCFsaXN0X2VtcHR5KFxcdTAwMjZzZGF0YS1cXHUwMDNldS5hcC52bGFucykpO1xcbm5ldC9tYWM4MDIxMS9pZmFjZS5jOjU4OTpcXHR9IGVsc2UgaWYgKHNkYXRhLVxcdTAwM2V2aWYudHlwZSA9PSBOTDgwMjExX0lGVFlQRV9BUF9WTEFOKSB7XFxubmV0L21hYzgwMjExL2lmYWNlLmMtNTkwLVxcdFxcdC8qIHJlbW92ZSBhbGwgcGFja2V0cyBpbiBwYXJlbnQgYmNfYnVmIHBvaW50aW5nIHRvIHRoaXMgZGV2ICovXFxuLS1cXG5uZXQvbWFjODAyMTEvaWZhY2UuYy02MTMtXFx0c3dpdGNoIChzZGF0YS1cXHUwMDNldmlmLnR5cGUpIHtcXG5uZXQvbWFjODAyMTEvaWZhY2UuYzo2MTQ6XFx0Y2FzZSBOTDgwMjExX0lGVFlQRV9BUF9WTEFOOlxcbm5ldC9tYWM4MDIxMS9pZmFjZS5jLTYxNS1cXHRcXHRsaXN0X2RlbChcXHUwMDI2c2RhdGEtXFx1MDAzZXUudmxhbi5saXN0KTtcXG4tLVxcbm5ldC9tYWM4MDIxMS9pZmFjZS5jLTcxMC1cXG5uZXQvbWFjODAyMTEvaWZhY2UuYzo3MTE6XFx0aWYgKHNkYXRhLVxcdTAwM2V2aWYudHlwZSA9PSBOTDgwMjExX0lGVFlQRV9BUF9WTEFOKVxcbm5ldC9tYWM4MDIxMS9pZmFjZS5jLTcxMi1cXHRcXHRpZWVlODAyMTFfdHhxX3JlbW92ZV92bGFuKGxvY2FsLCBzZGF0YSk7XFxuLS1cXG5uZXQvbWFjODAyMTEvaWZhY2UuYy03NDMtXFx0c3dpdGNoIChzZGF0YS1cXHUwMDNldmlmLnR5cGUpIHtcXG5uZXQvbWFjODAyMTEvaWZhY2UuYzo3NDQ6XFx0Y2FzZSBOTDgwMjExX0lGVFlQRV9BUF9WTEFOOlxcbm5ldC9tYWM4MDIxMS9pZmFjZS5jLTc0NS1cXHRcXHRicmVhaztcXG4tLVxcbm5ldC9tYWM4MDIxMS9pZmFjZS5jPTk4OT1zdGF0aWMgaW50IGllZWU4MDIxMV9uZXRkZXZfZmlsbF9mb3J3YXJkX3BhdGgoc3RydWN0IG5ldF9kZXZpY2VfcGF0aF9jdHggKmN0eCxcXG4tLVxcbm5ldC9tYWM4MDIxMS9pZmFjZS5jLTEwMDQtXFx0c3dpdGNoIChzZGF0YS1cXHUwMDNldmlmLnR5cGUpIHtcXG5uZXQvbWFjODAyMTEvaWZhY2UuYzoxMDA1OlxcdGNhc2UgTkw4MDIxMV9JRlRZUEVfQVBfVkxBTjpcXG5uZXQvbWFjODAyMTEvaWZhY2UuYy0xMDA2LVxcdFxcdHN0YSA9IHJjdV9kZXJlZmVyZW5jZShzZGF0YS1cXHUwMDNldS52bGFuLnN0YSk7XFxuLS1cXG5uZXQvbWFjODAyMTEvaWZhY2UuYz0xMTEwPXN0YXRpYyB2b2lkIGllZWU4MDIxMV9zZXRfdmlmX2VuY2FwX29wcyhzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSlcXG4tLVxcbm5ldC9tYWM4MDIxMS9pZmFjZS5jLTExMTUtXFxubmV0L21hYzgwMjExL2lmYWNlLmM6MTExNjpcXHRpZiAoc2RhdGEtXFx1MDAzZXZpZi50eXBlID09IE5MODAyMTFfSUZUWVBFX0FQX1ZMQU4pIHtcXG5uZXQvbWFjODAyMTEvaWZhY2UuYy0xMTE3LVxcdFxcdGlmICghc2RhdGEtXFx1MDAzZWJzcylcXG4tLVxcbm5ldC9tYWM4MDIxMS9pZmFjZS5jPTExMzY9c3RhdGljIHZvaWQgaWVlZTgwMjExX3JlY2FsY19zZGF0YV9vZmZsb2FkKHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhKVxcbi0tXFxubmV0L21hYzgwMjExL2lmYWNlLmMtMTE0Ni1cXHRsaXN0X2Zvcl9lYWNoX2VudHJ5KHZzZGF0YSwgXFx1MDAyNmxvY2FsLVxcdTAwM2VpbnRlcmZhY2VzLCBsaXN0KSB7XFxubmV0L21hYzgwMjExL2lmYWNlLmM6MTE0NzpcXHRcXHRpZiAodnNkYXRhLVxcdTAwM2V2aWYudHlwZSAhPSBOTDgwMjExX0lGVFlQRV9BUF9WTEFOIHx8XFxubmV0L21hYzgwMjExL2lmYWNlLmMtMTE0OC1cXHRcXHQgICAgdnNkYXRhLVxcdTAwM2Vic3MgIT0gXFx1MDAyNnNkYXRhLVxcdTAwM2V1LmFwKVxcbi0tXFxubmV0L21hYzgwMjExL2lmYWNlLmM9MTM2NT1pbnQgaWVlZTgwMjExX2RvX29wZW4oc3RydWN0IHdpcmVsZXNzX2RldiAqd2RldiwgYm9vbCBjb21pbmdfdXApXFxuLS1cXG5uZXQvbWFjODAyMTEvaWZhY2UuYy0xMzc2LVxcdHN3aXRjaCAoc2RhdGEtXFx1MDAzZXZpZi50eXBlKSB7XFxubmV0L21hYzgwMjExL2lmYWNlLmM6MTM3NzpcXHRjYXNlIE5MODAyMTFfSUZUWVBFX0FQX1ZMQU46IHtcXG5uZXQvbWFjODAyMTEvaWZhY2UuYy0xMzc4LVxcdFxcdHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKm1hc3RlcjtcXG4tLVxcbm5ldC9tYWM4MDIxMS9pZmFjZS5jLTE0MzgtXFx0XFx0XFx0LypcXG5uZXQvbWFjODAyMTEvaWZhY2UuYzoxNDM5OlxcdFxcdFxcdCAqIG5vIG5lZWQgdG8gd29ycnkgYWJvdXQgQVBfVkxBTi9OQU5fREFUQSBjbGVhbnVwIHNpbmNlXFxubmV0L21hYzgwMjExL2lmYWNlLmMtMTQ0MC1cXHRcXHRcXHQgKiBpbiB0aGF0IGNhc2Ugd2UgY2FuJ3QgaGF2ZSBvcGVuX2NvdW50ID09IDBcXG4tLVxcbm5ldC9tYWM4MDIxMS9pZmFjZS5jLTE0NjUtXFx0c3dpdGNoIChzZGF0YS1cXHUwMDNldmlmLnR5cGUpIHtcXG5uZXQvbWFjODAyMTEvaWZhY2UuYzoxNDY2OlxcdGNhc2UgTkw4MDIxMV9JRlRZUEVfQVBfVkxBTjpcXG5uZXQvbWFjODAyMTEvaWZhY2UuYy0xNDY3LVxcdFxcdC8qIG5vIG5lZWQgdG8gdGVsbCBkcml2ZXIsIGJ1dCBzZXQgY2FycmllciBhbmQgY2hhbmN0eCAqL1xcbi0tXFxubmV0L21hYzgwMjExL2lmYWNlLmMtMTYwOS1cXHRcXHRSQ1VfSU5JVF9QT0lOVEVSKHNkYXRhLVxcdTAwM2V1Lm5hbl9kYXRhLm5taSwgTlVMTCk7XFxubmV0L21hYzgwMjExL2lmYWNlLmM6MTYxMDpcXHRpZiAoc2RhdGEtXFx1MDAzZXZpZi50eXBlID09IE5MODAyMTFfSUZUWVBFX0FQX1ZMQU4pXFxubmV0L21hYzgwMjExL2lmYWNlLmMtMTYxMS1cXHRcXHRsaXN0X2RlbChcXHUwMDI2c2RhdGEtXFx1MDAzZXUudmxhbi5saXN0KTtcXG4tLVxcbm5ldC9tYWM4MDIxMS9pZmFjZS5jPTE4Nzg9c3RhdGljIHZvaWQgaWVlZTgwMjExX3NldHVwX3NkYXRhKHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLFxcbi0tXFxubmV0L21hYzgwMjExL2lmYWNlLmMtMTk1OS1cXHRcXHRicmVhaztcXG5uZXQvbWFjODAyMTEvaWZhY2UuYzoxOTYwOlxcdGNhc2UgTkw4MDIxMV9JRlRZUEVfQVBfVkxBTjpcXG5uZXQvbWFjODAyMTEvaWZhY2UuYy0xOTYxLVxcdGNhc2UgTkw4MDIxMV9JRlRZUEVfUDJQX0RFVklDRTpcXG4tLVxcbm5ldC9tYWM4MDIxMS9pZmFjZS5jPTIwOTk9c3RhdGljIHZvaWQgaWVlZTgwMjExX2Fzc2lnbl9wZXJtX2FkZHIoc3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwsXFxuLS1cXG5uZXQvbWFjODAyMTEvaWZhY2UuYy0yMTIwLVxcdFxcdGJyZWFrO1xcbm5ldC9tYWM4MDIxMS9pZmFjZS5jOjIxMjE6XFx0Y2FzZSBOTDgwMjExX0lGVFlQRV9BUF9WTEFOOlxcbm5ldC9tYWM4MDIxMS9pZmFjZS5jLTIxMjItXFx0XFx0LyogbWF0Y2ggdXAgd2l0aCBhbiBBUCBpbnRlcmZhY2UgKi9cXG4tLVxcbm5ldC9tYWM4MDIxMS9pZmFjZS5jPTIyMjg9aW50IGllZWU4MDIxMV9pZl9hZGQoc3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwsIGNvbnN0IGNoYXIgKm5hbWUsXFxuLS1cXG5uZXQvbWFjODAyMTEvaWZhY2UuYy0yMjgwLVxcbm5ldC9tYWM4MDIxMS9pZmFjZS5jOjIyODE6XFx0XFx0aWYgKHR5cGUgIT0gTkw4MDIxMV9JRlRZUEVfQVBfVkxBTiBcXHUwMDI2XFx1MDAyNlxcbm5ldC9tYWM4MDIxMS9pZmFjZS5jLTIyODItXFx0XFx0ICAgICh0eXBlICE9IE5MODAyMTFfSUZUWVBFX01PTklUT1IgfHxcXG4tLVxcbm5ldC9tYWM4MDIxMS9pZmFjZS5jPTI1MzU9dm9pZCBpZWVlODAyMTFfdmlmX2luY19udW1fbWNhc3Qoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEpXFxuLS1cXG5uZXQvbWFjODAyMTEvaWZhY2UuYy0yNTM4LVxcdFxcdGF0b21pY19pbmMoXFx1MDAyNnNkYXRhLVxcdTAwM2V1LmFwLm51bV9tY2FzdF9zdGEpO1xcbm5ldC9tYWM4MDIxMS9pZmFjZS5jOjI1Mzk6XFx0ZWxzZSBpZiAoc2RhdGEtXFx1MDAzZXZpZi50eXBlID09IE5MODAyMTFfSUZUWVBFX0FQX1ZMQU4pXFxubmV0L21hYzgwMjExL2lmYWNlLmMtMjU0MC1cXHRcXHRhdG9taWNfaW5jKFxcdTAwMjZzZGF0YS1cXHUwMDNldS52bGFuLm51bV9tY2FzdF9zdGEpO1xcbi0tXFxubmV0L21hYzgwMjExL2lmYWNlLmM9MjU0Mz12b2lkIGllZWU4MDIxMV92aWZfZGVjX251bV9tY2FzdChzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSlcXG4tLVxcbm5ldC9tYWM4MDIxMS9pZmFjZS5jLTI1NDYtXFx0XFx0YXRvbWljX2RlYyhcXHUwMDI2c2RhdGEtXFx1MDAzZXUuYXAubnVtX21jYXN0X3N0YSk7XFxubmV0L21hYzgwMjExL2lmYWNlLmM6MjU0NzpcXHRlbHNlIGlmIChzZGF0YS1cXHUwMDNldmlmLnR5cGUgPT0gTkw4MDIxMV9JRlRZUEVfQVBfVkxBTilcXG5uZXQvbWFjODAyMTEvaWZhY2UuYy0yNTQ4LVxcdFxcdGF0b21pY19kZWMoXFx1MDAyNnNkYXRhLVxcdTAwM2V1LnZsYW4ubnVtX21jYXN0X3N0YSk7XFxuLS1cXG5uZXQvbWFjODAyMTEva2V5LmM9MTIwPXN0YXRpYyBpbnQgaWVlZTgwMjExX2tleV9lbmFibGVfaHdfYWNjZWwoc3RydWN0IGllZWU4MDIxMV9rZXkgKmtleSlcXG4tLVxcbm5ldC9tYWM4MDIxMS9rZXkuYy0xNjUtXFxubmV0L21hYzgwMjExL2tleS5jOjE2NjpcXHRpZiAoc2RhdGEtXFx1MDAzZXZpZi50eXBlID09IE5MODAyMTFfSUZUWVBFX0FQX1ZMQU4pIHtcXG5uZXQvbWFjODAyMTEva2V5LmMtMTY3LVxcdFxcdC8qXFxuLS1cXG5uZXQvbWFjODAyMTEva2V5LmM9MzUwPXN0YXRpYyB2b2lkIF9faWVlZTgwMjExX3NldF9kZWZhdWx0X2tleShzdHJ1Y3QgaWVlZTgwMjExX2xpbmtfZGF0YSAqbGluayxcXG4tLVxcbm5ldC9tYWM4MDIxMS9rZXkuYy0zNjgtXFx0XFx0aWVlZTgwMjExX2NoZWNrX2Zhc3RfeG1pdF9pZmFjZShzZGF0YSk7XFxubmV0L21hYzgwMjExL2tleS5jOjM2OTpcXHRcXHRpZiAoc2RhdGEtXFx1MDAzZXZpZi50eXBlICE9IE5MODAyMTFfSUZUWVBFX0FQX1ZMQU4pXFxubmV0L21hYzgwMjExL2tleS5jLTM3MC1cXHRcXHRcXHRkcnZfc2V0X2RlZmF1bHRfdW5pY2FzdF9rZXkoc2RhdGEtXFx1MDAzZWxvY2FsLCBzZGF0YSwgaWR4KTtcXG4tLVxcbm5ldC9tYWM4MDIxMS9rZXkuYz0xMTM5PXZvaWQgaWVlZTgwMjExX2ZyZWVfa2V5cyhzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSxcXG4tLVxcbm5ldC9tYWM4MDIxMS9rZXkuYy0xMTY0LVxcbm5ldC9tYWM4MDIxMS9rZXkuYzoxMTY1OlxcdGlmIChzZGF0YS1cXHUwMDNldmlmLnR5cGUgPT0gTkw4MDIxMV9JRlRZUEVfQVBfVkxBTikge1xcbm5ldC9tYWM4MDIxMS9rZXkuYy0xMTY2LVxcdFxcdGlmIChzZGF0YS1cXHUwMDNlYnNzKSB7XFxuLS1cXG5uZXQvbWFjODAyMTEvbGluay5jPTk1PXZvaWQgaWVlZTgwMjExX2xpbmtfaW5pdChzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSxcXG4tLVxcbm5ldC9tYWM4MDIxMS9saW5rLmMtMTA0LVxcbm5ldC9tYWM4MDIxMS9saW5rLmM6MTA1OlxcdGlmIChzZGF0YS1cXHUwMDNldmlmLnR5cGUgPT0gTkw4MDIxMV9JRlRZUEVfQVBfVkxBTikge1xcbm5ldC9tYWM4MDIxMS9saW5rLmMtMTA2LVxcdFxcdHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKmFwX2JzcztcXG4tLVxcbm5ldC9tYWM4MDIxMS9saW5rLmMtMTQxLVxcdFxcdGNhc2UgTkw4MDIxMV9JRlRZUEVfQVA6XFxubmV0L21hYzgwMjExL2xpbmsuYzoxNDI6XFx0XFx0Y2FzZSBOTDgwMjExX0lGVFlQRV9BUF9WTEFOOlxcbm5ldC9tYWM4MDIxMS9saW5rLmMtMTQzLVxcdFxcdFxcdGV0aGVyX2FkZHJfY29weShsaW5rX2NvbmYtXFx1MDAzZWFkZHIsXFxuLS1cXG5uZXQvbWFjODAyMTEvbGluay5jPTI1MT1zdGF0aWMgdm9pZCBpZWVlODAyMTFfc2V0X3ZpZl9saW5rc19iaXRtYXBzKHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLFxcbi0tXFxubmV0L21hYzgwMjExL2xpbmsuYy0yNjgtXFx0Y2FzZSBOTDgwMjExX0lGVFlQRV9BUDpcXG5uZXQvbWFjODAyMTEvbGluay5jOjI2OTpcXHRjYXNlIE5MODAyMTFfSUZUWVBFX0FQX1ZMQU46XFxubmV0L21hYzgwMjExL2xpbmsuYy0yNzAtXFx0XFx0LyogaW4gYW4gQVAgYWxsIGxpbmtzIGFyZSBhbHdheXMgYWN0aXZlICovXFxuLS1cXG5uZXQvbWFjODAyMTEvbGluay5jPTI4Nz1zdGF0aWMgaW50IGllZWU4MDIxMV92aWZfdXBkYXRlX2xpbmtzKHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLFxcbi0tXFxubmV0L21hYzgwMjExL2xpbmsuYy0zNzctXFx0XFx0LyogdGVsbCB0aGUgZHJpdmVyICovXFxubmV0L21hYzgwMjExL2xpbmsuYzozNzg6XFx0XFx0aWYgKHNkYXRhLVxcdTAwM2V2aWYudHlwZSAhPSBOTDgwMjExX0lGVFlQRV9BUF9WTEFOKVxcbm5ldC9tYWM4MDIxMS9saW5rLmMtMzc5LVxcdFxcdFxcdHJldCA9IGRydl9jaGFuZ2VfdmlmX2xpbmtzKHNkYXRhLVxcdTAwM2Vsb2NhbCwgc2RhdGEsXFxuLS1cXG5uZXQvbWFjODAyMTEvbWFpbi5jPTk2PXN0YXRpYyB1MzIgaWVlZTgwMjExX2NhbGNfaHdfY29uZl9jaGFuKHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsLFxcbi0tXFxubmV0L21hYzgwMjExL21haW4uYy0xNzYtXFx0XFx0XFx0Y29udGludWU7XFxubmV0L21hYzgwMjExL21haW4uYzoxNzc6XFx0XFx0aWYgKHNkYXRhLVxcdTAwM2V2aWYudHlwZSA9PSBOTDgwMjExX0lGVFlQRV9BUF9WTEFOKVxcbm5ldC9tYWM4MDIxMS9tYWluLmMtMTc4LVxcdFxcdFxcdGNvbnRpbnVlO1xcbi0tXFxubmV0L21hYzgwMjExL21haW4uYz0zMzY9dm9pZCBpZWVlODAyMTFfYnNzX2luZm9fY2hhbmdlX25vdGlmeShzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSxcXG4tLVxcbm5ldC9tYWM4MDIxMS9tYWluLmMtMzQ0LVxcbm5ldC9tYWM4MDIxMS9tYWluLmM6MzQ1OlxcdGlmICghY2hhbmdlZCB8fCBzZGF0YS1cXHUwMDNldmlmLnR5cGUgPT0gTkw4MDIxMV9JRlRZUEVfQVBfVkxBTilcXG5uZXQvbWFjODAyMTEvbWFpbi5jLTM0Ni1cXHRcXHRyZXR1cm47XFxuLS1cXG5uZXQvbWFjODAyMTEvbWFpbi5jPTM4OT12b2lkIGllZWU4MDIxMV92aWZfY2ZnX2NoYW5nZV9ub3RpZnkoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsXFxuLS1cXG5uZXQvbWFjODAyMTEvbWFpbi5jLTM5NS1cXG5uZXQvbWFjODAyMTEvbWFpbi5jOjM5NjpcXHRpZiAoIWNoYW5nZWQgfHwgc2RhdGEtXFx1MDAzZXZpZi50eXBlID09IE5MODAyMTFfSUZUWVBFX0FQX1ZMQU4pXFxubmV0L21hYzgwMjExL21haW4uYy0zOTctXFx0XFx0cmV0dXJuO1xcbi0tXFxubmV0L21hYzgwMjExL21haW4uYz00MDI9dm9pZCBpZWVlODAyMTFfbGlua19pbmZvX2NoYW5nZV9ub3RpZnkoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsXFxuLS1cXG5uZXQvbWFjODAyMTEvbWFpbi5jLTQxMy1cXHRzd2l0Y2ggKHNkYXRhLVxcdTAwM2V2aWYudHlwZSkge1xcbm5ldC9tYWM4MDIxMS9tYWluLmM6NDE0OlxcdGNhc2UgTkw4MDIxMV9JRlRZUEVfQVBfVkxBTjpcXG5uZXQvbWFjODAyMTEvbWFpbi5jLTQxNS1cXHRcXHRyZXR1cm47XFxuLS1cXG5uZXQvbWFjODAyMTEvbWFpbi5jPTYzOD1zdGF0aWMgaW50IGllZWU4MDIxMV9pZmE2X2NoYW5nZWQoc3RydWN0IG5vdGlmaWVyX2Jsb2NrICpuYixcXG4tLVxcbm5ldC9tYWM4MDIxMS9tYWluLmMtNjU2LVxcdCAqIEZvciBub3cgb25seSBzdXBwb3J0IHN0YXRpb24gbW9kZS4gVGhpcyBpcyBtb3N0bHkgYmVjYXVzZVxcbm5ldC9tYWM4MDIxMS9tYWluLmM6NjU3OlxcdCAqIGRvaW5nIEFQIHdvdWxkIGhhdmUgdG8gaGFuZGxlIEFQX1ZMQU4gaW4gc29tZSB3YXkgLi4uXFxubmV0L21hYzgwMjExL21haW4uYy02NTgtXFx0ICovXFxuLS1cXG5uZXQvbWFjODAyMTEvbWFpbi5jPTY3MD1pZWVlODAyMTFfZGVmYXVsdF9tZ210X3N0eXBlc1tOVU1fTkw4MDIxMV9JRlRZUEVTXSA9IHtcXG4tLVxcbm5ldC9tYWM4MDIxMS9tYWluLmMtNzA1LVxcdH0sXFxubmV0L21hYzgwMjExL21haW4uYzo3MDY6XFx0W05MODAyMTFfSUZUWVBFX0FQX1ZMQU5dID0ge1xcbm5ldC9tYWM4MDIxMS9tYWluLmMtNzA3LVxcdFxcdC8qIGNvcHkgQVAgKi9cXG4tLVxcbm5ldC9tYWM4MDIxMS9tYWluLmM9MTEzOD1pbnQgaWVlZTgwMjExX3JlZ2lzdGVyX2h3KHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3KVxcbi0tXFxubmV0L21hYzgwMjExL21haW4uYy0xMzY2LVxcdC8qIGlmIGxvdy1sZXZlbCBkcml2ZXIgc3VwcG9ydHMgQVAsIHdlIGFsc28gc3VwcG9ydCBWTEFOLlxcbm5ldC9tYWM4MDIxMS9tYWluLmM6MTM2NzpcXHQgKiBkcml2ZXJzIGFkdmVydGlzaW5nIFNXX0NSWVBUT19DT05UUk9MIHNob3VsZCBlbmFibGUgQVBfVkxBTlxcbm5ldC9tYWM4MDIxMS9tYWluLmMtMTM2OC1cXHQgKiBiYXNlZCBvbiB0aGVpciBzdXBwb3J0IHRvIHRyYW5zbWl0IFNXIGVuY3J5cHRlZCBwYWNrZXRzLlxcbi0tXFxubmV0L21hYzgwMjExL21haW4uYy0xMzcxLVxcdCAgICAhaWVlZTgwMjExX2h3X2NoZWNrKFxcdTAwMjZsb2NhbC1cXHUwMDNlaHcsIFNXX0NSWVBUT19DT05UUk9MKSkge1xcbm5ldC9tYWM4MDIxMS9tYWluLmM6MTM3MjpcXHRcXHRody1cXHUwMDNld2lwaHktXFx1MDAzZWludGVyZmFjZV9tb2RlcyB8PSBCSVQoTkw4MDIxMV9JRlRZUEVfQVBfVkxBTik7XFxubmV0L21hYzgwMjExL21haW4uYzoxMzczOlxcdFxcdGh3LVxcdTAwM2V3aXBoeS1cXHUwMDNlc29mdHdhcmVfaWZ0eXBlcyB8PSBCSVQoTkw4MDIxMV9JRlRZUEVfQVBfVkxBTik7XFxubmV0L21hYzgwMjExL21haW4uYy0xMzc0LVxcdH1cXG4tLVxcbm5ldC9tYWM4MDIxMS9vZmZjaGFubmVsLmM9ODEyPWludCBpZWVlODAyMTFfbWdtdF90eChzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LFxcbi0tXFxubmV0L21hYzgwMjExL29mZmNoYW5uZWwuYy04NTAtXFx0Y2FzZSBOTDgwMjExX0lGVFlQRV9BUDpcXG5uZXQvbWFjODAyMTEvb2ZmY2hhbm5lbC5jOjg1MTpcXHRjYXNlIE5MODAyMTFfSUZUWVBFX0FQX1ZMQU46XFxubmV0L21hYzgwMjExL29mZmNoYW5uZWwuYy04NTItXFx0Y2FzZSBOTDgwMjExX0lGVFlQRV9QMlBfR086XFxuLS1cXG5uZXQvbWFjODAyMTEvcG0uYz0yMT1pbnQgX19pZWVlODAyMTFfc3VzcGVuZChzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodywgc3RydWN0IGNmZzgwMjExX3dvd2xhbiAqd293bGFuKVxcbi0tXFxubmV0L21hYzgwMjExL3BtLmMtMTUxLVxcdFxcdHN3aXRjaCAoc2RhdGEtXFx1MDAzZXZpZi50eXBlKSB7XFxubmV0L21hYzgwMjExL3BtLmM6MTUyOlxcdFxcdGNhc2UgTkw4MDIxMV9JRlRZUEVfQVBfVkxBTjpcXG5uZXQvbWFjODAyMTEvcG0uYy0xNTMtXFx0XFx0Y2FzZSBOTDgwMjExX0lGVFlQRV9NT05JVE9SOlxcbi0tXFxubmV0L21hYzgwMjExL3J4LmM9MTY4MT1zdGF0aWMgdm9pZCBzdGFfcHNfc3RhcnQoc3RydWN0IHN0YV9pbmZvICpzdGEpXFxuLS1cXG5uZXQvbWFjODAyMTEvcnguYy0xNjg4LVxcdGlmIChzdGEtXFx1MDAzZXNkYXRhLVxcdTAwM2V2aWYudHlwZSA9PSBOTDgwMjExX0lGVFlQRV9BUCB8fFxcbm5ldC9tYWM4MDIxMS9yeC5jOjE2ODk6XFx0ICAgIHN0YS1cXHUwMDNlc2RhdGEtXFx1MDAzZXZpZi50eXBlID09IE5MODAyMTFfSUZUWVBFX0FQX1ZMQU4pXFxubmV0L21hYzgwMjExL3J4LmMtMTY5MC1cXHRcXHRwcyA9IFxcdTAwMjZzZGF0YS1cXHUwMDNlYnNzLVxcdTAwM2VwcztcXG4tLVxcbm5ldC9tYWM4MDIxMS9yeC5jPTE4MDY9aWVlZTgwMjExX3J4X2hfdWFwc2RfYW5kX3BzcG9sbChzdHJ1Y3QgaWVlZTgwMjExX3J4X2RhdGEgKnJ4KVxcbi0tXFxubmV0L21hYzgwMjExL3J4LmMtMTgxNS1cXHRpZiAoc2RhdGEtXFx1MDAzZXZpZi50eXBlICE9IE5MODAyMTFfSUZUWVBFX0FQIFxcdTAwMjZcXHUwMDI2XFxubmV0L21hYzgwMjExL3J4LmM6MTgxNjpcXHQgICAgc2RhdGEtXFx1MDAzZXZpZi50eXBlICE9IE5MODAyMTFfSUZUWVBFX0FQX1ZMQU4pXFxubmV0L21hYzgwMjExL3J4LmMtMTgxNy1cXHRcXHRyZXR1cm4gUlhfQ09OVElOVUU7XFxuLS1cXG5uZXQvbWFjODAyMTEvcnguYz0xODU3PWllZWU4MDIxMV9yeF9oX3N0YV9wcm9jZXNzKHN0cnVjdCBpZWVlODAyMTFfcnhfZGF0YSAqcngpXFxuLS1cXG5uZXQvbWFjODAyMTEvcnguYy0xOTQxLVxcdCAgICAocngtXFx1MDAzZXNkYXRhLVxcdTAwM2V2aWYudHlwZSA9PSBOTDgwMjExX0lGVFlQRV9BUCB8fFxcbm5ldC9tYWM4MDIxMS9yeC5jOjE5NDI6XFx0ICAgICByeC1cXHUwMDNlc2RhdGEtXFx1MDAzZXZpZi50eXBlID09IE5MODAyMTFfSUZUWVBFX0FQX1ZMQU4pKSB7XFxubmV0L21hYzgwMjExL3J4LmMtMTk0My1cXHRcXHRpZiAodGVzdF9zdGFfZmxhZyhzdGEsIFdMQU5fU1RBX1BTX1NUQSkpIHtcXG4tLVxcbm5ldC9tYWM4MDIxMS9yeC5jLTE5NzAtXFx0XFx0ICAgIChyeC1cXHUwMDNlc2RhdGEtXFx1MDAzZXZpZi50eXBlID09IE5MODAyMTFfSUZUWVBFX0FQIHx8XFxubmV0L21hYzgwMjExL3J4LmM6MTk3MTpcXHRcXHQgICAgIChyeC1cXHUwMDNlc2RhdGEtXFx1MDAzZXZpZi50eXBlID09IE5MODAyMTFfSUZUWVBFX0FQX1ZMQU4gXFx1MDAyNlxcdTAwMjZcXG5uZXQvbWFjODAyMTEvcnguYy0xOTcyLVxcdFxcdCAgICAgICFyeC1cXHUwMDNlc2RhdGEtXFx1MDAzZXUudmxhbi5zdGEpKSkge1xcbi0tXFxubmV0L21hYzgwMjExL3J4LmM9MjY0Nj1fX2llZWU4MDIxMV9kYXRhX3RvXzgwMjMoc3RydWN0IGllZWU4MDIxMV9yeF9kYXRhICpyeCwgYm9vbCAqcG9ydF9jb250cm9sKVxcbi0tXFxubmV0L21hYzgwMjExL3J4LmMtMjY1NS1cXHRpZiAoaWVlZTgwMjExX2hhc19hNChoZHItXFx1MDAzZWZyYW1lX2NvbnRyb2wpIFxcdTAwMjZcXHUwMDI2XFxubmV0L21hYzgwMjExL3J4LmM6MjY1NjpcXHQgICAgc2RhdGEtXFx1MDAzZXZpZi50eXBlID09IE5MODAyMTFfSUZUWVBFX0FQX1ZMQU4gXFx1MDAyNlxcdTAwMjYgIXNkYXRhLVxcdTAwM2V1LnZsYW4uc3RhKVxcbm5ldC9tYWM4MDIxMS9yeC5jLTI2NTctXFx0XFx0cmV0dXJuIFJYX0RST1BfVV9VTkVYUEVDVEVEX1ZMQU5fNEFERFI7XFxuLS1cXG5uZXQvbWFjODAyMTEvcnguYy0yNjY3LVxcdGlmIChpc19tdWx0aWNhc3RfZXRoZXJfYWRkcihoZHItXFx1MDAzZWFkZHIxKSBcXHUwMDI2XFx1MDAyNlxcbm5ldC9tYWM4MDIxMS9yeC5jOjI2Njg6XFx0ICAgIHNkYXRhLVxcdTAwM2V2aWYudHlwZSA9PSBOTDgwMjExX0lGVFlQRV9BUF9WTEFOIFxcdTAwMjZcXHUwMDI2IHNkYXRhLVxcdTAwM2V1LnZsYW4uc3RhKVxcbm5ldC9tYWM4MDIxMS9yeC5jLTI2NjktXFx0XFx0cmV0dXJuIFJYX0RST1BfVV9VTkVYUEVDVEVEX1ZMQU5fTUNBU1Q7XFxuLS1cXG5uZXQvbWFjODAyMTEvcnguYz0yNzg5PWllZWU4MDIxMV9kZWxpdmVyX3NrYihzdHJ1Y3QgaWVlZTgwMjExX3J4X2RhdGEgKnJ4KVxcbi0tXFxubmV0L21hYzgwMjExL3J4LmMtMjgxMy1cXHRpZiAoKHNkYXRhLVxcdTAwM2V2aWYudHlwZSA9PSBOTDgwMjExX0lGVFlQRV9BUCB8fFxcbm5ldC9tYWM4MDIxMS9yeC5jOjI4MTQ6XFx0ICAgICBzZGF0YS1cXHUwMDNldmlmLnR5cGUgPT0gTkw4MDIxMV9JRlRZUEVfQVBfVkxBTikgXFx1MDAyNlxcdTAwMjZcXG5uZXQvbWFjODAyMTEvcnguYy0yODE1LVxcdCAgICAhKHNkYXRhLVxcdTAwM2VmbGFncyBcXHUwMDI2IElFRUU4MDIxMV9TREFUQV9ET05UX0JSSURHRV9QQUNLRVRTKSBcXHUwMDI2XFx1MDAyNlxcbm5ldC9tYWM4MDIxMS9yeC5jLTI4MTYtXFx0ICAgIGVoZHItXFx1MDAzZWhfcHJvdG8gIT0gcngtXFx1MDAzZXNkYXRhLVxcdTAwM2Vjb250cm9sX3BvcnRfcHJvdG9jb2wgXFx1MDAyNlxcdTAwMjZcXG5uZXQvbWFjODAyMTEvcnguYzoyODE3OlxcdCAgICAoc2RhdGEtXFx1MDAzZXZpZi50eXBlICE9IE5MODAyMTFfSUZUWVBFX0FQX1ZMQU4gfHwgIXNkYXRhLVxcdTAwM2V1LnZsYW4uc3RhKSkge1xcbm5ldC9tYWM4MDIxMS9yeC5jLTI4MTgtXFx0XFx0aWYgKGlzX211bHRpY2FzdF9ldGhlcl9hZGRyKGVoZHItXFx1MDAzZWhfZGVzdCkgXFx1MDAyNlxcdTAwMjZcXG4tLVxcbm5ldC9tYWM4MDIxMS9yeC5jPTMxNDA9X19pZWVlODAyMTFfcnhfaF9hbXNkdShzdHJ1Y3QgaWVlZTgwMjExX3J4X2RhdGEgKnJ4LCB1OCBkYXRhX29mZnNldClcXG4tLVxcbm5ldC9tYWM4MDIxMS9yeC5jLTMxNTQtXFx0XFx0Y2FzZSBOTDgwMjExX0lGVFlQRV9BUDpcXG5uZXQvbWFjODAyMTEvcnguYzozMTU1OlxcdFxcdGNhc2UgTkw4MDIxMV9JRlRZUEVfQVBfVkxBTjpcXG5uZXQvbWFjODAyMTEvcnguYy0zMTU2LVxcdFxcdFxcdGNoZWNrX2RhID0gTlVMTDtcXG4tLVxcbm5ldC9tYWM4MDIxMS9yeC5jPTMyMjY9aWVlZTgwMjExX3J4X2hfYW1zZHUoc3RydWN0IGllZWU4MDIxMV9yeF9kYXRhICpyeClcXG4tLVxcbm5ldC9tYWM4MDIxMS9yeC5jLTMyNDMtXFx0XFx0c3dpdGNoIChyeC1cXHUwMDNlc2RhdGEtXFx1MDAzZXZpZi50eXBlKSB7XFxubmV0L21hYzgwMjExL3J4LmM6MzI0NDpcXHRcXHRjYXNlIE5MODAyMTFfSUZUWVBFX0FQX1ZMQU46XFxubmV0L21hYzgwMjExL3J4LmMtMzI0NS1cXHRcXHRcXHRpZiAoIXJ4LVxcdTAwM2VzZGF0YS1cXHUwMDNldS52bGFuLnN0YSlcXG4tLVxcbm5ldC9tYWM4MDIxMS9yeC5jPTMyODM9aWVlZTgwMjExX3J4X2hfZGF0YShzdHJ1Y3QgaWVlZTgwMjExX3J4X2RhdGEgKnJ4KVxcbi0tXFxubmV0L21hYzgwMjExL3J4LmMtMzMzOC1cXG5uZXQvbWFjODAyMTEvcnguYzozMzM5OlxcdGlmIChyeC1cXHUwMDNlc2RhdGEtXFx1MDAzZXZpZi50eXBlID09IE5MODAyMTFfSUZUWVBFX0FQX1ZMQU4gXFx1MDAyNlxcdTAwMjZcXG5uZXQvbWFjODAyMTEvcnguYy0zMzQwLVxcdCAgICB1bmxpa2VseShwb3J0X2NvbnRyb2wpIFxcdTAwMjZcXHUwMDI2IHNkYXRhLVxcdTAwM2Vic3MpIHtcXG4tLVxcbm5ldC9tYWM4MDIxMS9yeC5jPTM2MjM9aWVlZTgwMjExX3J4X2hfYWN0aW9uKHN0cnVjdCBpZWVlODAyMTFfcnhfZGF0YSAqcngpXFxuLS1cXG5uZXQvbWFjODAyMTEvcnguYy0zNjQ5LVxcdFxcdCAgICBzZGF0YS1cXHUwMDNldmlmLnR5cGUgIT0gTkw4MDIxMV9JRlRZUEVfTUVTSF9QT0lOVCBcXHUwMDI2XFx1MDAyNlxcbm5ldC9tYWM4MDIxMS9yeC5jOjM2NTA6XFx0XFx0ICAgIHNkYXRhLVxcdTAwM2V2aWYudHlwZSAhPSBOTDgwMjExX0lGVFlQRV9BUF9WTEFOIFxcdTAwMjZcXHUwMDI2XFxubmV0L21hYzgwMjExL3J4LmMtMzY1MS1cXHRcXHQgICAgc2RhdGEtXFx1MDAzZXZpZi50eXBlICE9IE5MODAyMTFfSUZUWVBFX0FQIFxcdTAwMjZcXHUwMDI2XFxuLS1cXG5uZXQvbWFjODAyMTEvcnguYy0zNjY1LVxcdFxcdFxcdGlmIChzZGF0YS1cXHUwMDNldmlmLnR5cGUgIT0gTkw4MDIxMV9JRlRZUEVfQVAgXFx1MDAyNlxcdTAwMjZcXG5uZXQvbWFjODAyMTEvcnguYzozNjY2OlxcdFxcdFxcdCAgICBzZGF0YS1cXHUwMDNldmlmLnR5cGUgIT0gTkw4MDIxMV9JRlRZUEVfQVBfVkxBTilcXG5uZXQvbWFjODAyMTEvcnguYy0zNjY3LVxcdFxcdFxcdFxcdGdvdG8gaGFuZGxlZDtcXG4tLVxcbm5ldC9tYWM4MDIxMS9yeC5jLTM3MzktXFx0XFx0ICAgIHNkYXRhLVxcdTAwM2V2aWYudHlwZSAhPSBOTDgwMjExX0lGVFlQRV9NRVNIX1BPSU5UIFxcdTAwMjZcXHUwMDI2XFxubmV0L21hYzgwMjExL3J4LmM6Mzc0MDpcXHRcXHQgICAgc2RhdGEtXFx1MDAzZXZpZi50eXBlICE9IE5MODAyMTFfSUZUWVBFX0FQX1ZMQU4gXFx1MDAyNlxcdTAwMjZcXG5uZXQvbWFjODAyMTEvcnguYy0zNzQxLVxcdFxcdCAgICBzZGF0YS1cXHUwMDNldmlmLnR5cGUgIT0gTkw4MDIxMV9JRlRZUEVfQVAgXFx1MDAyNlxcdTAwMjZcXG4tLVxcbm5ldC9tYWM4MDIxMS9yeC5jLTM3NjctXFx0XFx0ICAgIHNkYXRhLVxcdTAwM2V2aWYudHlwZSAhPSBOTDgwMjExX0lGVFlQRV9NRVNIX1BPSU5UIFxcdTAwMjZcXHUwMDI2XFxubmV0L21hYzgwMjExL3J4LmM6Mzc2ODpcXHRcXHQgICAgc2RhdGEtXFx1MDAzZXZpZi50eXBlICE9IE5MODAyMTFfSUZUWVBFX0FQX1ZMQU4gXFx1MDAyNlxcdTAwMjZcXG5uZXQvbWFjODAyMTEvcnguYy0zNzY5LVxcdFxcdCAgICBzZGF0YS1cXHUwMDNldmlmLnR5cGUgIT0gTkw4MDIxMV9JRlRZUEVfQVAgXFx1MDAyNlxcdTAwMjZcXG4tLVxcbm5ldC9tYWM4MDIxMS9yeC5jPTQwNzE9aWVlZTgwMjExX3J4X2hfYWN0aW9uX3JldHVybihzdHJ1Y3QgaWVlZTgwMjExX3J4X2RhdGEgKnJ4KVxcbi0tXFxubmV0L21hYzgwMjExL3J4LmMtNDA5Mi1cXHQgICAgKHNkYXRhLVxcdTAwM2V2aWYudHlwZSA9PSBOTDgwMjExX0lGVFlQRV9BUCB8fFxcbm5ldC9tYWM4MDIxMS9yeC5jOjQwOTM6XFx0ICAgICBzZGF0YS1cXHUwMDNldmlmLnR5cGUgPT0gTkw4MDIxMV9JRlRZUEVfQVBfVkxBTikpXFxubmV0L21hYzgwMjExL3J4LmMtNDA5NC1cXHRcXHRyZXR1cm4gUlhfRFJPUF9VX01BTEZPUk1FRF9BQ1RJT047XFxuLS1cXG5uZXQvbWFjODAyMTEvcnguYz00NTA2PXN0YXRpYyBib29sIGllZWU4MDIxMV9hY2NlcHRfZnJhbWUoc3RydWN0IGllZWU4MDIxMV9yeF9kYXRhICpyeClcXG4tLVxcbm5ldC9tYWM4MDIxMS9yeC5jLTQ1ODItXFx0XFx0cmV0dXJuIGV0aGVyX2FkZHJfZXF1YWwoc2RhdGEtXFx1MDAzZXZpZi5hZGRyLCBoZHItXFx1MDAzZWFkZHIxKTtcXG5uZXQvbWFjODAyMTEvcnguYzo0NTgzOlxcdGNhc2UgTkw4MDIxMV9JRlRZUEVfQVBfVkxBTjpcXG5uZXQvbWFjODAyMTEvcnguYy00NTg0LVxcdGNhc2UgTkw4MDIxMV9JRlRZUEVfQVA6XFxuLS1cXG5uZXQvbWFjODAyMTEvcnguYz00NzEzPXZvaWQgaWVlZTgwMjExX2NoZWNrX2Zhc3Rfcngoc3RydWN0IHN0YV9pbmZvICpzdGEpXFxuLS1cXG5uZXQvbWFjODAyMTEvcnguYy00NzcyLVxcdFxcdGJyZWFrO1xcbm5ldC9tYWM4MDIxMS9yeC5jOjQ3NzM6XFx0Y2FzZSBOTDgwMjExX0lGVFlQRV9BUF9WTEFOOlxcbm5ldC9tYWM4MDIxMS9yeC5jLTQ3NzQtXFx0Y2FzZSBOTDgwMjExX0lGVFlQRV9BUDpcXG4tLVxcbm5ldC9tYWM4MDIxMS9yeC5jLTQ3ODUtXFx0XFx0XFx0IShzZGF0YS1cXHUwMDNlZmxhZ3MgXFx1MDAyNiBJRUVFODAyMTFfU0RBVEFfRE9OVF9CUklER0VfUEFDS0VUUykgXFx1MDAyNlxcdTAwMjZcXG5uZXQvbWFjODAyMTEvcnguYzo0Nzg2OlxcdFxcdFxcdChzZGF0YS1cXHUwMDNldmlmLnR5cGUgIT0gTkw4MDIxMV9JRlRZUEVfQVBfVkxBTiB8fFxcbm5ldC9tYWM4MDIxMS9yeC5jLTQ3ODctXFx0XFx0XFx0ICFzZGF0YS1cXHUwMDNldS52bGFuLnN0YSk7XFxubmV0L21hYzgwMjExL3J4LmMtNDc4OC1cXG5uZXQvbWFjODAyMTEvcnguYzo0Nzg5OlxcdFxcdGlmIChzZGF0YS1cXHUwMDNldmlmLnR5cGUgPT0gTkw4MDIxMV9JRlRZUEVfQVBfVkxBTiBcXHUwMDI2XFx1MDAyNlxcbm5ldC9tYWM4MDIxMS9yeC5jLTQ3OTAtXFx0XFx0ICAgIHNkYXRhLVxcdTAwM2V1LnZsYW4uc3RhKSB7XFxuLS1cXG5uZXQvbWFjODAyMTEvcnguYz01MzQ4PXN0YXRpYyB2b2lkIF9faWVlZTgwMjExX3J4X2hhbmRsZV9wYWNrZXQoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXFxuLS1cXG5uZXQvbWFjODAyMTEvcnguYy01NDkxLVxcdFxcdGlmIChzZGF0YS1cXHUwMDNldmlmLnR5cGUgPT0gTkw4MDIxMV9JRlRZUEVfTU9OSVRPUiB8fFxcbm5ldC9tYWM4MDIxMS9yeC5jOjU0OTI6XFx0XFx0ICAgIHNkYXRhLVxcdTAwM2V2aWYudHlwZSA9PSBOTDgwMjExX0lGVFlQRV9BUF9WTEFOKVxcbm5ldC9tYWM4MDIxMS9yeC5jLTU0OTMtXFx0XFx0XFx0Y29udGludWU7XFxuLS1cXG5uZXQvbWFjODAyMTEvc3RhX2luZm8uYz0xMzI9c3RhdGljIHZvaWQgX19jbGVhbnVwX3NpbmdsZV9zdGEoc3RydWN0IHN0YV9pbmZvICpzdGEpXFxuLS1cXG5uZXQvbWFjODAyMTEvc3RhX2luZm8uYy0xNDMtXFx0XFx0aWYgKHN0YS1cXHUwMDNlc2RhdGEtXFx1MDAzZXZpZi50eXBlID09IE5MODAyMTFfSUZUWVBFX0FQIHx8XFxubmV0L21hYzgwMjExL3N0YV9pbmZvLmM6MTQ0OlxcdFxcdCAgICBzdGEtXFx1MDAzZXNkYXRhLVxcdTAwM2V2aWYudHlwZSA9PSBOTDgwMjExX0lGVFlQRV9BUF9WTEFOKVxcbm5ldC9tYWM4MDIxMS9zdGFfaW5mby5jLTE0NS1cXHRcXHRcXHRwcyA9IFxcdTAwMjZzZGF0YS1cXHUwMDNlYnNzLVxcdTAwM2VwcztcXG4tLVxcbm5ldC9tYWM4MDIxMS9zdGFfaW5mby5jPTExMDA9c3RhdGljIHZvaWQgX19zdGFfaW5mb19yZWNhbGNfdGltKHN0cnVjdCBzdGFfaW5mbyAqc3RhLCBib29sIGlnbm9yZV9wZW5kaW5nKVxcbi0tXFxubmV0L21hYzgwMjExL3N0YV9pbmZvLmMtMTEwOS1cXHRpZiAoc3RhLVxcdTAwM2VzZGF0YS1cXHUwMDNldmlmLnR5cGUgPT0gTkw4MDIxMV9JRlRZUEVfQVAgfHxcXG5uZXQvbWFjODAyMTEvc3RhX2luZm8uYzoxMTEwOlxcdCAgICBzdGEtXFx1MDAzZXNkYXRhLVxcdTAwM2V2aWYudHlwZSA9PSBOTDgwMjExX0lGVFlQRV9BUF9WTEFOKSB7XFxubmV0L21hYzgwMjExL3N0YV9pbmZvLmMtMTExMS1cXHRcXHRpZiAoV0FSTl9PTl9PTkNFKCFzdGEtXFx1MDAzZXNkYXRhLVxcdTAwM2Vic3MpKVxcbi0tXFxubmV0L21hYzgwMjExL3N0YV9pbmZvLmM9MTMwMz1zdGF0aWMgaW50IF9fbXVzdF9jaGVjayBfX3N0YV9pbmZvX2Rlc3Ryb3lfcGFydDEoc3RydWN0IHN0YV9pbmZvICpzdGEpXFxuLS1cXG5uZXQvbWFjODAyMTEvc3RhX2luZm8uYy0xMzgwLVxcbm5ldC9tYWM4MDIxMS9zdGFfaW5mby5jOjEzODE6XFx0aWYgKHNkYXRhLVxcdTAwM2V2aWYudHlwZSA9PSBOTDgwMjExX0lGVFlQRV9BUF9WTEFOIFxcdTAwMjZcXHUwMDI2XFxubmV0L21hYzgwMjExL3N0YV9pbmZvLmMtMTM4Mi1cXHQgICAgcmN1X2FjY2Vzc19wb2ludGVyKHNkYXRhLVxcdTAwM2V1LnZsYW4uc3RhKSA9PSBzdGEpXFxuLS1cXG5uZXQvbWFjODAyMTEvc3RhX2luZm8uYz0xMzg4PXN0YXRpYyBpbnQgX3N0YV9pbmZvX21vdmVfc3RhdGUoc3RydWN0IHN0YV9pbmZvICpzdGEsXFxuLS1cXG5uZXQvbWFjODAyMTEvc3RhX2luZm8uYy0xNTA1LVxcdFxcdH1cXG5uZXQvbWFjODAyMTEvc3RhX2luZm8uYzoxNTA2OlxcdFxcdGlmIChzdGEtXFx1MDAzZXNkYXRhLVxcdTAwM2V2aWYudHlwZSA9PSBOTDgwMjExX0lGVFlQRV9BUF9WTEFOIHx8XFxubmV0L21hYzgwMjExL3N0YV9pbmZvLmMtMTUwNy1cXHRcXHQgICAgc3RhLVxcdTAwM2VzZGF0YS1cXHUwMDNldmlmLnR5cGUgPT0gTkw4MDIxMV9JRlRZUEVfQVApXFxuLS1cXG5uZXQvbWFjODAyMTEvc3RhX2luZm8uYz0xODIwPXZvaWQgaWVlZTgwMjExX3N0YV9wc19kZWxpdmVyX3dha2V1cChzdHJ1Y3Qgc3RhX2luZm8gKnN0YSlcXG4tLVxcbm5ldC9tYWM4MDIxMS9zdGFfaW5mby5jLTE4MjgtXFxubmV0L21hYzgwMjExL3N0YV9pbmZvLmM6MTgyOTpcXHRpZiAoc2RhdGEtXFx1MDAzZXZpZi50eXBlID09IE5MODAyMTFfSUZUWVBFX0FQX1ZMQU4pXFxubmV0L21hYzgwMjExL3N0YV9pbmZvLmMtMTgzMC1cXHRcXHRzZGF0YSA9IGNvbnRhaW5lcl9vZihzZGF0YS1cXHUwMDNlYnNzLCBzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhLFxcbi0tXFxubmV0L21hYzgwMjExL3N0YV9pbmZvLmM9MzY3OT1pZWVlODAyMTFfc3RhX3VzYWJsZV9idyhzdHJ1Y3QgbGlua19zdGFfaW5mbyAqbGlua19zdGEsXFxuLS1cXG5uZXQvbWFjODAyMTEvc3RhX2luZm8uYy0zNjg3LVxcbm5ldC9tYWM4MDIxMS9zdGFfaW5mby5jOjM2ODg6XFx0aWYgKHNkYXRhLVxcdTAwM2V2aWYudHlwZSA9PSBOTDgwMjExX0lGVFlQRV9BUF9WTEFOKSB7XFxubmV0L21hYzgwMjExL3N0YV9pbmZvLmMtMzY4OS1cXHRcXHRzZGF0YSA9IGdldF9ic3Nfc2RhdGEoc2RhdGEpO1xcbi0tXFxubmV0L21hYzgwMjExL3RraXAuYz0yMzk9aW50IGllZWU4MDIxMV90a2lwX2RlY3J5cHRfZGF0YShzdHJ1Y3QgYXJjNF9jdHggKmN0eCxcXG4tLVxcbm5ldC9tYWM4MDIxMS90a2lwLmMtMjk4LVxcbm5ldC9tYWM4MDIxMS90a2lwLmM6Mjk5OlxcdFxcdGlmIChzZGF0YS1cXHUwMDNldmlmLnR5cGUgPT0gTkw4MDIxMV9JRlRZUEVfQVBfVkxBTilcXG5uZXQvbWFjODAyMTEvdGtpcC5jLTMwMC1cXHRcXHRcXHRzZGF0YSA9IGNvbnRhaW5lcl9vZihrZXktXFx1MDAzZXNkYXRhLVxcdTAwM2Vic3MsXFxuLS1cXG5uZXQvbWFjODAyMTEvdHguYz0zNzg9aWVlZTgwMjExX3R4X2hfbXVsdGljYXN0X3BzX2J1ZihzdHJ1Y3QgaWVlZTgwMjExX3R4X2RhdGEgKnR4KVxcbi0tXFxubmV0L21hYzgwMjExL3R4LmMtMzkzLVxcdGlmICh0eC1cXHUwMDNlc2RhdGEtXFx1MDAzZXZpZi50eXBlID09IE5MODAyMTFfSUZUWVBFX0FQIHx8XFxubmV0L21hYzgwMjExL3R4LmM6Mzk0OlxcdCAgICB0eC1cXHUwMDNlc2RhdGEtXFx1MDAzZXZpZi50eXBlID09IE5MODAyMTFfSUZUWVBFX0FQX1ZMQU4pIHtcXG5uZXQvbWFjODAyMTEvdHguYy0zOTUtXFx0XFx0aWYgKCF0eC1cXHUwMDNlc2RhdGEtXFx1MDAzZWJzcylcXG4tLVxcbm5ldC9tYWM4MDIxMS90eC5jPTEyMDg9aWVlZTgwMjExX3R4X3ByZXBhcmUoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsXFxuLS1cXG5uZXQvbWFjODAyMTEvdHguYy0xMjM2LVxcdH0gZWxzZSB7XFxubmV0L21hYzgwMjExL3R4LmM6MTIzNzpcXHRcXHRpZiAoc2RhdGEtXFx1MDAzZXZpZi50eXBlID09IE5MODAyMTFfSUZUWVBFX0FQX1ZMQU4pIHtcXG5uZXQvbWFjODAyMTEvdHguYy0xMjM4LVxcdFxcdFxcdHR4LVxcdTAwM2VzdGEgPSByY3VfZGVyZWZlcmVuY2Uoc2RhdGEtXFx1MDAzZXUudmxhbi5zdGEpO1xcbi0tXFxubmV0L21hYzgwMjExL3R4LmM9MTQ4Mz12b2lkIGllZWU4MDIxMV90eHFfcmVtb3ZlX3ZsYW4oc3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwsXFxuLS1cXG5uZXQvbWFjODAyMTEvdHguYy0xNDkwLVxcbm5ldC9tYWM4MDIxMS90eC5jOjE0OTE6XFx0aWYgKFdBUk5fT04oc2RhdGEtXFx1MDAzZXZpZi50eXBlICE9IE5MODAyMTFfSUZUWVBFX0FQX1ZMQU4pKVxcbm5ldC9tYWM4MDIxMS90eC5jLTE0OTItXFx0XFx0cmV0dXJuO1xcbi0tXFxubmV0L21hYzgwMjExL3R4LmM9MTY1MT1zdGF0aWMgYm9vbCBpZWVlODAyMTFfcXVldWVfc2tiKHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsLFxcbi0tXFxubmV0L21hYzgwMjExL3R4LmMtMTY2MS1cXG5uZXQvbWFjODAyMTEvdHguYzoxNjYyOlxcdGlmIChzZGF0YS1cXHUwMDNldmlmLnR5cGUgPT0gTkw4MDIxMV9JRlRZUEVfQVBfVkxBTilcXG5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDZUMjE6MDc6MTQuMjkxOTQwMTg1WiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjIyMzY3OTA0MjA0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkludmVzdGlnYXRpbmcgQVBfVkxBTiBDb25maWd1cmF0aW9uKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBhbmQgdGhlIGludGVyZmFjZSB0eXBlIGJlaW5nIHVzZWQgaXMgQVBfVkxBTi4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzLCBcIkFscmlnaHQsIGRvZXMgdGhpcyBBUF9WTEFOIHR5cGUgaGF2ZSBhbnkgc3BlY2lmaWMgY29uZmlndXJhdGlvbiBvcHRpb25zIEkgbmVlZCB0byBiZSBhd2FyZSBvZj9cIiBNeSBtaW5kIGltbWVkaWF0ZWx5IGp1bXBzIHRvIGNoZWNraW5nIGZvciBhIGRlZGljYXRlZCBjb25maWcuIEhhbmcgb24sICpOTDgwMjExX0lGVFlQRV9BUF9WTEFOKi4uLnRoYXQncyBqdXN0IGFuIGVudW0gdmFsdWUsIGlzbid0IGl0PyBSaWdodC4gT2theSwgc28gSSBzaG91bGQgYmUgbG9va2luZyBhdCB0aGUgYWN0dWFsIGNvbmZpZ3VyYXRpb24gZmlsZXMuIEknbGwgbmVlZCB0byBkaWcgaW50byBgbmV0L3dpcmVsZXNzL0tjb25maWdgIG9yIG1heWJlIGV2ZW4gYG5ldC9tYWM4MDIxMS9LY29uZmlnYC5cblxuV2FpdCBhIG1pbnV0ZSwgQVBfVkxBTiBzdXBwb3J0IGlzIHByZXR0eSBzdGFuZGFyZCBpbiBtYWM4MDIxMSwgKmlmKiBBUCBzdXBwb3J0IGlzIGVuYWJsZWQgdG8gYmVnaW4gd2l0aCwgc28gSSBkb24ndCB0aGluayB0aGVyZSdzIGEgdW5pcXVlIHNldHRpbmcuIExldCBtZSBqdXN0IGNvbmZpcm0gdGhhdCBieSBnb2luZyBiYWNrIGFuZCBjaGVja2luZyBgbmV0L21hYzgwMjExL0tjb25maWdgLiBBaCwgbm9wZSwgbm90aGluZyBzcGVjaWZpYyBmb3IgQVBfVkxBTi4gSW50ZXJlc3RpbmcuIFNvLCBkb2VzICpBUCogaXRzZWxmIGhhdmUgYSBjb25maWd1cmF0aW9uIG9wdGlvbj8gTm8sIG1hYzgwMjExIHN1cHBvcnRzIEFQIG1vZGUgYnkgZGVmYXVsdC4gSG1tLlxuXG5SaWdodCwgc28gd2hhdCdzIHRoZSBjb3JlIGhlcmU/ICpNQUM4MDIxMSogaXMgdGhlIHByaW1hcnkgY29uZmlndXJhdGlvbiwgb2J2aW91c2x5LiBCdXQgYXJlIHRoZXJlIGFueSBvdGhlciBzZXR0aW5ncyB0aGF0IG1pZ2h0IGluZGlyZWN0bHkgYWZmZWN0IEFQX1ZMQU4gYmVoYXZpb3I/IEkgc2hvdWxkIHByb2JhYmx5IGJyb2FkZW4gbXkgc2VhcmNoLiBMZXQgbWUgc2NhbiBgbmV0L3dpcmVsZXNzL0tjb25maWdgIGFuZCBzZWUgaWYgYW55dGhpbmcgZWxzZSBqdW1wcyBvdXQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI1ODE5LCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTkxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA2VDIxOjA3OjM2LjY1OTg0NzI3OFoiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTI1MzkyMjUwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBDRkc4MDIxMVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvd2lyZWxlc3MvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvd2lyZWxlc3MvS2NvbmZpZz0xND1jb25maWcgV0VYVF9QUklWXFxuLS1cXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xNi1cXG5uZXQvd2lyZWxlc3MvS2NvbmZpZzoxNzpjb25maWcgQ0ZHODAyMTFcXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xOC1cXHR0cmlzdGF0ZSBcXFwiY2ZnODAyMTEgLSB3aXJlbGVzcyBjb25maWd1cmF0aW9uIEFQSVxcXCJcXG4tLVxcbm5ldC93aXJlbGVzcy9LY29uZmlnPTM4PWNvbmZpZyBOTDgwMjExX1RFU1RNT0RFXFxuLS1cXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy01MS1cXG5uZXQvd2lyZWxlc3MvS2NvbmZpZzo1Mjpjb25maWcgQ0ZHODAyMTFfREVWRUxPUEVSX1dBUk5JTkdTXFxubmV0L3dpcmVsZXNzL0tjb25maWctNTMtXFx0Ym9vbCBcXFwiZW5hYmxlIGRldmVsb3BlciB3YXJuaW5nc1xcXCJcXG4tLVxcbm5ldC93aXJlbGVzcy9LY29uZmlnLTY3LVxcbm5ldC93aXJlbGVzcy9LY29uZmlnOjY4OmNvbmZpZyBDRkc4MDIxMV9DRVJUSUZJQ0FUSU9OX09OVVNcXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy02OS1cXHRib29sIFxcXCJjZmc4MDIxMSBjZXJ0aWZpY2F0aW9uIG9udXNcXFwiXFxuLS1cXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy04OC1cXG5uZXQvd2lyZWxlc3MvS2NvbmZpZzo4OTpjb25maWcgQ0ZHODAyMTFfUkVRVUlSRV9TSUdORURfUkVHREJcXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy05MC1cXHRib29sIFxcXCJyZXF1aXJlIHJlZ2RiIHNpZ25hdHVyZVxcXCIgaWYgQ0ZHODAyMTFfQ0VSVElGSUNBVElPTl9PTlVTXFxuLS1cXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy05OC1cXG5uZXQvd2lyZWxlc3MvS2NvbmZpZzo5OTpjb25maWcgQ0ZHODAyMTFfVVNFX0tFUk5FTF9SRUdEQl9LRVlTXFxubmV0L3dpcmVsZXNzL0tjb25maWctMTAwLVxcdGJvb2wgXFxcImFsbG93IHJlZ2RiIGtleXMgc2hpcHBlZCB3aXRoIHRoZSBrZXJuZWxcXFwiIGlmIENGRzgwMjExX0NFUlRJRklDQVRJT05fT05VU1xcbi0tXFxubmV0L3dpcmVsZXNzL0tjb25maWctMTEwLVxcbm5ldC93aXJlbGVzcy9LY29uZmlnOjExMTpjb25maWcgQ0ZHODAyMTFfRVhUUkFfUkVHREJfS0VZRElSXFxubmV0L3dpcmVsZXNzL0tjb25maWctMTEyLVxcdHN0cmluZyBcXFwiYWRkaXRpb25hbCByZWdkYiBrZXkgZGlyZWN0b3J5XFxcIiBpZiBDRkc4MDIxMV9DRVJUSUZJQ0FUSU9OX09OVVNcXG4tLVxcbm5ldC93aXJlbGVzcy9LY29uZmlnLTEyMS1cXG5uZXQvd2lyZWxlc3MvS2NvbmZpZzoxMjI6Y29uZmlnIENGRzgwMjExX1JFR19DRUxMVUxBUl9ISU5UU1xcbm5ldC93aXJlbGVzcy9LY29uZmlnLTEyMy1cXHRib29sIFxcXCJjZmc4MDIxMSByZWd1bGF0b3J5IHN1cHBvcnQgZm9yIGNlbGx1bGFyIGJhc2Ugc3RhdGlvbiBoaW50c1xcXCJcXG4tLVxcbm5ldC93aXJlbGVzcy9LY29uZmlnLTEzNC1cXG5uZXQvd2lyZWxlc3MvS2NvbmZpZzoxMzU6Y29uZmlnIENGRzgwMjExX1JFR19SRUxBWF9OT19JUlxcbm5ldC93aXJlbGVzcy9LY29uZmlnLTEzNi1cXHRib29sIFxcXCJjZmc4MDIxMSBzdXBwb3J0IGZvciBOT19JUiByZWxheGF0aW9uXFxcIlxcbi0tXFxubmV0L3dpcmVsZXNzL0tjb25maWctMTU4LVxcbm5ldC93aXJlbGVzcy9LY29uZmlnOjE1OTpjb25maWcgQ0ZHODAyMTFfREVGQVVMVF9QU1xcbm5ldC93aXJlbGVzcy9LY29uZmlnLTE2MC1cXHRib29sIFxcXCJlbmFibGUgcG93ZXJzYXZlIGJ5IGRlZmF1bHRcXFwiXFxuLS1cXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xNjgtXFxubmV0L3dpcmVsZXNzL0tjb25maWc6MTY5OmNvbmZpZyBDRkc4MDIxMV9ERUJVR0ZTXFxubmV0L3dpcmVsZXNzL0tjb25maWctMTcwLVxcdGJvb2wgXFxcImNmZzgwMjExIERlYnVnRlMgZW50cmllc1xcXCJcXG4tLVxcbm5ldC93aXJlbGVzcy9LY29uZmlnLTE3Ni1cXG5uZXQvd2lyZWxlc3MvS2NvbmZpZzoxNzc6Y29uZmlnIENGRzgwMjExX0NSREFfU1VQUE9SVFxcbm5ldC93aXJlbGVzcy9LY29uZmlnLTE3OC1cXHRib29sIFxcXCJzdXBwb3J0IENSREFcXFwiIGlmIEVYUEVSVFxcbi0tXFxubmV0L3dpcmVsZXNzL0tjb25maWctMTg2LVxcbm5ldC93aXJlbGVzcy9LY29uZmlnOjE4Nzpjb25maWcgQ0ZHODAyMTFfV0VYVFxcbm5ldC93aXJlbGVzcy9LY29uZmlnLTE4OC1cXHRib29sIFxcXCJjZmc4MDIxMSB3aXJlbGVzcyBleHRlbnNpb25zIGNvbXBhdGliaWxpdHlcXFwiXFxuLS1cXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xOTMtXFxubmV0L3dpcmVsZXNzL0tjb25maWc6MTk0OmNvbmZpZyBDRkc4MDIxMV9LVU5JVF9URVNUXFxubmV0L3dpcmVsZXNzL0tjb25maWctMTk1LVxcdHRyaXN0YXRlIFxcXCJLVW5pdCB0ZXN0cyBmb3IgY2ZnODAyMTFcXFwiIGlmICFLVU5JVF9BTExfVEVTVFNcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDZUMjE6MDc6MzYuNzg1MjQ1MTg5WiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI5MjcyMjg4NzIzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFuYWx5c2lzIG9mIE1BQzgwMjExIGFuZCBQb3RlbnRpYWwgRnV6emluZyBUYXJnZXRzKipcblxuT2theSwgc28gSSdtIGRpdmluZyBpbnRvIHRoZSBgTUFDODAyMTFgIGNvbmZpZ3VyYXRpb24sIGFuZCBteSBpbml0aWFsIHRob3VnaHQgaXMgdGhhdCBgaWVlZTgwMjExX2RvX3N0b3BgIGlzIGEga2V5IGZvY3VzIHBvaW50LiBJdCBmZWVscyBsaWtlIHRoaXMgY291bGQgYmUgYW4gaW50ZXJlc3RpbmcgZnVuY3Rpb24gdG8gaW52ZXN0aWdhdGUuIEhvbGQgb24uLi4gaXQncyBhIHN0YXRpYyBmdW5jdGlvbi4gVGhhdCBpbml0aWFsbHkgdGhyb3dzIGEgd3JlbmNoIGluIHRoZSB3b3JrcywgYnV0IHRoZW4gSSByZW1lbWJlciBuZXRsaW5rIGNvbW1hbmRzIGNhbiBiZSB1c2VkIHRvIHN0b3AgdGhlIGludGVyZmFjZSwgcG90ZW50aWFsbHkgdHJpZ2dlcmluZyBpdC4gU28sIHRoYXQncyBwcm9taXNpbmc7IGl0ICpjb3VsZCogYmUgZnV6emVkLlxuXG5Ob3csIGxldCdzIGV4cGxvcmUgdGhpcyBmdXJ0aGVyLiBJcyB0aGVyZSBhbm90aGVyIGZ1bmN0aW9uIGRpcmVjdGx5IHJlbGF0ZWQ/IEFoLCB5ZXMsIGBpZWVlODAyMTFfc3RvcGAgY2FsbHMgYGllZWU4MDIxMV9kb19zdG9wYC4gQnV0LCBhZ2FpbiwgYmVjYXVzZSBgaWVlZTgwMjExX2RvX3N0b3BgIGlzIHN0YXRpYywgaW5saW5pbmcgaXMgYSBwb3NzaWJpbGl0eS4gSG93ZXZlciwgaXQgbG9va3MgZmFpcmx5IHN1YnN0YW50aWFsLiBHaXZlbiBpdHMgc2l6ZSwgaXQgcHJvYmFibHkgaXNuJ3QuXG5cbkkgbmVlZCB0byBtYWtlIHN1cmUgSSdtIG9uIHRoZSByaWdodCB0cmFjayBoZXJlLiBJcyBgaWVlZTgwMjExX2RvX3N0b3BgIHJlYWxseSB0aGUgYmVzdCBmb2N1cyBzeW1ib2w/IExldCdzIGNoZWNrIHdoZXJlIGl0J3MgY2FsbGVkLiBPa2F5LCBpdCdzIGNhbGxlZCBmcm9tIGBpZWVlODAyMTFfc3RvcGAsIGBpZWVlODAyMTFfcnVudGltZV9jaGFuZ2VfaWZ0eXBlYCwgYW5kIGBpZWVlODAyMTFfc2RhdGFfc3RvcGAuIEkgdGhpbmsgSSB3aWxsIGxpc3QgYGllZWU4MDIxMV9kb19zdG9wYCBhbmQgYGllZWU4MDIxMV9zdG9wYCBhcyBwb3RlbnRpYWwgZnV6emluZyB0YXJnZXRzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNzI4OCwiT3V0cHV0VG9rZW5zIjoxMzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNDMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDZUMjE6MDg6MDYuMDU3NTM4NzQyWiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTYwNDg0MDM4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJNQUM4MDIxMVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImllZWU4MDIxMV9kb19zdG9wXCIsXG4gICAgXCJpZWVlODAyMTFfc3RvcFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBpbnRlcmZhY2Ugc3RvcCBsb2dpYyBmb3IgQVBfVkxBTiBpbnRlcmZhY2VzIGluIG1hYzgwMjExLCBjaGFuZ2luZyBob3cgcGFja2V0cyBhcmUgZnJlZWQgdG8gYXZvaWQgZG9pbmcgc28gdW5kZXIgYSBzcGlubG9jay4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIG1hYzgwMjExIHN0YWNrIHRoYXQgaXMgcmVhY2hhYmxlIHZpYSBuZXRsaW5rIGNvbW1hbmRzIChlLmcuLCBzdG9wcGluZyBhbiBBUF9WTEFOIGludGVyZmFjZSkuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTUFDODAyMTFcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJpZWVlODAyMTFfZG9fc3RvcFwiLFxuICAgIFwiaWVlZTgwMjExX3N0b3BcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgaW50ZXJmYWNlIHN0b3AgbG9naWMgZm9yIEFQX1ZMQU4gaW50ZXJmYWNlcyBpbiBtYWM4MDIxMSwgY2hhbmdpbmcgaG93IHBhY2tldHMgYXJlIGZyZWVkIHRvIGF2b2lkIGRvaW5nIHNvIHVuZGVyIGEgc3BpbmxvY2suIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBtYWM4MDIxMSBzdGFjayB0aGF0IGlzIHJlYWNoYWJsZSB2aWEgbmV0bGluayBjb21tYW5kcyAoZS5nLiwgc3RvcHBpbmcgYW4gQVBfVkxBTiBpbnRlcmZhY2UpLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowcbhgk[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-06 20:49:27 +0000 UTC FinishedAt: 2026-07-06 21:08:07 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "torvalds", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux", "commit_hash": "8cdeaa50eae8dad34885515f62559ee83e7e8dda", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "MAC80211" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "torvalds", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux", "commit_hash": "8cdeaa50eae8dad34885515f62559ee83e7e8dda", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "MAC80211" ], "series_id": "83ef65ad-a367-473b-a77f-9f98ba2025f2" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "ieee80211_do_stop", "ieee80211_stop" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA2IDIxOjA2PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+Mm08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O01BQzgwMjExJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7aWVlZTgwMjExX2RvX3N0b3AmIzM0OywKICAgICYjMzQ7aWVlZTgwMjExX3N0b3AmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGludGVyZmFjZSBzdG9wIGxvZ2ljIGZvciBBUF9WTEFOIGludGVyZmFjZXMgaW4gbWFjODAyMTEsIGNoYW5naW5nIGhvdyBwYWNrZXRzIGFyZSBmcmVlZCB0byBhdm9pZCBkb2luZyBzbyB1bmRlciBhIHNwaW5sb2NrLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgbWFjODAyMTEgc3RhY2sgdGhhdCBpcyByZWFjaGFibGUgdmlhIG5ldGxpbmsgY29tbWFuZHMgKGUuZy4sIHN0b3BwaW5nIGFuIEFQX1ZMQU4gaW50ZXJmYWNlKS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNiAyMTowNjwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDU2MzQ3MjM1ZWRjZGEzYjZlODFiOWRjMjJlMGZmMzAzMmRlZTBjMzlcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgTW9uIEp1bCA2IDIxOjA2OjAzIDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL25ldC9tYWM4MDIxMS9pZmFjZS5jIGIvbmV0L21hYzgwMjExL2lmYWNlLmNcbmluZGV4IDA4NjI3MmMzZWMwOGMxLi40MzQ2MGE3MDVhNmJkMCAxMDA2NDRcbi0tLSBhL25ldC9tYWM4MDIxMS9pZmFjZS5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvbWFjODAyMTEvaWZhY2UuY1xuQEAgLTU4OCw2ICYjNDM7NTg4LDcgQEAgc3RhdGljIHZvaWQgaWVlZTgwMjExX2RvX3N0b3Aoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsIGJvb2wgZ29pbmdfZG9cbiBcdFx0V0FSTl9PTighbGlzdF9lbXB0eShcdTAwMjZzZGF0YS1cdTAwM2V1LmFwLnZsYW5zKSk7XG4gXHR9IGVsc2UgaWYgKHNkYXRhLVx1MDAzZXZpZi50eXBlID09IE5MODAyMTFfSUZUWVBFX0FQX1ZMQU4pIHtcbiBcdFx0LyogcmVtb3ZlIGFsbCBwYWNrZXRzIGluIHBhcmVudCBiY19idWYgcG9pbnRpbmcgdG8gdGhpcyBkZXYgKi9cbiYjNDM7XHRcdF9fc2tiX3F1ZXVlX2hlYWRfaW5pdChcdTAwMjZmcmVlcSk7XG4gXHRcdHBzID0gXHUwMDI2c2RhdGEtXHUwMDNlYnNzLVx1MDAzZXBzO1xuIFxuIFx0XHRzcGluX2xvY2tfaXJxc2F2ZShcdTAwMjZwcy1cdTAwM2ViY19idWYubG9jaywgZmxhZ3MpO1xuQEAgLTU5NSwxMCAmIzQzOzU5NiwxNSBAQCBzdGF0aWMgdm9pZCBpZWVlODAyMTFfZG9fc3RvcChzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSwgYm9vbCBnb2luZ19kb1xuIFx0XHRcdGlmIChza2ItXHUwMDNlZGV2ID09IHNkYXRhLVx1MDAzZWRldikge1xuIFx0XHRcdFx0X19za2JfdW5saW5rKHNrYiwgXHUwMDI2cHMtXHUwMDNlYmNfYnVmKTtcbiBcdFx0XHRcdGxvY2FsLVx1MDAzZXRvdGFsX3BzX2J1ZmZlcmVkLS07XG4tXHRcdFx0XHRpZWVlODAyMTFfZnJlZV90eHNrYihcdTAwMjZsb2NhbC1cdTAwM2Vodywgc2tiKTtcbiYjNDM7XHRcdFx0XHRfX3NrYl9xdWV1ZV90YWlsKFx1MDAyNmZyZWVxLCBza2IpO1xuIFx0XHRcdH1cbiBcdFx0fVxuIFx0XHRzcGluX3VubG9ja19pcnFyZXN0b3JlKFx1MDAyNnBzLVx1MDAzZWJjX2J1Zi5sb2NrLCBmbGFncyk7XG4mIzQzO1xuJiM0MztcdFx0c2tiX3F1ZXVlX3dhbGtfc2FmZShcdTAwMjZmcmVlcSwgc2tiLCB0bXApIHtcbiYjNDM7XHRcdFx0X19za2JfdW5saW5rKHNrYiwgXHUwMDI2ZnJlZXEpO1xuJiM0MztcdFx0XHRpZWVlODAyMTFfZnJlZV90eHNrYihcdTAwMjZsb2NhbC1cdTAwM2Vodywgc2tiKTtcbiYjNDM7XHRcdH1cbiBcdH1cbiBcbiBcdGlmIChnb2luZ19kb3duKVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA2IDIxOjA2PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjJtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O01BQzgwMjExJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7aWVlZTgwMjExX2RvX3N0b3AmIzM0OywKICAgICYjMzQ7aWVlZTgwMjExX3N0b3AmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGludGVyZmFjZSBzdG9wIGxvZ2ljIGZvciBBUF9WTEFOIGludGVyZmFjZXMgaW4gbWFjODAyMTEsIGNoYW5naW5nIGhvdyBwYWNrZXRzIGFyZSBmcmVlZCB0byBhdm9pZCBkb2luZyBzbyB1bmRlciBhIHNwaW5sb2NrLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgbWFjODAyMTEgc3RhY2sgdGhhdCBpcyByZWFjaGFibGUgdmlhIG5ldGxpbmsgY29tbWFuZHMgKGUuZy4sIHN0b3BwaW5nIGFuIEFQX1ZMQU4gaW50ZXJmYWNlKS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLApldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXQKICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LAogICBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgNTYzNDcyMzVlZGNkYTNiNmU4MWI5ZGMyMmUwZmYzMDMyZGVlMGMzOQpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBNb24gSnVsIDYgMjE6MDY6MDMgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9uZXQvbWFjODAyMTEvaWZhY2UuYyBiL25ldC9tYWM4MDIxMS9pZmFjZS5jCmluZGV4IDA4NjI3MmMzZWMwOGMxLi40MzQ2MGE3MDVhNmJkMCAxMDA2NDQKLS0tIGEvbmV0L21hYzgwMjExL2lmYWNlLmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L21hYzgwMjExL2lmYWNlLmMKQEAgLTU4OCw2ICYjNDM7NTg4LDcgQEAgc3RhdGljIHZvaWQgaWVlZTgwMjExX2RvX3N0b3Aoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsIGJvb2wgZ29pbmdfZG8KIAkJV0FSTl9PTighbGlzdF9lbXB0eSgmYW1wO3NkYXRhLSZndDt1LmFwLnZsYW5zKSk7CiAJfSBlbHNlIGlmIChzZGF0YS0mZ3Q7dmlmLnR5cGUgPT0gTkw4MDIxMV9JRlRZUEVfQVBfVkxBTikgewogCQkvKiByZW1vdmUgYWxsIHBhY2tldHMgaW4gcGFyZW50IGJjX2J1ZiBwb2ludGluZyB0byB0aGlzIGRldiAqLwomIzQzOwkJX19za2JfcXVldWVfaGVhZF9pbml0KCZhbXA7ZnJlZXEpOwogCQlwcyA9ICZhbXA7c2RhdGEtJmd0O2Jzcy0mZ3Q7cHM7CiAKIAkJc3Bpbl9sb2NrX2lycXNhdmUoJmFtcDtwcy0mZ3Q7YmNfYnVmLmxvY2ssIGZsYWdzKTsKQEAgLTU5NSwxMCAmIzQzOzU5NiwxNSBAQCBzdGF0aWMgdm9pZCBpZWVlODAyMTFfZG9fc3RvcChzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSwgYm9vbCBnb2luZ19kbwogCQkJaWYgKHNrYi0mZ3Q7ZGV2ID09IHNkYXRhLSZndDtkZXYpIHsKIAkJCQlfX3NrYl91bmxpbmsoc2tiLCAmYW1wO3BzLSZndDtiY19idWYpOwogCQkJCWxvY2FsLSZndDt0b3RhbF9wc19idWZmZXJlZC0tOwotCQkJCWllZWU4MDIxMV9mcmVlX3R4c2tiKCZhbXA7bG9jYWwtJmd0O2h3LCBza2IpOwomIzQzOwkJCQlfX3NrYl9xdWV1ZV90YWlsKCZhbXA7ZnJlZXEsIHNrYik7CiAJCQl9CiAJCX0KIAkJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmYW1wO3BzLSZndDtiY19idWYubG9jaywgZmxhZ3MpOwomIzQzOwomIzQzOwkJc2tiX3F1ZXVlX3dhbGtfc2FmZSgmYW1wO2ZyZWVxLCBza2IsIHRtcCkgewomIzQzOwkJCV9fc2tiX3VubGluayhza2IsICZhbXA7ZnJlZXEpOwomIzQzOwkJCWllZWU4MDIxMV9mcmVlX3R4c2tiKCZhbXA7bG9jYWwtJmd0O2h3LCBza2IpOwomIzQzOwkJfQogCX0KIAogCWlmIChnb2luZ19kb3duKQo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNiAyMTowNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMTQ5CgkJCQkJCQlvdXRwdXQ6IDQ0CgkJCQkJCQl0aG91Z2h0czogMTU1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIE1hYzgwMjExIFBhdGNoOiBBdm9pZGluZyBQb3RlbnRpYWwgQ29uY3VycmVuY3kgSXNzdWVzKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGZvciBgbmV0L21hYzgwMjExL2lmYWNlLmNgLiBJdCYjMzk7cyB0b3VjaGluZyB0aGUgYGllZWU4MDIxMV9kb19zdG9wYCBmdW5jdGlvbiwgd2hpY2ggaW1tZWRpYXRlbHkgdGVsbHMgbWUgdGhpcyBpcyByZWxhdGVkIHRvIGludGVyZmFjZSBzaHV0ZG93biBwcm9jZWR1cmVzLiBUaGUgbWVhdCBvZiB0aGUgY2hhbmdlIGlzIGhvdyBwYWNrZXRzIGFyZSBoYW5kbGVkIHdoZW4gYW4gQVBfVkxBTiBpbnRlcmZhY2UgaXMgc3RvcHBlZC4gU3BlY2lmaWNhbGx5LCBpdCBzZWVtcyBsaWtlIHRoZSBvbGQgY29kZSBpbiBgaWVlZTgwMjExX2RvX3N0b3BgIGhhZCBhIHByb2JsZW06IGl0IHdhcyBjYWxsaW5nIGBpZWVlODAyMTFfZnJlZV90eHNrYmAgd2hpbGUgaG9sZGluZyB0aGUgYHBzLSZndDtiY19idWYubG9ja2Agc3BpbmxvY2suIFRoYXQmIzM5O3MgYSByZWQgZmxhZy4gSSYjMzk7dmUgc2VlbiB0aGF0IGtpbmQgb2YgcGF0dGVybiBsZWFkIHRvIGFsbCBzb3J0cyBvZiBjb25jdXJyZW5jeSBoZWFkYWNoZXMsIG1heWJlIGV2ZW4gYSBzbGVlcC1pbi1hdG9taWMgc2l0dWF0aW9uIG9yIGEgY2xhc3NpYyBkZWFkbG9jaywgZGVwZW5kaW5nIG9uIHdoYXQgYGllZWU4MDIxMV9mcmVlX3R4c2tiYCBhY3R1YWxseSBkb2VzIGludGVybmFsbHkuCgpTbywgdGhlIHBhdGNoIGNsZXZlcmx5IHNpZGVzdGVwcyB0aGUgcG90ZW50aWFsIHByb2JsZW0gYnkgcXVldWluZyB0aGUgU0tCcyB0byBhIGxvY2FsIGBmcmVlcWAgaW5zdGVhZC4gVGhlIGJlYXV0eSBvZiB0aGlzIGlzIHRoYXQgaXQgYWxsb3dzIHRoZSBwcm9ibGVtYXRpYyBmcmVlaW5nIHByb2Nlc3MgdG8gaGFwcGVuICphZnRlciogdGhlIHNwaW5sb2NrIGlzIHJlbGVhc2VkLiBUaGlzIGlzIGEgc29saWQsIGZ1bmN0aW9uYWwgY2hhbmdlLiBJdCYjMzk7cyB0aGUgcmlnaHQgd2F5IHRvIGZpeCBzdWNoIHBvdGVudGlhbCBidWdzLgoKTm93LCBsZXQgbWUgZGlnIGRlZXBlciBhbmQgc2VlIHdoYXQgZWxzZSB0aGlzIGlzIGFmZmVjdGluZy4gSSYjMzk7bSBnb2luZyB0byBxdWlja2x5IHJldmlldyB0aGUgc3Vycm91bmRpbmcgY29udGV4dCBvZiBgaWVlZTgwMjExX2RvX3N0b3BgIHRvIGNvbmZpcm0gbXkgdW5kZXJzdGFuZGluZyBvZiB0aGUgaW50ZXJmYWNlJiMzOTtzIGJlaGF2aW9yIGR1cmluZyBhIHNodXRkb3duLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA2IDIxOjA2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2llZWU4MDIxMV9kb19zdG9wJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L21hYzgwMjExL2lmYWNlLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L21hYzgwMjExL2lmYWNlLmM9NDYxPXN0YXRpYyBpbnQgaWVlZTgwMjExX29wZW4oc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbi0tXG5uZXQvbWFjODAyMTEvaWZhY2UuYy00NzgtXG5uZXQvbWFjODAyMTEvaWZhY2UuYzo0Nzk6c3RhdGljIHZvaWQgaWVlZTgwMjExX2RvX3N0b3Aoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsIGJvb2wgZ29pbmdfZG93bilcbm5ldC9tYWM4MDIxMS9pZmFjZS5jLTQ4MC17XG4tLVxubmV0L21hYzgwMjExL2lmYWNlLmM9ODQ1PXN0YXRpYyBpbnQgaWVlZTgwMjExX3N0b3Aoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbi0tXG5uZXQvbWFjODAyMTEvaWZhY2UuYy04NjctXG5uZXQvbWFjODAyMTEvaWZhY2UuYzo4Njg6XHRpZWVlODAyMTFfZG9fc3RvcChzZGF0YSwgdHJ1ZSk7XG5uZXQvbWFjODAyMTEvaWZhY2UuYy04NjktXG4tLVxubmV0L21hYzgwMjExL2lmYWNlLmM9MTk4MD1zdGF0aWMgaW50IGllZWU4MDIxMV9ydW50aW1lX2NoYW5nZV9pZnR5cGUoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsXG4tLVxubmV0L21hYzgwMjExL2lmYWNlLmMtMjA0NC1cdC8qIGRvX3N0b3Agd2lsbCBzeW5jaHJvbml6ZV9yY3UoKSBmaXJzdCB0aGluZyAqL1xubmV0L21hYzgwMjExL2lmYWNlLmM6MjA0NTpcdGllZWU4MDIxMV9kb19zdG9wKHNkYXRhLCBmYWxzZSk7XG5uZXQvbWFjODAyMTEvaWZhY2UuYy0yMDQ2LVxuLS1cbm5ldC9tYWM4MDIxMS9pZmFjZS5jPTI0NDA9dm9pZCBpZWVlODAyMTFfc2RhdGFfc3RvcChzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSlcbi0tXG5uZXQvbWFjODAyMTEvaWZhY2UuYy0yNDQzLVx0XHRyZXR1cm47XG5uZXQvbWFjODAyMTEvaWZhY2UuYzoyNDQ0Olx0aWVlZTgwMjExX2RvX3N0b3Aoc2RhdGEsIHRydWUpO1xubmV0L21hYzgwMjExL2lmYWNlLmMtMjQ0NS19XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDYgMjE6MDY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzIzNQoJCQkJCQkJb3V0cHV0OiAzOAoJCQkJCQkJdGhvdWdodHM6IDk2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGFuYWx5c2lzIG9mIHRoZSBzaXR1YXRpb246CgoqKlJlYWNoaW5nIGEgU3RvcCoqCgpPa2F5LCBzbyBgaWVlZTgwMjExX2RvX3N0b3BgIGlzIHRoZSBmdW5jdGlvbiB3ZSYjMzk7cmUgY29uY2VybmVkIHdpdGguIEkga25vdyBpdCBnZXRzIGNhbGxlZCBpbiBhIGZldyBjcml0aWNhbCBwbGFjZXMgd2l0aGluIHRoZSBNQUM4MDIxMSBzdGFjazogYGllZWU4MDIxMV9zdG9wYCwgYGllZWU4MDIxMV9ydW50aW1lX2NoYW5nZV9pZnR5cGVgLCBhbmQgYGllZWU4MDIxMV9zZGF0YV9zdG9wYC4gR2l2ZW4gdGhvc2UgcG9pbnRzIG9mIG9yaWdpbiwgaXQmIzM5O3Mgc2FmZSB0byBzYXkgaXQmIzM5O3MgZGVmaW5pdGVseSByZWFjaGFibGUgY29kZSDigJMgbm8gd29ycmllcyBhYm91dCBkZWFkIGNvZGUgZWxpbWluYXRpb24gaGVyZS4gVGhlIHBhdGNoIGZvY3VzZXMgb24gaG93IHRoZSBBUF9WTEFOIGludGVyZmFjZSBiZWhhdmVzIHdoZW4gc3RvcHBpbmcuIE15IG5leHQgc3RlcCBpcyB0byBleGFtaW5lIHRoZSBLY29uZmlnIG9wdGlvbnMgZm9yIE1BQzgwMjExLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA2IDIxOjA2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBNQUM4MDIxMSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9tYWM4MDIxMS9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9tYWM4MDIxMS9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyOmNvbmZpZyBNQUM4MDIxMVxubmV0L21hYzgwMjExL0tjb25maWctMy1cdHRyaXN0YXRlIFwmIzM0O0dlbmVyaWMgSUVFRSA4MDIuMTEgTmV0d29ya2luZyBTdGFjayAobWFjODAyMTEpXCYjMzQ7XG4tLVxubmV0L21hYzgwMjExL0tjb25maWc9MTk9aWYgTUFDODAyMTEgIT0gblxubmV0L21hYzgwMjExL0tjb25maWctMjAtXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyMTpjb25maWcgTUFDODAyMTFfSEFTX1JDXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yMi1cdGJvb2xcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTIzLVxubmV0L21hYzgwMjExL0tjb25maWc6MjQ6Y29uZmlnIE1BQzgwMjExX1JDX01JTlNUUkVMXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yNS1cdGJvb2wgXCYjMzQ7TWluc3RyZWxcJiMzNDsgaWYgRVhQRVJUXG4tLVxubmV0L21hYzgwMjExL0tjb25maWc9MzE9Y2hvaWNlXG4tLVxubmV0L21hYzgwMjExL0tjb25maWctNDAtXG5uZXQvbWFjODAyMTEvS2NvbmZpZzo0MTpjb25maWcgTUFDODAyMTFfUkNfREVGQVVMVF9NSU5TVFJFTFxubmV0L21hYzgwMjExL0tjb25maWctNDItXHRib29sIFwmIzM0O01pbnN0cmVsXCYjMzQ7XG4tLVxubmV0L21hYzgwMjExL0tjb25maWc9NDg9ZW5kY2hvaWNlXG5uZXQvbWFjODAyMTEvS2NvbmZpZy00OS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjUwOmNvbmZpZyBNQUM4MDIxMV9SQ19ERUZBVUxUXG5uZXQvbWFjODAyMTEvS2NvbmZpZy01MS1cdHN0cmluZ1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnPTU3PWNvbW1lbnQgXCYjMzQ7U29tZSB3aXJlbGVzcyBkcml2ZXJzIHJlcXVpcmUgYSByYXRlIGNvbnRyb2wgYWxnb3JpdGhtXCYjMzQ7XG4tLVxubmV0L21hYzgwMjExL0tjb25maWctNTktXG5uZXQvbWFjODAyMTEvS2NvbmZpZzo2MDpjb25maWcgTUFDODAyMTFfS1VOSVRfVEVTVFxubmV0L21hYzgwMjExL0tjb25maWctNjEtXHR0cmlzdGF0ZSBcJiMzNDtLVW5pdCB0ZXN0cyBmb3IgbWFjODAyMTFcJiMzNDsgaWYgIUtVTklUX0FMTF9URVNUU1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnLTY5LVxubmV0L21hYzgwMjExL0tjb25maWc6NzA6Y29uZmlnIE1BQzgwMjExX01FU0hcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTcxLVx0Ym9vbCBcJiMzNDtFbmFibGUgbWFjODAyMTEgbWVzaCBuZXR3b3JraW5nIHN1cHBvcnRcJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy03OC1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjc5OmNvbmZpZyBNQUM4MDIxMV9MRURTXG5uZXQvbWFjODAyMTEvS2NvbmZpZy04MC1cdGJvb2wgXCYjMzQ7RW5hYmxlIExFRCB0cmlnZ2Vyc1wmIzM0O1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnLTg3LVxubmV0L21hYzgwMjExL0tjb25maWc6ODg6Y29uZmlnIE1BQzgwMjExX0RFQlVHRlNcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTg5LVx0Ym9vbCBcJiMzNDtFeHBvcnQgbWFjODAyMTEgaW50ZXJuYWxzIGluIERlYnVnRlNcJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy05Ni1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjk3OmNvbmZpZyBNQUM4MDIxMV9NRVNTQUdFX1RSQUNJTkdcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTk4LVx0Ym9vbCBcJiMzNDtUcmFjZSBhbGwgbWFjODAyMTEgZGVidWcgbWVzc2FnZXNcJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xMDktXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoxMTA6bWVudWNvbmZpZyBNQUM4MDIxMV9ERUJVR19NRU5VXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xMTEtXHRib29sIFwmIzM0O1NlbGVjdCBtYWM4MDIxMSBkZWJ1Z2dpbmcgZmVhdHVyZXNcJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xMTUtXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoxMTY6Y29uZmlnIE1BQzgwMjExX05PSU5MSU5FXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xMTctXHRib29sIFwmIzM0O0RvIG5vdCBpbmxpbmUgVFgvUlggaGFuZGxlcnNcJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xMzEtXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoxMzI6Y29uZmlnIE1BQzgwMjExX1ZFUkJPU0VfREVCVUdcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTEzMy1cdGJvb2wgXCYjMzQ7VmVyYm9zZSBkZWJ1Z2dpbmcgb3V0cHV0XCYjMzQ7XG4tLVxubmV0L21hYzgwMjExL0tjb25maWctMTQyLVxubmV0L21hYzgwMjExL0tjb25maWc6MTQzOmNvbmZpZyBNQUM4MDIxMV9NTE1FX0RFQlVHXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xNDQtXHRib29sIFwmIzM0O1ZlcmJvc2UgbWFuYWdlZCBNTE1FIG91dHB1dFwmIzM0O1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE1My1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjE1NDpjb25maWcgTUFDODAyMTFfU1RBX0RFQlVHXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xNTUtXHRib29sIFwmIzM0O1ZlcmJvc2Ugc3RhdGlvbiBkZWJ1Z2dpbmdcJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xNjItXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoxNjM6Y29uZmlnIE1BQzgwMjExX0hUX0RFQlVHXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xNjQtXHRib29sIFwmIzM0O1ZlcmJvc2UgSFQgZGVidWdnaW5nXCYjMzQ7XG4tLVxubmV0L21hYzgwMjExL0tjb25maWctMTc0LVxubmV0L21hYzgwMjExL0tjb25maWc6MTc1OmNvbmZpZyBNQUM4MDIxMV9PQ0JfREVCVUdcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE3Ni1cdGJvb2wgXCYjMzQ7VmVyYm9zZSBPQ0IgZGVidWdnaW5nXCYjMzQ7XG4tLVxubmV0L21hYzgwMjExL0tjb25maWctMTg1LVxubmV0L21hYzgwMjExL0tjb25maWc6MTg2OmNvbmZpZyBNQUM4MDIxMV9JQlNTX0RFQlVHXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xODctXHRib29sIFwmIzM0O1ZlcmJvc2UgSUJTUyBkZWJ1Z2dpbmdcJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xOTYtXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoxOTc6Y29uZmlnIE1BQzgwMjExX1BTX0RFQlVHXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xOTgtXHRib29sIFwmIzM0O1ZlcmJvc2UgcG93ZXJzYXZlIG1vZGUgZGVidWdnaW5nXCYjMzQ7XG4tLVxubmV0L21hYzgwMjExL0tjb25maWctMjA4LVxubmV0L21hYzgwMjExL0tjb25maWc6MjA5OmNvbmZpZyBNQUM4MDIxMV9NUExfREVCVUdcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTIxMC1cdGJvb2wgXCYjMzQ7VmVyYm9zZSBtZXNoIHBlZXIgbGluayBkZWJ1Z2dpbmdcJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yMjEtXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyMjI6Y29uZmlnIE1BQzgwMjExX01QQVRIX0RFQlVHXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yMjMtXHRib29sIFwmIzM0O1ZlcmJvc2UgbWVzaCBwYXRoIGRlYnVnZ2luZ1wmIzM0O1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnLTIzNC1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjIzNTpjb25maWcgTUFDODAyMTFfTUhXTVBfREVCVUdcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTIzNi1cdGJvb2wgXCYjMzQ7VmVyYm9zZSBtZXNoIEhXTVAgcm91dGluZyBkZWJ1Z2dpbmdcJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yNDctXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyNDg6Y29uZmlnIE1BQzgwMjExX01FU0hfU1lOQ19ERUJVR1xubmV0L21hYzgwMjExL0tjb25maWctMjQ5LVx0Ym9vbCBcJiMzNDtWZXJib3NlIG1lc2ggc3luY2hyb25pemF0aW9uIGRlYnVnZ2luZ1wmIzM0O1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnLTI1OC1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjI1OTpjb25maWcgTUFDODAyMTFfTUVTSF9DU0FfREVCVUdcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTI2MC1cdGJvb2wgXCYjMzQ7VmVyYm9zZSBtZXNoIGNoYW5uZWwgc3dpdGNoIGRlYnVnZ2luZ1wmIzM0O1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnLTI2OS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjI3MDpjb25maWcgTUFDODAyMTFfTUVTSF9QU19ERUJVR1xubmV0L21hYzgwMjExL0tjb25maWctMjcxLVx0Ym9vbCBcJiMzNDtWZXJib3NlIG1lc2ggcG93ZXJzYXZlIGRlYnVnZ2luZ1wmIzM0O1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnLTI4MC1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjI4MTpjb25maWcgTUFDODAyMTFfVERMU19ERUJVR1xubmV0L21hYzgwMjExL0tjb25maWctMjgyLVx0Ym9vbCBcJiMzNDtWZXJib3NlIFRETFMgZGVidWdnaW5nXCYjMzQ7XG4tLVxubmV0L21hYzgwMjExL0tjb25maWctMjkyLVxubmV0L21hYzgwMjExL0tjb25maWc6MjkzOmNvbmZpZyBNQUM4MDIxMV9ERUJVR19DT1VOVEVSU1xubmV0L21hYzgwMjExL0tjb25maWctMjk0LVx0Ym9vbCBcJiMzNDtFeHRyYSBzdGF0aXN0aWNzIGZvciBUWC9SWCBkZWJ1Z2dpbmdcJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0zMDctXG5uZXQvbWFjODAyMTEvS2NvbmZpZzozMDg6Y29uZmlnIE1BQzgwMjExX1NUQV9IQVNIX01BWF9TSVpFXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0zMDktXHRpbnQgXCYjMzQ7U3RhdGlvbiBoYXNoIHRhYmxlIG1heGltdW0gc2l6ZVwmIzM0OyBpZiBNQUM4MDIxMV9ERUJVR19NRU5VXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDYgMjE6MDY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTcxNQoJCQkJCQkJb3V0cHV0OiA0MgoJCQkJCQkJdGhvdWdodHM6IDE2MAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipGdXp6aW5nIHRoZSBgTUFDODAyMTFgIENvbmZpZyBhbmQgYGllZWU4MDIxMV9kb19zdG9wYCBGdW5jdGlvbioqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBgTUFDODAyMTFgIGNvbmZpZ3VyYXRpb24sIGFuZCB0aGUga2V5IGZ1bmN0aW9uIGhlcmUgc2VlbXMgdG8gYmUgYGllZWU4MDIxMV9kb19zdG9wYC4gTXkgaW1tZWRpYXRlIHRob3VnaHQ/IFRoaXMgaXMgKmRlZmluaXRlbHkqIHdvcnRoIGZ1enppbmcuIFRoZSBwb3RlbnRpYWwgZm9yIHVuY292ZXJpbmcgaW50ZXJlc3RpbmcgYnVncyBpbiB0aGlzIGFyZWEgaXMgaGlnaCwgZ2l2ZW4gaXRzIHJvbGUgaW4gc3RvcHBpbmcgdGhlIHdpcmVsZXNzIGludGVyZmFjZS4KClRoZSBwYXRjaCBtZW50aW9ucyBhIGJ1ZyByZWxhdGVkIHRvIGBpZWVlODAyMTFfZnJlZV90eHNrYmAgYmVpbmcgY2FsbGVkIHdoaWxlIGhvbGRpbmcgYSBzcGlubG9jay4gVGhhdCBpbW1lZGlhdGVseSBncmFicyBteSBhdHRlbnRpb24uIEFueXRpbWUgeW91IHNlZSBhIGZ1bmN0aW9uIGxpa2UgYGllZWU4MDIxMV9mcmVlX3R4c2tiYCBiZWluZyBjYWxsZWQgdW5kZXIgYSBzcGlubG9jaywgaXQmIzM5O3MgYSByZWQgZmxhZy4gVGhhdCBmdW5jdGlvbiBtaWdodCBzbGVlcCBvciBhY3F1aXJlIGEgbXV0ZXggaW50ZXJuYWxseSDigJMgd2hpY2ggaXMgYSBiaWcgbm8tbm8gd2hlbiB5b3UmIzM5O3JlIGFscmVhZHkgd2l0aGluIGEgc3BpbmxvY2smIzM5O3MgcHJvdGVjdGlvbi4gRXZlbiBpZiBpdCAqZG9lc24mIzM5O3QqIHNsZWVwLCBpdCYjMzk7cyBzdGlsbCBiYWQgcHJhY3RpY2UgdG8gcGVyZm9ybSBzdWNoIGFjdGlvbnMgd2l0aCBhIHNwaW5sb2NrIGhlbGQuCgpBaCwgcmlnaHQsIGBpZWVlODAyMTFfZnJlZV90eHNrYmAgaXMgcGFydCBvZiB0aGUgYG1hYzgwMjExYCBzdWJzeXN0ZW0uIE1ha2VzIHNlbnNlLiBPa2F5LCB0aW1lIHRvIGRpdmUgaW50byB0aGUgaW1wbGVtZW50YXRpb24gb2YgYGllZWU4MDIxMV9mcmVlX3R4c2tiYCBpdHNlbGYgYW5kIHNlZSBleGFjdGx5IHdoYXQmIzM5O3MgZ29pbmcgb24gaW4gdGhlcmUuIEdvdHRhIHVuZGVyc3RhbmQgdGhlIHJvb3QgY2F1c2Ugb2YgdGhpcyB2dWxuZXJhYmlsaXR5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA2IDIxOjA2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2llZWU4MDIxMV9mcmVlX3R4c2tiJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L21hYzgwMjExLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbWFjODAyMTEvaWZhY2UuYz00Nzk9c3RhdGljIHZvaWQgaWVlZTgwMjExX2RvX3N0b3Aoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsIGJvb2wgZ29pbmdfZG93bilcbi0tXG5uZXQvbWFjODAyMTEvaWZhY2UuYy02MDUtXHRcdFx0X19za2JfdW5saW5rKHNrYiwgXHUwMDI2ZnJlZXEpO1xubmV0L21hYzgwMjExL2lmYWNlLmM6NjA2Olx0XHRcdGllZWU4MDIxMV9mcmVlX3R4c2tiKFx1MDAyNmxvY2FsLVx1MDAzZWh3LCBza2IpO1xubmV0L21hYzgwMjExL2lmYWNlLmMtNjA3LVx0XHR9XG4tLVxubmV0L21hYzgwMjExL2lmYWNlLmMtNjg1LVx0Lypcbm5ldC9tYWM4MDIxMS9pZmFjZS5jOjY4NjpcdCAqIFNpbmNlIGllZWU4MDIxMV9mcmVlX3R4c2tiKCkgbWF5IGlzc3VlIF9fZGV2X3F1ZXVlX3htaXQoKVxubmV0L21hYzgwMjExL2lmYWNlLmMtNjg3LVx0ICogd2hpY2ggc2hvdWxkIGJlIGNhbGxlZCB3aXRoIGludGVycnVwdHMgZW5hYmxlZCwgcmVjbGFtYXRpb25cbi0tXG5uZXQvbWFjODAyMTEvaWZhY2UuYy03MDctXHRcdF9fc2tiX3VubGluayhza2IsIFx1MDAyNmZyZWVxKTtcbm5ldC9tYWM4MDIxMS9pZmFjZS5jOjcwODpcdFx0aWVlZTgwMjExX2ZyZWVfdHhza2IoXHUwMDI2bG9jYWwtXHUwMDNlaHcsIHNrYik7XG5uZXQvbWFjODAyMTEvaWZhY2UuYy03MDktXHR9XG4tLVxubmV0L21hYzgwMjExL21lc2hfcGF0aHRibC5jPTEwMDQ9dm9pZCBtZXNoX3BhdGhfZGlzY2FyZF9mcmFtZShzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSxcbi0tXG5uZXQvbWFjODAyMTEvbWVzaF9wYXRodGJsLmMtMTAwNi17XG5uZXQvbWFjODAyMTEvbWVzaF9wYXRodGJsLmM6MTAwNzpcdGllZWU4MDIxMV9mcmVlX3R4c2tiKFx1MDAyNnNkYXRhLVx1MDAzZWxvY2FsLVx1MDAzZWh3LCBza2IpO1xubmV0L21hYzgwMjExL21lc2hfcGF0aHRibC5jLTEwMDgtXHRzZGF0YS1cdTAwM2V1Lm1lc2gubXNoc3RhdHMuZHJvcHBlZF9mcmFtZXNfbm9fcm91dGUmIzQzOyYjNDM7O1xuLS1cbm5ldC9tYWM4MDIxMS9vZmZjaGFubmVsLmM9MTcxPXN0YXRpYyB2b2lkIGllZWU4MDIxMV9yb2Nfbm90aWZ5X2Rlc3Ryb3koc3RydWN0IGllZWU4MDIxMV9yb2Nfd29yayAqcm9jKVxuLS1cbm5ldC9tYWM4MDIxMS9vZmZjaGFubmVsLmMtMTc3LVx0XHRcdFx0XHRmYWxzZSwgR0ZQX0tFUk5FTCk7XG5uZXQvbWFjODAyMTEvb2ZmY2hhbm5lbC5jOjE3ODpcdFx0aWVlZTgwMjExX2ZyZWVfdHhza2IoXHUwMDI2cm9jLVx1MDAzZXNkYXRhLVx1MDAzZWxvY2FsLVx1MDAzZWh3LCByb2MtXHUwMDNlZnJhbWUpO1xubmV0L21hYzgwMjExL29mZmNoYW5uZWwuYy0xNzktXHR9XG4tLVxubmV0L21hYzgwMjExL29mZmNoYW5uZWwuYz04MTI9aW50IGllZWU4MDIxMV9tZ210X3R4KHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsXG4tLVxubmV0L21hYzgwMjExL29mZmNoYW5uZWwuYy0xMDQ5LVx0aWYgKHJldClcbm5ldC9tYWM4MDIxMS9vZmZjaGFubmVsLmM6MTA1MDpcdFx0aWVlZTgwMjExX2ZyZWVfdHhza2IoXHUwMDI2bG9jYWwtXHUwMDNlaHcsIHNrYik7XG5uZXQvbWFjODAyMTEvb2ZmY2hhbm5lbC5jLTEwNTEtIG91dF91bmxvY2s6XG4tLVxubmV0L21hYzgwMjExL3N0YV9pbmZvLmM9MTIwNz1zdGF0aWMgYm9vbCBzdGFfaW5mb19jbGVhbnVwX2V4cGlyZV9idWZmZXJlZF9hYyhzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbCxcbi0tXG5uZXQvbWFjODAyMTEvc3RhX2luZm8uYy0xMjM2LVx0XHRcdGJyZWFrO1xubmV0L21hYzgwMjExL3N0YV9pbmZvLmM6MTIzNzpcdFx0aWVlZTgwMjExX2ZyZWVfdHhza2IoXHUwMDI2bG9jYWwtXHUwMDNlaHcsIHNrYik7XG5uZXQvbWFjODAyMTEvc3RhX2luZm8uYy0xMjM4LVx0fVxuLS1cbm5ldC9tYWM4MDIxMS9zdGFfaW5mby5jLTEyNjUtXHRcdCAgICAgICBzdGEtXHUwMDNlc3RhLmFkZHIpO1xubmV0L21hYzgwMjExL3N0YV9pbmZvLmM6MTI2NjpcdFx0aWVlZTgwMjExX2ZyZWVfdHhza2IoXHUwMDI2bG9jYWwtXHUwMDNlaHcsIHNrYik7XG5uZXQvbWFjODAyMTEvc3RhX2luZm8uYy0xMjY3LVx0fVxuLS1cbm5ldC9tYWM4MDIxMS9zdGF0dXMuYz0yMj12b2lkIGllZWU4MDIxMV90eF9zdGF0dXNfaXJxc2FmZShzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcbi0tXG5uZXQvbWFjODAyMTEvc3RhdHVzLmMtMzUtXHQgICAgICAgKHNrYiA9IHNrYl9kZXF1ZXVlKFx1MDAyNmxvY2FsLVx1MDAzZXNrYl9xdWV1ZV91bnJlbGlhYmxlKSkpIHtcbm5ldC9tYWM4MDIxMS9zdGF0dXMuYzozNjpcdFx0aWVlZTgwMjExX2ZyZWVfdHhza2IoaHcsIHNrYik7XG5uZXQvbWFjODAyMTEvc3RhdHVzLmMtMzctXHRcdHRtcC0tO1xuLS1cbm5ldC9tYWM4MDIxMS9zdGF0dXMuYz00ND1zdGF0aWMgdm9pZCBpZWVlODAyMTFfaGFuZGxlX2ZpbHRlcmVkX2ZyYW1lKHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsLFxuLS1cbm5ldC9tYWM4MDIxMS9zdGF0dXMuYy01NC1cdFx0XHQgICBJRUVFODAyMTFfVFhfQ1RMX0hXXzgwMjExX0VOQ0FQKSkge1xubmV0L21hYzgwMjExL3N0YXR1cy5jOjU1Olx0XHRpZWVlODAyMTFfZnJlZV90eHNrYihcdTAwMjZsb2NhbC1cdTAwM2Vodywgc2tiKTtcbm5ldC9tYWM4MDIxMS9zdGF0dXMuYy01Ni1cdFx0cmV0dXJuO1xuLS1cbm5ldC9tYWM4MDIxMS9zdGF0dXMuYy0xNjgtXHRcdFx0ICAgISF0ZXN0X3N0YV9mbGFnKHN0YSwgV0xBTl9TVEFfUFNfU1RBKSwgamlmZmllcyk7XG5uZXQvbWFjODAyMTEvc3RhdHVzLmM6MTY5Olx0aWVlZTgwMjExX2ZyZWVfdHhza2IoXHUwMDI2bG9jYWwtXHUwMDNlaHcsIHNrYik7XG5uZXQvbWFjODAyMTEvc3RhdHVzLmMtMTcwLX1cbi0tXG5uZXQvbWFjODAyMTEvc3RhdHVzLmM9MTMxMj1FWFBPUlRfU1lNQk9MKGllZWU4MDIxMV9yZXBvcnRfbG93X2Fjayk7XG5uZXQvbWFjODAyMTEvc3RhdHVzLmMtMTMxMy1cbm5ldC9tYWM4MDIxMS9zdGF0dXMuYzoxMzE0OnZvaWQgaWVlZTgwMjExX2ZyZWVfdHhza2Ioc3RydWN0IGllZWU4MDIxMV9odyAqaHcsIHN0cnVjdCBza19idWZmICpza2IpXG5uZXQvbWFjODAyMTEvc3RhdHVzLmMtMTMxNS17XG4tLVxubmV0L21hYzgwMjExL3N0YXR1cy5jLTEzMjEtfVxubmV0L21hYzgwMjExL3N0YXR1cy5jOjEzMjI6RVhQT1JUX1NZTUJPTChpZWVlODAyMTFfZnJlZV90eHNrYik7XG5uZXQvbWFjODAyMTEvc3RhdHVzLmMtMTMyMy1cbm5ldC9tYWM4MDIxMS9zdGF0dXMuYz0xMzI0PXZvaWQgaWVlZTgwMjExX3B1cmdlX3R4X3F1ZXVlKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxuLS1cbm5ldC9tYWM4MDIxMS9zdGF0dXMuYy0xMzI5LVx0d2hpbGUgKChza2IgPSBfX3NrYl9kZXF1ZXVlKHNrYnMpKSlcbm5ldC9tYWM4MDIxMS9zdGF0dXMuYzoxMzMwOlx0XHRpZWVlODAyMTFfZnJlZV90eHNrYihodywgc2tiKTtcbm5ldC9tYWM4MDIxMS9zdGF0dXMuYy0xMzMxLX1cbi0tXG5uZXQvbWFjODAyMTEvdHguYz0zMzA9c3RhdGljIHZvaWQgcHVyZ2Vfb2xkX3BzX2J1ZmZlcnMoc3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwpXG4tLVxubmV0L21hYzgwMjExL3R4LmMtMzQ5LVx0XHRcdHB1cmdlZCYjNDM7JiM0Mzs7XG5uZXQvbWFjODAyMTEvdHguYzozNTA6XHRcdFx0aWVlZTgwMjExX2ZyZWVfdHhza2IoXHUwMDI2bG9jYWwtXHUwMDNlaHcsIHNrYik7XG5uZXQvbWFjODAyMTEvdHguYy0zNTEtXHRcdH1cbi0tXG5uZXQvbWFjODAyMTEvdHguYy0zNjYtXHRcdFx0XHRwdXJnZWQmIzQzOyYjNDM7O1xubmV0L21hYzgwMjExL3R4LmM6MzY3Olx0XHRcdFx0aWVlZTgwMjExX2ZyZWVfdHhza2IoXHUwMDI2bG9jYWwtXHUwMDNlaHcsIHNrYik7XG5uZXQvbWFjODAyMTEvdHguYy0zNjgtXHRcdFx0XHRicmVhaztcbi0tXG5uZXQvbWFjODAyMTEvdHguYz0zNzg9aWVlZTgwMjExX3R4X2hfbXVsdGljYXN0X3BzX2J1ZihzdHJ1Y3QgaWVlZTgwMjExX3R4X2RhdGEgKnR4KVxuLS1cbm5ldC9tYWM4MDIxMS90eC5jLTQzMi1cdFx0ICAgICAgIFwmIzM0O0JDIFRYIGJ1ZmZlciBmdWxsIC0gZHJvcHBpbmcgdGhlIG9sZGVzdCBmcmFtZVxcblwmIzM0Oyk7XG5uZXQvbWFjODAyMTEvdHguYzo0MzM6XHRcdGllZWU4MDIxMV9mcmVlX3R4c2tiKFx1MDAyNnR4LVx1MDAzZWxvY2FsLVx1MDAzZWh3LCBza2JfZGVxdWV1ZShcdTAwMjZwcy1cdTAwM2ViY19idWYpKTtcbm5ldC9tYWM4MDIxMS90eC5jLTQzNC1cdH0gZWxzZVxuLS1cbm5ldC9tYWM4MDIxMS90eC5jPTQ1OD1pZWVlODAyMTFfdHhfaF91bmljYXN0X3BzX2J1ZihzdHJ1Y3QgaWVlZTgwMjExX3R4X2RhdGEgKnR4KVxuLS1cbm5ldC9tYWM4MDIxMS90eC5jLTUwMy1cdFx0XHQgICAgICAgc3RhLVx1MDAzZXN0YS5hZGRyLCBhYyk7XG5uZXQvbWFjODAyMTEvdHguYzo1MDQ6XHRcdFx0aWVlZTgwMjExX2ZyZWVfdHhza2IoXHUwMDI2bG9jYWwtXHUwMDNlaHcsIG9sZCk7XG5uZXQvbWFjODAyMTEvdHguYy01MDUtXHRcdH0gZWxzZVxuLS1cbm5ldC9tYWM4MDIxMS90eC5jPTExMDg9c3RhdGljIGJvb2wgaWVlZTgwMjExX3R4X3ByZXBfYWdnKHN0cnVjdCBpZWVlODAyMTFfdHhfZGF0YSAqdHgsXG4tLVxubmV0L21hYzgwMjExL3R4LmMtMTE2OC1cdFx0aWYgKHB1cmdlX3NrYilcbm5ldC9tYWM4MDIxMS90eC5jOjExNjk6XHRcdFx0aWVlZTgwMjExX2ZyZWVfdHhza2IoXHUwMDI2dHgtXHUwMDNlbG9jYWwtXHUwMDNlaHcsIHB1cmdlX3NrYik7XG5uZXQvbWFjODAyMTEvdHguYy0xMTcwLVx0fVxuLS1cbm5ldC9tYWM4MDIxMS90eC5jPTEzODk9c3RhdGljIHZvaWQgY29kZWxfZHJvcF9mdW5jKHN0cnVjdCBza19idWZmICpza2IsXG4tLVxubmV0L21hYzgwMjExL3R4LmMtMTM5OS1cbm5ldC9tYWM4MDIxMS90eC5jOjE0MDA6XHRpZWVlODAyMTFfZnJlZV90eHNrYihodywgc2tiKTtcbm5ldC9tYWM4MDIxMS90eC5jLTE0MDEtfVxuLS1cbm5ldC9tYWM4MDIxMS90eC5jPTE0MzQ9c3RhdGljIHZvaWQgZnFfc2tiX2ZyZWVfZnVuYyhzdHJ1Y3QgZnEgKmZxLFxuLS1cbm5ldC9tYWM4MDIxMS90eC5jLTE0NDEtXHRsb2NhbCA9IGNvbnRhaW5lcl9vZihmcSwgc3RydWN0IGllZWU4MDIxMV9sb2NhbCwgZnEpO1xubmV0L21hYzgwMjExL3R4LmM6MTQ0MjpcdGllZWU4MDIxMV9mcmVlX3R4c2tiKFx1MDAyNmxvY2FsLVx1MDAzZWh3LCBza2IpO1xubmV0L21hYzgwMjExL3R4LmMtMTQ0My19XG4tLVxubmV0L21hYzgwMjExL3R4LmM9MTY3OT1zdGF0aWMgYm9vbCBpZWVlODAyMTFfdHhfZnJhZ3Moc3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwsXG4tLVxubmV0L21hYzgwMjExL3R4LmMtMTY5NS1cdFx0XHRfX3NrYl91bmxpbmsoc2tiLCBza2JzKTtcbm5ldC9tYWM4MDIxMS90eC5jOjE2OTY6XHRcdFx0aWVlZTgwMjExX2ZyZWVfdHhza2IoXHUwMDI2bG9jYWwtXHUwMDNlaHcsIHNrYik7XG5uZXQvbWFjODAyMTEvdHguYy0xNjk3LVx0XHRcdGNvbnRpbnVlO1xuLS1cbm5ldC9tYWM4MDIxMS90eC5jPTE4MTY9c3RhdGljIGludCBpbnZva2VfdHhfaGFuZGxlcnNfZWFybHkoc3RydWN0IGllZWU4MDIxMV90eF9kYXRhICp0eClcbi0tXG5uZXQvbWFjODAyMTEvdHguYy0xODM2LVx0XHRpZiAodHgtXHUwMDNlc2tiKVxubmV0L21hYzgwMjExL3R4LmM6MTgzNzpcdFx0XHRpZWVlODAyMTFfZnJlZV90eHNrYihcdTAwMjZ0eC1cdTAwM2Vsb2NhbC1cdTAwM2VodywgdHgtXHUwMDNlc2tiKTtcbm5ldC9tYWM4MDIxMS90eC5jLTE4MzgtXHRcdGVsc2Vcbi0tXG5uZXQvbWFjODAyMTEvdHguYz0xODUzPXN0YXRpYyBpbnQgaW52b2tlX3R4X2hhbmRsZXJzX2xhdGUoc3RydWN0IGllZWU4MDIxMV90eF9kYXRhICp0eClcbi0tXG5uZXQvbWFjODAyMTEvdHguYy0xODgwLVx0XHRpZiAodHgtXHUwMDNlc2tiKVxubmV0L21hYzgwMjExL3R4LmM6MTg4MTpcdFx0XHRpZWVlODAyMTFfZnJlZV90eHNrYihcdTAwMjZ0eC1cdTAwM2Vsb2NhbC1cdTAwM2VodywgdHgtXHUwMDNlc2tiKTtcbm5ldC9tYWM4MDIxMS90eC5jLTE4ODItXHRcdGVsc2Vcbi0tXG5uZXQvbWFjODAyMTEvdHguYz0xOTAyPWJvb2wgaWVlZTgwMjExX3R4X3ByZXBhcmVfc2tiKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxuLS1cbm5ldC9tYWM4MDIxMS90eC5jLTE5MzItXHRpZiAoV0FSTl9PTihza2IyICE9IHNrYiB8fCAhc2tiX3F1ZXVlX2VtcHR5KFx1MDAyNnR4LnNrYnMpKSkge1xubmV0L21hYzgwMjExL3R4LmM6MTkzMzpcdFx0aWVlZTgwMjExX2ZyZWVfdHhza2IoaHcsIHNrYjIpO1xubmV0L21hYzgwMjExL3R4LmMtMTkzNC1cdFx0aWVlZTgwMjExX3B1cmdlX3R4X3F1ZXVlKGh3LCBcdTAwMjZ0eC5za2JzKTtcbi0tXG5uZXQvbWFjODAyMTEvdHguYz0xOTQ1PXN0YXRpYyBib29sIGllZWU4MDIxMV90eChzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSxcbi0tXG5uZXQvbWFjODAyMTEvdHguYy0xOTYzLVx0aWYgKHVubGlrZWx5KHJlc19wcmVwYXJlID09IFRYX0RST1ApKSB7XG5uZXQvbWFjODAyMTEvdHguYzoxOTY0Olx0XHRpZWVlODAyMTFfZnJlZV90eHNrYihcdTAwMjZsb2NhbC1cdTAwM2Vodywgc2tiKTtcbm5ldC9tYWM4MDIxMS90eC5jLTE5NjUtXHRcdHR4LnNkYXRhLVx1MDAzZXR4X2hhbmRsZXJzX2Ryb3AmIzQzOyYjNDM7O1xuLS1cbm5ldC9tYWM4MDIxMS90eC5jPTIwMzQ9dm9pZCBpZWVlODAyMTFfeG1pdChzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSxcbi0tXG5uZXQvbWFjODAyMTEvdHguYy0yMDU2LVx0aWYgKGllZWU4MDIxMV9za2JfcmVzaXplKHNkYXRhLCBza2IsIGhlYWRyb29tLCBlbmNyeXB0KSkge1xubmV0L21hYzgwMjExL3R4LmM6MjA1NzpcdFx0aWVlZTgwMjExX2ZyZWVfdHhza2IoXHUwMDI2bG9jYWwtXHUwMDNlaHcsIHNrYik7XG5uZXQvbWFjODAyMTEvdHguYy0yMDU4LVx0XHRyZXR1cm47XG4tLVxubmV0L21hYzgwMjExL3R4LmM9MjYzMT1zdGF0aWMgc3RydWN0IHNrX2J1ZmYgKmllZWU4MDIxMV9idWlsZF9oZHIoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsXG4tLVxubmV0L21hYzgwMjExL3R4LmMtMjk4Mi1cdFx0aWYgKGllZWU4MDIxMV9za2JfcmVzaXplKHNkYXRhLCBza2IsIGhlYWRfbmVlZCwgRU5DUllQVF9EQVRBKSkge1xubmV0L21hYzgwMjExL3R4LmM6Mjk4MzpcdFx0XHRpZWVlODAyMTFfZnJlZV90eHNrYihcdTAwMjZsb2NhbC1cdTAwM2Vodywgc2tiKTtcbm5ldC9tYWM4MDIxMS90eC5jLTI5ODQtXHRcdFx0c2tiID0gTlVMTDtcbi0tXG5uZXQvbWFjODAyMTEvdHguYz0zODYwPXN0cnVjdCBza19idWZmICppZWVlODAyMTFfdHhfZGVxdWV1ZShzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcbi0tXG5uZXQvbWFjODAyMTEvdHguYy0zOTQwLVx0XHRcdEk4MDJfREVCVUdfSU5DKGxvY2FsLVx1MDAzZXR4X2hhbmRsZXJzX2Ryb3BfdW5hdXRoX3BvcnQpO1xubmV0L21hYzgwMjExL3R4LmM6Mzk0MTpcdFx0XHRpZWVlODAyMTFfZnJlZV90eHNrYihcdTAwMjZsb2NhbC1cdTAwM2Vodywgc2tiKTtcbm5ldC9tYWM4MDIxMS90eC5jLTM5NDItXHRcdFx0Z290byBiZWdpbjtcbi0tXG5uZXQvbWFjODAyMTEvdHguYy0zOTUyLVx0aWYgKHIgIT0gVFhfQ09OVElOVUUpIHtcbm5ldC9tYWM4MDIxMS90eC5jOjM5NTM6XHRcdGllZWU4MDIxMV9mcmVlX3R4c2tiKFx1MDAyNmxvY2FsLVx1MDAzZWh3LCBza2IpO1xubmV0L21hYzgwMjExL3R4LmMtMzk1NC1cdFx0Z290byBiZWdpbjtcbi0tXG5uZXQvbWFjODAyMTEvdHguYy0zOTY0LVx0XHRcdGlmIChyICE9IFRYX0NPTlRJTlVFKSB7XG5uZXQvbWFjODAyMTEvdHguYzozOTY1Olx0XHRcdFx0aWVlZTgwMjExX2ZyZWVfdHhza2IoXHUwMDI2bG9jYWwtXHUwMDNlaHcsIHNrYik7XG5uZXQvbWFjODAyMTEvdHguYy0zOTY2LVx0XHRcdFx0Z290byBiZWdpbjtcbi0tXG5uZXQvbWFjODAyMTEvdHguYy0zOTgzLVx0XHRpZiAociAhPSBUWF9DT05USU5VRSkge1xubmV0L21hYzgwMjExL3R4LmM6Mzk4NDpcdFx0XHRpZWVlODAyMTFfZnJlZV90eHNrYihcdTAwMjZsb2NhbC1cdTAwM2Vodywgc2tiKTtcbm5ldC9tYWM4MDIxMS90eC5jLTM5ODUtXHRcdFx0Z290byBiZWdpbjtcbi0tXG5uZXQvbWFjODAyMTEvdHguYy00MDAzLVx0XHRpZiAoc2tiX2xpbmVhcml6ZShza2IpKSB7XG5uZXQvbWFjODAyMTEvdHguYzo0MDA0Olx0XHRcdGllZWU4MDIxMV9mcmVlX3R4c2tiKFx1MDAyNmxvY2FsLVx1MDAzZWh3LCBza2IpO1xubmV0L21hYzgwMjExL3R4LmMtNDAwNS1cdFx0XHRnb3RvIGJlZ2luO1xuLS1cbm5ldC9tYWM4MDIxMS90eC5jLTQwMjItXHRcdH0gZWxzZSBpZiAoaWVlZTgwMjExX2h3X2NoZWNrKFx1MDAyNmxvY2FsLVx1MDAzZWh3LCBRVUVVRV9DT05UUk9MKSkge1xubmV0L21hYzgwMjExL3R4LmM6NDAyMzpcdFx0XHRpZWVlODAyMTFfZnJlZV90eHNrYihcdTAwMjZsb2NhbC1cdTAwM2Vodywgc2tiKTtcbm5ldC9tYWM4MDIxMS90eC5jLTQwMjQtXHRcdFx0Z290byBiZWdpbjtcbi0tXG5uZXQvbWFjODAyMTEvdHguYz00ODk1PXZvaWQgaWVlZTgwMjExX2NsZWFyX3R4X3BlbmRpbmcoc3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwpXG4tLVxubmV0L21hYzgwMjExL3R4LmMtNDkwMS1cdFx0d2hpbGUgKChza2IgPSBza2JfZGVxdWV1ZShcdTAwMjZsb2NhbC1cdTAwM2VwZW5kaW5nW2ldKSkgIT0gTlVMTClcbm5ldC9tYWM4MDIxMS90eC5jOjQ5MDI6XHRcdFx0aWVlZTgwMjExX2ZyZWVfdHhza2IoXHUwMDI2bG9jYWwtXHUwMDNlaHcsIHNrYik7XG5uZXQvbWFjODAyMTEvdHguYy00OTAzLVx0fVxuLS1cbm5ldC9tYWM4MDIxMS90eC5jPTQ5NjM9dm9pZCBpZWVlODAyMTFfdHhfcGVuZGluZyhzdHJ1Y3QgdGFza2xldF9zdHJ1Y3QgKnQpXG4tLVxubmV0L21hYzgwMjExL3R4LmMtNDk4Ny1cdFx0XHRpZiAoV0FSTl9PTighaW5mby1cdTAwM2Vjb250cm9sLnZpZikpIHtcbm5ldC9tYWM4MDIxMS90eC5jOjQ5ODg6XHRcdFx0XHRpZWVlODAyMTFfZnJlZV90eHNrYihcdTAwMjZsb2NhbC1cdTAwM2Vodywgc2tiKTtcbm5ldC9tYWM4MDIxMS90eC5jLTQ5ODktXHRcdFx0XHRjb250aW51ZTtcbi0tXG5uZXQvbWFjODAyMTEvdHguYz02MjMyPWllZWU4MDIxMV9nZXRfYnVmZmVyZWRfYmMoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXG4tLVxubmV0L21hYzgwMjExL3R4LmMtNjI4Ny1cdFx0XHRicmVhaztcbm5ldC9tYWM4MDIxMS90eC5jOjYyODg6XHRcdGllZWU4MDIxMV9mcmVlX3R4c2tiKGh3LCBza2IpO1xubmV0L21hYzgwMjExL3R4LmMtNjI4OS1cdH1cbi0tXG5uZXQvbWFjODAyMTEvdXRpbC5jPTU1MT12b2lkIGllZWU4MDIxMV9hZGRfcGVuZGluZ19za2Ioc3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwsXG4tLVxubmV0L21hYzgwMjExL3V0aWwuYy01NTktXHRpZiAoV0FSTl9PTighaW5mby1cdTAwM2Vjb250cm9sLnZpZikpIHtcbm5ldC9tYWM4MDIxMS91dGlsLmM6NTYwOlx0XHRpZWVlODAyMTFfZnJlZV90eHNrYihcdTAwMjZsb2NhbC1cdTAwM2Vodywgc2tiKTtcbm5ldC9tYWM4MDIxMS91dGlsLmMtNTYxLVx0XHRyZXR1cm47XG4tLVxubmV0L21hYzgwMjExL3V0aWwuYz01NzM9dm9pZCBpZWVlODAyMTFfYWRkX3BlbmRpbmdfc2ticyhzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbCxcbi0tXG5uZXQvbWFjODAyMTEvdXRpbC5jLTU4NS1cdFx0aWYgKFdBUk5fT04oIWluZm8tXHUwMDNlY29udHJvbC52aWYpKSB7XG5uZXQvbWFjODAyMTEvdXRpbC5jOjU4NjpcdFx0XHRpZWVlODAyMTFfZnJlZV90eHNrYihcdTAwMjZsb2NhbC1cdTAwM2Vodywgc2tiKTtcbm5ldC9tYWM4MDIxMS91dGlsLmMtNTg3LVx0XHRcdGNvbnRpbnVlO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA2IDIxOjA2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDExNDQyCgkJCQkJCQlvdXRwdXQ6IDMzCgkJCQkJCQl0aG91Z2h0czogMjY5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgUGF0Y2ggZm9yIFBvdGVudGlhbCBGdXp6aW5nKioKCk9rYXksIHNvIHRoZSBwYXRjaCBJJiMzOTttIGxvb2tpbmcgYXQgbW9kaWZpZXMgYGllZWU4MDIxMV9kb19zdG9wYCwgc3BlY2lmaWNhbGx5IHdpdGhpbiBgbmV0L21hYzgwMjExL2lmYWNlLmNgLiBUaGlzIGlzIHRoZSBmdW5jdGlvbiByZXNwb25zaWJsZSBmb3Igc3RvcHBpbmcgYW4gaW50ZXJmYWNlLCB3aGljaCwgYnkgaXRzIG5hdHVyZSwgaXNuJiMzOTt0IGEgaGlnaC1mcmVxdWVuY3kgb3BlcmF0aW9uIOKAkyBzbyBpdCYjMzk7cyBub3QgYSBob3QgcGF0aC4gSG93ZXZlciwgaXQgKmlzKiByZWFjaGFibGUg4oCTIHRoYXQmIzM5O3MgZ29vZC4gSSBjYW4gdHJpZ2dlciBpdCB3aXRoIHN0YW5kYXJkIG5ldGxpbmsgY29tbWFuZHMgbGlrZSBgaWZjb25maWcgd2xhbjAgZG93bmAuCgpOb3csIHRoZSBpbXBvcnRhbnQgcXVlc3Rpb246IGlzIGl0IHdvcnRoIGZ1enppbmc/IEdpdmVuIHRoYXQgaXQmIzM5O3MgYSBmdW5jdGlvbmFsIGNoYW5nZSB3aXRoaW4gdGhlIGtlcm5lbCwgdGhlIGFuc3dlciBpcyBhIGRlZmluaXRlIHllcy4gV2UgaGF2ZSB0aGUgYE1BQzgwMjExYCBjb25maWcsIHdoaWNoIGNvdmVycyB0aGlzIGNvZGUuIExldCBtZSBkb3VibGUtY2hlY2sgdGhvdWdoLi4uIFl1cCwgdGhlIGNvZGUgaXMgaW5kZWVkIGluIGBuZXQvbWFjODAyMTEvaWZhY2UuY2AuIEkmIzM5O20gZ29pbmcgdG8gbWFrZSBzdXJlIHRoZXJlIGFyZW4mIzM5O3QgYW55IG90aGVyIGRlcGVuZGVudCBjb25maWdzLgoKV2FpdCBhIHNlY29uZC4uLiB0aGUgcGF0Y2ggc3BlY2lmaWVzIGEgY2hlY2sgZm9yIGBzZGF0YS0mZ3Q7dmlmLnR5cGUgPT0gTkw4MDIxMV9JRlRZUEVfQVBfVkxBTmAuIE9rYXksIHNvIGl0JiMzOTtzICpzcGVjaWZpY2FsbHkqIHJlbGF0ZWQgdG8gQVBfVkxBTiBpbnRlcmZhY2VzLiBUaGF0IGNoYW5nZXMgdGhpbmdzIGEgYml0LiBEb2VzIEFQX1ZMQU4gaGF2ZSBpdHMgb3duIHNwZWNpZmljIGNvbmZpZ3VyYXRpb24/IExldCBtZSBjb25zdWx0IGBuZXQvbWFjODAyMTEvS2NvbmZpZ2Agb3IgcG9zc2libHkgYG5ldC93aXJlbGVzcy9LY29uZmlnYCB0byBzZWUgaWYgdGhlcmUmIzM5O3MgYSBkZWRpY2F0ZWQgY29uZmlnIG9wdGlvbiByZWxhdGVkIHRvIEFQX1ZMQU4gdGhhdCBJIG5lZWQgdG8gYmUgYXdhcmUgb2YuIEdvdHRhIGVuc3VyZSB0aGUgZnV6emluZyBzZXR1cCBhY2N1cmF0ZWx5IHJlZmxlY3RzIHRoZSByZWxldmFudCBrZXJuZWwgYnVpbGQgY29uZmlndXJhdGlvbnMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA2IDIxOjA3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O0FQX1ZMQU4mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbWFjODAyMTEvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O1xuRnVsbCBvdXRwdXQgaXMgdG9vIGxvbmcsIHNob3dpbmcgNTAwIG91dCBvZiA2NDIgbGluZXMuXG5Vc2UgbW9yZSBwcmVjaXNlIGV4cHJlc3Npb24gaWYgcG9zc2libGUuXG5cbm5ldC9tYWM4MDIxMS9hZ2ctdHguYz02MDM9aW50IGllZWU4MDIxMV9zdGFydF90eF9iYV9zZXNzaW9uKHN0cnVjdCBpZWVlODAyMTFfc3RhICpwdWJzdGEsIHUxNiB0aWQsXG4tLVxubmV0L21hYzgwMjExL2FnZy10eC5jLTY0MS1cdCAgICBzZGF0YS1cdTAwM2V2aWYudHlwZSAhPSBOTDgwMjExX0lGVFlQRV9NRVNIX1BPSU5UIFx1MDAyNlx1MDAyNlxubmV0L21hYzgwMjExL2FnZy10eC5jOjY0MjpcdCAgICBzZGF0YS1cdTAwM2V2aWYudHlwZSAhPSBOTDgwMjExX0lGVFlQRV9BUF9WTEFOIFx1MDAyNlx1MDAyNlxubmV0L21hYzgwMjExL2FnZy10eC5jLTY0My1cdCAgICBzZGF0YS1cdTAwM2V2aWYudHlwZSAhPSBOTDgwMjExX0lGVFlQRV9BUCBcdTAwMjZcdTAwMjZcbi0tXG5uZXQvbWFjODAyMTEvY2ZnLmM9MjA2PXN0YXRpYyBzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICppZWVlODAyMTFfYWRkX2lmYWNlKHN0cnVjdCB3aXBoeSAqd2lwaHksXG4tLVxubmV0L21hYzgwMjExL2NmZy5jLTIzNS1cdHN3aXRjaCAodHlwZSkge1xubmV0L21hYzgwMjExL2NmZy5jOjIzNjpcdGNhc2UgTkw4MDIxMV9JRlRZUEVfQVBfVkxBTjpcbm5ldC9tYWM4MDIxMS9jZmcuYy0yMzctXHRcdGJyZWFrO1xuLS1cbm5ldC9tYWM4MDIxMS9jZmcuYz0yNTk9c3RhdGljIGludCBpZWVlODAyMTFfY2hhbmdlX2lmYWNlKHN0cnVjdCB3aXBoeSAqd2lwaHksXG4tLVxubmV0L21hYzgwMjExL2NmZy5jLTI3NC1cbm5ldC9tYWM4MDIxMS9jZmcuYzoyNzU6XHRpZiAodHlwZSA9PSBOTDgwMjExX0lGVFlQRV9BUF9WTEFOIFx1MDAyNlx1MDAyNiBwYXJhbXMtXHUwMDNldXNlXzRhZGRyID09IDApIHtcbm5ldC9tYWM4MDIxMS9jZmcuYy0yNzYtXHRcdFJDVV9JTklUX1BPSU5URVIoc2RhdGEtXHUwMDNldS52bGFuLnN0YSwgTlVMTCk7XG4tLVxubmV0L21hYzgwMjExL2NmZy5jPTYxMz1zdGF0aWMgaW50IGllZWU4MDIxMV9hZGRfa2V5KHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsXG4tLVxubmV0L21hYzgwMjExL2NmZy5jLTY5OS1cdGNhc2UgTkw4MDIxMV9JRlRZUEVfQVA6XG5uZXQvbWFjODAyMTEvY2ZnLmM6NzAwOlx0Y2FzZSBOTDgwMjExX0lGVFlQRV9BUF9WTEFOOlxubmV0L21hYzgwMjExL2NmZy5jLTcwMS1cdGNhc2UgTkw4MDIxMV9JRlRZUEVfTkFOOlxuLS1cbm5ldC9tYWM4MDIxMS9jZmcuYz0yNjMwPXN0YXRpYyBpbnQgaWVlZTgwMjExX2FkZF9zdGF0aW9uKHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsXG4tLVxubmV0L21hYzgwMjExL2NmZy5jLTI2NDMtXG5uZXQvbWFjODAyMTEvY2ZnLmM6MjY0NDpcdFx0aWYgKHNkYXRhLVx1MDAzZXZpZi50eXBlICE9IE5MODAyMTFfSUZUWVBFX0FQX1ZMQU4gXHUwMDI2XHUwMDI2XG5uZXQvbWFjODAyMTEvY2ZnLmMtMjY0NS1cdFx0ICAgIHNkYXRhLVx1MDAzZXZpZi50eXBlICE9IE5MODAyMTFfSUZUWVBFX0FQKVxuLS1cbm5ldC9tYWM4MDIxMS9jZmcuYz0yNzgzPXN0YXRpYyBpbnQgaWVlZTgwMjExX2NoYW5nZV9zdGF0aW9uKHN0cnVjdCB3aXBoeSAqd2lwaHksXG4tLVxubmV0L21hYzgwMjExL2NmZy5jLTI4MjAtXHRjYXNlIE5MODAyMTFfSUZUWVBFX0FQOlxubmV0L21hYzgwMjExL2NmZy5jOjI4MjE6XHRjYXNlIE5MODAyMTFfSUZUWVBFX0FQX1ZMQU46XG5uZXQvbWFjODAyMTEvY2ZnLmMtMjgyMi1cdFx0aWYgKHRlc3Rfc3RhX2ZsYWcoc3RhLCBXTEFOX1NUQV9BU1NPQykpXG4tLVxubmV0L21hYzgwMjExL2NmZy5jLTI4NTAtXG5uZXQvbWFjODAyMTEvY2ZnLmM6Mjg1MTpcdFx0aWYgKHN0YS1cdTAwM2VzZGF0YS1cdTAwM2V2aWYudHlwZSA9PSBOTDgwMjExX0lGVFlQRV9BUF9WTEFOIFx1MDAyNlx1MDAyNlxubmV0L21hYzgwMjExL2NmZy5jLTI4NTItXHRcdCAgICBzdGEtXHUwMDNlc2RhdGEtXHUwMDNldS52bGFuLnN0YSlcbi0tXG5uZXQvbWFjODAyMTEvY2hhbi5jPTExMj1pZWVlODAyMTFfY2hhbmN0eF91c2VyX2l0ZXJfbmV4dChzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbCxcbi0tXG5uZXQvbWFjODAyMTEvY2hhbi5jLTE0Mi1cbm5ldC9tYWM4MDIxMS9jaGFuLmM6MTQzOlx0XHQvKiBBUF9WTEFOIGhhcyBhIGNoYW5jdHggcG9pbnRlciBidXQgZm9sbG93cyBBUCAqL1xubmV0L21hYzgwMjExL2NoYW4uYzoxNDQ6XHRcdGlmIChpdGVyLVx1MDAzZXNkYXRhLVx1MDAzZXZpZi50eXBlID09IE5MODAyMTFfSUZUWVBFX0FQX1ZMQU4pXG5uZXQvbWFjODAyMTEvY2hhbi5jLTE0NS1cdFx0XHRjb250aW51ZTtcbi0tXG5uZXQvbWFjODAyMTEvY2hhbi5jPTUxOT1pZWVlODAyMTFfZ2V0X3dpZHRoX29mX2xpbmsoc3RydWN0IGllZWU4MDIxMV9saW5rX2RhdGEgKmxpbmspXG4tLVxubmV0L21hYzgwMjExL2NoYW4uYy01NDAtXHRjYXNlIE5MODAyMTFfSUZUWVBFX0FQOlxubmV0L21hYzgwMjExL2NoYW4uYzo1NDE6XHRjYXNlIE5MODAyMTFfSUZUWVBFX0FQX1ZMQU46XG5uZXQvbWFjODAyMTEvY2hhbi5jLTU0Mi1cdFx0cmV0dXJuIGllZWU4MDIxMV9nZXRfbWF4X3JlcXVpcmVkX2J3KGxpbmspO1xuLS1cbm5ldC9tYWM4MDIxMS9jaGFuLmM9MTU3OT1pZWVlODAyMTFfbGlua19jaGFuY3R4X3Jlc2VydmF0aW9uX2NvbXBsZXRlKHN0cnVjdCBpZWVlODAyMTFfbGlua19kYXRhICpsaW5rKVxuLS1cbm5ldC9tYWM4MDIxMS9jaGFuLmMtMTU5NS1cdGNhc2UgTkw4MDIxMV9JRlRZUEVfVU5TUEVDSUZJRUQ6XG5uZXQvbWFjODAyMTEvY2hhbi5jOjE1OTY6XHRjYXNlIE5MODAyMTFfSUZUWVBFX0FQX1ZMQU46XG5uZXQvbWFjODAyMTEvY2hhbi5jLTE1OTctXHRjYXNlIE5MODAyMTFfSUZUWVBFX1dEUzpcbi0tXG5uZXQvbWFjODAyMTEvY2hhbi5jPTI0ODI9dm9pZCBpZWVlODAyMTFfbGlua19yZWxlYXNlX2NoYW5uZWwoc3RydWN0IGllZWU4MDIxMV9saW5rX2RhdGEgKmxpbmspXG4tLVxubmV0L21hYzgwMjExL2NoYW4uYy0yNDg1LVxubmV0L21hYzgwMjExL2NoYW4uYzoyNDg2Olx0aWYgKHNkYXRhLVx1MDAzZXZpZi50eXBlID09IE5MODAyMTFfSUZUWVBFX0FQX1ZMQU4pXG5uZXQvbWFjODAyMTEvY2hhbi5jLTI0ODctXHRcdHJldHVybjtcbi0tXG5uZXQvbWFjODAyMTEvY2hhbi5jPTI0OTU9dm9pZCBpZWVlODAyMTFfbGlua192bGFuX2NvcHlfY2hhbmN0eChzdHJ1Y3QgaWVlZTgwMjExX2xpbmtfZGF0YSAqbGluaylcbi0tXG5uZXQvbWFjODAyMTEvY2hhbi5jLTI1MDYtXG5uZXQvbWFjODAyMTEvY2hhbi5jOjI1MDc6XHRpZiAoV0FSTl9PTihzZGF0YS1cdTAwM2V2aWYudHlwZSAhPSBOTDgwMjExX0lGVFlQRV9BUF9WTEFOIHx8ICFzZGF0YS1cdTAwM2Vic3MpKVxubmV0L21hYzgwMjExL2NoYW4uYy0yNTA4LVx0XHRyZXR1cm47XG4tLVxubmV0L21hYzgwMjExL2RlYnVnZnNfbmV0ZGV2LmM9OTM3PXN0YXRpYyB2b2lkIGFkZF9maWxlcyhzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSlcbi0tXG5uZXQvbWFjODAyMTEvZGVidWdmc19uZXRkZXYuYy05NjQtXHRcdGJyZWFrO1xubmV0L21hYzgwMjExL2RlYnVnZnNfbmV0ZGV2LmM6OTY1Olx0Y2FzZSBOTDgwMjExX0lGVFlQRV9BUF9WTEFOOlxubmV0L21hYzgwMjExL2RlYnVnZnNfbmV0ZGV2LmMtOTY2LVx0XHRhZGRfdmxhbl9maWxlcyhzZGF0YSk7XG4tLVxubmV0L21hYzgwMjExL2RyaXZlci1vcHMuYz01Nz1pbnQgZHJ2X2FkZF9pbnRlcmZhY2Uoc3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwsXG4tLVxubmV0L21hYzgwMjExL2RyaXZlci1vcHMuYy02NC1cbm5ldC9tYWM4MDIxMS9kcml2ZXItb3BzLmM6NjU6XHRpZiAoV0FSTl9PTihzZGF0YS1cdTAwM2V2aWYudHlwZSA9PSBOTDgwMjExX0lGVFlQRV9BUF9WTEFOIHx8XG5uZXQvbWFjODAyMTEvZHJpdmVyLW9wcy5jLTY2LVx0XHQgICAgKHNkYXRhLVx1MDAzZXZpZi50eXBlID09IE5MODAyMTFfSUZUWVBFX01PTklUT1IgXHUwMDI2XHUwMDI2XG4tLVxubmV0L21hYzgwMjExL2RyaXZlci1vcHMuaD0yNT1nZXRfYnNzX3NkYXRhKHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhKVxubmV0L21hYzgwMjExL2RyaXZlci1vcHMuaC0yNi17XG5uZXQvbWFjODAyMTEvZHJpdmVyLW9wcy5oOjI3Olx0aWYgKHNkYXRhIFx1MDAyNlx1MDAyNiBzZGF0YS1cdTAwM2V2aWYudHlwZSA9PSBOTDgwMjExX0lGVFlQRV9BUF9WTEFOKVxubmV0L21hYzgwMjExL2RyaXZlci1vcHMuaC0yOC1cdFx0c2RhdGEgPSBjb250YWluZXJfb2Yoc2RhdGEtXHUwMDNlYnNzLCBzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhLFxuLS1cbm5ldC9tYWM4MDIxMS9oZS5jPTEzPWllZWU4MDIxMV91cGRhdGVfZnJvbV9oZV82Z2h6X2NhcGEoY29uc3Qgc3RydWN0IGllZWU4MDIxMV9oZV82Z2h6X2NhcGEgKmhlXzZnaHpfY2FwYSxcbi0tXG5uZXQvbWFjODAyMTEvaGUuYy0xOS1cdGlmIChzdGEtXHUwMDNlc2RhdGEtXHUwMDNldmlmLnR5cGUgPT0gTkw4MDIxMV9JRlRZUEVfQVAgfHxcbm5ldC9tYWM4MDIxMS9oZS5jOjIwOlx0ICAgIHN0YS1cdTAwM2VzZGF0YS1cdTAwM2V2aWYudHlwZSA9PSBOTDgwMjExX0lGVFlQRV9BUF9WTEFOKSB7XG5uZXQvbWFjODAyMTEvaGUuYy0yMS1cdFx0c3dpdGNoIChsZTE2X2dldF9iaXRzKGhlXzZnaHpfY2FwYS1cdTAwM2VjYXBhLFxuLS1cbm5ldC9tYWM4MDIxMS9odC5jPTEzOD1ib29sIGllZWU4MDIxMV9odF9jYXBfaWVfdG9fc3RhX2h0X2NhcChzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSxcbi0tXG5uZXQvbWFjODAyMTEvaHQuYy0yNTYtXHRpZiAoc3RhLVx1MDAzZXNkYXRhLVx1MDAzZXZpZi50eXBlID09IE5MODAyMTFfSUZUWVBFX0FQIHx8XG5uZXQvbWFjODAyMTEvaHQuYzoyNTc6XHQgICAgc3RhLVx1MDAzZXNkYXRhLVx1MDAzZXZpZi50eXBlID09IE5MODAyMTFfSUZUWVBFX0FQX1ZMQU4gfHxcbm5ldC9tYWM4MDIxMS9odC5jLTI1OC1cdCAgICBzdGEtXHUwMDNlc2RhdGEtXHUwMDNldmlmLnR5cGUgPT0gTkw4MDIxMV9JRlRZUEVfTkFOIHx8XG4tLVxubmV0L21hYzgwMjExL2llZWU4MDIxMV9pLmg9MTk1ND12b2lkIGllZWU4MDIxMV92aWZfdW5ibG9ja19xdWV1ZXNfY3NhKHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhKTtcbi0tXG5uZXQvbWFjODAyMTEvaWVlZTgwMjExX2kuaC0xOTU3LSAqIGludGVyZmFjZS4gSXQgcmV0dXJucyAtMSBpZiB0aGF0IG51bWJlciBpcyBub3QgdHJhY2tlZCwgdGhhdCBpcyBmb3IgbmV0ZGV2c1xubmV0L21hYzgwMjExL2llZWU4MDIxMV9pLmg6MTk1ODogKiBub3QgaW4gQVAgb3IgQVBfVkxBTiBtb2RlIG9yIHdoZW4gdXNpbmcgNGFkZHIuXG5uZXQvbWFjODAyMTEvaWVlZTgwMjExX2kuaC0xOTU5LSAqL1xuLS1cbm5ldC9tYWM4MDIxMS9pZWVlODAyMTFfaS5oPTE5NjE9aWVlZTgwMjExX3ZpZl9nZXRfbnVtX21jYXN0X2lmKHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhKVxuLS1cbm5ldC9tYWM4MDIxMS9pZWVlODAyMTFfaS5oLTE5NjQtXHRcdHJldHVybiBhdG9taWNfcmVhZChcdTAwMjZzZGF0YS1cdTAwM2V1LmFwLm51bV9tY2FzdF9zdGEpO1xubmV0L21hYzgwMjExL2llZWU4MDIxMV9pLmg6MTk2NTpcdGlmIChzZGF0YS1cdTAwM2V2aWYudHlwZSA9PSBOTDgwMjExX0lGVFlQRV9BUF9WTEFOIFx1MDAyNlx1MDAyNiAhc2RhdGEtXHUwMDNldS52bGFuLnN0YSlcbm5ldC9tYWM4MDIxMS9pZWVlODAyMTFfaS5oLTE5NjYtXHRcdHJldHVybiBhdG9taWNfcmVhZChcdTAwMjZzZGF0YS1cdTAwM2V1LnZsYW4ubnVtX21jYXN0X3N0YSk7XG4tLVxubmV0L21hYzgwMjExL2llZWU4MDIxMV9pLmg9MjMwNj1pZWVlODAyMTFfbWdtdF9iYShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBjb25zdCB1OCAqZGEsXG4tLVxubmV0L21hYzgwMjExL2llZWU4MDIxMV9pLmgtMjMxNC1cdGlmIChzZGF0YS1cdTAwM2V2aWYudHlwZSA9PSBOTDgwMjExX0lGVFlQRV9BUCB8fFxubmV0L21hYzgwMjExL2llZWU4MDIxMV9pLmg6MjMxNTpcdCAgICBzZGF0YS1cdTAwM2V2aWYudHlwZSA9PSBOTDgwMjExX0lGVFlQRV9BUF9WTEFOIHx8XG5uZXQvbWFjODAyMTEvaWVlZTgwMjExX2kuaC0yMzE2LVx0ICAgIHNkYXRhLVx1MDAzZXZpZi50eXBlID09IE5MODAyMTFfSUZUWVBFX01FU0hfUE9JTlQpXG4tLVxubmV0L21hYzgwMjExL2lmYWNlLmM9MzI5PXN0YXRpYyBpbmxpbmUgaW50IGlkZW50aWNhbF9tYWNfYWRkcl9hbGxvd2VkKGludCB0eXBlMSwgaW50IHR5cGUyKVxuLS1cbm5ldC9tYWM4MDIxMS9pZmFjZS5jLTMzNC1cdFx0dHlwZTIgPT0gTkw4MDIxMV9JRlRZUEVfUDJQX0RFVklDRSB8fFxubmV0L21hYzgwMjExL2lmYWNlLmM6MzM1Olx0XHQodHlwZTEgPT0gTkw4MDIxMV9JRlRZUEVfQVAgXHUwMDI2XHUwMDI2IHR5cGUyID09IE5MODAyMTFfSUZUWVBFX0FQX1ZMQU4pIHx8XG5uZXQvbWFjODAyMTEvaWZhY2UuYzozMzY6XHRcdCh0eXBlMSA9PSBOTDgwMjExX0lGVFlQRV9BUF9WTEFOIFx1MDAyNlx1MDAyNlxubmV0L21hYzgwMjExL2lmYWNlLmMtMzM3LVx0XHRcdCh0eXBlMiA9PSBOTDgwMjExX0lGVFlQRV9BUCB8fFxubmV0L21hYzgwMjExL2lmYWNlLmM6MzM4Olx0XHRcdCB0eXBlMiA9PSBOTDgwMjExX0lGVFlQRV9BUF9WTEFOKSk7XG5uZXQvbWFjODAyMTEvaWZhY2UuYy0zMzktfVxuLS1cbm5ldC9tYWM4MDIxMS9pZmFjZS5jPTM0MT1zdGF0aWMgaW50IGllZWU4MDIxMV9jaGVja19jb25jdXJyZW50X2lmYWNlKHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLFxuLS1cbm5ldC9tYWM4MDIxMS9pZmFjZS5jLTQxNC1cdFx0XHQgKi9cbm5ldC9tYWM4MDIxMS9pZmFjZS5jOjQxNTpcdFx0XHRpZiAoaWZ0eXBlID09IE5MODAyMTFfSUZUWVBFX0FQX1ZMQU4gXHUwMDI2XHUwMDI2XG5uZXQvbWFjODAyMTEvaWZhY2UuYy00MTYtXHRcdFx0ICAgIG5zZGF0YS1cdTAwM2V2aWYudHlwZSA9PSBOTDgwMjExX0lGVFlQRV9BUClcbi0tXG5uZXQvbWFjODAyMTEvaWZhY2UuYz00Nzk9c3RhdGljIHZvaWQgaWVlZTgwMjExX2RvX3N0b3Aoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsIGJvb2wgZ29pbmdfZG93bilcbi0tXG5uZXQvbWFjODAyMTEvaWZhY2UuYy01MTMtXHRcdGJyZWFrO1xubmV0L21hYzgwMjExL2lmYWNlLmM6NTE0Olx0Y2FzZSBOTDgwMjExX0lGVFlQRV9BUF9WTEFOOlxubmV0L21hYzgwMjExL2lmYWNlLmMtNTE1LVx0XHRpZWVlODAyMTFfYXB2bGFuX2xpbmtfY2xlYXIoc2RhdGEpO1xuLS1cbm5ldC9tYWM4MDIxMS9pZmFjZS5jLTUzMC1cdCAqXG5uZXQvbWFjODAyMTEvaWZhY2UuYzo1MzE6XHQgKiBGb3IgQVBfVkxBTnMsIE5BTiBhbmQgTkFOX0RBVEEgc3RhdGlvbnMgbWF5IGV4aXN0IHNpbmNlIHRoZXJlJiMzOTtzXG5uZXQvbWFjODAyMTEvaWZhY2UuYy01MzItXHQgKiBub3RoaW5nIGVsc2UgdGhhdCB3b3VsZCBoYXZlIHJlbW92ZWQgdGhlbSwgYnV0IGluIG90aGVyIG1vZGVzIHRoZXJlXG4tLVxubmV0L21hYzgwMjExL2lmYWNlLmMtNTM1LVx0Zmx1c2hlZCA9IHN0YV9pbmZvX2ZsdXNoKHNkYXRhLCAtMSk7XG5uZXQvbWFjODAyMTEvaWZhY2UuYzo1MzY6XHRXQVJOX09OX09OQ0Uoc2RhdGEtXHUwMDNldmlmLnR5cGUgIT0gTkw4MDIxMV9JRlRZUEVfQVBfVkxBTiBcdTAwMjZcdTAwMjZcbm5ldC9tYWM4MDIxMS9pZmFjZS5jLTUzNy1cdFx0ICAgICBzZGF0YS1cdTAwM2V2aWYudHlwZSAhPSBOTDgwMjExX0lGVFlQRV9OQU4gXHUwMDI2XHUwMDI2XG4tLVxubmV0L21hYzgwMjExL2lmYWNlLmMtNTg4LVx0XHRXQVJOX09OKCFsaXN0X2VtcHR5KFx1MDAyNnNkYXRhLVx1MDAzZXUuYXAudmxhbnMpKTtcbm5ldC9tYWM4MDIxMS9pZmFjZS5jOjU4OTpcdH0gZWxzZSBpZiAoc2RhdGEtXHUwMDNldmlmLnR5cGUgPT0gTkw4MDIxMV9JRlRZUEVfQVBfVkxBTikge1xubmV0L21hYzgwMjExL2lmYWNlLmMtNTkwLVx0XHQvKiByZW1vdmUgYWxsIHBhY2tldHMgaW4gcGFyZW50IGJjX2J1ZiBwb2ludGluZyB0byB0aGlzIGRldiAqL1xuLS1cbm5ldC9tYWM4MDIxMS9pZmFjZS5jLTYxMy1cdHN3aXRjaCAoc2RhdGEtXHUwMDNldmlmLnR5cGUpIHtcbm5ldC9tYWM4MDIxMS9pZmFjZS5jOjYxNDpcdGNhc2UgTkw4MDIxMV9JRlRZUEVfQVBfVkxBTjpcbm5ldC9tYWM4MDIxMS9pZmFjZS5jLTYxNS1cdFx0bGlzdF9kZWwoXHUwMDI2c2RhdGEtXHUwMDNldS52bGFuLmxpc3QpO1xuLS1cbm5ldC9tYWM4MDIxMS9pZmFjZS5jLTcxMC1cbm5ldC9tYWM4MDIxMS9pZmFjZS5jOjcxMTpcdGlmIChzZGF0YS1cdTAwM2V2aWYudHlwZSA9PSBOTDgwMjExX0lGVFlQRV9BUF9WTEFOKVxubmV0L21hYzgwMjExL2lmYWNlLmMtNzEyLVx0XHRpZWVlODAyMTFfdHhxX3JlbW92ZV92bGFuKGxvY2FsLCBzZGF0YSk7XG4tLVxubmV0L21hYzgwMjExL2lmYWNlLmMtNzQzLVx0c3dpdGNoIChzZGF0YS1cdTAwM2V2aWYudHlwZSkge1xubmV0L21hYzgwMjExL2lmYWNlLmM6NzQ0Olx0Y2FzZSBOTDgwMjExX0lGVFlQRV9BUF9WTEFOOlxubmV0L21hYzgwMjExL2lmYWNlLmMtNzQ1LVx0XHRicmVhaztcbi0tXG5uZXQvbWFjODAyMTEvaWZhY2UuYz05ODk9c3RhdGljIGludCBpZWVlODAyMTFfbmV0ZGV2X2ZpbGxfZm9yd2FyZF9wYXRoKHN0cnVjdCBuZXRfZGV2aWNlX3BhdGhfY3R4ICpjdHgsXG4tLVxubmV0L21hYzgwMjExL2lmYWNlLmMtMTAwNC1cdHN3aXRjaCAoc2RhdGEtXHUwMDNldmlmLnR5cGUpIHtcbm5ldC9tYWM4MDIxMS9pZmFjZS5jOjEwMDU6XHRjYXNlIE5MODAyMTFfSUZUWVBFX0FQX1ZMQU46XG5uZXQvbWFjODAyMTEvaWZhY2UuYy0xMDA2LVx0XHRzdGEgPSByY3VfZGVyZWZlcmVuY2Uoc2RhdGEtXHUwMDNldS52bGFuLnN0YSk7XG4tLVxubmV0L21hYzgwMjExL2lmYWNlLmM9MTExMD1zdGF0aWMgdm9pZCBpZWVlODAyMTFfc2V0X3ZpZl9lbmNhcF9vcHMoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEpXG4tLVxubmV0L21hYzgwMjExL2lmYWNlLmMtMTExNS1cbm5ldC9tYWM4MDIxMS9pZmFjZS5jOjExMTY6XHRpZiAoc2RhdGEtXHUwMDNldmlmLnR5cGUgPT0gTkw4MDIxMV9JRlRZUEVfQVBfVkxBTikge1xubmV0L21hYzgwMjExL2lmYWNlLmMtMTExNy1cdFx0aWYgKCFzZGF0YS1cdTAwM2Vic3MpXG4tLVxubmV0L21hYzgwMjExL2lmYWNlLmM9MTEzNj1zdGF0aWMgdm9pZCBpZWVlODAyMTFfcmVjYWxjX3NkYXRhX29mZmxvYWQoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEpXG4tLVxubmV0L21hYzgwMjExL2lmYWNlLmMtMTE0Ni1cdGxpc3RfZm9yX2VhY2hfZW50cnkodnNkYXRhLCBcdTAwMjZsb2NhbC1cdTAwM2VpbnRlcmZhY2VzLCBsaXN0KSB7XG5uZXQvbWFjODAyMTEvaWZhY2UuYzoxMTQ3Olx0XHRpZiAodnNkYXRhLVx1MDAzZXZpZi50eXBlICE9IE5MODAyMTFfSUZUWVBFX0FQX1ZMQU4gfHxcbm5ldC9tYWM4MDIxMS9pZmFjZS5jLTExNDgtXHRcdCAgICB2c2RhdGEtXHUwMDNlYnNzICE9IFx1MDAyNnNkYXRhLVx1MDAzZXUuYXApXG4tLVxubmV0L21hYzgwMjExL2lmYWNlLmM9MTM2NT1pbnQgaWVlZTgwMjExX2RvX29wZW4oc3RydWN0IHdpcmVsZXNzX2RldiAqd2RldiwgYm9vbCBjb21pbmdfdXApXG4tLVxubmV0L21hYzgwMjExL2lmYWNlLmMtMTM3Ni1cdHN3aXRjaCAoc2RhdGEtXHUwMDNldmlmLnR5cGUpIHtcbm5ldC9tYWM4MDIxMS9pZmFjZS5jOjEzNzc6XHRjYXNlIE5MODAyMTFfSUZUWVBFX0FQX1ZMQU46IHtcbm5ldC9tYWM4MDIxMS9pZmFjZS5jLTEzNzgtXHRcdHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKm1hc3Rlcjtcbi0tXG5uZXQvbWFjODAyMTEvaWZhY2UuYy0xNDM4LVx0XHRcdC8qXG5uZXQvbWFjODAyMTEvaWZhY2UuYzoxNDM5Olx0XHRcdCAqIG5vIG5lZWQgdG8gd29ycnkgYWJvdXQgQVBfVkxBTi9OQU5fREFUQSBjbGVhbnVwIHNpbmNlXG5uZXQvbWFjODAyMTEvaWZhY2UuYy0xNDQwLVx0XHRcdCAqIGluIHRoYXQgY2FzZSB3ZSBjYW4mIzM5O3QgaGF2ZSBvcGVuX2NvdW50ID09IDBcbi0tXG5uZXQvbWFjODAyMTEvaWZhY2UuYy0xNDY1LVx0c3dpdGNoIChzZGF0YS1cdTAwM2V2aWYudHlwZSkge1xubmV0L21hYzgwMjExL2lmYWNlLmM6MTQ2NjpcdGNhc2UgTkw4MDIxMV9JRlRZUEVfQVBfVkxBTjpcbm5ldC9tYWM4MDIxMS9pZmFjZS5jLTE0NjctXHRcdC8qIG5vIG5lZWQgdG8gdGVsbCBkcml2ZXIsIGJ1dCBzZXQgY2FycmllciBhbmQgY2hhbmN0eCAqL1xuLS1cbm5ldC9tYWM4MDIxMS9pZmFjZS5jLTE2MDktXHRcdFJDVV9JTklUX1BPSU5URVIoc2RhdGEtXHUwMDNldS5uYW5fZGF0YS5ubWksIE5VTEwpO1xubmV0L21hYzgwMjExL2lmYWNlLmM6MTYxMDpcdGlmIChzZGF0YS1cdTAwM2V2aWYudHlwZSA9PSBOTDgwMjExX0lGVFlQRV9BUF9WTEFOKVxubmV0L21hYzgwMjExL2lmYWNlLmMtMTYxMS1cdFx0bGlzdF9kZWwoXHUwMDI2c2RhdGEtXHUwMDNldS52bGFuLmxpc3QpO1xuLS1cbm5ldC9tYWM4MDIxMS9pZmFjZS5jPTE4Nzg9c3RhdGljIHZvaWQgaWVlZTgwMjExX3NldHVwX3NkYXRhKHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLFxuLS1cbm5ldC9tYWM4MDIxMS9pZmFjZS5jLTE5NTktXHRcdGJyZWFrO1xubmV0L21hYzgwMjExL2lmYWNlLmM6MTk2MDpcdGNhc2UgTkw4MDIxMV9JRlRZUEVfQVBfVkxBTjpcbm5ldC9tYWM4MDIxMS9pZmFjZS5jLTE5NjEtXHRjYXNlIE5MODAyMTFfSUZUWVBFX1AyUF9ERVZJQ0U6XG4tLVxubmV0L21hYzgwMjExL2lmYWNlLmM9MjA5OT1zdGF0aWMgdm9pZCBpZWVlODAyMTFfYXNzaWduX3Blcm1fYWRkcihzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbCxcbi0tXG5uZXQvbWFjODAyMTEvaWZhY2UuYy0yMTIwLVx0XHRicmVhaztcbm5ldC9tYWM4MDIxMS9pZmFjZS5jOjIxMjE6XHRjYXNlIE5MODAyMTFfSUZUWVBFX0FQX1ZMQU46XG5uZXQvbWFjODAyMTEvaWZhY2UuYy0yMTIyLVx0XHQvKiBtYXRjaCB1cCB3aXRoIGFuIEFQIGludGVyZmFjZSAqL1xuLS1cbm5ldC9tYWM4MDIxMS9pZmFjZS5jPTIyMjg9aW50IGllZWU4MDIxMV9pZl9hZGQoc3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwsIGNvbnN0IGNoYXIgKm5hbWUsXG4tLVxubmV0L21hYzgwMjExL2lmYWNlLmMtMjI4MC1cbm5ldC9tYWM4MDIxMS9pZmFjZS5jOjIyODE6XHRcdGlmICh0eXBlICE9IE5MODAyMTFfSUZUWVBFX0FQX1ZMQU4gXHUwMDI2XHUwMDI2XG5uZXQvbWFjODAyMTEvaWZhY2UuYy0yMjgyLVx0XHQgICAgKHR5cGUgIT0gTkw4MDIxMV9JRlRZUEVfTU9OSVRPUiB8fFxuLS1cbm5ldC9tYWM4MDIxMS9pZmFjZS5jPTI1MzU9dm9pZCBpZWVlODAyMTFfdmlmX2luY19udW1fbWNhc3Qoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEpXG4tLVxubmV0L21hYzgwMjExL2lmYWNlLmMtMjUzOC1cdFx0YXRvbWljX2luYyhcdTAwMjZzZGF0YS1cdTAwM2V1LmFwLm51bV9tY2FzdF9zdGEpO1xubmV0L21hYzgwMjExL2lmYWNlLmM6MjUzOTpcdGVsc2UgaWYgKHNkYXRhLVx1MDAzZXZpZi50eXBlID09IE5MODAyMTFfSUZUWVBFX0FQX1ZMQU4pXG5uZXQvbWFjODAyMTEvaWZhY2UuYy0yNTQwLVx0XHRhdG9taWNfaW5jKFx1MDAyNnNkYXRhLVx1MDAzZXUudmxhbi5udW1fbWNhc3Rfc3RhKTtcbi0tXG5uZXQvbWFjODAyMTEvaWZhY2UuYz0yNTQzPXZvaWQgaWVlZTgwMjExX3ZpZl9kZWNfbnVtX21jYXN0KHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhKVxuLS1cbm5ldC9tYWM4MDIxMS9pZmFjZS5jLTI1NDYtXHRcdGF0b21pY19kZWMoXHUwMDI2c2RhdGEtXHUwMDNldS5hcC5udW1fbWNhc3Rfc3RhKTtcbm5ldC9tYWM4MDIxMS9pZmFjZS5jOjI1NDc6XHRlbHNlIGlmIChzZGF0YS1cdTAwM2V2aWYudHlwZSA9PSBOTDgwMjExX0lGVFlQRV9BUF9WTEFOKVxubmV0L21hYzgwMjExL2lmYWNlLmMtMjU0OC1cdFx0YXRvbWljX2RlYyhcdTAwMjZzZGF0YS1cdTAwM2V1LnZsYW4ubnVtX21jYXN0X3N0YSk7XG4tLVxubmV0L21hYzgwMjExL2tleS5jPTEyMD1zdGF0aWMgaW50IGllZWU4MDIxMV9rZXlfZW5hYmxlX2h3X2FjY2VsKHN0cnVjdCBpZWVlODAyMTFfa2V5ICprZXkpXG4tLVxubmV0L21hYzgwMjExL2tleS5jLTE2NS1cbm5ldC9tYWM4MDIxMS9rZXkuYzoxNjY6XHRpZiAoc2RhdGEtXHUwMDNldmlmLnR5cGUgPT0gTkw4MDIxMV9JRlRZUEVfQVBfVkxBTikge1xubmV0L21hYzgwMjExL2tleS5jLTE2Ny1cdFx0Lypcbi0tXG5uZXQvbWFjODAyMTEva2V5LmM9MzUwPXN0YXRpYyB2b2lkIF9faWVlZTgwMjExX3NldF9kZWZhdWx0X2tleShzdHJ1Y3QgaWVlZTgwMjExX2xpbmtfZGF0YSAqbGluayxcbi0tXG5uZXQvbWFjODAyMTEva2V5LmMtMzY4LVx0XHRpZWVlODAyMTFfY2hlY2tfZmFzdF94bWl0X2lmYWNlKHNkYXRhKTtcbm5ldC9tYWM4MDIxMS9rZXkuYzozNjk6XHRcdGlmIChzZGF0YS1cdTAwM2V2aWYudHlwZSAhPSBOTDgwMjExX0lGVFlQRV9BUF9WTEFOKVxubmV0L21hYzgwMjExL2tleS5jLTM3MC1cdFx0XHRkcnZfc2V0X2RlZmF1bHRfdW5pY2FzdF9rZXkoc2RhdGEtXHUwMDNlbG9jYWwsIHNkYXRhLCBpZHgpO1xuLS1cbm5ldC9tYWM4MDIxMS9rZXkuYz0xMTM5PXZvaWQgaWVlZTgwMjExX2ZyZWVfa2V5cyhzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSxcbi0tXG5uZXQvbWFjODAyMTEva2V5LmMtMTE2NC1cbm5ldC9tYWM4MDIxMS9rZXkuYzoxMTY1Olx0aWYgKHNkYXRhLVx1MDAzZXZpZi50eXBlID09IE5MODAyMTFfSUZUWVBFX0FQX1ZMQU4pIHtcbm5ldC9tYWM4MDIxMS9rZXkuYy0xMTY2LVx0XHRpZiAoc2RhdGEtXHUwMDNlYnNzKSB7XG4tLVxubmV0L21hYzgwMjExL2xpbmsuYz05NT12b2lkIGllZWU4MDIxMV9saW5rX2luaXQoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsXG4tLVxubmV0L21hYzgwMjExL2xpbmsuYy0xMDQtXG5uZXQvbWFjODAyMTEvbGluay5jOjEwNTpcdGlmIChzZGF0YS1cdTAwM2V2aWYudHlwZSA9PSBOTDgwMjExX0lGVFlQRV9BUF9WTEFOKSB7XG5uZXQvbWFjODAyMTEvbGluay5jLTEwNi1cdFx0c3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqYXBfYnNzO1xuLS1cbm5ldC9tYWM4MDIxMS9saW5rLmMtMTQxLVx0XHRjYXNlIE5MODAyMTFfSUZUWVBFX0FQOlxubmV0L21hYzgwMjExL2xpbmsuYzoxNDI6XHRcdGNhc2UgTkw4MDIxMV9JRlRZUEVfQVBfVkxBTjpcbm5ldC9tYWM4MDIxMS9saW5rLmMtMTQzLVx0XHRcdGV0aGVyX2FkZHJfY29weShsaW5rX2NvbmYtXHUwMDNlYWRkcixcbi0tXG5uZXQvbWFjODAyMTEvbGluay5jPTI1MT1zdGF0aWMgdm9pZCBpZWVlODAyMTFfc2V0X3ZpZl9saW5rc19iaXRtYXBzKHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLFxuLS1cbm5ldC9tYWM4MDIxMS9saW5rLmMtMjY4LVx0Y2FzZSBOTDgwMjExX0lGVFlQRV9BUDpcbm5ldC9tYWM4MDIxMS9saW5rLmM6MjY5Olx0Y2FzZSBOTDgwMjExX0lGVFlQRV9BUF9WTEFOOlxubmV0L21hYzgwMjExL2xpbmsuYy0yNzAtXHRcdC8qIGluIGFuIEFQIGFsbCBsaW5rcyBhcmUgYWx3YXlzIGFjdGl2ZSAqL1xuLS1cbm5ldC9tYWM4MDIxMS9saW5rLmM9Mjg3PXN0YXRpYyBpbnQgaWVlZTgwMjExX3ZpZl91cGRhdGVfbGlua3Moc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsXG4tLVxubmV0L21hYzgwMjExL2xpbmsuYy0zNzctXHRcdC8qIHRlbGwgdGhlIGRyaXZlciAqL1xubmV0L21hYzgwMjExL2xpbmsuYzozNzg6XHRcdGlmIChzZGF0YS1cdTAwM2V2aWYudHlwZSAhPSBOTDgwMjExX0lGVFlQRV9BUF9WTEFOKVxubmV0L21hYzgwMjExL2xpbmsuYy0zNzktXHRcdFx0cmV0ID0gZHJ2X2NoYW5nZV92aWZfbGlua3Moc2RhdGEtXHUwMDNlbG9jYWwsIHNkYXRhLFxuLS1cbm5ldC9tYWM4MDIxMS9tYWluLmM9OTY9c3RhdGljIHUzMiBpZWVlODAyMTFfY2FsY19od19jb25mX2NoYW4oc3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwsXG4tLVxubmV0L21hYzgwMjExL21haW4uYy0xNzYtXHRcdFx0Y29udGludWU7XG5uZXQvbWFjODAyMTEvbWFpbi5jOjE3NzpcdFx0aWYgKHNkYXRhLVx1MDAzZXZpZi50eXBlID09IE5MODAyMTFfSUZUWVBFX0FQX1ZMQU4pXG5uZXQvbWFjODAyMTEvbWFpbi5jLTE3OC1cdFx0XHRjb250aW51ZTtcbi0tXG5uZXQvbWFjODAyMTEvbWFpbi5jPTMzNj12b2lkIGllZWU4MDIxMV9ic3NfaW5mb19jaGFuZ2Vfbm90aWZ5KHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLFxuLS1cbm5ldC9tYWM4MDIxMS9tYWluLmMtMzQ0LVxubmV0L21hYzgwMjExL21haW4uYzozNDU6XHRpZiAoIWNoYW5nZWQgfHwgc2RhdGEtXHUwMDNldmlmLnR5cGUgPT0gTkw4MDIxMV9JRlRZUEVfQVBfVkxBTilcbm5ldC9tYWM4MDIxMS9tYWluLmMtMzQ2LVx0XHRyZXR1cm47XG4tLVxubmV0L21hYzgwMjExL21haW4uYz0zODk9dm9pZCBpZWVlODAyMTFfdmlmX2NmZ19jaGFuZ2Vfbm90aWZ5KHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLFxuLS1cbm5ldC9tYWM4MDIxMS9tYWluLmMtMzk1LVxubmV0L21hYzgwMjExL21haW4uYzozOTY6XHRpZiAoIWNoYW5nZWQgfHwgc2RhdGEtXHUwMDNldmlmLnR5cGUgPT0gTkw4MDIxMV9JRlRZUEVfQVBfVkxBTilcbm5ldC9tYWM4MDIxMS9tYWluLmMtMzk3LVx0XHRyZXR1cm47XG4tLVxubmV0L21hYzgwMjExL21haW4uYz00MDI9dm9pZCBpZWVlODAyMTFfbGlua19pbmZvX2NoYW5nZV9ub3RpZnkoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsXG4tLVxubmV0L21hYzgwMjExL21haW4uYy00MTMtXHRzd2l0Y2ggKHNkYXRhLVx1MDAzZXZpZi50eXBlKSB7XG5uZXQvbWFjODAyMTEvbWFpbi5jOjQxNDpcdGNhc2UgTkw4MDIxMV9JRlRZUEVfQVBfVkxBTjpcbm5ldC9tYWM4MDIxMS9tYWluLmMtNDE1LVx0XHRyZXR1cm47XG4tLVxubmV0L21hYzgwMjExL21haW4uYz02Mzg9c3RhdGljIGludCBpZWVlODAyMTFfaWZhNl9jaGFuZ2VkKHN0cnVjdCBub3RpZmllcl9ibG9jayAqbmIsXG4tLVxubmV0L21hYzgwMjExL21haW4uYy02NTYtXHQgKiBGb3Igbm93IG9ubHkgc3VwcG9ydCBzdGF0aW9uIG1vZGUuIFRoaXMgaXMgbW9zdGx5IGJlY2F1c2Vcbm5ldC9tYWM4MDIxMS9tYWluLmM6NjU3Olx0ICogZG9pbmcgQVAgd291bGQgaGF2ZSB0byBoYW5kbGUgQVBfVkxBTiBpbiBzb21lIHdheSAuLi5cbm5ldC9tYWM4MDIxMS9tYWluLmMtNjU4LVx0ICovXG4tLVxubmV0L21hYzgwMjExL21haW4uYz02NzA9aWVlZTgwMjExX2RlZmF1bHRfbWdtdF9zdHlwZXNbTlVNX05MODAyMTFfSUZUWVBFU10gPSB7XG4tLVxubmV0L21hYzgwMjExL21haW4uYy03MDUtXHR9LFxubmV0L21hYzgwMjExL21haW4uYzo3MDY6XHRbTkw4MDIxMV9JRlRZUEVfQVBfVkxBTl0gPSB7XG5uZXQvbWFjODAyMTEvbWFpbi5jLTcwNy1cdFx0LyogY29weSBBUCAqL1xuLS1cbm5ldC9tYWM4MDIxMS9tYWluLmM9MTEzOD1pbnQgaWVlZTgwMjExX3JlZ2lzdGVyX2h3KHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3KVxuLS1cbm5ldC9tYWM4MDIxMS9tYWluLmMtMTM2Ni1cdC8qIGlmIGxvdy1sZXZlbCBkcml2ZXIgc3VwcG9ydHMgQVAsIHdlIGFsc28gc3VwcG9ydCBWTEFOLlxubmV0L21hYzgwMjExL21haW4uYzoxMzY3Olx0ICogZHJpdmVycyBhZHZlcnRpc2luZyBTV19DUllQVE9fQ09OVFJPTCBzaG91bGQgZW5hYmxlIEFQX1ZMQU5cbm5ldC9tYWM4MDIxMS9tYWluLmMtMTM2OC1cdCAqIGJhc2VkIG9uIHRoZWlyIHN1cHBvcnQgdG8gdHJhbnNtaXQgU1cgZW5jcnlwdGVkIHBhY2tldHMuXG4tLVxubmV0L21hYzgwMjExL21haW4uYy0xMzcxLVx0ICAgICFpZWVlODAyMTFfaHdfY2hlY2soXHUwMDI2bG9jYWwtXHUwMDNlaHcsIFNXX0NSWVBUT19DT05UUk9MKSkge1xubmV0L21hYzgwMjExL21haW4uYzoxMzcyOlx0XHRody1cdTAwM2V3aXBoeS1cdTAwM2VpbnRlcmZhY2VfbW9kZXMgfD0gQklUKE5MODAyMTFfSUZUWVBFX0FQX1ZMQU4pO1xubmV0L21hYzgwMjExL21haW4uYzoxMzczOlx0XHRody1cdTAwM2V3aXBoeS1cdTAwM2Vzb2Z0d2FyZV9pZnR5cGVzIHw9IEJJVChOTDgwMjExX0lGVFlQRV9BUF9WTEFOKTtcbm5ldC9tYWM4MDIxMS9tYWluLmMtMTM3NC1cdH1cbi0tXG5uZXQvbWFjODAyMTEvb2ZmY2hhbm5lbC5jPTgxMj1pbnQgaWVlZTgwMjExX21nbXRfdHgoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IHdpcmVsZXNzX2RldiAqd2Rldixcbi0tXG5uZXQvbWFjODAyMTEvb2ZmY2hhbm5lbC5jLTg1MC1cdGNhc2UgTkw4MDIxMV9JRlRZUEVfQVA6XG5uZXQvbWFjODAyMTEvb2ZmY2hhbm5lbC5jOjg1MTpcdGNhc2UgTkw4MDIxMV9JRlRZUEVfQVBfVkxBTjpcbm5ldC9tYWM4MDIxMS9vZmZjaGFubmVsLmMtODUyLVx0Y2FzZSBOTDgwMjExX0lGVFlQRV9QMlBfR086XG4tLVxubmV0L21hYzgwMjExL3BtLmM9MjE9aW50IF9faWVlZTgwMjExX3N1c3BlbmQoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsIHN0cnVjdCBjZmc4MDIxMV93b3dsYW4gKndvd2xhbilcbi0tXG5uZXQvbWFjODAyMTEvcG0uYy0xNTEtXHRcdHN3aXRjaCAoc2RhdGEtXHUwMDNldmlmLnR5cGUpIHtcbm5ldC9tYWM4MDIxMS9wbS5jOjE1MjpcdFx0Y2FzZSBOTDgwMjExX0lGVFlQRV9BUF9WTEFOOlxubmV0L21hYzgwMjExL3BtLmMtMTUzLVx0XHRjYXNlIE5MODAyMTFfSUZUWVBFX01PTklUT1I6XG4tLVxubmV0L21hYzgwMjExL3J4LmM9MTY4MT1zdGF0aWMgdm9pZCBzdGFfcHNfc3RhcnQoc3RydWN0IHN0YV9pbmZvICpzdGEpXG4tLVxubmV0L21hYzgwMjExL3J4LmMtMTY4OC1cdGlmIChzdGEtXHUwMDNlc2RhdGEtXHUwMDNldmlmLnR5cGUgPT0gTkw4MDIxMV9JRlRZUEVfQVAgfHxcbm5ldC9tYWM4MDIxMS9yeC5jOjE2ODk6XHQgICAgc3RhLVx1MDAzZXNkYXRhLVx1MDAzZXZpZi50eXBlID09IE5MODAyMTFfSUZUWVBFX0FQX1ZMQU4pXG5uZXQvbWFjODAyMTEvcnguYy0xNjkwLVx0XHRwcyA9IFx1MDAyNnNkYXRhLVx1MDAzZWJzcy1cdTAwM2Vwcztcbi0tXG5uZXQvbWFjODAyMTEvcnguYz0xODA2PWllZWU4MDIxMV9yeF9oX3VhcHNkX2FuZF9wc3BvbGwoc3RydWN0IGllZWU4MDIxMV9yeF9kYXRhICpyeClcbi0tXG5uZXQvbWFjODAyMTEvcnguYy0xODE1LVx0aWYgKHNkYXRhLVx1MDAzZXZpZi50eXBlICE9IE5MODAyMTFfSUZUWVBFX0FQIFx1MDAyNlx1MDAyNlxubmV0L21hYzgwMjExL3J4LmM6MTgxNjpcdCAgICBzZGF0YS1cdTAwM2V2aWYudHlwZSAhPSBOTDgwMjExX0lGVFlQRV9BUF9WTEFOKVxubmV0L21hYzgwMjExL3J4LmMtMTgxNy1cdFx0cmV0dXJuIFJYX0NPTlRJTlVFO1xuLS1cbm5ldC9tYWM4MDIxMS9yeC5jPTE4NTc9aWVlZTgwMjExX3J4X2hfc3RhX3Byb2Nlc3Moc3RydWN0IGllZWU4MDIxMV9yeF9kYXRhICpyeClcbi0tXG5uZXQvbWFjODAyMTEvcnguYy0xOTQxLVx0ICAgIChyeC1cdTAwM2VzZGF0YS1cdTAwM2V2aWYudHlwZSA9PSBOTDgwMjExX0lGVFlQRV9BUCB8fFxubmV0L21hYzgwMjExL3J4LmM6MTk0MjpcdCAgICAgcngtXHUwMDNlc2RhdGEtXHUwMDNldmlmLnR5cGUgPT0gTkw4MDIxMV9JRlRZUEVfQVBfVkxBTikpIHtcbm5ldC9tYWM4MDIxMS9yeC5jLTE5NDMtXHRcdGlmICh0ZXN0X3N0YV9mbGFnKHN0YSwgV0xBTl9TVEFfUFNfU1RBKSkge1xuLS1cbm5ldC9tYWM4MDIxMS9yeC5jLTE5NzAtXHRcdCAgICAocngtXHUwMDNlc2RhdGEtXHUwMDNldmlmLnR5cGUgPT0gTkw4MDIxMV9JRlRZUEVfQVAgfHxcbm5ldC9tYWM4MDIxMS9yeC5jOjE5NzE6XHRcdCAgICAgKHJ4LVx1MDAzZXNkYXRhLVx1MDAzZXZpZi50eXBlID09IE5MODAyMTFfSUZUWVBFX0FQX1ZMQU4gXHUwMDI2XHUwMDI2XG5uZXQvbWFjODAyMTEvcnguYy0xOTcyLVx0XHQgICAgICAhcngtXHUwMDNlc2RhdGEtXHUwMDNldS52bGFuLnN0YSkpKSB7XG4tLVxubmV0L21hYzgwMjExL3J4LmM9MjY0Nj1fX2llZWU4MDIxMV9kYXRhX3RvXzgwMjMoc3RydWN0IGllZWU4MDIxMV9yeF9kYXRhICpyeCwgYm9vbCAqcG9ydF9jb250cm9sKVxuLS1cbm5ldC9tYWM4MDIxMS9yeC5jLTI2NTUtXHRpZiAoaWVlZTgwMjExX2hhc19hNChoZHItXHUwMDNlZnJhbWVfY29udHJvbCkgXHUwMDI2XHUwMDI2XG5uZXQvbWFjODAyMTEvcnguYzoyNjU2Olx0ICAgIHNkYXRhLVx1MDAzZXZpZi50eXBlID09IE5MODAyMTFfSUZUWVBFX0FQX1ZMQU4gXHUwMDI2XHUwMDI2ICFzZGF0YS1cdTAwM2V1LnZsYW4uc3RhKVxubmV0L21hYzgwMjExL3J4LmMtMjY1Ny1cdFx0cmV0dXJuIFJYX0RST1BfVV9VTkVYUEVDVEVEX1ZMQU5fNEFERFI7XG4tLVxubmV0L21hYzgwMjExL3J4LmMtMjY2Ny1cdGlmIChpc19tdWx0aWNhc3RfZXRoZXJfYWRkcihoZHItXHUwMDNlYWRkcjEpIFx1MDAyNlx1MDAyNlxubmV0L21hYzgwMjExL3J4LmM6MjY2ODpcdCAgICBzZGF0YS1cdTAwM2V2aWYudHlwZSA9PSBOTDgwMjExX0lGVFlQRV9BUF9WTEFOIFx1MDAyNlx1MDAyNiBzZGF0YS1cdTAwM2V1LnZsYW4uc3RhKVxubmV0L21hYzgwMjExL3J4LmMtMjY2OS1cdFx0cmV0dXJuIFJYX0RST1BfVV9VTkVYUEVDVEVEX1ZMQU5fTUNBU1Q7XG4tLVxubmV0L21hYzgwMjExL3J4LmM9Mjc4OT1pZWVlODAyMTFfZGVsaXZlcl9za2Ioc3RydWN0IGllZWU4MDIxMV9yeF9kYXRhICpyeClcbi0tXG5uZXQvbWFjODAyMTEvcnguYy0yODEzLVx0aWYgKChzZGF0YS1cdTAwM2V2aWYudHlwZSA9PSBOTDgwMjExX0lGVFlQRV9BUCB8fFxubmV0L21hYzgwMjExL3J4LmM6MjgxNDpcdCAgICAgc2RhdGEtXHUwMDNldmlmLnR5cGUgPT0gTkw4MDIxMV9JRlRZUEVfQVBfVkxBTikgXHUwMDI2XHUwMDI2XG5uZXQvbWFjODAyMTEvcnguYy0yODE1LVx0ICAgICEoc2RhdGEtXHUwMDNlZmxhZ3MgXHUwMDI2IElFRUU4MDIxMV9TREFUQV9ET05UX0JSSURHRV9QQUNLRVRTKSBcdTAwMjZcdTAwMjZcbm5ldC9tYWM4MDIxMS9yeC5jLTI4MTYtXHQgICAgZWhkci1cdTAwM2VoX3Byb3RvICE9IHJ4LVx1MDAzZXNkYXRhLVx1MDAzZWNvbnRyb2xfcG9ydF9wcm90b2NvbCBcdTAwMjZcdTAwMjZcbm5ldC9tYWM4MDIxMS9yeC5jOjI4MTc6XHQgICAgKHNkYXRhLVx1MDAzZXZpZi50eXBlICE9IE5MODAyMTFfSUZUWVBFX0FQX1ZMQU4gfHwgIXNkYXRhLVx1MDAzZXUudmxhbi5zdGEpKSB7XG5uZXQvbWFjODAyMTEvcnguYy0yODE4LVx0XHRpZiAoaXNfbXVsdGljYXN0X2V0aGVyX2FkZHIoZWhkci1cdTAwM2VoX2Rlc3QpIFx1MDAyNlx1MDAyNlxuLS1cbm5ldC9tYWM4MDIxMS9yeC5jPTMxNDA9X19pZWVlODAyMTFfcnhfaF9hbXNkdShzdHJ1Y3QgaWVlZTgwMjExX3J4X2RhdGEgKnJ4LCB1OCBkYXRhX29mZnNldClcbi0tXG5uZXQvbWFjODAyMTEvcnguYy0zMTU0LVx0XHRjYXNlIE5MODAyMTFfSUZUWVBFX0FQOlxubmV0L21hYzgwMjExL3J4LmM6MzE1NTpcdFx0Y2FzZSBOTDgwMjExX0lGVFlQRV9BUF9WTEFOOlxubmV0L21hYzgwMjExL3J4LmMtMzE1Ni1cdFx0XHRjaGVja19kYSA9IE5VTEw7XG4tLVxubmV0L21hYzgwMjExL3J4LmM9MzIyNj1pZWVlODAyMTFfcnhfaF9hbXNkdShzdHJ1Y3QgaWVlZTgwMjExX3J4X2RhdGEgKnJ4KVxuLS1cbm5ldC9tYWM4MDIxMS9yeC5jLTMyNDMtXHRcdHN3aXRjaCAocngtXHUwMDNlc2RhdGEtXHUwMDNldmlmLnR5cGUpIHtcbm5ldC9tYWM4MDIxMS9yeC5jOjMyNDQ6XHRcdGNhc2UgTkw4MDIxMV9JRlRZUEVfQVBfVkxBTjpcbm5ldC9tYWM4MDIxMS9yeC5jLTMyNDUtXHRcdFx0aWYgKCFyeC1cdTAwM2VzZGF0YS1cdTAwM2V1LnZsYW4uc3RhKVxuLS1cbm5ldC9tYWM4MDIxMS9yeC5jPTMyODM9aWVlZTgwMjExX3J4X2hfZGF0YShzdHJ1Y3QgaWVlZTgwMjExX3J4X2RhdGEgKnJ4KVxuLS1cbm5ldC9tYWM4MDIxMS9yeC5jLTMzMzgtXG5uZXQvbWFjODAyMTEvcnguYzozMzM5Olx0aWYgKHJ4LVx1MDAzZXNkYXRhLVx1MDAzZXZpZi50eXBlID09IE5MODAyMTFfSUZUWVBFX0FQX1ZMQU4gXHUwMDI2XHUwMDI2XG5uZXQvbWFjODAyMTEvcnguYy0zMzQwLVx0ICAgIHVubGlrZWx5KHBvcnRfY29udHJvbCkgXHUwMDI2XHUwMDI2IHNkYXRhLVx1MDAzZWJzcykge1xuLS1cbm5ldC9tYWM4MDIxMS9yeC5jPTM2MjM9aWVlZTgwMjExX3J4X2hfYWN0aW9uKHN0cnVjdCBpZWVlODAyMTFfcnhfZGF0YSAqcngpXG4tLVxubmV0L21hYzgwMjExL3J4LmMtMzY0OS1cdFx0ICAgIHNkYXRhLVx1MDAzZXZpZi50eXBlICE9IE5MODAyMTFfSUZUWVBFX01FU0hfUE9JTlQgXHUwMDI2XHUwMDI2XG5uZXQvbWFjODAyMTEvcnguYzozNjUwOlx0XHQgICAgc2RhdGEtXHUwMDNldmlmLnR5cGUgIT0gTkw4MDIxMV9JRlRZUEVfQVBfVkxBTiBcdTAwMjZcdTAwMjZcbm5ldC9tYWM4MDIxMS9yeC5jLTM2NTEtXHRcdCAgICBzZGF0YS1cdTAwM2V2aWYudHlwZSAhPSBOTDgwMjExX0lGVFlQRV9BUCBcdTAwMjZcdTAwMjZcbi0tXG5uZXQvbWFjODAyMTEvcnguYy0zNjY1LVx0XHRcdGlmIChzZGF0YS1cdTAwM2V2aWYudHlwZSAhPSBOTDgwMjExX0lGVFlQRV9BUCBcdTAwMjZcdTAwMjZcbm5ldC9tYWM4MDIxMS9yeC5jOjM2NjY6XHRcdFx0ICAgIHNkYXRhLVx1MDAzZXZpZi50eXBlICE9IE5MODAyMTFfSUZUWVBFX0FQX1ZMQU4pXG5uZXQvbWFjODAyMTEvcnguYy0zNjY3LVx0XHRcdFx0Z290byBoYW5kbGVkO1xuLS1cbm5ldC9tYWM4MDIxMS9yeC5jLTM3MzktXHRcdCAgICBzZGF0YS1cdTAwM2V2aWYudHlwZSAhPSBOTDgwMjExX0lGVFlQRV9NRVNIX1BPSU5UIFx1MDAyNlx1MDAyNlxubmV0L21hYzgwMjExL3J4LmM6Mzc0MDpcdFx0ICAgIHNkYXRhLVx1MDAzZXZpZi50eXBlICE9IE5MODAyMTFfSUZUWVBFX0FQX1ZMQU4gXHUwMDI2XHUwMDI2XG5uZXQvbWFjODAyMTEvcnguYy0zNzQxLVx0XHQgICAgc2RhdGEtXHUwMDNldmlmLnR5cGUgIT0gTkw4MDIxMV9JRlRZUEVfQVAgXHUwMDI2XHUwMDI2XG4tLVxubmV0L21hYzgwMjExL3J4LmMtMzc2Ny1cdFx0ICAgIHNkYXRhLVx1MDAzZXZpZi50eXBlICE9IE5MODAyMTFfSUZUWVBFX01FU0hfUE9JTlQgXHUwMDI2XHUwMDI2XG5uZXQvbWFjODAyMTEvcnguYzozNzY4Olx0XHQgICAgc2RhdGEtXHUwMDNldmlmLnR5cGUgIT0gTkw4MDIxMV9JRlRZUEVfQVBfVkxBTiBcdTAwMjZcdTAwMjZcbm5ldC9tYWM4MDIxMS9yeC5jLTM3NjktXHRcdCAgICBzZGF0YS1cdTAwM2V2aWYudHlwZSAhPSBOTDgwMjExX0lGVFlQRV9BUCBcdTAwMjZcdTAwMjZcbi0tXG5uZXQvbWFjODAyMTEvcnguYz00MDcxPWllZWU4MDIxMV9yeF9oX2FjdGlvbl9yZXR1cm4oc3RydWN0IGllZWU4MDIxMV9yeF9kYXRhICpyeClcbi0tXG5uZXQvbWFjODAyMTEvcnguYy00MDkyLVx0ICAgIChzZGF0YS1cdTAwM2V2aWYudHlwZSA9PSBOTDgwMjExX0lGVFlQRV9BUCB8fFxubmV0L21hYzgwMjExL3J4LmM6NDA5MzpcdCAgICAgc2RhdGEtXHUwMDNldmlmLnR5cGUgPT0gTkw4MDIxMV9JRlRZUEVfQVBfVkxBTikpXG5uZXQvbWFjODAyMTEvcnguYy00MDk0LVx0XHRyZXR1cm4gUlhfRFJPUF9VX01BTEZPUk1FRF9BQ1RJT047XG4tLVxubmV0L21hYzgwMjExL3J4LmM9NDUwNj1zdGF0aWMgYm9vbCBpZWVlODAyMTFfYWNjZXB0X2ZyYW1lKHN0cnVjdCBpZWVlODAyMTFfcnhfZGF0YSAqcngpXG4tLVxubmV0L21hYzgwMjExL3J4LmMtNDU4Mi1cdFx0cmV0dXJuIGV0aGVyX2FkZHJfZXF1YWwoc2RhdGEtXHUwMDNldmlmLmFkZHIsIGhkci1cdTAwM2VhZGRyMSk7XG5uZXQvbWFjODAyMTEvcnguYzo0NTgzOlx0Y2FzZSBOTDgwMjExX0lGVFlQRV9BUF9WTEFOOlxubmV0L21hYzgwMjExL3J4LmMtNDU4NC1cdGNhc2UgTkw4MDIxMV9JRlRZUEVfQVA6XG4tLVxubmV0L21hYzgwMjExL3J4LmM9NDcxMz12b2lkIGllZWU4MDIxMV9jaGVja19mYXN0X3J4KHN0cnVjdCBzdGFfaW5mbyAqc3RhKVxuLS1cbm5ldC9tYWM4MDIxMS9yeC5jLTQ3NzItXHRcdGJyZWFrO1xubmV0L21hYzgwMjExL3J4LmM6NDc3MzpcdGNhc2UgTkw4MDIxMV9JRlRZUEVfQVBfVkxBTjpcbm5ldC9tYWM4MDIxMS9yeC5jLTQ3NzQtXHRjYXNlIE5MODAyMTFfSUZUWVBFX0FQOlxuLS1cbm5ldC9tYWM4MDIxMS9yeC5jLTQ3ODUtXHRcdFx0IShzZGF0YS1cdTAwM2VmbGFncyBcdTAwMjYgSUVFRTgwMjExX1NEQVRBX0RPTlRfQlJJREdFX1BBQ0tFVFMpIFx1MDAyNlx1MDAyNlxubmV0L21hYzgwMjExL3J4LmM6NDc4NjpcdFx0XHQoc2RhdGEtXHUwMDNldmlmLnR5cGUgIT0gTkw4MDIxMV9JRlRZUEVfQVBfVkxBTiB8fFxubmV0L21hYzgwMjExL3J4LmMtNDc4Ny1cdFx0XHQgIXNkYXRhLVx1MDAzZXUudmxhbi5zdGEpO1xubmV0L21hYzgwMjExL3J4LmMtNDc4OC1cbm5ldC9tYWM4MDIxMS9yeC5jOjQ3ODk6XHRcdGlmIChzZGF0YS1cdTAwM2V2aWYudHlwZSA9PSBOTDgwMjExX0lGVFlQRV9BUF9WTEFOIFx1MDAyNlx1MDAyNlxubmV0L21hYzgwMjExL3J4LmMtNDc5MC1cdFx0ICAgIHNkYXRhLVx1MDAzZXUudmxhbi5zdGEpIHtcbi0tXG5uZXQvbWFjODAyMTEvcnguYz01MzQ4PXN0YXRpYyB2b2lkIF9faWVlZTgwMjExX3J4X2hhbmRsZV9wYWNrZXQoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXG4tLVxubmV0L21hYzgwMjExL3J4LmMtNTQ5MS1cdFx0aWYgKHNkYXRhLVx1MDAzZXZpZi50eXBlID09IE5MODAyMTFfSUZUWVBFX01PTklUT1IgfHxcbm5ldC9tYWM4MDIxMS9yeC5jOjU0OTI6XHRcdCAgICBzZGF0YS1cdTAwM2V2aWYudHlwZSA9PSBOTDgwMjExX0lGVFlQRV9BUF9WTEFOKVxubmV0L21hYzgwMjExL3J4LmMtNTQ5My1cdFx0XHRjb250aW51ZTtcbi0tXG5uZXQvbWFjODAyMTEvc3RhX2luZm8uYz0xMzI9c3RhdGljIHZvaWQgX19jbGVhbnVwX3NpbmdsZV9zdGEoc3RydWN0IHN0YV9pbmZvICpzdGEpXG4tLVxubmV0L21hYzgwMjExL3N0YV9pbmZvLmMtMTQzLVx0XHRpZiAoc3RhLVx1MDAzZXNkYXRhLVx1MDAzZXZpZi50eXBlID09IE5MODAyMTFfSUZUWVBFX0FQIHx8XG5uZXQvbWFjODAyMTEvc3RhX2luZm8uYzoxNDQ6XHRcdCAgICBzdGEtXHUwMDNlc2RhdGEtXHUwMDNldmlmLnR5cGUgPT0gTkw4MDIxMV9JRlRZUEVfQVBfVkxBTilcbm5ldC9tYWM4MDIxMS9zdGFfaW5mby5jLTE0NS1cdFx0XHRwcyA9IFx1MDAyNnNkYXRhLVx1MDAzZWJzcy1cdTAwM2Vwcztcbi0tXG5uZXQvbWFjODAyMTEvc3RhX2luZm8uYz0xMTAwPXN0YXRpYyB2b2lkIF9fc3RhX2luZm9fcmVjYWxjX3RpbShzdHJ1Y3Qgc3RhX2luZm8gKnN0YSwgYm9vbCBpZ25vcmVfcGVuZGluZylcbi0tXG5uZXQvbWFjODAyMTEvc3RhX2luZm8uYy0xMTA5LVx0aWYgKHN0YS1cdTAwM2VzZGF0YS1cdTAwM2V2aWYudHlwZSA9PSBOTDgwMjExX0lGVFlQRV9BUCB8fFxubmV0L21hYzgwMjExL3N0YV9pbmZvLmM6MTExMDpcdCAgICBzdGEtXHUwMDNlc2RhdGEtXHUwMDNldmlmLnR5cGUgPT0gTkw4MDIxMV9JRlRZUEVfQVBfVkxBTikge1xubmV0L21hYzgwMjExL3N0YV9pbmZvLmMtMTExMS1cdFx0aWYgKFdBUk5fT05fT05DRSghc3RhLVx1MDAzZXNkYXRhLVx1MDAzZWJzcykpXG4tLVxubmV0L21hYzgwMjExL3N0YV9pbmZvLmM9MTMwMz1zdGF0aWMgaW50IF9fbXVzdF9jaGVjayBfX3N0YV9pbmZvX2Rlc3Ryb3lfcGFydDEoc3RydWN0IHN0YV9pbmZvICpzdGEpXG4tLVxubmV0L21hYzgwMjExL3N0YV9pbmZvLmMtMTM4MC1cbm5ldC9tYWM4MDIxMS9zdGFfaW5mby5jOjEzODE6XHRpZiAoc2RhdGEtXHUwMDNldmlmLnR5cGUgPT0gTkw4MDIxMV9JRlRZUEVfQVBfVkxBTiBcdTAwMjZcdTAwMjZcbm5ldC9tYWM4MDIxMS9zdGFfaW5mby5jLTEzODItXHQgICAgcmN1X2FjY2Vzc19wb2ludGVyKHNkYXRhLVx1MDAzZXUudmxhbi5zdGEpID09IHN0YSlcbi0tXG5uZXQvbWFjODAyMTEvc3RhX2luZm8uYz0xMzg4PXN0YXRpYyBpbnQgX3N0YV9pbmZvX21vdmVfc3RhdGUoc3RydWN0IHN0YV9pbmZvICpzdGEsXG4tLVxubmV0L21hYzgwMjExL3N0YV9pbmZvLmMtMTUwNS1cdFx0fVxubmV0L21hYzgwMjExL3N0YV9pbmZvLmM6MTUwNjpcdFx0aWYgKHN0YS1cdTAwM2VzZGF0YS1cdTAwM2V2aWYudHlwZSA9PSBOTDgwMjExX0lGVFlQRV9BUF9WTEFOIHx8XG5uZXQvbWFjODAyMTEvc3RhX2luZm8uYy0xNTA3LVx0XHQgICAgc3RhLVx1MDAzZXNkYXRhLVx1MDAzZXZpZi50eXBlID09IE5MODAyMTFfSUZUWVBFX0FQKVxuLS1cbm5ldC9tYWM4MDIxMS9zdGFfaW5mby5jPTE4MjA9dm9pZCBpZWVlODAyMTFfc3RhX3BzX2RlbGl2ZXJfd2FrZXVwKHN0cnVjdCBzdGFfaW5mbyAqc3RhKVxuLS1cbm5ldC9tYWM4MDIxMS9zdGFfaW5mby5jLTE4MjgtXG5uZXQvbWFjODAyMTEvc3RhX2luZm8uYzoxODI5Olx0aWYgKHNkYXRhLVx1MDAzZXZpZi50eXBlID09IE5MODAyMTFfSUZUWVBFX0FQX1ZMQU4pXG5uZXQvbWFjODAyMTEvc3RhX2luZm8uYy0xODMwLVx0XHRzZGF0YSA9IGNvbnRhaW5lcl9vZihzZGF0YS1cdTAwM2Vic3MsIHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEsXG4tLVxubmV0L21hYzgwMjExL3N0YV9pbmZvLmM9MzY3OT1pZWVlODAyMTFfc3RhX3VzYWJsZV9idyhzdHJ1Y3QgbGlua19zdGFfaW5mbyAqbGlua19zdGEsXG4tLVxubmV0L21hYzgwMjExL3N0YV9pbmZvLmMtMzY4Ny1cbm5ldC9tYWM4MDIxMS9zdGFfaW5mby5jOjM2ODg6XHRpZiAoc2RhdGEtXHUwMDNldmlmLnR5cGUgPT0gTkw4MDIxMV9JRlRZUEVfQVBfVkxBTikge1xubmV0L21hYzgwMjExL3N0YV9pbmZvLmMtMzY4OS1cdFx0c2RhdGEgPSBnZXRfYnNzX3NkYXRhKHNkYXRhKTtcbi0tXG5uZXQvbWFjODAyMTEvdGtpcC5jPTIzOT1pbnQgaWVlZTgwMjExX3RraXBfZGVjcnlwdF9kYXRhKHN0cnVjdCBhcmM0X2N0eCAqY3R4LFxuLS1cbm5ldC9tYWM4MDIxMS90a2lwLmMtMjk4LVxubmV0L21hYzgwMjExL3RraXAuYzoyOTk6XHRcdGlmIChzZGF0YS1cdTAwM2V2aWYudHlwZSA9PSBOTDgwMjExX0lGVFlQRV9BUF9WTEFOKVxubmV0L21hYzgwMjExL3RraXAuYy0zMDAtXHRcdFx0c2RhdGEgPSBjb250YWluZXJfb2Yoa2V5LVx1MDAzZXNkYXRhLVx1MDAzZWJzcyxcbi0tXG5uZXQvbWFjODAyMTEvdHguYz0zNzg9aWVlZTgwMjExX3R4X2hfbXVsdGljYXN0X3BzX2J1ZihzdHJ1Y3QgaWVlZTgwMjExX3R4X2RhdGEgKnR4KVxuLS1cbm5ldC9tYWM4MDIxMS90eC5jLTM5My1cdGlmICh0eC1cdTAwM2VzZGF0YS1cdTAwM2V2aWYudHlwZSA9PSBOTDgwMjExX0lGVFlQRV9BUCB8fFxubmV0L21hYzgwMjExL3R4LmM6Mzk0Olx0ICAgIHR4LVx1MDAzZXNkYXRhLVx1MDAzZXZpZi50eXBlID09IE5MODAyMTFfSUZUWVBFX0FQX1ZMQU4pIHtcbm5ldC9tYWM4MDIxMS90eC5jLTM5NS1cdFx0aWYgKCF0eC1cdTAwM2VzZGF0YS1cdTAwM2Vic3MpXG4tLVxubmV0L21hYzgwMjExL3R4LmM9MTIwOD1pZWVlODAyMTFfdHhfcHJlcGFyZShzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSxcbi0tXG5uZXQvbWFjODAyMTEvdHguYy0xMjM2LVx0fSBlbHNlIHtcbm5ldC9tYWM4MDIxMS90eC5jOjEyMzc6XHRcdGlmIChzZGF0YS1cdTAwM2V2aWYudHlwZSA9PSBOTDgwMjExX0lGVFlQRV9BUF9WTEFOKSB7XG5uZXQvbWFjODAyMTEvdHguYy0xMjM4LVx0XHRcdHR4LVx1MDAzZXN0YSA9IHJjdV9kZXJlZmVyZW5jZShzZGF0YS1cdTAwM2V1LnZsYW4uc3RhKTtcbi0tXG5uZXQvbWFjODAyMTEvdHguYz0xNDgzPXZvaWQgaWVlZTgwMjExX3R4cV9yZW1vdmVfdmxhbihzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbCxcbi0tXG5uZXQvbWFjODAyMTEvdHguYy0xNDkwLVxubmV0L21hYzgwMjExL3R4LmM6MTQ5MTpcdGlmIChXQVJOX09OKHNkYXRhLVx1MDAzZXZpZi50eXBlICE9IE5MODAyMTFfSUZUWVBFX0FQX1ZMQU4pKVxubmV0L21hYzgwMjExL3R4LmMtMTQ5Mi1cdFx0cmV0dXJuO1xuLS1cbm5ldC9tYWM4MDIxMS90eC5jPTE2NTE9c3RhdGljIGJvb2wgaWVlZTgwMjExX3F1ZXVlX3NrYihzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbCxcbi0tXG5uZXQvbWFjODAyMTEvdHguYy0xNjYxLVxubmV0L21hYzgwMjExL3R4LmM6MTY2MjpcdGlmIChzZGF0YS1cdTAwM2V2aWYudHlwZSA9PSBOTDgwMjExX0lGVFlQRV9BUF9WTEFOKVxuXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA2IDIxOjA3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI1ODE5CgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogMTkxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkludmVzdGlnYXRpbmcgQVBfVkxBTiBDb25maWd1cmF0aW9uKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIGFuZCB0aGUgaW50ZXJmYWNlIHR5cGUgYmVpbmcgdXNlZCBpcyBBUF9WTEFOLiBNeSBpbml0aWFsIHRob3VnaHQgaXMsICYjMzQ7QWxyaWdodCwgZG9lcyB0aGlzIEFQX1ZMQU4gdHlwZSBoYXZlIGFueSBzcGVjaWZpYyBjb25maWd1cmF0aW9uIG9wdGlvbnMgSSBuZWVkIHRvIGJlIGF3YXJlIG9mPyYjMzQ7IE15IG1pbmQgaW1tZWRpYXRlbHkganVtcHMgdG8gY2hlY2tpbmcgZm9yIGEgZGVkaWNhdGVkIGNvbmZpZy4gSGFuZyBvbiwgKk5MODAyMTFfSUZUWVBFX0FQX1ZMQU4qLi4udGhhdCYjMzk7cyBqdXN0IGFuIGVudW0gdmFsdWUsIGlzbiYjMzk7dCBpdD8gUmlnaHQuIE9rYXksIHNvIEkgc2hvdWxkIGJlIGxvb2tpbmcgYXQgdGhlIGFjdHVhbCBjb25maWd1cmF0aW9uIGZpbGVzLiBJJiMzOTtsbCBuZWVkIHRvIGRpZyBpbnRvIGBuZXQvd2lyZWxlc3MvS2NvbmZpZ2Agb3IgbWF5YmUgZXZlbiBgbmV0L21hYzgwMjExL0tjb25maWdgLgoKV2FpdCBhIG1pbnV0ZSwgQVBfVkxBTiBzdXBwb3J0IGlzIHByZXR0eSBzdGFuZGFyZCBpbiBtYWM4MDIxMSwgKmlmKiBBUCBzdXBwb3J0IGlzIGVuYWJsZWQgdG8gYmVnaW4gd2l0aCwgc28gSSBkb24mIzM5O3QgdGhpbmsgdGhlcmUmIzM5O3MgYSB1bmlxdWUgc2V0dGluZy4gTGV0IG1lIGp1c3QgY29uZmlybSB0aGF0IGJ5IGdvaW5nIGJhY2sgYW5kIGNoZWNraW5nIGBuZXQvbWFjODAyMTEvS2NvbmZpZ2AuIEFoLCBub3BlLCBub3RoaW5nIHNwZWNpZmljIGZvciBBUF9WTEFOLiBJbnRlcmVzdGluZy4gU28sIGRvZXMgKkFQKiBpdHNlbGYgaGF2ZSBhIGNvbmZpZ3VyYXRpb24gb3B0aW9uPyBObywgbWFjODAyMTEgc3VwcG9ydHMgQVAgbW9kZSBieSBkZWZhdWx0LiBIbW0uCgpSaWdodCwgc28gd2hhdCYjMzk7cyB0aGUgY29yZSBoZXJlPyAqTUFDODAyMTEqIGlzIHRoZSBwcmltYXJ5IGNvbmZpZ3VyYXRpb24sIG9idmlvdXNseS4gQnV0IGFyZSB0aGVyZSBhbnkgb3RoZXIgc2V0dGluZ3MgdGhhdCBtaWdodCBpbmRpcmVjdGx5IGFmZmVjdCBBUF9WTEFOIGJlaGF2aW9yPyBJIHNob3VsZCBwcm9iYWJseSBicm9hZGVuIG15IHNlYXJjaC4gTGV0IG1lIHNjYW4gYG5ldC93aXJlbGVzcy9LY29uZmlnYCBhbmQgc2VlIGlmIGFueXRoaW5nIGVsc2UganVtcHMgb3V0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNiAyMTowNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgQ0ZHODAyMTEmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvd2lyZWxlc3MvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvd2lyZWxlc3MvS2NvbmZpZz0xND1jb25maWcgV0VYVF9QUklWXG4tLVxubmV0L3dpcmVsZXNzL0tjb25maWctMTYtXG5uZXQvd2lyZWxlc3MvS2NvbmZpZzoxNzpjb25maWcgQ0ZHODAyMTFcbm5ldC93aXJlbGVzcy9LY29uZmlnLTE4LVx0dHJpc3RhdGUgXCYjMzQ7Y2ZnODAyMTEgLSB3aXJlbGVzcyBjb25maWd1cmF0aW9uIEFQSVwmIzM0O1xuLS1cbm5ldC93aXJlbGVzcy9LY29uZmlnPTM4PWNvbmZpZyBOTDgwMjExX1RFU1RNT0RFXG4tLVxubmV0L3dpcmVsZXNzL0tjb25maWctNTEtXG5uZXQvd2lyZWxlc3MvS2NvbmZpZzo1Mjpjb25maWcgQ0ZHODAyMTFfREVWRUxPUEVSX1dBUk5JTkdTXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy01My1cdGJvb2wgXCYjMzQ7ZW5hYmxlIGRldmVsb3BlciB3YXJuaW5nc1wmIzM0O1xuLS1cbm5ldC93aXJlbGVzcy9LY29uZmlnLTY3LVxubmV0L3dpcmVsZXNzL0tjb25maWc6Njg6Y29uZmlnIENGRzgwMjExX0NFUlRJRklDQVRJT05fT05VU1xubmV0L3dpcmVsZXNzL0tjb25maWctNjktXHRib29sIFwmIzM0O2NmZzgwMjExIGNlcnRpZmljYXRpb24gb251c1wmIzM0O1xuLS1cbm5ldC93aXJlbGVzcy9LY29uZmlnLTg4LVxubmV0L3dpcmVsZXNzL0tjb25maWc6ODk6Y29uZmlnIENGRzgwMjExX1JFUVVJUkVfU0lHTkVEX1JFR0RCXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy05MC1cdGJvb2wgXCYjMzQ7cmVxdWlyZSByZWdkYiBzaWduYXR1cmVcJiMzNDsgaWYgQ0ZHODAyMTFfQ0VSVElGSUNBVElPTl9PTlVTXG4tLVxubmV0L3dpcmVsZXNzL0tjb25maWctOTgtXG5uZXQvd2lyZWxlc3MvS2NvbmZpZzo5OTpjb25maWcgQ0ZHODAyMTFfVVNFX0tFUk5FTF9SRUdEQl9LRVlTXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xMDAtXHRib29sIFwmIzM0O2FsbG93IHJlZ2RiIGtleXMgc2hpcHBlZCB3aXRoIHRoZSBrZXJuZWxcJiMzNDsgaWYgQ0ZHODAyMTFfQ0VSVElGSUNBVElPTl9PTlVTXG4tLVxubmV0L3dpcmVsZXNzL0tjb25maWctMTEwLVxubmV0L3dpcmVsZXNzL0tjb25maWc6MTExOmNvbmZpZyBDRkc4MDIxMV9FWFRSQV9SRUdEQl9LRVlESVJcbm5ldC93aXJlbGVzcy9LY29uZmlnLTExMi1cdHN0cmluZyBcJiMzNDthZGRpdGlvbmFsIHJlZ2RiIGtleSBkaXJlY3RvcnlcJiMzNDsgaWYgQ0ZHODAyMTFfQ0VSVElGSUNBVElPTl9PTlVTXG4tLVxubmV0L3dpcmVsZXNzL0tjb25maWctMTIxLVxubmV0L3dpcmVsZXNzL0tjb25maWc6MTIyOmNvbmZpZyBDRkc4MDIxMV9SRUdfQ0VMTFVMQVJfSElOVFNcbm5ldC93aXJlbGVzcy9LY29uZmlnLTEyMy1cdGJvb2wgXCYjMzQ7Y2ZnODAyMTEgcmVndWxhdG9yeSBzdXBwb3J0IGZvciBjZWxsdWxhciBiYXNlIHN0YXRpb24gaGludHNcJiMzNDtcbi0tXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xMzQtXG5uZXQvd2lyZWxlc3MvS2NvbmZpZzoxMzU6Y29uZmlnIENGRzgwMjExX1JFR19SRUxBWF9OT19JUlxubmV0L3dpcmVsZXNzL0tjb25maWctMTM2LVx0Ym9vbCBcJiMzNDtjZmc4MDIxMSBzdXBwb3J0IGZvciBOT19JUiByZWxheGF0aW9uXCYjMzQ7XG4tLVxubmV0L3dpcmVsZXNzL0tjb25maWctMTU4LVxubmV0L3dpcmVsZXNzL0tjb25maWc6MTU5OmNvbmZpZyBDRkc4MDIxMV9ERUZBVUxUX1BTXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xNjAtXHRib29sIFwmIzM0O2VuYWJsZSBwb3dlcnNhdmUgYnkgZGVmYXVsdFwmIzM0O1xuLS1cbm5ldC93aXJlbGVzcy9LY29uZmlnLTE2OC1cbm5ldC93aXJlbGVzcy9LY29uZmlnOjE2OTpjb25maWcgQ0ZHODAyMTFfREVCVUdGU1xubmV0L3dpcmVsZXNzL0tjb25maWctMTcwLVx0Ym9vbCBcJiMzNDtjZmc4MDIxMSBEZWJ1Z0ZTIGVudHJpZXNcJiMzNDtcbi0tXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xNzYtXG5uZXQvd2lyZWxlc3MvS2NvbmZpZzoxNzc6Y29uZmlnIENGRzgwMjExX0NSREFfU1VQUE9SVFxubmV0L3dpcmVsZXNzL0tjb25maWctMTc4LVx0Ym9vbCBcJiMzNDtzdXBwb3J0IENSREFcJiMzNDsgaWYgRVhQRVJUXG4tLVxubmV0L3dpcmVsZXNzL0tjb25maWctMTg2LVxubmV0L3dpcmVsZXNzL0tjb25maWc6MTg3OmNvbmZpZyBDRkc4MDIxMV9XRVhUXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xODgtXHRib29sIFwmIzM0O2NmZzgwMjExIHdpcmVsZXNzIGV4dGVuc2lvbnMgY29tcGF0aWJpbGl0eVwmIzM0O1xuLS1cbm5ldC93aXJlbGVzcy9LY29uZmlnLTE5My1cbm5ldC93aXJlbGVzcy9LY29uZmlnOjE5NDpjb25maWcgQ0ZHODAyMTFfS1VOSVRfVEVTVFxubmV0L3dpcmVsZXNzL0tjb25maWctMTk1LVx0dHJpc3RhdGUgXCYjMzQ7S1VuaXQgdGVzdHMgZm9yIGNmZzgwMjExXCYjMzQ7IGlmICFLVU5JVF9BTExfVEVTVFNcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDYgMjE6MDc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjcyODgKCQkJCQkJCW91dHB1dDogMTM0CgkJCQkJCQl0aG91Z2h0czogMjQzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFuYWx5c2lzIG9mIE1BQzgwMjExIGFuZCBQb3RlbnRpYWwgRnV6emluZyBUYXJnZXRzKioKCk9rYXksIHNvIEkmIzM5O20gZGl2aW5nIGludG8gdGhlIGBNQUM4MDIxMWAgY29uZmlndXJhdGlvbiwgYW5kIG15IGluaXRpYWwgdGhvdWdodCBpcyB0aGF0IGBpZWVlODAyMTFfZG9fc3RvcGAgaXMgYSBrZXkgZm9jdXMgcG9pbnQuIEl0IGZlZWxzIGxpa2UgdGhpcyBjb3VsZCBiZSBhbiBpbnRlcmVzdGluZyBmdW5jdGlvbiB0byBpbnZlc3RpZ2F0ZS4gSG9sZCBvbi4uLiBpdCYjMzk7cyBhIHN0YXRpYyBmdW5jdGlvbi4gVGhhdCBpbml0aWFsbHkgdGhyb3dzIGEgd3JlbmNoIGluIHRoZSB3b3JrcywgYnV0IHRoZW4gSSByZW1lbWJlciBuZXRsaW5rIGNvbW1hbmRzIGNhbiBiZSB1c2VkIHRvIHN0b3AgdGhlIGludGVyZmFjZSwgcG90ZW50aWFsbHkgdHJpZ2dlcmluZyBpdC4gU28sIHRoYXQmIzM5O3MgcHJvbWlzaW5nOyBpdCAqY291bGQqIGJlIGZ1enplZC4KCk5vdywgbGV0JiMzOTtzIGV4cGxvcmUgdGhpcyBmdXJ0aGVyLiBJcyB0aGVyZSBhbm90aGVyIGZ1bmN0aW9uIGRpcmVjdGx5IHJlbGF0ZWQ/IEFoLCB5ZXMsIGBpZWVlODAyMTFfc3RvcGAgY2FsbHMgYGllZWU4MDIxMV9kb19zdG9wYC4gQnV0LCBhZ2FpbiwgYmVjYXVzZSBgaWVlZTgwMjExX2RvX3N0b3BgIGlzIHN0YXRpYywgaW5saW5pbmcgaXMgYSBwb3NzaWJpbGl0eS4gSG93ZXZlciwgaXQgbG9va3MgZmFpcmx5IHN1YnN0YW50aWFsLiBHaXZlbiBpdHMgc2l6ZSwgaXQgcHJvYmFibHkgaXNuJiMzOTt0LgoKSSBuZWVkIHRvIG1ha2Ugc3VyZSBJJiMzOTttIG9uIHRoZSByaWdodCB0cmFjayBoZXJlLiBJcyBgaWVlZTgwMjExX2RvX3N0b3BgIHJlYWxseSB0aGUgYmVzdCBmb2N1cyBzeW1ib2w/IExldCYjMzk7cyBjaGVjayB3aGVyZSBpdCYjMzk7cyBjYWxsZWQuIE9rYXksIGl0JiMzOTtzIGNhbGxlZCBmcm9tIGBpZWVlODAyMTFfc3RvcGAsIGBpZWVlODAyMTFfcnVudGltZV9jaGFuZ2VfaWZ0eXBlYCwgYW5kIGBpZWVlODAyMTFfc2RhdGFfc3RvcGAuIEkgdGhpbmsgSSB3aWxsIGxpc3QgYGllZWU4MDIxMV9kb19zdG9wYCBhbmQgYGllZWU4MDIxMV9zdG9wYCBhcyBwb3RlbnRpYWwgZnV6emluZyB0YXJnZXRzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNiAyMTowODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7TUFDODAyMTEmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtpZWVlODAyMTFfZG9fc3RvcCYjMzQ7LAogICAgJiMzNDtpZWVlODAyMTFfc3RvcCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgaW50ZXJmYWNlIHN0b3AgbG9naWMgZm9yIEFQX1ZMQU4gaW50ZXJmYWNlcyBpbiBtYWM4MDIxMSwgY2hhbmdpbmcgaG93IHBhY2tldHMgYXJlIGZyZWVkIHRvIGF2b2lkIGRvaW5nIHNvIHVuZGVyIGEgc3BpbmxvY2suIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBtYWM4MDIxMSBzdGFjayB0aGF0IGlzIHJlYWNoYWJsZSB2aWEgbmV0bGluayBjb21tYW5kcyAoZS5nLiwgc3RvcHBpbmcgYW4gQVBfVkxBTiBpbnRlcmZhY2UpLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtNQUM4MDIxMSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2llZWU4MDIxMV9kb19zdG9wJiMzNDssCiAgICAmIzM0O2llZWU4MDIxMV9zdG9wJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBpbnRlcmZhY2Ugc3RvcCBsb2dpYyBmb3IgQVBfVkxBTiBpbnRlcmZhY2VzIGluIG1hYzgwMjExLCBjaGFuZ2luZyBob3cgcGFja2V0cyBhcmUgZnJlZWQgdG8gYXZvaWQgZG9pbmcgc28gdW5kZXIgYSBzcGlubG9jay4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIG1hYzgwMjExIHN0YWNrIHRoYXQgaXMgcmVhY2hhYmxlIHZpYSBuZXRsaW5rIGNvbW1hbmRzIChlLmcuLCBzdG9wcGluZyBhbiBBUF9WTEFOIGludGVyZmFjZSkuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNy0wNlQyMTowNjowNS4xNjk1MzQ1ODhaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMjEwNDg1MTIwMjMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTUFDODAyMTFcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJpZWVlODAyMTFfZG9fc3RvcFwiLFxuICAgIFwiaWVlZTgwMjExX3N0b3BcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgaW50ZXJmYWNlIHN0b3AgbG9naWMgZm9yIEFQX1ZMQU4gaW50ZXJmYWNlcyBpbiBtYWM4MDIxMSwgY2hhbmdpbmcgaG93IHBhY2tldHMgYXJlIGZyZWVkIHRvIGF2b2lkIGRvaW5nIHNvIHVuZGVyIGEgc3BpbmxvY2suIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBtYWM4MDIxMSBzdGFjayB0aGF0IGlzIHJlYWNoYWJsZSB2aWEgbmV0bGluayBjb21tYW5kcyAoZS5nLiwgc3RvcHBpbmcgYW4gQVBfVkxBTiBpbnRlcmZhY2UpLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wNlQyMTowNjowNS4xNjk1NDEyMjhaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjYyNjU0NjI3MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDU2MzQ3MjM1ZWRjZGEzYjZlODFiOWRjMjJlMGZmMzAzMmRlZTBjMzlcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIE1vbiBKdWwgNiAyMTowNjowMyAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9uZXQvbWFjODAyMTEvaWZhY2UuYyBiL25ldC9tYWM4MDIxMS9pZmFjZS5jXFxuaW5kZXggMDg2MjcyYzNlYzA4YzEuLjQzNDYwYTcwNWE2YmQwIDEwMDY0NFxcbi0tLSBhL25ldC9tYWM4MDIxMS9pZmFjZS5jXFxuKysrIGIvbmV0L21hYzgwMjExL2lmYWNlLmNcXG5AQCAtNTg4LDYgKzU4OCw3IEBAIHN0YXRpYyB2b2lkIGllZWU4MDIxMV9kb19zdG9wKHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLCBib29sIGdvaW5nX2RvXFxuIFxcdFxcdFdBUk5fT04oIWxpc3RfZW1wdHkoXFx1MDAyNnNkYXRhLVxcdTAwM2V1LmFwLnZsYW5zKSk7XFxuIFxcdH0gZWxzZSBpZiAoc2RhdGEtXFx1MDAzZXZpZi50eXBlID09IE5MODAyMTFfSUZUWVBFX0FQX1ZMQU4pIHtcXG4gXFx0XFx0LyogcmVtb3ZlIGFsbCBwYWNrZXRzIGluIHBhcmVudCBiY19idWYgcG9pbnRpbmcgdG8gdGhpcyBkZXYgKi9cXG4rXFx0XFx0X19za2JfcXVldWVfaGVhZF9pbml0KFxcdTAwMjZmcmVlcSk7XFxuIFxcdFxcdHBzID0gXFx1MDAyNnNkYXRhLVxcdTAwM2Vic3MtXFx1MDAzZXBzO1xcbiBcXG4gXFx0XFx0c3Bpbl9sb2NrX2lycXNhdmUoXFx1MDAyNnBzLVxcdTAwM2ViY19idWYubG9jaywgZmxhZ3MpO1xcbkBAIC01OTUsMTAgKzU5NiwxNSBAQCBzdGF0aWMgdm9pZCBpZWVlODAyMTFfZG9fc3RvcChzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSwgYm9vbCBnb2luZ19kb1xcbiBcXHRcXHRcXHRpZiAoc2tiLVxcdTAwM2VkZXYgPT0gc2RhdGEtXFx1MDAzZWRldikge1xcbiBcXHRcXHRcXHRcXHRfX3NrYl91bmxpbmsoc2tiLCBcXHUwMDI2cHMtXFx1MDAzZWJjX2J1Zik7XFxuIFxcdFxcdFxcdFxcdGxvY2FsLVxcdTAwM2V0b3RhbF9wc19idWZmZXJlZC0tO1xcbi1cXHRcXHRcXHRcXHRpZWVlODAyMTFfZnJlZV90eHNrYihcXHUwMDI2bG9jYWwtXFx1MDAzZWh3LCBza2IpO1xcbitcXHRcXHRcXHRcXHRfX3NrYl9xdWV1ZV90YWlsKFxcdTAwMjZmcmVlcSwgc2tiKTtcXG4gXFx0XFx0XFx0fVxcbiBcXHRcXHR9XFxuIFxcdFxcdHNwaW5fdW5sb2NrX2lycXJlc3RvcmUoXFx1MDAyNnBzLVxcdTAwM2ViY19idWYubG9jaywgZmxhZ3MpO1xcbitcXG4rXFx0XFx0c2tiX3F1ZXVlX3dhbGtfc2FmZShcXHUwMDI2ZnJlZXEsIHNrYiwgdG1wKSB7XFxuK1xcdFxcdFxcdF9fc2tiX3VubGluayhza2IsIFxcdTAwMjZmcmVlcSk7XFxuK1xcdFxcdFxcdGllZWU4MDIxMV9mcmVlX3R4c2tiKFxcdTAwMjZsb2NhbC1cXHUwMDNlaHcsIHNrYik7XFxuK1xcdFxcdH1cXG4gXFx0fVxcbiBcXG4gXFx0aWYgKGdvaW5nX2Rvd24pXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA2VDIxOjA2OjA1Ljc5NzQ1MTk4WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMjA0MjA1Nzg3OTAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTUFDODAyMTFcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJpZWVlODAyMTFfZG9fc3RvcFwiLFxuICAgIFwiaWVlZTgwMjExX3N0b3BcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgaW50ZXJmYWNlIHN0b3AgbG9naWMgZm9yIEFQX1ZMQU4gaW50ZXJmYWNlcyBpbiBtYWM4MDIxMSwgY2hhbmdpbmcgaG93IHBhY2tldHMgYXJlIGZyZWVkIHRvIGF2b2lkIGRvaW5nIHNvIHVuZGVyIGEgc3BpbmxvY2suIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBtYWM4MDIxMSBzdGFjayB0aGF0IGlzIHJlYWNoYWJsZSB2aWEgbmV0bGluayBjb21tYW5kcyAoZS5nLiwgc3RvcHBpbmcgYW4gQVBfVkxBTiBpbnRlcmZhY2UpLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG5ldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0XG4gICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksXG4gICBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDU2MzQ3MjM1ZWRjZGEzYjZlODFiOWRjMjJlMGZmMzAzMmRlZTBjMzlcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgTW9uIEp1bCA2IDIxOjA2OjAzIDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbmV0L21hYzgwMjExL2lmYWNlLmMgYi9uZXQvbWFjODAyMTEvaWZhY2UuY1xuaW5kZXggMDg2MjcyYzNlYzA4YzEuLjQzNDYwYTcwNWE2YmQwIDEwMDY0NFxuLS0tIGEvbmV0L21hYzgwMjExL2lmYWNlLmNcbisrKyBiL25ldC9tYWM4MDIxMS9pZmFjZS5jXG5AQCAtNTg4LDYgKzU4OCw3IEBAIHN0YXRpYyB2b2lkIGllZWU4MDIxMV9kb19zdG9wKHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLCBib29sIGdvaW5nX2RvXG4gXHRcdFdBUk5fT04oIWxpc3RfZW1wdHkoXHUwMDI2c2RhdGEtXHUwMDNldS5hcC52bGFucykpO1xuIFx0fSBlbHNlIGlmIChzZGF0YS1cdTAwM2V2aWYudHlwZSA9PSBOTDgwMjExX0lGVFlQRV9BUF9WTEFOKSB7XG4gXHRcdC8qIHJlbW92ZSBhbGwgcGFja2V0cyBpbiBwYXJlbnQgYmNfYnVmIHBvaW50aW5nIHRvIHRoaXMgZGV2ICovXG4rXHRcdF9fc2tiX3F1ZXVlX2hlYWRfaW5pdChcdTAwMjZmcmVlcSk7XG4gXHRcdHBzID0gXHUwMDI2c2RhdGEtXHUwMDNlYnNzLVx1MDAzZXBzO1xuIFxuIFx0XHRzcGluX2xvY2tfaXJxc2F2ZShcdTAwMjZwcy1cdTAwM2ViY19idWYubG9jaywgZmxhZ3MpO1xuQEAgLTU5NSwxMCArNTk2LDE1IEBAIHN0YXRpYyB2b2lkIGllZWU4MDIxMV9kb19zdG9wKHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLCBib29sIGdvaW5nX2RvXG4gXHRcdFx0aWYgKHNrYi1cdTAwM2VkZXYgPT0gc2RhdGEtXHUwMDNlZGV2KSB7XG4gXHRcdFx0XHRfX3NrYl91bmxpbmsoc2tiLCBcdTAwMjZwcy1cdTAwM2ViY19idWYpO1xuIFx0XHRcdFx0bG9jYWwtXHUwMDNldG90YWxfcHNfYnVmZmVyZWQtLTtcbi1cdFx0XHRcdGllZWU4MDIxMV9mcmVlX3R4c2tiKFx1MDAyNmxvY2FsLVx1MDAzZWh3LCBza2IpO1xuK1x0XHRcdFx0X19za2JfcXVldWVfdGFpbChcdTAwMjZmcmVlcSwgc2tiKTtcbiBcdFx0XHR9XG4gXHRcdH1cbiBcdFx0c3Bpbl91bmxvY2tfaXJxcmVzdG9yZShcdTAwMjZwcy1cdTAwM2ViY19idWYubG9jaywgZmxhZ3MpO1xuK1xuK1x0XHRza2JfcXVldWVfd2Fsa19zYWZlKFx1MDAyNmZyZWVxLCBza2IsIHRtcCkge1xuK1x0XHRcdF9fc2tiX3VubGluayhza2IsIFx1MDAyNmZyZWVxKTtcbitcdFx0XHRpZWVlODAyMTFfZnJlZV90eHNrYihcdTAwMjZsb2NhbC1cdTAwM2Vodywgc2tiKTtcbitcdFx0fVxuIFx0fVxuIFxuIFx0aWYgKGdvaW5nX2Rvd24pXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wNlQyMTowNjowNS43OTc0NTU4NloiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjE1MjE1NzQ5NTYzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIE1hYzgwMjExIFBhdGNoOiBBdm9pZGluZyBQb3RlbnRpYWwgQ29uY3VycmVuY3kgSXNzdWVzKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBmb3IgYG5ldC9tYWM4MDIxMS9pZmFjZS5jYC4gSXQncyB0b3VjaGluZyB0aGUgYGllZWU4MDIxMV9kb19zdG9wYCBmdW5jdGlvbiwgd2hpY2ggaW1tZWRpYXRlbHkgdGVsbHMgbWUgdGhpcyBpcyByZWxhdGVkIHRvIGludGVyZmFjZSBzaHV0ZG93biBwcm9jZWR1cmVzLiBUaGUgbWVhdCBvZiB0aGUgY2hhbmdlIGlzIGhvdyBwYWNrZXRzIGFyZSBoYW5kbGVkIHdoZW4gYW4gQVBfVkxBTiBpbnRlcmZhY2UgaXMgc3RvcHBlZC4gU3BlY2lmaWNhbGx5LCBpdCBzZWVtcyBsaWtlIHRoZSBvbGQgY29kZSBpbiBgaWVlZTgwMjExX2RvX3N0b3BgIGhhZCBhIHByb2JsZW06IGl0IHdhcyBjYWxsaW5nIGBpZWVlODAyMTFfZnJlZV90eHNrYmAgd2hpbGUgaG9sZGluZyB0aGUgYHBzLVx1MDAzZWJjX2J1Zi5sb2NrYCBzcGlubG9jay4gVGhhdCdzIGEgcmVkIGZsYWcuIEkndmUgc2VlbiB0aGF0IGtpbmQgb2YgcGF0dGVybiBsZWFkIHRvIGFsbCBzb3J0cyBvZiBjb25jdXJyZW5jeSBoZWFkYWNoZXMsIG1heWJlIGV2ZW4gYSBzbGVlcC1pbi1hdG9taWMgc2l0dWF0aW9uIG9yIGEgY2xhc3NpYyBkZWFkbG9jaywgZGVwZW5kaW5nIG9uIHdoYXQgYGllZWU4MDIxMV9mcmVlX3R4c2tiYCBhY3R1YWxseSBkb2VzIGludGVybmFsbHkuXG5cblNvLCB0aGUgcGF0Y2ggY2xldmVybHkgc2lkZXN0ZXBzIHRoZSBwb3RlbnRpYWwgcHJvYmxlbSBieSBxdWV1aW5nIHRoZSBTS0JzIHRvIGEgbG9jYWwgYGZyZWVxYCBpbnN0ZWFkLiBUaGUgYmVhdXR5IG9mIHRoaXMgaXMgdGhhdCBpdCBhbGxvd3MgdGhlIHByb2JsZW1hdGljIGZyZWVpbmcgcHJvY2VzcyB0byBoYXBwZW4gKmFmdGVyKiB0aGUgc3BpbmxvY2sgaXMgcmVsZWFzZWQuIFRoaXMgaXMgYSBzb2xpZCwgZnVuY3Rpb25hbCBjaGFuZ2UuIEl0J3MgdGhlIHJpZ2h0IHdheSB0byBmaXggc3VjaCBwb3RlbnRpYWwgYnVncy5cblxuTm93LCBsZXQgbWUgZGlnIGRlZXBlciBhbmQgc2VlIHdoYXQgZWxzZSB0aGlzIGlzIGFmZmVjdGluZy4gSSdtIGdvaW5nIHRvIHF1aWNrbHkgcmV2aWV3IHRoZSBzdXJyb3VuZGluZyBjb250ZXh0IG9mIGBpZWVlODAyMTFfZG9fc3RvcGAgdG8gY29uZmlybSBteSB1bmRlcnN0YW5kaW5nIG9mIHRoZSBpbnRlcmZhY2UncyBiZWhhdmlvciBkdXJpbmcgYSBzaHV0ZG93bi5cblxuXG4iLCJJbnB1dFRva2VucyI6MjE0OSwiT3V0cHV0VG9rZW5zIjo0NCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE1NSwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA2VDIxOjA2OjIxLjAxMzIxMTM2M1oiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMjc2Mzc3MzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiaWVlZTgwMjExX2RvX3N0b3BcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L21hYzgwMjExL2lmYWNlLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L21hYzgwMjExL2lmYWNlLmM9NDYxPXN0YXRpYyBpbnQgaWVlZTgwMjExX29wZW4oc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG4tLVxcbm5ldC9tYWM4MDIxMS9pZmFjZS5jLTQ3OC1cXG5uZXQvbWFjODAyMTEvaWZhY2UuYzo0Nzk6c3RhdGljIHZvaWQgaWVlZTgwMjExX2RvX3N0b3Aoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsIGJvb2wgZ29pbmdfZG93bilcXG5uZXQvbWFjODAyMTEvaWZhY2UuYy00ODAte1xcbi0tXFxubmV0L21hYzgwMjExL2lmYWNlLmM9ODQ1PXN0YXRpYyBpbnQgaWVlZTgwMjExX3N0b3Aoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG4tLVxcbm5ldC9tYWM4MDIxMS9pZmFjZS5jLTg2Ny1cXG5uZXQvbWFjODAyMTEvaWZhY2UuYzo4Njg6XFx0aWVlZTgwMjExX2RvX3N0b3Aoc2RhdGEsIHRydWUpO1xcbm5ldC9tYWM4MDIxMS9pZmFjZS5jLTg2OS1cXG4tLVxcbm5ldC9tYWM4MDIxMS9pZmFjZS5jPTE5ODA9c3RhdGljIGludCBpZWVlODAyMTFfcnVudGltZV9jaGFuZ2VfaWZ0eXBlKHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLFxcbi0tXFxubmV0L21hYzgwMjExL2lmYWNlLmMtMjA0NC1cXHQvKiBkb19zdG9wIHdpbGwgc3luY2hyb25pemVfcmN1KCkgZmlyc3QgdGhpbmcgKi9cXG5uZXQvbWFjODAyMTEvaWZhY2UuYzoyMDQ1OlxcdGllZWU4MDIxMV9kb19zdG9wKHNkYXRhLCBmYWxzZSk7XFxubmV0L21hYzgwMjExL2lmYWNlLmMtMjA0Ni1cXG4tLVxcbm5ldC9tYWM4MDIxMS9pZmFjZS5jPTI0NDA9dm9pZCBpZWVlODAyMTFfc2RhdGFfc3RvcChzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSlcXG4tLVxcbm5ldC9tYWM4MDIxMS9pZmFjZS5jLTI0NDMtXFx0XFx0cmV0dXJuO1xcbm5ldC9tYWM4MDIxMS9pZmFjZS5jOjI0NDQ6XFx0aWVlZTgwMjExX2RvX3N0b3Aoc2RhdGEsIHRydWUpO1xcbm5ldC9tYWM4MDIxMS9pZmFjZS5jLTI0NDUtfVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wNlQyMTowNjoyMS4xNDA4NTY0NjNaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyMDM2OTI4MDQ4NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGFuYWx5c2lzIG9mIHRoZSBzaXR1YXRpb246XG5cbioqUmVhY2hpbmcgYSBTdG9wKipcblxuT2theSwgc28gYGllZWU4MDIxMV9kb19zdG9wYCBpcyB0aGUgZnVuY3Rpb24gd2UncmUgY29uY2VybmVkIHdpdGguIEkga25vdyBpdCBnZXRzIGNhbGxlZCBpbiBhIGZldyBjcml0aWNhbCBwbGFjZXMgd2l0aGluIHRoZSBNQUM4MDIxMSBzdGFjazogYGllZWU4MDIxMV9zdG9wYCwgYGllZWU4MDIxMV9ydW50aW1lX2NoYW5nZV9pZnR5cGVgLCBhbmQgYGllZWU4MDIxMV9zZGF0YV9zdG9wYC4gR2l2ZW4gdGhvc2UgcG9pbnRzIG9mIG9yaWdpbiwgaXQncyBzYWZlIHRvIHNheSBpdCdzIGRlZmluaXRlbHkgcmVhY2hhYmxlIGNvZGUg4oCTIG5vIHdvcnJpZXMgYWJvdXQgZGVhZCBjb2RlIGVsaW1pbmF0aW9uIGhlcmUuIFRoZSBwYXRjaCBmb2N1c2VzIG9uIGhvdyB0aGUgQVBfVkxBTiBpbnRlcmZhY2UgYmVoYXZlcyB3aGVuIHN0b3BwaW5nLiBNeSBuZXh0IHN0ZXAgaXMgdG8gZXhhbWluZSB0aGUgS2NvbmZpZyBvcHRpb25zIGZvciBNQUM4MDIxMS5cblxuXG4iLCJJbnB1dFRva2VucyI6MzIzNSwiT3V0cHV0VG9rZW5zIjozOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjk2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA2VDIxOjA2OjQxLjUxMDEzOTQ5N1oiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2MjU2MjU1NDMsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIE1BQzgwMjExXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9tYWM4MDIxMS9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9tYWM4MDIxMS9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxubmV0L21hYzgwMjExL0tjb25maWc6Mjpjb25maWcgTUFDODAyMTFcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0zLVxcdHRyaXN0YXRlIFxcXCJHZW5lcmljIElFRUUgODAyLjExIE5ldHdvcmtpbmcgU3RhY2sgKG1hYzgwMjExKVxcXCJcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnPTE5PWlmIE1BQzgwMjExICE9IG5cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yMC1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyMTpjb25maWcgTUFDODAyMTFfSEFTX1JDXFxubmV0L21hYzgwMjExL0tjb25maWctMjItXFx0Ym9vbFxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTIzLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjI0OmNvbmZpZyBNQUM4MDIxMV9SQ19NSU5TVFJFTFxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTI1LVxcdGJvb2wgXFxcIk1pbnN0cmVsXFxcIiBpZiBFWFBFUlRcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnPTMxPWNob2ljZVxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWctNDAtXFxubmV0L21hYzgwMjExL0tjb25maWc6NDE6Y29uZmlnIE1BQzgwMjExX1JDX0RFRkFVTFRfTUlOU1RSRUxcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy00Mi1cXHRib29sIFxcXCJNaW5zdHJlbFxcXCJcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnPTQ4PWVuZGNob2ljZVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTQ5LVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjUwOmNvbmZpZyBNQUM4MDIxMV9SQ19ERUZBVUxUXFxubmV0L21hYzgwMjExL0tjb25maWctNTEtXFx0c3RyaW5nXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZz01Nz1jb21tZW50IFxcXCJTb21lIHdpcmVsZXNzIGRyaXZlcnMgcmVxdWlyZSBhIHJhdGUgY29udHJvbCBhbGdvcml0aG1cXFwiXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy01OS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzo2MDpjb25maWcgTUFDODAyMTFfS1VOSVRfVEVTVFxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTYxLVxcdHRyaXN0YXRlIFxcXCJLVW5pdCB0ZXN0cyBmb3IgbWFjODAyMTFcXFwiIGlmICFLVU5JVF9BTExfVEVTVFNcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTY5LVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjcwOmNvbmZpZyBNQUM4MDIxMV9NRVNIXFxubmV0L21hYzgwMjExL0tjb25maWctNzEtXFx0Ym9vbCBcXFwiRW5hYmxlIG1hYzgwMjExIG1lc2ggbmV0d29ya2luZyBzdXBwb3J0XFxcIlxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWctNzgtXFxubmV0L21hYzgwMjExL0tjb25maWc6Nzk6Y29uZmlnIE1BQzgwMjExX0xFRFNcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy04MC1cXHRib29sIFxcXCJFbmFibGUgTEVEIHRyaWdnZXJzXFxcIlxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWctODctXFxubmV0L21hYzgwMjExL0tjb25maWc6ODg6Y29uZmlnIE1BQzgwMjExX0RFQlVHRlNcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy04OS1cXHRib29sIFxcXCJFeHBvcnQgbWFjODAyMTEgaW50ZXJuYWxzIGluIERlYnVnRlNcXFwiXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy05Ni1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzo5Nzpjb25maWcgTUFDODAyMTFfTUVTU0FHRV9UUkFDSU5HXFxubmV0L21hYzgwMjExL0tjb25maWctOTgtXFx0Ym9vbCBcXFwiVHJhY2UgYWxsIG1hYzgwMjExIGRlYnVnIG1lc3NhZ2VzXFxcIlxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWctMTA5LVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjExMDptZW51Y29uZmlnIE1BQzgwMjExX0RFQlVHX01FTlVcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xMTEtXFx0Ym9vbCBcXFwiU2VsZWN0IG1hYzgwMjExIGRlYnVnZ2luZyBmZWF0dXJlc1xcXCJcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTExNS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoxMTY6Y29uZmlnIE1BQzgwMjExX05PSU5MSU5FXFxubmV0L21hYzgwMjExL0tjb25maWctMTE3LVxcdGJvb2wgXFxcIkRvIG5vdCBpbmxpbmUgVFgvUlggaGFuZGxlcnNcXFwiXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xMzEtXFxubmV0L21hYzgwMjExL0tjb25maWc6MTMyOmNvbmZpZyBNQUM4MDIxMV9WRVJCT1NFX0RFQlVHXFxubmV0L21hYzgwMjExL0tjb25maWctMTMzLVxcdGJvb2wgXFxcIlZlcmJvc2UgZGVidWdnaW5nIG91dHB1dFxcXCJcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE0Mi1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoxNDM6Y29uZmlnIE1BQzgwMjExX01MTUVfREVCVUdcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xNDQtXFx0Ym9vbCBcXFwiVmVyYm9zZSBtYW5hZ2VkIE1MTUUgb3V0cHV0XFxcIlxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWctMTUzLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjE1NDpjb25maWcgTUFDODAyMTFfU1RBX0RFQlVHXFxubmV0L21hYzgwMjExL0tjb25maWctMTU1LVxcdGJvb2wgXFxcIlZlcmJvc2Ugc3RhdGlvbiBkZWJ1Z2dpbmdcXFwiXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xNjItXFxubmV0L21hYzgwMjExL0tjb25maWc6MTYzOmNvbmZpZyBNQUM4MDIxMV9IVF9ERUJVR1xcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE2NC1cXHRib29sIFxcXCJWZXJib3NlIEhUIGRlYnVnZ2luZ1xcXCJcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE3NC1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoxNzU6Y29uZmlnIE1BQzgwMjExX09DQl9ERUJVR1xcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE3Ni1cXHRib29sIFxcXCJWZXJib3NlIE9DQiBkZWJ1Z2dpbmdcXFwiXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xODUtXFxubmV0L21hYzgwMjExL0tjb25maWc6MTg2OmNvbmZpZyBNQUM4MDIxMV9JQlNTX0RFQlVHXFxubmV0L21hYzgwMjExL0tjb25maWctMTg3LVxcdGJvb2wgXFxcIlZlcmJvc2UgSUJTUyBkZWJ1Z2dpbmdcXFwiXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xOTYtXFxubmV0L21hYzgwMjExL0tjb25maWc6MTk3OmNvbmZpZyBNQUM4MDIxMV9QU19ERUJVR1xcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE5OC1cXHRib29sIFxcXCJWZXJib3NlIHBvd2Vyc2F2ZSBtb2RlIGRlYnVnZ2luZ1xcXCJcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTIwOC1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyMDk6Y29uZmlnIE1BQzgwMjExX01QTF9ERUJVR1xcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTIxMC1cXHRib29sIFxcXCJWZXJib3NlIG1lc2ggcGVlciBsaW5rIGRlYnVnZ2luZ1xcXCJcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTIyMS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyMjI6Y29uZmlnIE1BQzgwMjExX01QQVRIX0RFQlVHXFxubmV0L21hYzgwMjExL0tjb25maWctMjIzLVxcdGJvb2wgXFxcIlZlcmJvc2UgbWVzaCBwYXRoIGRlYnVnZ2luZ1xcXCJcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTIzNC1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyMzU6Y29uZmlnIE1BQzgwMjExX01IV01QX0RFQlVHXFxubmV0L21hYzgwMjExL0tjb25maWctMjM2LVxcdGJvb2wgXFxcIlZlcmJvc2UgbWVzaCBIV01QIHJvdXRpbmcgZGVidWdnaW5nXFxcIlxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWctMjQ3LVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjI0ODpjb25maWcgTUFDODAyMTFfTUVTSF9TWU5DX0RFQlVHXFxubmV0L21hYzgwMjExL0tjb25maWctMjQ5LVxcdGJvb2wgXFxcIlZlcmJvc2UgbWVzaCBzeW5jaHJvbml6YXRpb24gZGVidWdnaW5nXFxcIlxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWctMjU4LVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjI1OTpjb25maWcgTUFDODAyMTFfTUVTSF9DU0FfREVCVUdcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yNjAtXFx0Ym9vbCBcXFwiVmVyYm9zZSBtZXNoIGNoYW5uZWwgc3dpdGNoIGRlYnVnZ2luZ1xcXCJcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTI2OS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyNzA6Y29uZmlnIE1BQzgwMjExX01FU0hfUFNfREVCVUdcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yNzEtXFx0Ym9vbCBcXFwiVmVyYm9zZSBtZXNoIHBvd2Vyc2F2ZSBkZWJ1Z2dpbmdcXFwiXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yODAtXFxubmV0L21hYzgwMjExL0tjb25maWc6MjgxOmNvbmZpZyBNQUM4MDIxMV9URExTX0RFQlVHXFxubmV0L21hYzgwMjExL0tjb25maWctMjgyLVxcdGJvb2wgXFxcIlZlcmJvc2UgVERMUyBkZWJ1Z2dpbmdcXFwiXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yOTItXFxubmV0L21hYzgwMjExL0tjb25maWc6MjkzOmNvbmZpZyBNQUM4MDIxMV9ERUJVR19DT1VOVEVSU1xcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTI5NC1cXHRib29sIFxcXCJFeHRyYSBzdGF0aXN0aWNzIGZvciBUWC9SWCBkZWJ1Z2dpbmdcXFwiXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0zMDctXFxubmV0L21hYzgwMjExL0tjb25maWc6MzA4OmNvbmZpZyBNQUM4MDIxMV9TVEFfSEFTSF9NQVhfU0laRVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTMwOS1cXHRpbnQgXFxcIlN0YXRpb24gaGFzaCB0YWJsZSBtYXhpbXVtIHNpemVcXFwiIGlmIE1BQzgwMjExX0RFQlVHX01FTlVcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDZUMjE6MDY6NDIuMTM1Nzg0MzJaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NTEwNjIxMTMwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkZ1enppbmcgdGhlIGBNQUM4MDIxMWAgQ29uZmlnIGFuZCBgaWVlZTgwMjExX2RvX3N0b3BgIEZ1bmN0aW9uKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBgTUFDODAyMTFgIGNvbmZpZ3VyYXRpb24sIGFuZCB0aGUga2V5IGZ1bmN0aW9uIGhlcmUgc2VlbXMgdG8gYmUgYGllZWU4MDIxMV9kb19zdG9wYC4gTXkgaW1tZWRpYXRlIHRob3VnaHQ/IFRoaXMgaXMgKmRlZmluaXRlbHkqIHdvcnRoIGZ1enppbmcuIFRoZSBwb3RlbnRpYWwgZm9yIHVuY292ZXJpbmcgaW50ZXJlc3RpbmcgYnVncyBpbiB0aGlzIGFyZWEgaXMgaGlnaCwgZ2l2ZW4gaXRzIHJvbGUgaW4gc3RvcHBpbmcgdGhlIHdpcmVsZXNzIGludGVyZmFjZS5cblxuVGhlIHBhdGNoIG1lbnRpb25zIGEgYnVnIHJlbGF0ZWQgdG8gYGllZWU4MDIxMV9mcmVlX3R4c2tiYCBiZWluZyBjYWxsZWQgd2hpbGUgaG9sZGluZyBhIHNwaW5sb2NrLiBUaGF0IGltbWVkaWF0ZWx5IGdyYWJzIG15IGF0dGVudGlvbi4gQW55dGltZSB5b3Ugc2VlIGEgZnVuY3Rpb24gbGlrZSBgaWVlZTgwMjExX2ZyZWVfdHhza2JgIGJlaW5nIGNhbGxlZCB1bmRlciBhIHNwaW5sb2NrLCBpdCdzIGEgcmVkIGZsYWcuIFRoYXQgZnVuY3Rpb24gbWlnaHQgc2xlZXAgb3IgYWNxdWlyZSBhIG11dGV4IGludGVybmFsbHkg4oCTIHdoaWNoIGlzIGEgYmlnIG5vLW5vIHdoZW4geW91J3JlIGFscmVhZHkgd2l0aGluIGEgc3BpbmxvY2sncyBwcm90ZWN0aW9uLiBFdmVuIGlmIGl0ICpkb2Vzbid0KiBzbGVlcCwgaXQncyBzdGlsbCBiYWQgcHJhY3RpY2UgdG8gcGVyZm9ybSBzdWNoIGFjdGlvbnMgd2l0aCBhIHNwaW5sb2NrIGhlbGQuXG5cbkFoLCByaWdodCwgYGllZWU4MDIxMV9mcmVlX3R4c2tiYCBpcyBwYXJ0IG9mIHRoZSBgbWFjODAyMTFgIHN1YnN5c3RlbS4gTWFrZXMgc2Vuc2UuIE9rYXksIHRpbWUgdG8gZGl2ZSBpbnRvIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiBgaWVlZTgwMjExX2ZyZWVfdHhza2JgIGl0c2VsZiBhbmQgc2VlIGV4YWN0bHkgd2hhdCdzIGdvaW5nIG9uIGluIHRoZXJlLiBHb3R0YSB1bmRlcnN0YW5kIHRoZSByb290IGNhdXNlIG9mIHRoaXMgdnVsbmVyYWJpbGl0eS5cblxuXG4iLCJJbnB1dFRva2VucyI6NTcxNSwiT3V0cHV0VG9rZW5zIjo0MiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE2MCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wNlQyMTowNjo0Ni42NDY0MTgzNFoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMjM4NzQzNDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiaWVlZTgwMjExX2ZyZWVfdHhza2JcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L21hYzgwMjExL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvbWFjODAyMTEvaWZhY2UuYz00Nzk9c3RhdGljIHZvaWQgaWVlZTgwMjExX2RvX3N0b3Aoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsIGJvb2wgZ29pbmdfZG93bilcXG4tLVxcbm5ldC9tYWM4MDIxMS9pZmFjZS5jLTYwNS1cXHRcXHRcXHRfX3NrYl91bmxpbmsoc2tiLCBcXHUwMDI2ZnJlZXEpO1xcbm5ldC9tYWM4MDIxMS9pZmFjZS5jOjYwNjpcXHRcXHRcXHRpZWVlODAyMTFfZnJlZV90eHNrYihcXHUwMDI2bG9jYWwtXFx1MDAzZWh3LCBza2IpO1xcbm5ldC9tYWM4MDIxMS9pZmFjZS5jLTYwNy1cXHRcXHR9XFxuLS1cXG5uZXQvbWFjODAyMTEvaWZhY2UuYy02ODUtXFx0LypcXG5uZXQvbWFjODAyMTEvaWZhY2UuYzo2ODY6XFx0ICogU2luY2UgaWVlZTgwMjExX2ZyZWVfdHhza2IoKSBtYXkgaXNzdWUgX19kZXZfcXVldWVfeG1pdCgpXFxubmV0L21hYzgwMjExL2lmYWNlLmMtNjg3LVxcdCAqIHdoaWNoIHNob3VsZCBiZSBjYWxsZWQgd2l0aCBpbnRlcnJ1cHRzIGVuYWJsZWQsIHJlY2xhbWF0aW9uXFxuLS1cXG5uZXQvbWFjODAyMTEvaWZhY2UuYy03MDctXFx0XFx0X19za2JfdW5saW5rKHNrYiwgXFx1MDAyNmZyZWVxKTtcXG5uZXQvbWFjODAyMTEvaWZhY2UuYzo3MDg6XFx0XFx0aWVlZTgwMjExX2ZyZWVfdHhza2IoXFx1MDAyNmxvY2FsLVxcdTAwM2Vodywgc2tiKTtcXG5uZXQvbWFjODAyMTEvaWZhY2UuYy03MDktXFx0fVxcbi0tXFxubmV0L21hYzgwMjExL21lc2hfcGF0aHRibC5jPTEwMDQ9dm9pZCBtZXNoX3BhdGhfZGlzY2FyZF9mcmFtZShzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSxcXG4tLVxcbm5ldC9tYWM4MDIxMS9tZXNoX3BhdGh0YmwuYy0xMDA2LXtcXG5uZXQvbWFjODAyMTEvbWVzaF9wYXRodGJsLmM6MTAwNzpcXHRpZWVlODAyMTFfZnJlZV90eHNrYihcXHUwMDI2c2RhdGEtXFx1MDAzZWxvY2FsLVxcdTAwM2Vodywgc2tiKTtcXG5uZXQvbWFjODAyMTEvbWVzaF9wYXRodGJsLmMtMTAwOC1cXHRzZGF0YS1cXHUwMDNldS5tZXNoLm1zaHN0YXRzLmRyb3BwZWRfZnJhbWVzX25vX3JvdXRlKys7XFxuLS1cXG5uZXQvbWFjODAyMTEvb2ZmY2hhbm5lbC5jPTE3MT1zdGF0aWMgdm9pZCBpZWVlODAyMTFfcm9jX25vdGlmeV9kZXN0cm95KHN0cnVjdCBpZWVlODAyMTFfcm9jX3dvcmsgKnJvYylcXG4tLVxcbm5ldC9tYWM4MDIxMS9vZmZjaGFubmVsLmMtMTc3LVxcdFxcdFxcdFxcdFxcdGZhbHNlLCBHRlBfS0VSTkVMKTtcXG5uZXQvbWFjODAyMTEvb2ZmY2hhbm5lbC5jOjE3ODpcXHRcXHRpZWVlODAyMTFfZnJlZV90eHNrYihcXHUwMDI2cm9jLVxcdTAwM2VzZGF0YS1cXHUwMDNlbG9jYWwtXFx1MDAzZWh3LCByb2MtXFx1MDAzZWZyYW1lKTtcXG5uZXQvbWFjODAyMTEvb2ZmY2hhbm5lbC5jLTE3OS1cXHR9XFxuLS1cXG5uZXQvbWFjODAyMTEvb2ZmY2hhbm5lbC5jPTgxMj1pbnQgaWVlZTgwMjExX21nbXRfdHgoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IHdpcmVsZXNzX2RldiAqd2RldixcXG4tLVxcbm5ldC9tYWM4MDIxMS9vZmZjaGFubmVsLmMtMTA0OS1cXHRpZiAocmV0KVxcbm5ldC9tYWM4MDIxMS9vZmZjaGFubmVsLmM6MTA1MDpcXHRcXHRpZWVlODAyMTFfZnJlZV90eHNrYihcXHUwMDI2bG9jYWwtXFx1MDAzZWh3LCBza2IpO1xcbm5ldC9tYWM4MDIxMS9vZmZjaGFubmVsLmMtMTA1MS0gb3V0X3VubG9jazpcXG4tLVxcbm5ldC9tYWM4MDIxMS9zdGFfaW5mby5jPTEyMDc9c3RhdGljIGJvb2wgc3RhX2luZm9fY2xlYW51cF9leHBpcmVfYnVmZmVyZWRfYWMoc3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwsXFxuLS1cXG5uZXQvbWFjODAyMTEvc3RhX2luZm8uYy0xMjM2LVxcdFxcdFxcdGJyZWFrO1xcbm5ldC9tYWM4MDIxMS9zdGFfaW5mby5jOjEyMzc6XFx0XFx0aWVlZTgwMjExX2ZyZWVfdHhza2IoXFx1MDAyNmxvY2FsLVxcdTAwM2Vodywgc2tiKTtcXG5uZXQvbWFjODAyMTEvc3RhX2luZm8uYy0xMjM4LVxcdH1cXG4tLVxcbm5ldC9tYWM4MDIxMS9zdGFfaW5mby5jLTEyNjUtXFx0XFx0ICAgICAgIHN0YS1cXHUwMDNlc3RhLmFkZHIpO1xcbm5ldC9tYWM4MDIxMS9zdGFfaW5mby5jOjEyNjY6XFx0XFx0aWVlZTgwMjExX2ZyZWVfdHhza2IoXFx1MDAyNmxvY2FsLVxcdTAwM2Vodywgc2tiKTtcXG5uZXQvbWFjODAyMTEvc3RhX2luZm8uYy0xMjY3LVxcdH1cXG4tLVxcbm5ldC9tYWM4MDIxMS9zdGF0dXMuYz0yMj12b2lkIGllZWU4MDIxMV90eF9zdGF0dXNfaXJxc2FmZShzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcXG4tLVxcbm5ldC9tYWM4MDIxMS9zdGF0dXMuYy0zNS1cXHQgICAgICAgKHNrYiA9IHNrYl9kZXF1ZXVlKFxcdTAwMjZsb2NhbC1cXHUwMDNlc2tiX3F1ZXVlX3VucmVsaWFibGUpKSkge1xcbm5ldC9tYWM4MDIxMS9zdGF0dXMuYzozNjpcXHRcXHRpZWVlODAyMTFfZnJlZV90eHNrYihodywgc2tiKTtcXG5uZXQvbWFjODAyMTEvc3RhdHVzLmMtMzctXFx0XFx0dG1wLS07XFxuLS1cXG5uZXQvbWFjODAyMTEvc3RhdHVzLmM9NDQ9c3RhdGljIHZvaWQgaWVlZTgwMjExX2hhbmRsZV9maWx0ZXJlZF9mcmFtZShzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbCxcXG4tLVxcbm5ldC9tYWM4MDIxMS9zdGF0dXMuYy01NC1cXHRcXHRcXHQgICBJRUVFODAyMTFfVFhfQ1RMX0hXXzgwMjExX0VOQ0FQKSkge1xcbm5ldC9tYWM4MDIxMS9zdGF0dXMuYzo1NTpcXHRcXHRpZWVlODAyMTFfZnJlZV90eHNrYihcXHUwMDI2bG9jYWwtXFx1MDAzZWh3LCBza2IpO1xcbm5ldC9tYWM4MDIxMS9zdGF0dXMuYy01Ni1cXHRcXHRyZXR1cm47XFxuLS1cXG5uZXQvbWFjODAyMTEvc3RhdHVzLmMtMTY4LVxcdFxcdFxcdCAgICEhdGVzdF9zdGFfZmxhZyhzdGEsIFdMQU5fU1RBX1BTX1NUQSksIGppZmZpZXMpO1xcbm5ldC9tYWM4MDIxMS9zdGF0dXMuYzoxNjk6XFx0aWVlZTgwMjExX2ZyZWVfdHhza2IoXFx1MDAyNmxvY2FsLVxcdTAwM2Vodywgc2tiKTtcXG5uZXQvbWFjODAyMTEvc3RhdHVzLmMtMTcwLX1cXG4tLVxcbm5ldC9tYWM4MDIxMS9zdGF0dXMuYz0xMzEyPUVYUE9SVF9TWU1CT0woaWVlZTgwMjExX3JlcG9ydF9sb3dfYWNrKTtcXG5uZXQvbWFjODAyMTEvc3RhdHVzLmMtMTMxMy1cXG5uZXQvbWFjODAyMTEvc3RhdHVzLmM6MTMxNDp2b2lkIGllZWU4MDIxMV9mcmVlX3R4c2tiKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbm5ldC9tYWM4MDIxMS9zdGF0dXMuYy0xMzE1LXtcXG4tLVxcbm5ldC9tYWM4MDIxMS9zdGF0dXMuYy0xMzIxLX1cXG5uZXQvbWFjODAyMTEvc3RhdHVzLmM6MTMyMjpFWFBPUlRfU1lNQk9MKGllZWU4MDIxMV9mcmVlX3R4c2tiKTtcXG5uZXQvbWFjODAyMTEvc3RhdHVzLmMtMTMyMy1cXG5uZXQvbWFjODAyMTEvc3RhdHVzLmM9MTMyND12b2lkIGllZWU4MDIxMV9wdXJnZV90eF9xdWV1ZShzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcXG4tLVxcbm5ldC9tYWM4MDIxMS9zdGF0dXMuYy0xMzI5LVxcdHdoaWxlICgoc2tiID0gX19za2JfZGVxdWV1ZShza2JzKSkpXFxubmV0L21hYzgwMjExL3N0YXR1cy5jOjEzMzA6XFx0XFx0aWVlZTgwMjExX2ZyZWVfdHhza2IoaHcsIHNrYik7XFxubmV0L21hYzgwMjExL3N0YXR1cy5jLTEzMzEtfVxcbi0tXFxubmV0L21hYzgwMjExL3R4LmM9MzMwPXN0YXRpYyB2b2lkIHB1cmdlX29sZF9wc19idWZmZXJzKHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsKVxcbi0tXFxubmV0L21hYzgwMjExL3R4LmMtMzQ5LVxcdFxcdFxcdHB1cmdlZCsrO1xcbm5ldC9tYWM4MDIxMS90eC5jOjM1MDpcXHRcXHRcXHRpZWVlODAyMTFfZnJlZV90eHNrYihcXHUwMDI2bG9jYWwtXFx1MDAzZWh3LCBza2IpO1xcbm5ldC9tYWM4MDIxMS90eC5jLTM1MS1cXHRcXHR9XFxuLS1cXG5uZXQvbWFjODAyMTEvdHguYy0zNjYtXFx0XFx0XFx0XFx0cHVyZ2VkKys7XFxubmV0L21hYzgwMjExL3R4LmM6MzY3OlxcdFxcdFxcdFxcdGllZWU4MDIxMV9mcmVlX3R4c2tiKFxcdTAwMjZsb2NhbC1cXHUwMDNlaHcsIHNrYik7XFxubmV0L21hYzgwMjExL3R4LmMtMzY4LVxcdFxcdFxcdFxcdGJyZWFrO1xcbi0tXFxubmV0L21hYzgwMjExL3R4LmM9Mzc4PWllZWU4MDIxMV90eF9oX211bHRpY2FzdF9wc19idWYoc3RydWN0IGllZWU4MDIxMV90eF9kYXRhICp0eClcXG4tLVxcbm5ldC9tYWM4MDIxMS90eC5jLTQzMi1cXHRcXHQgICAgICAgXFxcIkJDIFRYIGJ1ZmZlciBmdWxsIC0gZHJvcHBpbmcgdGhlIG9sZGVzdCBmcmFtZVxcXFxuXFxcIik7XFxubmV0L21hYzgwMjExL3R4LmM6NDMzOlxcdFxcdGllZWU4MDIxMV9mcmVlX3R4c2tiKFxcdTAwMjZ0eC1cXHUwMDNlbG9jYWwtXFx1MDAzZWh3LCBza2JfZGVxdWV1ZShcXHUwMDI2cHMtXFx1MDAzZWJjX2J1ZikpO1xcbm5ldC9tYWM4MDIxMS90eC5jLTQzNC1cXHR9IGVsc2VcXG4tLVxcbm5ldC9tYWM4MDIxMS90eC5jPTQ1OD1pZWVlODAyMTFfdHhfaF91bmljYXN0X3BzX2J1ZihzdHJ1Y3QgaWVlZTgwMjExX3R4X2RhdGEgKnR4KVxcbi0tXFxubmV0L21hYzgwMjExL3R4LmMtNTAzLVxcdFxcdFxcdCAgICAgICBzdGEtXFx1MDAzZXN0YS5hZGRyLCBhYyk7XFxubmV0L21hYzgwMjExL3R4LmM6NTA0OlxcdFxcdFxcdGllZWU4MDIxMV9mcmVlX3R4c2tiKFxcdTAwMjZsb2NhbC1cXHUwMDNlaHcsIG9sZCk7XFxubmV0L21hYzgwMjExL3R4LmMtNTA1LVxcdFxcdH0gZWxzZVxcbi0tXFxubmV0L21hYzgwMjExL3R4LmM9MTEwOD1zdGF0aWMgYm9vbCBpZWVlODAyMTFfdHhfcHJlcF9hZ2coc3RydWN0IGllZWU4MDIxMV90eF9kYXRhICp0eCxcXG4tLVxcbm5ldC9tYWM4MDIxMS90eC5jLTExNjgtXFx0XFx0aWYgKHB1cmdlX3NrYilcXG5uZXQvbWFjODAyMTEvdHguYzoxMTY5OlxcdFxcdFxcdGllZWU4MDIxMV9mcmVlX3R4c2tiKFxcdTAwMjZ0eC1cXHUwMDNlbG9jYWwtXFx1MDAzZWh3LCBwdXJnZV9za2IpO1xcbm5ldC9tYWM4MDIxMS90eC5jLTExNzAtXFx0fVxcbi0tXFxubmV0L21hYzgwMjExL3R4LmM9MTM4OT1zdGF0aWMgdm9pZCBjb2RlbF9kcm9wX2Z1bmMoc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4tLVxcbm5ldC9tYWM4MDIxMS90eC5jLTEzOTktXFxubmV0L21hYzgwMjExL3R4LmM6MTQwMDpcXHRpZWVlODAyMTFfZnJlZV90eHNrYihodywgc2tiKTtcXG5uZXQvbWFjODAyMTEvdHguYy0xNDAxLX1cXG4tLVxcbm5ldC9tYWM4MDIxMS90eC5jPTE0MzQ9c3RhdGljIHZvaWQgZnFfc2tiX2ZyZWVfZnVuYyhzdHJ1Y3QgZnEgKmZxLFxcbi0tXFxubmV0L21hYzgwMjExL3R4LmMtMTQ0MS1cXHRsb2NhbCA9IGNvbnRhaW5lcl9vZihmcSwgc3RydWN0IGllZWU4MDIxMV9sb2NhbCwgZnEpO1xcbm5ldC9tYWM4MDIxMS90eC5jOjE0NDI6XFx0aWVlZTgwMjExX2ZyZWVfdHhza2IoXFx1MDAyNmxvY2FsLVxcdTAwM2Vodywgc2tiKTtcXG5uZXQvbWFjODAyMTEvdHguYy0xNDQzLX1cXG4tLVxcbm5ldC9tYWM4MDIxMS90eC5jPTE2Nzk9c3RhdGljIGJvb2wgaWVlZTgwMjExX3R4X2ZyYWdzKHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsLFxcbi0tXFxubmV0L21hYzgwMjExL3R4LmMtMTY5NS1cXHRcXHRcXHRfX3NrYl91bmxpbmsoc2tiLCBza2JzKTtcXG5uZXQvbWFjODAyMTEvdHguYzoxNjk2OlxcdFxcdFxcdGllZWU4MDIxMV9mcmVlX3R4c2tiKFxcdTAwMjZsb2NhbC1cXHUwMDNlaHcsIHNrYik7XFxubmV0L21hYzgwMjExL3R4LmMtMTY5Ny1cXHRcXHRcXHRjb250aW51ZTtcXG4tLVxcbm5ldC9tYWM4MDIxMS90eC5jPTE4MTY9c3RhdGljIGludCBpbnZva2VfdHhfaGFuZGxlcnNfZWFybHkoc3RydWN0IGllZWU4MDIxMV90eF9kYXRhICp0eClcXG4tLVxcbm5ldC9tYWM4MDIxMS90eC5jLTE4MzYtXFx0XFx0aWYgKHR4LVxcdTAwM2Vza2IpXFxubmV0L21hYzgwMjExL3R4LmM6MTgzNzpcXHRcXHRcXHRpZWVlODAyMTFfZnJlZV90eHNrYihcXHUwMDI2dHgtXFx1MDAzZWxvY2FsLVxcdTAwM2VodywgdHgtXFx1MDAzZXNrYik7XFxubmV0L21hYzgwMjExL3R4LmMtMTgzOC1cXHRcXHRlbHNlXFxuLS1cXG5uZXQvbWFjODAyMTEvdHguYz0xODUzPXN0YXRpYyBpbnQgaW52b2tlX3R4X2hhbmRsZXJzX2xhdGUoc3RydWN0IGllZWU4MDIxMV90eF9kYXRhICp0eClcXG4tLVxcbm5ldC9tYWM4MDIxMS90eC5jLTE4ODAtXFx0XFx0aWYgKHR4LVxcdTAwM2Vza2IpXFxubmV0L21hYzgwMjExL3R4LmM6MTg4MTpcXHRcXHRcXHRpZWVlODAyMTFfZnJlZV90eHNrYihcXHUwMDI2dHgtXFx1MDAzZWxvY2FsLVxcdTAwM2VodywgdHgtXFx1MDAzZXNrYik7XFxubmV0L21hYzgwMjExL3R4LmMtMTg4Mi1cXHRcXHRlbHNlXFxuLS1cXG5uZXQvbWFjODAyMTEvdHguYz0xOTAyPWJvb2wgaWVlZTgwMjExX3R4X3ByZXBhcmVfc2tiKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxcbi0tXFxubmV0L21hYzgwMjExL3R4LmMtMTkzMi1cXHRpZiAoV0FSTl9PTihza2IyICE9IHNrYiB8fCAhc2tiX3F1ZXVlX2VtcHR5KFxcdTAwMjZ0eC5za2JzKSkpIHtcXG5uZXQvbWFjODAyMTEvdHguYzoxOTMzOlxcdFxcdGllZWU4MDIxMV9mcmVlX3R4c2tiKGh3LCBza2IyKTtcXG5uZXQvbWFjODAyMTEvdHguYy0xOTM0LVxcdFxcdGllZWU4MDIxMV9wdXJnZV90eF9xdWV1ZShodywgXFx1MDAyNnR4LnNrYnMpO1xcbi0tXFxubmV0L21hYzgwMjExL3R4LmM9MTk0NT1zdGF0aWMgYm9vbCBpZWVlODAyMTFfdHgoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsXFxuLS1cXG5uZXQvbWFjODAyMTEvdHguYy0xOTYzLVxcdGlmICh1bmxpa2VseShyZXNfcHJlcGFyZSA9PSBUWF9EUk9QKSkge1xcbm5ldC9tYWM4MDIxMS90eC5jOjE5NjQ6XFx0XFx0aWVlZTgwMjExX2ZyZWVfdHhza2IoXFx1MDAyNmxvY2FsLVxcdTAwM2Vodywgc2tiKTtcXG5uZXQvbWFjODAyMTEvdHguYy0xOTY1LVxcdFxcdHR4LnNkYXRhLVxcdTAwM2V0eF9oYW5kbGVyc19kcm9wKys7XFxuLS1cXG5uZXQvbWFjODAyMTEvdHguYz0yMDM0PXZvaWQgaWVlZTgwMjExX3htaXQoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsXFxuLS1cXG5uZXQvbWFjODAyMTEvdHguYy0yMDU2LVxcdGlmIChpZWVlODAyMTFfc2tiX3Jlc2l6ZShzZGF0YSwgc2tiLCBoZWFkcm9vbSwgZW5jcnlwdCkpIHtcXG5uZXQvbWFjODAyMTEvdHguYzoyMDU3OlxcdFxcdGllZWU4MDIxMV9mcmVlX3R4c2tiKFxcdTAwMjZsb2NhbC1cXHUwMDNlaHcsIHNrYik7XFxubmV0L21hYzgwMjExL3R4LmMtMjA1OC1cXHRcXHRyZXR1cm47XFxuLS1cXG5uZXQvbWFjODAyMTEvdHguYz0yNjMxPXN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqaWVlZTgwMjExX2J1aWxkX2hkcihzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSxcXG4tLVxcbm5ldC9tYWM4MDIxMS90eC5jLTI5ODItXFx0XFx0aWYgKGllZWU4MDIxMV9za2JfcmVzaXplKHNkYXRhLCBza2IsIGhlYWRfbmVlZCwgRU5DUllQVF9EQVRBKSkge1xcbm5ldC9tYWM4MDIxMS90eC5jOjI5ODM6XFx0XFx0XFx0aWVlZTgwMjExX2ZyZWVfdHhza2IoXFx1MDAyNmxvY2FsLVxcdTAwM2Vodywgc2tiKTtcXG5uZXQvbWFjODAyMTEvdHguYy0yOTg0LVxcdFxcdFxcdHNrYiA9IE5VTEw7XFxuLS1cXG5uZXQvbWFjODAyMTEvdHguYz0zODYwPXN0cnVjdCBza19idWZmICppZWVlODAyMTFfdHhfZGVxdWV1ZShzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcXG4tLVxcbm5ldC9tYWM4MDIxMS90eC5jLTM5NDAtXFx0XFx0XFx0STgwMl9ERUJVR19JTkMobG9jYWwtXFx1MDAzZXR4X2hhbmRsZXJzX2Ryb3BfdW5hdXRoX3BvcnQpO1xcbm5ldC9tYWM4MDIxMS90eC5jOjM5NDE6XFx0XFx0XFx0aWVlZTgwMjExX2ZyZWVfdHhza2IoXFx1MDAyNmxvY2FsLVxcdTAwM2Vodywgc2tiKTtcXG5uZXQvbWFjODAyMTEvdHguYy0zOTQyLVxcdFxcdFxcdGdvdG8gYmVnaW47XFxuLS1cXG5uZXQvbWFjODAyMTEvdHguYy0zOTUyLVxcdGlmIChyICE9IFRYX0NPTlRJTlVFKSB7XFxubmV0L21hYzgwMjExL3R4LmM6Mzk1MzpcXHRcXHRpZWVlODAyMTFfZnJlZV90eHNrYihcXHUwMDI2bG9jYWwtXFx1MDAzZWh3LCBza2IpO1xcbm5ldC9tYWM4MDIxMS90eC5jLTM5NTQtXFx0XFx0Z290byBiZWdpbjtcXG4tLVxcbm5ldC9tYWM4MDIxMS90eC5jLTM5NjQtXFx0XFx0XFx0aWYgKHIgIT0gVFhfQ09OVElOVUUpIHtcXG5uZXQvbWFjODAyMTEvdHguYzozOTY1OlxcdFxcdFxcdFxcdGllZWU4MDIxMV9mcmVlX3R4c2tiKFxcdTAwMjZsb2NhbC1cXHUwMDNlaHcsIHNrYik7XFxubmV0L21hYzgwMjExL3R4LmMtMzk2Ni1cXHRcXHRcXHRcXHRnb3RvIGJlZ2luO1xcbi0tXFxubmV0L21hYzgwMjExL3R4LmMtMzk4My1cXHRcXHRpZiAociAhPSBUWF9DT05USU5VRSkge1xcbm5ldC9tYWM4MDIxMS90eC5jOjM5ODQ6XFx0XFx0XFx0aWVlZTgwMjExX2ZyZWVfdHhza2IoXFx1MDAyNmxvY2FsLVxcdTAwM2Vodywgc2tiKTtcXG5uZXQvbWFjODAyMTEvdHguYy0zOTg1LVxcdFxcdFxcdGdvdG8gYmVnaW47XFxuLS1cXG5uZXQvbWFjODAyMTEvdHguYy00MDAzLVxcdFxcdGlmIChza2JfbGluZWFyaXplKHNrYikpIHtcXG5uZXQvbWFjODAyMTEvdHguYzo0MDA0OlxcdFxcdFxcdGllZWU4MDIxMV9mcmVlX3R4c2tiKFxcdTAwMjZsb2NhbC1cXHUwMDNlaHcsIHNrYik7XFxubmV0L21hYzgwMjExL3R4LmMtNDAwNS1cXHRcXHRcXHRnb3RvIGJlZ2luO1xcbi0tXFxubmV0L21hYzgwMjExL3R4LmMtNDAyMi1cXHRcXHR9IGVsc2UgaWYgKGllZWU4MDIxMV9od19jaGVjayhcXHUwMDI2bG9jYWwtXFx1MDAzZWh3LCBRVUVVRV9DT05UUk9MKSkge1xcbm5ldC9tYWM4MDIxMS90eC5jOjQwMjM6XFx0XFx0XFx0aWVlZTgwMjExX2ZyZWVfdHhza2IoXFx1MDAyNmxvY2FsLVxcdTAwM2Vodywgc2tiKTtcXG5uZXQvbWFjODAyMTEvdHguYy00MDI0LVxcdFxcdFxcdGdvdG8gYmVnaW47XFxuLS1cXG5uZXQvbWFjODAyMTEvdHguYz00ODk1PXZvaWQgaWVlZTgwMjExX2NsZWFyX3R4X3BlbmRpbmcoc3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwpXFxuLS1cXG5uZXQvbWFjODAyMTEvdHguYy00OTAxLVxcdFxcdHdoaWxlICgoc2tiID0gc2tiX2RlcXVldWUoXFx1MDAyNmxvY2FsLVxcdTAwM2VwZW5kaW5nW2ldKSkgIT0gTlVMTClcXG5uZXQvbWFjODAyMTEvdHguYzo0OTAyOlxcdFxcdFxcdGllZWU4MDIxMV9mcmVlX3R4c2tiKFxcdTAwMjZsb2NhbC1cXHUwMDNlaHcsIHNrYik7XFxubmV0L21hYzgwMjExL3R4LmMtNDkwMy1cXHR9XFxuLS1cXG5uZXQvbWFjODAyMTEvdHguYz00OTYzPXZvaWQgaWVlZTgwMjExX3R4X3BlbmRpbmcoc3RydWN0IHRhc2tsZXRfc3RydWN0ICp0KVxcbi0tXFxubmV0L21hYzgwMjExL3R4LmMtNDk4Ny1cXHRcXHRcXHRpZiAoV0FSTl9PTighaW5mby1cXHUwMDNlY29udHJvbC52aWYpKSB7XFxubmV0L21hYzgwMjExL3R4LmM6NDk4ODpcXHRcXHRcXHRcXHRpZWVlODAyMTFfZnJlZV90eHNrYihcXHUwMDI2bG9jYWwtXFx1MDAzZWh3LCBza2IpO1xcbm5ldC9tYWM4MDIxMS90eC5jLTQ5ODktXFx0XFx0XFx0XFx0Y29udGludWU7XFxuLS1cXG5uZXQvbWFjODAyMTEvdHguYz02MjMyPWllZWU4MDIxMV9nZXRfYnVmZmVyZWRfYmMoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXFxuLS1cXG5uZXQvbWFjODAyMTEvdHguYy02Mjg3LVxcdFxcdFxcdGJyZWFrO1xcbm5ldC9tYWM4MDIxMS90eC5jOjYyODg6XFx0XFx0aWVlZTgwMjExX2ZyZWVfdHhza2IoaHcsIHNrYik7XFxubmV0L21hYzgwMjExL3R4LmMtNjI4OS1cXHR9XFxuLS1cXG5uZXQvbWFjODAyMTEvdXRpbC5jPTU1MT12b2lkIGllZWU4MDIxMV9hZGRfcGVuZGluZ19za2Ioc3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwsXFxuLS1cXG5uZXQvbWFjODAyMTEvdXRpbC5jLTU1OS1cXHRpZiAoV0FSTl9PTighaW5mby1cXHUwMDNlY29udHJvbC52aWYpKSB7XFxubmV0L21hYzgwMjExL3V0aWwuYzo1NjA6XFx0XFx0aWVlZTgwMjExX2ZyZWVfdHhza2IoXFx1MDAyNmxvY2FsLVxcdTAwM2Vodywgc2tiKTtcXG5uZXQvbWFjODAyMTEvdXRpbC5jLTU2MS1cXHRcXHRyZXR1cm47XFxuLS1cXG5uZXQvbWFjODAyMTEvdXRpbC5jPTU3Mz12b2lkIGllZWU4MDIxMV9hZGRfcGVuZGluZ19za2JzKHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsLFxcbi0tXFxubmV0L21hYzgwMjExL3V0aWwuYy01ODUtXFx0XFx0aWYgKFdBUk5fT04oIWluZm8tXFx1MDAzZWNvbnRyb2wudmlmKSkge1xcbm5ldC9tYWM4MDIxMS91dGlsLmM6NTg2OlxcdFxcdFxcdGllZWU4MDIxMV9mcmVlX3R4c2tiKFxcdTAwMjZsb2NhbC1cXHUwMDNlaHcsIHNrYik7XFxubmV0L21hYzgwMjExL3V0aWwuYy01ODctXFx0XFx0XFx0Y29udGludWU7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA2VDIxOjA2OjQ2Ljc3MDMwMDY3MVoiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI3MzMyNDIzNjU5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgUGF0Y2ggZm9yIFBvdGVudGlhbCBGdXp6aW5nKipcblxuT2theSwgc28gdGhlIHBhdGNoIEknbSBsb29raW5nIGF0IG1vZGlmaWVzIGBpZWVlODAyMTFfZG9fc3RvcGAsIHNwZWNpZmljYWxseSB3aXRoaW4gYG5ldC9tYWM4MDIxMS9pZmFjZS5jYC4gVGhpcyBpcyB0aGUgZnVuY3Rpb24gcmVzcG9uc2libGUgZm9yIHN0b3BwaW5nIGFuIGludGVyZmFjZSwgd2hpY2gsIGJ5IGl0cyBuYXR1cmUsIGlzbid0IGEgaGlnaC1mcmVxdWVuY3kgb3BlcmF0aW9uIOKAkyBzbyBpdCdzIG5vdCBhIGhvdCBwYXRoLiBIb3dldmVyLCBpdCAqaXMqIHJlYWNoYWJsZSDigJMgdGhhdCdzIGdvb2QuIEkgY2FuIHRyaWdnZXIgaXQgd2l0aCBzdGFuZGFyZCBuZXRsaW5rIGNvbW1hbmRzIGxpa2UgYGlmY29uZmlnIHdsYW4wIGRvd25gLlxuXG5Ob3csIHRoZSBpbXBvcnRhbnQgcXVlc3Rpb246IGlzIGl0IHdvcnRoIGZ1enppbmc/IEdpdmVuIHRoYXQgaXQncyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHdpdGhpbiB0aGUga2VybmVsLCB0aGUgYW5zd2VyIGlzIGEgZGVmaW5pdGUgeWVzLiBXZSBoYXZlIHRoZSBgTUFDODAyMTFgIGNvbmZpZywgd2hpY2ggY292ZXJzIHRoaXMgY29kZS4gTGV0IG1lIGRvdWJsZS1jaGVjayB0aG91Z2guLi4gWXVwLCB0aGUgY29kZSBpcyBpbmRlZWQgaW4gYG5ldC9tYWM4MDIxMS9pZmFjZS5jYC4gSSdtIGdvaW5nIHRvIG1ha2Ugc3VyZSB0aGVyZSBhcmVuJ3QgYW55IG90aGVyIGRlcGVuZGVudCBjb25maWdzLlxuXG5XYWl0IGEgc2Vjb25kLi4uIHRoZSBwYXRjaCBzcGVjaWZpZXMgYSBjaGVjayBmb3IgYHNkYXRhLVx1MDAzZXZpZi50eXBlID09IE5MODAyMTFfSUZUWVBFX0FQX1ZMQU5gLiBPa2F5LCBzbyBpdCdzICpzcGVjaWZpY2FsbHkqIHJlbGF0ZWQgdG8gQVBfVkxBTiBpbnRlcmZhY2VzLiBUaGF0IGNoYW5nZXMgdGhpbmdzIGEgYml0LiBEb2VzIEFQX1ZMQU4gaGF2ZSBpdHMgb3duIHNwZWNpZmljIGNvbmZpZ3VyYXRpb24/IExldCBtZSBjb25zdWx0IGBuZXQvbWFjODAyMTEvS2NvbmZpZ2Agb3IgcG9zc2libHkgYG5ldC93aXJlbGVzcy9LY29uZmlnYCB0byBzZWUgaWYgdGhlcmUncyBhIGRlZGljYXRlZCBjb25maWcgb3B0aW9uIHJlbGF0ZWQgdG8gQVBfVkxBTiB0aGF0IEkgbmVlZCB0byBiZSBhd2FyZSBvZi4gR290dGEgZW5zdXJlIHRoZSBmdXp6aW5nIHNldHVwIGFjY3VyYXRlbHkgcmVmbGVjdHMgdGhlIHJlbGV2YW50IGtlcm5lbCBidWlsZCBjb25maWd1cmF0aW9ucy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTE0NDIsIk91dHB1dFRva2VucyI6MzMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNjksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDZUMjE6MDc6MTQuMTAyNzI2OTc5WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxODkyMDQ4NDUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiQVBfVkxBTlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvbWFjODAyMTEvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIlxcbkZ1bGwgb3V0cHV0IGlzIHRvbyBsb25nLCBzaG93aW5nIDUwMCBvdXQgb2YgNjQyIGxpbmVzLlxcblVzZSBtb3JlIHByZWNpc2UgZXhwcmVzc2lvbiBpZiBwb3NzaWJsZS5cXG5cXG5uZXQvbWFjODAyMTEvYWdnLXR4LmM9NjAzPWludCBpZWVlODAyMTFfc3RhcnRfdHhfYmFfc2Vzc2lvbihzdHJ1Y3QgaWVlZTgwMjExX3N0YSAqcHVic3RhLCB1MTYgdGlkLFxcbi0tXFxubmV0L21hYzgwMjExL2FnZy10eC5jLTY0MS1cXHQgICAgc2RhdGEtXFx1MDAzZXZpZi50eXBlICE9IE5MODAyMTFfSUZUWVBFX01FU0hfUE9JTlQgXFx1MDAyNlxcdTAwMjZcXG5uZXQvbWFjODAyMTEvYWdnLXR4LmM6NjQyOlxcdCAgICBzZGF0YS1cXHUwMDNldmlmLnR5cGUgIT0gTkw4MDIxMV9JRlRZUEVfQVBfVkxBTiBcXHUwMDI2XFx1MDAyNlxcbm5ldC9tYWM4MDIxMS9hZ2ctdHguYy02NDMtXFx0ICAgIHNkYXRhLVxcdTAwM2V2aWYudHlwZSAhPSBOTDgwMjExX0lGVFlQRV9BUCBcXHUwMDI2XFx1MDAyNlxcbi0tXFxubmV0L21hYzgwMjExL2NmZy5jPTIwNj1zdGF0aWMgc3RydWN0IHdpcmVsZXNzX2RldiAqaWVlZTgwMjExX2FkZF9pZmFjZShzdHJ1Y3Qgd2lwaHkgKndpcGh5LFxcbi0tXFxubmV0L21hYzgwMjExL2NmZy5jLTIzNS1cXHRzd2l0Y2ggKHR5cGUpIHtcXG5uZXQvbWFjODAyMTEvY2ZnLmM6MjM2OlxcdGNhc2UgTkw4MDIxMV9JRlRZUEVfQVBfVkxBTjpcXG5uZXQvbWFjODAyMTEvY2ZnLmMtMjM3LVxcdFxcdGJyZWFrO1xcbi0tXFxubmV0L21hYzgwMjExL2NmZy5jPTI1OT1zdGF0aWMgaW50IGllZWU4MDIxMV9jaGFuZ2VfaWZhY2Uoc3RydWN0IHdpcGh5ICp3aXBoeSxcXG4tLVxcbm5ldC9tYWM4MDIxMS9jZmcuYy0yNzQtXFxubmV0L21hYzgwMjExL2NmZy5jOjI3NTpcXHRpZiAodHlwZSA9PSBOTDgwMjExX0lGVFlQRV9BUF9WTEFOIFxcdTAwMjZcXHUwMDI2IHBhcmFtcy1cXHUwMDNldXNlXzRhZGRyID09IDApIHtcXG5uZXQvbWFjODAyMTEvY2ZnLmMtMjc2LVxcdFxcdFJDVV9JTklUX1BPSU5URVIoc2RhdGEtXFx1MDAzZXUudmxhbi5zdGEsIE5VTEwpO1xcbi0tXFxubmV0L21hYzgwMjExL2NmZy5jPTYxMz1zdGF0aWMgaW50IGllZWU4MDIxMV9hZGRfa2V5KHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsXFxuLS1cXG5uZXQvbWFjODAyMTEvY2ZnLmMtNjk5LVxcdGNhc2UgTkw4MDIxMV9JRlRZUEVfQVA6XFxubmV0L21hYzgwMjExL2NmZy5jOjcwMDpcXHRjYXNlIE5MODAyMTFfSUZUWVBFX0FQX1ZMQU46XFxubmV0L21hYzgwMjExL2NmZy5jLTcwMS1cXHRjYXNlIE5MODAyMTFfSUZUWVBFX05BTjpcXG4tLVxcbm5ldC9tYWM4MDIxMS9jZmcuYz0yNjMwPXN0YXRpYyBpbnQgaWVlZTgwMjExX2FkZF9zdGF0aW9uKHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsXFxuLS1cXG5uZXQvbWFjODAyMTEvY2ZnLmMtMjY0My1cXG5uZXQvbWFjODAyMTEvY2ZnLmM6MjY0NDpcXHRcXHRpZiAoc2RhdGEtXFx1MDAzZXZpZi50eXBlICE9IE5MODAyMTFfSUZUWVBFX0FQX1ZMQU4gXFx1MDAyNlxcdTAwMjZcXG5uZXQvbWFjODAyMTEvY2ZnLmMtMjY0NS1cXHRcXHQgICAgc2RhdGEtXFx1MDAzZXZpZi50eXBlICE9IE5MODAyMTFfSUZUWVBFX0FQKVxcbi0tXFxubmV0L21hYzgwMjExL2NmZy5jPTI3ODM9c3RhdGljIGludCBpZWVlODAyMTFfY2hhbmdlX3N0YXRpb24oc3RydWN0IHdpcGh5ICp3aXBoeSxcXG4tLVxcbm5ldC9tYWM4MDIxMS9jZmcuYy0yODIwLVxcdGNhc2UgTkw4MDIxMV9JRlRZUEVfQVA6XFxubmV0L21hYzgwMjExL2NmZy5jOjI4MjE6XFx0Y2FzZSBOTDgwMjExX0lGVFlQRV9BUF9WTEFOOlxcbm5ldC9tYWM4MDIxMS9jZmcuYy0yODIyLVxcdFxcdGlmICh0ZXN0X3N0YV9mbGFnKHN0YSwgV0xBTl9TVEFfQVNTT0MpKVxcbi0tXFxubmV0L21hYzgwMjExL2NmZy5jLTI4NTAtXFxubmV0L21hYzgwMjExL2NmZy5jOjI4NTE6XFx0XFx0aWYgKHN0YS1cXHUwMDNlc2RhdGEtXFx1MDAzZXZpZi50eXBlID09IE5MODAyMTFfSUZUWVBFX0FQX1ZMQU4gXFx1MDAyNlxcdTAwMjZcXG5uZXQvbWFjODAyMTEvY2ZnLmMtMjg1Mi1cXHRcXHQgICAgc3RhLVxcdTAwM2VzZGF0YS1cXHUwMDNldS52bGFuLnN0YSlcXG4tLVxcbm5ldC9tYWM4MDIxMS9jaGFuLmM9MTEyPWllZWU4MDIxMV9jaGFuY3R4X3VzZXJfaXRlcl9uZXh0KHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsLFxcbi0tXFxubmV0L21hYzgwMjExL2NoYW4uYy0xNDItXFxubmV0L21hYzgwMjExL2NoYW4uYzoxNDM6XFx0XFx0LyogQVBfVkxBTiBoYXMgYSBjaGFuY3R4IHBvaW50ZXIgYnV0IGZvbGxvd3MgQVAgKi9cXG5uZXQvbWFjODAyMTEvY2hhbi5jOjE0NDpcXHRcXHRpZiAoaXRlci1cXHUwMDNlc2RhdGEtXFx1MDAzZXZpZi50eXBlID09IE5MODAyMTFfSUZUWVBFX0FQX1ZMQU4pXFxubmV0L21hYzgwMjExL2NoYW4uYy0xNDUtXFx0XFx0XFx0Y29udGludWU7XFxuLS1cXG5uZXQvbWFjODAyMTEvY2hhbi5jPTUxOT1pZWVlODAyMTFfZ2V0X3dpZHRoX29mX2xpbmsoc3RydWN0IGllZWU4MDIxMV9saW5rX2RhdGEgKmxpbmspXFxuLS1cXG5uZXQvbWFjODAyMTEvY2hhbi5jLTU0MC1cXHRjYXNlIE5MODAyMTFfSUZUWVBFX0FQOlxcbm5ldC9tYWM4MDIxMS9jaGFuLmM6NTQxOlxcdGNhc2UgTkw4MDIxMV9JRlRZUEVfQVBfVkxBTjpcXG5uZXQvbWFjODAyMTEvY2hhbi5jLTU0Mi1cXHRcXHRyZXR1cm4gaWVlZTgwMjExX2dldF9tYXhfcmVxdWlyZWRfYncobGluayk7XFxuLS1cXG5uZXQvbWFjODAyMTEvY2hhbi5jPTE1Nzk9aWVlZTgwMjExX2xpbmtfY2hhbmN0eF9yZXNlcnZhdGlvbl9jb21wbGV0ZShzdHJ1Y3QgaWVlZTgwMjExX2xpbmtfZGF0YSAqbGluaylcXG4tLVxcbm5ldC9tYWM4MDIxMS9jaGFuLmMtMTU5NS1cXHRjYXNlIE5MODAyMTFfSUZUWVBFX1VOU1BFQ0lGSUVEOlxcbm5ldC9tYWM4MDIxMS9jaGFuLmM6MTU5NjpcXHRjYXNlIE5MODAyMTFfSUZUWVBFX0FQX1ZMQU46XFxubmV0L21hYzgwMjExL2NoYW4uYy0xNTk3LVxcdGNhc2UgTkw4MDIxMV9JRlRZUEVfV0RTOlxcbi0tXFxubmV0L21hYzgwMjExL2NoYW4uYz0yNDgyPXZvaWQgaWVlZTgwMjExX2xpbmtfcmVsZWFzZV9jaGFubmVsKHN0cnVjdCBpZWVlODAyMTFfbGlua19kYXRhICpsaW5rKVxcbi0tXFxubmV0L21hYzgwMjExL2NoYW4uYy0yNDg1LVxcbm5ldC9tYWM4MDIxMS9jaGFuLmM6MjQ4NjpcXHRpZiAoc2RhdGEtXFx1MDAzZXZpZi50eXBlID09IE5MODAyMTFfSUZUWVBFX0FQX1ZMQU4pXFxubmV0L21hYzgwMjExL2NoYW4uYy0yNDg3LVxcdFxcdHJldHVybjtcXG4tLVxcbm5ldC9tYWM4MDIxMS9jaGFuLmM9MjQ5NT12b2lkIGllZWU4MDIxMV9saW5rX3ZsYW5fY29weV9jaGFuY3R4KHN0cnVjdCBpZWVlODAyMTFfbGlua19kYXRhICpsaW5rKVxcbi0tXFxubmV0L21hYzgwMjExL2NoYW4uYy0yNTA2LVxcbm5ldC9tYWM4MDIxMS9jaGFuLmM6MjUwNzpcXHRpZiAoV0FSTl9PTihzZGF0YS1cXHUwMDNldmlmLnR5cGUgIT0gTkw4MDIxMV9JRlRZUEVfQVBfVkxBTiB8fCAhc2RhdGEtXFx1MDAzZWJzcykpXFxubmV0L21hYzgwMjExL2NoYW4uYy0yNTA4LVxcdFxcdHJldHVybjtcXG4tLVxcbm5ldC9tYWM4MDIxMS9kZWJ1Z2ZzX25ldGRldi5jPTkzNz1zdGF0aWMgdm9pZCBhZGRfZmlsZXMoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEpXFxuLS1cXG5uZXQvbWFjODAyMTEvZGVidWdmc19uZXRkZXYuYy05NjQtXFx0XFx0YnJlYWs7XFxubmV0L21hYzgwMjExL2RlYnVnZnNfbmV0ZGV2LmM6OTY1OlxcdGNhc2UgTkw4MDIxMV9JRlRZUEVfQVBfVkxBTjpcXG5uZXQvbWFjODAyMTEvZGVidWdmc19uZXRkZXYuYy05NjYtXFx0XFx0YWRkX3ZsYW5fZmlsZXMoc2RhdGEpO1xcbi0tXFxubmV0L21hYzgwMjExL2RyaXZlci1vcHMuYz01Nz1pbnQgZHJ2X2FkZF9pbnRlcmZhY2Uoc3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwsXFxuLS1cXG5uZXQvbWFjODAyMTEvZHJpdmVyLW9wcy5jLTY0LVxcbm5ldC9tYWM4MDIxMS9kcml2ZXItb3BzLmM6NjU6XFx0aWYgKFdBUk5fT04oc2RhdGEtXFx1MDAzZXZpZi50eXBlID09IE5MODAyMTFfSUZUWVBFX0FQX1ZMQU4gfHxcXG5uZXQvbWFjODAyMTEvZHJpdmVyLW9wcy5jLTY2LVxcdFxcdCAgICAoc2RhdGEtXFx1MDAzZXZpZi50eXBlID09IE5MODAyMTFfSUZUWVBFX01PTklUT1IgXFx1MDAyNlxcdTAwMjZcXG4tLVxcbm5ldC9tYWM4MDIxMS9kcml2ZXItb3BzLmg9MjU9Z2V0X2Jzc19zZGF0YShzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSlcXG5uZXQvbWFjODAyMTEvZHJpdmVyLW9wcy5oLTI2LXtcXG5uZXQvbWFjODAyMTEvZHJpdmVyLW9wcy5oOjI3OlxcdGlmIChzZGF0YSBcXHUwMDI2XFx1MDAyNiBzZGF0YS1cXHUwMDNldmlmLnR5cGUgPT0gTkw4MDIxMV9JRlRZUEVfQVBfVkxBTilcXG5uZXQvbWFjODAyMTEvZHJpdmVyLW9wcy5oLTI4LVxcdFxcdHNkYXRhID0gY29udGFpbmVyX29mKHNkYXRhLVxcdTAwM2Vic3MsIHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEsXFxuLS1cXG5uZXQvbWFjODAyMTEvaGUuYz0xMz1pZWVlODAyMTFfdXBkYXRlX2Zyb21faGVfNmdoel9jYXBhKGNvbnN0IHN0cnVjdCBpZWVlODAyMTFfaGVfNmdoel9jYXBhICpoZV82Z2h6X2NhcGEsXFxuLS1cXG5uZXQvbWFjODAyMTEvaGUuYy0xOS1cXHRpZiAoc3RhLVxcdTAwM2VzZGF0YS1cXHUwMDNldmlmLnR5cGUgPT0gTkw4MDIxMV9JRlRZUEVfQVAgfHxcXG5uZXQvbWFjODAyMTEvaGUuYzoyMDpcXHQgICAgc3RhLVxcdTAwM2VzZGF0YS1cXHUwMDNldmlmLnR5cGUgPT0gTkw4MDIxMV9JRlRZUEVfQVBfVkxBTikge1xcbm5ldC9tYWM4MDIxMS9oZS5jLTIxLVxcdFxcdHN3aXRjaCAobGUxNl9nZXRfYml0cyhoZV82Z2h6X2NhcGEtXFx1MDAzZWNhcGEsXFxuLS1cXG5uZXQvbWFjODAyMTEvaHQuYz0xMzg9Ym9vbCBpZWVlODAyMTFfaHRfY2FwX2llX3RvX3N0YV9odF9jYXAoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsXFxuLS1cXG5uZXQvbWFjODAyMTEvaHQuYy0yNTYtXFx0aWYgKHN0YS1cXHUwMDNlc2RhdGEtXFx1MDAzZXZpZi50eXBlID09IE5MODAyMTFfSUZUWVBFX0FQIHx8XFxubmV0L21hYzgwMjExL2h0LmM6MjU3OlxcdCAgICBzdGEtXFx1MDAzZXNkYXRhLVxcdTAwM2V2aWYudHlwZSA9PSBOTDgwMjExX0lGVFlQRV9BUF9WTEFOIHx8XFxubmV0L21hYzgwMjExL2h0LmMtMjU4LVxcdCAgICBzdGEtXFx1MDAzZXNkYXRhLVxcdTAwM2V2aWYudHlwZSA9PSBOTDgwMjExX0lGVFlQRV9OQU4gfHxcXG4tLVxcbm5ldC9tYWM4MDIxMS9pZWVlODAyMTFfaS5oPTE5NTQ9dm9pZCBpZWVlODAyMTFfdmlmX3VuYmxvY2tfcXVldWVzX2NzYShzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSk7XFxuLS1cXG5uZXQvbWFjODAyMTEvaWVlZTgwMjExX2kuaC0xOTU3LSAqIGludGVyZmFjZS4gSXQgcmV0dXJucyAtMSBpZiB0aGF0IG51bWJlciBpcyBub3QgdHJhY2tlZCwgdGhhdCBpcyBmb3IgbmV0ZGV2c1xcbm5ldC9tYWM4MDIxMS9pZWVlODAyMTFfaS5oOjE5NTg6ICogbm90IGluIEFQIG9yIEFQX1ZMQU4gbW9kZSBvciB3aGVuIHVzaW5nIDRhZGRyLlxcbm5ldC9tYWM4MDIxMS9pZWVlODAyMTFfaS5oLTE5NTktICovXFxuLS1cXG5uZXQvbWFjODAyMTEvaWVlZTgwMjExX2kuaD0xOTYxPWllZWU4MDIxMV92aWZfZ2V0X251bV9tY2FzdF9pZihzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSlcXG4tLVxcbm5ldC9tYWM4MDIxMS9pZWVlODAyMTFfaS5oLTE5NjQtXFx0XFx0cmV0dXJuIGF0b21pY19yZWFkKFxcdTAwMjZzZGF0YS1cXHUwMDNldS5hcC5udW1fbWNhc3Rfc3RhKTtcXG5uZXQvbWFjODAyMTEvaWVlZTgwMjExX2kuaDoxOTY1OlxcdGlmIChzZGF0YS1cXHUwMDNldmlmLnR5cGUgPT0gTkw4MDIxMV9JRlRZUEVfQVBfVkxBTiBcXHUwMDI2XFx1MDAyNiAhc2RhdGEtXFx1MDAzZXUudmxhbi5zdGEpXFxubmV0L21hYzgwMjExL2llZWU4MDIxMV9pLmgtMTk2Ni1cXHRcXHRyZXR1cm4gYXRvbWljX3JlYWQoXFx1MDAyNnNkYXRhLVxcdTAwM2V1LnZsYW4ubnVtX21jYXN0X3N0YSk7XFxuLS1cXG5uZXQvbWFjODAyMTEvaWVlZTgwMjExX2kuaD0yMzA2PWllZWU4MDIxMV9tZ210X2JhKHN0cnVjdCBza19idWZmICpza2IsIGNvbnN0IHU4ICpkYSxcXG4tLVxcbm5ldC9tYWM4MDIxMS9pZWVlODAyMTFfaS5oLTIzMTQtXFx0aWYgKHNkYXRhLVxcdTAwM2V2aWYudHlwZSA9PSBOTDgwMjExX0lGVFlQRV9BUCB8fFxcbm5ldC9tYWM4MDIxMS9pZWVlODAyMTFfaS5oOjIzMTU6XFx0ICAgIHNkYXRhLVxcdTAwM2V2aWYudHlwZSA9PSBOTDgwMjExX0lGVFlQRV9BUF9WTEFOIHx8XFxubmV0L21hYzgwMjExL2llZWU4MDIxMV9pLmgtMjMxNi1cXHQgICAgc2RhdGEtXFx1MDAzZXZpZi50eXBlID09IE5MODAyMTFfSUZUWVBFX01FU0hfUE9JTlQpXFxuLS1cXG5uZXQvbWFjODAyMTEvaWZhY2UuYz0zMjk9c3RhdGljIGlubGluZSBpbnQgaWRlbnRpY2FsX21hY19hZGRyX2FsbG93ZWQoaW50IHR5cGUxLCBpbnQgdHlwZTIpXFxuLS1cXG5uZXQvbWFjODAyMTEvaWZhY2UuYy0zMzQtXFx0XFx0dHlwZTIgPT0gTkw4MDIxMV9JRlRZUEVfUDJQX0RFVklDRSB8fFxcbm5ldC9tYWM4MDIxMS9pZmFjZS5jOjMzNTpcXHRcXHQodHlwZTEgPT0gTkw4MDIxMV9JRlRZUEVfQVAgXFx1MDAyNlxcdTAwMjYgdHlwZTIgPT0gTkw4MDIxMV9JRlRZUEVfQVBfVkxBTikgfHxcXG5uZXQvbWFjODAyMTEvaWZhY2UuYzozMzY6XFx0XFx0KHR5cGUxID09IE5MODAyMTFfSUZUWVBFX0FQX1ZMQU4gXFx1MDAyNlxcdTAwMjZcXG5uZXQvbWFjODAyMTEvaWZhY2UuYy0zMzctXFx0XFx0XFx0KHR5cGUyID09IE5MODAyMTFfSUZUWVBFX0FQIHx8XFxubmV0L21hYzgwMjExL2lmYWNlLmM6MzM4OlxcdFxcdFxcdCB0eXBlMiA9PSBOTDgwMjExX0lGVFlQRV9BUF9WTEFOKSk7XFxubmV0L21hYzgwMjExL2lmYWNlLmMtMzM5LX1cXG4tLVxcbm5ldC9tYWM4MDIxMS9pZmFjZS5jPTM0MT1zdGF0aWMgaW50IGllZWU4MDIxMV9jaGVja19jb25jdXJyZW50X2lmYWNlKHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLFxcbi0tXFxubmV0L21hYzgwMjExL2lmYWNlLmMtNDE0LVxcdFxcdFxcdCAqL1xcbm5ldC9tYWM4MDIxMS9pZmFjZS5jOjQxNTpcXHRcXHRcXHRpZiAoaWZ0eXBlID09IE5MODAyMTFfSUZUWVBFX0FQX1ZMQU4gXFx1MDAyNlxcdTAwMjZcXG5uZXQvbWFjODAyMTEvaWZhY2UuYy00MTYtXFx0XFx0XFx0ICAgIG5zZGF0YS1cXHUwMDNldmlmLnR5cGUgPT0gTkw4MDIxMV9JRlRZUEVfQVApXFxuLS1cXG5uZXQvbWFjODAyMTEvaWZhY2UuYz00Nzk9c3RhdGljIHZvaWQgaWVlZTgwMjExX2RvX3N0b3Aoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsIGJvb2wgZ29pbmdfZG93bilcXG4tLVxcbm5ldC9tYWM4MDIxMS9pZmFjZS5jLTUxMy1cXHRcXHRicmVhaztcXG5uZXQvbWFjODAyMTEvaWZhY2UuYzo1MTQ6XFx0Y2FzZSBOTDgwMjExX0lGVFlQRV9BUF9WTEFOOlxcbm5ldC9tYWM4MDIxMS9pZmFjZS5jLTUxNS1cXHRcXHRpZWVlODAyMTFfYXB2bGFuX2xpbmtfY2xlYXIoc2RhdGEpO1xcbi0tXFxubmV0L21hYzgwMjExL2lmYWNlLmMtNTMwLVxcdCAqXFxubmV0L21hYzgwMjExL2lmYWNlLmM6NTMxOlxcdCAqIEZvciBBUF9WTEFOcywgTkFOIGFuZCBOQU5fREFUQSBzdGF0aW9ucyBtYXkgZXhpc3Qgc2luY2UgdGhlcmUnc1xcbm5ldC9tYWM4MDIxMS9pZmFjZS5jLTUzMi1cXHQgKiBub3RoaW5nIGVsc2UgdGhhdCB3b3VsZCBoYXZlIHJlbW92ZWQgdGhlbSwgYnV0IGluIG90aGVyIG1vZGVzIHRoZXJlXFxuLS1cXG5uZXQvbWFjODAyMTEvaWZhY2UuYy01MzUtXFx0Zmx1c2hlZCA9IHN0YV9pbmZvX2ZsdXNoKHNkYXRhLCAtMSk7XFxubmV0L21hYzgwMjExL2lmYWNlLmM6NTM2OlxcdFdBUk5fT05fT05DRShzZGF0YS1cXHUwMDNldmlmLnR5cGUgIT0gTkw4MDIxMV9JRlRZUEVfQVBfVkxBTiBcXHUwMDI2XFx1MDAyNlxcbm5ldC9tYWM4MDIxMS9pZmFjZS5jLTUzNy1cXHRcXHQgICAgIHNkYXRhLVxcdTAwM2V2aWYudHlwZSAhPSBOTDgwMjExX0lGVFlQRV9OQU4gXFx1MDAyNlxcdTAwMjZcXG4tLVxcbm5ldC9tYWM4MDIxMS9pZmFjZS5jLTU4OC1cXHRcXHRXQVJOX09OKCFsaXN0X2VtcHR5KFxcdTAwMjZzZGF0YS1cXHUwMDNldS5hcC52bGFucykpO1xcbm5ldC9tYWM4MDIxMS9pZmFjZS5jOjU4OTpcXHR9IGVsc2UgaWYgKHNkYXRhLVxcdTAwM2V2aWYudHlwZSA9PSBOTDgwMjExX0lGVFlQRV9BUF9WTEFOKSB7XFxubmV0L21hYzgwMjExL2lmYWNlLmMtNTkwLVxcdFxcdC8qIHJlbW92ZSBhbGwgcGFja2V0cyBpbiBwYXJlbnQgYmNfYnVmIHBvaW50aW5nIHRvIHRoaXMgZGV2ICovXFxuLS1cXG5uZXQvbWFjODAyMTEvaWZhY2UuYy02MTMtXFx0c3dpdGNoIChzZGF0YS1cXHUwMDNldmlmLnR5cGUpIHtcXG5uZXQvbWFjODAyMTEvaWZhY2UuYzo2MTQ6XFx0Y2FzZSBOTDgwMjExX0lGVFlQRV9BUF9WTEFOOlxcbm5ldC9tYWM4MDIxMS9pZmFjZS5jLTYxNS1cXHRcXHRsaXN0X2RlbChcXHUwMDI2c2RhdGEtXFx1MDAzZXUudmxhbi5saXN0KTtcXG4tLVxcbm5ldC9tYWM4MDIxMS9pZmFjZS5jLTcxMC1cXG5uZXQvbWFjODAyMTEvaWZhY2UuYzo3MTE6XFx0aWYgKHNkYXRhLVxcdTAwM2V2aWYudHlwZSA9PSBOTDgwMjExX0lGVFlQRV9BUF9WTEFOKVxcbm5ldC9tYWM4MDIxMS9pZmFjZS5jLTcxMi1cXHRcXHRpZWVlODAyMTFfdHhxX3JlbW92ZV92bGFuKGxvY2FsLCBzZGF0YSk7XFxuLS1cXG5uZXQvbWFjODAyMTEvaWZhY2UuYy03NDMtXFx0c3dpdGNoIChzZGF0YS1cXHUwMDNldmlmLnR5cGUpIHtcXG5uZXQvbWFjODAyMTEvaWZhY2UuYzo3NDQ6XFx0Y2FzZSBOTDgwMjExX0lGVFlQRV9BUF9WTEFOOlxcbm5ldC9tYWM4MDIxMS9pZmFjZS5jLTc0NS1cXHRcXHRicmVhaztcXG4tLVxcbm5ldC9tYWM4MDIxMS9pZmFjZS5jPTk4OT1zdGF0aWMgaW50IGllZWU4MDIxMV9uZXRkZXZfZmlsbF9mb3J3YXJkX3BhdGgoc3RydWN0IG5ldF9kZXZpY2VfcGF0aF9jdHggKmN0eCxcXG4tLVxcbm5ldC9tYWM4MDIxMS9pZmFjZS5jLTEwMDQtXFx0c3dpdGNoIChzZGF0YS1cXHUwMDNldmlmLnR5cGUpIHtcXG5uZXQvbWFjODAyMTEvaWZhY2UuYzoxMDA1OlxcdGNhc2UgTkw4MDIxMV9JRlRZUEVfQVBfVkxBTjpcXG5uZXQvbWFjODAyMTEvaWZhY2UuYy0xMDA2LVxcdFxcdHN0YSA9IHJjdV9kZXJlZmVyZW5jZShzZGF0YS1cXHUwMDNldS52bGFuLnN0YSk7XFxuLS1cXG5uZXQvbWFjODAyMTEvaWZhY2UuYz0xMTEwPXN0YXRpYyB2b2lkIGllZWU4MDIxMV9zZXRfdmlmX2VuY2FwX29wcyhzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSlcXG4tLVxcbm5ldC9tYWM4MDIxMS9pZmFjZS5jLTExMTUtXFxubmV0L21hYzgwMjExL2lmYWNlLmM6MTExNjpcXHRpZiAoc2RhdGEtXFx1MDAzZXZpZi50eXBlID09IE5MODAyMTFfSUZUWVBFX0FQX1ZMQU4pIHtcXG5uZXQvbWFjODAyMTEvaWZhY2UuYy0xMTE3LVxcdFxcdGlmICghc2RhdGEtXFx1MDAzZWJzcylcXG4tLVxcbm5ldC9tYWM4MDIxMS9pZmFjZS5jPTExMzY9c3RhdGljIHZvaWQgaWVlZTgwMjExX3JlY2FsY19zZGF0YV9vZmZsb2FkKHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhKVxcbi0tXFxubmV0L21hYzgwMjExL2lmYWNlLmMtMTE0Ni1cXHRsaXN0X2Zvcl9lYWNoX2VudHJ5KHZzZGF0YSwgXFx1MDAyNmxvY2FsLVxcdTAwM2VpbnRlcmZhY2VzLCBsaXN0KSB7XFxubmV0L21hYzgwMjExL2lmYWNlLmM6MTE0NzpcXHRcXHRpZiAodnNkYXRhLVxcdTAwM2V2aWYudHlwZSAhPSBOTDgwMjExX0lGVFlQRV9BUF9WTEFOIHx8XFxubmV0L21hYzgwMjExL2lmYWNlLmMtMTE0OC1cXHRcXHQgICAgdnNkYXRhLVxcdTAwM2Vic3MgIT0gXFx1MDAyNnNkYXRhLVxcdTAwM2V1LmFwKVxcbi0tXFxubmV0L21hYzgwMjExL2lmYWNlLmM9MTM2NT1pbnQgaWVlZTgwMjExX2RvX29wZW4oc3RydWN0IHdpcmVsZXNzX2RldiAqd2RldiwgYm9vbCBjb21pbmdfdXApXFxuLS1cXG5uZXQvbWFjODAyMTEvaWZhY2UuYy0xMzc2LVxcdHN3aXRjaCAoc2RhdGEtXFx1MDAzZXZpZi50eXBlKSB7XFxubmV0L21hYzgwMjExL2lmYWNlLmM6MTM3NzpcXHRjYXNlIE5MODAyMTFfSUZUWVBFX0FQX1ZMQU46IHtcXG5uZXQvbWFjODAyMTEvaWZhY2UuYy0xMzc4LVxcdFxcdHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKm1hc3RlcjtcXG4tLVxcbm5ldC9tYWM4MDIxMS9pZmFjZS5jLTE0MzgtXFx0XFx0XFx0LypcXG5uZXQvbWFjODAyMTEvaWZhY2UuYzoxNDM5OlxcdFxcdFxcdCAqIG5vIG5lZWQgdG8gd29ycnkgYWJvdXQgQVBfVkxBTi9OQU5fREFUQSBjbGVhbnVwIHNpbmNlXFxubmV0L21hYzgwMjExL2lmYWNlLmMtMTQ0MC1cXHRcXHRcXHQgKiBpbiB0aGF0IGNhc2Ugd2UgY2FuJ3QgaGF2ZSBvcGVuX2NvdW50ID09IDBcXG4tLVxcbm5ldC9tYWM4MDIxMS9pZmFjZS5jLTE0NjUtXFx0c3dpdGNoIChzZGF0YS1cXHUwMDNldmlmLnR5cGUpIHtcXG5uZXQvbWFjODAyMTEvaWZhY2UuYzoxNDY2OlxcdGNhc2UgTkw4MDIxMV9JRlRZUEVfQVBfVkxBTjpcXG5uZXQvbWFjODAyMTEvaWZhY2UuYy0xNDY3LVxcdFxcdC8qIG5vIG5lZWQgdG8gdGVsbCBkcml2ZXIsIGJ1dCBzZXQgY2FycmllciBhbmQgY2hhbmN0eCAqL1xcbi0tXFxubmV0L21hYzgwMjExL2lmYWNlLmMtMTYwOS1cXHRcXHRSQ1VfSU5JVF9QT0lOVEVSKHNkYXRhLVxcdTAwM2V1Lm5hbl9kYXRhLm5taSwgTlVMTCk7XFxubmV0L21hYzgwMjExL2lmYWNlLmM6MTYxMDpcXHRpZiAoc2RhdGEtXFx1MDAzZXZpZi50eXBlID09IE5MODAyMTFfSUZUWVBFX0FQX1ZMQU4pXFxubmV0L21hYzgwMjExL2lmYWNlLmMtMTYxMS1cXHRcXHRsaXN0X2RlbChcXHUwMDI2c2RhdGEtXFx1MDAzZXUudmxhbi5saXN0KTtcXG4tLVxcbm5ldC9tYWM4MDIxMS9pZmFjZS5jPTE4Nzg9c3RhdGljIHZvaWQgaWVlZTgwMjExX3NldHVwX3NkYXRhKHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLFxcbi0tXFxubmV0L21hYzgwMjExL2lmYWNlLmMtMTk1OS1cXHRcXHRicmVhaztcXG5uZXQvbWFjODAyMTEvaWZhY2UuYzoxOTYwOlxcdGNhc2UgTkw4MDIxMV9JRlRZUEVfQVBfVkxBTjpcXG5uZXQvbWFjODAyMTEvaWZhY2UuYy0xOTYxLVxcdGNhc2UgTkw4MDIxMV9JRlRZUEVfUDJQX0RFVklDRTpcXG4tLVxcbm5ldC9tYWM4MDIxMS9pZmFjZS5jPTIwOTk9c3RhdGljIHZvaWQgaWVlZTgwMjExX2Fzc2lnbl9wZXJtX2FkZHIoc3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwsXFxuLS1cXG5uZXQvbWFjODAyMTEvaWZhY2UuYy0yMTIwLVxcdFxcdGJyZWFrO1xcbm5ldC9tYWM4MDIxMS9pZmFjZS5jOjIxMjE6XFx0Y2FzZSBOTDgwMjExX0lGVFlQRV9BUF9WTEFOOlxcbm5ldC9tYWM4MDIxMS9pZmFjZS5jLTIxMjItXFx0XFx0LyogbWF0Y2ggdXAgd2l0aCBhbiBBUCBpbnRlcmZhY2UgKi9cXG4tLVxcbm5ldC9tYWM4MDIxMS9pZmFjZS5jPTIyMjg9aW50IGllZWU4MDIxMV9pZl9hZGQoc3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwsIGNvbnN0IGNoYXIgKm5hbWUsXFxuLS1cXG5uZXQvbWFjODAyMTEvaWZhY2UuYy0yMjgwLVxcbm5ldC9tYWM4MDIxMS9pZmFjZS5jOjIyODE6XFx0XFx0aWYgKHR5cGUgIT0gTkw4MDIxMV9JRlRZUEVfQVBfVkxBTiBcXHUwMDI2XFx1MDAyNlxcbm5ldC9tYWM4MDIxMS9pZmFjZS5jLTIyODItXFx0XFx0ICAgICh0eXBlICE9IE5MODAyMTFfSUZUWVBFX01PTklUT1IgfHxcXG4tLVxcbm5ldC9tYWM4MDIxMS9pZmFjZS5jPTI1MzU9dm9pZCBpZWVlODAyMTFfdmlmX2luY19udW1fbWNhc3Qoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEpXFxuLS1cXG5uZXQvbWFjODAyMTEvaWZhY2UuYy0yNTM4LVxcdFxcdGF0b21pY19pbmMoXFx1MDAyNnNkYXRhLVxcdTAwM2V1LmFwLm51bV9tY2FzdF9zdGEpO1xcbm5ldC9tYWM4MDIxMS9pZmFjZS5jOjI1Mzk6XFx0ZWxzZSBpZiAoc2RhdGEtXFx1MDAzZXZpZi50eXBlID09IE5MODAyMTFfSUZUWVBFX0FQX1ZMQU4pXFxubmV0L21hYzgwMjExL2lmYWNlLmMtMjU0MC1cXHRcXHRhdG9taWNfaW5jKFxcdTAwMjZzZGF0YS1cXHUwMDNldS52bGFuLm51bV9tY2FzdF9zdGEpO1xcbi0tXFxubmV0L21hYzgwMjExL2lmYWNlLmM9MjU0Mz12b2lkIGllZWU4MDIxMV92aWZfZGVjX251bV9tY2FzdChzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSlcXG4tLVxcbm5ldC9tYWM4MDIxMS9pZmFjZS5jLTI1NDYtXFx0XFx0YXRvbWljX2RlYyhcXHUwMDI2c2RhdGEtXFx1MDAzZXUuYXAubnVtX21jYXN0X3N0YSk7XFxubmV0L21hYzgwMjExL2lmYWNlLmM6MjU0NzpcXHRlbHNlIGlmIChzZGF0YS1cXHUwMDNldmlmLnR5cGUgPT0gTkw4MDIxMV9JRlRZUEVfQVBfVkxBTilcXG5uZXQvbWFjODAyMTEvaWZhY2UuYy0yNTQ4LVxcdFxcdGF0b21pY19kZWMoXFx1MDAyNnNkYXRhLVxcdTAwM2V1LnZsYW4ubnVtX21jYXN0X3N0YSk7XFxuLS1cXG5uZXQvbWFjODAyMTEva2V5LmM9MTIwPXN0YXRpYyBpbnQgaWVlZTgwMjExX2tleV9lbmFibGVfaHdfYWNjZWwoc3RydWN0IGllZWU4MDIxMV9rZXkgKmtleSlcXG4tLVxcbm5ldC9tYWM4MDIxMS9rZXkuYy0xNjUtXFxubmV0L21hYzgwMjExL2tleS5jOjE2NjpcXHRpZiAoc2RhdGEtXFx1MDAzZXZpZi50eXBlID09IE5MODAyMTFfSUZUWVBFX0FQX1ZMQU4pIHtcXG5uZXQvbWFjODAyMTEva2V5LmMtMTY3LVxcdFxcdC8qXFxuLS1cXG5uZXQvbWFjODAyMTEva2V5LmM9MzUwPXN0YXRpYyB2b2lkIF9faWVlZTgwMjExX3NldF9kZWZhdWx0X2tleShzdHJ1Y3QgaWVlZTgwMjExX2xpbmtfZGF0YSAqbGluayxcXG4tLVxcbm5ldC9tYWM4MDIxMS9rZXkuYy0zNjgtXFx0XFx0aWVlZTgwMjExX2NoZWNrX2Zhc3RfeG1pdF9pZmFjZShzZGF0YSk7XFxubmV0L21hYzgwMjExL2tleS5jOjM2OTpcXHRcXHRpZiAoc2RhdGEtXFx1MDAzZXZpZi50eXBlICE9IE5MODAyMTFfSUZUWVBFX0FQX1ZMQU4pXFxubmV0L21hYzgwMjExL2tleS5jLTM3MC1cXHRcXHRcXHRkcnZfc2V0X2RlZmF1bHRfdW5pY2FzdF9rZXkoc2RhdGEtXFx1MDAzZWxvY2FsLCBzZGF0YSwgaWR4KTtcXG4tLVxcbm5ldC9tYWM4MDIxMS9rZXkuYz0xMTM5PXZvaWQgaWVlZTgwMjExX2ZyZWVfa2V5cyhzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSxcXG4tLVxcbm5ldC9tYWM4MDIxMS9rZXkuYy0xMTY0LVxcbm5ldC9tYWM4MDIxMS9rZXkuYzoxMTY1OlxcdGlmIChzZGF0YS1cXHUwMDNldmlmLnR5cGUgPT0gTkw4MDIxMV9JRlRZUEVfQVBfVkxBTikge1xcbm5ldC9tYWM4MDIxMS9rZXkuYy0xMTY2LVxcdFxcdGlmIChzZGF0YS1cXHUwMDNlYnNzKSB7XFxuLS1cXG5uZXQvbWFjODAyMTEvbGluay5jPTk1PXZvaWQgaWVlZTgwMjExX2xpbmtfaW5pdChzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSxcXG4tLVxcbm5ldC9tYWM4MDIxMS9saW5rLmMtMTA0LVxcbm5ldC9tYWM4MDIxMS9saW5rLmM6MTA1OlxcdGlmIChzZGF0YS1cXHUwMDNldmlmLnR5cGUgPT0gTkw4MDIxMV9JRlRZUEVfQVBfVkxBTikge1xcbm5ldC9tYWM4MDIxMS9saW5rLmMtMTA2LVxcdFxcdHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKmFwX2JzcztcXG4tLVxcbm5ldC9tYWM4MDIxMS9saW5rLmMtMTQxLVxcdFxcdGNhc2UgTkw4MDIxMV9JRlRZUEVfQVA6XFxubmV0L21hYzgwMjExL2xpbmsuYzoxNDI6XFx0XFx0Y2FzZSBOTDgwMjExX0lGVFlQRV9BUF9WTEFOOlxcbm5ldC9tYWM4MDIxMS9saW5rLmMtMTQzLVxcdFxcdFxcdGV0aGVyX2FkZHJfY29weShsaW5rX2NvbmYtXFx1MDAzZWFkZHIsXFxuLS1cXG5uZXQvbWFjODAyMTEvbGluay5jPTI1MT1zdGF0aWMgdm9pZCBpZWVlODAyMTFfc2V0X3ZpZl9saW5rc19iaXRtYXBzKHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLFxcbi0tXFxubmV0L21hYzgwMjExL2xpbmsuYy0yNjgtXFx0Y2FzZSBOTDgwMjExX0lGVFlQRV9BUDpcXG5uZXQvbWFjODAyMTEvbGluay5jOjI2OTpcXHRjYXNlIE5MODAyMTFfSUZUWVBFX0FQX1ZMQU46XFxubmV0L21hYzgwMjExL2xpbmsuYy0yNzAtXFx0XFx0LyogaW4gYW4gQVAgYWxsIGxpbmtzIGFyZSBhbHdheXMgYWN0aXZlICovXFxuLS1cXG5uZXQvbWFjODAyMTEvbGluay5jPTI4Nz1zdGF0aWMgaW50IGllZWU4MDIxMV92aWZfdXBkYXRlX2xpbmtzKHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLFxcbi0tXFxubmV0L21hYzgwMjExL2xpbmsuYy0zNzctXFx0XFx0LyogdGVsbCB0aGUgZHJpdmVyICovXFxubmV0L21hYzgwMjExL2xpbmsuYzozNzg6XFx0XFx0aWYgKHNkYXRhLVxcdTAwM2V2aWYudHlwZSAhPSBOTDgwMjExX0lGVFlQRV9BUF9WTEFOKVxcbm5ldC9tYWM4MDIxMS9saW5rLmMtMzc5LVxcdFxcdFxcdHJldCA9IGRydl9jaGFuZ2VfdmlmX2xpbmtzKHNkYXRhLVxcdTAwM2Vsb2NhbCwgc2RhdGEsXFxuLS1cXG5uZXQvbWFjODAyMTEvbWFpbi5jPTk2PXN0YXRpYyB1MzIgaWVlZTgwMjExX2NhbGNfaHdfY29uZl9jaGFuKHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsLFxcbi0tXFxubmV0L21hYzgwMjExL21haW4uYy0xNzYtXFx0XFx0XFx0Y29udGludWU7XFxubmV0L21hYzgwMjExL21haW4uYzoxNzc6XFx0XFx0aWYgKHNkYXRhLVxcdTAwM2V2aWYudHlwZSA9PSBOTDgwMjExX0lGVFlQRV9BUF9WTEFOKVxcbm5ldC9tYWM4MDIxMS9tYWluLmMtMTc4LVxcdFxcdFxcdGNvbnRpbnVlO1xcbi0tXFxubmV0L21hYzgwMjExL21haW4uYz0zMzY9dm9pZCBpZWVlODAyMTFfYnNzX2luZm9fY2hhbmdlX25vdGlmeShzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSxcXG4tLVxcbm5ldC9tYWM4MDIxMS9tYWluLmMtMzQ0LVxcbm5ldC9tYWM4MDIxMS9tYWluLmM6MzQ1OlxcdGlmICghY2hhbmdlZCB8fCBzZGF0YS1cXHUwMDNldmlmLnR5cGUgPT0gTkw4MDIxMV9JRlRZUEVfQVBfVkxBTilcXG5uZXQvbWFjODAyMTEvbWFpbi5jLTM0Ni1cXHRcXHRyZXR1cm47XFxuLS1cXG5uZXQvbWFjODAyMTEvbWFpbi5jPTM4OT12b2lkIGllZWU4MDIxMV92aWZfY2ZnX2NoYW5nZV9ub3RpZnkoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsXFxuLS1cXG5uZXQvbWFjODAyMTEvbWFpbi5jLTM5NS1cXG5uZXQvbWFjODAyMTEvbWFpbi5jOjM5NjpcXHRpZiAoIWNoYW5nZWQgfHwgc2RhdGEtXFx1MDAzZXZpZi50eXBlID09IE5MODAyMTFfSUZUWVBFX0FQX1ZMQU4pXFxubmV0L21hYzgwMjExL21haW4uYy0zOTctXFx0XFx0cmV0dXJuO1xcbi0tXFxubmV0L21hYzgwMjExL21haW4uYz00MDI9dm9pZCBpZWVlODAyMTFfbGlua19pbmZvX2NoYW5nZV9ub3RpZnkoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsXFxuLS1cXG5uZXQvbWFjODAyMTEvbWFpbi5jLTQxMy1cXHRzd2l0Y2ggKHNkYXRhLVxcdTAwM2V2aWYudHlwZSkge1xcbm5ldC9tYWM4MDIxMS9tYWluLmM6NDE0OlxcdGNhc2UgTkw4MDIxMV9JRlRZUEVfQVBfVkxBTjpcXG5uZXQvbWFjODAyMTEvbWFpbi5jLTQxNS1cXHRcXHRyZXR1cm47XFxuLS1cXG5uZXQvbWFjODAyMTEvbWFpbi5jPTYzOD1zdGF0aWMgaW50IGllZWU4MDIxMV9pZmE2X2NoYW5nZWQoc3RydWN0IG5vdGlmaWVyX2Jsb2NrICpuYixcXG4tLVxcbm5ldC9tYWM4MDIxMS9tYWluLmMtNjU2LVxcdCAqIEZvciBub3cgb25seSBzdXBwb3J0IHN0YXRpb24gbW9kZS4gVGhpcyBpcyBtb3N0bHkgYmVjYXVzZVxcbm5ldC9tYWM4MDIxMS9tYWluLmM6NjU3OlxcdCAqIGRvaW5nIEFQIHdvdWxkIGhhdmUgdG8gaGFuZGxlIEFQX1ZMQU4gaW4gc29tZSB3YXkgLi4uXFxubmV0L21hYzgwMjExL21haW4uYy02NTgtXFx0ICovXFxuLS1cXG5uZXQvbWFjODAyMTEvbWFpbi5jPTY3MD1pZWVlODAyMTFfZGVmYXVsdF9tZ210X3N0eXBlc1tOVU1fTkw4MDIxMV9JRlRZUEVTXSA9IHtcXG4tLVxcbm5ldC9tYWM4MDIxMS9tYWluLmMtNzA1LVxcdH0sXFxubmV0L21hYzgwMjExL21haW4uYzo3MDY6XFx0W05MODAyMTFfSUZUWVBFX0FQX1ZMQU5dID0ge1xcbm5ldC9tYWM4MDIxMS9tYWluLmMtNzA3LVxcdFxcdC8qIGNvcHkgQVAgKi9cXG4tLVxcbm5ldC9tYWM4MDIxMS9tYWluLmM9MTEzOD1pbnQgaWVlZTgwMjExX3JlZ2lzdGVyX2h3KHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3KVxcbi0tXFxubmV0L21hYzgwMjExL21haW4uYy0xMzY2LVxcdC8qIGlmIGxvdy1sZXZlbCBkcml2ZXIgc3VwcG9ydHMgQVAsIHdlIGFsc28gc3VwcG9ydCBWTEFOLlxcbm5ldC9tYWM4MDIxMS9tYWluLmM6MTM2NzpcXHQgKiBkcml2ZXJzIGFkdmVydGlzaW5nIFNXX0NSWVBUT19DT05UUk9MIHNob3VsZCBlbmFibGUgQVBfVkxBTlxcbm5ldC9tYWM4MDIxMS9tYWluLmMtMTM2OC1cXHQgKiBiYXNlZCBvbiB0aGVpciBzdXBwb3J0IHRvIHRyYW5zbWl0IFNXIGVuY3J5cHRlZCBwYWNrZXRzLlxcbi0tXFxubmV0L21hYzgwMjExL21haW4uYy0xMzcxLVxcdCAgICAhaWVlZTgwMjExX2h3X2NoZWNrKFxcdTAwMjZsb2NhbC1cXHUwMDNlaHcsIFNXX0NSWVBUT19DT05UUk9MKSkge1xcbm5ldC9tYWM4MDIxMS9tYWluLmM6MTM3MjpcXHRcXHRody1cXHUwMDNld2lwaHktXFx1MDAzZWludGVyZmFjZV9tb2RlcyB8PSBCSVQoTkw4MDIxMV9JRlRZUEVfQVBfVkxBTik7XFxubmV0L21hYzgwMjExL21haW4uYzoxMzczOlxcdFxcdGh3LVxcdTAwM2V3aXBoeS1cXHUwMDNlc29mdHdhcmVfaWZ0eXBlcyB8PSBCSVQoTkw4MDIxMV9JRlRZUEVfQVBfVkxBTik7XFxubmV0L21hYzgwMjExL21haW4uYy0xMzc0LVxcdH1cXG4tLVxcbm5ldC9tYWM4MDIxMS9vZmZjaGFubmVsLmM9ODEyPWludCBpZWVlODAyMTFfbWdtdF90eChzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LFxcbi0tXFxubmV0L21hYzgwMjExL29mZmNoYW5uZWwuYy04NTAtXFx0Y2FzZSBOTDgwMjExX0lGVFlQRV9BUDpcXG5uZXQvbWFjODAyMTEvb2ZmY2hhbm5lbC5jOjg1MTpcXHRjYXNlIE5MODAyMTFfSUZUWVBFX0FQX1ZMQU46XFxubmV0L21hYzgwMjExL29mZmNoYW5uZWwuYy04NTItXFx0Y2FzZSBOTDgwMjExX0lGVFlQRV9QMlBfR086XFxuLS1cXG5uZXQvbWFjODAyMTEvcG0uYz0yMT1pbnQgX19pZWVlODAyMTFfc3VzcGVuZChzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodywgc3RydWN0IGNmZzgwMjExX3dvd2xhbiAqd293bGFuKVxcbi0tXFxubmV0L21hYzgwMjExL3BtLmMtMTUxLVxcdFxcdHN3aXRjaCAoc2RhdGEtXFx1MDAzZXZpZi50eXBlKSB7XFxubmV0L21hYzgwMjExL3BtLmM6MTUyOlxcdFxcdGNhc2UgTkw4MDIxMV9JRlRZUEVfQVBfVkxBTjpcXG5uZXQvbWFjODAyMTEvcG0uYy0xNTMtXFx0XFx0Y2FzZSBOTDgwMjExX0lGVFlQRV9NT05JVE9SOlxcbi0tXFxubmV0L21hYzgwMjExL3J4LmM9MTY4MT1zdGF0aWMgdm9pZCBzdGFfcHNfc3RhcnQoc3RydWN0IHN0YV9pbmZvICpzdGEpXFxuLS1cXG5uZXQvbWFjODAyMTEvcnguYy0xNjg4LVxcdGlmIChzdGEtXFx1MDAzZXNkYXRhLVxcdTAwM2V2aWYudHlwZSA9PSBOTDgwMjExX0lGVFlQRV9BUCB8fFxcbm5ldC9tYWM4MDIxMS9yeC5jOjE2ODk6XFx0ICAgIHN0YS1cXHUwMDNlc2RhdGEtXFx1MDAzZXZpZi50eXBlID09IE5MODAyMTFfSUZUWVBFX0FQX1ZMQU4pXFxubmV0L21hYzgwMjExL3J4LmMtMTY5MC1cXHRcXHRwcyA9IFxcdTAwMjZzZGF0YS1cXHUwMDNlYnNzLVxcdTAwM2VwcztcXG4tLVxcbm5ldC9tYWM4MDIxMS9yeC5jPTE4MDY9aWVlZTgwMjExX3J4X2hfdWFwc2RfYW5kX3BzcG9sbChzdHJ1Y3QgaWVlZTgwMjExX3J4X2RhdGEgKnJ4KVxcbi0tXFxubmV0L21hYzgwMjExL3J4LmMtMTgxNS1cXHRpZiAoc2RhdGEtXFx1MDAzZXZpZi50eXBlICE9IE5MODAyMTFfSUZUWVBFX0FQIFxcdTAwMjZcXHUwMDI2XFxubmV0L21hYzgwMjExL3J4LmM6MTgxNjpcXHQgICAgc2RhdGEtXFx1MDAzZXZpZi50eXBlICE9IE5MODAyMTFfSUZUWVBFX0FQX1ZMQU4pXFxubmV0L21hYzgwMjExL3J4LmMtMTgxNy1cXHRcXHRyZXR1cm4gUlhfQ09OVElOVUU7XFxuLS1cXG5uZXQvbWFjODAyMTEvcnguYz0xODU3PWllZWU4MDIxMV9yeF9oX3N0YV9wcm9jZXNzKHN0cnVjdCBpZWVlODAyMTFfcnhfZGF0YSAqcngpXFxuLS1cXG5uZXQvbWFjODAyMTEvcnguYy0xOTQxLVxcdCAgICAocngtXFx1MDAzZXNkYXRhLVxcdTAwM2V2aWYudHlwZSA9PSBOTDgwMjExX0lGVFlQRV9BUCB8fFxcbm5ldC9tYWM4MDIxMS9yeC5jOjE5NDI6XFx0ICAgICByeC1cXHUwMDNlc2RhdGEtXFx1MDAzZXZpZi50eXBlID09IE5MODAyMTFfSUZUWVBFX0FQX1ZMQU4pKSB7XFxubmV0L21hYzgwMjExL3J4LmMtMTk0My1cXHRcXHRpZiAodGVzdF9zdGFfZmxhZyhzdGEsIFdMQU5fU1RBX1BTX1NUQSkpIHtcXG4tLVxcbm5ldC9tYWM4MDIxMS9yeC5jLTE5NzAtXFx0XFx0ICAgIChyeC1cXHUwMDNlc2RhdGEtXFx1MDAzZXZpZi50eXBlID09IE5MODAyMTFfSUZUWVBFX0FQIHx8XFxubmV0L21hYzgwMjExL3J4LmM6MTk3MTpcXHRcXHQgICAgIChyeC1cXHUwMDNlc2RhdGEtXFx1MDAzZXZpZi50eXBlID09IE5MODAyMTFfSUZUWVBFX0FQX1ZMQU4gXFx1MDAyNlxcdTAwMjZcXG5uZXQvbWFjODAyMTEvcnguYy0xOTcyLVxcdFxcdCAgICAgICFyeC1cXHUwMDNlc2RhdGEtXFx1MDAzZXUudmxhbi5zdGEpKSkge1xcbi0tXFxubmV0L21hYzgwMjExL3J4LmM9MjY0Nj1fX2llZWU4MDIxMV9kYXRhX3RvXzgwMjMoc3RydWN0IGllZWU4MDIxMV9yeF9kYXRhICpyeCwgYm9vbCAqcG9ydF9jb250cm9sKVxcbi0tXFxubmV0L21hYzgwMjExL3J4LmMtMjY1NS1cXHRpZiAoaWVlZTgwMjExX2hhc19hNChoZHItXFx1MDAzZWZyYW1lX2NvbnRyb2wpIFxcdTAwMjZcXHUwMDI2XFxubmV0L21hYzgwMjExL3J4LmM6MjY1NjpcXHQgICAgc2RhdGEtXFx1MDAzZXZpZi50eXBlID09IE5MODAyMTFfSUZUWVBFX0FQX1ZMQU4gXFx1MDAyNlxcdTAwMjYgIXNkYXRhLVxcdTAwM2V1LnZsYW4uc3RhKVxcbm5ldC9tYWM4MDIxMS9yeC5jLTI2NTctXFx0XFx0cmV0dXJuIFJYX0RST1BfVV9VTkVYUEVDVEVEX1ZMQU5fNEFERFI7XFxuLS1cXG5uZXQvbWFjODAyMTEvcnguYy0yNjY3LVxcdGlmIChpc19tdWx0aWNhc3RfZXRoZXJfYWRkcihoZHItXFx1MDAzZWFkZHIxKSBcXHUwMDI2XFx1MDAyNlxcbm5ldC9tYWM4MDIxMS9yeC5jOjI2Njg6XFx0ICAgIHNkYXRhLVxcdTAwM2V2aWYudHlwZSA9PSBOTDgwMjExX0lGVFlQRV9BUF9WTEFOIFxcdTAwMjZcXHUwMDI2IHNkYXRhLVxcdTAwM2V1LnZsYW4uc3RhKVxcbm5ldC9tYWM4MDIxMS9yeC5jLTI2NjktXFx0XFx0cmV0dXJuIFJYX0RST1BfVV9VTkVYUEVDVEVEX1ZMQU5fTUNBU1Q7XFxuLS1cXG5uZXQvbWFjODAyMTEvcnguYz0yNzg5PWllZWU4MDIxMV9kZWxpdmVyX3NrYihzdHJ1Y3QgaWVlZTgwMjExX3J4X2RhdGEgKnJ4KVxcbi0tXFxubmV0L21hYzgwMjExL3J4LmMtMjgxMy1cXHRpZiAoKHNkYXRhLVxcdTAwM2V2aWYudHlwZSA9PSBOTDgwMjExX0lGVFlQRV9BUCB8fFxcbm5ldC9tYWM4MDIxMS9yeC5jOjI4MTQ6XFx0ICAgICBzZGF0YS1cXHUwMDNldmlmLnR5cGUgPT0gTkw4MDIxMV9JRlRZUEVfQVBfVkxBTikgXFx1MDAyNlxcdTAwMjZcXG5uZXQvbWFjODAyMTEvcnguYy0yODE1LVxcdCAgICAhKHNkYXRhLVxcdTAwM2VmbGFncyBcXHUwMDI2IElFRUU4MDIxMV9TREFUQV9ET05UX0JSSURHRV9QQUNLRVRTKSBcXHUwMDI2XFx1MDAyNlxcbm5ldC9tYWM4MDIxMS9yeC5jLTI4MTYtXFx0ICAgIGVoZHItXFx1MDAzZWhfcHJvdG8gIT0gcngtXFx1MDAzZXNkYXRhLVxcdTAwM2Vjb250cm9sX3BvcnRfcHJvdG9jb2wgXFx1MDAyNlxcdTAwMjZcXG5uZXQvbWFjODAyMTEvcnguYzoyODE3OlxcdCAgICAoc2RhdGEtXFx1MDAzZXZpZi50eXBlICE9IE5MODAyMTFfSUZUWVBFX0FQX1ZMQU4gfHwgIXNkYXRhLVxcdTAwM2V1LnZsYW4uc3RhKSkge1xcbm5ldC9tYWM4MDIxMS9yeC5jLTI4MTgtXFx0XFx0aWYgKGlzX211bHRpY2FzdF9ldGhlcl9hZGRyKGVoZHItXFx1MDAzZWhfZGVzdCkgXFx1MDAyNlxcdTAwMjZcXG4tLVxcbm5ldC9tYWM4MDIxMS9yeC5jPTMxNDA9X19pZWVlODAyMTFfcnhfaF9hbXNkdShzdHJ1Y3QgaWVlZTgwMjExX3J4X2RhdGEgKnJ4LCB1OCBkYXRhX29mZnNldClcXG4tLVxcbm5ldC9tYWM4MDIxMS9yeC5jLTMxNTQtXFx0XFx0Y2FzZSBOTDgwMjExX0lGVFlQRV9BUDpcXG5uZXQvbWFjODAyMTEvcnguYzozMTU1OlxcdFxcdGNhc2UgTkw4MDIxMV9JRlRZUEVfQVBfVkxBTjpcXG5uZXQvbWFjODAyMTEvcnguYy0zMTU2LVxcdFxcdFxcdGNoZWNrX2RhID0gTlVMTDtcXG4tLVxcbm5ldC9tYWM4MDIxMS9yeC5jPTMyMjY9aWVlZTgwMjExX3J4X2hfYW1zZHUoc3RydWN0IGllZWU4MDIxMV9yeF9kYXRhICpyeClcXG4tLVxcbm5ldC9tYWM4MDIxMS9yeC5jLTMyNDMtXFx0XFx0c3dpdGNoIChyeC1cXHUwMDNlc2RhdGEtXFx1MDAzZXZpZi50eXBlKSB7XFxubmV0L21hYzgwMjExL3J4LmM6MzI0NDpcXHRcXHRjYXNlIE5MODAyMTFfSUZUWVBFX0FQX1ZMQU46XFxubmV0L21hYzgwMjExL3J4LmMtMzI0NS1cXHRcXHRcXHRpZiAoIXJ4LVxcdTAwM2VzZGF0YS1cXHUwMDNldS52bGFuLnN0YSlcXG4tLVxcbm5ldC9tYWM4MDIxMS9yeC5jPTMyODM9aWVlZTgwMjExX3J4X2hfZGF0YShzdHJ1Y3QgaWVlZTgwMjExX3J4X2RhdGEgKnJ4KVxcbi0tXFxubmV0L21hYzgwMjExL3J4LmMtMzMzOC1cXG5uZXQvbWFjODAyMTEvcnguYzozMzM5OlxcdGlmIChyeC1cXHUwMDNlc2RhdGEtXFx1MDAzZXZpZi50eXBlID09IE5MODAyMTFfSUZUWVBFX0FQX1ZMQU4gXFx1MDAyNlxcdTAwMjZcXG5uZXQvbWFjODAyMTEvcnguYy0zMzQwLVxcdCAgICB1bmxpa2VseShwb3J0X2NvbnRyb2wpIFxcdTAwMjZcXHUwMDI2IHNkYXRhLVxcdTAwM2Vic3MpIHtcXG4tLVxcbm5ldC9tYWM4MDIxMS9yeC5jPTM2MjM9aWVlZTgwMjExX3J4X2hfYWN0aW9uKHN0cnVjdCBpZWVlODAyMTFfcnhfZGF0YSAqcngpXFxuLS1cXG5uZXQvbWFjODAyMTEvcnguYy0zNjQ5LVxcdFxcdCAgICBzZGF0YS1cXHUwMDNldmlmLnR5cGUgIT0gTkw4MDIxMV9JRlRZUEVfTUVTSF9QT0lOVCBcXHUwMDI2XFx1MDAyNlxcbm5ldC9tYWM4MDIxMS9yeC5jOjM2NTA6XFx0XFx0ICAgIHNkYXRhLVxcdTAwM2V2aWYudHlwZSAhPSBOTDgwMjExX0lGVFlQRV9BUF9WTEFOIFxcdTAwMjZcXHUwMDI2XFxubmV0L21hYzgwMjExL3J4LmMtMzY1MS1cXHRcXHQgICAgc2RhdGEtXFx1MDAzZXZpZi50eXBlICE9IE5MODAyMTFfSUZUWVBFX0FQIFxcdTAwMjZcXHUwMDI2XFxuLS1cXG5uZXQvbWFjODAyMTEvcnguYy0zNjY1LVxcdFxcdFxcdGlmIChzZGF0YS1cXHUwMDNldmlmLnR5cGUgIT0gTkw4MDIxMV9JRlRZUEVfQVAgXFx1MDAyNlxcdTAwMjZcXG5uZXQvbWFjODAyMTEvcnguYzozNjY2OlxcdFxcdFxcdCAgICBzZGF0YS1cXHUwMDNldmlmLnR5cGUgIT0gTkw4MDIxMV9JRlRZUEVfQVBfVkxBTilcXG5uZXQvbWFjODAyMTEvcnguYy0zNjY3LVxcdFxcdFxcdFxcdGdvdG8gaGFuZGxlZDtcXG4tLVxcbm5ldC9tYWM4MDIxMS9yeC5jLTM3MzktXFx0XFx0ICAgIHNkYXRhLVxcdTAwM2V2aWYudHlwZSAhPSBOTDgwMjExX0lGVFlQRV9NRVNIX1BPSU5UIFxcdTAwMjZcXHUwMDI2XFxubmV0L21hYzgwMjExL3J4LmM6Mzc0MDpcXHRcXHQgICAgc2RhdGEtXFx1MDAzZXZpZi50eXBlICE9IE5MODAyMTFfSUZUWVBFX0FQX1ZMQU4gXFx1MDAyNlxcdTAwMjZcXG5uZXQvbWFjODAyMTEvcnguYy0zNzQxLVxcdFxcdCAgICBzZGF0YS1cXHUwMDNldmlmLnR5cGUgIT0gTkw4MDIxMV9JRlRZUEVfQVAgXFx1MDAyNlxcdTAwMjZcXG4tLVxcbm5ldC9tYWM4MDIxMS9yeC5jLTM3NjctXFx0XFx0ICAgIHNkYXRhLVxcdTAwM2V2aWYudHlwZSAhPSBOTDgwMjExX0lGVFlQRV9NRVNIX1BPSU5UIFxcdTAwMjZcXHUwMDI2XFxubmV0L21hYzgwMjExL3J4LmM6Mzc2ODpcXHRcXHQgICAgc2RhdGEtXFx1MDAzZXZpZi50eXBlICE9IE5MODAyMTFfSUZUWVBFX0FQX1ZMQU4gXFx1MDAyNlxcdTAwMjZcXG5uZXQvbWFjODAyMTEvcnguYy0zNzY5LVxcdFxcdCAgICBzZGF0YS1cXHUwMDNldmlmLnR5cGUgIT0gTkw4MDIxMV9JRlRZUEVfQVAgXFx1MDAyNlxcdTAwMjZcXG4tLVxcbm5ldC9tYWM4MDIxMS9yeC5jPTQwNzE9aWVlZTgwMjExX3J4X2hfYWN0aW9uX3JldHVybihzdHJ1Y3QgaWVlZTgwMjExX3J4X2RhdGEgKnJ4KVxcbi0tXFxubmV0L21hYzgwMjExL3J4LmMtNDA5Mi1cXHQgICAgKHNkYXRhLVxcdTAwM2V2aWYudHlwZSA9PSBOTDgwMjExX0lGVFlQRV9BUCB8fFxcbm5ldC9tYWM4MDIxMS9yeC5jOjQwOTM6XFx0ICAgICBzZGF0YS1cXHUwMDNldmlmLnR5cGUgPT0gTkw4MDIxMV9JRlRZUEVfQVBfVkxBTikpXFxubmV0L21hYzgwMjExL3J4LmMtNDA5NC1cXHRcXHRyZXR1cm4gUlhfRFJPUF9VX01BTEZPUk1FRF9BQ1RJT047XFxuLS1cXG5uZXQvbWFjODAyMTEvcnguYz00NTA2PXN0YXRpYyBib29sIGllZWU4MDIxMV9hY2NlcHRfZnJhbWUoc3RydWN0IGllZWU4MDIxMV9yeF9kYXRhICpyeClcXG4tLVxcbm5ldC9tYWM4MDIxMS9yeC5jLTQ1ODItXFx0XFx0cmV0dXJuIGV0aGVyX2FkZHJfZXF1YWwoc2RhdGEtXFx1MDAzZXZpZi5hZGRyLCBoZHItXFx1MDAzZWFkZHIxKTtcXG5uZXQvbWFjODAyMTEvcnguYzo0NTgzOlxcdGNhc2UgTkw4MDIxMV9JRlRZUEVfQVBfVkxBTjpcXG5uZXQvbWFjODAyMTEvcnguYy00NTg0LVxcdGNhc2UgTkw4MDIxMV9JRlRZUEVfQVA6XFxuLS1cXG5uZXQvbWFjODAyMTEvcnguYz00NzEzPXZvaWQgaWVlZTgwMjExX2NoZWNrX2Zhc3Rfcngoc3RydWN0IHN0YV9pbmZvICpzdGEpXFxuLS1cXG5uZXQvbWFjODAyMTEvcnguYy00NzcyLVxcdFxcdGJyZWFrO1xcbm5ldC9tYWM4MDIxMS9yeC5jOjQ3NzM6XFx0Y2FzZSBOTDgwMjExX0lGVFlQRV9BUF9WTEFOOlxcbm5ldC9tYWM4MDIxMS9yeC5jLTQ3NzQtXFx0Y2FzZSBOTDgwMjExX0lGVFlQRV9BUDpcXG4tLVxcbm5ldC9tYWM4MDIxMS9yeC5jLTQ3ODUtXFx0XFx0XFx0IShzZGF0YS1cXHUwMDNlZmxhZ3MgXFx1MDAyNiBJRUVFODAyMTFfU0RBVEFfRE9OVF9CUklER0VfUEFDS0VUUykgXFx1MDAyNlxcdTAwMjZcXG5uZXQvbWFjODAyMTEvcnguYzo0Nzg2OlxcdFxcdFxcdChzZGF0YS1cXHUwMDNldmlmLnR5cGUgIT0gTkw4MDIxMV9JRlRZUEVfQVBfVkxBTiB8fFxcbm5ldC9tYWM4MDIxMS9yeC5jLTQ3ODctXFx0XFx0XFx0ICFzZGF0YS1cXHUwMDNldS52bGFuLnN0YSk7XFxubmV0L21hYzgwMjExL3J4LmMtNDc4OC1cXG5uZXQvbWFjODAyMTEvcnguYzo0Nzg5OlxcdFxcdGlmIChzZGF0YS1cXHUwMDNldmlmLnR5cGUgPT0gTkw4MDIxMV9JRlRZUEVfQVBfVkxBTiBcXHUwMDI2XFx1MDAyNlxcbm5ldC9tYWM4MDIxMS9yeC5jLTQ3OTAtXFx0XFx0ICAgIHNkYXRhLVxcdTAwM2V1LnZsYW4uc3RhKSB7XFxuLS1cXG5uZXQvbWFjODAyMTEvcnguYz01MzQ4PXN0YXRpYyB2b2lkIF9faWVlZTgwMjExX3J4X2hhbmRsZV9wYWNrZXQoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXFxuLS1cXG5uZXQvbWFjODAyMTEvcnguYy01NDkxLVxcdFxcdGlmIChzZGF0YS1cXHUwMDNldmlmLnR5cGUgPT0gTkw4MDIxMV9JRlRZUEVfTU9OSVRPUiB8fFxcbm5ldC9tYWM4MDIxMS9yeC5jOjU0OTI6XFx0XFx0ICAgIHNkYXRhLVxcdTAwM2V2aWYudHlwZSA9PSBOTDgwMjExX0lGVFlQRV9BUF9WTEFOKVxcbm5ldC9tYWM4MDIxMS9yeC5jLTU0OTMtXFx0XFx0XFx0Y29udGludWU7XFxuLS1cXG5uZXQvbWFjODAyMTEvc3RhX2luZm8uYz0xMzI9c3RhdGljIHZvaWQgX19jbGVhbnVwX3NpbmdsZV9zdGEoc3RydWN0IHN0YV9pbmZvICpzdGEpXFxuLS1cXG5uZXQvbWFjODAyMTEvc3RhX2luZm8uYy0xNDMtXFx0XFx0aWYgKHN0YS1cXHUwMDNlc2RhdGEtXFx1MDAzZXZpZi50eXBlID09IE5MODAyMTFfSUZUWVBFX0FQIHx8XFxubmV0L21hYzgwMjExL3N0YV9pbmZvLmM6MTQ0OlxcdFxcdCAgICBzdGEtXFx1MDAzZXNkYXRhLVxcdTAwM2V2aWYudHlwZSA9PSBOTDgwMjExX0lGVFlQRV9BUF9WTEFOKVxcbm5ldC9tYWM4MDIxMS9zdGFfaW5mby5jLTE0NS1cXHRcXHRcXHRwcyA9IFxcdTAwMjZzZGF0YS1cXHUwMDNlYnNzLVxcdTAwM2VwcztcXG4tLVxcbm5ldC9tYWM4MDIxMS9zdGFfaW5mby5jPTExMDA9c3RhdGljIHZvaWQgX19zdGFfaW5mb19yZWNhbGNfdGltKHN0cnVjdCBzdGFfaW5mbyAqc3RhLCBib29sIGlnbm9yZV9wZW5kaW5nKVxcbi0tXFxubmV0L21hYzgwMjExL3N0YV9pbmZvLmMtMTEwOS1cXHRpZiAoc3RhLVxcdTAwM2VzZGF0YS1cXHUwMDNldmlmLnR5cGUgPT0gTkw4MDIxMV9JRlRZUEVfQVAgfHxcXG5uZXQvbWFjODAyMTEvc3RhX2luZm8uYzoxMTEwOlxcdCAgICBzdGEtXFx1MDAzZXNkYXRhLVxcdTAwM2V2aWYudHlwZSA9PSBOTDgwMjExX0lGVFlQRV9BUF9WTEFOKSB7XFxubmV0L21hYzgwMjExL3N0YV9pbmZvLmMtMTExMS1cXHRcXHRpZiAoV0FSTl9PTl9PTkNFKCFzdGEtXFx1MDAzZXNkYXRhLVxcdTAwM2Vic3MpKVxcbi0tXFxubmV0L21hYzgwMjExL3N0YV9pbmZvLmM9MTMwMz1zdGF0aWMgaW50IF9fbXVzdF9jaGVjayBfX3N0YV9pbmZvX2Rlc3Ryb3lfcGFydDEoc3RydWN0IHN0YV9pbmZvICpzdGEpXFxuLS1cXG5uZXQvbWFjODAyMTEvc3RhX2luZm8uYy0xMzgwLVxcbm5ldC9tYWM4MDIxMS9zdGFfaW5mby5jOjEzODE6XFx0aWYgKHNkYXRhLVxcdTAwM2V2aWYudHlwZSA9PSBOTDgwMjExX0lGVFlQRV9BUF9WTEFOIFxcdTAwMjZcXHUwMDI2XFxubmV0L21hYzgwMjExL3N0YV9pbmZvLmMtMTM4Mi1cXHQgICAgcmN1X2FjY2Vzc19wb2ludGVyKHNkYXRhLVxcdTAwM2V1LnZsYW4uc3RhKSA9PSBzdGEpXFxuLS1cXG5uZXQvbWFjODAyMTEvc3RhX2luZm8uYz0xMzg4PXN0YXRpYyBpbnQgX3N0YV9pbmZvX21vdmVfc3RhdGUoc3RydWN0IHN0YV9pbmZvICpzdGEsXFxuLS1cXG5uZXQvbWFjODAyMTEvc3RhX2luZm8uYy0xNTA1LVxcdFxcdH1cXG5uZXQvbWFjODAyMTEvc3RhX2luZm8uYzoxNTA2OlxcdFxcdGlmIChzdGEtXFx1MDAzZXNkYXRhLVxcdTAwM2V2aWYudHlwZSA9PSBOTDgwMjExX0lGVFlQRV9BUF9WTEFOIHx8XFxubmV0L21hYzgwMjExL3N0YV9pbmZvLmMtMTUwNy1cXHRcXHQgICAgc3RhLVxcdTAwM2VzZGF0YS1cXHUwMDNldmlmLnR5cGUgPT0gTkw4MDIxMV9JRlRZUEVfQVApXFxuLS1cXG5uZXQvbWFjODAyMTEvc3RhX2luZm8uYz0xODIwPXZvaWQgaWVlZTgwMjExX3N0YV9wc19kZWxpdmVyX3dha2V1cChzdHJ1Y3Qgc3RhX2luZm8gKnN0YSlcXG4tLVxcbm5ldC9tYWM4MDIxMS9zdGFfaW5mby5jLTE4MjgtXFxubmV0L21hYzgwMjExL3N0YV9pbmZvLmM6MTgyOTpcXHRpZiAoc2RhdGEtXFx1MDAzZXZpZi50eXBlID09IE5MODAyMTFfSUZUWVBFX0FQX1ZMQU4pXFxubmV0L21hYzgwMjExL3N0YV9pbmZvLmMtMTgzMC1cXHRcXHRzZGF0YSA9IGNvbnRhaW5lcl9vZihzZGF0YS1cXHUwMDNlYnNzLCBzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhLFxcbi0tXFxubmV0L21hYzgwMjExL3N0YV9pbmZvLmM9MzY3OT1pZWVlODAyMTFfc3RhX3VzYWJsZV9idyhzdHJ1Y3QgbGlua19zdGFfaW5mbyAqbGlua19zdGEsXFxuLS1cXG5uZXQvbWFjODAyMTEvc3RhX2luZm8uYy0zNjg3LVxcbm5ldC9tYWM4MDIxMS9zdGFfaW5mby5jOjM2ODg6XFx0aWYgKHNkYXRhLVxcdTAwM2V2aWYudHlwZSA9PSBOTDgwMjExX0lGVFlQRV9BUF9WTEFOKSB7XFxubmV0L21hYzgwMjExL3N0YV9pbmZvLmMtMzY4OS1cXHRcXHRzZGF0YSA9IGdldF9ic3Nfc2RhdGEoc2RhdGEpO1xcbi0tXFxubmV0L21hYzgwMjExL3RraXAuYz0yMzk9aW50IGllZWU4MDIxMV90a2lwX2RlY3J5cHRfZGF0YShzdHJ1Y3QgYXJjNF9jdHggKmN0eCxcXG4tLVxcbm5ldC9tYWM4MDIxMS90a2lwLmMtMjk4LVxcbm5ldC9tYWM4MDIxMS90a2lwLmM6Mjk5OlxcdFxcdGlmIChzZGF0YS1cXHUwMDNldmlmLnR5cGUgPT0gTkw4MDIxMV9JRlRZUEVfQVBfVkxBTilcXG5uZXQvbWFjODAyMTEvdGtpcC5jLTMwMC1cXHRcXHRcXHRzZGF0YSA9IGNvbnRhaW5lcl9vZihrZXktXFx1MDAzZXNkYXRhLVxcdTAwM2Vic3MsXFxuLS1cXG5uZXQvbWFjODAyMTEvdHguYz0zNzg9aWVlZTgwMjExX3R4X2hfbXVsdGljYXN0X3BzX2J1ZihzdHJ1Y3QgaWVlZTgwMjExX3R4X2RhdGEgKnR4KVxcbi0tXFxubmV0L21hYzgwMjExL3R4LmMtMzkzLVxcdGlmICh0eC1cXHUwMDNlc2RhdGEtXFx1MDAzZXZpZi50eXBlID09IE5MODAyMTFfSUZUWVBFX0FQIHx8XFxubmV0L21hYzgwMjExL3R4LmM6Mzk0OlxcdCAgICB0eC1cXHUwMDNlc2RhdGEtXFx1MDAzZXZpZi50eXBlID09IE5MODAyMTFfSUZUWVBFX0FQX1ZMQU4pIHtcXG5uZXQvbWFjODAyMTEvdHguYy0zOTUtXFx0XFx0aWYgKCF0eC1cXHUwMDNlc2RhdGEtXFx1MDAzZWJzcylcXG4tLVxcbm5ldC9tYWM4MDIxMS90eC5jPTEyMDg9aWVlZTgwMjExX3R4X3ByZXBhcmUoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsXFxuLS1cXG5uZXQvbWFjODAyMTEvdHguYy0xMjM2LVxcdH0gZWxzZSB7XFxubmV0L21hYzgwMjExL3R4LmM6MTIzNzpcXHRcXHRpZiAoc2RhdGEtXFx1MDAzZXZpZi50eXBlID09IE5MODAyMTFfSUZUWVBFX0FQX1ZMQU4pIHtcXG5uZXQvbWFjODAyMTEvdHguYy0xMjM4LVxcdFxcdFxcdHR4LVxcdTAwM2VzdGEgPSByY3VfZGVyZWZlcmVuY2Uoc2RhdGEtXFx1MDAzZXUudmxhbi5zdGEpO1xcbi0tXFxubmV0L21hYzgwMjExL3R4LmM9MTQ4Mz12b2lkIGllZWU4MDIxMV90eHFfcmVtb3ZlX3ZsYW4oc3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwsXFxuLS1cXG5uZXQvbWFjODAyMTEvdHguYy0xNDkwLVxcbm5ldC9tYWM4MDIxMS90eC5jOjE0OTE6XFx0aWYgKFdBUk5fT04oc2RhdGEtXFx1MDAzZXZpZi50eXBlICE9IE5MODAyMTFfSUZUWVBFX0FQX1ZMQU4pKVxcbm5ldC9tYWM4MDIxMS90eC5jLTE0OTItXFx0XFx0cmV0dXJuO1xcbi0tXFxubmV0L21hYzgwMjExL3R4LmM9MTY1MT1zdGF0aWMgYm9vbCBpZWVlODAyMTFfcXVldWVfc2tiKHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsLFxcbi0tXFxubmV0L21hYzgwMjExL3R4LmMtMTY2MS1cXG5uZXQvbWFjODAyMTEvdHguYzoxNjYyOlxcdGlmIChzZGF0YS1cXHUwMDNldmlmLnR5cGUgPT0gTkw4MDIxMV9JRlRZUEVfQVBfVkxBTilcXG5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDZUMjE6MDc6MTQuMjkxOTQwMTg1WiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjIyMzY3OTA0MjA0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkludmVzdGlnYXRpbmcgQVBfVkxBTiBDb25maWd1cmF0aW9uKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBhbmQgdGhlIGludGVyZmFjZSB0eXBlIGJlaW5nIHVzZWQgaXMgQVBfVkxBTi4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzLCBcIkFscmlnaHQsIGRvZXMgdGhpcyBBUF9WTEFOIHR5cGUgaGF2ZSBhbnkgc3BlY2lmaWMgY29uZmlndXJhdGlvbiBvcHRpb25zIEkgbmVlZCB0byBiZSBhd2FyZSBvZj9cIiBNeSBtaW5kIGltbWVkaWF0ZWx5IGp1bXBzIHRvIGNoZWNraW5nIGZvciBhIGRlZGljYXRlZCBjb25maWcuIEhhbmcgb24sICpOTDgwMjExX0lGVFlQRV9BUF9WTEFOKi4uLnRoYXQncyBqdXN0IGFuIGVudW0gdmFsdWUsIGlzbid0IGl0PyBSaWdodC4gT2theSwgc28gSSBzaG91bGQgYmUgbG9va2luZyBhdCB0aGUgYWN0dWFsIGNvbmZpZ3VyYXRpb24gZmlsZXMuIEknbGwgbmVlZCB0byBkaWcgaW50byBgbmV0L3dpcmVsZXNzL0tjb25maWdgIG9yIG1heWJlIGV2ZW4gYG5ldC9tYWM4MDIxMS9LY29uZmlnYC5cblxuV2FpdCBhIG1pbnV0ZSwgQVBfVkxBTiBzdXBwb3J0IGlzIHByZXR0eSBzdGFuZGFyZCBpbiBtYWM4MDIxMSwgKmlmKiBBUCBzdXBwb3J0IGlzIGVuYWJsZWQgdG8gYmVnaW4gd2l0aCwgc28gSSBkb24ndCB0aGluayB0aGVyZSdzIGEgdW5pcXVlIHNldHRpbmcuIExldCBtZSBqdXN0IGNvbmZpcm0gdGhhdCBieSBnb2luZyBiYWNrIGFuZCBjaGVja2luZyBgbmV0L21hYzgwMjExL0tjb25maWdgLiBBaCwgbm9wZSwgbm90aGluZyBzcGVjaWZpYyBmb3IgQVBfVkxBTi4gSW50ZXJlc3RpbmcuIFNvLCBkb2VzICpBUCogaXRzZWxmIGhhdmUgYSBjb25maWd1cmF0aW9uIG9wdGlvbj8gTm8sIG1hYzgwMjExIHN1cHBvcnRzIEFQIG1vZGUgYnkgZGVmYXVsdC4gSG1tLlxuXG5SaWdodCwgc28gd2hhdCdzIHRoZSBjb3JlIGhlcmU/ICpNQUM4MDIxMSogaXMgdGhlIHByaW1hcnkgY29uZmlndXJhdGlvbiwgb2J2aW91c2x5LiBCdXQgYXJlIHRoZXJlIGFueSBvdGhlciBzZXR0aW5ncyB0aGF0IG1pZ2h0IGluZGlyZWN0bHkgYWZmZWN0IEFQX1ZMQU4gYmVoYXZpb3I/IEkgc2hvdWxkIHByb2JhYmx5IGJyb2FkZW4gbXkgc2VhcmNoLiBMZXQgbWUgc2NhbiBgbmV0L3dpcmVsZXNzL0tjb25maWdgIGFuZCBzZWUgaWYgYW55dGhpbmcgZWxzZSBqdW1wcyBvdXQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI1ODE5LCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTkxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA2VDIxOjA3OjM2LjY1OTg0NzI3OFoiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTI1MzkyMjUwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBDRkc4MDIxMVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvd2lyZWxlc3MvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvd2lyZWxlc3MvS2NvbmZpZz0xND1jb25maWcgV0VYVF9QUklWXFxuLS1cXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xNi1cXG5uZXQvd2lyZWxlc3MvS2NvbmZpZzoxNzpjb25maWcgQ0ZHODAyMTFcXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xOC1cXHR0cmlzdGF0ZSBcXFwiY2ZnODAyMTEgLSB3aXJlbGVzcyBjb25maWd1cmF0aW9uIEFQSVxcXCJcXG4tLVxcbm5ldC93aXJlbGVzcy9LY29uZmlnPTM4PWNvbmZpZyBOTDgwMjExX1RFU1RNT0RFXFxuLS1cXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy01MS1cXG5uZXQvd2lyZWxlc3MvS2NvbmZpZzo1Mjpjb25maWcgQ0ZHODAyMTFfREVWRUxPUEVSX1dBUk5JTkdTXFxubmV0L3dpcmVsZXNzL0tjb25maWctNTMtXFx0Ym9vbCBcXFwiZW5hYmxlIGRldmVsb3BlciB3YXJuaW5nc1xcXCJcXG4tLVxcbm5ldC93aXJlbGVzcy9LY29uZmlnLTY3LVxcbm5ldC93aXJlbGVzcy9LY29uZmlnOjY4OmNvbmZpZyBDRkc4MDIxMV9DRVJUSUZJQ0FUSU9OX09OVVNcXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy02OS1cXHRib29sIFxcXCJjZmc4MDIxMSBjZXJ0aWZpY2F0aW9uIG9udXNcXFwiXFxuLS1cXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy04OC1cXG5uZXQvd2lyZWxlc3MvS2NvbmZpZzo4OTpjb25maWcgQ0ZHODAyMTFfUkVRVUlSRV9TSUdORURfUkVHREJcXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy05MC1cXHRib29sIFxcXCJyZXF1aXJlIHJlZ2RiIHNpZ25hdHVyZVxcXCIgaWYgQ0ZHODAyMTFfQ0VSVElGSUNBVElPTl9PTlVTXFxuLS1cXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy05OC1cXG5uZXQvd2lyZWxlc3MvS2NvbmZpZzo5OTpjb25maWcgQ0ZHODAyMTFfVVNFX0tFUk5FTF9SRUdEQl9LRVlTXFxubmV0L3dpcmVsZXNzL0tjb25maWctMTAwLVxcdGJvb2wgXFxcImFsbG93IHJlZ2RiIGtleXMgc2hpcHBlZCB3aXRoIHRoZSBrZXJuZWxcXFwiIGlmIENGRzgwMjExX0NFUlRJRklDQVRJT05fT05VU1xcbi0tXFxubmV0L3dpcmVsZXNzL0tjb25maWctMTEwLVxcbm5ldC93aXJlbGVzcy9LY29uZmlnOjExMTpjb25maWcgQ0ZHODAyMTFfRVhUUkFfUkVHREJfS0VZRElSXFxubmV0L3dpcmVsZXNzL0tjb25maWctMTEyLVxcdHN0cmluZyBcXFwiYWRkaXRpb25hbCByZWdkYiBrZXkgZGlyZWN0b3J5XFxcIiBpZiBDRkc4MDIxMV9DRVJUSUZJQ0FUSU9OX09OVVNcXG4tLVxcbm5ldC93aXJlbGVzcy9LY29uZmlnLTEyMS1cXG5uZXQvd2lyZWxlc3MvS2NvbmZpZzoxMjI6Y29uZmlnIENGRzgwMjExX1JFR19DRUxMVUxBUl9ISU5UU1xcbm5ldC93aXJlbGVzcy9LY29uZmlnLTEyMy1cXHRib29sIFxcXCJjZmc4MDIxMSByZWd1bGF0b3J5IHN1cHBvcnQgZm9yIGNlbGx1bGFyIGJhc2Ugc3RhdGlvbiBoaW50c1xcXCJcXG4tLVxcbm5ldC93aXJlbGVzcy9LY29uZmlnLTEzNC1cXG5uZXQvd2lyZWxlc3MvS2NvbmZpZzoxMzU6Y29uZmlnIENGRzgwMjExX1JFR19SRUxBWF9OT19JUlxcbm5ldC93aXJlbGVzcy9LY29uZmlnLTEzNi1cXHRib29sIFxcXCJjZmc4MDIxMSBzdXBwb3J0IGZvciBOT19JUiByZWxheGF0aW9uXFxcIlxcbi0tXFxubmV0L3dpcmVsZXNzL0tjb25maWctMTU4LVxcbm5ldC93aXJlbGVzcy9LY29uZmlnOjE1OTpjb25maWcgQ0ZHODAyMTFfREVGQVVMVF9QU1xcbm5ldC93aXJlbGVzcy9LY29uZmlnLTE2MC1cXHRib29sIFxcXCJlbmFibGUgcG93ZXJzYXZlIGJ5IGRlZmF1bHRcXFwiXFxuLS1cXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xNjgtXFxubmV0L3dpcmVsZXNzL0tjb25maWc6MTY5OmNvbmZpZyBDRkc4MDIxMV9ERUJVR0ZTXFxubmV0L3dpcmVsZXNzL0tjb25maWctMTcwLVxcdGJvb2wgXFxcImNmZzgwMjExIERlYnVnRlMgZW50cmllc1xcXCJcXG4tLVxcbm5ldC93aXJlbGVzcy9LY29uZmlnLTE3Ni1cXG5uZXQvd2lyZWxlc3MvS2NvbmZpZzoxNzc6Y29uZmlnIENGRzgwMjExX0NSREFfU1VQUE9SVFxcbm5ldC93aXJlbGVzcy9LY29uZmlnLTE3OC1cXHRib29sIFxcXCJzdXBwb3J0IENSREFcXFwiIGlmIEVYUEVSVFxcbi0tXFxubmV0L3dpcmVsZXNzL0tjb25maWctMTg2LVxcbm5ldC93aXJlbGVzcy9LY29uZmlnOjE4Nzpjb25maWcgQ0ZHODAyMTFfV0VYVFxcbm5ldC93aXJlbGVzcy9LY29uZmlnLTE4OC1cXHRib29sIFxcXCJjZmc4MDIxMSB3aXJlbGVzcyBleHRlbnNpb25zIGNvbXBhdGliaWxpdHlcXFwiXFxuLS1cXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xOTMtXFxubmV0L3dpcmVsZXNzL0tjb25maWc6MTk0OmNvbmZpZyBDRkc4MDIxMV9LVU5JVF9URVNUXFxubmV0L3dpcmVsZXNzL0tjb25maWctMTk1LVxcdHRyaXN0YXRlIFxcXCJLVW5pdCB0ZXN0cyBmb3IgY2ZnODAyMTFcXFwiIGlmICFLVU5JVF9BTExfVEVTVFNcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDZUMjE6MDc6MzYuNzg1MjQ1MTg5WiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI5MjcyMjg4NzIzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFuYWx5c2lzIG9mIE1BQzgwMjExIGFuZCBQb3RlbnRpYWwgRnV6emluZyBUYXJnZXRzKipcblxuT2theSwgc28gSSdtIGRpdmluZyBpbnRvIHRoZSBgTUFDODAyMTFgIGNvbmZpZ3VyYXRpb24sIGFuZCBteSBpbml0aWFsIHRob3VnaHQgaXMgdGhhdCBgaWVlZTgwMjExX2RvX3N0b3BgIGlzIGEga2V5IGZvY3VzIHBvaW50LiBJdCBmZWVscyBsaWtlIHRoaXMgY291bGQgYmUgYW4gaW50ZXJlc3RpbmcgZnVuY3Rpb24gdG8gaW52ZXN0aWdhdGUuIEhvbGQgb24uLi4gaXQncyBhIHN0YXRpYyBmdW5jdGlvbi4gVGhhdCBpbml0aWFsbHkgdGhyb3dzIGEgd3JlbmNoIGluIHRoZSB3b3JrcywgYnV0IHRoZW4gSSByZW1lbWJlciBuZXRsaW5rIGNvbW1hbmRzIGNhbiBiZSB1c2VkIHRvIHN0b3AgdGhlIGludGVyZmFjZSwgcG90ZW50aWFsbHkgdHJpZ2dlcmluZyBpdC4gU28sIHRoYXQncyBwcm9taXNpbmc7IGl0ICpjb3VsZCogYmUgZnV6emVkLlxuXG5Ob3csIGxldCdzIGV4cGxvcmUgdGhpcyBmdXJ0aGVyLiBJcyB0aGVyZSBhbm90aGVyIGZ1bmN0aW9uIGRpcmVjdGx5IHJlbGF0ZWQ/IEFoLCB5ZXMsIGBpZWVlODAyMTFfc3RvcGAgY2FsbHMgYGllZWU4MDIxMV9kb19zdG9wYC4gQnV0LCBhZ2FpbiwgYmVjYXVzZSBgaWVlZTgwMjExX2RvX3N0b3BgIGlzIHN0YXRpYywgaW5saW5pbmcgaXMgYSBwb3NzaWJpbGl0eS4gSG93ZXZlciwgaXQgbG9va3MgZmFpcmx5IHN1YnN0YW50aWFsLiBHaXZlbiBpdHMgc2l6ZSwgaXQgcHJvYmFibHkgaXNuJ3QuXG5cbkkgbmVlZCB0byBtYWtlIHN1cmUgSSdtIG9uIHRoZSByaWdodCB0cmFjayBoZXJlLiBJcyBgaWVlZTgwMjExX2RvX3N0b3BgIHJlYWxseSB0aGUgYmVzdCBmb2N1cyBzeW1ib2w/IExldCdzIGNoZWNrIHdoZXJlIGl0J3MgY2FsbGVkLiBPa2F5LCBpdCdzIGNhbGxlZCBmcm9tIGBpZWVlODAyMTFfc3RvcGAsIGBpZWVlODAyMTFfcnVudGltZV9jaGFuZ2VfaWZ0eXBlYCwgYW5kIGBpZWVlODAyMTFfc2RhdGFfc3RvcGAuIEkgdGhpbmsgSSB3aWxsIGxpc3QgYGllZWU4MDIxMV9kb19zdG9wYCBhbmQgYGllZWU4MDIxMV9zdG9wYCBhcyBwb3RlbnRpYWwgZnV6emluZyB0YXJnZXRzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNzI4OCwiT3V0cHV0VG9rZW5zIjoxMzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNDMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDZUMjE6MDg6MDYuMDU3NTM4NzQyWiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTYwNDg0MDM4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJNQUM4MDIxMVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImllZWU4MDIxMV9kb19zdG9wXCIsXG4gICAgXCJpZWVlODAyMTFfc3RvcFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBpbnRlcmZhY2Ugc3RvcCBsb2dpYyBmb3IgQVBfVkxBTiBpbnRlcmZhY2VzIGluIG1hYzgwMjExLCBjaGFuZ2luZyBob3cgcGFja2V0cyBhcmUgZnJlZWQgdG8gYXZvaWQgZG9pbmcgc28gdW5kZXIgYSBzcGlubG9jay4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIG1hYzgwMjExIHN0YWNrIHRoYXQgaXMgcmVhY2hhYmxlIHZpYSBuZXRsaW5rIGNvbW1hbmRzIChlLmcuLCBzdG9wcGluZyBhbiBBUF9WTEFOIGludGVyZmFjZSkuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTUFDODAyMTFcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJpZWVlODAyMTFfZG9fc3RvcFwiLFxuICAgIFwiaWVlZTgwMjExX3N0b3BcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgaW50ZXJmYWNlIHN0b3AgbG9naWMgZm9yIEFQX1ZMQU4gaW50ZXJmYWNlcyBpbiBtYWM4MDIxMSwgY2hhbmdpbmcgaG93IHBhY2tldHMgYXJlIGZyZWVkIHRvIGF2b2lkIGRvaW5nIHNvIHVuZGVyIGEgc3BpbmxvY2suIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBtYWM4MDIxMSBzdGFjayB0aGF0IGlzIHJlYWNoYWJsZSB2aWEgbmV0bGluayBjb21tYW5kcyAoZS5nLiwgc3RvcHBpbmcgYW4gQVBfVkxBTiBpbnRlcmZhY2UpLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowcbhgk[1] Phase: Succeeded StartedAt: 2026-07-06 21:09:18 +0000 UTC FinishedAt: 2026-07-06 21:09:18 +0000 UTC Input: nil Output: nil --------- Name: series-workflowcbhgk[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-07-06 21:09:18 +0000 UTC FinishedAt: 2026-07-06 21:09:18 +0000 UTC Input: nil Output: nil --------- Name: series-workflowcbhgk[2] Phase: Succeeded StartedAt: 2026-07-06 21:09:18 +0000 UTC FinishedAt: 2026-07-07 01:14:19 +0000 UTC Input: nil Output: nil --------- Name: series-workflowcbhgk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ieee80211_do_stop","ieee80211_stop"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"83ef65ad-a367-473b-a77f-9f98ba2025f2","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-07-06 21:09:18 +0000 UTC FinishedAt: 2026-07-07 01:14:19 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ieee80211_do_stop","ieee80211_stop"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"83ef65ad-a367-473b-a77f-9f98ba2025f2","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowcbhgk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ieee80211_do_stop","ieee80211_stop"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"83ef65ad-a367-473b-a77f-9f98ba2025f2","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-07-06 21:09:18 +0000 UTC FinishedAt: 2026-07-06 21:09:49 +0000 UTC Input: nil Output: nil --------- Name: series-workflowcbhgk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ieee80211_do_stop","ieee80211_stop"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"83ef65ad-a367-473b-a77f-9f98ba2025f2","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-07-06 21:09:18 +0000 UTC FinishedAt: 2026-07-06 21:09:41 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowcbhgk/series-workflowcbhgk-convert-artifact-965763872/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowcbhgk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ieee80211_do_stop","ieee80211_stop"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"83ef65ad-a367-473b-a77f-9f98ba2025f2","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-07-06 21:09:49 +0000 UTC FinishedAt: 2026-07-06 21:44:22 +0000 UTC Input: nil Output: nil --------- Name: series-workflowcbhgk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ieee80211_do_stop","ieee80211_stop"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"83ef65ad-a367-473b-a77f-9f98ba2025f2","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-07-06 21:09:49 +0000 UTC FinishedAt: 2026-07-06 21:44:22 +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:*64c23656-33e2-4066-b369-915de8c8a9aa,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-workflowcbhgk/series-workflowcbhgk-convert-artifact-965763872/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": "ad28e79b-0dea-46de-b23e-3e30e72cb3d5", "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-workflowcbhgk/series-workflowcbhgk-build-action-1359036902/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowcbhgk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ieee80211_do_stop","ieee80211_stop"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"83ef65ad-a367-473b-a77f-9f98ba2025f2","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-07-06 21:09:49 +0000 UTC FinishedAt: 2026-07-06 21:43:58 +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:*64c23656-33e2-4066-b369-915de8c8a9aa,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-workflowcbhgk/series-workflowcbhgk-convert-artifact-965763872/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": "ad28e79b-0dea-46de-b23e-3e30e72cb3d5", "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-workflowcbhgk/series-workflowcbhgk-build-action-1359036902/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowcbhgk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ieee80211_do_stop","ieee80211_stop"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"83ef65ad-a367-473b-a77f-9f98ba2025f2","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-07-06 21:44:22 +0000 UTC FinishedAt: 2026-07-06 21:44:22 +0000 UTC Input: nil Output: nil --------- Name: series-workflowcbhgk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ieee80211_do_stop","ieee80211_stop"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"83ef65ad-a367-473b-a77f-9f98ba2025f2","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-07-06 21:44:22 +0000 UTC FinishedAt: 2026-07-06 21:44:22 +0000 UTC Input: nil Output: nil --------- Name: series-workflowcbhgk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ieee80211_do_stop","ieee80211_stop"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"83ef65ad-a367-473b-a77f-9f98ba2025f2","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-07-06 21:44:22 +0000 UTC FinishedAt: 2026-07-06 21:44:42 +0000 UTC Input: nil Output: nil --------- Name: series-workflowcbhgk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ieee80211_do_stop","ieee80211_stop"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"83ef65ad-a367-473b-a77f-9f98ba2025f2","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-07-06 21:44:22 +0000 UTC FinishedAt: 2026-07-06 21:44:32 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"83ef65ad-a367-473b-a77f-9f98ba2025f2","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowcbhgk/series-workflowcbhgk-convert-artifact-1847894343/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowcbhgk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ieee80211_do_stop","ieee80211_stop"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"83ef65ad-a367-473b-a77f-9f98ba2025f2","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-07-06 21:44:42 +0000 UTC FinishedAt: 2026-07-06 21:46:45 +0000 UTC Input: nil Output: nil --------- Name: series-workflowcbhgk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ieee80211_do_stop","ieee80211_stop"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"83ef65ad-a367-473b-a77f-9f98ba2025f2","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-07-06 21:44:42 +0000 UTC FinishedAt: 2026-07-06 21:46:35 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*ad28e79b-0dea-46de-b23e-3e30e72cb3d5,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-workflowcbhgk/series-workflowcbhgk-build-action-1359036902/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-workflowcbhgk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ieee80211_do_stop","ieee80211_stop"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"83ef65ad-a367-473b-a77f-9f98ba2025f2","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-07-06 21:46:45 +0000 UTC FinishedAt: 2026-07-06 21:46:45 +0000 UTC Input: nil Output: nil --------- Name: series-workflowcbhgk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ieee80211_do_stop","ieee80211_stop"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"83ef65ad-a367-473b-a77f-9f98ba2025f2","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-07-06 21:46:45 +0000 UTC FinishedAt: 2026-07-06 21:46:45 +0000 UTC Input: nil Output: nil --------- Name: series-workflowcbhgk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ieee80211_do_stop","ieee80211_stop"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"83ef65ad-a367-473b-a77f-9f98ba2025f2","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-07-06 21:46:45 +0000 UTC FinishedAt: 2026-07-06 22:09:32 +0000 UTC Input: nil Output: nil --------- Name: series-workflowcbhgk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ieee80211_do_stop","ieee80211_stop"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"83ef65ad-a367-473b-a77f-9f98ba2025f2","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-07-06 21:46:45 +0000 UTC FinishedAt: 2026-07-06 22:09:32 +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:*64c23656-33e2-4066-b369-915de8c8a9aa,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-workflowcbhgk/series-workflowcbhgk-convert-artifact-1847894343/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": "d90e075c-0c3d-4645-80de-7f87f1914021", "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-workflowcbhgk/series-workflowcbhgk-build-action-1325457611/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowcbhgk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ieee80211_do_stop","ieee80211_stop"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"83ef65ad-a367-473b-a77f-9f98ba2025f2","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-07-06 21:46:45 +0000 UTC FinishedAt: 2026-07-06 22:09:22 +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:*64c23656-33e2-4066-b369-915de8c8a9aa,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-workflowcbhgk/series-workflowcbhgk-convert-artifact-1847894343/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": "d90e075c-0c3d-4645-80de-7f87f1914021", "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-workflowcbhgk/series-workflowcbhgk-build-action-1325457611/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowcbhgk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ieee80211_do_stop","ieee80211_stop"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"83ef65ad-a367-473b-a77f-9f98ba2025f2","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-07-06 22:09:32 +0000 UTC FinishedAt: 2026-07-06 22:09:32 +0000 UTC Input: nil Output: nil --------- Name: series-workflowcbhgk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ieee80211_do_stop","ieee80211_stop"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"83ef65ad-a367-473b-a77f-9f98ba2025f2","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-07-06 22:09:32 +0000 UTC FinishedAt: 2026-07-06 22:09:32 +0000 UTC Input: nil Output: nil --------- Name: series-workflowcbhgk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ieee80211_do_stop","ieee80211_stop"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"83ef65ad-a367-473b-a77f-9f98ba2025f2","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-07-06 22:09:32 +0000 UTC FinishedAt: 2026-07-06 22:11:47 +0000 UTC Input: nil Output: nil --------- Name: series-workflowcbhgk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ieee80211_do_stop","ieee80211_stop"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"83ef65ad-a367-473b-a77f-9f98ba2025f2","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-07-06 22:09:32 +0000 UTC FinishedAt: 2026-07-06 22:11:37 +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:*d90e075c-0c3d-4645-80de-7f87f1914021,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-workflowcbhgk/series-workflowcbhgk-build-action-1325457611/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-workflowcbhgk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ieee80211_do_stop","ieee80211_stop"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"83ef65ad-a367-473b-a77f-9f98ba2025f2","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-07-06 22:11:47 +0000 UTC FinishedAt: 2026-07-07 01:14:19 +0000 UTC Input: nil Output: nil --------- Name: series-workflowcbhgk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ieee80211_do_stop","ieee80211_stop"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"83ef65ad-a367-473b-a77f-9f98ba2025f2","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-07-06 22:11:47 +0000 UTC FinishedAt: 2026-07-07 01:14:19 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:config,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ieee80211_do_stop","ieee80211_stop"],"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:*ad28e79b-0dea-46de-b23e-3e30e72cb3d5,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*d90e075c-0c3d-4645-80de-7f87f1914021,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-workflowcbhgk/series-workflowcbhgk-build-action-1359036902/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-workflowcbhgk/series-workflowcbhgk-build-action-1325457611/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowcbhgk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ieee80211_do_stop","ieee80211_stop"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"83ef65ad-a367-473b-a77f-9f98ba2025f2","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-07-06 22:11:47 +0000 UTC FinishedAt: 2026-07-06 22:11:57 +0000 UTC Input: nil Output: nil --------- Name: series-workflowcbhgk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ieee80211_do_stop","ieee80211_stop"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"83ef65ad-a367-473b-a77f-9f98ba2025f2","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-07-06 22:11:47 +0000 UTC FinishedAt: 2026-07-06 22:11:53 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ieee80211_do_stop","ieee80211_stop"],"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-workflowcbhgk/series-workflowcbhgk-convert-artifact-2311596576/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowcbhgk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ieee80211_do_stop","ieee80211_stop"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"83ef65ad-a367-473b-a77f-9f98ba2025f2","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-07-06 22:11:47 +0000 UTC FinishedAt: 2026-07-06 22:11:47 +0000 UTC Input: nil Output: nil --------- Name: series-workflowcbhgk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ieee80211_do_stop","ieee80211_stop"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"83ef65ad-a367-473b-a77f-9f98ba2025f2","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-07-06 22:11:47 +0000 UTC FinishedAt: 2026-07-06 22:11:47 +0000 UTC Input: nil Output: nil --------- Name: series-workflowcbhgk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ieee80211_do_stop","ieee80211_stop"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"83ef65ad-a367-473b-a77f-9f98ba2025f2","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-07-06 22:11:47 +0000 UTC FinishedAt: 2026-07-06 22:11:47 +0000 UTC Input: nil Output: nil --------- Name: series-workflowcbhgk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ieee80211_do_stop","ieee80211_stop"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"83ef65ad-a367-473b-a77f-9f98ba2025f2","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-07-06 22:11:57 +0000 UTC FinishedAt: 2026-07-07 01:14:19 +0000 UTC Input: nil Output: nil --------- Name: series-workflowcbhgk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ieee80211_do_stop","ieee80211_stop"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"83ef65ad-a367-473b-a77f-9f98ba2025f2","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-07-06 22:11:57 +0000 UTC FinishedAt: 2026-07-07 01:14:08 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*ad28e79b-0dea-46de-b23e-3e30e72cb3d5,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*d90e075c-0c3d-4645-80de-7f87f1914021,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-workflowcbhgk/series-workflowcbhgk-build-action-1359036902/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-workflowcbhgk/series-workflowcbhgk-build-action-1325457611/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-workflowcbhgk/series-workflowcbhgk-convert-artifact-2311596576/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,}