Name: series-workflowh5xms Phase: Succeeded StartedAt: 2026-08-29 05:48:01 +0000 UTC FinishedAt: 2026-08-29 09:43:38 +0000 UTC Input: nil Output: nil --------- Name: series-workflowh5xms[0] Phase: Succeeded StartedAt: 2026-08-29 05:48:01 +0000 UTC FinishedAt: 2026-08-29 06:05:28 +0000 UTC Input: nil Output: nil --------- Name: series-workflowh5xms[0].run-triage Phase: Succeeded StartedAt: 2026-08-29 05:48:01 +0000 UTC FinishedAt: 2026-08-29 06:05:28 +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": "45c13f3f9e3bb15fd89ff2864c6f627a3b4b4229", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "MAC80211", "CFG80211", "MAC80211_HWSIM" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "torvalds", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux", "commit_hash": "45c13f3f9e3bb15fd89ff2864c6f627a3b4b4229", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "MAC80211", "CFG80211", "MAC80211_HWSIM" ], "series_id": "e74fd6c2-28ed-45bb-9bd4-df5d3581723a" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "ieee80211_rx_list", "ieee80211_rx_napi", "ieee80211_rx_irqsafe" ], "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+CgkJCTx0ZD4yMDI2LzA4LzI5IDA2OjAyPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+M208L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O01BQzgwMjExJiMzNDssCiAgICAmIzM0O0NGRzgwMjExJiMzNDssCiAgICAmIzM0O01BQzgwMjExX0hXU0lNJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7aWVlZTgwMjExX3J4X2xpc3QmIzM0OywKICAgICYjMzQ7aWVlZTgwMjExX3J4X25hcGkmIzM0OywKICAgICYjMzQ7aWVlZTgwMjExX3J4X2lycXNhZmUmIzM0OwogIF0sCiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBjaGFuZ2VzIHRoZSB0eXBlIG9mIGBleHRyYV9sZW5gIGluIGBzdHJ1Y3QgaWVlZTgwMjExX2ZyYWdtZW50X2VudHJ5YCBmcm9tIGB1MTZgIHRvIGB1bnNpZ25lZCBpbnRgIHRvIHByZXZlbnQgaW50ZWdlciBvdmVyZmxvdy90cnVuY2F0aW9uIHdoZW4gY2FsY3VsYXRpbmcgdGhlIHRvdGFsIGxlbmd0aCBvZiBmcmFnbWVudGVkIGZyYW1lcyBkdXJpbmcgSUVFRSA4MDIuMTEgZGVmcmFnbWVudGF0aW9uLlxuXG5gc3RydWN0IGllZWU4MDIxMV9mcmFnbWVudF9lbnRyeWAgaXMgYW4gaW50ZXJuYWwga2VybmVsIGRhdGEgc3RydWN0dXJlIHVzZWQgZXhjbHVzaXZlbHkgYnkgbWFjODAyMTEgUlggZGVmcmFnbWVudGF0aW9uIHJvdXRpbmVzLiBgZW50cnktXHUwMDNlZXh0cmFfbGVuYCBpcyBleHBsaWNpdGx5IGluaXRpYWxpemVkIHRvIGAwYCBpbiBgaWVlZTgwMjExX3JlYXNzZW1ibGVfYWRkKClgLCBhbmQgdGhlIHN0cnVjdCBpcyBuZXZlciBjb3BpZWQgdG8gdXNlcnNwYWNlIG9yIGV4cG9zZWQgdG8gdW5pbml0aWFsaXplZCBtZW1vcnkgcmVhZHMuIFRoZSB1bmRlcmx5aW5nIGlzc3VlIHByZXZlbnRlZCBieSB0aGlzIHBhdGNoIGlzIGFuIGludGVnZXIgb3ZlcmZsb3cgdGhhdCBjb3VsZCBsZWFkIHRvIGluc3VmZmljaWVudCBTS0IgcmVhbGxvY2F0aW9uIChza2IgdGFpbHJvb20gZXhoYXVzdGlvbiAvIG91dC1vZi1ib3VuZHMgd3JpdGVzKSwgd2hpY2ggaXMgZGV0ZWN0ZWQgYnkgS0FTQU4gYW5kIHN0YW5kYXJkIGtlcm5lbCBhc3NlcnRpb25zLiBUaGVyZSBpcyBubyByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJlYWRzIG9yIGluZm9ybWF0aW9uIGxlYWtzLCBzbyBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IHdhcnJhbnRlZC4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggY2hhbmdlcyBgZXh0cmFfbGVuYCBpbiBgc3RydWN0IGllZWU4MDIxMV9mcmFnbWVudF9lbnRyeWAgZnJvbSBgdTE2YCB0byBgdW5zaWduZWQgaW50YCB0byBwcmV2ZW50IGludGVnZXIgb3ZlcmZsb3cgZHVyaW5nIDgwMi4xMSBmcmFnbWVudCByZWFzc2VtYmx5IGluIG1hYzgwMjExIHJ4IGhhbmRsaW5nLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgZGlyZWN0bHkgYWZmZWN0aW5nIHBhY2tldCByZWFzc2VtYmx5IGFuZCBtZW1vcnkgbWFuYWdlbWVudCBpbiB0aGUgcmVhY2hhYmxlIHdpcmVsZXNzIG5ldHdvcmtpbmcgc3Vic3lzdGVtLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI5IDA2OjAyPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgYTJjYWY1NjQ0YTcxNjA2MGUzYzMyYmZmNjViYmY1NzJjN2I1MzA1NlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBTYXQgQXVnIDI5IDA2OjAyOjEyIDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL25ldC9tYWM4MDIxMS9zdGFfaW5mby5oIGIvbmV0L21hYzgwMjExL3N0YV9pbmZvLmhcbmluZGV4IGVlMGQzMjg3N2M1YjQuLjExMmMzMzNmYmU0NWIgMTAwNjQ0XG4tLS0gYS9uZXQvbWFjODAyMTEvc3RhX2luZm8uaFxuJiM0MzsmIzQzOyYjNDM7IGIvbmV0L21hYzgwMjExL3N0YV9pbmZvLmhcbkBAIC00NTgsNyAmIzQzOzQ1OCw3IEBAIHN0cnVjdCBpZWVlODAyMTFfZnJhZ21lbnRfZW50cnkge1xuIFx0c3RydWN0IHNrX2J1ZmZfaGVhZCBza2JfbGlzdDtcbiBcdHVuc2lnbmVkIGxvbmcgZmlyc3RfZnJhZ190aW1lO1xuIFx0dTE2IHNlcTtcbi1cdHUxNiBleHRyYV9sZW47XG4mIzQzO1x0dW5zaWduZWQgaW50IGV4dHJhX2xlbjtcbiBcdHUxNiBsYXN0X2ZyYWc7XG4gXHR1OCByeF9xdWV1ZTtcbiBcdHU4IGNoZWNrX3NlcXVlbnRpYWxfcG46MSwgLyogbmVlZGVkIGZvciBDQ01QL0dDTVAgKi9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yOSAwNjowMjwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4ybTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5jb3JlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtNQUM4MDIxMSYjMzQ7LAogICAgJiMzNDtDRkc4MDIxMSYjMzQ7LAogICAgJiMzNDtNQUM4MDIxMV9IV1NJTSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2llZWU4MDIxMV9yeF9saXN0JiMzNDssCiAgICAmIzM0O2llZWU4MDIxMV9yeF9uYXBpJiMzNDssCiAgICAmIzM0O2llZWU4MDIxMV9yeF9pcnFzYWZlJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGNoYW5nZXMgYGV4dHJhX2xlbmAgaW4gYHN0cnVjdCBpZWVlODAyMTFfZnJhZ21lbnRfZW50cnlgIGZyb20gYHUxNmAgdG8gYHVuc2lnbmVkIGludGAgdG8gcHJldmVudCBpbnRlZ2VyIG92ZXJmbG93IGR1cmluZyA4MDIuMTEgZnJhZ21lbnQgcmVhc3NlbWJseSBpbiBtYWM4MDIxMSByeCBoYW5kbGluZy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGRpcmVjdGx5IGFmZmVjdGluZyBwYWNrZXQgcmVhc3NlbWJseSBhbmQgbWVtb3J5IG1hbmFnZW1lbnQgaW4gdGhlIHJlYWNoYWJsZSB3aXJlbGVzcyBuZXR3b3JraW5nIHN1YnN5c3RlbS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IGEyY2FmNTY0NGE3MTYwNjBlM2MzMmJmZjY1YmJmNTcyYzdiNTMwNTYKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgU2F0IEF1ZyAyOSAwNjowMjoxMiAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL25ldC9tYWM4MDIxMS9zdGFfaW5mby5oIGIvbmV0L21hYzgwMjExL3N0YV9pbmZvLmgKaW5kZXggZWUwZDMyODc3YzViNC4uMTEyYzMzM2ZiZTQ1YiAxMDA2NDQKLS0tIGEvbmV0L21hYzgwMjExL3N0YV9pbmZvLmgKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L21hYzgwMjExL3N0YV9pbmZvLmgKQEAgLTQ1OCw3ICYjNDM7NDU4LDcgQEAgc3RydWN0IGllZWU4MDIxMV9mcmFnbWVudF9lbnRyeSB7CiAJc3RydWN0IHNrX2J1ZmZfaGVhZCBza2JfbGlzdDsKIAl1bnNpZ25lZCBsb25nIGZpcnN0X2ZyYWdfdGltZTsKIAl1MTYgc2VxOwotCXUxNiBleHRyYV9sZW47CiYjNDM7CXVuc2lnbmVkIGludCBleHRyYV9sZW47CiAJdTE2IGxhc3RfZnJhZzsKIAl1OCByeF9xdWV1ZTsKIAl1OCBjaGVja19zZXF1ZW50aWFsX3BuOjEsIC8qIG5lZWRlZCBmb3IgQ0NNUC9HQ01QICovCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI5IDA2OjAyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIwOTUKCQkJCQkJCW91dHB1dDogMzEKCQkJCQkJCXRob3VnaHRzOiAxMTUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqUmV2aWV3aW5nIHRoZSBtYWM4MDIxMSBQYXRjaCoqCgpPa2F5LCBoZXJlIHdlIGdvLiBUaGUgdXNlciB3YW50cyBtZSB0byB0YWtlIGEgbG9vayBhdCBhIHBhdGNoIHRoYXQgdG91Y2hlcyBgbmV0L21hYzgwMjExL3N0YV9pbmZvLmhgLiBBbHJpZ2h0LCBsZXQmIzM5O3MgcHVsbCB1cCB0aGUgZGlmZi4gTG9va3MgbGlrZSB0aGV5JiMzOTt2ZSBjaGFuZ2VkIGBzdHJ1Y3QgaWVlZTgwMjExX2ZyYWdtZW50X2VudHJ5YCwgc3BlY2lmaWNhbGx5IHRoZSBgZXh0cmFfbGVuYCBmaWVsZC4gSXQmIzM5O3MgYmVlbiBidW1wZWQgZnJvbSBhIGB1MTZgIHRvIGFuIGB1bnNpZ25lZCBpbnRgLiBJbnRlcmVzdGluZy4KCk5vdywgYmVmb3JlIEkgc2lnbiBvZmYgb24gdGhpcywgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGltcGxpY2F0aW9ucyBvZiB0aGlzIGNoYW5nZS4gV2h5IHRoZSBpbmNyZWFzZWQgc2l6ZT8gSXMgdGhpcyBhIG5lY2Vzc2FyeSBhZGp1c3RtZW50IHRvIGFjY29tbW9kYXRlIHNvbWV0aGluZz8gTGV0JiMzOTtzIHRyYWNlIHRoaXMuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoZXJlIGBpZWVlODAyMTFfZnJhZ21lbnRfZW50cnlgIGFuZCwgbW9yZSBpbXBvcnRhbnRseSwgaG93IGBleHRyYV9sZW5gIGFyZSBhY3R1YWxseSAqdXNlZCogd2l0aGluIHRoZSBgbmV0L21hYzgwMjExYCBzdWJzeXN0ZW0uIFRpbWUgdG8gZmlyZSB1cCBgZ3JlcHBlcmAgYW5kIGdldCBhIGNsZWFyIHBpY3R1cmUgb2YgaXRzIHVzYWdlIGNvbnRleHQuIEkgbmVlZCB0byBtYWtlIHN1cmUgdGhpcyBkb2VzbiYjMzk7dCBpbnRyb2R1Y2UgYW55IHVuZm9yZXNlZW4gaXNzdWVzIG9yIHBvdGVudGlhbCByZWdyZXNzaW9ucy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yOSAwNjowMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtleHRyYV9sZW4mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbWFjODAyMTEmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L21hYzgwMjExL2llZWU4MDIxMV9pLmg9MjY4NT12b2lkIGllZWU4MDIxMV9zZW5kX2F1dGgoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsXG5uZXQvbWFjODAyMTEvaWVlZTgwMjExX2kuaC0yNjg2LVx0XHRcdCB1MTYgdHJhbnNhY3Rpb24sIHUxNiBhdXRoX2FsZywgdTE2IHN0YXR1cyxcbm5ldC9tYWM4MDIxMS9pZWVlODAyMTFfaS5oOjI2ODc6XHRcdFx0IGNvbnN0IHU4ICpleHRyYSwgc2l6ZV90IGV4dHJhX2xlbiwgY29uc3QgdTggKmJzc2lkLFxubmV0L21hYzgwMjExL2llZWU4MDIxMV9pLmgtMjY4OC1cdFx0XHQgY29uc3QgdTggKmRhLCBjb25zdCB1OCAqa2V5LCB1OCBrZXlfbGVuLCB1OCBrZXlfaWR4LFxuLS1cbm5ldC9tYWM4MDIxMS9yeC5jPTIyOTM9aWVlZTgwMjExX3JlYXNzZW1ibGVfYWRkKHN0cnVjdCBpZWVlODAyMTFfZnJhZ21lbnRfY2FjaGUgKmNhY2hlLFxuLS1cbm5ldC9tYWM4MDIxMS9yeC5jLTIzMTEtXHRlbnRyeS1cdTAwM2VjaGVja19zZXF1ZW50aWFsX3BuID0gZmFsc2U7XG5uZXQvbWFjODAyMTEvcnguYzoyMzEyOlx0ZW50cnktXHUwMDNlZXh0cmFfbGVuID0gMDtcbm5ldC9tYWM4MDIxMS9yeC5jLTIzMTMtXG4tLVxubmV0L21hYzgwMjExL3J4LmM9MjM3Mz1pZWVlODAyMTFfcnhfaF9kZWZyYWdtZW50KHN0cnVjdCBpZWVlODAyMTFfcnhfZGF0YSAqcngpXG4tLVxubmV0L21hYzgwMjExL3J4LmMtMjUwMy1cdGVudHJ5LVx1MDAzZWxhc3RfZnJhZyA9IGZyYWc7XG5uZXQvbWFjODAyMTEvcnguYzoyNTA0Olx0ZW50cnktXHUwMDNlZXh0cmFfbGVuICYjNDM7PSByeC1cdTAwM2Vza2ItXHUwMDNlbGVuO1xubmV0L21hYzgwMjExL3J4LmMtMjUwNS1cdGlmIChpZWVlODAyMTFfaGFzX21vcmVmcmFncyhmYykpIHtcbi0tXG5uZXQvbWFjODAyMTEvcnguYy0yNTEwLVx0cngtXHUwMDNlc2tiID0gX19za2JfZGVxdWV1ZShcdTAwMjZlbnRyeS1cdTAwM2Vza2JfbGlzdCk7XG5uZXQvbWFjODAyMTEvcnguYzoyNTExOlx0aWYgKHNrYl90YWlscm9vbShyeC1cdTAwM2Vza2IpIFx1MDAzYyBlbnRyeS1cdTAwM2VleHRyYV9sZW4pIHtcbm5ldC9tYWM4MDIxMS9yeC5jLTI1MTItXHRcdEk4MDJfREVCVUdfSU5DKHJ4LVx1MDAzZWxvY2FsLVx1MDAzZXJ4X2V4cGFuZF9za2JfaGVhZF9kZWZyYWcpO1xubmV0L21hYzgwMjExL3J4LmM6MjUxMzpcdFx0aWYgKHVubGlrZWx5KHBza2JfZXhwYW5kX2hlYWQocngtXHUwMDNlc2tiLCAwLCBlbnRyeS1cdTAwM2VleHRyYV9sZW4sXG5uZXQvbWFjODAyMTEvcnguYy0yNTE0LVx0XHRcdFx0XHQgICAgICBHRlBfQVRPTUlDKSkpIHtcbi0tXG5uZXQvbWFjODAyMTEvc3RhX2luZm8uaD00NTc9c3RydWN0IGllZWU4MDIxMV9mcmFnbWVudF9lbnRyeSB7XG4tLVxubmV0L21hYzgwMjExL3N0YV9pbmZvLmgtNDYwLVx0dTE2IHNlcTtcbm5ldC9tYWM4MDIxMS9zdGFfaW5mby5oOjQ2MTpcdHVuc2lnbmVkIGludCBleHRyYV9sZW47XG5uZXQvbWFjODAyMTEvc3RhX2luZm8uaC00NjItXHR1MTYgbGFzdF9mcmFnO1xuLS1cbm5ldC9tYWM4MDIxMS91dGlsLmM9MTEzNz12b2lkIGllZWU4MDIxMV9zZW5kX2F1dGgoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsXG5uZXQvbWFjODAyMTEvdXRpbC5jLTExMzgtXHRcdFx0IHUxNiB0cmFuc2FjdGlvbiwgdTE2IGF1dGhfYWxnLCB1MTYgc3RhdHVzLFxubmV0L21hYzgwMjExL3V0aWwuYzoxMTM5Olx0XHRcdCBjb25zdCB1OCAqZXh0cmEsIHNpemVfdCBleHRyYV9sZW4sIGNvbnN0IHU4ICpkYSxcbm5ldC9tYWM4MDIxMS91dGlsLmMtMTE0MC1cdFx0XHQgY29uc3QgdTggKmJzc2lkLCBjb25zdCB1OCAqa2V5LCB1OCBrZXlfbGVuLCB1OCBrZXlfaWR4LFxuLS1cbm5ldC9tYWM4MDIxMS91dGlsLmMtMTE2NC1cdFx0ICAgIWNmZzgwMjExX2ZpbmRfZXh0X2VsZW0oV0xBTl9FSURfRVhUX0VIVF9NVUxUSV9MSU5LLFxubmV0L21hYzgwMjExL3V0aWwuYzoxMTY1Olx0XHRcdFx0XHQgICBleHRyYSwgZXh0cmFfbGVuKSk7XG5uZXQvbWFjODAyMTEvdXRpbC5jLTExNjYtXG4tLVxubmV0L21hYzgwMjExL3V0aWwuYy0xMTY4LVx0c2tiID0gZGV2X2FsbG9jX3NrYihsb2NhbC1cdTAwM2Vody5leHRyYV90eF9oZWFkcm9vbSAmIzQzOyBJRUVFODAyMTFfV0VQX0lWX0xFTiAmIzQzO1xubmV0L21hYzgwMjExL3V0aWwuYzoxMTY5Olx0XHRcdCAgICAyNCAmIzQzOyA2ICYjNDM7IGV4dHJhX2xlbiAmIzQzOyBJRUVFODAyMTFfV0VQX0lDVl9MRU4gJiM0Mztcbm5ldC9tYWM4MDIxMS91dGlsLmMtMTE3MC1cdFx0XHQgICAgYWRkX21sZSAqIHNpemVvZihtbGUpKTtcbi0tXG5uZXQvbWFjODAyMTEvdXRpbC5jLTExODUtXHRpZiAoZXh0cmEpXG5uZXQvbWFjODAyMTEvdXRpbC5jOjExODY6XHRcdHNrYl9wdXRfZGF0YShza2IsIGV4dHJhLCBleHRyYV9sZW4pO1xubmV0L21hYzgwMjExL3V0aWwuYy0xMTg3LVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI5IDA2OjAyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM3NzIKCQkJCQkJCW91dHB1dDogNDEKCQkJCQkJCXRob3VnaHRzOiAzNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0YWtlIG9uIHRoZSB0aG91Z2h0IHByb2Nlc3MsIGFzIHJlcXVlc3RlZDoKCioqRGl2aW5nIGludG8gdGhlIE1BQzgwMjExIFJYIFBhdGgqKgoKT2theSwgdGltZSB0byBnZXQgbXkgaGFuZHMgZGlydHkuIEkmIzM5O20gZ29pbmcgdG8gZGlnIGludG8gdGhlIGBuZXQvbWFjODAyMTEvcnguY2AgZmlsZS4gU3BlY2lmaWNhbGx5LCBJIG5lZWQgdG8gZ2V0IGEgaGFuZGxlIG9uIHdoYXQmIzM5O3MgaGFwcGVuaW5nIGFyb3VuZCBsaW5lcyAyNDkwIHRvIDI1NDAuIFRoYXQmIzM5O3MgYSBjcml0aWNhbCBzZWN0aW9uIG9mIHRoZSByZWNlaXZlIHBhdGgsIGFuZCBJJiMzOTttIGJldHRpbmcgaXQmIzM5O3Mgd2hlcmUgYSBwYXJ0aWN1bGFyIHBpZWNlIG9mIGZ1bmN0aW9uYWxpdHkgaXMgaGFuZGxlZCB0aGF0JiMzOTtzIGJlZW4gbmFnZ2luZyBhdCBtZS4gSSYjMzk7dmUgZ290IGEgaHVuY2gsIGJ1dCBJIG5lZWQgdG8gY29uZmlybSBpdCB3aXRoIHRoZSBjb2RlLiBMZXQmIzM5O3Mgc2VlIGlmIG15IHVuZGVyc3RhbmRpbmcgb2YgdGhlIHJlY2VpdmUgcHJvY2VzcyBpcyBhY2N1cmF0ZSwgb3IgaWYgSSBuZWVkIHRvIGFkanVzdCBteSBtZW50YWwgbW9kZWwgYmFzZWQgb24gd2hhdCB0aGUgc291cmNlIGNvZGUgcmV2ZWFscy4gVGltZSB0byBwdXQgb24gbXkgZGVidWdnaW5nIGhhdCBhbmQgZ2V0IHRvIHdvcmsuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjkgMDY6MDI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtuZXQvbWFjODAyMTEvcnguYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDI0OTAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNTAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7MjQ5MDpcdFx0XHQvKiBEcm9wIHRoaXMgYXMgYSBtaXhlZCBrZXkgb3IgZnJhZ21lbnQgY2FjaGUgYXR0YWNrLCBldmVuXG4yNDkxOlx0XHRcdCAqIGlmIGZvciBUS0lQIE1pY2hhZWwgTUlDIHNob3VsZCBwcm90ZWN0IHVzLCBhbmQgV0VQIGlzIGFcbjI0OTI6XHRcdFx0ICogbG9zdCBjYXVzZSBhbnl3YXkuXG4yNDkzOlx0XHRcdCAqL1xuMjQ5NDpcdFx0XHRyZXR1cm4gUlhfRFJPUF9VX0VYUEVDVF9ERUZSQUdfUFJPVDtcbjI0OTU6XHRcdH0gZWxzZSBpZiAoZW50cnktXHUwMDNlaXNfcHJvdGVjdGVkIFx1MDAyNlx1MDAyNiByeC1cdTAwM2VrZXkgXHUwMDI2XHUwMDI2XG4yNDk2Olx0XHRcdCAgIGVudHJ5LVx1MDAzZWtleV9jb2xvciAhPSByeC1cdTAwM2VrZXktXHUwMDNlY29sb3IgXHUwMDI2XHUwMDI2XG4yNDk3Olx0XHRcdCAgIChzdGF0dXMtXHUwMDNlZmxhZyBcdTAwMjYgUlhfRkxBR19ERUNSWVBURUQpKSB7XG4yNDk4Olx0XHRcdHJldHVybiBSWF9EUk9QX1VfQkFEX0tFWV9DT0xPUjtcbjI0OTk6XHRcdH1cbjI1MDA6XHRcbjI1MDE6XHRcdHNrYl9wdWxsKHJ4LVx1MDAzZXNrYiwgaWVlZTgwMjExX2hkcmxlbihmYykpO1xuMjUwMjpcdFx0X19za2JfcXVldWVfdGFpbChcdTAwMjZlbnRyeS1cdTAwM2Vza2JfbGlzdCwgcngtXHUwMDNlc2tiKTtcbjI1MDM6XHRcdGVudHJ5LVx1MDAzZWxhc3RfZnJhZyA9IGZyYWc7XG4yNTA0Olx0XHRlbnRyeS1cdTAwM2VleHRyYV9sZW4gJiM0Mzs9IHJ4LVx1MDAzZXNrYi1cdTAwM2VsZW47XG4yNTA1Olx0XHRpZiAoaWVlZTgwMjExX2hhc19tb3JlZnJhZ3MoZmMpKSB7XG4yNTA2Olx0XHRcdHJ4LVx1MDAzZXNrYiA9IE5VTEw7XG4yNTA3Olx0XHRcdHJldHVybiBSWF9RVUVVRUQ7XG4yNTA4Olx0XHR9XG4yNTA5Olx0XG4yNTEwOlx0XHRyeC1cdTAwM2Vza2IgPSBfX3NrYl9kZXF1ZXVlKFx1MDAyNmVudHJ5LVx1MDAzZXNrYl9saXN0KTtcbjI1MTE6XHRcdGlmIChza2JfdGFpbHJvb20ocngtXHUwMDNlc2tiKSBcdTAwM2MgZW50cnktXHUwMDNlZXh0cmFfbGVuKSB7XG4yNTEyOlx0XHRcdEk4MDJfREVCVUdfSU5DKHJ4LVx1MDAzZWxvY2FsLVx1MDAzZXJ4X2V4cGFuZF9za2JfaGVhZF9kZWZyYWcpO1xuMjUxMzpcdFx0XHRpZiAodW5saWtlbHkocHNrYl9leHBhbmRfaGVhZChyeC1cdTAwM2Vza2IsIDAsIGVudHJ5LVx1MDAzZWV4dHJhX2xlbixcbjI1MTQ6XHRcdFx0XHRcdFx0ICAgICAgR0ZQX0FUT01JQykpKSB7XG4yNTE1Olx0XHRcdFx0STgwMl9ERUJVR19JTkMocngtXHUwMDNlbG9jYWwtXHUwMDNlcnhfaGFuZGxlcnNfZHJvcF9kZWZyYWcpO1xuMjUxNjpcdFx0XHRcdF9fc2tiX3F1ZXVlX3B1cmdlKFx1MDAyNmVudHJ5LVx1MDAzZXNrYl9saXN0KTtcbjI1MTc6XHRcdFx0XHRyZXR1cm4gUlhfRFJPUF9VX09PTTtcbjI1MTg6XHRcdFx0fVxuMjUxOTpcdFx0fVxuMjUyMDpcdFx0d2hpbGUgKChza2IgPSBfX3NrYl9kZXF1ZXVlKFx1MDAyNmVudHJ5LVx1MDAzZXNrYl9saXN0KSkpIHtcbjI1MjE6XHRcdFx0c2tiX3B1dF9kYXRhKHJ4LVx1MDAzZXNrYiwgc2tiLVx1MDAzZWRhdGEsIHNrYi1cdTAwM2VsZW4pO1xuMjUyMjpcdFx0XHRkZXZfa2ZyZWVfc2tiKHNrYik7XG4yNTIzOlx0XHR9XG4yNTI0Olx0XG4yNTI1Olx0IG91dDpcbjI1MjY6XHRcdGllZWU4MDIxMV9sZWRfcngocngtXHUwMDNlbG9jYWwpO1xuMjUyNzpcdFx0aWYgKHJ4LVx1MDAzZXN0YSlcbjI1Mjg6XHRcdFx0cngtXHUwMDNlbGlua19zdGEtXHUwMDNlcnhfc3RhdHMucGFja2V0cyYjNDM7JiM0Mzs7XG4yNTI5Olx0XHRyZXR1cm4gUlhfQ09OVElOVUU7XG4yNTMwOlx0fVxuMjUzMTpcdFxuMjUzMjpcdHN0YXRpYyBpbnQgaWVlZTgwMjExXzgwMl8xeF9wb3J0X2NvbnRyb2woc3RydWN0IGllZWU4MDIxMV9yeF9kYXRhICpyeClcbjI1MzM6XHR7XG4yNTM0Olx0XHRpZiAodW5saWtlbHkoIXJ4LVx1MDAzZXN0YSB8fCAhdGVzdF9zdGFfZmxhZyhyeC1cdTAwM2VzdGEsIFdMQU5fU1RBX0FVVEhPUklaRUQpKSlcbjI1MzU6XHRcdFx0cmV0dXJuIC1FQUNDRVM7XG4yNTM2Olx0XG4yNTM3Olx0XHRyZXR1cm4gMDtcbjI1Mzg6XHR9XG4yNTM5Olx0XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjkgMDY6MDI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDkxNwoJCQkJCQkJb3V0cHV0OiAzNQoJCQkJCQkJdGhvdWdodHM6IDM1MwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBQb3RlbnRpYWwgSW50ZWdlciBPdmVyZmxvdyBWdWxuZXJhYmlsaXR5KioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIGNvZGUsIHNwZWNpZmljYWxseSBgZW50cnktJmd0O2V4dHJhX2xlbiAmIzQzOz0gcngtJmd0O3NrYi0mZ3Q7bGVuO2AgYW5kIHRoZSBzdWJzZXF1ZW50IGBza2JfcHV0X2RhdGEocngtJmd0O3NrYiwgc2tiLSZndDtkYXRhLCBza2ItJmd0O2xlbik7YC4gVGhlIGBleHRyYV9sZW5gIGZpZWxkIGlzIGRlZmluZWQgYXMgYSBgdTE2YCwgYW5kIHRoZSBhbGFybSBiZWxscyBhcmUgZ29pbmcgb2ZmIGltbWVkaWF0ZWx5LiBJZiB0aGF0IGNvdW50ZXIgZ2V0cyB0b28gYmlnLCBiZXlvbmQgNjU1MzUsIHRoZXJlJiMzOTtzIGdvaW5nIHRvIGJlIGFuIGludGVnZXIgb3ZlcmZsb3cuIFdoZW4gdGhpcyBoYXBwZW5zIGR1cmluZyB0aGUgZnJhZ21lbnQgcmVhc3NlbWJseSwgYHBza2JfZXhwYW5kX2hlYWRgIHByb2JhYmx5IGFsbG9jYXRlcyBhIHNtYWxsIGJ1ZmZlciwgdGhlbiBgc2tiX3B1dF9kYXRhYCBlbmRzIHVwIHdyaXRpbmcgcGFzdCB0aGUgYWxsb2NhdGVkIGJ1ZmZlci4gVGhhdCYjMzk7cyBhIGNsYXNzaWMgYnVmZmVyIG92ZXJmbG93IGFuZCBoZWFwIGNvcnJ1cHRpb24gc2l0dWF0aW9uLCBhbmQgd2UgbmVlZCB0byBmaXggaXQuCgpDaGFuZ2luZyBgdTE2IGV4dHJhX2xlbmAgdG8gYHVuc2lnbmVkIGludCBleHRyYV9sZW5gIHNob3VsZCBwcmV2ZW50IHRoZSBvdmVyZmxvdywgYW5kIHRoYXQmIzM5O3MgYW4gZWFzeSBmaXguIEJ1dCBiZWZvcmUgSSBzdGFydCBkcmFmdGluZyBhIHBhdGNoLCBsZXQmIzM5O3Mgc2VlIGlmIHRoaXMgaXMgZXZlbiByZWFjaGFibGUgYW5kIGlmIGl0JiMzOTtzIHdvcnRoIHRoZSBlZmZvcnQgb2YgdGVzdGluZy4gVGhpcyBsb29rcyBsaWtlIHRoZSBgaWVlZTgwMjExX3J4X2hfZGVmcmFnbWVudGAgZnVuY3Rpb24sIHdoaWNoIGlzIHRoZSBtYWM4MDIxMSBmcmFnbWVudCByZWFzc2VtYmx5IGluIHRoZSByZWNlaXZlIHBhdGguIEV4Y2VsbGVudCwgdGhhdCYjMzk7cyBjb3JlIHdpcmVsZXNzIHN1YnN5c3RlbSBsb2dpYy4KCk5vdywgaG93IGVhc2lseSBjYW4gd2UgdHJpZ2dlciB0aGlzPyBUaGlua2luZyBhYm91dCBpdCwgbWFjODAyMTEgaXMgZW11bGF0ZWQgdmlhIGBtYWM4MDIxMV9od3NpbWAsIHdoaWNoIHdlIGNhbiB1c2UgaW4gdmlydHVhbCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VIG9yIEdDRS4gQW5kIGlmIEkgcmVjYWxsIGNvcnJlY3RseSwgc3l6a2FsbGVyIHRlc3RzIG1hYzgwMjExIGV4dGVuc2l2ZWx5IHVzaW5nIGh3c2ltLCBvciB1c2luZyBubDgwMjExL3JhZGlvdGFwL2luamVjdGVkIHBhY2tldHMuIFNvLCB0aGlzIGlzIGRlZmluaXRlbHkgcmVhY2hhYmxlIGFuZCBmdXp6ZWFibGUuIFdlIGFyZSBnb29kIHRvIGdvIQoKVG8gbWFrZSBzdXJlIHRoaXMgY2FuIGJlIHJlYWNoZWQgYW5kIHRlc3RlZCwgSSBuZWVkIHRvIGtub3cgdGhlIEtjb25maWcgb3B0aW9ucyByZXF1aXJlZCBmb3IgYm90aCBtYWM4MDIxMSBhbmQgYG1hYzgwMjExX2h3c2ltYC4gVGltZSB0byBzZWFyY2ggdGhlIEtjb25maWcgZmlsZXMgZm9yIGBNQUM4MDIxMWAuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjkgMDY6MDI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIE1BQzgwMjExJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L21hYzgwMjExJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9tYWM4MDIxMS9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyOmNvbmZpZyBNQUM4MDIxMVxubmV0L21hYzgwMjExL0tjb25maWctMy1cdHRyaXN0YXRlIFwmIzM0O0dlbmVyaWMgSUVFRSA4MDIuMTEgTmV0d29ya2luZyBTdGFjayAobWFjODAyMTEpXCYjMzQ7XG4tLVxubmV0L21hYzgwMjExL0tjb25maWc9MTk9aWYgTUFDODAyMTEgIT0gblxubmV0L21hYzgwMjExL0tjb25maWctMjAtXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyMTpjb25maWcgTUFDODAyMTFfSEFTX1JDXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yMi1cdGJvb2xcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTIzLVxubmV0L21hYzgwMjExL0tjb25maWc6MjQ6Y29uZmlnIE1BQzgwMjExX1JDX01JTlNUUkVMXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yNS1cdGJvb2wgXCYjMzQ7TWluc3RyZWxcJiMzNDsgaWYgRVhQRVJUXG4tLVxubmV0L21hYzgwMjExL0tjb25maWc9MzE9Y2hvaWNlXG4tLVxubmV0L21hYzgwMjExL0tjb25maWctNDAtXG5uZXQvbWFjODAyMTEvS2NvbmZpZzo0MTpjb25maWcgTUFDODAyMTFfUkNfREVGQVVMVF9NSU5TVFJFTFxubmV0L21hYzgwMjExL0tjb25maWctNDItXHRib29sIFwmIzM0O01pbnN0cmVsXCYjMzQ7XG4tLVxubmV0L21hYzgwMjExL0tjb25maWc9NDg9ZW5kY2hvaWNlXG5uZXQvbWFjODAyMTEvS2NvbmZpZy00OS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjUwOmNvbmZpZyBNQUM4MDIxMV9SQ19ERUZBVUxUXG5uZXQvbWFjODAyMTEvS2NvbmZpZy01MS1cdHN0cmluZ1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnPTU3PWNvbW1lbnQgXCYjMzQ7U29tZSB3aXJlbGVzcyBkcml2ZXJzIHJlcXVpcmUgYSByYXRlIGNvbnRyb2wgYWxnb3JpdGhtXCYjMzQ7XG4tLVxubmV0L21hYzgwMjExL0tjb25maWctNTktXG5uZXQvbWFjODAyMTEvS2NvbmZpZzo2MDpjb25maWcgTUFDODAyMTFfS1VOSVRfVEVTVFxubmV0L21hYzgwMjExL0tjb25maWctNjEtXHR0cmlzdGF0ZSBcJiMzNDtLVW5pdCB0ZXN0cyBmb3IgbWFjODAyMTFcJiMzNDsgaWYgIUtVTklUX0FMTF9URVNUU1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnLTY5LVxubmV0L21hYzgwMjExL0tjb25maWc6NzA6Y29uZmlnIE1BQzgwMjExX01FU0hcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTcxLVx0Ym9vbCBcJiMzNDtFbmFibGUgbWFjODAyMTEgbWVzaCBuZXR3b3JraW5nIHN1cHBvcnRcJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy03OC1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjc5OmNvbmZpZyBNQUM4MDIxMV9MRURTXG5uZXQvbWFjODAyMTEvS2NvbmZpZy04MC1cdGJvb2wgXCYjMzQ7RW5hYmxlIExFRCB0cmlnZ2Vyc1wmIzM0O1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnLTg3LVxubmV0L21hYzgwMjExL0tjb25maWc6ODg6Y29uZmlnIE1BQzgwMjExX0RFQlVHRlNcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTg5LVx0Ym9vbCBcJiMzNDtFeHBvcnQgbWFjODAyMTEgaW50ZXJuYWxzIGluIERlYnVnRlNcJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy05Ni1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjk3OmNvbmZpZyBNQUM4MDIxMV9NRVNTQUdFX1RSQUNJTkdcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTk4LVx0Ym9vbCBcJiMzNDtUcmFjZSBhbGwgbWFjODAyMTEgZGVidWcgbWVzc2FnZXNcJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xMDktXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoxMTA6bWVudWNvbmZpZyBNQUM4MDIxMV9ERUJVR19NRU5VXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xMTEtXHRib29sIFwmIzM0O1NlbGVjdCBtYWM4MDIxMSBkZWJ1Z2dpbmcgZmVhdHVyZXNcJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xMTUtXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoxMTY6Y29uZmlnIE1BQzgwMjExX05PSU5MSU5FXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xMTctXHRib29sIFwmIzM0O0RvIG5vdCBpbmxpbmUgVFgvUlggaGFuZGxlcnNcJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xMzEtXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoxMzI6Y29uZmlnIE1BQzgwMjExX1ZFUkJPU0VfREVCVUdcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTEzMy1cdGJvb2wgXCYjMzQ7VmVyYm9zZSBkZWJ1Z2dpbmcgb3V0cHV0XCYjMzQ7XG4tLVxubmV0L21hYzgwMjExL0tjb25maWctMTQyLVxubmV0L21hYzgwMjExL0tjb25maWc6MTQzOmNvbmZpZyBNQUM4MDIxMV9NTE1FX0RFQlVHXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xNDQtXHRib29sIFwmIzM0O1ZlcmJvc2UgbWFuYWdlZCBNTE1FIG91dHB1dFwmIzM0O1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE1My1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjE1NDpjb25maWcgTUFDODAyMTFfU1RBX0RFQlVHXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xNTUtXHRib29sIFwmIzM0O1ZlcmJvc2Ugc3RhdGlvbiBkZWJ1Z2dpbmdcJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xNjItXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoxNjM6Y29uZmlnIE1BQzgwMjExX0hUX0RFQlVHXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xNjQtXHRib29sIFwmIzM0O1ZlcmJvc2UgSFQgZGVidWdnaW5nXCYjMzQ7XG4tLVxubmV0L21hYzgwMjExL0tjb25maWctMTc0LVxubmV0L21hYzgwMjExL0tjb25maWc6MTc1OmNvbmZpZyBNQUM4MDIxMV9PQ0JfREVCVUdcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE3Ni1cdGJvb2wgXCYjMzQ7VmVyYm9zZSBPQ0IgZGVidWdnaW5nXCYjMzQ7XG4tLVxubmV0L21hYzgwMjExL0tjb25maWctMTg1LVxubmV0L21hYzgwMjExL0tjb25maWc6MTg2OmNvbmZpZyBNQUM4MDIxMV9JQlNTX0RFQlVHXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xODctXHRib29sIFwmIzM0O1ZlcmJvc2UgSUJTUyBkZWJ1Z2dpbmdcJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xOTYtXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoxOTc6Y29uZmlnIE1BQzgwMjExX1BTX0RFQlVHXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xOTgtXHRib29sIFwmIzM0O1ZlcmJvc2UgcG93ZXJzYXZlIG1vZGUgZGVidWdnaW5nXCYjMzQ7XG4tLVxubmV0L21hYzgwMjExL0tjb25maWctMjA4LVxubmV0L21hYzgwMjExL0tjb25maWc6MjA5OmNvbmZpZyBNQUM4MDIxMV9NUExfREVCVUdcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTIxMC1cdGJvb2wgXCYjMzQ7VmVyYm9zZSBtZXNoIHBlZXIgbGluayBkZWJ1Z2dpbmdcJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yMjEtXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyMjI6Y29uZmlnIE1BQzgwMjExX01QQVRIX0RFQlVHXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yMjMtXHRib29sIFwmIzM0O1ZlcmJvc2UgbWVzaCBwYXRoIGRlYnVnZ2luZ1wmIzM0O1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnLTIzNC1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjIzNTpjb25maWcgTUFDODAyMTFfTUhXTVBfREVCVUdcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTIzNi1cdGJvb2wgXCYjMzQ7VmVyYm9zZSBtZXNoIEhXTVAgcm91dGluZyBkZWJ1Z2dpbmdcJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yNDctXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyNDg6Y29uZmlnIE1BQzgwMjExX01FU0hfU1lOQ19ERUJVR1xubmV0L21hYzgwMjExL0tjb25maWctMjQ5LVx0Ym9vbCBcJiMzNDtWZXJib3NlIG1lc2ggc3luY2hyb25pemF0aW9uIGRlYnVnZ2luZ1wmIzM0O1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnLTI1OC1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjI1OTpjb25maWcgTUFDODAyMTFfTUVTSF9DU0FfREVCVUdcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTI2MC1cdGJvb2wgXCYjMzQ7VmVyYm9zZSBtZXNoIGNoYW5uZWwgc3dpdGNoIGRlYnVnZ2luZ1wmIzM0O1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnLTI2OS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjI3MDpjb25maWcgTUFDODAyMTFfTUVTSF9QU19ERUJVR1xubmV0L21hYzgwMjExL0tjb25maWctMjcxLVx0Ym9vbCBcJiMzNDtWZXJib3NlIG1lc2ggcG93ZXJzYXZlIGRlYnVnZ2luZ1wmIzM0O1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnLTI4MC1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjI4MTpjb25maWcgTUFDODAyMTFfVERMU19ERUJVR1xubmV0L21hYzgwMjExL0tjb25maWctMjgyLVx0Ym9vbCBcJiMzNDtWZXJib3NlIFRETFMgZGVidWdnaW5nXCYjMzQ7XG4tLVxubmV0L21hYzgwMjExL0tjb25maWctMjkyLVxubmV0L21hYzgwMjExL0tjb25maWc6MjkzOmNvbmZpZyBNQUM4MDIxMV9ERUJVR19DT1VOVEVSU1xubmV0L21hYzgwMjExL0tjb25maWctMjk0LVx0Ym9vbCBcJiMzNDtFeHRyYSBzdGF0aXN0aWNzIGZvciBUWC9SWCBkZWJ1Z2dpbmdcJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0zMDctXG5uZXQvbWFjODAyMTEvS2NvbmZpZzozMDg6Y29uZmlnIE1BQzgwMjExX1NUQV9IQVNIX01BWF9TSVpFXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0zMDktXHRpbnQgXCYjMzQ7U3RhdGlvbiBoYXNoIHRhYmxlIG1heGltdW0gc2l6ZVwmIzM0OyBpZiBNQUM4MDIxMV9ERUJVR19NRU5VXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjkgMDY6MDI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzkzMAoJCQkJCQkJb3V0cHV0OiAzNgoJCQkJCQkJdGhvdWdodHM6IDI1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHN1bW1hcnksIGFzIHRob3VnaCBJIHdlcmUgdGhpbmtpbmcgdGhyb3VnaCB0aGUgcHJvY2VzczoKCioqRGl2aW5nIGludG8gdGhlIE1hYzgwMjExIENvbXBpbGF0aW9uKioKCk9rYXksIHNvIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyBgcngub2AgaXMgYmVpbmcgYnVpbHQuIFRoZSBiZXN0IHBsYWNlIHRvIHN0YXJ0IGlzIGFsd2F5cyB0aGUgYE1ha2VmaWxlYCBpbiB0aGUgYG5ldC9tYWM4MDIxMWAgZGlyZWN0b3J5LiBJdCYjMzk7cyB0aGUgY2VudHJhbCBodWIgZm9yIHRoaXMgbW9kdWxlJiMzOTtzIGNvbXBpbGF0aW9uLiBJJiMzOTtsbCBuZWVkIHRvIGdvIGluIHRoZXJlIGFuZCBmaWd1cmUgb3V0IHdoYXQgcnVsZXMgb3IgdmFyaWFibGVzIGFyZSBpbnZvbHZlZCBpbiBnZW5lcmF0aW5nIHRoYXQgc3BlY2lmaWMgb2JqZWN0IGZpbGUuIENoYW5jZXMgYXJlLCB0aGVyZSYjMzk7cyBhIHNwZWNpZmljIHBhdHRlcm4gb3IgYSBkZXBlbmRlbmN5IGNoYWluIGRlZmluZWQgdGhhdCByZXZlYWxzIHRoZSBidWlsZCBwcm9jZXNzLiBMZXQmIzM5O3Mgc2VlIHdoYXQgdGhlIG1ha2VmaWxlIHJldmVhbHMgYWJvdXQgaXRzIGNvbXBpbGF0aW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yOSAwNjowMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O25ldC9tYWM4MDIxMS9NYWtlZmlsZSYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNTAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAgMTpcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcbiAgIDI6XHRvYmotJChDT05GSUdfTUFDODAyMTEpICYjNDM7PSBtYWM4MDIxMS5vXG4gICAzOlx0XG4gICA0Olx0IyBtYWM4MDIxMSBvYmplY3RzXG4gICA1Olx0bWFjODAyMTEteSA6PSBcXFxuICAgNjpcdFx0bWFpbi5vIHN0YXR1cy5vIFxcXG4gICA3Olx0XHRkcml2ZXItb3BzLm8gXFxcbiAgIDg6XHRcdHN0YV9pbmZvLm8gXFxcbiAgIDk6XHRcdHdlcC5vIFxcXG4gIDEwOlx0XHRhZWFkX2FwaS5vIFxcXG4gIDExOlx0XHR3cGEubyBcXFxuICAxMjpcdFx0c2Nhbi5vIG9mZmNoYW5uZWwubyBcXFxuICAxMzpcdFx0aHQubyBhZ2ctdHgubyBhZ2ctcngubyBcXFxuICAxNDpcdFx0dmh0Lm8gXFxcbiAgMTU6XHRcdGhlLm8gXFxcbiAgMTY6XHRcdHMxZy5vIFxcXG4gIDE3Olx0XHRpYnNzLm8gXFxcbiAgMTg6XHRcdGlmYWNlLm8gXFxcbiAgMTk6XHRcdGxpbmsubyBcXFxuICAyMDpcdFx0cmF0ZS5vIFxcXG4gIDIxOlx0XHR0a2lwLm8gXFxcbiAgMjI6XHRcdGFlc19jbWFjLm8gXFxcbiAgMjM6XHRcdGFlc19nbWFjLm8gXFxcbiAgMjQ6XHRcdGZpbHNfYWVhZC5vIFxcXG4gIDI1Olx0XHRjZmcubyBcXFxuICAyNjpcdFx0ZXRodG9vbC5vIFxcXG4gIDI3Olx0XHRyeC5vIFxcXG4gIDI4Olx0XHRzcGVjdG1nbXQubyBcXFxuICAyOTpcdFx0dHgubyBcXFxuICAzMDpcdFx0a2V5Lm8gXFxcbiAgMzE6XHRcdHV0aWwubyBwYXJzZS5vIFxcXG4gIDMyOlx0XHR3bWUubyBcXFxuICAzMzpcdFx0Y2hhbi5vIGFwLm8gXFxcbiAgMzQ6XHRcdHRyYWNlLm8gbWxtZS5vIFxcXG4gIDM1Olx0XHR0ZGxzLm8gXFxcbiAgMzY6XHRcdG9jYi5vIFxcXG4gIDM3Olx0XHRhaXJ0aW1lLm8gXFxcbiAgMzg6XHRcdGVodC5vIHVoci5vIG5hbi5vXG4gIDM5Olx0XG4gIDQwOlx0bWFjODAyMTEtJChDT05GSUdfTUFDODAyMTFfTEVEUykgJiM0Mzs9IGxlZC5vXG4gIDQxOlx0bWFjODAyMTEtJChDT05GSUdfTUFDODAyMTFfREVCVUdGUykgJiM0Mzs9IFxcXG4gIDQyOlx0XHRkZWJ1Z2ZzLm8gXFxcbiAgNDM6XHRcdGRlYnVnZnNfc3RhLm8gXFxcbiAgNDQ6XHRcdGRlYnVnZnNfbmV0ZGV2Lm8gXFxcbiAgNDU6XHRcdGRlYnVnZnNfa2V5Lm9cbiAgNDY6XHRcbiAgNDc6XHRtYWM4MDIxMS0kKENPTkZJR19NQUM4MDIxMV9NRVNIKSAmIzQzOz0gXFxcbiAgNDg6XHRcdG1lc2gubyBcXFxuICA0OTpcdFx0bWVzaF9wYXRodGJsLm8gXFxcbiAgNTA6XHRcdG1lc2hfcGxpbmsubyBcXFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yOSAwNjowMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4Nzk3CgkJCQkJCQlvdXRwdXQ6IDM3CgkJCQkJCQl0aG91Z2h0czogMTgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipBbmFseXppbmcgS2NvbmZpZyBEZXBlbmRlbmNpZXMgZm9yIENPTkZJR19NQUM4MDIxMSoqCgpPa2F5LCBzbyBJIG5lZWQgdG8gZGlnIGludG8gdGhlIEtjb25maWcgZGVwZW5kZW5jaWVzIGZvciBgQ09ORklHX01BQzgwMjExYC4gVGltZSB0byBiZSBzeXN0ZW1hdGljIGFib3V0IHRoaXMuIEZpcnN0LCBJJiMzOTttIGdvaW5nIHRvIGZpcmUgdXAgdGhlIHJlbGV2YW50IEtjb25maWcgZmlsZXMuIEkga25vdyB0aGUgZ2VuZXJhbCBhcmVhLCBzbyBJJiMzOTtsbCBzdGFydCB3aXRoIHRoZSBzdGFuZGFyZCB3aXJlbGVzcyBhbmQgbmV0d29ya2luZyBkaXJlY3RvcmllcywgYnV0IEkgbWlnaHQgbmVlZCB0byBicmFuY2ggb3V0IGlmIGl0IGdldHMgdHJpY2t5LiBJJiMzOTtsbCBwcm9iYWJseSBiZSB1c2luZyBgZ3JlcGAgb3IgYGZpbmRgIHdpdGggc29tZSB0YXJnZXRlZCBwYXR0ZXJucyB0byBsb2NhdGUgdGhlIGRlZmluaW5nIHN5bWJvbC4KCkkmIzM5O20gdGhpbmtpbmcgSSYjMzk7bGwgbG9vayBmb3IgZGlyZWN0IGRlcGVuZGVuY2llcyBmaXJzdDogYGRlcGVuZHMgb25gLCBgc2VsZWN0YCwgb3IgZXZlbiBgZGVmYXVsdGAgc3RhdGVtZW50cyB0aGF0IGRpcmVjdGx5IHJlZmVyZW5jZSBgQ09ORklHX01BQzgwMjExYC4gVGhhdCYjMzk7cyB0aGUgbG93LWhhbmdpbmcgZnJ1aXQuIE9uY2UgSSYjMzk7dmUgZ290IHRoYXQgaW5pdGlhbCBzZXQsIHRoZW4gSSBuZWVkIHRvIHN0YXJ0IHRyYWNpbmcgKnRoZWlyKiBkZXBlbmRlbmNpZXMuIEkmIzM5O2xsIG5lZWQgdG8gZm9sbG93IHRoZSBjaGFpbiB1cHN0cmVhbSwgZW5zdXJpbmcgSSB1bmRlcnN0YW5kIHRoZSByYXRpb25hbGUgYmVoaW5kIGVhY2ggY29uc3RyYWludC4gVGhpcyBpcyB3aGVyZSB0aGluZ3MgZ2V0IGludGVyZXN0aW5nLCBiZWNhdXNlIG9mdGVuIHRoZXJlIGFyZSBjb21wbGV4IGNvbmRpdGlvbmFsIHJlbGF0aW9uc2hpcHMsIGFuZCBpdCYjMzk7cyBlYXN5IHRvIGdldCBsb3N0IGluIGEgdGFuZ2xlIG9mIGAjaWZkZWZgIHN0YXRlbWVudHMgYW5kIHN1YnRsZSB2ZXJzaW9uIGNoZWNrcy4KCkkmIzM5O2xsIGJlIG1pbmRmdWwgb2YgdGhlIGRpZmZlcmVudCB0eXBlcyBvZiBkZXBlbmRlbmNpZXMsIGVzcGVjaWFsbHkgdGhlIHN1YnRsZSBkaWZmZXJlbmNlcyBiZXR3ZWVuIGBkZXBlbmRzIG9uYCwgYHNlbGVjdGAsIGFuZCBldmVuIGByYW5nZWAgY29uc3RyYWludHMuIFRoZXkgYWxsIGhhdmUgc2xpZ2h0bHkgZGlmZmVyZW50IGltcGxpY2F0aW9ucyBmb3IgdGhlIG92ZXJhbGwgY29uZmlndXJhdGlvbiBzcGFjZS4gQXJlIHRoZXJlIGFueSBkZWZhdWx0IHZhbHVlcyB0aGF0IG1pZ2h0IGltcGFjdCBob3cgdGhpcyBtb2R1bGUgaXMgZW5hYmxlZD8gSXQmIzM5O3MgZWFzeSB0byBvdmVybG9vayBkZWZhdWx0cy4gVGhlbiwgSSBuZWVkIHRvIGNvbnNpZGVyIHBvdGVudGlhbCBjb25mbGljdHMuIEFyZSB0aGVyZSBhbnkgb3RoZXIgY29uZmlndXJhdGlvbnMgdGhhdCB3b3VsZCBwcmV2ZW50IGBDT05GSUdfTUFDODAyMTFgIGZyb20gYmVpbmcgc2VsZWN0ZWQgb3IgZnVuY3Rpb25hbD8gSSYjMzk7bGwgcHJvYmFibHkgbmVlZCB0byBidWlsZCBhIG1lbnRhbCBtYXAgb2YgdGhlIGNvbmZpZ3VyYXRpb24gc3BhY2UgYXMgSSYjMzk7bSBkaWdnaW5nIHRocm91Z2ggdGhlc2UgZGVwZW5kZW5jaWVzLgoKQW5kIG9mIGNvdXJzZSwgSSYjMzk7bGwgbmVlZCB0byBjaGVjayBmb3IgYW55IHBsYXRmb3JtLXNwZWNpZmljIGRlcGVuZGVuY2llcy4gQXJlIHdlIGRlYWxpbmcgd2l0aCBhbnkgYXJjaGl0ZWN0dXJlcyBvciBib2FyZCBjb25maWd1cmF0aW9ucyB0aGF0IGhhdmUgc3BlY2lhbCByZXF1aXJlbWVudHMgb3IgbGltaXRhdGlvbnM/IEkga25vdyBmcm9tIGV4cGVyaWVuY2UgdGhhdCB0aGVzZSBwbGF0Zm9ybS1zcGVjaWZpYyBhZGRpdGlvbnMgY2FuIHNvbWV0aW1lcyBiZSBkZWVwbHkgbmVzdGVkLCBzbyBJIG1heSBuZWVkIHRvIGxvb2sgYXQgYXJjaGl0ZWN0dXJlLXNwZWNpZmljIEtjb25maWcgZnJhZ21lbnRzIGFzIHdlbGwuIEZpbmFsbHksIEkmIzM5O2xsIGtlZXAgYW4gZXllIG91dCBmb3IgYW55IHVudXN1YWwgb3IgdW5kb2N1bWVudGVkIGRlcGVuZGVuY2llcy4gU29tZXRpbWVzIHRoZXJlJiMzOTtzIGEgZ29vZCByZWFzb24gZm9yIGEgc2VlbWluZ2x5IGFyYml0cmFyeSByZXF1aXJlbWVudCwgYW5kIHNvbWV0aW1lcyBpdCYjMzk7cyBqdXN0IGEgbGVmdG92ZXIgZnJvbSBhIHByZXZpb3VzIGRldmVsb3BtZW50IGVmZm9ydC4gR2V0dGluZyB0aGlzIHJpZ2h0IGlzIGNyaXRpY2FsLiBUaGlzIGlzIGEgc29saWQgcGllY2Ugb2YgdGhlIHB1enpsZSB0aGF0IGVuc3VyZXMgZXZlcnl0aGluZyBmdW5jdGlvbnMgY29ycmVjdGx5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yOSAwNjowMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O25ldC9tYWM4MDIxMS9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAyNQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgICAxOlx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG4gICAyOlx0Y29uZmlnIE1BQzgwMjExXG4gICAzOlx0XHR0cmlzdGF0ZSBcJiMzNDtHZW5lcmljIElFRUUgODAyLjExIE5ldHdvcmtpbmcgU3RhY2sgKG1hYzgwMjExKVwmIzM0O1xuICAgNDpcdFx0ZGVwZW5kcyBvbiBDRkc4MDIxMVxuICAgNTpcdFx0c2VsZWN0IENSWVBUT1xuICAgNjpcdFx0c2VsZWN0IENSWVBUT19MSUJfQUVTX0NCQ19NQUNTXG4gICA3Olx0XHRzZWxlY3QgQ1JZUFRPX0xJQl9BUkM0XG4gICA4Olx0XHRzZWxlY3QgQ1JZUFRPX0FFU1xuICAgOTpcdFx0c2VsZWN0IENSWVBUT19DQ01cbiAgMTA6XHRcdHNlbGVjdCBDUllQVE9fR0NNXG4gIDExOlx0XHRzZWxlY3QgQ1JDMzJcbiAgMTI6XHRcdGhlbHBcbiAgMTM6XHRcdCAgVGhpcyBvcHRpb24gZW5hYmxlcyB0aGUgaGFyZHdhcmUgaW5kZXBlbmRlbnQgSUVFRSA4MDIuMTFcbiAgMTQ6XHRcdCAgbmV0d29ya2luZyBzdGFjay5cbiAgMTU6XHRcbiAgMTY6XHRjb21tZW50IFwmIzM0O0NGRzgwMjExIG5lZWRzIHRvIGJlIGVuYWJsZWQgZm9yIE1BQzgwMjExXCYjMzQ7XG4gIDE3Olx0XHRkZXBlbmRzIG9uIENGRzgwMjExPW5cbiAgMTg6XHRcbiAgMTk6XHRpZiBNQUM4MDIxMSAhPSBuXG4gIDIwOlx0XG4gIDIxOlx0Y29uZmlnIE1BQzgwMjExX0hBU19SQ1xuICAyMjpcdFx0Ym9vbFxuICAyMzpcdFxuICAyNDpcdGNvbmZpZyBNQUM4MDIxMV9SQ19NSU5TVFJFTFxuICAyNTpcdFx0Ym9vbCBcJiMzNDtNaW5zdHJlbFwmIzM0OyBpZiBFWFBFUlRcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjkgMDY6MDI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogOTcwNwoJCQkJCQkJb3V0cHV0OiAzMQoJCQkJCQkJdGhvdWdodHM6IDIzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQmIzM5O3MgaW50ZXJuYWwgbW9ub2xvZ3VlOgoKKipDaGVja2luZyBgQ0ZHODAyMTFgIERlcGVuZGVuY2llcyBpbiBgbmV0L3dpcmVsZXNzL0tjb25maWdgKioKCkFscmlnaHQsIGxldCYjMzk7cyBkaXZlIGludG8gdGhlIGBuZXQvd2lyZWxlc3MvS2NvbmZpZ2AgZmlsZS4gSSBuZWVkIHRvIHJlZnJlc2ggbXkgbWVtb3J5IG9uIGhvdyBgQ0ZHODAyMTFgIGlzIHdpcmVkIHVwLCBzcGVjaWZpY2FsbHkgbG9va2luZyBhdCB0aGUgZGVwZW5kZW5jeSBzdHJ1Y3R1cmUuIEkmIzM5O20gYXNzdW1pbmcgdGhlcmUmIzM5O3MgYmVlbiBhIGNoYW5nZSBJIG5lZWQgdG8gdW5kZXJzdGFuZCwgb3IgbWF5YmUgSSYjMzk7bSB0cm91Ymxlc2hvb3RpbmcgYSBjb25maWd1cmF0aW9uIGlzc3VlLiBUaGUgYEtjb25maWdgIGZpbGVzIGFyZSB1c3VhbGx5IHByZXR0eSBzdHJhaWdodGZvcndhcmQsIGJ1dCB5b3Uga25vdyBob3cgaXQgZ29lczsgaXQmIzM5O3MgZWFzeSB0byBtaXNzIHN1YnRsZSBpbnRlcmFjdGlvbnMuIEkmIzM5O2xsIG5lZWQgdG8gc2VlIHdoaWNoIG90aGVyIG9wdGlvbnMgZGVwZW5kIG9uLCBvciBhcmUgZGVwZW5kZWQgb24gYnksIGBDRkc4MDIxMWAuIEFyZSB0aGVyZSBhbnkgbmV3IGRlcGVuZGVuY2llcyBpbnRyb2R1Y2VkPyBBcmUgdGhlcmUgYW55IHRoYXQgaGF2ZSBiZWVuIHJlbW92ZWQgb3IgY2hhbmdlZD8gSSYjMzk7bGwgcHJvYmFibHkgYmUgY2hlY2tpbmcgdGhpbmdzIGxpa2UgdGhlIGhhcmR3YXJlIGxheWVyLCByZWd1bGF0b3J5IGRhdGFiYXNlIGludGVyYWN0aW9ucywgYW5kIGFueSB3aXJlbGVzcyBleHRlbnNpb25zIHRoYXQgaG9vayBpbnRvIGl0LiBJJiMzOTtsbCBtZW50YWxseSBtYXAgb3V0IHRoZSBkaWZmZXJlbnQgcGF0aHMgdGhlIGNvbmZpZ3VyYXRpb24gY2FuIHRha2UgYW5kIHdoZXJlIGBDRkc4MDIxMWAgc2VydmVzIGFzIGEgbGluY2hwaW4gb3IgYSBidWlsZGluZyBibG9jay4gR290dGEgZ2V0IGEgc29saWQgZ3Jhc3Agb2YgdGhpcyBiZWNhdXNlIGl0JiMzOTtzIGEgZnVuZGFtZW50YWwgcGFydCBvZiB0aGUgd2lyZWxlc3Mgc3RhY2ssIGFuZCBhIG1pc2NvbmZpZ3VyYXRpb24gaGVyZSBjb3VsZCBjYXVzZSBhIGxvdCBvZiBoZWFkYWNoZXMgZG93bnN0cmVhbS4gVGltZSB0byBzdGFydCByZWFkaW5nIQoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yOSAwNjowMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgQ0ZHODAyMTEmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvd2lyZWxlc3MmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L3dpcmVsZXNzL0tjb25maWc9MTQ9Y29uZmlnIFdFWFRfUFJJVlxuLS1cbm5ldC93aXJlbGVzcy9LY29uZmlnLTE2LVxubmV0L3dpcmVsZXNzL0tjb25maWc6MTc6Y29uZmlnIENGRzgwMjExXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xOC1cdHRyaXN0YXRlIFwmIzM0O2NmZzgwMjExIC0gd2lyZWxlc3MgY29uZmlndXJhdGlvbiBBUElcJiMzNDtcbi0tXG5uZXQvd2lyZWxlc3MvS2NvbmZpZz0zOD1jb25maWcgTkw4MDIxMV9URVNUTU9ERVxuLS1cbm5ldC93aXJlbGVzcy9LY29uZmlnLTUxLVxubmV0L3dpcmVsZXNzL0tjb25maWc6NTI6Y29uZmlnIENGRzgwMjExX0RFVkVMT1BFUl9XQVJOSU5HU1xubmV0L3dpcmVsZXNzL0tjb25maWctNTMtXHRib29sIFwmIzM0O2VuYWJsZSBkZXZlbG9wZXIgd2FybmluZ3NcJiMzNDtcbi0tXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy02Ny1cbm5ldC93aXJlbGVzcy9LY29uZmlnOjY4OmNvbmZpZyBDRkc4MDIxMV9DRVJUSUZJQ0FUSU9OX09OVVNcbm5ldC93aXJlbGVzcy9LY29uZmlnLTY5LVx0Ym9vbCBcJiMzNDtjZmc4MDIxMSBjZXJ0aWZpY2F0aW9uIG9udXNcJiMzNDtcbi0tXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy04OC1cbm5ldC93aXJlbGVzcy9LY29uZmlnOjg5OmNvbmZpZyBDRkc4MDIxMV9SRVFVSVJFX1NJR05FRF9SRUdEQlxubmV0L3dpcmVsZXNzL0tjb25maWctOTAtXHRib29sIFwmIzM0O3JlcXVpcmUgcmVnZGIgc2lnbmF0dXJlXCYjMzQ7IGlmIENGRzgwMjExX0NFUlRJRklDQVRJT05fT05VU1xuLS1cbm5ldC93aXJlbGVzcy9LY29uZmlnLTk4LVxubmV0L3dpcmVsZXNzL0tjb25maWc6OTk6Y29uZmlnIENGRzgwMjExX1VTRV9LRVJORUxfUkVHREJfS0VZU1xubmV0L3dpcmVsZXNzL0tjb25maWctMTAwLVx0Ym9vbCBcJiMzNDthbGxvdyByZWdkYiBrZXlzIHNoaXBwZWQgd2l0aCB0aGUga2VybmVsXCYjMzQ7IGlmIENGRzgwMjExX0NFUlRJRklDQVRJT05fT05VU1xuLS1cbm5ldC93aXJlbGVzcy9LY29uZmlnLTExMC1cbm5ldC93aXJlbGVzcy9LY29uZmlnOjExMTpjb25maWcgQ0ZHODAyMTFfRVhUUkFfUkVHREJfS0VZRElSXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xMTItXHRzdHJpbmcgXCYjMzQ7YWRkaXRpb25hbCByZWdkYiBrZXkgZGlyZWN0b3J5XCYjMzQ7IGlmIENGRzgwMjExX0NFUlRJRklDQVRJT05fT05VU1xuLS1cbm5ldC93aXJlbGVzcy9LY29uZmlnLTEyMS1cbm5ldC93aXJlbGVzcy9LY29uZmlnOjEyMjpjb25maWcgQ0ZHODAyMTFfUkVHX0NFTExVTEFSX0hJTlRTXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xMjMtXHRib29sIFwmIzM0O2NmZzgwMjExIHJlZ3VsYXRvcnkgc3VwcG9ydCBmb3IgY2VsbHVsYXIgYmFzZSBzdGF0aW9uIGhpbnRzXCYjMzQ7XG4tLVxubmV0L3dpcmVsZXNzL0tjb25maWctMTM0LVxubmV0L3dpcmVsZXNzL0tjb25maWc6MTM1OmNvbmZpZyBDRkc4MDIxMV9SRUdfUkVMQVhfTk9fSVJcbm5ldC93aXJlbGVzcy9LY29uZmlnLTEzNi1cdGJvb2wgXCYjMzQ7Y2ZnODAyMTEgc3VwcG9ydCBmb3IgTk9fSVIgcmVsYXhhdGlvblwmIzM0O1xuLS1cbm5ldC93aXJlbGVzcy9LY29uZmlnLTE1OC1cbm5ldC93aXJlbGVzcy9LY29uZmlnOjE1OTpjb25maWcgQ0ZHODAyMTFfREVGQVVMVF9QU1xubmV0L3dpcmVsZXNzL0tjb25maWctMTYwLVx0Ym9vbCBcJiMzNDtlbmFibGUgcG93ZXJzYXZlIGJ5IGRlZmF1bHRcJiMzNDtcbi0tXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xNjgtXG5uZXQvd2lyZWxlc3MvS2NvbmZpZzoxNjk6Y29uZmlnIENGRzgwMjExX0RFQlVHRlNcbm5ldC93aXJlbGVzcy9LY29uZmlnLTE3MC1cdGJvb2wgXCYjMzQ7Y2ZnODAyMTEgRGVidWdGUyBlbnRyaWVzXCYjMzQ7XG4tLVxubmV0L3dpcmVsZXNzL0tjb25maWctMTc2LVxubmV0L3dpcmVsZXNzL0tjb25maWc6MTc3OmNvbmZpZyBDRkc4MDIxMV9DUkRBX1NVUFBPUlRcbm5ldC93aXJlbGVzcy9LY29uZmlnLTE3OC1cdGJvb2wgXCYjMzQ7c3VwcG9ydCBDUkRBXCYjMzQ7IGlmIEVYUEVSVFxuLS1cbm5ldC93aXJlbGVzcy9LY29uZmlnLTE4Ni1cbm5ldC93aXJlbGVzcy9LY29uZmlnOjE4Nzpjb25maWcgQ0ZHODAyMTFfV0VYVFxubmV0L3dpcmVsZXNzL0tjb25maWctMTg4LVx0Ym9vbCBcJiMzNDtjZmc4MDIxMSB3aXJlbGVzcyBleHRlbnNpb25zIGNvbXBhdGliaWxpdHlcJiMzNDtcbi0tXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xOTMtXG5uZXQvd2lyZWxlc3MvS2NvbmZpZzoxOTQ6Y29uZmlnIENGRzgwMjExX0tVTklUX1RFU1Rcbm5ldC93aXJlbGVzcy9LY29uZmlnLTE5NS1cdHRyaXN0YXRlIFwmIzM0O0tVbml0IHRlc3RzIGZvciBjZmc4MDIxMVwmIzM0OyBpZiAhS1VOSVRfQUxMX1RFU1RTXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI5IDA2OjAyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEwOTYyCgkJCQkJCQlvdXRwdXQ6IDMyCgkJCQkJCQl0aG91Z2h0czogMTgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgc3VtbWFyeSwgYXMgdGhvdWdoIEkmIzM5O20gdGhpbmtpbmcgdGhyb3VnaCB0aGlzIHByb2Nlc3M6CgoqKkRpdmluZyBpbnRvIHRoZSBXaXJlbGVzcyBLZXJuZWwgQ29uZmlndXJhdGlvbioqCgpPa2F5LCB0aW1lIHRvIGdldCB0byB3b3JrLiBJIG5lZWQgdG8gcmVmcmVzaCBteSBtZW1vcnkgb24gc29tZSB3aXJlbGVzcyBjb25maWd1cmF0aW9uIGRldGFpbHMuIFRoZSBiZXN0IHBsYWNlIHRvIHN0YXJ0IGlzIGFsd2F5cyB0aGUgYEtjb25maWdgIGZpbGUsIHBhcnRpY3VsYXJseSB0aGUgbWFpbiBvbmUgaW4gdGhlIGBuZXQvd2lyZWxlc3NgIGRpcmVjdG9yeS4gTXkgZ3V0IHNheXMgdGhlIGtleSBjb25maWd1cmF0aW9ucyBhcmUgcHJvYmFibHkgbmVhciB0aGUgdG9wLiBMZXQgbWUganVtcCByaWdodCB0byBsaW5lIDE3IG9mIGBuZXQvd2lyZWxlc3MvS2NvbmZpZ2AgYW5kIHNlZSB3aGF0JiMzOTtzIGRlZmluZWQgdGhlcmUuIEhvcGVmdWxseSwgdGhhdCBzaG91bGQgZ2l2ZSBtZSBhIGdvb2QganVtcGluZy1vZmYgcG9pbnQgYW5kIHRoZSByZWxldmFudCBjb25maWd1cmF0aW9uIG9wdGlvbnMuIFRpbWUgdG8gZ2V0IG15IGJlYXJpbmdzIGFuZCB1bmRlcnN0YW5kIHdoYXQgY29udHJvbHMgYXJlIGluIHBsYWNlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yOSAwNjowMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O25ldC93aXJlbGVzcy9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAzNQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgICAxOlx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG4gICAyOlx0Y29uZmlnIFdJUkVMRVNTX0VYVFxuICAgMzpcdFx0Ym9vbFxuICAgNDpcdFxuICAgNTpcdGNvbmZpZyBXRVhUX0NPUkVcbiAgIDY6XHRcdGRlZl9ib29sIHlcbiAgIDc6XHRcdGRlcGVuZHMgb24gQ0ZHODAyMTFfV0VYVCB8fCBXSVJFTEVTU19FWFRcbiAgIDg6XHRcbiAgIDk6XHRjb25maWcgV0VYVF9QUk9DXG4gIDEwOlx0XHRkZWZfYm9vbCB5XG4gIDExOlx0XHRkZXBlbmRzIG9uIFBST0NfRlNcbiAgMTI6XHRcdGRlcGVuZHMgb24gV0VYVF9DT1JFXG4gIDEzOlx0XG4gIDE0Olx0Y29uZmlnIFdFWFRfUFJJVlxuICAxNTpcdFx0Ym9vbFxuICAxNjpcdFxuICAxNzpcdGNvbmZpZyBDRkc4MDIxMVxuICAxODpcdFx0dHJpc3RhdGUgXCYjMzQ7Y2ZnODAyMTEgLSB3aXJlbGVzcyBjb25maWd1cmF0aW9uIEFQSVwmIzM0O1xuICAxOTpcdFx0ZGVwZW5kcyBvbiBSRktJTEwgfHwgIVJGS0lMTFxuICAyMDpcdFx0c2VsZWN0IEZXX0xPQURFUlxuICAyMTpcdFx0c2VsZWN0IENSQzMyXG4gIDIyOlx0XHQjIG1heSBuZWVkIHRvIHVwZGF0ZSB0aGlzIHdoZW4gY2VydGlmaWNhdGVzIGFyZSBjaGFuZ2VkIGFuZCBhcmVcbiAgMjM6XHRcdCMgdXNpbmcgYSBkaWZmZXJlbnQgYWxnb3JpdGhtLCB0aG91Z2ggcmlnaHQgbm93IHRoZXkgc2hvdWxkbiYjMzk7dFxuICAyNDpcdFx0IyAodGhpcyBpcyBoZXJlIHJhdGhlciB0aGFuIGJlbG93IHRvIGFsbG93IGl0IHRvIGJlIGEgbW9kdWxlKVxuICAyNTpcdFx0c2VsZWN0IENSWVBUT19TSEEyNTYgaWYgQ0ZHODAyMTFfVVNFX0tFUk5FTF9SRUdEQl9LRVlTXG4gIDI2Olx0XHRoZWxwXG4gIDI3Olx0XHQgIGNmZzgwMjExIGlzIHRoZSBMaW51eCB3aXJlbGVzcyBMQU4gKDgwMi4xMSkgY29uZmlndXJhdGlvbiBBUEkuXG4gIDI4Olx0XHQgIEVuYWJsZSB0aGlzIGlmIHlvdSBoYXZlIGEgd2lyZWxlc3MgZGV2aWNlLlxuICAyOTpcdFxuICAzMDpcdFx0ICBGb3IgbW9yZSBpbmZvcm1hdGlvbiByZWZlciB0byBkb2N1bWVudGF0aW9uIG9uIHRoZSB3aXJlbGVzcyB3aWtpOlxuICAzMTpcdFxuICAzMjpcdFx0ICBodHRwczovL3dpcmVsZXNzLndpa2kua2VybmVsLm9yZy9lbi9kZXZlbG9wZXJzL0RvY3VtZW50YXRpb24vY2ZnODAyMTFcbiAgMzM6XHRcbiAgMzQ6XHRcdCAgV2hlbiBidWlsdCBhcyBhIG1vZHVsZSBpdCB3aWxsIGJlIGNhbGxlZCBjZmc4MDIxMS5cbiAgMzU6XHRcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjkgMDY6MDI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTE2MzQKCQkJCQkJCW91dHB1dDogMzYKCQkJCQkJCXRob3VnaHRzOiA1OQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipJbnZlc3RpZ2F0aW5nIHRoZSBNQUM4MDIxMSBIV1NJTSBDb25maWd1cmF0aW9uKioKCk9rYXksIHNvIEkgbmVlZCB0byBnZXQgYSBoYW5kbGUgb24gaG93IHRoaXMgYE1BQzgwMjExX0hXU0lNYCB0aGluZyBpcyBjb25maWd1cmVkLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gZGl2ZSBpbnRvIHRoZSBjb2RlIGl0c2VsZiwgc3RhcnRpbmcgd2l0aCBgZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbS5jYC4gSSBleHBlY3QgdG8gZmluZCB0aGUgcmVsZXZhbnQgY29uZmlndXJhdGlvbiBvcHRpb25zIG9yIGhvb2tzIGluIHRoZXJlLiBJJiMzOTttIGdvaW5nIHRvIHRyeSBhbmQgcGlucG9pbnQgZXhhY3RseSAqd2hlcmUqIHRoZSBgbWFjODAyMTFfaHdzaW1gIGZ1bmN0aW9uYWxpdHkgaXMgaW5pdGlhbGl6ZWQsIGVuYWJsZWQsIG9yIG90aGVyd2lzZSBtYW5hZ2VkIHdpdGhpbiB0aGUgYnJvYWRlciBrZXJuZWwgY29uZmlndXJhdGlvbiBmcmFtZXdvcmsuIEZpbmRpbmcgdGhhdCBjb25maWcgc2V0dGluZyBpcyBteSBwcmltYXJ5IG9iamVjdGl2ZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjkgMDY6MDI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIE1BQzgwMjExX0hXU0lNJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9LY29uZmlnOjE6Y29uZmlnIE1BQzgwMjExX0hXU0lNXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL0tjb25maWctMi1cdHRyaXN0YXRlIFwmIzM0O1NpbXVsYXRlZCByYWRpbyB0ZXN0aW5nIHRvb2wgZm9yIG1hYzgwMjExXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI5IDA2OjAyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDExOTM5CgkJCQkJCQlvdXRwdXQ6IDM4CgkJCQkJCQl0aG91Z2h0czogNTEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCYjMzk7cyBkaXZlIGludG8gdGhpcy4gSSBuZWVkIHRvIGdldCBhIGhhbmRsZSBvbiB0aGUgZGVmcmFnbWVudGF0aW9uIGFuZCByZWNlaXZlIGZyYW1lIGhhbmRsaW5nIHdpdGhpbiB0aGUgYG5ldC9tYWM4MDIxMS9yeC5jYCBmaWxlLiBNeSBpbml0aWFsIGZvY3VzIGlzIG9uIHRoZSBzeW1ib2xzIGludm9sdmVkIGluIHRob3NlIHByb2Nlc3Nlcy4gSSB3YW50IHRvIGlkZW50aWZ5IHRoZSBrZXkgZnVuY3Rpb25z4oCUdGhlIG9uZXMgdGhhdCBhcmUgZWl0aGVyIG5vbi1zdGF0aWMsIGluZGljYXRpbmcgdGhleSYjMzk7cmUgbGlrZWx5IGNhbGxlZCBmcm9tIGVsc2V3aGVyZSwgb3IgdGhvc2UgYWN0aW5nIGFzIGVudHJ5IHBvaW50cy4gVGhpcyB3aWxsIGdpdmUgbWUgYSBiZXR0ZXIgb3ZlcnZpZXcgb2YgaG93IHRoZSBkZWZyYWdtZW50YXRpb24gYW5kIHJlY2VpdmUgZnJhbWUgbWVjaGFuaXNtcyBhcmUgc3RydWN0dXJlZCB3aXRoaW4gdGhpcyBtb2R1bGUuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBwdWJsaWMgaW50ZXJmYWNlcyBhbmQgdGhlIHN0YXJ0aW5nIHBvaW50cyBvZiB0aGlzIGNvZGUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI5IDA2OjAyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2llZWU4MDIxMV9yeF8mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbWFjODAyMTEmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7XG5GdWxsIG91dHB1dCBpcyB0b28gbG9uZywgc2hvd2luZyA1MDAgb3V0IG9mIDEyMzkgbGluZXMuXG5Vc2UgbW9yZSBwcmVjaXNlIGV4cHJlc3Npb24gaWYgcG9zc2libGUuXG5cbm5ldC9tYWM4MDIxMS9hZ2ctcnguYz01MjI9RVhQT1JUX1NZTUJPTChpZWVlODAyMTFfbWFuYWdlX3J4X2JhX29mZmwpO1xubmV0L21hYzgwMjExL2FnZy1yeC5jLTUyMy1cbm5ldC9tYWM4MDIxMS9hZ2ctcnguYzo1MjQ6dm9pZCBpZWVlODAyMTFfcnhfYmFfdGltZXJfZXhwaXJlZChzdHJ1Y3QgaWVlZTgwMjExX3ZpZiAqdmlmLFxubmV0L21hYzgwMjExL2FnZy1yeC5jLTUyNS1cdFx0XHRcdCAgIGNvbnN0IHU4ICphZGRyLCB1bnNpZ25lZCBpbnQgdGlkKVxuLS1cbm5ldC9tYWM4MDIxMS9hZ2ctcnguYy01NDAtfVxubmV0L21hYzgwMjExL2FnZy1yeC5jOjU0MTpFWFBPUlRfU1lNQk9MKGllZWU4MDIxMV9yeF9iYV90aW1lcl9leHBpcmVkKTtcbi0tXG5uZXQvbWFjODAyMTEvYWlydGltZS5jPTUwNj1zdGF0aWMgdTMyIGllZWU4MDIxMV9nZXRfcmF0ZV9kdXJhdGlvbihzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcbm5ldC9tYWM4MDIxMS9haXJ0aW1lLmM6NTA3Olx0XHRcdFx0ICAgICAgIHN0cnVjdCBpZWVlODAyMTFfcnhfc3RhdHVzICpzdGF0dXMsXG5uZXQvbWFjODAyMTEvYWlydGltZS5jLTUwOC1cdFx0XHRcdCAgICAgICB1MzIgKm92ZXJoZWFkKVxuLS1cbm5ldC9tYWM4MDIxMS9haXJ0aW1lLmM9NTg1PXUzMiBpZWVlODAyMTFfY2FsY19yeF9haXJ0aW1lKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxubmV0L21hYzgwMjExL2FpcnRpbWUuYzo1ODY6XHRcdFx0ICAgICAgc3RydWN0IGllZWU4MDIxMV9yeF9zdGF0dXMgKnN0YXR1cyxcbm5ldC9tYWM4MDIxMS9haXJ0aW1lLmMtNTg3LVx0XHRcdCAgICAgIGludCBsZW4pXG4tLVxubmV0L21hYzgwMjExL2FpcnRpbWUuYz02MjU9c3RhdGljIGJvb2wgaWVlZTgwMjExX2ZpbGxfcmF0ZV9pbmZvKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxubmV0L21hYzgwMjExL2FpcnRpbWUuYzo2MjY6XHRcdFx0XHQgICAgIHN0cnVjdCBpZWVlODAyMTFfcnhfc3RhdHVzICpzdGF0LCB1OCBiYW5kLFxubmV0L21hYzgwMjExL2FpcnRpbWUuYy02MjctXHRcdFx0XHQgICAgIHN0cnVjdCByYXRlX2luZm8gKnJpKVxuLS1cbm5ldC9tYWM4MDIxMS9haXJ0aW1lLmMtNjc2LVxubmV0L21hYzgwMjExL2FpcnRpbWUuYzo2Nzc6c3RhdGljIGludCBpZWVlODAyMTFfZmlsbF9yeF9zdGF0dXMoc3RydWN0IGllZWU4MDIxMV9yeF9zdGF0dXMgKnN0YXQsXG5uZXQvbWFjODAyMTEvYWlydGltZS5jLTY3OC1cdFx0XHRcdCAgICBzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcbi0tXG5uZXQvbWFjODAyMTEvYWlydGltZS5jPTcyMD1zdGF0aWMgdTMyIGllZWU4MDIxMV9jYWxjX3R4X2FpcnRpbWVfcmF0ZShzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcbi0tXG5uZXQvbWFjODAyMTEvYWlydGltZS5jLTcyNC17XG5uZXQvbWFjODAyMTEvYWlydGltZS5jOjcyNTpcdHN0cnVjdCBpZWVlODAyMTFfcnhfc3RhdHVzIHN0YXQ7XG5uZXQvbWFjODAyMTEvYWlydGltZS5jLTcyNi1cbi0tXG5uZXQvbWFjODAyMTEvYWlydGltZS5jPTc1Nj11MzIgaWVlZTgwMjExX3JhdGVfZXhwZWN0ZWRfdHhfYWlydGltZShzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcbi0tXG5uZXQvbWFjODAyMTEvYWlydGltZS5jLTc2MS17XG5uZXQvbWFjODAyMTEvYWlydGltZS5jOjc2MjpcdHN0cnVjdCBpZWVlODAyMTFfcnhfc3RhdHVzIHN0YXQ7XG5uZXQvbWFjODAyMTEvYWlydGltZS5jLTc2My1cdHUzMiBkdXJhdGlvbiwgb3ZlcmhlYWQ7XG4tLVxubmV0L21hYzgwMjExL2FwLmM9NTA9c3RhdGljIHZvaWRcbm5ldC9tYWM4MDIxMS9hcC5jOjUxOmllZWU4MDIxMV9yeF9lbWxfb3BfbW9kZV9ub3RpZihzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSxcbm5ldC9tYWM4MDIxMS9hcC5jLTUyLVx0XHRcdCAgICAgICBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuLS1cbm5ldC9tYWM4MDIxMS9hcC5jLTU1LVx0ZW51bSBubDgwMjExX2lmdHlwZSB0eXBlID0gaWVlZTgwMjExX3ZpZl90eXBlX3AycChcdTAwMjZzZGF0YS1cdTAwM2V2aWYpO1xubmV0L21hYzgwMjExL2FwLmM6NTY6XHRzdHJ1Y3QgaWVlZTgwMjExX3J4X3N0YXR1cyAqc3RhdHVzID0gSUVFRTgwMjExX1NLQl9SWENCKHNrYik7XG5uZXQvbWFjODAyMTEvYXAuYy01Ny1cdGNvbnN0IHN0cnVjdCB3aXBoeV9pZnR5cGVfZXh0X2NhcGFiICppZnRfZXh0X2NhcGE7XG4tLVxubmV0L21hYzgwMjExL2FwLmM9MTkwPXN0YXRpYyB2b2lkXG5uZXQvbWFjODAyMTEvYXAuYzoxOTE6aWVlZTgwMjExX3J4X3Vocl9saW5rX3JlY29uZmlnX3JlcShzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSxcbm5ldC9tYWM4MDIxMS9hcC5jLTE5Mi1cdFx0XHRcdCAgIHN0cnVjdCBza19idWZmICpza2IpXG4tLVxubmV0L21hYzgwMjExL2FwLmM9Mjk3PXZvaWQgaWVlZTgwMjExX2FwX3J4X3F1ZXVlZF9mcmFtZShzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSxcbi0tXG5uZXQvbWFjODAyMTEvYXAuYy0zMDktXHRcdGNhc2UgV0xBTl9QUk9URUNURURfRUhUX0FDVElPTl9FTUxfT1BfTU9ERV9OT1RJRjpcbm5ldC9tYWM4MDIxMS9hcC5jOjMxMDpcdFx0XHRpZWVlODAyMTFfcnhfZW1sX29wX21vZGVfbm90aWYoc2RhdGEsIHNrYik7XG5uZXQvbWFjODAyMTEvYXAuYy0zMTEtXHRcdFx0YnJlYWs7XG4tLVxubmV0L21hYzgwMjExL2FwLmMtMzE2LVx0XHRjYXNlIElFRUU4MDIxMV9QUk9URUNURURfVUhSX0FDVElPTl9MSU5LX1JFQ09ORklHX1JFUVVFU1Q6XG5uZXQvbWFjODAyMTEvYXAuYzozMTc6XHRcdFx0aWVlZTgwMjExX3J4X3Vocl9saW5rX3JlY29uZmlnX3JlcShzZGF0YSwgc2tiKTtcbm5ldC9tYWM4MDIxMS9hcC5jLTMxOC1cdFx0XHRicmVhaztcbi0tXG5uZXQvbWFjODAyMTEvZHJvcC5oLTExLVxubmV0L21hYzgwMjExL2Ryb3AuaDoxMjp0eXBlZGVmIHVuc2lnbmVkIGludCBfX2JpdHdpc2UgaWVlZTgwMjExX3J4X3Jlc3VsdDtcbm5ldC9tYWM4MDIxMS9kcm9wLmgtMTMtXG4tLVxubmV0L21hYzgwMjExL2Ryb3AuaC0xMTItXG5uZXQvbWFjODAyMTEvZHJvcC5oOjExMzovKiBoYXZpbmcgdHdvIGVudW1zIGFsbG93cyBmb3IgY2hlY2tpbmcgaWVlZTgwMjExX3J4X3Jlc3VsdCB1c2Ugd2l0aCBzcGFyc2UgKi9cbm5ldC9tYWM4MDIxMS9kcm9wLmgtMTE0LWVudW0gX19fbWFjODAyMTFfZHJvcF9yZWFzb24ge1xuLS1cbm5ldC9tYWM4MDIxMS9kcm9wLmg9MTI4PWVudW0gbWFjODAyMTFfZHJvcF9yZWFzb24ge1xubmV0L21hYzgwMjExL2Ryb3AuaDoxMjk6XHRSWF9DT05USU5VRVx0PSAoX19mb3JjZSBpZWVlODAyMTFfcnhfcmVzdWx0KV9fX1JYX0NPTlRJTlVFLFxubmV0L21hYzgwMjExL2Ryb3AuaDoxMzA6XHRSWF9RVUVVRURcdD0gKF9fZm9yY2UgaWVlZTgwMjExX3J4X3Jlc3VsdClfX19SWF9RVUVVRUQsXG5uZXQvbWFjODAyMTEvZHJvcC5oOjEzMTojZGVmaW5lIERFRih4KSB4ID0gKF9fZm9yY2UgaWVlZTgwMjExX3J4X3Jlc3VsdClfX18gIyMgeCxcbm5ldC9tYWM4MDIxMS9kcm9wLmgtMTMyLVx0TUFDODAyMTFfRFJPUF9SRUFTT05TX1VOVVNBQkxFKERFRilcbi0tXG5uZXQvbWFjODAyMTEvaWJzcy5jPTg2Mj1zdGF0aWMgdm9pZFxubmV0L21hYzgwMjExL2lic3MuYzo4NjM6aWVlZTgwMjExX3J4X21nbXRfc3BlY3RydW1fbWdtdChzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSxcbm5ldC9tYWM4MDIxMS9pYnNzLmMtODY0LVx0XHRcdFx0c3RydWN0IGllZWU4MDIxMV9tZ210ICptZ210LCBzaXplX3QgbGVuLFxubmV0L21hYzgwMjExL2lic3MuYzo4NjU6XHRcdFx0XHRzdHJ1Y3QgaWVlZTgwMjExX3J4X3N0YXR1cyAqcnhfc3RhdHVzLFxubmV0L21hYzgwMjExL2lic3MuYy04NjYtXHRcdFx0XHRzdHJ1Y3QgaWVlZTgwMl8xMV9lbGVtcyAqZWxlbXMpXG4tLVxubmV0L21hYzgwMjExL2lic3MuYy04NzgtXG5uZXQvbWFjODAyMTEvaWJzcy5jOjg3OTpzdGF0aWMgdm9pZCBpZWVlODAyMTFfcnhfbWdtdF9kZWF1dGhfaWJzcyhzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSxcbm5ldC9tYWM4MDIxMS9pYnNzLmMtODgwLVx0XHRcdFx0XHQgIHN0cnVjdCBpZWVlODAyMTFfbWdtdCAqbWdtdCxcbi0tXG5uZXQvbWFjODAyMTEvaWJzcy5jLTg5NC1cbm5ldC9tYWM4MDIxMS9pYnNzLmM6ODk1OnN0YXRpYyB2b2lkIGllZWU4MDIxMV9yeF9tZ210X2F1dGhfaWJzcyhzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSxcbm5ldC9tYWM4MDIxMS9pYnNzLmMtODk2LVx0XHRcdFx0XHRzdHJ1Y3QgaWVlZTgwMjExX21nbXQgKm1nbXQsXG4tLVxubmV0L21hYzgwMjExL2lic3MuYz05MjY9c3RhdGljIHZvaWQgaWVlZTgwMjExX3VwZGF0ZV9zdGFfaW5mbyhzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSxcbm5ldC9tYWM4MDIxMS9pYnNzLmMtOTI3LVx0XHRcdFx0ICAgICAgc3RydWN0IGllZWU4MDIxMV9tZ210ICptZ210LCBzaXplX3QgbGVuLFxubmV0L21hYzgwMjExL2lic3MuYzo5Mjg6XHRcdFx0XHQgICAgICBzdHJ1Y3QgaWVlZTgwMjExX3J4X3N0YXR1cyAqcnhfc3RhdHVzLFxubmV0L21hYzgwMjExL2lic3MuYy05MjktXHRcdFx0XHQgICAgICBzdHJ1Y3QgaWVlZTgwMl8xMV9lbGVtcyAqZWxlbXMsXG4tLVxubmV0L21hYzgwMjExL2lic3MuYy0xMDQ1LVxubmV0L21hYzgwMjExL2lic3MuYzoxMDQ2OnN0YXRpYyB2b2lkIGllZWU4MDIxMV9yeF9ic3NfaW5mbyhzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSxcbm5ldC9tYWM4MDIxMS9pYnNzLmMtMTA0Ny1cdFx0XHRcdCAgc3RydWN0IGllZWU4MDIxMV9tZ210ICptZ210LCBzaXplX3QgbGVuLFxubmV0L21hYzgwMjExL2lic3MuYzoxMDQ4Olx0XHRcdFx0ICBzdHJ1Y3QgaWVlZTgwMjExX3J4X3N0YXR1cyAqcnhfc3RhdHVzLFxubmV0L21hYzgwMjExL2lic3MuYy0xMDQ5LVx0XHRcdFx0ICBzdHJ1Y3QgaWVlZTgwMl8xMV9lbGVtcyAqZWxlbXMpXG4tLVxubmV0L21hYzgwMjExL2lic3MuYy0xMTM2LSBwdXRfYnNzOlxubmV0L21hYzgwMjExL2lic3MuYzoxMTM3Olx0aWVlZTgwMjExX3J4X2Jzc19wdXQobG9jYWwsIGJzcyk7XG5uZXQvbWFjODAyMTEvaWJzcy5jLTExMzgtfVxuLS1cbm5ldC9tYWM4MDIxMS9pYnNzLmM9MTM2Nj1zdGF0aWMgdm9pZCBpZWVlODAyMTFfc3RhX2ZpbmRfaWJzcyhzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSlcbi0tXG5uZXQvbWFjODAyMTEvaWJzcy5jLTE0MDUtXHRcdGllZWU4MDIxMV9zdGFfam9pbl9pYnNzKHNkYXRhLCBic3MpO1xubmV0L21hYzgwMjExL2lic3MuYzoxNDA2Olx0XHRpZWVlODAyMTFfcnhfYnNzX3B1dChsb2NhbCwgYnNzKTtcbm5ldC9tYWM4MDIxMS9pYnNzLmMtMTQwNy1cdFx0cmV0dXJuO1xuLS1cbm5ldC9tYWM4MDIxMS9pYnNzLmMtMTQ1NC1cbm5ldC9tYWM4MDIxMS9pYnNzLmM6MTQ1NTpzdGF0aWMgdm9pZCBpZWVlODAyMTFfcnhfbWdtdF9wcm9iZV9yZXEoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsXG5uZXQvbWFjODAyMTEvaWJzcy5jLTE0NTYtXHRcdFx0XHRcdHN0cnVjdCBza19idWZmICpyZXEpXG4tLVxubmV0L21hYzgwMjExL2lic3MuYz0xNTIxPXN0YXRpY1xubmV0L21hYzgwMjExL2lic3MuYzoxNTIyOnZvaWQgaWVlZTgwMjExX3J4X21nbXRfcHJvYmVfYmVhY29uKHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLFxubmV0L21hYzgwMjExL2lic3MuYy0xNTIzLVx0XHRcdFx0ICAgIHN0cnVjdCBpZWVlODAyMTFfbWdtdCAqbWdtdCwgc2l6ZV90IGxlbixcbm5ldC9tYWM4MDIxMS9pYnNzLmM6MTUyNDpcdFx0XHRcdCAgICBzdHJ1Y3QgaWVlZTgwMjExX3J4X3N0YXR1cyAqcnhfc3RhdHVzKVxubmV0L21hYzgwMjExL2lic3MuYy0xNTI1LXtcbi0tXG5uZXQvbWFjODAyMTEvaWJzcy5jLTE1NDUtXHRpZiAoZWxlbXMpIHtcbm5ldC9tYWM4MDIxMS9pYnNzLmM6MTU0NjpcdFx0aWVlZTgwMjExX3J4X2Jzc19pbmZvKHNkYXRhLCBtZ210LCBsZW4sIHJ4X3N0YXR1cywgZWxlbXMpO1xubmV0L21hYzgwMjExL2lic3MuYy0xNTQ3LVx0XHRrZnJlZShlbGVtcyk7XG4tLVxubmV0L21hYzgwMjExL2lic3MuYz0xNTUxPXZvaWQgaWVlZTgwMjExX2lic3NfcnhfcXVldWVkX21nbXQoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsXG4tLVxubmV0L21hYzgwMjExL2lic3MuYy0xNTUzLXtcbm5ldC9tYWM4MDIxMS9pYnNzLmM6MTU1NDpcdHN0cnVjdCBpZWVlODAyMTFfcnhfc3RhdHVzICpyeF9zdGF0dXM7XG5uZXQvbWFjODAyMTEvaWJzcy5jLTE1NTUtXHRzdHJ1Y3QgaWVlZTgwMjExX21nbXQgKm1nbXQ7XG4tLVxubmV0L21hYzgwMjExL2lic3MuYy0xNTY4LVx0Y2FzZSBJRUVFODAyMTFfU1RZUEVfUFJPQkVfUkVROlxubmV0L21hYzgwMjExL2lic3MuYzoxNTY5Olx0XHRpZWVlODAyMTFfcnhfbWdtdF9wcm9iZV9yZXEoc2RhdGEsIHNrYik7XG5uZXQvbWFjODAyMTEvaWJzcy5jLTE1NzAtXHRcdGJyZWFrO1xuLS1cbm5ldC9tYWM4MDIxMS9pYnNzLmMtMTU3Mi1cdGNhc2UgSUVFRTgwMjExX1NUWVBFX0JFQUNPTjpcbm5ldC9tYWM4MDIxMS9pYnNzLmM6MTU3MzpcdFx0aWVlZTgwMjExX3J4X21nbXRfcHJvYmVfYmVhY29uKHNkYXRhLCBtZ210LCBza2ItXHUwMDNlbGVuLFxubmV0L21hYzgwMjExL2lic3MuYy0xNTc0LVx0XHRcdFx0XHQgICAgICAgcnhfc3RhdHVzKTtcbi0tXG5uZXQvbWFjODAyMTEvaWJzcy5jLTE1NzYtXHRjYXNlIElFRUU4MDIxMV9TVFlQRV9BVVRIOlxubmV0L21hYzgwMjExL2lic3MuYzoxNTc3Olx0XHRpZWVlODAyMTFfcnhfbWdtdF9hdXRoX2lic3Moc2RhdGEsIG1nbXQsIHNrYi1cdTAwM2VsZW4pO1xubmV0L21hYzgwMjExL2lic3MuYy0xNTc4LVx0XHRicmVhaztcbm5ldC9tYWM4MDIxMS9pYnNzLmMtMTU3OS1cdGNhc2UgSUVFRTgwMjExX1NUWVBFX0RFQVVUSDpcbm5ldC9tYWM4MDIxMS9pYnNzLmM6MTU4MDpcdFx0aWVlZTgwMjExX3J4X21nbXRfZGVhdXRoX2lic3Moc2RhdGEsIG1nbXQsIHNrYi1cdTAwM2VsZW4pO1xubmV0L21hYzgwMjExL2lic3MuYy0xNTgxLVx0XHRicmVhaztcbi0tXG5uZXQvbWFjODAyMTEvaWJzcy5jLTE1OTgtXHRcdFx0aWYgKGVsZW1zIFx1MDAyNlx1MDAyNiAhZWxlbXMtXHUwMDNlcGFyc2VfZXJyb3IpXG5uZXQvbWFjODAyMTEvaWJzcy5jOjE1OTk6XHRcdFx0XHRpZWVlODAyMTFfcnhfbWdtdF9zcGVjdHJ1bV9tZ210KHNkYXRhLCBtZ210LFxubmV0L21hYzgwMjExL2lic3MuYy0xNjAwLVx0XHRcdFx0XHRcdFx0XHRza2ItXHUwMDNlbGVuLFxuLS1cbm5ldC9tYWM4MDIxMS9pZWVlODAyMTFfaS5oPTE4Mj1zdHJ1Y3QgaWVlZTgwMjExX3R4X2RhdGEge1xuLS1cbm5ldC9tYWM4MDIxMS9pZWVlODAyMTFfaS5oLTIwMC0gKiBUaGVzZSBhcmUgcGVyLWZyYW1lIGZsYWdzIHRoYXQgYXJlIGF0dGFjaGVkIHRvIGEgZnJhbWUgaW4gdGhlXG5uZXQvbWFjODAyMTEvaWVlZTgwMjExX2kuaDoyMDE6ICogQHJ4X2ZsYWdzIGZpZWxkIG9mIFx1MDAyNnN0cnVjdCBpZWVlODAyMTFfcnhfc3RhdHVzLlxubmV0L21hYzgwMjExL2llZWU4MDIxMV9pLmgtMjAyLSAqL1xubmV0L21hYzgwMjExL2llZWU4MDIxMV9pLmg9MjAzPWVudW0gaWVlZTgwMjExX3BhY2tldF9yeF9mbGFncyB7XG4tLVxubmV0L21hYzgwMjExL2llZWU4MDIxMV9pLmgtMjA5LS8qKlxubmV0L21hYzgwMjExL2llZWU4MDIxMV9pLmg6MjEwOiAqIGVudW0gaWVlZTgwMjExX3J4X2ZsYWdzIC0gUlggZGF0YSBmbGFnc1xubmV0L21hYzgwMjExL2llZWU4MDIxMV9pLmgtMjExLSAqXG4tLVxubmV0L21hYzgwMjExL2llZWU4MDIxMV9pLmgtMjE3LSAqL1xubmV0L21hYzgwMjExL2llZWU4MDIxMV9pLmg6MjE4OmVudW0gaWVlZTgwMjExX3J4X2ZsYWdzIHtcbm5ldC9tYWM4MDIxMS9pZWVlODAyMTFfaS5oLTIxOS1cdElFRUU4MDIxMV9SWF9CRUFDT05fUkVQT1JURURcdD0gQklUKDApLFxuLS1cbm5ldC9tYWM4MDIxMS9pZWVlODAyMTFfaS5oLTIyMS1cbm5ldC9tYWM4MDIxMS9pZWVlODAyMTFfaS5oOjIyMjpzdHJ1Y3QgaWVlZTgwMjExX3J4X2RhdGEge1xubmV0L21hYzgwMjExL2llZWU4MDIxMV9pLmgtMjIzLVx0c3RydWN0IGxpc3RfaGVhZCAqbGlzdDtcbi0tXG5uZXQvbWFjODAyMTEvaWVlZTgwMjExX2kuaD03MjA9c3RydWN0IGllZWU4MDIxMV9tZXNoX3N5bmNfb3BzIHtcbi0tXG5uZXQvbWFjODAyMTEvaWVlZTgwMjExX2kuaC03MjMtXHRcdFx0ICAgICBjb25zdCBzdHJ1Y3QgaWVlZTgwMjExX21lc2hjb25mX2llICptZXNoX2NmZyxcbm5ldC9tYWM4MDIxMS9pZWVlODAyMTFfaS5oOjcyNDpcdFx0XHQgICAgIHN0cnVjdCBpZWVlODAyMTFfcnhfc3RhdHVzICpyeF9zdGF0dXMpO1xubmV0L21hYzgwMjExL2llZWU4MDIxMV9pLmgtNzI1LVxuLS1cbm5ldC9tYWM4MDIxMS9pZWVlODAyMTFfaS5oPTE5NDQ9c3RhdGljIGlubGluZSBib29sXG5uZXQvbWFjODAyMTEvaWVlZTgwMjExX2kuaDoxOTQ1OmllZWU4MDIxMV9oYXZlX3J4X3RpbWVzdGFtcChzdHJ1Y3QgaWVlZTgwMjExX3J4X3N0YXR1cyAqc3RhdHVzKVxubmV0L21hYzgwMjExL2llZWU4MDIxMV9pLmgtMTk0Ni17XG4tLVxubmV0L21hYzgwMjExL2llZWU4MDIxMV9pLmg9MjEyND1pZWVlODAyMTFfYnNzX2luZm9fdXBkYXRlKHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsLFxubmV0L21hYzgwMjExL2llZWU4MDIxMV9pLmg6MjEyNTpcdFx0XHQgIHN0cnVjdCBpZWVlODAyMTFfcnhfc3RhdHVzICpyeF9zdGF0dXMsXG5uZXQvbWFjODAyMTEvaWVlZTgwMjExX2kuaC0yMTI2LVx0XHRcdCAgc3RydWN0IGllZWU4MDIxMV9tZ210ICptZ210LFxuLS1cbm5ldC9tYWM4MDIxMS9pZWVlODAyMTFfaS5oLTIxMjgtXHRcdFx0ICBzdHJ1Y3QgaWVlZTgwMjExX2NoYW5uZWwgKmNoYW5uZWwpO1xubmV0L21hYzgwMjExL2llZWU4MDIxMV9pLmg6MjEyOTp2b2lkIGllZWU4MDIxMV9yeF9ic3NfcHV0KHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsLFxubmV0L21hYzgwMjExL2llZWU4MDIxMV9pLmgtMjEzMC1cdFx0XHQgIHN0cnVjdCBpZWVlODAyMTFfYnNzICpic3MpO1xuLS1cbm5ldC9tYWM4MDIxMS9pZWVlODAyMTFfaS5oPTI5ODA9aWVlZTgwMjExX3Vocl9jYXBfaWVfdG9fc3RhX3Vocl9jYXAoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsXG4tLVxubmV0L21hYzgwMjExL2llZWU4MDIxMV9pLmgtMjk4OC0jZGVmaW5lIFZJU0lCTEVfSUZfTUFDODAyMTFfS1VOSVRcbm5ldC9tYWM4MDIxMS9pZWVlODAyMTFfaS5oOjI5ODk6aWVlZTgwMjExX3J4X3Jlc3VsdFxubmV0L21hYzgwMjExL2llZWU4MDIxMV9pLmg6Mjk5MDppZWVlODAyMTFfZHJvcF91bmVuY3J5cHRlZF9tZ210KHN0cnVjdCBpZWVlODAyMTFfcnhfZGF0YSAqcngpO1xubmV0L21hYzgwMjExL2llZWU4MDIxMV9pLmgtMjk5MS1pbnQgaWVlZTgwMjExX2NhbGNfY2hhbmRlZl9zdWJjaGFuX29mZnNldChjb25zdCBzdHJ1Y3QgY2ZnODAyMTFfY2hhbl9kZWYgKmFwLFxuLS1cbm5ldC9tYWM4MDIxMS9pZmFjZS5jPTE2MjY9c3RhdGljIHZvaWQgaWVlZTgwMjExX2lmYWNlX3Byb2Nlc3Nfc2tiKHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsLFxuLS1cbm5ldC9tYWM4MDIxMS9pZmFjZS5jLTE2NjYtXHRcdFx0dTggY2hhbndpZHRoID0gbWdtdC1cdTAwM2V1LmFjdGlvbi5odF9ub3RpZnlfY3cuY2hhbndpZHRoO1xubmV0L21hYzgwMjExL2lmYWNlLmM6MTY2NzpcdFx0XHRzdHJ1Y3QgaWVlZTgwMjExX3J4X3N0YXR1cyAqc3RhdHVzO1xubmV0L21hYzgwMjExL2lmYWNlLmMtMTY2OC1cdFx0XHRzdHJ1Y3QgbGlua19zdGFfaW5mbyAqbGlua19zdGE7XG4tLVxubmV0L21hYzgwMjExL2lmYWNlLmMtMTY5NC1cdFx0Y2FzZSBXTEFOX1ZIVF9BQ1RJT05fT1BNT0RFX05PVElGOiB7XG5uZXQvbWFjODAyMTEvaWZhY2UuYzoxNjk1Olx0XHRcdHN0cnVjdCBpZWVlODAyMTFfcnhfc3RhdHVzICpzdGF0dXM7XG5uZXQvbWFjODAyMTEvaWZhY2UuYy0xNjk2LVx0XHRcdGVudW0gbmw4MDIxMV9iYW5kIGJhbmQ7XG4tLVxubmV0L21hYzgwMjExL2xlZC5jPTYzPXN0YXRpYyB2b2lkIGllZWU4MDIxMV90eF9sZWRfZGVhY3RpdmF0ZShzdHJ1Y3QgbGVkX2NsYXNzZGV2ICpsZWRfY2Rldilcbi0tXG5uZXQvbWFjODAyMTEvbGVkLmMtNzEtXG5uZXQvbWFjODAyMTEvbGVkLmM6NzI6c3RhdGljIGludCBpZWVlODAyMTFfcnhfbGVkX2FjdGl2YXRlKHN0cnVjdCBsZWRfY2xhc3NkZXYgKmxlZF9jZGV2KVxubmV0L21hYzgwMjExL2xlZC5jLTczLXtcbi0tXG5uZXQvbWFjODAyMTEvbGVkLmMtODItXG5uZXQvbWFjODAyMTEvbGVkLmM6ODM6c3RhdGljIHZvaWQgaWVlZTgwMjExX3J4X2xlZF9kZWFjdGl2YXRlKHN0cnVjdCBsZWRfY2xhc3NkZXYgKmxlZF9jZGV2KVxubmV0L21hYzgwMjExL2xlZC5jLTg0LXtcbi0tXG5uZXQvbWFjODAyMTEvbGVkLmM9MTUyPXZvaWQgaWVlZTgwMjExX2xlZF9pbml0KHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsKVxuLS1cbm5ldC9tYWM4MDIxMS9sZWQuYy0xNTQtXHRhdG9taWNfc2V0KFx1MDAyNmxvY2FsLVx1MDAzZXJ4X2xlZF9hY3RpdmUsIDApO1xubmV0L21hYzgwMjExL2xlZC5jOjE1NTpcdGxvY2FsLVx1MDAzZXJ4X2xlZC5hY3RpdmF0ZSA9IGllZWU4MDIxMV9yeF9sZWRfYWN0aXZhdGU7XG5uZXQvbWFjODAyMTEvbGVkLmM6MTU2Olx0bG9jYWwtXHUwMDNlcnhfbGVkLmRlYWN0aXZhdGUgPSBpZWVlODAyMTFfcnhfbGVkX2RlYWN0aXZhdGU7XG5uZXQvbWFjODAyMTEvbGVkLmMtMTU3LVx0aWYgKGxvY2FsLVx1MDAzZXJ4X2xlZC5uYW1lIFx1MDAyNlx1MDAyNiBsZWRfdHJpZ2dlcl9yZWdpc3RlcihcdTAwMjZsb2NhbC1cdTAwM2VyeF9sZWQpKSB7XG4tLVxubmV0L21hYzgwMjExL21lc2guYz0xNDQ0PXN0YXRpYyB2b2lkIGllZWU4MDIxMV9tZXNoX3J4X2Jjbl9wcmVzcChzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSxcbi0tXG5uZXQvbWFjODAyMTEvbWVzaC5jLTE0NDYtXHRcdFx0XHRcdHNpemVfdCBsZW4sXG5uZXQvbWFjODAyMTEvbWVzaC5jOjE0NDc6XHRcdFx0XHRcdHN0cnVjdCBpZWVlODAyMTFfcnhfc3RhdHVzICpyeF9zdGF0dXMpXG5uZXQvbWFjODAyMTEvbWVzaC5jLTE0NDgte1xuLS1cbm5ldC9tYWM4MDIxMS9tZXNoLmM9MTY0OT1zdGF0aWMgdm9pZCBpZWVlODAyMTFfbWVzaF9yeF9tZ210X2FjdGlvbihzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSxcbi0tXG5uZXQvbWFjODAyMTEvbWVzaC5jLTE2NTEtXHRcdFx0XHRcdCAgc2l6ZV90IGxlbixcbm5ldC9tYWM4MDIxMS9tZXNoLmM6MTY1MjpcdFx0XHRcdFx0ICBzdHJ1Y3QgaWVlZTgwMjExX3J4X3N0YXR1cyAqcnhfc3RhdHVzKVxubmV0L21hYzgwMjExL21lc2guYy0xNjUzLXtcbi0tXG5uZXQvbWFjODAyMTEvbWVzaC5jPTE2NzQ9dm9pZCBpZWVlODAyMTFfbWVzaF9yeF9xdWV1ZWRfbWdtdChzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSxcbi0tXG5uZXQvbWFjODAyMTEvbWVzaC5jLTE2NzYte1xubmV0L21hYzgwMjExL21lc2guYzoxNjc3Olx0c3RydWN0IGllZWU4MDIxMV9yeF9zdGF0dXMgKnJ4X3N0YXR1cztcbm5ldC9tYWM4MDIxMS9tZXNoLmMtMTY3OC1cdHN0cnVjdCBpZWVlODAyMTFfbWdtdCAqbWdtdDtcbi0tXG5uZXQvbWFjODAyMTEvbWVzaC5oPTMzMj12b2lkIG1lc2hfbmVpZ2hib3VyX3VwZGF0ZShzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSxcbm5ldC9tYWM4MDIxMS9tZXNoLmgtMzMzLVx0XHRcdCAgIHU4ICpod19hZGRyLCBzdHJ1Y3QgaWVlZTgwMl8xMV9lbGVtcyAqaWUsXG5uZXQvbWFjODAyMTEvbWVzaC5oOjMzNDpcdFx0XHQgICBzdHJ1Y3QgaWVlZTgwMjExX3J4X3N0YXR1cyAqcnhfc3RhdHVzKTtcbm5ldC9tYWM4MDIxMS9tZXNoLmgtMzM1LWJvb2wgbWVzaF9wZWVyX2FjY2VwdHNfcGxpbmtzKHN0cnVjdCBpZWVlODAyXzExX2VsZW1zICppZSk7XG4tLVxubmV0L21hYzgwMjExL21lc2guaD0zNDI9dm9pZCBtZXNoX3J4X3BsaW5rX2ZyYW1lKHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLFxubmV0L21hYzgwMjExL21lc2guaC0zNDMtXHRcdFx0IHN0cnVjdCBpZWVlODAyMTFfbWdtdCAqbWdtdCwgc2l6ZV90IGxlbixcbm5ldC9tYWM4MDIxMS9tZXNoLmg6MzQ0Olx0XHRcdCBzdHJ1Y3QgaWVlZTgwMjExX3J4X3N0YXR1cyAqcnhfc3RhdHVzKTtcbm5ldC9tYWM4MDIxMS9tZXNoLmgtMzQ1LXZvaWQgbWVzaF9zdGFfY2xlYW51cChzdHJ1Y3Qgc3RhX2luZm8gKnN0YSk7XG4tLVxubmV0L21hYzgwMjExL21lc2hfcGxpbmsuYz01NTE9bWVzaF9zdGFfaW5mb19hbGxvYyhzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSwgdTggKmFkZHIsXG5uZXQvbWFjODAyMTEvbWVzaF9wbGluay5jLTU1Mi1cdFx0ICAgIHN0cnVjdCBpZWVlODAyXzExX2VsZW1zICplbGVtcyxcbm5ldC9tYWM4MDIxMS9tZXNoX3BsaW5rLmM6NTUzOlx0XHQgICAgc3RydWN0IGllZWU4MDIxMV9yeF9zdGF0dXMgKnJ4X3N0YXR1cylcbm5ldC9tYWM4MDIxMS9tZXNoX3BsaW5rLmMtNTU0LXtcbi0tXG5uZXQvbWFjODAyMTEvbWVzaF9wbGluay5jPTU5MD1tZXNoX3N0YV9pbmZvX2dldChzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSxcbm5ldC9tYWM4MDIxMS9tZXNoX3BsaW5rLmMtNTkxLVx0XHQgIHU4ICphZGRyLCBzdHJ1Y3QgaWVlZTgwMl8xMV9lbGVtcyAqZWxlbXMsXG5uZXQvbWFjODAyMTEvbWVzaF9wbGluay5jOjU5MjpcdFx0ICBzdHJ1Y3QgaWVlZTgwMjExX3J4X3N0YXR1cyAqcnhfc3RhdHVzKSBfX2FjcXVpcmVzKFJDVSlcbm5ldC9tYWM4MDIxMS9tZXNoX3BsaW5rLmMtNTkzLXtcbi0tXG5uZXQvbWFjODAyMTEvbWVzaF9wbGluay5jPTYyOD12b2lkIG1lc2hfbmVpZ2hib3VyX3VwZGF0ZShzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSxcbi0tXG5uZXQvbWFjODAyMTEvbWVzaF9wbGluay5jLTYzMC1cdFx0XHQgICBzdHJ1Y3QgaWVlZTgwMl8xMV9lbGVtcyAqZWxlbXMsXG5uZXQvbWFjODAyMTEvbWVzaF9wbGluay5jOjYzMTpcdFx0XHQgICBzdHJ1Y3QgaWVlZTgwMjExX3J4X3N0YXR1cyAqcnhfc3RhdHVzKVxubmV0L21hYzgwMjExL21lc2hfcGxpbmsuYy02MzIte1xuLS1cbm5ldC9tYWM4MDIxMS9tZXNoX3BsaW5rLmM9MTEyMD1tZXNoX3Byb2Nlc3NfcGxpbmtfZnJhbWUoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsXG4tLVxubmV0L21hYzgwMjExL21lc2hfcGxpbmsuYy0xMTIyLVx0XHRcdCBzdHJ1Y3QgaWVlZTgwMl8xMV9lbGVtcyAqZWxlbXMsXG5uZXQvbWFjODAyMTEvbWVzaF9wbGluay5jOjExMjM6XHRcdFx0IHN0cnVjdCBpZWVlODAyMTFfcnhfc3RhdHVzICpyeF9zdGF0dXMpXG5uZXQvbWFjODAyMTEvbWVzaF9wbGluay5jLTExMjQte1xuLS1cbm5ldC9tYWM4MDIxMS9tZXNoX3BsaW5rLmM9MTIyMT12b2lkIG1lc2hfcnhfcGxpbmtfZnJhbWUoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsXG5uZXQvbWFjODAyMTEvbWVzaF9wbGluay5jLTEyMjItXHRcdFx0IHN0cnVjdCBpZWVlODAyMTFfbWdtdCAqbWdtdCwgc2l6ZV90IGxlbixcbm5ldC9tYWM4MDIxMS9tZXNoX3BsaW5rLmM6MTIyMzpcdFx0XHQgc3RydWN0IGllZWU4MDIxMV9yeF9zdGF0dXMgKnJ4X3N0YXR1cylcbm5ldC9tYWM4MDIxMS9tZXNoX3BsaW5rLmMtMTIyNC17XG4tLVxubmV0L21hYzgwMjExL21lc2hfc3luYy5jPTgzPW1lc2hfc3luY19vZmZzZXRfcnhfYmNuX3ByZXNwKHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLCB1MTYgc3R5cGUsXG4tLVxubmV0L21hYzgwMjExL21lc2hfc3luYy5jLTg1LVx0XHRcdCAgICAgIGNvbnN0IHN0cnVjdCBpZWVlODAyMTFfbWVzaGNvbmZfaWUgKm1lc2hfY2ZnLFxubmV0L21hYzgwMjExL21lc2hfc3luYy5jOjg2Olx0XHRcdCAgICAgIHN0cnVjdCBpZWVlODAyMTFfcnhfc3RhdHVzICpyeF9zdGF0dXMpXG5uZXQvbWFjODAyMTEvbWVzaF9zeW5jLmMtODcte1xuLS1cbm5ldC9tYWM4MDIxMS9tbG1lLmM9NTM4Nj1zdGF0aWMgYm9vbCBpZWVlODAyMTFfbWFya19zdGFfYXV0aChzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSlcbi0tXG5uZXQvbWFjODAyMTEvbWxtZS5jLTU0MTMtXG5uZXQvbWFjODAyMTEvbWxtZS5jOjU0MTQ6c3RhdGljIHZvaWQgaWVlZTgwMjExX3J4X21nbXRfYXV0aChzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSxcbm5ldC9tYWM4MDIxMS9tbG1lLmMtNTQxNS1cdFx0XHRcdCAgIHN0cnVjdCBpZWVlODAyMTFfbWdtdCAqbWdtdCwgc2l6ZV90IGxlbilcbi0tXG5uZXQvbWFjODAyMTEvbWxtZS5jPTU1OTI9Y29uc3QgY2hhciAqaWVlZTgwMjExX2dldF9yZWFzb25fY29kZV9zdHJpbmcodTE2IHJlYXNvbl9jb2RlKVxuLS1cbm5ldC9tYWM4MDIxMS9tbG1lLmMtNTY0NS1cbm5ldC9tYWM4MDIxMS9tbG1lLmM6NTY0NjpzdGF0aWMgdm9pZCBpZWVlODAyMTFfcnhfbWdtdF9kZWF1dGgoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsXG5uZXQvbWFjODAyMTEvbWxtZS5jLTU2NDctXHRcdFx0XHQgICAgIHN0cnVjdCBpZWVlODAyMTFfbWdtdCAqbWdtdCwgc2l6ZV90IGxlbilcbi0tXG5uZXQvbWFjODAyMTEvbWxtZS5jLTU2OTEtXG5uZXQvbWFjODAyMTEvbWxtZS5jOjU2OTI6c3RhdGljIHZvaWQgaWVlZTgwMjExX3J4X21nbXRfZGlzYXNzb2Moc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsXG5uZXQvbWFjODAyMTEvbWxtZS5jLTU2OTMtXHRcdFx0XHQgICAgICAgc3RydWN0IGllZWU4MDIxMV9tZ210ICptZ210LCBzaXplX3QgbGVuKVxuLS1cbm5ldC9tYWM4MDIxMS9tbG1lLmM9Njk3OT1zdGF0aWMgYm9vbCBpZWVlODAyMTFfYXNzb2Nfc3VjY2VzcyhzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSxcbi0tXG5uZXQvbWFjODAyMTEvbWxtZS5jLTcxODktXG5uZXQvbWFjODAyMTEvbWxtZS5jOjcxOTA6c3RhdGljIHZvaWQgaWVlZTgwMjExX3J4X21nbXRfYXNzb2NfcmVzcChzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSxcbm5ldC9tYWM4MDIxMS9tbG1lLmMtNzE5MS1cdFx0XHRcdFx0IHN0cnVjdCBpZWVlODAyMTFfbWdtdCAqbWdtdCxcbi0tXG5uZXQvbWFjODAyMTEvbWxtZS5jLTc0MjUtXG5uZXQvbWFjODAyMTEvbWxtZS5jOjc0MjY6c3RhdGljIHZvaWQgaWVlZTgwMjExX3J4X2Jzc19pbmZvKHN0cnVjdCBpZWVlODAyMTFfbGlua19kYXRhICpsaW5rLFxubmV0L21hYzgwMjExL21sbWUuYy03NDI3LVx0XHRcdFx0ICBzdHJ1Y3QgaWVlZTgwMjExX21nbXQgKm1nbXQsIHNpemVfdCBsZW4sXG5uZXQvbWFjODAyMTEvbWxtZS5jOjc0Mjg6XHRcdFx0XHQgIHN0cnVjdCBpZWVlODAyMTFfcnhfc3RhdHVzICpyeF9zdGF0dXMpXG5uZXQvbWFjODAyMTEvbWxtZS5jLTc0Mjkte1xuLS1cbm5ldC9tYWM4MDIxMS9tbG1lLmMtNzQzNy1cdGNoYW5uZWwgPSBpZWVlODAyMTFfZ2V0X2NoYW5uZWxfa2h6KGxvY2FsLVx1MDAzZWh3LndpcGh5LFxubmV0L21hYzgwMjExL21sbWUuYzo3NDM4Olx0XHRcdFx0XHRpZWVlODAyMTFfcnhfc3RhdHVzX3RvX2toeihyeF9zdGF0dXMpKTtcbm5ldC9tYWM4MDIxMS9tbG1lLmMtNzQzOS1cdGlmICghY2hhbm5lbClcbi0tXG5uZXQvbWFjODAyMTEvbWxtZS5jLTc0NDQtXHRcdGxpbmstXHUwMDNlY29uZi1cdTAwM2ViZWFjb25fcmF0ZSA9IGJzcy1cdTAwM2ViZWFjb25fcmF0ZTtcbm5ldC9tYWM4MDIxMS9tbG1lLmM6NzQ0NTpcdFx0aWVlZTgwMjExX3J4X2Jzc19wdXQobG9jYWwsIGJzcyk7XG5uZXQvbWFjODAyMTEvbWxtZS5jLTc0NDYtXHR9XG4tLVxubmV0L21hYzgwMjExL21sbWUuYy03NDQ5LVxubmV0L21hYzgwMjExL21sbWUuYzo3NDUwOnN0YXRpYyB2b2lkIGllZWU4MDIxMV9yeF9tZ210X3Byb2JlX3Jlc3Aoc3RydWN0IGllZWU4MDIxMV9saW5rX2RhdGEgKmxpbmssXG5uZXQvbWFjODAyMTEvbWxtZS5jLTc0NTEtXHRcdFx0XHRcdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuLS1cbm5ldC9tYWM4MDIxMS9tbG1lLmMtNzQ1NS1cdHN0cnVjdCBpZWVlODAyMTFfaWZfbWFuYWdlZCAqaWZtZ2Q7XG5uZXQvbWFjODAyMTEvbWxtZS5jOjc0NTY6XHRzdHJ1Y3QgaWVlZTgwMjExX3J4X3N0YXR1cyAqcnhfc3RhdHVzID0gKHZvaWQgKikgc2tiLVx1MDAzZWNiO1xubmV0L21hYzgwMjExL21sbWUuYy03NDU3LVx0c3RydWN0IGllZWU4MDIxMV9jaGFubmVsICpjaGFubmVsO1xuLS1cbm5ldC9tYWM4MDIxMS9tbG1lLmMtNzQ3MS1cdGNoYW5uZWwgPSBpZWVlODAyMTFfZ2V0X2NoYW5uZWxfa2h6KHNkYXRhLVx1MDAzZWxvY2FsLVx1MDAzZWh3LndpcGh5LFxubmV0L21hYzgwMjExL21sbWUuYzo3NDcyOlx0XHRcdFx0XHQgICAgaWVlZTgwMjExX3J4X3N0YXR1c190b19raHoocnhfc3RhdHVzKSk7XG5uZXQvbWFjODAyMTEvbWxtZS5jLTc0NzMtXHRpZiAoIWNoYW5uZWwpXG4tLVxubmV0L21hYzgwMjExL21sbWUuYy03NDg0LVxubmV0L21hYzgwMjExL21sbWUuYzo3NDg1Olx0aWVlZTgwMjExX3J4X2Jzc19pbmZvKGxpbmssIG1nbXQsIGxlbiwgcnhfc3RhdHVzKTtcbm5ldC9tYWM4MDIxMS9tbG1lLmMtNzQ4Ni1cbi0tXG5uZXQvbWFjODAyMTEvbWxtZS5jPTc1MTY9c3RhdGljIHZvaWQgaWVlZTgwMjExX2hhbmRsZV9iZWFjb25fc2lnKHN0cnVjdCBpZWVlODAyMTFfbGlua19kYXRhICpsaW5rLFxuLS1cbm5ldC9tYWM4MDIxMS9tbG1lLmMtNzUxOS1cdFx0XHRcdFx0c3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwsXG5uZXQvbWFjODAyMTEvbWxtZS5jOjc1MjA6XHRcdFx0XHRcdHN0cnVjdCBpZWVlODAyMTFfcnhfc3RhdHVzICpyeF9zdGF0dXMpXG5uZXQvbWFjODAyMTEvbWxtZS5jLTc1MjEte1xuLS1cbm5ldC9tYWM4MDIxMS9tbG1lLmMtNzYxNC1cbm5ldC9tYWM4MDIxMS9tbG1lLmM6NzYxNTpzdGF0aWMgYm9vbCBpZWVlODAyMTFfcnhfb3VyX2JlYWNvbihjb25zdCB1OCAqdHhfYnNzaWQsXG5uZXQvbWFjODAyMTEvbWxtZS5jLTc2MTYtXHRcdFx0XHQgICAgc3RydWN0IGNmZzgwMjExX2JzcyAqYnNzKVxuLS1cbm5ldC9tYWM4MDIxMS9tbG1lLmM9ODA3OD1zdGF0aWMgYm9vbFxubmV0L21hYzgwMjExL21sbWUuYzo4MDc5OmllZWU4MDIxMV9yeF9iZWFjb25fZnJlcV92YWxpZChzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbCxcbm5ldC9tYWM4MDIxMS9tbG1lLmMtODA4MC1cdFx0XHQgICAgICAgc3RydWN0IGllZWU4MDIxMV9tZ210ICptZ210LFxubmV0L21hYzgwMjExL21sbWUuYzo4MDgxOlx0XHRcdCAgICAgICBzdHJ1Y3QgaWVlZTgwMjExX3J4X3N0YXR1cyAqcnhfc3RhdHVzLFxubmV0L21hYzgwMjExL21sbWUuYy04MDgyLVx0XHRcdCAgICAgICBzdHJ1Y3QgaWVlZTgwMjExX2NoYW5jdHhfY29uZiAqY2hhbmN0eClcbi0tXG5uZXQvbWFjODAyMTEvbWxtZS5jLTgwODYtXHR1MzIgcHJpX2toeiA9IGllZWU4MDIxMV9jaGFubmVsX3RvX2toeihjaGFuY3R4LVx1MDAzZWRlZi5jaGFuKTtcbm5ldC9tYWM4MDIxMS9tbG1lLmM6ODA4NzpcdHUzMiByeF9raHogPSBpZWVlODAyMTFfcnhfc3RhdHVzX3RvX2toeihyeF9zdGF0dXMpO1xubmV0L21hYzgwMjExL21sbWUuYy04MDg4LVxuLS1cbm5ldC9tYWM4MDIxMS9tbG1lLmMtODEwOS1cbm5ldC9tYWM4MDIxMS9tbG1lLmM6ODExMDpzdGF0aWMgdm9pZCBpZWVlODAyMTFfcnhfbWdtdF9iZWFjb24oc3RydWN0IGllZWU4MDIxMV9saW5rX2RhdGEgKmxpbmssXG5uZXQvbWFjODAyMTEvbWxtZS5jLTgxMTEtXHRcdFx0XHQgICAgIHN0cnVjdCBpZWVlODAyMTFfaGRyICpoZHIsIHNpemVfdCBsZW4sXG5uZXQvbWFjODAyMTEvbWxtZS5jOjgxMTI6XHRcdFx0XHQgICAgIHN0cnVjdCBpZWVlODAyMTFfcnhfc3RhdHVzICpyeF9zdGF0dXMpXG5uZXQvbWFjODAyMTEvbWxtZS5jLTgxMTMte1xuLS1cbm5ldC9tYWM4MDIxMS9tbG1lLmMtODE2Mi1cbm5ldC9tYWM4MDIxMS9tbG1lLmM6ODE2MzpcdGlmICghaWVlZTgwMjExX3J4X2JlYWNvbl9mcmVxX3ZhbGlkKGxvY2FsLCBtZ210LCByeF9zdGF0dXMsXG5uZXQvbWFjODAyMTEvbWxtZS5jLTgxNjQtXHRcdFx0XHRcdCAgICBjaGFuY3R4X2NvbmYpKSB7XG4tLVxubmV0L21hYzgwMjExL21sbWUuYy04MTcyLVx0ICAgICFXQVJOX09OKGllZWU4MDIxMV92aWZfaXNfbWxkKFx1MDAyNnNkYXRhLVx1MDAzZXZpZikpIFx1MDAyNlx1MDAyNlxubmV0L21hYzgwMjExL21sbWUuYzo4MTczOlx0ICAgIGllZWU4MDIxMV9yeF9vdXJfYmVhY29uKGJzc2lkLCBpZm1nZC1cdTAwM2Vhc3NvY19kYXRhLVx1MDAzZWxpbmtbMF0uYnNzKSkge1xubmV0L21hYzgwMjExL21sbWUuYy04MTc0LVx0XHRwYXJzZV9wYXJhbXMuYnNzID0gaWZtZ2QtXHUwMDNlYXNzb2NfZGF0YS1cdTAwM2VsaW5rWzBdLmJzcztcbi0tXG5uZXQvbWFjODAyMTEvbWxtZS5jLTgxNzgtXG5uZXQvbWFjODAyMTEvbWxtZS5jOjgxNzk6XHRcdGllZWU4MDIxMV9yeF9ic3NfaW5mbyhsaW5rLCBtZ210LCBsZW4sIHJ4X3N0YXR1cyk7XG5uZXQvbWFjODAyMTEvbWxtZS5jLTgxODAtXG4tLVxubmV0L21hYzgwMjExL21sbWUuYy04MjE0LVx0aWYgKCFpZm1nZC1cdTAwM2Vhc3NvY2lhdGVkIHx8XG5uZXQvbWFjODAyMTEvbWxtZS5jOjgyMTU6XHQgICAgIWllZWU4MDIxMV9yeF9vdXJfYmVhY29uKGJzc2lkLCBic3NfY29uZi1cdTAwM2Vic3MpKVxubmV0L21hYzgwMjExL21sbWUuYy04MjE2LVx0XHRyZXR1cm47XG4tLVxubmV0L21hYzgwMjExL21sbWUuYy04MzUwLVxubmV0L21hYzgwMjExL21sbWUuYzo4MzUxOlx0aWVlZTgwMjExX3J4X2Jzc19pbmZvKGxpbmssIG1nbXQsIGxlbiwgcnhfc3RhdHVzKTtcbm5ldC9tYWM4MDIxMS9tbG1lLmMtODM1Mi1cbi0tXG5uZXQvbWFjODAyMTEvbWxtZS5jPTg5MDg9c3RhdGljIHZvaWQgaWVlZTgwMjExX3N0YV9yeF9xdWV1ZWRfZXh0KHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLFxuLS1cbm5ldC9tYWM4MDIxMS9tbG1lLmMtODkxMS1cdHN0cnVjdCBpZWVlODAyMTFfbGlua19kYXRhICpsaW5rID0gXHUwMDI2c2RhdGEtXHUwMDNlZGVmbGluaztcbm5ldC9tYWM4MDIxMS9tbG1lLmM6ODkxMjpcdHN0cnVjdCBpZWVlODAyMTFfcnhfc3RhdHVzICpyeF9zdGF0dXM7XG5uZXQvbWFjODAyMTEvbWxtZS5jLTg5MTMtXHRzdHJ1Y3QgaWVlZTgwMjExX2hkciAqaGRyO1xuLS1cbm5ldC9tYWM4MDIxMS9tbG1lLmMtODkxNy1cbm5ldC9tYWM4MDIxMS9tbG1lLmM6ODkxODpcdHJ4X3N0YXR1cyA9IChzdHJ1Y3QgaWVlZTgwMjExX3J4X3N0YXR1cyAqKSBza2ItXHUwMDNlY2I7XG5uZXQvbWFjODAyMTEvbWxtZS5jLTg5MTktXHRoZHIgPSAoc3RydWN0IGllZWU4MDIxMV9oZHIgKikgc2tiLVx1MDAzZWRhdGE7XG4tLVxubmV0L21hYzgwMjExL21sbWUuYy04OTIzLVx0Y2FzZSBJRUVFODAyMTFfU1RZUEVfUzFHX0JFQUNPTjpcbm5ldC9tYWM4MDIxMS9tbG1lLmM6ODkyNDpcdFx0aWVlZTgwMjExX3J4X21nbXRfYmVhY29uKGxpbmssIGhkciwgc2tiLVx1MDAzZWxlbiwgcnhfc3RhdHVzKTtcbm5ldC9tYWM4MDIxMS9tbG1lLmMtODkyNS1cdFx0YnJlYWs7XG4tLVxubmV0L21hYzgwMjExL21sbWUuYz0xMTgxMj12b2lkIGllZWU4MDIxMV9zdGFfcnhfcXVldWVkX2ZyYW1lKHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLFxuLS1cbm5ldC9tYWM4MDIxMS9tbG1lLmMtMTE4MTUtXHRzdHJ1Y3QgaWVlZTgwMjExX2xpbmtfZGF0YSAqbGluayA9IFx1MDAyNnNkYXRhLVx1MDAzZWRlZmxpbms7XG5uZXQvbWFjODAyMTEvbWxtZS5jOjExODE2Olx0c3RydWN0IGllZWU4MDIxMV9yeF9zdGF0dXMgKnJ4X3N0YXR1cztcbm5ldC9tYWM4MDIxMS9tbG1lLmMtMTE4MTctXHRzdHJ1Y3QgaWVlZTgwMl8xMV9lbGVtcyAqZWxlbXM7XG4tLVxubmV0L21hYzgwMjExL21sbWUuYy0xMTgzMC1cbm5ldC9tYWM4MDIxMS9tbG1lLmM6MTE4MzE6XHRyeF9zdGF0dXMgPSAoc3RydWN0IGllZWU4MDIxMV9yeF9zdGF0dXMgKikgc2tiLVx1MDAzZWNiO1xubmV0L21hYzgwMjExL21sbWUuYy0xMTgzMi1cdGZjID0gbGUxNl90b19jcHUobWdtdC1cdTAwM2VmcmFtZV9jb250cm9sKTtcbi0tXG5uZXQvbWFjODAyMTEvbWxtZS5jLTExODQyLVx0Y2FzZSBJRUVFODAyMTFfU1RZUEVfQkVBQ09OOlxubmV0L21hYzgwMjExL21sbWUuYzoxMTg0MzpcdFx0aWVlZTgwMjExX3J4X21nbXRfYmVhY29uKGxpbmssICh2b2lkICopbWdtdCxcbm5ldC9tYWM4MDIxMS9tbG1lLmMtMTE4NDQtXHRcdFx0XHRcdCBza2ItXHUwMDNlbGVuLCByeF9zdGF0dXMpO1xuLS1cbm5ldC9tYWM4MDIxMS9tbG1lLmMtMTE4NDYtXHRjYXNlIElFRUU4MDIxMV9TVFlQRV9QUk9CRV9SRVNQOlxubmV0L21hYzgwMjExL21sbWUuYzoxMTg0NzpcdFx0aWVlZTgwMjExX3J4X21nbXRfcHJvYmVfcmVzcChsaW5rLCBza2IpO1xubmV0L21hYzgwMjExL21sbWUuYy0xMTg0OC1cdFx0YnJlYWs7XG5uZXQvbWFjODAyMTEvbWxtZS5jLTExODQ5LVx0Y2FzZSBJRUVFODAyMTFfU1RZUEVfQVVUSDpcbm5ldC9tYWM4MDIxMS9tbG1lLmM6MTE4NTA6XHRcdGllZWU4MDIxMV9yeF9tZ210X2F1dGgoc2RhdGEsIG1nbXQsIHNrYi1cdTAwM2VsZW4pO1xubmV0L21hYzgwMjExL21sbWUuYy0xMTg1MS1cdFx0YnJlYWs7XG5uZXQvbWFjODAyMTEvbWxtZS5jLTExODUyLVx0Y2FzZSBJRUVFODAyMTFfU1RZUEVfREVBVVRIOlxubmV0L21hYzgwMjExL21sbWUuYzoxMTg1MzpcdFx0aWVlZTgwMjExX3J4X21nbXRfZGVhdXRoKHNkYXRhLCBtZ210LCBza2ItXHUwMDNlbGVuKTtcbm5ldC9tYWM4MDIxMS9tbG1lLmMtMTE4NTQtXHRcdGJyZWFrO1xubmV0L21hYzgwMjExL21sbWUuYy0xMTg1NS1cdGNhc2UgSUVFRTgwMjExX1NUWVBFX0RJU0FTU09DOlxubmV0L21hYzgwMjExL21sbWUuYzoxMTg1NjpcdFx0aWVlZTgwMjExX3J4X21nbXRfZGlzYXNzb2Moc2RhdGEsIG1nbXQsIHNrYi1cdTAwM2VsZW4pO1xubmV0L21hYzgwMjExL21sbWUuYy0xMTg1Ny1cdFx0YnJlYWs7XG4tLVxubmV0L21hYzgwMjExL21sbWUuYy0xMTg1OS1cdGNhc2UgSUVFRTgwMjExX1NUWVBFX1JFQVNTT0NfUkVTUDpcbm5ldC9tYWM4MDIxMS9tbG1lLmM6MTE4NjA6XHRcdGllZWU4MDIxMV9yeF9tZ210X2Fzc29jX3Jlc3Aoc2RhdGEsIG1nbXQsIHNrYi1cdTAwM2VsZW4pO1xubmV0L21hYzgwMjExL21sbWUuYy0xMTg2MS1cdFx0YnJlYWs7XG4tLVxubmV0L21hYzgwMjExL3J4LmM9NDM9c3RhdGljIHN0cnVjdCBza19idWZmICppZWVlODAyMTFfY2xlYW5fc2tiKHN0cnVjdCBza19idWZmICpza2IsXG4tLVxubmV0L21hYzgwMjExL3J4LmMtNDYte1xubmV0L21hYzgwMjExL3J4LmM6NDc6XHRzdHJ1Y3QgaWVlZTgwMjExX3J4X3N0YXR1cyAqc3RhdHVzID0gSUVFRTgwMjExX1NLQl9SWENCKHNrYik7XG5uZXQvbWFjODAyMTEvcnguYy00OC1cdHN0cnVjdCBpZWVlODAyMTFfaGRyICpoZHI7XG4tLVxubmV0L21hYzgwMjExL3J4LmM9OTM9c3RhdGljIGlubGluZSBib29sIHNob3VsZF9kcm9wX2ZyYW1lKHN0cnVjdCBza19idWZmICpza2IsIGludCBwcmVzZW50X2Zjc19sZW4sXG4tLVxubmV0L21hYzgwMjExL3J4LmMtOTUte1xubmV0L21hYzgwMjExL3J4LmM6OTY6XHRzdHJ1Y3QgaWVlZTgwMjExX3J4X3N0YXR1cyAqc3RhdHVzID0gSUVFRTgwMjExX1NLQl9SWENCKHNrYik7XG5uZXQvbWFjODAyMTEvcnguYy05Ny1cdHN0cnVjdCBpZWVlODAyMTFfaGRyICpoZHI7XG4tLVxubmV0L21hYzgwMjExL3J4LmM9MTE4PXN0YXRpYyBpbnRcbm5ldC9tYWM4MDIxMS9yeC5jOjExOTppZWVlODAyMTFfcnhfcmFkaW90YXBfaGRybGVuKHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsLFxubmV0L21hYzgwMjExL3J4LmM6MTIwOlx0XHRcdCAgICAgc3RydWN0IGllZWU4MDIxMV9yeF9zdGF0dXMgKnN0YXR1cyxcbm5ldC9tYWM4MDIxMS9yeC5jLTEyMS1cdFx0XHQgICAgIHN0cnVjdCBza19idWZmICpza2IpXG4tLVxubmV0L21hYzgwMjExL3J4LmM9MjI0PXN0YXRpYyB2b2lkIF9faWVlZTgwMjExX3F1ZXVlX3NrYl90b19pZmFjZShzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSxcbi0tXG5uZXQvbWFjODAyMTEvcnguYy0yMjgte1xubmV0L21hYzgwMjExL3J4LmM6MjI5Olx0c3RydWN0IGllZWU4MDIxMV9yeF9zdGF0dXMgKnN0YXR1cyA9IElFRUU4MDIxMV9TS0JfUlhDQihza2IpO1xubmV0L21hYzgwMjExL3J4LmMtMjMwLVxuLS1cbm5ldC9tYWM4MDIxMS9yeC5jPTMxMz1pZWVlODAyMTFfYWRkX3J4X3JhZGlvdGFwX2hlYWRlcihzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbCxcbi0tXG5uZXQvbWFjODAyMTEvcnguYy0zMTcte1xubmV0L21hYzgwMjExL3J4LmM6MzE4Olx0c3RydWN0IGllZWU4MDIxMV9yeF9zdGF0dXMgKnN0YXR1cyA9IElFRUU4MDIxMV9TS0JfUlhDQihza2IpO1xubmV0L21hYzgwMjExL3J4LmMtMzE5LVx0c3RydWN0IGllZWU4MDIxMV9yYWRpb3RhcF9oZWFkZXIgKnJ0aGRyO1xuLS1cbm5ldC9tYWM4MDIxMS9yeC5jPTc0Mj1pZWVlODAyMTFfbWFrZV9tb25pdG9yX3NrYihzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbCxcbi0tXG5uZXQvbWFjODAyMTEvcnguYy03NDYte1xubmV0L21hYzgwMjExL3J4LmM6NzQ3Olx0c3RydWN0IGllZWU4MDIxMV9yeF9zdGF0dXMgKnN0YXR1cyA9IElFRUU4MDIxMV9TS0JfUlhDQigqb3JpZ3NrYik7XG5uZXQvbWFjODAyMTEvcnguYy03NDgtXHRpbnQgcnRfaGRybGVuLCBuZWVkZWRfaGVhZHJvb207XG4tLVxubmV0L21hYzgwMjExL3J4LmMtNzUxLVx0Lyogcm9vbSBmb3IgdGhlIHJhZGlvdGFwIGhlYWRlciBiYXNlZCBvbiBkcml2ZXIgZmVhdHVyZXMgKi9cbm5ldC9tYWM4MDIxMS9yeC5jOjc1MjpcdHJ0X2hkcmxlbiA9IGllZWU4MDIxMV9yeF9yYWRpb3RhcF9oZHJsZW4obG9jYWwsIHN0YXR1cywgKm9yaWdza2IpO1xubmV0L21hYzgwMjExL3J4LmMtNzUzLVx0bmVlZGVkX2hlYWRyb29tID0gcnRfaGRybGVuIC0gcnRhcF9zcGFjZTtcbi0tXG5uZXQvbWFjODAyMTEvcnguYz03OTY9aWVlZTgwMjExX3ZhbGlkYXRlX21vbml0b3JfcmFkaW8oc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsXG5uZXQvbWFjODAyMTEvcnguYy03OTctXHRcdFx0XHQgc3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwsXG5uZXQvbWFjODAyMTEvcnguYzo3OTg6XHRcdFx0XHQgc3RydWN0IGllZWU4MDIxMV9yeF9zdGF0dXMgKnN0YXR1cylcbm5ldC9tYWM4MDIxMS9yeC5jLTc5OS17XG4tLVxubmV0L21hYzgwMjExL3J4LmM9ODQ1PXN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqXG5uZXQvbWFjODAyMTEvcnguYzo4NDY6aWVlZTgwMjExX3J4X21vbml0b3Ioc3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwsIHN0cnVjdCBza19idWZmICpvcmlnc2tiLFxubmV0L21hYzgwMjExL3J4LmMtODQ3LVx0XHQgICAgIHN0cnVjdCBpZWVlODAyMTFfcmF0ZSAqcmF0ZSlcbm5ldC9tYWM4MDIxMS9yeC5jLTg0OC17XG5uZXQvbWFjODAyMTEvcnguYzo4NDk6XHRzdHJ1Y3QgaWVlZTgwMjExX3J4X3N0YXR1cyAqc3RhdHVzID0gSUVFRTgwMjExX1NLQl9SWENCKG9yaWdza2IpO1xubmV0L21hYzgwMjExL3J4LmMtODUwLVx0c3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsICpwcmV2X3NkYXRhID0gTlVMTDtcbi0tXG5uZXQvbWFjODAyMTEvcnguYy05ODMtXG5uZXQvbWFjODAyMTEvcnguYzo5ODQ6c3RhdGljIHZvaWQgaWVlZTgwMjExX3BhcnNlX3FvcyhzdHJ1Y3QgaWVlZTgwMjExX3J4X2RhdGEgKnJ4KVxubmV0L21hYzgwMjExL3J4LmMtOTg1LXtcbm5ldC9tYWM4MDIxMS9yeC5jLTk4Ni1cdHN0cnVjdCBpZWVlODAyMTFfaGRyICpoZHIgPSAoc3RydWN0IGllZWU4MDIxMV9oZHIgKilyeC1cdTAwM2Vza2ItXHUwMDNlZGF0YTtcbm5ldC9tYWM4MDIxMS9yeC5jOjk4NzpcdHN0cnVjdCBpZWVlODAyMTFfcnhfc3RhdHVzICpzdGF0dXMgPSBJRUVFODAyMTFfU0tCX1JYQ0IocngtXHUwMDNlc2tiKTtcbm5ldC9tYWM4MDIxMS9yeC5jLTk4OC1cdGludCB0aWQsIHNlcW5vX2lkeCwgc2VjdXJpdHlfaWR4O1xuLS1cbm5ldC9tYWM4MDIxMS9yeC5jLTEwNTAtICovXG5uZXQvbWFjODAyMTEvcnguYzoxMDUxOnN0YXRpYyB2b2lkIGllZWU4MDIxMV92ZXJpZnlfYWxpZ25tZW50KHN0cnVjdCBpZWVlODAyMTFfcnhfZGF0YSAqcngpXG5uZXQvbWFjODAyMTEvcnguYy0xMDUyLXtcbi0tXG5uZXQvbWFjODAyMTEvcnguYz0xMTEzPXN0YXRpYyBpbnQgaWVlZTgwMjExX2dldF9rZXlpZChzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuLS1cbm5ldC9tYWM4MDIxMS9yeC5jLTExMzAtXG5uZXQvbWFjODAyMTEvcnguYzoxMTMxOnN0YXRpYyBpZWVlODAyMTFfcnhfcmVzdWx0IGllZWU4MDIxMV9yeF9tZXNoX2NoZWNrKHN0cnVjdCBpZWVlODAyMTFfcnhfZGF0YSAqcngpXG5uZXQvbWFjODAyMTEvcnguYy0xMTMyLXtcbi0tXG5uZXQvbWFjODAyMTEvcnguYy0xMTg3LVxubmV0L21hYzgwMjExL3J4LmM6MTE4ODpzdGF0aWMgaW5saW5lIGJvb2wgaWVlZTgwMjExX3J4X3Jlb3JkZXJfcmVhZHkoc3RydWN0IHRpZF9hbXBkdV9yeCAqdGlkX2FnZ19yeCxcbm5ldC9tYWM4MDIxMS9yeC5jLTExODktXHRcdFx0XHRcdCAgICAgIGludCBpbmRleClcbi0tXG5uZXQvbWFjODAyMTEvcnguYy0xMTkyLVx0c3RydWN0IHNrX2J1ZmYgKnRhaWwgPSBza2JfcGVla190YWlsKGZyYW1lcyk7XG5uZXQvbWFjODAyMTEvcnguYzoxMTkzOlx0c3RydWN0IGllZWU4MDIxMV9yeF9zdGF0dXMgKnN0YXR1cztcbm5ldC9tYWM4MDIxMS9yeC5jLTExOTQtXG4tLVxubmV0L21hYzgwMjExL3J4LmM9MTIwOT1zdGF0aWMgdm9pZCBpZWVlODAyMTFfcmVsZWFzZV9yZW9yZGVyX2ZyYW1lKHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLFxuLS1cbm5ldC9tYWM4MDIxMS9yeC5jLTEyMTUtXHRzdHJ1Y3Qgc2tfYnVmZiAqc2tiO1xuXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI5IDA2OjAyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI2MDA2CgkJCQkJCQlvdXRwdXQ6IDM1CgkJCQkJCQl0aG91Z2h0czogNTcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRXhwbG9yaW5nIHRoZSBuZXQvbWFjODAyMTEvcnguYyBSWCBFbnRyeXBvaW50cyoqCgpPa2F5LCBzbyBJIG5lZWQgdG8gZ2V0IGEgaGFuZGxlIG9uIHRoZSBrZXkgZW50cnkgcG9pbnRzIGZvciByZWNlaXZlIHByb2Nlc3Npbmcgd2l0aGluIHRoZSBgbmV0L21hYzgwMjExYCBzdWJzeXN0ZW0uIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzIHRvIHplcm8gaW4gb24gYG5ldC9tYWM4MDIxMS9yeC5jYC4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hpY2ggZnVuY3Rpb25zIGFyZSByZXNwb25zaWJsZSBmb3IgaGFuZGxpbmcgaW5jb21pbmcgZnJhbWVzLgoKTXkgcGxhbiBpcyB0byBsb29rIGZvciBgRVhQT1JUX1NZTUJPTGAgdXNhZ2VzIHdpdGhpbiB0aGF0IGZpbGUsIGFzIHRoaXMgd2lsbCBoZWxwIG1lIGlkZW50aWZ5IHRoZSBmdW5jdGlvbnMgc3BlY2lmaWNhbGx5IGRlc2lnbmVkIGZvciBleHRlcm5hbCBhY2Nlc3MsIGxpa2VseSB0aGUgZW50cnkgcG9pbnRzIEkmIzM5O20gbG9va2luZyBmb3IuIEFsdGVybmF0aXZlbHksIEkgc2hvdWxkIHNjYW4gZm9yIGZ1bmN0aW9ucyB3aXRoaW4gdGhpcyBmaWxlIHJlbGF0ZWQgdG8gdGhlIHByb2Nlc3Mgb2YgcmVjZWl2ZWQgZnJhbWVzLiBUaGF0IHNob3VsZCBhbGxvdyBtZSB0byBpZGVudGlmeSB0aGUgYXBwcm9wcmlhdGUgZmxvdy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjkgMDY6MDM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7RVhQT1JUX1NZTUJPTCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9tYWM4MDIxMS9yeC5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9tYWM4MDIxMS9yeC5jPTE3NDc9aW50IGllZWU4MDIxMV9zdGFfcHNfdHJhbnNpdGlvbihzdHJ1Y3QgaWVlZTgwMjExX3N0YSAqcHVic3RhLCBib29sIHN0YXJ0KVxuLS1cbm5ldC9tYWM4MDIxMS9yeC5jLTE3NjUtfVxubmV0L21hYzgwMjExL3J4LmM6MTc2NjpFWFBPUlRfU1lNQk9MKGllZWU4MDIxMV9zdGFfcHNfdHJhbnNpdGlvbik7XG5uZXQvbWFjODAyMTEvcnguYy0xNzY3LVxubmV0L21hYzgwMjExL3J4LmM9MTc2OD12b2lkIGllZWU4MDIxMV9zdGFfcHNwb2xsKHN0cnVjdCBpZWVlODAyMTFfc3RhICpwdWJzdGEpXG4tLVxubmV0L21hYzgwMjExL3J4LmMtMTc3OS19XG5uZXQvbWFjODAyMTEvcnguYzoxNzgwOkVYUE9SVF9TWU1CT0woaWVlZTgwMjExX3N0YV9wc3BvbGwpO1xubmV0L21hYzgwMjExL3J4LmMtMTc4MS1cbm5ldC9tYWM4MDIxMS9yeC5jPTE3ODI9dm9pZCBpZWVlODAyMTFfc3RhX3VhcHNkX3RyaWdnZXIoc3RydWN0IGllZWU4MDIxMV9zdGEgKnB1YnN0YSwgdTggdGlkKVxuLS1cbm5ldC9tYWM4MDIxMS9yeC5jLTE4MDctfVxubmV0L21hYzgwMjExL3J4LmM6MTgwODpFWFBPUlRfU1lNQk9MKGllZWU4MDIxMV9zdGFfdWFwc2RfdHJpZ2dlcik7XG5uZXQvbWFjODAyMTEvcnguYy0xODA5LVxuLS1cbm5ldC9tYWM4MDIxMS9yeC5jPTI1NjI9aWVlZTgwMjExX2Ryb3BfdW5lbmNyeXB0ZWRfbWdtdChzdHJ1Y3QgaWVlZTgwMjExX3J4X2RhdGEgKnJ4KVxuLS1cbm5ldC9tYWM4MDIxMS9yeC5jLTI2NDctfVxubmV0L21hYzgwMjExL3J4LmM6MjY0ODpFWFBPUlRfU1lNQk9MX0lGX01BQzgwMjExX0tVTklUKGllZWU4MDIxMV9kcm9wX3VuZW5jcnlwdGVkX21nbXQpO1xubmV0L21hYzgwMjExL3J4LmMtMjY0OS1cbi0tXG5uZXQvbWFjODAyMTEvcnguYz00NDE5PXZvaWQgaWVlZTgwMjExX21hcmtfcnhfYmFfZmlsdGVyZWRfZnJhbWVzKHN0cnVjdCBpZWVlODAyMTFfc3RhICpwdWJzdGEsIHU4IHRpZCxcbi0tXG5uZXQvbWFjODAyMTEvcnguYy00NTAwLX1cbm5ldC9tYWM4MDIxMS9yeC5jOjQ1MDE6RVhQT1JUX1NZTUJPTChpZWVlODAyMTFfbWFya19yeF9iYV9maWx0ZXJlZF9mcmFtZXMpO1xubmV0L21hYzgwMjExL3J4LmMtNDUwMi1cbi0tXG5uZXQvbWFjODAyMTEvcnguYz01NTU5PXZvaWQgaWVlZTgwMjExX3J4X2xpc3Qoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsIHN0cnVjdCBpZWVlODAyMTFfc3RhICpwdWJzdGEsXG4tLVxubmV0L21hYzgwMjExL3J4LmMtNTcyNy19XG5uZXQvbWFjODAyMTEvcnguYzo1NzI4OkVYUE9SVF9TWU1CT0woaWVlZTgwMjExX3J4X2xpc3QpO1xubmV0L21hYzgwMjExL3J4LmMtNTcyOS1cbm5ldC9tYWM4MDIxMS9yeC5jPTU3MzA9dm9pZCBpZWVlODAyMTFfcnhfbmFwaShzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodywgc3RydWN0IGllZWU4MDIxMV9zdGEgKnB1YnN0YSxcbi0tXG5uZXQvbWFjODAyMTEvcnguYy01NzU1LX1cbm5ldC9tYWM4MDIxMS9yeC5jOjU3NTY6RVhQT1JUX1NZTUJPTChpZWVlODAyMTFfcnhfbmFwaSk7XG5uZXQvbWFjODAyMTEvcnguYy01NzU3LVxuLS1cbm5ldC9tYWM4MDIxMS9yeC5jPTU3NjA9dm9pZCBpZWVlODAyMTFfcnhfaXJxc2FmZShzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodywgc3RydWN0IHNrX2J1ZmYgKnNrYilcbi0tXG5uZXQvbWFjODAyMTEvcnguYy01NzY5LX1cbm5ldC9tYWM4MDIxMS9yeC5jOjU3NzA6RVhQT1JUX1NZTUJPTChpZWVlODAyMTFfcnhfaXJxc2FmZSk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI5IDA2OjAzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI3MzE4CgkJCQkJCQlvdXRwdXQ6IDQyCgkJCQkJCQl0aG91Z2h0czogNTkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRGVmcmFnbWVudGF0aW9uIERlZXAgRGl2ZSoqCgpPa2F5LCB0aW1lIHRvIGdldCBteSBoYW5kcyBkaXJ0eS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGlucyBhbmQgb3V0cyBvZiBob3cgdGhpcyBkZWZyYWdtZW50YXRpb24gcHJvY2VzcyB3b3JrcyB3aXRoaW4gdGhlIDgwMi4xMSBzdGFjay4gTXkgZmlyc3QgbW92ZSB3aWxsIGJlIHRvIHplcm8gaW4gb24gYGllZWU4MDIxMV9yeF9oX2RlZnJhZ21lbnRgLiBJJiMzOTtsbCB1c2UgdGhhdCBhcyBteSBwcmltYXJ5IHNlYXJjaCB0ZXJtLgoKSSYjMzk7bGwgc3RhcnQgYnkgY2hlY2tpbmcgdGhlIGBuZXQvbWFjODAyMTEvcnguY2AgZmlsZS4gSXQmIzM5O3MgdGhlIGxvZ2ljYWwgcGxhY2UgdG8gYmVnaW4gbG9va2luZyBmb3IgdGhlIGltcGxlbWVudGF0aW9uIG9yIGFueSBjYWxsIHNpdGVzIHJlbGF0ZWQgdG8gdGhhdCBmdW5jdGlvbi4gRnJvbSB0aGVyZSwgSSYjMzk7bGwgdHJhY2UgaXRzIGV4ZWN1dGlvbiBmbG93IGFuZCBwaW5wb2ludCBpdHMgcm9sZSBpbiB0aGUgcmVjZWl2ZSBwYXRoLiBIb3BlZnVsbHksIHRoaXMgd2lsbCBwcm92aWRlIHRoZSBpbmZvcm1hdGlvbiBJIHJlcXVpcmUgdG8gcHJvcGVybHkgYW5hbHl6ZSB0aGUgZnVuY3Rpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI5IDA2OjAzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2llZWU4MDIxMV9yeF9oX2RlZnJhZ21lbnQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbWFjODAyMTEmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L21hYzgwMjExL3J4LmM9MjM3Mj1zdGF0aWMgaWVlZTgwMjExX3J4X3Jlc3VsdCBkZWJ1Z19ub2lubGluZVxubmV0L21hYzgwMjExL3J4LmM6MjM3MzppZWVlODAyMTFfcnhfaF9kZWZyYWdtZW50KHN0cnVjdCBpZWVlODAyMTFfcnhfZGF0YSAqcngpXG5uZXQvbWFjODAyMTEvcnguYy0yMzc0LXtcbi0tXG5uZXQvbWFjODAyMTEvcnguYz00MjI5PXN0YXRpYyB2b2lkIGllZWU4MDIxMV9yeF9oYW5kbGVycyhzdHJ1Y3QgaWVlZTgwMjExX3J4X2RhdGEgKnJ4LFxuLS1cbm5ldC9tYWM4MDIxMS9yeC5jLTQyNjYtXHRcdENBTExfUlhIKGllZWU4MDIxMV9yeF9oX2RlY3J5cHQpO1xubmV0L21hYzgwMjExL3J4LmM6NDI2NzpcdFx0Q0FMTF9SWEgoaWVlZTgwMjExX3J4X2hfZGVmcmFnbWVudCk7XG5uZXQvbWFjODAyMTEvcnguYy00MjY4LVx0XHRDQUxMX1JYSChpZWVlODAyMTFfcnhfaF9taWNoYWVsX21pY192ZXJpZnkpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yOSAwNjowMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNzg2OQoJCQkJCQkJb3V0cHV0OiAzOQoJCQkJCQkJdGhvdWdodHM6IDE5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIGFuZCBkZWxpdmVyZWQgYXMgYSBmaXJzdC1wZXJzb24gc3VtbWFyeToKCioqRGlnZ2luZyBpbnRvIHRoZSA4MDIuMTEgUnggSGFuZGxlcnMqKgoKQWxyaWdodCwgc28gdGhlIGZpcnN0IHRoaW5nIEkmIzM5O20gZG9pbmcgaXMgdHJ5aW5nIHRvIGdldCBhIGNsZWFyIHBpY3R1cmUgb2Ygd2hhdCBmdW5jdGlvbnMgYXJlIGNhbGxlZCBieSBgaWVlZTgwMjExX3J4X2hhbmRsZXJzYC4gVGhpcyBpcyBteSBzdGFydGluZyBwb2ludCB3aGVuIHRyeWluZyB0byB1bmRlcnN0YW5kIHRoZSBwYWNrZXQgcmVjZXB0aW9uIHBpcGVsaW5lIGluIGEgZ2l2ZW4gODAyLjExIHN0YWNrLiBJJiMzOTttIGxpa2VseSB0cnlpbmcgdG8gdW5kZXJzdGFuZCBhIHNwZWNpZmljIGlzc3VlLCBvcHRpbWl6ZSBwZXJmb3JtYW5jZSwgb3IgcGVyaGFwcyBkZWJ1ZyBzb21lIGVycmF0aWMgYmVoYXZpb3IuIEtub3dpbmcgdGhlIGNvbnRyb2wgZmxvdyB0aHJvdWdoIHRoZXNlIGhhbmRsZXJzIGlzIGFic29sdXRlbHkgY3JpdGljYWwuIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoaWNoIGZ1bmN0aW9ucyBhcmUgcmVzcG9uc2libGUgZm9yIGluaXRpYWwgcHJvY2Vzc2luZywgZGVtdWx0aXBsZXhpbmcsIGZyYW1lIGNsYXNzaWZpY2F0aW9uLCBzZWN1cml0eSBjaGVja3MsIGFuZCBwYXNzaW5nIHRoZSBkYXRhIHVwIHRoZSBzdGFjay4KCkkmIzM5O20gcHJvYmFibHkgdGhpbmtpbmcgYWJvdXQgYSBzcGVjaWZpYyA4MDIuMTEgZHJpdmVyIG9yIGltcGxlbWVudGF0aW9uIHRvby4gQW0gSSBsb29raW5nIGF0IHNvbWV0aGluZyBsaWtlIG1hYzgwMjExLCBhIHByb3ByaWV0YXJ5IGRyaXZlciwgb3Igc29tZSBjdXN0b20gcmVzZWFyY2ggY29kZT8gS25vd2luZyB0aGUgY29udGV4dCBoZWxwcyBtZSBuYXJyb3cgZG93biB3aGljaCBjYWxscyB3aXRoaW4gYGllZWU4MDIxMV9yeF9oYW5kbGVyc2AgYXJlIG1vc3QgaW1wb3J0YW50IHRvIGV4YW1pbmUgY2xvc2VseS4gQXJlIHRoZXJlIGFueSBwYXJ0aWN1bGFyIG1vZHVsZXMgb3IgZnVuY3Rpb25zIEkgZXhwZWN0IHRvIGJlIGludm9sdmVkIGJhc2VkIG9uIG15IHByaW9yIGtub3dsZWRnZT8gQXJlIHRoZXJlIGFueSBvYnZpb3VzIGNhbmRpZGF0ZXMgZm9yIHBlcmZvcm1hbmNlIGJvdHRsZW5lY2tzPwoKSW4gc2hvcnQsIEkmIzM5O20gbWFwcGluZyBvdXQgdGhlIGNyaXRpY2FsIHBhdGhzIHdpdGhpbiB0aGUgUlggcHJvY2Vzc2luZyB0byBkZXZlbG9wIGEgbWVudGFsIG1vZGVsIG9mIGhvdyB0aGUgc3lzdGVtIHdvcmtzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yOSAwNjowMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtpZWVlODAyMTFfcnhfaGFuZGxlcnMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbWFjODAyMTEmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L21hYzgwMjExL3J4LmM9NDE1Nj1pZWVlODAyMTFfcnhfaF9tZ210KHN0cnVjdCBpZWVlODAyMTFfcnhfZGF0YSAqcngpXG4tLVxubmV0L21hYzgwMjExL3J4LmMtNDIxMS1cbm5ldC9tYWM4MDIxMS9yeC5jOjQyMTI6c3RhdGljIHZvaWQgaWVlZTgwMjExX3J4X2hhbmRsZXJzX3Jlc3VsdChzdHJ1Y3QgaWVlZTgwMjExX3J4X2RhdGEgKnJ4LFxubmV0L21hYzgwMjExL3J4LmMtNDIxMy1cdFx0XHRcdFx0IGllZWU4MDIxMV9yeF9yZXN1bHQgcmVzKVxuLS1cbm5ldC9tYWM4MDIxMS9yeC5jLTQyMjgtXG5uZXQvbWFjODAyMTEvcnguYzo0MjI5OnN0YXRpYyB2b2lkIGllZWU4MDIxMV9yeF9oYW5kbGVycyhzdHJ1Y3QgaWVlZTgwMjExX3J4X2RhdGEgKnJ4LFxubmV0L21hYzgwMjExL3J4LmMtNDIzMC1cdFx0XHRcdCAgc3RydWN0IHNrX2J1ZmZfaGVhZCAqZnJhbWVzKVxuLS1cbm5ldC9tYWM4MDIxMS9yeC5jLTQyODYtIHJ4aF9uZXh0OlxubmV0L21hYzgwMjExL3J4LmM6NDI4NzpcdFx0aWVlZTgwMjExX3J4X2hhbmRsZXJzX3Jlc3VsdChyeCwgcmVzKTtcbm5ldC9tYWM4MDIxMS9yeC5jLTQyODgtXG4tLVxubmV0L21hYzgwMjExL3J4LmM9NDI5NT1zdGF0aWMgdm9pZCBpZWVlODAyMTFfaW52b2tlX3J4X2hhbmRsZXJzKHN0cnVjdCBpZWVlODAyMTFfcnhfZGF0YSAqcngpXG4tLVxubmV0L21hYzgwMjExL3J4LmMtNDMxMy1cbm5ldC9tYWM4MDIxMS9yeC5jOjQzMTQ6XHRpZWVlODAyMTFfcnhfaGFuZGxlcnMocngsIFx1MDAyNnJlb3JkZXJfcmVsZWFzZSk7XG5uZXQvbWFjODAyMTEvcnguYy00MzE1LVx0cmV0dXJuO1xuLS1cbm5ldC9tYWM4MDIxMS9yeC5jLTQzMTctIHJ4aF9uZXh0OlxubmV0L21hYzgwMjExL3J4LmM6NDMxODpcdGllZWU4MDIxMV9yeF9oYW5kbGVyc19yZXN1bHQocngsIHJlcyk7XG5uZXQvbWFjODAyMTEvcnguYy00MzE5LVxuLS1cbm5ldC9tYWM4MDIxMS9yeC5jPTQzNzk9dm9pZCBpZWVlODAyMTFfcmVsZWFzZV9yZW9yZGVyX3RpbWVvdXQoc3RydWN0IHN0YV9pbmZvICpzdGEsIGludCB0aWQpXG4tLVxubmV0L21hYzgwMjExL3J4LmMtNDQxNS1cbm5ldC9tYWM4MDIxMS9yeC5jOjQ0MTY6XHRpZWVlODAyMTFfcnhfaGFuZGxlcnMoXHUwMDI2cngsIFx1MDAyNmZyYW1lcyk7XG5uZXQvbWFjODAyMTEvcnguYy00NDE3LX1cbi0tXG5uZXQvbWFjODAyMTEvcnguYz00NDE5PXZvaWQgaWVlZTgwMjExX21hcmtfcnhfYmFfZmlsdGVyZWRfZnJhbWVzKHN0cnVjdCBpZWVlODAyMTFfc3RhICpwdWJzdGEsIHU4IHRpZCxcbi0tXG5uZXQvbWFjODAyMTEvcnguYy00NDk1LVxubmV0L21hYzgwMjExL3J4LmM6NDQ5NjpcdGllZWU4MDIxMV9yeF9oYW5kbGVycyhcdTAwMjZyeCwgXHUwMDI2ZnJhbWVzKTtcbm5ldC9tYWM4MDIxMS9yeC5jLTQ0OTctXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI5IDA2OjAzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI5MDQ5CgkJCQkJCQlvdXRwdXQ6IDQxCgkJCQkJCQl0aG91Z2h0czogMjEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgYSBzdW1tYXJ5IG9mIG15IHRob3VnaHQgcHJvY2VzcywgYXMgcmVxdWVzdGVkOgoKKipEZWNvbnN0cnVjdGluZyB0aGUgSUVFRSA4MDIuMTEgUlggSGFuZGxlciBJbnZvY2F0aW9uKioKCk9rYXksIHNvIEkmIzM5O20gZGl2aW5nIGludG8gdGhlIGBpZWVlODAyMTFfaW52b2tlX3J4X2hhbmRsZXJzYCBmdW5jdGlvbi4gTXkgaW5pdGlhbCBxdWVzdGlvbiBpcyBzdHJhaWdodGZvcndhcmQ6ICp3aG8qIGlzIGNhbGxpbmcgdGhpcyBjcml0aWNhbCBwaWVjZSBvZiB0aGUgODAyLjExIHJlY2VpdmUgcGF0aD8gSXQmIzM5O3MgZXNzZW50aWFsIHRvIHVuZGVyc3RhbmQgdGhlIGNvbnRleHQgaW4gd2hpY2ggdGhpcyBmdW5jdGlvbiBvcGVyYXRlcy4gSSBuZWVkIHRvIHRyYWNlIHRoZSBjYWxsIHBhdGhzIHRvIGlkZW50aWZ5IHRoZSBkaWZmZXJlbnQgZW50cnkgcG9pbnRzIGFuZCB0aGUgY29uZGl0aW9ucyB1bmRlciB3aGljaCB0aGUgaGFuZGxlcnMgYXJlIGludm9rZWQuIEFyZSB3ZSB0YWxraW5nIGFib3V0IGEgc3RhbmRhcmQgZGF0YSBmcmFtZSwgYSBtYW5hZ2VtZW50IGZyYW1lLCBvciBjb250cm9sIGZyYW1lPyBBcmUgdGhlcmUgc3BlY2lmaWMgZHJpdmVyLXJlbGF0ZWQgYXNwZWN0cyB0byBjb25zaWRlciBpbiB0aGlzIGNhbGwgcGF0aD8KCkkgd2FudCB0byBrbm93IHdoZXJlIGluIHRoZSBkcml2ZXImIzM5O3MgcmVjZWl2ZSBwcm9jZXNzaW5nIGl0IGZpdHMgYW5kIHRoZSBzZXF1ZW5jZSBvZiBmdW5jdGlvbiBjYWxscyBiZWZvcmUgYW5kIGFmdGVyIHRoZSBpbnZvY2F0aW9uLiBLbm93aW5nIHRoaXMgd2lsbCBnaXZlIG1lIGluc2lnaHRzIGludG8gcG90ZW50aWFsIG9wdGltaXphdGlvbnMsIGVycm9yIGhhbmRsaW5nIHN0cmF0ZWdpZXMsIGFuZCBzZWN1cml0eSBpbXBsaWNhdGlvbnMgb2YgdGhlIHJlY2VpdmluZyBwcm9jZXNzLiBJJiMzOTtsbCBuZWVkIHRvIGNvbnNpZGVyIGhvdyBpbnRlcnJ1cHQgaGFuZGxpbmcsIERNQSwgYW5kIG90aGVyIGhhcmR3YXJlIGludGVyYWN0aW9ucyBwbGF5IGludG8gdGhlIGZ1bmN0aW9u4oCZcyBleGVjdXRpb24uCgpUaGlzIGlzIGFsbCBhYm91dCB1bmRlcnN0YW5kaW5nIHRoZSBkYXRhIGZsb3cgb2YgaW5jb21pbmcgZnJhbWVzIGFuZCB1bmRlcnN0YW5kaW5nIGhvdyB0aGUgc3lzdGVtIGlzIGRlc2lnbmVkIHRvIGhhbmRsZSBkaWZmZXJlbnQgc2NlbmFyaW9zLiBGaW5kaW5nIHRoZSAmIzM0O3dobyYjMzQ7IHdpbGwgZ2l2ZSBtZSBhIGZvb3Rob2xkIGluIHVuZGVyc3RhbmRpbmcgdGhlICYjMzQ7aG93JiMzNDsgYW5kIHRoZSAmIzM0O3doeS4mIzM0OwoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yOSAwNjowMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtpZWVlODAyMTFfaW52b2tlX3J4X2hhbmRsZXJzJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L21hYzgwMjExJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9tYWM4MDIxMS9yeC5jPTQyMjk9c3RhdGljIHZvaWQgaWVlZTgwMjExX3J4X2hhbmRsZXJzKHN0cnVjdCBpZWVlODAyMTFfcnhfZGF0YSAqcngsXG4tLVxubmV0L21hYzgwMjExL3J4LmMtNDI5NC1cbm5ldC9tYWM4MDIxMS9yeC5jOjQyOTU6c3RhdGljIHZvaWQgaWVlZTgwMjExX2ludm9rZV9yeF9oYW5kbGVycyhzdHJ1Y3QgaWVlZTgwMjExX3J4X2RhdGEgKnJ4KVxubmV0L21hYzgwMjExL3J4LmMtNDI5Ni17XG4tLVxubmV0L21hYzgwMjExL3J4LmM9NTE3Mz1zdGF0aWMgYm9vbCBpZWVlODAyMTFfcHJlcGFyZV9hbmRfcnhfaGFuZGxlKHN0cnVjdCBpZWVlODAyMTFfcnhfZGF0YSAqcngsXG4tLVxubmV0L21hYzgwMjExL3J4LmMtNTIyNC1cdGlmIChpZWVlODAyMTFfaXNfczFnX2JlYWNvbihoZHItXHUwMDNlZnJhbWVfY29udHJvbCkpIHtcbm5ldC9tYWM4MDIxMS9yeC5jOjUyMjU6XHRcdGllZWU4MDIxMV9pbnZva2VfcnhfaGFuZGxlcnMocngpO1xubmV0L21hYzgwMjExL3J4LmMtNTIyNi1cdFx0cmV0dXJuIHRydWU7XG4tLVxubmV0L21hYzgwMjExL3J4LmMtNTI1My1cbm5ldC9tYWM4MDIxMS9yeC5jOjUyNTQ6XHRpZWVlODAyMTFfaW52b2tlX3J4X2hhbmRsZXJzKHJ4KTtcbm5ldC9tYWM4MDIxMS9yeC5jLTUyNTUtXHRyZXR1cm4gdHJ1ZTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjkgMDY6MDM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjk3NzIKCQkJCQkJCW91dHB1dDogNDMKCQkJCQkJCXRob3VnaHRzOiAyNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzOgoKKipEZWVwIERpdmUgb24gdGhlIFJlY2VpdmUgUGF0aCoqCgpBbHJpZ2h0LCBzbyBgaWVlZTgwMjExX3ByZXBhcmVfYW5kX3J4X2hhbmRsZWAuLi4gdGhhdCYjMzk7cyB0aGUgZnVuY3Rpb24gd2UmIzM5O3JlIGRpc3NlY3RpbmcgdG9kYXkuIExldCYjMzk7cyBkaWcgaW4gYW5kIGZpZ3VyZSBvdXQgZXhhY3RseSB3aGF0JiMzOTtzIGNhbGxpbmcgdGhhdCBmdW5jdGlvbi4gVW5kZXJzdGFuZGluZyB0aGUgY2FsbCBjaGFpbiBoZXJlIGlzIGdvaW5nIHRvIGJlIGNydWNpYWwgZm9yIGZpZ3VyaW5nIG91dCBleGFjdGx5IGhvdyB0aGUgcGFja2V0IHByb2Nlc3NpbmcgaGFwcGVucyBvbiB0aGUgcmVjZWl2ZSBzaWRlLiBJIG5lZWQgdG8gdHJhY2UgdGhpcyBiYWNrIHRvIHRoZSB2ZXJ5IHN0YXJ0IG9mIHRoZSByZWNlaXZlIHBhdGguIEhvcGVmdWxseSwgaXQmIzM5O3Mgd2VsbC1kb2N1bWVudGVkLCBiZWNhdXNlIEkmIzM5O20gZ29pbmcgdG8gd2FudCB0byB1bmRlcnN0YW5kIHdoYXQgdHJpZ2dlcnMgdGhpcyBlbnRpcmUgcHJvY2Vzcy4gTGV0JiMzOTtzIHNlZSB3aGF0IHdlIGNhbiBmaW5kLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yOSAwNjowMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtpZWVlODAyMTFfcHJlcGFyZV9hbmRfcnhfaGFuZGxlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L21hYzgwMjExJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9tYWM4MDIxMS9yeC5jPTUwMTU9c3RhdGljIGJvb2wgaWVlZTgwMjExX2ludm9rZV9mYXN0X3J4KHN0cnVjdCBpZWVlODAyMTFfcnhfZGF0YSAqcngsXG4tLVxubmV0L21hYzgwMjExL3J4LmMtNTE3Mi0gKi9cbm5ldC9tYWM4MDIxMS9yeC5jOjUxNzM6c3RhdGljIGJvb2wgaWVlZTgwMjExX3ByZXBhcmVfYW5kX3J4X2hhbmRsZShzdHJ1Y3QgaWVlZTgwMjExX3J4X2RhdGEgKnJ4LFxubmV0L21hYzgwMjExL3J4LmMtNTE3NC1cdFx0XHRcdFx0ICAgIHN0cnVjdCBza19idWZmICpza2IsIGJvb2wgY29uc3VtZSlcbi0tXG5uZXQvbWFjODAyMTEvcnguYz01MzEwPXN0YXRpYyBib29sIGllZWU4MDIxMV9yeF9mb3JfaW50ZXJmYWNlKHN0cnVjdCBpZWVlODAyMTFfcnhfZGF0YSAqcngsXG4tLVxubmV0L21hYzgwMjExL3J4LmMtNTMyMS1cbm5ldC9tYWM4MDIxMS9yeC5jOjUzMjI6XHRcdHJldHVybiBpZWVlODAyMTFfcHJlcGFyZV9hbmRfcnhfaGFuZGxlKHJ4LCBza2IsIGNvbnN1bWUpO1xubmV0L21hYzgwMjExL3J4LmMtNTMyMy1cdH1cbi0tXG5uZXQvbWFjODAyMTEvcnguYy01MzYxLVxubmV0L21hYzgwMjExL3J4LmM6NTM2MjpcdHJldHVybiBpZWVlODAyMTFfcHJlcGFyZV9hbmRfcnhfaGFuZGxlKHJ4LCBza2IsIGNvbnN1bWUpO1xubmV0L21hYzgwMjExL3J4LmMtNTM2My19XG4tLVxubmV0L21hYzgwMjExL3J4LmM9NTM2OT1zdGF0aWMgdm9pZCBfX2llZWU4MDIxMV9yeF9oYW5kbGVfcGFja2V0KHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxuLS1cbm5ldC9tYWM4MDIxMS9yeC5jLTU0NjEtXG5uZXQvbWFjODAyMTEvcnguYzo1NDYyOlx0XHRcdGlmIChpZWVlODAyMTFfcHJlcGFyZV9hbmRfcnhfaGFuZGxlKFx1MDAyNnJ4LCBza2IsIHRydWUpKVxubmV0L21hYzgwMjExL3J4LmMtNTQ2My1cdFx0XHRcdHJldHVybjtcbi0tXG5uZXQvbWFjODAyMTEvcnguYy01NDg5LVxubmV0L21hYzgwMjExL3J4LmM6NTQ5MDpcdFx0XHRpZWVlODAyMTFfcHJlcGFyZV9hbmRfcnhfaGFuZGxlKFx1MDAyNnJ4LCBza2IsIGZhbHNlKTtcbm5ldC9tYWM4MDIxMS9yeC5jLTU0OTEtXG4tLVxubmV0L21hYzgwMjExL3J4LmMtNTUxMC1cbm5ldC9tYWM4MDIxMS9yeC5jOjU1MTE6XHRcdFx0aWYgKGllZWU4MDIxMV9wcmVwYXJlX2FuZF9yeF9oYW5kbGUoXHUwMDI2cngsIHNrYiwgdHJ1ZSkpXG5uZXQvbWFjODAyMTEvcnguYy01NTEyLVx0XHRcdFx0cmV0dXJuO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yOSAwNjowMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMDY4MgoJCQkJCQkJb3V0cHV0OiA0MgoJCQkJCQkJdGhvdWdodHM6IDI1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqVHJhY2luZyB0aGUgRGF0YSBGbG93OiBUaGUgQ3VyaW91cyBDYXNlIG9mIGBfX2llZWU4MDIxMV9yeF9oYW5kbGVfcGFja2V0YCoqCgpBbHJpZ2h0LCBzbyBJJiMzOTttIGRpZ2dpbmcgaW50byB0aGlzIGBfX2llZWU4MDIxMV9yeF9oYW5kbGVfcGFja2V0YCBmdW5jdGlvbi4gSXQmIzM5O3Mgb2J2aW91c2x5IGNlbnRyYWwgdG8gdGhlIDgwMi4xMSByZWNlaXZlIHBhdGguIEJ1dCB0aGUgcXVlc3Rpb24gaXMsICp3aGF0KiBraWNrcyBpdCBvZmY/IEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjYWxsIGNoYWluIHRvIHRydWx5IGdyYXNwIGl0cyByb2xlIGluIHRoZSBiaWdnZXIgcGljdHVyZS4gTXkgbWVudGFsIGNoZWNrbGlzdCBzdGFydHMgd2l0aCBmaWd1cmluZyBvdXQgd2hpY2ggb3RoZXIgZnVuY3Rpb25zIGFyZSByZXNwb25zaWJsZSBmb3IgY2FsbGluZyB0aGlzIG9uZS4gSSBuZWVkIHRvIHRyYWNlIHRoaXMgZGF0YSBmbG93LiBMZXQmIzM5O3Mgc3RhcnQgYnkgbWV0aG9kaWNhbGx5IGNoZWNraW5nIHRoZSBjb2RlIGFuZCBnZXQgdGhlIGZ1bGwgY2FsbCBzdGFjay4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjkgMDY6MDM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7X19pZWVlODAyMTFfcnhfaGFuZGxlX3BhY2tldCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9tYWM4MDIxMSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbWFjODAyMTEvcnguYz01MzEwPXN0YXRpYyBib29sIGllZWU4MDIxMV9yeF9mb3JfaW50ZXJmYWNlKHN0cnVjdCBpZWVlODAyMTFfcnhfZGF0YSAqcngsXG4tLVxubmV0L21hYzgwMjExL3J4LmMtNTM2OC0gKi9cbm5ldC9tYWM4MDIxMS9yeC5jOjUzNjk6c3RhdGljIHZvaWQgX19pZWVlODAyMTFfcnhfaGFuZGxlX3BhY2tldChzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcbm5ldC9tYWM4MDIxMS9yeC5jLTUzNzAtXHRcdFx0XHRcdCBzdHJ1Y3QgaWVlZTgwMjExX3N0YSAqcHVic3RhLFxuLS1cbm5ldC9tYWM4MDIxMS9yeC5jPTU1NTk9dm9pZCBpZWVlODAyMTFfcnhfbGlzdChzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodywgc3RydWN0IGllZWU4MDIxMV9zdGEgKnB1YnN0YSxcbi0tXG5uZXQvbWFjODAyMTEvcnguYy01NzE5LVx0XHRlbHNlXG5uZXQvbWFjODAyMTEvcnguYzo1NzIwOlx0XHRcdF9faWVlZTgwMjExX3J4X2hhbmRsZV9wYWNrZXQoaHcsIHB1YnN0YSwgc2tiLCBsaXN0KTtcbm5ldC9tYWM4MDIxMS9yeC5jLTU3MjEtXHR9XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI5IDA2OjAzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMxMjI4CgkJCQkJCQlvdXRwdXQ6IDMyCgkJCQkJCQl0aG91Z2h0czogMTkwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgODAyLjExIFJlY2VpdmUgUGF0aCoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgZG93biBob3cgdGhpcyA4MDIuMTEgcmVjZWl2ZSBwYXRoIGlzIHN0cnVjdHVyZWQuIEl0IGxvb2tzIGxpa2UgdGhlIG1haW4gZW50cnkgcG9pbnRzIGZvciBwcm9jZXNzaW5nIHJlY2VpdmVkIGZyYW1lcyBhcmUgYGllZWU4MDIxMV9yeF9saXN0YCwgYGllZWU4MDIxMV9yeF9uYXBpYCwgYW5kIGBpZWVlODAyMTFfcnhfaXJxc2FmZWAuIEkgYWxzbyBzZWUgYGllZWU4MDIxMV9yeF9oX2RlZnJhZ21lbnRgIGxpc3RlZCwgd2hpY2ggaXMgbGlrZWx5IGludm9sdmVkIGluIGRlZnJhZ21lbnRhdGlvbiwgZXNwZWNpYWxseSBnaXZlbiB0aGUgYE1BQzgwMjExX05PSU5MSU5FYCBjb250ZXh0LCBvciBpZiBpdCYjMzk7cyBleHBsaWNpdGx5IGV4cG9ydGVkIGFuZCBub3QgaW5saW5lZC4KCk5vdywgSSYjMzk7bSBjdXJpb3VzIGFib3V0IGBpZWVlODAyMTFfcnhfaF9kZWZyYWdtZW50YC4gSSB3YW50IHRvIGtub3cgaWYgdGhpcyBmdW5jdGlvbiBpcyBzdGF0aWMgb3IgaWYgaXQmIzM5O3Mgc3ViamVjdCB0byBhbnkgc3BlY2lhbCBpbmxpbmluZyBjb25zaWRlcmF0aW9ucywgbGlrZSBgZGVidWdfbm9pbmxpbmVgLiBMb29raW5nIGF0IGxpbmUgMjM3MiwgSSBzZWU6IGBzdGF0aWMgaWVlZTgwMjExX3J4X3Jlc3VsdCBkZWJ1Z19ub2lubGluZSBpZWVlODAyMTFfcnhfaF9kZWZyYWdtZW50KHN0cnVjdCBpZWVlODAyMTFfcnhfZGF0YSAqcngpYC4gQWhhISBJdCYjMzk7cyBgc3RhdGljYCBhbmQgdXNlcyBgZGVidWdfbm9pbmxpbmVgLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IGBkZWJ1Z19ub2lubGluZWAgYWN0dWFsbHkgKm1lYW5zKiBpbiB0aGlzIGNvbnRleHQuIExldCYjMzk7cyBkaWcgaW50byB0aGUgZGVmaW5pdGlvbiBvZiB0aGF0IG1hY3JvIGFuZCBzZWUgd2hhdCYjMzk7cyBnb2luZyBvbiB3aXRoIGlubGluaW5nIGhlcmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI5IDA2OjAzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2RlYnVnX25vaW5saW5lJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L21hYzgwMjExJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9tYWM4MDIxMS9pZWVlODAyMTFfaS5oPTI5NDQ9dTMyIGllZWU4MDIxMV9jYWxjX2V4cGVjdGVkX3R4X2FpcnRpbWUoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXG4tLVxubmV0L21hYzgwMjExL2llZWU4MDIxMV9pLmgtMjk0OC0jaWZkZWYgQ09ORklHX01BQzgwMjExX05PSU5MSU5FXG5uZXQvbWFjODAyMTEvaWVlZTgwMjExX2kuaDoyOTQ5OiNkZWZpbmUgZGVidWdfbm9pbmxpbmUgbm9pbmxpbmVcbm5ldC9tYWM4MDIxMS9pZWVlODAyMTFfaS5oLTI5NTAtI2Vsc2Vcbm5ldC9tYWM4MDIxMS9pZWVlODAyMTFfaS5oOjI5NTE6I2RlZmluZSBkZWJ1Z19ub2lubGluZVxubmV0L21hYzgwMjExL2llZWU4MDIxMV9pLmgtMjk1Mi0jZW5kaWZcbi0tXG5uZXQvbWFjODAyMTEvcnguYz0xNDQ1PXN0YXRpYyB2b2lkIGllZWU4MDIxMV9yeF9yZW9yZGVyX2FtcGR1KHN0cnVjdCBpZWVlODAyMTFfcnhfZGF0YSAqcngsXG4tLVxubmV0L21hYzgwMjExL3J4LmMtMTUxOS1cbm5ldC9tYWM4MDIxMS9yeC5jOjE1MjA6c3RhdGljIGllZWU4MDIxMV9yeF9yZXN1bHQgZGVidWdfbm9pbmxpbmVcbm5ldC9tYWM4MDIxMS9yeC5jLTE1MjEtaWVlZTgwMjExX3J4X2hfY2hlY2tfZHVwKHN0cnVjdCBpZWVlODAyMTFfcnhfZGF0YSAqcngpXG4tLVxubmV0L21hYzgwMjExL3J4LmMtMTU3Ny1cbm5ldC9tYWM4MDIxMS9yeC5jOjE1Nzg6c3RhdGljIGllZWU4MDIxMV9yeF9yZXN1bHQgZGVidWdfbm9pbmxpbmVcbm5ldC9tYWM4MDIxMS9yeC5jLTE1NzktaWVlZTgwMjExX3J4X2hfY2hlY2soc3RydWN0IGllZWU4MDIxMV9yeF9kYXRhICpyeClcbi0tXG5uZXQvbWFjODAyMTEvcnguYy0xNjUwLVxubmV0L21hYzgwMjExL3J4LmM6MTY1MTpzdGF0aWMgaWVlZTgwMjExX3J4X3Jlc3VsdCBkZWJ1Z19ub2lubGluZVxubmV0L21hYzgwMjExL3J4LmMtMTY1Mi1pZWVlODAyMTFfcnhfaF9jaGVja19tb3JlX2RhdGEoc3RydWN0IGllZWU4MDIxMV9yeF9kYXRhICpyeClcbi0tXG5uZXQvbWFjODAyMTEvcnguYz0xODA4PUVYUE9SVF9TWU1CT0woaWVlZTgwMjExX3N0YV91YXBzZF90cmlnZ2VyKTtcbm5ldC9tYWM4MDIxMS9yeC5jLTE4MDktXG5uZXQvbWFjODAyMTEvcnguYzoxODEwOnN0YXRpYyBpZWVlODAyMTFfcnhfcmVzdWx0IGRlYnVnX25vaW5saW5lXG5uZXQvbWFjODAyMTEvcnguYy0xODExLWllZWU4MDIxMV9yeF9oX3VhcHNkX2FuZF9wc3BvbGwoc3RydWN0IGllZWU4MDIxMV9yeF9kYXRhICpyeClcbi0tXG5uZXQvbWFjODAyMTEvcnguYy0xODYwLVxubmV0L21hYzgwMjExL3J4LmM6MTg2MTpzdGF0aWMgaWVlZTgwMjExX3J4X3Jlc3VsdCBkZWJ1Z19ub2lubGluZVxubmV0L21hYzgwMjExL3J4LmMtMTg2Mi1pZWVlODAyMTFfcnhfaF9zdGFfcHJvY2VzcyhzdHJ1Y3QgaWVlZTgwMjExX3J4X2RhdGEgKnJ4KVxuLS1cbm5ldC9tYWM4MDIxMS9yeC5jPTE5OTc9aWVlZTgwMjExX3J4X2dldF9iaWd0ayhzdHJ1Y3QgaWVlZTgwMjExX3J4X2RhdGEgKnJ4LCBpbnQgaWR4KVxuLS1cbm5ldC9tYWM4MDIxMS9yeC5jLTIwMjktXG5uZXQvbWFjODAyMTEvcnguYzoyMDMwOnN0YXRpYyBpZWVlODAyMTFfcnhfcmVzdWx0IGRlYnVnX25vaW5saW5lXG5uZXQvbWFjODAyMTEvcnguYy0yMDMxLWllZWU4MDIxMV9yeF9oX2RlY3J5cHQoc3RydWN0IGllZWU4MDIxMV9yeF9kYXRhICpyeClcbi0tXG5uZXQvbWFjODAyMTEvcnguYz0yMzYyPXN0YXRpYyBib29sIHJlcXVpcmVzX3NlcXVlbnRpYWxfcG4oc3RydWN0IGllZWU4MDIxMV9yeF9kYXRhICpyeCwgX19sZTE2IGZjKVxuLS1cbm5ldC9tYWM4MDIxMS9yeC5jLTIzNzEtXG5uZXQvbWFjODAyMTEvcnguYzoyMzcyOnN0YXRpYyBpZWVlODAyMTFfcnhfcmVzdWx0IGRlYnVnX25vaW5saW5lXG5uZXQvbWFjODAyMTEvcnguYy0yMzczLWllZWU4MDIxMV9yeF9oX2RlZnJhZ21lbnQoc3RydWN0IGllZWU4MDIxMV9yeF9kYXRhICpyeClcbi0tXG5uZXQvbWFjODAyMTEvcnguYz0yOTYxPWllZWU4MDIxMV9yeF9tZXNoX2RhdGEoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsIHN0cnVjdCBzdGFfaW5mbyAqc3RhLFxuLS1cbm5ldC9tYWM4MDIxMS9yeC5jLTMxNDMtXG5uZXQvbWFjODAyMTEvcnguYzozMTQ0OnN0YXRpYyBpZWVlODAyMTFfcnhfcmVzdWx0IGRlYnVnX25vaW5saW5lXG5uZXQvbWFjODAyMTEvcnguYy0zMTQ1LV9faWVlZTgwMjExX3J4X2hfYW1zZHUoc3RydWN0IGllZWU4MDIxMV9yeF9kYXRhICpyeCwgdTggZGF0YV9vZmZzZXQpXG4tLVxubmV0L21hYzgwMjExL3J4LmMtMzIyOS1cbm5ldC9tYWM4MDIxMS9yeC5jOjMyMzA6c3RhdGljIGllZWU4MDIxMV9yeF9yZXN1bHQgZGVidWdfbm9pbmxpbmVcbm5ldC9tYWM4MDIxMS9yeC5jLTMyMzEtaWVlZTgwMjExX3J4X2hfYW1zZHUoc3RydWN0IGllZWU4MDIxMV9yeF9kYXRhICpyeClcbi0tXG5uZXQvbWFjODAyMTEvcnguYy0zMjg2LVxubmV0L21hYzgwMjExL3J4LmM6MzI4NzpzdGF0aWMgaWVlZTgwMjExX3J4X3Jlc3VsdCBkZWJ1Z19ub2lubGluZVxubmV0L21hYzgwMjExL3J4LmMtMzI4OC1pZWVlODAyMTFfcnhfaF9kYXRhKHN0cnVjdCBpZWVlODAyMTFfcnhfZGF0YSAqcngpXG4tLVxubmV0L21hYzgwMjExL3J4LmMtMzM2Ny1cbm5ldC9tYWM4MDIxMS9yeC5jOjMzNjg6c3RhdGljIGllZWU4MDIxMV9yeF9yZXN1bHQgZGVidWdfbm9pbmxpbmVcbm5ldC9tYWM4MDIxMS9yeC5jLTMzNjktaWVlZTgwMjExX3J4X2hfY3RybChzdHJ1Y3QgaWVlZTgwMjExX3J4X2RhdGEgKnJ4LCBzdHJ1Y3Qgc2tfYnVmZl9oZWFkICpmcmFtZXMpXG4tLVxubmV0L21hYzgwMjExL3J4LmM9MzQ3OT1pZWVlODAyMTFfcnhfY2hlY2tfYnNzX2NvbG9yX2NvbGxpc2lvbihzdHJ1Y3QgaWVlZTgwMjExX3J4X2RhdGEgKnJ4KVxuLS1cbm5ldC9tYWM4MDIxMS9yeC5jLTM1MjMtXG5uZXQvbWFjODAyMTEvcnguYzozNTI0OnN0YXRpYyBpZWVlODAyMTFfcnhfcmVzdWx0IGRlYnVnX25vaW5saW5lXG5uZXQvbWFjODAyMTEvcnguYy0zNTI1LWllZWU4MDIxMV9yeF9oX21nbXRfY2hlY2soc3RydWN0IGllZWU4MDIxMV9yeF9kYXRhICpyeClcbi0tXG5uZXQvbWFjODAyMTEvcnguYz0zNTc3PWllZWU4MDIxMV9wcm9jZXNzX3J4X3R3dF9hY3Rpb24oc3RydWN0IGllZWU4MDIxMV9yeF9kYXRhICpyeClcbi0tXG5uZXQvbWFjODAyMTEvcnguYy0zNjI2LVxubmV0L21hYzgwMjExL3J4LmM6MzYyNzpzdGF0aWMgaWVlZTgwMjExX3J4X3Jlc3VsdCBkZWJ1Z19ub2lubGluZVxubmV0L21hYzgwMjExL3J4LmMtMzYyOC1pZWVlODAyMTFfcnhfaF9hY3Rpb24oc3RydWN0IGllZWU4MDIxMV9yeF9kYXRhICpyeClcbi0tXG5uZXQvbWFjODAyMTEvcnguYy0zOTk3LVxubmV0L21hYzgwMjExL3J4LmM6Mzk5ODpzdGF0aWMgaWVlZTgwMjExX3J4X3Jlc3VsdCBkZWJ1Z19ub2lubGluZVxubmV0L21hYzgwMjExL3J4LmMtMzk5OS1pZWVlODAyMTFfcnhfaF91c2Vyc3BhY2VfbWdtdChzdHJ1Y3QgaWVlZTgwMjExX3J4X2RhdGEgKnJ4KVxuLS1cbm5ldC9tYWM4MDIxMS9yeC5jLTQwNDAtXG5uZXQvbWFjODAyMTEvcnguYzo0MDQxOnN0YXRpYyBpZWVlODAyMTFfcnhfcmVzdWx0IGRlYnVnX25vaW5saW5lXG5uZXQvbWFjODAyMTEvcnguYy00MDQyLWllZWU4MDIxMV9yeF9oX2FjdGlvbl9wb3N0X3VzZXJzcGFjZShzdHJ1Y3QgaWVlZTgwMjExX3J4X2RhdGEgKnJ4KVxuLS1cbm5ldC9tYWM4MDIxMS9yeC5jLTQwNzQtXG5uZXQvbWFjODAyMTEvcnguYzo0MDc1OnN0YXRpYyBpZWVlODAyMTFfcnhfcmVzdWx0IGRlYnVnX25vaW5saW5lXG5uZXQvbWFjODAyMTEvcnguYy00MDc2LWllZWU4MDIxMV9yeF9oX2FjdGlvbl9yZXR1cm4oc3RydWN0IGllZWU4MDIxMV9yeF9kYXRhICpyeClcbi0tXG5uZXQvbWFjODAyMTEvcnguYy00MTM2LVxubmV0L21hYzgwMjExL3J4LmM6NDEzNzpzdGF0aWMgaWVlZTgwMjExX3J4X3Jlc3VsdCBkZWJ1Z19ub2lubGluZVxubmV0L21hYzgwMjExL3J4LmMtNDEzOC1pZWVlODAyMTFfcnhfaF9leHQoc3RydWN0IGllZWU4MDIxMV9yeF9kYXRhICpyeClcbi0tXG5uZXQvbWFjODAyMTEvcnguYy00MTU0LVxubmV0L21hYzgwMjExL3J4LmM6NDE1NTpzdGF0aWMgaWVlZTgwMjExX3J4X3Jlc3VsdCBkZWJ1Z19ub2lubGluZVxubmV0L21hYzgwMjExL3J4LmMtNDE1Ni1pZWVlODAyMTFfcnhfaF9tZ210KHN0cnVjdCBpZWVlODAyMTFfcnhfZGF0YSAqcngpXG4tLVxubmV0L21hYzgwMjExL3R4LmM9NDM9c3RhdGljIF9fbGUxNiBpZWVlODAyMTFfZHVyYXRpb24oc3RydWN0IGllZWU4MDIxMV90eF9kYXRhICp0eCxcbi0tXG5uZXQvbWFjODAyMTEvdHguYy0xOTEtLyogdHggaGFuZGxlcnMgKi9cbm5ldC9tYWM4MDIxMS90eC5jOjE5MjpzdGF0aWMgaWVlZTgwMjExX3R4X3Jlc3VsdCBkZWJ1Z19ub2lubGluZVxubmV0L21hYzgwMjExL3R4LmMtMTkzLWllZWU4MDIxMV90eF9oX2R5bmFtaWNfcHMoc3RydWN0IGllZWU4MDIxMV90eF9kYXRhICp0eClcbi0tXG5uZXQvbWFjODAyMTEvdHguYy0yNjgtXG5uZXQvbWFjODAyMTEvdHguYzoyNjk6c3RhdGljIGllZWU4MDIxMV90eF9yZXN1bHQgZGVidWdfbm9pbmxpbmVcbm5ldC9tYWM4MDIxMS90eC5jLTI3MC1pZWVlODAyMTFfdHhfaF9jaGVja19hc3NvYyhzdHJ1Y3QgaWVlZTgwMjExX3R4X2RhdGEgKnR4KVxuLS1cbm5ldC9tYWM4MDIxMS90eC5jPTQ1OD1pZWVlODAyMTFfdHhfaF91bmljYXN0X3BzX2J1ZihzdHJ1Y3QgaWVlZTgwMjExX3R4X2RhdGEgKnR4KVxuLS1cbm5ldC9tYWM4MDIxMS90eC5jLTUzNS1cbm5ldC9tYWM4MDIxMS90eC5jOjUzNjpzdGF0aWMgaWVlZTgwMjExX3R4X3Jlc3VsdCBkZWJ1Z19ub2lubGluZVxubmV0L21hYzgwMjExL3R4LmMtNTM3LWllZWU4MDIxMV90eF9oX3BzX2J1ZihzdHJ1Y3QgaWVlZTgwMjExX3R4X2RhdGEgKnR4KVxuLS1cbm5ldC9tYWM4MDIxMS90eC5jLTU0Ny1cbm5ldC9tYWM4MDIxMS90eC5jOjU0ODpzdGF0aWMgaWVlZTgwMjExX3R4X3Jlc3VsdCBkZWJ1Z19ub2lubGluZVxubmV0L21hYzgwMjExL3R4LmMtNTQ5LWllZWU4MDIxMV90eF9oX2NoZWNrX2NvbnRyb2xfcG9ydF9wcm90b2NvbChzdHJ1Y3QgaWVlZTgwMjExX3R4X2RhdGEgKnR4KVxuLS1cbm5ldC9tYWM4MDIxMS90eC5jPTU2ND1pZWVlODAyMTFfc2VsZWN0X2xpbmtfa2V5KHN0cnVjdCBpZWVlODAyMTFfdHhfZGF0YSAqdHgpXG4tLVxubmV0L21hYzgwMjExL3R4LmMtNTkxLVxubmV0L21hYzgwMjExL3R4LmM6NTkyOnN0YXRpYyBpZWVlODAyMTFfdHhfcmVzdWx0IGRlYnVnX25vaW5saW5lXG5uZXQvbWFjODAyMTEvdHguYy01OTMtaWVlZTgwMjExX3R4X2hfc2VsZWN0X2tleShzdHJ1Y3QgaWVlZTgwMjExX3R4X2RhdGEgKnR4KVxuLS1cbm5ldC9tYWM4MDIxMS90eC5jLTY3My1cbm5ldC9tYWM4MDIxMS90eC5jOjY3NDpzdGF0aWMgaWVlZTgwMjExX3R4X3Jlc3VsdCBkZWJ1Z19ub2lubGluZVxubmV0L21hYzgwMjExL3R4LmMtNjc1LWllZWU4MDIxMV90eF9oX3JhdGVfY3RybChzdHJ1Y3QgaWVlZTgwMjExX3R4X2RhdGEgKnR4KVxuLS1cbm5ldC9tYWM4MDIxMS90eC5jPTgwOD1zdGF0aWMgX19sZTE2IGllZWU4MDIxMV90eF9uZXh0X3NlcShzdHJ1Y3Qgc3RhX2luZm8gKnN0YSwgaW50IHRpZClcbi0tXG5uZXQvbWFjODAyMTEvdHguYy04MTgtXG5uZXQvbWFjODAyMTEvdHguYzo4MTk6c3RhdGljIGllZWU4MDIxMV90eF9yZXN1bHQgZGVidWdfbm9pbmxpbmVcbm5ldC9tYWM4MDIxMS90eC5jLTgyMC1pZWVlODAyMTFfdHhfaF9zZXF1ZW5jZShzdHJ1Y3QgaWVlZTgwMjExX3R4X2RhdGEgKnR4KVxuLS1cbm5ldC9tYWM4MDIxMS90eC5jPTg5MT1zdGF0aWMgaW50IGllZWU4MDIxMV9mcmFnbWVudChzdHJ1Y3QgaWVlZTgwMjExX3R4X2RhdGEgKnR4LFxuLS1cbm5ldC9tYWM4MDIxMS90eC5jLTk1MC1cbm5ldC9tYWM4MDIxMS90eC5jOjk1MTpzdGF0aWMgaWVlZTgwMjExX3R4X3Jlc3VsdCBkZWJ1Z19ub2lubGluZVxubmV0L21hYzgwMjExL3R4LmMtOTUyLWllZWU4MDIxMV90eF9oX2ZyYWdtZW50KHN0cnVjdCBpZWVlODAyMTFfdHhfZGF0YSAqdHgpXG4tLVxubmV0L21hYzgwMjExL3R4LmMtMTAyNS1cbm5ldC9tYWM4MDIxMS90eC5jOjEwMjY6c3RhdGljIGllZWU4MDIxMV90eF9yZXN1bHQgZGVidWdfbm9pbmxpbmVcbm5ldC9tYWM4MDIxMS90eC5jLTEwMjctaWVlZTgwMjExX3R4X2hfc3RhdHMoc3RydWN0IGllZWU4MDIxMV90eF9kYXRhICp0eClcbi0tXG5uZXQvbWFjODAyMTEvdHguYy0xMDQ0LVxubmV0L21hYzgwMjExL3R4LmM6MTA0NTpzdGF0aWMgaWVlZTgwMjExX3R4X3Jlc3VsdCBkZWJ1Z19ub2lubGluZVxubmV0L21hYzgwMjExL3R4LmMtMTA0Ni1pZWVlODAyMTFfdHhfaF9lbmNyeXB0KHN0cnVjdCBpZWVlODAyMTFfdHhfZGF0YSAqdHgpXG4tLVxubmV0L21hYzgwMjExL3R4LmMtMTA3OS1cbm5ldC9tYWM4MDIxMS90eC5jOjEwODA6c3RhdGljIGllZWU4MDIxMV90eF9yZXN1bHQgZGVidWdfbm9pbmxpbmVcbm5ldC9tYWM4MDIxMS90eC5jLTEwODEtaWVlZTgwMjExX3R4X2hfY2FsY3VsYXRlX2R1cmF0aW9uKHN0cnVjdCBpZWVlODAyMTFfdHhfZGF0YSAqdHgpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI5IDA2OjAzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM1Njc4CgkJCQkJCQlvdXRwdXQ6IDM2CgkJCQkJCQl0aG91Z2h0czogMjg5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEluaXRpYWwgQXNzZXNzbWVudCBvZiBtYWM4MDIxMSBSWCBFbnRyeSBQb2ludHMqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoZSBlbnRyeSBwb2ludHMgZm9yIHRoZSBtYWM4MDIxMSByZWNlaXZlIHBhdGguIFJpZ2h0IG9mZiB0aGUgYmF0LCBJIHNlZSB0aGF0IGBpZWVlODAyMTFfcnhfbGlzdGAsIGBpZWVlODAyMTFfcnhfbmFwaWAsIGFuZCBgaWVlZTgwMjExX3J4X2lycXNhZmVgIGFyZSB0aGUgbm9uLXN0YXRpYyBlbnRyeSBwb2ludHMgZGVmaW5lZCB3aXRoaW4gYG5ldC9tYWM4MDIxMS9yeC5jYC4gTXkgaW5zdGluY3QgaXMgdG8gbWFrZSBzdXJlIHRoZXNlIGFyZSB0aGUgY29yZSBpbnRlcmZhY2VzIEkgc2hvdWxkIGJlIGZvY3VzaW5nIG9uLCBzbyBJIG5lZWQgdG8gcXVpY2tseSBzY2FuIGBuZXQvbWFjODAyMTEvcnguY2AgaXRzZWxmIGFuZCBwb3NzaWJseSBlbHNld2hlcmUgdG8gZW5zdXJlIEkmIzM5O20gbm90IG1pc3NpbmcgYW55IG90aGVyIGNydWNpYWwgcmVsZXZhbnQgZnVuY3Rpb25zLiBNeSByYWRhciBpcyB1cCBmb3IgYW55dGhpbmcgZWxzZSwgbGlrZSB0aGUgd2F5IGBpZWVlODAyMTFfcnhfaF9kZWZyYWdtZW50YCBpcyBoYW5kbGVkIOKAkyBpdCAqaXMqIGEgc3ltYm9sIGR1ZSB0byBgTUFDODAyMTFfTk9JTkxJTkVgIGJ1dCBJJiMzOTtkIHJhdGhlciBzdGljayB3aXRoIHRob3NlIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50cyBpZiBwb3NzaWJsZSwgYW5kIGVzcGVjaWFsbHkgdGhlIG9uZXMgSSBtZW50aW9uZWQgaW5pdGlhbGx5LgoKSSBzaG91bGQgYWxzbyBxdWlja2x5IHJldmlldyB0aGUgcmVsZXZhbnQgY29uZmlndXJhdGlvbiBvcHRpb25zLiBgTUFDODAyMTFgLCBvYnZpb3VzbHksIGBDRkc4MDIxMWAgd2hpY2ggaXMgZnVuZGFtZW50YWwsIGFuZCB0aGVuIGBNQUM4MDIxMV9IV1NJTWAuIEkgbmVlZCB0byBlbnN1cmUgSSYjMzk7bSBub3Qgb3Zlcmxvb2tpbmcgYW55dGhpbmcgY3J1Y2lhbCB0aGVyZS4gU3BlY2lmaWNhbGx5LCBmb3IgYE1BQzgwMjExX0hXU0lNYCwgSSYjMzk7bGwgbmVlZCB0byBjaGVjayBpZiB0aGF0IG9wdGlvbiByZWxpZXMgb24gb3IgaW50ZXJhY3RzIHdpdGggYW55IG90aGVyIGNvbmZpZ3VyYXRpb25zLiBJJiMzOTtsbCBzZWFyY2ggZm9yICYjMzQ7Y29uZmlnIE1BQzgwMjExX0hXU0lNJiMzNDsgd2l0aGluIGBkcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL0tjb25maWdgIHRvIHBpbnBvaW50IGFueSBkZXBlbmRlbmNpZXMgb3IgaW50ZXJhY3Rpb25zLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yOSAwNjowNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMzAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAgMTpcdGNvbmZpZyBNQUM4MDIxMV9IV1NJTVxuICAgMjpcdFx0dHJpc3RhdGUgXCYjMzQ7U2ltdWxhdGVkIHJhZGlvIHRlc3RpbmcgdG9vbCBmb3IgbWFjODAyMTFcJiMzNDtcbiAgIDM6XHRcdGRlcGVuZHMgb24gTUFDODAyMTFcbiAgIDQ6XHRcdGhlbHBcbiAgIDU6XHRcdCAgVGhpcyBkcml2ZXIgaXMgYSBkZXZlbG9wZXIgdGVzdGluZyB0b29sIHRoYXQgY2FuIGJlIHVzZWQgdG8gdGVzdFxuICAgNjpcdFx0ICBJRUVFIDgwMi4xMSBuZXR3b3JraW5nIHN0YWNrIChtYWM4MDIxMSkgZnVuY3Rpb25hbGl0eS4gVGhpcyBpcyBub3RcbiAgIDc6XHRcdCAgbmVlZGVkIGZvciBub3JtYWwgd2lyZWxlc3MgTEFOIHVzYWdlIGFuZCBpcyBvbmx5IGZvciB0ZXN0aW5nLiBTZWVcbiAgIDg6XHRcdCAgRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL21hYzgwMjExX2h3c2ltIGZvciBtb3JlIGluZm9ybWF0aW9uIG9uIGhvd1xuICAgOTpcdFx0ICB0byB1c2UgdGhpcyB0b29sLlxuICAxMDpcdFxuICAxMTpcdFx0ICBUbyBjb21waWxlIHRoaXMgZHJpdmVyIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlOiB0aGUgbW9kdWxlIHdpbGwgYmVcbiAgMTI6XHRcdCAgY2FsbGVkIG1hYzgwMjExX2h3c2ltLiAgSWYgdW5zdXJlLCBzYXkgTi5cbiAgMTM6XHRcbiAgMTQ6XHRjb25maWcgVklSVF9XSUZJXG4gIDE1Olx0XHR0cmlzdGF0ZSBcJiMzNDtXaWZpIHdyYXBwZXIgZm9yIGV0aGVybmV0IGRyaXZlcnNcJiMzNDtcbiAgMTY6XHRcdGRlcGVuZHMgb24gQ0ZHODAyMTFcbiAgMTc6XHRcdGhlbHBcbiAgMTg6XHRcdCAgVGhpcyBvcHRpb24gYWRkcyBzdXBwb3J0IGZvciBldGhlcm5ldCBjb25uZWN0aW9ucyB0byBhcHBlYXIgYXMgaWYgdGhleVxuICAxOTpcdFx0ICBhcmUgd2lmaSBjb25uZWN0aW9ucyB0aHJvdWdoIGEgc3BlY2lhbCBydG5ldGxpbmsgZGV2aWNlLlxuICAyMDpcdFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yOSAwNjowNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNjcwNwoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDc3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3Mgc2VlIHdoYXQmIzM5O3MgZ29pbmcgb24gaGVyZS4KCioqSW52ZXN0aWdhdGluZyBXaXJlbGVzcyBDb25maWd1cmF0aW9uIE9wdGlvbnMqKgoKUmlnaHQsIHNvIEkgbmVlZCB0byBkaWcgaW50byB0aGUgd2lyZWxlc3MgY29uZmlndXJhdGlvbiwgc3BlY2lmaWNhbGx5IGFyb3VuZCBtYWM4MDIxMS4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsIGFyZSB0aGVyZSBhbnkgKm90aGVyKiBjb25maWdzIHJlbGF0ZWQgdG8gd2lyZWxlc3Mgb3IgbWFjODAyMTEgdGhhdCBJJiMzOTttIG92ZXJsb29raW5nPyBMZXQmIzM5O3Mgc3RhcnQgd2l0aCBhIHN5c3RlbWF0aWMgY2hlY2suIFRoZSBmaXJzdCBwbGFjZSB0byBsb29rIHdvdWxkIGJlIHVuZGVyIGBORVRERVZJQ0VTYCwgdGhlbiBgV0xBTmAsIGFuZCBmaW5hbGx5IHdpdGhpbiB0aGUgYE1BQzgwMjExYCBzZWN0aW9uLiBJIG5lZWQgdG8gbWFrZSBzdXJlIEkmIzM5O20gbm90IG1pc3NpbmcgYW55dGhpbmcgbGlrZSBgTUFDODAyMTFfSFdTSU1gIG9yIGBDRkc4MDIxMWAg4oCTIHRob3NlIG9mdGVuIGhhdmUgdGhlaXIgb3duIGNvbmZpZ3VyYXRpb25zLiBUaGVuLCB0byBiZSB0aG9yb3VnaCwgSSBzaG91bGQgYWxzbyBjaGVjayB0aGUgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL0tjb25maWdgIGZpbGUuIFRoYXQmIzM5O3MgdXN1YWxseSB0aGUgY2Fub25pY2FsIHNvdXJjZSBmb3IgdGhlc2Uga2luZHMgb2Ygc2V0dGluZ3MgYW5kIGRlcGVuZGVuY2llcy4gVGhpcyBzaG91bGQgZ2l2ZSBtZSBhIGdvb2QgbGF5IG9mIHRoZSBsYW5kLCBjb25maWd1cmF0aW9uLXdpc2UuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI5IDA2OjA0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNDAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAgMTpcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuICAgMjpcdCNcbiAgIDM6XHQjIFdpcmVsZXNzIExBTiBkZXZpY2UgY29uZmlndXJhdGlvblxuICAgNDpcdCNcbiAgIDU6XHRcbiAgIDY6XHRtZW51Y29uZmlnIFdMQU5cbiAgIDc6XHRcdGJvb2wgXCYjMzQ7V2lyZWxlc3MgTEFOXCYjMzQ7XG4gICA4Olx0XHRkZXBlbmRzIG9uICFTMzkwXG4gICA5Olx0XHRkZXBlbmRzIG9uIE5FVFxuICAxMDpcdFx0c2VsZWN0IFdJUkVMRVNTXG4gIDExOlx0XHRkZWZhdWx0IHlcbiAgMTI6XHRcdGhlbHBcbiAgMTM6XHRcdCAgVGhpcyBzZWN0aW9uIGNvbnRhaW5zIGFsbCB0aGUgcHJlIDgwMi4xMSBhbmQgODAyLjExIHdpcmVsZXNzXG4gIDE0Olx0XHQgIGRldmljZSBkcml2ZXJzLiBGb3IgYSBjb21wbGV0ZSBsaXN0IG9mIGRyaXZlcnMgYW5kIGRvY3VtZW50YXRpb25cbiAgMTU6XHRcdCAgb24gdGhlbSByZWZlciB0byB0aGUgd2lyZWxlc3Mgd2lraTpcbiAgMTY6XHRcbiAgMTc6XHRcdCAgaHR0cHM6Ly93aXJlbGVzcy53aWtpLmtlcm5lbC5vcmcvZW4vdXNlcnMvRHJpdmVyc1xuICAxODpcdFxuICAxOTpcdGlmIFdMQU5cbiAgMjA6XHRcbiAgMjE6XHRzb3VyY2UgXCYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYWRtdGVrL0tjb25maWdcJiMzNDtcbiAgMjI6XHRzb3VyY2UgXCYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL0tjb25maWdcJiMzNDtcbiAgMjM6XHRzb3VyY2UgXCYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRtZWwvS2NvbmZpZ1wmIzM0O1xuICAyNDpcdHNvdXJjZSBcJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9LY29uZmlnXCYjMzQ7XG4gIDI1Olx0c291cmNlIFwmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL0tjb25maWdcJiMzNDtcbiAgMjY6XHRzb3VyY2UgXCYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvS2NvbmZpZ1wmIzM0O1xuICAyNzpcdHNvdXJjZSBcJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL0tjb25maWdcJiMzNDtcbiAgMjg6XHRzb3VyY2UgXCYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvS2NvbmZpZ1wmIzM0O1xuICAyOTpcdHNvdXJjZSBcJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9taWNyb2NoaXAvS2NvbmZpZ1wmIzM0O1xuICAzMDpcdHNvdXJjZSBcJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL0tjb25maWdcJiMzNDtcbiAgMzE6XHRzb3VyY2UgXCYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL0tjb25maWdcJiMzNDtcbiAgMzI6XHRzb3VyY2UgXCYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvcHVyZWxpZmkvS2NvbmZpZ1wmIzM0O1xuICAzMzpcdHNvdXJjZSBcJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvS2NvbmZpZ1wmIzM0O1xuICAzNDpcdHNvdXJjZSBcJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL0tjb25maWdcJiMzNDtcbiAgMzU6XHRzb3VyY2UgXCYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvcnNpL0tjb25maWdcJiMzNDtcbiAgMzY6XHRzb3VyY2UgXCYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3Mvc2lsYWJzL0tjb25maWdcJiMzNDtcbiAgMzc6XHRzb3VyY2UgXCYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3Mvc3QvS2NvbmZpZ1wmIzM0O1xuICAzODpcdHNvdXJjZSBcJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy90aS9LY29uZmlnXCYjMzQ7XG4gIDM5Olx0c291cmNlIFwmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL0tjb25maWdcJiMzNDtcbiAgNDA6XHRzb3VyY2UgXCYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvcXVhbnRlbm5hL0tjb25maWdcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjkgMDY6MDQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzc2NTUKCQkJCQkJCW91dHB1dDogMjkKCQkJCQkJCXRob3VnaHRzOiAyOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGlzLiBIZXJlJiMzOTtzIGhvdyBJJiMzOTtkIGFwcHJvYWNoIHRoYXQga2VybmVsIGNvbmZpZ3VyYXRpb24gZmlsZSBjaGVjazoKCioqRXhhbWluaW5nIHRoZSBXaXJlbGVzcyBWaXJ0dWFsIERyaXZlciBDb25maWd1cmF0aW9uKioKClJpZ2h0LCB0aW1lIHRvIGdldCBhIGdyaXAgb24gdGhpcyB3aXJlbGVzcyB2aXJ0dWFsIGRyaXZlciBjb25maWd1cmF0aW9uLiBGaXJzdCwgSSBuZWVkIHRvIHZlcmlmeSBpdHMgY29uZmlndXJhdGlvbiwgc28gbGV0JiMzOTtzIGNoZWNrIGBzb3VyY2UgJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL0tjb25maWcmIzM0O2AgaW4gYGRyaXZlcnMvbmV0L3dpcmVsZXNzL0tjb25maWdgLiBJJiMzOTtsbCBiZSBsb29raW5nIGZvciBkZXBlbmRlbmNpZXMsIGRlZmF1bHQgc2V0dGluZ3MsIGFuZCBhbnkgc3BlY2lmaWMgb3B0aW9ucyB0aGF0IHBlcnRhaW4gdG8gdGhlIHZpcnR1YWwgZHJpdmVyLiBJIGV4cGVjdCB0byBmaW5kIHRoZSBidWlsZGluZyBibG9ja3MgdGhhdCBjb250cm9sIHdoZXRoZXIgb3Igbm90IHRoaXMgZHJpdmVyIGlzIGluY2x1ZGVkLCBhbmQgaG93IGl0cyBmZWF0dXJlcyBhcmUgZXhwb3NlZC4gVGhpcyBLY29uZmlnIGZpbGUgd2lsbCBiZSB0aGUga2V5IHRvIHVuZGVyc3RhbmRpbmcgaG93IHRoZSBrZXJuZWwmIzM5O3Mgd2lyZWxlc3Mgc3Vic3lzdGVtIGlzIHRyZWF0aW5nIHZpcnR1YWwgbmV0d29yayBkZXZpY2VzLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgYmVoYXZpb3IgZnVsbHkgdG8gZGVidWcgYW5kIG9wdGltaXplLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yOSAwNjowNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt2aXJ0dWFsL0tjb25maWcmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9LY29uZmlnPTQwPXNvdXJjZSBcJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9xdWFudGVubmEvS2NvbmZpZ1wmIzM0O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvS2NvbmZpZy00MS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL0tjb25maWc6NDI6c291cmNlIFwmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvS2NvbmZpZ1wmIzM0O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvS2NvbmZpZy00My1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40MS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjkgMDY6MDQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzc5NzMKCQkJCQkJCW91dHB1dDogMTg1CgkJCQkJCQl0aG91Z2h0czogMjI1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgdGhlIG1hYzgwMjExIEZyYWdtZW50IEhhbmRsaW5nIEZpeCoqCgpPa2F5LCBzbyB0aGlzIHBhdGNoIGlzIGNydWNpYWwuIEl0JiMzOTtzIGFkZHJlc3NpbmcgYSBwcmV0dHkgbmFzdHkgaW50ZWdlciBvdmVyZmxvdyB2dWxuZXJhYmlsaXR5IGluIHRoZSBtYWM4MDIxMSBmcmFtZSByZWFzc2VtYmx5IHByb2Nlc3MuIFRoZXkmIzM5O3JlIGNoYW5naW5nIGBleHRyYV9sZW5gIHdpdGhpbiB0aGUgYGllZWU4MDIxMV9mcmFnbWVudF9lbnRyeWAgc3RydWN0IGZyb20gYSBgdTE2YCB0byBhbiBgdW5zaWduZWQgaW50YC4gVGhhdCYjMzk7cyBhIGNsYXNzaWMgY2FzZSBvZiBwb3RlbnRpYWxseSBvdmVyZmxvd2luZyB0aGUgY3VtdWxhdGl2ZSBmcmFnbWVudCBsZW5ndGhzLCB3aGljaCwgaWYgZXhwbG9pdGVkLCBjb3VsZCBsZWFkIHRvIGEgc2VyaW91cyBidWZmZXIgb3ZlcmZsb3cgd2hlbiB0aGUgc3lzdGVtIGF0dGVtcHRzIHRvIGFzc2VtYmxlIHRoZSBmcmFnbWVudHMgd2l0aCBgc2tiX3B1dF9kYXRhYC4gVGhpcyBpcyBhYnNvbHV0ZWx5IGEgZnVuY3Rpb25hbCBmaXgsIGRpcmVjdGx5IGltcGFjdGluZyBjb3JlIG1hYzgwMjExIGtlcm5lbCBsb2dpYyDigJMgdGhlIHJlYXNzZW1ibHkgcGFydCwgaW4gcGFydGljdWxhci4KClRoZSBiZWF1dHkgb2YgdGhpcyB2dWxuZXJhYmlsaXR5IGlzIHRoYXQgaXQmIzM5O3MgaGlnaGx5IGZ1enphYmxlLiBJbmplY3RpbmcgY3JhZnRlZCA4MDIuMTEgZnJhbWVzIHZpYSBgbWFjODAyMTFfaHdzaW1gIGlzIGdvaW5nIHRvIGJlIGluY3JlZGlibHkgZWZmZWN0aXZlIGF0IHVuY292ZXJpbmcgYW55IGxpbmdlcmluZyBpc3N1ZXMgb3IgZWRnZSBjYXNlcy4gV2UgcmVhbGx5IHNob3VsZCBwdXQgYSBoZWF2eSBmb2N1cyBvbiB0aGF0IGFwcHJvYWNoLgoKSSYjMzk7bSBtYWtpbmcgYSBub3RlIG9mIHRoZSBzcGVjaWZpYyBzeW1ib2xzIHRvIGZvY3VzIG9uIGR1cmluZyBmdXp6aW5nOiBgaWVlZTgwMjExX3J4X2xpc3RgLCBgaWVlZTgwMjExX3J4X25hcGlgLCBhbmQgYGllZWU4MDIxMV9yeF9pcnFzYWZlYC4gVGhleSYjMzk7cmUgcHJvYmFibHkgcmlnaHQgd2hlcmUgdGhlIGRhdGEgaXMgaGFuZGxlZC4gQW5kLCB0aGUgYE1BQzgwMjExYCwgYENGRzgwMjExYCwgYW5kIGBNQUM4MDIxMV9IV1NJTWAgY29uZmlncyBoYXZlIHRvIGJlIGVuYWJsZWQgdG8gdGVzdCB0aGlzIHByb3Blcmx5LgoKQWxyaWdodCwgdGltZSB0byBzZXQgdGhpcyB1cCBmb3IgZnV6emluZyBhbmQgZ2V0IHRoZSByZXN1bHRzIQoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yOSAwNjowNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7TUFDODAyMTEmIzM0OywKICAgICYjMzQ7Q0ZHODAyMTEmIzM0OywKICAgICYjMzQ7TUFDODAyMTFfSFdTSU0mIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtpZWVlODAyMTFfcnhfbGlzdCYjMzQ7LAogICAgJiMzNDtpZWVlODAyMTFfcnhfbmFwaSYjMzQ7LAogICAgJiMzNDtpZWVlODAyMTFfcnhfaXJxc2FmZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBjaGFuZ2VzIGBleHRyYV9sZW5gIGluIGBzdHJ1Y3QgaWVlZTgwMjExX2ZyYWdtZW50X2VudHJ5YCBmcm9tIGB1MTZgIHRvIGB1bnNpZ25lZCBpbnRgIHRvIHByZXZlbnQgaW50ZWdlciBvdmVyZmxvdyBkdXJpbmcgODAyLjExIGZyYWdtZW50IHJlYXNzZW1ibHkgaW4gbWFjODAyMTEgcnggaGFuZGxpbmcuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBkaXJlY3RseSBhZmZlY3RpbmcgcGFja2V0IHJlYXNzZW1ibHkgYW5kIG1lbW9yeSBtYW5hZ2VtZW50IGluIHRoZSByZWFjaGFibGUgd2lyZWxlc3MgbmV0d29ya2luZyBzdWJzeXN0ZW0uJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O01BQzgwMjExJiMzNDssCiAgICAmIzM0O0NGRzgwMjExJiMzNDssCiAgICAmIzM0O01BQzgwMjExX0hXU0lNJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7aWVlZTgwMjExX3J4X2xpc3QmIzM0OywKICAgICYjMzQ7aWVlZTgwMjExX3J4X25hcGkmIzM0OywKICAgICYjMzQ7aWVlZTgwMjExX3J4X2lycXNhZmUmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggY2hhbmdlcyBgZXh0cmFfbGVuYCBpbiBgc3RydWN0IGllZWU4MDIxMV9mcmFnbWVudF9lbnRyeWAgZnJvbSBgdTE2YCB0byBgdW5zaWduZWQgaW50YCB0byBwcmV2ZW50IGludGVnZXIgb3ZlcmZsb3cgZHVyaW5nIDgwMi4xMSBmcmFnbWVudCByZWFzc2VtYmx5IGluIG1hYzgwMjExIHJ4IGhhbmRsaW5nLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgZGlyZWN0bHkgYWZmZWN0aW5nIHBhY2tldCByZWFzc2VtYmx5IGFuZCBtZW1vcnkgbWFuYWdlbWVudCBpbiB0aGUgcmVhY2hhYmxlIHdpcmVsZXNzIG5ldHdvcmtpbmcgc3Vic3lzdGVtLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQzLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yOSAwNjowNDwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+SWY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4xbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI5IDA2OjA0PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjFtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmNvcmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggY2hhbmdlcyB0aGUgdHlwZSBvZiBgZXh0cmFfbGVuYCBpbiBgc3RydWN0IGllZWU4MDIxMV9mcmFnbWVudF9lbnRyeWAgZnJvbSBgdTE2YCB0byBgdW5zaWduZWQgaW50YCB0byBwcmV2ZW50IGludGVnZXIgb3ZlcmZsb3cvdHJ1bmNhdGlvbiB3aGVuIGNhbGN1bGF0aW5nIHRoZSB0b3RhbCBsZW5ndGggb2YgZnJhZ21lbnRlZCBmcmFtZXMgZHVyaW5nIElFRUUgODAyLjExIGRlZnJhZ21lbnRhdGlvbi5cblxuYHN0cnVjdCBpZWVlODAyMTFfZnJhZ21lbnRfZW50cnlgIGlzIGFuIGludGVybmFsIGtlcm5lbCBkYXRhIHN0cnVjdHVyZSB1c2VkIGV4Y2x1c2l2ZWx5IGJ5IG1hYzgwMjExIFJYIGRlZnJhZ21lbnRhdGlvbiByb3V0aW5lcy4gYGVudHJ5LVx1MDAzZWV4dHJhX2xlbmAgaXMgZXhwbGljaXRseSBpbml0aWFsaXplZCB0byBgMGAgaW4gYGllZWU4MDIxMV9yZWFzc2VtYmxlX2FkZCgpYCwgYW5kIHRoZSBzdHJ1Y3QgaXMgbmV2ZXIgY29waWVkIHRvIHVzZXJzcGFjZSBvciBleHBvc2VkIHRvIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJlYWRzLiBUaGUgdW5kZXJseWluZyBpc3N1ZSBwcmV2ZW50ZWQgYnkgdGhpcyBwYXRjaCBpcyBhbiBpbnRlZ2VyIG92ZXJmbG93IHRoYXQgY291bGQgbGVhZCB0byBpbnN1ZmZpY2llbnQgU0tCIHJlYWxsb2NhdGlvbiAoc2tiIHRhaWxyb29tIGV4aGF1c3Rpb24gLyBvdXQtb2YtYm91bmRzIHdyaXRlcyksIHdoaWNoIGlzIGRldGVjdGVkIGJ5IEtBU0FOIGFuZCBzdGFuZGFyZCBrZXJuZWwgYXNzZXJ0aW9ucy4gVGhlcmUgaXMgbm8gcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSByZWFkcyBvciBpbmZvcm1hdGlvbiBsZWFrcywgc28gYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCB3YXJyYW50ZWQuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIHNlY3VyaXR5IGVuZ2luZWVyIHNwZWNpYWxpemluZyBpbiBrZXJuZWwgbWVtb3J5CmVycm9yIGRldGVjdG9ycyAoS0FTQU4gYW5kIEtNU0FOKS4gWW91ciBqb2IgaXMgdG8gcmV2aWV3IHRoZSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kCmRldGVybWluZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGp1c3RpZnkgc3Bhd25pbmcgYSBkZWRpY2F0ZWQgS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikKZnV6emluZyBzZXNzaW9uIGluIGFkZGl0aW9uIHRvIHN0YW5kYXJkIEtBU0FOIGZ1enppbmcuCgpDUklUSUNBTCBESVNUSU5DVElPTiBCRVRXRUVOIEtBU0FOIEFORCBLTVNBTjoKLSBTdGFuZGFyZCBLQVNBTiBrZXJuZWwgYnVpbGRzICh1cHN0cmVhbS1hcHBhcm1vci1rYXNhbi5jb25maWcpIGFscmVhZHkgZW5hYmxlCiAgYSBjb21wcmVoZW5zaXZlIHN1aXRlIG9mIGRlYnVnZ2luZyB0b29scyBhbmQgc2FuaXRpemVycywgaW5jbHVkaW5nIEtBU0FOCiAgKG91dC1vZi1ib3VuZHMgYWNjZXNzZXMsIHVzZS1hZnRlci1mcmVlLCBkb3VibGUgZnJlZSwgaW52YWxpZCBmcmVlKSwgTE9DS0RFUAogIChsb2NraW5nIGJ1Z3MgYW5kIGRlYWRsb2NrcyksIFVCLXNhbml0aXplcnMsIGFuZCBtZW1vcnkgY29ycnVwdGlvbiBjaGVja3MuCi0gS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikgZGV0ZWN0cyByZWFkcyBvZiBVTklOSVRJQUxJWkVEIG1lbW9yeSAoc3RhY2ssIGhlYXAsCiAgb3IgcGFnZSBhbGxvY2F0aW9ucykgYW5kIGtlcm5lbC10by11c2VyIG1lbW9yeSBpbmZvLWxlYWtzLgoKUnVsZTogVEhFUkUgSVMgTk8gU0VOU0UgSU4gUlVOTklORyBBIEtNU0FOIFNFU1NJT04gSUYgQSBCVUcgQ0FOIEJFIENBVUdIVCBCWSBLQVNBTiwKTE9DS0RFUCwgT1IgT1RIRVIgU1RBTkRBUkQgQlVHIERFVEVDVE9SUy4KQSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGluY3VycyBzaWduaWZpY2FudCByZXNvdXJjZSBjb3N0cy4gWW91IG11c3QgT05MWQpzZXQgTmVlZHNLTVNBTj10cnVlIGlmIHRoZSBjb2RlIGNoYW5nZXMgaW50cm9kdWNlIG9yIGV4cG9zZSBVTklOSVRJQUxJWkVEIE1FTU9SWSByaXNrcwp0aGF0IGFyZSBkZXRlY3RlZCBPTkxZIGJ5IEtNU0FOLgoKTG9vayBob2xpc3RpY2FsbHkgYXQgdGhlIHBhdGNoIHNlcmllcyBhbmQgc3Vycm91bmRpbmcgY29kZS4gRXZlbiBpZiBubyBkaXJlY3QKdW5pbml0aWFsaXplZCBmaWVsZCBhY2Nlc3NlcyBvciBuZXcgYnVmZmVyIGFsbG9jYXRpb25zIGFyZSBhZGRlZCBpbiB0aGUgZGlmZiBpdHNlbGYsCmEgcGF0Y2ggbWF5IGFsdGVyIGNvbnRyb2wgZmxvdywgYm91bmRzIGNoZWNraW5nLCBvciBkYXRhIGxlbmd0aCBjYWxjdWxhdGlvbnMgaW4gd2F5cwp0aGF0IGNoYW5nZSBob3cgdGhlIHJlc3Qgb2YgdGhlIGNvZGUgb3BlcmF0ZXMgb24gZXhpc3RpbmcgYnVmZmVycyAoZS5nLiBhbGxvd2luZwp1bmluaXRpYWxpemVkIHN0YWNrL2hlYXAgbWVtb3J5IHRvIGJlIHJlYWQsIGNvcGllZCB0byB1c2VyIHNwYWNlLCBvciB1c2VkIGluIGNvbnRyb2wKZmxvdykuIERvIG5vdCBoZXNpdGF0ZSB0byB1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlLApjYWxsZWQgZnVuY3Rpb25zLCBhbmQgY2FsbGVycy4KClNldCBOZWVkc0tNU0FOPXRydWUgT05MWSBJRiB0aGUgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllczoKMS4gS2VybmVsIHN0cnVjdHVyZXMgc2VudCB0byB1c2VyIHNwYWNlICh2aWEgY29weV90b191c2VyLCBwdXRfdXNlciwgbmV0bGluayBza2IKICAgYXR0cmlidXRlcywgaW9jdGwgb3V0cHV0IGFyZ3VtZW50cywgc29ja2V0IG9wdGlvbnMsIG9yIEJQRiBidWZmZXJzKSB3aGVyZSBmaWVsZHMKICAgb3Igc3RydWN0dXJlIHBhZGRpbmcgbWlnaHQgbm90IGJlIGZ1bGx5IGluaXRpYWxpemVkL3plcm9lZC4KMi4gQ29uZGl0aW9uYWwgbG9naWMgb3IgYnJhbmNoaW5nIHRoYXQgZGVwZW5kcyBvbiBwb3RlbnRpYWxseSB1bmluaXRpYWxpemVkIHZhcmlhYmxlcwogICBvciBzdHJ1Y3QgZmllbGRzLgozLiBBbGxvY2F0aW9uIG9yIGluaXRpYWxpemF0aW9uIG9mIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHdoZXJlIHVuaW5pdGlhbGl6ZWQgZmllbGRzCiAgIGNvdWxkIGJlIHJlYWQgbGF0ZXIgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMuCjQuIEJvdW5kcyBjaGVja3MsIGxlbmd0aHMsIG9yIGxvZ2ljIGluIGEgd2F5IHRoYXQgYWxsb3dzIHN1cnJvdW5kaW5nIGNvZGUgdG8gYWNjZXNzCiAgIHVuaW5pdGlhbGl6ZWQgYnl0ZXMgb2YgZXhpc3RpbmcgYnVmZmVycy4KClNldCBOZWVkc0tNU0FOPWZhbHNlIElGOgotIFRoZSBjb2RlIGNoYW5nZXMgcHJpbWFyaWx5IHJpc2sgb3V0LW9mLWJvdW5kcyBhY2Nlc3MsIGFycmF5IG92ZXJmbG93cywgTlVMTCBwb2ludGVyCiAgZGVyZWZlcmVuY2VzLCBsb2NraW5nIGRlYWRsb2Nrcywgb3IgdXNlLWFmdGVyLWZyZWUgYnVncyAodGhlc2UgYXJlIGFscmVhZHkgY2F1Z2h0CiAgYnkgS0FTQU4sIExPQ0tERVAsIG9yIHN0YW5kYXJkIGJ1ZyBkZXRlY3RvcnMpLgotIEFsbCBzdGFjay9oZWFwIHN0cnVjdHVyZXMgdG91Y2hlZCBvciBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBhcmUgZnVsbHkgemVyb2VkCiAgb3IgaW5pdGlhbGl6ZWQgKGUuZy4gdXNpbmcgPSB7MH0sIG1lbXNldCwga3phbGxvYykgYmVmb3JlIGJlaW5nIHJlYWQgb3IgY29waWVkLgotIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcy4KClVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUgaWYgbmVjZXNzYXJ5LCB0aGVuIHByb3ZpZGUKZGV0YWlsZWQgS01TQU5SZWFzb25pbmcgY29udHJhc3RpbmcgS0FTQU4gdnMgS01TQU4gYXBwbGljYWJpbGl0eSBmb3IgdGhpcyBwYXRjaC4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IGEyY2FmNTY0NGE3MTYwNjBlM2MzMmJmZjY1YmJmNTcyYzdiNTMwNTYKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgU2F0IEF1ZyAyOSAwNjowMjoxMiAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL25ldC9tYWM4MDIxMS9zdGFfaW5mby5oIGIvbmV0L21hYzgwMjExL3N0YV9pbmZvLmgKaW5kZXggZWUwZDMyODc3YzViNC4uMTEyYzMzM2ZiZTQ1YiAxMDA2NDQKLS0tIGEvbmV0L21hYzgwMjExL3N0YV9pbmZvLmgKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L21hYzgwMjExL3N0YV9pbmZvLmgKQEAgLTQ1OCw3ICYjNDM7NDU4LDcgQEAgc3RydWN0IGllZWU4MDIxMV9mcmFnbWVudF9lbnRyeSB7CiAJc3RydWN0IHNrX2J1ZmZfaGVhZCBza2JfbGlzdDsKIAl1bnNpZ25lZCBsb25nIGZpcnN0X2ZyYWdfdGltZTsKIAl1MTYgc2VxOwotCXUxNiBleHRyYV9sZW47CiYjNDM7CXVuc2lnbmVkIGludCBleHRyYV9sZW47CiAJdTE2IGxhc3RfZnJhZzsKIAl1OCByeF9xdWV1ZTsKIAl1OCBjaGVja19zZXF1ZW50aWFsX3BuOjEsIC8qIG5lZWRlZCBmb3IgQ0NNUC9HQ01QICovCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQ1LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yOSAwNjowNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMDkyCgkJCQkJCQlvdXRwdXQ6IDMxCgkJCQkJCQl0aG91Z2h0czogNzgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgc3VtbWFyeSwgYXMgSSYjMzk7ZCBhcHByb2FjaCB0aGlzIGFzIGFuIGV4cGVydDoKCioqRGl2aW5nIGludG8gdGhlIG5ldC9tYWM4MDIxMSBDb2RlYmFzZSoqCgpPa2F5LCB0aW1lIHRvIGdldCBhIGdyaXAgb24gdGhpcyBwYXRjaC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGltcGxpY2F0aW9ucyBvZiB0aGUgY2hhbmdlcyByZWxhdGVkIHRvIGBzdHJ1Y3QgaWVlZTgwMjExX2ZyYWdtZW50X2VudHJ5YCBhbmQsIHNwZWNpZmljYWxseSwgaG93IGBleHRyYV9sZW5gIGlzIHVzZWQgd2l0aGluIHRoYXQgY29udGV4dCBpbiB0aGUga2VybmVsJiMzOTtzIGBuZXQvbWFjODAyMTEvYCBzdWJzeXN0ZW0uIE15IHVzdWFsIGFwcHJvYWNoIGlzIHRvIGxldmVyYWdlIG15IHRvb2xpbmcgdG8gZWZmaWNpZW50bHkgbmF2aWdhdGUgdGhpcy4gSSYjMzk7bGwgbGF1bmNoIGBncmVwcGVyYCBhbmQgc2VhcmNoIGZvciBvY2N1cnJlbmNlcyBvZiBib3RoIGBleHRyYV9sZW5gIGFuZCBgc3RydWN0IGllZWU4MDIxMV9mcmFnbWVudF9lbnRyeWAgd2l0aGluIHRoZSBgbmV0L21hYzgwMjExL2AgZGlyZWN0b3J5LiBUaGlzIHNob3VsZCBnaXZlIG1lIGEgcXVpY2sgb3ZlcnZpZXcgb2YgdGhlIGNvZGUgdGhhdCYjMzk7cyBpbXBhY3RlZCBhbmQgd2hlcmUgdGhlc2UgZWxlbWVudHMgYXJlIGJlaW5nIG1hbmlwdWxhdGVkLiBGcm9tIHRoZXJlLCBJIGNhbiBiZWdpbiB0byBkcmF3IGNvbm5lY3Rpb25zIGFuZCB1bmRlcnN0YW5kIHRoZSBvdmVyYWxsIHBhdGNoIGNvbnRleHQuIFRoaXMgZm9jdXNlZCBzZWFyY2ggd2lsbCBhbGxvdyBtZSB0byBxdWlja2x5IGlkZW50aWZ5IHBvdGVudGlhbCBkZXBlbmRlbmNpZXMgYW5kIGludGVyYWN0aW9ucywgc2F2aW5nIG1lIHRpbWUgY29tcGFyZWQgdG8gYSBicm9hZGVyIHNlYXJjaC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40Ni8zPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjkgMDY6MDQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZXh0cmFfbGVuJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L21hYzgwMjExJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9tYWM4MDIxMS9pZWVlODAyMTFfaS5oPTI2ODU9dm9pZCBpZWVlODAyMTFfc2VuZF9hdXRoKHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLFxubmV0L21hYzgwMjExL2llZWU4MDIxMV9pLmgtMjY4Ni1cdFx0XHQgdTE2IHRyYW5zYWN0aW9uLCB1MTYgYXV0aF9hbGcsIHUxNiBzdGF0dXMsXG5uZXQvbWFjODAyMTEvaWVlZTgwMjExX2kuaDoyNjg3Olx0XHRcdCBjb25zdCB1OCAqZXh0cmEsIHNpemVfdCBleHRyYV9sZW4sIGNvbnN0IHU4ICpic3NpZCxcbm5ldC9tYWM4MDIxMS9pZWVlODAyMTFfaS5oLTI2ODgtXHRcdFx0IGNvbnN0IHU4ICpkYSwgY29uc3QgdTggKmtleSwgdTgga2V5X2xlbiwgdTgga2V5X2lkeCxcbi0tXG5uZXQvbWFjODAyMTEvcnguYz0yMjkzPWllZWU4MDIxMV9yZWFzc2VtYmxlX2FkZChzdHJ1Y3QgaWVlZTgwMjExX2ZyYWdtZW50X2NhY2hlICpjYWNoZSxcbi0tXG5uZXQvbWFjODAyMTEvcnguYy0yMzExLVx0ZW50cnktXHUwMDNlY2hlY2tfc2VxdWVudGlhbF9wbiA9IGZhbHNlO1xubmV0L21hYzgwMjExL3J4LmM6MjMxMjpcdGVudHJ5LVx1MDAzZWV4dHJhX2xlbiA9IDA7XG5uZXQvbWFjODAyMTEvcnguYy0yMzEzLVxuLS1cbm5ldC9tYWM4MDIxMS9yeC5jPTIzNzM9aWVlZTgwMjExX3J4X2hfZGVmcmFnbWVudChzdHJ1Y3QgaWVlZTgwMjExX3J4X2RhdGEgKnJ4KVxuLS1cbm5ldC9tYWM4MDIxMS9yeC5jLTI1MDMtXHRlbnRyeS1cdTAwM2VsYXN0X2ZyYWcgPSBmcmFnO1xubmV0L21hYzgwMjExL3J4LmM6MjUwNDpcdGVudHJ5LVx1MDAzZWV4dHJhX2xlbiAmIzQzOz0gcngtXHUwMDNlc2tiLVx1MDAzZWxlbjtcbm5ldC9tYWM4MDIxMS9yeC5jLTI1MDUtXHRpZiAoaWVlZTgwMjExX2hhc19tb3JlZnJhZ3MoZmMpKSB7XG4tLVxubmV0L21hYzgwMjExL3J4LmMtMjUxMC1cdHJ4LVx1MDAzZXNrYiA9IF9fc2tiX2RlcXVldWUoXHUwMDI2ZW50cnktXHUwMDNlc2tiX2xpc3QpO1xubmV0L21hYzgwMjExL3J4LmM6MjUxMTpcdGlmIChza2JfdGFpbHJvb20ocngtXHUwMDNlc2tiKSBcdTAwM2MgZW50cnktXHUwMDNlZXh0cmFfbGVuKSB7XG5uZXQvbWFjODAyMTEvcnguYy0yNTEyLVx0XHRJODAyX0RFQlVHX0lOQyhyeC1cdTAwM2Vsb2NhbC1cdTAwM2VyeF9leHBhbmRfc2tiX2hlYWRfZGVmcmFnKTtcbm5ldC9tYWM4MDIxMS9yeC5jOjI1MTM6XHRcdGlmICh1bmxpa2VseShwc2tiX2V4cGFuZF9oZWFkKHJ4LVx1MDAzZXNrYiwgMCwgZW50cnktXHUwMDNlZXh0cmFfbGVuLFxubmV0L21hYzgwMjExL3J4LmMtMjUxNC1cdFx0XHRcdFx0ICAgICAgR0ZQX0FUT01JQykpKSB7XG4tLVxubmV0L21hYzgwMjExL3N0YV9pbmZvLmg9NDU3PXN0cnVjdCBpZWVlODAyMTFfZnJhZ21lbnRfZW50cnkge1xuLS1cbm5ldC9tYWM4MDIxMS9zdGFfaW5mby5oLTQ2MC1cdHUxNiBzZXE7XG5uZXQvbWFjODAyMTEvc3RhX2luZm8uaDo0NjE6XHR1bnNpZ25lZCBpbnQgZXh0cmFfbGVuO1xubmV0L21hYzgwMjExL3N0YV9pbmZvLmgtNDYyLVx0dTE2IGxhc3RfZnJhZztcbi0tXG5uZXQvbWFjODAyMTEvdXRpbC5jPTExMzc9dm9pZCBpZWVlODAyMTFfc2VuZF9hdXRoKHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLFxubmV0L21hYzgwMjExL3V0aWwuYy0xMTM4LVx0XHRcdCB1MTYgdHJhbnNhY3Rpb24sIHUxNiBhdXRoX2FsZywgdTE2IHN0YXR1cyxcbm5ldC9tYWM4MDIxMS91dGlsLmM6MTEzOTpcdFx0XHQgY29uc3QgdTggKmV4dHJhLCBzaXplX3QgZXh0cmFfbGVuLCBjb25zdCB1OCAqZGEsXG5uZXQvbWFjODAyMTEvdXRpbC5jLTExNDAtXHRcdFx0IGNvbnN0IHU4ICpic3NpZCwgY29uc3QgdTggKmtleSwgdTgga2V5X2xlbiwgdTgga2V5X2lkeCxcbi0tXG5uZXQvbWFjODAyMTEvdXRpbC5jLTExNjQtXHRcdCAgICFjZmc4MDIxMV9maW5kX2V4dF9lbGVtKFdMQU5fRUlEX0VYVF9FSFRfTVVMVElfTElOSyxcbm5ldC9tYWM4MDIxMS91dGlsLmM6MTE2NTpcdFx0XHRcdFx0ICAgZXh0cmEsIGV4dHJhX2xlbikpO1xubmV0L21hYzgwMjExL3V0aWwuYy0xMTY2LVxuLS1cbm5ldC9tYWM4MDIxMS91dGlsLmMtMTE2OC1cdHNrYiA9IGRldl9hbGxvY19za2IobG9jYWwtXHUwMDNlaHcuZXh0cmFfdHhfaGVhZHJvb20gJiM0MzsgSUVFRTgwMjExX1dFUF9JVl9MRU4gJiM0Mztcbm5ldC9tYWM4MDIxMS91dGlsLmM6MTE2OTpcdFx0XHQgICAgMjQgJiM0MzsgNiAmIzQzOyBleHRyYV9sZW4gJiM0MzsgSUVFRTgwMjExX1dFUF9JQ1ZfTEVOICYjNDM7XG5uZXQvbWFjODAyMTEvdXRpbC5jLTExNzAtXHRcdFx0ICAgIGFkZF9tbGUgKiBzaXplb2YobWxlKSk7XG4tLVxubmV0L21hYzgwMjExL3V0aWwuYy0xMTg1LVx0aWYgKGV4dHJhKVxubmV0L21hYzgwMjExL3V0aWwuYzoxMTg2Olx0XHRza2JfcHV0X2RhdGEoc2tiLCBleHRyYSwgZXh0cmFfbGVuKTtcbm5ldC9tYWM4MDIxMS91dGlsLmMtMTE4Ny1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40Ny8zPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjkgMDY6MDQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzcyOAoJCQkJCQkJb3V0cHV0OiA0MQoJCQkJCQkJdGhvdWdodHM6IDQ2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHN1bW1hcnksIGFzIHRob3VnaCBJJiMzOTttIHRoaW5raW5nIHRocm91Z2ggdGhpcyBwcm9jZXNzOgoKKipEaXZpbmcgaW50byBtYWM4MDIxMSBSWCBEZWZyYW1lbnRhdGlvbioqCgpBbHJpZ2h0LCBsZXQmIzM5O3MgZ2V0IGludG8gdGhlIGRldGFpbHMgb2YgaG93IGBleHRyYV9sZW5gIGlzIGVtcGxveWVkIGR1cmluZyB0aGUgZGVmcmFnbWVudGF0aW9uIHByb2Nlc3Mgd2l0aGluIHRoZSBtYWM4MDIxMSBjb2RlLCBzcGVjaWZpY2FsbHkgaW4gYG5ldC9tYWM4MDIxMS9yeC5jYC4gSSYjMzk7bSBnb2luZyB0byBmb2N1cyBteSBhdHRlbnRpb24gb24gbGluZXMgMjI5MCB0aHJvdWdoIDI1NDAuIEkgd2FudCB0byBzZWUgcHJlY2lzZWx5IGhvdyB0aGlzIHZhcmlhYmxlIGlzIHVzZWQuIEkmIzM5O20gYXNzdW1pbmcgaXQgaGFzIGEgY3JpdGljYWwgcm9sZSBpbiBoYW5kbGluZyB0aGUgZnJhZ21lbnRlZCBwYWNrZXRzLCBidXQgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIG1lY2hhbmljcywgdGhlIG51YW5jZXMsIGFuZCBhbnkgcG90ZW50aWFsIGVkZ2UgY2FzZXMgdGhhdCBtaWdodCBiZSBoYW5kbGVkLiBJIHdpbGwgdHJhY2UgdGhlIHVzYWdlIHRvIHVuZGVyc3RhbmQgd2hhdCBzcGVjaWZpYyBkYXRhIGl0IHJlcHJlc2VudHMsIGhvdyBpdCBhZmZlY3RzIG1lbW9yeSBhbGxvY2F0aW9uIGFuZCBwYWNrZXQgcmVhc3NlbWJseS4gSSYjMzk7bSBsb29raW5nIGZvciB0aGUgbG9naWMgZmxvdywgdGhlIGVycm9yIGhhbmRsaW5nLCBhbmQgaG93IGBleHRyYV9sZW5gIGlzIGludGVncmF0ZWQgd2l0aCB0aGUgb3RoZXIgY3J1Y2lhbCB2YXJpYWJsZXMgYW5kIGZ1bmN0aW9ucyB3aXRoaW4gdGhhdCBmcmFnbWVudCBvZiBjb2RlLiBMZXQmIzM5O3Mgc2VlIGhvdyBzbWFydCB0aGlzIGlzIGRlc2lnbmVkLCBJJiMzOTttIGV4cGVjdGluZyBzb21lIHdlbGwtY3JhZnRlZCBsb2dpYyBoZXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQ4LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yOSAwNjowNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O25ldC9tYWM4MDIxMS9yeC5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMjI5MCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA2MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsyMjkwOlx0fVxuMjI5MTpcdFxuMjI5MjpcdHN0YXRpYyBpbmxpbmUgc3RydWN0IGllZWU4MDIxMV9mcmFnbWVudF9lbnRyeSAqXG4yMjkzOlx0aWVlZTgwMjExX3JlYXNzZW1ibGVfYWRkKHN0cnVjdCBpZWVlODAyMTFfZnJhZ21lbnRfY2FjaGUgKmNhY2hlLFxuMjI5NDpcdFx0XHRcdCB1bnNpZ25lZCBpbnQgZnJhZywgdW5zaWduZWQgaW50IHNlcSwgaW50IHJ4X3F1ZXVlLFxuMjI5NTpcdFx0XHRcdCBzdHJ1Y3Qgc2tfYnVmZiAqKnNrYilcbjIyOTY6XHR7XG4yMjk3Olx0XHRzdHJ1Y3QgaWVlZTgwMjExX2ZyYWdtZW50X2VudHJ5ICplbnRyeTtcbjIyOTg6XHRcbjIyOTk6XHRcdGVudHJ5ID0gXHUwMDI2Y2FjaGUtXHUwMDNlZW50cmllc1tjYWNoZS1cdTAwM2VuZXh0JiM0MzsmIzQzO107XG4yMzAwOlx0XHRpZiAoY2FjaGUtXHUwMDNlbmV4dCBcdTAwM2U9IElFRUU4MDIxMV9GUkFHTUVOVF9NQVgpXG4yMzAxOlx0XHRcdGNhY2hlLVx1MDAzZW5leHQgPSAwO1xuMjMwMjpcdFxuMjMwMzpcdFx0X19za2JfcXVldWVfcHVyZ2UoXHUwMDI2ZW50cnktXHUwMDNlc2tiX2xpc3QpO1xuMjMwNDpcdFxuMjMwNTpcdFx0X19za2JfcXVldWVfdGFpbChcdTAwMjZlbnRyeS1cdTAwM2Vza2JfbGlzdCwgKnNrYik7IC8qIG5vIG5lZWQgZm9yIGxvY2tpbmcgKi9cbjIzMDY6XHRcdCpza2IgPSBOVUxMO1xuMjMwNzpcdFx0ZW50cnktXHUwMDNlZmlyc3RfZnJhZ190aW1lID0gamlmZmllcztcbjIzMDg6XHRcdGVudHJ5LVx1MDAzZXNlcSA9IHNlcTtcbjIzMDk6XHRcdGVudHJ5LVx1MDAzZXJ4X3F1ZXVlID0gcnhfcXVldWU7XG4yMzEwOlx0XHRlbnRyeS1cdTAwM2VsYXN0X2ZyYWcgPSBmcmFnO1xuMjMxMTpcdFx0ZW50cnktXHUwMDNlY2hlY2tfc2VxdWVudGlhbF9wbiA9IGZhbHNlO1xuMjMxMjpcdFx0ZW50cnktXHUwMDNlZXh0cmFfbGVuID0gMDtcbjIzMTM6XHRcbjIzMTQ6XHRcdHJldHVybiBlbnRyeTtcbjIzMTU6XHR9XG4yMzE2Olx0XG4yMzE3Olx0c3RhdGljIGlubGluZSBzdHJ1Y3QgaWVlZTgwMjExX2ZyYWdtZW50X2VudHJ5ICpcbjIzMTg6XHRpZWVlODAyMTFfcmVhc3NlbWJsZV9maW5kKHN0cnVjdCBpZWVlODAyMTFfZnJhZ21lbnRfY2FjaGUgKmNhY2hlLFxuMjMxOTpcdFx0XHRcdCAgdW5zaWduZWQgaW50IGZyYWcsIHVuc2lnbmVkIGludCBzZXEsXG4yMzIwOlx0XHRcdFx0ICBpbnQgcnhfcXVldWUsIHN0cnVjdCBpZWVlODAyMTFfaGRyICpoZHIpXG4yMzIxOlx0e1xuMjMyMjpcdFx0c3RydWN0IGllZWU4MDIxMV9mcmFnbWVudF9lbnRyeSAqZW50cnk7XG4yMzIzOlx0XHRpbnQgaSwgaWR4O1xuMjMyNDpcdFxuMjMyNTpcdFx0aWR4ID0gY2FjaGUtXHUwMDNlbmV4dDtcbjIzMjY6XHRcdGZvciAoaSA9IDA7IGkgXHUwMDNjIElFRUU4MDIxMV9GUkFHTUVOVF9NQVg7IGkmIzQzOyYjNDM7KSB7XG4yMzI3Olx0XHRcdHN0cnVjdCBpZWVlODAyMTFfaGRyICpmX2hkcjtcbjIzMjg6XHRcdFx0c3RydWN0IHNrX2J1ZmYgKmZfc2tiO1xuMjMyOTpcdFxuMjMzMDpcdFx0XHRpZHgtLTtcbjIzMzE6XHRcdFx0aWYgKGlkeCBcdTAwM2MgMClcbjIzMzI6XHRcdFx0XHRpZHggPSBJRUVFODAyMTFfRlJBR01FTlRfTUFYIC0gMTtcbjIzMzM6XHRcbjIzMzQ6XHRcdFx0ZW50cnkgPSBcdTAwMjZjYWNoZS1cdTAwM2VlbnRyaWVzW2lkeF07XG4yMzM1Olx0XHRcdGlmIChza2JfcXVldWVfZW1wdHkoXHUwMDI2ZW50cnktXHUwMDNlc2tiX2xpc3QpIHx8IGVudHJ5LVx1MDAzZXNlcSAhPSBzZXEgfHxcbjIzMzY6XHRcdFx0ICAgIGVudHJ5LVx1MDAzZXJ4X3F1ZXVlICE9IHJ4X3F1ZXVlIHx8XG4yMzM3Olx0XHRcdCAgICBlbnRyeS1cdTAwM2VsYXN0X2ZyYWcgJiM0MzsgMSAhPSBmcmFnKVxuMjMzODpcdFx0XHRcdGNvbnRpbnVlO1xuMjMzOTpcdFxuMjM0MDpcdFx0XHRmX3NrYiA9IF9fc2tiX3BlZWsoXHUwMDI2ZW50cnktXHUwMDNlc2tiX2xpc3QpO1xuMjM0MTpcdFx0XHRmX2hkciA9IChzdHJ1Y3QgaWVlZTgwMjExX2hkciAqKSBmX3NrYi1cdTAwM2VkYXRhO1xuMjM0MjpcdFxuMjM0MzpcdFx0XHQvKlxuMjM0NDpcdFx0XHQgKiBDaGVjayBmdHlwZSBhbmQgYWRkcmVzc2VzIGFyZSBlcXVhbCwgZWxzZSBjaGVjayBuZXh0IGZyYWdtZW50XG4yMzQ1Olx0XHRcdCAqL1xuMjM0NjpcdFx0XHRpZiAoKChoZHItXHUwMDNlZnJhbWVfY29udHJvbCBeIGZfaGRyLVx1MDAzZWZyYW1lX2NvbnRyb2wpIFx1MDAyNlxuMjM0NzpcdFx0XHQgICAgIGNwdV90b19sZTE2KElFRUU4MDIxMV9GQ1RMX0ZUWVBFKSkgfHxcbjIzNDg6XHRcdFx0ICAgICFldGhlcl9hZGRyX2VxdWFsKGhkci1cdTAwM2VhZGRyMSwgZl9oZHItXHUwMDNlYWRkcjEpIHx8XG4yMzQ5Olx0XHRcdCAgICAhZXRoZXJfYWRkcl9lcXVhbChoZHItXHUwMDNlYWRkcjIsIGZfaGRyLVx1MDAzZWFkZHIyKSlcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40OS8zPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjkgMDY6MDQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTA2NwoJCQkJCQkJb3V0cHV0OiA0MQoJCQkJCQkJdGhvdWdodHM6IDMyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIGEgc3VtbWFyeSBvZiBteSBjdXJyZW50IHRob3VnaHQgcHJvY2VzcywgYXMgaWYgSSB3ZXJlIGFuYWx5emluZyB0aGUgY29kZToKCioqRGl2aW5nIGludG8gdGhlIE1BQzgwMjExIFJYIFBhdGgqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IGBuZXQvbWFjODAyMTEvcnguY2AsIHNwZWNpZmljYWxseSBhcm91bmQgbGluZXMgMjUwMCB0byAyNTQwLiBJIHdhbnQgdG8gemVybyBpbiBvbiBob3cgdGhpcyBzZWN0aW9uIG9mIHRoZSBjb2RlIGhhbmRsZXMgcmVjZWl2aW5nIHBhY2tldHMuIEdpdmVuIG15IGV4cGVydGlzZSwgSSYjMzk7bSBwcm9iYWJseSBsb29raW5nIGZvciBzb21ldGhpbmcgc3BlY2lmaWMg4oCTIG1heWJlIGEgcGFydGljdWxhcmx5IGNvbXBsZXggcHJvY2Vzc2luZyBzdGFnZSwgYSBwb3RlbnRpYWwgb3B0aW1pemF0aW9uIHBvaW50LCBvciBwZXJoYXBzIGEga25vd24gYXJlYSBvZiBjb250ZW50aW9uIG9yIGEgY29tbW9uIHNvdXJjZSBvZiBlcnJvci4gTXkgaW1tZWRpYXRlIGdvYWwgaXMgdG8gdW5kZXJzdGFuZCBwcmVjaXNlbHkgd2hhdCYjMzk7cyBoYXBwZW5pbmcgYXQgdGhpcyBwb2ludCBpbiB0aGUgcmVjZXB0aW9uIGZsb3cuIEkmIzM5O20gZm9jdXNpbmcgb24gdGhvc2Ugc3BlY2lmaWMgbGluZXMgdG8gdW5kZXJzdGFuZCB0aGUgaW50cmljYWNpZXMgaW52b2x2ZWQgaW4gaGFuZGxpbmcgaW5jb21pbmcgd2lyZWxlc3MgZGF0YS4gVGhpcyBpcyBvZnRlbiB3aGVyZSB0aGluZ3MgbGlrZSBmcmFtZSB2YWxpZGF0aW9uLCBkZWNyeXB0aW9uIChpZiBhcHBsaWNhYmxlKSwgYW5kIGluaXRpYWwgcHJvY2Vzc2luZyBvY2N1ci4gSSYjMzk7bGwgbGlrZWx5IGJlIGxvb2tpbmcgZm9yIGNvbmRpdGlvbmFsIHN0YXRlbWVudHMsIGZ1bmN0aW9uIGNhbGxzLCBhbmQgZGF0YSBzdHJ1Y3R1cmUgbWFuaXB1bGF0aW9ucyB0byBncmFzcCB0aGUgY29yZSBsb2dpYy4gVGhpcyBzaG91bGQgc2hlZCBsaWdodCBvbiBhbnkgaW50ZXJlc3RpbmcgaW50ZXJhY3Rpb25zIGJldHdlZW4gdGhlIHBoeXNpY2FsIGxheWVyIGFuZCB0aGUgaGlnaGVyIHByb3RvY29sIHN0YWNrcy4gTGV0JiMzOTtzIGRpZyBpbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41MC8zPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjkgMDY6MDQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtuZXQvbWFjODAyMTEvcnguYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDI0OTUsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNTAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7MjQ5NTpcdFx0fSBlbHNlIGlmIChlbnRyeS1cdTAwM2Vpc19wcm90ZWN0ZWQgXHUwMDI2XHUwMDI2IHJ4LVx1MDAzZWtleSBcdTAwMjZcdTAwMjZcbjI0OTY6XHRcdFx0ICAgZW50cnktXHUwMDNla2V5X2NvbG9yICE9IHJ4LVx1MDAzZWtleS1cdTAwM2Vjb2xvciBcdTAwMjZcdTAwMjZcbjI0OTc6XHRcdFx0ICAgKHN0YXR1cy1cdTAwM2VmbGFnIFx1MDAyNiBSWF9GTEFHX0RFQ1JZUFRFRCkpIHtcbjI0OTg6XHRcdFx0cmV0dXJuIFJYX0RST1BfVV9CQURfS0VZX0NPTE9SO1xuMjQ5OTpcdFx0fVxuMjUwMDpcdFxuMjUwMTpcdFx0c2tiX3B1bGwocngtXHUwMDNlc2tiLCBpZWVlODAyMTFfaGRybGVuKGZjKSk7XG4yNTAyOlx0XHRfX3NrYl9xdWV1ZV90YWlsKFx1MDAyNmVudHJ5LVx1MDAzZXNrYl9saXN0LCByeC1cdTAwM2Vza2IpO1xuMjUwMzpcdFx0ZW50cnktXHUwMDNlbGFzdF9mcmFnID0gZnJhZztcbjI1MDQ6XHRcdGVudHJ5LVx1MDAzZWV4dHJhX2xlbiAmIzQzOz0gcngtXHUwMDNlc2tiLVx1MDAzZWxlbjtcbjI1MDU6XHRcdGlmIChpZWVlODAyMTFfaGFzX21vcmVmcmFncyhmYykpIHtcbjI1MDY6XHRcdFx0cngtXHUwMDNlc2tiID0gTlVMTDtcbjI1MDc6XHRcdFx0cmV0dXJuIFJYX1FVRVVFRDtcbjI1MDg6XHRcdH1cbjI1MDk6XHRcbjI1MTA6XHRcdHJ4LVx1MDAzZXNrYiA9IF9fc2tiX2RlcXVldWUoXHUwMDI2ZW50cnktXHUwMDNlc2tiX2xpc3QpO1xuMjUxMTpcdFx0aWYgKHNrYl90YWlscm9vbShyeC1cdTAwM2Vza2IpIFx1MDAzYyBlbnRyeS1cdTAwM2VleHRyYV9sZW4pIHtcbjI1MTI6XHRcdFx0STgwMl9ERUJVR19JTkMocngtXHUwMDNlbG9jYWwtXHUwMDNlcnhfZXhwYW5kX3NrYl9oZWFkX2RlZnJhZyk7XG4yNTEzOlx0XHRcdGlmICh1bmxpa2VseShwc2tiX2V4cGFuZF9oZWFkKHJ4LVx1MDAzZXNrYiwgMCwgZW50cnktXHUwMDNlZXh0cmFfbGVuLFxuMjUxNDpcdFx0XHRcdFx0XHQgICAgICBHRlBfQVRPTUlDKSkpIHtcbjI1MTU6XHRcdFx0XHRJODAyX0RFQlVHX0lOQyhyeC1cdTAwM2Vsb2NhbC1cdTAwM2VyeF9oYW5kbGVyc19kcm9wX2RlZnJhZyk7XG4yNTE2Olx0XHRcdFx0X19za2JfcXVldWVfcHVyZ2UoXHUwMDI2ZW50cnktXHUwMDNlc2tiX2xpc3QpO1xuMjUxNzpcdFx0XHRcdHJldHVybiBSWF9EUk9QX1VfT09NO1xuMjUxODpcdFx0XHR9XG4yNTE5Olx0XHR9XG4yNTIwOlx0XHR3aGlsZSAoKHNrYiA9IF9fc2tiX2RlcXVldWUoXHUwMDI2ZW50cnktXHUwMDNlc2tiX2xpc3QpKSkge1xuMjUyMTpcdFx0XHRza2JfcHV0X2RhdGEocngtXHUwMDNlc2tiLCBza2ItXHUwMDNlZGF0YSwgc2tiLVx1MDAzZWxlbik7XG4yNTIyOlx0XHRcdGRldl9rZnJlZV9za2Ioc2tiKTtcbjI1MjM6XHRcdH1cbjI1MjQ6XHRcbjI1MjU6XHQgb3V0OlxuMjUyNjpcdFx0aWVlZTgwMjExX2xlZF9yeChyeC1cdTAwM2Vsb2NhbCk7XG4yNTI3Olx0XHRpZiAocngtXHUwMDNlc3RhKVxuMjUyODpcdFx0XHRyeC1cdTAwM2VsaW5rX3N0YS1cdTAwM2VyeF9zdGF0cy5wYWNrZXRzJiM0MzsmIzQzOztcbjI1Mjk6XHRcdHJldHVybiBSWF9DT05USU5VRTtcbjI1MzA6XHR9XG4yNTMxOlx0XG4yNTMyOlx0c3RhdGljIGludCBpZWVlODAyMTFfODAyXzF4X3BvcnRfY29udHJvbChzdHJ1Y3QgaWVlZTgwMjExX3J4X2RhdGEgKnJ4KVxuMjUzMzpcdHtcbjI1MzQ6XHRcdGlmICh1bmxpa2VseSghcngtXHUwMDNlc3RhIHx8ICF0ZXN0X3N0YV9mbGFnKHJ4LVx1MDAzZXN0YSwgV0xBTl9TVEFfQVVUSE9SSVpFRCkpKVxuMjUzNTpcdFx0XHRyZXR1cm4gLUVBQ0NFUztcbjI1MzY6XHRcbjI1Mzc6XHRcdHJldHVybiAwO1xuMjUzODpcdH1cbjI1Mzk6XHRcbjI1NDA6XHRzdGF0aWMgaW50IGllZWU4MDIxMV9kcm9wX3VuZW5jcnlwdGVkKHN0cnVjdCBpZWVlODAyMTFfcnhfZGF0YSAqcngsIF9fbGUxNiBmYylcbjI1NDE6XHR7XG4yNTQyOlx0XHRzdHJ1Y3Qgc2tfYnVmZiAqc2tiID0gcngtXHUwMDNlc2tiO1xuMjU0MzpcdFx0c3RydWN0IGllZWU4MDIxMV9yeF9zdGF0dXMgKnN0YXR1cyA9IElFRUU4MDIxMV9TS0JfUlhDQihza2IpO1xuMjU0NDpcdFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUxLzM8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yOSAwNjowNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2Mjg1CgkJCQkJCQlvdXRwdXQ6IDI1CgkJCQkJCQl0aG91Z2h0czogMzI2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIFBvdGVudGlhbCBJbnRlZ2VyIE92ZXJmbG93IFZ1bG5lcmFiaWxpdHkqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gTXkgaW5pdGlhbCBjb25jZXJuIGlzIHdpdGggdGhpcyBgZXh0cmFfbGVuYCBmaWVsZC4gSSBzZWUgdGhhdCBpdCB3YXMgcHJldmlvdXNseSBkZWZpbmVkIGFzIGEgYHUxNmAsIHdoaWNoIGlzIGEgMTYtYml0IHVuc2lnbmVkIGludGVnZXIuIFRoZSBjb2RlIHN1Z2dlc3RzIGl0JiMzOTtzIHVzZWQgdG8gYWNjdW11bGF0ZSB0aGUgbGVuZ3RoIG9mIHBhY2tldCBmcmFnbWVudHM6IGBlbnRyeS0mZ3Q7ZXh0cmFfbGVuICYjNDM7PSByeC0mZ3Q7c2tiLSZndDtsZW47YC4gTXkgZXhwZXJ0IGludHVpdGlvbiB0ZWxscyBtZSB0aGF0IHRoaXMgaXMgYSBjbGFzc2ljIHNjZW5hcmlvIGZvciBhbiBpbnRlZ2VyIG92ZXJmbG93IHZ1bG5lcmFiaWxpdHkuCgpJZiB0aGUgYWNjdW11bGF0ZWQgbGVuZ3RoLCBgcngtJmd0O3NrYi0mZ3Q7bGVuYCwgZXhjZWVkcyA2NTUzNSwgdGhlIGB1MTZgIHdpbGwgd3JhcCBhcm91bmQgdG8gYSBzbWFsbGVyIHZhbHVlLiBUaGlzIHRydW5jYXRpb24gaXMgdGhlIGNvcmUgb2YgdGhlIHByb2JsZW0uIFRoaXMgbWVhbnMgd2hlbiB0aGUgY29kZSBjaGVja3MgYHNrYl90YWlscm9vbShyeC0mZ3Q7c2tiKSAmbHQ7IGVudHJ5LSZndDtleHRyYV9sZW5gIG9yIGNhbGxzIGBwc2tiX2V4cGFuZF9oZWFkKC4uLiwgZW50cnktJmd0O2V4dHJhX2xlbilgLCBpdCBtaWdodCBiZSBvcGVyYXRpbmcgd2l0aCBhIHNpZ25pZmljYW50bHkgc21hbGxlciBgZW50cnktJmd0O2V4dHJhX2xlbmAgdGhhbiB0aGUgYWN0dWFsIHJlcXVpcmVkIGJ1ZmZlciBzaXplLgoKVGhlIGNvbnNlcXVlbmNlcyBhcmUgY2xlYXIuIFRoZSBleHBhbnNpb24gb2YgdGhlIHNrYiB3aWxsIGJlIGluc3VmZmljaWVudC4gVGhlIHN1YnNlcXVlbnQgYHNrYl9wdXRfZGF0YWAgZnVuY3Rpb24sIHdoaWNoIGNhbGxzIGBza2JfcHV0YCBhbmQgYG1lbWNweWAsIHdvdWxkIHRoZW4gd3JpdGUgcGFzdCB0aGUgYWxsb2NhdGVkIGJ1ZmZlciwgdHJpZ2dlcmluZyBhbiBTS0IgcGFuaWMsIGJ1ZmZlciBvdmVyZmxvdywgb3IgS0FTQU4gZGV0ZWN0aW9uIOKAkyB3aGljaCB3ZSBhYnNvbHV0ZWx5ICpkbyBub3QqIHdhbnQuCgpUaGUgZml4LCBjaGFuZ2luZyBgZXh0cmFfbGVuYCB0byBhbiBgdW5zaWduZWQgaW50YCwgaXMgdGhlIHJpZ2h0IGFwcHJvYWNoIGJlY2F1c2UgaXQgcHJldmVudHMgdGhlIGludGVnZXIgb3ZlcmZsb3cuCgpOb3csIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBwb3RlbnRpYWwgaW1wYWN0LiBJdCYjMzk7cyBjcnVjaWFsIHRvIGRldGVybWluZSBpZiBgc3RydWN0IGllZWU4MDIxMV9mcmFnbWVudF9lbnRyeWAgaXMgZXhwb3NlZCB0byB1c2Vyc3BhY2UsIG9yIGlmIHRoZXJlJiMzOTtzIGFueSBtZW1vcnkgaW5pdGlhbGl6YXRpb24gaXNzdWUuIElmIGl0JiMzOTtzIGV4cG9zZWQsIGEgY2FyZWZ1bGx5IGNyYWZ0ZWQgbWFsaWNpb3VzIHBhY2tldCBjb3VsZCBiZSBjb25zdHJ1Y3RlZCB0byB0cmlnZ2VyIHRoaXMgb3ZlcmZsb3cgYW5kIHBvdGVudGlhbGx5IGV4ZWN1dGUgYXJiaXRyYXJ5IGNvZGUuIEkmIzM5O20gZ29pbmcgdG8gc2VhcmNoIHRoZSBrZXJuZWwgY29kZSBmb3IgYHN0cnVjdCBpZWVlODAyMTFfZnJhZ21lbnRfZW50cnlgIHRvIGRldGVybWluZSB0aGUgc2NvcGUgb2YgdGhpcyBjaGFuZ2UuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NTIvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI5IDA2OjA0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2llZWU4MDIxMV9mcmFnbWVudF9lbnRyeSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbWFjODAyMTEvcnguYz0yMjg0PXZvaWQgaWVlZTgwMjExX2Rlc3Ryb3lfZnJhZ19jYWNoZShzdHJ1Y3QgaWVlZTgwMjExX2ZyYWdtZW50X2NhY2hlICpjYWNoZSlcbi0tXG5uZXQvbWFjODAyMTEvcnguYy0yMjkxLVxubmV0L21hYzgwMjExL3J4LmM6MjI5MjpzdGF0aWMgaW5saW5lIHN0cnVjdCBpZWVlODAyMTFfZnJhZ21lbnRfZW50cnkgKlxubmV0L21hYzgwMjExL3J4LmMtMjI5My1pZWVlODAyMTFfcmVhc3NlbWJsZV9hZGQoc3RydWN0IGllZWU4MDIxMV9mcmFnbWVudF9jYWNoZSAqY2FjaGUsXG4tLVxubmV0L21hYzgwMjExL3J4LmMtMjI5Ni17XG5uZXQvbWFjODAyMTEvcnguYzoyMjk3Olx0c3RydWN0IGllZWU4MDIxMV9mcmFnbWVudF9lbnRyeSAqZW50cnk7XG5uZXQvbWFjODAyMTEvcnguYy0yMjk4LVxuLS1cbm5ldC9tYWM4MDIxMS9yeC5jLTIzMTYtXG5uZXQvbWFjODAyMTEvcnguYzoyMzE3OnN0YXRpYyBpbmxpbmUgc3RydWN0IGllZWU4MDIxMV9mcmFnbWVudF9lbnRyeSAqXG5uZXQvbWFjODAyMTEvcnguYy0yMzE4LWllZWU4MDIxMV9yZWFzc2VtYmxlX2ZpbmQoc3RydWN0IGllZWU4MDIxMV9mcmFnbWVudF9jYWNoZSAqY2FjaGUsXG4tLVxubmV0L21hYzgwMjExL3J4LmMtMjMyMS17XG5uZXQvbWFjODAyMTEvcnguYzoyMzIyOlx0c3RydWN0IGllZWU4MDIxMV9mcmFnbWVudF9lbnRyeSAqZW50cnk7XG5uZXQvbWFjODAyMTEvcnguYy0yMzIzLVx0aW50IGksIGlkeDtcbi0tXG5uZXQvbWFjODAyMTEvcnguYz0yMzczPWllZWU4MDIxMV9yeF9oX2RlZnJhZ21lbnQoc3RydWN0IGllZWU4MDIxMV9yeF9kYXRhICpyeClcbi0tXG5uZXQvbWFjODAyMTEvcnguYy0yMzc5LVx0dW5zaWduZWQgaW50IGZyYWcsIHNlcTtcbm5ldC9tYWM4MDIxMS9yeC5jOjIzODA6XHRzdHJ1Y3QgaWVlZTgwMjExX2ZyYWdtZW50X2VudHJ5ICplbnRyeTtcbm5ldC9tYWM4MDIxMS9yeC5jLTIzODEtXHRzdHJ1Y3Qgc2tfYnVmZiAqc2tiO1xuLS1cbm5ldC9tYWM4MDIxMS9zdGFfaW5mby5oPTQzMj1zdHJ1Y3QgaWVlZTgwMjExX3N0YV9yeF9zdGF0cyB7XG4tLVxubmV0L21hYzgwMjExL3N0YV9pbmZvLmgtNDU2LVxubmV0L21hYzgwMjExL3N0YV9pbmZvLmg6NDU3OnN0cnVjdCBpZWVlODAyMTFfZnJhZ21lbnRfZW50cnkge1xubmV0L21hYzgwMjExL3N0YV9pbmZvLmgtNDU4LVx0c3RydWN0IHNrX2J1ZmZfaGVhZCBza2JfbGlzdDtcbi0tXG5uZXQvbWFjODAyMTEvc3RhX2luZm8uaD00NzA9c3RydWN0IGllZWU4MDIxMV9mcmFnbWVudF9jYWNoZSB7XG5uZXQvbWFjODAyMTEvc3RhX2luZm8uaDo0NzE6XHRzdHJ1Y3QgaWVlZTgwMjExX2ZyYWdtZW50X2VudHJ5XHRlbnRyaWVzW0lFRUU4MDIxMV9GUkFHTUVOVF9NQVhdO1xubmV0L21hYzgwMjExL3N0YV9pbmZvLmgtNDcyLVx0dW5zaWduZWQgaW50IG5leHQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NTMvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI5IDA2OjA0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDc4NDcKCQkJCQkJCW91dHB1dDogMjUKCQkJCQkJCXRob3VnaHRzOiAyNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBhIHN1bW1hcnkgb2YgbXkgdGhvdWdodCBwcm9jZXNzOgoKKipEaXZpbmcgaW50byBgaWVlZTgwMjExX2ZyYWdtZW50X2NhY2hlYCBJbml0aWFsaXphdGlvbioqCgpPa2F5LCB0aW1lIHRvIGdldCBteSBoYW5kcyBkaXJ0eSBhbmQgZGlnIGludG8gdGhlIGluaXRpYWxpemF0aW9uIGFuZCBhbGxvY2F0aW9uIG9mIHRoZSBgc3RydWN0IGllZWU4MDIxMV9mcmFnbWVudF9jYWNoZWAuIFRoaXMgaXMgYSBjcml0aWNhbCBkYXRhIHN0cnVjdHVyZSwgc28gdW5kZXJzdGFuZGluZyBob3cgaXQmIzM5O3MgY3JlYXRlZCBhbmQgbWFuYWdlZCBpcyBwYXJhbW91bnQuIEkgbmVlZCB0byB0cmFjZSB0aGUgY29kZSB0byBwaW5wb2ludCB3aGVyZSBhbmQgaG93IHRoaXMgc3RydWN0dXJlIGlzIGJyb3VnaHQgdG8gbGlmZS4gSSB3YW50IHRvIHNlZSBpZiBpdCYjMzk7cyBkeW5hbWljYWxseSBhbGxvY2F0ZWQsIHN0YXRpY2FsbHkgZGVjbGFyZWQsIHBhcnQgb2YgYSBsYXJnZXIgc3RydWN0dXJlLCBvciBhIGNvbWJpbmF0aW9uLiBUaGUgYWxsb2NhdGlvbiBzdHJhdGVneSBvZnRlbiByZXZlYWxzIGltcG9ydGFudCBpbnNpZ2h0cyBpbnRvIGl0cyB1c2FnZSBwYXR0ZXJucyBhbmQgcG90ZW50aWFsIHBlcmZvcm1hbmNlIGltcGxpY2F0aW9ucywgZXNwZWNpYWxseSBpbiBoaWdoLXRocm91Z2hwdXQgd2lyZWxlc3Mgc2NlbmFyaW9zLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpZiBpdCBpcyBsaW5rZWQgdG8gYW55IG90aGVyIHN0cnVjdHVyZXMgdGhhdCB3b3VsZCBhZmZlY3QgaG93IGl0JiMzOTtzIGluaXRpYWxpemVkLiBGcm9tIHRoaXMsIEkgc2hvdWxkIGJlIGFibGUgdG8gZ2V0IGEgYmV0dGVyIGZlZWwgb2YgaXRzIHJvbGUgaW4gdGhlIHN5c3RlbS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41NC8zPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjkgMDY6MDQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7aWVlZTgwMjExX2ZyYWdtZW50X2NhY2hlJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9tYWM4MDIxMS9pZWVlODAyMTFfaS5oPTExNTc9c3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSB7XG4tLVxubmV0L21hYzgwMjExL2llZWU4MDIxMV9pLmgtMTE3OC1cbm5ldC9tYWM4MDIxMS9pZWVlODAyMTFfaS5oOjExNzk6XHRzdHJ1Y3QgaWVlZTgwMjExX2ZyYWdtZW50X2NhY2hlIGZyYWdzO1xubmV0L21hYzgwMjExL2llZWU4MDIxMV9pLmgtMTE4MC1cbi0tXG5uZXQvbWFjODAyMTEvaWVlZTgwMjExX2kuaD0yOTQ0PXUzMiBpZWVlODAyMTFfY2FsY19leHBlY3RlZF90eF9haXJ0aW1lKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxuLS1cbm5ldC9tYWM4MDIxMS9pZWVlODAyMTFfaS5oLTI5NTMtXG5uZXQvbWFjODAyMTEvaWVlZTgwMjExX2kuaDoyOTU0OnZvaWQgaWVlZTgwMjExX2luaXRfZnJhZ19jYWNoZShzdHJ1Y3QgaWVlZTgwMjExX2ZyYWdtZW50X2NhY2hlICpjYWNoZSk7XG5uZXQvbWFjODAyMTEvaWVlZTgwMjExX2kuaDoyOTU1OnZvaWQgaWVlZTgwMjExX2Rlc3Ryb3lfZnJhZ19jYWNoZShzdHJ1Y3QgaWVlZTgwMjExX2ZyYWdtZW50X2NhY2hlICpjYWNoZSk7XG5uZXQvbWFjODAyMTEvaWVlZTgwMjExX2kuaC0yOTU2LVxuLS1cbm5ldC9tYWM4MDIxMS9yeC5jPTIwMzE9aWVlZTgwMjExX3J4X2hfZGVjcnlwdChzdHJ1Y3QgaWVlZTgwMjExX3J4X2RhdGEgKnJ4KVxuLS1cbm5ldC9tYWM4MDIxMS9yeC5jLTIyNzUtXG5uZXQvbWFjODAyMTEvcnguYzoyMjc2OnZvaWQgaWVlZTgwMjExX2luaXRfZnJhZ19jYWNoZShzdHJ1Y3QgaWVlZTgwMjExX2ZyYWdtZW50X2NhY2hlICpjYWNoZSlcbm5ldC9tYWM4MDIxMS9yeC5jLTIyNzcte1xuLS1cbm5ldC9tYWM4MDIxMS9yeC5jLTIyODMtXG5uZXQvbWFjODAyMTEvcnguYzoyMjg0OnZvaWQgaWVlZTgwMjExX2Rlc3Ryb3lfZnJhZ19jYWNoZShzdHJ1Y3QgaWVlZTgwMjExX2ZyYWdtZW50X2NhY2hlICpjYWNoZSlcbm5ldC9tYWM4MDIxMS9yeC5jLTIyODUte1xuLS1cbm5ldC9tYWM4MDIxMS9yeC5jPTIyOTI9c3RhdGljIGlubGluZSBzdHJ1Y3QgaWVlZTgwMjExX2ZyYWdtZW50X2VudHJ5ICpcbm5ldC9tYWM4MDIxMS9yeC5jOjIyOTM6aWVlZTgwMjExX3JlYXNzZW1ibGVfYWRkKHN0cnVjdCBpZWVlODAyMTFfZnJhZ21lbnRfY2FjaGUgKmNhY2hlLFxubmV0L21hYzgwMjExL3J4LmMtMjI5NC1cdFx0XHQgdW5zaWduZWQgaW50IGZyYWcsIHVuc2lnbmVkIGludCBzZXEsIGludCByeF9xdWV1ZSxcbi0tXG5uZXQvbWFjODAyMTEvcnguYz0yMzE3PXN0YXRpYyBpbmxpbmUgc3RydWN0IGllZWU4MDIxMV9mcmFnbWVudF9lbnRyeSAqXG5uZXQvbWFjODAyMTEvcnguYzoyMzE4OmllZWU4MDIxMV9yZWFzc2VtYmxlX2ZpbmQoc3RydWN0IGllZWU4MDIxMV9mcmFnbWVudF9jYWNoZSAqY2FjaGUsXG5uZXQvbWFjODAyMTEvcnguYy0yMzE5LVx0XHRcdCAgdW5zaWduZWQgaW50IGZyYWcsIHVuc2lnbmVkIGludCBzZXEsXG4tLVxubmV0L21hYzgwMjExL3J4LmM9MjM3Mz1pZWVlODAyMTFfcnhfaF9kZWZyYWdtZW50KHN0cnVjdCBpZWVlODAyMTFfcnhfZGF0YSAqcngpXG5uZXQvbWFjODAyMTEvcnguYy0yMzc0LXtcbm5ldC9tYWM4MDIxMS9yeC5jOjIzNzU6XHRzdHJ1Y3QgaWVlZTgwMjExX2ZyYWdtZW50X2NhY2hlICpjYWNoZSA9IFx1MDAyNnJ4LVx1MDAzZXNkYXRhLVx1MDAzZWZyYWdzO1xubmV0L21hYzgwMjExL3J4LmMtMjM3Ni1cdHN0cnVjdCBpZWVlODAyMTFfaGRyICpoZHI7XG4tLVxubmV0L21hYzgwMjExL3N0YV9pbmZvLmg9NDU3PXN0cnVjdCBpZWVlODAyMTFfZnJhZ21lbnRfZW50cnkge1xuLS1cbm5ldC9tYWM4MDIxMS9zdGFfaW5mby5oLTQ2OS1cbm5ldC9tYWM4MDIxMS9zdGFfaW5mby5oOjQ3MDpzdHJ1Y3QgaWVlZTgwMjExX2ZyYWdtZW50X2NhY2hlIHtcbm5ldC9tYWM4MDIxMS9zdGFfaW5mby5oLTQ3MS1cdHN0cnVjdCBpZWVlODAyMTFfZnJhZ21lbnRfZW50cnlcdGVudHJpZXNbSUVFRTgwMjExX0ZSQUdNRU5UX01BWF07XG4tLVxubmV0L21hYzgwMjExL3N0YV9pbmZvLmg9NzE1PXN0cnVjdCBzdGFfaW5mbyB7XG4tLVxubmV0L21hYzgwMjExL3N0YV9pbmZvLmgtNzgyLVxubmV0L21hYzgwMjExL3N0YV9pbmZvLmg6NzgzOlx0c3RydWN0IGllZWU4MDIxMV9mcmFnbWVudF9jYWNoZSBmcmFncztcbm5ldC9tYWM4MDIxMS9zdGFfaW5mby5oLTc4NC1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41NS8zPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjkgMDY6MDQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogOTMxNAoJCQkJCQkJb3V0cHV0OiA0MQoJCQkJCQkJdGhvdWdodHM6IDM0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgYXMgaWYgSSB3ZXJlIHRoaW5raW5nIGl0OgoKKipEaXZpbmcgaW50byB0aGUgRnJhZ21lbnQgQ2FjaGUgSW5pdGlhbGl6YXRpb24qKgoKT2theSwgdGltZSB0byBkaWcgaW50byB0aGUgaW50ZXJuYWxzLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlIGZyYWdtZW50IGNhY2hlIGlzIGluaXRpYWxpemVkIGluIG1hYzgwMjExLCBzcGVjaWZpY2FsbHkgZm9yIHJlY2VpdmUgb3BlcmF0aW9ucy4gTGV0JiMzOTtzIHN0YXJ0IGJ5IGxvb2tpbmcgYXQgYGllZWU4MDIxMV9pbml0X2ZyYWdfY2FjaGVgIHdpdGhpbiB0aGUgYG5ldC9tYWM4MDIxMS9yeC5jYCBmaWxlLiBJJiMzOTttIGFzc3VtaW5nIHRoaXMgaXMgd2hlcmUgdGhlIGNvcmUgc2V0dXAgZm9yIGhhbmRsaW5nIGZyYWdtZW50ZWQgcGFja2V0cyBvbiB0aGUgcmVjZWl2ZSBzaWRlIGlzIGRlZmluZWQuIEkgd2FudCB0byBzZWUgaG93IHRoZSBjYWNoZSBpdHNlbGYgaXMgc3RydWN0dXJlZCwgaG93IGl0JiMzOTtzIGFsbG9jYXRlZCwgd2hhdCB0aGUgaW5pdGlhbCBwYXJhbWV0ZXJzIGFyZSwgYW5kIGFueSBpbXBvcnRhbnQgaW5pdGlhbGl6YXRpb25zIG9yIGNoZWNrcyB0aGF0IGFyZSBoYXBwZW5pbmcgdGhlcmUuIFVuZGVyc3RhbmRpbmcgdGhpcyBmdW5jdGlvbiB3aWxsIGJlIGNydWNpYWwgZm9yIGZpZ3VyaW5nIG91dCBob3cgdGhlIE1BQyBoYW5kbGVzIHJlYXNzZW1ibHkuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NTYvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI5IDA2OjA0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7bmV0L21hYzgwMjExL3J4LmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAyMjcwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDI1Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OzIyNzA6XHRcdFx0Y2ZnODAyMTFfcnhfdW5wcm90X21sbWVfbWdtdChyeC1cdTAwM2VzZGF0YS1cdTAwM2VkZXYsXG4yMjcxOlx0XHRcdFx0XHRcdCAgICAgc2tiLVx1MDAzZWRhdGEsIHNrYi1cdTAwM2VsZW4pO1xuMjI3MjpcdFxuMjI3MzpcdFx0cmV0dXJuIHJlc3VsdDtcbjIyNzQ6XHR9XG4yMjc1Olx0XG4yMjc2Olx0dm9pZCBpZWVlODAyMTFfaW5pdF9mcmFnX2NhY2hlKHN0cnVjdCBpZWVlODAyMTFfZnJhZ21lbnRfY2FjaGUgKmNhY2hlKVxuMjI3NzpcdHtcbjIyNzg6XHRcdGludCBpO1xuMjI3OTpcdFxuMjI4MDpcdFx0Zm9yIChpID0gMDsgaSBcdTAwM2MgQVJSQVlfU0laRShjYWNoZS1cdTAwM2VlbnRyaWVzKTsgaSYjNDM7JiM0MzspXG4yMjgxOlx0XHRcdHNrYl9xdWV1ZV9oZWFkX2luaXQoXHUwMDI2Y2FjaGUtXHUwMDNlZW50cmllc1tpXS5za2JfbGlzdCk7XG4yMjgyOlx0fVxuMjI4MzpcdFxuMjI4NDpcdHZvaWQgaWVlZTgwMjExX2Rlc3Ryb3lfZnJhZ19jYWNoZShzdHJ1Y3QgaWVlZTgwMjExX2ZyYWdtZW50X2NhY2hlICpjYWNoZSlcbjIyODU6XHR7XG4yMjg2Olx0XHRpbnQgaTtcbjIyODc6XHRcbjIyODg6XHRcdGZvciAoaSA9IDA7IGkgXHUwMDNjIEFSUkFZX1NJWkUoY2FjaGUtXHUwMDNlZW50cmllcyk7IGkmIzQzOyYjNDM7KVxuMjI4OTpcdFx0XHRfX3NrYl9xdWV1ZV9wdXJnZShcdTAwMjZjYWNoZS1cdTAwM2VlbnRyaWVzW2ldLnNrYl9saXN0KTtcbjIyOTA6XHR9XG4yMjkxOlx0XG4yMjkyOlx0c3RhdGljIGlubGluZSBzdHJ1Y3QgaWVlZTgwMjExX2ZyYWdtZW50X2VudHJ5ICpcbjIyOTM6XHRpZWVlODAyMTFfcmVhc3NlbWJsZV9hZGQoc3RydWN0IGllZWU4MDIxMV9mcmFnbWVudF9jYWNoZSAqY2FjaGUsXG4yMjk0Olx0XHRcdFx0IHVuc2lnbmVkIGludCBmcmFnLCB1bnNpZ25lZCBpbnQgc2VxLCBpbnQgcnhfcXVldWUsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NTcvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI5IDA2OjA0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDk5OTMKCQkJCQkJCW91dHB1dDogMjQ2CgkJCQkJCQl0aG91Z2h0czogNDA0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgUGF0Y2ggZm9yIE1lbW9yeSBTYWZldHkqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIGRvd24gdGhpcyBwYXRjaC4gTXkgaW5pdGlhbCBhc3Nlc3NtZW50IGlzIHRoYXQgaXQgbG9va3MgbGlrZSBhIHN0cmFpZ2h0Zm9yd2FyZCBmaXggZm9yIGEgcG90ZW50aWFsIGludGVnZXIgb3ZlcmZsb3cgaXNzdWUgZHVyaW5nIDgwMi4xMSBkZWZyYWdtZW50YXRpb24uIFRoZSBjb21taXQmIzM5O3MgcHJpbWFyeSBjaGFuZ2UgaXMgd2lkZW5pbmcgYGV4dHJhX2xlbmAgZnJvbSBhIGB1MTZgIHRvIGFuIGB1bnNpZ25lZCBpbnRgIHdpdGhpbiB0aGUgYGllZWU4MDIxMV9mcmFnbWVudF9lbnRyeWAgc3RydWN0LgoKSSYjMzk7bSBub3RpbmcgdGhlIGxpZmVjeWNsZSBvZiBgZW50cnktJmd0O2V4dHJhX2xlbmA6IGl0JiMzOTtzIGluaXRpYWxpemVkIHRvIHplcm8gd2l0aGluIHRoZSBgaWVlZTgwMjExX3JlYXNzZW1ibGVfYWRkYCBmdW5jdGlvbiwgdXBkYXRlZCBieSBhZGRpbmcgdGhlIHJlY2VpdmVkIHBhY2tldCBsZW5ndGggKGByeC0mZ3Q7c2tiLSZndDtsZW5gKSwgYW5kIHRoZW4gdXNlZCB0byBjaGVjayBhdmFpbGFibGUgdGFpbHJvb20gaW4gdGhlIFNLQiBiZWZvcmUgYSBwb3NzaWJsZSBleHBhbnNpb24uCgpUaGlzIGBpZWVlODAyMTFfZnJhZ21lbnRfZW50cnlgIHN0cnVjdHVyZSBpcyBpbnRlcm5hbCB0byB0aGUgbWFjODAyMTEgcmVhc3NlbWJseSBwcm9jZXNzOyBpdOKAmXMgZW1iZWRkZWQgd2l0aGluIGBpZWVlODAyMTFfZnJhZ21lbnRfY2FjaGVgLCB3aGljaCBpdHNlbGYgbGl2ZXMgd2l0aGluIGBpZWVlODAyMTFfc3ViX2lmX2RhdGFgIGFuZCBgc3RhX2luZm9gLiBJbXBvcnRhbnRseSwgdGhpcyBkYXRhIGlzIG5ldmVyIGV4cG9zZWQgdG8gdXNlcnNwYWNlIOKAkyBubyBuZXRsaW5rLCBubyBpb2N0bC4gQWxzbywgdGhlIGluaXRpYWxpemF0aW9uIHRvIHplcm8gYmVmb3JlIHVzZSBpcyBhIGtleSBmYWN0b3IuCgpUaGUgZml4IGl0c2VsZiBpcyBkZXNpZ25lZCB0byBwcmV2ZW50IGludGVnZXIgdHJ1bmNhdGlvbiBvciBvdmVyZmxvdywgd2hpY2ggY291bGQgbGVhZCB0byBvdXQtb2YtYm91bmRzIHdyaXRlcyBvciBTS0IgaGVhZHJvb20vdGFpbHJvb20gcGFuaWNz4oCUY2xhc3NpYyBtZW1vcnkgY29ycnVwdGlvbiBpc3N1ZXMgdGhhdCBhcmUgdHlwaWNhbGx5IGNhdWdodCBieSBLQVNBTiBvciBhc3NlcnRpb25zLgoKTm93LCBjb25zaWRlcmluZyBLTVNBTiBzcGVjaWZpY2FsbHk6IEkgZG9uJiMzOTt0IHNlZSBhbnkgZXZpZGVuY2UgdGhhdCB0aGlzIHBhdGNoIGludHJvZHVjZXMsIGV4cG9zZXMsIG9yIGFsdGVycyB1bmluaXRpYWxpemVkIG1lbW9yeS4gYGV4dHJhX2xlbmAgaXMgZXhwbGljaXRseSBpbml0aWFsaXplZCwgYW5kIGFsbCBhY2Nlc3NlcyBhcmUgY29udHJvbGxlZCBhbmQgd2l0aGluIHRoZSBib3VuZHMgZGVmaW5lZCBieSB0aGUgaW50ZWdlciBzaXplLiBUaGVyZWZvcmUsIHRoZXJlJiMzOTtzIG5vIG5lZWQgdG8gZW5hYmxlIEtNU0FOIGhlcmUuCgpMZXQmIzM5O3MgZG8gYSBxdWljayBjaGVja2xpc3QgdG8gY29uZmlybSBteSBhc3Nlc3NtZW50LiBJIG5lZWQgdG8gbWFrZSBzdXJlOgoKKiAgIGBOZWVkc0tNU0FOYCBpcyBzZXQgdG8gZmFsc2UuCiogICBJIGNhbiBjbGVhcmx5IGFydGljdWxhdGUgdGhhdCBzdGFuZGFyZCBzYW5pdGl6ZXJzIGxpa2UgS0FTQU4gYXJlIHN1ZmZpY2llbnQsIGdpdmVuIHRoZSBidWcgaXMgcmVsYXRlZCB0byBpbnRlZ2VyIG92ZXJmbG93IGFuZCBidWZmZXIgc2l6aW5nIGR1cmluZyBkZWZyYWdtZW50YXRpb24sIG5vdCBhbiB1bmluaXRpYWxpemVkIG1lbW9yeSByZWFkIG9yIGluZm9ybWF0aW9uIGxlYWsuCiogICBGaW5hbGx5LCBJIG5lZWQgdG8gY2FsbCBgc2V0LXJlc3VsdHNgIHRvIHJlY29yZCB0aGlzIGFuYWx5c2lzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjU4LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yOSAwNjowNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBjaGFuZ2VzIHRoZSB0eXBlIG9mIGBleHRyYV9sZW5gIGluIGBzdHJ1Y3QgaWVlZTgwMjExX2ZyYWdtZW50X2VudHJ5YCBmcm9tIGB1MTZgIHRvIGB1bnNpZ25lZCBpbnRgIHRvIHByZXZlbnQgaW50ZWdlciBvdmVyZmxvdy90cnVuY2F0aW9uIHdoZW4gY2FsY3VsYXRpbmcgdGhlIHRvdGFsIGxlbmd0aCBvZiBmcmFnbWVudGVkIGZyYW1lcyBkdXJpbmcgSUVFRSA4MDIuMTEgZGVmcmFnbWVudGF0aW9uLlxuXG5gc3RydWN0IGllZWU4MDIxMV9mcmFnbWVudF9lbnRyeWAgaXMgYW4gaW50ZXJuYWwga2VybmVsIGRhdGEgc3RydWN0dXJlIHVzZWQgZXhjbHVzaXZlbHkgYnkgbWFjODAyMTEgUlggZGVmcmFnbWVudGF0aW9uIHJvdXRpbmVzLiBgZW50cnktXHUwMDNlZXh0cmFfbGVuYCBpcyBleHBsaWNpdGx5IGluaXRpYWxpemVkIHRvIGAwYCBpbiBgaWVlZTgwMjExX3JlYXNzZW1ibGVfYWRkKClgLCBhbmQgdGhlIHN0cnVjdCBpcyBuZXZlciBjb3BpZWQgdG8gdXNlcnNwYWNlIG9yIGV4cG9zZWQgdG8gdW5pbml0aWFsaXplZCBtZW1vcnkgcmVhZHMuIFRoZSB1bmRlcmx5aW5nIGlzc3VlIHByZXZlbnRlZCBieSB0aGlzIHBhdGNoIGlzIGFuIGludGVnZXIgb3ZlcmZsb3cgdGhhdCBjb3VsZCBsZWFkIHRvIGluc3VmZmljaWVudCBTS0IgcmVhbGxvY2F0aW9uIChza2IgdGFpbHJvb20gZXhoYXVzdGlvbiAvIG91dC1vZi1ib3VuZHMgd3JpdGVzKSwgd2hpY2ggaXMgZGV0ZWN0ZWQgYnkgS0FTQU4gYW5kIHN0YW5kYXJkIGtlcm5lbCBhc3NlcnRpb25zLiBUaGVyZSBpcyBubyByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJlYWRzIG9yIGluZm9ybWF0aW9uIGxlYWtzLCBzbyBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IHdhcnJhbnRlZC4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGNoYW5nZXMgdGhlIHR5cGUgb2YgYGV4dHJhX2xlbmAgaW4gYHN0cnVjdCBpZWVlODAyMTFfZnJhZ21lbnRfZW50cnlgIGZyb20gYHUxNmAgdG8gYHVuc2lnbmVkIGludGAgdG8gcHJldmVudCBpbnRlZ2VyIG92ZXJmbG93L3RydW5jYXRpb24gd2hlbiBjYWxjdWxhdGluZyB0aGUgdG90YWwgbGVuZ3RoIG9mIGZyYWdtZW50ZWQgZnJhbWVzIGR1cmluZyBJRUVFIDgwMi4xMSBkZWZyYWdtZW50YXRpb24uXG5cbmBzdHJ1Y3QgaWVlZTgwMjExX2ZyYWdtZW50X2VudHJ5YCBpcyBhbiBpbnRlcm5hbCBrZXJuZWwgZGF0YSBzdHJ1Y3R1cmUgdXNlZCBleGNsdXNpdmVseSBieSBtYWM4MDIxMSBSWCBkZWZyYWdtZW50YXRpb24gcm91dGluZXMuIGBlbnRyeS1cdTAwM2VleHRyYV9sZW5gIGlzIGV4cGxpY2l0bHkgaW5pdGlhbGl6ZWQgdG8gYDBgIGluIGBpZWVlODAyMTFfcmVhc3NlbWJsZV9hZGQoKWAsIGFuZCB0aGUgc3RydWN0IGlzIG5ldmVyIGNvcGllZCB0byB1c2Vyc3BhY2Ugb3IgZXhwb3NlZCB0byB1bmluaXRpYWxpemVkIG1lbW9yeSByZWFkcy4gVGhlIHVuZGVybHlpbmcgaXNzdWUgcHJldmVudGVkIGJ5IHRoaXMgcGF0Y2ggaXMgYW4gaW50ZWdlciBvdmVyZmxvdyB0aGF0IGNvdWxkIGxlYWQgdG8gaW5zdWZmaWNpZW50IFNLQiByZWFsbG9jYXRpb24gKHNrYiB0YWlscm9vbSBleGhhdXN0aW9uIC8gb3V0LW9mLWJvdW5kcyB3cml0ZXMpLCB3aGljaCBpcyBkZXRlY3RlZCBieSBLQVNBTiBhbmQgc3RhbmRhcmQga2VybmVsIGFzc2VydGlvbnMuIFRoZXJlIGlzIG5vIHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgcmVhZHMgb3IgaW5mb3JtYXRpb24gbGVha3MsIHNvIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3Qgd2FycmFudGVkLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOC0yOVQwNjowMjoxMy4zMDcxNjUxMDZaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxODM4NzQ5OTkwMjIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTUFDODAyMTFcIixcbiAgICBcIkNGRzgwMjExXCIsXG4gICAgXCJNQUM4MDIxMV9IV1NJTVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImllZWU4MDIxMV9yeF9saXN0XCIsXG4gICAgXCJpZWVlODAyMTFfcnhfbmFwaVwiLFxuICAgIFwiaWVlZTgwMjExX3J4X2lycXNhZmVcIlxuICBdLFxuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGNoYW5nZXMgdGhlIHR5cGUgb2YgYGV4dHJhX2xlbmAgaW4gYHN0cnVjdCBpZWVlODAyMTFfZnJhZ21lbnRfZW50cnlgIGZyb20gYHUxNmAgdG8gYHVuc2lnbmVkIGludGAgdG8gcHJldmVudCBpbnRlZ2VyIG92ZXJmbG93L3RydW5jYXRpb24gd2hlbiBjYWxjdWxhdGluZyB0aGUgdG90YWwgbGVuZ3RoIG9mIGZyYWdtZW50ZWQgZnJhbWVzIGR1cmluZyBJRUVFIDgwMi4xMSBkZWZyYWdtZW50YXRpb24uXFxuXFxuYHN0cnVjdCBpZWVlODAyMTFfZnJhZ21lbnRfZW50cnlgIGlzIGFuIGludGVybmFsIGtlcm5lbCBkYXRhIHN0cnVjdHVyZSB1c2VkIGV4Y2x1c2l2ZWx5IGJ5IG1hYzgwMjExIFJYIGRlZnJhZ21lbnRhdGlvbiByb3V0aW5lcy4gYGVudHJ5LVxcdTAwM2VleHRyYV9sZW5gIGlzIGV4cGxpY2l0bHkgaW5pdGlhbGl6ZWQgdG8gYDBgIGluIGBpZWVlODAyMTFfcmVhc3NlbWJsZV9hZGQoKWAsIGFuZCB0aGUgc3RydWN0IGlzIG5ldmVyIGNvcGllZCB0byB1c2Vyc3BhY2Ugb3IgZXhwb3NlZCB0byB1bmluaXRpYWxpemVkIG1lbW9yeSByZWFkcy4gVGhlIHVuZGVybHlpbmcgaXNzdWUgcHJldmVudGVkIGJ5IHRoaXMgcGF0Y2ggaXMgYW4gaW50ZWdlciBvdmVyZmxvdyB0aGF0IGNvdWxkIGxlYWQgdG8gaW5zdWZmaWNpZW50IFNLQiByZWFsbG9jYXRpb24gKHNrYiB0YWlscm9vbSBleGhhdXN0aW9uIC8gb3V0LW9mLWJvdW5kcyB3cml0ZXMpLCB3aGljaCBpcyBkZXRlY3RlZCBieSBLQVNBTiBhbmQgc3RhbmRhcmQga2VybmVsIGFzc2VydGlvbnMuIFRoZXJlIGlzIG5vIHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgcmVhZHMgb3IgaW5mb3JtYXRpb24gbGVha3MsIHNvIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3Qgd2FycmFudGVkLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2UsXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGNoYW5nZXMgYGV4dHJhX2xlbmAgaW4gYHN0cnVjdCBpZWVlODAyMTFfZnJhZ21lbnRfZW50cnlgIGZyb20gYHUxNmAgdG8gYHVuc2lnbmVkIGludGAgdG8gcHJldmVudCBpbnRlZ2VyIG92ZXJmbG93IGR1cmluZyA4MDIuMTEgZnJhZ21lbnQgcmVhc3NlbWJseSBpbiBtYWM4MDIxMSByeCBoYW5kbGluZy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGRpcmVjdGx5IGFmZmVjdGluZyBwYWNrZXQgcmVhc3NlbWJseSBhbmQgbWVtb3J5IG1hbmFnZW1lbnQgaW4gdGhlIHJlYWNoYWJsZSB3aXJlbGVzcyBuZXR3b3JraW5nIHN1YnN5c3RlbS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjlUMDY6MDI6MTMuMzA3MTcwMzk2WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozMjgxNjI4ODYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCBhMmNhZjU2NDRhNzE2MDYwZTNjMzJiZmY2NWJiZjU3MmM3YjUzMDU2XFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBTYXQgQXVnIDI5IDA2OjAyOjEyIDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL25ldC9tYWM4MDIxMS9zdGFfaW5mby5oIGIvbmV0L21hYzgwMjExL3N0YV9pbmZvLmhcXG5pbmRleCBlZTBkMzI4NzdjNWI0Li4xMTJjMzMzZmJlNDViIDEwMDY0NFxcbi0tLSBhL25ldC9tYWM4MDIxMS9zdGFfaW5mby5oXFxuKysrIGIvbmV0L21hYzgwMjExL3N0YV9pbmZvLmhcXG5AQCAtNDU4LDcgKzQ1OCw3IEBAIHN0cnVjdCBpZWVlODAyMTFfZnJhZ21lbnRfZW50cnkge1xcbiBcXHRzdHJ1Y3Qgc2tfYnVmZl9oZWFkIHNrYl9saXN0O1xcbiBcXHR1bnNpZ25lZCBsb25nIGZpcnN0X2ZyYWdfdGltZTtcXG4gXFx0dTE2IHNlcTtcXG4tXFx0dTE2IGV4dHJhX2xlbjtcXG4rXFx0dW5zaWduZWQgaW50IGV4dHJhX2xlbjtcXG4gXFx0dTE2IGxhc3RfZnJhZztcXG4gXFx0dTggcnhfcXVldWU7XFxuIFxcdHU4IGNoZWNrX3NlcXVlbnRpYWxfcG46MSwgLyogbmVlZGVkIGZvciBDQ01QL0dDTVAgKi9cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjlUMDY6MDI6MTMuNjM2MDE4NzEyWiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiY29yZSIsIkR1cmF0aW9uIjoxMjA4MzI1MDYxNzYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTUFDODAyMTFcIixcbiAgICBcIkNGRzgwMjExXCIsXG4gICAgXCJNQUM4MDIxMV9IV1NJTVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImllZWU4MDIxMV9yeF9saXN0XCIsXG4gICAgXCJpZWVlODAyMTFfcnhfbmFwaVwiLFxuICAgIFwiaWVlZTgwMjExX3J4X2lycXNhZmVcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBjaGFuZ2VzIGBleHRyYV9sZW5gIGluIGBzdHJ1Y3QgaWVlZTgwMjExX2ZyYWdtZW50X2VudHJ5YCBmcm9tIGB1MTZgIHRvIGB1bnNpZ25lZCBpbnRgIHRvIHByZXZlbnQgaW50ZWdlciBvdmVyZmxvdyBkdXJpbmcgODAyLjExIGZyYWdtZW50IHJlYXNzZW1ibHkgaW4gbWFjODAyMTEgcnggaGFuZGxpbmcuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBkaXJlY3RseSBhZmZlY3RpbmcgcGFja2V0IHJlYXNzZW1ibHkgYW5kIG1lbW9yeSBtYW5hZ2VtZW50IGluIHRoZSByZWFjaGFibGUgd2lyZWxlc3MgbmV0d29ya2luZyBzdWJzeXN0ZW0uXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpXG4gIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zXG4gICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgQWxzbyBjaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3NcbiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlnc1xuICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IGEyY2FmNTY0NGE3MTYwNjBlM2MzMmJmZjY1YmJmNTcyYzdiNTMwNTZcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgU2F0IEF1ZyAyOSAwNjowMjoxMiAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL25ldC9tYWM4MDIxMS9zdGFfaW5mby5oIGIvbmV0L21hYzgwMjExL3N0YV9pbmZvLmhcbmluZGV4IGVlMGQzMjg3N2M1YjQuLjExMmMzMzNmYmU0NWIgMTAwNjQ0XG4tLS0gYS9uZXQvbWFjODAyMTEvc3RhX2luZm8uaFxuKysrIGIvbmV0L21hYzgwMjExL3N0YV9pbmZvLmhcbkBAIC00NTgsNyArNDU4LDcgQEAgc3RydWN0IGllZWU4MDIxMV9mcmFnbWVudF9lbnRyeSB7XG4gXHRzdHJ1Y3Qgc2tfYnVmZl9oZWFkIHNrYl9saXN0O1xuIFx0dW5zaWduZWQgbG9uZyBmaXJzdF9mcmFnX3RpbWU7XG4gXHR1MTYgc2VxO1xuLVx0dTE2IGV4dHJhX2xlbjtcbitcdHVuc2lnbmVkIGludCBleHRyYV9sZW47XG4gXHR1MTYgbGFzdF9mcmFnO1xuIFx0dTggcnhfcXVldWU7XG4gXHR1OCBjaGVja19zZXF1ZW50aWFsX3BuOjEsIC8qIG5lZWRlZCBmb3IgQ0NNUC9HQ01QICovXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yOVQwNjowMjoxMy42MzYwMjAzNTJaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo2NDM5MjI5MjU4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKlJldmlld2luZyB0aGUgbWFjODAyMTEgUGF0Y2gqKlxuXG5Pa2F5LCBoZXJlIHdlIGdvLiBUaGUgdXNlciB3YW50cyBtZSB0byB0YWtlIGEgbG9vayBhdCBhIHBhdGNoIHRoYXQgdG91Y2hlcyBgbmV0L21hYzgwMjExL3N0YV9pbmZvLmhgLiBBbHJpZ2h0LCBsZXQncyBwdWxsIHVwIHRoZSBkaWZmLiBMb29rcyBsaWtlIHRoZXkndmUgY2hhbmdlZCBgc3RydWN0IGllZWU4MDIxMV9mcmFnbWVudF9lbnRyeWAsIHNwZWNpZmljYWxseSB0aGUgYGV4dHJhX2xlbmAgZmllbGQuIEl0J3MgYmVlbiBidW1wZWQgZnJvbSBhIGB1MTZgIHRvIGFuIGB1bnNpZ25lZCBpbnRgLiBJbnRlcmVzdGluZy5cblxuTm93LCBiZWZvcmUgSSBzaWduIG9mZiBvbiB0aGlzLCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgaW1wbGljYXRpb25zIG9mIHRoaXMgY2hhbmdlLiBXaHkgdGhlIGluY3JlYXNlZCBzaXplPyBJcyB0aGlzIGEgbmVjZXNzYXJ5IGFkanVzdG1lbnQgdG8gYWNjb21tb2RhdGUgc29tZXRoaW5nPyBMZXQncyB0cmFjZSB0aGlzLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGVyZSBgaWVlZTgwMjExX2ZyYWdtZW50X2VudHJ5YCBhbmQsIG1vcmUgaW1wb3J0YW50bHksIGhvdyBgZXh0cmFfbGVuYCBhcmUgYWN0dWFsbHkgKnVzZWQqIHdpdGhpbiB0aGUgYG5ldC9tYWM4MDIxMWAgc3Vic3lzdGVtLiBUaW1lIHRvIGZpcmUgdXAgYGdyZXBwZXJgIGFuZCBnZXQgYSBjbGVhciBwaWN0dXJlIG9mIGl0cyB1c2FnZSBjb250ZXh0LiBJIG5lZWQgdG8gbWFrZSBzdXJlIHRoaXMgZG9lc24ndCBpbnRyb2R1Y2UgYW55IHVuZm9yZXNlZW4gaXNzdWVzIG9yIHBvdGVudGlhbCByZWdyZXNzaW9ucy5cblxuXG4iLCJJbnB1dFRva2VucyI6MjA5NSwiT3V0cHV0VG9rZW5zIjozMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjExNSwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI5VDA2OjAyOjIwLjA3NTI1NTY3WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ5NzQzOTY4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImV4dHJhX2xlblwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvbWFjODAyMTFcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L21hYzgwMjExL2llZWU4MDIxMV9pLmg9MjY4NT12b2lkIGllZWU4MDIxMV9zZW5kX2F1dGgoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsXFxubmV0L21hYzgwMjExL2llZWU4MDIxMV9pLmgtMjY4Ni1cXHRcXHRcXHQgdTE2IHRyYW5zYWN0aW9uLCB1MTYgYXV0aF9hbGcsIHUxNiBzdGF0dXMsXFxubmV0L21hYzgwMjExL2llZWU4MDIxMV9pLmg6MjY4NzpcXHRcXHRcXHQgY29uc3QgdTggKmV4dHJhLCBzaXplX3QgZXh0cmFfbGVuLCBjb25zdCB1OCAqYnNzaWQsXFxubmV0L21hYzgwMjExL2llZWU4MDIxMV9pLmgtMjY4OC1cXHRcXHRcXHQgY29uc3QgdTggKmRhLCBjb25zdCB1OCAqa2V5LCB1OCBrZXlfbGVuLCB1OCBrZXlfaWR4LFxcbi0tXFxubmV0L21hYzgwMjExL3J4LmM9MjI5Mz1pZWVlODAyMTFfcmVhc3NlbWJsZV9hZGQoc3RydWN0IGllZWU4MDIxMV9mcmFnbWVudF9jYWNoZSAqY2FjaGUsXFxuLS1cXG5uZXQvbWFjODAyMTEvcnguYy0yMzExLVxcdGVudHJ5LVxcdTAwM2VjaGVja19zZXF1ZW50aWFsX3BuID0gZmFsc2U7XFxubmV0L21hYzgwMjExL3J4LmM6MjMxMjpcXHRlbnRyeS1cXHUwMDNlZXh0cmFfbGVuID0gMDtcXG5uZXQvbWFjODAyMTEvcnguYy0yMzEzLVxcbi0tXFxubmV0L21hYzgwMjExL3J4LmM9MjM3Mz1pZWVlODAyMTFfcnhfaF9kZWZyYWdtZW50KHN0cnVjdCBpZWVlODAyMTFfcnhfZGF0YSAqcngpXFxuLS1cXG5uZXQvbWFjODAyMTEvcnguYy0yNTAzLVxcdGVudHJ5LVxcdTAwM2VsYXN0X2ZyYWcgPSBmcmFnO1xcbm5ldC9tYWM4MDIxMS9yeC5jOjI1MDQ6XFx0ZW50cnktXFx1MDAzZWV4dHJhX2xlbiArPSByeC1cXHUwMDNlc2tiLVxcdTAwM2VsZW47XFxubmV0L21hYzgwMjExL3J4LmMtMjUwNS1cXHRpZiAoaWVlZTgwMjExX2hhc19tb3JlZnJhZ3MoZmMpKSB7XFxuLS1cXG5uZXQvbWFjODAyMTEvcnguYy0yNTEwLVxcdHJ4LVxcdTAwM2Vza2IgPSBfX3NrYl9kZXF1ZXVlKFxcdTAwMjZlbnRyeS1cXHUwMDNlc2tiX2xpc3QpO1xcbm5ldC9tYWM4MDIxMS9yeC5jOjI1MTE6XFx0aWYgKHNrYl90YWlscm9vbShyeC1cXHUwMDNlc2tiKSBcXHUwMDNjIGVudHJ5LVxcdTAwM2VleHRyYV9sZW4pIHtcXG5uZXQvbWFjODAyMTEvcnguYy0yNTEyLVxcdFxcdEk4MDJfREVCVUdfSU5DKHJ4LVxcdTAwM2Vsb2NhbC1cXHUwMDNlcnhfZXhwYW5kX3NrYl9oZWFkX2RlZnJhZyk7XFxubmV0L21hYzgwMjExL3J4LmM6MjUxMzpcXHRcXHRpZiAodW5saWtlbHkocHNrYl9leHBhbmRfaGVhZChyeC1cXHUwMDNlc2tiLCAwLCBlbnRyeS1cXHUwMDNlZXh0cmFfbGVuLFxcbm5ldC9tYWM4MDIxMS9yeC5jLTI1MTQtXFx0XFx0XFx0XFx0XFx0ICAgICAgR0ZQX0FUT01JQykpKSB7XFxuLS1cXG5uZXQvbWFjODAyMTEvc3RhX2luZm8uaD00NTc9c3RydWN0IGllZWU4MDIxMV9mcmFnbWVudF9lbnRyeSB7XFxuLS1cXG5uZXQvbWFjODAyMTEvc3RhX2luZm8uaC00NjAtXFx0dTE2IHNlcTtcXG5uZXQvbWFjODAyMTEvc3RhX2luZm8uaDo0NjE6XFx0dW5zaWduZWQgaW50IGV4dHJhX2xlbjtcXG5uZXQvbWFjODAyMTEvc3RhX2luZm8uaC00NjItXFx0dTE2IGxhc3RfZnJhZztcXG4tLVxcbm5ldC9tYWM4MDIxMS91dGlsLmM9MTEzNz12b2lkIGllZWU4MDIxMV9zZW5kX2F1dGgoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsXFxubmV0L21hYzgwMjExL3V0aWwuYy0xMTM4LVxcdFxcdFxcdCB1MTYgdHJhbnNhY3Rpb24sIHUxNiBhdXRoX2FsZywgdTE2IHN0YXR1cyxcXG5uZXQvbWFjODAyMTEvdXRpbC5jOjExMzk6XFx0XFx0XFx0IGNvbnN0IHU4ICpleHRyYSwgc2l6ZV90IGV4dHJhX2xlbiwgY29uc3QgdTggKmRhLFxcbm5ldC9tYWM4MDIxMS91dGlsLmMtMTE0MC1cXHRcXHRcXHQgY29uc3QgdTggKmJzc2lkLCBjb25zdCB1OCAqa2V5LCB1OCBrZXlfbGVuLCB1OCBrZXlfaWR4LFxcbi0tXFxubmV0L21hYzgwMjExL3V0aWwuYy0xMTY0LVxcdFxcdCAgICFjZmc4MDIxMV9maW5kX2V4dF9lbGVtKFdMQU5fRUlEX0VYVF9FSFRfTVVMVElfTElOSyxcXG5uZXQvbWFjODAyMTEvdXRpbC5jOjExNjU6XFx0XFx0XFx0XFx0XFx0ICAgZXh0cmEsIGV4dHJhX2xlbikpO1xcbm5ldC9tYWM4MDIxMS91dGlsLmMtMTE2Ni1cXG4tLVxcbm5ldC9tYWM4MDIxMS91dGlsLmMtMTE2OC1cXHRza2IgPSBkZXZfYWxsb2Nfc2tiKGxvY2FsLVxcdTAwM2Vody5leHRyYV90eF9oZWFkcm9vbSArIElFRUU4MDIxMV9XRVBfSVZfTEVOICtcXG5uZXQvbWFjODAyMTEvdXRpbC5jOjExNjk6XFx0XFx0XFx0ICAgIDI0ICsgNiArIGV4dHJhX2xlbiArIElFRUU4MDIxMV9XRVBfSUNWX0xFTiArXFxubmV0L21hYzgwMjExL3V0aWwuYy0xMTcwLVxcdFxcdFxcdCAgICBhZGRfbWxlICogc2l6ZW9mKG1sZSkpO1xcbi0tXFxubmV0L21hYzgwMjExL3V0aWwuYy0xMTg1LVxcdGlmIChleHRyYSlcXG5uZXQvbWFjODAyMTEvdXRpbC5jOjExODY6XFx0XFx0c2tiX3B1dF9kYXRhKHNrYiwgZXh0cmEsIGV4dHJhX2xlbik7XFxubmV0L21hYzgwMjExL3V0aWwuYy0xMTg3LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yOVQwNjowMjoyMC4xMjUwMDQ1NzhaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo2NDEwMjQwNTg4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZSBvbiB0aGUgdGhvdWdodCBwcm9jZXNzLCBhcyByZXF1ZXN0ZWQ6XG5cbioqRGl2aW5nIGludG8gdGhlIE1BQzgwMjExIFJYIFBhdGgqKlxuXG5Pa2F5LCB0aW1lIHRvIGdldCBteSBoYW5kcyBkaXJ0eS4gSSdtIGdvaW5nIHRvIGRpZyBpbnRvIHRoZSBgbmV0L21hYzgwMjExL3J4LmNgIGZpbGUuIFNwZWNpZmljYWxseSwgSSBuZWVkIHRvIGdldCBhIGhhbmRsZSBvbiB3aGF0J3MgaGFwcGVuaW5nIGFyb3VuZCBsaW5lcyAyNDkwIHRvIDI1NDAuIFRoYXQncyBhIGNyaXRpY2FsIHNlY3Rpb24gb2YgdGhlIHJlY2VpdmUgcGF0aCwgYW5kIEknbSBiZXR0aW5nIGl0J3Mgd2hlcmUgYSBwYXJ0aWN1bGFyIHBpZWNlIG9mIGZ1bmN0aW9uYWxpdHkgaXMgaGFuZGxlZCB0aGF0J3MgYmVlbiBuYWdnaW5nIGF0IG1lLiBJJ3ZlIGdvdCBhIGh1bmNoLCBidXQgSSBuZWVkIHRvIGNvbmZpcm0gaXQgd2l0aCB0aGUgY29kZS4gTGV0J3Mgc2VlIGlmIG15IHVuZGVyc3RhbmRpbmcgb2YgdGhlIHJlY2VpdmUgcHJvY2VzcyBpcyBhY2N1cmF0ZSwgb3IgaWYgSSBuZWVkIHRvIGFkanVzdCBteSBtZW50YWwgbW9kZWwgYmFzZWQgb24gd2hhdCB0aGUgc291cmNlIGNvZGUgcmV2ZWFscy4gVGltZSB0byBwdXQgb24gbXkgZGVidWdnaW5nIGhhdCBhbmQgZ2V0IHRvIHdvcmsuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM3NzIsIk91dHB1dFRva2VucyI6NDEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yOVQwNjowMjoyNi41MzUyNDc5NTZaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNTE2NzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwibmV0L21hYzgwMjExL3J4LmNcIixcbiAgXCJGaXJzdExpbmVcIjogMjQ5MCxcbiAgXCJMaW5lQ291bnRcIjogNTBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiMjQ5MDpcXHRcXHRcXHQvKiBEcm9wIHRoaXMgYXMgYSBtaXhlZCBrZXkgb3IgZnJhZ21lbnQgY2FjaGUgYXR0YWNrLCBldmVuXFxuMjQ5MTpcXHRcXHRcXHQgKiBpZiBmb3IgVEtJUCBNaWNoYWVsIE1JQyBzaG91bGQgcHJvdGVjdCB1cywgYW5kIFdFUCBpcyBhXFxuMjQ5MjpcXHRcXHRcXHQgKiBsb3N0IGNhdXNlIGFueXdheS5cXG4yNDkzOlxcdFxcdFxcdCAqL1xcbjI0OTQ6XFx0XFx0XFx0cmV0dXJuIFJYX0RST1BfVV9FWFBFQ1RfREVGUkFHX1BST1Q7XFxuMjQ5NTpcXHRcXHR9IGVsc2UgaWYgKGVudHJ5LVxcdTAwM2Vpc19wcm90ZWN0ZWQgXFx1MDAyNlxcdTAwMjYgcngtXFx1MDAzZWtleSBcXHUwMDI2XFx1MDAyNlxcbjI0OTY6XFx0XFx0XFx0ICAgZW50cnktXFx1MDAzZWtleV9jb2xvciAhPSByeC1cXHUwMDNla2V5LVxcdTAwM2Vjb2xvciBcXHUwMDI2XFx1MDAyNlxcbjI0OTc6XFx0XFx0XFx0ICAgKHN0YXR1cy1cXHUwMDNlZmxhZyBcXHUwMDI2IFJYX0ZMQUdfREVDUllQVEVEKSkge1xcbjI0OTg6XFx0XFx0XFx0cmV0dXJuIFJYX0RST1BfVV9CQURfS0VZX0NPTE9SO1xcbjI0OTk6XFx0XFx0fVxcbjI1MDA6XFx0XFxuMjUwMTpcXHRcXHRza2JfcHVsbChyeC1cXHUwMDNlc2tiLCBpZWVlODAyMTFfaGRybGVuKGZjKSk7XFxuMjUwMjpcXHRcXHRfX3NrYl9xdWV1ZV90YWlsKFxcdTAwMjZlbnRyeS1cXHUwMDNlc2tiX2xpc3QsIHJ4LVxcdTAwM2Vza2IpO1xcbjI1MDM6XFx0XFx0ZW50cnktXFx1MDAzZWxhc3RfZnJhZyA9IGZyYWc7XFxuMjUwNDpcXHRcXHRlbnRyeS1cXHUwMDNlZXh0cmFfbGVuICs9IHJ4LVxcdTAwM2Vza2ItXFx1MDAzZWxlbjtcXG4yNTA1OlxcdFxcdGlmIChpZWVlODAyMTFfaGFzX21vcmVmcmFncyhmYykpIHtcXG4yNTA2OlxcdFxcdFxcdHJ4LVxcdTAwM2Vza2IgPSBOVUxMO1xcbjI1MDc6XFx0XFx0XFx0cmV0dXJuIFJYX1FVRVVFRDtcXG4yNTA4OlxcdFxcdH1cXG4yNTA5OlxcdFxcbjI1MTA6XFx0XFx0cngtXFx1MDAzZXNrYiA9IF9fc2tiX2RlcXVldWUoXFx1MDAyNmVudHJ5LVxcdTAwM2Vza2JfbGlzdCk7XFxuMjUxMTpcXHRcXHRpZiAoc2tiX3RhaWxyb29tKHJ4LVxcdTAwM2Vza2IpIFxcdTAwM2MgZW50cnktXFx1MDAzZWV4dHJhX2xlbikge1xcbjI1MTI6XFx0XFx0XFx0STgwMl9ERUJVR19JTkMocngtXFx1MDAzZWxvY2FsLVxcdTAwM2VyeF9leHBhbmRfc2tiX2hlYWRfZGVmcmFnKTtcXG4yNTEzOlxcdFxcdFxcdGlmICh1bmxpa2VseShwc2tiX2V4cGFuZF9oZWFkKHJ4LVxcdTAwM2Vza2IsIDAsIGVudHJ5LVxcdTAwM2VleHRyYV9sZW4sXFxuMjUxNDpcXHRcXHRcXHRcXHRcXHRcXHQgICAgICBHRlBfQVRPTUlDKSkpIHtcXG4yNTE1OlxcdFxcdFxcdFxcdEk4MDJfREVCVUdfSU5DKHJ4LVxcdTAwM2Vsb2NhbC1cXHUwMDNlcnhfaGFuZGxlcnNfZHJvcF9kZWZyYWcpO1xcbjI1MTY6XFx0XFx0XFx0XFx0X19za2JfcXVldWVfcHVyZ2UoXFx1MDAyNmVudHJ5LVxcdTAwM2Vza2JfbGlzdCk7XFxuMjUxNzpcXHRcXHRcXHRcXHRyZXR1cm4gUlhfRFJPUF9VX09PTTtcXG4yNTE4OlxcdFxcdFxcdH1cXG4yNTE5OlxcdFxcdH1cXG4yNTIwOlxcdFxcdHdoaWxlICgoc2tiID0gX19za2JfZGVxdWV1ZShcXHUwMDI2ZW50cnktXFx1MDAzZXNrYl9saXN0KSkpIHtcXG4yNTIxOlxcdFxcdFxcdHNrYl9wdXRfZGF0YShyeC1cXHUwMDNlc2tiLCBza2ItXFx1MDAzZWRhdGEsIHNrYi1cXHUwMDNlbGVuKTtcXG4yNTIyOlxcdFxcdFxcdGRldl9rZnJlZV9za2Ioc2tiKTtcXG4yNTIzOlxcdFxcdH1cXG4yNTI0OlxcdFxcbjI1MjU6XFx0IG91dDpcXG4yNTI2OlxcdFxcdGllZWU4MDIxMV9sZWRfcngocngtXFx1MDAzZWxvY2FsKTtcXG4yNTI3OlxcdFxcdGlmIChyeC1cXHUwMDNlc3RhKVxcbjI1Mjg6XFx0XFx0XFx0cngtXFx1MDAzZWxpbmtfc3RhLVxcdTAwM2VyeF9zdGF0cy5wYWNrZXRzKys7XFxuMjUyOTpcXHRcXHRyZXR1cm4gUlhfQ09OVElOVUU7XFxuMjUzMDpcXHR9XFxuMjUzMTpcXHRcXG4yNTMyOlxcdHN0YXRpYyBpbnQgaWVlZTgwMjExXzgwMl8xeF9wb3J0X2NvbnRyb2woc3RydWN0IGllZWU4MDIxMV9yeF9kYXRhICpyeClcXG4yNTMzOlxcdHtcXG4yNTM0OlxcdFxcdGlmICh1bmxpa2VseSghcngtXFx1MDAzZXN0YSB8fCAhdGVzdF9zdGFfZmxhZyhyeC1cXHUwMDNlc3RhLCBXTEFOX1NUQV9BVVRIT1JJWkVEKSkpXFxuMjUzNTpcXHRcXHRcXHRyZXR1cm4gLUVBQ0NFUztcXG4yNTM2OlxcdFxcbjI1Mzc6XFx0XFx0cmV0dXJuIDA7XFxuMjUzODpcXHR9XFxuMjUzOTpcXHRcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjlUMDY6MDI6MjYuNTM1NTAyNTM2WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NjQwMDk5MTQ0OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBQb3RlbnRpYWwgSW50ZWdlciBPdmVyZmxvdyBWdWxuZXJhYmlsaXR5KipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBjb2RlLCBzcGVjaWZpY2FsbHkgYGVudHJ5LVx1MDAzZWV4dHJhX2xlbiArPSByeC1cdTAwM2Vza2ItXHUwMDNlbGVuO2AgYW5kIHRoZSBzdWJzZXF1ZW50IGBza2JfcHV0X2RhdGEocngtXHUwMDNlc2tiLCBza2ItXHUwMDNlZGF0YSwgc2tiLVx1MDAzZWxlbik7YC4gVGhlIGBleHRyYV9sZW5gIGZpZWxkIGlzIGRlZmluZWQgYXMgYSBgdTE2YCwgYW5kIHRoZSBhbGFybSBiZWxscyBhcmUgZ29pbmcgb2ZmIGltbWVkaWF0ZWx5LiBJZiB0aGF0IGNvdW50ZXIgZ2V0cyB0b28gYmlnLCBiZXlvbmQgNjU1MzUsIHRoZXJlJ3MgZ29pbmcgdG8gYmUgYW4gaW50ZWdlciBvdmVyZmxvdy4gV2hlbiB0aGlzIGhhcHBlbnMgZHVyaW5nIHRoZSBmcmFnbWVudCByZWFzc2VtYmx5LCBgcHNrYl9leHBhbmRfaGVhZGAgcHJvYmFibHkgYWxsb2NhdGVzIGEgc21hbGwgYnVmZmVyLCB0aGVuIGBza2JfcHV0X2RhdGFgIGVuZHMgdXAgd3JpdGluZyBwYXN0IHRoZSBhbGxvY2F0ZWQgYnVmZmVyLiBUaGF0J3MgYSBjbGFzc2ljIGJ1ZmZlciBvdmVyZmxvdyBhbmQgaGVhcCBjb3JydXB0aW9uIHNpdHVhdGlvbiwgYW5kIHdlIG5lZWQgdG8gZml4IGl0LlxuXG5DaGFuZ2luZyBgdTE2IGV4dHJhX2xlbmAgdG8gYHVuc2lnbmVkIGludCBleHRyYV9sZW5gIHNob3VsZCBwcmV2ZW50IHRoZSBvdmVyZmxvdywgYW5kIHRoYXQncyBhbiBlYXN5IGZpeC4gQnV0IGJlZm9yZSBJIHN0YXJ0IGRyYWZ0aW5nIGEgcGF0Y2gsIGxldCdzIHNlZSBpZiB0aGlzIGlzIGV2ZW4gcmVhY2hhYmxlIGFuZCBpZiBpdCdzIHdvcnRoIHRoZSBlZmZvcnQgb2YgdGVzdGluZy4gVGhpcyBsb29rcyBsaWtlIHRoZSBgaWVlZTgwMjExX3J4X2hfZGVmcmFnbWVudGAgZnVuY3Rpb24sIHdoaWNoIGlzIHRoZSBtYWM4MDIxMSBmcmFnbWVudCByZWFzc2VtYmx5IGluIHRoZSByZWNlaXZlIHBhdGguIEV4Y2VsbGVudCwgdGhhdCdzIGNvcmUgd2lyZWxlc3Mgc3Vic3lzdGVtIGxvZ2ljLlxuXG5Ob3csIGhvdyBlYXNpbHkgY2FuIHdlIHRyaWdnZXIgdGhpcz8gVGhpbmtpbmcgYWJvdXQgaXQsIG1hYzgwMjExIGlzIGVtdWxhdGVkIHZpYSBgbWFjODAyMTFfaHdzaW1gLCB3aGljaCB3ZSBjYW4gdXNlIGluIHZpcnR1YWwgZW52aXJvbm1lbnRzIGxpa2UgUUVNVSBvciBHQ0UuIEFuZCBpZiBJIHJlY2FsbCBjb3JyZWN0bHksIHN5emthbGxlciB0ZXN0cyBtYWM4MDIxMSBleHRlbnNpdmVseSB1c2luZyBod3NpbSwgb3IgdXNpbmcgbmw4MDIxMS9yYWRpb3RhcC9pbmplY3RlZCBwYWNrZXRzLiBTbywgdGhpcyBpcyBkZWZpbml0ZWx5IHJlYWNoYWJsZSBhbmQgZnV6emVhYmxlLiBXZSBhcmUgZ29vZCB0byBnbyFcblxuVG8gbWFrZSBzdXJlIHRoaXMgY2FuIGJlIHJlYWNoZWQgYW5kIHRlc3RlZCwgSSBuZWVkIHRvIGtub3cgdGhlIEtjb25maWcgb3B0aW9ucyByZXF1aXJlZCBmb3IgYm90aCBtYWM4MDIxMSBhbmQgYG1hYzgwMjExX2h3c2ltYC4gVGltZSB0byBzZWFyY2ggdGhlIEtjb25maWcgZmlsZXMgZm9yIGBNQUM4MDIxMWAuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ5MTcsIk91dHB1dFRva2VucyI6MzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNTMsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yOVQwNjowMjozMi45MzY0OTY1NTRaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTQ5NzU0ODU0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBNQUM4MDIxMVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvbWFjODAyMTFcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L21hYzgwMjExL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyOmNvbmZpZyBNQUM4MDIxMVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTMtXFx0dHJpc3RhdGUgXFxcIkdlbmVyaWMgSUVFRSA4MDIuMTEgTmV0d29ya2luZyBTdGFjayAobWFjODAyMTEpXFxcIlxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWc9MTk9aWYgTUFDODAyMTEgIT0gblxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTIwLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjIxOmNvbmZpZyBNQUM4MDIxMV9IQVNfUkNcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yMi1cXHRib29sXFxubmV0L21hYzgwMjExL0tjb25maWctMjMtXFxubmV0L21hYzgwMjExL0tjb25maWc6MjQ6Y29uZmlnIE1BQzgwMjExX1JDX01JTlNUUkVMXFxubmV0L21hYzgwMjExL0tjb25maWctMjUtXFx0Ym9vbCBcXFwiTWluc3RyZWxcXFwiIGlmIEVYUEVSVFxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWc9MzE9Y2hvaWNlXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy00MC1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzo0MTpjb25maWcgTUFDODAyMTFfUkNfREVGQVVMVF9NSU5TVFJFTFxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTQyLVxcdGJvb2wgXFxcIk1pbnN0cmVsXFxcIlxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWc9NDg9ZW5kY2hvaWNlXFxubmV0L21hYzgwMjExL0tjb25maWctNDktXFxubmV0L21hYzgwMjExL0tjb25maWc6NTA6Y29uZmlnIE1BQzgwMjExX1JDX0RFRkFVTFRcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy01MS1cXHRzdHJpbmdcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnPTU3PWNvbW1lbnQgXFxcIlNvbWUgd2lyZWxlc3MgZHJpdmVycyByZXF1aXJlIGEgcmF0ZSBjb250cm9sIGFsZ29yaXRobVxcXCJcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTU5LVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjYwOmNvbmZpZyBNQUM4MDIxMV9LVU5JVF9URVNUXFxubmV0L21hYzgwMjExL0tjb25maWctNjEtXFx0dHJpc3RhdGUgXFxcIktVbml0IHRlc3RzIGZvciBtYWM4MDIxMVxcXCIgaWYgIUtVTklUX0FMTF9URVNUU1xcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWctNjktXFxubmV0L21hYzgwMjExL0tjb25maWc6NzA6Y29uZmlnIE1BQzgwMjExX01FU0hcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy03MS1cXHRib29sIFxcXCJFbmFibGUgbWFjODAyMTEgbWVzaCBuZXR3b3JraW5nIHN1cHBvcnRcXFwiXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy03OC1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzo3OTpjb25maWcgTUFDODAyMTFfTEVEU1xcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTgwLVxcdGJvb2wgXFxcIkVuYWJsZSBMRUQgdHJpZ2dlcnNcXFwiXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy04Ny1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzo4ODpjb25maWcgTUFDODAyMTFfREVCVUdGU1xcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTg5LVxcdGJvb2wgXFxcIkV4cG9ydCBtYWM4MDIxMSBpbnRlcm5hbHMgaW4gRGVidWdGU1xcXCJcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTk2LVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjk3OmNvbmZpZyBNQUM4MDIxMV9NRVNTQUdFX1RSQUNJTkdcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy05OC1cXHRib29sIFxcXCJUcmFjZSBhbGwgbWFjODAyMTEgZGVidWcgbWVzc2FnZXNcXFwiXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xMDktXFxubmV0L21hYzgwMjExL0tjb25maWc6MTEwOm1lbnVjb25maWcgTUFDODAyMTFfREVCVUdfTUVOVVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTExMS1cXHRib29sIFxcXCJTZWxlY3QgbWFjODAyMTEgZGVidWdnaW5nIGZlYXR1cmVzXFxcIlxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWctMTE1LVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjExNjpjb25maWcgTUFDODAyMTFfTk9JTkxJTkVcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xMTctXFx0Ym9vbCBcXFwiRG8gbm90IGlubGluZSBUWC9SWCBoYW5kbGVyc1xcXCJcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTEzMS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoxMzI6Y29uZmlnIE1BQzgwMjExX1ZFUkJPU0VfREVCVUdcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xMzMtXFx0Ym9vbCBcXFwiVmVyYm9zZSBkZWJ1Z2dpbmcgb3V0cHV0XFxcIlxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWctMTQyLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjE0Mzpjb25maWcgTUFDODAyMTFfTUxNRV9ERUJVR1xcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE0NC1cXHRib29sIFxcXCJWZXJib3NlIG1hbmFnZWQgTUxNRSBvdXRwdXRcXFwiXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xNTMtXFxubmV0L21hYzgwMjExL0tjb25maWc6MTU0OmNvbmZpZyBNQUM4MDIxMV9TVEFfREVCVUdcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xNTUtXFx0Ym9vbCBcXFwiVmVyYm9zZSBzdGF0aW9uIGRlYnVnZ2luZ1xcXCJcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE2Mi1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoxNjM6Y29uZmlnIE1BQzgwMjExX0hUX0RFQlVHXFxubmV0L21hYzgwMjExL0tjb25maWctMTY0LVxcdGJvb2wgXFxcIlZlcmJvc2UgSFQgZGVidWdnaW5nXFxcIlxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWctMTc0LVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjE3NTpjb25maWcgTUFDODAyMTFfT0NCX0RFQlVHXFxubmV0L21hYzgwMjExL0tjb25maWctMTc2LVxcdGJvb2wgXFxcIlZlcmJvc2UgT0NCIGRlYnVnZ2luZ1xcXCJcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE4NS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoxODY6Y29uZmlnIE1BQzgwMjExX0lCU1NfREVCVUdcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xODctXFx0Ym9vbCBcXFwiVmVyYm9zZSBJQlNTIGRlYnVnZ2luZ1xcXCJcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE5Ni1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoxOTc6Y29uZmlnIE1BQzgwMjExX1BTX0RFQlVHXFxubmV0L21hYzgwMjExL0tjb25maWctMTk4LVxcdGJvb2wgXFxcIlZlcmJvc2UgcG93ZXJzYXZlIG1vZGUgZGVidWdnaW5nXFxcIlxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWctMjA4LVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjIwOTpjb25maWcgTUFDODAyMTFfTVBMX0RFQlVHXFxubmV0L21hYzgwMjExL0tjb25maWctMjEwLVxcdGJvb2wgXFxcIlZlcmJvc2UgbWVzaCBwZWVyIGxpbmsgZGVidWdnaW5nXFxcIlxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWctMjIxLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjIyMjpjb25maWcgTUFDODAyMTFfTVBBVEhfREVCVUdcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yMjMtXFx0Ym9vbCBcXFwiVmVyYm9zZSBtZXNoIHBhdGggZGVidWdnaW5nXFxcIlxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWctMjM0LVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjIzNTpjb25maWcgTUFDODAyMTFfTUhXTVBfREVCVUdcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yMzYtXFx0Ym9vbCBcXFwiVmVyYm9zZSBtZXNoIEhXTVAgcm91dGluZyBkZWJ1Z2dpbmdcXFwiXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yNDctXFxubmV0L21hYzgwMjExL0tjb25maWc6MjQ4OmNvbmZpZyBNQUM4MDIxMV9NRVNIX1NZTkNfREVCVUdcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yNDktXFx0Ym9vbCBcXFwiVmVyYm9zZSBtZXNoIHN5bmNocm9uaXphdGlvbiBkZWJ1Z2dpbmdcXFwiXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yNTgtXFxubmV0L21hYzgwMjExL0tjb25maWc6MjU5OmNvbmZpZyBNQUM4MDIxMV9NRVNIX0NTQV9ERUJVR1xcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTI2MC1cXHRib29sIFxcXCJWZXJib3NlIG1lc2ggY2hhbm5lbCBzd2l0Y2ggZGVidWdnaW5nXFxcIlxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWctMjY5LVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjI3MDpjb25maWcgTUFDODAyMTFfTUVTSF9QU19ERUJVR1xcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTI3MS1cXHRib29sIFxcXCJWZXJib3NlIG1lc2ggcG93ZXJzYXZlIGRlYnVnZ2luZ1xcXCJcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTI4MC1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyODE6Y29uZmlnIE1BQzgwMjExX1RETFNfREVCVUdcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yODItXFx0Ym9vbCBcXFwiVmVyYm9zZSBURExTIGRlYnVnZ2luZ1xcXCJcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTI5Mi1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyOTM6Y29uZmlnIE1BQzgwMjExX0RFQlVHX0NPVU5URVJTXFxubmV0L21hYzgwMjExL0tjb25maWctMjk0LVxcdGJvb2wgXFxcIkV4dHJhIHN0YXRpc3RpY3MgZm9yIFRYL1JYIGRlYnVnZ2luZ1xcXCJcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTMwNy1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzozMDg6Y29uZmlnIE1BQzgwMjExX1NUQV9IQVNIX01BWF9TSVpFXFxubmV0L21hYzgwMjExL0tjb25maWctMzA5LVxcdGludCBcXFwiU3RhdGlvbiBoYXNoIHRhYmxlIG1heGltdW0gc2l6ZVxcXCIgaWYgTUFDODAyMTFfREVCVUdfTUVOVVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yOVQwNjowMjozMy4wODYyNTY5NDhaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoyNjk4MzIyMDk1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgc3VtbWFyeSwgYXMgdGhvdWdoIEkgd2VyZSB0aGlua2luZyB0aHJvdWdoIHRoZSBwcm9jZXNzOlxuXG4qKkRpdmluZyBpbnRvIHRoZSBNYWM4MDIxMSBDb21waWxhdGlvbioqXG5cbk9rYXksIHNvIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyBgcngub2AgaXMgYmVpbmcgYnVpbHQuIFRoZSBiZXN0IHBsYWNlIHRvIHN0YXJ0IGlzIGFsd2F5cyB0aGUgYE1ha2VmaWxlYCBpbiB0aGUgYG5ldC9tYWM4MDIxMWAgZGlyZWN0b3J5LiBJdCdzIHRoZSBjZW50cmFsIGh1YiBmb3IgdGhpcyBtb2R1bGUncyBjb21waWxhdGlvbi4gSSdsbCBuZWVkIHRvIGdvIGluIHRoZXJlIGFuZCBmaWd1cmUgb3V0IHdoYXQgcnVsZXMgb3IgdmFyaWFibGVzIGFyZSBpbnZvbHZlZCBpbiBnZW5lcmF0aW5nIHRoYXQgc3BlY2lmaWMgb2JqZWN0IGZpbGUuIENoYW5jZXMgYXJlLCB0aGVyZSdzIGEgc3BlY2lmaWMgcGF0dGVybiBvciBhIGRlcGVuZGVuY3kgY2hhaW4gZGVmaW5lZCB0aGF0IHJldmVhbHMgdGhlIGJ1aWxkIHByb2Nlc3MuIExldCdzIHNlZSB3aGF0IHRoZSBtYWtlZmlsZSByZXZlYWxzIGFib3V0IGl0cyBjb21waWxhdGlvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6NzkzMCwiT3V0cHV0VG9rZW5zIjozNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI5VDA2OjAyOjM1Ljc4NDU4MTk1M1oiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2MzM1MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJuZXQvbWFjODAyMTEvTWFrZWZpbGVcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogNTBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAgMTpcXHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXFxuICAgMjpcXHRvYmotJChDT05GSUdfTUFDODAyMTEpICs9IG1hYzgwMjExLm9cXG4gICAzOlxcdFxcbiAgIDQ6XFx0IyBtYWM4MDIxMSBvYmplY3RzXFxuICAgNTpcXHRtYWM4MDIxMS15IDo9IFxcXFxcXG4gICA2OlxcdFxcdG1haW4ubyBzdGF0dXMubyBcXFxcXFxuICAgNzpcXHRcXHRkcml2ZXItb3BzLm8gXFxcXFxcbiAgIDg6XFx0XFx0c3RhX2luZm8ubyBcXFxcXFxuICAgOTpcXHRcXHR3ZXAubyBcXFxcXFxuICAxMDpcXHRcXHRhZWFkX2FwaS5vIFxcXFxcXG4gIDExOlxcdFxcdHdwYS5vIFxcXFxcXG4gIDEyOlxcdFxcdHNjYW4ubyBvZmZjaGFubmVsLm8gXFxcXFxcbiAgMTM6XFx0XFx0aHQubyBhZ2ctdHgubyBhZ2ctcngubyBcXFxcXFxuICAxNDpcXHRcXHR2aHQubyBcXFxcXFxuICAxNTpcXHRcXHRoZS5vIFxcXFxcXG4gIDE2OlxcdFxcdHMxZy5vIFxcXFxcXG4gIDE3OlxcdFxcdGlic3MubyBcXFxcXFxuICAxODpcXHRcXHRpZmFjZS5vIFxcXFxcXG4gIDE5OlxcdFxcdGxpbmsubyBcXFxcXFxuICAyMDpcXHRcXHRyYXRlLm8gXFxcXFxcbiAgMjE6XFx0XFx0dGtpcC5vIFxcXFxcXG4gIDIyOlxcdFxcdGFlc19jbWFjLm8gXFxcXFxcbiAgMjM6XFx0XFx0YWVzX2dtYWMubyBcXFxcXFxuICAyNDpcXHRcXHRmaWxzX2FlYWQubyBcXFxcXFxuICAyNTpcXHRcXHRjZmcubyBcXFxcXFxuICAyNjpcXHRcXHRldGh0b29sLm8gXFxcXFxcbiAgMjc6XFx0XFx0cngubyBcXFxcXFxuICAyODpcXHRcXHRzcGVjdG1nbXQubyBcXFxcXFxuICAyOTpcXHRcXHR0eC5vIFxcXFxcXG4gIDMwOlxcdFxcdGtleS5vIFxcXFxcXG4gIDMxOlxcdFxcdHV0aWwubyBwYXJzZS5vIFxcXFxcXG4gIDMyOlxcdFxcdHdtZS5vIFxcXFxcXG4gIDMzOlxcdFxcdGNoYW4ubyBhcC5vIFxcXFxcXG4gIDM0OlxcdFxcdHRyYWNlLm8gbWxtZS5vIFxcXFxcXG4gIDM1OlxcdFxcdHRkbHMubyBcXFxcXFxuICAzNjpcXHRcXHRvY2IubyBcXFxcXFxuICAzNzpcXHRcXHRhaXJ0aW1lLm8gXFxcXFxcbiAgMzg6XFx0XFx0ZWh0Lm8gdWhyLm8gbmFuLm9cXG4gIDM5OlxcdFxcbiAgNDA6XFx0bWFjODAyMTEtJChDT05GSUdfTUFDODAyMTFfTEVEUykgKz0gbGVkLm9cXG4gIDQxOlxcdG1hYzgwMjExLSQoQ09ORklHX01BQzgwMjExX0RFQlVHRlMpICs9IFxcXFxcXG4gIDQyOlxcdFxcdGRlYnVnZnMubyBcXFxcXFxuICA0MzpcXHRcXHRkZWJ1Z2ZzX3N0YS5vIFxcXFxcXG4gIDQ0OlxcdFxcdGRlYnVnZnNfbmV0ZGV2Lm8gXFxcXFxcbiAgNDU6XFx0XFx0ZGVidWdmc19rZXkub1xcbiAgNDY6XFx0XFxuICA0NzpcXHRtYWM4MDIxMS0kKENPTkZJR19NQUM4MDIxMV9NRVNIKSArPSBcXFxcXFxuICA0ODpcXHRcXHRtZXNoLm8gXFxcXFxcbiAgNDk6XFx0XFx0bWVzaF9wYXRodGJsLm8gXFxcXFxcbiAgNTA6XFx0XFx0bWVzaF9wbGluay5vIFxcXFxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjlUMDY6MDI6MzUuNzg0NjQ3MjAzWiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjU3Mjc3NTMwMDcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqQW5hbHl6aW5nIEtjb25maWcgRGVwZW5kZW5jaWVzIGZvciBDT05GSUdfTUFDODAyMTEqKlxuXG5Pa2F5LCBzbyBJIG5lZWQgdG8gZGlnIGludG8gdGhlIEtjb25maWcgZGVwZW5kZW5jaWVzIGZvciBgQ09ORklHX01BQzgwMjExYC4gVGltZSB0byBiZSBzeXN0ZW1hdGljIGFib3V0IHRoaXMuIEZpcnN0LCBJJ20gZ29pbmcgdG8gZmlyZSB1cCB0aGUgcmVsZXZhbnQgS2NvbmZpZyBmaWxlcy4gSSBrbm93IHRoZSBnZW5lcmFsIGFyZWEsIHNvIEknbGwgc3RhcnQgd2l0aCB0aGUgc3RhbmRhcmQgd2lyZWxlc3MgYW5kIG5ldHdvcmtpbmcgZGlyZWN0b3JpZXMsIGJ1dCBJIG1pZ2h0IG5lZWQgdG8gYnJhbmNoIG91dCBpZiBpdCBnZXRzIHRyaWNreS4gSSdsbCBwcm9iYWJseSBiZSB1c2luZyBgZ3JlcGAgb3IgYGZpbmRgIHdpdGggc29tZSB0YXJnZXRlZCBwYXR0ZXJucyB0byBsb2NhdGUgdGhlIGRlZmluaW5nIHN5bWJvbC5cblxuSSdtIHRoaW5raW5nIEknbGwgbG9vayBmb3IgZGlyZWN0IGRlcGVuZGVuY2llcyBmaXJzdDogYGRlcGVuZHMgb25gLCBgc2VsZWN0YCwgb3IgZXZlbiBgZGVmYXVsdGAgc3RhdGVtZW50cyB0aGF0IGRpcmVjdGx5IHJlZmVyZW5jZSBgQ09ORklHX01BQzgwMjExYC4gVGhhdCdzIHRoZSBsb3ctaGFuZ2luZyBmcnVpdC4gT25jZSBJJ3ZlIGdvdCB0aGF0IGluaXRpYWwgc2V0LCB0aGVuIEkgbmVlZCB0byBzdGFydCB0cmFjaW5nICp0aGVpciogZGVwZW5kZW5jaWVzLiBJJ2xsIG5lZWQgdG8gZm9sbG93IHRoZSBjaGFpbiB1cHN0cmVhbSwgZW5zdXJpbmcgSSB1bmRlcnN0YW5kIHRoZSByYXRpb25hbGUgYmVoaW5kIGVhY2ggY29uc3RyYWludC4gVGhpcyBpcyB3aGVyZSB0aGluZ3MgZ2V0IGludGVyZXN0aW5nLCBiZWNhdXNlIG9mdGVuIHRoZXJlIGFyZSBjb21wbGV4IGNvbmRpdGlvbmFsIHJlbGF0aW9uc2hpcHMsIGFuZCBpdCdzIGVhc3kgdG8gZ2V0IGxvc3QgaW4gYSB0YW5nbGUgb2YgYCNpZmRlZmAgc3RhdGVtZW50cyBhbmQgc3VidGxlIHZlcnNpb24gY2hlY2tzLlxuXG5JJ2xsIGJlIG1pbmRmdWwgb2YgdGhlIGRpZmZlcmVudCB0eXBlcyBvZiBkZXBlbmRlbmNpZXMsIGVzcGVjaWFsbHkgdGhlIHN1YnRsZSBkaWZmZXJlbmNlcyBiZXR3ZWVuIGBkZXBlbmRzIG9uYCwgYHNlbGVjdGAsIGFuZCBldmVuIGByYW5nZWAgY29uc3RyYWludHMuIFRoZXkgYWxsIGhhdmUgc2xpZ2h0bHkgZGlmZmVyZW50IGltcGxpY2F0aW9ucyBmb3IgdGhlIG92ZXJhbGwgY29uZmlndXJhdGlvbiBzcGFjZS4gQXJlIHRoZXJlIGFueSBkZWZhdWx0IHZhbHVlcyB0aGF0IG1pZ2h0IGltcGFjdCBob3cgdGhpcyBtb2R1bGUgaXMgZW5hYmxlZD8gSXQncyBlYXN5IHRvIG92ZXJsb29rIGRlZmF1bHRzLiBUaGVuLCBJIG5lZWQgdG8gY29uc2lkZXIgcG90ZW50aWFsIGNvbmZsaWN0cy4gQXJlIHRoZXJlIGFueSBvdGhlciBjb25maWd1cmF0aW9ucyB0aGF0IHdvdWxkIHByZXZlbnQgYENPTkZJR19NQUM4MDIxMWAgZnJvbSBiZWluZyBzZWxlY3RlZCBvciBmdW5jdGlvbmFsPyBJJ2xsIHByb2JhYmx5IG5lZWQgdG8gYnVpbGQgYSBtZW50YWwgbWFwIG9mIHRoZSBjb25maWd1cmF0aW9uIHNwYWNlIGFzIEknbSBkaWdnaW5nIHRocm91Z2ggdGhlc2UgZGVwZW5kZW5jaWVzLlxuXG5BbmQgb2YgY291cnNlLCBJJ2xsIG5lZWQgdG8gY2hlY2sgZm9yIGFueSBwbGF0Zm9ybS1zcGVjaWZpYyBkZXBlbmRlbmNpZXMuIEFyZSB3ZSBkZWFsaW5nIHdpdGggYW55IGFyY2hpdGVjdHVyZXMgb3IgYm9hcmQgY29uZmlndXJhdGlvbnMgdGhhdCBoYXZlIHNwZWNpYWwgcmVxdWlyZW1lbnRzIG9yIGxpbWl0YXRpb25zPyBJIGtub3cgZnJvbSBleHBlcmllbmNlIHRoYXQgdGhlc2UgcGxhdGZvcm0tc3BlY2lmaWMgYWRkaXRpb25zIGNhbiBzb21ldGltZXMgYmUgZGVlcGx5IG5lc3RlZCwgc28gSSBtYXkgbmVlZCB0byBsb29rIGF0IGFyY2hpdGVjdHVyZS1zcGVjaWZpYyBLY29uZmlnIGZyYWdtZW50cyBhcyB3ZWxsLiBGaW5hbGx5LCBJJ2xsIGtlZXAgYW4gZXllIG91dCBmb3IgYW55IHVudXN1YWwgb3IgdW5kb2N1bWVudGVkIGRlcGVuZGVuY2llcy4gU29tZXRpbWVzIHRoZXJlJ3MgYSBnb29kIHJlYXNvbiBmb3IgYSBzZWVtaW5nbHkgYXJiaXRyYXJ5IHJlcXVpcmVtZW50LCBhbmQgc29tZXRpbWVzIGl0J3MganVzdCBhIGxlZnRvdmVyIGZyb20gYSBwcmV2aW91cyBkZXZlbG9wbWVudCBlZmZvcnQuIEdldHRpbmcgdGhpcyByaWdodCBpcyBjcml0aWNhbC4gVGhpcyBpcyBhIHNvbGlkIHBpZWNlIG9mIHRoZSBwdXp6bGUgdGhhdCBlbnN1cmVzIGV2ZXJ5dGhpbmcgZnVuY3Rpb25zIGNvcnJlY3RseS5cblxuXG4iLCJJbnB1dFRva2VucyI6ODc5NywiT3V0cHV0VG9rZW5zIjozNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE4LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjlUMDY6MDI6NDEuNTEyNDAyNThaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzIxMzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwibmV0L21hYzgwMjExL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogMjVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAgMTpcXHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG4gICAyOlxcdGNvbmZpZyBNQUM4MDIxMVxcbiAgIDM6XFx0XFx0dHJpc3RhdGUgXFxcIkdlbmVyaWMgSUVFRSA4MDIuMTEgTmV0d29ya2luZyBTdGFjayAobWFjODAyMTEpXFxcIlxcbiAgIDQ6XFx0XFx0ZGVwZW5kcyBvbiBDRkc4MDIxMVxcbiAgIDU6XFx0XFx0c2VsZWN0IENSWVBUT1xcbiAgIDY6XFx0XFx0c2VsZWN0IENSWVBUT19MSUJfQUVTX0NCQ19NQUNTXFxuICAgNzpcXHRcXHRzZWxlY3QgQ1JZUFRPX0xJQl9BUkM0XFxuICAgODpcXHRcXHRzZWxlY3QgQ1JZUFRPX0FFU1xcbiAgIDk6XFx0XFx0c2VsZWN0IENSWVBUT19DQ01cXG4gIDEwOlxcdFxcdHNlbGVjdCBDUllQVE9fR0NNXFxuICAxMTpcXHRcXHRzZWxlY3QgQ1JDMzJcXG4gIDEyOlxcdFxcdGhlbHBcXG4gIDEzOlxcdFxcdCAgVGhpcyBvcHRpb24gZW5hYmxlcyB0aGUgaGFyZHdhcmUgaW5kZXBlbmRlbnQgSUVFRSA4MDIuMTFcXG4gIDE0OlxcdFxcdCAgbmV0d29ya2luZyBzdGFjay5cXG4gIDE1OlxcdFxcbiAgMTY6XFx0Y29tbWVudCBcXFwiQ0ZHODAyMTEgbmVlZHMgdG8gYmUgZW5hYmxlZCBmb3IgTUFDODAyMTFcXFwiXFxuICAxNzpcXHRcXHRkZXBlbmRzIG9uIENGRzgwMjExPW5cXG4gIDE4OlxcdFxcbiAgMTk6XFx0aWYgTUFDODAyMTEgIT0gblxcbiAgMjA6XFx0XFxuICAyMTpcXHRjb25maWcgTUFDODAyMTFfSEFTX1JDXFxuICAyMjpcXHRcXHRib29sXFxuICAyMzpcXHRcXG4gIDI0OlxcdGNvbmZpZyBNQUM4MDIxMV9SQ19NSU5TVFJFTFxcbiAgMjU6XFx0XFx0Ym9vbCBcXFwiTWluc3RyZWxcXFwiIGlmIEVYUEVSVFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yOVQwNjowMjo0MS41MTI0NzY0NloiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoyMzk5MDQyODU3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGFuIGV4cGVydCdzIGludGVybmFsIG1vbm9sb2d1ZTpcblxuKipDaGVja2luZyBgQ0ZHODAyMTFgIERlcGVuZGVuY2llcyBpbiBgbmV0L3dpcmVsZXNzL0tjb25maWdgKipcblxuQWxyaWdodCwgbGV0J3MgZGl2ZSBpbnRvIHRoZSBgbmV0L3dpcmVsZXNzL0tjb25maWdgIGZpbGUuIEkgbmVlZCB0byByZWZyZXNoIG15IG1lbW9yeSBvbiBob3cgYENGRzgwMjExYCBpcyB3aXJlZCB1cCwgc3BlY2lmaWNhbGx5IGxvb2tpbmcgYXQgdGhlIGRlcGVuZGVuY3kgc3RydWN0dXJlLiBJJ20gYXNzdW1pbmcgdGhlcmUncyBiZWVuIGEgY2hhbmdlIEkgbmVlZCB0byB1bmRlcnN0YW5kLCBvciBtYXliZSBJJ20gdHJvdWJsZXNob290aW5nIGEgY29uZmlndXJhdGlvbiBpc3N1ZS4gVGhlIGBLY29uZmlnYCBmaWxlcyBhcmUgdXN1YWxseSBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkLCBidXQgeW91IGtub3cgaG93IGl0IGdvZXM7IGl0J3MgZWFzeSB0byBtaXNzIHN1YnRsZSBpbnRlcmFjdGlvbnMuIEknbGwgbmVlZCB0byBzZWUgd2hpY2ggb3RoZXIgb3B0aW9ucyBkZXBlbmQgb24sIG9yIGFyZSBkZXBlbmRlZCBvbiBieSwgYENGRzgwMjExYC4gQXJlIHRoZXJlIGFueSBuZXcgZGVwZW5kZW5jaWVzIGludHJvZHVjZWQ/IEFyZSB0aGVyZSBhbnkgdGhhdCBoYXZlIGJlZW4gcmVtb3ZlZCBvciBjaGFuZ2VkPyBJJ2xsIHByb2JhYmx5IGJlIGNoZWNraW5nIHRoaW5ncyBsaWtlIHRoZSBoYXJkd2FyZSBsYXllciwgcmVndWxhdG9yeSBkYXRhYmFzZSBpbnRlcmFjdGlvbnMsIGFuZCBhbnkgd2lyZWxlc3MgZXh0ZW5zaW9ucyB0aGF0IGhvb2sgaW50byBpdC4gSSdsbCBtZW50YWxseSBtYXAgb3V0IHRoZSBkaWZmZXJlbnQgcGF0aHMgdGhlIGNvbmZpZ3VyYXRpb24gY2FuIHRha2UgYW5kIHdoZXJlIGBDRkc4MDIxMWAgc2VydmVzIGFzIGEgbGluY2hwaW4gb3IgYSBidWlsZGluZyBibG9jay4gR290dGEgZ2V0IGEgc29saWQgZ3Jhc3Agb2YgdGhpcyBiZWNhdXNlIGl0J3MgYSBmdW5kYW1lbnRhbCBwYXJ0IG9mIHRoZSB3aXJlbGVzcyBzdGFjaywgYW5kIGEgbWlzY29uZmlndXJhdGlvbiBoZXJlIGNvdWxkIGNhdXNlIGEgbG90IG9mIGhlYWRhY2hlcyBkb3duc3RyZWFtLiBUaW1lIHRvIHN0YXJ0IHJlYWRpbmchXG5cblxuIiwiSW5wdXRUb2tlbnMiOjk3MDcsIk91dHB1dFRva2VucyI6MzEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMywiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI5VDA2OjAyOjQzLjkxMTUyMzI1N1oiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTA3MTE1NDgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIENGRzgwMjExXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC93aXJlbGVzc1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvd2lyZWxlc3MvS2NvbmZpZz0xND1jb25maWcgV0VYVF9QUklWXFxuLS1cXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xNi1cXG5uZXQvd2lyZWxlc3MvS2NvbmZpZzoxNzpjb25maWcgQ0ZHODAyMTFcXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xOC1cXHR0cmlzdGF0ZSBcXFwiY2ZnODAyMTEgLSB3aXJlbGVzcyBjb25maWd1cmF0aW9uIEFQSVxcXCJcXG4tLVxcbm5ldC93aXJlbGVzcy9LY29uZmlnPTM4PWNvbmZpZyBOTDgwMjExX1RFU1RNT0RFXFxuLS1cXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy01MS1cXG5uZXQvd2lyZWxlc3MvS2NvbmZpZzo1Mjpjb25maWcgQ0ZHODAyMTFfREVWRUxPUEVSX1dBUk5JTkdTXFxubmV0L3dpcmVsZXNzL0tjb25maWctNTMtXFx0Ym9vbCBcXFwiZW5hYmxlIGRldmVsb3BlciB3YXJuaW5nc1xcXCJcXG4tLVxcbm5ldC93aXJlbGVzcy9LY29uZmlnLTY3LVxcbm5ldC93aXJlbGVzcy9LY29uZmlnOjY4OmNvbmZpZyBDRkc4MDIxMV9DRVJUSUZJQ0FUSU9OX09OVVNcXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy02OS1cXHRib29sIFxcXCJjZmc4MDIxMSBjZXJ0aWZpY2F0aW9uIG9udXNcXFwiXFxuLS1cXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy04OC1cXG5uZXQvd2lyZWxlc3MvS2NvbmZpZzo4OTpjb25maWcgQ0ZHODAyMTFfUkVRVUlSRV9TSUdORURfUkVHREJcXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy05MC1cXHRib29sIFxcXCJyZXF1aXJlIHJlZ2RiIHNpZ25hdHVyZVxcXCIgaWYgQ0ZHODAyMTFfQ0VSVElGSUNBVElPTl9PTlVTXFxuLS1cXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy05OC1cXG5uZXQvd2lyZWxlc3MvS2NvbmZpZzo5OTpjb25maWcgQ0ZHODAyMTFfVVNFX0tFUk5FTF9SRUdEQl9LRVlTXFxubmV0L3dpcmVsZXNzL0tjb25maWctMTAwLVxcdGJvb2wgXFxcImFsbG93IHJlZ2RiIGtleXMgc2hpcHBlZCB3aXRoIHRoZSBrZXJuZWxcXFwiIGlmIENGRzgwMjExX0NFUlRJRklDQVRJT05fT05VU1xcbi0tXFxubmV0L3dpcmVsZXNzL0tjb25maWctMTEwLVxcbm5ldC93aXJlbGVzcy9LY29uZmlnOjExMTpjb25maWcgQ0ZHODAyMTFfRVhUUkFfUkVHREJfS0VZRElSXFxubmV0L3dpcmVsZXNzL0tjb25maWctMTEyLVxcdHN0cmluZyBcXFwiYWRkaXRpb25hbCByZWdkYiBrZXkgZGlyZWN0b3J5XFxcIiBpZiBDRkc4MDIxMV9DRVJUSUZJQ0FUSU9OX09OVVNcXG4tLVxcbm5ldC93aXJlbGVzcy9LY29uZmlnLTEyMS1cXG5uZXQvd2lyZWxlc3MvS2NvbmZpZzoxMjI6Y29uZmlnIENGRzgwMjExX1JFR19DRUxMVUxBUl9ISU5UU1xcbm5ldC93aXJlbGVzcy9LY29uZmlnLTEyMy1cXHRib29sIFxcXCJjZmc4MDIxMSByZWd1bGF0b3J5IHN1cHBvcnQgZm9yIGNlbGx1bGFyIGJhc2Ugc3RhdGlvbiBoaW50c1xcXCJcXG4tLVxcbm5ldC93aXJlbGVzcy9LY29uZmlnLTEzNC1cXG5uZXQvd2lyZWxlc3MvS2NvbmZpZzoxMzU6Y29uZmlnIENGRzgwMjExX1JFR19SRUxBWF9OT19JUlxcbm5ldC93aXJlbGVzcy9LY29uZmlnLTEzNi1cXHRib29sIFxcXCJjZmc4MDIxMSBzdXBwb3J0IGZvciBOT19JUiByZWxheGF0aW9uXFxcIlxcbi0tXFxubmV0L3dpcmVsZXNzL0tjb25maWctMTU4LVxcbm5ldC93aXJlbGVzcy9LY29uZmlnOjE1OTpjb25maWcgQ0ZHODAyMTFfREVGQVVMVF9QU1xcbm5ldC93aXJlbGVzcy9LY29uZmlnLTE2MC1cXHRib29sIFxcXCJlbmFibGUgcG93ZXJzYXZlIGJ5IGRlZmF1bHRcXFwiXFxuLS1cXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xNjgtXFxubmV0L3dpcmVsZXNzL0tjb25maWc6MTY5OmNvbmZpZyBDRkc4MDIxMV9ERUJVR0ZTXFxubmV0L3dpcmVsZXNzL0tjb25maWctMTcwLVxcdGJvb2wgXFxcImNmZzgwMjExIERlYnVnRlMgZW50cmllc1xcXCJcXG4tLVxcbm5ldC93aXJlbGVzcy9LY29uZmlnLTE3Ni1cXG5uZXQvd2lyZWxlc3MvS2NvbmZpZzoxNzc6Y29uZmlnIENGRzgwMjExX0NSREFfU1VQUE9SVFxcbm5ldC93aXJlbGVzcy9LY29uZmlnLTE3OC1cXHRib29sIFxcXCJzdXBwb3J0IENSREFcXFwiIGlmIEVYUEVSVFxcbi0tXFxubmV0L3dpcmVsZXNzL0tjb25maWctMTg2LVxcbm5ldC93aXJlbGVzcy9LY29uZmlnOjE4Nzpjb25maWcgQ0ZHODAyMTFfV0VYVFxcbm5ldC93aXJlbGVzcy9LY29uZmlnLTE4OC1cXHRib29sIFxcXCJjZmc4MDIxMSB3aXJlbGVzcyBleHRlbnNpb25zIGNvbXBhdGliaWxpdHlcXFwiXFxuLS1cXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xOTMtXFxubmV0L3dpcmVsZXNzL0tjb25maWc6MTk0OmNvbmZpZyBDRkc4MDIxMV9LVU5JVF9URVNUXFxubmV0L3dpcmVsZXNzL0tjb25maWctMTk1LVxcdHRyaXN0YXRlIFxcXCJLVW5pdCB0ZXN0cyBmb3IgY2ZnODAyMTFcXFwiIGlmICFLVU5JVF9BTExfVEVTVFNcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjlUMDY6MDI6NDMuOTYyMjM5MzI1WiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjQzMzM1NDkxNDcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBzdW1tYXJ5LCBhcyB0aG91Z2ggSSdtIHRoaW5raW5nIHRocm91Z2ggdGhpcyBwcm9jZXNzOlxuXG4qKkRpdmluZyBpbnRvIHRoZSBXaXJlbGVzcyBLZXJuZWwgQ29uZmlndXJhdGlvbioqXG5cbk9rYXksIHRpbWUgdG8gZ2V0IHRvIHdvcmsuIEkgbmVlZCB0byByZWZyZXNoIG15IG1lbW9yeSBvbiBzb21lIHdpcmVsZXNzIGNvbmZpZ3VyYXRpb24gZGV0YWlscy4gVGhlIGJlc3QgcGxhY2UgdG8gc3RhcnQgaXMgYWx3YXlzIHRoZSBgS2NvbmZpZ2AgZmlsZSwgcGFydGljdWxhcmx5IHRoZSBtYWluIG9uZSBpbiB0aGUgYG5ldC93aXJlbGVzc2AgZGlyZWN0b3J5LiBNeSBndXQgc2F5cyB0aGUga2V5IGNvbmZpZ3VyYXRpb25zIGFyZSBwcm9iYWJseSBuZWFyIHRoZSB0b3AuIExldCBtZSBqdW1wIHJpZ2h0IHRvIGxpbmUgMTcgb2YgYG5ldC93aXJlbGVzcy9LY29uZmlnYCBhbmQgc2VlIHdoYXQncyBkZWZpbmVkIHRoZXJlLiBIb3BlZnVsbHksIHRoYXQgc2hvdWxkIGdpdmUgbWUgYSBnb29kIGp1bXBpbmctb2ZmIHBvaW50IGFuZCB0aGUgcmVsZXZhbnQgY29uZmlndXJhdGlvbiBvcHRpb25zLiBUaW1lIHRvIGdldCBteSBiZWFyaW5ncyBhbmQgdW5kZXJzdGFuZCB3aGF0IGNvbnRyb2xzIGFyZSBpbiBwbGFjZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTA5NjIsIk91dHB1dFRva2VucyI6MzIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxOCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yOVQwNjowMjo0OC4yOTU3OTI2MjJaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTAwOTMwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcIm5ldC93aXJlbGVzcy9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEsXG4gIFwiTGluZUNvdW50XCI6IDM1XG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgIDE6XFx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuICAgMjpcXHRjb25maWcgV0lSRUxFU1NfRVhUXFxuICAgMzpcXHRcXHRib29sXFxuICAgNDpcXHRcXG4gICA1OlxcdGNvbmZpZyBXRVhUX0NPUkVcXG4gICA2OlxcdFxcdGRlZl9ib29sIHlcXG4gICA3OlxcdFxcdGRlcGVuZHMgb24gQ0ZHODAyMTFfV0VYVCB8fCBXSVJFTEVTU19FWFRcXG4gICA4OlxcdFxcbiAgIDk6XFx0Y29uZmlnIFdFWFRfUFJPQ1xcbiAgMTA6XFx0XFx0ZGVmX2Jvb2wgeVxcbiAgMTE6XFx0XFx0ZGVwZW5kcyBvbiBQUk9DX0ZTXFxuICAxMjpcXHRcXHRkZXBlbmRzIG9uIFdFWFRfQ09SRVxcbiAgMTM6XFx0XFxuICAxNDpcXHRjb25maWcgV0VYVF9QUklWXFxuICAxNTpcXHRcXHRib29sXFxuICAxNjpcXHRcXG4gIDE3OlxcdGNvbmZpZyBDRkc4MDIxMVxcbiAgMTg6XFx0XFx0dHJpc3RhdGUgXFxcImNmZzgwMjExIC0gd2lyZWxlc3MgY29uZmlndXJhdGlvbiBBUElcXFwiXFxuICAxOTpcXHRcXHRkZXBlbmRzIG9uIFJGS0lMTCB8fCAhUkZLSUxMXFxuICAyMDpcXHRcXHRzZWxlY3QgRldfTE9BREVSXFxuICAyMTpcXHRcXHRzZWxlY3QgQ1JDMzJcXG4gIDIyOlxcdFxcdCMgbWF5IG5lZWQgdG8gdXBkYXRlIHRoaXMgd2hlbiBjZXJ0aWZpY2F0ZXMgYXJlIGNoYW5nZWQgYW5kIGFyZVxcbiAgMjM6XFx0XFx0IyB1c2luZyBhIGRpZmZlcmVudCBhbGdvcml0aG0sIHRob3VnaCByaWdodCBub3cgdGhleSBzaG91bGRuJ3RcXG4gIDI0OlxcdFxcdCMgKHRoaXMgaXMgaGVyZSByYXRoZXIgdGhhbiBiZWxvdyB0byBhbGxvdyBpdCB0byBiZSBhIG1vZHVsZSlcXG4gIDI1OlxcdFxcdHNlbGVjdCBDUllQVE9fU0hBMjU2IGlmIENGRzgwMjExX1VTRV9LRVJORUxfUkVHREJfS0VZU1xcbiAgMjY6XFx0XFx0aGVscFxcbiAgMjc6XFx0XFx0ICBjZmc4MDIxMSBpcyB0aGUgTGludXggd2lyZWxlc3MgTEFOICg4MDIuMTEpIGNvbmZpZ3VyYXRpb24gQVBJLlxcbiAgMjg6XFx0XFx0ICBFbmFibGUgdGhpcyBpZiB5b3UgaGF2ZSBhIHdpcmVsZXNzIGRldmljZS5cXG4gIDI5OlxcdFxcbiAgMzA6XFx0XFx0ICBGb3IgbW9yZSBpbmZvcm1hdGlvbiByZWZlciB0byBkb2N1bWVudGF0aW9uIG9uIHRoZSB3aXJlbGVzcyB3aWtpOlxcbiAgMzE6XFx0XFxuICAzMjpcXHRcXHQgIGh0dHBzOi8vd2lyZWxlc3Mud2lraS5rZXJuZWwub3JnL2VuL2RldmVsb3BlcnMvRG9jdW1lbnRhdGlvbi9jZmc4MDIxMVxcbiAgMzM6XFx0XFxuICAzNDpcXHRcXHQgIFdoZW4gYnVpbHQgYXMgYSBtb2R1bGUgaXQgd2lsbCBiZSBjYWxsZWQgY2ZnODAyMTEuXFxuICAzNTpcXHRcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjlUMDY6MDI6NDguMjk1ODk1NjgyWiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjM4Njk5MDE2NTYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqSW52ZXN0aWdhdGluZyB0aGUgTUFDODAyMTEgSFdTSU0gQ29uZmlndXJhdGlvbioqXG5cbk9rYXksIHNvIEkgbmVlZCB0byBnZXQgYSBoYW5kbGUgb24gaG93IHRoaXMgYE1BQzgwMjExX0hXU0lNYCB0aGluZyBpcyBjb25maWd1cmVkLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gZGl2ZSBpbnRvIHRoZSBjb2RlIGl0c2VsZiwgc3RhcnRpbmcgd2l0aCBgZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbS5jYC4gSSBleHBlY3QgdG8gZmluZCB0aGUgcmVsZXZhbnQgY29uZmlndXJhdGlvbiBvcHRpb25zIG9yIGhvb2tzIGluIHRoZXJlLiBJJ20gZ29pbmcgdG8gdHJ5IGFuZCBwaW5wb2ludCBleGFjdGx5ICp3aGVyZSogdGhlIGBtYWM4MDIxMV9od3NpbWAgZnVuY3Rpb25hbGl0eSBpcyBpbml0aWFsaXplZCwgZW5hYmxlZCwgb3Igb3RoZXJ3aXNlIG1hbmFnZWQgd2l0aGluIHRoZSBicm9hZGVyIGtlcm5lbCBjb25maWd1cmF0aW9uIGZyYW1ld29yay4gRmluZGluZyB0aGF0IGNvbmZpZyBzZXR0aW5nIGlzIG15IHByaW1hcnkgb2JqZWN0aXZlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMTYzNCwiT3V0cHV0VG9rZW5zIjozNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjU5LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjlUMDY6MDI6NTIuMTY1ODAwMTg4WiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3NzY3Mjk4OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgTUFDODAyMTFfSFdTSU1cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3NcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9LY29uZmlnOjE6Y29uZmlnIE1BQzgwMjExX0hXU0lNXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9LY29uZmlnLTItXFx0dHJpc3RhdGUgXFxcIlNpbXVsYXRlZCByYWRpbyB0ZXN0aW5nIHRvb2wgZm9yIG1hYzgwMjExXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yOVQwNjowMjo1Mi4yNDM0ODAyMTZaIiwiU2VxIjoxOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NDgxNzQ4NzUyOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMuIEkgbmVlZCB0byBnZXQgYSBoYW5kbGUgb24gdGhlIGRlZnJhZ21lbnRhdGlvbiBhbmQgcmVjZWl2ZSBmcmFtZSBoYW5kbGluZyB3aXRoaW4gdGhlIGBuZXQvbWFjODAyMTEvcnguY2AgZmlsZS4gTXkgaW5pdGlhbCBmb2N1cyBpcyBvbiB0aGUgc3ltYm9scyBpbnZvbHZlZCBpbiB0aG9zZSBwcm9jZXNzZXMuIEkgd2FudCB0byBpZGVudGlmeSB0aGUga2V5IGZ1bmN0aW9uc+KAlHRoZSBvbmVzIHRoYXQgYXJlIGVpdGhlciBub24tc3RhdGljLCBpbmRpY2F0aW5nIHRoZXkncmUgbGlrZWx5IGNhbGxlZCBmcm9tIGVsc2V3aGVyZSwgb3IgdGhvc2UgYWN0aW5nIGFzIGVudHJ5IHBvaW50cy4gVGhpcyB3aWxsIGdpdmUgbWUgYSBiZXR0ZXIgb3ZlcnZpZXcgb2YgaG93IHRoZSBkZWZyYWdtZW50YXRpb24gYW5kIHJlY2VpdmUgZnJhbWUgbWVjaGFuaXNtcyBhcmUgc3RydWN0dXJlZCB3aXRoaW4gdGhpcyBtb2R1bGUuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBwdWJsaWMgaW50ZXJmYWNlcyBhbmQgdGhlIHN0YXJ0aW5nIHBvaW50cyBvZiB0aGlzIGNvZGUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjExOTM5LCJPdXRwdXRUb2tlbnMiOjM4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjlUMDY6MDI6NTcuMDYwOTcxNTM0WiIsIlNlcSI6MjAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1MDIxMDE0OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJpZWVlODAyMTFfcnhfXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9tYWM4MDIxMVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJcXG5GdWxsIG91dHB1dCBpcyB0b28gbG9uZywgc2hvd2luZyA1MDAgb3V0IG9mIDEyMzkgbGluZXMuXFxuVXNlIG1vcmUgcHJlY2lzZSBleHByZXNzaW9uIGlmIHBvc3NpYmxlLlxcblxcbm5ldC9tYWM4MDIxMS9hZ2ctcnguYz01MjI9RVhQT1JUX1NZTUJPTChpZWVlODAyMTFfbWFuYWdlX3J4X2JhX29mZmwpO1xcbm5ldC9tYWM4MDIxMS9hZ2ctcnguYy01MjMtXFxubmV0L21hYzgwMjExL2FnZy1yeC5jOjUyNDp2b2lkIGllZWU4MDIxMV9yeF9iYV90aW1lcl9leHBpcmVkKHN0cnVjdCBpZWVlODAyMTFfdmlmICp2aWYsXFxubmV0L21hYzgwMjExL2FnZy1yeC5jLTUyNS1cXHRcXHRcXHRcXHQgICBjb25zdCB1OCAqYWRkciwgdW5zaWduZWQgaW50IHRpZClcXG4tLVxcbm5ldC9tYWM4MDIxMS9hZ2ctcnguYy01NDAtfVxcbm5ldC9tYWM4MDIxMS9hZ2ctcnguYzo1NDE6RVhQT1JUX1NZTUJPTChpZWVlODAyMTFfcnhfYmFfdGltZXJfZXhwaXJlZCk7XFxuLS1cXG5uZXQvbWFjODAyMTEvYWlydGltZS5jPTUwNj1zdGF0aWMgdTMyIGllZWU4MDIxMV9nZXRfcmF0ZV9kdXJhdGlvbihzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcXG5uZXQvbWFjODAyMTEvYWlydGltZS5jOjUwNzpcXHRcXHRcXHRcXHQgICAgICAgc3RydWN0IGllZWU4MDIxMV9yeF9zdGF0dXMgKnN0YXR1cyxcXG5uZXQvbWFjODAyMTEvYWlydGltZS5jLTUwOC1cXHRcXHRcXHRcXHQgICAgICAgdTMyICpvdmVyaGVhZClcXG4tLVxcbm5ldC9tYWM4MDIxMS9haXJ0aW1lLmM9NTg1PXUzMiBpZWVlODAyMTFfY2FsY19yeF9haXJ0aW1lKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxcbm5ldC9tYWM4MDIxMS9haXJ0aW1lLmM6NTg2OlxcdFxcdFxcdCAgICAgIHN0cnVjdCBpZWVlODAyMTFfcnhfc3RhdHVzICpzdGF0dXMsXFxubmV0L21hYzgwMjExL2FpcnRpbWUuYy01ODctXFx0XFx0XFx0ICAgICAgaW50IGxlbilcXG4tLVxcbm5ldC9tYWM4MDIxMS9haXJ0aW1lLmM9NjI1PXN0YXRpYyBib29sIGllZWU4MDIxMV9maWxsX3JhdGVfaW5mbyhzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcXG5uZXQvbWFjODAyMTEvYWlydGltZS5jOjYyNjpcXHRcXHRcXHRcXHQgICAgIHN0cnVjdCBpZWVlODAyMTFfcnhfc3RhdHVzICpzdGF0LCB1OCBiYW5kLFxcbm5ldC9tYWM4MDIxMS9haXJ0aW1lLmMtNjI3LVxcdFxcdFxcdFxcdCAgICAgc3RydWN0IHJhdGVfaW5mbyAqcmkpXFxuLS1cXG5uZXQvbWFjODAyMTEvYWlydGltZS5jLTY3Ni1cXG5uZXQvbWFjODAyMTEvYWlydGltZS5jOjY3NzpzdGF0aWMgaW50IGllZWU4MDIxMV9maWxsX3J4X3N0YXR1cyhzdHJ1Y3QgaWVlZTgwMjExX3J4X3N0YXR1cyAqc3RhdCxcXG5uZXQvbWFjODAyMTEvYWlydGltZS5jLTY3OC1cXHRcXHRcXHRcXHQgICAgc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXFxuLS1cXG5uZXQvbWFjODAyMTEvYWlydGltZS5jPTcyMD1zdGF0aWMgdTMyIGllZWU4MDIxMV9jYWxjX3R4X2FpcnRpbWVfcmF0ZShzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcXG4tLVxcbm5ldC9tYWM4MDIxMS9haXJ0aW1lLmMtNzI0LXtcXG5uZXQvbWFjODAyMTEvYWlydGltZS5jOjcyNTpcXHRzdHJ1Y3QgaWVlZTgwMjExX3J4X3N0YXR1cyBzdGF0O1xcbm5ldC9tYWM4MDIxMS9haXJ0aW1lLmMtNzI2LVxcbi0tXFxubmV0L21hYzgwMjExL2FpcnRpbWUuYz03NTY9dTMyIGllZWU4MDIxMV9yYXRlX2V4cGVjdGVkX3R4X2FpcnRpbWUoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXFxuLS1cXG5uZXQvbWFjODAyMTEvYWlydGltZS5jLTc2MS17XFxubmV0L21hYzgwMjExL2FpcnRpbWUuYzo3NjI6XFx0c3RydWN0IGllZWU4MDIxMV9yeF9zdGF0dXMgc3RhdDtcXG5uZXQvbWFjODAyMTEvYWlydGltZS5jLTc2My1cXHR1MzIgZHVyYXRpb24sIG92ZXJoZWFkO1xcbi0tXFxubmV0L21hYzgwMjExL2FwLmM9NTA9c3RhdGljIHZvaWRcXG5uZXQvbWFjODAyMTEvYXAuYzo1MTppZWVlODAyMTFfcnhfZW1sX29wX21vZGVfbm90aWYoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsXFxubmV0L21hYzgwMjExL2FwLmMtNTItXFx0XFx0XFx0ICAgICAgIHN0cnVjdCBza19idWZmICpza2IpXFxuLS1cXG5uZXQvbWFjODAyMTEvYXAuYy01NS1cXHRlbnVtIG5sODAyMTFfaWZ0eXBlIHR5cGUgPSBpZWVlODAyMTFfdmlmX3R5cGVfcDJwKFxcdTAwMjZzZGF0YS1cXHUwMDNldmlmKTtcXG5uZXQvbWFjODAyMTEvYXAuYzo1NjpcXHRzdHJ1Y3QgaWVlZTgwMjExX3J4X3N0YXR1cyAqc3RhdHVzID0gSUVFRTgwMjExX1NLQl9SWENCKHNrYik7XFxubmV0L21hYzgwMjExL2FwLmMtNTctXFx0Y29uc3Qgc3RydWN0IHdpcGh5X2lmdHlwZV9leHRfY2FwYWIgKmlmdF9leHRfY2FwYTtcXG4tLVxcbm5ldC9tYWM4MDIxMS9hcC5jPTE5MD1zdGF0aWMgdm9pZFxcbm5ldC9tYWM4MDIxMS9hcC5jOjE5MTppZWVlODAyMTFfcnhfdWhyX2xpbmtfcmVjb25maWdfcmVxKHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLFxcbm5ldC9tYWM4MDIxMS9hcC5jLTE5Mi1cXHRcXHRcXHRcXHQgICBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbi0tXFxubmV0L21hYzgwMjExL2FwLmM9Mjk3PXZvaWQgaWVlZTgwMjExX2FwX3J4X3F1ZXVlZF9mcmFtZShzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSxcXG4tLVxcbm5ldC9tYWM4MDIxMS9hcC5jLTMwOS1cXHRcXHRjYXNlIFdMQU5fUFJPVEVDVEVEX0VIVF9BQ1RJT05fRU1MX09QX01PREVfTk9USUY6XFxubmV0L21hYzgwMjExL2FwLmM6MzEwOlxcdFxcdFxcdGllZWU4MDIxMV9yeF9lbWxfb3BfbW9kZV9ub3RpZihzZGF0YSwgc2tiKTtcXG5uZXQvbWFjODAyMTEvYXAuYy0zMTEtXFx0XFx0XFx0YnJlYWs7XFxuLS1cXG5uZXQvbWFjODAyMTEvYXAuYy0zMTYtXFx0XFx0Y2FzZSBJRUVFODAyMTFfUFJPVEVDVEVEX1VIUl9BQ1RJT05fTElOS19SRUNPTkZJR19SRVFVRVNUOlxcbm5ldC9tYWM4MDIxMS9hcC5jOjMxNzpcXHRcXHRcXHRpZWVlODAyMTFfcnhfdWhyX2xpbmtfcmVjb25maWdfcmVxKHNkYXRhLCBza2IpO1xcbm5ldC9tYWM4MDIxMS9hcC5jLTMxOC1cXHRcXHRcXHRicmVhaztcXG4tLVxcbm5ldC9tYWM4MDIxMS9kcm9wLmgtMTEtXFxubmV0L21hYzgwMjExL2Ryb3AuaDoxMjp0eXBlZGVmIHVuc2lnbmVkIGludCBfX2JpdHdpc2UgaWVlZTgwMjExX3J4X3Jlc3VsdDtcXG5uZXQvbWFjODAyMTEvZHJvcC5oLTEzLVxcbi0tXFxubmV0L21hYzgwMjExL2Ryb3AuaC0xMTItXFxubmV0L21hYzgwMjExL2Ryb3AuaDoxMTM6LyogaGF2aW5nIHR3byBlbnVtcyBhbGxvd3MgZm9yIGNoZWNraW5nIGllZWU4MDIxMV9yeF9yZXN1bHQgdXNlIHdpdGggc3BhcnNlICovXFxubmV0L21hYzgwMjExL2Ryb3AuaC0xMTQtZW51bSBfX19tYWM4MDIxMV9kcm9wX3JlYXNvbiB7XFxuLS1cXG5uZXQvbWFjODAyMTEvZHJvcC5oPTEyOD1lbnVtIG1hYzgwMjExX2Ryb3BfcmVhc29uIHtcXG5uZXQvbWFjODAyMTEvZHJvcC5oOjEyOTpcXHRSWF9DT05USU5VRVxcdD0gKF9fZm9yY2UgaWVlZTgwMjExX3J4X3Jlc3VsdClfX19SWF9DT05USU5VRSxcXG5uZXQvbWFjODAyMTEvZHJvcC5oOjEzMDpcXHRSWF9RVUVVRURcXHQ9IChfX2ZvcmNlIGllZWU4MDIxMV9yeF9yZXN1bHQpX19fUlhfUVVFVUVELFxcbm5ldC9tYWM4MDIxMS9kcm9wLmg6MTMxOiNkZWZpbmUgREVGKHgpIHggPSAoX19mb3JjZSBpZWVlODAyMTFfcnhfcmVzdWx0KV9fXyAjIyB4LFxcbm5ldC9tYWM4MDIxMS9kcm9wLmgtMTMyLVxcdE1BQzgwMjExX0RST1BfUkVBU09OU19VTlVTQUJMRShERUYpXFxuLS1cXG5uZXQvbWFjODAyMTEvaWJzcy5jPTg2Mj1zdGF0aWMgdm9pZFxcbm5ldC9tYWM4MDIxMS9pYnNzLmM6ODYzOmllZWU4MDIxMV9yeF9tZ210X3NwZWN0cnVtX21nbXQoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsXFxubmV0L21hYzgwMjExL2lic3MuYy04NjQtXFx0XFx0XFx0XFx0c3RydWN0IGllZWU4MDIxMV9tZ210ICptZ210LCBzaXplX3QgbGVuLFxcbm5ldC9tYWM4MDIxMS9pYnNzLmM6ODY1OlxcdFxcdFxcdFxcdHN0cnVjdCBpZWVlODAyMTFfcnhfc3RhdHVzICpyeF9zdGF0dXMsXFxubmV0L21hYzgwMjExL2lic3MuYy04NjYtXFx0XFx0XFx0XFx0c3RydWN0IGllZWU4MDJfMTFfZWxlbXMgKmVsZW1zKVxcbi0tXFxubmV0L21hYzgwMjExL2lic3MuYy04NzgtXFxubmV0L21hYzgwMjExL2lic3MuYzo4Nzk6c3RhdGljIHZvaWQgaWVlZTgwMjExX3J4X21nbXRfZGVhdXRoX2lic3Moc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsXFxubmV0L21hYzgwMjExL2lic3MuYy04ODAtXFx0XFx0XFx0XFx0XFx0ICBzdHJ1Y3QgaWVlZTgwMjExX21nbXQgKm1nbXQsXFxuLS1cXG5uZXQvbWFjODAyMTEvaWJzcy5jLTg5NC1cXG5uZXQvbWFjODAyMTEvaWJzcy5jOjg5NTpzdGF0aWMgdm9pZCBpZWVlODAyMTFfcnhfbWdtdF9hdXRoX2lic3Moc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsXFxubmV0L21hYzgwMjExL2lic3MuYy04OTYtXFx0XFx0XFx0XFx0XFx0c3RydWN0IGllZWU4MDIxMV9tZ210ICptZ210LFxcbi0tXFxubmV0L21hYzgwMjExL2lic3MuYz05MjY9c3RhdGljIHZvaWQgaWVlZTgwMjExX3VwZGF0ZV9zdGFfaW5mbyhzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSxcXG5uZXQvbWFjODAyMTEvaWJzcy5jLTkyNy1cXHRcXHRcXHRcXHQgICAgICBzdHJ1Y3QgaWVlZTgwMjExX21nbXQgKm1nbXQsIHNpemVfdCBsZW4sXFxubmV0L21hYzgwMjExL2lic3MuYzo5Mjg6XFx0XFx0XFx0XFx0ICAgICAgc3RydWN0IGllZWU4MDIxMV9yeF9zdGF0dXMgKnJ4X3N0YXR1cyxcXG5uZXQvbWFjODAyMTEvaWJzcy5jLTkyOS1cXHRcXHRcXHRcXHQgICAgICBzdHJ1Y3QgaWVlZTgwMl8xMV9lbGVtcyAqZWxlbXMsXFxuLS1cXG5uZXQvbWFjODAyMTEvaWJzcy5jLTEwNDUtXFxubmV0L21hYzgwMjExL2lic3MuYzoxMDQ2OnN0YXRpYyB2b2lkIGllZWU4MDIxMV9yeF9ic3NfaW5mbyhzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSxcXG5uZXQvbWFjODAyMTEvaWJzcy5jLTEwNDctXFx0XFx0XFx0XFx0ICBzdHJ1Y3QgaWVlZTgwMjExX21nbXQgKm1nbXQsIHNpemVfdCBsZW4sXFxubmV0L21hYzgwMjExL2lic3MuYzoxMDQ4OlxcdFxcdFxcdFxcdCAgc3RydWN0IGllZWU4MDIxMV9yeF9zdGF0dXMgKnJ4X3N0YXR1cyxcXG5uZXQvbWFjODAyMTEvaWJzcy5jLTEwNDktXFx0XFx0XFx0XFx0ICBzdHJ1Y3QgaWVlZTgwMl8xMV9lbGVtcyAqZWxlbXMpXFxuLS1cXG5uZXQvbWFjODAyMTEvaWJzcy5jLTExMzYtIHB1dF9ic3M6XFxubmV0L21hYzgwMjExL2lic3MuYzoxMTM3OlxcdGllZWU4MDIxMV9yeF9ic3NfcHV0KGxvY2FsLCBic3MpO1xcbm5ldC9tYWM4MDIxMS9pYnNzLmMtMTEzOC19XFxuLS1cXG5uZXQvbWFjODAyMTEvaWJzcy5jPTEzNjY9c3RhdGljIHZvaWQgaWVlZTgwMjExX3N0YV9maW5kX2lic3Moc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEpXFxuLS1cXG5uZXQvbWFjODAyMTEvaWJzcy5jLTE0MDUtXFx0XFx0aWVlZTgwMjExX3N0YV9qb2luX2lic3Moc2RhdGEsIGJzcyk7XFxubmV0L21hYzgwMjExL2lic3MuYzoxNDA2OlxcdFxcdGllZWU4MDIxMV9yeF9ic3NfcHV0KGxvY2FsLCBic3MpO1xcbm5ldC9tYWM4MDIxMS9pYnNzLmMtMTQwNy1cXHRcXHRyZXR1cm47XFxuLS1cXG5uZXQvbWFjODAyMTEvaWJzcy5jLTE0NTQtXFxubmV0L21hYzgwMjExL2lic3MuYzoxNDU1OnN0YXRpYyB2b2lkIGllZWU4MDIxMV9yeF9tZ210X3Byb2JlX3JlcShzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSxcXG5uZXQvbWFjODAyMTEvaWJzcy5jLTE0NTYtXFx0XFx0XFx0XFx0XFx0c3RydWN0IHNrX2J1ZmYgKnJlcSlcXG4tLVxcbm5ldC9tYWM4MDIxMS9pYnNzLmM9MTUyMT1zdGF0aWNcXG5uZXQvbWFjODAyMTEvaWJzcy5jOjE1MjI6dm9pZCBpZWVlODAyMTFfcnhfbWdtdF9wcm9iZV9iZWFjb24oc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsXFxubmV0L21hYzgwMjExL2lic3MuYy0xNTIzLVxcdFxcdFxcdFxcdCAgICBzdHJ1Y3QgaWVlZTgwMjExX21nbXQgKm1nbXQsIHNpemVfdCBsZW4sXFxubmV0L21hYzgwMjExL2lic3MuYzoxNTI0OlxcdFxcdFxcdFxcdCAgICBzdHJ1Y3QgaWVlZTgwMjExX3J4X3N0YXR1cyAqcnhfc3RhdHVzKVxcbm5ldC9tYWM4MDIxMS9pYnNzLmMtMTUyNS17XFxuLS1cXG5uZXQvbWFjODAyMTEvaWJzcy5jLTE1NDUtXFx0aWYgKGVsZW1zKSB7XFxubmV0L21hYzgwMjExL2lic3MuYzoxNTQ2OlxcdFxcdGllZWU4MDIxMV9yeF9ic3NfaW5mbyhzZGF0YSwgbWdtdCwgbGVuLCByeF9zdGF0dXMsIGVsZW1zKTtcXG5uZXQvbWFjODAyMTEvaWJzcy5jLTE1NDctXFx0XFx0a2ZyZWUoZWxlbXMpO1xcbi0tXFxubmV0L21hYzgwMjExL2lic3MuYz0xNTUxPXZvaWQgaWVlZTgwMjExX2lic3NfcnhfcXVldWVkX21nbXQoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsXFxuLS1cXG5uZXQvbWFjODAyMTEvaWJzcy5jLTE1NTMte1xcbm5ldC9tYWM4MDIxMS9pYnNzLmM6MTU1NDpcXHRzdHJ1Y3QgaWVlZTgwMjExX3J4X3N0YXR1cyAqcnhfc3RhdHVzO1xcbm5ldC9tYWM4MDIxMS9pYnNzLmMtMTU1NS1cXHRzdHJ1Y3QgaWVlZTgwMjExX21nbXQgKm1nbXQ7XFxuLS1cXG5uZXQvbWFjODAyMTEvaWJzcy5jLTE1NjgtXFx0Y2FzZSBJRUVFODAyMTFfU1RZUEVfUFJPQkVfUkVROlxcbm5ldC9tYWM4MDIxMS9pYnNzLmM6MTU2OTpcXHRcXHRpZWVlODAyMTFfcnhfbWdtdF9wcm9iZV9yZXEoc2RhdGEsIHNrYik7XFxubmV0L21hYzgwMjExL2lic3MuYy0xNTcwLVxcdFxcdGJyZWFrO1xcbi0tXFxubmV0L21hYzgwMjExL2lic3MuYy0xNTcyLVxcdGNhc2UgSUVFRTgwMjExX1NUWVBFX0JFQUNPTjpcXG5uZXQvbWFjODAyMTEvaWJzcy5jOjE1NzM6XFx0XFx0aWVlZTgwMjExX3J4X21nbXRfcHJvYmVfYmVhY29uKHNkYXRhLCBtZ210LCBza2ItXFx1MDAzZWxlbixcXG5uZXQvbWFjODAyMTEvaWJzcy5jLTE1NzQtXFx0XFx0XFx0XFx0XFx0ICAgICAgIHJ4X3N0YXR1cyk7XFxuLS1cXG5uZXQvbWFjODAyMTEvaWJzcy5jLTE1NzYtXFx0Y2FzZSBJRUVFODAyMTFfU1RZUEVfQVVUSDpcXG5uZXQvbWFjODAyMTEvaWJzcy5jOjE1Nzc6XFx0XFx0aWVlZTgwMjExX3J4X21nbXRfYXV0aF9pYnNzKHNkYXRhLCBtZ210LCBza2ItXFx1MDAzZWxlbik7XFxubmV0L21hYzgwMjExL2lic3MuYy0xNTc4LVxcdFxcdGJyZWFrO1xcbm5ldC9tYWM4MDIxMS9pYnNzLmMtMTU3OS1cXHRjYXNlIElFRUU4MDIxMV9TVFlQRV9ERUFVVEg6XFxubmV0L21hYzgwMjExL2lic3MuYzoxNTgwOlxcdFxcdGllZWU4MDIxMV9yeF9tZ210X2RlYXV0aF9pYnNzKHNkYXRhLCBtZ210LCBza2ItXFx1MDAzZWxlbik7XFxubmV0L21hYzgwMjExL2lic3MuYy0xNTgxLVxcdFxcdGJyZWFrO1xcbi0tXFxubmV0L21hYzgwMjExL2lic3MuYy0xNTk4LVxcdFxcdFxcdGlmIChlbGVtcyBcXHUwMDI2XFx1MDAyNiAhZWxlbXMtXFx1MDAzZXBhcnNlX2Vycm9yKVxcbm5ldC9tYWM4MDIxMS9pYnNzLmM6MTU5OTpcXHRcXHRcXHRcXHRpZWVlODAyMTFfcnhfbWdtdF9zcGVjdHJ1bV9tZ210KHNkYXRhLCBtZ210LFxcbm5ldC9tYWM4MDIxMS9pYnNzLmMtMTYwMC1cXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRza2ItXFx1MDAzZWxlbixcXG4tLVxcbm5ldC9tYWM4MDIxMS9pZWVlODAyMTFfaS5oPTE4Mj1zdHJ1Y3QgaWVlZTgwMjExX3R4X2RhdGEge1xcbi0tXFxubmV0L21hYzgwMjExL2llZWU4MDIxMV9pLmgtMjAwLSAqIFRoZXNlIGFyZSBwZXItZnJhbWUgZmxhZ3MgdGhhdCBhcmUgYXR0YWNoZWQgdG8gYSBmcmFtZSBpbiB0aGVcXG5uZXQvbWFjODAyMTEvaWVlZTgwMjExX2kuaDoyMDE6ICogQHJ4X2ZsYWdzIGZpZWxkIG9mIFxcdTAwMjZzdHJ1Y3QgaWVlZTgwMjExX3J4X3N0YXR1cy5cXG5uZXQvbWFjODAyMTEvaWVlZTgwMjExX2kuaC0yMDItICovXFxubmV0L21hYzgwMjExL2llZWU4MDIxMV9pLmg9MjAzPWVudW0gaWVlZTgwMjExX3BhY2tldF9yeF9mbGFncyB7XFxuLS1cXG5uZXQvbWFjODAyMTEvaWVlZTgwMjExX2kuaC0yMDktLyoqXFxubmV0L21hYzgwMjExL2llZWU4MDIxMV9pLmg6MjEwOiAqIGVudW0gaWVlZTgwMjExX3J4X2ZsYWdzIC0gUlggZGF0YSBmbGFnc1xcbm5ldC9tYWM4MDIxMS9pZWVlODAyMTFfaS5oLTIxMS0gKlxcbi0tXFxubmV0L21hYzgwMjExL2llZWU4MDIxMV9pLmgtMjE3LSAqL1xcbm5ldC9tYWM4MDIxMS9pZWVlODAyMTFfaS5oOjIxODplbnVtIGllZWU4MDIxMV9yeF9mbGFncyB7XFxubmV0L21hYzgwMjExL2llZWU4MDIxMV9pLmgtMjE5LVxcdElFRUU4MDIxMV9SWF9CRUFDT05fUkVQT1JURURcXHQ9IEJJVCgwKSxcXG4tLVxcbm5ldC9tYWM4MDIxMS9pZWVlODAyMTFfaS5oLTIyMS1cXG5uZXQvbWFjODAyMTEvaWVlZTgwMjExX2kuaDoyMjI6c3RydWN0IGllZWU4MDIxMV9yeF9kYXRhIHtcXG5uZXQvbWFjODAyMTEvaWVlZTgwMjExX2kuaC0yMjMtXFx0c3RydWN0IGxpc3RfaGVhZCAqbGlzdDtcXG4tLVxcbm5ldC9tYWM4MDIxMS9pZWVlODAyMTFfaS5oPTcyMD1zdHJ1Y3QgaWVlZTgwMjExX21lc2hfc3luY19vcHMge1xcbi0tXFxubmV0L21hYzgwMjExL2llZWU4MDIxMV9pLmgtNzIzLVxcdFxcdFxcdCAgICAgY29uc3Qgc3RydWN0IGllZWU4MDIxMV9tZXNoY29uZl9pZSAqbWVzaF9jZmcsXFxubmV0L21hYzgwMjExL2llZWU4MDIxMV9pLmg6NzI0OlxcdFxcdFxcdCAgICAgc3RydWN0IGllZWU4MDIxMV9yeF9zdGF0dXMgKnJ4X3N0YXR1cyk7XFxubmV0L21hYzgwMjExL2llZWU4MDIxMV9pLmgtNzI1LVxcbi0tXFxubmV0L21hYzgwMjExL2llZWU4MDIxMV9pLmg9MTk0ND1zdGF0aWMgaW5saW5lIGJvb2xcXG5uZXQvbWFjODAyMTEvaWVlZTgwMjExX2kuaDoxOTQ1OmllZWU4MDIxMV9oYXZlX3J4X3RpbWVzdGFtcChzdHJ1Y3QgaWVlZTgwMjExX3J4X3N0YXR1cyAqc3RhdHVzKVxcbm5ldC9tYWM4MDIxMS9pZWVlODAyMTFfaS5oLTE5NDYte1xcbi0tXFxubmV0L21hYzgwMjExL2llZWU4MDIxMV9pLmg9MjEyND1pZWVlODAyMTFfYnNzX2luZm9fdXBkYXRlKHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsLFxcbm5ldC9tYWM4MDIxMS9pZWVlODAyMTFfaS5oOjIxMjU6XFx0XFx0XFx0ICBzdHJ1Y3QgaWVlZTgwMjExX3J4X3N0YXR1cyAqcnhfc3RhdHVzLFxcbm5ldC9tYWM4MDIxMS9pZWVlODAyMTFfaS5oLTIxMjYtXFx0XFx0XFx0ICBzdHJ1Y3QgaWVlZTgwMjExX21nbXQgKm1nbXQsXFxuLS1cXG5uZXQvbWFjODAyMTEvaWVlZTgwMjExX2kuaC0yMTI4LVxcdFxcdFxcdCAgc3RydWN0IGllZWU4MDIxMV9jaGFubmVsICpjaGFubmVsKTtcXG5uZXQvbWFjODAyMTEvaWVlZTgwMjExX2kuaDoyMTI5OnZvaWQgaWVlZTgwMjExX3J4X2Jzc19wdXQoc3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwsXFxubmV0L21hYzgwMjExL2llZWU4MDIxMV9pLmgtMjEzMC1cXHRcXHRcXHQgIHN0cnVjdCBpZWVlODAyMTFfYnNzICpic3MpO1xcbi0tXFxubmV0L21hYzgwMjExL2llZWU4MDIxMV9pLmg9Mjk4MD1pZWVlODAyMTFfdWhyX2NhcF9pZV90b19zdGFfdWhyX2NhcChzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSxcXG4tLVxcbm5ldC9tYWM4MDIxMS9pZWVlODAyMTFfaS5oLTI5ODgtI2RlZmluZSBWSVNJQkxFX0lGX01BQzgwMjExX0tVTklUXFxubmV0L21hYzgwMjExL2llZWU4MDIxMV9pLmg6Mjk4OTppZWVlODAyMTFfcnhfcmVzdWx0XFxubmV0L21hYzgwMjExL2llZWU4MDIxMV9pLmg6Mjk5MDppZWVlODAyMTFfZHJvcF91bmVuY3J5cHRlZF9tZ210KHN0cnVjdCBpZWVlODAyMTFfcnhfZGF0YSAqcngpO1xcbm5ldC9tYWM4MDIxMS9pZWVlODAyMTFfaS5oLTI5OTEtaW50IGllZWU4MDIxMV9jYWxjX2NoYW5kZWZfc3ViY2hhbl9vZmZzZXQoY29uc3Qgc3RydWN0IGNmZzgwMjExX2NoYW5fZGVmICphcCxcXG4tLVxcbm5ldC9tYWM4MDIxMS9pZmFjZS5jPTE2MjY9c3RhdGljIHZvaWQgaWVlZTgwMjExX2lmYWNlX3Byb2Nlc3Nfc2tiKHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsLFxcbi0tXFxubmV0L21hYzgwMjExL2lmYWNlLmMtMTY2Ni1cXHRcXHRcXHR1OCBjaGFud2lkdGggPSBtZ210LVxcdTAwM2V1LmFjdGlvbi5odF9ub3RpZnlfY3cuY2hhbndpZHRoO1xcbm5ldC9tYWM4MDIxMS9pZmFjZS5jOjE2Njc6XFx0XFx0XFx0c3RydWN0IGllZWU4MDIxMV9yeF9zdGF0dXMgKnN0YXR1cztcXG5uZXQvbWFjODAyMTEvaWZhY2UuYy0xNjY4LVxcdFxcdFxcdHN0cnVjdCBsaW5rX3N0YV9pbmZvICpsaW5rX3N0YTtcXG4tLVxcbm5ldC9tYWM4MDIxMS9pZmFjZS5jLTE2OTQtXFx0XFx0Y2FzZSBXTEFOX1ZIVF9BQ1RJT05fT1BNT0RFX05PVElGOiB7XFxubmV0L21hYzgwMjExL2lmYWNlLmM6MTY5NTpcXHRcXHRcXHRzdHJ1Y3QgaWVlZTgwMjExX3J4X3N0YXR1cyAqc3RhdHVzO1xcbm5ldC9tYWM4MDIxMS9pZmFjZS5jLTE2OTYtXFx0XFx0XFx0ZW51bSBubDgwMjExX2JhbmQgYmFuZDtcXG4tLVxcbm5ldC9tYWM4MDIxMS9sZWQuYz02Mz1zdGF0aWMgdm9pZCBpZWVlODAyMTFfdHhfbGVkX2RlYWN0aXZhdGUoc3RydWN0IGxlZF9jbGFzc2RldiAqbGVkX2NkZXYpXFxuLS1cXG5uZXQvbWFjODAyMTEvbGVkLmMtNzEtXFxubmV0L21hYzgwMjExL2xlZC5jOjcyOnN0YXRpYyBpbnQgaWVlZTgwMjExX3J4X2xlZF9hY3RpdmF0ZShzdHJ1Y3QgbGVkX2NsYXNzZGV2ICpsZWRfY2RldilcXG5uZXQvbWFjODAyMTEvbGVkLmMtNzMte1xcbi0tXFxubmV0L21hYzgwMjExL2xlZC5jLTgyLVxcbm5ldC9tYWM4MDIxMS9sZWQuYzo4MzpzdGF0aWMgdm9pZCBpZWVlODAyMTFfcnhfbGVkX2RlYWN0aXZhdGUoc3RydWN0IGxlZF9jbGFzc2RldiAqbGVkX2NkZXYpXFxubmV0L21hYzgwMjExL2xlZC5jLTg0LXtcXG4tLVxcbm5ldC9tYWM4MDIxMS9sZWQuYz0xNTI9dm9pZCBpZWVlODAyMTFfbGVkX2luaXQoc3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwpXFxuLS1cXG5uZXQvbWFjODAyMTEvbGVkLmMtMTU0LVxcdGF0b21pY19zZXQoXFx1MDAyNmxvY2FsLVxcdTAwM2VyeF9sZWRfYWN0aXZlLCAwKTtcXG5uZXQvbWFjODAyMTEvbGVkLmM6MTU1OlxcdGxvY2FsLVxcdTAwM2VyeF9sZWQuYWN0aXZhdGUgPSBpZWVlODAyMTFfcnhfbGVkX2FjdGl2YXRlO1xcbm5ldC9tYWM4MDIxMS9sZWQuYzoxNTY6XFx0bG9jYWwtXFx1MDAzZXJ4X2xlZC5kZWFjdGl2YXRlID0gaWVlZTgwMjExX3J4X2xlZF9kZWFjdGl2YXRlO1xcbm5ldC9tYWM4MDIxMS9sZWQuYy0xNTctXFx0aWYgKGxvY2FsLVxcdTAwM2VyeF9sZWQubmFtZSBcXHUwMDI2XFx1MDAyNiBsZWRfdHJpZ2dlcl9yZWdpc3RlcihcXHUwMDI2bG9jYWwtXFx1MDAzZXJ4X2xlZCkpIHtcXG4tLVxcbm5ldC9tYWM4MDIxMS9tZXNoLmM9MTQ0ND1zdGF0aWMgdm9pZCBpZWVlODAyMTFfbWVzaF9yeF9iY25fcHJlc3Aoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsXFxuLS1cXG5uZXQvbWFjODAyMTEvbWVzaC5jLTE0NDYtXFx0XFx0XFx0XFx0XFx0c2l6ZV90IGxlbixcXG5uZXQvbWFjODAyMTEvbWVzaC5jOjE0NDc6XFx0XFx0XFx0XFx0XFx0c3RydWN0IGllZWU4MDIxMV9yeF9zdGF0dXMgKnJ4X3N0YXR1cylcXG5uZXQvbWFjODAyMTEvbWVzaC5jLTE0NDgte1xcbi0tXFxubmV0L21hYzgwMjExL21lc2guYz0xNjQ5PXN0YXRpYyB2b2lkIGllZWU4MDIxMV9tZXNoX3J4X21nbXRfYWN0aW9uKHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLFxcbi0tXFxubmV0L21hYzgwMjExL21lc2guYy0xNjUxLVxcdFxcdFxcdFxcdFxcdCAgc2l6ZV90IGxlbixcXG5uZXQvbWFjODAyMTEvbWVzaC5jOjE2NTI6XFx0XFx0XFx0XFx0XFx0ICBzdHJ1Y3QgaWVlZTgwMjExX3J4X3N0YXR1cyAqcnhfc3RhdHVzKVxcbm5ldC9tYWM4MDIxMS9tZXNoLmMtMTY1My17XFxuLS1cXG5uZXQvbWFjODAyMTEvbWVzaC5jPTE2NzQ9dm9pZCBpZWVlODAyMTFfbWVzaF9yeF9xdWV1ZWRfbWdtdChzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSxcXG4tLVxcbm5ldC9tYWM4MDIxMS9tZXNoLmMtMTY3Ni17XFxubmV0L21hYzgwMjExL21lc2guYzoxNjc3OlxcdHN0cnVjdCBpZWVlODAyMTFfcnhfc3RhdHVzICpyeF9zdGF0dXM7XFxubmV0L21hYzgwMjExL21lc2guYy0xNjc4LVxcdHN0cnVjdCBpZWVlODAyMTFfbWdtdCAqbWdtdDtcXG4tLVxcbm5ldC9tYWM4MDIxMS9tZXNoLmg9MzMyPXZvaWQgbWVzaF9uZWlnaGJvdXJfdXBkYXRlKHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLFxcbm5ldC9tYWM4MDIxMS9tZXNoLmgtMzMzLVxcdFxcdFxcdCAgIHU4ICpod19hZGRyLCBzdHJ1Y3QgaWVlZTgwMl8xMV9lbGVtcyAqaWUsXFxubmV0L21hYzgwMjExL21lc2guaDozMzQ6XFx0XFx0XFx0ICAgc3RydWN0IGllZWU4MDIxMV9yeF9zdGF0dXMgKnJ4X3N0YXR1cyk7XFxubmV0L21hYzgwMjExL21lc2guaC0zMzUtYm9vbCBtZXNoX3BlZXJfYWNjZXB0c19wbGlua3Moc3RydWN0IGllZWU4MDJfMTFfZWxlbXMgKmllKTtcXG4tLVxcbm5ldC9tYWM4MDIxMS9tZXNoLmg9MzQyPXZvaWQgbWVzaF9yeF9wbGlua19mcmFtZShzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSxcXG5uZXQvbWFjODAyMTEvbWVzaC5oLTM0My1cXHRcXHRcXHQgc3RydWN0IGllZWU4MDIxMV9tZ210ICptZ210LCBzaXplX3QgbGVuLFxcbm5ldC9tYWM4MDIxMS9tZXNoLmg6MzQ0OlxcdFxcdFxcdCBzdHJ1Y3QgaWVlZTgwMjExX3J4X3N0YXR1cyAqcnhfc3RhdHVzKTtcXG5uZXQvbWFjODAyMTEvbWVzaC5oLTM0NS12b2lkIG1lc2hfc3RhX2NsZWFudXAoc3RydWN0IHN0YV9pbmZvICpzdGEpO1xcbi0tXFxubmV0L21hYzgwMjExL21lc2hfcGxpbmsuYz01NTE9bWVzaF9zdGFfaW5mb19hbGxvYyhzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSwgdTggKmFkZHIsXFxubmV0L21hYzgwMjExL21lc2hfcGxpbmsuYy01NTItXFx0XFx0ICAgIHN0cnVjdCBpZWVlODAyXzExX2VsZW1zICplbGVtcyxcXG5uZXQvbWFjODAyMTEvbWVzaF9wbGluay5jOjU1MzpcXHRcXHQgICAgc3RydWN0IGllZWU4MDIxMV9yeF9zdGF0dXMgKnJ4X3N0YXR1cylcXG5uZXQvbWFjODAyMTEvbWVzaF9wbGluay5jLTU1NC17XFxuLS1cXG5uZXQvbWFjODAyMTEvbWVzaF9wbGluay5jPTU5MD1tZXNoX3N0YV9pbmZvX2dldChzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSxcXG5uZXQvbWFjODAyMTEvbWVzaF9wbGluay5jLTU5MS1cXHRcXHQgIHU4ICphZGRyLCBzdHJ1Y3QgaWVlZTgwMl8xMV9lbGVtcyAqZWxlbXMsXFxubmV0L21hYzgwMjExL21lc2hfcGxpbmsuYzo1OTI6XFx0XFx0ICBzdHJ1Y3QgaWVlZTgwMjExX3J4X3N0YXR1cyAqcnhfc3RhdHVzKSBfX2FjcXVpcmVzKFJDVSlcXG5uZXQvbWFjODAyMTEvbWVzaF9wbGluay5jLTU5My17XFxuLS1cXG5uZXQvbWFjODAyMTEvbWVzaF9wbGluay5jPTYyOD12b2lkIG1lc2hfbmVpZ2hib3VyX3VwZGF0ZShzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSxcXG4tLVxcbm5ldC9tYWM4MDIxMS9tZXNoX3BsaW5rLmMtNjMwLVxcdFxcdFxcdCAgIHN0cnVjdCBpZWVlODAyXzExX2VsZW1zICplbGVtcyxcXG5uZXQvbWFjODAyMTEvbWVzaF9wbGluay5jOjYzMTpcXHRcXHRcXHQgICBzdHJ1Y3QgaWVlZTgwMjExX3J4X3N0YXR1cyAqcnhfc3RhdHVzKVxcbm5ldC9tYWM4MDIxMS9tZXNoX3BsaW5rLmMtNjMyLXtcXG4tLVxcbm5ldC9tYWM4MDIxMS9tZXNoX3BsaW5rLmM9MTEyMD1tZXNoX3Byb2Nlc3NfcGxpbmtfZnJhbWUoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsXFxuLS1cXG5uZXQvbWFjODAyMTEvbWVzaF9wbGluay5jLTExMjItXFx0XFx0XFx0IHN0cnVjdCBpZWVlODAyXzExX2VsZW1zICplbGVtcyxcXG5uZXQvbWFjODAyMTEvbWVzaF9wbGluay5jOjExMjM6XFx0XFx0XFx0IHN0cnVjdCBpZWVlODAyMTFfcnhfc3RhdHVzICpyeF9zdGF0dXMpXFxubmV0L21hYzgwMjExL21lc2hfcGxpbmsuYy0xMTI0LXtcXG4tLVxcbm5ldC9tYWM4MDIxMS9tZXNoX3BsaW5rLmM9MTIyMT12b2lkIG1lc2hfcnhfcGxpbmtfZnJhbWUoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsXFxubmV0L21hYzgwMjExL21lc2hfcGxpbmsuYy0xMjIyLVxcdFxcdFxcdCBzdHJ1Y3QgaWVlZTgwMjExX21nbXQgKm1nbXQsIHNpemVfdCBsZW4sXFxubmV0L21hYzgwMjExL21lc2hfcGxpbmsuYzoxMjIzOlxcdFxcdFxcdCBzdHJ1Y3QgaWVlZTgwMjExX3J4X3N0YXR1cyAqcnhfc3RhdHVzKVxcbm5ldC9tYWM4MDIxMS9tZXNoX3BsaW5rLmMtMTIyNC17XFxuLS1cXG5uZXQvbWFjODAyMTEvbWVzaF9zeW5jLmM9ODM9bWVzaF9zeW5jX29mZnNldF9yeF9iY25fcHJlc3Aoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsIHUxNiBzdHlwZSxcXG4tLVxcbm5ldC9tYWM4MDIxMS9tZXNoX3N5bmMuYy04NS1cXHRcXHRcXHQgICAgICBjb25zdCBzdHJ1Y3QgaWVlZTgwMjExX21lc2hjb25mX2llICptZXNoX2NmZyxcXG5uZXQvbWFjODAyMTEvbWVzaF9zeW5jLmM6ODY6XFx0XFx0XFx0ICAgICAgc3RydWN0IGllZWU4MDIxMV9yeF9zdGF0dXMgKnJ4X3N0YXR1cylcXG5uZXQvbWFjODAyMTEvbWVzaF9zeW5jLmMtODcte1xcbi0tXFxubmV0L21hYzgwMjExL21sbWUuYz01Mzg2PXN0YXRpYyBib29sIGllZWU4MDIxMV9tYXJrX3N0YV9hdXRoKHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhKVxcbi0tXFxubmV0L21hYzgwMjExL21sbWUuYy01NDEzLVxcbm5ldC9tYWM4MDIxMS9tbG1lLmM6NTQxNDpzdGF0aWMgdm9pZCBpZWVlODAyMTFfcnhfbWdtdF9hdXRoKHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLFxcbm5ldC9tYWM4MDIxMS9tbG1lLmMtNTQxNS1cXHRcXHRcXHRcXHQgICBzdHJ1Y3QgaWVlZTgwMjExX21nbXQgKm1nbXQsIHNpemVfdCBsZW4pXFxuLS1cXG5uZXQvbWFjODAyMTEvbWxtZS5jPTU1OTI9Y29uc3QgY2hhciAqaWVlZTgwMjExX2dldF9yZWFzb25fY29kZV9zdHJpbmcodTE2IHJlYXNvbl9jb2RlKVxcbi0tXFxubmV0L21hYzgwMjExL21sbWUuYy01NjQ1LVxcbm5ldC9tYWM4MDIxMS9tbG1lLmM6NTY0NjpzdGF0aWMgdm9pZCBpZWVlODAyMTFfcnhfbWdtdF9kZWF1dGgoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsXFxubmV0L21hYzgwMjExL21sbWUuYy01NjQ3LVxcdFxcdFxcdFxcdCAgICAgc3RydWN0IGllZWU4MDIxMV9tZ210ICptZ210LCBzaXplX3QgbGVuKVxcbi0tXFxubmV0L21hYzgwMjExL21sbWUuYy01NjkxLVxcbm5ldC9tYWM4MDIxMS9tbG1lLmM6NTY5MjpzdGF0aWMgdm9pZCBpZWVlODAyMTFfcnhfbWdtdF9kaXNhc3NvYyhzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSxcXG5uZXQvbWFjODAyMTEvbWxtZS5jLTU2OTMtXFx0XFx0XFx0XFx0ICAgICAgIHN0cnVjdCBpZWVlODAyMTFfbWdtdCAqbWdtdCwgc2l6ZV90IGxlbilcXG4tLVxcbm5ldC9tYWM4MDIxMS9tbG1lLmM9Njk3OT1zdGF0aWMgYm9vbCBpZWVlODAyMTFfYXNzb2Nfc3VjY2VzcyhzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSxcXG4tLVxcbm5ldC9tYWM4MDIxMS9tbG1lLmMtNzE4OS1cXG5uZXQvbWFjODAyMTEvbWxtZS5jOjcxOTA6c3RhdGljIHZvaWQgaWVlZTgwMjExX3J4X21nbXRfYXNzb2NfcmVzcChzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSxcXG5uZXQvbWFjODAyMTEvbWxtZS5jLTcxOTEtXFx0XFx0XFx0XFx0XFx0IHN0cnVjdCBpZWVlODAyMTFfbWdtdCAqbWdtdCxcXG4tLVxcbm5ldC9tYWM4MDIxMS9tbG1lLmMtNzQyNS1cXG5uZXQvbWFjODAyMTEvbWxtZS5jOjc0MjY6c3RhdGljIHZvaWQgaWVlZTgwMjExX3J4X2Jzc19pbmZvKHN0cnVjdCBpZWVlODAyMTFfbGlua19kYXRhICpsaW5rLFxcbm5ldC9tYWM4MDIxMS9tbG1lLmMtNzQyNy1cXHRcXHRcXHRcXHQgIHN0cnVjdCBpZWVlODAyMTFfbWdtdCAqbWdtdCwgc2l6ZV90IGxlbixcXG5uZXQvbWFjODAyMTEvbWxtZS5jOjc0Mjg6XFx0XFx0XFx0XFx0ICBzdHJ1Y3QgaWVlZTgwMjExX3J4X3N0YXR1cyAqcnhfc3RhdHVzKVxcbm5ldC9tYWM4MDIxMS9tbG1lLmMtNzQyOS17XFxuLS1cXG5uZXQvbWFjODAyMTEvbWxtZS5jLTc0MzctXFx0Y2hhbm5lbCA9IGllZWU4MDIxMV9nZXRfY2hhbm5lbF9raHoobG9jYWwtXFx1MDAzZWh3LndpcGh5LFxcbm5ldC9tYWM4MDIxMS9tbG1lLmM6NzQzODpcXHRcXHRcXHRcXHRcXHRpZWVlODAyMTFfcnhfc3RhdHVzX3RvX2toeihyeF9zdGF0dXMpKTtcXG5uZXQvbWFjODAyMTEvbWxtZS5jLTc0MzktXFx0aWYgKCFjaGFubmVsKVxcbi0tXFxubmV0L21hYzgwMjExL21sbWUuYy03NDQ0LVxcdFxcdGxpbmstXFx1MDAzZWNvbmYtXFx1MDAzZWJlYWNvbl9yYXRlID0gYnNzLVxcdTAwM2ViZWFjb25fcmF0ZTtcXG5uZXQvbWFjODAyMTEvbWxtZS5jOjc0NDU6XFx0XFx0aWVlZTgwMjExX3J4X2Jzc19wdXQobG9jYWwsIGJzcyk7XFxubmV0L21hYzgwMjExL21sbWUuYy03NDQ2LVxcdH1cXG4tLVxcbm5ldC9tYWM4MDIxMS9tbG1lLmMtNzQ0OS1cXG5uZXQvbWFjODAyMTEvbWxtZS5jOjc0NTA6c3RhdGljIHZvaWQgaWVlZTgwMjExX3J4X21nbXRfcHJvYmVfcmVzcChzdHJ1Y3QgaWVlZTgwMjExX2xpbmtfZGF0YSAqbGluayxcXG5uZXQvbWFjODAyMTEvbWxtZS5jLTc0NTEtXFx0XFx0XFx0XFx0XFx0IHN0cnVjdCBza19idWZmICpza2IpXFxuLS1cXG5uZXQvbWFjODAyMTEvbWxtZS5jLTc0NTUtXFx0c3RydWN0IGllZWU4MDIxMV9pZl9tYW5hZ2VkICppZm1nZDtcXG5uZXQvbWFjODAyMTEvbWxtZS5jOjc0NTY6XFx0c3RydWN0IGllZWU4MDIxMV9yeF9zdGF0dXMgKnJ4X3N0YXR1cyA9ICh2b2lkICopIHNrYi1cXHUwMDNlY2I7XFxubmV0L21hYzgwMjExL21sbWUuYy03NDU3LVxcdHN0cnVjdCBpZWVlODAyMTFfY2hhbm5lbCAqY2hhbm5lbDtcXG4tLVxcbm5ldC9tYWM4MDIxMS9tbG1lLmMtNzQ3MS1cXHRjaGFubmVsID0gaWVlZTgwMjExX2dldF9jaGFubmVsX2toeihzZGF0YS1cXHUwMDNlbG9jYWwtXFx1MDAzZWh3LndpcGh5LFxcbm5ldC9tYWM4MDIxMS9tbG1lLmM6NzQ3MjpcXHRcXHRcXHRcXHRcXHQgICAgaWVlZTgwMjExX3J4X3N0YXR1c190b19raHoocnhfc3RhdHVzKSk7XFxubmV0L21hYzgwMjExL21sbWUuYy03NDczLVxcdGlmICghY2hhbm5lbClcXG4tLVxcbm5ldC9tYWM4MDIxMS9tbG1lLmMtNzQ4NC1cXG5uZXQvbWFjODAyMTEvbWxtZS5jOjc0ODU6XFx0aWVlZTgwMjExX3J4X2Jzc19pbmZvKGxpbmssIG1nbXQsIGxlbiwgcnhfc3RhdHVzKTtcXG5uZXQvbWFjODAyMTEvbWxtZS5jLTc0ODYtXFxuLS1cXG5uZXQvbWFjODAyMTEvbWxtZS5jPTc1MTY9c3RhdGljIHZvaWQgaWVlZTgwMjExX2hhbmRsZV9iZWFjb25fc2lnKHN0cnVjdCBpZWVlODAyMTFfbGlua19kYXRhICpsaW5rLFxcbi0tXFxubmV0L21hYzgwMjExL21sbWUuYy03NTE5LVxcdFxcdFxcdFxcdFxcdHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsLFxcbm5ldC9tYWM4MDIxMS9tbG1lLmM6NzUyMDpcXHRcXHRcXHRcXHRcXHRzdHJ1Y3QgaWVlZTgwMjExX3J4X3N0YXR1cyAqcnhfc3RhdHVzKVxcbm5ldC9tYWM4MDIxMS9tbG1lLmMtNzUyMS17XFxuLS1cXG5uZXQvbWFjODAyMTEvbWxtZS5jLTc2MTQtXFxubmV0L21hYzgwMjExL21sbWUuYzo3NjE1OnN0YXRpYyBib29sIGllZWU4MDIxMV9yeF9vdXJfYmVhY29uKGNvbnN0IHU4ICp0eF9ic3NpZCxcXG5uZXQvbWFjODAyMTEvbWxtZS5jLTc2MTYtXFx0XFx0XFx0XFx0ICAgIHN0cnVjdCBjZmc4MDIxMV9ic3MgKmJzcylcXG4tLVxcbm5ldC9tYWM4MDIxMS9tbG1lLmM9ODA3OD1zdGF0aWMgYm9vbFxcbm5ldC9tYWM4MDIxMS9tbG1lLmM6ODA3OTppZWVlODAyMTFfcnhfYmVhY29uX2ZyZXFfdmFsaWQoc3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwsXFxubmV0L21hYzgwMjExL21sbWUuYy04MDgwLVxcdFxcdFxcdCAgICAgICBzdHJ1Y3QgaWVlZTgwMjExX21nbXQgKm1nbXQsXFxubmV0L21hYzgwMjExL21sbWUuYzo4MDgxOlxcdFxcdFxcdCAgICAgICBzdHJ1Y3QgaWVlZTgwMjExX3J4X3N0YXR1cyAqcnhfc3RhdHVzLFxcbm5ldC9tYWM4MDIxMS9tbG1lLmMtODA4Mi1cXHRcXHRcXHQgICAgICAgc3RydWN0IGllZWU4MDIxMV9jaGFuY3R4X2NvbmYgKmNoYW5jdHgpXFxuLS1cXG5uZXQvbWFjODAyMTEvbWxtZS5jLTgwODYtXFx0dTMyIHByaV9raHogPSBpZWVlODAyMTFfY2hhbm5lbF90b19raHooY2hhbmN0eC1cXHUwMDNlZGVmLmNoYW4pO1xcbm5ldC9tYWM4MDIxMS9tbG1lLmM6ODA4NzpcXHR1MzIgcnhfa2h6ID0gaWVlZTgwMjExX3J4X3N0YXR1c190b19raHoocnhfc3RhdHVzKTtcXG5uZXQvbWFjODAyMTEvbWxtZS5jLTgwODgtXFxuLS1cXG5uZXQvbWFjODAyMTEvbWxtZS5jLTgxMDktXFxubmV0L21hYzgwMjExL21sbWUuYzo4MTEwOnN0YXRpYyB2b2lkIGllZWU4MDIxMV9yeF9tZ210X2JlYWNvbihzdHJ1Y3QgaWVlZTgwMjExX2xpbmtfZGF0YSAqbGluayxcXG5uZXQvbWFjODAyMTEvbWxtZS5jLTgxMTEtXFx0XFx0XFx0XFx0ICAgICBzdHJ1Y3QgaWVlZTgwMjExX2hkciAqaGRyLCBzaXplX3QgbGVuLFxcbm5ldC9tYWM4MDIxMS9tbG1lLmM6ODExMjpcXHRcXHRcXHRcXHQgICAgIHN0cnVjdCBpZWVlODAyMTFfcnhfc3RhdHVzICpyeF9zdGF0dXMpXFxubmV0L21hYzgwMjExL21sbWUuYy04MTEzLXtcXG4tLVxcbm5ldC9tYWM4MDIxMS9tbG1lLmMtODE2Mi1cXG5uZXQvbWFjODAyMTEvbWxtZS5jOjgxNjM6XFx0aWYgKCFpZWVlODAyMTFfcnhfYmVhY29uX2ZyZXFfdmFsaWQobG9jYWwsIG1nbXQsIHJ4X3N0YXR1cyxcXG5uZXQvbWFjODAyMTEvbWxtZS5jLTgxNjQtXFx0XFx0XFx0XFx0XFx0ICAgIGNoYW5jdHhfY29uZikpIHtcXG4tLVxcbm5ldC9tYWM4MDIxMS9tbG1lLmMtODE3Mi1cXHQgICAgIVdBUk5fT04oaWVlZTgwMjExX3ZpZl9pc19tbGQoXFx1MDAyNnNkYXRhLVxcdTAwM2V2aWYpKSBcXHUwMDI2XFx1MDAyNlxcbm5ldC9tYWM4MDIxMS9tbG1lLmM6ODE3MzpcXHQgICAgaWVlZTgwMjExX3J4X291cl9iZWFjb24oYnNzaWQsIGlmbWdkLVxcdTAwM2Vhc3NvY19kYXRhLVxcdTAwM2VsaW5rWzBdLmJzcykpIHtcXG5uZXQvbWFjODAyMTEvbWxtZS5jLTgxNzQtXFx0XFx0cGFyc2VfcGFyYW1zLmJzcyA9IGlmbWdkLVxcdTAwM2Vhc3NvY19kYXRhLVxcdTAwM2VsaW5rWzBdLmJzcztcXG4tLVxcbm5ldC9tYWM4MDIxMS9tbG1lLmMtODE3OC1cXG5uZXQvbWFjODAyMTEvbWxtZS5jOjgxNzk6XFx0XFx0aWVlZTgwMjExX3J4X2Jzc19pbmZvKGxpbmssIG1nbXQsIGxlbiwgcnhfc3RhdHVzKTtcXG5uZXQvbWFjODAyMTEvbWxtZS5jLTgxODAtXFxuLS1cXG5uZXQvbWFjODAyMTEvbWxtZS5jLTgyMTQtXFx0aWYgKCFpZm1nZC1cXHUwMDNlYXNzb2NpYXRlZCB8fFxcbm5ldC9tYWM4MDIxMS9tbG1lLmM6ODIxNTpcXHQgICAgIWllZWU4MDIxMV9yeF9vdXJfYmVhY29uKGJzc2lkLCBic3NfY29uZi1cXHUwMDNlYnNzKSlcXG5uZXQvbWFjODAyMTEvbWxtZS5jLTgyMTYtXFx0XFx0cmV0dXJuO1xcbi0tXFxubmV0L21hYzgwMjExL21sbWUuYy04MzUwLVxcbm5ldC9tYWM4MDIxMS9tbG1lLmM6ODM1MTpcXHRpZWVlODAyMTFfcnhfYnNzX2luZm8obGluaywgbWdtdCwgbGVuLCByeF9zdGF0dXMpO1xcbm5ldC9tYWM4MDIxMS9tbG1lLmMtODM1Mi1cXG4tLVxcbm5ldC9tYWM4MDIxMS9tbG1lLmM9ODkwOD1zdGF0aWMgdm9pZCBpZWVlODAyMTFfc3RhX3J4X3F1ZXVlZF9leHQoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsXFxuLS1cXG5uZXQvbWFjODAyMTEvbWxtZS5jLTg5MTEtXFx0c3RydWN0IGllZWU4MDIxMV9saW5rX2RhdGEgKmxpbmsgPSBcXHUwMDI2c2RhdGEtXFx1MDAzZWRlZmxpbms7XFxubmV0L21hYzgwMjExL21sbWUuYzo4OTEyOlxcdHN0cnVjdCBpZWVlODAyMTFfcnhfc3RhdHVzICpyeF9zdGF0dXM7XFxubmV0L21hYzgwMjExL21sbWUuYy04OTEzLVxcdHN0cnVjdCBpZWVlODAyMTFfaGRyICpoZHI7XFxuLS1cXG5uZXQvbWFjODAyMTEvbWxtZS5jLTg5MTctXFxubmV0L21hYzgwMjExL21sbWUuYzo4OTE4OlxcdHJ4X3N0YXR1cyA9IChzdHJ1Y3QgaWVlZTgwMjExX3J4X3N0YXR1cyAqKSBza2ItXFx1MDAzZWNiO1xcbm5ldC9tYWM4MDIxMS9tbG1lLmMtODkxOS1cXHRoZHIgPSAoc3RydWN0IGllZWU4MDIxMV9oZHIgKikgc2tiLVxcdTAwM2VkYXRhO1xcbi0tXFxubmV0L21hYzgwMjExL21sbWUuYy04OTIzLVxcdGNhc2UgSUVFRTgwMjExX1NUWVBFX1MxR19CRUFDT046XFxubmV0L21hYzgwMjExL21sbWUuYzo4OTI0OlxcdFxcdGllZWU4MDIxMV9yeF9tZ210X2JlYWNvbihsaW5rLCBoZHIsIHNrYi1cXHUwMDNlbGVuLCByeF9zdGF0dXMpO1xcbm5ldC9tYWM4MDIxMS9tbG1lLmMtODkyNS1cXHRcXHRicmVhaztcXG4tLVxcbm5ldC9tYWM4MDIxMS9tbG1lLmM9MTE4MTI9dm9pZCBpZWVlODAyMTFfc3RhX3J4X3F1ZXVlZF9mcmFtZShzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSxcXG4tLVxcbm5ldC9tYWM4MDIxMS9tbG1lLmMtMTE4MTUtXFx0c3RydWN0IGllZWU4MDIxMV9saW5rX2RhdGEgKmxpbmsgPSBcXHUwMDI2c2RhdGEtXFx1MDAzZWRlZmxpbms7XFxubmV0L21hYzgwMjExL21sbWUuYzoxMTgxNjpcXHRzdHJ1Y3QgaWVlZTgwMjExX3J4X3N0YXR1cyAqcnhfc3RhdHVzO1xcbm5ldC9tYWM4MDIxMS9tbG1lLmMtMTE4MTctXFx0c3RydWN0IGllZWU4MDJfMTFfZWxlbXMgKmVsZW1zO1xcbi0tXFxubmV0L21hYzgwMjExL21sbWUuYy0xMTgzMC1cXG5uZXQvbWFjODAyMTEvbWxtZS5jOjExODMxOlxcdHJ4X3N0YXR1cyA9IChzdHJ1Y3QgaWVlZTgwMjExX3J4X3N0YXR1cyAqKSBza2ItXFx1MDAzZWNiO1xcbm5ldC9tYWM4MDIxMS9tbG1lLmMtMTE4MzItXFx0ZmMgPSBsZTE2X3RvX2NwdShtZ210LVxcdTAwM2VmcmFtZV9jb250cm9sKTtcXG4tLVxcbm5ldC9tYWM4MDIxMS9tbG1lLmMtMTE4NDItXFx0Y2FzZSBJRUVFODAyMTFfU1RZUEVfQkVBQ09OOlxcbm5ldC9tYWM4MDIxMS9tbG1lLmM6MTE4NDM6XFx0XFx0aWVlZTgwMjExX3J4X21nbXRfYmVhY29uKGxpbmssICh2b2lkICopbWdtdCxcXG5uZXQvbWFjODAyMTEvbWxtZS5jLTExODQ0LVxcdFxcdFxcdFxcdFxcdCBza2ItXFx1MDAzZWxlbiwgcnhfc3RhdHVzKTtcXG4tLVxcbm5ldC9tYWM4MDIxMS9tbG1lLmMtMTE4NDYtXFx0Y2FzZSBJRUVFODAyMTFfU1RZUEVfUFJPQkVfUkVTUDpcXG5uZXQvbWFjODAyMTEvbWxtZS5jOjExODQ3OlxcdFxcdGllZWU4MDIxMV9yeF9tZ210X3Byb2JlX3Jlc3AobGluaywgc2tiKTtcXG5uZXQvbWFjODAyMTEvbWxtZS5jLTExODQ4LVxcdFxcdGJyZWFrO1xcbm5ldC9tYWM4MDIxMS9tbG1lLmMtMTE4NDktXFx0Y2FzZSBJRUVFODAyMTFfU1RZUEVfQVVUSDpcXG5uZXQvbWFjODAyMTEvbWxtZS5jOjExODUwOlxcdFxcdGllZWU4MDIxMV9yeF9tZ210X2F1dGgoc2RhdGEsIG1nbXQsIHNrYi1cXHUwMDNlbGVuKTtcXG5uZXQvbWFjODAyMTEvbWxtZS5jLTExODUxLVxcdFxcdGJyZWFrO1xcbm5ldC9tYWM4MDIxMS9tbG1lLmMtMTE4NTItXFx0Y2FzZSBJRUVFODAyMTFfU1RZUEVfREVBVVRIOlxcbm5ldC9tYWM4MDIxMS9tbG1lLmM6MTE4NTM6XFx0XFx0aWVlZTgwMjExX3J4X21nbXRfZGVhdXRoKHNkYXRhLCBtZ210LCBza2ItXFx1MDAzZWxlbik7XFxubmV0L21hYzgwMjExL21sbWUuYy0xMTg1NC1cXHRcXHRicmVhaztcXG5uZXQvbWFjODAyMTEvbWxtZS5jLTExODU1LVxcdGNhc2UgSUVFRTgwMjExX1NUWVBFX0RJU0FTU09DOlxcbm5ldC9tYWM4MDIxMS9tbG1lLmM6MTE4NTY6XFx0XFx0aWVlZTgwMjExX3J4X21nbXRfZGlzYXNzb2Moc2RhdGEsIG1nbXQsIHNrYi1cXHUwMDNlbGVuKTtcXG5uZXQvbWFjODAyMTEvbWxtZS5jLTExODU3LVxcdFxcdGJyZWFrO1xcbi0tXFxubmV0L21hYzgwMjExL21sbWUuYy0xMTg1OS1cXHRjYXNlIElFRUU4MDIxMV9TVFlQRV9SRUFTU09DX1JFU1A6XFxubmV0L21hYzgwMjExL21sbWUuYzoxMTg2MDpcXHRcXHRpZWVlODAyMTFfcnhfbWdtdF9hc3NvY19yZXNwKHNkYXRhLCBtZ210LCBza2ItXFx1MDAzZWxlbik7XFxubmV0L21hYzgwMjExL21sbWUuYy0xMTg2MS1cXHRcXHRicmVhaztcXG4tLVxcbm5ldC9tYWM4MDIxMS9yeC5jPTQzPXN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqaWVlZTgwMjExX2NsZWFuX3NrYihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbi0tXFxubmV0L21hYzgwMjExL3J4LmMtNDYte1xcbm5ldC9tYWM4MDIxMS9yeC5jOjQ3OlxcdHN0cnVjdCBpZWVlODAyMTFfcnhfc3RhdHVzICpzdGF0dXMgPSBJRUVFODAyMTFfU0tCX1JYQ0Ioc2tiKTtcXG5uZXQvbWFjODAyMTEvcnguYy00OC1cXHRzdHJ1Y3QgaWVlZTgwMjExX2hkciAqaGRyO1xcbi0tXFxubmV0L21hYzgwMjExL3J4LmM9OTM9c3RhdGljIGlubGluZSBib29sIHNob3VsZF9kcm9wX2ZyYW1lKHN0cnVjdCBza19idWZmICpza2IsIGludCBwcmVzZW50X2Zjc19sZW4sXFxuLS1cXG5uZXQvbWFjODAyMTEvcnguYy05NS17XFxubmV0L21hYzgwMjExL3J4LmM6OTY6XFx0c3RydWN0IGllZWU4MDIxMV9yeF9zdGF0dXMgKnN0YXR1cyA9IElFRUU4MDIxMV9TS0JfUlhDQihza2IpO1xcbm5ldC9tYWM4MDIxMS9yeC5jLTk3LVxcdHN0cnVjdCBpZWVlODAyMTFfaGRyICpoZHI7XFxuLS1cXG5uZXQvbWFjODAyMTEvcnguYz0xMTg9c3RhdGljIGludFxcbm5ldC9tYWM4MDIxMS9yeC5jOjExOTppZWVlODAyMTFfcnhfcmFkaW90YXBfaGRybGVuKHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsLFxcbm5ldC9tYWM4MDIxMS9yeC5jOjEyMDpcXHRcXHRcXHQgICAgIHN0cnVjdCBpZWVlODAyMTFfcnhfc3RhdHVzICpzdGF0dXMsXFxubmV0L21hYzgwMjExL3J4LmMtMTIxLVxcdFxcdFxcdCAgICAgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG4tLVxcbm5ldC9tYWM4MDIxMS9yeC5jPTIyND1zdGF0aWMgdm9pZCBfX2llZWU4MDIxMV9xdWV1ZV9za2JfdG9faWZhY2Uoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsXFxuLS1cXG5uZXQvbWFjODAyMTEvcnguYy0yMjgte1xcbm5ldC9tYWM4MDIxMS9yeC5jOjIyOTpcXHRzdHJ1Y3QgaWVlZTgwMjExX3J4X3N0YXR1cyAqc3RhdHVzID0gSUVFRTgwMjExX1NLQl9SWENCKHNrYik7XFxubmV0L21hYzgwMjExL3J4LmMtMjMwLVxcbi0tXFxubmV0L21hYzgwMjExL3J4LmM9MzEzPWllZWU4MDIxMV9hZGRfcnhfcmFkaW90YXBfaGVhZGVyKHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsLFxcbi0tXFxubmV0L21hYzgwMjExL3J4LmMtMzE3LXtcXG5uZXQvbWFjODAyMTEvcnguYzozMTg6XFx0c3RydWN0IGllZWU4MDIxMV9yeF9zdGF0dXMgKnN0YXR1cyA9IElFRUU4MDIxMV9TS0JfUlhDQihza2IpO1xcbm5ldC9tYWM4MDIxMS9yeC5jLTMxOS1cXHRzdHJ1Y3QgaWVlZTgwMjExX3JhZGlvdGFwX2hlYWRlciAqcnRoZHI7XFxuLS1cXG5uZXQvbWFjODAyMTEvcnguYz03NDI9aWVlZTgwMjExX21ha2VfbW9uaXRvcl9za2Ioc3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwsXFxuLS1cXG5uZXQvbWFjODAyMTEvcnguYy03NDYte1xcbm5ldC9tYWM4MDIxMS9yeC5jOjc0NzpcXHRzdHJ1Y3QgaWVlZTgwMjExX3J4X3N0YXR1cyAqc3RhdHVzID0gSUVFRTgwMjExX1NLQl9SWENCKCpvcmlnc2tiKTtcXG5uZXQvbWFjODAyMTEvcnguYy03NDgtXFx0aW50IHJ0X2hkcmxlbiwgbmVlZGVkX2hlYWRyb29tO1xcbi0tXFxubmV0L21hYzgwMjExL3J4LmMtNzUxLVxcdC8qIHJvb20gZm9yIHRoZSByYWRpb3RhcCBoZWFkZXIgYmFzZWQgb24gZHJpdmVyIGZlYXR1cmVzICovXFxubmV0L21hYzgwMjExL3J4LmM6NzUyOlxcdHJ0X2hkcmxlbiA9IGllZWU4MDIxMV9yeF9yYWRpb3RhcF9oZHJsZW4obG9jYWwsIHN0YXR1cywgKm9yaWdza2IpO1xcbm5ldC9tYWM4MDIxMS9yeC5jLTc1My1cXHRuZWVkZWRfaGVhZHJvb20gPSBydF9oZHJsZW4gLSBydGFwX3NwYWNlO1xcbi0tXFxubmV0L21hYzgwMjExL3J4LmM9Nzk2PWllZWU4MDIxMV92YWxpZGF0ZV9tb25pdG9yX3JhZGlvKHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLFxcbm5ldC9tYWM4MDIxMS9yeC5jLTc5Ny1cXHRcXHRcXHRcXHQgc3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwsXFxubmV0L21hYzgwMjExL3J4LmM6Nzk4OlxcdFxcdFxcdFxcdCBzdHJ1Y3QgaWVlZTgwMjExX3J4X3N0YXR1cyAqc3RhdHVzKVxcbm5ldC9tYWM4MDIxMS9yeC5jLTc5OS17XFxuLS1cXG5uZXQvbWFjODAyMTEvcnguYz04NDU9c3RhdGljIHN0cnVjdCBza19idWZmICpcXG5uZXQvbWFjODAyMTEvcnguYzo4NDY6aWVlZTgwMjExX3J4X21vbml0b3Ioc3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwsIHN0cnVjdCBza19idWZmICpvcmlnc2tiLFxcbm5ldC9tYWM4MDIxMS9yeC5jLTg0Ny1cXHRcXHQgICAgIHN0cnVjdCBpZWVlODAyMTFfcmF0ZSAqcmF0ZSlcXG5uZXQvbWFjODAyMTEvcnguYy04NDgte1xcbm5ldC9tYWM4MDIxMS9yeC5jOjg0OTpcXHRzdHJ1Y3QgaWVlZTgwMjExX3J4X3N0YXR1cyAqc3RhdHVzID0gSUVFRTgwMjExX1NLQl9SWENCKG9yaWdza2IpO1xcbm5ldC9tYWM4MDIxMS9yeC5jLTg1MC1cXHRzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSwgKnByZXZfc2RhdGEgPSBOVUxMO1xcbi0tXFxubmV0L21hYzgwMjExL3J4LmMtOTgzLVxcbm5ldC9tYWM4MDIxMS9yeC5jOjk4NDpzdGF0aWMgdm9pZCBpZWVlODAyMTFfcGFyc2VfcW9zKHN0cnVjdCBpZWVlODAyMTFfcnhfZGF0YSAqcngpXFxubmV0L21hYzgwMjExL3J4LmMtOTg1LXtcXG5uZXQvbWFjODAyMTEvcnguYy05ODYtXFx0c3RydWN0IGllZWU4MDIxMV9oZHIgKmhkciA9IChzdHJ1Y3QgaWVlZTgwMjExX2hkciAqKXJ4LVxcdTAwM2Vza2ItXFx1MDAzZWRhdGE7XFxubmV0L21hYzgwMjExL3J4LmM6OTg3OlxcdHN0cnVjdCBpZWVlODAyMTFfcnhfc3RhdHVzICpzdGF0dXMgPSBJRUVFODAyMTFfU0tCX1JYQ0IocngtXFx1MDAzZXNrYik7XFxubmV0L21hYzgwMjExL3J4LmMtOTg4LVxcdGludCB0aWQsIHNlcW5vX2lkeCwgc2VjdXJpdHlfaWR4O1xcbi0tXFxubmV0L21hYzgwMjExL3J4LmMtMTA1MC0gKi9cXG5uZXQvbWFjODAyMTEvcnguYzoxMDUxOnN0YXRpYyB2b2lkIGllZWU4MDIxMV92ZXJpZnlfYWxpZ25tZW50KHN0cnVjdCBpZWVlODAyMTFfcnhfZGF0YSAqcngpXFxubmV0L21hYzgwMjExL3J4LmMtMTA1Mi17XFxuLS1cXG5uZXQvbWFjODAyMTEvcnguYz0xMTEzPXN0YXRpYyBpbnQgaWVlZTgwMjExX2dldF9rZXlpZChzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbi0tXFxubmV0L21hYzgwMjExL3J4LmMtMTEzMC1cXG5uZXQvbWFjODAyMTEvcnguYzoxMTMxOnN0YXRpYyBpZWVlODAyMTFfcnhfcmVzdWx0IGllZWU4MDIxMV9yeF9tZXNoX2NoZWNrKHN0cnVjdCBpZWVlODAyMTFfcnhfZGF0YSAqcngpXFxubmV0L21hYzgwMjExL3J4LmMtMTEzMi17XFxuLS1cXG5uZXQvbWFjODAyMTEvcnguYy0xMTg3LVxcbm5ldC9tYWM4MDIxMS9yeC5jOjExODg6c3RhdGljIGlubGluZSBib29sIGllZWU4MDIxMV9yeF9yZW9yZGVyX3JlYWR5KHN0cnVjdCB0aWRfYW1wZHVfcnggKnRpZF9hZ2dfcngsXFxubmV0L21hYzgwMjExL3J4LmMtMTE4OS1cXHRcXHRcXHRcXHRcXHQgICAgICBpbnQgaW5kZXgpXFxuLS1cXG5uZXQvbWFjODAyMTEvcnguYy0xMTkyLVxcdHN0cnVjdCBza19idWZmICp0YWlsID0gc2tiX3BlZWtfdGFpbChmcmFtZXMpO1xcbm5ldC9tYWM4MDIxMS9yeC5jOjExOTM6XFx0c3RydWN0IGllZWU4MDIxMV9yeF9zdGF0dXMgKnN0YXR1cztcXG5uZXQvbWFjODAyMTEvcnguYy0xMTk0LVxcbi0tXFxubmV0L21hYzgwMjExL3J4LmM9MTIwOT1zdGF0aWMgdm9pZCBpZWVlODAyMTFfcmVsZWFzZV9yZW9yZGVyX2ZyYW1lKHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLFxcbi0tXFxubmV0L21hYzgwMjExL3J4LmMtMTIxNS1cXHRzdHJ1Y3Qgc2tfYnVmZiAqc2tiO1xcblxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yOVQwNjowMjo1Ny4xMTExODkzOTJaIiwiU2VxIjoyMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MzAzMTQ1OTAwMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipFeHBsb3JpbmcgdGhlIG5ldC9tYWM4MDIxMS9yeC5jIFJYIEVudHJ5cG9pbnRzKipcblxuT2theSwgc28gSSBuZWVkIHRvIGdldCBhIGhhbmRsZSBvbiB0aGUga2V5IGVudHJ5IHBvaW50cyBmb3IgcmVjZWl2ZSBwcm9jZXNzaW5nIHdpdGhpbiB0aGUgYG5ldC9tYWM4MDIxMWAgc3Vic3lzdGVtLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcyB0byB6ZXJvIGluIG9uIGBuZXQvbWFjODAyMTEvcnguY2AuIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoaWNoIGZ1bmN0aW9ucyBhcmUgcmVzcG9uc2libGUgZm9yIGhhbmRsaW5nIGluY29taW5nIGZyYW1lcy5cblxuTXkgcGxhbiBpcyB0byBsb29rIGZvciBgRVhQT1JUX1NZTUJPTGAgdXNhZ2VzIHdpdGhpbiB0aGF0IGZpbGUsIGFzIHRoaXMgd2lsbCBoZWxwIG1lIGlkZW50aWZ5IHRoZSBmdW5jdGlvbnMgc3BlY2lmaWNhbGx5IGRlc2lnbmVkIGZvciBleHRlcm5hbCBhY2Nlc3MsIGxpa2VseSB0aGUgZW50cnkgcG9pbnRzIEknbSBsb29raW5nIGZvci4gQWx0ZXJuYXRpdmVseSwgSSBzaG91bGQgc2NhbiBmb3IgZnVuY3Rpb25zIHdpdGhpbiB0aGlzIGZpbGUgcmVsYXRlZCB0byB0aGUgcHJvY2VzcyBvZiByZWNlaXZlZCBmcmFtZXMuIFRoYXQgc2hvdWxkIGFsbG93IG1lIHRvIGlkZW50aWZ5IHRoZSBhcHByb3ByaWF0ZSBmbG93LlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNjAwNiwiT3V0cHV0VG9rZW5zIjozNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjU3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI5VDA2OjAzOjAwLjE0MjY1MTMxNFoiLCJTZXEiOjIyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDc4NzY3OTgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiRVhQT1JUX1NZTUJPTFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvbWFjODAyMTEvcnguY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvbWFjODAyMTEvcnguYz0xNzQ3PWludCBpZWVlODAyMTFfc3RhX3BzX3RyYW5zaXRpb24oc3RydWN0IGllZWU4MDIxMV9zdGEgKnB1YnN0YSwgYm9vbCBzdGFydClcXG4tLVxcbm5ldC9tYWM4MDIxMS9yeC5jLTE3NjUtfVxcbm5ldC9tYWM4MDIxMS9yeC5jOjE3NjY6RVhQT1JUX1NZTUJPTChpZWVlODAyMTFfc3RhX3BzX3RyYW5zaXRpb24pO1xcbm5ldC9tYWM4MDIxMS9yeC5jLTE3NjctXFxubmV0L21hYzgwMjExL3J4LmM9MTc2OD12b2lkIGllZWU4MDIxMV9zdGFfcHNwb2xsKHN0cnVjdCBpZWVlODAyMTFfc3RhICpwdWJzdGEpXFxuLS1cXG5uZXQvbWFjODAyMTEvcnguYy0xNzc5LX1cXG5uZXQvbWFjODAyMTEvcnguYzoxNzgwOkVYUE9SVF9TWU1CT0woaWVlZTgwMjExX3N0YV9wc3BvbGwpO1xcbm5ldC9tYWM4MDIxMS9yeC5jLTE3ODEtXFxubmV0L21hYzgwMjExL3J4LmM9MTc4Mj12b2lkIGllZWU4MDIxMV9zdGFfdWFwc2RfdHJpZ2dlcihzdHJ1Y3QgaWVlZTgwMjExX3N0YSAqcHVic3RhLCB1OCB0aWQpXFxuLS1cXG5uZXQvbWFjODAyMTEvcnguYy0xODA3LX1cXG5uZXQvbWFjODAyMTEvcnguYzoxODA4OkVYUE9SVF9TWU1CT0woaWVlZTgwMjExX3N0YV91YXBzZF90cmlnZ2VyKTtcXG5uZXQvbWFjODAyMTEvcnguYy0xODA5LVxcbi0tXFxubmV0L21hYzgwMjExL3J4LmM9MjU2Mj1pZWVlODAyMTFfZHJvcF91bmVuY3J5cHRlZF9tZ210KHN0cnVjdCBpZWVlODAyMTFfcnhfZGF0YSAqcngpXFxuLS1cXG5uZXQvbWFjODAyMTEvcnguYy0yNjQ3LX1cXG5uZXQvbWFjODAyMTEvcnguYzoyNjQ4OkVYUE9SVF9TWU1CT0xfSUZfTUFDODAyMTFfS1VOSVQoaWVlZTgwMjExX2Ryb3BfdW5lbmNyeXB0ZWRfbWdtdCk7XFxubmV0L21hYzgwMjExL3J4LmMtMjY0OS1cXG4tLVxcbm5ldC9tYWM4MDIxMS9yeC5jPTQ0MTk9dm9pZCBpZWVlODAyMTFfbWFya19yeF9iYV9maWx0ZXJlZF9mcmFtZXMoc3RydWN0IGllZWU4MDIxMV9zdGEgKnB1YnN0YSwgdTggdGlkLFxcbi0tXFxubmV0L21hYzgwMjExL3J4LmMtNDUwMC19XFxubmV0L21hYzgwMjExL3J4LmM6NDUwMTpFWFBPUlRfU1lNQk9MKGllZWU4MDIxMV9tYXJrX3J4X2JhX2ZpbHRlcmVkX2ZyYW1lcyk7XFxubmV0L21hYzgwMjExL3J4LmMtNDUwMi1cXG4tLVxcbm5ldC9tYWM4MDIxMS9yeC5jPTU1NTk9dm9pZCBpZWVlODAyMTFfcnhfbGlzdChzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodywgc3RydWN0IGllZWU4MDIxMV9zdGEgKnB1YnN0YSxcXG4tLVxcbm5ldC9tYWM4MDIxMS9yeC5jLTU3MjctfVxcbm5ldC9tYWM4MDIxMS9yeC5jOjU3Mjg6RVhQT1JUX1NZTUJPTChpZWVlODAyMTFfcnhfbGlzdCk7XFxubmV0L21hYzgwMjExL3J4LmMtNTcyOS1cXG5uZXQvbWFjODAyMTEvcnguYz01NzMwPXZvaWQgaWVlZTgwMjExX3J4X25hcGkoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsIHN0cnVjdCBpZWVlODAyMTFfc3RhICpwdWJzdGEsXFxuLS1cXG5uZXQvbWFjODAyMTEvcnguYy01NzU1LX1cXG5uZXQvbWFjODAyMTEvcnguYzo1NzU2OkVYUE9SVF9TWU1CT0woaWVlZTgwMjExX3J4X25hcGkpO1xcbm5ldC9tYWM4MDIxMS9yeC5jLTU3NTctXFxuLS1cXG5uZXQvbWFjODAyMTEvcnguYz01NzYwPXZvaWQgaWVlZTgwMjExX3J4X2lycXNhZmUoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsIHN0cnVjdCBza19idWZmICpza2IpXFxuLS1cXG5uZXQvbWFjODAyMTEvcnguYy01NzY5LX1cXG5uZXQvbWFjODAyMTEvcnguYzo1NzcwOkVYUE9SVF9TWU1CT0woaWVlZTgwMjExX3J4X2lycXNhZmUpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yOVQwNjowMzowMC4xOTA1MzQzMTJaIiwiU2VxIjoyMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MTIyMTIzNTYzOTgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRGVmcmFnbWVudGF0aW9uIERlZXAgRGl2ZSoqXG5cbk9rYXksIHRpbWUgdG8gZ2V0IG15IGhhbmRzIGRpcnR5LiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgaW5zIGFuZCBvdXRzIG9mIGhvdyB0aGlzIGRlZnJhZ21lbnRhdGlvbiBwcm9jZXNzIHdvcmtzIHdpdGhpbiB0aGUgODAyLjExIHN0YWNrLiBNeSBmaXJzdCBtb3ZlIHdpbGwgYmUgdG8gemVybyBpbiBvbiBgaWVlZTgwMjExX3J4X2hfZGVmcmFnbWVudGAuIEknbGwgdXNlIHRoYXQgYXMgbXkgcHJpbWFyeSBzZWFyY2ggdGVybS5cblxuSSdsbCBzdGFydCBieSBjaGVja2luZyB0aGUgYG5ldC9tYWM4MDIxMS9yeC5jYCBmaWxlLiBJdCdzIHRoZSBsb2dpY2FsIHBsYWNlIHRvIGJlZ2luIGxvb2tpbmcgZm9yIHRoZSBpbXBsZW1lbnRhdGlvbiBvciBhbnkgY2FsbCBzaXRlcyByZWxhdGVkIHRvIHRoYXQgZnVuY3Rpb24uIEZyb20gdGhlcmUsIEknbGwgdHJhY2UgaXRzIGV4ZWN1dGlvbiBmbG93IGFuZCBwaW5wb2ludCBpdHMgcm9sZSBpbiB0aGUgcmVjZWl2ZSBwYXRoLiBIb3BlZnVsbHksIHRoaXMgd2lsbCBwcm92aWRlIHRoZSBpbmZvcm1hdGlvbiBJIHJlcXVpcmUgdG8gcHJvcGVybHkgYW5hbHl6ZSB0aGUgZnVuY3Rpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI3MzE4LCJPdXRwdXRUb2tlbnMiOjQyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjlUMDY6MDM6MTIuNDAyODkyNjJaIiwiU2VxIjoyNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI0ODU2ODc3MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJpZWVlODAyMTFfcnhfaF9kZWZyYWdtZW50XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9tYWM4MDIxMVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvbWFjODAyMTEvcnguYz0yMzcyPXN0YXRpYyBpZWVlODAyMTFfcnhfcmVzdWx0IGRlYnVnX25vaW5saW5lXFxubmV0L21hYzgwMjExL3J4LmM6MjM3MzppZWVlODAyMTFfcnhfaF9kZWZyYWdtZW50KHN0cnVjdCBpZWVlODAyMTFfcnhfZGF0YSAqcngpXFxubmV0L21hYzgwMjExL3J4LmMtMjM3NC17XFxuLS1cXG5uZXQvbWFjODAyMTEvcnguYz00MjI5PXN0YXRpYyB2b2lkIGllZWU4MDIxMV9yeF9oYW5kbGVycyhzdHJ1Y3QgaWVlZTgwMjExX3J4X2RhdGEgKnJ4LFxcbi0tXFxubmV0L21hYzgwMjExL3J4LmMtNDI2Ni1cXHRcXHRDQUxMX1JYSChpZWVlODAyMTFfcnhfaF9kZWNyeXB0KTtcXG5uZXQvbWFjODAyMTEvcnguYzo0MjY3OlxcdFxcdENBTExfUlhIKGllZWU4MDIxMV9yeF9oX2RlZnJhZ21lbnQpO1xcbm5ldC9tYWM4MDIxMS9yeC5jLTQyNjgtXFx0XFx0Q0FMTF9SWEgoaWVlZTgwMjExX3J4X2hfbWljaGFlbF9taWNfdmVyaWZ5KTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjlUMDY6MDM6MTIuNjUxNDY4N1oiLCJTZXEiOjI1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoxNDM3NTI5MDA4NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIGFuZCBkZWxpdmVyZWQgYXMgYSBmaXJzdC1wZXJzb24gc3VtbWFyeTpcblxuKipEaWdnaW5nIGludG8gdGhlIDgwMi4xMSBSeCBIYW5kbGVycyoqXG5cbkFscmlnaHQsIHNvIHRoZSBmaXJzdCB0aGluZyBJJ20gZG9pbmcgaXMgdHJ5aW5nIHRvIGdldCBhIGNsZWFyIHBpY3R1cmUgb2Ygd2hhdCBmdW5jdGlvbnMgYXJlIGNhbGxlZCBieSBgaWVlZTgwMjExX3J4X2hhbmRsZXJzYC4gVGhpcyBpcyBteSBzdGFydGluZyBwb2ludCB3aGVuIHRyeWluZyB0byB1bmRlcnN0YW5kIHRoZSBwYWNrZXQgcmVjZXB0aW9uIHBpcGVsaW5lIGluIGEgZ2l2ZW4gODAyLjExIHN0YWNrLiBJJ20gbGlrZWx5IHRyeWluZyB0byB1bmRlcnN0YW5kIGEgc3BlY2lmaWMgaXNzdWUsIG9wdGltaXplIHBlcmZvcm1hbmNlLCBvciBwZXJoYXBzIGRlYnVnIHNvbWUgZXJyYXRpYyBiZWhhdmlvci4gS25vd2luZyB0aGUgY29udHJvbCBmbG93IHRocm91Z2ggdGhlc2UgaGFuZGxlcnMgaXMgYWJzb2x1dGVseSBjcml0aWNhbC4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hpY2ggZnVuY3Rpb25zIGFyZSByZXNwb25zaWJsZSBmb3IgaW5pdGlhbCBwcm9jZXNzaW5nLCBkZW11bHRpcGxleGluZywgZnJhbWUgY2xhc3NpZmljYXRpb24sIHNlY3VyaXR5IGNoZWNrcywgYW5kIHBhc3NpbmcgdGhlIGRhdGEgdXAgdGhlIHN0YWNrLlxuXG5JJ20gcHJvYmFibHkgdGhpbmtpbmcgYWJvdXQgYSBzcGVjaWZpYyA4MDIuMTEgZHJpdmVyIG9yIGltcGxlbWVudGF0aW9uIHRvby4gQW0gSSBsb29raW5nIGF0IHNvbWV0aGluZyBsaWtlIG1hYzgwMjExLCBhIHByb3ByaWV0YXJ5IGRyaXZlciwgb3Igc29tZSBjdXN0b20gcmVzZWFyY2ggY29kZT8gS25vd2luZyB0aGUgY29udGV4dCBoZWxwcyBtZSBuYXJyb3cgZG93biB3aGljaCBjYWxscyB3aXRoaW4gYGllZWU4MDIxMV9yeF9oYW5kbGVyc2AgYXJlIG1vc3QgaW1wb3J0YW50IHRvIGV4YW1pbmUgY2xvc2VseS4gQXJlIHRoZXJlIGFueSBwYXJ0aWN1bGFyIG1vZHVsZXMgb3IgZnVuY3Rpb25zIEkgZXhwZWN0IHRvIGJlIGludm9sdmVkIGJhc2VkIG9uIG15IHByaW9yIGtub3dsZWRnZT8gQXJlIHRoZXJlIGFueSBvYnZpb3VzIGNhbmRpZGF0ZXMgZm9yIHBlcmZvcm1hbmNlIGJvdHRsZW5lY2tzP1xuXG5JbiBzaG9ydCwgSSdtIG1hcHBpbmcgb3V0IHRoZSBjcml0aWNhbCBwYXRocyB3aXRoaW4gdGhlIFJYIHByb2Nlc3NpbmcgdG8gZGV2ZWxvcCBhIG1lbnRhbCBtb2RlbCBvZiBob3cgdGhlIHN5c3RlbSB3b3Jrcy5cblxuXG4iLCJJbnB1dFRva2VucyI6Mjc4NjksIk91dHB1dFRva2VucyI6MzksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxOSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yOVQwNjowMzoyNy4wMjY3NjEyODdaIiwiU2VxIjoyNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjUyMjU2NTc4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImllZWU4MDIxMV9yeF9oYW5kbGVyc1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvbWFjODAyMTFcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L21hYzgwMjExL3J4LmM9NDE1Nj1pZWVlODAyMTFfcnhfaF9tZ210KHN0cnVjdCBpZWVlODAyMTFfcnhfZGF0YSAqcngpXFxuLS1cXG5uZXQvbWFjODAyMTEvcnguYy00MjExLVxcbm5ldC9tYWM4MDIxMS9yeC5jOjQyMTI6c3RhdGljIHZvaWQgaWVlZTgwMjExX3J4X2hhbmRsZXJzX3Jlc3VsdChzdHJ1Y3QgaWVlZTgwMjExX3J4X2RhdGEgKnJ4LFxcbm5ldC9tYWM4MDIxMS9yeC5jLTQyMTMtXFx0XFx0XFx0XFx0XFx0IGllZWU4MDIxMV9yeF9yZXN1bHQgcmVzKVxcbi0tXFxubmV0L21hYzgwMjExL3J4LmMtNDIyOC1cXG5uZXQvbWFjODAyMTEvcnguYzo0MjI5OnN0YXRpYyB2b2lkIGllZWU4MDIxMV9yeF9oYW5kbGVycyhzdHJ1Y3QgaWVlZTgwMjExX3J4X2RhdGEgKnJ4LFxcbm5ldC9tYWM4MDIxMS9yeC5jLTQyMzAtXFx0XFx0XFx0XFx0ICBzdHJ1Y3Qgc2tfYnVmZl9oZWFkICpmcmFtZXMpXFxuLS1cXG5uZXQvbWFjODAyMTEvcnguYy00Mjg2LSByeGhfbmV4dDpcXG5uZXQvbWFjODAyMTEvcnguYzo0Mjg3OlxcdFxcdGllZWU4MDIxMV9yeF9oYW5kbGVyc19yZXN1bHQocngsIHJlcyk7XFxubmV0L21hYzgwMjExL3J4LmMtNDI4OC1cXG4tLVxcbm5ldC9tYWM4MDIxMS9yeC5jPTQyOTU9c3RhdGljIHZvaWQgaWVlZTgwMjExX2ludm9rZV9yeF9oYW5kbGVycyhzdHJ1Y3QgaWVlZTgwMjExX3J4X2RhdGEgKnJ4KVxcbi0tXFxubmV0L21hYzgwMjExL3J4LmMtNDMxMy1cXG5uZXQvbWFjODAyMTEvcnguYzo0MzE0OlxcdGllZWU4MDIxMV9yeF9oYW5kbGVycyhyeCwgXFx1MDAyNnJlb3JkZXJfcmVsZWFzZSk7XFxubmV0L21hYzgwMjExL3J4LmMtNDMxNS1cXHRyZXR1cm47XFxuLS1cXG5uZXQvbWFjODAyMTEvcnguYy00MzE3LSByeGhfbmV4dDpcXG5uZXQvbWFjODAyMTEvcnguYzo0MzE4OlxcdGllZWU4MDIxMV9yeF9oYW5kbGVyc19yZXN1bHQocngsIHJlcyk7XFxubmV0L21hYzgwMjExL3J4LmMtNDMxOS1cXG4tLVxcbm5ldC9tYWM4MDIxMS9yeC5jPTQzNzk9dm9pZCBpZWVlODAyMTFfcmVsZWFzZV9yZW9yZGVyX3RpbWVvdXQoc3RydWN0IHN0YV9pbmZvICpzdGEsIGludCB0aWQpXFxuLS1cXG5uZXQvbWFjODAyMTEvcnguYy00NDE1LVxcbm5ldC9tYWM4MDIxMS9yeC5jOjQ0MTY6XFx0aWVlZTgwMjExX3J4X2hhbmRsZXJzKFxcdTAwMjZyeCwgXFx1MDAyNmZyYW1lcyk7XFxubmV0L21hYzgwMjExL3J4LmMtNDQxNy19XFxuLS1cXG5uZXQvbWFjODAyMTEvcnguYz00NDE5PXZvaWQgaWVlZTgwMjExX21hcmtfcnhfYmFfZmlsdGVyZWRfZnJhbWVzKHN0cnVjdCBpZWVlODAyMTFfc3RhICpwdWJzdGEsIHU4IHRpZCxcXG4tLVxcbm5ldC9tYWM4MDIxMS9yeC5jLTQ0OTUtXFxubmV0L21hYzgwMjExL3J4LmM6NDQ5NjpcXHRpZWVlODAyMTFfcnhfaGFuZGxlcnMoXFx1MDAyNnJ4LCBcXHUwMDI2ZnJhbWVzKTtcXG5uZXQvbWFjODAyMTEvcnguYy00NDk3LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yOVQwNjowMzoyNy4wNzkwMjQyODVaIiwiU2VxIjoyNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NTA3OTY1NTMwOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIGEgc3VtbWFyeSBvZiBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIHJlcXVlc3RlZDpcblxuKipEZWNvbnN0cnVjdGluZyB0aGUgSUVFRSA4MDIuMTEgUlggSGFuZGxlciBJbnZvY2F0aW9uKipcblxuT2theSwgc28gSSdtIGRpdmluZyBpbnRvIHRoZSBgaWVlZTgwMjExX2ludm9rZV9yeF9oYW5kbGVyc2AgZnVuY3Rpb24uIE15IGluaXRpYWwgcXVlc3Rpb24gaXMgc3RyYWlnaHRmb3J3YXJkOiAqd2hvKiBpcyBjYWxsaW5nIHRoaXMgY3JpdGljYWwgcGllY2Ugb2YgdGhlIDgwMi4xMSByZWNlaXZlIHBhdGg/IEl0J3MgZXNzZW50aWFsIHRvIHVuZGVyc3RhbmQgdGhlIGNvbnRleHQgaW4gd2hpY2ggdGhpcyBmdW5jdGlvbiBvcGVyYXRlcy4gSSBuZWVkIHRvIHRyYWNlIHRoZSBjYWxsIHBhdGhzIHRvIGlkZW50aWZ5IHRoZSBkaWZmZXJlbnQgZW50cnkgcG9pbnRzIGFuZCB0aGUgY29uZGl0aW9ucyB1bmRlciB3aGljaCB0aGUgaGFuZGxlcnMgYXJlIGludm9rZWQuIEFyZSB3ZSB0YWxraW5nIGFib3V0IGEgc3RhbmRhcmQgZGF0YSBmcmFtZSwgYSBtYW5hZ2VtZW50IGZyYW1lLCBvciBjb250cm9sIGZyYW1lPyBBcmUgdGhlcmUgc3BlY2lmaWMgZHJpdmVyLXJlbGF0ZWQgYXNwZWN0cyB0byBjb25zaWRlciBpbiB0aGlzIGNhbGwgcGF0aD9cblxuSSB3YW50IHRvIGtub3cgd2hlcmUgaW4gdGhlIGRyaXZlcidzIHJlY2VpdmUgcHJvY2Vzc2luZyBpdCBmaXRzIGFuZCB0aGUgc2VxdWVuY2Ugb2YgZnVuY3Rpb24gY2FsbHMgYmVmb3JlIGFuZCBhZnRlciB0aGUgaW52b2NhdGlvbi4gS25vd2luZyB0aGlzIHdpbGwgZ2l2ZSBtZSBpbnNpZ2h0cyBpbnRvIHBvdGVudGlhbCBvcHRpbWl6YXRpb25zLCBlcnJvciBoYW5kbGluZyBzdHJhdGVnaWVzLCBhbmQgc2VjdXJpdHkgaW1wbGljYXRpb25zIG9mIHRoZSByZWNlaXZpbmcgcHJvY2Vzcy4gSSdsbCBuZWVkIHRvIGNvbnNpZGVyIGhvdyBpbnRlcnJ1cHQgaGFuZGxpbmcsIERNQSwgYW5kIG90aGVyIGhhcmR3YXJlIGludGVyYWN0aW9ucyBwbGF5IGludG8gdGhlIGZ1bmN0aW9u4oCZcyBleGVjdXRpb24uXG5cblRoaXMgaXMgYWxsIGFib3V0IHVuZGVyc3RhbmRpbmcgdGhlIGRhdGEgZmxvdyBvZiBpbmNvbWluZyBmcmFtZXMgYW5kIHVuZGVyc3RhbmRpbmcgaG93IHRoZSBzeXN0ZW0gaXMgZGVzaWduZWQgdG8gaGFuZGxlIGRpZmZlcmVudCBzY2VuYXJpb3MuIEZpbmRpbmcgdGhlIFwid2hvXCIgd2lsbCBnaXZlIG1lIGEgZm9vdGhvbGQgaW4gdW5kZXJzdGFuZGluZyB0aGUgXCJob3dcIiBhbmQgdGhlIFwid2h5LlwiXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI5MDQ5LCJPdXRwdXRUb2tlbnMiOjQxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjlUMDY6MDM6MzIuMTU4NjgyNjkzWiIsIlNlcSI6MjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0OTEyNTczOCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJpZWVlODAyMTFfaW52b2tlX3J4X2hhbmRsZXJzXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9tYWM4MDIxMVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvbWFjODAyMTEvcnguYz00MjI5PXN0YXRpYyB2b2lkIGllZWU4MDIxMV9yeF9oYW5kbGVycyhzdHJ1Y3QgaWVlZTgwMjExX3J4X2RhdGEgKnJ4LFxcbi0tXFxubmV0L21hYzgwMjExL3J4LmMtNDI5NC1cXG5uZXQvbWFjODAyMTEvcnguYzo0Mjk1OnN0YXRpYyB2b2lkIGllZWU4MDIxMV9pbnZva2VfcnhfaGFuZGxlcnMoc3RydWN0IGllZWU4MDIxMV9yeF9kYXRhICpyeClcXG5uZXQvbWFjODAyMTEvcnguYy00Mjk2LXtcXG4tLVxcbm5ldC9tYWM4MDIxMS9yeC5jPTUxNzM9c3RhdGljIGJvb2wgaWVlZTgwMjExX3ByZXBhcmVfYW5kX3J4X2hhbmRsZShzdHJ1Y3QgaWVlZTgwMjExX3J4X2RhdGEgKnJ4LFxcbi0tXFxubmV0L21hYzgwMjExL3J4LmMtNTIyNC1cXHRpZiAoaWVlZTgwMjExX2lzX3MxZ19iZWFjb24oaGRyLVxcdTAwM2VmcmFtZV9jb250cm9sKSkge1xcbm5ldC9tYWM4MDIxMS9yeC5jOjUyMjU6XFx0XFx0aWVlZTgwMjExX2ludm9rZV9yeF9oYW5kbGVycyhyeCk7XFxubmV0L21hYzgwMjExL3J4LmMtNTIyNi1cXHRcXHRyZXR1cm4gdHJ1ZTtcXG4tLVxcbm5ldC9tYWM4MDIxMS9yeC5jLTUyNTMtXFxubmV0L21hYzgwMjExL3J4LmM6NTI1NDpcXHRpZWVlODAyMTFfaW52b2tlX3J4X2hhbmRsZXJzKHJ4KTtcXG5uZXQvbWFjODAyMTEvcnguYy01MjU1LVxcdHJldHVybiB0cnVlO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yOVQwNjowMzozMi4yMDc4MTQ1NTFaIiwiU2VxIjoyOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MTc0MzExMTkzNTAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzOlxuXG4qKkRlZXAgRGl2ZSBvbiB0aGUgUmVjZWl2ZSBQYXRoKipcblxuQWxyaWdodCwgc28gYGllZWU4MDIxMV9wcmVwYXJlX2FuZF9yeF9oYW5kbGVgLi4uIHRoYXQncyB0aGUgZnVuY3Rpb24gd2UncmUgZGlzc2VjdGluZyB0b2RheS4gTGV0J3MgZGlnIGluIGFuZCBmaWd1cmUgb3V0IGV4YWN0bHkgd2hhdCdzIGNhbGxpbmcgdGhhdCBmdW5jdGlvbi4gVW5kZXJzdGFuZGluZyB0aGUgY2FsbCBjaGFpbiBoZXJlIGlzIGdvaW5nIHRvIGJlIGNydWNpYWwgZm9yIGZpZ3VyaW5nIG91dCBleGFjdGx5IGhvdyB0aGUgcGFja2V0IHByb2Nlc3NpbmcgaGFwcGVucyBvbiB0aGUgcmVjZWl2ZSBzaWRlLiBJIG5lZWQgdG8gdHJhY2UgdGhpcyBiYWNrIHRvIHRoZSB2ZXJ5IHN0YXJ0IG9mIHRoZSByZWNlaXZlIHBhdGguIEhvcGVmdWxseSwgaXQncyB3ZWxsLWRvY3VtZW50ZWQsIGJlY2F1c2UgSSdtIGdvaW5nIHRvIHdhbnQgdG8gdW5kZXJzdGFuZCB3aGF0IHRyaWdnZXJzIHRoaXMgZW50aXJlIHByb2Nlc3MuIExldCdzIHNlZSB3aGF0IHdlIGNhbiBmaW5kLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyOTc3MiwiT3V0cHV0VG9rZW5zIjo0MywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI5VDA2OjAzOjQ5LjYzODkzNjExMVoiLCJTZXEiOjMwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTc1Nzk4MzAzLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImllZWU4MDIxMV9wcmVwYXJlX2FuZF9yeF9oYW5kbGVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L21hYzgwMjExXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9tYWM4MDIxMS9yeC5jPTUwMTU9c3RhdGljIGJvb2wgaWVlZTgwMjExX2ludm9rZV9mYXN0X3J4KHN0cnVjdCBpZWVlODAyMTFfcnhfZGF0YSAqcngsXFxuLS1cXG5uZXQvbWFjODAyMTEvcnguYy01MTcyLSAqL1xcbm5ldC9tYWM4MDIxMS9yeC5jOjUxNzM6c3RhdGljIGJvb2wgaWVlZTgwMjExX3ByZXBhcmVfYW5kX3J4X2hhbmRsZShzdHJ1Y3QgaWVlZTgwMjExX3J4X2RhdGEgKnJ4LFxcbm5ldC9tYWM4MDIxMS9yeC5jLTUxNzQtXFx0XFx0XFx0XFx0XFx0ICAgIHN0cnVjdCBza19idWZmICpza2IsIGJvb2wgY29uc3VtZSlcXG4tLVxcbm5ldC9tYWM4MDIxMS9yeC5jPTUzMTA9c3RhdGljIGJvb2wgaWVlZTgwMjExX3J4X2Zvcl9pbnRlcmZhY2Uoc3RydWN0IGllZWU4MDIxMV9yeF9kYXRhICpyeCxcXG4tLVxcbm5ldC9tYWM4MDIxMS9yeC5jLTUzMjEtXFxubmV0L21hYzgwMjExL3J4LmM6NTMyMjpcXHRcXHRyZXR1cm4gaWVlZTgwMjExX3ByZXBhcmVfYW5kX3J4X2hhbmRsZShyeCwgc2tiLCBjb25zdW1lKTtcXG5uZXQvbWFjODAyMTEvcnguYy01MzIzLVxcdH1cXG4tLVxcbm5ldC9tYWM4MDIxMS9yeC5jLTUzNjEtXFxubmV0L21hYzgwMjExL3J4LmM6NTM2MjpcXHRyZXR1cm4gaWVlZTgwMjExX3ByZXBhcmVfYW5kX3J4X2hhbmRsZShyeCwgc2tiLCBjb25zdW1lKTtcXG5uZXQvbWFjODAyMTEvcnguYy01MzYzLX1cXG4tLVxcbm5ldC9tYWM4MDIxMS9yeC5jPTUzNjk9c3RhdGljIHZvaWQgX19pZWVlODAyMTFfcnhfaGFuZGxlX3BhY2tldChzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcXG4tLVxcbm5ldC9tYWM4MDIxMS9yeC5jLTU0NjEtXFxubmV0L21hYzgwMjExL3J4LmM6NTQ2MjpcXHRcXHRcXHRpZiAoaWVlZTgwMjExX3ByZXBhcmVfYW5kX3J4X2hhbmRsZShcXHUwMDI2cngsIHNrYiwgdHJ1ZSkpXFxubmV0L21hYzgwMjExL3J4LmMtNTQ2My1cXHRcXHRcXHRcXHRyZXR1cm47XFxuLS1cXG5uZXQvbWFjODAyMTEvcnguYy01NDg5LVxcbm5ldC9tYWM4MDIxMS9yeC5jOjU0OTA6XFx0XFx0XFx0aWVlZTgwMjExX3ByZXBhcmVfYW5kX3J4X2hhbmRsZShcXHUwMDI2cngsIHNrYiwgZmFsc2UpO1xcbm5ldC9tYWM4MDIxMS9yeC5jLTU0OTEtXFxuLS1cXG5uZXQvbWFjODAyMTEvcnguYy01NTEwLVxcbm5ldC9tYWM4MDIxMS9yeC5jOjU1MTE6XFx0XFx0XFx0aWYgKGllZWU4MDIxMV9wcmVwYXJlX2FuZF9yeF9oYW5kbGUoXFx1MDAyNnJ4LCBza2IsIHRydWUpKVxcbm5ldC9tYWM4MDIxMS9yeC5jLTU1MTItXFx0XFx0XFx0XFx0cmV0dXJuO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yOVQwNjowMzo0OS44MTQ3NDIxODRaIiwiU2VxIjozMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MjMzMjUxNzQ5MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipUcmFjaW5nIHRoZSBEYXRhIEZsb3c6IFRoZSBDdXJpb3VzIENhc2Ugb2YgYF9faWVlZTgwMjExX3J4X2hhbmRsZV9wYWNrZXRgKipcblxuQWxyaWdodCwgc28gSSdtIGRpZ2dpbmcgaW50byB0aGlzIGBfX2llZWU4MDIxMV9yeF9oYW5kbGVfcGFja2V0YCBmdW5jdGlvbi4gSXQncyBvYnZpb3VzbHkgY2VudHJhbCB0byB0aGUgODAyLjExIHJlY2VpdmUgcGF0aC4gQnV0IHRoZSBxdWVzdGlvbiBpcywgKndoYXQqIGtpY2tzIGl0IG9mZj8gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGNhbGwgY2hhaW4gdG8gdHJ1bHkgZ3Jhc3AgaXRzIHJvbGUgaW4gdGhlIGJpZ2dlciBwaWN0dXJlLiBNeSBtZW50YWwgY2hlY2tsaXN0IHN0YXJ0cyB3aXRoIGZpZ3VyaW5nIG91dCB3aGljaCBvdGhlciBmdW5jdGlvbnMgYXJlIHJlc3BvbnNpYmxlIGZvciBjYWxsaW5nIHRoaXMgb25lLiBJIG5lZWQgdG8gdHJhY2UgdGhpcyBkYXRhIGZsb3cuIExldCdzIHN0YXJ0IGJ5IG1ldGhvZGljYWxseSBjaGVja2luZyB0aGUgY29kZSBhbmQgZ2V0IHRoZSBmdWxsIGNhbGwgc3RhY2suXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMwNjgyLCJPdXRwdXRUb2tlbnMiOjQyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjlUMDY6MDM6NTIuMTQ3MjYyMTQ2WiIsIlNlcSI6MzIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0ODI3OTkwOCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJfX2llZWU4MDIxMV9yeF9oYW5kbGVfcGFja2V0XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9tYWM4MDIxMVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvbWFjODAyMTEvcnguYz01MzEwPXN0YXRpYyBib29sIGllZWU4MDIxMV9yeF9mb3JfaW50ZXJmYWNlKHN0cnVjdCBpZWVlODAyMTFfcnhfZGF0YSAqcngsXFxuLS1cXG5uZXQvbWFjODAyMTEvcnguYy01MzY4LSAqL1xcbm5ldC9tYWM4MDIxMS9yeC5jOjUzNjk6c3RhdGljIHZvaWQgX19pZWVlODAyMTFfcnhfaGFuZGxlX3BhY2tldChzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcXG5uZXQvbWFjODAyMTEvcnguYy01MzcwLVxcdFxcdFxcdFxcdFxcdCBzdHJ1Y3QgaWVlZTgwMjExX3N0YSAqcHVic3RhLFxcbi0tXFxubmV0L21hYzgwMjExL3J4LmM9NTU1OT12b2lkIGllZWU4MDIxMV9yeF9saXN0KHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LCBzdHJ1Y3QgaWVlZTgwMjExX3N0YSAqcHVic3RhLFxcbi0tXFxubmV0L21hYzgwMjExL3J4LmMtNTcxOS1cXHRcXHRlbHNlXFxubmV0L21hYzgwMjExL3J4LmM6NTcyMDpcXHRcXHRcXHRfX2llZWU4MDIxMV9yeF9oYW5kbGVfcGFja2V0KGh3LCBwdWJzdGEsIHNrYiwgbGlzdCk7XFxubmV0L21hYzgwMjExL3J4LmMtNTcyMS1cXHR9XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI5VDA2OjAzOjUyLjE5NTU0ODQyNFoiLCJTZXEiOjMzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo2MzI4NjMxMTk0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgODAyLjExIFJlY2VpdmUgUGF0aCoqXG5cbk9rYXksIGxldCdzIGJyZWFrIGRvd24gaG93IHRoaXMgODAyLjExIHJlY2VpdmUgcGF0aCBpcyBzdHJ1Y3R1cmVkLiBJdCBsb29rcyBsaWtlIHRoZSBtYWluIGVudHJ5IHBvaW50cyBmb3IgcHJvY2Vzc2luZyByZWNlaXZlZCBmcmFtZXMgYXJlIGBpZWVlODAyMTFfcnhfbGlzdGAsIGBpZWVlODAyMTFfcnhfbmFwaWAsIGFuZCBgaWVlZTgwMjExX3J4X2lycXNhZmVgLiBJIGFsc28gc2VlIGBpZWVlODAyMTFfcnhfaF9kZWZyYWdtZW50YCBsaXN0ZWQsIHdoaWNoIGlzIGxpa2VseSBpbnZvbHZlZCBpbiBkZWZyYWdtZW50YXRpb24sIGVzcGVjaWFsbHkgZ2l2ZW4gdGhlIGBNQUM4MDIxMV9OT0lOTElORWAgY29udGV4dCwgb3IgaWYgaXQncyBleHBsaWNpdGx5IGV4cG9ydGVkIGFuZCBub3QgaW5saW5lZC5cblxuTm93LCBJJ20gY3VyaW91cyBhYm91dCBgaWVlZTgwMjExX3J4X2hfZGVmcmFnbWVudGAuIEkgd2FudCB0byBrbm93IGlmIHRoaXMgZnVuY3Rpb24gaXMgc3RhdGljIG9yIGlmIGl0J3Mgc3ViamVjdCB0byBhbnkgc3BlY2lhbCBpbmxpbmluZyBjb25zaWRlcmF0aW9ucywgbGlrZSBgZGVidWdfbm9pbmxpbmVgLiBMb29raW5nIGF0IGxpbmUgMjM3MiwgSSBzZWU6IGBzdGF0aWMgaWVlZTgwMjExX3J4X3Jlc3VsdCBkZWJ1Z19ub2lubGluZSBpZWVlODAyMTFfcnhfaF9kZWZyYWdtZW50KHN0cnVjdCBpZWVlODAyMTFfcnhfZGF0YSAqcngpYC4gQWhhISBJdCdzIGBzdGF0aWNgIGFuZCB1c2VzIGBkZWJ1Z19ub2lubGluZWAuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgYGRlYnVnX25vaW5saW5lYCBhY3R1YWxseSAqbWVhbnMqIGluIHRoaXMgY29udGV4dC4gTGV0J3MgZGlnIGludG8gdGhlIGRlZmluaXRpb24gb2YgdGhhdCBtYWNybyBhbmQgc2VlIHdoYXQncyBnb2luZyBvbiB3aXRoIGlubGluaW5nIGhlcmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMxMjI4LCJPdXRwdXRUb2tlbnMiOjMyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTkwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI5VDA2OjAzOjU4LjUyNDE4MjQwOFoiLCJTZXEiOjM0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDkwMzgzNDcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZGVidWdfbm9pbmxpbmVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L21hYzgwMjExXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9tYWM4MDIxMS9pZWVlODAyMTFfaS5oPTI5NDQ9dTMyIGllZWU4MDIxMV9jYWxjX2V4cGVjdGVkX3R4X2FpcnRpbWUoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXFxuLS1cXG5uZXQvbWFjODAyMTEvaWVlZTgwMjExX2kuaC0yOTQ4LSNpZmRlZiBDT05GSUdfTUFDODAyMTFfTk9JTkxJTkVcXG5uZXQvbWFjODAyMTEvaWVlZTgwMjExX2kuaDoyOTQ5OiNkZWZpbmUgZGVidWdfbm9pbmxpbmUgbm9pbmxpbmVcXG5uZXQvbWFjODAyMTEvaWVlZTgwMjExX2kuaC0yOTUwLSNlbHNlXFxubmV0L21hYzgwMjExL2llZWU4MDIxMV9pLmg6Mjk1MTojZGVmaW5lIGRlYnVnX25vaW5saW5lXFxubmV0L21hYzgwMjExL2llZWU4MDIxMV9pLmgtMjk1Mi0jZW5kaWZcXG4tLVxcbm5ldC9tYWM4MDIxMS9yeC5jPTE0NDU9c3RhdGljIHZvaWQgaWVlZTgwMjExX3J4X3Jlb3JkZXJfYW1wZHUoc3RydWN0IGllZWU4MDIxMV9yeF9kYXRhICpyeCxcXG4tLVxcbm5ldC9tYWM4MDIxMS9yeC5jLTE1MTktXFxubmV0L21hYzgwMjExL3J4LmM6MTUyMDpzdGF0aWMgaWVlZTgwMjExX3J4X3Jlc3VsdCBkZWJ1Z19ub2lubGluZVxcbm5ldC9tYWM4MDIxMS9yeC5jLTE1MjEtaWVlZTgwMjExX3J4X2hfY2hlY2tfZHVwKHN0cnVjdCBpZWVlODAyMTFfcnhfZGF0YSAqcngpXFxuLS1cXG5uZXQvbWFjODAyMTEvcnguYy0xNTc3LVxcbm5ldC9tYWM4MDIxMS9yeC5jOjE1Nzg6c3RhdGljIGllZWU4MDIxMV9yeF9yZXN1bHQgZGVidWdfbm9pbmxpbmVcXG5uZXQvbWFjODAyMTEvcnguYy0xNTc5LWllZWU4MDIxMV9yeF9oX2NoZWNrKHN0cnVjdCBpZWVlODAyMTFfcnhfZGF0YSAqcngpXFxuLS1cXG5uZXQvbWFjODAyMTEvcnguYy0xNjUwLVxcbm5ldC9tYWM4MDIxMS9yeC5jOjE2NTE6c3RhdGljIGllZWU4MDIxMV9yeF9yZXN1bHQgZGVidWdfbm9pbmxpbmVcXG5uZXQvbWFjODAyMTEvcnguYy0xNjUyLWllZWU4MDIxMV9yeF9oX2NoZWNrX21vcmVfZGF0YShzdHJ1Y3QgaWVlZTgwMjExX3J4X2RhdGEgKnJ4KVxcbi0tXFxubmV0L21hYzgwMjExL3J4LmM9MTgwOD1FWFBPUlRfU1lNQk9MKGllZWU4MDIxMV9zdGFfdWFwc2RfdHJpZ2dlcik7XFxubmV0L21hYzgwMjExL3J4LmMtMTgwOS1cXG5uZXQvbWFjODAyMTEvcnguYzoxODEwOnN0YXRpYyBpZWVlODAyMTFfcnhfcmVzdWx0IGRlYnVnX25vaW5saW5lXFxubmV0L21hYzgwMjExL3J4LmMtMTgxMS1pZWVlODAyMTFfcnhfaF91YXBzZF9hbmRfcHNwb2xsKHN0cnVjdCBpZWVlODAyMTFfcnhfZGF0YSAqcngpXFxuLS1cXG5uZXQvbWFjODAyMTEvcnguYy0xODYwLVxcbm5ldC9tYWM4MDIxMS9yeC5jOjE4NjE6c3RhdGljIGllZWU4MDIxMV9yeF9yZXN1bHQgZGVidWdfbm9pbmxpbmVcXG5uZXQvbWFjODAyMTEvcnguYy0xODYyLWllZWU4MDIxMV9yeF9oX3N0YV9wcm9jZXNzKHN0cnVjdCBpZWVlODAyMTFfcnhfZGF0YSAqcngpXFxuLS1cXG5uZXQvbWFjODAyMTEvcnguYz0xOTk3PWllZWU4MDIxMV9yeF9nZXRfYmlndGsoc3RydWN0IGllZWU4MDIxMV9yeF9kYXRhICpyeCwgaW50IGlkeClcXG4tLVxcbm5ldC9tYWM4MDIxMS9yeC5jLTIwMjktXFxubmV0L21hYzgwMjExL3J4LmM6MjAzMDpzdGF0aWMgaWVlZTgwMjExX3J4X3Jlc3VsdCBkZWJ1Z19ub2lubGluZVxcbm5ldC9tYWM4MDIxMS9yeC5jLTIwMzEtaWVlZTgwMjExX3J4X2hfZGVjcnlwdChzdHJ1Y3QgaWVlZTgwMjExX3J4X2RhdGEgKnJ4KVxcbi0tXFxubmV0L21hYzgwMjExL3J4LmM9MjM2Mj1zdGF0aWMgYm9vbCByZXF1aXJlc19zZXF1ZW50aWFsX3BuKHN0cnVjdCBpZWVlODAyMTFfcnhfZGF0YSAqcngsIF9fbGUxNiBmYylcXG4tLVxcbm5ldC9tYWM4MDIxMS9yeC5jLTIzNzEtXFxubmV0L21hYzgwMjExL3J4LmM6MjM3MjpzdGF0aWMgaWVlZTgwMjExX3J4X3Jlc3VsdCBkZWJ1Z19ub2lubGluZVxcbm5ldC9tYWM4MDIxMS9yeC5jLTIzNzMtaWVlZTgwMjExX3J4X2hfZGVmcmFnbWVudChzdHJ1Y3QgaWVlZTgwMjExX3J4X2RhdGEgKnJ4KVxcbi0tXFxubmV0L21hYzgwMjExL3J4LmM9Mjk2MT1pZWVlODAyMTFfcnhfbWVzaF9kYXRhKHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLCBzdHJ1Y3Qgc3RhX2luZm8gKnN0YSxcXG4tLVxcbm5ldC9tYWM4MDIxMS9yeC5jLTMxNDMtXFxubmV0L21hYzgwMjExL3J4LmM6MzE0NDpzdGF0aWMgaWVlZTgwMjExX3J4X3Jlc3VsdCBkZWJ1Z19ub2lubGluZVxcbm5ldC9tYWM4MDIxMS9yeC5jLTMxNDUtX19pZWVlODAyMTFfcnhfaF9hbXNkdShzdHJ1Y3QgaWVlZTgwMjExX3J4X2RhdGEgKnJ4LCB1OCBkYXRhX29mZnNldClcXG4tLVxcbm5ldC9tYWM4MDIxMS9yeC5jLTMyMjktXFxubmV0L21hYzgwMjExL3J4LmM6MzIzMDpzdGF0aWMgaWVlZTgwMjExX3J4X3Jlc3VsdCBkZWJ1Z19ub2lubGluZVxcbm5ldC9tYWM4MDIxMS9yeC5jLTMyMzEtaWVlZTgwMjExX3J4X2hfYW1zZHUoc3RydWN0IGllZWU4MDIxMV9yeF9kYXRhICpyeClcXG4tLVxcbm5ldC9tYWM4MDIxMS9yeC5jLTMyODYtXFxubmV0L21hYzgwMjExL3J4LmM6MzI4NzpzdGF0aWMgaWVlZTgwMjExX3J4X3Jlc3VsdCBkZWJ1Z19ub2lubGluZVxcbm5ldC9tYWM4MDIxMS9yeC5jLTMyODgtaWVlZTgwMjExX3J4X2hfZGF0YShzdHJ1Y3QgaWVlZTgwMjExX3J4X2RhdGEgKnJ4KVxcbi0tXFxubmV0L21hYzgwMjExL3J4LmMtMzM2Ny1cXG5uZXQvbWFjODAyMTEvcnguYzozMzY4OnN0YXRpYyBpZWVlODAyMTFfcnhfcmVzdWx0IGRlYnVnX25vaW5saW5lXFxubmV0L21hYzgwMjExL3J4LmMtMzM2OS1pZWVlODAyMTFfcnhfaF9jdHJsKHN0cnVjdCBpZWVlODAyMTFfcnhfZGF0YSAqcngsIHN0cnVjdCBza19idWZmX2hlYWQgKmZyYW1lcylcXG4tLVxcbm5ldC9tYWM4MDIxMS9yeC5jPTM0Nzk9aWVlZTgwMjExX3J4X2NoZWNrX2Jzc19jb2xvcl9jb2xsaXNpb24oc3RydWN0IGllZWU4MDIxMV9yeF9kYXRhICpyeClcXG4tLVxcbm5ldC9tYWM4MDIxMS9yeC5jLTM1MjMtXFxubmV0L21hYzgwMjExL3J4LmM6MzUyNDpzdGF0aWMgaWVlZTgwMjExX3J4X3Jlc3VsdCBkZWJ1Z19ub2lubGluZVxcbm5ldC9tYWM4MDIxMS9yeC5jLTM1MjUtaWVlZTgwMjExX3J4X2hfbWdtdF9jaGVjayhzdHJ1Y3QgaWVlZTgwMjExX3J4X2RhdGEgKnJ4KVxcbi0tXFxubmV0L21hYzgwMjExL3J4LmM9MzU3Nz1pZWVlODAyMTFfcHJvY2Vzc19yeF90d3RfYWN0aW9uKHN0cnVjdCBpZWVlODAyMTFfcnhfZGF0YSAqcngpXFxuLS1cXG5uZXQvbWFjODAyMTEvcnguYy0zNjI2LVxcbm5ldC9tYWM4MDIxMS9yeC5jOjM2Mjc6c3RhdGljIGllZWU4MDIxMV9yeF9yZXN1bHQgZGVidWdfbm9pbmxpbmVcXG5uZXQvbWFjODAyMTEvcnguYy0zNjI4LWllZWU4MDIxMV9yeF9oX2FjdGlvbihzdHJ1Y3QgaWVlZTgwMjExX3J4X2RhdGEgKnJ4KVxcbi0tXFxubmV0L21hYzgwMjExL3J4LmMtMzk5Ny1cXG5uZXQvbWFjODAyMTEvcnguYzozOTk4OnN0YXRpYyBpZWVlODAyMTFfcnhfcmVzdWx0IGRlYnVnX25vaW5saW5lXFxubmV0L21hYzgwMjExL3J4LmMtMzk5OS1pZWVlODAyMTFfcnhfaF91c2Vyc3BhY2VfbWdtdChzdHJ1Y3QgaWVlZTgwMjExX3J4X2RhdGEgKnJ4KVxcbi0tXFxubmV0L21hYzgwMjExL3J4LmMtNDA0MC1cXG5uZXQvbWFjODAyMTEvcnguYzo0MDQxOnN0YXRpYyBpZWVlODAyMTFfcnhfcmVzdWx0IGRlYnVnX25vaW5saW5lXFxubmV0L21hYzgwMjExL3J4LmMtNDA0Mi1pZWVlODAyMTFfcnhfaF9hY3Rpb25fcG9zdF91c2Vyc3BhY2Uoc3RydWN0IGllZWU4MDIxMV9yeF9kYXRhICpyeClcXG4tLVxcbm5ldC9tYWM4MDIxMS9yeC5jLTQwNzQtXFxubmV0L21hYzgwMjExL3J4LmM6NDA3NTpzdGF0aWMgaWVlZTgwMjExX3J4X3Jlc3VsdCBkZWJ1Z19ub2lubGluZVxcbm5ldC9tYWM4MDIxMS9yeC5jLTQwNzYtaWVlZTgwMjExX3J4X2hfYWN0aW9uX3JldHVybihzdHJ1Y3QgaWVlZTgwMjExX3J4X2RhdGEgKnJ4KVxcbi0tXFxubmV0L21hYzgwMjExL3J4LmMtNDEzNi1cXG5uZXQvbWFjODAyMTEvcnguYzo0MTM3OnN0YXRpYyBpZWVlODAyMTFfcnhfcmVzdWx0IGRlYnVnX25vaW5saW5lXFxubmV0L21hYzgwMjExL3J4LmMtNDEzOC1pZWVlODAyMTFfcnhfaF9leHQoc3RydWN0IGllZWU4MDIxMV9yeF9kYXRhICpyeClcXG4tLVxcbm5ldC9tYWM4MDIxMS9yeC5jLTQxNTQtXFxubmV0L21hYzgwMjExL3J4LmM6NDE1NTpzdGF0aWMgaWVlZTgwMjExX3J4X3Jlc3VsdCBkZWJ1Z19ub2lubGluZVxcbm5ldC9tYWM4MDIxMS9yeC5jLTQxNTYtaWVlZTgwMjExX3J4X2hfbWdtdChzdHJ1Y3QgaWVlZTgwMjExX3J4X2RhdGEgKnJ4KVxcbi0tXFxubmV0L21hYzgwMjExL3R4LmM9NDM9c3RhdGljIF9fbGUxNiBpZWVlODAyMTFfZHVyYXRpb24oc3RydWN0IGllZWU4MDIxMV90eF9kYXRhICp0eCxcXG4tLVxcbm5ldC9tYWM4MDIxMS90eC5jLTE5MS0vKiB0eCBoYW5kbGVycyAqL1xcbm5ldC9tYWM4MDIxMS90eC5jOjE5MjpzdGF0aWMgaWVlZTgwMjExX3R4X3Jlc3VsdCBkZWJ1Z19ub2lubGluZVxcbm5ldC9tYWM4MDIxMS90eC5jLTE5My1pZWVlODAyMTFfdHhfaF9keW5hbWljX3BzKHN0cnVjdCBpZWVlODAyMTFfdHhfZGF0YSAqdHgpXFxuLS1cXG5uZXQvbWFjODAyMTEvdHguYy0yNjgtXFxubmV0L21hYzgwMjExL3R4LmM6MjY5OnN0YXRpYyBpZWVlODAyMTFfdHhfcmVzdWx0IGRlYnVnX25vaW5saW5lXFxubmV0L21hYzgwMjExL3R4LmMtMjcwLWllZWU4MDIxMV90eF9oX2NoZWNrX2Fzc29jKHN0cnVjdCBpZWVlODAyMTFfdHhfZGF0YSAqdHgpXFxuLS1cXG5uZXQvbWFjODAyMTEvdHguYz00NTg9aWVlZTgwMjExX3R4X2hfdW5pY2FzdF9wc19idWYoc3RydWN0IGllZWU4MDIxMV90eF9kYXRhICp0eClcXG4tLVxcbm5ldC9tYWM4MDIxMS90eC5jLTUzNS1cXG5uZXQvbWFjODAyMTEvdHguYzo1MzY6c3RhdGljIGllZWU4MDIxMV90eF9yZXN1bHQgZGVidWdfbm9pbmxpbmVcXG5uZXQvbWFjODAyMTEvdHguYy01MzctaWVlZTgwMjExX3R4X2hfcHNfYnVmKHN0cnVjdCBpZWVlODAyMTFfdHhfZGF0YSAqdHgpXFxuLS1cXG5uZXQvbWFjODAyMTEvdHguYy01NDctXFxubmV0L21hYzgwMjExL3R4LmM6NTQ4OnN0YXRpYyBpZWVlODAyMTFfdHhfcmVzdWx0IGRlYnVnX25vaW5saW5lXFxubmV0L21hYzgwMjExL3R4LmMtNTQ5LWllZWU4MDIxMV90eF9oX2NoZWNrX2NvbnRyb2xfcG9ydF9wcm90b2NvbChzdHJ1Y3QgaWVlZTgwMjExX3R4X2RhdGEgKnR4KVxcbi0tXFxubmV0L21hYzgwMjExL3R4LmM9NTY0PWllZWU4MDIxMV9zZWxlY3RfbGlua19rZXkoc3RydWN0IGllZWU4MDIxMV90eF9kYXRhICp0eClcXG4tLVxcbm5ldC9tYWM4MDIxMS90eC5jLTU5MS1cXG5uZXQvbWFjODAyMTEvdHguYzo1OTI6c3RhdGljIGllZWU4MDIxMV90eF9yZXN1bHQgZGVidWdfbm9pbmxpbmVcXG5uZXQvbWFjODAyMTEvdHguYy01OTMtaWVlZTgwMjExX3R4X2hfc2VsZWN0X2tleShzdHJ1Y3QgaWVlZTgwMjExX3R4X2RhdGEgKnR4KVxcbi0tXFxubmV0L21hYzgwMjExL3R4LmMtNjczLVxcbm5ldC9tYWM4MDIxMS90eC5jOjY3NDpzdGF0aWMgaWVlZTgwMjExX3R4X3Jlc3VsdCBkZWJ1Z19ub2lubGluZVxcbm5ldC9tYWM4MDIxMS90eC5jLTY3NS1pZWVlODAyMTFfdHhfaF9yYXRlX2N0cmwoc3RydWN0IGllZWU4MDIxMV90eF9kYXRhICp0eClcXG4tLVxcbm5ldC9tYWM4MDIxMS90eC5jPTgwOD1zdGF0aWMgX19sZTE2IGllZWU4MDIxMV90eF9uZXh0X3NlcShzdHJ1Y3Qgc3RhX2luZm8gKnN0YSwgaW50IHRpZClcXG4tLVxcbm5ldC9tYWM4MDIxMS90eC5jLTgxOC1cXG5uZXQvbWFjODAyMTEvdHguYzo4MTk6c3RhdGljIGllZWU4MDIxMV90eF9yZXN1bHQgZGVidWdfbm9pbmxpbmVcXG5uZXQvbWFjODAyMTEvdHguYy04MjAtaWVlZTgwMjExX3R4X2hfc2VxdWVuY2Uoc3RydWN0IGllZWU4MDIxMV90eF9kYXRhICp0eClcXG4tLVxcbm5ldC9tYWM4MDIxMS90eC5jPTg5MT1zdGF0aWMgaW50IGllZWU4MDIxMV9mcmFnbWVudChzdHJ1Y3QgaWVlZTgwMjExX3R4X2RhdGEgKnR4LFxcbi0tXFxubmV0L21hYzgwMjExL3R4LmMtOTUwLVxcbm5ldC9tYWM4MDIxMS90eC5jOjk1MTpzdGF0aWMgaWVlZTgwMjExX3R4X3Jlc3VsdCBkZWJ1Z19ub2lubGluZVxcbm5ldC9tYWM4MDIxMS90eC5jLTk1Mi1pZWVlODAyMTFfdHhfaF9mcmFnbWVudChzdHJ1Y3QgaWVlZTgwMjExX3R4X2RhdGEgKnR4KVxcbi0tXFxubmV0L21hYzgwMjExL3R4LmMtMTAyNS1cXG5uZXQvbWFjODAyMTEvdHguYzoxMDI2OnN0YXRpYyBpZWVlODAyMTFfdHhfcmVzdWx0IGRlYnVnX25vaW5saW5lXFxubmV0L21hYzgwMjExL3R4LmMtMTAyNy1pZWVlODAyMTFfdHhfaF9zdGF0cyhzdHJ1Y3QgaWVlZTgwMjExX3R4X2RhdGEgKnR4KVxcbi0tXFxubmV0L21hYzgwMjExL3R4LmMtMTA0NC1cXG5uZXQvbWFjODAyMTEvdHguYzoxMDQ1OnN0YXRpYyBpZWVlODAyMTFfdHhfcmVzdWx0IGRlYnVnX25vaW5saW5lXFxubmV0L21hYzgwMjExL3R4LmMtMTA0Ni1pZWVlODAyMTFfdHhfaF9lbmNyeXB0KHN0cnVjdCBpZWVlODAyMTFfdHhfZGF0YSAqdHgpXFxuLS1cXG5uZXQvbWFjODAyMTEvdHguYy0xMDc5LVxcbm5ldC9tYWM4MDIxMS90eC5jOjEwODA6c3RhdGljIGllZWU4MDIxMV90eF9yZXN1bHQgZGVidWdfbm9pbmxpbmVcXG5uZXQvbWFjODAyMTEvdHguYy0xMDgxLWllZWU4MDIxMV90eF9oX2NhbGN1bGF0ZV9kdXJhdGlvbihzdHJ1Y3QgaWVlZTgwMjExX3R4X2RhdGEgKnR4KVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yOVQwNjowMzo1OC41NzMyMjkxNzdaIiwiU2VxIjozNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MzYxNDEyNDM5OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBJbml0aWFsIEFzc2Vzc21lbnQgb2YgbWFjODAyMTEgUlggRW50cnkgUG9pbnRzKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhlIGVudHJ5IHBvaW50cyBmb3IgdGhlIG1hYzgwMjExIHJlY2VpdmUgcGF0aC4gUmlnaHQgb2ZmIHRoZSBiYXQsIEkgc2VlIHRoYXQgYGllZWU4MDIxMV9yeF9saXN0YCwgYGllZWU4MDIxMV9yeF9uYXBpYCwgYW5kIGBpZWVlODAyMTFfcnhfaXJxc2FmZWAgYXJlIHRoZSBub24tc3RhdGljIGVudHJ5IHBvaW50cyBkZWZpbmVkIHdpdGhpbiBgbmV0L21hYzgwMjExL3J4LmNgLiBNeSBpbnN0aW5jdCBpcyB0byBtYWtlIHN1cmUgdGhlc2UgYXJlIHRoZSBjb3JlIGludGVyZmFjZXMgSSBzaG91bGQgYmUgZm9jdXNpbmcgb24sIHNvIEkgbmVlZCB0byBxdWlja2x5IHNjYW4gYG5ldC9tYWM4MDIxMS9yeC5jYCBpdHNlbGYgYW5kIHBvc3NpYmx5IGVsc2V3aGVyZSB0byBlbnN1cmUgSSdtIG5vdCBtaXNzaW5nIGFueSBvdGhlciBjcnVjaWFsIHJlbGV2YW50IGZ1bmN0aW9ucy4gTXkgcmFkYXIgaXMgdXAgZm9yIGFueXRoaW5nIGVsc2UsIGxpa2UgdGhlIHdheSBgaWVlZTgwMjExX3J4X2hfZGVmcmFnbWVudGAgaXMgaGFuZGxlZCDigJMgaXQgKmlzKiBhIHN5bWJvbCBkdWUgdG8gYE1BQzgwMjExX05PSU5MSU5FYCBidXQgSSdkIHJhdGhlciBzdGljayB3aXRoIHRob3NlIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50cyBpZiBwb3NzaWJsZSwgYW5kIGVzcGVjaWFsbHkgdGhlIG9uZXMgSSBtZW50aW9uZWQgaW5pdGlhbGx5LlxuXG5JIHNob3VsZCBhbHNvIHF1aWNrbHkgcmV2aWV3IHRoZSByZWxldmFudCBjb25maWd1cmF0aW9uIG9wdGlvbnMuIGBNQUM4MDIxMWAsIG9idmlvdXNseSwgYENGRzgwMjExYCB3aGljaCBpcyBmdW5kYW1lbnRhbCwgYW5kIHRoZW4gYE1BQzgwMjExX0hXU0lNYC4gSSBuZWVkIHRvIGVuc3VyZSBJJ20gbm90IG92ZXJsb29raW5nIGFueXRoaW5nIGNydWNpYWwgdGhlcmUuIFNwZWNpZmljYWxseSwgZm9yIGBNQUM4MDIxMV9IV1NJTWAsIEknbGwgbmVlZCB0byBjaGVjayBpZiB0aGF0IG9wdGlvbiByZWxpZXMgb24gb3IgaW50ZXJhY3RzIHdpdGggYW55IG90aGVyIGNvbmZpZ3VyYXRpb25zLiBJJ2xsIHNlYXJjaCBmb3IgXCJjb25maWcgTUFDODAyMTFfSFdTSU1cIiB3aXRoaW4gYGRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvS2NvbmZpZ2AgdG8gcGlucG9pbnQgYW55IGRlcGVuZGVuY2llcyBvciBpbnRlcmFjdGlvbnMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM1Njc4LCJPdXRwdXRUb2tlbnMiOjM2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6Mjg5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI5VDA2OjA0OjAyLjE4NzM1NjA3NVoiLCJTZXEiOjM2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2NDQxMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogMzBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAgMTpcXHRjb25maWcgTUFDODAyMTFfSFdTSU1cXG4gICAyOlxcdFxcdHRyaXN0YXRlIFxcXCJTaW11bGF0ZWQgcmFkaW8gdGVzdGluZyB0b29sIGZvciBtYWM4MDIxMVxcXCJcXG4gICAzOlxcdFxcdGRlcGVuZHMgb24gTUFDODAyMTFcXG4gICA0OlxcdFxcdGhlbHBcXG4gICA1OlxcdFxcdCAgVGhpcyBkcml2ZXIgaXMgYSBkZXZlbG9wZXIgdGVzdGluZyB0b29sIHRoYXQgY2FuIGJlIHVzZWQgdG8gdGVzdFxcbiAgIDY6XFx0XFx0ICBJRUVFIDgwMi4xMSBuZXR3b3JraW5nIHN0YWNrIChtYWM4MDIxMSkgZnVuY3Rpb25hbGl0eS4gVGhpcyBpcyBub3RcXG4gICA3OlxcdFxcdCAgbmVlZGVkIGZvciBub3JtYWwgd2lyZWxlc3MgTEFOIHVzYWdlIGFuZCBpcyBvbmx5IGZvciB0ZXN0aW5nLiBTZWVcXG4gICA4OlxcdFxcdCAgRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL21hYzgwMjExX2h3c2ltIGZvciBtb3JlIGluZm9ybWF0aW9uIG9uIGhvd1xcbiAgIDk6XFx0XFx0ICB0byB1c2UgdGhpcyB0b29sLlxcbiAgMTA6XFx0XFxuICAxMTpcXHRcXHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmU6IHRoZSBtb2R1bGUgd2lsbCBiZVxcbiAgMTI6XFx0XFx0ICBjYWxsZWQgbWFjODAyMTFfaHdzaW0uICBJZiB1bnN1cmUsIHNheSBOLlxcbiAgMTM6XFx0XFxuICAxNDpcXHRjb25maWcgVklSVF9XSUZJXFxuICAxNTpcXHRcXHR0cmlzdGF0ZSBcXFwiV2lmaSB3cmFwcGVyIGZvciBldGhlcm5ldCBkcml2ZXJzXFxcIlxcbiAgMTY6XFx0XFx0ZGVwZW5kcyBvbiBDRkc4MDIxMVxcbiAgMTc6XFx0XFx0aGVscFxcbiAgMTg6XFx0XFx0ICBUaGlzIG9wdGlvbiBhZGRzIHN1cHBvcnQgZm9yIGV0aGVybmV0IGNvbm5lY3Rpb25zIHRvIGFwcGVhciBhcyBpZiB0aGV5XFxuICAxOTpcXHRcXHQgIGFyZSB3aWZpIGNvbm5lY3Rpb25zIHRocm91Z2ggYSBzcGVjaWFsIHJ0bmV0bGluayBkZXZpY2UuXFxuICAyMDpcXHRcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjlUMDY6MDQ6MDIuMTg3NDIyMTM1WiIsIlNlcSI6MzcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjU4MTIwMjYwODUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCdzIHNlZSB3aGF0J3MgZ29pbmcgb24gaGVyZS5cblxuKipJbnZlc3RpZ2F0aW5nIFdpcmVsZXNzIENvbmZpZ3VyYXRpb24gT3B0aW9ucyoqXG5cblJpZ2h0LCBzbyBJIG5lZWQgdG8gZGlnIGludG8gdGhlIHdpcmVsZXNzIGNvbmZpZ3VyYXRpb24sIHNwZWNpZmljYWxseSBhcm91bmQgbWFjODAyMTEuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCBhcmUgdGhlcmUgYW55ICpvdGhlciogY29uZmlncyByZWxhdGVkIHRvIHdpcmVsZXNzIG9yIG1hYzgwMjExIHRoYXQgSSdtIG92ZXJsb29raW5nPyBMZXQncyBzdGFydCB3aXRoIGEgc3lzdGVtYXRpYyBjaGVjay4gVGhlIGZpcnN0IHBsYWNlIHRvIGxvb2sgd291bGQgYmUgdW5kZXIgYE5FVERFVklDRVNgLCB0aGVuIGBXTEFOYCwgYW5kIGZpbmFsbHkgd2l0aGluIHRoZSBgTUFDODAyMTFgIHNlY3Rpb24uIEkgbmVlZCB0byBtYWtlIHN1cmUgSSdtIG5vdCBtaXNzaW5nIGFueXRoaW5nIGxpa2UgYE1BQzgwMjExX0hXU0lNYCBvciBgQ0ZHODAyMTFgIOKAkyB0aG9zZSBvZnRlbiBoYXZlIHRoZWlyIG93biBjb25maWd1cmF0aW9ucy4gVGhlbiwgdG8gYmUgdGhvcm91Z2gsIEkgc2hvdWxkIGFsc28gY2hlY2sgdGhlIGBkcml2ZXJzL25ldC93aXJlbGVzcy9LY29uZmlnYCBmaWxlLiBUaGF0J3MgdXN1YWxseSB0aGUgY2Fub25pY2FsIHNvdXJjZSBmb3IgdGhlc2Uga2luZHMgb2Ygc2V0dGluZ3MgYW5kIGRlcGVuZGVuY2llcy4gVGhpcyBzaG91bGQgZ2l2ZSBtZSBhIGdvb2QgbGF5IG9mIHRoZSBsYW5kLCBjb25maWd1cmF0aW9uLXdpc2UuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM2NzA3LCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NzcsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yOVQwNjowNDowNy45OTk0NTEyM1oiLCJTZXEiOjM4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2NDgxMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEsXG4gIFwiTGluZUNvdW50XCI6IDQwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgIDE6XFx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuICAgMjpcXHQjXFxuICAgMzpcXHQjIFdpcmVsZXNzIExBTiBkZXZpY2UgY29uZmlndXJhdGlvblxcbiAgIDQ6XFx0I1xcbiAgIDU6XFx0XFxuICAgNjpcXHRtZW51Y29uZmlnIFdMQU5cXG4gICA3OlxcdFxcdGJvb2wgXFxcIldpcmVsZXNzIExBTlxcXCJcXG4gICA4OlxcdFxcdGRlcGVuZHMgb24gIVMzOTBcXG4gICA5OlxcdFxcdGRlcGVuZHMgb24gTkVUXFxuICAxMDpcXHRcXHRzZWxlY3QgV0lSRUxFU1NcXG4gIDExOlxcdFxcdGRlZmF1bHQgeVxcbiAgMTI6XFx0XFx0aGVscFxcbiAgMTM6XFx0XFx0ICBUaGlzIHNlY3Rpb24gY29udGFpbnMgYWxsIHRoZSBwcmUgODAyLjExIGFuZCA4MDIuMTEgd2lyZWxlc3NcXG4gIDE0OlxcdFxcdCAgZGV2aWNlIGRyaXZlcnMuIEZvciBhIGNvbXBsZXRlIGxpc3Qgb2YgZHJpdmVycyBhbmQgZG9jdW1lbnRhdGlvblxcbiAgMTU6XFx0XFx0ICBvbiB0aGVtIHJlZmVyIHRvIHRoZSB3aXJlbGVzcyB3aWtpOlxcbiAgMTY6XFx0XFxuICAxNzpcXHRcXHQgIGh0dHBzOi8vd2lyZWxlc3Mud2lraS5rZXJuZWwub3JnL2VuL3VzZXJzL0RyaXZlcnNcXG4gIDE4OlxcdFxcbiAgMTk6XFx0aWYgV0xBTlxcbiAgMjA6XFx0XFxuICAyMTpcXHRzb3VyY2UgXFxcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2FkbXRlay9LY29uZmlnXFxcIlxcbiAgMjI6XFx0c291cmNlIFxcXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvS2NvbmZpZ1xcXCJcXG4gIDIzOlxcdHNvdXJjZSBcXFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRtZWwvS2NvbmZpZ1xcXCJcXG4gIDI0OlxcdHNvdXJjZSBcXFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vS2NvbmZpZ1xcXCJcXG4gIDI1OlxcdHNvdXJjZSBcXFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvS2NvbmZpZ1xcXCJcXG4gIDI2OlxcdHNvdXJjZSBcXFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvS2NvbmZpZ1xcXCJcXG4gIDI3OlxcdHNvdXJjZSBcXFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9LY29uZmlnXFxcIlxcbiAgMjg6XFx0c291cmNlIFxcXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9LY29uZmlnXFxcIlxcbiAgMjk6XFx0c291cmNlIFxcXCJkcml2ZXJzL25ldC93aXJlbGVzcy9taWNyb2NoaXAvS2NvbmZpZ1xcXCJcXG4gIDMwOlxcdHNvdXJjZSBcXFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9LY29uZmlnXFxcIlxcbiAgMzE6XFx0c291cmNlIFxcXCJkcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvS2NvbmZpZ1xcXCJcXG4gIDMyOlxcdHNvdXJjZSBcXFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvcHVyZWxpZmkvS2NvbmZpZ1xcXCJcXG4gIDMzOlxcdHNvdXJjZSBcXFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL0tjb25maWdcXFwiXFxuICAzNDpcXHRzb3VyY2UgXFxcImRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvS2NvbmZpZ1xcXCJcXG4gIDM1OlxcdHNvdXJjZSBcXFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvcnNpL0tjb25maWdcXFwiXFxuICAzNjpcXHRzb3VyY2UgXFxcImRyaXZlcnMvbmV0L3dpcmVsZXNzL3NpbGFicy9LY29uZmlnXFxcIlxcbiAgMzc6XFx0c291cmNlIFxcXCJkcml2ZXJzL25ldC93aXJlbGVzcy9zdC9LY29uZmlnXFxcIlxcbiAgMzg6XFx0c291cmNlIFxcXCJkcml2ZXJzL25ldC93aXJlbGVzcy90aS9LY29uZmlnXFxcIlxcbiAgMzk6XFx0c291cmNlIFxcXCJkcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy9LY29uZmlnXFxcIlxcbiAgNDA6XFx0c291cmNlIFxcXCJkcml2ZXJzL25ldC93aXJlbGVzcy9xdWFudGVubmEvS2NvbmZpZ1xcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjlUMDY6MDQ6MDcuOTk5NTE3OFoiLCJTZXEiOjM5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoyNDM4Njg4Mjg3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQncyBkaXZlIGludG8gdGhpcy4gSGVyZSdzIGhvdyBJJ2QgYXBwcm9hY2ggdGhhdCBrZXJuZWwgY29uZmlndXJhdGlvbiBmaWxlIGNoZWNrOlxuXG4qKkV4YW1pbmluZyB0aGUgV2lyZWxlc3MgVmlydHVhbCBEcml2ZXIgQ29uZmlndXJhdGlvbioqXG5cblJpZ2h0LCB0aW1lIHRvIGdldCBhIGdyaXAgb24gdGhpcyB3aXJlbGVzcyB2aXJ0dWFsIGRyaXZlciBjb25maWd1cmF0aW9uLiBGaXJzdCwgSSBuZWVkIHRvIHZlcmlmeSBpdHMgY29uZmlndXJhdGlvbiwgc28gbGV0J3MgY2hlY2sgYHNvdXJjZSBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvS2NvbmZpZ1wiYCBpbiBgZHJpdmVycy9uZXQvd2lyZWxlc3MvS2NvbmZpZ2AuIEknbGwgYmUgbG9va2luZyBmb3IgZGVwZW5kZW5jaWVzLCBkZWZhdWx0IHNldHRpbmdzLCBhbmQgYW55IHNwZWNpZmljIG9wdGlvbnMgdGhhdCBwZXJ0YWluIHRvIHRoZSB2aXJ0dWFsIGRyaXZlci4gSSBleHBlY3QgdG8gZmluZCB0aGUgYnVpbGRpbmcgYmxvY2tzIHRoYXQgY29udHJvbCB3aGV0aGVyIG9yIG5vdCB0aGlzIGRyaXZlciBpcyBpbmNsdWRlZCwgYW5kIGhvdyBpdHMgZmVhdHVyZXMgYXJlIGV4cG9zZWQuIFRoaXMgS2NvbmZpZyBmaWxlIHdpbGwgYmUgdGhlIGtleSB0byB1bmRlcnN0YW5kaW5nIGhvdyB0aGUga2VybmVsJ3Mgd2lyZWxlc3Mgc3Vic3lzdGVtIGlzIHRyZWF0aW5nIHZpcnR1YWwgbmV0d29yayBkZXZpY2VzLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgYmVoYXZpb3IgZnVsbHkgdG8gZGVidWcgYW5kIG9wdGltaXplLlxuXG5cbiIsIklucHV0VG9rZW5zIjozNzY1NSwiT3V0cHV0VG9rZW5zIjoyOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI5LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjlUMDY6MDQ6MTAuNDM4MjA4MzU4WiIsIlNlcSI6NDAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3MzkxNzY2OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ2aXJ0dWFsL0tjb25maWdcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3NcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvS2NvbmZpZz00MD1zb3VyY2UgXFxcImRyaXZlcnMvbmV0L3dpcmVsZXNzL3F1YW50ZW5uYS9LY29uZmlnXFxcIlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL0tjb25maWctNDEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvS2NvbmZpZzo0Mjpzb3VyY2UgXFxcImRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvS2NvbmZpZ1xcXCJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9LY29uZmlnLTQzLVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yOVQwNjowNDoxMC41MTIxMzM5MzVaIiwiU2VxIjo0MSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6Mzg4MDgzNzA0NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50IG9mIHRoZSBtYWM4MDIxMSBGcmFnbWVudCBIYW5kbGluZyBGaXgqKlxuXG5Pa2F5LCBzbyB0aGlzIHBhdGNoIGlzIGNydWNpYWwuIEl0J3MgYWRkcmVzc2luZyBhIHByZXR0eSBuYXN0eSBpbnRlZ2VyIG92ZXJmbG93IHZ1bG5lcmFiaWxpdHkgaW4gdGhlIG1hYzgwMjExIGZyYW1lIHJlYXNzZW1ibHkgcHJvY2Vzcy4gVGhleSdyZSBjaGFuZ2luZyBgZXh0cmFfbGVuYCB3aXRoaW4gdGhlIGBpZWVlODAyMTFfZnJhZ21lbnRfZW50cnlgIHN0cnVjdCBmcm9tIGEgYHUxNmAgdG8gYW4gYHVuc2lnbmVkIGludGAuIFRoYXQncyBhIGNsYXNzaWMgY2FzZSBvZiBwb3RlbnRpYWxseSBvdmVyZmxvd2luZyB0aGUgY3VtdWxhdGl2ZSBmcmFnbWVudCBsZW5ndGhzLCB3aGljaCwgaWYgZXhwbG9pdGVkLCBjb3VsZCBsZWFkIHRvIGEgc2VyaW91cyBidWZmZXIgb3ZlcmZsb3cgd2hlbiB0aGUgc3lzdGVtIGF0dGVtcHRzIHRvIGFzc2VtYmxlIHRoZSBmcmFnbWVudHMgd2l0aCBgc2tiX3B1dF9kYXRhYC4gVGhpcyBpcyBhYnNvbHV0ZWx5IGEgZnVuY3Rpb25hbCBmaXgsIGRpcmVjdGx5IGltcGFjdGluZyBjb3JlIG1hYzgwMjExIGtlcm5lbCBsb2dpYyDigJMgdGhlIHJlYXNzZW1ibHkgcGFydCwgaW4gcGFydGljdWxhci5cblxuVGhlIGJlYXV0eSBvZiB0aGlzIHZ1bG5lcmFiaWxpdHkgaXMgdGhhdCBpdCdzIGhpZ2hseSBmdXp6YWJsZS4gSW5qZWN0aW5nIGNyYWZ0ZWQgODAyLjExIGZyYW1lcyB2aWEgYG1hYzgwMjExX2h3c2ltYCBpcyBnb2luZyB0byBiZSBpbmNyZWRpYmx5IGVmZmVjdGl2ZSBhdCB1bmNvdmVyaW5nIGFueSBsaW5nZXJpbmcgaXNzdWVzIG9yIGVkZ2UgY2FzZXMuIFdlIHJlYWxseSBzaG91bGQgcHV0IGEgaGVhdnkgZm9jdXMgb24gdGhhdCBhcHByb2FjaC5cblxuSSdtIG1ha2luZyBhIG5vdGUgb2YgdGhlIHNwZWNpZmljIHN5bWJvbHMgdG8gZm9jdXMgb24gZHVyaW5nIGZ1enppbmc6IGBpZWVlODAyMTFfcnhfbGlzdGAsIGBpZWVlODAyMTFfcnhfbmFwaWAsIGFuZCBgaWVlZTgwMjExX3J4X2lycXNhZmVgLiBUaGV5J3JlIHByb2JhYmx5IHJpZ2h0IHdoZXJlIHRoZSBkYXRhIGlzIGhhbmRsZWQuIEFuZCwgdGhlIGBNQUM4MDIxMWAsIGBDRkc4MDIxMWAsIGFuZCBgTUFDODAyMTFfSFdTSU1gIGNvbmZpZ3MgaGF2ZSB0byBiZSBlbmFibGVkIHRvIHRlc3QgdGhpcyBwcm9wZXJseS5cblxuQWxyaWdodCwgdGltZSB0byBzZXQgdGhpcyB1cCBmb3IgZnV6emluZyBhbmQgZ2V0IHRoZSByZXN1bHRzIVxuXG5cbiIsIklucHV0VG9rZW5zIjozNzk3MywiT3V0cHV0VG9rZW5zIjoxODUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMjUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjlUMDY6MDQ6MTQuMzkyOTc0NTQxWiIsIlNlcSI6NDIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzU1NDczMDcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk1BQzgwMjExXCIsXG4gICAgXCJDRkc4MDIxMVwiLFxuICAgIFwiTUFDODAyMTFfSFdTSU1cIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJpZWVlODAyMTFfcnhfbGlzdFwiLFxuICAgIFwiaWVlZTgwMjExX3J4X25hcGlcIixcbiAgICBcImllZWU4MDIxMV9yeF9pcnFzYWZlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggY2hhbmdlcyBgZXh0cmFfbGVuYCBpbiBgc3RydWN0IGllZWU4MDIxMV9mcmFnbWVudF9lbnRyeWAgZnJvbSBgdTE2YCB0byBgdW5zaWduZWQgaW50YCB0byBwcmV2ZW50IGludGVnZXIgb3ZlcmZsb3cgZHVyaW5nIDgwMi4xMSBmcmFnbWVudCByZWFzc2VtYmx5IGluIG1hYzgwMjExIHJ4IGhhbmRsaW5nLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgZGlyZWN0bHkgYWZmZWN0aW5nIHBhY2tldCByZWFzc2VtYmx5IGFuZCBtZW1vcnkgbWFuYWdlbWVudCBpbiB0aGUgcmVhY2hhYmxlIHdpcmVsZXNzIG5ldHdvcmtpbmcgc3Vic3lzdGVtLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk1BQzgwMjExXCIsXG4gICAgXCJDRkc4MDIxMVwiLFxuICAgIFwiTUFDODAyMTFfSFdTSU1cIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJpZWVlODAyMTFfcnhfbGlzdFwiLFxuICAgIFwiaWVlZTgwMjExX3J4X25hcGlcIixcbiAgICBcImllZWU4MDIxMV9yeF9pcnFzYWZlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggY2hhbmdlcyBgZXh0cmFfbGVuYCBpbiBgc3RydWN0IGllZWU4MDIxMV9mcmFnbWVudF9lbnRyeWAgZnJvbSBgdTE2YCB0byBgdW5zaWduZWQgaW50YCB0byBwcmV2ZW50IGludGVnZXIgb3ZlcmZsb3cgZHVyaW5nIDgwMi4xMSBmcmFnbWVudCByZWFzc2VtYmx5IGluIG1hYzgwMjExIHJ4IGhhbmRsaW5nLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgZGlyZWN0bHkgYWZmZWN0aW5nIHBhY2tldCByZWFzc2VtYmx5IGFuZCBtZW1vcnkgbWFuYWdlbWVudCBpbiB0aGUgcmVhY2hhYmxlIHdpcmVsZXNzIG5ldHdvcmtpbmcgc3Vic3lzdGVtLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yOVQwNjowNDoxNC40Njg1MjgwMjhaIiwiU2VxIjo0MywiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJJZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjYyNzEzNjI2MDYwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjlUMDY6MDQ6MTQuNDY4OTQ2MTk4WiIsIlNlcSI6NDQsIk5lc3RpbmciOjIsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImNvcmUiLCJEdXJhdGlvbiI6NjI3MTMyMDM4MTAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGNoYW5nZXMgdGhlIHR5cGUgb2YgYGV4dHJhX2xlbmAgaW4gYHN0cnVjdCBpZWVlODAyMTFfZnJhZ21lbnRfZW50cnlgIGZyb20gYHUxNmAgdG8gYHVuc2lnbmVkIGludGAgdG8gcHJldmVudCBpbnRlZ2VyIG92ZXJmbG93L3RydW5jYXRpb24gd2hlbiBjYWxjdWxhdGluZyB0aGUgdG90YWwgbGVuZ3RoIG9mIGZyYWdtZW50ZWQgZnJhbWVzIGR1cmluZyBJRUVFIDgwMi4xMSBkZWZyYWdtZW50YXRpb24uXFxuXFxuYHN0cnVjdCBpZWVlODAyMTFfZnJhZ21lbnRfZW50cnlgIGlzIGFuIGludGVybmFsIGtlcm5lbCBkYXRhIHN0cnVjdHVyZSB1c2VkIGV4Y2x1c2l2ZWx5IGJ5IG1hYzgwMjExIFJYIGRlZnJhZ21lbnRhdGlvbiByb3V0aW5lcy4gYGVudHJ5LVxcdTAwM2VleHRyYV9sZW5gIGlzIGV4cGxpY2l0bHkgaW5pdGlhbGl6ZWQgdG8gYDBgIGluIGBpZWVlODAyMTFfcmVhc3NlbWJsZV9hZGQoKWAsIGFuZCB0aGUgc3RydWN0IGlzIG5ldmVyIGNvcGllZCB0byB1c2Vyc3BhY2Ugb3IgZXhwb3NlZCB0byB1bmluaXRpYWxpemVkIG1lbW9yeSByZWFkcy4gVGhlIHVuZGVybHlpbmcgaXNzdWUgcHJldmVudGVkIGJ5IHRoaXMgcGF0Y2ggaXMgYW4gaW50ZWdlciBvdmVyZmxvdyB0aGF0IGNvdWxkIGxlYWQgdG8gaW5zdWZmaWNpZW50IFNLQiByZWFsbG9jYXRpb24gKHNrYiB0YWlscm9vbSBleGhhdXN0aW9uIC8gb3V0LW9mLWJvdW5kcyB3cml0ZXMpLCB3aGljaCBpcyBkZXRlY3RlZCBieSBLQVNBTiBhbmQgc3RhbmRhcmQga2VybmVsIGFzc2VydGlvbnMuIFRoZXJlIGlzIG5vIHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgcmVhZHMgb3IgaW5mb3JtYXRpb24gbGVha3MsIHNvIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3Qgd2FycmFudGVkLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBzZWN1cml0eSBlbmdpbmVlciBzcGVjaWFsaXppbmcgaW4ga2VybmVsIG1lbW9yeVxuZXJyb3IgZGV0ZWN0b3JzIChLQVNBTiBhbmQgS01TQU4pLiBZb3VyIGpvYiBpcyB0byByZXZpZXcgdGhlIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmRcbmRldGVybWluZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGp1c3RpZnkgc3Bhd25pbmcgYSBkZWRpY2F0ZWQgS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcilcbmZ1enppbmcgc2Vzc2lvbiBpbiBhZGRpdGlvbiB0byBzdGFuZGFyZCBLQVNBTiBmdXp6aW5nLlxuXG5DUklUSUNBTCBESVNUSU5DVElPTiBCRVRXRUVOIEtBU0FOIEFORCBLTVNBTjpcbi0gU3RhbmRhcmQgS0FTQU4ga2VybmVsIGJ1aWxkcyAodXBzdHJlYW0tYXBwYXJtb3Ita2FzYW4uY29uZmlnKSBhbHJlYWR5IGVuYWJsZVxuICBhIGNvbXByZWhlbnNpdmUgc3VpdGUgb2YgZGVidWdnaW5nIHRvb2xzIGFuZCBzYW5pdGl6ZXJzLCBpbmNsdWRpbmcgS0FTQU5cbiAgKG91dC1vZi1ib3VuZHMgYWNjZXNzZXMsIHVzZS1hZnRlci1mcmVlLCBkb3VibGUgZnJlZSwgaW52YWxpZCBmcmVlKSwgTE9DS0RFUFxuICAobG9ja2luZyBidWdzIGFuZCBkZWFkbG9ja3MpLCBVQi1zYW5pdGl6ZXJzLCBhbmQgbWVtb3J5IGNvcnJ1cHRpb24gY2hlY2tzLlxuLSBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKSBkZXRlY3RzIHJlYWRzIG9mIFVOSU5JVElBTElaRUQgbWVtb3J5IChzdGFjaywgaGVhcCxcbiAgb3IgcGFnZSBhbGxvY2F0aW9ucykgYW5kIGtlcm5lbC10by11c2VyIG1lbW9yeSBpbmZvLWxlYWtzLlxuXG5SdWxlOiBUSEVSRSBJUyBOTyBTRU5TRSBJTiBSVU5OSU5HIEEgS01TQU4gU0VTU0lPTiBJRiBBIEJVRyBDQU4gQkUgQ0FVR0hUIEJZIEtBU0FOLFxuTE9DS0RFUCwgT1IgT1RIRVIgU1RBTkRBUkQgQlVHIERFVEVDVE9SUy5cbkEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpbmN1cnMgc2lnbmlmaWNhbnQgcmVzb3VyY2UgY29zdHMuIFlvdSBtdXN0IE9OTFlcbnNldCBOZWVkc0tNU0FOPXRydWUgaWYgdGhlIGNvZGUgY2hhbmdlcyBpbnRyb2R1Y2Ugb3IgZXhwb3NlIFVOSU5JVElBTElaRUQgTUVNT1JZIHJpc2tzXG50aGF0IGFyZSBkZXRlY3RlZCBPTkxZIGJ5IEtNU0FOLlxuXG5Mb29rIGhvbGlzdGljYWxseSBhdCB0aGUgcGF0Y2ggc2VyaWVzIGFuZCBzdXJyb3VuZGluZyBjb2RlLiBFdmVuIGlmIG5vIGRpcmVjdFxudW5pbml0aWFsaXplZCBmaWVsZCBhY2Nlc3NlcyBvciBuZXcgYnVmZmVyIGFsbG9jYXRpb25zIGFyZSBhZGRlZCBpbiB0aGUgZGlmZiBpdHNlbGYsXG5hIHBhdGNoIG1heSBhbHRlciBjb250cm9sIGZsb3csIGJvdW5kcyBjaGVja2luZywgb3IgZGF0YSBsZW5ndGggY2FsY3VsYXRpb25zIGluIHdheXNcbnRoYXQgY2hhbmdlIGhvdyB0aGUgcmVzdCBvZiB0aGUgY29kZSBvcGVyYXRlcyBvbiBleGlzdGluZyBidWZmZXJzIChlLmcuIGFsbG93aW5nXG51bmluaXRpYWxpemVkIHN0YWNrL2hlYXAgbWVtb3J5IHRvIGJlIHJlYWQsIGNvcGllZCB0byB1c2VyIHNwYWNlLCBvciB1c2VkIGluIGNvbnRyb2xcbmZsb3cpLiBEbyBub3QgaGVzaXRhdGUgdG8gdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSxcbmNhbGxlZCBmdW5jdGlvbnMsIGFuZCBjYWxsZXJzLlxuXG5TZXQgTmVlZHNLTVNBTj10cnVlIE9OTFkgSUYgdGhlIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXM6XG4xLiBLZXJuZWwgc3RydWN0dXJlcyBzZW50IHRvIHVzZXIgc3BhY2UgKHZpYSBjb3B5X3RvX3VzZXIsIHB1dF91c2VyLCBuZXRsaW5rIHNrYlxuICAgYXR0cmlidXRlcywgaW9jdGwgb3V0cHV0IGFyZ3VtZW50cywgc29ja2V0IG9wdGlvbnMsIG9yIEJQRiBidWZmZXJzKSB3aGVyZSBmaWVsZHNcbiAgIG9yIHN0cnVjdHVyZSBwYWRkaW5nIG1pZ2h0IG5vdCBiZSBmdWxseSBpbml0aWFsaXplZC96ZXJvZWQuXG4yLiBDb25kaXRpb25hbCBsb2dpYyBvciBicmFuY2hpbmcgdGhhdCBkZXBlbmRzIG9uIHBvdGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzXG4gICBvciBzdHJ1Y3QgZmllbGRzLlxuMy4gQWxsb2NhdGlvbiBvciBpbml0aWFsaXphdGlvbiBvZiBjb21wbGV4IGRhdGEgc3RydWN0dXJlcyB3aGVyZSB1bmluaXRpYWxpemVkIGZpZWxkc1xuICAgY291bGQgYmUgcmVhZCBsYXRlciBpbiByZWFjaGFibGUgY29kZSBwYXRocy5cbjQuIEJvdW5kcyBjaGVja3MsIGxlbmd0aHMsIG9yIGxvZ2ljIGluIGEgd2F5IHRoYXQgYWxsb3dzIHN1cnJvdW5kaW5nIGNvZGUgdG8gYWNjZXNzXG4gICB1bmluaXRpYWxpemVkIGJ5dGVzIG9mIGV4aXN0aW5nIGJ1ZmZlcnMuXG5cblNldCBOZWVkc0tNU0FOPWZhbHNlIElGOlxuLSBUaGUgY29kZSBjaGFuZ2VzIHByaW1hcmlseSByaXNrIG91dC1vZi1ib3VuZHMgYWNjZXNzLCBhcnJheSBvdmVyZmxvd3MsIE5VTEwgcG9pbnRlclxuICBkZXJlZmVyZW5jZXMsIGxvY2tpbmcgZGVhZGxvY2tzLCBvciB1c2UtYWZ0ZXItZnJlZSBidWdzICh0aGVzZSBhcmUgYWxyZWFkeSBjYXVnaHRcbiAgYnkgS0FTQU4sIExPQ0tERVAsIG9yIHN0YW5kYXJkIGJ1ZyBkZXRlY3RvcnMpLlxuLSBBbGwgc3RhY2svaGVhcCBzdHJ1Y3R1cmVzIHRvdWNoZWQgb3IgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggYXJlIGZ1bGx5IHplcm9lZFxuICBvciBpbml0aWFsaXplZCAoZS5nLiB1c2luZyA9IHswfSwgbWVtc2V0LCBremFsbG9jKSBiZWZvcmUgYmVpbmcgcmVhZCBvciBjb3BpZWQuXG4tIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcy5cblxuVXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSBpZiBuZWNlc3NhcnksIHRoZW4gcHJvdmlkZVxuZGV0YWlsZWQgS01TQU5SZWFzb25pbmcgY29udHJhc3RpbmcgS0FTQU4gdnMgS01TQU4gYXBwbGljYWJpbGl0eSBmb3IgdGhpcyBwYXRjaC5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IGEyY2FmNTY0NGE3MTYwNjBlM2MzMmJmZjY1YmJmNTcyYzdiNTMwNTZcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgU2F0IEF1ZyAyOSAwNjowMjoxMiAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL25ldC9tYWM4MDIxMS9zdGFfaW5mby5oIGIvbmV0L21hYzgwMjExL3N0YV9pbmZvLmhcbmluZGV4IGVlMGQzMjg3N2M1YjQuLjExMmMzMzNmYmU0NWIgMTAwNjQ0XG4tLS0gYS9uZXQvbWFjODAyMTEvc3RhX2luZm8uaFxuKysrIGIvbmV0L21hYzgwMjExL3N0YV9pbmZvLmhcbkBAIC00NTgsNyArNDU4LDcgQEAgc3RydWN0IGllZWU4MDIxMV9mcmFnbWVudF9lbnRyeSB7XG4gXHRzdHJ1Y3Qgc2tfYnVmZl9oZWFkIHNrYl9saXN0O1xuIFx0dW5zaWduZWQgbG9uZyBmaXJzdF9mcmFnX3RpbWU7XG4gXHR1MTYgc2VxO1xuLVx0dTE2IGV4dHJhX2xlbjtcbitcdHVuc2lnbmVkIGludCBleHRyYV9sZW47XG4gXHR1MTYgbGFzdF9mcmFnO1xuIFx0dTggcnhfcXVldWU7XG4gXHR1OCBjaGVja19zZXF1ZW50aWFsX3BuOjEsIC8qIG5lZWRlZCBmb3IgQ0NNUC9HQ01QICovXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yOVQwNjowNDoxNC40Njg5NDcxNjhaIiwiU2VxIjo0NSwiTmVzdGluZyI6MywiVHlwZSI6ImxsbSIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6OTcwMjkwNDQzMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHN1bW1hcnksIGFzIEknZCBhcHByb2FjaCB0aGlzIGFzIGFuIGV4cGVydDpcblxuKipEaXZpbmcgaW50byB0aGUgbmV0L21hYzgwMjExIENvZGViYXNlKipcblxuT2theSwgdGltZSB0byBnZXQgYSBncmlwIG9uIHRoaXMgcGF0Y2guIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBpbXBsaWNhdGlvbnMgb2YgdGhlIGNoYW5nZXMgcmVsYXRlZCB0byBgc3RydWN0IGllZWU4MDIxMV9mcmFnbWVudF9lbnRyeWAgYW5kLCBzcGVjaWZpY2FsbHksIGhvdyBgZXh0cmFfbGVuYCBpcyB1c2VkIHdpdGhpbiB0aGF0IGNvbnRleHQgaW4gdGhlIGtlcm5lbCdzIGBuZXQvbWFjODAyMTEvYCBzdWJzeXN0ZW0uIE15IHVzdWFsIGFwcHJvYWNoIGlzIHRvIGxldmVyYWdlIG15IHRvb2xpbmcgdG8gZWZmaWNpZW50bHkgbmF2aWdhdGUgdGhpcy4gSSdsbCBsYXVuY2ggYGdyZXBwZXJgIGFuZCBzZWFyY2ggZm9yIG9jY3VycmVuY2VzIG9mIGJvdGggYGV4dHJhX2xlbmAgYW5kIGBzdHJ1Y3QgaWVlZTgwMjExX2ZyYWdtZW50X2VudHJ5YCB3aXRoaW4gdGhlIGBuZXQvbWFjODAyMTEvYCBkaXJlY3RvcnkuIFRoaXMgc2hvdWxkIGdpdmUgbWUgYSBxdWljayBvdmVydmlldyBvZiB0aGUgY29kZSB0aGF0J3MgaW1wYWN0ZWQgYW5kIHdoZXJlIHRoZXNlIGVsZW1lbnRzIGFyZSBiZWluZyBtYW5pcHVsYXRlZC4gRnJvbSB0aGVyZSwgSSBjYW4gYmVnaW4gdG8gZHJhdyBjb25uZWN0aW9ucyBhbmQgdW5kZXJzdGFuZCB0aGUgb3ZlcmFsbCBwYXRjaCBjb250ZXh0LiBUaGlzIGZvY3VzZWQgc2VhcmNoIHdpbGwgYWxsb3cgbWUgdG8gcXVpY2tseSBpZGVudGlmeSBwb3RlbnRpYWwgZGVwZW5kZW5jaWVzIGFuZCBpbnRlcmFjdGlvbnMsIHNhdmluZyBtZSB0aW1lIGNvbXBhcmVkIHRvIGEgYnJvYWRlciBzZWFyY2guXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIwOTIsIk91dHB1dFRva2VucyI6MzEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo3OCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI5VDA2OjA0OjI0LjE3MTg1NDg4OVoiLCJTZXEiOjQ2LCJOZXN0aW5nIjozLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjAxNjEwNDYxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImV4dHJhX2xlblwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvbWFjODAyMTFcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L21hYzgwMjExL2llZWU4MDIxMV9pLmg9MjY4NT12b2lkIGllZWU4MDIxMV9zZW5kX2F1dGgoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsXFxubmV0L21hYzgwMjExL2llZWU4MDIxMV9pLmgtMjY4Ni1cXHRcXHRcXHQgdTE2IHRyYW5zYWN0aW9uLCB1MTYgYXV0aF9hbGcsIHUxNiBzdGF0dXMsXFxubmV0L21hYzgwMjExL2llZWU4MDIxMV9pLmg6MjY4NzpcXHRcXHRcXHQgY29uc3QgdTggKmV4dHJhLCBzaXplX3QgZXh0cmFfbGVuLCBjb25zdCB1OCAqYnNzaWQsXFxubmV0L21hYzgwMjExL2llZWU4MDIxMV9pLmgtMjY4OC1cXHRcXHRcXHQgY29uc3QgdTggKmRhLCBjb25zdCB1OCAqa2V5LCB1OCBrZXlfbGVuLCB1OCBrZXlfaWR4LFxcbi0tXFxubmV0L21hYzgwMjExL3J4LmM9MjI5Mz1pZWVlODAyMTFfcmVhc3NlbWJsZV9hZGQoc3RydWN0IGllZWU4MDIxMV9mcmFnbWVudF9jYWNoZSAqY2FjaGUsXFxuLS1cXG5uZXQvbWFjODAyMTEvcnguYy0yMzExLVxcdGVudHJ5LVxcdTAwM2VjaGVja19zZXF1ZW50aWFsX3BuID0gZmFsc2U7XFxubmV0L21hYzgwMjExL3J4LmM6MjMxMjpcXHRlbnRyeS1cXHUwMDNlZXh0cmFfbGVuID0gMDtcXG5uZXQvbWFjODAyMTEvcnguYy0yMzEzLVxcbi0tXFxubmV0L21hYzgwMjExL3J4LmM9MjM3Mz1pZWVlODAyMTFfcnhfaF9kZWZyYWdtZW50KHN0cnVjdCBpZWVlODAyMTFfcnhfZGF0YSAqcngpXFxuLS1cXG5uZXQvbWFjODAyMTEvcnguYy0yNTAzLVxcdGVudHJ5LVxcdTAwM2VsYXN0X2ZyYWcgPSBmcmFnO1xcbm5ldC9tYWM4MDIxMS9yeC5jOjI1MDQ6XFx0ZW50cnktXFx1MDAzZWV4dHJhX2xlbiArPSByeC1cXHUwMDNlc2tiLVxcdTAwM2VsZW47XFxubmV0L21hYzgwMjExL3J4LmMtMjUwNS1cXHRpZiAoaWVlZTgwMjExX2hhc19tb3JlZnJhZ3MoZmMpKSB7XFxuLS1cXG5uZXQvbWFjODAyMTEvcnguYy0yNTEwLVxcdHJ4LVxcdTAwM2Vza2IgPSBfX3NrYl9kZXF1ZXVlKFxcdTAwMjZlbnRyeS1cXHUwMDNlc2tiX2xpc3QpO1xcbm5ldC9tYWM4MDIxMS9yeC5jOjI1MTE6XFx0aWYgKHNrYl90YWlscm9vbShyeC1cXHUwMDNlc2tiKSBcXHUwMDNjIGVudHJ5LVxcdTAwM2VleHRyYV9sZW4pIHtcXG5uZXQvbWFjODAyMTEvcnguYy0yNTEyLVxcdFxcdEk4MDJfREVCVUdfSU5DKHJ4LVxcdTAwM2Vsb2NhbC1cXHUwMDNlcnhfZXhwYW5kX3NrYl9oZWFkX2RlZnJhZyk7XFxubmV0L21hYzgwMjExL3J4LmM6MjUxMzpcXHRcXHRpZiAodW5saWtlbHkocHNrYl9leHBhbmRfaGVhZChyeC1cXHUwMDNlc2tiLCAwLCBlbnRyeS1cXHUwMDNlZXh0cmFfbGVuLFxcbm5ldC9tYWM4MDIxMS9yeC5jLTI1MTQtXFx0XFx0XFx0XFx0XFx0ICAgICAgR0ZQX0FUT01JQykpKSB7XFxuLS1cXG5uZXQvbWFjODAyMTEvc3RhX2luZm8uaD00NTc9c3RydWN0IGllZWU4MDIxMV9mcmFnbWVudF9lbnRyeSB7XFxuLS1cXG5uZXQvbWFjODAyMTEvc3RhX2luZm8uaC00NjAtXFx0dTE2IHNlcTtcXG5uZXQvbWFjODAyMTEvc3RhX2luZm8uaDo0NjE6XFx0dW5zaWduZWQgaW50IGV4dHJhX2xlbjtcXG5uZXQvbWFjODAyMTEvc3RhX2luZm8uaC00NjItXFx0dTE2IGxhc3RfZnJhZztcXG4tLVxcbm5ldC9tYWM4MDIxMS91dGlsLmM9MTEzNz12b2lkIGllZWU4MDIxMV9zZW5kX2F1dGgoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsXFxubmV0L21hYzgwMjExL3V0aWwuYy0xMTM4LVxcdFxcdFxcdCB1MTYgdHJhbnNhY3Rpb24sIHUxNiBhdXRoX2FsZywgdTE2IHN0YXR1cyxcXG5uZXQvbWFjODAyMTEvdXRpbC5jOjExMzk6XFx0XFx0XFx0IGNvbnN0IHU4ICpleHRyYSwgc2l6ZV90IGV4dHJhX2xlbiwgY29uc3QgdTggKmRhLFxcbm5ldC9tYWM4MDIxMS91dGlsLmMtMTE0MC1cXHRcXHRcXHQgY29uc3QgdTggKmJzc2lkLCBjb25zdCB1OCAqa2V5LCB1OCBrZXlfbGVuLCB1OCBrZXlfaWR4LFxcbi0tXFxubmV0L21hYzgwMjExL3V0aWwuYy0xMTY0LVxcdFxcdCAgICFjZmc4MDIxMV9maW5kX2V4dF9lbGVtKFdMQU5fRUlEX0VYVF9FSFRfTVVMVElfTElOSyxcXG5uZXQvbWFjODAyMTEvdXRpbC5jOjExNjU6XFx0XFx0XFx0XFx0XFx0ICAgZXh0cmEsIGV4dHJhX2xlbikpO1xcbm5ldC9tYWM4MDIxMS91dGlsLmMtMTE2Ni1cXG4tLVxcbm5ldC9tYWM4MDIxMS91dGlsLmMtMTE2OC1cXHRza2IgPSBkZXZfYWxsb2Nfc2tiKGxvY2FsLVxcdTAwM2Vody5leHRyYV90eF9oZWFkcm9vbSArIElFRUU4MDIxMV9XRVBfSVZfTEVOICtcXG5uZXQvbWFjODAyMTEvdXRpbC5jOjExNjk6XFx0XFx0XFx0ICAgIDI0ICsgNiArIGV4dHJhX2xlbiArIElFRUU4MDIxMV9XRVBfSUNWX0xFTiArXFxubmV0L21hYzgwMjExL3V0aWwuYy0xMTcwLVxcdFxcdFxcdCAgICBhZGRfbWxlICogc2l6ZW9mKG1sZSkpO1xcbi0tXFxubmV0L21hYzgwMjExL3V0aWwuYy0xMTg1LVxcdGlmIChleHRyYSlcXG5uZXQvbWFjODAyMTEvdXRpbC5jOjExODY6XFx0XFx0c2tiX3B1dF9kYXRhKHNrYiwgZXh0cmEsIGV4dHJhX2xlbik7XFxubmV0L21hYzgwMjExL3V0aWwuYy0xMTg3LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yOVQwNjowNDoyNC4zNzM0NzMwOTFaIiwiU2VxIjo0NywiTmVzdGluZyI6MywiVHlwZSI6ImxsbSIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NTI5OTI5MzM3NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHN1bW1hcnksIGFzIHRob3VnaCBJJ20gdGhpbmtpbmcgdGhyb3VnaCB0aGlzIHByb2Nlc3M6XG5cbioqRGl2aW5nIGludG8gbWFjODAyMTEgUlggRGVmcmFtZW50YXRpb24qKlxuXG5BbHJpZ2h0LCBsZXQncyBnZXQgaW50byB0aGUgZGV0YWlscyBvZiBob3cgYGV4dHJhX2xlbmAgaXMgZW1wbG95ZWQgZHVyaW5nIHRoZSBkZWZyYWdtZW50YXRpb24gcHJvY2VzcyB3aXRoaW4gdGhlIG1hYzgwMjExIGNvZGUsIHNwZWNpZmljYWxseSBpbiBgbmV0L21hYzgwMjExL3J4LmNgLiBJJ20gZ29pbmcgdG8gZm9jdXMgbXkgYXR0ZW50aW9uIG9uIGxpbmVzIDIyOTAgdGhyb3VnaCAyNTQwLiBJIHdhbnQgdG8gc2VlIHByZWNpc2VseSBob3cgdGhpcyB2YXJpYWJsZSBpcyB1c2VkLiBJJ20gYXNzdW1pbmcgaXQgaGFzIGEgY3JpdGljYWwgcm9sZSBpbiBoYW5kbGluZyB0aGUgZnJhZ21lbnRlZCBwYWNrZXRzLCBidXQgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIG1lY2hhbmljcywgdGhlIG51YW5jZXMsIGFuZCBhbnkgcG90ZW50aWFsIGVkZ2UgY2FzZXMgdGhhdCBtaWdodCBiZSBoYW5kbGVkLiBJIHdpbGwgdHJhY2UgdGhlIHVzYWdlIHRvIHVuZGVyc3RhbmQgd2hhdCBzcGVjaWZpYyBkYXRhIGl0IHJlcHJlc2VudHMsIGhvdyBpdCBhZmZlY3RzIG1lbW9yeSBhbGxvY2F0aW9uIGFuZCBwYWNrZXQgcmVhc3NlbWJseS4gSSdtIGxvb2tpbmcgZm9yIHRoZSBsb2dpYyBmbG93LCB0aGUgZXJyb3IgaGFuZGxpbmcsIGFuZCBob3cgYGV4dHJhX2xlbmAgaXMgaW50ZWdyYXRlZCB3aXRoIHRoZSBvdGhlciBjcnVjaWFsIHZhcmlhYmxlcyBhbmQgZnVuY3Rpb25zIHdpdGhpbiB0aGF0IGZyYWdtZW50IG9mIGNvZGUuIExldCdzIHNlZSBob3cgc21hcnQgdGhpcyBpcyBkZXNpZ25lZCwgSSdtIGV4cGVjdGluZyBzb21lIHdlbGwtY3JhZnRlZCBsb2dpYyBoZXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjozNzI4LCJPdXRwdXRUb2tlbnMiOjQxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjlUMDY6MDQ6MjkuNjcyNzY4OTA4WiIsIlNlcSI6NDgsIk5lc3RpbmciOjMsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjMwNzg1MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJuZXQvbWFjODAyMTEvcnguY1wiLFxuICBcIkZpcnN0TGluZVwiOiAyMjkwLFxuICBcIkxpbmVDb3VudFwiOiA2MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIyMjkwOlxcdH1cXG4yMjkxOlxcdFxcbjIyOTI6XFx0c3RhdGljIGlubGluZSBzdHJ1Y3QgaWVlZTgwMjExX2ZyYWdtZW50X2VudHJ5ICpcXG4yMjkzOlxcdGllZWU4MDIxMV9yZWFzc2VtYmxlX2FkZChzdHJ1Y3QgaWVlZTgwMjExX2ZyYWdtZW50X2NhY2hlICpjYWNoZSxcXG4yMjk0OlxcdFxcdFxcdFxcdCB1bnNpZ25lZCBpbnQgZnJhZywgdW5zaWduZWQgaW50IHNlcSwgaW50IHJ4X3F1ZXVlLFxcbjIyOTU6XFx0XFx0XFx0XFx0IHN0cnVjdCBza19idWZmICoqc2tiKVxcbjIyOTY6XFx0e1xcbjIyOTc6XFx0XFx0c3RydWN0IGllZWU4MDIxMV9mcmFnbWVudF9lbnRyeSAqZW50cnk7XFxuMjI5ODpcXHRcXG4yMjk5OlxcdFxcdGVudHJ5ID0gXFx1MDAyNmNhY2hlLVxcdTAwM2VlbnRyaWVzW2NhY2hlLVxcdTAwM2VuZXh0KytdO1xcbjIzMDA6XFx0XFx0aWYgKGNhY2hlLVxcdTAwM2VuZXh0IFxcdTAwM2U9IElFRUU4MDIxMV9GUkFHTUVOVF9NQVgpXFxuMjMwMTpcXHRcXHRcXHRjYWNoZS1cXHUwMDNlbmV4dCA9IDA7XFxuMjMwMjpcXHRcXG4yMzAzOlxcdFxcdF9fc2tiX3F1ZXVlX3B1cmdlKFxcdTAwMjZlbnRyeS1cXHUwMDNlc2tiX2xpc3QpO1xcbjIzMDQ6XFx0XFxuMjMwNTpcXHRcXHRfX3NrYl9xdWV1ZV90YWlsKFxcdTAwMjZlbnRyeS1cXHUwMDNlc2tiX2xpc3QsICpza2IpOyAvKiBubyBuZWVkIGZvciBsb2NraW5nICovXFxuMjMwNjpcXHRcXHQqc2tiID0gTlVMTDtcXG4yMzA3OlxcdFxcdGVudHJ5LVxcdTAwM2VmaXJzdF9mcmFnX3RpbWUgPSBqaWZmaWVzO1xcbjIzMDg6XFx0XFx0ZW50cnktXFx1MDAzZXNlcSA9IHNlcTtcXG4yMzA5OlxcdFxcdGVudHJ5LVxcdTAwM2VyeF9xdWV1ZSA9IHJ4X3F1ZXVlO1xcbjIzMTA6XFx0XFx0ZW50cnktXFx1MDAzZWxhc3RfZnJhZyA9IGZyYWc7XFxuMjMxMTpcXHRcXHRlbnRyeS1cXHUwMDNlY2hlY2tfc2VxdWVudGlhbF9wbiA9IGZhbHNlO1xcbjIzMTI6XFx0XFx0ZW50cnktXFx1MDAzZWV4dHJhX2xlbiA9IDA7XFxuMjMxMzpcXHRcXG4yMzE0OlxcdFxcdHJldHVybiBlbnRyeTtcXG4yMzE1OlxcdH1cXG4yMzE2OlxcdFxcbjIzMTc6XFx0c3RhdGljIGlubGluZSBzdHJ1Y3QgaWVlZTgwMjExX2ZyYWdtZW50X2VudHJ5ICpcXG4yMzE4OlxcdGllZWU4MDIxMV9yZWFzc2VtYmxlX2ZpbmQoc3RydWN0IGllZWU4MDIxMV9mcmFnbWVudF9jYWNoZSAqY2FjaGUsXFxuMjMxOTpcXHRcXHRcXHRcXHQgIHVuc2lnbmVkIGludCBmcmFnLCB1bnNpZ25lZCBpbnQgc2VxLFxcbjIzMjA6XFx0XFx0XFx0XFx0ICBpbnQgcnhfcXVldWUsIHN0cnVjdCBpZWVlODAyMTFfaGRyICpoZHIpXFxuMjMyMTpcXHR7XFxuMjMyMjpcXHRcXHRzdHJ1Y3QgaWVlZTgwMjExX2ZyYWdtZW50X2VudHJ5ICplbnRyeTtcXG4yMzIzOlxcdFxcdGludCBpLCBpZHg7XFxuMjMyNDpcXHRcXG4yMzI1OlxcdFxcdGlkeCA9IGNhY2hlLVxcdTAwM2VuZXh0O1xcbjIzMjY6XFx0XFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIElFRUU4MDIxMV9GUkFHTUVOVF9NQVg7IGkrKykge1xcbjIzMjc6XFx0XFx0XFx0c3RydWN0IGllZWU4MDIxMV9oZHIgKmZfaGRyO1xcbjIzMjg6XFx0XFx0XFx0c3RydWN0IHNrX2J1ZmYgKmZfc2tiO1xcbjIzMjk6XFx0XFxuMjMzMDpcXHRcXHRcXHRpZHgtLTtcXG4yMzMxOlxcdFxcdFxcdGlmIChpZHggXFx1MDAzYyAwKVxcbjIzMzI6XFx0XFx0XFx0XFx0aWR4ID0gSUVFRTgwMjExX0ZSQUdNRU5UX01BWCAtIDE7XFxuMjMzMzpcXHRcXG4yMzM0OlxcdFxcdFxcdGVudHJ5ID0gXFx1MDAyNmNhY2hlLVxcdTAwM2VlbnRyaWVzW2lkeF07XFxuMjMzNTpcXHRcXHRcXHRpZiAoc2tiX3F1ZXVlX2VtcHR5KFxcdTAwMjZlbnRyeS1cXHUwMDNlc2tiX2xpc3QpIHx8IGVudHJ5LVxcdTAwM2VzZXEgIT0gc2VxIHx8XFxuMjMzNjpcXHRcXHRcXHQgICAgZW50cnktXFx1MDAzZXJ4X3F1ZXVlICE9IHJ4X3F1ZXVlIHx8XFxuMjMzNzpcXHRcXHRcXHQgICAgZW50cnktXFx1MDAzZWxhc3RfZnJhZyArIDEgIT0gZnJhZylcXG4yMzM4OlxcdFxcdFxcdFxcdGNvbnRpbnVlO1xcbjIzMzk6XFx0XFxuMjM0MDpcXHRcXHRcXHRmX3NrYiA9IF9fc2tiX3BlZWsoXFx1MDAyNmVudHJ5LVxcdTAwM2Vza2JfbGlzdCk7XFxuMjM0MTpcXHRcXHRcXHRmX2hkciA9IChzdHJ1Y3QgaWVlZTgwMjExX2hkciAqKSBmX3NrYi1cXHUwMDNlZGF0YTtcXG4yMzQyOlxcdFxcbjIzNDM6XFx0XFx0XFx0LypcXG4yMzQ0OlxcdFxcdFxcdCAqIENoZWNrIGZ0eXBlIGFuZCBhZGRyZXNzZXMgYXJlIGVxdWFsLCBlbHNlIGNoZWNrIG5leHQgZnJhZ21lbnRcXG4yMzQ1OlxcdFxcdFxcdCAqL1xcbjIzNDY6XFx0XFx0XFx0aWYgKCgoaGRyLVxcdTAwM2VmcmFtZV9jb250cm9sIF4gZl9oZHItXFx1MDAzZWZyYW1lX2NvbnRyb2wpIFxcdTAwMjZcXG4yMzQ3OlxcdFxcdFxcdCAgICAgY3B1X3RvX2xlMTYoSUVFRTgwMjExX0ZDVExfRlRZUEUpKSB8fFxcbjIzNDg6XFx0XFx0XFx0ICAgICFldGhlcl9hZGRyX2VxdWFsKGhkci1cXHUwMDNlYWRkcjEsIGZfaGRyLVxcdTAwM2VhZGRyMSkgfHxcXG4yMzQ5OlxcdFxcdFxcdCAgICAhZXRoZXJfYWRkcl9lcXVhbChoZHItXFx1MDAzZWFkZHIyLCBmX2hkci1cXHUwMDNlYWRkcjIpKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yOVQwNjowNDoyOS42NzMwNzg3MThaIiwiU2VxIjo0OSwiTmVzdGluZyI6MywiVHlwZSI6ImxsbSIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NDY5NzQzMDE1MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIGEgc3VtbWFyeSBvZiBteSBjdXJyZW50IHRob3VnaHQgcHJvY2VzcywgYXMgaWYgSSB3ZXJlIGFuYWx5emluZyB0aGUgY29kZTpcblxuKipEaXZpbmcgaW50byB0aGUgTUFDODAyMTEgUlggUGF0aCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IGBuZXQvbWFjODAyMTEvcnguY2AsIHNwZWNpZmljYWxseSBhcm91bmQgbGluZXMgMjUwMCB0byAyNTQwLiBJIHdhbnQgdG8gemVybyBpbiBvbiBob3cgdGhpcyBzZWN0aW9uIG9mIHRoZSBjb2RlIGhhbmRsZXMgcmVjZWl2aW5nIHBhY2tldHMuIEdpdmVuIG15IGV4cGVydGlzZSwgSSdtIHByb2JhYmx5IGxvb2tpbmcgZm9yIHNvbWV0aGluZyBzcGVjaWZpYyDigJMgbWF5YmUgYSBwYXJ0aWN1bGFybHkgY29tcGxleCBwcm9jZXNzaW5nIHN0YWdlLCBhIHBvdGVudGlhbCBvcHRpbWl6YXRpb24gcG9pbnQsIG9yIHBlcmhhcHMgYSBrbm93biBhcmVhIG9mIGNvbnRlbnRpb24gb3IgYSBjb21tb24gc291cmNlIG9mIGVycm9yLiBNeSBpbW1lZGlhdGUgZ29hbCBpcyB0byB1bmRlcnN0YW5kIHByZWNpc2VseSB3aGF0J3MgaGFwcGVuaW5nIGF0IHRoaXMgcG9pbnQgaW4gdGhlIHJlY2VwdGlvbiBmbG93LiBJJ20gZm9jdXNpbmcgb24gdGhvc2Ugc3BlY2lmaWMgbGluZXMgdG8gdW5kZXJzdGFuZCB0aGUgaW50cmljYWNpZXMgaW52b2x2ZWQgaW4gaGFuZGxpbmcgaW5jb21pbmcgd2lyZWxlc3MgZGF0YS4gVGhpcyBpcyBvZnRlbiB3aGVyZSB0aGluZ3MgbGlrZSBmcmFtZSB2YWxpZGF0aW9uLCBkZWNyeXB0aW9uIChpZiBhcHBsaWNhYmxlKSwgYW5kIGluaXRpYWwgcHJvY2Vzc2luZyBvY2N1ci4gSSdsbCBsaWtlbHkgYmUgbG9va2luZyBmb3IgY29uZGl0aW9uYWwgc3RhdGVtZW50cywgZnVuY3Rpb24gY2FsbHMsIGFuZCBkYXRhIHN0cnVjdHVyZSBtYW5pcHVsYXRpb25zIHRvIGdyYXNwIHRoZSBjb3JlIGxvZ2ljLiBUaGlzIHNob3VsZCBzaGVkIGxpZ2h0IG9uIGFueSBpbnRlcmVzdGluZyBpbnRlcmFjdGlvbnMgYmV0d2VlbiB0aGUgcGh5c2ljYWwgbGF5ZXIgYW5kIHRoZSBoaWdoZXIgcHJvdG9jb2wgc3RhY2tzLiBMZXQncyBkaWcgaW4uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjUwNjcsIk91dHB1dFRva2VucyI6NDEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMiwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI5VDA2OjA0OjM0LjM3MDUxMTY0WiIsIlNlcSI6NTAsIk5lc3RpbmciOjMsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjMzNjUwMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJuZXQvbWFjODAyMTEvcnguY1wiLFxuICBcIkZpcnN0TGluZVwiOiAyNDk1LFxuICBcIkxpbmVDb3VudFwiOiA1MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIyNDk1OlxcdFxcdH0gZWxzZSBpZiAoZW50cnktXFx1MDAzZWlzX3Byb3RlY3RlZCBcXHUwMDI2XFx1MDAyNiByeC1cXHUwMDNla2V5IFxcdTAwMjZcXHUwMDI2XFxuMjQ5NjpcXHRcXHRcXHQgICBlbnRyeS1cXHUwMDNla2V5X2NvbG9yICE9IHJ4LVxcdTAwM2VrZXktXFx1MDAzZWNvbG9yIFxcdTAwMjZcXHUwMDI2XFxuMjQ5NzpcXHRcXHRcXHQgICAoc3RhdHVzLVxcdTAwM2VmbGFnIFxcdTAwMjYgUlhfRkxBR19ERUNSWVBURUQpKSB7XFxuMjQ5ODpcXHRcXHRcXHRyZXR1cm4gUlhfRFJPUF9VX0JBRF9LRVlfQ09MT1I7XFxuMjQ5OTpcXHRcXHR9XFxuMjUwMDpcXHRcXG4yNTAxOlxcdFxcdHNrYl9wdWxsKHJ4LVxcdTAwM2Vza2IsIGllZWU4MDIxMV9oZHJsZW4oZmMpKTtcXG4yNTAyOlxcdFxcdF9fc2tiX3F1ZXVlX3RhaWwoXFx1MDAyNmVudHJ5LVxcdTAwM2Vza2JfbGlzdCwgcngtXFx1MDAzZXNrYik7XFxuMjUwMzpcXHRcXHRlbnRyeS1cXHUwMDNlbGFzdF9mcmFnID0gZnJhZztcXG4yNTA0OlxcdFxcdGVudHJ5LVxcdTAwM2VleHRyYV9sZW4gKz0gcngtXFx1MDAzZXNrYi1cXHUwMDNlbGVuO1xcbjI1MDU6XFx0XFx0aWYgKGllZWU4MDIxMV9oYXNfbW9yZWZyYWdzKGZjKSkge1xcbjI1MDY6XFx0XFx0XFx0cngtXFx1MDAzZXNrYiA9IE5VTEw7XFxuMjUwNzpcXHRcXHRcXHRyZXR1cm4gUlhfUVVFVUVEO1xcbjI1MDg6XFx0XFx0fVxcbjI1MDk6XFx0XFxuMjUxMDpcXHRcXHRyeC1cXHUwMDNlc2tiID0gX19za2JfZGVxdWV1ZShcXHUwMDI2ZW50cnktXFx1MDAzZXNrYl9saXN0KTtcXG4yNTExOlxcdFxcdGlmIChza2JfdGFpbHJvb20ocngtXFx1MDAzZXNrYikgXFx1MDAzYyBlbnRyeS1cXHUwMDNlZXh0cmFfbGVuKSB7XFxuMjUxMjpcXHRcXHRcXHRJODAyX0RFQlVHX0lOQyhyeC1cXHUwMDNlbG9jYWwtXFx1MDAzZXJ4X2V4cGFuZF9za2JfaGVhZF9kZWZyYWcpO1xcbjI1MTM6XFx0XFx0XFx0aWYgKHVubGlrZWx5KHBza2JfZXhwYW5kX2hlYWQocngtXFx1MDAzZXNrYiwgMCwgZW50cnktXFx1MDAzZWV4dHJhX2xlbixcXG4yNTE0OlxcdFxcdFxcdFxcdFxcdFxcdCAgICAgIEdGUF9BVE9NSUMpKSkge1xcbjI1MTU6XFx0XFx0XFx0XFx0STgwMl9ERUJVR19JTkMocngtXFx1MDAzZWxvY2FsLVxcdTAwM2VyeF9oYW5kbGVyc19kcm9wX2RlZnJhZyk7XFxuMjUxNjpcXHRcXHRcXHRcXHRfX3NrYl9xdWV1ZV9wdXJnZShcXHUwMDI2ZW50cnktXFx1MDAzZXNrYl9saXN0KTtcXG4yNTE3OlxcdFxcdFxcdFxcdHJldHVybiBSWF9EUk9QX1VfT09NO1xcbjI1MTg6XFx0XFx0XFx0fVxcbjI1MTk6XFx0XFx0fVxcbjI1MjA6XFx0XFx0d2hpbGUgKChza2IgPSBfX3NrYl9kZXF1ZXVlKFxcdTAwMjZlbnRyeS1cXHUwMDNlc2tiX2xpc3QpKSkge1xcbjI1MjE6XFx0XFx0XFx0c2tiX3B1dF9kYXRhKHJ4LVxcdTAwM2Vza2IsIHNrYi1cXHUwMDNlZGF0YSwgc2tiLVxcdTAwM2VsZW4pO1xcbjI1MjI6XFx0XFx0XFx0ZGV2X2tmcmVlX3NrYihza2IpO1xcbjI1MjM6XFx0XFx0fVxcbjI1MjQ6XFx0XFxuMjUyNTpcXHQgb3V0OlxcbjI1MjY6XFx0XFx0aWVlZTgwMjExX2xlZF9yeChyeC1cXHUwMDNlbG9jYWwpO1xcbjI1Mjc6XFx0XFx0aWYgKHJ4LVxcdTAwM2VzdGEpXFxuMjUyODpcXHRcXHRcXHRyeC1cXHUwMDNlbGlua19zdGEtXFx1MDAzZXJ4X3N0YXRzLnBhY2tldHMrKztcXG4yNTI5OlxcdFxcdHJldHVybiBSWF9DT05USU5VRTtcXG4yNTMwOlxcdH1cXG4yNTMxOlxcdFxcbjI1MzI6XFx0c3RhdGljIGludCBpZWVlODAyMTFfODAyXzF4X3BvcnRfY29udHJvbChzdHJ1Y3QgaWVlZTgwMjExX3J4X2RhdGEgKnJ4KVxcbjI1MzM6XFx0e1xcbjI1MzQ6XFx0XFx0aWYgKHVubGlrZWx5KCFyeC1cXHUwMDNlc3RhIHx8ICF0ZXN0X3N0YV9mbGFnKHJ4LVxcdTAwM2VzdGEsIFdMQU5fU1RBX0FVVEhPUklaRUQpKSlcXG4yNTM1OlxcdFxcdFxcdHJldHVybiAtRUFDQ0VTO1xcbjI1MzY6XFx0XFxuMjUzNzpcXHRcXHRyZXR1cm4gMDtcXG4yNTM4OlxcdH1cXG4yNTM5OlxcdFxcbjI1NDA6XFx0c3RhdGljIGludCBpZWVlODAyMTFfZHJvcF91bmVuY3J5cHRlZChzdHJ1Y3QgaWVlZTgwMjExX3J4X2RhdGEgKnJ4LCBfX2xlMTYgZmMpXFxuMjU0MTpcXHR7XFxuMjU0MjpcXHRcXHRzdHJ1Y3Qgc2tfYnVmZiAqc2tiID0gcngtXFx1MDAzZXNrYjtcXG4yNTQzOlxcdFxcdHN0cnVjdCBpZWVlODAyMTFfcnhfc3RhdHVzICpzdGF0dXMgPSBJRUVFODAyMTFfU0tCX1JYQ0Ioc2tiKTtcXG4yNTQ0OlxcdFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yOVQwNjowNDozNC4zNzA4NDk5M1oiLCJTZXEiOjUxLCJOZXN0aW5nIjozLCJUeXBlIjoibGxtIiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo0MDIyNjM0NDQxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIFBvdGVudGlhbCBJbnRlZ2VyIE92ZXJmbG93IFZ1bG5lcmFiaWxpdHkqKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIE15IGluaXRpYWwgY29uY2VybiBpcyB3aXRoIHRoaXMgYGV4dHJhX2xlbmAgZmllbGQuIEkgc2VlIHRoYXQgaXQgd2FzIHByZXZpb3VzbHkgZGVmaW5lZCBhcyBhIGB1MTZgLCB3aGljaCBpcyBhIDE2LWJpdCB1bnNpZ25lZCBpbnRlZ2VyLiBUaGUgY29kZSBzdWdnZXN0cyBpdCdzIHVzZWQgdG8gYWNjdW11bGF0ZSB0aGUgbGVuZ3RoIG9mIHBhY2tldCBmcmFnbWVudHM6IGBlbnRyeS1cdTAwM2VleHRyYV9sZW4gKz0gcngtXHUwMDNlc2tiLVx1MDAzZWxlbjtgLiBNeSBleHBlcnQgaW50dWl0aW9uIHRlbGxzIG1lIHRoYXQgdGhpcyBpcyBhIGNsYXNzaWMgc2NlbmFyaW8gZm9yIGFuIGludGVnZXIgb3ZlcmZsb3cgdnVsbmVyYWJpbGl0eS5cblxuSWYgdGhlIGFjY3VtdWxhdGVkIGxlbmd0aCwgYHJ4LVx1MDAzZXNrYi1cdTAwM2VsZW5gLCBleGNlZWRzIDY1NTM1LCB0aGUgYHUxNmAgd2lsbCB3cmFwIGFyb3VuZCB0byBhIHNtYWxsZXIgdmFsdWUuIFRoaXMgdHJ1bmNhdGlvbiBpcyB0aGUgY29yZSBvZiB0aGUgcHJvYmxlbS4gVGhpcyBtZWFucyB3aGVuIHRoZSBjb2RlIGNoZWNrcyBgc2tiX3RhaWxyb29tKHJ4LVx1MDAzZXNrYikgXHUwMDNjIGVudHJ5LVx1MDAzZWV4dHJhX2xlbmAgb3IgY2FsbHMgYHBza2JfZXhwYW5kX2hlYWQoLi4uLCBlbnRyeS1cdTAwM2VleHRyYV9sZW4pYCwgaXQgbWlnaHQgYmUgb3BlcmF0aW5nIHdpdGggYSBzaWduaWZpY2FudGx5IHNtYWxsZXIgYGVudHJ5LVx1MDAzZWV4dHJhX2xlbmAgdGhhbiB0aGUgYWN0dWFsIHJlcXVpcmVkIGJ1ZmZlciBzaXplLlxuXG5UaGUgY29uc2VxdWVuY2VzIGFyZSBjbGVhci4gVGhlIGV4cGFuc2lvbiBvZiB0aGUgc2tiIHdpbGwgYmUgaW5zdWZmaWNpZW50LiBUaGUgc3Vic2VxdWVudCBgc2tiX3B1dF9kYXRhYCBmdW5jdGlvbiwgd2hpY2ggY2FsbHMgYHNrYl9wdXRgIGFuZCBgbWVtY3B5YCwgd291bGQgdGhlbiB3cml0ZSBwYXN0IHRoZSBhbGxvY2F0ZWQgYnVmZmVyLCB0cmlnZ2VyaW5nIGFuIFNLQiBwYW5pYywgYnVmZmVyIG92ZXJmbG93LCBvciBLQVNBTiBkZXRlY3Rpb24g4oCTIHdoaWNoIHdlIGFic29sdXRlbHkgKmRvIG5vdCogd2FudC5cblxuVGhlIGZpeCwgY2hhbmdpbmcgYGV4dHJhX2xlbmAgdG8gYW4gYHVuc2lnbmVkIGludGAsIGlzIHRoZSByaWdodCBhcHByb2FjaCBiZWNhdXNlIGl0IHByZXZlbnRzIHRoZSBpbnRlZ2VyIG92ZXJmbG93LlxuXG5Ob3csIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBwb3RlbnRpYWwgaW1wYWN0LiBJdCdzIGNydWNpYWwgdG8gZGV0ZXJtaW5lIGlmIGBzdHJ1Y3QgaWVlZTgwMjExX2ZyYWdtZW50X2VudHJ5YCBpcyBleHBvc2VkIHRvIHVzZXJzcGFjZSwgb3IgaWYgdGhlcmUncyBhbnkgbWVtb3J5IGluaXRpYWxpemF0aW9uIGlzc3VlLiBJZiBpdCdzIGV4cG9zZWQsIGEgY2FyZWZ1bGx5IGNyYWZ0ZWQgbWFsaWNpb3VzIHBhY2tldCBjb3VsZCBiZSBjb25zdHJ1Y3RlZCB0byB0cmlnZ2VyIHRoaXMgb3ZlcmZsb3cgYW5kIHBvdGVudGlhbGx5IGV4ZWN1dGUgYXJiaXRyYXJ5IGNvZGUuIEknbSBnb2luZyB0byBzZWFyY2ggdGhlIGtlcm5lbCBjb2RlIGZvciBgc3RydWN0IGllZWU4MDIxMV9mcmFnbWVudF9lbnRyeWAgdG8gZGV0ZXJtaW5lIHRoZSBzY29wZSBvZiB0aGlzIGNoYW5nZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NjI4NSwiT3V0cHV0VG9rZW5zIjoyNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMyNiwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI5VDA2OjA0OjM4LjM5MzQ4ODI3MVoiLCJTZXEiOjUyLCJOZXN0aW5nIjozLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTYzNTQxNDA3MSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJpZWVlODAyMTFfZnJhZ21lbnRfZW50cnlcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L21hYzgwMjExL3J4LmM9MjI4ND12b2lkIGllZWU4MDIxMV9kZXN0cm95X2ZyYWdfY2FjaGUoc3RydWN0IGllZWU4MDIxMV9mcmFnbWVudF9jYWNoZSAqY2FjaGUpXFxuLS1cXG5uZXQvbWFjODAyMTEvcnguYy0yMjkxLVxcbm5ldC9tYWM4MDIxMS9yeC5jOjIyOTI6c3RhdGljIGlubGluZSBzdHJ1Y3QgaWVlZTgwMjExX2ZyYWdtZW50X2VudHJ5ICpcXG5uZXQvbWFjODAyMTEvcnguYy0yMjkzLWllZWU4MDIxMV9yZWFzc2VtYmxlX2FkZChzdHJ1Y3QgaWVlZTgwMjExX2ZyYWdtZW50X2NhY2hlICpjYWNoZSxcXG4tLVxcbm5ldC9tYWM4MDIxMS9yeC5jLTIyOTYte1xcbm5ldC9tYWM4MDIxMS9yeC5jOjIyOTc6XFx0c3RydWN0IGllZWU4MDIxMV9mcmFnbWVudF9lbnRyeSAqZW50cnk7XFxubmV0L21hYzgwMjExL3J4LmMtMjI5OC1cXG4tLVxcbm5ldC9tYWM4MDIxMS9yeC5jLTIzMTYtXFxubmV0L21hYzgwMjExL3J4LmM6MjMxNzpzdGF0aWMgaW5saW5lIHN0cnVjdCBpZWVlODAyMTFfZnJhZ21lbnRfZW50cnkgKlxcbm5ldC9tYWM4MDIxMS9yeC5jLTIzMTgtaWVlZTgwMjExX3JlYXNzZW1ibGVfZmluZChzdHJ1Y3QgaWVlZTgwMjExX2ZyYWdtZW50X2NhY2hlICpjYWNoZSxcXG4tLVxcbm5ldC9tYWM4MDIxMS9yeC5jLTIzMjEte1xcbm5ldC9tYWM4MDIxMS9yeC5jOjIzMjI6XFx0c3RydWN0IGllZWU4MDIxMV9mcmFnbWVudF9lbnRyeSAqZW50cnk7XFxubmV0L21hYzgwMjExL3J4LmMtMjMyMy1cXHRpbnQgaSwgaWR4O1xcbi0tXFxubmV0L21hYzgwMjExL3J4LmM9MjM3Mz1pZWVlODAyMTFfcnhfaF9kZWZyYWdtZW50KHN0cnVjdCBpZWVlODAyMTFfcnhfZGF0YSAqcngpXFxuLS1cXG5uZXQvbWFjODAyMTEvcnguYy0yMzc5LVxcdHVuc2lnbmVkIGludCBmcmFnLCBzZXE7XFxubmV0L21hYzgwMjExL3J4LmM6MjM4MDpcXHRzdHJ1Y3QgaWVlZTgwMjExX2ZyYWdtZW50X2VudHJ5ICplbnRyeTtcXG5uZXQvbWFjODAyMTEvcnguYy0yMzgxLVxcdHN0cnVjdCBza19idWZmICpza2I7XFxuLS1cXG5uZXQvbWFjODAyMTEvc3RhX2luZm8uaD00MzI9c3RydWN0IGllZWU4MDIxMV9zdGFfcnhfc3RhdHMge1xcbi0tXFxubmV0L21hYzgwMjExL3N0YV9pbmZvLmgtNDU2LVxcbm5ldC9tYWM4MDIxMS9zdGFfaW5mby5oOjQ1NzpzdHJ1Y3QgaWVlZTgwMjExX2ZyYWdtZW50X2VudHJ5IHtcXG5uZXQvbWFjODAyMTEvc3RhX2luZm8uaC00NTgtXFx0c3RydWN0IHNrX2J1ZmZfaGVhZCBza2JfbGlzdDtcXG4tLVxcbm5ldC9tYWM4MDIxMS9zdGFfaW5mby5oPTQ3MD1zdHJ1Y3QgaWVlZTgwMjExX2ZyYWdtZW50X2NhY2hlIHtcXG5uZXQvbWFjODAyMTEvc3RhX2luZm8uaDo0NzE6XFx0c3RydWN0IGllZWU4MDIxMV9mcmFnbWVudF9lbnRyeVxcdGVudHJpZXNbSUVFRTgwMjExX0ZSQUdNRU5UX01BWF07XFxubmV0L21hYzgwMjExL3N0YV9pbmZvLmgtNDcyLVxcdHVuc2lnbmVkIGludCBuZXh0O1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yOVQwNjowNDo0MC4wMjg5MjEwNTJaIiwiU2VxIjo1MywiTmVzdGluZyI6MywiVHlwZSI6ImxsbSIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NDgwNjM0MjI4OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIGEgc3VtbWFyeSBvZiBteSB0aG91Z2h0IHByb2Nlc3M6XG5cbioqRGl2aW5nIGludG8gYGllZWU4MDIxMV9mcmFnbWVudF9jYWNoZWAgSW5pdGlhbGl6YXRpb24qKlxuXG5Pa2F5LCB0aW1lIHRvIGdldCBteSBoYW5kcyBkaXJ0eSBhbmQgZGlnIGludG8gdGhlIGluaXRpYWxpemF0aW9uIGFuZCBhbGxvY2F0aW9uIG9mIHRoZSBgc3RydWN0IGllZWU4MDIxMV9mcmFnbWVudF9jYWNoZWAuIFRoaXMgaXMgYSBjcml0aWNhbCBkYXRhIHN0cnVjdHVyZSwgc28gdW5kZXJzdGFuZGluZyBob3cgaXQncyBjcmVhdGVkIGFuZCBtYW5hZ2VkIGlzIHBhcmFtb3VudC4gSSBuZWVkIHRvIHRyYWNlIHRoZSBjb2RlIHRvIHBpbnBvaW50IHdoZXJlIGFuZCBob3cgdGhpcyBzdHJ1Y3R1cmUgaXMgYnJvdWdodCB0byBsaWZlLiBJIHdhbnQgdG8gc2VlIGlmIGl0J3MgZHluYW1pY2FsbHkgYWxsb2NhdGVkLCBzdGF0aWNhbGx5IGRlY2xhcmVkLCBwYXJ0IG9mIGEgbGFyZ2VyIHN0cnVjdHVyZSwgb3IgYSBjb21iaW5hdGlvbi4gVGhlIGFsbG9jYXRpb24gc3RyYXRlZ3kgb2Z0ZW4gcmV2ZWFscyBpbXBvcnRhbnQgaW5zaWdodHMgaW50byBpdHMgdXNhZ2UgcGF0dGVybnMgYW5kIHBvdGVudGlhbCBwZXJmb3JtYW5jZSBpbXBsaWNhdGlvbnMsIGVzcGVjaWFsbHkgaW4gaGlnaC10aHJvdWdocHV0IHdpcmVsZXNzIHNjZW5hcmlvcy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaWYgaXQgaXMgbGlua2VkIHRvIGFueSBvdGhlciBzdHJ1Y3R1cmVzIHRoYXQgd291bGQgYWZmZWN0IGhvdyBpdCdzIGluaXRpYWxpemVkLiBGcm9tIHRoaXMsIEkgc2hvdWxkIGJlIGFibGUgdG8gZ2V0IGEgYmV0dGVyIGZlZWwgb2YgaXRzIHJvbGUgaW4gdGhlIHN5c3RlbS5cblxuXG4iLCJJbnB1dFRva2VucyI6Nzg0NywiT3V0cHV0VG9rZW5zIjoyNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI5VDA2OjA0OjQ0LjgzNTI2NTYxWiIsIlNlcSI6NTQsIk5lc3RpbmciOjMsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNjM3MTU5OTIxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImllZWU4MDIxMV9mcmFnbWVudF9jYWNoZVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvbWFjODAyMTEvaWVlZTgwMjExX2kuaD0xMTU3PXN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEge1xcbi0tXFxubmV0L21hYzgwMjExL2llZWU4MDIxMV9pLmgtMTE3OC1cXG5uZXQvbWFjODAyMTEvaWVlZTgwMjExX2kuaDoxMTc5OlxcdHN0cnVjdCBpZWVlODAyMTFfZnJhZ21lbnRfY2FjaGUgZnJhZ3M7XFxubmV0L21hYzgwMjExL2llZWU4MDIxMV9pLmgtMTE4MC1cXG4tLVxcbm5ldC9tYWM4MDIxMS9pZWVlODAyMTFfaS5oPTI5NDQ9dTMyIGllZWU4MDIxMV9jYWxjX2V4cGVjdGVkX3R4X2FpcnRpbWUoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXFxuLS1cXG5uZXQvbWFjODAyMTEvaWVlZTgwMjExX2kuaC0yOTUzLVxcbm5ldC9tYWM4MDIxMS9pZWVlODAyMTFfaS5oOjI5NTQ6dm9pZCBpZWVlODAyMTFfaW5pdF9mcmFnX2NhY2hlKHN0cnVjdCBpZWVlODAyMTFfZnJhZ21lbnRfY2FjaGUgKmNhY2hlKTtcXG5uZXQvbWFjODAyMTEvaWVlZTgwMjExX2kuaDoyOTU1OnZvaWQgaWVlZTgwMjExX2Rlc3Ryb3lfZnJhZ19jYWNoZShzdHJ1Y3QgaWVlZTgwMjExX2ZyYWdtZW50X2NhY2hlICpjYWNoZSk7XFxubmV0L21hYzgwMjExL2llZWU4MDIxMV9pLmgtMjk1Ni1cXG4tLVxcbm5ldC9tYWM4MDIxMS9yeC5jPTIwMzE9aWVlZTgwMjExX3J4X2hfZGVjcnlwdChzdHJ1Y3QgaWVlZTgwMjExX3J4X2RhdGEgKnJ4KVxcbi0tXFxubmV0L21hYzgwMjExL3J4LmMtMjI3NS1cXG5uZXQvbWFjODAyMTEvcnguYzoyMjc2OnZvaWQgaWVlZTgwMjExX2luaXRfZnJhZ19jYWNoZShzdHJ1Y3QgaWVlZTgwMjExX2ZyYWdtZW50X2NhY2hlICpjYWNoZSlcXG5uZXQvbWFjODAyMTEvcnguYy0yMjc3LXtcXG4tLVxcbm5ldC9tYWM4MDIxMS9yeC5jLTIyODMtXFxubmV0L21hYzgwMjExL3J4LmM6MjI4NDp2b2lkIGllZWU4MDIxMV9kZXN0cm95X2ZyYWdfY2FjaGUoc3RydWN0IGllZWU4MDIxMV9mcmFnbWVudF9jYWNoZSAqY2FjaGUpXFxubmV0L21hYzgwMjExL3J4LmMtMjI4NS17XFxuLS1cXG5uZXQvbWFjODAyMTEvcnguYz0yMjkyPXN0YXRpYyBpbmxpbmUgc3RydWN0IGllZWU4MDIxMV9mcmFnbWVudF9lbnRyeSAqXFxubmV0L21hYzgwMjExL3J4LmM6MjI5MzppZWVlODAyMTFfcmVhc3NlbWJsZV9hZGQoc3RydWN0IGllZWU4MDIxMV9mcmFnbWVudF9jYWNoZSAqY2FjaGUsXFxubmV0L21hYzgwMjExL3J4LmMtMjI5NC1cXHRcXHRcXHQgdW5zaWduZWQgaW50IGZyYWcsIHVuc2lnbmVkIGludCBzZXEsIGludCByeF9xdWV1ZSxcXG4tLVxcbm5ldC9tYWM4MDIxMS9yeC5jPTIzMTc9c3RhdGljIGlubGluZSBzdHJ1Y3QgaWVlZTgwMjExX2ZyYWdtZW50X2VudHJ5ICpcXG5uZXQvbWFjODAyMTEvcnguYzoyMzE4OmllZWU4MDIxMV9yZWFzc2VtYmxlX2ZpbmQoc3RydWN0IGllZWU4MDIxMV9mcmFnbWVudF9jYWNoZSAqY2FjaGUsXFxubmV0L21hYzgwMjExL3J4LmMtMjMxOS1cXHRcXHRcXHQgIHVuc2lnbmVkIGludCBmcmFnLCB1bnNpZ25lZCBpbnQgc2VxLFxcbi0tXFxubmV0L21hYzgwMjExL3J4LmM9MjM3Mz1pZWVlODAyMTFfcnhfaF9kZWZyYWdtZW50KHN0cnVjdCBpZWVlODAyMTFfcnhfZGF0YSAqcngpXFxubmV0L21hYzgwMjExL3J4LmMtMjM3NC17XFxubmV0L21hYzgwMjExL3J4LmM6MjM3NTpcXHRzdHJ1Y3QgaWVlZTgwMjExX2ZyYWdtZW50X2NhY2hlICpjYWNoZSA9IFxcdTAwMjZyeC1cXHUwMDNlc2RhdGEtXFx1MDAzZWZyYWdzO1xcbm5ldC9tYWM4MDIxMS9yeC5jLTIzNzYtXFx0c3RydWN0IGllZWU4MDIxMV9oZHIgKmhkcjtcXG4tLVxcbm5ldC9tYWM4MDIxMS9zdGFfaW5mby5oPTQ1Nz1zdHJ1Y3QgaWVlZTgwMjExX2ZyYWdtZW50X2VudHJ5IHtcXG4tLVxcbm5ldC9tYWM4MDIxMS9zdGFfaW5mby5oLTQ2OS1cXG5uZXQvbWFjODAyMTEvc3RhX2luZm8uaDo0NzA6c3RydWN0IGllZWU4MDIxMV9mcmFnbWVudF9jYWNoZSB7XFxubmV0L21hYzgwMjExL3N0YV9pbmZvLmgtNDcxLVxcdHN0cnVjdCBpZWVlODAyMTFfZnJhZ21lbnRfZW50cnlcXHRlbnRyaWVzW0lFRUU4MDIxMV9GUkFHTUVOVF9NQVhdO1xcbi0tXFxubmV0L21hYzgwMjExL3N0YV9pbmZvLmg9NzE1PXN0cnVjdCBzdGFfaW5mbyB7XFxuLS1cXG5uZXQvbWFjODAyMTEvc3RhX2luZm8uaC03ODItXFxubmV0L21hYzgwMjExL3N0YV9pbmZvLmg6NzgzOlxcdHN0cnVjdCBpZWVlODAyMTFfZnJhZ21lbnRfY2FjaGUgZnJhZ3M7XFxubmV0L21hYzgwMjExL3N0YV9pbmZvLmgtNzg0LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yOVQwNjowNDo0Ni40NzI0Mjk3NzFaIiwiU2VxIjo1NSwiTmVzdGluZyI6MywiVHlwZSI6ImxsbSIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NTc1Mjk3NzU3NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgYXMgaWYgSSB3ZXJlIHRoaW5raW5nIGl0OlxuXG4qKkRpdmluZyBpbnRvIHRoZSBGcmFnbWVudCBDYWNoZSBJbml0aWFsaXphdGlvbioqXG5cbk9rYXksIHRpbWUgdG8gZGlnIGludG8gdGhlIGludGVybmFscy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZSBmcmFnbWVudCBjYWNoZSBpcyBpbml0aWFsaXplZCBpbiBtYWM4MDIxMSwgc3BlY2lmaWNhbGx5IGZvciByZWNlaXZlIG9wZXJhdGlvbnMuIExldCdzIHN0YXJ0IGJ5IGxvb2tpbmcgYXQgYGllZWU4MDIxMV9pbml0X2ZyYWdfY2FjaGVgIHdpdGhpbiB0aGUgYG5ldC9tYWM4MDIxMS9yeC5jYCBmaWxlLiBJJ20gYXNzdW1pbmcgdGhpcyBpcyB3aGVyZSB0aGUgY29yZSBzZXR1cCBmb3IgaGFuZGxpbmcgZnJhZ21lbnRlZCBwYWNrZXRzIG9uIHRoZSByZWNlaXZlIHNpZGUgaXMgZGVmaW5lZC4gSSB3YW50IHRvIHNlZSBob3cgdGhlIGNhY2hlIGl0c2VsZiBpcyBzdHJ1Y3R1cmVkLCBob3cgaXQncyBhbGxvY2F0ZWQsIHdoYXQgdGhlIGluaXRpYWwgcGFyYW1ldGVycyBhcmUsIGFuZCBhbnkgaW1wb3J0YW50IGluaXRpYWxpemF0aW9ucyBvciBjaGVja3MgdGhhdCBhcmUgaGFwcGVuaW5nIHRoZXJlLiBVbmRlcnN0YW5kaW5nIHRoaXMgZnVuY3Rpb24gd2lsbCBiZSBjcnVjaWFsIGZvciBmaWd1cmluZyBvdXQgaG93IHRoZSBNQUMgaGFuZGxlcyByZWFzc2VtYmx5LlxuXG5cbiIsIklucHV0VG9rZW5zIjo5MzE0LCJPdXRwdXRUb2tlbnMiOjQxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjlUMDY6MDQ6NTIuMjI1NDA5NzA4WiIsIlNlcSI6NTYsIk5lc3RpbmciOjMsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM0NjcxMSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJuZXQvbWFjODAyMTEvcnguY1wiLFxuICBcIkZpcnN0TGluZVwiOiAyMjcwLFxuICBcIkxpbmVDb3VudFwiOiAyNVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIyMjcwOlxcdFxcdFxcdGNmZzgwMjExX3J4X3VucHJvdF9tbG1lX21nbXQocngtXFx1MDAzZXNkYXRhLVxcdTAwM2VkZXYsXFxuMjI3MTpcXHRcXHRcXHRcXHRcXHRcXHQgICAgIHNrYi1cXHUwMDNlZGF0YSwgc2tiLVxcdTAwM2VsZW4pO1xcbjIyNzI6XFx0XFxuMjI3MzpcXHRcXHRyZXR1cm4gcmVzdWx0O1xcbjIyNzQ6XFx0fVxcbjIyNzU6XFx0XFxuMjI3NjpcXHR2b2lkIGllZWU4MDIxMV9pbml0X2ZyYWdfY2FjaGUoc3RydWN0IGllZWU4MDIxMV9mcmFnbWVudF9jYWNoZSAqY2FjaGUpXFxuMjI3NzpcXHR7XFxuMjI3ODpcXHRcXHRpbnQgaTtcXG4yMjc5OlxcdFxcbjIyODA6XFx0XFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIEFSUkFZX1NJWkUoY2FjaGUtXFx1MDAzZWVudHJpZXMpOyBpKyspXFxuMjI4MTpcXHRcXHRcXHRza2JfcXVldWVfaGVhZF9pbml0KFxcdTAwMjZjYWNoZS1cXHUwMDNlZW50cmllc1tpXS5za2JfbGlzdCk7XFxuMjI4MjpcXHR9XFxuMjI4MzpcXHRcXG4yMjg0OlxcdHZvaWQgaWVlZTgwMjExX2Rlc3Ryb3lfZnJhZ19jYWNoZShzdHJ1Y3QgaWVlZTgwMjExX2ZyYWdtZW50X2NhY2hlICpjYWNoZSlcXG4yMjg1OlxcdHtcXG4yMjg2OlxcdFxcdGludCBpO1xcbjIyODc6XFx0XFxuMjI4ODpcXHRcXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgQVJSQVlfU0laRShjYWNoZS1cXHUwMDNlZW50cmllcyk7IGkrKylcXG4yMjg5OlxcdFxcdFxcdF9fc2tiX3F1ZXVlX3B1cmdlKFxcdTAwMjZjYWNoZS1cXHUwMDNlZW50cmllc1tpXS5za2JfbGlzdCk7XFxuMjI5MDpcXHR9XFxuMjI5MTpcXHRcXG4yMjkyOlxcdHN0YXRpYyBpbmxpbmUgc3RydWN0IGllZWU4MDIxMV9mcmFnbWVudF9lbnRyeSAqXFxuMjI5MzpcXHRpZWVlODAyMTFfcmVhc3NlbWJsZV9hZGQoc3RydWN0IGllZWU4MDIxMV9mcmFnbWVudF9jYWNoZSAqY2FjaGUsXFxuMjI5NDpcXHRcXHRcXHRcXHQgdW5zaWduZWQgaW50IGZyYWcsIHVuc2lnbmVkIGludCBzZXEsIGludCByeF9xdWV1ZSxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjlUMDY6MDQ6NTIuMjI1NzU4MDA4WiIsIlNlcSI6NTcsIk5lc3RpbmciOjMsIlR5cGUiOiJsbG0iLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjI0OTU2MzY4NDY5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgUGF0Y2ggZm9yIE1lbW9yeSBTYWZldHkqKlxuXG5Pa2F5LCBsZXQncyBicmVhayBkb3duIHRoaXMgcGF0Y2guIE15IGluaXRpYWwgYXNzZXNzbWVudCBpcyB0aGF0IGl0IGxvb2tzIGxpa2UgYSBzdHJhaWdodGZvcndhcmQgZml4IGZvciBhIHBvdGVudGlhbCBpbnRlZ2VyIG92ZXJmbG93IGlzc3VlIGR1cmluZyA4MDIuMTEgZGVmcmFnbWVudGF0aW9uLiBUaGUgY29tbWl0J3MgcHJpbWFyeSBjaGFuZ2UgaXMgd2lkZW5pbmcgYGV4dHJhX2xlbmAgZnJvbSBhIGB1MTZgIHRvIGFuIGB1bnNpZ25lZCBpbnRgIHdpdGhpbiB0aGUgYGllZWU4MDIxMV9mcmFnbWVudF9lbnRyeWAgc3RydWN0LlxuXG5JJ20gbm90aW5nIHRoZSBsaWZlY3ljbGUgb2YgYGVudHJ5LVx1MDAzZWV4dHJhX2xlbmA6IGl0J3MgaW5pdGlhbGl6ZWQgdG8gemVybyB3aXRoaW4gdGhlIGBpZWVlODAyMTFfcmVhc3NlbWJsZV9hZGRgIGZ1bmN0aW9uLCB1cGRhdGVkIGJ5IGFkZGluZyB0aGUgcmVjZWl2ZWQgcGFja2V0IGxlbmd0aCAoYHJ4LVx1MDAzZXNrYi1cdTAwM2VsZW5gKSwgYW5kIHRoZW4gdXNlZCB0byBjaGVjayBhdmFpbGFibGUgdGFpbHJvb20gaW4gdGhlIFNLQiBiZWZvcmUgYSBwb3NzaWJsZSBleHBhbnNpb24uXG5cblRoaXMgYGllZWU4MDIxMV9mcmFnbWVudF9lbnRyeWAgc3RydWN0dXJlIGlzIGludGVybmFsIHRvIHRoZSBtYWM4MDIxMSByZWFzc2VtYmx5IHByb2Nlc3M7IGl04oCZcyBlbWJlZGRlZCB3aXRoaW4gYGllZWU4MDIxMV9mcmFnbWVudF9jYWNoZWAsIHdoaWNoIGl0c2VsZiBsaXZlcyB3aXRoaW4gYGllZWU4MDIxMV9zdWJfaWZfZGF0YWAgYW5kIGBzdGFfaW5mb2AuIEltcG9ydGFudGx5LCB0aGlzIGRhdGEgaXMgbmV2ZXIgZXhwb3NlZCB0byB1c2Vyc3BhY2Ug4oCTIG5vIG5ldGxpbmssIG5vIGlvY3RsLiBBbHNvLCB0aGUgaW5pdGlhbGl6YXRpb24gdG8gemVybyBiZWZvcmUgdXNlIGlzIGEga2V5IGZhY3Rvci5cblxuVGhlIGZpeCBpdHNlbGYgaXMgZGVzaWduZWQgdG8gcHJldmVudCBpbnRlZ2VyIHRydW5jYXRpb24gb3Igb3ZlcmZsb3csIHdoaWNoIGNvdWxkIGxlYWQgdG8gb3V0LW9mLWJvdW5kcyB3cml0ZXMgb3IgU0tCIGhlYWRyb29tL3RhaWxyb29tIHBhbmljc+KAlGNsYXNzaWMgbWVtb3J5IGNvcnJ1cHRpb24gaXNzdWVzIHRoYXQgYXJlIHR5cGljYWxseSBjYXVnaHQgYnkgS0FTQU4gb3IgYXNzZXJ0aW9ucy5cblxuTm93LCBjb25zaWRlcmluZyBLTVNBTiBzcGVjaWZpY2FsbHk6IEkgZG9uJ3Qgc2VlIGFueSBldmlkZW5jZSB0aGF0IHRoaXMgcGF0Y2ggaW50cm9kdWNlcywgZXhwb3Nlcywgb3IgYWx0ZXJzIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LiBgZXh0cmFfbGVuYCBpcyBleHBsaWNpdGx5IGluaXRpYWxpemVkLCBhbmQgYWxsIGFjY2Vzc2VzIGFyZSBjb250cm9sbGVkIGFuZCB3aXRoaW4gdGhlIGJvdW5kcyBkZWZpbmVkIGJ5IHRoZSBpbnRlZ2VyIHNpemUuIFRoZXJlZm9yZSwgdGhlcmUncyBubyBuZWVkIHRvIGVuYWJsZSBLTVNBTiBoZXJlLlxuXG5MZXQncyBkbyBhIHF1aWNrIGNoZWNrbGlzdCB0byBjb25maXJtIG15IGFzc2Vzc21lbnQuIEkgbmVlZCB0byBtYWtlIHN1cmU6XG5cbiogICBgTmVlZHNLTVNBTmAgaXMgc2V0IHRvIGZhbHNlLlxuKiAgIEkgY2FuIGNsZWFybHkgYXJ0aWN1bGF0ZSB0aGF0IHN0YW5kYXJkIHNhbml0aXplcnMgbGlrZSBLQVNBTiBhcmUgc3VmZmljaWVudCwgZ2l2ZW4gdGhlIGJ1ZyBpcyByZWxhdGVkIHRvIGludGVnZXIgb3ZlcmZsb3cgYW5kIGJ1ZmZlciBzaXppbmcgZHVyaW5nIGRlZnJhZ21lbnRhdGlvbiwgbm90IGFuIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJlYWQgb3IgaW5mb3JtYXRpb24gbGVhay5cbiogICBGaW5hbGx5LCBJIG5lZWQgdG8gY2FsbCBgc2V0LXJlc3VsdHNgIHRvIHJlY29yZCB0aGlzIGFuYWx5c2lzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo5OTkzLCJPdXRwdXRUb2tlbnMiOjI0NiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQwNCwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI5VDA2OjA1OjE3LjE4MjEzMDI3OFoiLCJTZXEiOjU4LCJOZXN0aW5nIjozLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE4NDQwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggY2hhbmdlcyB0aGUgdHlwZSBvZiBgZXh0cmFfbGVuYCBpbiBgc3RydWN0IGllZWU4MDIxMV9mcmFnbWVudF9lbnRyeWAgZnJvbSBgdTE2YCB0byBgdW5zaWduZWQgaW50YCB0byBwcmV2ZW50IGludGVnZXIgb3ZlcmZsb3cvdHJ1bmNhdGlvbiB3aGVuIGNhbGN1bGF0aW5nIHRoZSB0b3RhbCBsZW5ndGggb2YgZnJhZ21lbnRlZCBmcmFtZXMgZHVyaW5nIElFRUUgODAyLjExIGRlZnJhZ21lbnRhdGlvbi5cXG5cXG5gc3RydWN0IGllZWU4MDIxMV9mcmFnbWVudF9lbnRyeWAgaXMgYW4gaW50ZXJuYWwga2VybmVsIGRhdGEgc3RydWN0dXJlIHVzZWQgZXhjbHVzaXZlbHkgYnkgbWFjODAyMTEgUlggZGVmcmFnbWVudGF0aW9uIHJvdXRpbmVzLiBgZW50cnktXFx1MDAzZWV4dHJhX2xlbmAgaXMgZXhwbGljaXRseSBpbml0aWFsaXplZCB0byBgMGAgaW4gYGllZWU4MDIxMV9yZWFzc2VtYmxlX2FkZCgpYCwgYW5kIHRoZSBzdHJ1Y3QgaXMgbmV2ZXIgY29waWVkIHRvIHVzZXJzcGFjZSBvciBleHBvc2VkIHRvIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJlYWRzLiBUaGUgdW5kZXJseWluZyBpc3N1ZSBwcmV2ZW50ZWQgYnkgdGhpcyBwYXRjaCBpcyBhbiBpbnRlZ2VyIG92ZXJmbG93IHRoYXQgY291bGQgbGVhZCB0byBpbnN1ZmZpY2llbnQgU0tCIHJlYWxsb2NhdGlvbiAoc2tiIHRhaWxyb29tIGV4aGF1c3Rpb24gLyBvdXQtb2YtYm91bmRzIHdyaXRlcyksIHdoaWNoIGlzIGRldGVjdGVkIGJ5IEtBU0FOIGFuZCBzdGFuZGFyZCBrZXJuZWwgYXNzZXJ0aW9ucy4gVGhlcmUgaXMgbm8gcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSByZWFkcyBvciBpbmZvcm1hdGlvbiBsZWFrcywgc28gYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCB3YXJyYW50ZWQuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggY2hhbmdlcyB0aGUgdHlwZSBvZiBgZXh0cmFfbGVuYCBpbiBgc3RydWN0IGllZWU4MDIxMV9mcmFnbWVudF9lbnRyeWAgZnJvbSBgdTE2YCB0byBgdW5zaWduZWQgaW50YCB0byBwcmV2ZW50IGludGVnZXIgb3ZlcmZsb3cvdHJ1bmNhdGlvbiB3aGVuIGNhbGN1bGF0aW5nIHRoZSB0b3RhbCBsZW5ndGggb2YgZnJhZ21lbnRlZCBmcmFtZXMgZHVyaW5nIElFRUUgODAyLjExIGRlZnJhZ21lbnRhdGlvbi5cXG5cXG5gc3RydWN0IGllZWU4MDIxMV9mcmFnbWVudF9lbnRyeWAgaXMgYW4gaW50ZXJuYWwga2VybmVsIGRhdGEgc3RydWN0dXJlIHVzZWQgZXhjbHVzaXZlbHkgYnkgbWFjODAyMTEgUlggZGVmcmFnbWVudGF0aW9uIHJvdXRpbmVzLiBgZW50cnktXFx1MDAzZWV4dHJhX2xlbmAgaXMgZXhwbGljaXRseSBpbml0aWFsaXplZCB0byBgMGAgaW4gYGllZWU4MDIxMV9yZWFzc2VtYmxlX2FkZCgpYCwgYW5kIHRoZSBzdHJ1Y3QgaXMgbmV2ZXIgY29waWVkIHRvIHVzZXJzcGFjZSBvciBleHBvc2VkIHRvIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJlYWRzLiBUaGUgdW5kZXJseWluZyBpc3N1ZSBwcmV2ZW50ZWQgYnkgdGhpcyBwYXRjaCBpcyBhbiBpbnRlZ2VyIG92ZXJmbG93IHRoYXQgY291bGQgbGVhZCB0byBpbnN1ZmZpY2llbnQgU0tCIHJlYWxsb2NhdGlvbiAoc2tiIHRhaWxyb29tIGV4aGF1c3Rpb24gLyBvdXQtb2YtYm91bmRzIHdyaXRlcyksIHdoaWNoIGlzIGRldGVjdGVkIGJ5IEtBU0FOIGFuZCBzdGFuZGFyZCBrZXJuZWwgYXNzZXJ0aW9ucy4gVGhlcmUgaXMgbm8gcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSByZWFkcyBvciBpbmZvcm1hdGlvbiBsZWFrcywgc28gYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCB3YXJyYW50ZWQuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowh5xms[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-29 05:48:01 +0000 UTC FinishedAt: 2026-08-29 06:05:19 +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": "45c13f3f9e3bb15fd89ff2864c6f627a3b4b4229", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "MAC80211", "CFG80211", "MAC80211_HWSIM" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "torvalds", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux", "commit_hash": "45c13f3f9e3bb15fd89ff2864c6f627a3b4b4229", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "MAC80211", "CFG80211", "MAC80211_HWSIM" ], "series_id": "e74fd6c2-28ed-45bb-9bd4-df5d3581723a" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "ieee80211_rx_list", "ieee80211_rx_napi", "ieee80211_rx_irqsafe" ], "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+CgkJCTx0ZD4yMDI2LzA4LzI5IDA2OjAyPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+M208L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O01BQzgwMjExJiMzNDssCiAgICAmIzM0O0NGRzgwMjExJiMzNDssCiAgICAmIzM0O01BQzgwMjExX0hXU0lNJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7aWVlZTgwMjExX3J4X2xpc3QmIzM0OywKICAgICYjMzQ7aWVlZTgwMjExX3J4X25hcGkmIzM0OywKICAgICYjMzQ7aWVlZTgwMjExX3J4X2lycXNhZmUmIzM0OwogIF0sCiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBjaGFuZ2VzIHRoZSB0eXBlIG9mIGBleHRyYV9sZW5gIGluIGBzdHJ1Y3QgaWVlZTgwMjExX2ZyYWdtZW50X2VudHJ5YCBmcm9tIGB1MTZgIHRvIGB1bnNpZ25lZCBpbnRgIHRvIHByZXZlbnQgaW50ZWdlciBvdmVyZmxvdy90cnVuY2F0aW9uIHdoZW4gY2FsY3VsYXRpbmcgdGhlIHRvdGFsIGxlbmd0aCBvZiBmcmFnbWVudGVkIGZyYW1lcyBkdXJpbmcgSUVFRSA4MDIuMTEgZGVmcmFnbWVudGF0aW9uLlxuXG5gc3RydWN0IGllZWU4MDIxMV9mcmFnbWVudF9lbnRyeWAgaXMgYW4gaW50ZXJuYWwga2VybmVsIGRhdGEgc3RydWN0dXJlIHVzZWQgZXhjbHVzaXZlbHkgYnkgbWFjODAyMTEgUlggZGVmcmFnbWVudGF0aW9uIHJvdXRpbmVzLiBgZW50cnktXHUwMDNlZXh0cmFfbGVuYCBpcyBleHBsaWNpdGx5IGluaXRpYWxpemVkIHRvIGAwYCBpbiBgaWVlZTgwMjExX3JlYXNzZW1ibGVfYWRkKClgLCBhbmQgdGhlIHN0cnVjdCBpcyBuZXZlciBjb3BpZWQgdG8gdXNlcnNwYWNlIG9yIGV4cG9zZWQgdG8gdW5pbml0aWFsaXplZCBtZW1vcnkgcmVhZHMuIFRoZSB1bmRlcmx5aW5nIGlzc3VlIHByZXZlbnRlZCBieSB0aGlzIHBhdGNoIGlzIGFuIGludGVnZXIgb3ZlcmZsb3cgdGhhdCBjb3VsZCBsZWFkIHRvIGluc3VmZmljaWVudCBTS0IgcmVhbGxvY2F0aW9uIChza2IgdGFpbHJvb20gZXhoYXVzdGlvbiAvIG91dC1vZi1ib3VuZHMgd3JpdGVzKSwgd2hpY2ggaXMgZGV0ZWN0ZWQgYnkgS0FTQU4gYW5kIHN0YW5kYXJkIGtlcm5lbCBhc3NlcnRpb25zLiBUaGVyZSBpcyBubyByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJlYWRzIG9yIGluZm9ybWF0aW9uIGxlYWtzLCBzbyBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IHdhcnJhbnRlZC4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggY2hhbmdlcyBgZXh0cmFfbGVuYCBpbiBgc3RydWN0IGllZWU4MDIxMV9mcmFnbWVudF9lbnRyeWAgZnJvbSBgdTE2YCB0byBgdW5zaWduZWQgaW50YCB0byBwcmV2ZW50IGludGVnZXIgb3ZlcmZsb3cgZHVyaW5nIDgwMi4xMSBmcmFnbWVudCByZWFzc2VtYmx5IGluIG1hYzgwMjExIHJ4IGhhbmRsaW5nLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgZGlyZWN0bHkgYWZmZWN0aW5nIHBhY2tldCByZWFzc2VtYmx5IGFuZCBtZW1vcnkgbWFuYWdlbWVudCBpbiB0aGUgcmVhY2hhYmxlIHdpcmVsZXNzIG5ldHdvcmtpbmcgc3Vic3lzdGVtLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI5IDA2OjAyPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgYTJjYWY1NjQ0YTcxNjA2MGUzYzMyYmZmNjViYmY1NzJjN2I1MzA1NlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBTYXQgQXVnIDI5IDA2OjAyOjEyIDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL25ldC9tYWM4MDIxMS9zdGFfaW5mby5oIGIvbmV0L21hYzgwMjExL3N0YV9pbmZvLmhcbmluZGV4IGVlMGQzMjg3N2M1YjQuLjExMmMzMzNmYmU0NWIgMTAwNjQ0XG4tLS0gYS9uZXQvbWFjODAyMTEvc3RhX2luZm8uaFxuJiM0MzsmIzQzOyYjNDM7IGIvbmV0L21hYzgwMjExL3N0YV9pbmZvLmhcbkBAIC00NTgsNyAmIzQzOzQ1OCw3IEBAIHN0cnVjdCBpZWVlODAyMTFfZnJhZ21lbnRfZW50cnkge1xuIFx0c3RydWN0IHNrX2J1ZmZfaGVhZCBza2JfbGlzdDtcbiBcdHVuc2lnbmVkIGxvbmcgZmlyc3RfZnJhZ190aW1lO1xuIFx0dTE2IHNlcTtcbi1cdHUxNiBleHRyYV9sZW47XG4mIzQzO1x0dW5zaWduZWQgaW50IGV4dHJhX2xlbjtcbiBcdHUxNiBsYXN0X2ZyYWc7XG4gXHR1OCByeF9xdWV1ZTtcbiBcdHU4IGNoZWNrX3NlcXVlbnRpYWxfcG46MSwgLyogbmVlZGVkIGZvciBDQ01QL0dDTVAgKi9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yOSAwNjowMjwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4ybTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5jb3JlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtNQUM4MDIxMSYjMzQ7LAogICAgJiMzNDtDRkc4MDIxMSYjMzQ7LAogICAgJiMzNDtNQUM4MDIxMV9IV1NJTSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2llZWU4MDIxMV9yeF9saXN0JiMzNDssCiAgICAmIzM0O2llZWU4MDIxMV9yeF9uYXBpJiMzNDssCiAgICAmIzM0O2llZWU4MDIxMV9yeF9pcnFzYWZlJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGNoYW5nZXMgYGV4dHJhX2xlbmAgaW4gYHN0cnVjdCBpZWVlODAyMTFfZnJhZ21lbnRfZW50cnlgIGZyb20gYHUxNmAgdG8gYHVuc2lnbmVkIGludGAgdG8gcHJldmVudCBpbnRlZ2VyIG92ZXJmbG93IGR1cmluZyA4MDIuMTEgZnJhZ21lbnQgcmVhc3NlbWJseSBpbiBtYWM4MDIxMSByeCBoYW5kbGluZy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGRpcmVjdGx5IGFmZmVjdGluZyBwYWNrZXQgcmVhc3NlbWJseSBhbmQgbWVtb3J5IG1hbmFnZW1lbnQgaW4gdGhlIHJlYWNoYWJsZSB3aXJlbGVzcyBuZXR3b3JraW5nIHN1YnN5c3RlbS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IGEyY2FmNTY0NGE3MTYwNjBlM2MzMmJmZjY1YmJmNTcyYzdiNTMwNTYKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgU2F0IEF1ZyAyOSAwNjowMjoxMiAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL25ldC9tYWM4MDIxMS9zdGFfaW5mby5oIGIvbmV0L21hYzgwMjExL3N0YV9pbmZvLmgKaW5kZXggZWUwZDMyODc3YzViNC4uMTEyYzMzM2ZiZTQ1YiAxMDA2NDQKLS0tIGEvbmV0L21hYzgwMjExL3N0YV9pbmZvLmgKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L21hYzgwMjExL3N0YV9pbmZvLmgKQEAgLTQ1OCw3ICYjNDM7NDU4LDcgQEAgc3RydWN0IGllZWU4MDIxMV9mcmFnbWVudF9lbnRyeSB7CiAJc3RydWN0IHNrX2J1ZmZfaGVhZCBza2JfbGlzdDsKIAl1bnNpZ25lZCBsb25nIGZpcnN0X2ZyYWdfdGltZTsKIAl1MTYgc2VxOwotCXUxNiBleHRyYV9sZW47CiYjNDM7CXVuc2lnbmVkIGludCBleHRyYV9sZW47CiAJdTE2IGxhc3RfZnJhZzsKIAl1OCByeF9xdWV1ZTsKIAl1OCBjaGVja19zZXF1ZW50aWFsX3BuOjEsIC8qIG5lZWRlZCBmb3IgQ0NNUC9HQ01QICovCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI5IDA2OjAyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIwOTUKCQkJCQkJCW91dHB1dDogMzEKCQkJCQkJCXRob3VnaHRzOiAxMTUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqUmV2aWV3aW5nIHRoZSBtYWM4MDIxMSBQYXRjaCoqCgpPa2F5LCBoZXJlIHdlIGdvLiBUaGUgdXNlciB3YW50cyBtZSB0byB0YWtlIGEgbG9vayBhdCBhIHBhdGNoIHRoYXQgdG91Y2hlcyBgbmV0L21hYzgwMjExL3N0YV9pbmZvLmhgLiBBbHJpZ2h0LCBsZXQmIzM5O3MgcHVsbCB1cCB0aGUgZGlmZi4gTG9va3MgbGlrZSB0aGV5JiMzOTt2ZSBjaGFuZ2VkIGBzdHJ1Y3QgaWVlZTgwMjExX2ZyYWdtZW50X2VudHJ5YCwgc3BlY2lmaWNhbGx5IHRoZSBgZXh0cmFfbGVuYCBmaWVsZC4gSXQmIzM5O3MgYmVlbiBidW1wZWQgZnJvbSBhIGB1MTZgIHRvIGFuIGB1bnNpZ25lZCBpbnRgLiBJbnRlcmVzdGluZy4KCk5vdywgYmVmb3JlIEkgc2lnbiBvZmYgb24gdGhpcywgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGltcGxpY2F0aW9ucyBvZiB0aGlzIGNoYW5nZS4gV2h5IHRoZSBpbmNyZWFzZWQgc2l6ZT8gSXMgdGhpcyBhIG5lY2Vzc2FyeSBhZGp1c3RtZW50IHRvIGFjY29tbW9kYXRlIHNvbWV0aGluZz8gTGV0JiMzOTtzIHRyYWNlIHRoaXMuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoZXJlIGBpZWVlODAyMTFfZnJhZ21lbnRfZW50cnlgIGFuZCwgbW9yZSBpbXBvcnRhbnRseSwgaG93IGBleHRyYV9sZW5gIGFyZSBhY3R1YWxseSAqdXNlZCogd2l0aGluIHRoZSBgbmV0L21hYzgwMjExYCBzdWJzeXN0ZW0uIFRpbWUgdG8gZmlyZSB1cCBgZ3JlcHBlcmAgYW5kIGdldCBhIGNsZWFyIHBpY3R1cmUgb2YgaXRzIHVzYWdlIGNvbnRleHQuIEkgbmVlZCB0byBtYWtlIHN1cmUgdGhpcyBkb2VzbiYjMzk7dCBpbnRyb2R1Y2UgYW55IHVuZm9yZXNlZW4gaXNzdWVzIG9yIHBvdGVudGlhbCByZWdyZXNzaW9ucy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yOSAwNjowMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtleHRyYV9sZW4mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbWFjODAyMTEmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L21hYzgwMjExL2llZWU4MDIxMV9pLmg9MjY4NT12b2lkIGllZWU4MDIxMV9zZW5kX2F1dGgoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsXG5uZXQvbWFjODAyMTEvaWVlZTgwMjExX2kuaC0yNjg2LVx0XHRcdCB1MTYgdHJhbnNhY3Rpb24sIHUxNiBhdXRoX2FsZywgdTE2IHN0YXR1cyxcbm5ldC9tYWM4MDIxMS9pZWVlODAyMTFfaS5oOjI2ODc6XHRcdFx0IGNvbnN0IHU4ICpleHRyYSwgc2l6ZV90IGV4dHJhX2xlbiwgY29uc3QgdTggKmJzc2lkLFxubmV0L21hYzgwMjExL2llZWU4MDIxMV9pLmgtMjY4OC1cdFx0XHQgY29uc3QgdTggKmRhLCBjb25zdCB1OCAqa2V5LCB1OCBrZXlfbGVuLCB1OCBrZXlfaWR4LFxuLS1cbm5ldC9tYWM4MDIxMS9yeC5jPTIyOTM9aWVlZTgwMjExX3JlYXNzZW1ibGVfYWRkKHN0cnVjdCBpZWVlODAyMTFfZnJhZ21lbnRfY2FjaGUgKmNhY2hlLFxuLS1cbm5ldC9tYWM4MDIxMS9yeC5jLTIzMTEtXHRlbnRyeS1cdTAwM2VjaGVja19zZXF1ZW50aWFsX3BuID0gZmFsc2U7XG5uZXQvbWFjODAyMTEvcnguYzoyMzEyOlx0ZW50cnktXHUwMDNlZXh0cmFfbGVuID0gMDtcbm5ldC9tYWM4MDIxMS9yeC5jLTIzMTMtXG4tLVxubmV0L21hYzgwMjExL3J4LmM9MjM3Mz1pZWVlODAyMTFfcnhfaF9kZWZyYWdtZW50KHN0cnVjdCBpZWVlODAyMTFfcnhfZGF0YSAqcngpXG4tLVxubmV0L21hYzgwMjExL3J4LmMtMjUwMy1cdGVudHJ5LVx1MDAzZWxhc3RfZnJhZyA9IGZyYWc7XG5uZXQvbWFjODAyMTEvcnguYzoyNTA0Olx0ZW50cnktXHUwMDNlZXh0cmFfbGVuICYjNDM7PSByeC1cdTAwM2Vza2ItXHUwMDNlbGVuO1xubmV0L21hYzgwMjExL3J4LmMtMjUwNS1cdGlmIChpZWVlODAyMTFfaGFzX21vcmVmcmFncyhmYykpIHtcbi0tXG5uZXQvbWFjODAyMTEvcnguYy0yNTEwLVx0cngtXHUwMDNlc2tiID0gX19za2JfZGVxdWV1ZShcdTAwMjZlbnRyeS1cdTAwM2Vza2JfbGlzdCk7XG5uZXQvbWFjODAyMTEvcnguYzoyNTExOlx0aWYgKHNrYl90YWlscm9vbShyeC1cdTAwM2Vza2IpIFx1MDAzYyBlbnRyeS1cdTAwM2VleHRyYV9sZW4pIHtcbm5ldC9tYWM4MDIxMS9yeC5jLTI1MTItXHRcdEk4MDJfREVCVUdfSU5DKHJ4LVx1MDAzZWxvY2FsLVx1MDAzZXJ4X2V4cGFuZF9za2JfaGVhZF9kZWZyYWcpO1xubmV0L21hYzgwMjExL3J4LmM6MjUxMzpcdFx0aWYgKHVubGlrZWx5KHBza2JfZXhwYW5kX2hlYWQocngtXHUwMDNlc2tiLCAwLCBlbnRyeS1cdTAwM2VleHRyYV9sZW4sXG5uZXQvbWFjODAyMTEvcnguYy0yNTE0LVx0XHRcdFx0XHQgICAgICBHRlBfQVRPTUlDKSkpIHtcbi0tXG5uZXQvbWFjODAyMTEvc3RhX2luZm8uaD00NTc9c3RydWN0IGllZWU4MDIxMV9mcmFnbWVudF9lbnRyeSB7XG4tLVxubmV0L21hYzgwMjExL3N0YV9pbmZvLmgtNDYwLVx0dTE2IHNlcTtcbm5ldC9tYWM4MDIxMS9zdGFfaW5mby5oOjQ2MTpcdHVuc2lnbmVkIGludCBleHRyYV9sZW47XG5uZXQvbWFjODAyMTEvc3RhX2luZm8uaC00NjItXHR1MTYgbGFzdF9mcmFnO1xuLS1cbm5ldC9tYWM4MDIxMS91dGlsLmM9MTEzNz12b2lkIGllZWU4MDIxMV9zZW5kX2F1dGgoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsXG5uZXQvbWFjODAyMTEvdXRpbC5jLTExMzgtXHRcdFx0IHUxNiB0cmFuc2FjdGlvbiwgdTE2IGF1dGhfYWxnLCB1MTYgc3RhdHVzLFxubmV0L21hYzgwMjExL3V0aWwuYzoxMTM5Olx0XHRcdCBjb25zdCB1OCAqZXh0cmEsIHNpemVfdCBleHRyYV9sZW4sIGNvbnN0IHU4ICpkYSxcbm5ldC9tYWM4MDIxMS91dGlsLmMtMTE0MC1cdFx0XHQgY29uc3QgdTggKmJzc2lkLCBjb25zdCB1OCAqa2V5LCB1OCBrZXlfbGVuLCB1OCBrZXlfaWR4LFxuLS1cbm5ldC9tYWM4MDIxMS91dGlsLmMtMTE2NC1cdFx0ICAgIWNmZzgwMjExX2ZpbmRfZXh0X2VsZW0oV0xBTl9FSURfRVhUX0VIVF9NVUxUSV9MSU5LLFxubmV0L21hYzgwMjExL3V0aWwuYzoxMTY1Olx0XHRcdFx0XHQgICBleHRyYSwgZXh0cmFfbGVuKSk7XG5uZXQvbWFjODAyMTEvdXRpbC5jLTExNjYtXG4tLVxubmV0L21hYzgwMjExL3V0aWwuYy0xMTY4LVx0c2tiID0gZGV2X2FsbG9jX3NrYihsb2NhbC1cdTAwM2Vody5leHRyYV90eF9oZWFkcm9vbSAmIzQzOyBJRUVFODAyMTFfV0VQX0lWX0xFTiAmIzQzO1xubmV0L21hYzgwMjExL3V0aWwuYzoxMTY5Olx0XHRcdCAgICAyNCAmIzQzOyA2ICYjNDM7IGV4dHJhX2xlbiAmIzQzOyBJRUVFODAyMTFfV0VQX0lDVl9MRU4gJiM0Mztcbm5ldC9tYWM4MDIxMS91dGlsLmMtMTE3MC1cdFx0XHQgICAgYWRkX21sZSAqIHNpemVvZihtbGUpKTtcbi0tXG5uZXQvbWFjODAyMTEvdXRpbC5jLTExODUtXHRpZiAoZXh0cmEpXG5uZXQvbWFjODAyMTEvdXRpbC5jOjExODY6XHRcdHNrYl9wdXRfZGF0YShza2IsIGV4dHJhLCBleHRyYV9sZW4pO1xubmV0L21hYzgwMjExL3V0aWwuYy0xMTg3LVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI5IDA2OjAyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM3NzIKCQkJCQkJCW91dHB1dDogNDEKCQkJCQkJCXRob3VnaHRzOiAzNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0YWtlIG9uIHRoZSB0aG91Z2h0IHByb2Nlc3MsIGFzIHJlcXVlc3RlZDoKCioqRGl2aW5nIGludG8gdGhlIE1BQzgwMjExIFJYIFBhdGgqKgoKT2theSwgdGltZSB0byBnZXQgbXkgaGFuZHMgZGlydHkuIEkmIzM5O20gZ29pbmcgdG8gZGlnIGludG8gdGhlIGBuZXQvbWFjODAyMTEvcnguY2AgZmlsZS4gU3BlY2lmaWNhbGx5LCBJIG5lZWQgdG8gZ2V0IGEgaGFuZGxlIG9uIHdoYXQmIzM5O3MgaGFwcGVuaW5nIGFyb3VuZCBsaW5lcyAyNDkwIHRvIDI1NDAuIFRoYXQmIzM5O3MgYSBjcml0aWNhbCBzZWN0aW9uIG9mIHRoZSByZWNlaXZlIHBhdGgsIGFuZCBJJiMzOTttIGJldHRpbmcgaXQmIzM5O3Mgd2hlcmUgYSBwYXJ0aWN1bGFyIHBpZWNlIG9mIGZ1bmN0aW9uYWxpdHkgaXMgaGFuZGxlZCB0aGF0JiMzOTtzIGJlZW4gbmFnZ2luZyBhdCBtZS4gSSYjMzk7dmUgZ290IGEgaHVuY2gsIGJ1dCBJIG5lZWQgdG8gY29uZmlybSBpdCB3aXRoIHRoZSBjb2RlLiBMZXQmIzM5O3Mgc2VlIGlmIG15IHVuZGVyc3RhbmRpbmcgb2YgdGhlIHJlY2VpdmUgcHJvY2VzcyBpcyBhY2N1cmF0ZSwgb3IgaWYgSSBuZWVkIHRvIGFkanVzdCBteSBtZW50YWwgbW9kZWwgYmFzZWQgb24gd2hhdCB0aGUgc291cmNlIGNvZGUgcmV2ZWFscy4gVGltZSB0byBwdXQgb24gbXkgZGVidWdnaW5nIGhhdCBhbmQgZ2V0IHRvIHdvcmsuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjkgMDY6MDI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtuZXQvbWFjODAyMTEvcnguYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDI0OTAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNTAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7MjQ5MDpcdFx0XHQvKiBEcm9wIHRoaXMgYXMgYSBtaXhlZCBrZXkgb3IgZnJhZ21lbnQgY2FjaGUgYXR0YWNrLCBldmVuXG4yNDkxOlx0XHRcdCAqIGlmIGZvciBUS0lQIE1pY2hhZWwgTUlDIHNob3VsZCBwcm90ZWN0IHVzLCBhbmQgV0VQIGlzIGFcbjI0OTI6XHRcdFx0ICogbG9zdCBjYXVzZSBhbnl3YXkuXG4yNDkzOlx0XHRcdCAqL1xuMjQ5NDpcdFx0XHRyZXR1cm4gUlhfRFJPUF9VX0VYUEVDVF9ERUZSQUdfUFJPVDtcbjI0OTU6XHRcdH0gZWxzZSBpZiAoZW50cnktXHUwMDNlaXNfcHJvdGVjdGVkIFx1MDAyNlx1MDAyNiByeC1cdTAwM2VrZXkgXHUwMDI2XHUwMDI2XG4yNDk2Olx0XHRcdCAgIGVudHJ5LVx1MDAzZWtleV9jb2xvciAhPSByeC1cdTAwM2VrZXktXHUwMDNlY29sb3IgXHUwMDI2XHUwMDI2XG4yNDk3Olx0XHRcdCAgIChzdGF0dXMtXHUwMDNlZmxhZyBcdTAwMjYgUlhfRkxBR19ERUNSWVBURUQpKSB7XG4yNDk4Olx0XHRcdHJldHVybiBSWF9EUk9QX1VfQkFEX0tFWV9DT0xPUjtcbjI0OTk6XHRcdH1cbjI1MDA6XHRcbjI1MDE6XHRcdHNrYl9wdWxsKHJ4LVx1MDAzZXNrYiwgaWVlZTgwMjExX2hkcmxlbihmYykpO1xuMjUwMjpcdFx0X19za2JfcXVldWVfdGFpbChcdTAwMjZlbnRyeS1cdTAwM2Vza2JfbGlzdCwgcngtXHUwMDNlc2tiKTtcbjI1MDM6XHRcdGVudHJ5LVx1MDAzZWxhc3RfZnJhZyA9IGZyYWc7XG4yNTA0Olx0XHRlbnRyeS1cdTAwM2VleHRyYV9sZW4gJiM0Mzs9IHJ4LVx1MDAzZXNrYi1cdTAwM2VsZW47XG4yNTA1Olx0XHRpZiAoaWVlZTgwMjExX2hhc19tb3JlZnJhZ3MoZmMpKSB7XG4yNTA2Olx0XHRcdHJ4LVx1MDAzZXNrYiA9IE5VTEw7XG4yNTA3Olx0XHRcdHJldHVybiBSWF9RVUVVRUQ7XG4yNTA4Olx0XHR9XG4yNTA5Olx0XG4yNTEwOlx0XHRyeC1cdTAwM2Vza2IgPSBfX3NrYl9kZXF1ZXVlKFx1MDAyNmVudHJ5LVx1MDAzZXNrYl9saXN0KTtcbjI1MTE6XHRcdGlmIChza2JfdGFpbHJvb20ocngtXHUwMDNlc2tiKSBcdTAwM2MgZW50cnktXHUwMDNlZXh0cmFfbGVuKSB7XG4yNTEyOlx0XHRcdEk4MDJfREVCVUdfSU5DKHJ4LVx1MDAzZWxvY2FsLVx1MDAzZXJ4X2V4cGFuZF9za2JfaGVhZF9kZWZyYWcpO1xuMjUxMzpcdFx0XHRpZiAodW5saWtlbHkocHNrYl9leHBhbmRfaGVhZChyeC1cdTAwM2Vza2IsIDAsIGVudHJ5LVx1MDAzZWV4dHJhX2xlbixcbjI1MTQ6XHRcdFx0XHRcdFx0ICAgICAgR0ZQX0FUT01JQykpKSB7XG4yNTE1Olx0XHRcdFx0STgwMl9ERUJVR19JTkMocngtXHUwMDNlbG9jYWwtXHUwMDNlcnhfaGFuZGxlcnNfZHJvcF9kZWZyYWcpO1xuMjUxNjpcdFx0XHRcdF9fc2tiX3F1ZXVlX3B1cmdlKFx1MDAyNmVudHJ5LVx1MDAzZXNrYl9saXN0KTtcbjI1MTc6XHRcdFx0XHRyZXR1cm4gUlhfRFJPUF9VX09PTTtcbjI1MTg6XHRcdFx0fVxuMjUxOTpcdFx0fVxuMjUyMDpcdFx0d2hpbGUgKChza2IgPSBfX3NrYl9kZXF1ZXVlKFx1MDAyNmVudHJ5LVx1MDAzZXNrYl9saXN0KSkpIHtcbjI1MjE6XHRcdFx0c2tiX3B1dF9kYXRhKHJ4LVx1MDAzZXNrYiwgc2tiLVx1MDAzZWRhdGEsIHNrYi1cdTAwM2VsZW4pO1xuMjUyMjpcdFx0XHRkZXZfa2ZyZWVfc2tiKHNrYik7XG4yNTIzOlx0XHR9XG4yNTI0Olx0XG4yNTI1Olx0IG91dDpcbjI1MjY6XHRcdGllZWU4MDIxMV9sZWRfcngocngtXHUwMDNlbG9jYWwpO1xuMjUyNzpcdFx0aWYgKHJ4LVx1MDAzZXN0YSlcbjI1Mjg6XHRcdFx0cngtXHUwMDNlbGlua19zdGEtXHUwMDNlcnhfc3RhdHMucGFja2V0cyYjNDM7JiM0Mzs7XG4yNTI5Olx0XHRyZXR1cm4gUlhfQ09OVElOVUU7XG4yNTMwOlx0fVxuMjUzMTpcdFxuMjUzMjpcdHN0YXRpYyBpbnQgaWVlZTgwMjExXzgwMl8xeF9wb3J0X2NvbnRyb2woc3RydWN0IGllZWU4MDIxMV9yeF9kYXRhICpyeClcbjI1MzM6XHR7XG4yNTM0Olx0XHRpZiAodW5saWtlbHkoIXJ4LVx1MDAzZXN0YSB8fCAhdGVzdF9zdGFfZmxhZyhyeC1cdTAwM2VzdGEsIFdMQU5fU1RBX0FVVEhPUklaRUQpKSlcbjI1MzU6XHRcdFx0cmV0dXJuIC1FQUNDRVM7XG4yNTM2Olx0XG4yNTM3Olx0XHRyZXR1cm4gMDtcbjI1Mzg6XHR9XG4yNTM5Olx0XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjkgMDY6MDI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDkxNwoJCQkJCQkJb3V0cHV0OiAzNQoJCQkJCQkJdGhvdWdodHM6IDM1MwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBQb3RlbnRpYWwgSW50ZWdlciBPdmVyZmxvdyBWdWxuZXJhYmlsaXR5KioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIGNvZGUsIHNwZWNpZmljYWxseSBgZW50cnktJmd0O2V4dHJhX2xlbiAmIzQzOz0gcngtJmd0O3NrYi0mZ3Q7bGVuO2AgYW5kIHRoZSBzdWJzZXF1ZW50IGBza2JfcHV0X2RhdGEocngtJmd0O3NrYiwgc2tiLSZndDtkYXRhLCBza2ItJmd0O2xlbik7YC4gVGhlIGBleHRyYV9sZW5gIGZpZWxkIGlzIGRlZmluZWQgYXMgYSBgdTE2YCwgYW5kIHRoZSBhbGFybSBiZWxscyBhcmUgZ29pbmcgb2ZmIGltbWVkaWF0ZWx5LiBJZiB0aGF0IGNvdW50ZXIgZ2V0cyB0b28gYmlnLCBiZXlvbmQgNjU1MzUsIHRoZXJlJiMzOTtzIGdvaW5nIHRvIGJlIGFuIGludGVnZXIgb3ZlcmZsb3cuIFdoZW4gdGhpcyBoYXBwZW5zIGR1cmluZyB0aGUgZnJhZ21lbnQgcmVhc3NlbWJseSwgYHBza2JfZXhwYW5kX2hlYWRgIHByb2JhYmx5IGFsbG9jYXRlcyBhIHNtYWxsIGJ1ZmZlciwgdGhlbiBgc2tiX3B1dF9kYXRhYCBlbmRzIHVwIHdyaXRpbmcgcGFzdCB0aGUgYWxsb2NhdGVkIGJ1ZmZlci4gVGhhdCYjMzk7cyBhIGNsYXNzaWMgYnVmZmVyIG92ZXJmbG93IGFuZCBoZWFwIGNvcnJ1cHRpb24gc2l0dWF0aW9uLCBhbmQgd2UgbmVlZCB0byBmaXggaXQuCgpDaGFuZ2luZyBgdTE2IGV4dHJhX2xlbmAgdG8gYHVuc2lnbmVkIGludCBleHRyYV9sZW5gIHNob3VsZCBwcmV2ZW50IHRoZSBvdmVyZmxvdywgYW5kIHRoYXQmIzM5O3MgYW4gZWFzeSBmaXguIEJ1dCBiZWZvcmUgSSBzdGFydCBkcmFmdGluZyBhIHBhdGNoLCBsZXQmIzM5O3Mgc2VlIGlmIHRoaXMgaXMgZXZlbiByZWFjaGFibGUgYW5kIGlmIGl0JiMzOTtzIHdvcnRoIHRoZSBlZmZvcnQgb2YgdGVzdGluZy4gVGhpcyBsb29rcyBsaWtlIHRoZSBgaWVlZTgwMjExX3J4X2hfZGVmcmFnbWVudGAgZnVuY3Rpb24sIHdoaWNoIGlzIHRoZSBtYWM4MDIxMSBmcmFnbWVudCByZWFzc2VtYmx5IGluIHRoZSByZWNlaXZlIHBhdGguIEV4Y2VsbGVudCwgdGhhdCYjMzk7cyBjb3JlIHdpcmVsZXNzIHN1YnN5c3RlbSBsb2dpYy4KCk5vdywgaG93IGVhc2lseSBjYW4gd2UgdHJpZ2dlciB0aGlzPyBUaGlua2luZyBhYm91dCBpdCwgbWFjODAyMTEgaXMgZW11bGF0ZWQgdmlhIGBtYWM4MDIxMV9od3NpbWAsIHdoaWNoIHdlIGNhbiB1c2UgaW4gdmlydHVhbCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VIG9yIEdDRS4gQW5kIGlmIEkgcmVjYWxsIGNvcnJlY3RseSwgc3l6a2FsbGVyIHRlc3RzIG1hYzgwMjExIGV4dGVuc2l2ZWx5IHVzaW5nIGh3c2ltLCBvciB1c2luZyBubDgwMjExL3JhZGlvdGFwL2luamVjdGVkIHBhY2tldHMuIFNvLCB0aGlzIGlzIGRlZmluaXRlbHkgcmVhY2hhYmxlIGFuZCBmdXp6ZWFibGUuIFdlIGFyZSBnb29kIHRvIGdvIQoKVG8gbWFrZSBzdXJlIHRoaXMgY2FuIGJlIHJlYWNoZWQgYW5kIHRlc3RlZCwgSSBuZWVkIHRvIGtub3cgdGhlIEtjb25maWcgb3B0aW9ucyByZXF1aXJlZCBmb3IgYm90aCBtYWM4MDIxMSBhbmQgYG1hYzgwMjExX2h3c2ltYC4gVGltZSB0byBzZWFyY2ggdGhlIEtjb25maWcgZmlsZXMgZm9yIGBNQUM4MDIxMWAuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjkgMDY6MDI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIE1BQzgwMjExJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L21hYzgwMjExJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9tYWM4MDIxMS9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyOmNvbmZpZyBNQUM4MDIxMVxubmV0L21hYzgwMjExL0tjb25maWctMy1cdHRyaXN0YXRlIFwmIzM0O0dlbmVyaWMgSUVFRSA4MDIuMTEgTmV0d29ya2luZyBTdGFjayAobWFjODAyMTEpXCYjMzQ7XG4tLVxubmV0L21hYzgwMjExL0tjb25maWc9MTk9aWYgTUFDODAyMTEgIT0gblxubmV0L21hYzgwMjExL0tjb25maWctMjAtXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyMTpjb25maWcgTUFDODAyMTFfSEFTX1JDXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yMi1cdGJvb2xcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTIzLVxubmV0L21hYzgwMjExL0tjb25maWc6MjQ6Y29uZmlnIE1BQzgwMjExX1JDX01JTlNUUkVMXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yNS1cdGJvb2wgXCYjMzQ7TWluc3RyZWxcJiMzNDsgaWYgRVhQRVJUXG4tLVxubmV0L21hYzgwMjExL0tjb25maWc9MzE9Y2hvaWNlXG4tLVxubmV0L21hYzgwMjExL0tjb25maWctNDAtXG5uZXQvbWFjODAyMTEvS2NvbmZpZzo0MTpjb25maWcgTUFDODAyMTFfUkNfREVGQVVMVF9NSU5TVFJFTFxubmV0L21hYzgwMjExL0tjb25maWctNDItXHRib29sIFwmIzM0O01pbnN0cmVsXCYjMzQ7XG4tLVxubmV0L21hYzgwMjExL0tjb25maWc9NDg9ZW5kY2hvaWNlXG5uZXQvbWFjODAyMTEvS2NvbmZpZy00OS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjUwOmNvbmZpZyBNQUM4MDIxMV9SQ19ERUZBVUxUXG5uZXQvbWFjODAyMTEvS2NvbmZpZy01MS1cdHN0cmluZ1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnPTU3PWNvbW1lbnQgXCYjMzQ7U29tZSB3aXJlbGVzcyBkcml2ZXJzIHJlcXVpcmUgYSByYXRlIGNvbnRyb2wgYWxnb3JpdGhtXCYjMzQ7XG4tLVxubmV0L21hYzgwMjExL0tjb25maWctNTktXG5uZXQvbWFjODAyMTEvS2NvbmZpZzo2MDpjb25maWcgTUFDODAyMTFfS1VOSVRfVEVTVFxubmV0L21hYzgwMjExL0tjb25maWctNjEtXHR0cmlzdGF0ZSBcJiMzNDtLVW5pdCB0ZXN0cyBmb3IgbWFjODAyMTFcJiMzNDsgaWYgIUtVTklUX0FMTF9URVNUU1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnLTY5LVxubmV0L21hYzgwMjExL0tjb25maWc6NzA6Y29uZmlnIE1BQzgwMjExX01FU0hcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTcxLVx0Ym9vbCBcJiMzNDtFbmFibGUgbWFjODAyMTEgbWVzaCBuZXR3b3JraW5nIHN1cHBvcnRcJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy03OC1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjc5OmNvbmZpZyBNQUM4MDIxMV9MRURTXG5uZXQvbWFjODAyMTEvS2NvbmZpZy04MC1cdGJvb2wgXCYjMzQ7RW5hYmxlIExFRCB0cmlnZ2Vyc1wmIzM0O1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnLTg3LVxubmV0L21hYzgwMjExL0tjb25maWc6ODg6Y29uZmlnIE1BQzgwMjExX0RFQlVHRlNcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTg5LVx0Ym9vbCBcJiMzNDtFeHBvcnQgbWFjODAyMTEgaW50ZXJuYWxzIGluIERlYnVnRlNcJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy05Ni1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjk3OmNvbmZpZyBNQUM4MDIxMV9NRVNTQUdFX1RSQUNJTkdcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTk4LVx0Ym9vbCBcJiMzNDtUcmFjZSBhbGwgbWFjODAyMTEgZGVidWcgbWVzc2FnZXNcJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xMDktXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoxMTA6bWVudWNvbmZpZyBNQUM4MDIxMV9ERUJVR19NRU5VXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xMTEtXHRib29sIFwmIzM0O1NlbGVjdCBtYWM4MDIxMSBkZWJ1Z2dpbmcgZmVhdHVyZXNcJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xMTUtXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoxMTY6Y29uZmlnIE1BQzgwMjExX05PSU5MSU5FXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xMTctXHRib29sIFwmIzM0O0RvIG5vdCBpbmxpbmUgVFgvUlggaGFuZGxlcnNcJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xMzEtXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoxMzI6Y29uZmlnIE1BQzgwMjExX1ZFUkJPU0VfREVCVUdcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTEzMy1cdGJvb2wgXCYjMzQ7VmVyYm9zZSBkZWJ1Z2dpbmcgb3V0cHV0XCYjMzQ7XG4tLVxubmV0L21hYzgwMjExL0tjb25maWctMTQyLVxubmV0L21hYzgwMjExL0tjb25maWc6MTQzOmNvbmZpZyBNQUM4MDIxMV9NTE1FX0RFQlVHXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xNDQtXHRib29sIFwmIzM0O1ZlcmJvc2UgbWFuYWdlZCBNTE1FIG91dHB1dFwmIzM0O1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE1My1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjE1NDpjb25maWcgTUFDODAyMTFfU1RBX0RFQlVHXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xNTUtXHRib29sIFwmIzM0O1ZlcmJvc2Ugc3RhdGlvbiBkZWJ1Z2dpbmdcJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xNjItXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoxNjM6Y29uZmlnIE1BQzgwMjExX0hUX0RFQlVHXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xNjQtXHRib29sIFwmIzM0O1ZlcmJvc2UgSFQgZGVidWdnaW5nXCYjMzQ7XG4tLVxubmV0L21hYzgwMjExL0tjb25maWctMTc0LVxubmV0L21hYzgwMjExL0tjb25maWc6MTc1OmNvbmZpZyBNQUM4MDIxMV9PQ0JfREVCVUdcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE3Ni1cdGJvb2wgXCYjMzQ7VmVyYm9zZSBPQ0IgZGVidWdnaW5nXCYjMzQ7XG4tLVxubmV0L21hYzgwMjExL0tjb25maWctMTg1LVxubmV0L21hYzgwMjExL0tjb25maWc6MTg2OmNvbmZpZyBNQUM4MDIxMV9JQlNTX0RFQlVHXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xODctXHRib29sIFwmIzM0O1ZlcmJvc2UgSUJTUyBkZWJ1Z2dpbmdcJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xOTYtXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoxOTc6Y29uZmlnIE1BQzgwMjExX1BTX0RFQlVHXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xOTgtXHRib29sIFwmIzM0O1ZlcmJvc2UgcG93ZXJzYXZlIG1vZGUgZGVidWdnaW5nXCYjMzQ7XG4tLVxubmV0L21hYzgwMjExL0tjb25maWctMjA4LVxubmV0L21hYzgwMjExL0tjb25maWc6MjA5OmNvbmZpZyBNQUM4MDIxMV9NUExfREVCVUdcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTIxMC1cdGJvb2wgXCYjMzQ7VmVyYm9zZSBtZXNoIHBlZXIgbGluayBkZWJ1Z2dpbmdcJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yMjEtXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyMjI6Y29uZmlnIE1BQzgwMjExX01QQVRIX0RFQlVHXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yMjMtXHRib29sIFwmIzM0O1ZlcmJvc2UgbWVzaCBwYXRoIGRlYnVnZ2luZ1wmIzM0O1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnLTIzNC1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjIzNTpjb25maWcgTUFDODAyMTFfTUhXTVBfREVCVUdcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTIzNi1cdGJvb2wgXCYjMzQ7VmVyYm9zZSBtZXNoIEhXTVAgcm91dGluZyBkZWJ1Z2dpbmdcJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yNDctXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyNDg6Y29uZmlnIE1BQzgwMjExX01FU0hfU1lOQ19ERUJVR1xubmV0L21hYzgwMjExL0tjb25maWctMjQ5LVx0Ym9vbCBcJiMzNDtWZXJib3NlIG1lc2ggc3luY2hyb25pemF0aW9uIGRlYnVnZ2luZ1wmIzM0O1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnLTI1OC1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjI1OTpjb25maWcgTUFDODAyMTFfTUVTSF9DU0FfREVCVUdcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTI2MC1cdGJvb2wgXCYjMzQ7VmVyYm9zZSBtZXNoIGNoYW5uZWwgc3dpdGNoIGRlYnVnZ2luZ1wmIzM0O1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnLTI2OS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjI3MDpjb25maWcgTUFDODAyMTFfTUVTSF9QU19ERUJVR1xubmV0L21hYzgwMjExL0tjb25maWctMjcxLVx0Ym9vbCBcJiMzNDtWZXJib3NlIG1lc2ggcG93ZXJzYXZlIGRlYnVnZ2luZ1wmIzM0O1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnLTI4MC1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjI4MTpjb25maWcgTUFDODAyMTFfVERMU19ERUJVR1xubmV0L21hYzgwMjExL0tjb25maWctMjgyLVx0Ym9vbCBcJiMzNDtWZXJib3NlIFRETFMgZGVidWdnaW5nXCYjMzQ7XG4tLVxubmV0L21hYzgwMjExL0tjb25maWctMjkyLVxubmV0L21hYzgwMjExL0tjb25maWc6MjkzOmNvbmZpZyBNQUM4MDIxMV9ERUJVR19DT1VOVEVSU1xubmV0L21hYzgwMjExL0tjb25maWctMjk0LVx0Ym9vbCBcJiMzNDtFeHRyYSBzdGF0aXN0aWNzIGZvciBUWC9SWCBkZWJ1Z2dpbmdcJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0zMDctXG5uZXQvbWFjODAyMTEvS2NvbmZpZzozMDg6Y29uZmlnIE1BQzgwMjExX1NUQV9IQVNIX01BWF9TSVpFXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0zMDktXHRpbnQgXCYjMzQ7U3RhdGlvbiBoYXNoIHRhYmxlIG1heGltdW0gc2l6ZVwmIzM0OyBpZiBNQUM4MDIxMV9ERUJVR19NRU5VXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjkgMDY6MDI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzkzMAoJCQkJCQkJb3V0cHV0OiAzNgoJCQkJCQkJdGhvdWdodHM6IDI1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHN1bW1hcnksIGFzIHRob3VnaCBJIHdlcmUgdGhpbmtpbmcgdGhyb3VnaCB0aGUgcHJvY2VzczoKCioqRGl2aW5nIGludG8gdGhlIE1hYzgwMjExIENvbXBpbGF0aW9uKioKCk9rYXksIHNvIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyBgcngub2AgaXMgYmVpbmcgYnVpbHQuIFRoZSBiZXN0IHBsYWNlIHRvIHN0YXJ0IGlzIGFsd2F5cyB0aGUgYE1ha2VmaWxlYCBpbiB0aGUgYG5ldC9tYWM4MDIxMWAgZGlyZWN0b3J5LiBJdCYjMzk7cyB0aGUgY2VudHJhbCBodWIgZm9yIHRoaXMgbW9kdWxlJiMzOTtzIGNvbXBpbGF0aW9uLiBJJiMzOTtsbCBuZWVkIHRvIGdvIGluIHRoZXJlIGFuZCBmaWd1cmUgb3V0IHdoYXQgcnVsZXMgb3IgdmFyaWFibGVzIGFyZSBpbnZvbHZlZCBpbiBnZW5lcmF0aW5nIHRoYXQgc3BlY2lmaWMgb2JqZWN0IGZpbGUuIENoYW5jZXMgYXJlLCB0aGVyZSYjMzk7cyBhIHNwZWNpZmljIHBhdHRlcm4gb3IgYSBkZXBlbmRlbmN5IGNoYWluIGRlZmluZWQgdGhhdCByZXZlYWxzIHRoZSBidWlsZCBwcm9jZXNzLiBMZXQmIzM5O3Mgc2VlIHdoYXQgdGhlIG1ha2VmaWxlIHJldmVhbHMgYWJvdXQgaXRzIGNvbXBpbGF0aW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yOSAwNjowMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O25ldC9tYWM4MDIxMS9NYWtlZmlsZSYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNTAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAgMTpcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcbiAgIDI6XHRvYmotJChDT05GSUdfTUFDODAyMTEpICYjNDM7PSBtYWM4MDIxMS5vXG4gICAzOlx0XG4gICA0Olx0IyBtYWM4MDIxMSBvYmplY3RzXG4gICA1Olx0bWFjODAyMTEteSA6PSBcXFxuICAgNjpcdFx0bWFpbi5vIHN0YXR1cy5vIFxcXG4gICA3Olx0XHRkcml2ZXItb3BzLm8gXFxcbiAgIDg6XHRcdHN0YV9pbmZvLm8gXFxcbiAgIDk6XHRcdHdlcC5vIFxcXG4gIDEwOlx0XHRhZWFkX2FwaS5vIFxcXG4gIDExOlx0XHR3cGEubyBcXFxuICAxMjpcdFx0c2Nhbi5vIG9mZmNoYW5uZWwubyBcXFxuICAxMzpcdFx0aHQubyBhZ2ctdHgubyBhZ2ctcngubyBcXFxuICAxNDpcdFx0dmh0Lm8gXFxcbiAgMTU6XHRcdGhlLm8gXFxcbiAgMTY6XHRcdHMxZy5vIFxcXG4gIDE3Olx0XHRpYnNzLm8gXFxcbiAgMTg6XHRcdGlmYWNlLm8gXFxcbiAgMTk6XHRcdGxpbmsubyBcXFxuICAyMDpcdFx0cmF0ZS5vIFxcXG4gIDIxOlx0XHR0a2lwLm8gXFxcbiAgMjI6XHRcdGFlc19jbWFjLm8gXFxcbiAgMjM6XHRcdGFlc19nbWFjLm8gXFxcbiAgMjQ6XHRcdGZpbHNfYWVhZC5vIFxcXG4gIDI1Olx0XHRjZmcubyBcXFxuICAyNjpcdFx0ZXRodG9vbC5vIFxcXG4gIDI3Olx0XHRyeC5vIFxcXG4gIDI4Olx0XHRzcGVjdG1nbXQubyBcXFxuICAyOTpcdFx0dHgubyBcXFxuICAzMDpcdFx0a2V5Lm8gXFxcbiAgMzE6XHRcdHV0aWwubyBwYXJzZS5vIFxcXG4gIDMyOlx0XHR3bWUubyBcXFxuICAzMzpcdFx0Y2hhbi5vIGFwLm8gXFxcbiAgMzQ6XHRcdHRyYWNlLm8gbWxtZS5vIFxcXG4gIDM1Olx0XHR0ZGxzLm8gXFxcbiAgMzY6XHRcdG9jYi5vIFxcXG4gIDM3Olx0XHRhaXJ0aW1lLm8gXFxcbiAgMzg6XHRcdGVodC5vIHVoci5vIG5hbi5vXG4gIDM5Olx0XG4gIDQwOlx0bWFjODAyMTEtJChDT05GSUdfTUFDODAyMTFfTEVEUykgJiM0Mzs9IGxlZC5vXG4gIDQxOlx0bWFjODAyMTEtJChDT05GSUdfTUFDODAyMTFfREVCVUdGUykgJiM0Mzs9IFxcXG4gIDQyOlx0XHRkZWJ1Z2ZzLm8gXFxcbiAgNDM6XHRcdGRlYnVnZnNfc3RhLm8gXFxcbiAgNDQ6XHRcdGRlYnVnZnNfbmV0ZGV2Lm8gXFxcbiAgNDU6XHRcdGRlYnVnZnNfa2V5Lm9cbiAgNDY6XHRcbiAgNDc6XHRtYWM4MDIxMS0kKENPTkZJR19NQUM4MDIxMV9NRVNIKSAmIzQzOz0gXFxcbiAgNDg6XHRcdG1lc2gubyBcXFxuICA0OTpcdFx0bWVzaF9wYXRodGJsLm8gXFxcbiAgNTA6XHRcdG1lc2hfcGxpbmsubyBcXFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yOSAwNjowMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4Nzk3CgkJCQkJCQlvdXRwdXQ6IDM3CgkJCQkJCQl0aG91Z2h0czogMTgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipBbmFseXppbmcgS2NvbmZpZyBEZXBlbmRlbmNpZXMgZm9yIENPTkZJR19NQUM4MDIxMSoqCgpPa2F5LCBzbyBJIG5lZWQgdG8gZGlnIGludG8gdGhlIEtjb25maWcgZGVwZW5kZW5jaWVzIGZvciBgQ09ORklHX01BQzgwMjExYC4gVGltZSB0byBiZSBzeXN0ZW1hdGljIGFib3V0IHRoaXMuIEZpcnN0LCBJJiMzOTttIGdvaW5nIHRvIGZpcmUgdXAgdGhlIHJlbGV2YW50IEtjb25maWcgZmlsZXMuIEkga25vdyB0aGUgZ2VuZXJhbCBhcmVhLCBzbyBJJiMzOTtsbCBzdGFydCB3aXRoIHRoZSBzdGFuZGFyZCB3aXJlbGVzcyBhbmQgbmV0d29ya2luZyBkaXJlY3RvcmllcywgYnV0IEkgbWlnaHQgbmVlZCB0byBicmFuY2ggb3V0IGlmIGl0IGdldHMgdHJpY2t5LiBJJiMzOTtsbCBwcm9iYWJseSBiZSB1c2luZyBgZ3JlcGAgb3IgYGZpbmRgIHdpdGggc29tZSB0YXJnZXRlZCBwYXR0ZXJucyB0byBsb2NhdGUgdGhlIGRlZmluaW5nIHN5bWJvbC4KCkkmIzM5O20gdGhpbmtpbmcgSSYjMzk7bGwgbG9vayBmb3IgZGlyZWN0IGRlcGVuZGVuY2llcyBmaXJzdDogYGRlcGVuZHMgb25gLCBgc2VsZWN0YCwgb3IgZXZlbiBgZGVmYXVsdGAgc3RhdGVtZW50cyB0aGF0IGRpcmVjdGx5IHJlZmVyZW5jZSBgQ09ORklHX01BQzgwMjExYC4gVGhhdCYjMzk7cyB0aGUgbG93LWhhbmdpbmcgZnJ1aXQuIE9uY2UgSSYjMzk7dmUgZ290IHRoYXQgaW5pdGlhbCBzZXQsIHRoZW4gSSBuZWVkIHRvIHN0YXJ0IHRyYWNpbmcgKnRoZWlyKiBkZXBlbmRlbmNpZXMuIEkmIzM5O2xsIG5lZWQgdG8gZm9sbG93IHRoZSBjaGFpbiB1cHN0cmVhbSwgZW5zdXJpbmcgSSB1bmRlcnN0YW5kIHRoZSByYXRpb25hbGUgYmVoaW5kIGVhY2ggY29uc3RyYWludC4gVGhpcyBpcyB3aGVyZSB0aGluZ3MgZ2V0IGludGVyZXN0aW5nLCBiZWNhdXNlIG9mdGVuIHRoZXJlIGFyZSBjb21wbGV4IGNvbmRpdGlvbmFsIHJlbGF0aW9uc2hpcHMsIGFuZCBpdCYjMzk7cyBlYXN5IHRvIGdldCBsb3N0IGluIGEgdGFuZ2xlIG9mIGAjaWZkZWZgIHN0YXRlbWVudHMgYW5kIHN1YnRsZSB2ZXJzaW9uIGNoZWNrcy4KCkkmIzM5O2xsIGJlIG1pbmRmdWwgb2YgdGhlIGRpZmZlcmVudCB0eXBlcyBvZiBkZXBlbmRlbmNpZXMsIGVzcGVjaWFsbHkgdGhlIHN1YnRsZSBkaWZmZXJlbmNlcyBiZXR3ZWVuIGBkZXBlbmRzIG9uYCwgYHNlbGVjdGAsIGFuZCBldmVuIGByYW5nZWAgY29uc3RyYWludHMuIFRoZXkgYWxsIGhhdmUgc2xpZ2h0bHkgZGlmZmVyZW50IGltcGxpY2F0aW9ucyBmb3IgdGhlIG92ZXJhbGwgY29uZmlndXJhdGlvbiBzcGFjZS4gQXJlIHRoZXJlIGFueSBkZWZhdWx0IHZhbHVlcyB0aGF0IG1pZ2h0IGltcGFjdCBob3cgdGhpcyBtb2R1bGUgaXMgZW5hYmxlZD8gSXQmIzM5O3MgZWFzeSB0byBvdmVybG9vayBkZWZhdWx0cy4gVGhlbiwgSSBuZWVkIHRvIGNvbnNpZGVyIHBvdGVudGlhbCBjb25mbGljdHMuIEFyZSB0aGVyZSBhbnkgb3RoZXIgY29uZmlndXJhdGlvbnMgdGhhdCB3b3VsZCBwcmV2ZW50IGBDT05GSUdfTUFDODAyMTFgIGZyb20gYmVpbmcgc2VsZWN0ZWQgb3IgZnVuY3Rpb25hbD8gSSYjMzk7bGwgcHJvYmFibHkgbmVlZCB0byBidWlsZCBhIG1lbnRhbCBtYXAgb2YgdGhlIGNvbmZpZ3VyYXRpb24gc3BhY2UgYXMgSSYjMzk7bSBkaWdnaW5nIHRocm91Z2ggdGhlc2UgZGVwZW5kZW5jaWVzLgoKQW5kIG9mIGNvdXJzZSwgSSYjMzk7bGwgbmVlZCB0byBjaGVjayBmb3IgYW55IHBsYXRmb3JtLXNwZWNpZmljIGRlcGVuZGVuY2llcy4gQXJlIHdlIGRlYWxpbmcgd2l0aCBhbnkgYXJjaGl0ZWN0dXJlcyBvciBib2FyZCBjb25maWd1cmF0aW9ucyB0aGF0IGhhdmUgc3BlY2lhbCByZXF1aXJlbWVudHMgb3IgbGltaXRhdGlvbnM/IEkga25vdyBmcm9tIGV4cGVyaWVuY2UgdGhhdCB0aGVzZSBwbGF0Zm9ybS1zcGVjaWZpYyBhZGRpdGlvbnMgY2FuIHNvbWV0aW1lcyBiZSBkZWVwbHkgbmVzdGVkLCBzbyBJIG1heSBuZWVkIHRvIGxvb2sgYXQgYXJjaGl0ZWN0dXJlLXNwZWNpZmljIEtjb25maWcgZnJhZ21lbnRzIGFzIHdlbGwuIEZpbmFsbHksIEkmIzM5O2xsIGtlZXAgYW4gZXllIG91dCBmb3IgYW55IHVudXN1YWwgb3IgdW5kb2N1bWVudGVkIGRlcGVuZGVuY2llcy4gU29tZXRpbWVzIHRoZXJlJiMzOTtzIGEgZ29vZCByZWFzb24gZm9yIGEgc2VlbWluZ2x5IGFyYml0cmFyeSByZXF1aXJlbWVudCwgYW5kIHNvbWV0aW1lcyBpdCYjMzk7cyBqdXN0IGEgbGVmdG92ZXIgZnJvbSBhIHByZXZpb3VzIGRldmVsb3BtZW50IGVmZm9ydC4gR2V0dGluZyB0aGlzIHJpZ2h0IGlzIGNyaXRpY2FsLiBUaGlzIGlzIGEgc29saWQgcGllY2Ugb2YgdGhlIHB1enpsZSB0aGF0IGVuc3VyZXMgZXZlcnl0aGluZyBmdW5jdGlvbnMgY29ycmVjdGx5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yOSAwNjowMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O25ldC9tYWM4MDIxMS9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAyNQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgICAxOlx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG4gICAyOlx0Y29uZmlnIE1BQzgwMjExXG4gICAzOlx0XHR0cmlzdGF0ZSBcJiMzNDtHZW5lcmljIElFRUUgODAyLjExIE5ldHdvcmtpbmcgU3RhY2sgKG1hYzgwMjExKVwmIzM0O1xuICAgNDpcdFx0ZGVwZW5kcyBvbiBDRkc4MDIxMVxuICAgNTpcdFx0c2VsZWN0IENSWVBUT1xuICAgNjpcdFx0c2VsZWN0IENSWVBUT19MSUJfQUVTX0NCQ19NQUNTXG4gICA3Olx0XHRzZWxlY3QgQ1JZUFRPX0xJQl9BUkM0XG4gICA4Olx0XHRzZWxlY3QgQ1JZUFRPX0FFU1xuICAgOTpcdFx0c2VsZWN0IENSWVBUT19DQ01cbiAgMTA6XHRcdHNlbGVjdCBDUllQVE9fR0NNXG4gIDExOlx0XHRzZWxlY3QgQ1JDMzJcbiAgMTI6XHRcdGhlbHBcbiAgMTM6XHRcdCAgVGhpcyBvcHRpb24gZW5hYmxlcyB0aGUgaGFyZHdhcmUgaW5kZXBlbmRlbnQgSUVFRSA4MDIuMTFcbiAgMTQ6XHRcdCAgbmV0d29ya2luZyBzdGFjay5cbiAgMTU6XHRcbiAgMTY6XHRjb21tZW50IFwmIzM0O0NGRzgwMjExIG5lZWRzIHRvIGJlIGVuYWJsZWQgZm9yIE1BQzgwMjExXCYjMzQ7XG4gIDE3Olx0XHRkZXBlbmRzIG9uIENGRzgwMjExPW5cbiAgMTg6XHRcbiAgMTk6XHRpZiBNQUM4MDIxMSAhPSBuXG4gIDIwOlx0XG4gIDIxOlx0Y29uZmlnIE1BQzgwMjExX0hBU19SQ1xuICAyMjpcdFx0Ym9vbFxuICAyMzpcdFxuICAyNDpcdGNvbmZpZyBNQUM4MDIxMV9SQ19NSU5TVFJFTFxuICAyNTpcdFx0Ym9vbCBcJiMzNDtNaW5zdHJlbFwmIzM0OyBpZiBFWFBFUlRcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjkgMDY6MDI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogOTcwNwoJCQkJCQkJb3V0cHV0OiAzMQoJCQkJCQkJdGhvdWdodHM6IDIzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQmIzM5O3MgaW50ZXJuYWwgbW9ub2xvZ3VlOgoKKipDaGVja2luZyBgQ0ZHODAyMTFgIERlcGVuZGVuY2llcyBpbiBgbmV0L3dpcmVsZXNzL0tjb25maWdgKioKCkFscmlnaHQsIGxldCYjMzk7cyBkaXZlIGludG8gdGhlIGBuZXQvd2lyZWxlc3MvS2NvbmZpZ2AgZmlsZS4gSSBuZWVkIHRvIHJlZnJlc2ggbXkgbWVtb3J5IG9uIGhvdyBgQ0ZHODAyMTFgIGlzIHdpcmVkIHVwLCBzcGVjaWZpY2FsbHkgbG9va2luZyBhdCB0aGUgZGVwZW5kZW5jeSBzdHJ1Y3R1cmUuIEkmIzM5O20gYXNzdW1pbmcgdGhlcmUmIzM5O3MgYmVlbiBhIGNoYW5nZSBJIG5lZWQgdG8gdW5kZXJzdGFuZCwgb3IgbWF5YmUgSSYjMzk7bSB0cm91Ymxlc2hvb3RpbmcgYSBjb25maWd1cmF0aW9uIGlzc3VlLiBUaGUgYEtjb25maWdgIGZpbGVzIGFyZSB1c3VhbGx5IHByZXR0eSBzdHJhaWdodGZvcndhcmQsIGJ1dCB5b3Uga25vdyBob3cgaXQgZ29lczsgaXQmIzM5O3MgZWFzeSB0byBtaXNzIHN1YnRsZSBpbnRlcmFjdGlvbnMuIEkmIzM5O2xsIG5lZWQgdG8gc2VlIHdoaWNoIG90aGVyIG9wdGlvbnMgZGVwZW5kIG9uLCBvciBhcmUgZGVwZW5kZWQgb24gYnksIGBDRkc4MDIxMWAuIEFyZSB0aGVyZSBhbnkgbmV3IGRlcGVuZGVuY2llcyBpbnRyb2R1Y2VkPyBBcmUgdGhlcmUgYW55IHRoYXQgaGF2ZSBiZWVuIHJlbW92ZWQgb3IgY2hhbmdlZD8gSSYjMzk7bGwgcHJvYmFibHkgYmUgY2hlY2tpbmcgdGhpbmdzIGxpa2UgdGhlIGhhcmR3YXJlIGxheWVyLCByZWd1bGF0b3J5IGRhdGFiYXNlIGludGVyYWN0aW9ucywgYW5kIGFueSB3aXJlbGVzcyBleHRlbnNpb25zIHRoYXQgaG9vayBpbnRvIGl0LiBJJiMzOTtsbCBtZW50YWxseSBtYXAgb3V0IHRoZSBkaWZmZXJlbnQgcGF0aHMgdGhlIGNvbmZpZ3VyYXRpb24gY2FuIHRha2UgYW5kIHdoZXJlIGBDRkc4MDIxMWAgc2VydmVzIGFzIGEgbGluY2hwaW4gb3IgYSBidWlsZGluZyBibG9jay4gR290dGEgZ2V0IGEgc29saWQgZ3Jhc3Agb2YgdGhpcyBiZWNhdXNlIGl0JiMzOTtzIGEgZnVuZGFtZW50YWwgcGFydCBvZiB0aGUgd2lyZWxlc3Mgc3RhY2ssIGFuZCBhIG1pc2NvbmZpZ3VyYXRpb24gaGVyZSBjb3VsZCBjYXVzZSBhIGxvdCBvZiBoZWFkYWNoZXMgZG93bnN0cmVhbS4gVGltZSB0byBzdGFydCByZWFkaW5nIQoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yOSAwNjowMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgQ0ZHODAyMTEmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvd2lyZWxlc3MmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L3dpcmVsZXNzL0tjb25maWc9MTQ9Y29uZmlnIFdFWFRfUFJJVlxuLS1cbm5ldC93aXJlbGVzcy9LY29uZmlnLTE2LVxubmV0L3dpcmVsZXNzL0tjb25maWc6MTc6Y29uZmlnIENGRzgwMjExXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xOC1cdHRyaXN0YXRlIFwmIzM0O2NmZzgwMjExIC0gd2lyZWxlc3MgY29uZmlndXJhdGlvbiBBUElcJiMzNDtcbi0tXG5uZXQvd2lyZWxlc3MvS2NvbmZpZz0zOD1jb25maWcgTkw4MDIxMV9URVNUTU9ERVxuLS1cbm5ldC93aXJlbGVzcy9LY29uZmlnLTUxLVxubmV0L3dpcmVsZXNzL0tjb25maWc6NTI6Y29uZmlnIENGRzgwMjExX0RFVkVMT1BFUl9XQVJOSU5HU1xubmV0L3dpcmVsZXNzL0tjb25maWctNTMtXHRib29sIFwmIzM0O2VuYWJsZSBkZXZlbG9wZXIgd2FybmluZ3NcJiMzNDtcbi0tXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy02Ny1cbm5ldC93aXJlbGVzcy9LY29uZmlnOjY4OmNvbmZpZyBDRkc4MDIxMV9DRVJUSUZJQ0FUSU9OX09OVVNcbm5ldC93aXJlbGVzcy9LY29uZmlnLTY5LVx0Ym9vbCBcJiMzNDtjZmc4MDIxMSBjZXJ0aWZpY2F0aW9uIG9udXNcJiMzNDtcbi0tXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy04OC1cbm5ldC93aXJlbGVzcy9LY29uZmlnOjg5OmNvbmZpZyBDRkc4MDIxMV9SRVFVSVJFX1NJR05FRF9SRUdEQlxubmV0L3dpcmVsZXNzL0tjb25maWctOTAtXHRib29sIFwmIzM0O3JlcXVpcmUgcmVnZGIgc2lnbmF0dXJlXCYjMzQ7IGlmIENGRzgwMjExX0NFUlRJRklDQVRJT05fT05VU1xuLS1cbm5ldC93aXJlbGVzcy9LY29uZmlnLTk4LVxubmV0L3dpcmVsZXNzL0tjb25maWc6OTk6Y29uZmlnIENGRzgwMjExX1VTRV9LRVJORUxfUkVHREJfS0VZU1xubmV0L3dpcmVsZXNzL0tjb25maWctMTAwLVx0Ym9vbCBcJiMzNDthbGxvdyByZWdkYiBrZXlzIHNoaXBwZWQgd2l0aCB0aGUga2VybmVsXCYjMzQ7IGlmIENGRzgwMjExX0NFUlRJRklDQVRJT05fT05VU1xuLS1cbm5ldC93aXJlbGVzcy9LY29uZmlnLTExMC1cbm5ldC93aXJlbGVzcy9LY29uZmlnOjExMTpjb25maWcgQ0ZHODAyMTFfRVhUUkFfUkVHREJfS0VZRElSXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xMTItXHRzdHJpbmcgXCYjMzQ7YWRkaXRpb25hbCByZWdkYiBrZXkgZGlyZWN0b3J5XCYjMzQ7IGlmIENGRzgwMjExX0NFUlRJRklDQVRJT05fT05VU1xuLS1cbm5ldC93aXJlbGVzcy9LY29uZmlnLTEyMS1cbm5ldC93aXJlbGVzcy9LY29uZmlnOjEyMjpjb25maWcgQ0ZHODAyMTFfUkVHX0NFTExVTEFSX0hJTlRTXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xMjMtXHRib29sIFwmIzM0O2NmZzgwMjExIHJlZ3VsYXRvcnkgc3VwcG9ydCBmb3IgY2VsbHVsYXIgYmFzZSBzdGF0aW9uIGhpbnRzXCYjMzQ7XG4tLVxubmV0L3dpcmVsZXNzL0tjb25maWctMTM0LVxubmV0L3dpcmVsZXNzL0tjb25maWc6MTM1OmNvbmZpZyBDRkc4MDIxMV9SRUdfUkVMQVhfTk9fSVJcbm5ldC93aXJlbGVzcy9LY29uZmlnLTEzNi1cdGJvb2wgXCYjMzQ7Y2ZnODAyMTEgc3VwcG9ydCBmb3IgTk9fSVIgcmVsYXhhdGlvblwmIzM0O1xuLS1cbm5ldC93aXJlbGVzcy9LY29uZmlnLTE1OC1cbm5ldC93aXJlbGVzcy9LY29uZmlnOjE1OTpjb25maWcgQ0ZHODAyMTFfREVGQVVMVF9QU1xubmV0L3dpcmVsZXNzL0tjb25maWctMTYwLVx0Ym9vbCBcJiMzNDtlbmFibGUgcG93ZXJzYXZlIGJ5IGRlZmF1bHRcJiMzNDtcbi0tXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xNjgtXG5uZXQvd2lyZWxlc3MvS2NvbmZpZzoxNjk6Y29uZmlnIENGRzgwMjExX0RFQlVHRlNcbm5ldC93aXJlbGVzcy9LY29uZmlnLTE3MC1cdGJvb2wgXCYjMzQ7Y2ZnODAyMTEgRGVidWdGUyBlbnRyaWVzXCYjMzQ7XG4tLVxubmV0L3dpcmVsZXNzL0tjb25maWctMTc2LVxubmV0L3dpcmVsZXNzL0tjb25maWc6MTc3OmNvbmZpZyBDRkc4MDIxMV9DUkRBX1NVUFBPUlRcbm5ldC93aXJlbGVzcy9LY29uZmlnLTE3OC1cdGJvb2wgXCYjMzQ7c3VwcG9ydCBDUkRBXCYjMzQ7IGlmIEVYUEVSVFxuLS1cbm5ldC93aXJlbGVzcy9LY29uZmlnLTE4Ni1cbm5ldC93aXJlbGVzcy9LY29uZmlnOjE4Nzpjb25maWcgQ0ZHODAyMTFfV0VYVFxubmV0L3dpcmVsZXNzL0tjb25maWctMTg4LVx0Ym9vbCBcJiMzNDtjZmc4MDIxMSB3aXJlbGVzcyBleHRlbnNpb25zIGNvbXBhdGliaWxpdHlcJiMzNDtcbi0tXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xOTMtXG5uZXQvd2lyZWxlc3MvS2NvbmZpZzoxOTQ6Y29uZmlnIENGRzgwMjExX0tVTklUX1RFU1Rcbm5ldC93aXJlbGVzcy9LY29uZmlnLTE5NS1cdHRyaXN0YXRlIFwmIzM0O0tVbml0IHRlc3RzIGZvciBjZmc4MDIxMVwmIzM0OyBpZiAhS1VOSVRfQUxMX1RFU1RTXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI5IDA2OjAyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEwOTYyCgkJCQkJCQlvdXRwdXQ6IDMyCgkJCQkJCQl0aG91Z2h0czogMTgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgc3VtbWFyeSwgYXMgdGhvdWdoIEkmIzM5O20gdGhpbmtpbmcgdGhyb3VnaCB0aGlzIHByb2Nlc3M6CgoqKkRpdmluZyBpbnRvIHRoZSBXaXJlbGVzcyBLZXJuZWwgQ29uZmlndXJhdGlvbioqCgpPa2F5LCB0aW1lIHRvIGdldCB0byB3b3JrLiBJIG5lZWQgdG8gcmVmcmVzaCBteSBtZW1vcnkgb24gc29tZSB3aXJlbGVzcyBjb25maWd1cmF0aW9uIGRldGFpbHMuIFRoZSBiZXN0IHBsYWNlIHRvIHN0YXJ0IGlzIGFsd2F5cyB0aGUgYEtjb25maWdgIGZpbGUsIHBhcnRpY3VsYXJseSB0aGUgbWFpbiBvbmUgaW4gdGhlIGBuZXQvd2lyZWxlc3NgIGRpcmVjdG9yeS4gTXkgZ3V0IHNheXMgdGhlIGtleSBjb25maWd1cmF0aW9ucyBhcmUgcHJvYmFibHkgbmVhciB0aGUgdG9wLiBMZXQgbWUganVtcCByaWdodCB0byBsaW5lIDE3IG9mIGBuZXQvd2lyZWxlc3MvS2NvbmZpZ2AgYW5kIHNlZSB3aGF0JiMzOTtzIGRlZmluZWQgdGhlcmUuIEhvcGVmdWxseSwgdGhhdCBzaG91bGQgZ2l2ZSBtZSBhIGdvb2QganVtcGluZy1vZmYgcG9pbnQgYW5kIHRoZSByZWxldmFudCBjb25maWd1cmF0aW9uIG9wdGlvbnMuIFRpbWUgdG8gZ2V0IG15IGJlYXJpbmdzIGFuZCB1bmRlcnN0YW5kIHdoYXQgY29udHJvbHMgYXJlIGluIHBsYWNlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yOSAwNjowMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O25ldC93aXJlbGVzcy9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAzNQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgICAxOlx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG4gICAyOlx0Y29uZmlnIFdJUkVMRVNTX0VYVFxuICAgMzpcdFx0Ym9vbFxuICAgNDpcdFxuICAgNTpcdGNvbmZpZyBXRVhUX0NPUkVcbiAgIDY6XHRcdGRlZl9ib29sIHlcbiAgIDc6XHRcdGRlcGVuZHMgb24gQ0ZHODAyMTFfV0VYVCB8fCBXSVJFTEVTU19FWFRcbiAgIDg6XHRcbiAgIDk6XHRjb25maWcgV0VYVF9QUk9DXG4gIDEwOlx0XHRkZWZfYm9vbCB5XG4gIDExOlx0XHRkZXBlbmRzIG9uIFBST0NfRlNcbiAgMTI6XHRcdGRlcGVuZHMgb24gV0VYVF9DT1JFXG4gIDEzOlx0XG4gIDE0Olx0Y29uZmlnIFdFWFRfUFJJVlxuICAxNTpcdFx0Ym9vbFxuICAxNjpcdFxuICAxNzpcdGNvbmZpZyBDRkc4MDIxMVxuICAxODpcdFx0dHJpc3RhdGUgXCYjMzQ7Y2ZnODAyMTEgLSB3aXJlbGVzcyBjb25maWd1cmF0aW9uIEFQSVwmIzM0O1xuICAxOTpcdFx0ZGVwZW5kcyBvbiBSRktJTEwgfHwgIVJGS0lMTFxuICAyMDpcdFx0c2VsZWN0IEZXX0xPQURFUlxuICAyMTpcdFx0c2VsZWN0IENSQzMyXG4gIDIyOlx0XHQjIG1heSBuZWVkIHRvIHVwZGF0ZSB0aGlzIHdoZW4gY2VydGlmaWNhdGVzIGFyZSBjaGFuZ2VkIGFuZCBhcmVcbiAgMjM6XHRcdCMgdXNpbmcgYSBkaWZmZXJlbnQgYWxnb3JpdGhtLCB0aG91Z2ggcmlnaHQgbm93IHRoZXkgc2hvdWxkbiYjMzk7dFxuICAyNDpcdFx0IyAodGhpcyBpcyBoZXJlIHJhdGhlciB0aGFuIGJlbG93IHRvIGFsbG93IGl0IHRvIGJlIGEgbW9kdWxlKVxuICAyNTpcdFx0c2VsZWN0IENSWVBUT19TSEEyNTYgaWYgQ0ZHODAyMTFfVVNFX0tFUk5FTF9SRUdEQl9LRVlTXG4gIDI2Olx0XHRoZWxwXG4gIDI3Olx0XHQgIGNmZzgwMjExIGlzIHRoZSBMaW51eCB3aXJlbGVzcyBMQU4gKDgwMi4xMSkgY29uZmlndXJhdGlvbiBBUEkuXG4gIDI4Olx0XHQgIEVuYWJsZSB0aGlzIGlmIHlvdSBoYXZlIGEgd2lyZWxlc3MgZGV2aWNlLlxuICAyOTpcdFxuICAzMDpcdFx0ICBGb3IgbW9yZSBpbmZvcm1hdGlvbiByZWZlciB0byBkb2N1bWVudGF0aW9uIG9uIHRoZSB3aXJlbGVzcyB3aWtpOlxuICAzMTpcdFxuICAzMjpcdFx0ICBodHRwczovL3dpcmVsZXNzLndpa2kua2VybmVsLm9yZy9lbi9kZXZlbG9wZXJzL0RvY3VtZW50YXRpb24vY2ZnODAyMTFcbiAgMzM6XHRcbiAgMzQ6XHRcdCAgV2hlbiBidWlsdCBhcyBhIG1vZHVsZSBpdCB3aWxsIGJlIGNhbGxlZCBjZmc4MDIxMS5cbiAgMzU6XHRcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjkgMDY6MDI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTE2MzQKCQkJCQkJCW91dHB1dDogMzYKCQkJCQkJCXRob3VnaHRzOiA1OQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipJbnZlc3RpZ2F0aW5nIHRoZSBNQUM4MDIxMSBIV1NJTSBDb25maWd1cmF0aW9uKioKCk9rYXksIHNvIEkgbmVlZCB0byBnZXQgYSBoYW5kbGUgb24gaG93IHRoaXMgYE1BQzgwMjExX0hXU0lNYCB0aGluZyBpcyBjb25maWd1cmVkLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gZGl2ZSBpbnRvIHRoZSBjb2RlIGl0c2VsZiwgc3RhcnRpbmcgd2l0aCBgZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbS5jYC4gSSBleHBlY3QgdG8gZmluZCB0aGUgcmVsZXZhbnQgY29uZmlndXJhdGlvbiBvcHRpb25zIG9yIGhvb2tzIGluIHRoZXJlLiBJJiMzOTttIGdvaW5nIHRvIHRyeSBhbmQgcGlucG9pbnQgZXhhY3RseSAqd2hlcmUqIHRoZSBgbWFjODAyMTFfaHdzaW1gIGZ1bmN0aW9uYWxpdHkgaXMgaW5pdGlhbGl6ZWQsIGVuYWJsZWQsIG9yIG90aGVyd2lzZSBtYW5hZ2VkIHdpdGhpbiB0aGUgYnJvYWRlciBrZXJuZWwgY29uZmlndXJhdGlvbiBmcmFtZXdvcmsuIEZpbmRpbmcgdGhhdCBjb25maWcgc2V0dGluZyBpcyBteSBwcmltYXJ5IG9iamVjdGl2ZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjkgMDY6MDI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIE1BQzgwMjExX0hXU0lNJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9LY29uZmlnOjE6Y29uZmlnIE1BQzgwMjExX0hXU0lNXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL0tjb25maWctMi1cdHRyaXN0YXRlIFwmIzM0O1NpbXVsYXRlZCByYWRpbyB0ZXN0aW5nIHRvb2wgZm9yIG1hYzgwMjExXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI5IDA2OjAyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDExOTM5CgkJCQkJCQlvdXRwdXQ6IDM4CgkJCQkJCQl0aG91Z2h0czogNTEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCYjMzk7cyBkaXZlIGludG8gdGhpcy4gSSBuZWVkIHRvIGdldCBhIGhhbmRsZSBvbiB0aGUgZGVmcmFnbWVudGF0aW9uIGFuZCByZWNlaXZlIGZyYW1lIGhhbmRsaW5nIHdpdGhpbiB0aGUgYG5ldC9tYWM4MDIxMS9yeC5jYCBmaWxlLiBNeSBpbml0aWFsIGZvY3VzIGlzIG9uIHRoZSBzeW1ib2xzIGludm9sdmVkIGluIHRob3NlIHByb2Nlc3Nlcy4gSSB3YW50IHRvIGlkZW50aWZ5IHRoZSBrZXkgZnVuY3Rpb25z4oCUdGhlIG9uZXMgdGhhdCBhcmUgZWl0aGVyIG5vbi1zdGF0aWMsIGluZGljYXRpbmcgdGhleSYjMzk7cmUgbGlrZWx5IGNhbGxlZCBmcm9tIGVsc2V3aGVyZSwgb3IgdGhvc2UgYWN0aW5nIGFzIGVudHJ5IHBvaW50cy4gVGhpcyB3aWxsIGdpdmUgbWUgYSBiZXR0ZXIgb3ZlcnZpZXcgb2YgaG93IHRoZSBkZWZyYWdtZW50YXRpb24gYW5kIHJlY2VpdmUgZnJhbWUgbWVjaGFuaXNtcyBhcmUgc3RydWN0dXJlZCB3aXRoaW4gdGhpcyBtb2R1bGUuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBwdWJsaWMgaW50ZXJmYWNlcyBhbmQgdGhlIHN0YXJ0aW5nIHBvaW50cyBvZiB0aGlzIGNvZGUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI5IDA2OjAyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2llZWU4MDIxMV9yeF8mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbWFjODAyMTEmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7XG5GdWxsIG91dHB1dCBpcyB0b28gbG9uZywgc2hvd2luZyA1MDAgb3V0IG9mIDEyMzkgbGluZXMuXG5Vc2UgbW9yZSBwcmVjaXNlIGV4cHJlc3Npb24gaWYgcG9zc2libGUuXG5cbm5ldC9tYWM4MDIxMS9hZ2ctcnguYz01MjI9RVhQT1JUX1NZTUJPTChpZWVlODAyMTFfbWFuYWdlX3J4X2JhX29mZmwpO1xubmV0L21hYzgwMjExL2FnZy1yeC5jLTUyMy1cbm5ldC9tYWM4MDIxMS9hZ2ctcnguYzo1MjQ6dm9pZCBpZWVlODAyMTFfcnhfYmFfdGltZXJfZXhwaXJlZChzdHJ1Y3QgaWVlZTgwMjExX3ZpZiAqdmlmLFxubmV0L21hYzgwMjExL2FnZy1yeC5jLTUyNS1cdFx0XHRcdCAgIGNvbnN0IHU4ICphZGRyLCB1bnNpZ25lZCBpbnQgdGlkKVxuLS1cbm5ldC9tYWM4MDIxMS9hZ2ctcnguYy01NDAtfVxubmV0L21hYzgwMjExL2FnZy1yeC5jOjU0MTpFWFBPUlRfU1lNQk9MKGllZWU4MDIxMV9yeF9iYV90aW1lcl9leHBpcmVkKTtcbi0tXG5uZXQvbWFjODAyMTEvYWlydGltZS5jPTUwNj1zdGF0aWMgdTMyIGllZWU4MDIxMV9nZXRfcmF0ZV9kdXJhdGlvbihzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcbm5ldC9tYWM4MDIxMS9haXJ0aW1lLmM6NTA3Olx0XHRcdFx0ICAgICAgIHN0cnVjdCBpZWVlODAyMTFfcnhfc3RhdHVzICpzdGF0dXMsXG5uZXQvbWFjODAyMTEvYWlydGltZS5jLTUwOC1cdFx0XHRcdCAgICAgICB1MzIgKm92ZXJoZWFkKVxuLS1cbm5ldC9tYWM4MDIxMS9haXJ0aW1lLmM9NTg1PXUzMiBpZWVlODAyMTFfY2FsY19yeF9haXJ0aW1lKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxubmV0L21hYzgwMjExL2FpcnRpbWUuYzo1ODY6XHRcdFx0ICAgICAgc3RydWN0IGllZWU4MDIxMV9yeF9zdGF0dXMgKnN0YXR1cyxcbm5ldC9tYWM4MDIxMS9haXJ0aW1lLmMtNTg3LVx0XHRcdCAgICAgIGludCBsZW4pXG4tLVxubmV0L21hYzgwMjExL2FpcnRpbWUuYz02MjU9c3RhdGljIGJvb2wgaWVlZTgwMjExX2ZpbGxfcmF0ZV9pbmZvKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxubmV0L21hYzgwMjExL2FpcnRpbWUuYzo2MjY6XHRcdFx0XHQgICAgIHN0cnVjdCBpZWVlODAyMTFfcnhfc3RhdHVzICpzdGF0LCB1OCBiYW5kLFxubmV0L21hYzgwMjExL2FpcnRpbWUuYy02MjctXHRcdFx0XHQgICAgIHN0cnVjdCByYXRlX2luZm8gKnJpKVxuLS1cbm5ldC9tYWM4MDIxMS9haXJ0aW1lLmMtNjc2LVxubmV0L21hYzgwMjExL2FpcnRpbWUuYzo2Nzc6c3RhdGljIGludCBpZWVlODAyMTFfZmlsbF9yeF9zdGF0dXMoc3RydWN0IGllZWU4MDIxMV9yeF9zdGF0dXMgKnN0YXQsXG5uZXQvbWFjODAyMTEvYWlydGltZS5jLTY3OC1cdFx0XHRcdCAgICBzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcbi0tXG5uZXQvbWFjODAyMTEvYWlydGltZS5jPTcyMD1zdGF0aWMgdTMyIGllZWU4MDIxMV9jYWxjX3R4X2FpcnRpbWVfcmF0ZShzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcbi0tXG5uZXQvbWFjODAyMTEvYWlydGltZS5jLTcyNC17XG5uZXQvbWFjODAyMTEvYWlydGltZS5jOjcyNTpcdHN0cnVjdCBpZWVlODAyMTFfcnhfc3RhdHVzIHN0YXQ7XG5uZXQvbWFjODAyMTEvYWlydGltZS5jLTcyNi1cbi0tXG5uZXQvbWFjODAyMTEvYWlydGltZS5jPTc1Nj11MzIgaWVlZTgwMjExX3JhdGVfZXhwZWN0ZWRfdHhfYWlydGltZShzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcbi0tXG5uZXQvbWFjODAyMTEvYWlydGltZS5jLTc2MS17XG5uZXQvbWFjODAyMTEvYWlydGltZS5jOjc2MjpcdHN0cnVjdCBpZWVlODAyMTFfcnhfc3RhdHVzIHN0YXQ7XG5uZXQvbWFjODAyMTEvYWlydGltZS5jLTc2My1cdHUzMiBkdXJhdGlvbiwgb3ZlcmhlYWQ7XG4tLVxubmV0L21hYzgwMjExL2FwLmM9NTA9c3RhdGljIHZvaWRcbm5ldC9tYWM4MDIxMS9hcC5jOjUxOmllZWU4MDIxMV9yeF9lbWxfb3BfbW9kZV9ub3RpZihzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSxcbm5ldC9tYWM4MDIxMS9hcC5jLTUyLVx0XHRcdCAgICAgICBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuLS1cbm5ldC9tYWM4MDIxMS9hcC5jLTU1LVx0ZW51bSBubDgwMjExX2lmdHlwZSB0eXBlID0gaWVlZTgwMjExX3ZpZl90eXBlX3AycChcdTAwMjZzZGF0YS1cdTAwM2V2aWYpO1xubmV0L21hYzgwMjExL2FwLmM6NTY6XHRzdHJ1Y3QgaWVlZTgwMjExX3J4X3N0YXR1cyAqc3RhdHVzID0gSUVFRTgwMjExX1NLQl9SWENCKHNrYik7XG5uZXQvbWFjODAyMTEvYXAuYy01Ny1cdGNvbnN0IHN0cnVjdCB3aXBoeV9pZnR5cGVfZXh0X2NhcGFiICppZnRfZXh0X2NhcGE7XG4tLVxubmV0L21hYzgwMjExL2FwLmM9MTkwPXN0YXRpYyB2b2lkXG5uZXQvbWFjODAyMTEvYXAuYzoxOTE6aWVlZTgwMjExX3J4X3Vocl9saW5rX3JlY29uZmlnX3JlcShzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSxcbm5ldC9tYWM4MDIxMS9hcC5jLTE5Mi1cdFx0XHRcdCAgIHN0cnVjdCBza19idWZmICpza2IpXG4tLVxubmV0L21hYzgwMjExL2FwLmM9Mjk3PXZvaWQgaWVlZTgwMjExX2FwX3J4X3F1ZXVlZF9mcmFtZShzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSxcbi0tXG5uZXQvbWFjODAyMTEvYXAuYy0zMDktXHRcdGNhc2UgV0xBTl9QUk9URUNURURfRUhUX0FDVElPTl9FTUxfT1BfTU9ERV9OT1RJRjpcbm5ldC9tYWM4MDIxMS9hcC5jOjMxMDpcdFx0XHRpZWVlODAyMTFfcnhfZW1sX29wX21vZGVfbm90aWYoc2RhdGEsIHNrYik7XG5uZXQvbWFjODAyMTEvYXAuYy0zMTEtXHRcdFx0YnJlYWs7XG4tLVxubmV0L21hYzgwMjExL2FwLmMtMzE2LVx0XHRjYXNlIElFRUU4MDIxMV9QUk9URUNURURfVUhSX0FDVElPTl9MSU5LX1JFQ09ORklHX1JFUVVFU1Q6XG5uZXQvbWFjODAyMTEvYXAuYzozMTc6XHRcdFx0aWVlZTgwMjExX3J4X3Vocl9saW5rX3JlY29uZmlnX3JlcShzZGF0YSwgc2tiKTtcbm5ldC9tYWM4MDIxMS9hcC5jLTMxOC1cdFx0XHRicmVhaztcbi0tXG5uZXQvbWFjODAyMTEvZHJvcC5oLTExLVxubmV0L21hYzgwMjExL2Ryb3AuaDoxMjp0eXBlZGVmIHVuc2lnbmVkIGludCBfX2JpdHdpc2UgaWVlZTgwMjExX3J4X3Jlc3VsdDtcbm5ldC9tYWM4MDIxMS9kcm9wLmgtMTMtXG4tLVxubmV0L21hYzgwMjExL2Ryb3AuaC0xMTItXG5uZXQvbWFjODAyMTEvZHJvcC5oOjExMzovKiBoYXZpbmcgdHdvIGVudW1zIGFsbG93cyBmb3IgY2hlY2tpbmcgaWVlZTgwMjExX3J4X3Jlc3VsdCB1c2Ugd2l0aCBzcGFyc2UgKi9cbm5ldC9tYWM4MDIxMS9kcm9wLmgtMTE0LWVudW0gX19fbWFjODAyMTFfZHJvcF9yZWFzb24ge1xuLS1cbm5ldC9tYWM4MDIxMS9kcm9wLmg9MTI4PWVudW0gbWFjODAyMTFfZHJvcF9yZWFzb24ge1xubmV0L21hYzgwMjExL2Ryb3AuaDoxMjk6XHRSWF9DT05USU5VRVx0PSAoX19mb3JjZSBpZWVlODAyMTFfcnhfcmVzdWx0KV9fX1JYX0NPTlRJTlVFLFxubmV0L21hYzgwMjExL2Ryb3AuaDoxMzA6XHRSWF9RVUVVRURcdD0gKF9fZm9yY2UgaWVlZTgwMjExX3J4X3Jlc3VsdClfX19SWF9RVUVVRUQsXG5uZXQvbWFjODAyMTEvZHJvcC5oOjEzMTojZGVmaW5lIERFRih4KSB4ID0gKF9fZm9yY2UgaWVlZTgwMjExX3J4X3Jlc3VsdClfX18gIyMgeCxcbm5ldC9tYWM4MDIxMS9kcm9wLmgtMTMyLVx0TUFDODAyMTFfRFJPUF9SRUFTT05TX1VOVVNBQkxFKERFRilcbi0tXG5uZXQvbWFjODAyMTEvaWJzcy5jPTg2Mj1zdGF0aWMgdm9pZFxubmV0L21hYzgwMjExL2lic3MuYzo4NjM6aWVlZTgwMjExX3J4X21nbXRfc3BlY3RydW1fbWdtdChzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSxcbm5ldC9tYWM4MDIxMS9pYnNzLmMtODY0LVx0XHRcdFx0c3RydWN0IGllZWU4MDIxMV9tZ210ICptZ210LCBzaXplX3QgbGVuLFxubmV0L21hYzgwMjExL2lic3MuYzo4NjU6XHRcdFx0XHRzdHJ1Y3QgaWVlZTgwMjExX3J4X3N0YXR1cyAqcnhfc3RhdHVzLFxubmV0L21hYzgwMjExL2lic3MuYy04NjYtXHRcdFx0XHRzdHJ1Y3QgaWVlZTgwMl8xMV9lbGVtcyAqZWxlbXMpXG4tLVxubmV0L21hYzgwMjExL2lic3MuYy04NzgtXG5uZXQvbWFjODAyMTEvaWJzcy5jOjg3OTpzdGF0aWMgdm9pZCBpZWVlODAyMTFfcnhfbWdtdF9kZWF1dGhfaWJzcyhzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSxcbm5ldC9tYWM4MDIxMS9pYnNzLmMtODgwLVx0XHRcdFx0XHQgIHN0cnVjdCBpZWVlODAyMTFfbWdtdCAqbWdtdCxcbi0tXG5uZXQvbWFjODAyMTEvaWJzcy5jLTg5NC1cbm5ldC9tYWM4MDIxMS9pYnNzLmM6ODk1OnN0YXRpYyB2b2lkIGllZWU4MDIxMV9yeF9tZ210X2F1dGhfaWJzcyhzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSxcbm5ldC9tYWM4MDIxMS9pYnNzLmMtODk2LVx0XHRcdFx0XHRzdHJ1Y3QgaWVlZTgwMjExX21nbXQgKm1nbXQsXG4tLVxubmV0L21hYzgwMjExL2lic3MuYz05MjY9c3RhdGljIHZvaWQgaWVlZTgwMjExX3VwZGF0ZV9zdGFfaW5mbyhzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSxcbm5ldC9tYWM4MDIxMS9pYnNzLmMtOTI3LVx0XHRcdFx0ICAgICAgc3RydWN0IGllZWU4MDIxMV9tZ210ICptZ210LCBzaXplX3QgbGVuLFxubmV0L21hYzgwMjExL2lic3MuYzo5Mjg6XHRcdFx0XHQgICAgICBzdHJ1Y3QgaWVlZTgwMjExX3J4X3N0YXR1cyAqcnhfc3RhdHVzLFxubmV0L21hYzgwMjExL2lic3MuYy05MjktXHRcdFx0XHQgICAgICBzdHJ1Y3QgaWVlZTgwMl8xMV9lbGVtcyAqZWxlbXMsXG4tLVxubmV0L21hYzgwMjExL2lic3MuYy0xMDQ1LVxubmV0L21hYzgwMjExL2lic3MuYzoxMDQ2OnN0YXRpYyB2b2lkIGllZWU4MDIxMV9yeF9ic3NfaW5mbyhzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSxcbm5ldC9tYWM4MDIxMS9pYnNzLmMtMTA0Ny1cdFx0XHRcdCAgc3RydWN0IGllZWU4MDIxMV9tZ210ICptZ210LCBzaXplX3QgbGVuLFxubmV0L21hYzgwMjExL2lic3MuYzoxMDQ4Olx0XHRcdFx0ICBzdHJ1Y3QgaWVlZTgwMjExX3J4X3N0YXR1cyAqcnhfc3RhdHVzLFxubmV0L21hYzgwMjExL2lic3MuYy0xMDQ5LVx0XHRcdFx0ICBzdHJ1Y3QgaWVlZTgwMl8xMV9lbGVtcyAqZWxlbXMpXG4tLVxubmV0L21hYzgwMjExL2lic3MuYy0xMTM2LSBwdXRfYnNzOlxubmV0L21hYzgwMjExL2lic3MuYzoxMTM3Olx0aWVlZTgwMjExX3J4X2Jzc19wdXQobG9jYWwsIGJzcyk7XG5uZXQvbWFjODAyMTEvaWJzcy5jLTExMzgtfVxuLS1cbm5ldC9tYWM4MDIxMS9pYnNzLmM9MTM2Nj1zdGF0aWMgdm9pZCBpZWVlODAyMTFfc3RhX2ZpbmRfaWJzcyhzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSlcbi0tXG5uZXQvbWFjODAyMTEvaWJzcy5jLTE0MDUtXHRcdGllZWU4MDIxMV9zdGFfam9pbl9pYnNzKHNkYXRhLCBic3MpO1xubmV0L21hYzgwMjExL2lic3MuYzoxNDA2Olx0XHRpZWVlODAyMTFfcnhfYnNzX3B1dChsb2NhbCwgYnNzKTtcbm5ldC9tYWM4MDIxMS9pYnNzLmMtMTQwNy1cdFx0cmV0dXJuO1xuLS1cbm5ldC9tYWM4MDIxMS9pYnNzLmMtMTQ1NC1cbm5ldC9tYWM4MDIxMS9pYnNzLmM6MTQ1NTpzdGF0aWMgdm9pZCBpZWVlODAyMTFfcnhfbWdtdF9wcm9iZV9yZXEoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsXG5uZXQvbWFjODAyMTEvaWJzcy5jLTE0NTYtXHRcdFx0XHRcdHN0cnVjdCBza19idWZmICpyZXEpXG4tLVxubmV0L21hYzgwMjExL2lic3MuYz0xNTIxPXN0YXRpY1xubmV0L21hYzgwMjExL2lic3MuYzoxNTIyOnZvaWQgaWVlZTgwMjExX3J4X21nbXRfcHJvYmVfYmVhY29uKHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLFxubmV0L21hYzgwMjExL2lic3MuYy0xNTIzLVx0XHRcdFx0ICAgIHN0cnVjdCBpZWVlODAyMTFfbWdtdCAqbWdtdCwgc2l6ZV90IGxlbixcbm5ldC9tYWM4MDIxMS9pYnNzLmM6MTUyNDpcdFx0XHRcdCAgICBzdHJ1Y3QgaWVlZTgwMjExX3J4X3N0YXR1cyAqcnhfc3RhdHVzKVxubmV0L21hYzgwMjExL2lic3MuYy0xNTI1LXtcbi0tXG5uZXQvbWFjODAyMTEvaWJzcy5jLTE1NDUtXHRpZiAoZWxlbXMpIHtcbm5ldC9tYWM4MDIxMS9pYnNzLmM6MTU0NjpcdFx0aWVlZTgwMjExX3J4X2Jzc19pbmZvKHNkYXRhLCBtZ210LCBsZW4sIHJ4X3N0YXR1cywgZWxlbXMpO1xubmV0L21hYzgwMjExL2lic3MuYy0xNTQ3LVx0XHRrZnJlZShlbGVtcyk7XG4tLVxubmV0L21hYzgwMjExL2lic3MuYz0xNTUxPXZvaWQgaWVlZTgwMjExX2lic3NfcnhfcXVldWVkX21nbXQoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsXG4tLVxubmV0L21hYzgwMjExL2lic3MuYy0xNTUzLXtcbm5ldC9tYWM4MDIxMS9pYnNzLmM6MTU1NDpcdHN0cnVjdCBpZWVlODAyMTFfcnhfc3RhdHVzICpyeF9zdGF0dXM7XG5uZXQvbWFjODAyMTEvaWJzcy5jLTE1NTUtXHRzdHJ1Y3QgaWVlZTgwMjExX21nbXQgKm1nbXQ7XG4tLVxubmV0L21hYzgwMjExL2lic3MuYy0xNTY4LVx0Y2FzZSBJRUVFODAyMTFfU1RZUEVfUFJPQkVfUkVROlxubmV0L21hYzgwMjExL2lic3MuYzoxNTY5Olx0XHRpZWVlODAyMTFfcnhfbWdtdF9wcm9iZV9yZXEoc2RhdGEsIHNrYik7XG5uZXQvbWFjODAyMTEvaWJzcy5jLTE1NzAtXHRcdGJyZWFrO1xuLS1cbm5ldC9tYWM4MDIxMS9pYnNzLmMtMTU3Mi1cdGNhc2UgSUVFRTgwMjExX1NUWVBFX0JFQUNPTjpcbm5ldC9tYWM4MDIxMS9pYnNzLmM6MTU3MzpcdFx0aWVlZTgwMjExX3J4X21nbXRfcHJvYmVfYmVhY29uKHNkYXRhLCBtZ210LCBza2ItXHUwMDNlbGVuLFxubmV0L21hYzgwMjExL2lic3MuYy0xNTc0LVx0XHRcdFx0XHQgICAgICAgcnhfc3RhdHVzKTtcbi0tXG5uZXQvbWFjODAyMTEvaWJzcy5jLTE1NzYtXHRjYXNlIElFRUU4MDIxMV9TVFlQRV9BVVRIOlxubmV0L21hYzgwMjExL2lic3MuYzoxNTc3Olx0XHRpZWVlODAyMTFfcnhfbWdtdF9hdXRoX2lic3Moc2RhdGEsIG1nbXQsIHNrYi1cdTAwM2VsZW4pO1xubmV0L21hYzgwMjExL2lic3MuYy0xNTc4LVx0XHRicmVhaztcbm5ldC9tYWM4MDIxMS9pYnNzLmMtMTU3OS1cdGNhc2UgSUVFRTgwMjExX1NUWVBFX0RFQVVUSDpcbm5ldC9tYWM4MDIxMS9pYnNzLmM6MTU4MDpcdFx0aWVlZTgwMjExX3J4X21nbXRfZGVhdXRoX2lic3Moc2RhdGEsIG1nbXQsIHNrYi1cdTAwM2VsZW4pO1xubmV0L21hYzgwMjExL2lic3MuYy0xNTgxLVx0XHRicmVhaztcbi0tXG5uZXQvbWFjODAyMTEvaWJzcy5jLTE1OTgtXHRcdFx0aWYgKGVsZW1zIFx1MDAyNlx1MDAyNiAhZWxlbXMtXHUwMDNlcGFyc2VfZXJyb3IpXG5uZXQvbWFjODAyMTEvaWJzcy5jOjE1OTk6XHRcdFx0XHRpZWVlODAyMTFfcnhfbWdtdF9zcGVjdHJ1bV9tZ210KHNkYXRhLCBtZ210LFxubmV0L21hYzgwMjExL2lic3MuYy0xNjAwLVx0XHRcdFx0XHRcdFx0XHRza2ItXHUwMDNlbGVuLFxuLS1cbm5ldC9tYWM4MDIxMS9pZWVlODAyMTFfaS5oPTE4Mj1zdHJ1Y3QgaWVlZTgwMjExX3R4X2RhdGEge1xuLS1cbm5ldC9tYWM4MDIxMS9pZWVlODAyMTFfaS5oLTIwMC0gKiBUaGVzZSBhcmUgcGVyLWZyYW1lIGZsYWdzIHRoYXQgYXJlIGF0dGFjaGVkIHRvIGEgZnJhbWUgaW4gdGhlXG5uZXQvbWFjODAyMTEvaWVlZTgwMjExX2kuaDoyMDE6ICogQHJ4X2ZsYWdzIGZpZWxkIG9mIFx1MDAyNnN0cnVjdCBpZWVlODAyMTFfcnhfc3RhdHVzLlxubmV0L21hYzgwMjExL2llZWU4MDIxMV9pLmgtMjAyLSAqL1xubmV0L21hYzgwMjExL2llZWU4MDIxMV9pLmg9MjAzPWVudW0gaWVlZTgwMjExX3BhY2tldF9yeF9mbGFncyB7XG4tLVxubmV0L21hYzgwMjExL2llZWU4MDIxMV9pLmgtMjA5LS8qKlxubmV0L21hYzgwMjExL2llZWU4MDIxMV9pLmg6MjEwOiAqIGVudW0gaWVlZTgwMjExX3J4X2ZsYWdzIC0gUlggZGF0YSBmbGFnc1xubmV0L21hYzgwMjExL2llZWU4MDIxMV9pLmgtMjExLSAqXG4tLVxubmV0L21hYzgwMjExL2llZWU4MDIxMV9pLmgtMjE3LSAqL1xubmV0L21hYzgwMjExL2llZWU4MDIxMV9pLmg6MjE4OmVudW0gaWVlZTgwMjExX3J4X2ZsYWdzIHtcbm5ldC9tYWM4MDIxMS9pZWVlODAyMTFfaS5oLTIxOS1cdElFRUU4MDIxMV9SWF9CRUFDT05fUkVQT1JURURcdD0gQklUKDApLFxuLS1cbm5ldC9tYWM4MDIxMS9pZWVlODAyMTFfaS5oLTIyMS1cbm5ldC9tYWM4MDIxMS9pZWVlODAyMTFfaS5oOjIyMjpzdHJ1Y3QgaWVlZTgwMjExX3J4X2RhdGEge1xubmV0L21hYzgwMjExL2llZWU4MDIxMV9pLmgtMjIzLVx0c3RydWN0IGxpc3RfaGVhZCAqbGlzdDtcbi0tXG5uZXQvbWFjODAyMTEvaWVlZTgwMjExX2kuaD03MjA9c3RydWN0IGllZWU4MDIxMV9tZXNoX3N5bmNfb3BzIHtcbi0tXG5uZXQvbWFjODAyMTEvaWVlZTgwMjExX2kuaC03MjMtXHRcdFx0ICAgICBjb25zdCBzdHJ1Y3QgaWVlZTgwMjExX21lc2hjb25mX2llICptZXNoX2NmZyxcbm5ldC9tYWM4MDIxMS9pZWVlODAyMTFfaS5oOjcyNDpcdFx0XHQgICAgIHN0cnVjdCBpZWVlODAyMTFfcnhfc3RhdHVzICpyeF9zdGF0dXMpO1xubmV0L21hYzgwMjExL2llZWU4MDIxMV9pLmgtNzI1LVxuLS1cbm5ldC9tYWM4MDIxMS9pZWVlODAyMTFfaS5oPTE5NDQ9c3RhdGljIGlubGluZSBib29sXG5uZXQvbWFjODAyMTEvaWVlZTgwMjExX2kuaDoxOTQ1OmllZWU4MDIxMV9oYXZlX3J4X3RpbWVzdGFtcChzdHJ1Y3QgaWVlZTgwMjExX3J4X3N0YXR1cyAqc3RhdHVzKVxubmV0L21hYzgwMjExL2llZWU4MDIxMV9pLmgtMTk0Ni17XG4tLVxubmV0L21hYzgwMjExL2llZWU4MDIxMV9pLmg9MjEyND1pZWVlODAyMTFfYnNzX2luZm9fdXBkYXRlKHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsLFxubmV0L21hYzgwMjExL2llZWU4MDIxMV9pLmg6MjEyNTpcdFx0XHQgIHN0cnVjdCBpZWVlODAyMTFfcnhfc3RhdHVzICpyeF9zdGF0dXMsXG5uZXQvbWFjODAyMTEvaWVlZTgwMjExX2kuaC0yMTI2LVx0XHRcdCAgc3RydWN0IGllZWU4MDIxMV9tZ210ICptZ210LFxuLS1cbm5ldC9tYWM4MDIxMS9pZWVlODAyMTFfaS5oLTIxMjgtXHRcdFx0ICBzdHJ1Y3QgaWVlZTgwMjExX2NoYW5uZWwgKmNoYW5uZWwpO1xubmV0L21hYzgwMjExL2llZWU4MDIxMV9pLmg6MjEyOTp2b2lkIGllZWU4MDIxMV9yeF9ic3NfcHV0KHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsLFxubmV0L21hYzgwMjExL2llZWU4MDIxMV9pLmgtMjEzMC1cdFx0XHQgIHN0cnVjdCBpZWVlODAyMTFfYnNzICpic3MpO1xuLS1cbm5ldC9tYWM4MDIxMS9pZWVlODAyMTFfaS5oPTI5ODA9aWVlZTgwMjExX3Vocl9jYXBfaWVfdG9fc3RhX3Vocl9jYXAoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsXG4tLVxubmV0L21hYzgwMjExL2llZWU4MDIxMV9pLmgtMjk4OC0jZGVmaW5lIFZJU0lCTEVfSUZfTUFDODAyMTFfS1VOSVRcbm5ldC9tYWM4MDIxMS9pZWVlODAyMTFfaS5oOjI5ODk6aWVlZTgwMjExX3J4X3Jlc3VsdFxubmV0L21hYzgwMjExL2llZWU4MDIxMV9pLmg6Mjk5MDppZWVlODAyMTFfZHJvcF91bmVuY3J5cHRlZF9tZ210KHN0cnVjdCBpZWVlODAyMTFfcnhfZGF0YSAqcngpO1xubmV0L21hYzgwMjExL2llZWU4MDIxMV9pLmgtMjk5MS1pbnQgaWVlZTgwMjExX2NhbGNfY2hhbmRlZl9zdWJjaGFuX29mZnNldChjb25zdCBzdHJ1Y3QgY2ZnODAyMTFfY2hhbl9kZWYgKmFwLFxuLS1cbm5ldC9tYWM4MDIxMS9pZmFjZS5jPTE2MjY9c3RhdGljIHZvaWQgaWVlZTgwMjExX2lmYWNlX3Byb2Nlc3Nfc2tiKHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsLFxuLS1cbm5ldC9tYWM4MDIxMS9pZmFjZS5jLTE2NjYtXHRcdFx0dTggY2hhbndpZHRoID0gbWdtdC1cdTAwM2V1LmFjdGlvbi5odF9ub3RpZnlfY3cuY2hhbndpZHRoO1xubmV0L21hYzgwMjExL2lmYWNlLmM6MTY2NzpcdFx0XHRzdHJ1Y3QgaWVlZTgwMjExX3J4X3N0YXR1cyAqc3RhdHVzO1xubmV0L21hYzgwMjExL2lmYWNlLmMtMTY2OC1cdFx0XHRzdHJ1Y3QgbGlua19zdGFfaW5mbyAqbGlua19zdGE7XG4tLVxubmV0L21hYzgwMjExL2lmYWNlLmMtMTY5NC1cdFx0Y2FzZSBXTEFOX1ZIVF9BQ1RJT05fT1BNT0RFX05PVElGOiB7XG5uZXQvbWFjODAyMTEvaWZhY2UuYzoxNjk1Olx0XHRcdHN0cnVjdCBpZWVlODAyMTFfcnhfc3RhdHVzICpzdGF0dXM7XG5uZXQvbWFjODAyMTEvaWZhY2UuYy0xNjk2LVx0XHRcdGVudW0gbmw4MDIxMV9iYW5kIGJhbmQ7XG4tLVxubmV0L21hYzgwMjExL2xlZC5jPTYzPXN0YXRpYyB2b2lkIGllZWU4MDIxMV90eF9sZWRfZGVhY3RpdmF0ZShzdHJ1Y3QgbGVkX2NsYXNzZGV2ICpsZWRfY2Rldilcbi0tXG5uZXQvbWFjODAyMTEvbGVkLmMtNzEtXG5uZXQvbWFjODAyMTEvbGVkLmM6NzI6c3RhdGljIGludCBpZWVlODAyMTFfcnhfbGVkX2FjdGl2YXRlKHN0cnVjdCBsZWRfY2xhc3NkZXYgKmxlZF9jZGV2KVxubmV0L21hYzgwMjExL2xlZC5jLTczLXtcbi0tXG5uZXQvbWFjODAyMTEvbGVkLmMtODItXG5uZXQvbWFjODAyMTEvbGVkLmM6ODM6c3RhdGljIHZvaWQgaWVlZTgwMjExX3J4X2xlZF9kZWFjdGl2YXRlKHN0cnVjdCBsZWRfY2xhc3NkZXYgKmxlZF9jZGV2KVxubmV0L21hYzgwMjExL2xlZC5jLTg0LXtcbi0tXG5uZXQvbWFjODAyMTEvbGVkLmM9MTUyPXZvaWQgaWVlZTgwMjExX2xlZF9pbml0KHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsKVxuLS1cbm5ldC9tYWM4MDIxMS9sZWQuYy0xNTQtXHRhdG9taWNfc2V0KFx1MDAyNmxvY2FsLVx1MDAzZXJ4X2xlZF9hY3RpdmUsIDApO1xubmV0L21hYzgwMjExL2xlZC5jOjE1NTpcdGxvY2FsLVx1MDAzZXJ4X2xlZC5hY3RpdmF0ZSA9IGllZWU4MDIxMV9yeF9sZWRfYWN0aXZhdGU7XG5uZXQvbWFjODAyMTEvbGVkLmM6MTU2Olx0bG9jYWwtXHUwMDNlcnhfbGVkLmRlYWN0aXZhdGUgPSBpZWVlODAyMTFfcnhfbGVkX2RlYWN0aXZhdGU7XG5uZXQvbWFjODAyMTEvbGVkLmMtMTU3LVx0aWYgKGxvY2FsLVx1MDAzZXJ4X2xlZC5uYW1lIFx1MDAyNlx1MDAyNiBsZWRfdHJpZ2dlcl9yZWdpc3RlcihcdTAwMjZsb2NhbC1cdTAwM2VyeF9sZWQpKSB7XG4tLVxubmV0L21hYzgwMjExL21lc2guYz0xNDQ0PXN0YXRpYyB2b2lkIGllZWU4MDIxMV9tZXNoX3J4X2Jjbl9wcmVzcChzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSxcbi0tXG5uZXQvbWFjODAyMTEvbWVzaC5jLTE0NDYtXHRcdFx0XHRcdHNpemVfdCBsZW4sXG5uZXQvbWFjODAyMTEvbWVzaC5jOjE0NDc6XHRcdFx0XHRcdHN0cnVjdCBpZWVlODAyMTFfcnhfc3RhdHVzICpyeF9zdGF0dXMpXG5uZXQvbWFjODAyMTEvbWVzaC5jLTE0NDgte1xuLS1cbm5ldC9tYWM4MDIxMS9tZXNoLmM9MTY0OT1zdGF0aWMgdm9pZCBpZWVlODAyMTFfbWVzaF9yeF9tZ210X2FjdGlvbihzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSxcbi0tXG5uZXQvbWFjODAyMTEvbWVzaC5jLTE2NTEtXHRcdFx0XHRcdCAgc2l6ZV90IGxlbixcbm5ldC9tYWM4MDIxMS9tZXNoLmM6MTY1MjpcdFx0XHRcdFx0ICBzdHJ1Y3QgaWVlZTgwMjExX3J4X3N0YXR1cyAqcnhfc3RhdHVzKVxubmV0L21hYzgwMjExL21lc2guYy0xNjUzLXtcbi0tXG5uZXQvbWFjODAyMTEvbWVzaC5jPTE2NzQ9dm9pZCBpZWVlODAyMTFfbWVzaF9yeF9xdWV1ZWRfbWdtdChzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSxcbi0tXG5uZXQvbWFjODAyMTEvbWVzaC5jLTE2NzYte1xubmV0L21hYzgwMjExL21lc2guYzoxNjc3Olx0c3RydWN0IGllZWU4MDIxMV9yeF9zdGF0dXMgKnJ4X3N0YXR1cztcbm5ldC9tYWM4MDIxMS9tZXNoLmMtMTY3OC1cdHN0cnVjdCBpZWVlODAyMTFfbWdtdCAqbWdtdDtcbi0tXG5uZXQvbWFjODAyMTEvbWVzaC5oPTMzMj12b2lkIG1lc2hfbmVpZ2hib3VyX3VwZGF0ZShzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSxcbm5ldC9tYWM4MDIxMS9tZXNoLmgtMzMzLVx0XHRcdCAgIHU4ICpod19hZGRyLCBzdHJ1Y3QgaWVlZTgwMl8xMV9lbGVtcyAqaWUsXG5uZXQvbWFjODAyMTEvbWVzaC5oOjMzNDpcdFx0XHQgICBzdHJ1Y3QgaWVlZTgwMjExX3J4X3N0YXR1cyAqcnhfc3RhdHVzKTtcbm5ldC9tYWM4MDIxMS9tZXNoLmgtMzM1LWJvb2wgbWVzaF9wZWVyX2FjY2VwdHNfcGxpbmtzKHN0cnVjdCBpZWVlODAyXzExX2VsZW1zICppZSk7XG4tLVxubmV0L21hYzgwMjExL21lc2guaD0zNDI9dm9pZCBtZXNoX3J4X3BsaW5rX2ZyYW1lKHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLFxubmV0L21hYzgwMjExL21lc2guaC0zNDMtXHRcdFx0IHN0cnVjdCBpZWVlODAyMTFfbWdtdCAqbWdtdCwgc2l6ZV90IGxlbixcbm5ldC9tYWM4MDIxMS9tZXNoLmg6MzQ0Olx0XHRcdCBzdHJ1Y3QgaWVlZTgwMjExX3J4X3N0YXR1cyAqcnhfc3RhdHVzKTtcbm5ldC9tYWM4MDIxMS9tZXNoLmgtMzQ1LXZvaWQgbWVzaF9zdGFfY2xlYW51cChzdHJ1Y3Qgc3RhX2luZm8gKnN0YSk7XG4tLVxubmV0L21hYzgwMjExL21lc2hfcGxpbmsuYz01NTE9bWVzaF9zdGFfaW5mb19hbGxvYyhzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSwgdTggKmFkZHIsXG5uZXQvbWFjODAyMTEvbWVzaF9wbGluay5jLTU1Mi1cdFx0ICAgIHN0cnVjdCBpZWVlODAyXzExX2VsZW1zICplbGVtcyxcbm5ldC9tYWM4MDIxMS9tZXNoX3BsaW5rLmM6NTUzOlx0XHQgICAgc3RydWN0IGllZWU4MDIxMV9yeF9zdGF0dXMgKnJ4X3N0YXR1cylcbm5ldC9tYWM4MDIxMS9tZXNoX3BsaW5rLmMtNTU0LXtcbi0tXG5uZXQvbWFjODAyMTEvbWVzaF9wbGluay5jPTU5MD1tZXNoX3N0YV9pbmZvX2dldChzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSxcbm5ldC9tYWM4MDIxMS9tZXNoX3BsaW5rLmMtNTkxLVx0XHQgIHU4ICphZGRyLCBzdHJ1Y3QgaWVlZTgwMl8xMV9lbGVtcyAqZWxlbXMsXG5uZXQvbWFjODAyMTEvbWVzaF9wbGluay5jOjU5MjpcdFx0ICBzdHJ1Y3QgaWVlZTgwMjExX3J4X3N0YXR1cyAqcnhfc3RhdHVzKSBfX2FjcXVpcmVzKFJDVSlcbm5ldC9tYWM4MDIxMS9tZXNoX3BsaW5rLmMtNTkzLXtcbi0tXG5uZXQvbWFjODAyMTEvbWVzaF9wbGluay5jPTYyOD12b2lkIG1lc2hfbmVpZ2hib3VyX3VwZGF0ZShzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSxcbi0tXG5uZXQvbWFjODAyMTEvbWVzaF9wbGluay5jLTYzMC1cdFx0XHQgICBzdHJ1Y3QgaWVlZTgwMl8xMV9lbGVtcyAqZWxlbXMsXG5uZXQvbWFjODAyMTEvbWVzaF9wbGluay5jOjYzMTpcdFx0XHQgICBzdHJ1Y3QgaWVlZTgwMjExX3J4X3N0YXR1cyAqcnhfc3RhdHVzKVxubmV0L21hYzgwMjExL21lc2hfcGxpbmsuYy02MzIte1xuLS1cbm5ldC9tYWM4MDIxMS9tZXNoX3BsaW5rLmM9MTEyMD1tZXNoX3Byb2Nlc3NfcGxpbmtfZnJhbWUoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsXG4tLVxubmV0L21hYzgwMjExL21lc2hfcGxpbmsuYy0xMTIyLVx0XHRcdCBzdHJ1Y3QgaWVlZTgwMl8xMV9lbGVtcyAqZWxlbXMsXG5uZXQvbWFjODAyMTEvbWVzaF9wbGluay5jOjExMjM6XHRcdFx0IHN0cnVjdCBpZWVlODAyMTFfcnhfc3RhdHVzICpyeF9zdGF0dXMpXG5uZXQvbWFjODAyMTEvbWVzaF9wbGluay5jLTExMjQte1xuLS1cbm5ldC9tYWM4MDIxMS9tZXNoX3BsaW5rLmM9MTIyMT12b2lkIG1lc2hfcnhfcGxpbmtfZnJhbWUoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsXG5uZXQvbWFjODAyMTEvbWVzaF9wbGluay5jLTEyMjItXHRcdFx0IHN0cnVjdCBpZWVlODAyMTFfbWdtdCAqbWdtdCwgc2l6ZV90IGxlbixcbm5ldC9tYWM4MDIxMS9tZXNoX3BsaW5rLmM6MTIyMzpcdFx0XHQgc3RydWN0IGllZWU4MDIxMV9yeF9zdGF0dXMgKnJ4X3N0YXR1cylcbm5ldC9tYWM4MDIxMS9tZXNoX3BsaW5rLmMtMTIyNC17XG4tLVxubmV0L21hYzgwMjExL21lc2hfc3luYy5jPTgzPW1lc2hfc3luY19vZmZzZXRfcnhfYmNuX3ByZXNwKHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLCB1MTYgc3R5cGUsXG4tLVxubmV0L21hYzgwMjExL21lc2hfc3luYy5jLTg1LVx0XHRcdCAgICAgIGNvbnN0IHN0cnVjdCBpZWVlODAyMTFfbWVzaGNvbmZfaWUgKm1lc2hfY2ZnLFxubmV0L21hYzgwMjExL21lc2hfc3luYy5jOjg2Olx0XHRcdCAgICAgIHN0cnVjdCBpZWVlODAyMTFfcnhfc3RhdHVzICpyeF9zdGF0dXMpXG5uZXQvbWFjODAyMTEvbWVzaF9zeW5jLmMtODcte1xuLS1cbm5ldC9tYWM4MDIxMS9tbG1lLmM9NTM4Nj1zdGF0aWMgYm9vbCBpZWVlODAyMTFfbWFya19zdGFfYXV0aChzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSlcbi0tXG5uZXQvbWFjODAyMTEvbWxtZS5jLTU0MTMtXG5uZXQvbWFjODAyMTEvbWxtZS5jOjU0MTQ6c3RhdGljIHZvaWQgaWVlZTgwMjExX3J4X21nbXRfYXV0aChzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSxcbm5ldC9tYWM4MDIxMS9tbG1lLmMtNTQxNS1cdFx0XHRcdCAgIHN0cnVjdCBpZWVlODAyMTFfbWdtdCAqbWdtdCwgc2l6ZV90IGxlbilcbi0tXG5uZXQvbWFjODAyMTEvbWxtZS5jPTU1OTI9Y29uc3QgY2hhciAqaWVlZTgwMjExX2dldF9yZWFzb25fY29kZV9zdHJpbmcodTE2IHJlYXNvbl9jb2RlKVxuLS1cbm5ldC9tYWM4MDIxMS9tbG1lLmMtNTY0NS1cbm5ldC9tYWM4MDIxMS9tbG1lLmM6NTY0NjpzdGF0aWMgdm9pZCBpZWVlODAyMTFfcnhfbWdtdF9kZWF1dGgoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsXG5uZXQvbWFjODAyMTEvbWxtZS5jLTU2NDctXHRcdFx0XHQgICAgIHN0cnVjdCBpZWVlODAyMTFfbWdtdCAqbWdtdCwgc2l6ZV90IGxlbilcbi0tXG5uZXQvbWFjODAyMTEvbWxtZS5jLTU2OTEtXG5uZXQvbWFjODAyMTEvbWxtZS5jOjU2OTI6c3RhdGljIHZvaWQgaWVlZTgwMjExX3J4X21nbXRfZGlzYXNzb2Moc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsXG5uZXQvbWFjODAyMTEvbWxtZS5jLTU2OTMtXHRcdFx0XHQgICAgICAgc3RydWN0IGllZWU4MDIxMV9tZ210ICptZ210LCBzaXplX3QgbGVuKVxuLS1cbm5ldC9tYWM4MDIxMS9tbG1lLmM9Njk3OT1zdGF0aWMgYm9vbCBpZWVlODAyMTFfYXNzb2Nfc3VjY2VzcyhzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSxcbi0tXG5uZXQvbWFjODAyMTEvbWxtZS5jLTcxODktXG5uZXQvbWFjODAyMTEvbWxtZS5jOjcxOTA6c3RhdGljIHZvaWQgaWVlZTgwMjExX3J4X21nbXRfYXNzb2NfcmVzcChzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSxcbm5ldC9tYWM4MDIxMS9tbG1lLmMtNzE5MS1cdFx0XHRcdFx0IHN0cnVjdCBpZWVlODAyMTFfbWdtdCAqbWdtdCxcbi0tXG5uZXQvbWFjODAyMTEvbWxtZS5jLTc0MjUtXG5uZXQvbWFjODAyMTEvbWxtZS5jOjc0MjY6c3RhdGljIHZvaWQgaWVlZTgwMjExX3J4X2Jzc19pbmZvKHN0cnVjdCBpZWVlODAyMTFfbGlua19kYXRhICpsaW5rLFxubmV0L21hYzgwMjExL21sbWUuYy03NDI3LVx0XHRcdFx0ICBzdHJ1Y3QgaWVlZTgwMjExX21nbXQgKm1nbXQsIHNpemVfdCBsZW4sXG5uZXQvbWFjODAyMTEvbWxtZS5jOjc0Mjg6XHRcdFx0XHQgIHN0cnVjdCBpZWVlODAyMTFfcnhfc3RhdHVzICpyeF9zdGF0dXMpXG5uZXQvbWFjODAyMTEvbWxtZS5jLTc0Mjkte1xuLS1cbm5ldC9tYWM4MDIxMS9tbG1lLmMtNzQzNy1cdGNoYW5uZWwgPSBpZWVlODAyMTFfZ2V0X2NoYW5uZWxfa2h6KGxvY2FsLVx1MDAzZWh3LndpcGh5LFxubmV0L21hYzgwMjExL21sbWUuYzo3NDM4Olx0XHRcdFx0XHRpZWVlODAyMTFfcnhfc3RhdHVzX3RvX2toeihyeF9zdGF0dXMpKTtcbm5ldC9tYWM4MDIxMS9tbG1lLmMtNzQzOS1cdGlmICghY2hhbm5lbClcbi0tXG5uZXQvbWFjODAyMTEvbWxtZS5jLTc0NDQtXHRcdGxpbmstXHUwMDNlY29uZi1cdTAwM2ViZWFjb25fcmF0ZSA9IGJzcy1cdTAwM2ViZWFjb25fcmF0ZTtcbm5ldC9tYWM4MDIxMS9tbG1lLmM6NzQ0NTpcdFx0aWVlZTgwMjExX3J4X2Jzc19wdXQobG9jYWwsIGJzcyk7XG5uZXQvbWFjODAyMTEvbWxtZS5jLTc0NDYtXHR9XG4tLVxubmV0L21hYzgwMjExL21sbWUuYy03NDQ5LVxubmV0L21hYzgwMjExL21sbWUuYzo3NDUwOnN0YXRpYyB2b2lkIGllZWU4MDIxMV9yeF9tZ210X3Byb2JlX3Jlc3Aoc3RydWN0IGllZWU4MDIxMV9saW5rX2RhdGEgKmxpbmssXG5uZXQvbWFjODAyMTEvbWxtZS5jLTc0NTEtXHRcdFx0XHRcdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuLS1cbm5ldC9tYWM4MDIxMS9tbG1lLmMtNzQ1NS1cdHN0cnVjdCBpZWVlODAyMTFfaWZfbWFuYWdlZCAqaWZtZ2Q7XG5uZXQvbWFjODAyMTEvbWxtZS5jOjc0NTY6XHRzdHJ1Y3QgaWVlZTgwMjExX3J4X3N0YXR1cyAqcnhfc3RhdHVzID0gKHZvaWQgKikgc2tiLVx1MDAzZWNiO1xubmV0L21hYzgwMjExL21sbWUuYy03NDU3LVx0c3RydWN0IGllZWU4MDIxMV9jaGFubmVsICpjaGFubmVsO1xuLS1cbm5ldC9tYWM4MDIxMS9tbG1lLmMtNzQ3MS1cdGNoYW5uZWwgPSBpZWVlODAyMTFfZ2V0X2NoYW5uZWxfa2h6KHNkYXRhLVx1MDAzZWxvY2FsLVx1MDAzZWh3LndpcGh5LFxubmV0L21hYzgwMjExL21sbWUuYzo3NDcyOlx0XHRcdFx0XHQgICAgaWVlZTgwMjExX3J4X3N0YXR1c190b19raHoocnhfc3RhdHVzKSk7XG5uZXQvbWFjODAyMTEvbWxtZS5jLTc0NzMtXHRpZiAoIWNoYW5uZWwpXG4tLVxubmV0L21hYzgwMjExL21sbWUuYy03NDg0LVxubmV0L21hYzgwMjExL21sbWUuYzo3NDg1Olx0aWVlZTgwMjExX3J4X2Jzc19pbmZvKGxpbmssIG1nbXQsIGxlbiwgcnhfc3RhdHVzKTtcbm5ldC9tYWM4MDIxMS9tbG1lLmMtNzQ4Ni1cbi0tXG5uZXQvbWFjODAyMTEvbWxtZS5jPTc1MTY9c3RhdGljIHZvaWQgaWVlZTgwMjExX2hhbmRsZV9iZWFjb25fc2lnKHN0cnVjdCBpZWVlODAyMTFfbGlua19kYXRhICpsaW5rLFxuLS1cbm5ldC9tYWM4MDIxMS9tbG1lLmMtNzUxOS1cdFx0XHRcdFx0c3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwsXG5uZXQvbWFjODAyMTEvbWxtZS5jOjc1MjA6XHRcdFx0XHRcdHN0cnVjdCBpZWVlODAyMTFfcnhfc3RhdHVzICpyeF9zdGF0dXMpXG5uZXQvbWFjODAyMTEvbWxtZS5jLTc1MjEte1xuLS1cbm5ldC9tYWM4MDIxMS9tbG1lLmMtNzYxNC1cbm5ldC9tYWM4MDIxMS9tbG1lLmM6NzYxNTpzdGF0aWMgYm9vbCBpZWVlODAyMTFfcnhfb3VyX2JlYWNvbihjb25zdCB1OCAqdHhfYnNzaWQsXG5uZXQvbWFjODAyMTEvbWxtZS5jLTc2MTYtXHRcdFx0XHQgICAgc3RydWN0IGNmZzgwMjExX2JzcyAqYnNzKVxuLS1cbm5ldC9tYWM4MDIxMS9tbG1lLmM9ODA3OD1zdGF0aWMgYm9vbFxubmV0L21hYzgwMjExL21sbWUuYzo4MDc5OmllZWU4MDIxMV9yeF9iZWFjb25fZnJlcV92YWxpZChzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbCxcbm5ldC9tYWM4MDIxMS9tbG1lLmMtODA4MC1cdFx0XHQgICAgICAgc3RydWN0IGllZWU4MDIxMV9tZ210ICptZ210LFxubmV0L21hYzgwMjExL21sbWUuYzo4MDgxOlx0XHRcdCAgICAgICBzdHJ1Y3QgaWVlZTgwMjExX3J4X3N0YXR1cyAqcnhfc3RhdHVzLFxubmV0L21hYzgwMjExL21sbWUuYy04MDgyLVx0XHRcdCAgICAgICBzdHJ1Y3QgaWVlZTgwMjExX2NoYW5jdHhfY29uZiAqY2hhbmN0eClcbi0tXG5uZXQvbWFjODAyMTEvbWxtZS5jLTgwODYtXHR1MzIgcHJpX2toeiA9IGllZWU4MDIxMV9jaGFubmVsX3RvX2toeihjaGFuY3R4LVx1MDAzZWRlZi5jaGFuKTtcbm5ldC9tYWM4MDIxMS9tbG1lLmM6ODA4NzpcdHUzMiByeF9raHogPSBpZWVlODAyMTFfcnhfc3RhdHVzX3RvX2toeihyeF9zdGF0dXMpO1xubmV0L21hYzgwMjExL21sbWUuYy04MDg4LVxuLS1cbm5ldC9tYWM4MDIxMS9tbG1lLmMtODEwOS1cbm5ldC9tYWM4MDIxMS9tbG1lLmM6ODExMDpzdGF0aWMgdm9pZCBpZWVlODAyMTFfcnhfbWdtdF9iZWFjb24oc3RydWN0IGllZWU4MDIxMV9saW5rX2RhdGEgKmxpbmssXG5uZXQvbWFjODAyMTEvbWxtZS5jLTgxMTEtXHRcdFx0XHQgICAgIHN0cnVjdCBpZWVlODAyMTFfaGRyICpoZHIsIHNpemVfdCBsZW4sXG5uZXQvbWFjODAyMTEvbWxtZS5jOjgxMTI6XHRcdFx0XHQgICAgIHN0cnVjdCBpZWVlODAyMTFfcnhfc3RhdHVzICpyeF9zdGF0dXMpXG5uZXQvbWFjODAyMTEvbWxtZS5jLTgxMTMte1xuLS1cbm5ldC9tYWM4MDIxMS9tbG1lLmMtODE2Mi1cbm5ldC9tYWM4MDIxMS9tbG1lLmM6ODE2MzpcdGlmICghaWVlZTgwMjExX3J4X2JlYWNvbl9mcmVxX3ZhbGlkKGxvY2FsLCBtZ210LCByeF9zdGF0dXMsXG5uZXQvbWFjODAyMTEvbWxtZS5jLTgxNjQtXHRcdFx0XHRcdCAgICBjaGFuY3R4X2NvbmYpKSB7XG4tLVxubmV0L21hYzgwMjExL21sbWUuYy04MTcyLVx0ICAgICFXQVJOX09OKGllZWU4MDIxMV92aWZfaXNfbWxkKFx1MDAyNnNkYXRhLVx1MDAzZXZpZikpIFx1MDAyNlx1MDAyNlxubmV0L21hYzgwMjExL21sbWUuYzo4MTczOlx0ICAgIGllZWU4MDIxMV9yeF9vdXJfYmVhY29uKGJzc2lkLCBpZm1nZC1cdTAwM2Vhc3NvY19kYXRhLVx1MDAzZWxpbmtbMF0uYnNzKSkge1xubmV0L21hYzgwMjExL21sbWUuYy04MTc0LVx0XHRwYXJzZV9wYXJhbXMuYnNzID0gaWZtZ2QtXHUwMDNlYXNzb2NfZGF0YS1cdTAwM2VsaW5rWzBdLmJzcztcbi0tXG5uZXQvbWFjODAyMTEvbWxtZS5jLTgxNzgtXG5uZXQvbWFjODAyMTEvbWxtZS5jOjgxNzk6XHRcdGllZWU4MDIxMV9yeF9ic3NfaW5mbyhsaW5rLCBtZ210LCBsZW4sIHJ4X3N0YXR1cyk7XG5uZXQvbWFjODAyMTEvbWxtZS5jLTgxODAtXG4tLVxubmV0L21hYzgwMjExL21sbWUuYy04MjE0LVx0aWYgKCFpZm1nZC1cdTAwM2Vhc3NvY2lhdGVkIHx8XG5uZXQvbWFjODAyMTEvbWxtZS5jOjgyMTU6XHQgICAgIWllZWU4MDIxMV9yeF9vdXJfYmVhY29uKGJzc2lkLCBic3NfY29uZi1cdTAwM2Vic3MpKVxubmV0L21hYzgwMjExL21sbWUuYy04MjE2LVx0XHRyZXR1cm47XG4tLVxubmV0L21hYzgwMjExL21sbWUuYy04MzUwLVxubmV0L21hYzgwMjExL21sbWUuYzo4MzUxOlx0aWVlZTgwMjExX3J4X2Jzc19pbmZvKGxpbmssIG1nbXQsIGxlbiwgcnhfc3RhdHVzKTtcbm5ldC9tYWM4MDIxMS9tbG1lLmMtODM1Mi1cbi0tXG5uZXQvbWFjODAyMTEvbWxtZS5jPTg5MDg9c3RhdGljIHZvaWQgaWVlZTgwMjExX3N0YV9yeF9xdWV1ZWRfZXh0KHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLFxuLS1cbm5ldC9tYWM4MDIxMS9tbG1lLmMtODkxMS1cdHN0cnVjdCBpZWVlODAyMTFfbGlua19kYXRhICpsaW5rID0gXHUwMDI2c2RhdGEtXHUwMDNlZGVmbGluaztcbm5ldC9tYWM4MDIxMS9tbG1lLmM6ODkxMjpcdHN0cnVjdCBpZWVlODAyMTFfcnhfc3RhdHVzICpyeF9zdGF0dXM7XG5uZXQvbWFjODAyMTEvbWxtZS5jLTg5MTMtXHRzdHJ1Y3QgaWVlZTgwMjExX2hkciAqaGRyO1xuLS1cbm5ldC9tYWM4MDIxMS9tbG1lLmMtODkxNy1cbm5ldC9tYWM4MDIxMS9tbG1lLmM6ODkxODpcdHJ4X3N0YXR1cyA9IChzdHJ1Y3QgaWVlZTgwMjExX3J4X3N0YXR1cyAqKSBza2ItXHUwMDNlY2I7XG5uZXQvbWFjODAyMTEvbWxtZS5jLTg5MTktXHRoZHIgPSAoc3RydWN0IGllZWU4MDIxMV9oZHIgKikgc2tiLVx1MDAzZWRhdGE7XG4tLVxubmV0L21hYzgwMjExL21sbWUuYy04OTIzLVx0Y2FzZSBJRUVFODAyMTFfU1RZUEVfUzFHX0JFQUNPTjpcbm5ldC9tYWM4MDIxMS9tbG1lLmM6ODkyNDpcdFx0aWVlZTgwMjExX3J4X21nbXRfYmVhY29uKGxpbmssIGhkciwgc2tiLVx1MDAzZWxlbiwgcnhfc3RhdHVzKTtcbm5ldC9tYWM4MDIxMS9tbG1lLmMtODkyNS1cdFx0YnJlYWs7XG4tLVxubmV0L21hYzgwMjExL21sbWUuYz0xMTgxMj12b2lkIGllZWU4MDIxMV9zdGFfcnhfcXVldWVkX2ZyYW1lKHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLFxuLS1cbm5ldC9tYWM4MDIxMS9tbG1lLmMtMTE4MTUtXHRzdHJ1Y3QgaWVlZTgwMjExX2xpbmtfZGF0YSAqbGluayA9IFx1MDAyNnNkYXRhLVx1MDAzZWRlZmxpbms7XG5uZXQvbWFjODAyMTEvbWxtZS5jOjExODE2Olx0c3RydWN0IGllZWU4MDIxMV9yeF9zdGF0dXMgKnJ4X3N0YXR1cztcbm5ldC9tYWM4MDIxMS9tbG1lLmMtMTE4MTctXHRzdHJ1Y3QgaWVlZTgwMl8xMV9lbGVtcyAqZWxlbXM7XG4tLVxubmV0L21hYzgwMjExL21sbWUuYy0xMTgzMC1cbm5ldC9tYWM4MDIxMS9tbG1lLmM6MTE4MzE6XHRyeF9zdGF0dXMgPSAoc3RydWN0IGllZWU4MDIxMV9yeF9zdGF0dXMgKikgc2tiLVx1MDAzZWNiO1xubmV0L21hYzgwMjExL21sbWUuYy0xMTgzMi1cdGZjID0gbGUxNl90b19jcHUobWdtdC1cdTAwM2VmcmFtZV9jb250cm9sKTtcbi0tXG5uZXQvbWFjODAyMTEvbWxtZS5jLTExODQyLVx0Y2FzZSBJRUVFODAyMTFfU1RZUEVfQkVBQ09OOlxubmV0L21hYzgwMjExL21sbWUuYzoxMTg0MzpcdFx0aWVlZTgwMjExX3J4X21nbXRfYmVhY29uKGxpbmssICh2b2lkICopbWdtdCxcbm5ldC9tYWM4MDIxMS9tbG1lLmMtMTE4NDQtXHRcdFx0XHRcdCBza2ItXHUwMDNlbGVuLCByeF9zdGF0dXMpO1xuLS1cbm5ldC9tYWM4MDIxMS9tbG1lLmMtMTE4NDYtXHRjYXNlIElFRUU4MDIxMV9TVFlQRV9QUk9CRV9SRVNQOlxubmV0L21hYzgwMjExL21sbWUuYzoxMTg0NzpcdFx0aWVlZTgwMjExX3J4X21nbXRfcHJvYmVfcmVzcChsaW5rLCBza2IpO1xubmV0L21hYzgwMjExL21sbWUuYy0xMTg0OC1cdFx0YnJlYWs7XG5uZXQvbWFjODAyMTEvbWxtZS5jLTExODQ5LVx0Y2FzZSBJRUVFODAyMTFfU1RZUEVfQVVUSDpcbm5ldC9tYWM4MDIxMS9tbG1lLmM6MTE4NTA6XHRcdGllZWU4MDIxMV9yeF9tZ210X2F1dGgoc2RhdGEsIG1nbXQsIHNrYi1cdTAwM2VsZW4pO1xubmV0L21hYzgwMjExL21sbWUuYy0xMTg1MS1cdFx0YnJlYWs7XG5uZXQvbWFjODAyMTEvbWxtZS5jLTExODUyLVx0Y2FzZSBJRUVFODAyMTFfU1RZUEVfREVBVVRIOlxubmV0L21hYzgwMjExL21sbWUuYzoxMTg1MzpcdFx0aWVlZTgwMjExX3J4X21nbXRfZGVhdXRoKHNkYXRhLCBtZ210LCBza2ItXHUwMDNlbGVuKTtcbm5ldC9tYWM4MDIxMS9tbG1lLmMtMTE4NTQtXHRcdGJyZWFrO1xubmV0L21hYzgwMjExL21sbWUuYy0xMTg1NS1cdGNhc2UgSUVFRTgwMjExX1NUWVBFX0RJU0FTU09DOlxubmV0L21hYzgwMjExL21sbWUuYzoxMTg1NjpcdFx0aWVlZTgwMjExX3J4X21nbXRfZGlzYXNzb2Moc2RhdGEsIG1nbXQsIHNrYi1cdTAwM2VsZW4pO1xubmV0L21hYzgwMjExL21sbWUuYy0xMTg1Ny1cdFx0YnJlYWs7XG4tLVxubmV0L21hYzgwMjExL21sbWUuYy0xMTg1OS1cdGNhc2UgSUVFRTgwMjExX1NUWVBFX1JFQVNTT0NfUkVTUDpcbm5ldC9tYWM4MDIxMS9tbG1lLmM6MTE4NjA6XHRcdGllZWU4MDIxMV9yeF9tZ210X2Fzc29jX3Jlc3Aoc2RhdGEsIG1nbXQsIHNrYi1cdTAwM2VsZW4pO1xubmV0L21hYzgwMjExL21sbWUuYy0xMTg2MS1cdFx0YnJlYWs7XG4tLVxubmV0L21hYzgwMjExL3J4LmM9NDM9c3RhdGljIHN0cnVjdCBza19idWZmICppZWVlODAyMTFfY2xlYW5fc2tiKHN0cnVjdCBza19idWZmICpza2IsXG4tLVxubmV0L21hYzgwMjExL3J4LmMtNDYte1xubmV0L21hYzgwMjExL3J4LmM6NDc6XHRzdHJ1Y3QgaWVlZTgwMjExX3J4X3N0YXR1cyAqc3RhdHVzID0gSUVFRTgwMjExX1NLQl9SWENCKHNrYik7XG5uZXQvbWFjODAyMTEvcnguYy00OC1cdHN0cnVjdCBpZWVlODAyMTFfaGRyICpoZHI7XG4tLVxubmV0L21hYzgwMjExL3J4LmM9OTM9c3RhdGljIGlubGluZSBib29sIHNob3VsZF9kcm9wX2ZyYW1lKHN0cnVjdCBza19idWZmICpza2IsIGludCBwcmVzZW50X2Zjc19sZW4sXG4tLVxubmV0L21hYzgwMjExL3J4LmMtOTUte1xubmV0L21hYzgwMjExL3J4LmM6OTY6XHRzdHJ1Y3QgaWVlZTgwMjExX3J4X3N0YXR1cyAqc3RhdHVzID0gSUVFRTgwMjExX1NLQl9SWENCKHNrYik7XG5uZXQvbWFjODAyMTEvcnguYy05Ny1cdHN0cnVjdCBpZWVlODAyMTFfaGRyICpoZHI7XG4tLVxubmV0L21hYzgwMjExL3J4LmM9MTE4PXN0YXRpYyBpbnRcbm5ldC9tYWM4MDIxMS9yeC5jOjExOTppZWVlODAyMTFfcnhfcmFkaW90YXBfaGRybGVuKHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsLFxubmV0L21hYzgwMjExL3J4LmM6MTIwOlx0XHRcdCAgICAgc3RydWN0IGllZWU4MDIxMV9yeF9zdGF0dXMgKnN0YXR1cyxcbm5ldC9tYWM4MDIxMS9yeC5jLTEyMS1cdFx0XHQgICAgIHN0cnVjdCBza19idWZmICpza2IpXG4tLVxubmV0L21hYzgwMjExL3J4LmM9MjI0PXN0YXRpYyB2b2lkIF9faWVlZTgwMjExX3F1ZXVlX3NrYl90b19pZmFjZShzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSxcbi0tXG5uZXQvbWFjODAyMTEvcnguYy0yMjgte1xubmV0L21hYzgwMjExL3J4LmM6MjI5Olx0c3RydWN0IGllZWU4MDIxMV9yeF9zdGF0dXMgKnN0YXR1cyA9IElFRUU4MDIxMV9TS0JfUlhDQihza2IpO1xubmV0L21hYzgwMjExL3J4LmMtMjMwLVxuLS1cbm5ldC9tYWM4MDIxMS9yeC5jPTMxMz1pZWVlODAyMTFfYWRkX3J4X3JhZGlvdGFwX2hlYWRlcihzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbCxcbi0tXG5uZXQvbWFjODAyMTEvcnguYy0zMTcte1xubmV0L21hYzgwMjExL3J4LmM6MzE4Olx0c3RydWN0IGllZWU4MDIxMV9yeF9zdGF0dXMgKnN0YXR1cyA9IElFRUU4MDIxMV9TS0JfUlhDQihza2IpO1xubmV0L21hYzgwMjExL3J4LmMtMzE5LVx0c3RydWN0IGllZWU4MDIxMV9yYWRpb3RhcF9oZWFkZXIgKnJ0aGRyO1xuLS1cbm5ldC9tYWM4MDIxMS9yeC5jPTc0Mj1pZWVlODAyMTFfbWFrZV9tb25pdG9yX3NrYihzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbCxcbi0tXG5uZXQvbWFjODAyMTEvcnguYy03NDYte1xubmV0L21hYzgwMjExL3J4LmM6NzQ3Olx0c3RydWN0IGllZWU4MDIxMV9yeF9zdGF0dXMgKnN0YXR1cyA9IElFRUU4MDIxMV9TS0JfUlhDQigqb3JpZ3NrYik7XG5uZXQvbWFjODAyMTEvcnguYy03NDgtXHRpbnQgcnRfaGRybGVuLCBuZWVkZWRfaGVhZHJvb207XG4tLVxubmV0L21hYzgwMjExL3J4LmMtNzUxLVx0Lyogcm9vbSBmb3IgdGhlIHJhZGlvdGFwIGhlYWRlciBiYXNlZCBvbiBkcml2ZXIgZmVhdHVyZXMgKi9cbm5ldC9tYWM4MDIxMS9yeC5jOjc1MjpcdHJ0X2hkcmxlbiA9IGllZWU4MDIxMV9yeF9yYWRpb3RhcF9oZHJsZW4obG9jYWwsIHN0YXR1cywgKm9yaWdza2IpO1xubmV0L21hYzgwMjExL3J4LmMtNzUzLVx0bmVlZGVkX2hlYWRyb29tID0gcnRfaGRybGVuIC0gcnRhcF9zcGFjZTtcbi0tXG5uZXQvbWFjODAyMTEvcnguYz03OTY9aWVlZTgwMjExX3ZhbGlkYXRlX21vbml0b3JfcmFkaW8oc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsXG5uZXQvbWFjODAyMTEvcnguYy03OTctXHRcdFx0XHQgc3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwsXG5uZXQvbWFjODAyMTEvcnguYzo3OTg6XHRcdFx0XHQgc3RydWN0IGllZWU4MDIxMV9yeF9zdGF0dXMgKnN0YXR1cylcbm5ldC9tYWM4MDIxMS9yeC5jLTc5OS17XG4tLVxubmV0L21hYzgwMjExL3J4LmM9ODQ1PXN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqXG5uZXQvbWFjODAyMTEvcnguYzo4NDY6aWVlZTgwMjExX3J4X21vbml0b3Ioc3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwsIHN0cnVjdCBza19idWZmICpvcmlnc2tiLFxubmV0L21hYzgwMjExL3J4LmMtODQ3LVx0XHQgICAgIHN0cnVjdCBpZWVlODAyMTFfcmF0ZSAqcmF0ZSlcbm5ldC9tYWM4MDIxMS9yeC5jLTg0OC17XG5uZXQvbWFjODAyMTEvcnguYzo4NDk6XHRzdHJ1Y3QgaWVlZTgwMjExX3J4X3N0YXR1cyAqc3RhdHVzID0gSUVFRTgwMjExX1NLQl9SWENCKG9yaWdza2IpO1xubmV0L21hYzgwMjExL3J4LmMtODUwLVx0c3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsICpwcmV2X3NkYXRhID0gTlVMTDtcbi0tXG5uZXQvbWFjODAyMTEvcnguYy05ODMtXG5uZXQvbWFjODAyMTEvcnguYzo5ODQ6c3RhdGljIHZvaWQgaWVlZTgwMjExX3BhcnNlX3FvcyhzdHJ1Y3QgaWVlZTgwMjExX3J4X2RhdGEgKnJ4KVxubmV0L21hYzgwMjExL3J4LmMtOTg1LXtcbm5ldC9tYWM4MDIxMS9yeC5jLTk4Ni1cdHN0cnVjdCBpZWVlODAyMTFfaGRyICpoZHIgPSAoc3RydWN0IGllZWU4MDIxMV9oZHIgKilyeC1cdTAwM2Vza2ItXHUwMDNlZGF0YTtcbm5ldC9tYWM4MDIxMS9yeC5jOjk4NzpcdHN0cnVjdCBpZWVlODAyMTFfcnhfc3RhdHVzICpzdGF0dXMgPSBJRUVFODAyMTFfU0tCX1JYQ0IocngtXHUwMDNlc2tiKTtcbm5ldC9tYWM4MDIxMS9yeC5jLTk4OC1cdGludCB0aWQsIHNlcW5vX2lkeCwgc2VjdXJpdHlfaWR4O1xuLS1cbm5ldC9tYWM4MDIxMS9yeC5jLTEwNTAtICovXG5uZXQvbWFjODAyMTEvcnguYzoxMDUxOnN0YXRpYyB2b2lkIGllZWU4MDIxMV92ZXJpZnlfYWxpZ25tZW50KHN0cnVjdCBpZWVlODAyMTFfcnhfZGF0YSAqcngpXG5uZXQvbWFjODAyMTEvcnguYy0xMDUyLXtcbi0tXG5uZXQvbWFjODAyMTEvcnguYz0xMTEzPXN0YXRpYyBpbnQgaWVlZTgwMjExX2dldF9rZXlpZChzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuLS1cbm5ldC9tYWM4MDIxMS9yeC5jLTExMzAtXG5uZXQvbWFjODAyMTEvcnguYzoxMTMxOnN0YXRpYyBpZWVlODAyMTFfcnhfcmVzdWx0IGllZWU4MDIxMV9yeF9tZXNoX2NoZWNrKHN0cnVjdCBpZWVlODAyMTFfcnhfZGF0YSAqcngpXG5uZXQvbWFjODAyMTEvcnguYy0xMTMyLXtcbi0tXG5uZXQvbWFjODAyMTEvcnguYy0xMTg3LVxubmV0L21hYzgwMjExL3J4LmM6MTE4ODpzdGF0aWMgaW5saW5lIGJvb2wgaWVlZTgwMjExX3J4X3Jlb3JkZXJfcmVhZHkoc3RydWN0IHRpZF9hbXBkdV9yeCAqdGlkX2FnZ19yeCxcbm5ldC9tYWM4MDIxMS9yeC5jLTExODktXHRcdFx0XHRcdCAgICAgIGludCBpbmRleClcbi0tXG5uZXQvbWFjODAyMTEvcnguYy0xMTkyLVx0c3RydWN0IHNrX2J1ZmYgKnRhaWwgPSBza2JfcGVla190YWlsKGZyYW1lcyk7XG5uZXQvbWFjODAyMTEvcnguYzoxMTkzOlx0c3RydWN0IGllZWU4MDIxMV9yeF9zdGF0dXMgKnN0YXR1cztcbm5ldC9tYWM4MDIxMS9yeC5jLTExOTQtXG4tLVxubmV0L21hYzgwMjExL3J4LmM9MTIwOT1zdGF0aWMgdm9pZCBpZWVlODAyMTFfcmVsZWFzZV9yZW9yZGVyX2ZyYW1lKHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLFxuLS1cbm5ldC9tYWM4MDIxMS9yeC5jLTEyMTUtXHRzdHJ1Y3Qgc2tfYnVmZiAqc2tiO1xuXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI5IDA2OjAyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI2MDA2CgkJCQkJCQlvdXRwdXQ6IDM1CgkJCQkJCQl0aG91Z2h0czogNTcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRXhwbG9yaW5nIHRoZSBuZXQvbWFjODAyMTEvcnguYyBSWCBFbnRyeXBvaW50cyoqCgpPa2F5LCBzbyBJIG5lZWQgdG8gZ2V0IGEgaGFuZGxlIG9uIHRoZSBrZXkgZW50cnkgcG9pbnRzIGZvciByZWNlaXZlIHByb2Nlc3Npbmcgd2l0aGluIHRoZSBgbmV0L21hYzgwMjExYCBzdWJzeXN0ZW0uIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzIHRvIHplcm8gaW4gb24gYG5ldC9tYWM4MDIxMS9yeC5jYC4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hpY2ggZnVuY3Rpb25zIGFyZSByZXNwb25zaWJsZSBmb3IgaGFuZGxpbmcgaW5jb21pbmcgZnJhbWVzLgoKTXkgcGxhbiBpcyB0byBsb29rIGZvciBgRVhQT1JUX1NZTUJPTGAgdXNhZ2VzIHdpdGhpbiB0aGF0IGZpbGUsIGFzIHRoaXMgd2lsbCBoZWxwIG1lIGlkZW50aWZ5IHRoZSBmdW5jdGlvbnMgc3BlY2lmaWNhbGx5IGRlc2lnbmVkIGZvciBleHRlcm5hbCBhY2Nlc3MsIGxpa2VseSB0aGUgZW50cnkgcG9pbnRzIEkmIzM5O20gbG9va2luZyBmb3IuIEFsdGVybmF0aXZlbHksIEkgc2hvdWxkIHNjYW4gZm9yIGZ1bmN0aW9ucyB3aXRoaW4gdGhpcyBmaWxlIHJlbGF0ZWQgdG8gdGhlIHByb2Nlc3Mgb2YgcmVjZWl2ZWQgZnJhbWVzLiBUaGF0IHNob3VsZCBhbGxvdyBtZSB0byBpZGVudGlmeSB0aGUgYXBwcm9wcmlhdGUgZmxvdy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjkgMDY6MDM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7RVhQT1JUX1NZTUJPTCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9tYWM4MDIxMS9yeC5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9tYWM4MDIxMS9yeC5jPTE3NDc9aW50IGllZWU4MDIxMV9zdGFfcHNfdHJhbnNpdGlvbihzdHJ1Y3QgaWVlZTgwMjExX3N0YSAqcHVic3RhLCBib29sIHN0YXJ0KVxuLS1cbm5ldC9tYWM4MDIxMS9yeC5jLTE3NjUtfVxubmV0L21hYzgwMjExL3J4LmM6MTc2NjpFWFBPUlRfU1lNQk9MKGllZWU4MDIxMV9zdGFfcHNfdHJhbnNpdGlvbik7XG5uZXQvbWFjODAyMTEvcnguYy0xNzY3LVxubmV0L21hYzgwMjExL3J4LmM9MTc2OD12b2lkIGllZWU4MDIxMV9zdGFfcHNwb2xsKHN0cnVjdCBpZWVlODAyMTFfc3RhICpwdWJzdGEpXG4tLVxubmV0L21hYzgwMjExL3J4LmMtMTc3OS19XG5uZXQvbWFjODAyMTEvcnguYzoxNzgwOkVYUE9SVF9TWU1CT0woaWVlZTgwMjExX3N0YV9wc3BvbGwpO1xubmV0L21hYzgwMjExL3J4LmMtMTc4MS1cbm5ldC9tYWM4MDIxMS9yeC5jPTE3ODI9dm9pZCBpZWVlODAyMTFfc3RhX3VhcHNkX3RyaWdnZXIoc3RydWN0IGllZWU4MDIxMV9zdGEgKnB1YnN0YSwgdTggdGlkKVxuLS1cbm5ldC9tYWM4MDIxMS9yeC5jLTE4MDctfVxubmV0L21hYzgwMjExL3J4LmM6MTgwODpFWFBPUlRfU1lNQk9MKGllZWU4MDIxMV9zdGFfdWFwc2RfdHJpZ2dlcik7XG5uZXQvbWFjODAyMTEvcnguYy0xODA5LVxuLS1cbm5ldC9tYWM4MDIxMS9yeC5jPTI1NjI9aWVlZTgwMjExX2Ryb3BfdW5lbmNyeXB0ZWRfbWdtdChzdHJ1Y3QgaWVlZTgwMjExX3J4X2RhdGEgKnJ4KVxuLS1cbm5ldC9tYWM4MDIxMS9yeC5jLTI2NDctfVxubmV0L21hYzgwMjExL3J4LmM6MjY0ODpFWFBPUlRfU1lNQk9MX0lGX01BQzgwMjExX0tVTklUKGllZWU4MDIxMV9kcm9wX3VuZW5jcnlwdGVkX21nbXQpO1xubmV0L21hYzgwMjExL3J4LmMtMjY0OS1cbi0tXG5uZXQvbWFjODAyMTEvcnguYz00NDE5PXZvaWQgaWVlZTgwMjExX21hcmtfcnhfYmFfZmlsdGVyZWRfZnJhbWVzKHN0cnVjdCBpZWVlODAyMTFfc3RhICpwdWJzdGEsIHU4IHRpZCxcbi0tXG5uZXQvbWFjODAyMTEvcnguYy00NTAwLX1cbm5ldC9tYWM4MDIxMS9yeC5jOjQ1MDE6RVhQT1JUX1NZTUJPTChpZWVlODAyMTFfbWFya19yeF9iYV9maWx0ZXJlZF9mcmFtZXMpO1xubmV0L21hYzgwMjExL3J4LmMtNDUwMi1cbi0tXG5uZXQvbWFjODAyMTEvcnguYz01NTU5PXZvaWQgaWVlZTgwMjExX3J4X2xpc3Qoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsIHN0cnVjdCBpZWVlODAyMTFfc3RhICpwdWJzdGEsXG4tLVxubmV0L21hYzgwMjExL3J4LmMtNTcyNy19XG5uZXQvbWFjODAyMTEvcnguYzo1NzI4OkVYUE9SVF9TWU1CT0woaWVlZTgwMjExX3J4X2xpc3QpO1xubmV0L21hYzgwMjExL3J4LmMtNTcyOS1cbm5ldC9tYWM4MDIxMS9yeC5jPTU3MzA9dm9pZCBpZWVlODAyMTFfcnhfbmFwaShzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodywgc3RydWN0IGllZWU4MDIxMV9zdGEgKnB1YnN0YSxcbi0tXG5uZXQvbWFjODAyMTEvcnguYy01NzU1LX1cbm5ldC9tYWM4MDIxMS9yeC5jOjU3NTY6RVhQT1JUX1NZTUJPTChpZWVlODAyMTFfcnhfbmFwaSk7XG5uZXQvbWFjODAyMTEvcnguYy01NzU3LVxuLS1cbm5ldC9tYWM4MDIxMS9yeC5jPTU3NjA9dm9pZCBpZWVlODAyMTFfcnhfaXJxc2FmZShzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodywgc3RydWN0IHNrX2J1ZmYgKnNrYilcbi0tXG5uZXQvbWFjODAyMTEvcnguYy01NzY5LX1cbm5ldC9tYWM4MDIxMS9yeC5jOjU3NzA6RVhQT1JUX1NZTUJPTChpZWVlODAyMTFfcnhfaXJxc2FmZSk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI5IDA2OjAzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI3MzE4CgkJCQkJCQlvdXRwdXQ6IDQyCgkJCQkJCQl0aG91Z2h0czogNTkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRGVmcmFnbWVudGF0aW9uIERlZXAgRGl2ZSoqCgpPa2F5LCB0aW1lIHRvIGdldCBteSBoYW5kcyBkaXJ0eS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGlucyBhbmQgb3V0cyBvZiBob3cgdGhpcyBkZWZyYWdtZW50YXRpb24gcHJvY2VzcyB3b3JrcyB3aXRoaW4gdGhlIDgwMi4xMSBzdGFjay4gTXkgZmlyc3QgbW92ZSB3aWxsIGJlIHRvIHplcm8gaW4gb24gYGllZWU4MDIxMV9yeF9oX2RlZnJhZ21lbnRgLiBJJiMzOTtsbCB1c2UgdGhhdCBhcyBteSBwcmltYXJ5IHNlYXJjaCB0ZXJtLgoKSSYjMzk7bGwgc3RhcnQgYnkgY2hlY2tpbmcgdGhlIGBuZXQvbWFjODAyMTEvcnguY2AgZmlsZS4gSXQmIzM5O3MgdGhlIGxvZ2ljYWwgcGxhY2UgdG8gYmVnaW4gbG9va2luZyBmb3IgdGhlIGltcGxlbWVudGF0aW9uIG9yIGFueSBjYWxsIHNpdGVzIHJlbGF0ZWQgdG8gdGhhdCBmdW5jdGlvbi4gRnJvbSB0aGVyZSwgSSYjMzk7bGwgdHJhY2UgaXRzIGV4ZWN1dGlvbiBmbG93IGFuZCBwaW5wb2ludCBpdHMgcm9sZSBpbiB0aGUgcmVjZWl2ZSBwYXRoLiBIb3BlZnVsbHksIHRoaXMgd2lsbCBwcm92aWRlIHRoZSBpbmZvcm1hdGlvbiBJIHJlcXVpcmUgdG8gcHJvcGVybHkgYW5hbHl6ZSB0aGUgZnVuY3Rpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI5IDA2OjAzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2llZWU4MDIxMV9yeF9oX2RlZnJhZ21lbnQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbWFjODAyMTEmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L21hYzgwMjExL3J4LmM9MjM3Mj1zdGF0aWMgaWVlZTgwMjExX3J4X3Jlc3VsdCBkZWJ1Z19ub2lubGluZVxubmV0L21hYzgwMjExL3J4LmM6MjM3MzppZWVlODAyMTFfcnhfaF9kZWZyYWdtZW50KHN0cnVjdCBpZWVlODAyMTFfcnhfZGF0YSAqcngpXG5uZXQvbWFjODAyMTEvcnguYy0yMzc0LXtcbi0tXG5uZXQvbWFjODAyMTEvcnguYz00MjI5PXN0YXRpYyB2b2lkIGllZWU4MDIxMV9yeF9oYW5kbGVycyhzdHJ1Y3QgaWVlZTgwMjExX3J4X2RhdGEgKnJ4LFxuLS1cbm5ldC9tYWM4MDIxMS9yeC5jLTQyNjYtXHRcdENBTExfUlhIKGllZWU4MDIxMV9yeF9oX2RlY3J5cHQpO1xubmV0L21hYzgwMjExL3J4LmM6NDI2NzpcdFx0Q0FMTF9SWEgoaWVlZTgwMjExX3J4X2hfZGVmcmFnbWVudCk7XG5uZXQvbWFjODAyMTEvcnguYy00MjY4LVx0XHRDQUxMX1JYSChpZWVlODAyMTFfcnhfaF9taWNoYWVsX21pY192ZXJpZnkpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yOSAwNjowMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNzg2OQoJCQkJCQkJb3V0cHV0OiAzOQoJCQkJCQkJdGhvdWdodHM6IDE5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIGFuZCBkZWxpdmVyZWQgYXMgYSBmaXJzdC1wZXJzb24gc3VtbWFyeToKCioqRGlnZ2luZyBpbnRvIHRoZSA4MDIuMTEgUnggSGFuZGxlcnMqKgoKQWxyaWdodCwgc28gdGhlIGZpcnN0IHRoaW5nIEkmIzM5O20gZG9pbmcgaXMgdHJ5aW5nIHRvIGdldCBhIGNsZWFyIHBpY3R1cmUgb2Ygd2hhdCBmdW5jdGlvbnMgYXJlIGNhbGxlZCBieSBgaWVlZTgwMjExX3J4X2hhbmRsZXJzYC4gVGhpcyBpcyBteSBzdGFydGluZyBwb2ludCB3aGVuIHRyeWluZyB0byB1bmRlcnN0YW5kIHRoZSBwYWNrZXQgcmVjZXB0aW9uIHBpcGVsaW5lIGluIGEgZ2l2ZW4gODAyLjExIHN0YWNrLiBJJiMzOTttIGxpa2VseSB0cnlpbmcgdG8gdW5kZXJzdGFuZCBhIHNwZWNpZmljIGlzc3VlLCBvcHRpbWl6ZSBwZXJmb3JtYW5jZSwgb3IgcGVyaGFwcyBkZWJ1ZyBzb21lIGVycmF0aWMgYmVoYXZpb3IuIEtub3dpbmcgdGhlIGNvbnRyb2wgZmxvdyB0aHJvdWdoIHRoZXNlIGhhbmRsZXJzIGlzIGFic29sdXRlbHkgY3JpdGljYWwuIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoaWNoIGZ1bmN0aW9ucyBhcmUgcmVzcG9uc2libGUgZm9yIGluaXRpYWwgcHJvY2Vzc2luZywgZGVtdWx0aXBsZXhpbmcsIGZyYW1lIGNsYXNzaWZpY2F0aW9uLCBzZWN1cml0eSBjaGVja3MsIGFuZCBwYXNzaW5nIHRoZSBkYXRhIHVwIHRoZSBzdGFjay4KCkkmIzM5O20gcHJvYmFibHkgdGhpbmtpbmcgYWJvdXQgYSBzcGVjaWZpYyA4MDIuMTEgZHJpdmVyIG9yIGltcGxlbWVudGF0aW9uIHRvby4gQW0gSSBsb29raW5nIGF0IHNvbWV0aGluZyBsaWtlIG1hYzgwMjExLCBhIHByb3ByaWV0YXJ5IGRyaXZlciwgb3Igc29tZSBjdXN0b20gcmVzZWFyY2ggY29kZT8gS25vd2luZyB0aGUgY29udGV4dCBoZWxwcyBtZSBuYXJyb3cgZG93biB3aGljaCBjYWxscyB3aXRoaW4gYGllZWU4MDIxMV9yeF9oYW5kbGVyc2AgYXJlIG1vc3QgaW1wb3J0YW50IHRvIGV4YW1pbmUgY2xvc2VseS4gQXJlIHRoZXJlIGFueSBwYXJ0aWN1bGFyIG1vZHVsZXMgb3IgZnVuY3Rpb25zIEkgZXhwZWN0IHRvIGJlIGludm9sdmVkIGJhc2VkIG9uIG15IHByaW9yIGtub3dsZWRnZT8gQXJlIHRoZXJlIGFueSBvYnZpb3VzIGNhbmRpZGF0ZXMgZm9yIHBlcmZvcm1hbmNlIGJvdHRsZW5lY2tzPwoKSW4gc2hvcnQsIEkmIzM5O20gbWFwcGluZyBvdXQgdGhlIGNyaXRpY2FsIHBhdGhzIHdpdGhpbiB0aGUgUlggcHJvY2Vzc2luZyB0byBkZXZlbG9wIGEgbWVudGFsIG1vZGVsIG9mIGhvdyB0aGUgc3lzdGVtIHdvcmtzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yOSAwNjowMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtpZWVlODAyMTFfcnhfaGFuZGxlcnMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbWFjODAyMTEmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L21hYzgwMjExL3J4LmM9NDE1Nj1pZWVlODAyMTFfcnhfaF9tZ210KHN0cnVjdCBpZWVlODAyMTFfcnhfZGF0YSAqcngpXG4tLVxubmV0L21hYzgwMjExL3J4LmMtNDIxMS1cbm5ldC9tYWM4MDIxMS9yeC5jOjQyMTI6c3RhdGljIHZvaWQgaWVlZTgwMjExX3J4X2hhbmRsZXJzX3Jlc3VsdChzdHJ1Y3QgaWVlZTgwMjExX3J4X2RhdGEgKnJ4LFxubmV0L21hYzgwMjExL3J4LmMtNDIxMy1cdFx0XHRcdFx0IGllZWU4MDIxMV9yeF9yZXN1bHQgcmVzKVxuLS1cbm5ldC9tYWM4MDIxMS9yeC5jLTQyMjgtXG5uZXQvbWFjODAyMTEvcnguYzo0MjI5OnN0YXRpYyB2b2lkIGllZWU4MDIxMV9yeF9oYW5kbGVycyhzdHJ1Y3QgaWVlZTgwMjExX3J4X2RhdGEgKnJ4LFxubmV0L21hYzgwMjExL3J4LmMtNDIzMC1cdFx0XHRcdCAgc3RydWN0IHNrX2J1ZmZfaGVhZCAqZnJhbWVzKVxuLS1cbm5ldC9tYWM4MDIxMS9yeC5jLTQyODYtIHJ4aF9uZXh0OlxubmV0L21hYzgwMjExL3J4LmM6NDI4NzpcdFx0aWVlZTgwMjExX3J4X2hhbmRsZXJzX3Jlc3VsdChyeCwgcmVzKTtcbm5ldC9tYWM4MDIxMS9yeC5jLTQyODgtXG4tLVxubmV0L21hYzgwMjExL3J4LmM9NDI5NT1zdGF0aWMgdm9pZCBpZWVlODAyMTFfaW52b2tlX3J4X2hhbmRsZXJzKHN0cnVjdCBpZWVlODAyMTFfcnhfZGF0YSAqcngpXG4tLVxubmV0L21hYzgwMjExL3J4LmMtNDMxMy1cbm5ldC9tYWM4MDIxMS9yeC5jOjQzMTQ6XHRpZWVlODAyMTFfcnhfaGFuZGxlcnMocngsIFx1MDAyNnJlb3JkZXJfcmVsZWFzZSk7XG5uZXQvbWFjODAyMTEvcnguYy00MzE1LVx0cmV0dXJuO1xuLS1cbm5ldC9tYWM4MDIxMS9yeC5jLTQzMTctIHJ4aF9uZXh0OlxubmV0L21hYzgwMjExL3J4LmM6NDMxODpcdGllZWU4MDIxMV9yeF9oYW5kbGVyc19yZXN1bHQocngsIHJlcyk7XG5uZXQvbWFjODAyMTEvcnguYy00MzE5LVxuLS1cbm5ldC9tYWM4MDIxMS9yeC5jPTQzNzk9dm9pZCBpZWVlODAyMTFfcmVsZWFzZV9yZW9yZGVyX3RpbWVvdXQoc3RydWN0IHN0YV9pbmZvICpzdGEsIGludCB0aWQpXG4tLVxubmV0L21hYzgwMjExL3J4LmMtNDQxNS1cbm5ldC9tYWM4MDIxMS9yeC5jOjQ0MTY6XHRpZWVlODAyMTFfcnhfaGFuZGxlcnMoXHUwMDI2cngsIFx1MDAyNmZyYW1lcyk7XG5uZXQvbWFjODAyMTEvcnguYy00NDE3LX1cbi0tXG5uZXQvbWFjODAyMTEvcnguYz00NDE5PXZvaWQgaWVlZTgwMjExX21hcmtfcnhfYmFfZmlsdGVyZWRfZnJhbWVzKHN0cnVjdCBpZWVlODAyMTFfc3RhICpwdWJzdGEsIHU4IHRpZCxcbi0tXG5uZXQvbWFjODAyMTEvcnguYy00NDk1LVxubmV0L21hYzgwMjExL3J4LmM6NDQ5NjpcdGllZWU4MDIxMV9yeF9oYW5kbGVycyhcdTAwMjZyeCwgXHUwMDI2ZnJhbWVzKTtcbm5ldC9tYWM4MDIxMS9yeC5jLTQ0OTctXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI5IDA2OjAzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI5MDQ5CgkJCQkJCQlvdXRwdXQ6IDQxCgkJCQkJCQl0aG91Z2h0czogMjEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgYSBzdW1tYXJ5IG9mIG15IHRob3VnaHQgcHJvY2VzcywgYXMgcmVxdWVzdGVkOgoKKipEZWNvbnN0cnVjdGluZyB0aGUgSUVFRSA4MDIuMTEgUlggSGFuZGxlciBJbnZvY2F0aW9uKioKCk9rYXksIHNvIEkmIzM5O20gZGl2aW5nIGludG8gdGhlIGBpZWVlODAyMTFfaW52b2tlX3J4X2hhbmRsZXJzYCBmdW5jdGlvbi4gTXkgaW5pdGlhbCBxdWVzdGlvbiBpcyBzdHJhaWdodGZvcndhcmQ6ICp3aG8qIGlzIGNhbGxpbmcgdGhpcyBjcml0aWNhbCBwaWVjZSBvZiB0aGUgODAyLjExIHJlY2VpdmUgcGF0aD8gSXQmIzM5O3MgZXNzZW50aWFsIHRvIHVuZGVyc3RhbmQgdGhlIGNvbnRleHQgaW4gd2hpY2ggdGhpcyBmdW5jdGlvbiBvcGVyYXRlcy4gSSBuZWVkIHRvIHRyYWNlIHRoZSBjYWxsIHBhdGhzIHRvIGlkZW50aWZ5IHRoZSBkaWZmZXJlbnQgZW50cnkgcG9pbnRzIGFuZCB0aGUgY29uZGl0aW9ucyB1bmRlciB3aGljaCB0aGUgaGFuZGxlcnMgYXJlIGludm9rZWQuIEFyZSB3ZSB0YWxraW5nIGFib3V0IGEgc3RhbmRhcmQgZGF0YSBmcmFtZSwgYSBtYW5hZ2VtZW50IGZyYW1lLCBvciBjb250cm9sIGZyYW1lPyBBcmUgdGhlcmUgc3BlY2lmaWMgZHJpdmVyLXJlbGF0ZWQgYXNwZWN0cyB0byBjb25zaWRlciBpbiB0aGlzIGNhbGwgcGF0aD8KCkkgd2FudCB0byBrbm93IHdoZXJlIGluIHRoZSBkcml2ZXImIzM5O3MgcmVjZWl2ZSBwcm9jZXNzaW5nIGl0IGZpdHMgYW5kIHRoZSBzZXF1ZW5jZSBvZiBmdW5jdGlvbiBjYWxscyBiZWZvcmUgYW5kIGFmdGVyIHRoZSBpbnZvY2F0aW9uLiBLbm93aW5nIHRoaXMgd2lsbCBnaXZlIG1lIGluc2lnaHRzIGludG8gcG90ZW50aWFsIG9wdGltaXphdGlvbnMsIGVycm9yIGhhbmRsaW5nIHN0cmF0ZWdpZXMsIGFuZCBzZWN1cml0eSBpbXBsaWNhdGlvbnMgb2YgdGhlIHJlY2VpdmluZyBwcm9jZXNzLiBJJiMzOTtsbCBuZWVkIHRvIGNvbnNpZGVyIGhvdyBpbnRlcnJ1cHQgaGFuZGxpbmcsIERNQSwgYW5kIG90aGVyIGhhcmR3YXJlIGludGVyYWN0aW9ucyBwbGF5IGludG8gdGhlIGZ1bmN0aW9u4oCZcyBleGVjdXRpb24uCgpUaGlzIGlzIGFsbCBhYm91dCB1bmRlcnN0YW5kaW5nIHRoZSBkYXRhIGZsb3cgb2YgaW5jb21pbmcgZnJhbWVzIGFuZCB1bmRlcnN0YW5kaW5nIGhvdyB0aGUgc3lzdGVtIGlzIGRlc2lnbmVkIHRvIGhhbmRsZSBkaWZmZXJlbnQgc2NlbmFyaW9zLiBGaW5kaW5nIHRoZSAmIzM0O3dobyYjMzQ7IHdpbGwgZ2l2ZSBtZSBhIGZvb3Rob2xkIGluIHVuZGVyc3RhbmRpbmcgdGhlICYjMzQ7aG93JiMzNDsgYW5kIHRoZSAmIzM0O3doeS4mIzM0OwoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yOSAwNjowMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtpZWVlODAyMTFfaW52b2tlX3J4X2hhbmRsZXJzJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L21hYzgwMjExJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9tYWM4MDIxMS9yeC5jPTQyMjk9c3RhdGljIHZvaWQgaWVlZTgwMjExX3J4X2hhbmRsZXJzKHN0cnVjdCBpZWVlODAyMTFfcnhfZGF0YSAqcngsXG4tLVxubmV0L21hYzgwMjExL3J4LmMtNDI5NC1cbm5ldC9tYWM4MDIxMS9yeC5jOjQyOTU6c3RhdGljIHZvaWQgaWVlZTgwMjExX2ludm9rZV9yeF9oYW5kbGVycyhzdHJ1Y3QgaWVlZTgwMjExX3J4X2RhdGEgKnJ4KVxubmV0L21hYzgwMjExL3J4LmMtNDI5Ni17XG4tLVxubmV0L21hYzgwMjExL3J4LmM9NTE3Mz1zdGF0aWMgYm9vbCBpZWVlODAyMTFfcHJlcGFyZV9hbmRfcnhfaGFuZGxlKHN0cnVjdCBpZWVlODAyMTFfcnhfZGF0YSAqcngsXG4tLVxubmV0L21hYzgwMjExL3J4LmMtNTIyNC1cdGlmIChpZWVlODAyMTFfaXNfczFnX2JlYWNvbihoZHItXHUwMDNlZnJhbWVfY29udHJvbCkpIHtcbm5ldC9tYWM4MDIxMS9yeC5jOjUyMjU6XHRcdGllZWU4MDIxMV9pbnZva2VfcnhfaGFuZGxlcnMocngpO1xubmV0L21hYzgwMjExL3J4LmMtNTIyNi1cdFx0cmV0dXJuIHRydWU7XG4tLVxubmV0L21hYzgwMjExL3J4LmMtNTI1My1cbm5ldC9tYWM4MDIxMS9yeC5jOjUyNTQ6XHRpZWVlODAyMTFfaW52b2tlX3J4X2hhbmRsZXJzKHJ4KTtcbm5ldC9tYWM4MDIxMS9yeC5jLTUyNTUtXHRyZXR1cm4gdHJ1ZTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjkgMDY6MDM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjk3NzIKCQkJCQkJCW91dHB1dDogNDMKCQkJCQkJCXRob3VnaHRzOiAyNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzOgoKKipEZWVwIERpdmUgb24gdGhlIFJlY2VpdmUgUGF0aCoqCgpBbHJpZ2h0LCBzbyBgaWVlZTgwMjExX3ByZXBhcmVfYW5kX3J4X2hhbmRsZWAuLi4gdGhhdCYjMzk7cyB0aGUgZnVuY3Rpb24gd2UmIzM5O3JlIGRpc3NlY3RpbmcgdG9kYXkuIExldCYjMzk7cyBkaWcgaW4gYW5kIGZpZ3VyZSBvdXQgZXhhY3RseSB3aGF0JiMzOTtzIGNhbGxpbmcgdGhhdCBmdW5jdGlvbi4gVW5kZXJzdGFuZGluZyB0aGUgY2FsbCBjaGFpbiBoZXJlIGlzIGdvaW5nIHRvIGJlIGNydWNpYWwgZm9yIGZpZ3VyaW5nIG91dCBleGFjdGx5IGhvdyB0aGUgcGFja2V0IHByb2Nlc3NpbmcgaGFwcGVucyBvbiB0aGUgcmVjZWl2ZSBzaWRlLiBJIG5lZWQgdG8gdHJhY2UgdGhpcyBiYWNrIHRvIHRoZSB2ZXJ5IHN0YXJ0IG9mIHRoZSByZWNlaXZlIHBhdGguIEhvcGVmdWxseSwgaXQmIzM5O3Mgd2VsbC1kb2N1bWVudGVkLCBiZWNhdXNlIEkmIzM5O20gZ29pbmcgdG8gd2FudCB0byB1bmRlcnN0YW5kIHdoYXQgdHJpZ2dlcnMgdGhpcyBlbnRpcmUgcHJvY2Vzcy4gTGV0JiMzOTtzIHNlZSB3aGF0IHdlIGNhbiBmaW5kLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yOSAwNjowMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtpZWVlODAyMTFfcHJlcGFyZV9hbmRfcnhfaGFuZGxlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L21hYzgwMjExJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9tYWM4MDIxMS9yeC5jPTUwMTU9c3RhdGljIGJvb2wgaWVlZTgwMjExX2ludm9rZV9mYXN0X3J4KHN0cnVjdCBpZWVlODAyMTFfcnhfZGF0YSAqcngsXG4tLVxubmV0L21hYzgwMjExL3J4LmMtNTE3Mi0gKi9cbm5ldC9tYWM4MDIxMS9yeC5jOjUxNzM6c3RhdGljIGJvb2wgaWVlZTgwMjExX3ByZXBhcmVfYW5kX3J4X2hhbmRsZShzdHJ1Y3QgaWVlZTgwMjExX3J4X2RhdGEgKnJ4LFxubmV0L21hYzgwMjExL3J4LmMtNTE3NC1cdFx0XHRcdFx0ICAgIHN0cnVjdCBza19idWZmICpza2IsIGJvb2wgY29uc3VtZSlcbi0tXG5uZXQvbWFjODAyMTEvcnguYz01MzEwPXN0YXRpYyBib29sIGllZWU4MDIxMV9yeF9mb3JfaW50ZXJmYWNlKHN0cnVjdCBpZWVlODAyMTFfcnhfZGF0YSAqcngsXG4tLVxubmV0L21hYzgwMjExL3J4LmMtNTMyMS1cbm5ldC9tYWM4MDIxMS9yeC5jOjUzMjI6XHRcdHJldHVybiBpZWVlODAyMTFfcHJlcGFyZV9hbmRfcnhfaGFuZGxlKHJ4LCBza2IsIGNvbnN1bWUpO1xubmV0L21hYzgwMjExL3J4LmMtNTMyMy1cdH1cbi0tXG5uZXQvbWFjODAyMTEvcnguYy01MzYxLVxubmV0L21hYzgwMjExL3J4LmM6NTM2MjpcdHJldHVybiBpZWVlODAyMTFfcHJlcGFyZV9hbmRfcnhfaGFuZGxlKHJ4LCBza2IsIGNvbnN1bWUpO1xubmV0L21hYzgwMjExL3J4LmMtNTM2My19XG4tLVxubmV0L21hYzgwMjExL3J4LmM9NTM2OT1zdGF0aWMgdm9pZCBfX2llZWU4MDIxMV9yeF9oYW5kbGVfcGFja2V0KHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxuLS1cbm5ldC9tYWM4MDIxMS9yeC5jLTU0NjEtXG5uZXQvbWFjODAyMTEvcnguYzo1NDYyOlx0XHRcdGlmIChpZWVlODAyMTFfcHJlcGFyZV9hbmRfcnhfaGFuZGxlKFx1MDAyNnJ4LCBza2IsIHRydWUpKVxubmV0L21hYzgwMjExL3J4LmMtNTQ2My1cdFx0XHRcdHJldHVybjtcbi0tXG5uZXQvbWFjODAyMTEvcnguYy01NDg5LVxubmV0L21hYzgwMjExL3J4LmM6NTQ5MDpcdFx0XHRpZWVlODAyMTFfcHJlcGFyZV9hbmRfcnhfaGFuZGxlKFx1MDAyNnJ4LCBza2IsIGZhbHNlKTtcbm5ldC9tYWM4MDIxMS9yeC5jLTU0OTEtXG4tLVxubmV0L21hYzgwMjExL3J4LmMtNTUxMC1cbm5ldC9tYWM4MDIxMS9yeC5jOjU1MTE6XHRcdFx0aWYgKGllZWU4MDIxMV9wcmVwYXJlX2FuZF9yeF9oYW5kbGUoXHUwMDI2cngsIHNrYiwgdHJ1ZSkpXG5uZXQvbWFjODAyMTEvcnguYy01NTEyLVx0XHRcdFx0cmV0dXJuO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yOSAwNjowMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMDY4MgoJCQkJCQkJb3V0cHV0OiA0MgoJCQkJCQkJdGhvdWdodHM6IDI1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqVHJhY2luZyB0aGUgRGF0YSBGbG93OiBUaGUgQ3VyaW91cyBDYXNlIG9mIGBfX2llZWU4MDIxMV9yeF9oYW5kbGVfcGFja2V0YCoqCgpBbHJpZ2h0LCBzbyBJJiMzOTttIGRpZ2dpbmcgaW50byB0aGlzIGBfX2llZWU4MDIxMV9yeF9oYW5kbGVfcGFja2V0YCBmdW5jdGlvbi4gSXQmIzM5O3Mgb2J2aW91c2x5IGNlbnRyYWwgdG8gdGhlIDgwMi4xMSByZWNlaXZlIHBhdGguIEJ1dCB0aGUgcXVlc3Rpb24gaXMsICp3aGF0KiBraWNrcyBpdCBvZmY/IEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjYWxsIGNoYWluIHRvIHRydWx5IGdyYXNwIGl0cyByb2xlIGluIHRoZSBiaWdnZXIgcGljdHVyZS4gTXkgbWVudGFsIGNoZWNrbGlzdCBzdGFydHMgd2l0aCBmaWd1cmluZyBvdXQgd2hpY2ggb3RoZXIgZnVuY3Rpb25zIGFyZSByZXNwb25zaWJsZSBmb3IgY2FsbGluZyB0aGlzIG9uZS4gSSBuZWVkIHRvIHRyYWNlIHRoaXMgZGF0YSBmbG93LiBMZXQmIzM5O3Mgc3RhcnQgYnkgbWV0aG9kaWNhbGx5IGNoZWNraW5nIHRoZSBjb2RlIGFuZCBnZXQgdGhlIGZ1bGwgY2FsbCBzdGFjay4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjkgMDY6MDM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7X19pZWVlODAyMTFfcnhfaGFuZGxlX3BhY2tldCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9tYWM4MDIxMSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbWFjODAyMTEvcnguYz01MzEwPXN0YXRpYyBib29sIGllZWU4MDIxMV9yeF9mb3JfaW50ZXJmYWNlKHN0cnVjdCBpZWVlODAyMTFfcnhfZGF0YSAqcngsXG4tLVxubmV0L21hYzgwMjExL3J4LmMtNTM2OC0gKi9cbm5ldC9tYWM4MDIxMS9yeC5jOjUzNjk6c3RhdGljIHZvaWQgX19pZWVlODAyMTFfcnhfaGFuZGxlX3BhY2tldChzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcbm5ldC9tYWM4MDIxMS9yeC5jLTUzNzAtXHRcdFx0XHRcdCBzdHJ1Y3QgaWVlZTgwMjExX3N0YSAqcHVic3RhLFxuLS1cbm5ldC9tYWM4MDIxMS9yeC5jPTU1NTk9dm9pZCBpZWVlODAyMTFfcnhfbGlzdChzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodywgc3RydWN0IGllZWU4MDIxMV9zdGEgKnB1YnN0YSxcbi0tXG5uZXQvbWFjODAyMTEvcnguYy01NzE5LVx0XHRlbHNlXG5uZXQvbWFjODAyMTEvcnguYzo1NzIwOlx0XHRcdF9faWVlZTgwMjExX3J4X2hhbmRsZV9wYWNrZXQoaHcsIHB1YnN0YSwgc2tiLCBsaXN0KTtcbm5ldC9tYWM4MDIxMS9yeC5jLTU3MjEtXHR9XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI5IDA2OjAzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMxMjI4CgkJCQkJCQlvdXRwdXQ6IDMyCgkJCQkJCQl0aG91Z2h0czogMTkwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgODAyLjExIFJlY2VpdmUgUGF0aCoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgZG93biBob3cgdGhpcyA4MDIuMTEgcmVjZWl2ZSBwYXRoIGlzIHN0cnVjdHVyZWQuIEl0IGxvb2tzIGxpa2UgdGhlIG1haW4gZW50cnkgcG9pbnRzIGZvciBwcm9jZXNzaW5nIHJlY2VpdmVkIGZyYW1lcyBhcmUgYGllZWU4MDIxMV9yeF9saXN0YCwgYGllZWU4MDIxMV9yeF9uYXBpYCwgYW5kIGBpZWVlODAyMTFfcnhfaXJxc2FmZWAuIEkgYWxzbyBzZWUgYGllZWU4MDIxMV9yeF9oX2RlZnJhZ21lbnRgIGxpc3RlZCwgd2hpY2ggaXMgbGlrZWx5IGludm9sdmVkIGluIGRlZnJhZ21lbnRhdGlvbiwgZXNwZWNpYWxseSBnaXZlbiB0aGUgYE1BQzgwMjExX05PSU5MSU5FYCBjb250ZXh0LCBvciBpZiBpdCYjMzk7cyBleHBsaWNpdGx5IGV4cG9ydGVkIGFuZCBub3QgaW5saW5lZC4KCk5vdywgSSYjMzk7bSBjdXJpb3VzIGFib3V0IGBpZWVlODAyMTFfcnhfaF9kZWZyYWdtZW50YC4gSSB3YW50IHRvIGtub3cgaWYgdGhpcyBmdW5jdGlvbiBpcyBzdGF0aWMgb3IgaWYgaXQmIzM5O3Mgc3ViamVjdCB0byBhbnkgc3BlY2lhbCBpbmxpbmluZyBjb25zaWRlcmF0aW9ucywgbGlrZSBgZGVidWdfbm9pbmxpbmVgLiBMb29raW5nIGF0IGxpbmUgMjM3MiwgSSBzZWU6IGBzdGF0aWMgaWVlZTgwMjExX3J4X3Jlc3VsdCBkZWJ1Z19ub2lubGluZSBpZWVlODAyMTFfcnhfaF9kZWZyYWdtZW50KHN0cnVjdCBpZWVlODAyMTFfcnhfZGF0YSAqcngpYC4gQWhhISBJdCYjMzk7cyBgc3RhdGljYCBhbmQgdXNlcyBgZGVidWdfbm9pbmxpbmVgLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IGBkZWJ1Z19ub2lubGluZWAgYWN0dWFsbHkgKm1lYW5zKiBpbiB0aGlzIGNvbnRleHQuIExldCYjMzk7cyBkaWcgaW50byB0aGUgZGVmaW5pdGlvbiBvZiB0aGF0IG1hY3JvIGFuZCBzZWUgd2hhdCYjMzk7cyBnb2luZyBvbiB3aXRoIGlubGluaW5nIGhlcmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI5IDA2OjAzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2RlYnVnX25vaW5saW5lJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L21hYzgwMjExJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9tYWM4MDIxMS9pZWVlODAyMTFfaS5oPTI5NDQ9dTMyIGllZWU4MDIxMV9jYWxjX2V4cGVjdGVkX3R4X2FpcnRpbWUoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXG4tLVxubmV0L21hYzgwMjExL2llZWU4MDIxMV9pLmgtMjk0OC0jaWZkZWYgQ09ORklHX01BQzgwMjExX05PSU5MSU5FXG5uZXQvbWFjODAyMTEvaWVlZTgwMjExX2kuaDoyOTQ5OiNkZWZpbmUgZGVidWdfbm9pbmxpbmUgbm9pbmxpbmVcbm5ldC9tYWM4MDIxMS9pZWVlODAyMTFfaS5oLTI5NTAtI2Vsc2Vcbm5ldC9tYWM4MDIxMS9pZWVlODAyMTFfaS5oOjI5NTE6I2RlZmluZSBkZWJ1Z19ub2lubGluZVxubmV0L21hYzgwMjExL2llZWU4MDIxMV9pLmgtMjk1Mi0jZW5kaWZcbi0tXG5uZXQvbWFjODAyMTEvcnguYz0xNDQ1PXN0YXRpYyB2b2lkIGllZWU4MDIxMV9yeF9yZW9yZGVyX2FtcGR1KHN0cnVjdCBpZWVlODAyMTFfcnhfZGF0YSAqcngsXG4tLVxubmV0L21hYzgwMjExL3J4LmMtMTUxOS1cbm5ldC9tYWM4MDIxMS9yeC5jOjE1MjA6c3RhdGljIGllZWU4MDIxMV9yeF9yZXN1bHQgZGVidWdfbm9pbmxpbmVcbm5ldC9tYWM4MDIxMS9yeC5jLTE1MjEtaWVlZTgwMjExX3J4X2hfY2hlY2tfZHVwKHN0cnVjdCBpZWVlODAyMTFfcnhfZGF0YSAqcngpXG4tLVxubmV0L21hYzgwMjExL3J4LmMtMTU3Ny1cbm5ldC9tYWM4MDIxMS9yeC5jOjE1Nzg6c3RhdGljIGllZWU4MDIxMV9yeF9yZXN1bHQgZGVidWdfbm9pbmxpbmVcbm5ldC9tYWM4MDIxMS9yeC5jLTE1NzktaWVlZTgwMjExX3J4X2hfY2hlY2soc3RydWN0IGllZWU4MDIxMV9yeF9kYXRhICpyeClcbi0tXG5uZXQvbWFjODAyMTEvcnguYy0xNjUwLVxubmV0L21hYzgwMjExL3J4LmM6MTY1MTpzdGF0aWMgaWVlZTgwMjExX3J4X3Jlc3VsdCBkZWJ1Z19ub2lubGluZVxubmV0L21hYzgwMjExL3J4LmMtMTY1Mi1pZWVlODAyMTFfcnhfaF9jaGVja19tb3JlX2RhdGEoc3RydWN0IGllZWU4MDIxMV9yeF9kYXRhICpyeClcbi0tXG5uZXQvbWFjODAyMTEvcnguYz0xODA4PUVYUE9SVF9TWU1CT0woaWVlZTgwMjExX3N0YV91YXBzZF90cmlnZ2VyKTtcbm5ldC9tYWM4MDIxMS9yeC5jLTE4MDktXG5uZXQvbWFjODAyMTEvcnguYzoxODEwOnN0YXRpYyBpZWVlODAyMTFfcnhfcmVzdWx0IGRlYnVnX25vaW5saW5lXG5uZXQvbWFjODAyMTEvcnguYy0xODExLWllZWU4MDIxMV9yeF9oX3VhcHNkX2FuZF9wc3BvbGwoc3RydWN0IGllZWU4MDIxMV9yeF9kYXRhICpyeClcbi0tXG5uZXQvbWFjODAyMTEvcnguYy0xODYwLVxubmV0L21hYzgwMjExL3J4LmM6MTg2MTpzdGF0aWMgaWVlZTgwMjExX3J4X3Jlc3VsdCBkZWJ1Z19ub2lubGluZVxubmV0L21hYzgwMjExL3J4LmMtMTg2Mi1pZWVlODAyMTFfcnhfaF9zdGFfcHJvY2VzcyhzdHJ1Y3QgaWVlZTgwMjExX3J4X2RhdGEgKnJ4KVxuLS1cbm5ldC9tYWM4MDIxMS9yeC5jPTE5OTc9aWVlZTgwMjExX3J4X2dldF9iaWd0ayhzdHJ1Y3QgaWVlZTgwMjExX3J4X2RhdGEgKnJ4LCBpbnQgaWR4KVxuLS1cbm5ldC9tYWM4MDIxMS9yeC5jLTIwMjktXG5uZXQvbWFjODAyMTEvcnguYzoyMDMwOnN0YXRpYyBpZWVlODAyMTFfcnhfcmVzdWx0IGRlYnVnX25vaW5saW5lXG5uZXQvbWFjODAyMTEvcnguYy0yMDMxLWllZWU4MDIxMV9yeF9oX2RlY3J5cHQoc3RydWN0IGllZWU4MDIxMV9yeF9kYXRhICpyeClcbi0tXG5uZXQvbWFjODAyMTEvcnguYz0yMzYyPXN0YXRpYyBib29sIHJlcXVpcmVzX3NlcXVlbnRpYWxfcG4oc3RydWN0IGllZWU4MDIxMV9yeF9kYXRhICpyeCwgX19sZTE2IGZjKVxuLS1cbm5ldC9tYWM4MDIxMS9yeC5jLTIzNzEtXG5uZXQvbWFjODAyMTEvcnguYzoyMzcyOnN0YXRpYyBpZWVlODAyMTFfcnhfcmVzdWx0IGRlYnVnX25vaW5saW5lXG5uZXQvbWFjODAyMTEvcnguYy0yMzczLWllZWU4MDIxMV9yeF9oX2RlZnJhZ21lbnQoc3RydWN0IGllZWU4MDIxMV9yeF9kYXRhICpyeClcbi0tXG5uZXQvbWFjODAyMTEvcnguYz0yOTYxPWllZWU4MDIxMV9yeF9tZXNoX2RhdGEoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsIHN0cnVjdCBzdGFfaW5mbyAqc3RhLFxuLS1cbm5ldC9tYWM4MDIxMS9yeC5jLTMxNDMtXG5uZXQvbWFjODAyMTEvcnguYzozMTQ0OnN0YXRpYyBpZWVlODAyMTFfcnhfcmVzdWx0IGRlYnVnX25vaW5saW5lXG5uZXQvbWFjODAyMTEvcnguYy0zMTQ1LV9faWVlZTgwMjExX3J4X2hfYW1zZHUoc3RydWN0IGllZWU4MDIxMV9yeF9kYXRhICpyeCwgdTggZGF0YV9vZmZzZXQpXG4tLVxubmV0L21hYzgwMjExL3J4LmMtMzIyOS1cbm5ldC9tYWM4MDIxMS9yeC5jOjMyMzA6c3RhdGljIGllZWU4MDIxMV9yeF9yZXN1bHQgZGVidWdfbm9pbmxpbmVcbm5ldC9tYWM4MDIxMS9yeC5jLTMyMzEtaWVlZTgwMjExX3J4X2hfYW1zZHUoc3RydWN0IGllZWU4MDIxMV9yeF9kYXRhICpyeClcbi0tXG5uZXQvbWFjODAyMTEvcnguYy0zMjg2LVxubmV0L21hYzgwMjExL3J4LmM6MzI4NzpzdGF0aWMgaWVlZTgwMjExX3J4X3Jlc3VsdCBkZWJ1Z19ub2lubGluZVxubmV0L21hYzgwMjExL3J4LmMtMzI4OC1pZWVlODAyMTFfcnhfaF9kYXRhKHN0cnVjdCBpZWVlODAyMTFfcnhfZGF0YSAqcngpXG4tLVxubmV0L21hYzgwMjExL3J4LmMtMzM2Ny1cbm5ldC9tYWM4MDIxMS9yeC5jOjMzNjg6c3RhdGljIGllZWU4MDIxMV9yeF9yZXN1bHQgZGVidWdfbm9pbmxpbmVcbm5ldC9tYWM4MDIxMS9yeC5jLTMzNjktaWVlZTgwMjExX3J4X2hfY3RybChzdHJ1Y3QgaWVlZTgwMjExX3J4X2RhdGEgKnJ4LCBzdHJ1Y3Qgc2tfYnVmZl9oZWFkICpmcmFtZXMpXG4tLVxubmV0L21hYzgwMjExL3J4LmM9MzQ3OT1pZWVlODAyMTFfcnhfY2hlY2tfYnNzX2NvbG9yX2NvbGxpc2lvbihzdHJ1Y3QgaWVlZTgwMjExX3J4X2RhdGEgKnJ4KVxuLS1cbm5ldC9tYWM4MDIxMS9yeC5jLTM1MjMtXG5uZXQvbWFjODAyMTEvcnguYzozNTI0OnN0YXRpYyBpZWVlODAyMTFfcnhfcmVzdWx0IGRlYnVnX25vaW5saW5lXG5uZXQvbWFjODAyMTEvcnguYy0zNTI1LWllZWU4MDIxMV9yeF9oX21nbXRfY2hlY2soc3RydWN0IGllZWU4MDIxMV9yeF9kYXRhICpyeClcbi0tXG5uZXQvbWFjODAyMTEvcnguYz0zNTc3PWllZWU4MDIxMV9wcm9jZXNzX3J4X3R3dF9hY3Rpb24oc3RydWN0IGllZWU4MDIxMV9yeF9kYXRhICpyeClcbi0tXG5uZXQvbWFjODAyMTEvcnguYy0zNjI2LVxubmV0L21hYzgwMjExL3J4LmM6MzYyNzpzdGF0aWMgaWVlZTgwMjExX3J4X3Jlc3VsdCBkZWJ1Z19ub2lubGluZVxubmV0L21hYzgwMjExL3J4LmMtMzYyOC1pZWVlODAyMTFfcnhfaF9hY3Rpb24oc3RydWN0IGllZWU4MDIxMV9yeF9kYXRhICpyeClcbi0tXG5uZXQvbWFjODAyMTEvcnguYy0zOTk3LVxubmV0L21hYzgwMjExL3J4LmM6Mzk5ODpzdGF0aWMgaWVlZTgwMjExX3J4X3Jlc3VsdCBkZWJ1Z19ub2lubGluZVxubmV0L21hYzgwMjExL3J4LmMtMzk5OS1pZWVlODAyMTFfcnhfaF91c2Vyc3BhY2VfbWdtdChzdHJ1Y3QgaWVlZTgwMjExX3J4X2RhdGEgKnJ4KVxuLS1cbm5ldC9tYWM4MDIxMS9yeC5jLTQwNDAtXG5uZXQvbWFjODAyMTEvcnguYzo0MDQxOnN0YXRpYyBpZWVlODAyMTFfcnhfcmVzdWx0IGRlYnVnX25vaW5saW5lXG5uZXQvbWFjODAyMTEvcnguYy00MDQyLWllZWU4MDIxMV9yeF9oX2FjdGlvbl9wb3N0X3VzZXJzcGFjZShzdHJ1Y3QgaWVlZTgwMjExX3J4X2RhdGEgKnJ4KVxuLS1cbm5ldC9tYWM4MDIxMS9yeC5jLTQwNzQtXG5uZXQvbWFjODAyMTEvcnguYzo0MDc1OnN0YXRpYyBpZWVlODAyMTFfcnhfcmVzdWx0IGRlYnVnX25vaW5saW5lXG5uZXQvbWFjODAyMTEvcnguYy00MDc2LWllZWU4MDIxMV9yeF9oX2FjdGlvbl9yZXR1cm4oc3RydWN0IGllZWU4MDIxMV9yeF9kYXRhICpyeClcbi0tXG5uZXQvbWFjODAyMTEvcnguYy00MTM2LVxubmV0L21hYzgwMjExL3J4LmM6NDEzNzpzdGF0aWMgaWVlZTgwMjExX3J4X3Jlc3VsdCBkZWJ1Z19ub2lubGluZVxubmV0L21hYzgwMjExL3J4LmMtNDEzOC1pZWVlODAyMTFfcnhfaF9leHQoc3RydWN0IGllZWU4MDIxMV9yeF9kYXRhICpyeClcbi0tXG5uZXQvbWFjODAyMTEvcnguYy00MTU0LVxubmV0L21hYzgwMjExL3J4LmM6NDE1NTpzdGF0aWMgaWVlZTgwMjExX3J4X3Jlc3VsdCBkZWJ1Z19ub2lubGluZVxubmV0L21hYzgwMjExL3J4LmMtNDE1Ni1pZWVlODAyMTFfcnhfaF9tZ210KHN0cnVjdCBpZWVlODAyMTFfcnhfZGF0YSAqcngpXG4tLVxubmV0L21hYzgwMjExL3R4LmM9NDM9c3RhdGljIF9fbGUxNiBpZWVlODAyMTFfZHVyYXRpb24oc3RydWN0IGllZWU4MDIxMV90eF9kYXRhICp0eCxcbi0tXG5uZXQvbWFjODAyMTEvdHguYy0xOTEtLyogdHggaGFuZGxlcnMgKi9cbm5ldC9tYWM4MDIxMS90eC5jOjE5MjpzdGF0aWMgaWVlZTgwMjExX3R4X3Jlc3VsdCBkZWJ1Z19ub2lubGluZVxubmV0L21hYzgwMjExL3R4LmMtMTkzLWllZWU4MDIxMV90eF9oX2R5bmFtaWNfcHMoc3RydWN0IGllZWU4MDIxMV90eF9kYXRhICp0eClcbi0tXG5uZXQvbWFjODAyMTEvdHguYy0yNjgtXG5uZXQvbWFjODAyMTEvdHguYzoyNjk6c3RhdGljIGllZWU4MDIxMV90eF9yZXN1bHQgZGVidWdfbm9pbmxpbmVcbm5ldC9tYWM4MDIxMS90eC5jLTI3MC1pZWVlODAyMTFfdHhfaF9jaGVja19hc3NvYyhzdHJ1Y3QgaWVlZTgwMjExX3R4X2RhdGEgKnR4KVxuLS1cbm5ldC9tYWM4MDIxMS90eC5jPTQ1OD1pZWVlODAyMTFfdHhfaF91bmljYXN0X3BzX2J1ZihzdHJ1Y3QgaWVlZTgwMjExX3R4X2RhdGEgKnR4KVxuLS1cbm5ldC9tYWM4MDIxMS90eC5jLTUzNS1cbm5ldC9tYWM4MDIxMS90eC5jOjUzNjpzdGF0aWMgaWVlZTgwMjExX3R4X3Jlc3VsdCBkZWJ1Z19ub2lubGluZVxubmV0L21hYzgwMjExL3R4LmMtNTM3LWllZWU4MDIxMV90eF9oX3BzX2J1ZihzdHJ1Y3QgaWVlZTgwMjExX3R4X2RhdGEgKnR4KVxuLS1cbm5ldC9tYWM4MDIxMS90eC5jLTU0Ny1cbm5ldC9tYWM4MDIxMS90eC5jOjU0ODpzdGF0aWMgaWVlZTgwMjExX3R4X3Jlc3VsdCBkZWJ1Z19ub2lubGluZVxubmV0L21hYzgwMjExL3R4LmMtNTQ5LWllZWU4MDIxMV90eF9oX2NoZWNrX2NvbnRyb2xfcG9ydF9wcm90b2NvbChzdHJ1Y3QgaWVlZTgwMjExX3R4X2RhdGEgKnR4KVxuLS1cbm5ldC9tYWM4MDIxMS90eC5jPTU2ND1pZWVlODAyMTFfc2VsZWN0X2xpbmtfa2V5KHN0cnVjdCBpZWVlODAyMTFfdHhfZGF0YSAqdHgpXG4tLVxubmV0L21hYzgwMjExL3R4LmMtNTkxLVxubmV0L21hYzgwMjExL3R4LmM6NTkyOnN0YXRpYyBpZWVlODAyMTFfdHhfcmVzdWx0IGRlYnVnX25vaW5saW5lXG5uZXQvbWFjODAyMTEvdHguYy01OTMtaWVlZTgwMjExX3R4X2hfc2VsZWN0X2tleShzdHJ1Y3QgaWVlZTgwMjExX3R4X2RhdGEgKnR4KVxuLS1cbm5ldC9tYWM4MDIxMS90eC5jLTY3My1cbm5ldC9tYWM4MDIxMS90eC5jOjY3NDpzdGF0aWMgaWVlZTgwMjExX3R4X3Jlc3VsdCBkZWJ1Z19ub2lubGluZVxubmV0L21hYzgwMjExL3R4LmMtNjc1LWllZWU4MDIxMV90eF9oX3JhdGVfY3RybChzdHJ1Y3QgaWVlZTgwMjExX3R4X2RhdGEgKnR4KVxuLS1cbm5ldC9tYWM4MDIxMS90eC5jPTgwOD1zdGF0aWMgX19sZTE2IGllZWU4MDIxMV90eF9uZXh0X3NlcShzdHJ1Y3Qgc3RhX2luZm8gKnN0YSwgaW50IHRpZClcbi0tXG5uZXQvbWFjODAyMTEvdHguYy04MTgtXG5uZXQvbWFjODAyMTEvdHguYzo4MTk6c3RhdGljIGllZWU4MDIxMV90eF9yZXN1bHQgZGVidWdfbm9pbmxpbmVcbm5ldC9tYWM4MDIxMS90eC5jLTgyMC1pZWVlODAyMTFfdHhfaF9zZXF1ZW5jZShzdHJ1Y3QgaWVlZTgwMjExX3R4X2RhdGEgKnR4KVxuLS1cbm5ldC9tYWM4MDIxMS90eC5jPTg5MT1zdGF0aWMgaW50IGllZWU4MDIxMV9mcmFnbWVudChzdHJ1Y3QgaWVlZTgwMjExX3R4X2RhdGEgKnR4LFxuLS1cbm5ldC9tYWM4MDIxMS90eC5jLTk1MC1cbm5ldC9tYWM4MDIxMS90eC5jOjk1MTpzdGF0aWMgaWVlZTgwMjExX3R4X3Jlc3VsdCBkZWJ1Z19ub2lubGluZVxubmV0L21hYzgwMjExL3R4LmMtOTUyLWllZWU4MDIxMV90eF9oX2ZyYWdtZW50KHN0cnVjdCBpZWVlODAyMTFfdHhfZGF0YSAqdHgpXG4tLVxubmV0L21hYzgwMjExL3R4LmMtMTAyNS1cbm5ldC9tYWM4MDIxMS90eC5jOjEwMjY6c3RhdGljIGllZWU4MDIxMV90eF9yZXN1bHQgZGVidWdfbm9pbmxpbmVcbm5ldC9tYWM4MDIxMS90eC5jLTEwMjctaWVlZTgwMjExX3R4X2hfc3RhdHMoc3RydWN0IGllZWU4MDIxMV90eF9kYXRhICp0eClcbi0tXG5uZXQvbWFjODAyMTEvdHguYy0xMDQ0LVxubmV0L21hYzgwMjExL3R4LmM6MTA0NTpzdGF0aWMgaWVlZTgwMjExX3R4X3Jlc3VsdCBkZWJ1Z19ub2lubGluZVxubmV0L21hYzgwMjExL3R4LmMtMTA0Ni1pZWVlODAyMTFfdHhfaF9lbmNyeXB0KHN0cnVjdCBpZWVlODAyMTFfdHhfZGF0YSAqdHgpXG4tLVxubmV0L21hYzgwMjExL3R4LmMtMTA3OS1cbm5ldC9tYWM4MDIxMS90eC5jOjEwODA6c3RhdGljIGllZWU4MDIxMV90eF9yZXN1bHQgZGVidWdfbm9pbmxpbmVcbm5ldC9tYWM4MDIxMS90eC5jLTEwODEtaWVlZTgwMjExX3R4X2hfY2FsY3VsYXRlX2R1cmF0aW9uKHN0cnVjdCBpZWVlODAyMTFfdHhfZGF0YSAqdHgpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI5IDA2OjAzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM1Njc4CgkJCQkJCQlvdXRwdXQ6IDM2CgkJCQkJCQl0aG91Z2h0czogMjg5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEluaXRpYWwgQXNzZXNzbWVudCBvZiBtYWM4MDIxMSBSWCBFbnRyeSBQb2ludHMqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoZSBlbnRyeSBwb2ludHMgZm9yIHRoZSBtYWM4MDIxMSByZWNlaXZlIHBhdGguIFJpZ2h0IG9mZiB0aGUgYmF0LCBJIHNlZSB0aGF0IGBpZWVlODAyMTFfcnhfbGlzdGAsIGBpZWVlODAyMTFfcnhfbmFwaWAsIGFuZCBgaWVlZTgwMjExX3J4X2lycXNhZmVgIGFyZSB0aGUgbm9uLXN0YXRpYyBlbnRyeSBwb2ludHMgZGVmaW5lZCB3aXRoaW4gYG5ldC9tYWM4MDIxMS9yeC5jYC4gTXkgaW5zdGluY3QgaXMgdG8gbWFrZSBzdXJlIHRoZXNlIGFyZSB0aGUgY29yZSBpbnRlcmZhY2VzIEkgc2hvdWxkIGJlIGZvY3VzaW5nIG9uLCBzbyBJIG5lZWQgdG8gcXVpY2tseSBzY2FuIGBuZXQvbWFjODAyMTEvcnguY2AgaXRzZWxmIGFuZCBwb3NzaWJseSBlbHNld2hlcmUgdG8gZW5zdXJlIEkmIzM5O20gbm90IG1pc3NpbmcgYW55IG90aGVyIGNydWNpYWwgcmVsZXZhbnQgZnVuY3Rpb25zLiBNeSByYWRhciBpcyB1cCBmb3IgYW55dGhpbmcgZWxzZSwgbGlrZSB0aGUgd2F5IGBpZWVlODAyMTFfcnhfaF9kZWZyYWdtZW50YCBpcyBoYW5kbGVkIOKAkyBpdCAqaXMqIGEgc3ltYm9sIGR1ZSB0byBgTUFDODAyMTFfTk9JTkxJTkVgIGJ1dCBJJiMzOTtkIHJhdGhlciBzdGljayB3aXRoIHRob3NlIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50cyBpZiBwb3NzaWJsZSwgYW5kIGVzcGVjaWFsbHkgdGhlIG9uZXMgSSBtZW50aW9uZWQgaW5pdGlhbGx5LgoKSSBzaG91bGQgYWxzbyBxdWlja2x5IHJldmlldyB0aGUgcmVsZXZhbnQgY29uZmlndXJhdGlvbiBvcHRpb25zLiBgTUFDODAyMTFgLCBvYnZpb3VzbHksIGBDRkc4MDIxMWAgd2hpY2ggaXMgZnVuZGFtZW50YWwsIGFuZCB0aGVuIGBNQUM4MDIxMV9IV1NJTWAuIEkgbmVlZCB0byBlbnN1cmUgSSYjMzk7bSBub3Qgb3Zlcmxvb2tpbmcgYW55dGhpbmcgY3J1Y2lhbCB0aGVyZS4gU3BlY2lmaWNhbGx5LCBmb3IgYE1BQzgwMjExX0hXU0lNYCwgSSYjMzk7bGwgbmVlZCB0byBjaGVjayBpZiB0aGF0IG9wdGlvbiByZWxpZXMgb24gb3IgaW50ZXJhY3RzIHdpdGggYW55IG90aGVyIGNvbmZpZ3VyYXRpb25zLiBJJiMzOTtsbCBzZWFyY2ggZm9yICYjMzQ7Y29uZmlnIE1BQzgwMjExX0hXU0lNJiMzNDsgd2l0aGluIGBkcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL0tjb25maWdgIHRvIHBpbnBvaW50IGFueSBkZXBlbmRlbmNpZXMgb3IgaW50ZXJhY3Rpb25zLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yOSAwNjowNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMzAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAgMTpcdGNvbmZpZyBNQUM4MDIxMV9IV1NJTVxuICAgMjpcdFx0dHJpc3RhdGUgXCYjMzQ7U2ltdWxhdGVkIHJhZGlvIHRlc3RpbmcgdG9vbCBmb3IgbWFjODAyMTFcJiMzNDtcbiAgIDM6XHRcdGRlcGVuZHMgb24gTUFDODAyMTFcbiAgIDQ6XHRcdGhlbHBcbiAgIDU6XHRcdCAgVGhpcyBkcml2ZXIgaXMgYSBkZXZlbG9wZXIgdGVzdGluZyB0b29sIHRoYXQgY2FuIGJlIHVzZWQgdG8gdGVzdFxuICAgNjpcdFx0ICBJRUVFIDgwMi4xMSBuZXR3b3JraW5nIHN0YWNrIChtYWM4MDIxMSkgZnVuY3Rpb25hbGl0eS4gVGhpcyBpcyBub3RcbiAgIDc6XHRcdCAgbmVlZGVkIGZvciBub3JtYWwgd2lyZWxlc3MgTEFOIHVzYWdlIGFuZCBpcyBvbmx5IGZvciB0ZXN0aW5nLiBTZWVcbiAgIDg6XHRcdCAgRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL21hYzgwMjExX2h3c2ltIGZvciBtb3JlIGluZm9ybWF0aW9uIG9uIGhvd1xuICAgOTpcdFx0ICB0byB1c2UgdGhpcyB0b29sLlxuICAxMDpcdFxuICAxMTpcdFx0ICBUbyBjb21waWxlIHRoaXMgZHJpdmVyIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlOiB0aGUgbW9kdWxlIHdpbGwgYmVcbiAgMTI6XHRcdCAgY2FsbGVkIG1hYzgwMjExX2h3c2ltLiAgSWYgdW5zdXJlLCBzYXkgTi5cbiAgMTM6XHRcbiAgMTQ6XHRjb25maWcgVklSVF9XSUZJXG4gIDE1Olx0XHR0cmlzdGF0ZSBcJiMzNDtXaWZpIHdyYXBwZXIgZm9yIGV0aGVybmV0IGRyaXZlcnNcJiMzNDtcbiAgMTY6XHRcdGRlcGVuZHMgb24gQ0ZHODAyMTFcbiAgMTc6XHRcdGhlbHBcbiAgMTg6XHRcdCAgVGhpcyBvcHRpb24gYWRkcyBzdXBwb3J0IGZvciBldGhlcm5ldCBjb25uZWN0aW9ucyB0byBhcHBlYXIgYXMgaWYgdGhleVxuICAxOTpcdFx0ICBhcmUgd2lmaSBjb25uZWN0aW9ucyB0aHJvdWdoIGEgc3BlY2lhbCBydG5ldGxpbmsgZGV2aWNlLlxuICAyMDpcdFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yOSAwNjowNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNjcwNwoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDc3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3Mgc2VlIHdoYXQmIzM5O3MgZ29pbmcgb24gaGVyZS4KCioqSW52ZXN0aWdhdGluZyBXaXJlbGVzcyBDb25maWd1cmF0aW9uIE9wdGlvbnMqKgoKUmlnaHQsIHNvIEkgbmVlZCB0byBkaWcgaW50byB0aGUgd2lyZWxlc3MgY29uZmlndXJhdGlvbiwgc3BlY2lmaWNhbGx5IGFyb3VuZCBtYWM4MDIxMS4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsIGFyZSB0aGVyZSBhbnkgKm90aGVyKiBjb25maWdzIHJlbGF0ZWQgdG8gd2lyZWxlc3Mgb3IgbWFjODAyMTEgdGhhdCBJJiMzOTttIG92ZXJsb29raW5nPyBMZXQmIzM5O3Mgc3RhcnQgd2l0aCBhIHN5c3RlbWF0aWMgY2hlY2suIFRoZSBmaXJzdCBwbGFjZSB0byBsb29rIHdvdWxkIGJlIHVuZGVyIGBORVRERVZJQ0VTYCwgdGhlbiBgV0xBTmAsIGFuZCBmaW5hbGx5IHdpdGhpbiB0aGUgYE1BQzgwMjExYCBzZWN0aW9uLiBJIG5lZWQgdG8gbWFrZSBzdXJlIEkmIzM5O20gbm90IG1pc3NpbmcgYW55dGhpbmcgbGlrZSBgTUFDODAyMTFfSFdTSU1gIG9yIGBDRkc4MDIxMWAg4oCTIHRob3NlIG9mdGVuIGhhdmUgdGhlaXIgb3duIGNvbmZpZ3VyYXRpb25zLiBUaGVuLCB0byBiZSB0aG9yb3VnaCwgSSBzaG91bGQgYWxzbyBjaGVjayB0aGUgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL0tjb25maWdgIGZpbGUuIFRoYXQmIzM5O3MgdXN1YWxseSB0aGUgY2Fub25pY2FsIHNvdXJjZSBmb3IgdGhlc2Uga2luZHMgb2Ygc2V0dGluZ3MgYW5kIGRlcGVuZGVuY2llcy4gVGhpcyBzaG91bGQgZ2l2ZSBtZSBhIGdvb2QgbGF5IG9mIHRoZSBsYW5kLCBjb25maWd1cmF0aW9uLXdpc2UuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI5IDA2OjA0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNDAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAgMTpcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuICAgMjpcdCNcbiAgIDM6XHQjIFdpcmVsZXNzIExBTiBkZXZpY2UgY29uZmlndXJhdGlvblxuICAgNDpcdCNcbiAgIDU6XHRcbiAgIDY6XHRtZW51Y29uZmlnIFdMQU5cbiAgIDc6XHRcdGJvb2wgXCYjMzQ7V2lyZWxlc3MgTEFOXCYjMzQ7XG4gICA4Olx0XHRkZXBlbmRzIG9uICFTMzkwXG4gICA5Olx0XHRkZXBlbmRzIG9uIE5FVFxuICAxMDpcdFx0c2VsZWN0IFdJUkVMRVNTXG4gIDExOlx0XHRkZWZhdWx0IHlcbiAgMTI6XHRcdGhlbHBcbiAgMTM6XHRcdCAgVGhpcyBzZWN0aW9uIGNvbnRhaW5zIGFsbCB0aGUgcHJlIDgwMi4xMSBhbmQgODAyLjExIHdpcmVsZXNzXG4gIDE0Olx0XHQgIGRldmljZSBkcml2ZXJzLiBGb3IgYSBjb21wbGV0ZSBsaXN0IG9mIGRyaXZlcnMgYW5kIGRvY3VtZW50YXRpb25cbiAgMTU6XHRcdCAgb24gdGhlbSByZWZlciB0byB0aGUgd2lyZWxlc3Mgd2lraTpcbiAgMTY6XHRcbiAgMTc6XHRcdCAgaHR0cHM6Ly93aXJlbGVzcy53aWtpLmtlcm5lbC5vcmcvZW4vdXNlcnMvRHJpdmVyc1xuICAxODpcdFxuICAxOTpcdGlmIFdMQU5cbiAgMjA6XHRcbiAgMjE6XHRzb3VyY2UgXCYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYWRtdGVrL0tjb25maWdcJiMzNDtcbiAgMjI6XHRzb3VyY2UgXCYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL0tjb25maWdcJiMzNDtcbiAgMjM6XHRzb3VyY2UgXCYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRtZWwvS2NvbmZpZ1wmIzM0O1xuICAyNDpcdHNvdXJjZSBcJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9LY29uZmlnXCYjMzQ7XG4gIDI1Olx0c291cmNlIFwmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL0tjb25maWdcJiMzNDtcbiAgMjY6XHRzb3VyY2UgXCYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvS2NvbmZpZ1wmIzM0O1xuICAyNzpcdHNvdXJjZSBcJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL0tjb25maWdcJiMzNDtcbiAgMjg6XHRzb3VyY2UgXCYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvS2NvbmZpZ1wmIzM0O1xuICAyOTpcdHNvdXJjZSBcJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9taWNyb2NoaXAvS2NvbmZpZ1wmIzM0O1xuICAzMDpcdHNvdXJjZSBcJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL0tjb25maWdcJiMzNDtcbiAgMzE6XHRzb3VyY2UgXCYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL0tjb25maWdcJiMzNDtcbiAgMzI6XHRzb3VyY2UgXCYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvcHVyZWxpZmkvS2NvbmZpZ1wmIzM0O1xuICAzMzpcdHNvdXJjZSBcJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvS2NvbmZpZ1wmIzM0O1xuICAzNDpcdHNvdXJjZSBcJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL0tjb25maWdcJiMzNDtcbiAgMzU6XHRzb3VyY2UgXCYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvcnNpL0tjb25maWdcJiMzNDtcbiAgMzY6XHRzb3VyY2UgXCYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3Mvc2lsYWJzL0tjb25maWdcJiMzNDtcbiAgMzc6XHRzb3VyY2UgXCYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3Mvc3QvS2NvbmZpZ1wmIzM0O1xuICAzODpcdHNvdXJjZSBcJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy90aS9LY29uZmlnXCYjMzQ7XG4gIDM5Olx0c291cmNlIFwmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL0tjb25maWdcJiMzNDtcbiAgNDA6XHRzb3VyY2UgXCYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvcXVhbnRlbm5hL0tjb25maWdcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjkgMDY6MDQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzc2NTUKCQkJCQkJCW91dHB1dDogMjkKCQkJCQkJCXRob3VnaHRzOiAyOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGlzLiBIZXJlJiMzOTtzIGhvdyBJJiMzOTtkIGFwcHJvYWNoIHRoYXQga2VybmVsIGNvbmZpZ3VyYXRpb24gZmlsZSBjaGVjazoKCioqRXhhbWluaW5nIHRoZSBXaXJlbGVzcyBWaXJ0dWFsIERyaXZlciBDb25maWd1cmF0aW9uKioKClJpZ2h0LCB0aW1lIHRvIGdldCBhIGdyaXAgb24gdGhpcyB3aXJlbGVzcyB2aXJ0dWFsIGRyaXZlciBjb25maWd1cmF0aW9uLiBGaXJzdCwgSSBuZWVkIHRvIHZlcmlmeSBpdHMgY29uZmlndXJhdGlvbiwgc28gbGV0JiMzOTtzIGNoZWNrIGBzb3VyY2UgJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL0tjb25maWcmIzM0O2AgaW4gYGRyaXZlcnMvbmV0L3dpcmVsZXNzL0tjb25maWdgLiBJJiMzOTtsbCBiZSBsb29raW5nIGZvciBkZXBlbmRlbmNpZXMsIGRlZmF1bHQgc2V0dGluZ3MsIGFuZCBhbnkgc3BlY2lmaWMgb3B0aW9ucyB0aGF0IHBlcnRhaW4gdG8gdGhlIHZpcnR1YWwgZHJpdmVyLiBJIGV4cGVjdCB0byBmaW5kIHRoZSBidWlsZGluZyBibG9ja3MgdGhhdCBjb250cm9sIHdoZXRoZXIgb3Igbm90IHRoaXMgZHJpdmVyIGlzIGluY2x1ZGVkLCBhbmQgaG93IGl0cyBmZWF0dXJlcyBhcmUgZXhwb3NlZC4gVGhpcyBLY29uZmlnIGZpbGUgd2lsbCBiZSB0aGUga2V5IHRvIHVuZGVyc3RhbmRpbmcgaG93IHRoZSBrZXJuZWwmIzM5O3Mgd2lyZWxlc3Mgc3Vic3lzdGVtIGlzIHRyZWF0aW5nIHZpcnR1YWwgbmV0d29yayBkZXZpY2VzLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgYmVoYXZpb3IgZnVsbHkgdG8gZGVidWcgYW5kIG9wdGltaXplLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yOSAwNjowNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt2aXJ0dWFsL0tjb25maWcmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9LY29uZmlnPTQwPXNvdXJjZSBcJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9xdWFudGVubmEvS2NvbmZpZ1wmIzM0O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvS2NvbmZpZy00MS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL0tjb25maWc6NDI6c291cmNlIFwmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvS2NvbmZpZ1wmIzM0O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvS2NvbmZpZy00My1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40MS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjkgMDY6MDQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzc5NzMKCQkJCQkJCW91dHB1dDogMTg1CgkJCQkJCQl0aG91Z2h0czogMjI1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgdGhlIG1hYzgwMjExIEZyYWdtZW50IEhhbmRsaW5nIEZpeCoqCgpPa2F5LCBzbyB0aGlzIHBhdGNoIGlzIGNydWNpYWwuIEl0JiMzOTtzIGFkZHJlc3NpbmcgYSBwcmV0dHkgbmFzdHkgaW50ZWdlciBvdmVyZmxvdyB2dWxuZXJhYmlsaXR5IGluIHRoZSBtYWM4MDIxMSBmcmFtZSByZWFzc2VtYmx5IHByb2Nlc3MuIFRoZXkmIzM5O3JlIGNoYW5naW5nIGBleHRyYV9sZW5gIHdpdGhpbiB0aGUgYGllZWU4MDIxMV9mcmFnbWVudF9lbnRyeWAgc3RydWN0IGZyb20gYSBgdTE2YCB0byBhbiBgdW5zaWduZWQgaW50YC4gVGhhdCYjMzk7cyBhIGNsYXNzaWMgY2FzZSBvZiBwb3RlbnRpYWxseSBvdmVyZmxvd2luZyB0aGUgY3VtdWxhdGl2ZSBmcmFnbWVudCBsZW5ndGhzLCB3aGljaCwgaWYgZXhwbG9pdGVkLCBjb3VsZCBsZWFkIHRvIGEgc2VyaW91cyBidWZmZXIgb3ZlcmZsb3cgd2hlbiB0aGUgc3lzdGVtIGF0dGVtcHRzIHRvIGFzc2VtYmxlIHRoZSBmcmFnbWVudHMgd2l0aCBgc2tiX3B1dF9kYXRhYC4gVGhpcyBpcyBhYnNvbHV0ZWx5IGEgZnVuY3Rpb25hbCBmaXgsIGRpcmVjdGx5IGltcGFjdGluZyBjb3JlIG1hYzgwMjExIGtlcm5lbCBsb2dpYyDigJMgdGhlIHJlYXNzZW1ibHkgcGFydCwgaW4gcGFydGljdWxhci4KClRoZSBiZWF1dHkgb2YgdGhpcyB2dWxuZXJhYmlsaXR5IGlzIHRoYXQgaXQmIzM5O3MgaGlnaGx5IGZ1enphYmxlLiBJbmplY3RpbmcgY3JhZnRlZCA4MDIuMTEgZnJhbWVzIHZpYSBgbWFjODAyMTFfaHdzaW1gIGlzIGdvaW5nIHRvIGJlIGluY3JlZGlibHkgZWZmZWN0aXZlIGF0IHVuY292ZXJpbmcgYW55IGxpbmdlcmluZyBpc3N1ZXMgb3IgZWRnZSBjYXNlcy4gV2UgcmVhbGx5IHNob3VsZCBwdXQgYSBoZWF2eSBmb2N1cyBvbiB0aGF0IGFwcHJvYWNoLgoKSSYjMzk7bSBtYWtpbmcgYSBub3RlIG9mIHRoZSBzcGVjaWZpYyBzeW1ib2xzIHRvIGZvY3VzIG9uIGR1cmluZyBmdXp6aW5nOiBgaWVlZTgwMjExX3J4X2xpc3RgLCBgaWVlZTgwMjExX3J4X25hcGlgLCBhbmQgYGllZWU4MDIxMV9yeF9pcnFzYWZlYC4gVGhleSYjMzk7cmUgcHJvYmFibHkgcmlnaHQgd2hlcmUgdGhlIGRhdGEgaXMgaGFuZGxlZC4gQW5kLCB0aGUgYE1BQzgwMjExYCwgYENGRzgwMjExYCwgYW5kIGBNQUM4MDIxMV9IV1NJTWAgY29uZmlncyBoYXZlIHRvIGJlIGVuYWJsZWQgdG8gdGVzdCB0aGlzIHByb3Blcmx5LgoKQWxyaWdodCwgdGltZSB0byBzZXQgdGhpcyB1cCBmb3IgZnV6emluZyBhbmQgZ2V0IHRoZSByZXN1bHRzIQoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yOSAwNjowNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7TUFDODAyMTEmIzM0OywKICAgICYjMzQ7Q0ZHODAyMTEmIzM0OywKICAgICYjMzQ7TUFDODAyMTFfSFdTSU0mIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtpZWVlODAyMTFfcnhfbGlzdCYjMzQ7LAogICAgJiMzNDtpZWVlODAyMTFfcnhfbmFwaSYjMzQ7LAogICAgJiMzNDtpZWVlODAyMTFfcnhfaXJxc2FmZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBjaGFuZ2VzIGBleHRyYV9sZW5gIGluIGBzdHJ1Y3QgaWVlZTgwMjExX2ZyYWdtZW50X2VudHJ5YCBmcm9tIGB1MTZgIHRvIGB1bnNpZ25lZCBpbnRgIHRvIHByZXZlbnQgaW50ZWdlciBvdmVyZmxvdyBkdXJpbmcgODAyLjExIGZyYWdtZW50IHJlYXNzZW1ibHkgaW4gbWFjODAyMTEgcnggaGFuZGxpbmcuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBkaXJlY3RseSBhZmZlY3RpbmcgcGFja2V0IHJlYXNzZW1ibHkgYW5kIG1lbW9yeSBtYW5hZ2VtZW50IGluIHRoZSByZWFjaGFibGUgd2lyZWxlc3MgbmV0d29ya2luZyBzdWJzeXN0ZW0uJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O01BQzgwMjExJiMzNDssCiAgICAmIzM0O0NGRzgwMjExJiMzNDssCiAgICAmIzM0O01BQzgwMjExX0hXU0lNJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7aWVlZTgwMjExX3J4X2xpc3QmIzM0OywKICAgICYjMzQ7aWVlZTgwMjExX3J4X25hcGkmIzM0OywKICAgICYjMzQ7aWVlZTgwMjExX3J4X2lycXNhZmUmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggY2hhbmdlcyBgZXh0cmFfbGVuYCBpbiBgc3RydWN0IGllZWU4MDIxMV9mcmFnbWVudF9lbnRyeWAgZnJvbSBgdTE2YCB0byBgdW5zaWduZWQgaW50YCB0byBwcmV2ZW50IGludGVnZXIgb3ZlcmZsb3cgZHVyaW5nIDgwMi4xMSBmcmFnbWVudCByZWFzc2VtYmx5IGluIG1hYzgwMjExIHJ4IGhhbmRsaW5nLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgZGlyZWN0bHkgYWZmZWN0aW5nIHBhY2tldCByZWFzc2VtYmx5IGFuZCBtZW1vcnkgbWFuYWdlbWVudCBpbiB0aGUgcmVhY2hhYmxlIHdpcmVsZXNzIG5ldHdvcmtpbmcgc3Vic3lzdGVtLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQzLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yOSAwNjowNDwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+SWY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4xbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI5IDA2OjA0PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjFtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmNvcmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggY2hhbmdlcyB0aGUgdHlwZSBvZiBgZXh0cmFfbGVuYCBpbiBgc3RydWN0IGllZWU4MDIxMV9mcmFnbWVudF9lbnRyeWAgZnJvbSBgdTE2YCB0byBgdW5zaWduZWQgaW50YCB0byBwcmV2ZW50IGludGVnZXIgb3ZlcmZsb3cvdHJ1bmNhdGlvbiB3aGVuIGNhbGN1bGF0aW5nIHRoZSB0b3RhbCBsZW5ndGggb2YgZnJhZ21lbnRlZCBmcmFtZXMgZHVyaW5nIElFRUUgODAyLjExIGRlZnJhZ21lbnRhdGlvbi5cblxuYHN0cnVjdCBpZWVlODAyMTFfZnJhZ21lbnRfZW50cnlgIGlzIGFuIGludGVybmFsIGtlcm5lbCBkYXRhIHN0cnVjdHVyZSB1c2VkIGV4Y2x1c2l2ZWx5IGJ5IG1hYzgwMjExIFJYIGRlZnJhZ21lbnRhdGlvbiByb3V0aW5lcy4gYGVudHJ5LVx1MDAzZWV4dHJhX2xlbmAgaXMgZXhwbGljaXRseSBpbml0aWFsaXplZCB0byBgMGAgaW4gYGllZWU4MDIxMV9yZWFzc2VtYmxlX2FkZCgpYCwgYW5kIHRoZSBzdHJ1Y3QgaXMgbmV2ZXIgY29waWVkIHRvIHVzZXJzcGFjZSBvciBleHBvc2VkIHRvIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJlYWRzLiBUaGUgdW5kZXJseWluZyBpc3N1ZSBwcmV2ZW50ZWQgYnkgdGhpcyBwYXRjaCBpcyBhbiBpbnRlZ2VyIG92ZXJmbG93IHRoYXQgY291bGQgbGVhZCB0byBpbnN1ZmZpY2llbnQgU0tCIHJlYWxsb2NhdGlvbiAoc2tiIHRhaWxyb29tIGV4aGF1c3Rpb24gLyBvdXQtb2YtYm91bmRzIHdyaXRlcyksIHdoaWNoIGlzIGRldGVjdGVkIGJ5IEtBU0FOIGFuZCBzdGFuZGFyZCBrZXJuZWwgYXNzZXJ0aW9ucy4gVGhlcmUgaXMgbm8gcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSByZWFkcyBvciBpbmZvcm1hdGlvbiBsZWFrcywgc28gYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCB3YXJyYW50ZWQuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIHNlY3VyaXR5IGVuZ2luZWVyIHNwZWNpYWxpemluZyBpbiBrZXJuZWwgbWVtb3J5CmVycm9yIGRldGVjdG9ycyAoS0FTQU4gYW5kIEtNU0FOKS4gWW91ciBqb2IgaXMgdG8gcmV2aWV3IHRoZSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kCmRldGVybWluZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGp1c3RpZnkgc3Bhd25pbmcgYSBkZWRpY2F0ZWQgS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikKZnV6emluZyBzZXNzaW9uIGluIGFkZGl0aW9uIHRvIHN0YW5kYXJkIEtBU0FOIGZ1enppbmcuCgpDUklUSUNBTCBESVNUSU5DVElPTiBCRVRXRUVOIEtBU0FOIEFORCBLTVNBTjoKLSBTdGFuZGFyZCBLQVNBTiBrZXJuZWwgYnVpbGRzICh1cHN0cmVhbS1hcHBhcm1vci1rYXNhbi5jb25maWcpIGFscmVhZHkgZW5hYmxlCiAgYSBjb21wcmVoZW5zaXZlIHN1aXRlIG9mIGRlYnVnZ2luZyB0b29scyBhbmQgc2FuaXRpemVycywgaW5jbHVkaW5nIEtBU0FOCiAgKG91dC1vZi1ib3VuZHMgYWNjZXNzZXMsIHVzZS1hZnRlci1mcmVlLCBkb3VibGUgZnJlZSwgaW52YWxpZCBmcmVlKSwgTE9DS0RFUAogIChsb2NraW5nIGJ1Z3MgYW5kIGRlYWRsb2NrcyksIFVCLXNhbml0aXplcnMsIGFuZCBtZW1vcnkgY29ycnVwdGlvbiBjaGVja3MuCi0gS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikgZGV0ZWN0cyByZWFkcyBvZiBVTklOSVRJQUxJWkVEIG1lbW9yeSAoc3RhY2ssIGhlYXAsCiAgb3IgcGFnZSBhbGxvY2F0aW9ucykgYW5kIGtlcm5lbC10by11c2VyIG1lbW9yeSBpbmZvLWxlYWtzLgoKUnVsZTogVEhFUkUgSVMgTk8gU0VOU0UgSU4gUlVOTklORyBBIEtNU0FOIFNFU1NJT04gSUYgQSBCVUcgQ0FOIEJFIENBVUdIVCBCWSBLQVNBTiwKTE9DS0RFUCwgT1IgT1RIRVIgU1RBTkRBUkQgQlVHIERFVEVDVE9SUy4KQSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGluY3VycyBzaWduaWZpY2FudCByZXNvdXJjZSBjb3N0cy4gWW91IG11c3QgT05MWQpzZXQgTmVlZHNLTVNBTj10cnVlIGlmIHRoZSBjb2RlIGNoYW5nZXMgaW50cm9kdWNlIG9yIGV4cG9zZSBVTklOSVRJQUxJWkVEIE1FTU9SWSByaXNrcwp0aGF0IGFyZSBkZXRlY3RlZCBPTkxZIGJ5IEtNU0FOLgoKTG9vayBob2xpc3RpY2FsbHkgYXQgdGhlIHBhdGNoIHNlcmllcyBhbmQgc3Vycm91bmRpbmcgY29kZS4gRXZlbiBpZiBubyBkaXJlY3QKdW5pbml0aWFsaXplZCBmaWVsZCBhY2Nlc3NlcyBvciBuZXcgYnVmZmVyIGFsbG9jYXRpb25zIGFyZSBhZGRlZCBpbiB0aGUgZGlmZiBpdHNlbGYsCmEgcGF0Y2ggbWF5IGFsdGVyIGNvbnRyb2wgZmxvdywgYm91bmRzIGNoZWNraW5nLCBvciBkYXRhIGxlbmd0aCBjYWxjdWxhdGlvbnMgaW4gd2F5cwp0aGF0IGNoYW5nZSBob3cgdGhlIHJlc3Qgb2YgdGhlIGNvZGUgb3BlcmF0ZXMgb24gZXhpc3RpbmcgYnVmZmVycyAoZS5nLiBhbGxvd2luZwp1bmluaXRpYWxpemVkIHN0YWNrL2hlYXAgbWVtb3J5IHRvIGJlIHJlYWQsIGNvcGllZCB0byB1c2VyIHNwYWNlLCBvciB1c2VkIGluIGNvbnRyb2wKZmxvdykuIERvIG5vdCBoZXNpdGF0ZSB0byB1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlLApjYWxsZWQgZnVuY3Rpb25zLCBhbmQgY2FsbGVycy4KClNldCBOZWVkc0tNU0FOPXRydWUgT05MWSBJRiB0aGUgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllczoKMS4gS2VybmVsIHN0cnVjdHVyZXMgc2VudCB0byB1c2VyIHNwYWNlICh2aWEgY29weV90b191c2VyLCBwdXRfdXNlciwgbmV0bGluayBza2IKICAgYXR0cmlidXRlcywgaW9jdGwgb3V0cHV0IGFyZ3VtZW50cywgc29ja2V0IG9wdGlvbnMsIG9yIEJQRiBidWZmZXJzKSB3aGVyZSBmaWVsZHMKICAgb3Igc3RydWN0dXJlIHBhZGRpbmcgbWlnaHQgbm90IGJlIGZ1bGx5IGluaXRpYWxpemVkL3plcm9lZC4KMi4gQ29uZGl0aW9uYWwgbG9naWMgb3IgYnJhbmNoaW5nIHRoYXQgZGVwZW5kcyBvbiBwb3RlbnRpYWxseSB1bmluaXRpYWxpemVkIHZhcmlhYmxlcwogICBvciBzdHJ1Y3QgZmllbGRzLgozLiBBbGxvY2F0aW9uIG9yIGluaXRpYWxpemF0aW9uIG9mIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHdoZXJlIHVuaW5pdGlhbGl6ZWQgZmllbGRzCiAgIGNvdWxkIGJlIHJlYWQgbGF0ZXIgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMuCjQuIEJvdW5kcyBjaGVja3MsIGxlbmd0aHMsIG9yIGxvZ2ljIGluIGEgd2F5IHRoYXQgYWxsb3dzIHN1cnJvdW5kaW5nIGNvZGUgdG8gYWNjZXNzCiAgIHVuaW5pdGlhbGl6ZWQgYnl0ZXMgb2YgZXhpc3RpbmcgYnVmZmVycy4KClNldCBOZWVkc0tNU0FOPWZhbHNlIElGOgotIFRoZSBjb2RlIGNoYW5nZXMgcHJpbWFyaWx5IHJpc2sgb3V0LW9mLWJvdW5kcyBhY2Nlc3MsIGFycmF5IG92ZXJmbG93cywgTlVMTCBwb2ludGVyCiAgZGVyZWZlcmVuY2VzLCBsb2NraW5nIGRlYWRsb2Nrcywgb3IgdXNlLWFmdGVyLWZyZWUgYnVncyAodGhlc2UgYXJlIGFscmVhZHkgY2F1Z2h0CiAgYnkgS0FTQU4sIExPQ0tERVAsIG9yIHN0YW5kYXJkIGJ1ZyBkZXRlY3RvcnMpLgotIEFsbCBzdGFjay9oZWFwIHN0cnVjdHVyZXMgdG91Y2hlZCBvciBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBhcmUgZnVsbHkgemVyb2VkCiAgb3IgaW5pdGlhbGl6ZWQgKGUuZy4gdXNpbmcgPSB7MH0sIG1lbXNldCwga3phbGxvYykgYmVmb3JlIGJlaW5nIHJlYWQgb3IgY29waWVkLgotIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcy4KClVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUgaWYgbmVjZXNzYXJ5LCB0aGVuIHByb3ZpZGUKZGV0YWlsZWQgS01TQU5SZWFzb25pbmcgY29udHJhc3RpbmcgS0FTQU4gdnMgS01TQU4gYXBwbGljYWJpbGl0eSBmb3IgdGhpcyBwYXRjaC4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IGEyY2FmNTY0NGE3MTYwNjBlM2MzMmJmZjY1YmJmNTcyYzdiNTMwNTYKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgU2F0IEF1ZyAyOSAwNjowMjoxMiAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL25ldC9tYWM4MDIxMS9zdGFfaW5mby5oIGIvbmV0L21hYzgwMjExL3N0YV9pbmZvLmgKaW5kZXggZWUwZDMyODc3YzViNC4uMTEyYzMzM2ZiZTQ1YiAxMDA2NDQKLS0tIGEvbmV0L21hYzgwMjExL3N0YV9pbmZvLmgKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L21hYzgwMjExL3N0YV9pbmZvLmgKQEAgLTQ1OCw3ICYjNDM7NDU4LDcgQEAgc3RydWN0IGllZWU4MDIxMV9mcmFnbWVudF9lbnRyeSB7CiAJc3RydWN0IHNrX2J1ZmZfaGVhZCBza2JfbGlzdDsKIAl1bnNpZ25lZCBsb25nIGZpcnN0X2ZyYWdfdGltZTsKIAl1MTYgc2VxOwotCXUxNiBleHRyYV9sZW47CiYjNDM7CXVuc2lnbmVkIGludCBleHRyYV9sZW47CiAJdTE2IGxhc3RfZnJhZzsKIAl1OCByeF9xdWV1ZTsKIAl1OCBjaGVja19zZXF1ZW50aWFsX3BuOjEsIC8qIG5lZWRlZCBmb3IgQ0NNUC9HQ01QICovCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQ1LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yOSAwNjowNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMDkyCgkJCQkJCQlvdXRwdXQ6IDMxCgkJCQkJCQl0aG91Z2h0czogNzgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgc3VtbWFyeSwgYXMgSSYjMzk7ZCBhcHByb2FjaCB0aGlzIGFzIGFuIGV4cGVydDoKCioqRGl2aW5nIGludG8gdGhlIG5ldC9tYWM4MDIxMSBDb2RlYmFzZSoqCgpPa2F5LCB0aW1lIHRvIGdldCBhIGdyaXAgb24gdGhpcyBwYXRjaC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGltcGxpY2F0aW9ucyBvZiB0aGUgY2hhbmdlcyByZWxhdGVkIHRvIGBzdHJ1Y3QgaWVlZTgwMjExX2ZyYWdtZW50X2VudHJ5YCBhbmQsIHNwZWNpZmljYWxseSwgaG93IGBleHRyYV9sZW5gIGlzIHVzZWQgd2l0aGluIHRoYXQgY29udGV4dCBpbiB0aGUga2VybmVsJiMzOTtzIGBuZXQvbWFjODAyMTEvYCBzdWJzeXN0ZW0uIE15IHVzdWFsIGFwcHJvYWNoIGlzIHRvIGxldmVyYWdlIG15IHRvb2xpbmcgdG8gZWZmaWNpZW50bHkgbmF2aWdhdGUgdGhpcy4gSSYjMzk7bGwgbGF1bmNoIGBncmVwcGVyYCBhbmQgc2VhcmNoIGZvciBvY2N1cnJlbmNlcyBvZiBib3RoIGBleHRyYV9sZW5gIGFuZCBgc3RydWN0IGllZWU4MDIxMV9mcmFnbWVudF9lbnRyeWAgd2l0aGluIHRoZSBgbmV0L21hYzgwMjExL2AgZGlyZWN0b3J5LiBUaGlzIHNob3VsZCBnaXZlIG1lIGEgcXVpY2sgb3ZlcnZpZXcgb2YgdGhlIGNvZGUgdGhhdCYjMzk7cyBpbXBhY3RlZCBhbmQgd2hlcmUgdGhlc2UgZWxlbWVudHMgYXJlIGJlaW5nIG1hbmlwdWxhdGVkLiBGcm9tIHRoZXJlLCBJIGNhbiBiZWdpbiB0byBkcmF3IGNvbm5lY3Rpb25zIGFuZCB1bmRlcnN0YW5kIHRoZSBvdmVyYWxsIHBhdGNoIGNvbnRleHQuIFRoaXMgZm9jdXNlZCBzZWFyY2ggd2lsbCBhbGxvdyBtZSB0byBxdWlja2x5IGlkZW50aWZ5IHBvdGVudGlhbCBkZXBlbmRlbmNpZXMgYW5kIGludGVyYWN0aW9ucywgc2F2aW5nIG1lIHRpbWUgY29tcGFyZWQgdG8gYSBicm9hZGVyIHNlYXJjaC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40Ni8zPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjkgMDY6MDQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZXh0cmFfbGVuJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L21hYzgwMjExJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9tYWM4MDIxMS9pZWVlODAyMTFfaS5oPTI2ODU9dm9pZCBpZWVlODAyMTFfc2VuZF9hdXRoKHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLFxubmV0L21hYzgwMjExL2llZWU4MDIxMV9pLmgtMjY4Ni1cdFx0XHQgdTE2IHRyYW5zYWN0aW9uLCB1MTYgYXV0aF9hbGcsIHUxNiBzdGF0dXMsXG5uZXQvbWFjODAyMTEvaWVlZTgwMjExX2kuaDoyNjg3Olx0XHRcdCBjb25zdCB1OCAqZXh0cmEsIHNpemVfdCBleHRyYV9sZW4sIGNvbnN0IHU4ICpic3NpZCxcbm5ldC9tYWM4MDIxMS9pZWVlODAyMTFfaS5oLTI2ODgtXHRcdFx0IGNvbnN0IHU4ICpkYSwgY29uc3QgdTggKmtleSwgdTgga2V5X2xlbiwgdTgga2V5X2lkeCxcbi0tXG5uZXQvbWFjODAyMTEvcnguYz0yMjkzPWllZWU4MDIxMV9yZWFzc2VtYmxlX2FkZChzdHJ1Y3QgaWVlZTgwMjExX2ZyYWdtZW50X2NhY2hlICpjYWNoZSxcbi0tXG5uZXQvbWFjODAyMTEvcnguYy0yMzExLVx0ZW50cnktXHUwMDNlY2hlY2tfc2VxdWVudGlhbF9wbiA9IGZhbHNlO1xubmV0L21hYzgwMjExL3J4LmM6MjMxMjpcdGVudHJ5LVx1MDAzZWV4dHJhX2xlbiA9IDA7XG5uZXQvbWFjODAyMTEvcnguYy0yMzEzLVxuLS1cbm5ldC9tYWM4MDIxMS9yeC5jPTIzNzM9aWVlZTgwMjExX3J4X2hfZGVmcmFnbWVudChzdHJ1Y3QgaWVlZTgwMjExX3J4X2RhdGEgKnJ4KVxuLS1cbm5ldC9tYWM4MDIxMS9yeC5jLTI1MDMtXHRlbnRyeS1cdTAwM2VsYXN0X2ZyYWcgPSBmcmFnO1xubmV0L21hYzgwMjExL3J4LmM6MjUwNDpcdGVudHJ5LVx1MDAzZWV4dHJhX2xlbiAmIzQzOz0gcngtXHUwMDNlc2tiLVx1MDAzZWxlbjtcbm5ldC9tYWM4MDIxMS9yeC5jLTI1MDUtXHRpZiAoaWVlZTgwMjExX2hhc19tb3JlZnJhZ3MoZmMpKSB7XG4tLVxubmV0L21hYzgwMjExL3J4LmMtMjUxMC1cdHJ4LVx1MDAzZXNrYiA9IF9fc2tiX2RlcXVldWUoXHUwMDI2ZW50cnktXHUwMDNlc2tiX2xpc3QpO1xubmV0L21hYzgwMjExL3J4LmM6MjUxMTpcdGlmIChza2JfdGFpbHJvb20ocngtXHUwMDNlc2tiKSBcdTAwM2MgZW50cnktXHUwMDNlZXh0cmFfbGVuKSB7XG5uZXQvbWFjODAyMTEvcnguYy0yNTEyLVx0XHRJODAyX0RFQlVHX0lOQyhyeC1cdTAwM2Vsb2NhbC1cdTAwM2VyeF9leHBhbmRfc2tiX2hlYWRfZGVmcmFnKTtcbm5ldC9tYWM4MDIxMS9yeC5jOjI1MTM6XHRcdGlmICh1bmxpa2VseShwc2tiX2V4cGFuZF9oZWFkKHJ4LVx1MDAzZXNrYiwgMCwgZW50cnktXHUwMDNlZXh0cmFfbGVuLFxubmV0L21hYzgwMjExL3J4LmMtMjUxNC1cdFx0XHRcdFx0ICAgICAgR0ZQX0FUT01JQykpKSB7XG4tLVxubmV0L21hYzgwMjExL3N0YV9pbmZvLmg9NDU3PXN0cnVjdCBpZWVlODAyMTFfZnJhZ21lbnRfZW50cnkge1xuLS1cbm5ldC9tYWM4MDIxMS9zdGFfaW5mby5oLTQ2MC1cdHUxNiBzZXE7XG5uZXQvbWFjODAyMTEvc3RhX2luZm8uaDo0NjE6XHR1bnNpZ25lZCBpbnQgZXh0cmFfbGVuO1xubmV0L21hYzgwMjExL3N0YV9pbmZvLmgtNDYyLVx0dTE2IGxhc3RfZnJhZztcbi0tXG5uZXQvbWFjODAyMTEvdXRpbC5jPTExMzc9dm9pZCBpZWVlODAyMTFfc2VuZF9hdXRoKHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLFxubmV0L21hYzgwMjExL3V0aWwuYy0xMTM4LVx0XHRcdCB1MTYgdHJhbnNhY3Rpb24sIHUxNiBhdXRoX2FsZywgdTE2IHN0YXR1cyxcbm5ldC9tYWM4MDIxMS91dGlsLmM6MTEzOTpcdFx0XHQgY29uc3QgdTggKmV4dHJhLCBzaXplX3QgZXh0cmFfbGVuLCBjb25zdCB1OCAqZGEsXG5uZXQvbWFjODAyMTEvdXRpbC5jLTExNDAtXHRcdFx0IGNvbnN0IHU4ICpic3NpZCwgY29uc3QgdTggKmtleSwgdTgga2V5X2xlbiwgdTgga2V5X2lkeCxcbi0tXG5uZXQvbWFjODAyMTEvdXRpbC5jLTExNjQtXHRcdCAgICFjZmc4MDIxMV9maW5kX2V4dF9lbGVtKFdMQU5fRUlEX0VYVF9FSFRfTVVMVElfTElOSyxcbm5ldC9tYWM4MDIxMS91dGlsLmM6MTE2NTpcdFx0XHRcdFx0ICAgZXh0cmEsIGV4dHJhX2xlbikpO1xubmV0L21hYzgwMjExL3V0aWwuYy0xMTY2LVxuLS1cbm5ldC9tYWM4MDIxMS91dGlsLmMtMTE2OC1cdHNrYiA9IGRldl9hbGxvY19za2IobG9jYWwtXHUwMDNlaHcuZXh0cmFfdHhfaGVhZHJvb20gJiM0MzsgSUVFRTgwMjExX1dFUF9JVl9MRU4gJiM0Mztcbm5ldC9tYWM4MDIxMS91dGlsLmM6MTE2OTpcdFx0XHQgICAgMjQgJiM0MzsgNiAmIzQzOyBleHRyYV9sZW4gJiM0MzsgSUVFRTgwMjExX1dFUF9JQ1ZfTEVOICYjNDM7XG5uZXQvbWFjODAyMTEvdXRpbC5jLTExNzAtXHRcdFx0ICAgIGFkZF9tbGUgKiBzaXplb2YobWxlKSk7XG4tLVxubmV0L21hYzgwMjExL3V0aWwuYy0xMTg1LVx0aWYgKGV4dHJhKVxubmV0L21hYzgwMjExL3V0aWwuYzoxMTg2Olx0XHRza2JfcHV0X2RhdGEoc2tiLCBleHRyYSwgZXh0cmFfbGVuKTtcbm5ldC9tYWM4MDIxMS91dGlsLmMtMTE4Ny1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40Ny8zPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjkgMDY6MDQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzcyOAoJCQkJCQkJb3V0cHV0OiA0MQoJCQkJCQkJdGhvdWdodHM6IDQ2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHN1bW1hcnksIGFzIHRob3VnaCBJJiMzOTttIHRoaW5raW5nIHRocm91Z2ggdGhpcyBwcm9jZXNzOgoKKipEaXZpbmcgaW50byBtYWM4MDIxMSBSWCBEZWZyYW1lbnRhdGlvbioqCgpBbHJpZ2h0LCBsZXQmIzM5O3MgZ2V0IGludG8gdGhlIGRldGFpbHMgb2YgaG93IGBleHRyYV9sZW5gIGlzIGVtcGxveWVkIGR1cmluZyB0aGUgZGVmcmFnbWVudGF0aW9uIHByb2Nlc3Mgd2l0aGluIHRoZSBtYWM4MDIxMSBjb2RlLCBzcGVjaWZpY2FsbHkgaW4gYG5ldC9tYWM4MDIxMS9yeC5jYC4gSSYjMzk7bSBnb2luZyB0byBmb2N1cyBteSBhdHRlbnRpb24gb24gbGluZXMgMjI5MCB0aHJvdWdoIDI1NDAuIEkgd2FudCB0byBzZWUgcHJlY2lzZWx5IGhvdyB0aGlzIHZhcmlhYmxlIGlzIHVzZWQuIEkmIzM5O20gYXNzdW1pbmcgaXQgaGFzIGEgY3JpdGljYWwgcm9sZSBpbiBoYW5kbGluZyB0aGUgZnJhZ21lbnRlZCBwYWNrZXRzLCBidXQgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIG1lY2hhbmljcywgdGhlIG51YW5jZXMsIGFuZCBhbnkgcG90ZW50aWFsIGVkZ2UgY2FzZXMgdGhhdCBtaWdodCBiZSBoYW5kbGVkLiBJIHdpbGwgdHJhY2UgdGhlIHVzYWdlIHRvIHVuZGVyc3RhbmQgd2hhdCBzcGVjaWZpYyBkYXRhIGl0IHJlcHJlc2VudHMsIGhvdyBpdCBhZmZlY3RzIG1lbW9yeSBhbGxvY2F0aW9uIGFuZCBwYWNrZXQgcmVhc3NlbWJseS4gSSYjMzk7bSBsb29raW5nIGZvciB0aGUgbG9naWMgZmxvdywgdGhlIGVycm9yIGhhbmRsaW5nLCBhbmQgaG93IGBleHRyYV9sZW5gIGlzIGludGVncmF0ZWQgd2l0aCB0aGUgb3RoZXIgY3J1Y2lhbCB2YXJpYWJsZXMgYW5kIGZ1bmN0aW9ucyB3aXRoaW4gdGhhdCBmcmFnbWVudCBvZiBjb2RlLiBMZXQmIzM5O3Mgc2VlIGhvdyBzbWFydCB0aGlzIGlzIGRlc2lnbmVkLCBJJiMzOTttIGV4cGVjdGluZyBzb21lIHdlbGwtY3JhZnRlZCBsb2dpYyBoZXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQ4LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yOSAwNjowNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O25ldC9tYWM4MDIxMS9yeC5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMjI5MCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA2MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsyMjkwOlx0fVxuMjI5MTpcdFxuMjI5MjpcdHN0YXRpYyBpbmxpbmUgc3RydWN0IGllZWU4MDIxMV9mcmFnbWVudF9lbnRyeSAqXG4yMjkzOlx0aWVlZTgwMjExX3JlYXNzZW1ibGVfYWRkKHN0cnVjdCBpZWVlODAyMTFfZnJhZ21lbnRfY2FjaGUgKmNhY2hlLFxuMjI5NDpcdFx0XHRcdCB1bnNpZ25lZCBpbnQgZnJhZywgdW5zaWduZWQgaW50IHNlcSwgaW50IHJ4X3F1ZXVlLFxuMjI5NTpcdFx0XHRcdCBzdHJ1Y3Qgc2tfYnVmZiAqKnNrYilcbjIyOTY6XHR7XG4yMjk3Olx0XHRzdHJ1Y3QgaWVlZTgwMjExX2ZyYWdtZW50X2VudHJ5ICplbnRyeTtcbjIyOTg6XHRcbjIyOTk6XHRcdGVudHJ5ID0gXHUwMDI2Y2FjaGUtXHUwMDNlZW50cmllc1tjYWNoZS1cdTAwM2VuZXh0JiM0MzsmIzQzO107XG4yMzAwOlx0XHRpZiAoY2FjaGUtXHUwMDNlbmV4dCBcdTAwM2U9IElFRUU4MDIxMV9GUkFHTUVOVF9NQVgpXG4yMzAxOlx0XHRcdGNhY2hlLVx1MDAzZW5leHQgPSAwO1xuMjMwMjpcdFxuMjMwMzpcdFx0X19za2JfcXVldWVfcHVyZ2UoXHUwMDI2ZW50cnktXHUwMDNlc2tiX2xpc3QpO1xuMjMwNDpcdFxuMjMwNTpcdFx0X19za2JfcXVldWVfdGFpbChcdTAwMjZlbnRyeS1cdTAwM2Vza2JfbGlzdCwgKnNrYik7IC8qIG5vIG5lZWQgZm9yIGxvY2tpbmcgKi9cbjIzMDY6XHRcdCpza2IgPSBOVUxMO1xuMjMwNzpcdFx0ZW50cnktXHUwMDNlZmlyc3RfZnJhZ190aW1lID0gamlmZmllcztcbjIzMDg6XHRcdGVudHJ5LVx1MDAzZXNlcSA9IHNlcTtcbjIzMDk6XHRcdGVudHJ5LVx1MDAzZXJ4X3F1ZXVlID0gcnhfcXVldWU7XG4yMzEwOlx0XHRlbnRyeS1cdTAwM2VsYXN0X2ZyYWcgPSBmcmFnO1xuMjMxMTpcdFx0ZW50cnktXHUwMDNlY2hlY2tfc2VxdWVudGlhbF9wbiA9IGZhbHNlO1xuMjMxMjpcdFx0ZW50cnktXHUwMDNlZXh0cmFfbGVuID0gMDtcbjIzMTM6XHRcbjIzMTQ6XHRcdHJldHVybiBlbnRyeTtcbjIzMTU6XHR9XG4yMzE2Olx0XG4yMzE3Olx0c3RhdGljIGlubGluZSBzdHJ1Y3QgaWVlZTgwMjExX2ZyYWdtZW50X2VudHJ5ICpcbjIzMTg6XHRpZWVlODAyMTFfcmVhc3NlbWJsZV9maW5kKHN0cnVjdCBpZWVlODAyMTFfZnJhZ21lbnRfY2FjaGUgKmNhY2hlLFxuMjMxOTpcdFx0XHRcdCAgdW5zaWduZWQgaW50IGZyYWcsIHVuc2lnbmVkIGludCBzZXEsXG4yMzIwOlx0XHRcdFx0ICBpbnQgcnhfcXVldWUsIHN0cnVjdCBpZWVlODAyMTFfaGRyICpoZHIpXG4yMzIxOlx0e1xuMjMyMjpcdFx0c3RydWN0IGllZWU4MDIxMV9mcmFnbWVudF9lbnRyeSAqZW50cnk7XG4yMzIzOlx0XHRpbnQgaSwgaWR4O1xuMjMyNDpcdFxuMjMyNTpcdFx0aWR4ID0gY2FjaGUtXHUwMDNlbmV4dDtcbjIzMjY6XHRcdGZvciAoaSA9IDA7IGkgXHUwMDNjIElFRUU4MDIxMV9GUkFHTUVOVF9NQVg7IGkmIzQzOyYjNDM7KSB7XG4yMzI3Olx0XHRcdHN0cnVjdCBpZWVlODAyMTFfaGRyICpmX2hkcjtcbjIzMjg6XHRcdFx0c3RydWN0IHNrX2J1ZmYgKmZfc2tiO1xuMjMyOTpcdFxuMjMzMDpcdFx0XHRpZHgtLTtcbjIzMzE6XHRcdFx0aWYgKGlkeCBcdTAwM2MgMClcbjIzMzI6XHRcdFx0XHRpZHggPSBJRUVFODAyMTFfRlJBR01FTlRfTUFYIC0gMTtcbjIzMzM6XHRcbjIzMzQ6XHRcdFx0ZW50cnkgPSBcdTAwMjZjYWNoZS1cdTAwM2VlbnRyaWVzW2lkeF07XG4yMzM1Olx0XHRcdGlmIChza2JfcXVldWVfZW1wdHkoXHUwMDI2ZW50cnktXHUwMDNlc2tiX2xpc3QpIHx8IGVudHJ5LVx1MDAzZXNlcSAhPSBzZXEgfHxcbjIzMzY6XHRcdFx0ICAgIGVudHJ5LVx1MDAzZXJ4X3F1ZXVlICE9IHJ4X3F1ZXVlIHx8XG4yMzM3Olx0XHRcdCAgICBlbnRyeS1cdTAwM2VsYXN0X2ZyYWcgJiM0MzsgMSAhPSBmcmFnKVxuMjMzODpcdFx0XHRcdGNvbnRpbnVlO1xuMjMzOTpcdFxuMjM0MDpcdFx0XHRmX3NrYiA9IF9fc2tiX3BlZWsoXHUwMDI2ZW50cnktXHUwMDNlc2tiX2xpc3QpO1xuMjM0MTpcdFx0XHRmX2hkciA9IChzdHJ1Y3QgaWVlZTgwMjExX2hkciAqKSBmX3NrYi1cdTAwM2VkYXRhO1xuMjM0MjpcdFxuMjM0MzpcdFx0XHQvKlxuMjM0NDpcdFx0XHQgKiBDaGVjayBmdHlwZSBhbmQgYWRkcmVzc2VzIGFyZSBlcXVhbCwgZWxzZSBjaGVjayBuZXh0IGZyYWdtZW50XG4yMzQ1Olx0XHRcdCAqL1xuMjM0NjpcdFx0XHRpZiAoKChoZHItXHUwMDNlZnJhbWVfY29udHJvbCBeIGZfaGRyLVx1MDAzZWZyYW1lX2NvbnRyb2wpIFx1MDAyNlxuMjM0NzpcdFx0XHQgICAgIGNwdV90b19sZTE2KElFRUU4MDIxMV9GQ1RMX0ZUWVBFKSkgfHxcbjIzNDg6XHRcdFx0ICAgICFldGhlcl9hZGRyX2VxdWFsKGhkci1cdTAwM2VhZGRyMSwgZl9oZHItXHUwMDNlYWRkcjEpIHx8XG4yMzQ5Olx0XHRcdCAgICAhZXRoZXJfYWRkcl9lcXVhbChoZHItXHUwMDNlYWRkcjIsIGZfaGRyLVx1MDAzZWFkZHIyKSlcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40OS8zPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjkgMDY6MDQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTA2NwoJCQkJCQkJb3V0cHV0OiA0MQoJCQkJCQkJdGhvdWdodHM6IDMyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIGEgc3VtbWFyeSBvZiBteSBjdXJyZW50IHRob3VnaHQgcHJvY2VzcywgYXMgaWYgSSB3ZXJlIGFuYWx5emluZyB0aGUgY29kZToKCioqRGl2aW5nIGludG8gdGhlIE1BQzgwMjExIFJYIFBhdGgqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IGBuZXQvbWFjODAyMTEvcnguY2AsIHNwZWNpZmljYWxseSBhcm91bmQgbGluZXMgMjUwMCB0byAyNTQwLiBJIHdhbnQgdG8gemVybyBpbiBvbiBob3cgdGhpcyBzZWN0aW9uIG9mIHRoZSBjb2RlIGhhbmRsZXMgcmVjZWl2aW5nIHBhY2tldHMuIEdpdmVuIG15IGV4cGVydGlzZSwgSSYjMzk7bSBwcm9iYWJseSBsb29raW5nIGZvciBzb21ldGhpbmcgc3BlY2lmaWMg4oCTIG1heWJlIGEgcGFydGljdWxhcmx5IGNvbXBsZXggcHJvY2Vzc2luZyBzdGFnZSwgYSBwb3RlbnRpYWwgb3B0aW1pemF0aW9uIHBvaW50LCBvciBwZXJoYXBzIGEga25vd24gYXJlYSBvZiBjb250ZW50aW9uIG9yIGEgY29tbW9uIHNvdXJjZSBvZiBlcnJvci4gTXkgaW1tZWRpYXRlIGdvYWwgaXMgdG8gdW5kZXJzdGFuZCBwcmVjaXNlbHkgd2hhdCYjMzk7cyBoYXBwZW5pbmcgYXQgdGhpcyBwb2ludCBpbiB0aGUgcmVjZXB0aW9uIGZsb3cuIEkmIzM5O20gZm9jdXNpbmcgb24gdGhvc2Ugc3BlY2lmaWMgbGluZXMgdG8gdW5kZXJzdGFuZCB0aGUgaW50cmljYWNpZXMgaW52b2x2ZWQgaW4gaGFuZGxpbmcgaW5jb21pbmcgd2lyZWxlc3MgZGF0YS4gVGhpcyBpcyBvZnRlbiB3aGVyZSB0aGluZ3MgbGlrZSBmcmFtZSB2YWxpZGF0aW9uLCBkZWNyeXB0aW9uIChpZiBhcHBsaWNhYmxlKSwgYW5kIGluaXRpYWwgcHJvY2Vzc2luZyBvY2N1ci4gSSYjMzk7bGwgbGlrZWx5IGJlIGxvb2tpbmcgZm9yIGNvbmRpdGlvbmFsIHN0YXRlbWVudHMsIGZ1bmN0aW9uIGNhbGxzLCBhbmQgZGF0YSBzdHJ1Y3R1cmUgbWFuaXB1bGF0aW9ucyB0byBncmFzcCB0aGUgY29yZSBsb2dpYy4gVGhpcyBzaG91bGQgc2hlZCBsaWdodCBvbiBhbnkgaW50ZXJlc3RpbmcgaW50ZXJhY3Rpb25zIGJldHdlZW4gdGhlIHBoeXNpY2FsIGxheWVyIGFuZCB0aGUgaGlnaGVyIHByb3RvY29sIHN0YWNrcy4gTGV0JiMzOTtzIGRpZyBpbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41MC8zPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjkgMDY6MDQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtuZXQvbWFjODAyMTEvcnguYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDI0OTUsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNTAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7MjQ5NTpcdFx0fSBlbHNlIGlmIChlbnRyeS1cdTAwM2Vpc19wcm90ZWN0ZWQgXHUwMDI2XHUwMDI2IHJ4LVx1MDAzZWtleSBcdTAwMjZcdTAwMjZcbjI0OTY6XHRcdFx0ICAgZW50cnktXHUwMDNla2V5X2NvbG9yICE9IHJ4LVx1MDAzZWtleS1cdTAwM2Vjb2xvciBcdTAwMjZcdTAwMjZcbjI0OTc6XHRcdFx0ICAgKHN0YXR1cy1cdTAwM2VmbGFnIFx1MDAyNiBSWF9GTEFHX0RFQ1JZUFRFRCkpIHtcbjI0OTg6XHRcdFx0cmV0dXJuIFJYX0RST1BfVV9CQURfS0VZX0NPTE9SO1xuMjQ5OTpcdFx0fVxuMjUwMDpcdFxuMjUwMTpcdFx0c2tiX3B1bGwocngtXHUwMDNlc2tiLCBpZWVlODAyMTFfaGRybGVuKGZjKSk7XG4yNTAyOlx0XHRfX3NrYl9xdWV1ZV90YWlsKFx1MDAyNmVudHJ5LVx1MDAzZXNrYl9saXN0LCByeC1cdTAwM2Vza2IpO1xuMjUwMzpcdFx0ZW50cnktXHUwMDNlbGFzdF9mcmFnID0gZnJhZztcbjI1MDQ6XHRcdGVudHJ5LVx1MDAzZWV4dHJhX2xlbiAmIzQzOz0gcngtXHUwMDNlc2tiLVx1MDAzZWxlbjtcbjI1MDU6XHRcdGlmIChpZWVlODAyMTFfaGFzX21vcmVmcmFncyhmYykpIHtcbjI1MDY6XHRcdFx0cngtXHUwMDNlc2tiID0gTlVMTDtcbjI1MDc6XHRcdFx0cmV0dXJuIFJYX1FVRVVFRDtcbjI1MDg6XHRcdH1cbjI1MDk6XHRcbjI1MTA6XHRcdHJ4LVx1MDAzZXNrYiA9IF9fc2tiX2RlcXVldWUoXHUwMDI2ZW50cnktXHUwMDNlc2tiX2xpc3QpO1xuMjUxMTpcdFx0aWYgKHNrYl90YWlscm9vbShyeC1cdTAwM2Vza2IpIFx1MDAzYyBlbnRyeS1cdTAwM2VleHRyYV9sZW4pIHtcbjI1MTI6XHRcdFx0STgwMl9ERUJVR19JTkMocngtXHUwMDNlbG9jYWwtXHUwMDNlcnhfZXhwYW5kX3NrYl9oZWFkX2RlZnJhZyk7XG4yNTEzOlx0XHRcdGlmICh1bmxpa2VseShwc2tiX2V4cGFuZF9oZWFkKHJ4LVx1MDAzZXNrYiwgMCwgZW50cnktXHUwMDNlZXh0cmFfbGVuLFxuMjUxNDpcdFx0XHRcdFx0XHQgICAgICBHRlBfQVRPTUlDKSkpIHtcbjI1MTU6XHRcdFx0XHRJODAyX0RFQlVHX0lOQyhyeC1cdTAwM2Vsb2NhbC1cdTAwM2VyeF9oYW5kbGVyc19kcm9wX2RlZnJhZyk7XG4yNTE2Olx0XHRcdFx0X19za2JfcXVldWVfcHVyZ2UoXHUwMDI2ZW50cnktXHUwMDNlc2tiX2xpc3QpO1xuMjUxNzpcdFx0XHRcdHJldHVybiBSWF9EUk9QX1VfT09NO1xuMjUxODpcdFx0XHR9XG4yNTE5Olx0XHR9XG4yNTIwOlx0XHR3aGlsZSAoKHNrYiA9IF9fc2tiX2RlcXVldWUoXHUwMDI2ZW50cnktXHUwMDNlc2tiX2xpc3QpKSkge1xuMjUyMTpcdFx0XHRza2JfcHV0X2RhdGEocngtXHUwMDNlc2tiLCBza2ItXHUwMDNlZGF0YSwgc2tiLVx1MDAzZWxlbik7XG4yNTIyOlx0XHRcdGRldl9rZnJlZV9za2Ioc2tiKTtcbjI1MjM6XHRcdH1cbjI1MjQ6XHRcbjI1MjU6XHQgb3V0OlxuMjUyNjpcdFx0aWVlZTgwMjExX2xlZF9yeChyeC1cdTAwM2Vsb2NhbCk7XG4yNTI3Olx0XHRpZiAocngtXHUwMDNlc3RhKVxuMjUyODpcdFx0XHRyeC1cdTAwM2VsaW5rX3N0YS1cdTAwM2VyeF9zdGF0cy5wYWNrZXRzJiM0MzsmIzQzOztcbjI1Mjk6XHRcdHJldHVybiBSWF9DT05USU5VRTtcbjI1MzA6XHR9XG4yNTMxOlx0XG4yNTMyOlx0c3RhdGljIGludCBpZWVlODAyMTFfODAyXzF4X3BvcnRfY29udHJvbChzdHJ1Y3QgaWVlZTgwMjExX3J4X2RhdGEgKnJ4KVxuMjUzMzpcdHtcbjI1MzQ6XHRcdGlmICh1bmxpa2VseSghcngtXHUwMDNlc3RhIHx8ICF0ZXN0X3N0YV9mbGFnKHJ4LVx1MDAzZXN0YSwgV0xBTl9TVEFfQVVUSE9SSVpFRCkpKVxuMjUzNTpcdFx0XHRyZXR1cm4gLUVBQ0NFUztcbjI1MzY6XHRcbjI1Mzc6XHRcdHJldHVybiAwO1xuMjUzODpcdH1cbjI1Mzk6XHRcbjI1NDA6XHRzdGF0aWMgaW50IGllZWU4MDIxMV9kcm9wX3VuZW5jcnlwdGVkKHN0cnVjdCBpZWVlODAyMTFfcnhfZGF0YSAqcngsIF9fbGUxNiBmYylcbjI1NDE6XHR7XG4yNTQyOlx0XHRzdHJ1Y3Qgc2tfYnVmZiAqc2tiID0gcngtXHUwMDNlc2tiO1xuMjU0MzpcdFx0c3RydWN0IGllZWU4MDIxMV9yeF9zdGF0dXMgKnN0YXR1cyA9IElFRUU4MDIxMV9TS0JfUlhDQihza2IpO1xuMjU0NDpcdFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUxLzM8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yOSAwNjowNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2Mjg1CgkJCQkJCQlvdXRwdXQ6IDI1CgkJCQkJCQl0aG91Z2h0czogMzI2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIFBvdGVudGlhbCBJbnRlZ2VyIE92ZXJmbG93IFZ1bG5lcmFiaWxpdHkqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gTXkgaW5pdGlhbCBjb25jZXJuIGlzIHdpdGggdGhpcyBgZXh0cmFfbGVuYCBmaWVsZC4gSSBzZWUgdGhhdCBpdCB3YXMgcHJldmlvdXNseSBkZWZpbmVkIGFzIGEgYHUxNmAsIHdoaWNoIGlzIGEgMTYtYml0IHVuc2lnbmVkIGludGVnZXIuIFRoZSBjb2RlIHN1Z2dlc3RzIGl0JiMzOTtzIHVzZWQgdG8gYWNjdW11bGF0ZSB0aGUgbGVuZ3RoIG9mIHBhY2tldCBmcmFnbWVudHM6IGBlbnRyeS0mZ3Q7ZXh0cmFfbGVuICYjNDM7PSByeC0mZ3Q7c2tiLSZndDtsZW47YC4gTXkgZXhwZXJ0IGludHVpdGlvbiB0ZWxscyBtZSB0aGF0IHRoaXMgaXMgYSBjbGFzc2ljIHNjZW5hcmlvIGZvciBhbiBpbnRlZ2VyIG92ZXJmbG93IHZ1bG5lcmFiaWxpdHkuCgpJZiB0aGUgYWNjdW11bGF0ZWQgbGVuZ3RoLCBgcngtJmd0O3NrYi0mZ3Q7bGVuYCwgZXhjZWVkcyA2NTUzNSwgdGhlIGB1MTZgIHdpbGwgd3JhcCBhcm91bmQgdG8gYSBzbWFsbGVyIHZhbHVlLiBUaGlzIHRydW5jYXRpb24gaXMgdGhlIGNvcmUgb2YgdGhlIHByb2JsZW0uIFRoaXMgbWVhbnMgd2hlbiB0aGUgY29kZSBjaGVja3MgYHNrYl90YWlscm9vbShyeC0mZ3Q7c2tiKSAmbHQ7IGVudHJ5LSZndDtleHRyYV9sZW5gIG9yIGNhbGxzIGBwc2tiX2V4cGFuZF9oZWFkKC4uLiwgZW50cnktJmd0O2V4dHJhX2xlbilgLCBpdCBtaWdodCBiZSBvcGVyYXRpbmcgd2l0aCBhIHNpZ25pZmljYW50bHkgc21hbGxlciBgZW50cnktJmd0O2V4dHJhX2xlbmAgdGhhbiB0aGUgYWN0dWFsIHJlcXVpcmVkIGJ1ZmZlciBzaXplLgoKVGhlIGNvbnNlcXVlbmNlcyBhcmUgY2xlYXIuIFRoZSBleHBhbnNpb24gb2YgdGhlIHNrYiB3aWxsIGJlIGluc3VmZmljaWVudC4gVGhlIHN1YnNlcXVlbnQgYHNrYl9wdXRfZGF0YWAgZnVuY3Rpb24sIHdoaWNoIGNhbGxzIGBza2JfcHV0YCBhbmQgYG1lbWNweWAsIHdvdWxkIHRoZW4gd3JpdGUgcGFzdCB0aGUgYWxsb2NhdGVkIGJ1ZmZlciwgdHJpZ2dlcmluZyBhbiBTS0IgcGFuaWMsIGJ1ZmZlciBvdmVyZmxvdywgb3IgS0FTQU4gZGV0ZWN0aW9uIOKAkyB3aGljaCB3ZSBhYnNvbHV0ZWx5ICpkbyBub3QqIHdhbnQuCgpUaGUgZml4LCBjaGFuZ2luZyBgZXh0cmFfbGVuYCB0byBhbiBgdW5zaWduZWQgaW50YCwgaXMgdGhlIHJpZ2h0IGFwcHJvYWNoIGJlY2F1c2UgaXQgcHJldmVudHMgdGhlIGludGVnZXIgb3ZlcmZsb3cuCgpOb3csIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBwb3RlbnRpYWwgaW1wYWN0LiBJdCYjMzk7cyBjcnVjaWFsIHRvIGRldGVybWluZSBpZiBgc3RydWN0IGllZWU4MDIxMV9mcmFnbWVudF9lbnRyeWAgaXMgZXhwb3NlZCB0byB1c2Vyc3BhY2UsIG9yIGlmIHRoZXJlJiMzOTtzIGFueSBtZW1vcnkgaW5pdGlhbGl6YXRpb24gaXNzdWUuIElmIGl0JiMzOTtzIGV4cG9zZWQsIGEgY2FyZWZ1bGx5IGNyYWZ0ZWQgbWFsaWNpb3VzIHBhY2tldCBjb3VsZCBiZSBjb25zdHJ1Y3RlZCB0byB0cmlnZ2VyIHRoaXMgb3ZlcmZsb3cgYW5kIHBvdGVudGlhbGx5IGV4ZWN1dGUgYXJiaXRyYXJ5IGNvZGUuIEkmIzM5O20gZ29pbmcgdG8gc2VhcmNoIHRoZSBrZXJuZWwgY29kZSBmb3IgYHN0cnVjdCBpZWVlODAyMTFfZnJhZ21lbnRfZW50cnlgIHRvIGRldGVybWluZSB0aGUgc2NvcGUgb2YgdGhpcyBjaGFuZ2UuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NTIvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI5IDA2OjA0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2llZWU4MDIxMV9mcmFnbWVudF9lbnRyeSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbWFjODAyMTEvcnguYz0yMjg0PXZvaWQgaWVlZTgwMjExX2Rlc3Ryb3lfZnJhZ19jYWNoZShzdHJ1Y3QgaWVlZTgwMjExX2ZyYWdtZW50X2NhY2hlICpjYWNoZSlcbi0tXG5uZXQvbWFjODAyMTEvcnguYy0yMjkxLVxubmV0L21hYzgwMjExL3J4LmM6MjI5MjpzdGF0aWMgaW5saW5lIHN0cnVjdCBpZWVlODAyMTFfZnJhZ21lbnRfZW50cnkgKlxubmV0L21hYzgwMjExL3J4LmMtMjI5My1pZWVlODAyMTFfcmVhc3NlbWJsZV9hZGQoc3RydWN0IGllZWU4MDIxMV9mcmFnbWVudF9jYWNoZSAqY2FjaGUsXG4tLVxubmV0L21hYzgwMjExL3J4LmMtMjI5Ni17XG5uZXQvbWFjODAyMTEvcnguYzoyMjk3Olx0c3RydWN0IGllZWU4MDIxMV9mcmFnbWVudF9lbnRyeSAqZW50cnk7XG5uZXQvbWFjODAyMTEvcnguYy0yMjk4LVxuLS1cbm5ldC9tYWM4MDIxMS9yeC5jLTIzMTYtXG5uZXQvbWFjODAyMTEvcnguYzoyMzE3OnN0YXRpYyBpbmxpbmUgc3RydWN0IGllZWU4MDIxMV9mcmFnbWVudF9lbnRyeSAqXG5uZXQvbWFjODAyMTEvcnguYy0yMzE4LWllZWU4MDIxMV9yZWFzc2VtYmxlX2ZpbmQoc3RydWN0IGllZWU4MDIxMV9mcmFnbWVudF9jYWNoZSAqY2FjaGUsXG4tLVxubmV0L21hYzgwMjExL3J4LmMtMjMyMS17XG5uZXQvbWFjODAyMTEvcnguYzoyMzIyOlx0c3RydWN0IGllZWU4MDIxMV9mcmFnbWVudF9lbnRyeSAqZW50cnk7XG5uZXQvbWFjODAyMTEvcnguYy0yMzIzLVx0aW50IGksIGlkeDtcbi0tXG5uZXQvbWFjODAyMTEvcnguYz0yMzczPWllZWU4MDIxMV9yeF9oX2RlZnJhZ21lbnQoc3RydWN0IGllZWU4MDIxMV9yeF9kYXRhICpyeClcbi0tXG5uZXQvbWFjODAyMTEvcnguYy0yMzc5LVx0dW5zaWduZWQgaW50IGZyYWcsIHNlcTtcbm5ldC9tYWM4MDIxMS9yeC5jOjIzODA6XHRzdHJ1Y3QgaWVlZTgwMjExX2ZyYWdtZW50X2VudHJ5ICplbnRyeTtcbm5ldC9tYWM4MDIxMS9yeC5jLTIzODEtXHRzdHJ1Y3Qgc2tfYnVmZiAqc2tiO1xuLS1cbm5ldC9tYWM4MDIxMS9zdGFfaW5mby5oPTQzMj1zdHJ1Y3QgaWVlZTgwMjExX3N0YV9yeF9zdGF0cyB7XG4tLVxubmV0L21hYzgwMjExL3N0YV9pbmZvLmgtNDU2LVxubmV0L21hYzgwMjExL3N0YV9pbmZvLmg6NDU3OnN0cnVjdCBpZWVlODAyMTFfZnJhZ21lbnRfZW50cnkge1xubmV0L21hYzgwMjExL3N0YV9pbmZvLmgtNDU4LVx0c3RydWN0IHNrX2J1ZmZfaGVhZCBza2JfbGlzdDtcbi0tXG5uZXQvbWFjODAyMTEvc3RhX2luZm8uaD00NzA9c3RydWN0IGllZWU4MDIxMV9mcmFnbWVudF9jYWNoZSB7XG5uZXQvbWFjODAyMTEvc3RhX2luZm8uaDo0NzE6XHRzdHJ1Y3QgaWVlZTgwMjExX2ZyYWdtZW50X2VudHJ5XHRlbnRyaWVzW0lFRUU4MDIxMV9GUkFHTUVOVF9NQVhdO1xubmV0L21hYzgwMjExL3N0YV9pbmZvLmgtNDcyLVx0dW5zaWduZWQgaW50IG5leHQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NTMvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI5IDA2OjA0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDc4NDcKCQkJCQkJCW91dHB1dDogMjUKCQkJCQkJCXRob3VnaHRzOiAyNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBhIHN1bW1hcnkgb2YgbXkgdGhvdWdodCBwcm9jZXNzOgoKKipEaXZpbmcgaW50byBgaWVlZTgwMjExX2ZyYWdtZW50X2NhY2hlYCBJbml0aWFsaXphdGlvbioqCgpPa2F5LCB0aW1lIHRvIGdldCBteSBoYW5kcyBkaXJ0eSBhbmQgZGlnIGludG8gdGhlIGluaXRpYWxpemF0aW9uIGFuZCBhbGxvY2F0aW9uIG9mIHRoZSBgc3RydWN0IGllZWU4MDIxMV9mcmFnbWVudF9jYWNoZWAuIFRoaXMgaXMgYSBjcml0aWNhbCBkYXRhIHN0cnVjdHVyZSwgc28gdW5kZXJzdGFuZGluZyBob3cgaXQmIzM5O3MgY3JlYXRlZCBhbmQgbWFuYWdlZCBpcyBwYXJhbW91bnQuIEkgbmVlZCB0byB0cmFjZSB0aGUgY29kZSB0byBwaW5wb2ludCB3aGVyZSBhbmQgaG93IHRoaXMgc3RydWN0dXJlIGlzIGJyb3VnaHQgdG8gbGlmZS4gSSB3YW50IHRvIHNlZSBpZiBpdCYjMzk7cyBkeW5hbWljYWxseSBhbGxvY2F0ZWQsIHN0YXRpY2FsbHkgZGVjbGFyZWQsIHBhcnQgb2YgYSBsYXJnZXIgc3RydWN0dXJlLCBvciBhIGNvbWJpbmF0aW9uLiBUaGUgYWxsb2NhdGlvbiBzdHJhdGVneSBvZnRlbiByZXZlYWxzIGltcG9ydGFudCBpbnNpZ2h0cyBpbnRvIGl0cyB1c2FnZSBwYXR0ZXJucyBhbmQgcG90ZW50aWFsIHBlcmZvcm1hbmNlIGltcGxpY2F0aW9ucywgZXNwZWNpYWxseSBpbiBoaWdoLXRocm91Z2hwdXQgd2lyZWxlc3Mgc2NlbmFyaW9zLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpZiBpdCBpcyBsaW5rZWQgdG8gYW55IG90aGVyIHN0cnVjdHVyZXMgdGhhdCB3b3VsZCBhZmZlY3QgaG93IGl0JiMzOTtzIGluaXRpYWxpemVkLiBGcm9tIHRoaXMsIEkgc2hvdWxkIGJlIGFibGUgdG8gZ2V0IGEgYmV0dGVyIGZlZWwgb2YgaXRzIHJvbGUgaW4gdGhlIHN5c3RlbS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41NC8zPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjkgMDY6MDQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7aWVlZTgwMjExX2ZyYWdtZW50X2NhY2hlJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9tYWM4MDIxMS9pZWVlODAyMTFfaS5oPTExNTc9c3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSB7XG4tLVxubmV0L21hYzgwMjExL2llZWU4MDIxMV9pLmgtMTE3OC1cbm5ldC9tYWM4MDIxMS9pZWVlODAyMTFfaS5oOjExNzk6XHRzdHJ1Y3QgaWVlZTgwMjExX2ZyYWdtZW50X2NhY2hlIGZyYWdzO1xubmV0L21hYzgwMjExL2llZWU4MDIxMV9pLmgtMTE4MC1cbi0tXG5uZXQvbWFjODAyMTEvaWVlZTgwMjExX2kuaD0yOTQ0PXUzMiBpZWVlODAyMTFfY2FsY19leHBlY3RlZF90eF9haXJ0aW1lKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxuLS1cbm5ldC9tYWM4MDIxMS9pZWVlODAyMTFfaS5oLTI5NTMtXG5uZXQvbWFjODAyMTEvaWVlZTgwMjExX2kuaDoyOTU0OnZvaWQgaWVlZTgwMjExX2luaXRfZnJhZ19jYWNoZShzdHJ1Y3QgaWVlZTgwMjExX2ZyYWdtZW50X2NhY2hlICpjYWNoZSk7XG5uZXQvbWFjODAyMTEvaWVlZTgwMjExX2kuaDoyOTU1OnZvaWQgaWVlZTgwMjExX2Rlc3Ryb3lfZnJhZ19jYWNoZShzdHJ1Y3QgaWVlZTgwMjExX2ZyYWdtZW50X2NhY2hlICpjYWNoZSk7XG5uZXQvbWFjODAyMTEvaWVlZTgwMjExX2kuaC0yOTU2LVxuLS1cbm5ldC9tYWM4MDIxMS9yeC5jPTIwMzE9aWVlZTgwMjExX3J4X2hfZGVjcnlwdChzdHJ1Y3QgaWVlZTgwMjExX3J4X2RhdGEgKnJ4KVxuLS1cbm5ldC9tYWM4MDIxMS9yeC5jLTIyNzUtXG5uZXQvbWFjODAyMTEvcnguYzoyMjc2OnZvaWQgaWVlZTgwMjExX2luaXRfZnJhZ19jYWNoZShzdHJ1Y3QgaWVlZTgwMjExX2ZyYWdtZW50X2NhY2hlICpjYWNoZSlcbm5ldC9tYWM4MDIxMS9yeC5jLTIyNzcte1xuLS1cbm5ldC9tYWM4MDIxMS9yeC5jLTIyODMtXG5uZXQvbWFjODAyMTEvcnguYzoyMjg0OnZvaWQgaWVlZTgwMjExX2Rlc3Ryb3lfZnJhZ19jYWNoZShzdHJ1Y3QgaWVlZTgwMjExX2ZyYWdtZW50X2NhY2hlICpjYWNoZSlcbm5ldC9tYWM4MDIxMS9yeC5jLTIyODUte1xuLS1cbm5ldC9tYWM4MDIxMS9yeC5jPTIyOTI9c3RhdGljIGlubGluZSBzdHJ1Y3QgaWVlZTgwMjExX2ZyYWdtZW50X2VudHJ5ICpcbm5ldC9tYWM4MDIxMS9yeC5jOjIyOTM6aWVlZTgwMjExX3JlYXNzZW1ibGVfYWRkKHN0cnVjdCBpZWVlODAyMTFfZnJhZ21lbnRfY2FjaGUgKmNhY2hlLFxubmV0L21hYzgwMjExL3J4LmMtMjI5NC1cdFx0XHQgdW5zaWduZWQgaW50IGZyYWcsIHVuc2lnbmVkIGludCBzZXEsIGludCByeF9xdWV1ZSxcbi0tXG5uZXQvbWFjODAyMTEvcnguYz0yMzE3PXN0YXRpYyBpbmxpbmUgc3RydWN0IGllZWU4MDIxMV9mcmFnbWVudF9lbnRyeSAqXG5uZXQvbWFjODAyMTEvcnguYzoyMzE4OmllZWU4MDIxMV9yZWFzc2VtYmxlX2ZpbmQoc3RydWN0IGllZWU4MDIxMV9mcmFnbWVudF9jYWNoZSAqY2FjaGUsXG5uZXQvbWFjODAyMTEvcnguYy0yMzE5LVx0XHRcdCAgdW5zaWduZWQgaW50IGZyYWcsIHVuc2lnbmVkIGludCBzZXEsXG4tLVxubmV0L21hYzgwMjExL3J4LmM9MjM3Mz1pZWVlODAyMTFfcnhfaF9kZWZyYWdtZW50KHN0cnVjdCBpZWVlODAyMTFfcnhfZGF0YSAqcngpXG5uZXQvbWFjODAyMTEvcnguYy0yMzc0LXtcbm5ldC9tYWM4MDIxMS9yeC5jOjIzNzU6XHRzdHJ1Y3QgaWVlZTgwMjExX2ZyYWdtZW50X2NhY2hlICpjYWNoZSA9IFx1MDAyNnJ4LVx1MDAzZXNkYXRhLVx1MDAzZWZyYWdzO1xubmV0L21hYzgwMjExL3J4LmMtMjM3Ni1cdHN0cnVjdCBpZWVlODAyMTFfaGRyICpoZHI7XG4tLVxubmV0L21hYzgwMjExL3N0YV9pbmZvLmg9NDU3PXN0cnVjdCBpZWVlODAyMTFfZnJhZ21lbnRfZW50cnkge1xuLS1cbm5ldC9tYWM4MDIxMS9zdGFfaW5mby5oLTQ2OS1cbm5ldC9tYWM4MDIxMS9zdGFfaW5mby5oOjQ3MDpzdHJ1Y3QgaWVlZTgwMjExX2ZyYWdtZW50X2NhY2hlIHtcbm5ldC9tYWM4MDIxMS9zdGFfaW5mby5oLTQ3MS1cdHN0cnVjdCBpZWVlODAyMTFfZnJhZ21lbnRfZW50cnlcdGVudHJpZXNbSUVFRTgwMjExX0ZSQUdNRU5UX01BWF07XG4tLVxubmV0L21hYzgwMjExL3N0YV9pbmZvLmg9NzE1PXN0cnVjdCBzdGFfaW5mbyB7XG4tLVxubmV0L21hYzgwMjExL3N0YV9pbmZvLmgtNzgyLVxubmV0L21hYzgwMjExL3N0YV9pbmZvLmg6NzgzOlx0c3RydWN0IGllZWU4MDIxMV9mcmFnbWVudF9jYWNoZSBmcmFncztcbm5ldC9tYWM4MDIxMS9zdGFfaW5mby5oLTc4NC1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41NS8zPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjkgMDY6MDQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogOTMxNAoJCQkJCQkJb3V0cHV0OiA0MQoJCQkJCQkJdGhvdWdodHM6IDM0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgYXMgaWYgSSB3ZXJlIHRoaW5raW5nIGl0OgoKKipEaXZpbmcgaW50byB0aGUgRnJhZ21lbnQgQ2FjaGUgSW5pdGlhbGl6YXRpb24qKgoKT2theSwgdGltZSB0byBkaWcgaW50byB0aGUgaW50ZXJuYWxzLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlIGZyYWdtZW50IGNhY2hlIGlzIGluaXRpYWxpemVkIGluIG1hYzgwMjExLCBzcGVjaWZpY2FsbHkgZm9yIHJlY2VpdmUgb3BlcmF0aW9ucy4gTGV0JiMzOTtzIHN0YXJ0IGJ5IGxvb2tpbmcgYXQgYGllZWU4MDIxMV9pbml0X2ZyYWdfY2FjaGVgIHdpdGhpbiB0aGUgYG5ldC9tYWM4MDIxMS9yeC5jYCBmaWxlLiBJJiMzOTttIGFzc3VtaW5nIHRoaXMgaXMgd2hlcmUgdGhlIGNvcmUgc2V0dXAgZm9yIGhhbmRsaW5nIGZyYWdtZW50ZWQgcGFja2V0cyBvbiB0aGUgcmVjZWl2ZSBzaWRlIGlzIGRlZmluZWQuIEkgd2FudCB0byBzZWUgaG93IHRoZSBjYWNoZSBpdHNlbGYgaXMgc3RydWN0dXJlZCwgaG93IGl0JiMzOTtzIGFsbG9jYXRlZCwgd2hhdCB0aGUgaW5pdGlhbCBwYXJhbWV0ZXJzIGFyZSwgYW5kIGFueSBpbXBvcnRhbnQgaW5pdGlhbGl6YXRpb25zIG9yIGNoZWNrcyB0aGF0IGFyZSBoYXBwZW5pbmcgdGhlcmUuIFVuZGVyc3RhbmRpbmcgdGhpcyBmdW5jdGlvbiB3aWxsIGJlIGNydWNpYWwgZm9yIGZpZ3VyaW5nIG91dCBob3cgdGhlIE1BQyBoYW5kbGVzIHJlYXNzZW1ibHkuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NTYvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI5IDA2OjA0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7bmV0L21hYzgwMjExL3J4LmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAyMjcwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDI1Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OzIyNzA6XHRcdFx0Y2ZnODAyMTFfcnhfdW5wcm90X21sbWVfbWdtdChyeC1cdTAwM2VzZGF0YS1cdTAwM2VkZXYsXG4yMjcxOlx0XHRcdFx0XHRcdCAgICAgc2tiLVx1MDAzZWRhdGEsIHNrYi1cdTAwM2VsZW4pO1xuMjI3MjpcdFxuMjI3MzpcdFx0cmV0dXJuIHJlc3VsdDtcbjIyNzQ6XHR9XG4yMjc1Olx0XG4yMjc2Olx0dm9pZCBpZWVlODAyMTFfaW5pdF9mcmFnX2NhY2hlKHN0cnVjdCBpZWVlODAyMTFfZnJhZ21lbnRfY2FjaGUgKmNhY2hlKVxuMjI3NzpcdHtcbjIyNzg6XHRcdGludCBpO1xuMjI3OTpcdFxuMjI4MDpcdFx0Zm9yIChpID0gMDsgaSBcdTAwM2MgQVJSQVlfU0laRShjYWNoZS1cdTAwM2VlbnRyaWVzKTsgaSYjNDM7JiM0MzspXG4yMjgxOlx0XHRcdHNrYl9xdWV1ZV9oZWFkX2luaXQoXHUwMDI2Y2FjaGUtXHUwMDNlZW50cmllc1tpXS5za2JfbGlzdCk7XG4yMjgyOlx0fVxuMjI4MzpcdFxuMjI4NDpcdHZvaWQgaWVlZTgwMjExX2Rlc3Ryb3lfZnJhZ19jYWNoZShzdHJ1Y3QgaWVlZTgwMjExX2ZyYWdtZW50X2NhY2hlICpjYWNoZSlcbjIyODU6XHR7XG4yMjg2Olx0XHRpbnQgaTtcbjIyODc6XHRcbjIyODg6XHRcdGZvciAoaSA9IDA7IGkgXHUwMDNjIEFSUkFZX1NJWkUoY2FjaGUtXHUwMDNlZW50cmllcyk7IGkmIzQzOyYjNDM7KVxuMjI4OTpcdFx0XHRfX3NrYl9xdWV1ZV9wdXJnZShcdTAwMjZjYWNoZS1cdTAwM2VlbnRyaWVzW2ldLnNrYl9saXN0KTtcbjIyOTA6XHR9XG4yMjkxOlx0XG4yMjkyOlx0c3RhdGljIGlubGluZSBzdHJ1Y3QgaWVlZTgwMjExX2ZyYWdtZW50X2VudHJ5ICpcbjIyOTM6XHRpZWVlODAyMTFfcmVhc3NlbWJsZV9hZGQoc3RydWN0IGllZWU4MDIxMV9mcmFnbWVudF9jYWNoZSAqY2FjaGUsXG4yMjk0Olx0XHRcdFx0IHVuc2lnbmVkIGludCBmcmFnLCB1bnNpZ25lZCBpbnQgc2VxLCBpbnQgcnhfcXVldWUsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NTcvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI5IDA2OjA0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDk5OTMKCQkJCQkJCW91dHB1dDogMjQ2CgkJCQkJCQl0aG91Z2h0czogNDA0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgUGF0Y2ggZm9yIE1lbW9yeSBTYWZldHkqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIGRvd24gdGhpcyBwYXRjaC4gTXkgaW5pdGlhbCBhc3Nlc3NtZW50IGlzIHRoYXQgaXQgbG9va3MgbGlrZSBhIHN0cmFpZ2h0Zm9yd2FyZCBmaXggZm9yIGEgcG90ZW50aWFsIGludGVnZXIgb3ZlcmZsb3cgaXNzdWUgZHVyaW5nIDgwMi4xMSBkZWZyYWdtZW50YXRpb24uIFRoZSBjb21taXQmIzM5O3MgcHJpbWFyeSBjaGFuZ2UgaXMgd2lkZW5pbmcgYGV4dHJhX2xlbmAgZnJvbSBhIGB1MTZgIHRvIGFuIGB1bnNpZ25lZCBpbnRgIHdpdGhpbiB0aGUgYGllZWU4MDIxMV9mcmFnbWVudF9lbnRyeWAgc3RydWN0LgoKSSYjMzk7bSBub3RpbmcgdGhlIGxpZmVjeWNsZSBvZiBgZW50cnktJmd0O2V4dHJhX2xlbmA6IGl0JiMzOTtzIGluaXRpYWxpemVkIHRvIHplcm8gd2l0aGluIHRoZSBgaWVlZTgwMjExX3JlYXNzZW1ibGVfYWRkYCBmdW5jdGlvbiwgdXBkYXRlZCBieSBhZGRpbmcgdGhlIHJlY2VpdmVkIHBhY2tldCBsZW5ndGggKGByeC0mZ3Q7c2tiLSZndDtsZW5gKSwgYW5kIHRoZW4gdXNlZCB0byBjaGVjayBhdmFpbGFibGUgdGFpbHJvb20gaW4gdGhlIFNLQiBiZWZvcmUgYSBwb3NzaWJsZSBleHBhbnNpb24uCgpUaGlzIGBpZWVlODAyMTFfZnJhZ21lbnRfZW50cnlgIHN0cnVjdHVyZSBpcyBpbnRlcm5hbCB0byB0aGUgbWFjODAyMTEgcmVhc3NlbWJseSBwcm9jZXNzOyBpdOKAmXMgZW1iZWRkZWQgd2l0aGluIGBpZWVlODAyMTFfZnJhZ21lbnRfY2FjaGVgLCB3aGljaCBpdHNlbGYgbGl2ZXMgd2l0aGluIGBpZWVlODAyMTFfc3ViX2lmX2RhdGFgIGFuZCBgc3RhX2luZm9gLiBJbXBvcnRhbnRseSwgdGhpcyBkYXRhIGlzIG5ldmVyIGV4cG9zZWQgdG8gdXNlcnNwYWNlIOKAkyBubyBuZXRsaW5rLCBubyBpb2N0bC4gQWxzbywgdGhlIGluaXRpYWxpemF0aW9uIHRvIHplcm8gYmVmb3JlIHVzZSBpcyBhIGtleSBmYWN0b3IuCgpUaGUgZml4IGl0c2VsZiBpcyBkZXNpZ25lZCB0byBwcmV2ZW50IGludGVnZXIgdHJ1bmNhdGlvbiBvciBvdmVyZmxvdywgd2hpY2ggY291bGQgbGVhZCB0byBvdXQtb2YtYm91bmRzIHdyaXRlcyBvciBTS0IgaGVhZHJvb20vdGFpbHJvb20gcGFuaWNz4oCUY2xhc3NpYyBtZW1vcnkgY29ycnVwdGlvbiBpc3N1ZXMgdGhhdCBhcmUgdHlwaWNhbGx5IGNhdWdodCBieSBLQVNBTiBvciBhc3NlcnRpb25zLgoKTm93LCBjb25zaWRlcmluZyBLTVNBTiBzcGVjaWZpY2FsbHk6IEkgZG9uJiMzOTt0IHNlZSBhbnkgZXZpZGVuY2UgdGhhdCB0aGlzIHBhdGNoIGludHJvZHVjZXMsIGV4cG9zZXMsIG9yIGFsdGVycyB1bmluaXRpYWxpemVkIG1lbW9yeS4gYGV4dHJhX2xlbmAgaXMgZXhwbGljaXRseSBpbml0aWFsaXplZCwgYW5kIGFsbCBhY2Nlc3NlcyBhcmUgY29udHJvbGxlZCBhbmQgd2l0aGluIHRoZSBib3VuZHMgZGVmaW5lZCBieSB0aGUgaW50ZWdlciBzaXplLiBUaGVyZWZvcmUsIHRoZXJlJiMzOTtzIG5vIG5lZWQgdG8gZW5hYmxlIEtNU0FOIGhlcmUuCgpMZXQmIzM5O3MgZG8gYSBxdWljayBjaGVja2xpc3QgdG8gY29uZmlybSBteSBhc3Nlc3NtZW50LiBJIG5lZWQgdG8gbWFrZSBzdXJlOgoKKiAgIGBOZWVkc0tNU0FOYCBpcyBzZXQgdG8gZmFsc2UuCiogICBJIGNhbiBjbGVhcmx5IGFydGljdWxhdGUgdGhhdCBzdGFuZGFyZCBzYW5pdGl6ZXJzIGxpa2UgS0FTQU4gYXJlIHN1ZmZpY2llbnQsIGdpdmVuIHRoZSBidWcgaXMgcmVsYXRlZCB0byBpbnRlZ2VyIG92ZXJmbG93IGFuZCBidWZmZXIgc2l6aW5nIGR1cmluZyBkZWZyYWdtZW50YXRpb24sIG5vdCBhbiB1bmluaXRpYWxpemVkIG1lbW9yeSByZWFkIG9yIGluZm9ybWF0aW9uIGxlYWsuCiogICBGaW5hbGx5LCBJIG5lZWQgdG8gY2FsbCBgc2V0LXJlc3VsdHNgIHRvIHJlY29yZCB0aGlzIGFuYWx5c2lzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjU4LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yOSAwNjowNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBjaGFuZ2VzIHRoZSB0eXBlIG9mIGBleHRyYV9sZW5gIGluIGBzdHJ1Y3QgaWVlZTgwMjExX2ZyYWdtZW50X2VudHJ5YCBmcm9tIGB1MTZgIHRvIGB1bnNpZ25lZCBpbnRgIHRvIHByZXZlbnQgaW50ZWdlciBvdmVyZmxvdy90cnVuY2F0aW9uIHdoZW4gY2FsY3VsYXRpbmcgdGhlIHRvdGFsIGxlbmd0aCBvZiBmcmFnbWVudGVkIGZyYW1lcyBkdXJpbmcgSUVFRSA4MDIuMTEgZGVmcmFnbWVudGF0aW9uLlxuXG5gc3RydWN0IGllZWU4MDIxMV9mcmFnbWVudF9lbnRyeWAgaXMgYW4gaW50ZXJuYWwga2VybmVsIGRhdGEgc3RydWN0dXJlIHVzZWQgZXhjbHVzaXZlbHkgYnkgbWFjODAyMTEgUlggZGVmcmFnbWVudGF0aW9uIHJvdXRpbmVzLiBgZW50cnktXHUwMDNlZXh0cmFfbGVuYCBpcyBleHBsaWNpdGx5IGluaXRpYWxpemVkIHRvIGAwYCBpbiBgaWVlZTgwMjExX3JlYXNzZW1ibGVfYWRkKClgLCBhbmQgdGhlIHN0cnVjdCBpcyBuZXZlciBjb3BpZWQgdG8gdXNlcnNwYWNlIG9yIGV4cG9zZWQgdG8gdW5pbml0aWFsaXplZCBtZW1vcnkgcmVhZHMuIFRoZSB1bmRlcmx5aW5nIGlzc3VlIHByZXZlbnRlZCBieSB0aGlzIHBhdGNoIGlzIGFuIGludGVnZXIgb3ZlcmZsb3cgdGhhdCBjb3VsZCBsZWFkIHRvIGluc3VmZmljaWVudCBTS0IgcmVhbGxvY2F0aW9uIChza2IgdGFpbHJvb20gZXhoYXVzdGlvbiAvIG91dC1vZi1ib3VuZHMgd3JpdGVzKSwgd2hpY2ggaXMgZGV0ZWN0ZWQgYnkgS0FTQU4gYW5kIHN0YW5kYXJkIGtlcm5lbCBhc3NlcnRpb25zLiBUaGVyZSBpcyBubyByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJlYWRzIG9yIGluZm9ybWF0aW9uIGxlYWtzLCBzbyBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IHdhcnJhbnRlZC4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGNoYW5nZXMgdGhlIHR5cGUgb2YgYGV4dHJhX2xlbmAgaW4gYHN0cnVjdCBpZWVlODAyMTFfZnJhZ21lbnRfZW50cnlgIGZyb20gYHUxNmAgdG8gYHVuc2lnbmVkIGludGAgdG8gcHJldmVudCBpbnRlZ2VyIG92ZXJmbG93L3RydW5jYXRpb24gd2hlbiBjYWxjdWxhdGluZyB0aGUgdG90YWwgbGVuZ3RoIG9mIGZyYWdtZW50ZWQgZnJhbWVzIGR1cmluZyBJRUVFIDgwMi4xMSBkZWZyYWdtZW50YXRpb24uXG5cbmBzdHJ1Y3QgaWVlZTgwMjExX2ZyYWdtZW50X2VudHJ5YCBpcyBhbiBpbnRlcm5hbCBrZXJuZWwgZGF0YSBzdHJ1Y3R1cmUgdXNlZCBleGNsdXNpdmVseSBieSBtYWM4MDIxMSBSWCBkZWZyYWdtZW50YXRpb24gcm91dGluZXMuIGBlbnRyeS1cdTAwM2VleHRyYV9sZW5gIGlzIGV4cGxpY2l0bHkgaW5pdGlhbGl6ZWQgdG8gYDBgIGluIGBpZWVlODAyMTFfcmVhc3NlbWJsZV9hZGQoKWAsIGFuZCB0aGUgc3RydWN0IGlzIG5ldmVyIGNvcGllZCB0byB1c2Vyc3BhY2Ugb3IgZXhwb3NlZCB0byB1bmluaXRpYWxpemVkIG1lbW9yeSByZWFkcy4gVGhlIHVuZGVybHlpbmcgaXNzdWUgcHJldmVudGVkIGJ5IHRoaXMgcGF0Y2ggaXMgYW4gaW50ZWdlciBvdmVyZmxvdyB0aGF0IGNvdWxkIGxlYWQgdG8gaW5zdWZmaWNpZW50IFNLQiByZWFsbG9jYXRpb24gKHNrYiB0YWlscm9vbSBleGhhdXN0aW9uIC8gb3V0LW9mLWJvdW5kcyB3cml0ZXMpLCB3aGljaCBpcyBkZXRlY3RlZCBieSBLQVNBTiBhbmQgc3RhbmRhcmQga2VybmVsIGFzc2VydGlvbnMuIFRoZXJlIGlzIG5vIHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgcmVhZHMgb3IgaW5mb3JtYXRpb24gbGVha3MsIHNvIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3Qgd2FycmFudGVkLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOC0yOVQwNjowMjoxMy4zMDcxNjUxMDZaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxODM4NzQ5OTkwMjIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTUFDODAyMTFcIixcbiAgICBcIkNGRzgwMjExXCIsXG4gICAgXCJNQUM4MDIxMV9IV1NJTVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImllZWU4MDIxMV9yeF9saXN0XCIsXG4gICAgXCJpZWVlODAyMTFfcnhfbmFwaVwiLFxuICAgIFwiaWVlZTgwMjExX3J4X2lycXNhZmVcIlxuICBdLFxuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGNoYW5nZXMgdGhlIHR5cGUgb2YgYGV4dHJhX2xlbmAgaW4gYHN0cnVjdCBpZWVlODAyMTFfZnJhZ21lbnRfZW50cnlgIGZyb20gYHUxNmAgdG8gYHVuc2lnbmVkIGludGAgdG8gcHJldmVudCBpbnRlZ2VyIG92ZXJmbG93L3RydW5jYXRpb24gd2hlbiBjYWxjdWxhdGluZyB0aGUgdG90YWwgbGVuZ3RoIG9mIGZyYWdtZW50ZWQgZnJhbWVzIGR1cmluZyBJRUVFIDgwMi4xMSBkZWZyYWdtZW50YXRpb24uXFxuXFxuYHN0cnVjdCBpZWVlODAyMTFfZnJhZ21lbnRfZW50cnlgIGlzIGFuIGludGVybmFsIGtlcm5lbCBkYXRhIHN0cnVjdHVyZSB1c2VkIGV4Y2x1c2l2ZWx5IGJ5IG1hYzgwMjExIFJYIGRlZnJhZ21lbnRhdGlvbiByb3V0aW5lcy4gYGVudHJ5LVxcdTAwM2VleHRyYV9sZW5gIGlzIGV4cGxpY2l0bHkgaW5pdGlhbGl6ZWQgdG8gYDBgIGluIGBpZWVlODAyMTFfcmVhc3NlbWJsZV9hZGQoKWAsIGFuZCB0aGUgc3RydWN0IGlzIG5ldmVyIGNvcGllZCB0byB1c2Vyc3BhY2Ugb3IgZXhwb3NlZCB0byB1bmluaXRpYWxpemVkIG1lbW9yeSByZWFkcy4gVGhlIHVuZGVybHlpbmcgaXNzdWUgcHJldmVudGVkIGJ5IHRoaXMgcGF0Y2ggaXMgYW4gaW50ZWdlciBvdmVyZmxvdyB0aGF0IGNvdWxkIGxlYWQgdG8gaW5zdWZmaWNpZW50IFNLQiByZWFsbG9jYXRpb24gKHNrYiB0YWlscm9vbSBleGhhdXN0aW9uIC8gb3V0LW9mLWJvdW5kcyB3cml0ZXMpLCB3aGljaCBpcyBkZXRlY3RlZCBieSBLQVNBTiBhbmQgc3RhbmRhcmQga2VybmVsIGFzc2VydGlvbnMuIFRoZXJlIGlzIG5vIHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgcmVhZHMgb3IgaW5mb3JtYXRpb24gbGVha3MsIHNvIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3Qgd2FycmFudGVkLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2UsXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGNoYW5nZXMgYGV4dHJhX2xlbmAgaW4gYHN0cnVjdCBpZWVlODAyMTFfZnJhZ21lbnRfZW50cnlgIGZyb20gYHUxNmAgdG8gYHVuc2lnbmVkIGludGAgdG8gcHJldmVudCBpbnRlZ2VyIG92ZXJmbG93IGR1cmluZyA4MDIuMTEgZnJhZ21lbnQgcmVhc3NlbWJseSBpbiBtYWM4MDIxMSByeCBoYW5kbGluZy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGRpcmVjdGx5IGFmZmVjdGluZyBwYWNrZXQgcmVhc3NlbWJseSBhbmQgbWVtb3J5IG1hbmFnZW1lbnQgaW4gdGhlIHJlYWNoYWJsZSB3aXJlbGVzcyBuZXR3b3JraW5nIHN1YnN5c3RlbS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjlUMDY6MDI6MTMuMzA3MTcwMzk2WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozMjgxNjI4ODYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCBhMmNhZjU2NDRhNzE2MDYwZTNjMzJiZmY2NWJiZjU3MmM3YjUzMDU2XFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBTYXQgQXVnIDI5IDA2OjAyOjEyIDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL25ldC9tYWM4MDIxMS9zdGFfaW5mby5oIGIvbmV0L21hYzgwMjExL3N0YV9pbmZvLmhcXG5pbmRleCBlZTBkMzI4NzdjNWI0Li4xMTJjMzMzZmJlNDViIDEwMDY0NFxcbi0tLSBhL25ldC9tYWM4MDIxMS9zdGFfaW5mby5oXFxuKysrIGIvbmV0L21hYzgwMjExL3N0YV9pbmZvLmhcXG5AQCAtNDU4LDcgKzQ1OCw3IEBAIHN0cnVjdCBpZWVlODAyMTFfZnJhZ21lbnRfZW50cnkge1xcbiBcXHRzdHJ1Y3Qgc2tfYnVmZl9oZWFkIHNrYl9saXN0O1xcbiBcXHR1bnNpZ25lZCBsb25nIGZpcnN0X2ZyYWdfdGltZTtcXG4gXFx0dTE2IHNlcTtcXG4tXFx0dTE2IGV4dHJhX2xlbjtcXG4rXFx0dW5zaWduZWQgaW50IGV4dHJhX2xlbjtcXG4gXFx0dTE2IGxhc3RfZnJhZztcXG4gXFx0dTggcnhfcXVldWU7XFxuIFxcdHU4IGNoZWNrX3NlcXVlbnRpYWxfcG46MSwgLyogbmVlZGVkIGZvciBDQ01QL0dDTVAgKi9cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjlUMDY6MDI6MTMuNjM2MDE4NzEyWiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiY29yZSIsIkR1cmF0aW9uIjoxMjA4MzI1MDYxNzYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTUFDODAyMTFcIixcbiAgICBcIkNGRzgwMjExXCIsXG4gICAgXCJNQUM4MDIxMV9IV1NJTVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImllZWU4MDIxMV9yeF9saXN0XCIsXG4gICAgXCJpZWVlODAyMTFfcnhfbmFwaVwiLFxuICAgIFwiaWVlZTgwMjExX3J4X2lycXNhZmVcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBjaGFuZ2VzIGBleHRyYV9sZW5gIGluIGBzdHJ1Y3QgaWVlZTgwMjExX2ZyYWdtZW50X2VudHJ5YCBmcm9tIGB1MTZgIHRvIGB1bnNpZ25lZCBpbnRgIHRvIHByZXZlbnQgaW50ZWdlciBvdmVyZmxvdyBkdXJpbmcgODAyLjExIGZyYWdtZW50IHJlYXNzZW1ibHkgaW4gbWFjODAyMTEgcnggaGFuZGxpbmcuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBkaXJlY3RseSBhZmZlY3RpbmcgcGFja2V0IHJlYXNzZW1ibHkgYW5kIG1lbW9yeSBtYW5hZ2VtZW50IGluIHRoZSByZWFjaGFibGUgd2lyZWxlc3MgbmV0d29ya2luZyBzdWJzeXN0ZW0uXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpXG4gIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zXG4gICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgQWxzbyBjaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3NcbiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlnc1xuICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IGEyY2FmNTY0NGE3MTYwNjBlM2MzMmJmZjY1YmJmNTcyYzdiNTMwNTZcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgU2F0IEF1ZyAyOSAwNjowMjoxMiAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL25ldC9tYWM4MDIxMS9zdGFfaW5mby5oIGIvbmV0L21hYzgwMjExL3N0YV9pbmZvLmhcbmluZGV4IGVlMGQzMjg3N2M1YjQuLjExMmMzMzNmYmU0NWIgMTAwNjQ0XG4tLS0gYS9uZXQvbWFjODAyMTEvc3RhX2luZm8uaFxuKysrIGIvbmV0L21hYzgwMjExL3N0YV9pbmZvLmhcbkBAIC00NTgsNyArNDU4LDcgQEAgc3RydWN0IGllZWU4MDIxMV9mcmFnbWVudF9lbnRyeSB7XG4gXHRzdHJ1Y3Qgc2tfYnVmZl9oZWFkIHNrYl9saXN0O1xuIFx0dW5zaWduZWQgbG9uZyBmaXJzdF9mcmFnX3RpbWU7XG4gXHR1MTYgc2VxO1xuLVx0dTE2IGV4dHJhX2xlbjtcbitcdHVuc2lnbmVkIGludCBleHRyYV9sZW47XG4gXHR1MTYgbGFzdF9mcmFnO1xuIFx0dTggcnhfcXVldWU7XG4gXHR1OCBjaGVja19zZXF1ZW50aWFsX3BuOjEsIC8qIG5lZWRlZCBmb3IgQ0NNUC9HQ01QICovXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yOVQwNjowMjoxMy42MzYwMjAzNTJaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo2NDM5MjI5MjU4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKlJldmlld2luZyB0aGUgbWFjODAyMTEgUGF0Y2gqKlxuXG5Pa2F5LCBoZXJlIHdlIGdvLiBUaGUgdXNlciB3YW50cyBtZSB0byB0YWtlIGEgbG9vayBhdCBhIHBhdGNoIHRoYXQgdG91Y2hlcyBgbmV0L21hYzgwMjExL3N0YV9pbmZvLmhgLiBBbHJpZ2h0LCBsZXQncyBwdWxsIHVwIHRoZSBkaWZmLiBMb29rcyBsaWtlIHRoZXkndmUgY2hhbmdlZCBgc3RydWN0IGllZWU4MDIxMV9mcmFnbWVudF9lbnRyeWAsIHNwZWNpZmljYWxseSB0aGUgYGV4dHJhX2xlbmAgZmllbGQuIEl0J3MgYmVlbiBidW1wZWQgZnJvbSBhIGB1MTZgIHRvIGFuIGB1bnNpZ25lZCBpbnRgLiBJbnRlcmVzdGluZy5cblxuTm93LCBiZWZvcmUgSSBzaWduIG9mZiBvbiB0aGlzLCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgaW1wbGljYXRpb25zIG9mIHRoaXMgY2hhbmdlLiBXaHkgdGhlIGluY3JlYXNlZCBzaXplPyBJcyB0aGlzIGEgbmVjZXNzYXJ5IGFkanVzdG1lbnQgdG8gYWNjb21tb2RhdGUgc29tZXRoaW5nPyBMZXQncyB0cmFjZSB0aGlzLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGVyZSBgaWVlZTgwMjExX2ZyYWdtZW50X2VudHJ5YCBhbmQsIG1vcmUgaW1wb3J0YW50bHksIGhvdyBgZXh0cmFfbGVuYCBhcmUgYWN0dWFsbHkgKnVzZWQqIHdpdGhpbiB0aGUgYG5ldC9tYWM4MDIxMWAgc3Vic3lzdGVtLiBUaW1lIHRvIGZpcmUgdXAgYGdyZXBwZXJgIGFuZCBnZXQgYSBjbGVhciBwaWN0dXJlIG9mIGl0cyB1c2FnZSBjb250ZXh0LiBJIG5lZWQgdG8gbWFrZSBzdXJlIHRoaXMgZG9lc24ndCBpbnRyb2R1Y2UgYW55IHVuZm9yZXNlZW4gaXNzdWVzIG9yIHBvdGVudGlhbCByZWdyZXNzaW9ucy5cblxuXG4iLCJJbnB1dFRva2VucyI6MjA5NSwiT3V0cHV0VG9rZW5zIjozMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjExNSwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI5VDA2OjAyOjIwLjA3NTI1NTY3WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ5NzQzOTY4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImV4dHJhX2xlblwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvbWFjODAyMTFcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L21hYzgwMjExL2llZWU4MDIxMV9pLmg9MjY4NT12b2lkIGllZWU4MDIxMV9zZW5kX2F1dGgoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsXFxubmV0L21hYzgwMjExL2llZWU4MDIxMV9pLmgtMjY4Ni1cXHRcXHRcXHQgdTE2IHRyYW5zYWN0aW9uLCB1MTYgYXV0aF9hbGcsIHUxNiBzdGF0dXMsXFxubmV0L21hYzgwMjExL2llZWU4MDIxMV9pLmg6MjY4NzpcXHRcXHRcXHQgY29uc3QgdTggKmV4dHJhLCBzaXplX3QgZXh0cmFfbGVuLCBjb25zdCB1OCAqYnNzaWQsXFxubmV0L21hYzgwMjExL2llZWU4MDIxMV9pLmgtMjY4OC1cXHRcXHRcXHQgY29uc3QgdTggKmRhLCBjb25zdCB1OCAqa2V5LCB1OCBrZXlfbGVuLCB1OCBrZXlfaWR4LFxcbi0tXFxubmV0L21hYzgwMjExL3J4LmM9MjI5Mz1pZWVlODAyMTFfcmVhc3NlbWJsZV9hZGQoc3RydWN0IGllZWU4MDIxMV9mcmFnbWVudF9jYWNoZSAqY2FjaGUsXFxuLS1cXG5uZXQvbWFjODAyMTEvcnguYy0yMzExLVxcdGVudHJ5LVxcdTAwM2VjaGVja19zZXF1ZW50aWFsX3BuID0gZmFsc2U7XFxubmV0L21hYzgwMjExL3J4LmM6MjMxMjpcXHRlbnRyeS1cXHUwMDNlZXh0cmFfbGVuID0gMDtcXG5uZXQvbWFjODAyMTEvcnguYy0yMzEzLVxcbi0tXFxubmV0L21hYzgwMjExL3J4LmM9MjM3Mz1pZWVlODAyMTFfcnhfaF9kZWZyYWdtZW50KHN0cnVjdCBpZWVlODAyMTFfcnhfZGF0YSAqcngpXFxuLS1cXG5uZXQvbWFjODAyMTEvcnguYy0yNTAzLVxcdGVudHJ5LVxcdTAwM2VsYXN0X2ZyYWcgPSBmcmFnO1xcbm5ldC9tYWM4MDIxMS9yeC5jOjI1MDQ6XFx0ZW50cnktXFx1MDAzZWV4dHJhX2xlbiArPSByeC1cXHUwMDNlc2tiLVxcdTAwM2VsZW47XFxubmV0L21hYzgwMjExL3J4LmMtMjUwNS1cXHRpZiAoaWVlZTgwMjExX2hhc19tb3JlZnJhZ3MoZmMpKSB7XFxuLS1cXG5uZXQvbWFjODAyMTEvcnguYy0yNTEwLVxcdHJ4LVxcdTAwM2Vza2IgPSBfX3NrYl9kZXF1ZXVlKFxcdTAwMjZlbnRyeS1cXHUwMDNlc2tiX2xpc3QpO1xcbm5ldC9tYWM4MDIxMS9yeC5jOjI1MTE6XFx0aWYgKHNrYl90YWlscm9vbShyeC1cXHUwMDNlc2tiKSBcXHUwMDNjIGVudHJ5LVxcdTAwM2VleHRyYV9sZW4pIHtcXG5uZXQvbWFjODAyMTEvcnguYy0yNTEyLVxcdFxcdEk4MDJfREVCVUdfSU5DKHJ4LVxcdTAwM2Vsb2NhbC1cXHUwMDNlcnhfZXhwYW5kX3NrYl9oZWFkX2RlZnJhZyk7XFxubmV0L21hYzgwMjExL3J4LmM6MjUxMzpcXHRcXHRpZiAodW5saWtlbHkocHNrYl9leHBhbmRfaGVhZChyeC1cXHUwMDNlc2tiLCAwLCBlbnRyeS1cXHUwMDNlZXh0cmFfbGVuLFxcbm5ldC9tYWM4MDIxMS9yeC5jLTI1MTQtXFx0XFx0XFx0XFx0XFx0ICAgICAgR0ZQX0FUT01JQykpKSB7XFxuLS1cXG5uZXQvbWFjODAyMTEvc3RhX2luZm8uaD00NTc9c3RydWN0IGllZWU4MDIxMV9mcmFnbWVudF9lbnRyeSB7XFxuLS1cXG5uZXQvbWFjODAyMTEvc3RhX2luZm8uaC00NjAtXFx0dTE2IHNlcTtcXG5uZXQvbWFjODAyMTEvc3RhX2luZm8uaDo0NjE6XFx0dW5zaWduZWQgaW50IGV4dHJhX2xlbjtcXG5uZXQvbWFjODAyMTEvc3RhX2luZm8uaC00NjItXFx0dTE2IGxhc3RfZnJhZztcXG4tLVxcbm5ldC9tYWM4MDIxMS91dGlsLmM9MTEzNz12b2lkIGllZWU4MDIxMV9zZW5kX2F1dGgoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsXFxubmV0L21hYzgwMjExL3V0aWwuYy0xMTM4LVxcdFxcdFxcdCB1MTYgdHJhbnNhY3Rpb24sIHUxNiBhdXRoX2FsZywgdTE2IHN0YXR1cyxcXG5uZXQvbWFjODAyMTEvdXRpbC5jOjExMzk6XFx0XFx0XFx0IGNvbnN0IHU4ICpleHRyYSwgc2l6ZV90IGV4dHJhX2xlbiwgY29uc3QgdTggKmRhLFxcbm5ldC9tYWM4MDIxMS91dGlsLmMtMTE0MC1cXHRcXHRcXHQgY29uc3QgdTggKmJzc2lkLCBjb25zdCB1OCAqa2V5LCB1OCBrZXlfbGVuLCB1OCBrZXlfaWR4LFxcbi0tXFxubmV0L21hYzgwMjExL3V0aWwuYy0xMTY0LVxcdFxcdCAgICFjZmc4MDIxMV9maW5kX2V4dF9lbGVtKFdMQU5fRUlEX0VYVF9FSFRfTVVMVElfTElOSyxcXG5uZXQvbWFjODAyMTEvdXRpbC5jOjExNjU6XFx0XFx0XFx0XFx0XFx0ICAgZXh0cmEsIGV4dHJhX2xlbikpO1xcbm5ldC9tYWM4MDIxMS91dGlsLmMtMTE2Ni1cXG4tLVxcbm5ldC9tYWM4MDIxMS91dGlsLmMtMTE2OC1cXHRza2IgPSBkZXZfYWxsb2Nfc2tiKGxvY2FsLVxcdTAwM2Vody5leHRyYV90eF9oZWFkcm9vbSArIElFRUU4MDIxMV9XRVBfSVZfTEVOICtcXG5uZXQvbWFjODAyMTEvdXRpbC5jOjExNjk6XFx0XFx0XFx0ICAgIDI0ICsgNiArIGV4dHJhX2xlbiArIElFRUU4MDIxMV9XRVBfSUNWX0xFTiArXFxubmV0L21hYzgwMjExL3V0aWwuYy0xMTcwLVxcdFxcdFxcdCAgICBhZGRfbWxlICogc2l6ZW9mKG1sZSkpO1xcbi0tXFxubmV0L21hYzgwMjExL3V0aWwuYy0xMTg1LVxcdGlmIChleHRyYSlcXG5uZXQvbWFjODAyMTEvdXRpbC5jOjExODY6XFx0XFx0c2tiX3B1dF9kYXRhKHNrYiwgZXh0cmEsIGV4dHJhX2xlbik7XFxubmV0L21hYzgwMjExL3V0aWwuYy0xMTg3LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yOVQwNjowMjoyMC4xMjUwMDQ1NzhaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo2NDEwMjQwNTg4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZSBvbiB0aGUgdGhvdWdodCBwcm9jZXNzLCBhcyByZXF1ZXN0ZWQ6XG5cbioqRGl2aW5nIGludG8gdGhlIE1BQzgwMjExIFJYIFBhdGgqKlxuXG5Pa2F5LCB0aW1lIHRvIGdldCBteSBoYW5kcyBkaXJ0eS4gSSdtIGdvaW5nIHRvIGRpZyBpbnRvIHRoZSBgbmV0L21hYzgwMjExL3J4LmNgIGZpbGUuIFNwZWNpZmljYWxseSwgSSBuZWVkIHRvIGdldCBhIGhhbmRsZSBvbiB3aGF0J3MgaGFwcGVuaW5nIGFyb3VuZCBsaW5lcyAyNDkwIHRvIDI1NDAuIFRoYXQncyBhIGNyaXRpY2FsIHNlY3Rpb24gb2YgdGhlIHJlY2VpdmUgcGF0aCwgYW5kIEknbSBiZXR0aW5nIGl0J3Mgd2hlcmUgYSBwYXJ0aWN1bGFyIHBpZWNlIG9mIGZ1bmN0aW9uYWxpdHkgaXMgaGFuZGxlZCB0aGF0J3MgYmVlbiBuYWdnaW5nIGF0IG1lLiBJJ3ZlIGdvdCBhIGh1bmNoLCBidXQgSSBuZWVkIHRvIGNvbmZpcm0gaXQgd2l0aCB0aGUgY29kZS4gTGV0J3Mgc2VlIGlmIG15IHVuZGVyc3RhbmRpbmcgb2YgdGhlIHJlY2VpdmUgcHJvY2VzcyBpcyBhY2N1cmF0ZSwgb3IgaWYgSSBuZWVkIHRvIGFkanVzdCBteSBtZW50YWwgbW9kZWwgYmFzZWQgb24gd2hhdCB0aGUgc291cmNlIGNvZGUgcmV2ZWFscy4gVGltZSB0byBwdXQgb24gbXkgZGVidWdnaW5nIGhhdCBhbmQgZ2V0IHRvIHdvcmsuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM3NzIsIk91dHB1dFRva2VucyI6NDEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yOVQwNjowMjoyNi41MzUyNDc5NTZaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNTE2NzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwibmV0L21hYzgwMjExL3J4LmNcIixcbiAgXCJGaXJzdExpbmVcIjogMjQ5MCxcbiAgXCJMaW5lQ291bnRcIjogNTBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiMjQ5MDpcXHRcXHRcXHQvKiBEcm9wIHRoaXMgYXMgYSBtaXhlZCBrZXkgb3IgZnJhZ21lbnQgY2FjaGUgYXR0YWNrLCBldmVuXFxuMjQ5MTpcXHRcXHRcXHQgKiBpZiBmb3IgVEtJUCBNaWNoYWVsIE1JQyBzaG91bGQgcHJvdGVjdCB1cywgYW5kIFdFUCBpcyBhXFxuMjQ5MjpcXHRcXHRcXHQgKiBsb3N0IGNhdXNlIGFueXdheS5cXG4yNDkzOlxcdFxcdFxcdCAqL1xcbjI0OTQ6XFx0XFx0XFx0cmV0dXJuIFJYX0RST1BfVV9FWFBFQ1RfREVGUkFHX1BST1Q7XFxuMjQ5NTpcXHRcXHR9IGVsc2UgaWYgKGVudHJ5LVxcdTAwM2Vpc19wcm90ZWN0ZWQgXFx1MDAyNlxcdTAwMjYgcngtXFx1MDAzZWtleSBcXHUwMDI2XFx1MDAyNlxcbjI0OTY6XFx0XFx0XFx0ICAgZW50cnktXFx1MDAzZWtleV9jb2xvciAhPSByeC1cXHUwMDNla2V5LVxcdTAwM2Vjb2xvciBcXHUwMDI2XFx1MDAyNlxcbjI0OTc6XFx0XFx0XFx0ICAgKHN0YXR1cy1cXHUwMDNlZmxhZyBcXHUwMDI2IFJYX0ZMQUdfREVDUllQVEVEKSkge1xcbjI0OTg6XFx0XFx0XFx0cmV0dXJuIFJYX0RST1BfVV9CQURfS0VZX0NPTE9SO1xcbjI0OTk6XFx0XFx0fVxcbjI1MDA6XFx0XFxuMjUwMTpcXHRcXHRza2JfcHVsbChyeC1cXHUwMDNlc2tiLCBpZWVlODAyMTFfaGRybGVuKGZjKSk7XFxuMjUwMjpcXHRcXHRfX3NrYl9xdWV1ZV90YWlsKFxcdTAwMjZlbnRyeS1cXHUwMDNlc2tiX2xpc3QsIHJ4LVxcdTAwM2Vza2IpO1xcbjI1MDM6XFx0XFx0ZW50cnktXFx1MDAzZWxhc3RfZnJhZyA9IGZyYWc7XFxuMjUwNDpcXHRcXHRlbnRyeS1cXHUwMDNlZXh0cmFfbGVuICs9IHJ4LVxcdTAwM2Vza2ItXFx1MDAzZWxlbjtcXG4yNTA1OlxcdFxcdGlmIChpZWVlODAyMTFfaGFzX21vcmVmcmFncyhmYykpIHtcXG4yNTA2OlxcdFxcdFxcdHJ4LVxcdTAwM2Vza2IgPSBOVUxMO1xcbjI1MDc6XFx0XFx0XFx0cmV0dXJuIFJYX1FVRVVFRDtcXG4yNTA4OlxcdFxcdH1cXG4yNTA5OlxcdFxcbjI1MTA6XFx0XFx0cngtXFx1MDAzZXNrYiA9IF9fc2tiX2RlcXVldWUoXFx1MDAyNmVudHJ5LVxcdTAwM2Vza2JfbGlzdCk7XFxuMjUxMTpcXHRcXHRpZiAoc2tiX3RhaWxyb29tKHJ4LVxcdTAwM2Vza2IpIFxcdTAwM2MgZW50cnktXFx1MDAzZWV4dHJhX2xlbikge1xcbjI1MTI6XFx0XFx0XFx0STgwMl9ERUJVR19JTkMocngtXFx1MDAzZWxvY2FsLVxcdTAwM2VyeF9leHBhbmRfc2tiX2hlYWRfZGVmcmFnKTtcXG4yNTEzOlxcdFxcdFxcdGlmICh1bmxpa2VseShwc2tiX2V4cGFuZF9oZWFkKHJ4LVxcdTAwM2Vza2IsIDAsIGVudHJ5LVxcdTAwM2VleHRyYV9sZW4sXFxuMjUxNDpcXHRcXHRcXHRcXHRcXHRcXHQgICAgICBHRlBfQVRPTUlDKSkpIHtcXG4yNTE1OlxcdFxcdFxcdFxcdEk4MDJfREVCVUdfSU5DKHJ4LVxcdTAwM2Vsb2NhbC1cXHUwMDNlcnhfaGFuZGxlcnNfZHJvcF9kZWZyYWcpO1xcbjI1MTY6XFx0XFx0XFx0XFx0X19za2JfcXVldWVfcHVyZ2UoXFx1MDAyNmVudHJ5LVxcdTAwM2Vza2JfbGlzdCk7XFxuMjUxNzpcXHRcXHRcXHRcXHRyZXR1cm4gUlhfRFJPUF9VX09PTTtcXG4yNTE4OlxcdFxcdFxcdH1cXG4yNTE5OlxcdFxcdH1cXG4yNTIwOlxcdFxcdHdoaWxlICgoc2tiID0gX19za2JfZGVxdWV1ZShcXHUwMDI2ZW50cnktXFx1MDAzZXNrYl9saXN0KSkpIHtcXG4yNTIxOlxcdFxcdFxcdHNrYl9wdXRfZGF0YShyeC1cXHUwMDNlc2tiLCBza2ItXFx1MDAzZWRhdGEsIHNrYi1cXHUwMDNlbGVuKTtcXG4yNTIyOlxcdFxcdFxcdGRldl9rZnJlZV9za2Ioc2tiKTtcXG4yNTIzOlxcdFxcdH1cXG4yNTI0OlxcdFxcbjI1MjU6XFx0IG91dDpcXG4yNTI2OlxcdFxcdGllZWU4MDIxMV9sZWRfcngocngtXFx1MDAzZWxvY2FsKTtcXG4yNTI3OlxcdFxcdGlmIChyeC1cXHUwMDNlc3RhKVxcbjI1Mjg6XFx0XFx0XFx0cngtXFx1MDAzZWxpbmtfc3RhLVxcdTAwM2VyeF9zdGF0cy5wYWNrZXRzKys7XFxuMjUyOTpcXHRcXHRyZXR1cm4gUlhfQ09OVElOVUU7XFxuMjUzMDpcXHR9XFxuMjUzMTpcXHRcXG4yNTMyOlxcdHN0YXRpYyBpbnQgaWVlZTgwMjExXzgwMl8xeF9wb3J0X2NvbnRyb2woc3RydWN0IGllZWU4MDIxMV9yeF9kYXRhICpyeClcXG4yNTMzOlxcdHtcXG4yNTM0OlxcdFxcdGlmICh1bmxpa2VseSghcngtXFx1MDAzZXN0YSB8fCAhdGVzdF9zdGFfZmxhZyhyeC1cXHUwMDNlc3RhLCBXTEFOX1NUQV9BVVRIT1JJWkVEKSkpXFxuMjUzNTpcXHRcXHRcXHRyZXR1cm4gLUVBQ0NFUztcXG4yNTM2OlxcdFxcbjI1Mzc6XFx0XFx0cmV0dXJuIDA7XFxuMjUzODpcXHR9XFxuMjUzOTpcXHRcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjlUMDY6MDI6MjYuNTM1NTAyNTM2WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NjQwMDk5MTQ0OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBQb3RlbnRpYWwgSW50ZWdlciBPdmVyZmxvdyBWdWxuZXJhYmlsaXR5KipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBjb2RlLCBzcGVjaWZpY2FsbHkgYGVudHJ5LVx1MDAzZWV4dHJhX2xlbiArPSByeC1cdTAwM2Vza2ItXHUwMDNlbGVuO2AgYW5kIHRoZSBzdWJzZXF1ZW50IGBza2JfcHV0X2RhdGEocngtXHUwMDNlc2tiLCBza2ItXHUwMDNlZGF0YSwgc2tiLVx1MDAzZWxlbik7YC4gVGhlIGBleHRyYV9sZW5gIGZpZWxkIGlzIGRlZmluZWQgYXMgYSBgdTE2YCwgYW5kIHRoZSBhbGFybSBiZWxscyBhcmUgZ29pbmcgb2ZmIGltbWVkaWF0ZWx5LiBJZiB0aGF0IGNvdW50ZXIgZ2V0cyB0b28gYmlnLCBiZXlvbmQgNjU1MzUsIHRoZXJlJ3MgZ29pbmcgdG8gYmUgYW4gaW50ZWdlciBvdmVyZmxvdy4gV2hlbiB0aGlzIGhhcHBlbnMgZHVyaW5nIHRoZSBmcmFnbWVudCByZWFzc2VtYmx5LCBgcHNrYl9leHBhbmRfaGVhZGAgcHJvYmFibHkgYWxsb2NhdGVzIGEgc21hbGwgYnVmZmVyLCB0aGVuIGBza2JfcHV0X2RhdGFgIGVuZHMgdXAgd3JpdGluZyBwYXN0IHRoZSBhbGxvY2F0ZWQgYnVmZmVyLiBUaGF0J3MgYSBjbGFzc2ljIGJ1ZmZlciBvdmVyZmxvdyBhbmQgaGVhcCBjb3JydXB0aW9uIHNpdHVhdGlvbiwgYW5kIHdlIG5lZWQgdG8gZml4IGl0LlxuXG5DaGFuZ2luZyBgdTE2IGV4dHJhX2xlbmAgdG8gYHVuc2lnbmVkIGludCBleHRyYV9sZW5gIHNob3VsZCBwcmV2ZW50IHRoZSBvdmVyZmxvdywgYW5kIHRoYXQncyBhbiBlYXN5IGZpeC4gQnV0IGJlZm9yZSBJIHN0YXJ0IGRyYWZ0aW5nIGEgcGF0Y2gsIGxldCdzIHNlZSBpZiB0aGlzIGlzIGV2ZW4gcmVhY2hhYmxlIGFuZCBpZiBpdCdzIHdvcnRoIHRoZSBlZmZvcnQgb2YgdGVzdGluZy4gVGhpcyBsb29rcyBsaWtlIHRoZSBgaWVlZTgwMjExX3J4X2hfZGVmcmFnbWVudGAgZnVuY3Rpb24sIHdoaWNoIGlzIHRoZSBtYWM4MDIxMSBmcmFnbWVudCByZWFzc2VtYmx5IGluIHRoZSByZWNlaXZlIHBhdGguIEV4Y2VsbGVudCwgdGhhdCdzIGNvcmUgd2lyZWxlc3Mgc3Vic3lzdGVtIGxvZ2ljLlxuXG5Ob3csIGhvdyBlYXNpbHkgY2FuIHdlIHRyaWdnZXIgdGhpcz8gVGhpbmtpbmcgYWJvdXQgaXQsIG1hYzgwMjExIGlzIGVtdWxhdGVkIHZpYSBgbWFjODAyMTFfaHdzaW1gLCB3aGljaCB3ZSBjYW4gdXNlIGluIHZpcnR1YWwgZW52aXJvbm1lbnRzIGxpa2UgUUVNVSBvciBHQ0UuIEFuZCBpZiBJIHJlY2FsbCBjb3JyZWN0bHksIHN5emthbGxlciB0ZXN0cyBtYWM4MDIxMSBleHRlbnNpdmVseSB1c2luZyBod3NpbSwgb3IgdXNpbmcgbmw4MDIxMS9yYWRpb3RhcC9pbmplY3RlZCBwYWNrZXRzLiBTbywgdGhpcyBpcyBkZWZpbml0ZWx5IHJlYWNoYWJsZSBhbmQgZnV6emVhYmxlLiBXZSBhcmUgZ29vZCB0byBnbyFcblxuVG8gbWFrZSBzdXJlIHRoaXMgY2FuIGJlIHJlYWNoZWQgYW5kIHRlc3RlZCwgSSBuZWVkIHRvIGtub3cgdGhlIEtjb25maWcgb3B0aW9ucyByZXF1aXJlZCBmb3IgYm90aCBtYWM4MDIxMSBhbmQgYG1hYzgwMjExX2h3c2ltYC4gVGltZSB0byBzZWFyY2ggdGhlIEtjb25maWcgZmlsZXMgZm9yIGBNQUM4MDIxMWAuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ5MTcsIk91dHB1dFRva2VucyI6MzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNTMsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yOVQwNjowMjozMi45MzY0OTY1NTRaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTQ5NzU0ODU0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBNQUM4MDIxMVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvbWFjODAyMTFcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L21hYzgwMjExL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyOmNvbmZpZyBNQUM4MDIxMVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTMtXFx0dHJpc3RhdGUgXFxcIkdlbmVyaWMgSUVFRSA4MDIuMTEgTmV0d29ya2luZyBTdGFjayAobWFjODAyMTEpXFxcIlxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWc9MTk9aWYgTUFDODAyMTEgIT0gblxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTIwLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjIxOmNvbmZpZyBNQUM4MDIxMV9IQVNfUkNcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yMi1cXHRib29sXFxubmV0L21hYzgwMjExL0tjb25maWctMjMtXFxubmV0L21hYzgwMjExL0tjb25maWc6MjQ6Y29uZmlnIE1BQzgwMjExX1JDX01JTlNUUkVMXFxubmV0L21hYzgwMjExL0tjb25maWctMjUtXFx0Ym9vbCBcXFwiTWluc3RyZWxcXFwiIGlmIEVYUEVSVFxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWc9MzE9Y2hvaWNlXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy00MC1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzo0MTpjb25maWcgTUFDODAyMTFfUkNfREVGQVVMVF9NSU5TVFJFTFxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTQyLVxcdGJvb2wgXFxcIk1pbnN0cmVsXFxcIlxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWc9NDg9ZW5kY2hvaWNlXFxubmV0L21hYzgwMjExL0tjb25maWctNDktXFxubmV0L21hYzgwMjExL0tjb25maWc6NTA6Y29uZmlnIE1BQzgwMjExX1JDX0RFRkFVTFRcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy01MS1cXHRzdHJpbmdcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnPTU3PWNvbW1lbnQgXFxcIlNvbWUgd2lyZWxlc3MgZHJpdmVycyByZXF1aXJlIGEgcmF0ZSBjb250cm9sIGFsZ29yaXRobVxcXCJcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTU5LVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjYwOmNvbmZpZyBNQUM4MDIxMV9LVU5JVF9URVNUXFxubmV0L21hYzgwMjExL0tjb25maWctNjEtXFx0dHJpc3RhdGUgXFxcIktVbml0IHRlc3RzIGZvciBtYWM4MDIxMVxcXCIgaWYgIUtVTklUX0FMTF9URVNUU1xcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWctNjktXFxubmV0L21hYzgwMjExL0tjb25maWc6NzA6Y29uZmlnIE1BQzgwMjExX01FU0hcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy03MS1cXHRib29sIFxcXCJFbmFibGUgbWFjODAyMTEgbWVzaCBuZXR3b3JraW5nIHN1cHBvcnRcXFwiXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy03OC1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzo3OTpjb25maWcgTUFDODAyMTFfTEVEU1xcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTgwLVxcdGJvb2wgXFxcIkVuYWJsZSBMRUQgdHJpZ2dlcnNcXFwiXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy04Ny1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzo4ODpjb25maWcgTUFDODAyMTFfREVCVUdGU1xcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTg5LVxcdGJvb2wgXFxcIkV4cG9ydCBtYWM4MDIxMSBpbnRlcm5hbHMgaW4gRGVidWdGU1xcXCJcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTk2LVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjk3OmNvbmZpZyBNQUM4MDIxMV9NRVNTQUdFX1RSQUNJTkdcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy05OC1cXHRib29sIFxcXCJUcmFjZSBhbGwgbWFjODAyMTEgZGVidWcgbWVzc2FnZXNcXFwiXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xMDktXFxubmV0L21hYzgwMjExL0tjb25maWc6MTEwOm1lbnVjb25maWcgTUFDODAyMTFfREVCVUdfTUVOVVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTExMS1cXHRib29sIFxcXCJTZWxlY3QgbWFjODAyMTEgZGVidWdnaW5nIGZlYXR1cmVzXFxcIlxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWctMTE1LVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjExNjpjb25maWcgTUFDODAyMTFfTk9JTkxJTkVcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xMTctXFx0Ym9vbCBcXFwiRG8gbm90IGlubGluZSBUWC9SWCBoYW5kbGVyc1xcXCJcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTEzMS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoxMzI6Y29uZmlnIE1BQzgwMjExX1ZFUkJPU0VfREVCVUdcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xMzMtXFx0Ym9vbCBcXFwiVmVyYm9zZSBkZWJ1Z2dpbmcgb3V0cHV0XFxcIlxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWctMTQyLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjE0Mzpjb25maWcgTUFDODAyMTFfTUxNRV9ERUJVR1xcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE0NC1cXHRib29sIFxcXCJWZXJib3NlIG1hbmFnZWQgTUxNRSBvdXRwdXRcXFwiXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xNTMtXFxubmV0L21hYzgwMjExL0tjb25maWc6MTU0OmNvbmZpZyBNQUM4MDIxMV9TVEFfREVCVUdcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xNTUtXFx0Ym9vbCBcXFwiVmVyYm9zZSBzdGF0aW9uIGRlYnVnZ2luZ1xcXCJcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE2Mi1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoxNjM6Y29uZmlnIE1BQzgwMjExX0hUX0RFQlVHXFxubmV0L21hYzgwMjExL0tjb25maWctMTY0LVxcdGJvb2wgXFxcIlZlcmJvc2UgSFQgZGVidWdnaW5nXFxcIlxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWctMTc0LVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjE3NTpjb25maWcgTUFDODAyMTFfT0NCX0RFQlVHXFxubmV0L21hYzgwMjExL0tjb25maWctMTc2LVxcdGJvb2wgXFxcIlZlcmJvc2UgT0NCIGRlYnVnZ2luZ1xcXCJcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE4NS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoxODY6Y29uZmlnIE1BQzgwMjExX0lCU1NfREVCVUdcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xODctXFx0Ym9vbCBcXFwiVmVyYm9zZSBJQlNTIGRlYnVnZ2luZ1xcXCJcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE5Ni1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoxOTc6Y29uZmlnIE1BQzgwMjExX1BTX0RFQlVHXFxubmV0L21hYzgwMjExL0tjb25maWctMTk4LVxcdGJvb2wgXFxcIlZlcmJvc2UgcG93ZXJzYXZlIG1vZGUgZGVidWdnaW5nXFxcIlxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWctMjA4LVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjIwOTpjb25maWcgTUFDODAyMTFfTVBMX0RFQlVHXFxubmV0L21hYzgwMjExL0tjb25maWctMjEwLVxcdGJvb2wgXFxcIlZlcmJvc2UgbWVzaCBwZWVyIGxpbmsgZGVidWdnaW5nXFxcIlxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWctMjIxLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjIyMjpjb25maWcgTUFDODAyMTFfTVBBVEhfREVCVUdcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yMjMtXFx0Ym9vbCBcXFwiVmVyYm9zZSBtZXNoIHBhdGggZGVidWdnaW5nXFxcIlxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWctMjM0LVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjIzNTpjb25maWcgTUFDODAyMTFfTUhXTVBfREVCVUdcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yMzYtXFx0Ym9vbCBcXFwiVmVyYm9zZSBtZXNoIEhXTVAgcm91dGluZyBkZWJ1Z2dpbmdcXFwiXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yNDctXFxubmV0L21hYzgwMjExL0tjb25maWc6MjQ4OmNvbmZpZyBNQUM4MDIxMV9NRVNIX1NZTkNfREVCVUdcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yNDktXFx0Ym9vbCBcXFwiVmVyYm9zZSBtZXNoIHN5bmNocm9uaXphdGlvbiBkZWJ1Z2dpbmdcXFwiXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yNTgtXFxubmV0L21hYzgwMjExL0tjb25maWc6MjU5OmNvbmZpZyBNQUM4MDIxMV9NRVNIX0NTQV9ERUJVR1xcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTI2MC1cXHRib29sIFxcXCJWZXJib3NlIG1lc2ggY2hhbm5lbCBzd2l0Y2ggZGVidWdnaW5nXFxcIlxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWctMjY5LVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjI3MDpjb25maWcgTUFDODAyMTFfTUVTSF9QU19ERUJVR1xcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTI3MS1cXHRib29sIFxcXCJWZXJib3NlIG1lc2ggcG93ZXJzYXZlIGRlYnVnZ2luZ1xcXCJcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTI4MC1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyODE6Y29uZmlnIE1BQzgwMjExX1RETFNfREVCVUdcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yODItXFx0Ym9vbCBcXFwiVmVyYm9zZSBURExTIGRlYnVnZ2luZ1xcXCJcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTI5Mi1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyOTM6Y29uZmlnIE1BQzgwMjExX0RFQlVHX0NPVU5URVJTXFxubmV0L21hYzgwMjExL0tjb25maWctMjk0LVxcdGJvb2wgXFxcIkV4dHJhIHN0YXRpc3RpY3MgZm9yIFRYL1JYIGRlYnVnZ2luZ1xcXCJcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTMwNy1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzozMDg6Y29uZmlnIE1BQzgwMjExX1NUQV9IQVNIX01BWF9TSVpFXFxubmV0L21hYzgwMjExL0tjb25maWctMzA5LVxcdGludCBcXFwiU3RhdGlvbiBoYXNoIHRhYmxlIG1heGltdW0gc2l6ZVxcXCIgaWYgTUFDODAyMTFfREVCVUdfTUVOVVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yOVQwNjowMjozMy4wODYyNTY5NDhaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoyNjk4MzIyMDk1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgc3VtbWFyeSwgYXMgdGhvdWdoIEkgd2VyZSB0aGlua2luZyB0aHJvdWdoIHRoZSBwcm9jZXNzOlxuXG4qKkRpdmluZyBpbnRvIHRoZSBNYWM4MDIxMSBDb21waWxhdGlvbioqXG5cbk9rYXksIHNvIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyBgcngub2AgaXMgYmVpbmcgYnVpbHQuIFRoZSBiZXN0IHBsYWNlIHRvIHN0YXJ0IGlzIGFsd2F5cyB0aGUgYE1ha2VmaWxlYCBpbiB0aGUgYG5ldC9tYWM4MDIxMWAgZGlyZWN0b3J5LiBJdCdzIHRoZSBjZW50cmFsIGh1YiBmb3IgdGhpcyBtb2R1bGUncyBjb21waWxhdGlvbi4gSSdsbCBuZWVkIHRvIGdvIGluIHRoZXJlIGFuZCBmaWd1cmUgb3V0IHdoYXQgcnVsZXMgb3IgdmFyaWFibGVzIGFyZSBpbnZvbHZlZCBpbiBnZW5lcmF0aW5nIHRoYXQgc3BlY2lmaWMgb2JqZWN0IGZpbGUuIENoYW5jZXMgYXJlLCB0aGVyZSdzIGEgc3BlY2lmaWMgcGF0dGVybiBvciBhIGRlcGVuZGVuY3kgY2hhaW4gZGVmaW5lZCB0aGF0IHJldmVhbHMgdGhlIGJ1aWxkIHByb2Nlc3MuIExldCdzIHNlZSB3aGF0IHRoZSBtYWtlZmlsZSByZXZlYWxzIGFib3V0IGl0cyBjb21waWxhdGlvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6NzkzMCwiT3V0cHV0VG9rZW5zIjozNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI5VDA2OjAyOjM1Ljc4NDU4MTk1M1oiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2MzM1MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJuZXQvbWFjODAyMTEvTWFrZWZpbGVcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogNTBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAgMTpcXHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXFxuICAgMjpcXHRvYmotJChDT05GSUdfTUFDODAyMTEpICs9IG1hYzgwMjExLm9cXG4gICAzOlxcdFxcbiAgIDQ6XFx0IyBtYWM4MDIxMSBvYmplY3RzXFxuICAgNTpcXHRtYWM4MDIxMS15IDo9IFxcXFxcXG4gICA2OlxcdFxcdG1haW4ubyBzdGF0dXMubyBcXFxcXFxuICAgNzpcXHRcXHRkcml2ZXItb3BzLm8gXFxcXFxcbiAgIDg6XFx0XFx0c3RhX2luZm8ubyBcXFxcXFxuICAgOTpcXHRcXHR3ZXAubyBcXFxcXFxuICAxMDpcXHRcXHRhZWFkX2FwaS5vIFxcXFxcXG4gIDExOlxcdFxcdHdwYS5vIFxcXFxcXG4gIDEyOlxcdFxcdHNjYW4ubyBvZmZjaGFubmVsLm8gXFxcXFxcbiAgMTM6XFx0XFx0aHQubyBhZ2ctdHgubyBhZ2ctcngubyBcXFxcXFxuICAxNDpcXHRcXHR2aHQubyBcXFxcXFxuICAxNTpcXHRcXHRoZS5vIFxcXFxcXG4gIDE2OlxcdFxcdHMxZy5vIFxcXFxcXG4gIDE3OlxcdFxcdGlic3MubyBcXFxcXFxuICAxODpcXHRcXHRpZmFjZS5vIFxcXFxcXG4gIDE5OlxcdFxcdGxpbmsubyBcXFxcXFxuICAyMDpcXHRcXHRyYXRlLm8gXFxcXFxcbiAgMjE6XFx0XFx0dGtpcC5vIFxcXFxcXG4gIDIyOlxcdFxcdGFlc19jbWFjLm8gXFxcXFxcbiAgMjM6XFx0XFx0YWVzX2dtYWMubyBcXFxcXFxuICAyNDpcXHRcXHRmaWxzX2FlYWQubyBcXFxcXFxuICAyNTpcXHRcXHRjZmcubyBcXFxcXFxuICAyNjpcXHRcXHRldGh0b29sLm8gXFxcXFxcbiAgMjc6XFx0XFx0cngubyBcXFxcXFxuICAyODpcXHRcXHRzcGVjdG1nbXQubyBcXFxcXFxuICAyOTpcXHRcXHR0eC5vIFxcXFxcXG4gIDMwOlxcdFxcdGtleS5vIFxcXFxcXG4gIDMxOlxcdFxcdHV0aWwubyBwYXJzZS5vIFxcXFxcXG4gIDMyOlxcdFxcdHdtZS5vIFxcXFxcXG4gIDMzOlxcdFxcdGNoYW4ubyBhcC5vIFxcXFxcXG4gIDM0OlxcdFxcdHRyYWNlLm8gbWxtZS5vIFxcXFxcXG4gIDM1OlxcdFxcdHRkbHMubyBcXFxcXFxuICAzNjpcXHRcXHRvY2IubyBcXFxcXFxuICAzNzpcXHRcXHRhaXJ0aW1lLm8gXFxcXFxcbiAgMzg6XFx0XFx0ZWh0Lm8gdWhyLm8gbmFuLm9cXG4gIDM5OlxcdFxcbiAgNDA6XFx0bWFjODAyMTEtJChDT05GSUdfTUFDODAyMTFfTEVEUykgKz0gbGVkLm9cXG4gIDQxOlxcdG1hYzgwMjExLSQoQ09ORklHX01BQzgwMjExX0RFQlVHRlMpICs9IFxcXFxcXG4gIDQyOlxcdFxcdGRlYnVnZnMubyBcXFxcXFxuICA0MzpcXHRcXHRkZWJ1Z2ZzX3N0YS5vIFxcXFxcXG4gIDQ0OlxcdFxcdGRlYnVnZnNfbmV0ZGV2Lm8gXFxcXFxcbiAgNDU6XFx0XFx0ZGVidWdmc19rZXkub1xcbiAgNDY6XFx0XFxuICA0NzpcXHRtYWM4MDIxMS0kKENPTkZJR19NQUM4MDIxMV9NRVNIKSArPSBcXFxcXFxuICA0ODpcXHRcXHRtZXNoLm8gXFxcXFxcbiAgNDk6XFx0XFx0bWVzaF9wYXRodGJsLm8gXFxcXFxcbiAgNTA6XFx0XFx0bWVzaF9wbGluay5vIFxcXFxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjlUMDY6MDI6MzUuNzg0NjQ3MjAzWiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjU3Mjc3NTMwMDcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqQW5hbHl6aW5nIEtjb25maWcgRGVwZW5kZW5jaWVzIGZvciBDT05GSUdfTUFDODAyMTEqKlxuXG5Pa2F5LCBzbyBJIG5lZWQgdG8gZGlnIGludG8gdGhlIEtjb25maWcgZGVwZW5kZW5jaWVzIGZvciBgQ09ORklHX01BQzgwMjExYC4gVGltZSB0byBiZSBzeXN0ZW1hdGljIGFib3V0IHRoaXMuIEZpcnN0LCBJJ20gZ29pbmcgdG8gZmlyZSB1cCB0aGUgcmVsZXZhbnQgS2NvbmZpZyBmaWxlcy4gSSBrbm93IHRoZSBnZW5lcmFsIGFyZWEsIHNvIEknbGwgc3RhcnQgd2l0aCB0aGUgc3RhbmRhcmQgd2lyZWxlc3MgYW5kIG5ldHdvcmtpbmcgZGlyZWN0b3JpZXMsIGJ1dCBJIG1pZ2h0IG5lZWQgdG8gYnJhbmNoIG91dCBpZiBpdCBnZXRzIHRyaWNreS4gSSdsbCBwcm9iYWJseSBiZSB1c2luZyBgZ3JlcGAgb3IgYGZpbmRgIHdpdGggc29tZSB0YXJnZXRlZCBwYXR0ZXJucyB0byBsb2NhdGUgdGhlIGRlZmluaW5nIHN5bWJvbC5cblxuSSdtIHRoaW5raW5nIEknbGwgbG9vayBmb3IgZGlyZWN0IGRlcGVuZGVuY2llcyBmaXJzdDogYGRlcGVuZHMgb25gLCBgc2VsZWN0YCwgb3IgZXZlbiBgZGVmYXVsdGAgc3RhdGVtZW50cyB0aGF0IGRpcmVjdGx5IHJlZmVyZW5jZSBgQ09ORklHX01BQzgwMjExYC4gVGhhdCdzIHRoZSBsb3ctaGFuZ2luZyBmcnVpdC4gT25jZSBJJ3ZlIGdvdCB0aGF0IGluaXRpYWwgc2V0LCB0aGVuIEkgbmVlZCB0byBzdGFydCB0cmFjaW5nICp0aGVpciogZGVwZW5kZW5jaWVzLiBJJ2xsIG5lZWQgdG8gZm9sbG93IHRoZSBjaGFpbiB1cHN0cmVhbSwgZW5zdXJpbmcgSSB1bmRlcnN0YW5kIHRoZSByYXRpb25hbGUgYmVoaW5kIGVhY2ggY29uc3RyYWludC4gVGhpcyBpcyB3aGVyZSB0aGluZ3MgZ2V0IGludGVyZXN0aW5nLCBiZWNhdXNlIG9mdGVuIHRoZXJlIGFyZSBjb21wbGV4IGNvbmRpdGlvbmFsIHJlbGF0aW9uc2hpcHMsIGFuZCBpdCdzIGVhc3kgdG8gZ2V0IGxvc3QgaW4gYSB0YW5nbGUgb2YgYCNpZmRlZmAgc3RhdGVtZW50cyBhbmQgc3VidGxlIHZlcnNpb24gY2hlY2tzLlxuXG5JJ2xsIGJlIG1pbmRmdWwgb2YgdGhlIGRpZmZlcmVudCB0eXBlcyBvZiBkZXBlbmRlbmNpZXMsIGVzcGVjaWFsbHkgdGhlIHN1YnRsZSBkaWZmZXJlbmNlcyBiZXR3ZWVuIGBkZXBlbmRzIG9uYCwgYHNlbGVjdGAsIGFuZCBldmVuIGByYW5nZWAgY29uc3RyYWludHMuIFRoZXkgYWxsIGhhdmUgc2xpZ2h0bHkgZGlmZmVyZW50IGltcGxpY2F0aW9ucyBmb3IgdGhlIG92ZXJhbGwgY29uZmlndXJhdGlvbiBzcGFjZS4gQXJlIHRoZXJlIGFueSBkZWZhdWx0IHZhbHVlcyB0aGF0IG1pZ2h0IGltcGFjdCBob3cgdGhpcyBtb2R1bGUgaXMgZW5hYmxlZD8gSXQncyBlYXN5IHRvIG92ZXJsb29rIGRlZmF1bHRzLiBUaGVuLCBJIG5lZWQgdG8gY29uc2lkZXIgcG90ZW50aWFsIGNvbmZsaWN0cy4gQXJlIHRoZXJlIGFueSBvdGhlciBjb25maWd1cmF0aW9ucyB0aGF0IHdvdWxkIHByZXZlbnQgYENPTkZJR19NQUM4MDIxMWAgZnJvbSBiZWluZyBzZWxlY3RlZCBvciBmdW5jdGlvbmFsPyBJJ2xsIHByb2JhYmx5IG5lZWQgdG8gYnVpbGQgYSBtZW50YWwgbWFwIG9mIHRoZSBjb25maWd1cmF0aW9uIHNwYWNlIGFzIEknbSBkaWdnaW5nIHRocm91Z2ggdGhlc2UgZGVwZW5kZW5jaWVzLlxuXG5BbmQgb2YgY291cnNlLCBJJ2xsIG5lZWQgdG8gY2hlY2sgZm9yIGFueSBwbGF0Zm9ybS1zcGVjaWZpYyBkZXBlbmRlbmNpZXMuIEFyZSB3ZSBkZWFsaW5nIHdpdGggYW55IGFyY2hpdGVjdHVyZXMgb3IgYm9hcmQgY29uZmlndXJhdGlvbnMgdGhhdCBoYXZlIHNwZWNpYWwgcmVxdWlyZW1lbnRzIG9yIGxpbWl0YXRpb25zPyBJIGtub3cgZnJvbSBleHBlcmllbmNlIHRoYXQgdGhlc2UgcGxhdGZvcm0tc3BlY2lmaWMgYWRkaXRpb25zIGNhbiBzb21ldGltZXMgYmUgZGVlcGx5IG5lc3RlZCwgc28gSSBtYXkgbmVlZCB0byBsb29rIGF0IGFyY2hpdGVjdHVyZS1zcGVjaWZpYyBLY29uZmlnIGZyYWdtZW50cyBhcyB3ZWxsLiBGaW5hbGx5LCBJJ2xsIGtlZXAgYW4gZXllIG91dCBmb3IgYW55IHVudXN1YWwgb3IgdW5kb2N1bWVudGVkIGRlcGVuZGVuY2llcy4gU29tZXRpbWVzIHRoZXJlJ3MgYSBnb29kIHJlYXNvbiBmb3IgYSBzZWVtaW5nbHkgYXJiaXRyYXJ5IHJlcXVpcmVtZW50LCBhbmQgc29tZXRpbWVzIGl0J3MganVzdCBhIGxlZnRvdmVyIGZyb20gYSBwcmV2aW91cyBkZXZlbG9wbWVudCBlZmZvcnQuIEdldHRpbmcgdGhpcyByaWdodCBpcyBjcml0aWNhbC4gVGhpcyBpcyBhIHNvbGlkIHBpZWNlIG9mIHRoZSBwdXp6bGUgdGhhdCBlbnN1cmVzIGV2ZXJ5dGhpbmcgZnVuY3Rpb25zIGNvcnJlY3RseS5cblxuXG4iLCJJbnB1dFRva2VucyI6ODc5NywiT3V0cHV0VG9rZW5zIjozNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE4LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjlUMDY6MDI6NDEuNTEyNDAyNThaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzIxMzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwibmV0L21hYzgwMjExL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogMjVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAgMTpcXHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG4gICAyOlxcdGNvbmZpZyBNQUM4MDIxMVxcbiAgIDM6XFx0XFx0dHJpc3RhdGUgXFxcIkdlbmVyaWMgSUVFRSA4MDIuMTEgTmV0d29ya2luZyBTdGFjayAobWFjODAyMTEpXFxcIlxcbiAgIDQ6XFx0XFx0ZGVwZW5kcyBvbiBDRkc4MDIxMVxcbiAgIDU6XFx0XFx0c2VsZWN0IENSWVBUT1xcbiAgIDY6XFx0XFx0c2VsZWN0IENSWVBUT19MSUJfQUVTX0NCQ19NQUNTXFxuICAgNzpcXHRcXHRzZWxlY3QgQ1JZUFRPX0xJQl9BUkM0XFxuICAgODpcXHRcXHRzZWxlY3QgQ1JZUFRPX0FFU1xcbiAgIDk6XFx0XFx0c2VsZWN0IENSWVBUT19DQ01cXG4gIDEwOlxcdFxcdHNlbGVjdCBDUllQVE9fR0NNXFxuICAxMTpcXHRcXHRzZWxlY3QgQ1JDMzJcXG4gIDEyOlxcdFxcdGhlbHBcXG4gIDEzOlxcdFxcdCAgVGhpcyBvcHRpb24gZW5hYmxlcyB0aGUgaGFyZHdhcmUgaW5kZXBlbmRlbnQgSUVFRSA4MDIuMTFcXG4gIDE0OlxcdFxcdCAgbmV0d29ya2luZyBzdGFjay5cXG4gIDE1OlxcdFxcbiAgMTY6XFx0Y29tbWVudCBcXFwiQ0ZHODAyMTEgbmVlZHMgdG8gYmUgZW5hYmxlZCBmb3IgTUFDODAyMTFcXFwiXFxuICAxNzpcXHRcXHRkZXBlbmRzIG9uIENGRzgwMjExPW5cXG4gIDE4OlxcdFxcbiAgMTk6XFx0aWYgTUFDODAyMTEgIT0gblxcbiAgMjA6XFx0XFxuICAyMTpcXHRjb25maWcgTUFDODAyMTFfSEFTX1JDXFxuICAyMjpcXHRcXHRib29sXFxuICAyMzpcXHRcXG4gIDI0OlxcdGNvbmZpZyBNQUM4MDIxMV9SQ19NSU5TVFJFTFxcbiAgMjU6XFx0XFx0Ym9vbCBcXFwiTWluc3RyZWxcXFwiIGlmIEVYUEVSVFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yOVQwNjowMjo0MS41MTI0NzY0NloiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoyMzk5MDQyODU3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGFuIGV4cGVydCdzIGludGVybmFsIG1vbm9sb2d1ZTpcblxuKipDaGVja2luZyBgQ0ZHODAyMTFgIERlcGVuZGVuY2llcyBpbiBgbmV0L3dpcmVsZXNzL0tjb25maWdgKipcblxuQWxyaWdodCwgbGV0J3MgZGl2ZSBpbnRvIHRoZSBgbmV0L3dpcmVsZXNzL0tjb25maWdgIGZpbGUuIEkgbmVlZCB0byByZWZyZXNoIG15IG1lbW9yeSBvbiBob3cgYENGRzgwMjExYCBpcyB3aXJlZCB1cCwgc3BlY2lmaWNhbGx5IGxvb2tpbmcgYXQgdGhlIGRlcGVuZGVuY3kgc3RydWN0dXJlLiBJJ20gYXNzdW1pbmcgdGhlcmUncyBiZWVuIGEgY2hhbmdlIEkgbmVlZCB0byB1bmRlcnN0YW5kLCBvciBtYXliZSBJJ20gdHJvdWJsZXNob290aW5nIGEgY29uZmlndXJhdGlvbiBpc3N1ZS4gVGhlIGBLY29uZmlnYCBmaWxlcyBhcmUgdXN1YWxseSBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkLCBidXQgeW91IGtub3cgaG93IGl0IGdvZXM7IGl0J3MgZWFzeSB0byBtaXNzIHN1YnRsZSBpbnRlcmFjdGlvbnMuIEknbGwgbmVlZCB0byBzZWUgd2hpY2ggb3RoZXIgb3B0aW9ucyBkZXBlbmQgb24sIG9yIGFyZSBkZXBlbmRlZCBvbiBieSwgYENGRzgwMjExYC4gQXJlIHRoZXJlIGFueSBuZXcgZGVwZW5kZW5jaWVzIGludHJvZHVjZWQ/IEFyZSB0aGVyZSBhbnkgdGhhdCBoYXZlIGJlZW4gcmVtb3ZlZCBvciBjaGFuZ2VkPyBJJ2xsIHByb2JhYmx5IGJlIGNoZWNraW5nIHRoaW5ncyBsaWtlIHRoZSBoYXJkd2FyZSBsYXllciwgcmVndWxhdG9yeSBkYXRhYmFzZSBpbnRlcmFjdGlvbnMsIGFuZCBhbnkgd2lyZWxlc3MgZXh0ZW5zaW9ucyB0aGF0IGhvb2sgaW50byBpdC4gSSdsbCBtZW50YWxseSBtYXAgb3V0IHRoZSBkaWZmZXJlbnQgcGF0aHMgdGhlIGNvbmZpZ3VyYXRpb24gY2FuIHRha2UgYW5kIHdoZXJlIGBDRkc4MDIxMWAgc2VydmVzIGFzIGEgbGluY2hwaW4gb3IgYSBidWlsZGluZyBibG9jay4gR290dGEgZ2V0IGEgc29saWQgZ3Jhc3Agb2YgdGhpcyBiZWNhdXNlIGl0J3MgYSBmdW5kYW1lbnRhbCBwYXJ0IG9mIHRoZSB3aXJlbGVzcyBzdGFjaywgYW5kIGEgbWlzY29uZmlndXJhdGlvbiBoZXJlIGNvdWxkIGNhdXNlIGEgbG90IG9mIGhlYWRhY2hlcyBkb3duc3RyZWFtLiBUaW1lIHRvIHN0YXJ0IHJlYWRpbmchXG5cblxuIiwiSW5wdXRUb2tlbnMiOjk3MDcsIk91dHB1dFRva2VucyI6MzEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMywiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI5VDA2OjAyOjQzLjkxMTUyMzI1N1oiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTA3MTE1NDgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIENGRzgwMjExXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC93aXJlbGVzc1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvd2lyZWxlc3MvS2NvbmZpZz0xND1jb25maWcgV0VYVF9QUklWXFxuLS1cXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xNi1cXG5uZXQvd2lyZWxlc3MvS2NvbmZpZzoxNzpjb25maWcgQ0ZHODAyMTFcXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xOC1cXHR0cmlzdGF0ZSBcXFwiY2ZnODAyMTEgLSB3aXJlbGVzcyBjb25maWd1cmF0aW9uIEFQSVxcXCJcXG4tLVxcbm5ldC93aXJlbGVzcy9LY29uZmlnPTM4PWNvbmZpZyBOTDgwMjExX1RFU1RNT0RFXFxuLS1cXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy01MS1cXG5uZXQvd2lyZWxlc3MvS2NvbmZpZzo1Mjpjb25maWcgQ0ZHODAyMTFfREVWRUxPUEVSX1dBUk5JTkdTXFxubmV0L3dpcmVsZXNzL0tjb25maWctNTMtXFx0Ym9vbCBcXFwiZW5hYmxlIGRldmVsb3BlciB3YXJuaW5nc1xcXCJcXG4tLVxcbm5ldC93aXJlbGVzcy9LY29uZmlnLTY3LVxcbm5ldC93aXJlbGVzcy9LY29uZmlnOjY4OmNvbmZpZyBDRkc4MDIxMV9DRVJUSUZJQ0FUSU9OX09OVVNcXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy02OS1cXHRib29sIFxcXCJjZmc4MDIxMSBjZXJ0aWZpY2F0aW9uIG9udXNcXFwiXFxuLS1cXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy04OC1cXG5uZXQvd2lyZWxlc3MvS2NvbmZpZzo4OTpjb25maWcgQ0ZHODAyMTFfUkVRVUlSRV9TSUdORURfUkVHREJcXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy05MC1cXHRib29sIFxcXCJyZXF1aXJlIHJlZ2RiIHNpZ25hdHVyZVxcXCIgaWYgQ0ZHODAyMTFfQ0VSVElGSUNBVElPTl9PTlVTXFxuLS1cXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy05OC1cXG5uZXQvd2lyZWxlc3MvS2NvbmZpZzo5OTpjb25maWcgQ0ZHODAyMTFfVVNFX0tFUk5FTF9SRUdEQl9LRVlTXFxubmV0L3dpcmVsZXNzL0tjb25maWctMTAwLVxcdGJvb2wgXFxcImFsbG93IHJlZ2RiIGtleXMgc2hpcHBlZCB3aXRoIHRoZSBrZXJuZWxcXFwiIGlmIENGRzgwMjExX0NFUlRJRklDQVRJT05fT05VU1xcbi0tXFxubmV0L3dpcmVsZXNzL0tjb25maWctMTEwLVxcbm5ldC93aXJlbGVzcy9LY29uZmlnOjExMTpjb25maWcgQ0ZHODAyMTFfRVhUUkFfUkVHREJfS0VZRElSXFxubmV0L3dpcmVsZXNzL0tjb25maWctMTEyLVxcdHN0cmluZyBcXFwiYWRkaXRpb25hbCByZWdkYiBrZXkgZGlyZWN0b3J5XFxcIiBpZiBDRkc4MDIxMV9DRVJUSUZJQ0FUSU9OX09OVVNcXG4tLVxcbm5ldC93aXJlbGVzcy9LY29uZmlnLTEyMS1cXG5uZXQvd2lyZWxlc3MvS2NvbmZpZzoxMjI6Y29uZmlnIENGRzgwMjExX1JFR19DRUxMVUxBUl9ISU5UU1xcbm5ldC93aXJlbGVzcy9LY29uZmlnLTEyMy1cXHRib29sIFxcXCJjZmc4MDIxMSByZWd1bGF0b3J5IHN1cHBvcnQgZm9yIGNlbGx1bGFyIGJhc2Ugc3RhdGlvbiBoaW50c1xcXCJcXG4tLVxcbm5ldC93aXJlbGVzcy9LY29uZmlnLTEzNC1cXG5uZXQvd2lyZWxlc3MvS2NvbmZpZzoxMzU6Y29uZmlnIENGRzgwMjExX1JFR19SRUxBWF9OT19JUlxcbm5ldC93aXJlbGVzcy9LY29uZmlnLTEzNi1cXHRib29sIFxcXCJjZmc4MDIxMSBzdXBwb3J0IGZvciBOT19JUiByZWxheGF0aW9uXFxcIlxcbi0tXFxubmV0L3dpcmVsZXNzL0tjb25maWctMTU4LVxcbm5ldC93aXJlbGVzcy9LY29uZmlnOjE1OTpjb25maWcgQ0ZHODAyMTFfREVGQVVMVF9QU1xcbm5ldC93aXJlbGVzcy9LY29uZmlnLTE2MC1cXHRib29sIFxcXCJlbmFibGUgcG93ZXJzYXZlIGJ5IGRlZmF1bHRcXFwiXFxuLS1cXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xNjgtXFxubmV0L3dpcmVsZXNzL0tjb25maWc6MTY5OmNvbmZpZyBDRkc4MDIxMV9ERUJVR0ZTXFxubmV0L3dpcmVsZXNzL0tjb25maWctMTcwLVxcdGJvb2wgXFxcImNmZzgwMjExIERlYnVnRlMgZW50cmllc1xcXCJcXG4tLVxcbm5ldC93aXJlbGVzcy9LY29uZmlnLTE3Ni1cXG5uZXQvd2lyZWxlc3MvS2NvbmZpZzoxNzc6Y29uZmlnIENGRzgwMjExX0NSREFfU1VQUE9SVFxcbm5ldC93aXJlbGVzcy9LY29uZmlnLTE3OC1cXHRib29sIFxcXCJzdXBwb3J0IENSREFcXFwiIGlmIEVYUEVSVFxcbi0tXFxubmV0L3dpcmVsZXNzL0tjb25maWctMTg2LVxcbm5ldC93aXJlbGVzcy9LY29uZmlnOjE4Nzpjb25maWcgQ0ZHODAyMTFfV0VYVFxcbm5ldC93aXJlbGVzcy9LY29uZmlnLTE4OC1cXHRib29sIFxcXCJjZmc4MDIxMSB3aXJlbGVzcyBleHRlbnNpb25zIGNvbXBhdGliaWxpdHlcXFwiXFxuLS1cXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xOTMtXFxubmV0L3dpcmVsZXNzL0tjb25maWc6MTk0OmNvbmZpZyBDRkc4MDIxMV9LVU5JVF9URVNUXFxubmV0L3dpcmVsZXNzL0tjb25maWctMTk1LVxcdHRyaXN0YXRlIFxcXCJLVW5pdCB0ZXN0cyBmb3IgY2ZnODAyMTFcXFwiIGlmICFLVU5JVF9BTExfVEVTVFNcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjlUMDY6MDI6NDMuOTYyMjM5MzI1WiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjQzMzM1NDkxNDcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBzdW1tYXJ5LCBhcyB0aG91Z2ggSSdtIHRoaW5raW5nIHRocm91Z2ggdGhpcyBwcm9jZXNzOlxuXG4qKkRpdmluZyBpbnRvIHRoZSBXaXJlbGVzcyBLZXJuZWwgQ29uZmlndXJhdGlvbioqXG5cbk9rYXksIHRpbWUgdG8gZ2V0IHRvIHdvcmsuIEkgbmVlZCB0byByZWZyZXNoIG15IG1lbW9yeSBvbiBzb21lIHdpcmVsZXNzIGNvbmZpZ3VyYXRpb24gZGV0YWlscy4gVGhlIGJlc3QgcGxhY2UgdG8gc3RhcnQgaXMgYWx3YXlzIHRoZSBgS2NvbmZpZ2AgZmlsZSwgcGFydGljdWxhcmx5IHRoZSBtYWluIG9uZSBpbiB0aGUgYG5ldC93aXJlbGVzc2AgZGlyZWN0b3J5LiBNeSBndXQgc2F5cyB0aGUga2V5IGNvbmZpZ3VyYXRpb25zIGFyZSBwcm9iYWJseSBuZWFyIHRoZSB0b3AuIExldCBtZSBqdW1wIHJpZ2h0IHRvIGxpbmUgMTcgb2YgYG5ldC93aXJlbGVzcy9LY29uZmlnYCBhbmQgc2VlIHdoYXQncyBkZWZpbmVkIHRoZXJlLiBIb3BlZnVsbHksIHRoYXQgc2hvdWxkIGdpdmUgbWUgYSBnb29kIGp1bXBpbmctb2ZmIHBvaW50IGFuZCB0aGUgcmVsZXZhbnQgY29uZmlndXJhdGlvbiBvcHRpb25zLiBUaW1lIHRvIGdldCBteSBiZWFyaW5ncyBhbmQgdW5kZXJzdGFuZCB3aGF0IGNvbnRyb2xzIGFyZSBpbiBwbGFjZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTA5NjIsIk91dHB1dFRva2VucyI6MzIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxOCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yOVQwNjowMjo0OC4yOTU3OTI2MjJaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTAwOTMwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcIm5ldC93aXJlbGVzcy9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEsXG4gIFwiTGluZUNvdW50XCI6IDM1XG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgIDE6XFx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuICAgMjpcXHRjb25maWcgV0lSRUxFU1NfRVhUXFxuICAgMzpcXHRcXHRib29sXFxuICAgNDpcXHRcXG4gICA1OlxcdGNvbmZpZyBXRVhUX0NPUkVcXG4gICA2OlxcdFxcdGRlZl9ib29sIHlcXG4gICA3OlxcdFxcdGRlcGVuZHMgb24gQ0ZHODAyMTFfV0VYVCB8fCBXSVJFTEVTU19FWFRcXG4gICA4OlxcdFxcbiAgIDk6XFx0Y29uZmlnIFdFWFRfUFJPQ1xcbiAgMTA6XFx0XFx0ZGVmX2Jvb2wgeVxcbiAgMTE6XFx0XFx0ZGVwZW5kcyBvbiBQUk9DX0ZTXFxuICAxMjpcXHRcXHRkZXBlbmRzIG9uIFdFWFRfQ09SRVxcbiAgMTM6XFx0XFxuICAxNDpcXHRjb25maWcgV0VYVF9QUklWXFxuICAxNTpcXHRcXHRib29sXFxuICAxNjpcXHRcXG4gIDE3OlxcdGNvbmZpZyBDRkc4MDIxMVxcbiAgMTg6XFx0XFx0dHJpc3RhdGUgXFxcImNmZzgwMjExIC0gd2lyZWxlc3MgY29uZmlndXJhdGlvbiBBUElcXFwiXFxuICAxOTpcXHRcXHRkZXBlbmRzIG9uIFJGS0lMTCB8fCAhUkZLSUxMXFxuICAyMDpcXHRcXHRzZWxlY3QgRldfTE9BREVSXFxuICAyMTpcXHRcXHRzZWxlY3QgQ1JDMzJcXG4gIDIyOlxcdFxcdCMgbWF5IG5lZWQgdG8gdXBkYXRlIHRoaXMgd2hlbiBjZXJ0aWZpY2F0ZXMgYXJlIGNoYW5nZWQgYW5kIGFyZVxcbiAgMjM6XFx0XFx0IyB1c2luZyBhIGRpZmZlcmVudCBhbGdvcml0aG0sIHRob3VnaCByaWdodCBub3cgdGhleSBzaG91bGRuJ3RcXG4gIDI0OlxcdFxcdCMgKHRoaXMgaXMgaGVyZSByYXRoZXIgdGhhbiBiZWxvdyB0byBhbGxvdyBpdCB0byBiZSBhIG1vZHVsZSlcXG4gIDI1OlxcdFxcdHNlbGVjdCBDUllQVE9fU0hBMjU2IGlmIENGRzgwMjExX1VTRV9LRVJORUxfUkVHREJfS0VZU1xcbiAgMjY6XFx0XFx0aGVscFxcbiAgMjc6XFx0XFx0ICBjZmc4MDIxMSBpcyB0aGUgTGludXggd2lyZWxlc3MgTEFOICg4MDIuMTEpIGNvbmZpZ3VyYXRpb24gQVBJLlxcbiAgMjg6XFx0XFx0ICBFbmFibGUgdGhpcyBpZiB5b3UgaGF2ZSBhIHdpcmVsZXNzIGRldmljZS5cXG4gIDI5OlxcdFxcbiAgMzA6XFx0XFx0ICBGb3IgbW9yZSBpbmZvcm1hdGlvbiByZWZlciB0byBkb2N1bWVudGF0aW9uIG9uIHRoZSB3aXJlbGVzcyB3aWtpOlxcbiAgMzE6XFx0XFxuICAzMjpcXHRcXHQgIGh0dHBzOi8vd2lyZWxlc3Mud2lraS5rZXJuZWwub3JnL2VuL2RldmVsb3BlcnMvRG9jdW1lbnRhdGlvbi9jZmc4MDIxMVxcbiAgMzM6XFx0XFxuICAzNDpcXHRcXHQgIFdoZW4gYnVpbHQgYXMgYSBtb2R1bGUgaXQgd2lsbCBiZSBjYWxsZWQgY2ZnODAyMTEuXFxuICAzNTpcXHRcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjlUMDY6MDI6NDguMjk1ODk1NjgyWiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjM4Njk5MDE2NTYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqSW52ZXN0aWdhdGluZyB0aGUgTUFDODAyMTEgSFdTSU0gQ29uZmlndXJhdGlvbioqXG5cbk9rYXksIHNvIEkgbmVlZCB0byBnZXQgYSBoYW5kbGUgb24gaG93IHRoaXMgYE1BQzgwMjExX0hXU0lNYCB0aGluZyBpcyBjb25maWd1cmVkLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gZGl2ZSBpbnRvIHRoZSBjb2RlIGl0c2VsZiwgc3RhcnRpbmcgd2l0aCBgZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbS5jYC4gSSBleHBlY3QgdG8gZmluZCB0aGUgcmVsZXZhbnQgY29uZmlndXJhdGlvbiBvcHRpb25zIG9yIGhvb2tzIGluIHRoZXJlLiBJJ20gZ29pbmcgdG8gdHJ5IGFuZCBwaW5wb2ludCBleGFjdGx5ICp3aGVyZSogdGhlIGBtYWM4MDIxMV9od3NpbWAgZnVuY3Rpb25hbGl0eSBpcyBpbml0aWFsaXplZCwgZW5hYmxlZCwgb3Igb3RoZXJ3aXNlIG1hbmFnZWQgd2l0aGluIHRoZSBicm9hZGVyIGtlcm5lbCBjb25maWd1cmF0aW9uIGZyYW1ld29yay4gRmluZGluZyB0aGF0IGNvbmZpZyBzZXR0aW5nIGlzIG15IHByaW1hcnkgb2JqZWN0aXZlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMTYzNCwiT3V0cHV0VG9rZW5zIjozNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjU5LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjlUMDY6MDI6NTIuMTY1ODAwMTg4WiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3NzY3Mjk4OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgTUFDODAyMTFfSFdTSU1cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3NcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9LY29uZmlnOjE6Y29uZmlnIE1BQzgwMjExX0hXU0lNXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9LY29uZmlnLTItXFx0dHJpc3RhdGUgXFxcIlNpbXVsYXRlZCByYWRpbyB0ZXN0aW5nIHRvb2wgZm9yIG1hYzgwMjExXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yOVQwNjowMjo1Mi4yNDM0ODAyMTZaIiwiU2VxIjoxOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NDgxNzQ4NzUyOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMuIEkgbmVlZCB0byBnZXQgYSBoYW5kbGUgb24gdGhlIGRlZnJhZ21lbnRhdGlvbiBhbmQgcmVjZWl2ZSBmcmFtZSBoYW5kbGluZyB3aXRoaW4gdGhlIGBuZXQvbWFjODAyMTEvcnguY2AgZmlsZS4gTXkgaW5pdGlhbCBmb2N1cyBpcyBvbiB0aGUgc3ltYm9scyBpbnZvbHZlZCBpbiB0aG9zZSBwcm9jZXNzZXMuIEkgd2FudCB0byBpZGVudGlmeSB0aGUga2V5IGZ1bmN0aW9uc+KAlHRoZSBvbmVzIHRoYXQgYXJlIGVpdGhlciBub24tc3RhdGljLCBpbmRpY2F0aW5nIHRoZXkncmUgbGlrZWx5IGNhbGxlZCBmcm9tIGVsc2V3aGVyZSwgb3IgdGhvc2UgYWN0aW5nIGFzIGVudHJ5IHBvaW50cy4gVGhpcyB3aWxsIGdpdmUgbWUgYSBiZXR0ZXIgb3ZlcnZpZXcgb2YgaG93IHRoZSBkZWZyYWdtZW50YXRpb24gYW5kIHJlY2VpdmUgZnJhbWUgbWVjaGFuaXNtcyBhcmUgc3RydWN0dXJlZCB3aXRoaW4gdGhpcyBtb2R1bGUuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBwdWJsaWMgaW50ZXJmYWNlcyBhbmQgdGhlIHN0YXJ0aW5nIHBvaW50cyBvZiB0aGlzIGNvZGUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjExOTM5LCJPdXRwdXRUb2tlbnMiOjM4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjlUMDY6MDI6NTcuMDYwOTcxNTM0WiIsIlNlcSI6MjAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1MDIxMDE0OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJpZWVlODAyMTFfcnhfXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9tYWM4MDIxMVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJcXG5GdWxsIG91dHB1dCBpcyB0b28gbG9uZywgc2hvd2luZyA1MDAgb3V0IG9mIDEyMzkgbGluZXMuXFxuVXNlIG1vcmUgcHJlY2lzZSBleHByZXNzaW9uIGlmIHBvc3NpYmxlLlxcblxcbm5ldC9tYWM4MDIxMS9hZ2ctcnguYz01MjI9RVhQT1JUX1NZTUJPTChpZWVlODAyMTFfbWFuYWdlX3J4X2JhX29mZmwpO1xcbm5ldC9tYWM4MDIxMS9hZ2ctcnguYy01MjMtXFxubmV0L21hYzgwMjExL2FnZy1yeC5jOjUyNDp2b2lkIGllZWU4MDIxMV9yeF9iYV90aW1lcl9leHBpcmVkKHN0cnVjdCBpZWVlODAyMTFfdmlmICp2aWYsXFxubmV0L21hYzgwMjExL2FnZy1yeC5jLTUyNS1cXHRcXHRcXHRcXHQgICBjb25zdCB1OCAqYWRkciwgdW5zaWduZWQgaW50IHRpZClcXG4tLVxcbm5ldC9tYWM4MDIxMS9hZ2ctcnguYy01NDAtfVxcbm5ldC9tYWM4MDIxMS9hZ2ctcnguYzo1NDE6RVhQT1JUX1NZTUJPTChpZWVlODAyMTFfcnhfYmFfdGltZXJfZXhwaXJlZCk7XFxuLS1cXG5uZXQvbWFjODAyMTEvYWlydGltZS5jPTUwNj1zdGF0aWMgdTMyIGllZWU4MDIxMV9nZXRfcmF0ZV9kdXJhdGlvbihzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcXG5uZXQvbWFjODAyMTEvYWlydGltZS5jOjUwNzpcXHRcXHRcXHRcXHQgICAgICAgc3RydWN0IGllZWU4MDIxMV9yeF9zdGF0dXMgKnN0YXR1cyxcXG5uZXQvbWFjODAyMTEvYWlydGltZS5jLTUwOC1cXHRcXHRcXHRcXHQgICAgICAgdTMyICpvdmVyaGVhZClcXG4tLVxcbm5ldC9tYWM4MDIxMS9haXJ0aW1lLmM9NTg1PXUzMiBpZWVlODAyMTFfY2FsY19yeF9haXJ0aW1lKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxcbm5ldC9tYWM4MDIxMS9haXJ0aW1lLmM6NTg2OlxcdFxcdFxcdCAgICAgIHN0cnVjdCBpZWVlODAyMTFfcnhfc3RhdHVzICpzdGF0dXMsXFxubmV0L21hYzgwMjExL2FpcnRpbWUuYy01ODctXFx0XFx0XFx0ICAgICAgaW50IGxlbilcXG4tLVxcbm5ldC9tYWM4MDIxMS9haXJ0aW1lLmM9NjI1PXN0YXRpYyBib29sIGllZWU4MDIxMV9maWxsX3JhdGVfaW5mbyhzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcXG5uZXQvbWFjODAyMTEvYWlydGltZS5jOjYyNjpcXHRcXHRcXHRcXHQgICAgIHN0cnVjdCBpZWVlODAyMTFfcnhfc3RhdHVzICpzdGF0LCB1OCBiYW5kLFxcbm5ldC9tYWM4MDIxMS9haXJ0aW1lLmMtNjI3LVxcdFxcdFxcdFxcdCAgICAgc3RydWN0IHJhdGVfaW5mbyAqcmkpXFxuLS1cXG5uZXQvbWFjODAyMTEvYWlydGltZS5jLTY3Ni1cXG5uZXQvbWFjODAyMTEvYWlydGltZS5jOjY3NzpzdGF0aWMgaW50IGllZWU4MDIxMV9maWxsX3J4X3N0YXR1cyhzdHJ1Y3QgaWVlZTgwMjExX3J4X3N0YXR1cyAqc3RhdCxcXG5uZXQvbWFjODAyMTEvYWlydGltZS5jLTY3OC1cXHRcXHRcXHRcXHQgICAgc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXFxuLS1cXG5uZXQvbWFjODAyMTEvYWlydGltZS5jPTcyMD1zdGF0aWMgdTMyIGllZWU4MDIxMV9jYWxjX3R4X2FpcnRpbWVfcmF0ZShzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcXG4tLVxcbm5ldC9tYWM4MDIxMS9haXJ0aW1lLmMtNzI0LXtcXG5uZXQvbWFjODAyMTEvYWlydGltZS5jOjcyNTpcXHRzdHJ1Y3QgaWVlZTgwMjExX3J4X3N0YXR1cyBzdGF0O1xcbm5ldC9tYWM4MDIxMS9haXJ0aW1lLmMtNzI2LVxcbi0tXFxubmV0L21hYzgwMjExL2FpcnRpbWUuYz03NTY9dTMyIGllZWU4MDIxMV9yYXRlX2V4cGVjdGVkX3R4X2FpcnRpbWUoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXFxuLS1cXG5uZXQvbWFjODAyMTEvYWlydGltZS5jLTc2MS17XFxubmV0L21hYzgwMjExL2FpcnRpbWUuYzo3NjI6XFx0c3RydWN0IGllZWU4MDIxMV9yeF9zdGF0dXMgc3RhdDtcXG5uZXQvbWFjODAyMTEvYWlydGltZS5jLTc2My1cXHR1MzIgZHVyYXRpb24sIG92ZXJoZWFkO1xcbi0tXFxubmV0L21hYzgwMjExL2FwLmM9NTA9c3RhdGljIHZvaWRcXG5uZXQvbWFjODAyMTEvYXAuYzo1MTppZWVlODAyMTFfcnhfZW1sX29wX21vZGVfbm90aWYoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsXFxubmV0L21hYzgwMjExL2FwLmMtNTItXFx0XFx0XFx0ICAgICAgIHN0cnVjdCBza19idWZmICpza2IpXFxuLS1cXG5uZXQvbWFjODAyMTEvYXAuYy01NS1cXHRlbnVtIG5sODAyMTFfaWZ0eXBlIHR5cGUgPSBpZWVlODAyMTFfdmlmX3R5cGVfcDJwKFxcdTAwMjZzZGF0YS1cXHUwMDNldmlmKTtcXG5uZXQvbWFjODAyMTEvYXAuYzo1NjpcXHRzdHJ1Y3QgaWVlZTgwMjExX3J4X3N0YXR1cyAqc3RhdHVzID0gSUVFRTgwMjExX1NLQl9SWENCKHNrYik7XFxubmV0L21hYzgwMjExL2FwLmMtNTctXFx0Y29uc3Qgc3RydWN0IHdpcGh5X2lmdHlwZV9leHRfY2FwYWIgKmlmdF9leHRfY2FwYTtcXG4tLVxcbm5ldC9tYWM4MDIxMS9hcC5jPTE5MD1zdGF0aWMgdm9pZFxcbm5ldC9tYWM4MDIxMS9hcC5jOjE5MTppZWVlODAyMTFfcnhfdWhyX2xpbmtfcmVjb25maWdfcmVxKHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLFxcbm5ldC9tYWM4MDIxMS9hcC5jLTE5Mi1cXHRcXHRcXHRcXHQgICBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbi0tXFxubmV0L21hYzgwMjExL2FwLmM9Mjk3PXZvaWQgaWVlZTgwMjExX2FwX3J4X3F1ZXVlZF9mcmFtZShzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSxcXG4tLVxcbm5ldC9tYWM4MDIxMS9hcC5jLTMwOS1cXHRcXHRjYXNlIFdMQU5fUFJPVEVDVEVEX0VIVF9BQ1RJT05fRU1MX09QX01PREVfTk9USUY6XFxubmV0L21hYzgwMjExL2FwLmM6MzEwOlxcdFxcdFxcdGllZWU4MDIxMV9yeF9lbWxfb3BfbW9kZV9ub3RpZihzZGF0YSwgc2tiKTtcXG5uZXQvbWFjODAyMTEvYXAuYy0zMTEtXFx0XFx0XFx0YnJlYWs7XFxuLS1cXG5uZXQvbWFjODAyMTEvYXAuYy0zMTYtXFx0XFx0Y2FzZSBJRUVFODAyMTFfUFJPVEVDVEVEX1VIUl9BQ1RJT05fTElOS19SRUNPTkZJR19SRVFVRVNUOlxcbm5ldC9tYWM4MDIxMS9hcC5jOjMxNzpcXHRcXHRcXHRpZWVlODAyMTFfcnhfdWhyX2xpbmtfcmVjb25maWdfcmVxKHNkYXRhLCBza2IpO1xcbm5ldC9tYWM4MDIxMS9hcC5jLTMxOC1cXHRcXHRcXHRicmVhaztcXG4tLVxcbm5ldC9tYWM4MDIxMS9kcm9wLmgtMTEtXFxubmV0L21hYzgwMjExL2Ryb3AuaDoxMjp0eXBlZGVmIHVuc2lnbmVkIGludCBfX2JpdHdpc2UgaWVlZTgwMjExX3J4X3Jlc3VsdDtcXG5uZXQvbWFjODAyMTEvZHJvcC5oLTEzLVxcbi0tXFxubmV0L21hYzgwMjExL2Ryb3AuaC0xMTItXFxubmV0L21hYzgwMjExL2Ryb3AuaDoxMTM6LyogaGF2aW5nIHR3byBlbnVtcyBhbGxvd3MgZm9yIGNoZWNraW5nIGllZWU4MDIxMV9yeF9yZXN1bHQgdXNlIHdpdGggc3BhcnNlICovXFxubmV0L21hYzgwMjExL2Ryb3AuaC0xMTQtZW51bSBfX19tYWM4MDIxMV9kcm9wX3JlYXNvbiB7XFxuLS1cXG5uZXQvbWFjODAyMTEvZHJvcC5oPTEyOD1lbnVtIG1hYzgwMjExX2Ryb3BfcmVhc29uIHtcXG5uZXQvbWFjODAyMTEvZHJvcC5oOjEyOTpcXHRSWF9DT05USU5VRVxcdD0gKF9fZm9yY2UgaWVlZTgwMjExX3J4X3Jlc3VsdClfX19SWF9DT05USU5VRSxcXG5uZXQvbWFjODAyMTEvZHJvcC5oOjEzMDpcXHRSWF9RVUVVRURcXHQ9IChfX2ZvcmNlIGllZWU4MDIxMV9yeF9yZXN1bHQpX19fUlhfUVVFVUVELFxcbm5ldC9tYWM4MDIxMS9kcm9wLmg6MTMxOiNkZWZpbmUgREVGKHgpIHggPSAoX19mb3JjZSBpZWVlODAyMTFfcnhfcmVzdWx0KV9fXyAjIyB4LFxcbm5ldC9tYWM4MDIxMS9kcm9wLmgtMTMyLVxcdE1BQzgwMjExX0RST1BfUkVBU09OU19VTlVTQUJMRShERUYpXFxuLS1cXG5uZXQvbWFjODAyMTEvaWJzcy5jPTg2Mj1zdGF0aWMgdm9pZFxcbm5ldC9tYWM4MDIxMS9pYnNzLmM6ODYzOmllZWU4MDIxMV9yeF9tZ210X3NwZWN0cnVtX21nbXQoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsXFxubmV0L21hYzgwMjExL2lic3MuYy04NjQtXFx0XFx0XFx0XFx0c3RydWN0IGllZWU4MDIxMV9tZ210ICptZ210LCBzaXplX3QgbGVuLFxcbm5ldC9tYWM4MDIxMS9pYnNzLmM6ODY1OlxcdFxcdFxcdFxcdHN0cnVjdCBpZWVlODAyMTFfcnhfc3RhdHVzICpyeF9zdGF0dXMsXFxubmV0L21hYzgwMjExL2lic3MuYy04NjYtXFx0XFx0XFx0XFx0c3RydWN0IGllZWU4MDJfMTFfZWxlbXMgKmVsZW1zKVxcbi0tXFxubmV0L21hYzgwMjExL2lic3MuYy04NzgtXFxubmV0L21hYzgwMjExL2lic3MuYzo4Nzk6c3RhdGljIHZvaWQgaWVlZTgwMjExX3J4X21nbXRfZGVhdXRoX2lic3Moc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsXFxubmV0L21hYzgwMjExL2lic3MuYy04ODAtXFx0XFx0XFx0XFx0XFx0ICBzdHJ1Y3QgaWVlZTgwMjExX21nbXQgKm1nbXQsXFxuLS1cXG5uZXQvbWFjODAyMTEvaWJzcy5jLTg5NC1cXG5uZXQvbWFjODAyMTEvaWJzcy5jOjg5NTpzdGF0aWMgdm9pZCBpZWVlODAyMTFfcnhfbWdtdF9hdXRoX2lic3Moc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsXFxubmV0L21hYzgwMjExL2lic3MuYy04OTYtXFx0XFx0XFx0XFx0XFx0c3RydWN0IGllZWU4MDIxMV9tZ210ICptZ210LFxcbi0tXFxubmV0L21hYzgwMjExL2lic3MuYz05MjY9c3RhdGljIHZvaWQgaWVlZTgwMjExX3VwZGF0ZV9zdGFfaW5mbyhzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSxcXG5uZXQvbWFjODAyMTEvaWJzcy5jLTkyNy1cXHRcXHRcXHRcXHQgICAgICBzdHJ1Y3QgaWVlZTgwMjExX21nbXQgKm1nbXQsIHNpemVfdCBsZW4sXFxubmV0L21hYzgwMjExL2lic3MuYzo5Mjg6XFx0XFx0XFx0XFx0ICAgICAgc3RydWN0IGllZWU4MDIxMV9yeF9zdGF0dXMgKnJ4X3N0YXR1cyxcXG5uZXQvbWFjODAyMTEvaWJzcy5jLTkyOS1cXHRcXHRcXHRcXHQgICAgICBzdHJ1Y3QgaWVlZTgwMl8xMV9lbGVtcyAqZWxlbXMsXFxuLS1cXG5uZXQvbWFjODAyMTEvaWJzcy5jLTEwNDUtXFxubmV0L21hYzgwMjExL2lic3MuYzoxMDQ2OnN0YXRpYyB2b2lkIGllZWU4MDIxMV9yeF9ic3NfaW5mbyhzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSxcXG5uZXQvbWFjODAyMTEvaWJzcy5jLTEwNDctXFx0XFx0XFx0XFx0ICBzdHJ1Y3QgaWVlZTgwMjExX21nbXQgKm1nbXQsIHNpemVfdCBsZW4sXFxubmV0L21hYzgwMjExL2lic3MuYzoxMDQ4OlxcdFxcdFxcdFxcdCAgc3RydWN0IGllZWU4MDIxMV9yeF9zdGF0dXMgKnJ4X3N0YXR1cyxcXG5uZXQvbWFjODAyMTEvaWJzcy5jLTEwNDktXFx0XFx0XFx0XFx0ICBzdHJ1Y3QgaWVlZTgwMl8xMV9lbGVtcyAqZWxlbXMpXFxuLS1cXG5uZXQvbWFjODAyMTEvaWJzcy5jLTExMzYtIHB1dF9ic3M6XFxubmV0L21hYzgwMjExL2lic3MuYzoxMTM3OlxcdGllZWU4MDIxMV9yeF9ic3NfcHV0KGxvY2FsLCBic3MpO1xcbm5ldC9tYWM4MDIxMS9pYnNzLmMtMTEzOC19XFxuLS1cXG5uZXQvbWFjODAyMTEvaWJzcy5jPTEzNjY9c3RhdGljIHZvaWQgaWVlZTgwMjExX3N0YV9maW5kX2lic3Moc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEpXFxuLS1cXG5uZXQvbWFjODAyMTEvaWJzcy5jLTE0MDUtXFx0XFx0aWVlZTgwMjExX3N0YV9qb2luX2lic3Moc2RhdGEsIGJzcyk7XFxubmV0L21hYzgwMjExL2lic3MuYzoxNDA2OlxcdFxcdGllZWU4MDIxMV9yeF9ic3NfcHV0KGxvY2FsLCBic3MpO1xcbm5ldC9tYWM4MDIxMS9pYnNzLmMtMTQwNy1cXHRcXHRyZXR1cm47XFxuLS1cXG5uZXQvbWFjODAyMTEvaWJzcy5jLTE0NTQtXFxubmV0L21hYzgwMjExL2lic3MuYzoxNDU1OnN0YXRpYyB2b2lkIGllZWU4MDIxMV9yeF9tZ210X3Byb2JlX3JlcShzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSxcXG5uZXQvbWFjODAyMTEvaWJzcy5jLTE0NTYtXFx0XFx0XFx0XFx0XFx0c3RydWN0IHNrX2J1ZmYgKnJlcSlcXG4tLVxcbm5ldC9tYWM4MDIxMS9pYnNzLmM9MTUyMT1zdGF0aWNcXG5uZXQvbWFjODAyMTEvaWJzcy5jOjE1MjI6dm9pZCBpZWVlODAyMTFfcnhfbWdtdF9wcm9iZV9iZWFjb24oc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsXFxubmV0L21hYzgwMjExL2lic3MuYy0xNTIzLVxcdFxcdFxcdFxcdCAgICBzdHJ1Y3QgaWVlZTgwMjExX21nbXQgKm1nbXQsIHNpemVfdCBsZW4sXFxubmV0L21hYzgwMjExL2lic3MuYzoxNTI0OlxcdFxcdFxcdFxcdCAgICBzdHJ1Y3QgaWVlZTgwMjExX3J4X3N0YXR1cyAqcnhfc3RhdHVzKVxcbm5ldC9tYWM4MDIxMS9pYnNzLmMtMTUyNS17XFxuLS1cXG5uZXQvbWFjODAyMTEvaWJzcy5jLTE1NDUtXFx0aWYgKGVsZW1zKSB7XFxubmV0L21hYzgwMjExL2lic3MuYzoxNTQ2OlxcdFxcdGllZWU4MDIxMV9yeF9ic3NfaW5mbyhzZGF0YSwgbWdtdCwgbGVuLCByeF9zdGF0dXMsIGVsZW1zKTtcXG5uZXQvbWFjODAyMTEvaWJzcy5jLTE1NDctXFx0XFx0a2ZyZWUoZWxlbXMpO1xcbi0tXFxubmV0L21hYzgwMjExL2lic3MuYz0xNTUxPXZvaWQgaWVlZTgwMjExX2lic3NfcnhfcXVldWVkX21nbXQoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsXFxuLS1cXG5uZXQvbWFjODAyMTEvaWJzcy5jLTE1NTMte1xcbm5ldC9tYWM4MDIxMS9pYnNzLmM6MTU1NDpcXHRzdHJ1Y3QgaWVlZTgwMjExX3J4X3N0YXR1cyAqcnhfc3RhdHVzO1xcbm5ldC9tYWM4MDIxMS9pYnNzLmMtMTU1NS1cXHRzdHJ1Y3QgaWVlZTgwMjExX21nbXQgKm1nbXQ7XFxuLS1cXG5uZXQvbWFjODAyMTEvaWJzcy5jLTE1NjgtXFx0Y2FzZSBJRUVFODAyMTFfU1RZUEVfUFJPQkVfUkVROlxcbm5ldC9tYWM4MDIxMS9pYnNzLmM6MTU2OTpcXHRcXHRpZWVlODAyMTFfcnhfbWdtdF9wcm9iZV9yZXEoc2RhdGEsIHNrYik7XFxubmV0L21hYzgwMjExL2lic3MuYy0xNTcwLVxcdFxcdGJyZWFrO1xcbi0tXFxubmV0L21hYzgwMjExL2lic3MuYy0xNTcyLVxcdGNhc2UgSUVFRTgwMjExX1NUWVBFX0JFQUNPTjpcXG5uZXQvbWFjODAyMTEvaWJzcy5jOjE1NzM6XFx0XFx0aWVlZTgwMjExX3J4X21nbXRfcHJvYmVfYmVhY29uKHNkYXRhLCBtZ210LCBza2ItXFx1MDAzZWxlbixcXG5uZXQvbWFjODAyMTEvaWJzcy5jLTE1NzQtXFx0XFx0XFx0XFx0XFx0ICAgICAgIHJ4X3N0YXR1cyk7XFxuLS1cXG5uZXQvbWFjODAyMTEvaWJzcy5jLTE1NzYtXFx0Y2FzZSBJRUVFODAyMTFfU1RZUEVfQVVUSDpcXG5uZXQvbWFjODAyMTEvaWJzcy5jOjE1Nzc6XFx0XFx0aWVlZTgwMjExX3J4X21nbXRfYXV0aF9pYnNzKHNkYXRhLCBtZ210LCBza2ItXFx1MDAzZWxlbik7XFxubmV0L21hYzgwMjExL2lic3MuYy0xNTc4LVxcdFxcdGJyZWFrO1xcbm5ldC9tYWM4MDIxMS9pYnNzLmMtMTU3OS1cXHRjYXNlIElFRUU4MDIxMV9TVFlQRV9ERUFVVEg6XFxubmV0L21hYzgwMjExL2lic3MuYzoxNTgwOlxcdFxcdGllZWU4MDIxMV9yeF9tZ210X2RlYXV0aF9pYnNzKHNkYXRhLCBtZ210LCBza2ItXFx1MDAzZWxlbik7XFxubmV0L21hYzgwMjExL2lic3MuYy0xNTgxLVxcdFxcdGJyZWFrO1xcbi0tXFxubmV0L21hYzgwMjExL2lic3MuYy0xNTk4LVxcdFxcdFxcdGlmIChlbGVtcyBcXHUwMDI2XFx1MDAyNiAhZWxlbXMtXFx1MDAzZXBhcnNlX2Vycm9yKVxcbm5ldC9tYWM4MDIxMS9pYnNzLmM6MTU5OTpcXHRcXHRcXHRcXHRpZWVlODAyMTFfcnhfbWdtdF9zcGVjdHJ1bV9tZ210KHNkYXRhLCBtZ210LFxcbm5ldC9tYWM4MDIxMS9pYnNzLmMtMTYwMC1cXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRza2ItXFx1MDAzZWxlbixcXG4tLVxcbm5ldC9tYWM4MDIxMS9pZWVlODAyMTFfaS5oPTE4Mj1zdHJ1Y3QgaWVlZTgwMjExX3R4X2RhdGEge1xcbi0tXFxubmV0L21hYzgwMjExL2llZWU4MDIxMV9pLmgtMjAwLSAqIFRoZXNlIGFyZSBwZXItZnJhbWUgZmxhZ3MgdGhhdCBhcmUgYXR0YWNoZWQgdG8gYSBmcmFtZSBpbiB0aGVcXG5uZXQvbWFjODAyMTEvaWVlZTgwMjExX2kuaDoyMDE6ICogQHJ4X2ZsYWdzIGZpZWxkIG9mIFxcdTAwMjZzdHJ1Y3QgaWVlZTgwMjExX3J4X3N0YXR1cy5cXG5uZXQvbWFjODAyMTEvaWVlZTgwMjExX2kuaC0yMDItICovXFxubmV0L21hYzgwMjExL2llZWU4MDIxMV9pLmg9MjAzPWVudW0gaWVlZTgwMjExX3BhY2tldF9yeF9mbGFncyB7XFxuLS1cXG5uZXQvbWFjODAyMTEvaWVlZTgwMjExX2kuaC0yMDktLyoqXFxubmV0L21hYzgwMjExL2llZWU4MDIxMV9pLmg6MjEwOiAqIGVudW0gaWVlZTgwMjExX3J4X2ZsYWdzIC0gUlggZGF0YSBmbGFnc1xcbm5ldC9tYWM4MDIxMS9pZWVlODAyMTFfaS5oLTIxMS0gKlxcbi0tXFxubmV0L21hYzgwMjExL2llZWU4MDIxMV9pLmgtMjE3LSAqL1xcbm5ldC9tYWM4MDIxMS9pZWVlODAyMTFfaS5oOjIxODplbnVtIGllZWU4MDIxMV9yeF9mbGFncyB7XFxubmV0L21hYzgwMjExL2llZWU4MDIxMV9pLmgtMjE5LVxcdElFRUU4MDIxMV9SWF9CRUFDT05fUkVQT1JURURcXHQ9IEJJVCgwKSxcXG4tLVxcbm5ldC9tYWM4MDIxMS9pZWVlODAyMTFfaS5oLTIyMS1cXG5uZXQvbWFjODAyMTEvaWVlZTgwMjExX2kuaDoyMjI6c3RydWN0IGllZWU4MDIxMV9yeF9kYXRhIHtcXG5uZXQvbWFjODAyMTEvaWVlZTgwMjExX2kuaC0yMjMtXFx0c3RydWN0IGxpc3RfaGVhZCAqbGlzdDtcXG4tLVxcbm5ldC9tYWM4MDIxMS9pZWVlODAyMTFfaS5oPTcyMD1zdHJ1Y3QgaWVlZTgwMjExX21lc2hfc3luY19vcHMge1xcbi0tXFxubmV0L21hYzgwMjExL2llZWU4MDIxMV9pLmgtNzIzLVxcdFxcdFxcdCAgICAgY29uc3Qgc3RydWN0IGllZWU4MDIxMV9tZXNoY29uZl9pZSAqbWVzaF9jZmcsXFxubmV0L21hYzgwMjExL2llZWU4MDIxMV9pLmg6NzI0OlxcdFxcdFxcdCAgICAgc3RydWN0IGllZWU4MDIxMV9yeF9zdGF0dXMgKnJ4X3N0YXR1cyk7XFxubmV0L21hYzgwMjExL2llZWU4MDIxMV9pLmgtNzI1LVxcbi0tXFxubmV0L21hYzgwMjExL2llZWU4MDIxMV9pLmg9MTk0ND1zdGF0aWMgaW5saW5lIGJvb2xcXG5uZXQvbWFjODAyMTEvaWVlZTgwMjExX2kuaDoxOTQ1OmllZWU4MDIxMV9oYXZlX3J4X3RpbWVzdGFtcChzdHJ1Y3QgaWVlZTgwMjExX3J4X3N0YXR1cyAqc3RhdHVzKVxcbm5ldC9tYWM4MDIxMS9pZWVlODAyMTFfaS5oLTE5NDYte1xcbi0tXFxubmV0L21hYzgwMjExL2llZWU4MDIxMV9pLmg9MjEyND1pZWVlODAyMTFfYnNzX2luZm9fdXBkYXRlKHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsLFxcbm5ldC9tYWM4MDIxMS9pZWVlODAyMTFfaS5oOjIxMjU6XFx0XFx0XFx0ICBzdHJ1Y3QgaWVlZTgwMjExX3J4X3N0YXR1cyAqcnhfc3RhdHVzLFxcbm5ldC9tYWM4MDIxMS9pZWVlODAyMTFfaS5oLTIxMjYtXFx0XFx0XFx0ICBzdHJ1Y3QgaWVlZTgwMjExX21nbXQgKm1nbXQsXFxuLS1cXG5uZXQvbWFjODAyMTEvaWVlZTgwMjExX2kuaC0yMTI4LVxcdFxcdFxcdCAgc3RydWN0IGllZWU4MDIxMV9jaGFubmVsICpjaGFubmVsKTtcXG5uZXQvbWFjODAyMTEvaWVlZTgwMjExX2kuaDoyMTI5OnZvaWQgaWVlZTgwMjExX3J4X2Jzc19wdXQoc3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwsXFxubmV0L21hYzgwMjExL2llZWU4MDIxMV9pLmgtMjEzMC1cXHRcXHRcXHQgIHN0cnVjdCBpZWVlODAyMTFfYnNzICpic3MpO1xcbi0tXFxubmV0L21hYzgwMjExL2llZWU4MDIxMV9pLmg9Mjk4MD1pZWVlODAyMTFfdWhyX2NhcF9pZV90b19zdGFfdWhyX2NhcChzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSxcXG4tLVxcbm5ldC9tYWM4MDIxMS9pZWVlODAyMTFfaS5oLTI5ODgtI2RlZmluZSBWSVNJQkxFX0lGX01BQzgwMjExX0tVTklUXFxubmV0L21hYzgwMjExL2llZWU4MDIxMV9pLmg6Mjk4OTppZWVlODAyMTFfcnhfcmVzdWx0XFxubmV0L21hYzgwMjExL2llZWU4MDIxMV9pLmg6Mjk5MDppZWVlODAyMTFfZHJvcF91bmVuY3J5cHRlZF9tZ210KHN0cnVjdCBpZWVlODAyMTFfcnhfZGF0YSAqcngpO1xcbm5ldC9tYWM4MDIxMS9pZWVlODAyMTFfaS5oLTI5OTEtaW50IGllZWU4MDIxMV9jYWxjX2NoYW5kZWZfc3ViY2hhbl9vZmZzZXQoY29uc3Qgc3RydWN0IGNmZzgwMjExX2NoYW5fZGVmICphcCxcXG4tLVxcbm5ldC9tYWM4MDIxMS9pZmFjZS5jPTE2MjY9c3RhdGljIHZvaWQgaWVlZTgwMjExX2lmYWNlX3Byb2Nlc3Nfc2tiKHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsLFxcbi0tXFxubmV0L21hYzgwMjExL2lmYWNlLmMtMTY2Ni1cXHRcXHRcXHR1OCBjaGFud2lkdGggPSBtZ210LVxcdTAwM2V1LmFjdGlvbi5odF9ub3RpZnlfY3cuY2hhbndpZHRoO1xcbm5ldC9tYWM4MDIxMS9pZmFjZS5jOjE2Njc6XFx0XFx0XFx0c3RydWN0IGllZWU4MDIxMV9yeF9zdGF0dXMgKnN0YXR1cztcXG5uZXQvbWFjODAyMTEvaWZhY2UuYy0xNjY4LVxcdFxcdFxcdHN0cnVjdCBsaW5rX3N0YV9pbmZvICpsaW5rX3N0YTtcXG4tLVxcbm5ldC9tYWM4MDIxMS9pZmFjZS5jLTE2OTQtXFx0XFx0Y2FzZSBXTEFOX1ZIVF9BQ1RJT05fT1BNT0RFX05PVElGOiB7XFxubmV0L21hYzgwMjExL2lmYWNlLmM6MTY5NTpcXHRcXHRcXHRzdHJ1Y3QgaWVlZTgwMjExX3J4X3N0YXR1cyAqc3RhdHVzO1xcbm5ldC9tYWM4MDIxMS9pZmFjZS5jLTE2OTYtXFx0XFx0XFx0ZW51bSBubDgwMjExX2JhbmQgYmFuZDtcXG4tLVxcbm5ldC9tYWM4MDIxMS9sZWQuYz02Mz1zdGF0aWMgdm9pZCBpZWVlODAyMTFfdHhfbGVkX2RlYWN0aXZhdGUoc3RydWN0IGxlZF9jbGFzc2RldiAqbGVkX2NkZXYpXFxuLS1cXG5uZXQvbWFjODAyMTEvbGVkLmMtNzEtXFxubmV0L21hYzgwMjExL2xlZC5jOjcyOnN0YXRpYyBpbnQgaWVlZTgwMjExX3J4X2xlZF9hY3RpdmF0ZShzdHJ1Y3QgbGVkX2NsYXNzZGV2ICpsZWRfY2RldilcXG5uZXQvbWFjODAyMTEvbGVkLmMtNzMte1xcbi0tXFxubmV0L21hYzgwMjExL2xlZC5jLTgyLVxcbm5ldC9tYWM4MDIxMS9sZWQuYzo4MzpzdGF0aWMgdm9pZCBpZWVlODAyMTFfcnhfbGVkX2RlYWN0aXZhdGUoc3RydWN0IGxlZF9jbGFzc2RldiAqbGVkX2NkZXYpXFxubmV0L21hYzgwMjExL2xlZC5jLTg0LXtcXG4tLVxcbm5ldC9tYWM4MDIxMS9sZWQuYz0xNTI9dm9pZCBpZWVlODAyMTFfbGVkX2luaXQoc3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwpXFxuLS1cXG5uZXQvbWFjODAyMTEvbGVkLmMtMTU0LVxcdGF0b21pY19zZXQoXFx1MDAyNmxvY2FsLVxcdTAwM2VyeF9sZWRfYWN0aXZlLCAwKTtcXG5uZXQvbWFjODAyMTEvbGVkLmM6MTU1OlxcdGxvY2FsLVxcdTAwM2VyeF9sZWQuYWN0aXZhdGUgPSBpZWVlODAyMTFfcnhfbGVkX2FjdGl2YXRlO1xcbm5ldC9tYWM4MDIxMS9sZWQuYzoxNTY6XFx0bG9jYWwtXFx1MDAzZXJ4X2xlZC5kZWFjdGl2YXRlID0gaWVlZTgwMjExX3J4X2xlZF9kZWFjdGl2YXRlO1xcbm5ldC9tYWM4MDIxMS9sZWQuYy0xNTctXFx0aWYgKGxvY2FsLVxcdTAwM2VyeF9sZWQubmFtZSBcXHUwMDI2XFx1MDAyNiBsZWRfdHJpZ2dlcl9yZWdpc3RlcihcXHUwMDI2bG9jYWwtXFx1MDAzZXJ4X2xlZCkpIHtcXG4tLVxcbm5ldC9tYWM4MDIxMS9tZXNoLmM9MTQ0ND1zdGF0aWMgdm9pZCBpZWVlODAyMTFfbWVzaF9yeF9iY25fcHJlc3Aoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsXFxuLS1cXG5uZXQvbWFjODAyMTEvbWVzaC5jLTE0NDYtXFx0XFx0XFx0XFx0XFx0c2l6ZV90IGxlbixcXG5uZXQvbWFjODAyMTEvbWVzaC5jOjE0NDc6XFx0XFx0XFx0XFx0XFx0c3RydWN0IGllZWU4MDIxMV9yeF9zdGF0dXMgKnJ4X3N0YXR1cylcXG5uZXQvbWFjODAyMTEvbWVzaC5jLTE0NDgte1xcbi0tXFxubmV0L21hYzgwMjExL21lc2guYz0xNjQ5PXN0YXRpYyB2b2lkIGllZWU4MDIxMV9tZXNoX3J4X21nbXRfYWN0aW9uKHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLFxcbi0tXFxubmV0L21hYzgwMjExL21lc2guYy0xNjUxLVxcdFxcdFxcdFxcdFxcdCAgc2l6ZV90IGxlbixcXG5uZXQvbWFjODAyMTEvbWVzaC5jOjE2NTI6XFx0XFx0XFx0XFx0XFx0ICBzdHJ1Y3QgaWVlZTgwMjExX3J4X3N0YXR1cyAqcnhfc3RhdHVzKVxcbm5ldC9tYWM4MDIxMS9tZXNoLmMtMTY1My17XFxuLS1cXG5uZXQvbWFjODAyMTEvbWVzaC5jPTE2NzQ9dm9pZCBpZWVlODAyMTFfbWVzaF9yeF9xdWV1ZWRfbWdtdChzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSxcXG4tLVxcbm5ldC9tYWM4MDIxMS9tZXNoLmMtMTY3Ni17XFxubmV0L21hYzgwMjExL21lc2guYzoxNjc3OlxcdHN0cnVjdCBpZWVlODAyMTFfcnhfc3RhdHVzICpyeF9zdGF0dXM7XFxubmV0L21hYzgwMjExL21lc2guYy0xNjc4LVxcdHN0cnVjdCBpZWVlODAyMTFfbWdtdCAqbWdtdDtcXG4tLVxcbm5ldC9tYWM4MDIxMS9tZXNoLmg9MzMyPXZvaWQgbWVzaF9uZWlnaGJvdXJfdXBkYXRlKHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLFxcbm5ldC9tYWM4MDIxMS9tZXNoLmgtMzMzLVxcdFxcdFxcdCAgIHU4ICpod19hZGRyLCBzdHJ1Y3QgaWVlZTgwMl8xMV9lbGVtcyAqaWUsXFxubmV0L21hYzgwMjExL21lc2guaDozMzQ6XFx0XFx0XFx0ICAgc3RydWN0IGllZWU4MDIxMV9yeF9zdGF0dXMgKnJ4X3N0YXR1cyk7XFxubmV0L21hYzgwMjExL21lc2guaC0zMzUtYm9vbCBtZXNoX3BlZXJfYWNjZXB0c19wbGlua3Moc3RydWN0IGllZWU4MDJfMTFfZWxlbXMgKmllKTtcXG4tLVxcbm5ldC9tYWM4MDIxMS9tZXNoLmg9MzQyPXZvaWQgbWVzaF9yeF9wbGlua19mcmFtZShzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSxcXG5uZXQvbWFjODAyMTEvbWVzaC5oLTM0My1cXHRcXHRcXHQgc3RydWN0IGllZWU4MDIxMV9tZ210ICptZ210LCBzaXplX3QgbGVuLFxcbm5ldC9tYWM4MDIxMS9tZXNoLmg6MzQ0OlxcdFxcdFxcdCBzdHJ1Y3QgaWVlZTgwMjExX3J4X3N0YXR1cyAqcnhfc3RhdHVzKTtcXG5uZXQvbWFjODAyMTEvbWVzaC5oLTM0NS12b2lkIG1lc2hfc3RhX2NsZWFudXAoc3RydWN0IHN0YV9pbmZvICpzdGEpO1xcbi0tXFxubmV0L21hYzgwMjExL21lc2hfcGxpbmsuYz01NTE9bWVzaF9zdGFfaW5mb19hbGxvYyhzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSwgdTggKmFkZHIsXFxubmV0L21hYzgwMjExL21lc2hfcGxpbmsuYy01NTItXFx0XFx0ICAgIHN0cnVjdCBpZWVlODAyXzExX2VsZW1zICplbGVtcyxcXG5uZXQvbWFjODAyMTEvbWVzaF9wbGluay5jOjU1MzpcXHRcXHQgICAgc3RydWN0IGllZWU4MDIxMV9yeF9zdGF0dXMgKnJ4X3N0YXR1cylcXG5uZXQvbWFjODAyMTEvbWVzaF9wbGluay5jLTU1NC17XFxuLS1cXG5uZXQvbWFjODAyMTEvbWVzaF9wbGluay5jPTU5MD1tZXNoX3N0YV9pbmZvX2dldChzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSxcXG5uZXQvbWFjODAyMTEvbWVzaF9wbGluay5jLTU5MS1cXHRcXHQgIHU4ICphZGRyLCBzdHJ1Y3QgaWVlZTgwMl8xMV9lbGVtcyAqZWxlbXMsXFxubmV0L21hYzgwMjExL21lc2hfcGxpbmsuYzo1OTI6XFx0XFx0ICBzdHJ1Y3QgaWVlZTgwMjExX3J4X3N0YXR1cyAqcnhfc3RhdHVzKSBfX2FjcXVpcmVzKFJDVSlcXG5uZXQvbWFjODAyMTEvbWVzaF9wbGluay5jLTU5My17XFxuLS1cXG5uZXQvbWFjODAyMTEvbWVzaF9wbGluay5jPTYyOD12b2lkIG1lc2hfbmVpZ2hib3VyX3VwZGF0ZShzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSxcXG4tLVxcbm5ldC9tYWM4MDIxMS9tZXNoX3BsaW5rLmMtNjMwLVxcdFxcdFxcdCAgIHN0cnVjdCBpZWVlODAyXzExX2VsZW1zICplbGVtcyxcXG5uZXQvbWFjODAyMTEvbWVzaF9wbGluay5jOjYzMTpcXHRcXHRcXHQgICBzdHJ1Y3QgaWVlZTgwMjExX3J4X3N0YXR1cyAqcnhfc3RhdHVzKVxcbm5ldC9tYWM4MDIxMS9tZXNoX3BsaW5rLmMtNjMyLXtcXG4tLVxcbm5ldC9tYWM4MDIxMS9tZXNoX3BsaW5rLmM9MTEyMD1tZXNoX3Byb2Nlc3NfcGxpbmtfZnJhbWUoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsXFxuLS1cXG5uZXQvbWFjODAyMTEvbWVzaF9wbGluay5jLTExMjItXFx0XFx0XFx0IHN0cnVjdCBpZWVlODAyXzExX2VsZW1zICplbGVtcyxcXG5uZXQvbWFjODAyMTEvbWVzaF9wbGluay5jOjExMjM6XFx0XFx0XFx0IHN0cnVjdCBpZWVlODAyMTFfcnhfc3RhdHVzICpyeF9zdGF0dXMpXFxubmV0L21hYzgwMjExL21lc2hfcGxpbmsuYy0xMTI0LXtcXG4tLVxcbm5ldC9tYWM4MDIxMS9tZXNoX3BsaW5rLmM9MTIyMT12b2lkIG1lc2hfcnhfcGxpbmtfZnJhbWUoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsXFxubmV0L21hYzgwMjExL21lc2hfcGxpbmsuYy0xMjIyLVxcdFxcdFxcdCBzdHJ1Y3QgaWVlZTgwMjExX21nbXQgKm1nbXQsIHNpemVfdCBsZW4sXFxubmV0L21hYzgwMjExL21lc2hfcGxpbmsuYzoxMjIzOlxcdFxcdFxcdCBzdHJ1Y3QgaWVlZTgwMjExX3J4X3N0YXR1cyAqcnhfc3RhdHVzKVxcbm5ldC9tYWM4MDIxMS9tZXNoX3BsaW5rLmMtMTIyNC17XFxuLS1cXG5uZXQvbWFjODAyMTEvbWVzaF9zeW5jLmM9ODM9bWVzaF9zeW5jX29mZnNldF9yeF9iY25fcHJlc3Aoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsIHUxNiBzdHlwZSxcXG4tLVxcbm5ldC9tYWM4MDIxMS9tZXNoX3N5bmMuYy04NS1cXHRcXHRcXHQgICAgICBjb25zdCBzdHJ1Y3QgaWVlZTgwMjExX21lc2hjb25mX2llICptZXNoX2NmZyxcXG5uZXQvbWFjODAyMTEvbWVzaF9zeW5jLmM6ODY6XFx0XFx0XFx0ICAgICAgc3RydWN0IGllZWU4MDIxMV9yeF9zdGF0dXMgKnJ4X3N0YXR1cylcXG5uZXQvbWFjODAyMTEvbWVzaF9zeW5jLmMtODcte1xcbi0tXFxubmV0L21hYzgwMjExL21sbWUuYz01Mzg2PXN0YXRpYyBib29sIGllZWU4MDIxMV9tYXJrX3N0YV9hdXRoKHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhKVxcbi0tXFxubmV0L21hYzgwMjExL21sbWUuYy01NDEzLVxcbm5ldC9tYWM4MDIxMS9tbG1lLmM6NTQxNDpzdGF0aWMgdm9pZCBpZWVlODAyMTFfcnhfbWdtdF9hdXRoKHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLFxcbm5ldC9tYWM4MDIxMS9tbG1lLmMtNTQxNS1cXHRcXHRcXHRcXHQgICBzdHJ1Y3QgaWVlZTgwMjExX21nbXQgKm1nbXQsIHNpemVfdCBsZW4pXFxuLS1cXG5uZXQvbWFjODAyMTEvbWxtZS5jPTU1OTI9Y29uc3QgY2hhciAqaWVlZTgwMjExX2dldF9yZWFzb25fY29kZV9zdHJpbmcodTE2IHJlYXNvbl9jb2RlKVxcbi0tXFxubmV0L21hYzgwMjExL21sbWUuYy01NjQ1LVxcbm5ldC9tYWM4MDIxMS9tbG1lLmM6NTY0NjpzdGF0aWMgdm9pZCBpZWVlODAyMTFfcnhfbWdtdF9kZWF1dGgoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsXFxubmV0L21hYzgwMjExL21sbWUuYy01NjQ3LVxcdFxcdFxcdFxcdCAgICAgc3RydWN0IGllZWU4MDIxMV9tZ210ICptZ210LCBzaXplX3QgbGVuKVxcbi0tXFxubmV0L21hYzgwMjExL21sbWUuYy01NjkxLVxcbm5ldC9tYWM4MDIxMS9tbG1lLmM6NTY5MjpzdGF0aWMgdm9pZCBpZWVlODAyMTFfcnhfbWdtdF9kaXNhc3NvYyhzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSxcXG5uZXQvbWFjODAyMTEvbWxtZS5jLTU2OTMtXFx0XFx0XFx0XFx0ICAgICAgIHN0cnVjdCBpZWVlODAyMTFfbWdtdCAqbWdtdCwgc2l6ZV90IGxlbilcXG4tLVxcbm5ldC9tYWM4MDIxMS9tbG1lLmM9Njk3OT1zdGF0aWMgYm9vbCBpZWVlODAyMTFfYXNzb2Nfc3VjY2VzcyhzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSxcXG4tLVxcbm5ldC9tYWM4MDIxMS9tbG1lLmMtNzE4OS1cXG5uZXQvbWFjODAyMTEvbWxtZS5jOjcxOTA6c3RhdGljIHZvaWQgaWVlZTgwMjExX3J4X21nbXRfYXNzb2NfcmVzcChzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSxcXG5uZXQvbWFjODAyMTEvbWxtZS5jLTcxOTEtXFx0XFx0XFx0XFx0XFx0IHN0cnVjdCBpZWVlODAyMTFfbWdtdCAqbWdtdCxcXG4tLVxcbm5ldC9tYWM4MDIxMS9tbG1lLmMtNzQyNS1cXG5uZXQvbWFjODAyMTEvbWxtZS5jOjc0MjY6c3RhdGljIHZvaWQgaWVlZTgwMjExX3J4X2Jzc19pbmZvKHN0cnVjdCBpZWVlODAyMTFfbGlua19kYXRhICpsaW5rLFxcbm5ldC9tYWM4MDIxMS9tbG1lLmMtNzQyNy1cXHRcXHRcXHRcXHQgIHN0cnVjdCBpZWVlODAyMTFfbWdtdCAqbWdtdCwgc2l6ZV90IGxlbixcXG5uZXQvbWFjODAyMTEvbWxtZS5jOjc0Mjg6XFx0XFx0XFx0XFx0ICBzdHJ1Y3QgaWVlZTgwMjExX3J4X3N0YXR1cyAqcnhfc3RhdHVzKVxcbm5ldC9tYWM4MDIxMS9tbG1lLmMtNzQyOS17XFxuLS1cXG5uZXQvbWFjODAyMTEvbWxtZS5jLTc0MzctXFx0Y2hhbm5lbCA9IGllZWU4MDIxMV9nZXRfY2hhbm5lbF9raHoobG9jYWwtXFx1MDAzZWh3LndpcGh5LFxcbm5ldC9tYWM4MDIxMS9tbG1lLmM6NzQzODpcXHRcXHRcXHRcXHRcXHRpZWVlODAyMTFfcnhfc3RhdHVzX3RvX2toeihyeF9zdGF0dXMpKTtcXG5uZXQvbWFjODAyMTEvbWxtZS5jLTc0MzktXFx0aWYgKCFjaGFubmVsKVxcbi0tXFxubmV0L21hYzgwMjExL21sbWUuYy03NDQ0LVxcdFxcdGxpbmstXFx1MDAzZWNvbmYtXFx1MDAzZWJlYWNvbl9yYXRlID0gYnNzLVxcdTAwM2ViZWFjb25fcmF0ZTtcXG5uZXQvbWFjODAyMTEvbWxtZS5jOjc0NDU6XFx0XFx0aWVlZTgwMjExX3J4X2Jzc19wdXQobG9jYWwsIGJzcyk7XFxubmV0L21hYzgwMjExL21sbWUuYy03NDQ2LVxcdH1cXG4tLVxcbm5ldC9tYWM4MDIxMS9tbG1lLmMtNzQ0OS1cXG5uZXQvbWFjODAyMTEvbWxtZS5jOjc0NTA6c3RhdGljIHZvaWQgaWVlZTgwMjExX3J4X21nbXRfcHJvYmVfcmVzcChzdHJ1Y3QgaWVlZTgwMjExX2xpbmtfZGF0YSAqbGluayxcXG5uZXQvbWFjODAyMTEvbWxtZS5jLTc0NTEtXFx0XFx0XFx0XFx0XFx0IHN0cnVjdCBza19idWZmICpza2IpXFxuLS1cXG5uZXQvbWFjODAyMTEvbWxtZS5jLTc0NTUtXFx0c3RydWN0IGllZWU4MDIxMV9pZl9tYW5hZ2VkICppZm1nZDtcXG5uZXQvbWFjODAyMTEvbWxtZS5jOjc0NTY6XFx0c3RydWN0IGllZWU4MDIxMV9yeF9zdGF0dXMgKnJ4X3N0YXR1cyA9ICh2b2lkICopIHNrYi1cXHUwMDNlY2I7XFxubmV0L21hYzgwMjExL21sbWUuYy03NDU3LVxcdHN0cnVjdCBpZWVlODAyMTFfY2hhbm5lbCAqY2hhbm5lbDtcXG4tLVxcbm5ldC9tYWM4MDIxMS9tbG1lLmMtNzQ3MS1cXHRjaGFubmVsID0gaWVlZTgwMjExX2dldF9jaGFubmVsX2toeihzZGF0YS1cXHUwMDNlbG9jYWwtXFx1MDAzZWh3LndpcGh5LFxcbm5ldC9tYWM4MDIxMS9tbG1lLmM6NzQ3MjpcXHRcXHRcXHRcXHRcXHQgICAgaWVlZTgwMjExX3J4X3N0YXR1c190b19raHoocnhfc3RhdHVzKSk7XFxubmV0L21hYzgwMjExL21sbWUuYy03NDczLVxcdGlmICghY2hhbm5lbClcXG4tLVxcbm5ldC9tYWM4MDIxMS9tbG1lLmMtNzQ4NC1cXG5uZXQvbWFjODAyMTEvbWxtZS5jOjc0ODU6XFx0aWVlZTgwMjExX3J4X2Jzc19pbmZvKGxpbmssIG1nbXQsIGxlbiwgcnhfc3RhdHVzKTtcXG5uZXQvbWFjODAyMTEvbWxtZS5jLTc0ODYtXFxuLS1cXG5uZXQvbWFjODAyMTEvbWxtZS5jPTc1MTY9c3RhdGljIHZvaWQgaWVlZTgwMjExX2hhbmRsZV9iZWFjb25fc2lnKHN0cnVjdCBpZWVlODAyMTFfbGlua19kYXRhICpsaW5rLFxcbi0tXFxubmV0L21hYzgwMjExL21sbWUuYy03NTE5LVxcdFxcdFxcdFxcdFxcdHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsLFxcbm5ldC9tYWM4MDIxMS9tbG1lLmM6NzUyMDpcXHRcXHRcXHRcXHRcXHRzdHJ1Y3QgaWVlZTgwMjExX3J4X3N0YXR1cyAqcnhfc3RhdHVzKVxcbm5ldC9tYWM4MDIxMS9tbG1lLmMtNzUyMS17XFxuLS1cXG5uZXQvbWFjODAyMTEvbWxtZS5jLTc2MTQtXFxubmV0L21hYzgwMjExL21sbWUuYzo3NjE1OnN0YXRpYyBib29sIGllZWU4MDIxMV9yeF9vdXJfYmVhY29uKGNvbnN0IHU4ICp0eF9ic3NpZCxcXG5uZXQvbWFjODAyMTEvbWxtZS5jLTc2MTYtXFx0XFx0XFx0XFx0ICAgIHN0cnVjdCBjZmc4MDIxMV9ic3MgKmJzcylcXG4tLVxcbm5ldC9tYWM4MDIxMS9tbG1lLmM9ODA3OD1zdGF0aWMgYm9vbFxcbm5ldC9tYWM4MDIxMS9tbG1lLmM6ODA3OTppZWVlODAyMTFfcnhfYmVhY29uX2ZyZXFfdmFsaWQoc3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwsXFxubmV0L21hYzgwMjExL21sbWUuYy04MDgwLVxcdFxcdFxcdCAgICAgICBzdHJ1Y3QgaWVlZTgwMjExX21nbXQgKm1nbXQsXFxubmV0L21hYzgwMjExL21sbWUuYzo4MDgxOlxcdFxcdFxcdCAgICAgICBzdHJ1Y3QgaWVlZTgwMjExX3J4X3N0YXR1cyAqcnhfc3RhdHVzLFxcbm5ldC9tYWM4MDIxMS9tbG1lLmMtODA4Mi1cXHRcXHRcXHQgICAgICAgc3RydWN0IGllZWU4MDIxMV9jaGFuY3R4X2NvbmYgKmNoYW5jdHgpXFxuLS1cXG5uZXQvbWFjODAyMTEvbWxtZS5jLTgwODYtXFx0dTMyIHByaV9raHogPSBpZWVlODAyMTFfY2hhbm5lbF90b19raHooY2hhbmN0eC1cXHUwMDNlZGVmLmNoYW4pO1xcbm5ldC9tYWM4MDIxMS9tbG1lLmM6ODA4NzpcXHR1MzIgcnhfa2h6ID0gaWVlZTgwMjExX3J4X3N0YXR1c190b19raHoocnhfc3RhdHVzKTtcXG5uZXQvbWFjODAyMTEvbWxtZS5jLTgwODgtXFxuLS1cXG5uZXQvbWFjODAyMTEvbWxtZS5jLTgxMDktXFxubmV0L21hYzgwMjExL21sbWUuYzo4MTEwOnN0YXRpYyB2b2lkIGllZWU4MDIxMV9yeF9tZ210X2JlYWNvbihzdHJ1Y3QgaWVlZTgwMjExX2xpbmtfZGF0YSAqbGluayxcXG5uZXQvbWFjODAyMTEvbWxtZS5jLTgxMTEtXFx0XFx0XFx0XFx0ICAgICBzdHJ1Y3QgaWVlZTgwMjExX2hkciAqaGRyLCBzaXplX3QgbGVuLFxcbm5ldC9tYWM4MDIxMS9tbG1lLmM6ODExMjpcXHRcXHRcXHRcXHQgICAgIHN0cnVjdCBpZWVlODAyMTFfcnhfc3RhdHVzICpyeF9zdGF0dXMpXFxubmV0L21hYzgwMjExL21sbWUuYy04MTEzLXtcXG4tLVxcbm5ldC9tYWM4MDIxMS9tbG1lLmMtODE2Mi1cXG5uZXQvbWFjODAyMTEvbWxtZS5jOjgxNjM6XFx0aWYgKCFpZWVlODAyMTFfcnhfYmVhY29uX2ZyZXFfdmFsaWQobG9jYWwsIG1nbXQsIHJ4X3N0YXR1cyxcXG5uZXQvbWFjODAyMTEvbWxtZS5jLTgxNjQtXFx0XFx0XFx0XFx0XFx0ICAgIGNoYW5jdHhfY29uZikpIHtcXG4tLVxcbm5ldC9tYWM4MDIxMS9tbG1lLmMtODE3Mi1cXHQgICAgIVdBUk5fT04oaWVlZTgwMjExX3ZpZl9pc19tbGQoXFx1MDAyNnNkYXRhLVxcdTAwM2V2aWYpKSBcXHUwMDI2XFx1MDAyNlxcbm5ldC9tYWM4MDIxMS9tbG1lLmM6ODE3MzpcXHQgICAgaWVlZTgwMjExX3J4X291cl9iZWFjb24oYnNzaWQsIGlmbWdkLVxcdTAwM2Vhc3NvY19kYXRhLVxcdTAwM2VsaW5rWzBdLmJzcykpIHtcXG5uZXQvbWFjODAyMTEvbWxtZS5jLTgxNzQtXFx0XFx0cGFyc2VfcGFyYW1zLmJzcyA9IGlmbWdkLVxcdTAwM2Vhc3NvY19kYXRhLVxcdTAwM2VsaW5rWzBdLmJzcztcXG4tLVxcbm5ldC9tYWM4MDIxMS9tbG1lLmMtODE3OC1cXG5uZXQvbWFjODAyMTEvbWxtZS5jOjgxNzk6XFx0XFx0aWVlZTgwMjExX3J4X2Jzc19pbmZvKGxpbmssIG1nbXQsIGxlbiwgcnhfc3RhdHVzKTtcXG5uZXQvbWFjODAyMTEvbWxtZS5jLTgxODAtXFxuLS1cXG5uZXQvbWFjODAyMTEvbWxtZS5jLTgyMTQtXFx0aWYgKCFpZm1nZC1cXHUwMDNlYXNzb2NpYXRlZCB8fFxcbm5ldC9tYWM4MDIxMS9tbG1lLmM6ODIxNTpcXHQgICAgIWllZWU4MDIxMV9yeF9vdXJfYmVhY29uKGJzc2lkLCBic3NfY29uZi1cXHUwMDNlYnNzKSlcXG5uZXQvbWFjODAyMTEvbWxtZS5jLTgyMTYtXFx0XFx0cmV0dXJuO1xcbi0tXFxubmV0L21hYzgwMjExL21sbWUuYy04MzUwLVxcbm5ldC9tYWM4MDIxMS9tbG1lLmM6ODM1MTpcXHRpZWVlODAyMTFfcnhfYnNzX2luZm8obGluaywgbWdtdCwgbGVuLCByeF9zdGF0dXMpO1xcbm5ldC9tYWM4MDIxMS9tbG1lLmMtODM1Mi1cXG4tLVxcbm5ldC9tYWM4MDIxMS9tbG1lLmM9ODkwOD1zdGF0aWMgdm9pZCBpZWVlODAyMTFfc3RhX3J4X3F1ZXVlZF9leHQoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsXFxuLS1cXG5uZXQvbWFjODAyMTEvbWxtZS5jLTg5MTEtXFx0c3RydWN0IGllZWU4MDIxMV9saW5rX2RhdGEgKmxpbmsgPSBcXHUwMDI2c2RhdGEtXFx1MDAzZWRlZmxpbms7XFxubmV0L21hYzgwMjExL21sbWUuYzo4OTEyOlxcdHN0cnVjdCBpZWVlODAyMTFfcnhfc3RhdHVzICpyeF9zdGF0dXM7XFxubmV0L21hYzgwMjExL21sbWUuYy04OTEzLVxcdHN0cnVjdCBpZWVlODAyMTFfaGRyICpoZHI7XFxuLS1cXG5uZXQvbWFjODAyMTEvbWxtZS5jLTg5MTctXFxubmV0L21hYzgwMjExL21sbWUuYzo4OTE4OlxcdHJ4X3N0YXR1cyA9IChzdHJ1Y3QgaWVlZTgwMjExX3J4X3N0YXR1cyAqKSBza2ItXFx1MDAzZWNiO1xcbm5ldC9tYWM4MDIxMS9tbG1lLmMtODkxOS1cXHRoZHIgPSAoc3RydWN0IGllZWU4MDIxMV9oZHIgKikgc2tiLVxcdTAwM2VkYXRhO1xcbi0tXFxubmV0L21hYzgwMjExL21sbWUuYy04OTIzLVxcdGNhc2UgSUVFRTgwMjExX1NUWVBFX1MxR19CRUFDT046XFxubmV0L21hYzgwMjExL21sbWUuYzo4OTI0OlxcdFxcdGllZWU4MDIxMV9yeF9tZ210X2JlYWNvbihsaW5rLCBoZHIsIHNrYi1cXHUwMDNlbGVuLCByeF9zdGF0dXMpO1xcbm5ldC9tYWM4MDIxMS9tbG1lLmMtODkyNS1cXHRcXHRicmVhaztcXG4tLVxcbm5ldC9tYWM4MDIxMS9tbG1lLmM9MTE4MTI9dm9pZCBpZWVlODAyMTFfc3RhX3J4X3F1ZXVlZF9mcmFtZShzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSxcXG4tLVxcbm5ldC9tYWM4MDIxMS9tbG1lLmMtMTE4MTUtXFx0c3RydWN0IGllZWU4MDIxMV9saW5rX2RhdGEgKmxpbmsgPSBcXHUwMDI2c2RhdGEtXFx1MDAzZWRlZmxpbms7XFxubmV0L21hYzgwMjExL21sbWUuYzoxMTgxNjpcXHRzdHJ1Y3QgaWVlZTgwMjExX3J4X3N0YXR1cyAqcnhfc3RhdHVzO1xcbm5ldC9tYWM4MDIxMS9tbG1lLmMtMTE4MTctXFx0c3RydWN0IGllZWU4MDJfMTFfZWxlbXMgKmVsZW1zO1xcbi0tXFxubmV0L21hYzgwMjExL21sbWUuYy0xMTgzMC1cXG5uZXQvbWFjODAyMTEvbWxtZS5jOjExODMxOlxcdHJ4X3N0YXR1cyA9IChzdHJ1Y3QgaWVlZTgwMjExX3J4X3N0YXR1cyAqKSBza2ItXFx1MDAzZWNiO1xcbm5ldC9tYWM4MDIxMS9tbG1lLmMtMTE4MzItXFx0ZmMgPSBsZTE2X3RvX2NwdShtZ210LVxcdTAwM2VmcmFtZV9jb250cm9sKTtcXG4tLVxcbm5ldC9tYWM4MDIxMS9tbG1lLmMtMTE4NDItXFx0Y2FzZSBJRUVFODAyMTFfU1RZUEVfQkVBQ09OOlxcbm5ldC9tYWM4MDIxMS9tbG1lLmM6MTE4NDM6XFx0XFx0aWVlZTgwMjExX3J4X21nbXRfYmVhY29uKGxpbmssICh2b2lkICopbWdtdCxcXG5uZXQvbWFjODAyMTEvbWxtZS5jLTExODQ0LVxcdFxcdFxcdFxcdFxcdCBza2ItXFx1MDAzZWxlbiwgcnhfc3RhdHVzKTtcXG4tLVxcbm5ldC9tYWM4MDIxMS9tbG1lLmMtMTE4NDYtXFx0Y2FzZSBJRUVFODAyMTFfU1RZUEVfUFJPQkVfUkVTUDpcXG5uZXQvbWFjODAyMTEvbWxtZS5jOjExODQ3OlxcdFxcdGllZWU4MDIxMV9yeF9tZ210X3Byb2JlX3Jlc3AobGluaywgc2tiKTtcXG5uZXQvbWFjODAyMTEvbWxtZS5jLTExODQ4LVxcdFxcdGJyZWFrO1xcbm5ldC9tYWM4MDIxMS9tbG1lLmMtMTE4NDktXFx0Y2FzZSBJRUVFODAyMTFfU1RZUEVfQVVUSDpcXG5uZXQvbWFjODAyMTEvbWxtZS5jOjExODUwOlxcdFxcdGllZWU4MDIxMV9yeF9tZ210X2F1dGgoc2RhdGEsIG1nbXQsIHNrYi1cXHUwMDNlbGVuKTtcXG5uZXQvbWFjODAyMTEvbWxtZS5jLTExODUxLVxcdFxcdGJyZWFrO1xcbm5ldC9tYWM4MDIxMS9tbG1lLmMtMTE4NTItXFx0Y2FzZSBJRUVFODAyMTFfU1RZUEVfREVBVVRIOlxcbm5ldC9tYWM4MDIxMS9tbG1lLmM6MTE4NTM6XFx0XFx0aWVlZTgwMjExX3J4X21nbXRfZGVhdXRoKHNkYXRhLCBtZ210LCBza2ItXFx1MDAzZWxlbik7XFxubmV0L21hYzgwMjExL21sbWUuYy0xMTg1NC1cXHRcXHRicmVhaztcXG5uZXQvbWFjODAyMTEvbWxtZS5jLTExODU1LVxcdGNhc2UgSUVFRTgwMjExX1NUWVBFX0RJU0FTU09DOlxcbm5ldC9tYWM4MDIxMS9tbG1lLmM6MTE4NTY6XFx0XFx0aWVlZTgwMjExX3J4X21nbXRfZGlzYXNzb2Moc2RhdGEsIG1nbXQsIHNrYi1cXHUwMDNlbGVuKTtcXG5uZXQvbWFjODAyMTEvbWxtZS5jLTExODU3LVxcdFxcdGJyZWFrO1xcbi0tXFxubmV0L21hYzgwMjExL21sbWUuYy0xMTg1OS1cXHRjYXNlIElFRUU4MDIxMV9TVFlQRV9SRUFTU09DX1JFU1A6XFxubmV0L21hYzgwMjExL21sbWUuYzoxMTg2MDpcXHRcXHRpZWVlODAyMTFfcnhfbWdtdF9hc3NvY19yZXNwKHNkYXRhLCBtZ210LCBza2ItXFx1MDAzZWxlbik7XFxubmV0L21hYzgwMjExL21sbWUuYy0xMTg2MS1cXHRcXHRicmVhaztcXG4tLVxcbm5ldC9tYWM4MDIxMS9yeC5jPTQzPXN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqaWVlZTgwMjExX2NsZWFuX3NrYihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbi0tXFxubmV0L21hYzgwMjExL3J4LmMtNDYte1xcbm5ldC9tYWM4MDIxMS9yeC5jOjQ3OlxcdHN0cnVjdCBpZWVlODAyMTFfcnhfc3RhdHVzICpzdGF0dXMgPSBJRUVFODAyMTFfU0tCX1JYQ0Ioc2tiKTtcXG5uZXQvbWFjODAyMTEvcnguYy00OC1cXHRzdHJ1Y3QgaWVlZTgwMjExX2hkciAqaGRyO1xcbi0tXFxubmV0L21hYzgwMjExL3J4LmM9OTM9c3RhdGljIGlubGluZSBib29sIHNob3VsZF9kcm9wX2ZyYW1lKHN0cnVjdCBza19idWZmICpza2IsIGludCBwcmVzZW50X2Zjc19sZW4sXFxuLS1cXG5uZXQvbWFjODAyMTEvcnguYy05NS17XFxubmV0L21hYzgwMjExL3J4LmM6OTY6XFx0c3RydWN0IGllZWU4MDIxMV9yeF9zdGF0dXMgKnN0YXR1cyA9IElFRUU4MDIxMV9TS0JfUlhDQihza2IpO1xcbm5ldC9tYWM4MDIxMS9yeC5jLTk3LVxcdHN0cnVjdCBpZWVlODAyMTFfaGRyICpoZHI7XFxuLS1cXG5uZXQvbWFjODAyMTEvcnguYz0xMTg9c3RhdGljIGludFxcbm5ldC9tYWM4MDIxMS9yeC5jOjExOTppZWVlODAyMTFfcnhfcmFkaW90YXBfaGRybGVuKHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsLFxcbm5ldC9tYWM4MDIxMS9yeC5jOjEyMDpcXHRcXHRcXHQgICAgIHN0cnVjdCBpZWVlODAyMTFfcnhfc3RhdHVzICpzdGF0dXMsXFxubmV0L21hYzgwMjExL3J4LmMtMTIxLVxcdFxcdFxcdCAgICAgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG4tLVxcbm5ldC9tYWM4MDIxMS9yeC5jPTIyND1zdGF0aWMgdm9pZCBfX2llZWU4MDIxMV9xdWV1ZV9za2JfdG9faWZhY2Uoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsXFxuLS1cXG5uZXQvbWFjODAyMTEvcnguYy0yMjgte1xcbm5ldC9tYWM4MDIxMS9yeC5jOjIyOTpcXHRzdHJ1Y3QgaWVlZTgwMjExX3J4X3N0YXR1cyAqc3RhdHVzID0gSUVFRTgwMjExX1NLQl9SWENCKHNrYik7XFxubmV0L21hYzgwMjExL3J4LmMtMjMwLVxcbi0tXFxubmV0L21hYzgwMjExL3J4LmM9MzEzPWllZWU4MDIxMV9hZGRfcnhfcmFkaW90YXBfaGVhZGVyKHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsLFxcbi0tXFxubmV0L21hYzgwMjExL3J4LmMtMzE3LXtcXG5uZXQvbWFjODAyMTEvcnguYzozMTg6XFx0c3RydWN0IGllZWU4MDIxMV9yeF9zdGF0dXMgKnN0YXR1cyA9IElFRUU4MDIxMV9TS0JfUlhDQihza2IpO1xcbm5ldC9tYWM4MDIxMS9yeC5jLTMxOS1cXHRzdHJ1Y3QgaWVlZTgwMjExX3JhZGlvdGFwX2hlYWRlciAqcnRoZHI7XFxuLS1cXG5uZXQvbWFjODAyMTEvcnguYz03NDI9aWVlZTgwMjExX21ha2VfbW9uaXRvcl9za2Ioc3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwsXFxuLS1cXG5uZXQvbWFjODAyMTEvcnguYy03NDYte1xcbm5ldC9tYWM4MDIxMS9yeC5jOjc0NzpcXHRzdHJ1Y3QgaWVlZTgwMjExX3J4X3N0YXR1cyAqc3RhdHVzID0gSUVFRTgwMjExX1NLQl9SWENCKCpvcmlnc2tiKTtcXG5uZXQvbWFjODAyMTEvcnguYy03NDgtXFx0aW50IHJ0X2hkcmxlbiwgbmVlZGVkX2hlYWRyb29tO1xcbi0tXFxubmV0L21hYzgwMjExL3J4LmMtNzUxLVxcdC8qIHJvb20gZm9yIHRoZSByYWRpb3RhcCBoZWFkZXIgYmFzZWQgb24gZHJpdmVyIGZlYXR1cmVzICovXFxubmV0L21hYzgwMjExL3J4LmM6NzUyOlxcdHJ0X2hkcmxlbiA9IGllZWU4MDIxMV9yeF9yYWRpb3RhcF9oZHJsZW4obG9jYWwsIHN0YXR1cywgKm9yaWdza2IpO1xcbm5ldC9tYWM4MDIxMS9yeC5jLTc1My1cXHRuZWVkZWRfaGVhZHJvb20gPSBydF9oZHJsZW4gLSBydGFwX3NwYWNlO1xcbi0tXFxubmV0L21hYzgwMjExL3J4LmM9Nzk2PWllZWU4MDIxMV92YWxpZGF0ZV9tb25pdG9yX3JhZGlvKHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLFxcbm5ldC9tYWM4MDIxMS9yeC5jLTc5Ny1cXHRcXHRcXHRcXHQgc3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwsXFxubmV0L21hYzgwMjExL3J4LmM6Nzk4OlxcdFxcdFxcdFxcdCBzdHJ1Y3QgaWVlZTgwMjExX3J4X3N0YXR1cyAqc3RhdHVzKVxcbm5ldC9tYWM4MDIxMS9yeC5jLTc5OS17XFxuLS1cXG5uZXQvbWFjODAyMTEvcnguYz04NDU9c3RhdGljIHN0cnVjdCBza19idWZmICpcXG5uZXQvbWFjODAyMTEvcnguYzo4NDY6aWVlZTgwMjExX3J4X21vbml0b3Ioc3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwsIHN0cnVjdCBza19idWZmICpvcmlnc2tiLFxcbm5ldC9tYWM4MDIxMS9yeC5jLTg0Ny1cXHRcXHQgICAgIHN0cnVjdCBpZWVlODAyMTFfcmF0ZSAqcmF0ZSlcXG5uZXQvbWFjODAyMTEvcnguYy04NDgte1xcbm5ldC9tYWM4MDIxMS9yeC5jOjg0OTpcXHRzdHJ1Y3QgaWVlZTgwMjExX3J4X3N0YXR1cyAqc3RhdHVzID0gSUVFRTgwMjExX1NLQl9SWENCKG9yaWdza2IpO1xcbm5ldC9tYWM4MDIxMS9yeC5jLTg1MC1cXHRzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSwgKnByZXZfc2RhdGEgPSBOVUxMO1xcbi0tXFxubmV0L21hYzgwMjExL3J4LmMtOTgzLVxcbm5ldC9tYWM4MDIxMS9yeC5jOjk4NDpzdGF0aWMgdm9pZCBpZWVlODAyMTFfcGFyc2VfcW9zKHN0cnVjdCBpZWVlODAyMTFfcnhfZGF0YSAqcngpXFxubmV0L21hYzgwMjExL3J4LmMtOTg1LXtcXG5uZXQvbWFjODAyMTEvcnguYy05ODYtXFx0c3RydWN0IGllZWU4MDIxMV9oZHIgKmhkciA9IChzdHJ1Y3QgaWVlZTgwMjExX2hkciAqKXJ4LVxcdTAwM2Vza2ItXFx1MDAzZWRhdGE7XFxubmV0L21hYzgwMjExL3J4LmM6OTg3OlxcdHN0cnVjdCBpZWVlODAyMTFfcnhfc3RhdHVzICpzdGF0dXMgPSBJRUVFODAyMTFfU0tCX1JYQ0IocngtXFx1MDAzZXNrYik7XFxubmV0L21hYzgwMjExL3J4LmMtOTg4LVxcdGludCB0aWQsIHNlcW5vX2lkeCwgc2VjdXJpdHlfaWR4O1xcbi0tXFxubmV0L21hYzgwMjExL3J4LmMtMTA1MC0gKi9cXG5uZXQvbWFjODAyMTEvcnguYzoxMDUxOnN0YXRpYyB2b2lkIGllZWU4MDIxMV92ZXJpZnlfYWxpZ25tZW50KHN0cnVjdCBpZWVlODAyMTFfcnhfZGF0YSAqcngpXFxubmV0L21hYzgwMjExL3J4LmMtMTA1Mi17XFxuLS1cXG5uZXQvbWFjODAyMTEvcnguYz0xMTEzPXN0YXRpYyBpbnQgaWVlZTgwMjExX2dldF9rZXlpZChzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbi0tXFxubmV0L21hYzgwMjExL3J4LmMtMTEzMC1cXG5uZXQvbWFjODAyMTEvcnguYzoxMTMxOnN0YXRpYyBpZWVlODAyMTFfcnhfcmVzdWx0IGllZWU4MDIxMV9yeF9tZXNoX2NoZWNrKHN0cnVjdCBpZWVlODAyMTFfcnhfZGF0YSAqcngpXFxubmV0L21hYzgwMjExL3J4LmMtMTEzMi17XFxuLS1cXG5uZXQvbWFjODAyMTEvcnguYy0xMTg3LVxcbm5ldC9tYWM4MDIxMS9yeC5jOjExODg6c3RhdGljIGlubGluZSBib29sIGllZWU4MDIxMV9yeF9yZW9yZGVyX3JlYWR5KHN0cnVjdCB0aWRfYW1wZHVfcnggKnRpZF9hZ2dfcngsXFxubmV0L21hYzgwMjExL3J4LmMtMTE4OS1cXHRcXHRcXHRcXHRcXHQgICAgICBpbnQgaW5kZXgpXFxuLS1cXG5uZXQvbWFjODAyMTEvcnguYy0xMTkyLVxcdHN0cnVjdCBza19idWZmICp0YWlsID0gc2tiX3BlZWtfdGFpbChmcmFtZXMpO1xcbm5ldC9tYWM4MDIxMS9yeC5jOjExOTM6XFx0c3RydWN0IGllZWU4MDIxMV9yeF9zdGF0dXMgKnN0YXR1cztcXG5uZXQvbWFjODAyMTEvcnguYy0xMTk0LVxcbi0tXFxubmV0L21hYzgwMjExL3J4LmM9MTIwOT1zdGF0aWMgdm9pZCBpZWVlODAyMTFfcmVsZWFzZV9yZW9yZGVyX2ZyYW1lKHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLFxcbi0tXFxubmV0L21hYzgwMjExL3J4LmMtMTIxNS1cXHRzdHJ1Y3Qgc2tfYnVmZiAqc2tiO1xcblxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yOVQwNjowMjo1Ny4xMTExODkzOTJaIiwiU2VxIjoyMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MzAzMTQ1OTAwMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipFeHBsb3JpbmcgdGhlIG5ldC9tYWM4MDIxMS9yeC5jIFJYIEVudHJ5cG9pbnRzKipcblxuT2theSwgc28gSSBuZWVkIHRvIGdldCBhIGhhbmRsZSBvbiB0aGUga2V5IGVudHJ5IHBvaW50cyBmb3IgcmVjZWl2ZSBwcm9jZXNzaW5nIHdpdGhpbiB0aGUgYG5ldC9tYWM4MDIxMWAgc3Vic3lzdGVtLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcyB0byB6ZXJvIGluIG9uIGBuZXQvbWFjODAyMTEvcnguY2AuIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoaWNoIGZ1bmN0aW9ucyBhcmUgcmVzcG9uc2libGUgZm9yIGhhbmRsaW5nIGluY29taW5nIGZyYW1lcy5cblxuTXkgcGxhbiBpcyB0byBsb29rIGZvciBgRVhQT1JUX1NZTUJPTGAgdXNhZ2VzIHdpdGhpbiB0aGF0IGZpbGUsIGFzIHRoaXMgd2lsbCBoZWxwIG1lIGlkZW50aWZ5IHRoZSBmdW5jdGlvbnMgc3BlY2lmaWNhbGx5IGRlc2lnbmVkIGZvciBleHRlcm5hbCBhY2Nlc3MsIGxpa2VseSB0aGUgZW50cnkgcG9pbnRzIEknbSBsb29raW5nIGZvci4gQWx0ZXJuYXRpdmVseSwgSSBzaG91bGQgc2NhbiBmb3IgZnVuY3Rpb25zIHdpdGhpbiB0aGlzIGZpbGUgcmVsYXRlZCB0byB0aGUgcHJvY2VzcyBvZiByZWNlaXZlZCBmcmFtZXMuIFRoYXQgc2hvdWxkIGFsbG93IG1lIHRvIGlkZW50aWZ5IHRoZSBhcHByb3ByaWF0ZSBmbG93LlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNjAwNiwiT3V0cHV0VG9rZW5zIjozNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjU3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI5VDA2OjAzOjAwLjE0MjY1MTMxNFoiLCJTZXEiOjIyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDc4NzY3OTgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiRVhQT1JUX1NZTUJPTFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvbWFjODAyMTEvcnguY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvbWFjODAyMTEvcnguYz0xNzQ3PWludCBpZWVlODAyMTFfc3RhX3BzX3RyYW5zaXRpb24oc3RydWN0IGllZWU4MDIxMV9zdGEgKnB1YnN0YSwgYm9vbCBzdGFydClcXG4tLVxcbm5ldC9tYWM4MDIxMS9yeC5jLTE3NjUtfVxcbm5ldC9tYWM4MDIxMS9yeC5jOjE3NjY6RVhQT1JUX1NZTUJPTChpZWVlODAyMTFfc3RhX3BzX3RyYW5zaXRpb24pO1xcbm5ldC9tYWM4MDIxMS9yeC5jLTE3NjctXFxubmV0L21hYzgwMjExL3J4LmM9MTc2OD12b2lkIGllZWU4MDIxMV9zdGFfcHNwb2xsKHN0cnVjdCBpZWVlODAyMTFfc3RhICpwdWJzdGEpXFxuLS1cXG5uZXQvbWFjODAyMTEvcnguYy0xNzc5LX1cXG5uZXQvbWFjODAyMTEvcnguYzoxNzgwOkVYUE9SVF9TWU1CT0woaWVlZTgwMjExX3N0YV9wc3BvbGwpO1xcbm5ldC9tYWM4MDIxMS9yeC5jLTE3ODEtXFxubmV0L21hYzgwMjExL3J4LmM9MTc4Mj12b2lkIGllZWU4MDIxMV9zdGFfdWFwc2RfdHJpZ2dlcihzdHJ1Y3QgaWVlZTgwMjExX3N0YSAqcHVic3RhLCB1OCB0aWQpXFxuLS1cXG5uZXQvbWFjODAyMTEvcnguYy0xODA3LX1cXG5uZXQvbWFjODAyMTEvcnguYzoxODA4OkVYUE9SVF9TWU1CT0woaWVlZTgwMjExX3N0YV91YXBzZF90cmlnZ2VyKTtcXG5uZXQvbWFjODAyMTEvcnguYy0xODA5LVxcbi0tXFxubmV0L21hYzgwMjExL3J4LmM9MjU2Mj1pZWVlODAyMTFfZHJvcF91bmVuY3J5cHRlZF9tZ210KHN0cnVjdCBpZWVlODAyMTFfcnhfZGF0YSAqcngpXFxuLS1cXG5uZXQvbWFjODAyMTEvcnguYy0yNjQ3LX1cXG5uZXQvbWFjODAyMTEvcnguYzoyNjQ4OkVYUE9SVF9TWU1CT0xfSUZfTUFDODAyMTFfS1VOSVQoaWVlZTgwMjExX2Ryb3BfdW5lbmNyeXB0ZWRfbWdtdCk7XFxubmV0L21hYzgwMjExL3J4LmMtMjY0OS1cXG4tLVxcbm5ldC9tYWM4MDIxMS9yeC5jPTQ0MTk9dm9pZCBpZWVlODAyMTFfbWFya19yeF9iYV9maWx0ZXJlZF9mcmFtZXMoc3RydWN0IGllZWU4MDIxMV9zdGEgKnB1YnN0YSwgdTggdGlkLFxcbi0tXFxubmV0L21hYzgwMjExL3J4LmMtNDUwMC19XFxubmV0L21hYzgwMjExL3J4LmM6NDUwMTpFWFBPUlRfU1lNQk9MKGllZWU4MDIxMV9tYXJrX3J4X2JhX2ZpbHRlcmVkX2ZyYW1lcyk7XFxubmV0L21hYzgwMjExL3J4LmMtNDUwMi1cXG4tLVxcbm5ldC9tYWM4MDIxMS9yeC5jPTU1NTk9dm9pZCBpZWVlODAyMTFfcnhfbGlzdChzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodywgc3RydWN0IGllZWU4MDIxMV9zdGEgKnB1YnN0YSxcXG4tLVxcbm5ldC9tYWM4MDIxMS9yeC5jLTU3MjctfVxcbm5ldC9tYWM4MDIxMS9yeC5jOjU3Mjg6RVhQT1JUX1NZTUJPTChpZWVlODAyMTFfcnhfbGlzdCk7XFxubmV0L21hYzgwMjExL3J4LmMtNTcyOS1cXG5uZXQvbWFjODAyMTEvcnguYz01NzMwPXZvaWQgaWVlZTgwMjExX3J4X25hcGkoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsIHN0cnVjdCBpZWVlODAyMTFfc3RhICpwdWJzdGEsXFxuLS1cXG5uZXQvbWFjODAyMTEvcnguYy01NzU1LX1cXG5uZXQvbWFjODAyMTEvcnguYzo1NzU2OkVYUE9SVF9TWU1CT0woaWVlZTgwMjExX3J4X25hcGkpO1xcbm5ldC9tYWM4MDIxMS9yeC5jLTU3NTctXFxuLS1cXG5uZXQvbWFjODAyMTEvcnguYz01NzYwPXZvaWQgaWVlZTgwMjExX3J4X2lycXNhZmUoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsIHN0cnVjdCBza19idWZmICpza2IpXFxuLS1cXG5uZXQvbWFjODAyMTEvcnguYy01NzY5LX1cXG5uZXQvbWFjODAyMTEvcnguYzo1NzcwOkVYUE9SVF9TWU1CT0woaWVlZTgwMjExX3J4X2lycXNhZmUpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yOVQwNjowMzowMC4xOTA1MzQzMTJaIiwiU2VxIjoyMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MTIyMTIzNTYzOTgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRGVmcmFnbWVudGF0aW9uIERlZXAgRGl2ZSoqXG5cbk9rYXksIHRpbWUgdG8gZ2V0IG15IGhhbmRzIGRpcnR5LiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgaW5zIGFuZCBvdXRzIG9mIGhvdyB0aGlzIGRlZnJhZ21lbnRhdGlvbiBwcm9jZXNzIHdvcmtzIHdpdGhpbiB0aGUgODAyLjExIHN0YWNrLiBNeSBmaXJzdCBtb3ZlIHdpbGwgYmUgdG8gemVybyBpbiBvbiBgaWVlZTgwMjExX3J4X2hfZGVmcmFnbWVudGAuIEknbGwgdXNlIHRoYXQgYXMgbXkgcHJpbWFyeSBzZWFyY2ggdGVybS5cblxuSSdsbCBzdGFydCBieSBjaGVja2luZyB0aGUgYG5ldC9tYWM4MDIxMS9yeC5jYCBmaWxlLiBJdCdzIHRoZSBsb2dpY2FsIHBsYWNlIHRvIGJlZ2luIGxvb2tpbmcgZm9yIHRoZSBpbXBsZW1lbnRhdGlvbiBvciBhbnkgY2FsbCBzaXRlcyByZWxhdGVkIHRvIHRoYXQgZnVuY3Rpb24uIEZyb20gdGhlcmUsIEknbGwgdHJhY2UgaXRzIGV4ZWN1dGlvbiBmbG93IGFuZCBwaW5wb2ludCBpdHMgcm9sZSBpbiB0aGUgcmVjZWl2ZSBwYXRoLiBIb3BlZnVsbHksIHRoaXMgd2lsbCBwcm92aWRlIHRoZSBpbmZvcm1hdGlvbiBJIHJlcXVpcmUgdG8gcHJvcGVybHkgYW5hbHl6ZSB0aGUgZnVuY3Rpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI3MzE4LCJPdXRwdXRUb2tlbnMiOjQyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjlUMDY6MDM6MTIuNDAyODkyNjJaIiwiU2VxIjoyNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI0ODU2ODc3MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJpZWVlODAyMTFfcnhfaF9kZWZyYWdtZW50XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9tYWM4MDIxMVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvbWFjODAyMTEvcnguYz0yMzcyPXN0YXRpYyBpZWVlODAyMTFfcnhfcmVzdWx0IGRlYnVnX25vaW5saW5lXFxubmV0L21hYzgwMjExL3J4LmM6MjM3MzppZWVlODAyMTFfcnhfaF9kZWZyYWdtZW50KHN0cnVjdCBpZWVlODAyMTFfcnhfZGF0YSAqcngpXFxubmV0L21hYzgwMjExL3J4LmMtMjM3NC17XFxuLS1cXG5uZXQvbWFjODAyMTEvcnguYz00MjI5PXN0YXRpYyB2b2lkIGllZWU4MDIxMV9yeF9oYW5kbGVycyhzdHJ1Y3QgaWVlZTgwMjExX3J4X2RhdGEgKnJ4LFxcbi0tXFxubmV0L21hYzgwMjExL3J4LmMtNDI2Ni1cXHRcXHRDQUxMX1JYSChpZWVlODAyMTFfcnhfaF9kZWNyeXB0KTtcXG5uZXQvbWFjODAyMTEvcnguYzo0MjY3OlxcdFxcdENBTExfUlhIKGllZWU4MDIxMV9yeF9oX2RlZnJhZ21lbnQpO1xcbm5ldC9tYWM4MDIxMS9yeC5jLTQyNjgtXFx0XFx0Q0FMTF9SWEgoaWVlZTgwMjExX3J4X2hfbWljaGFlbF9taWNfdmVyaWZ5KTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjlUMDY6MDM6MTIuNjUxNDY4N1oiLCJTZXEiOjI1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoxNDM3NTI5MDA4NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIGFuZCBkZWxpdmVyZWQgYXMgYSBmaXJzdC1wZXJzb24gc3VtbWFyeTpcblxuKipEaWdnaW5nIGludG8gdGhlIDgwMi4xMSBSeCBIYW5kbGVycyoqXG5cbkFscmlnaHQsIHNvIHRoZSBmaXJzdCB0aGluZyBJJ20gZG9pbmcgaXMgdHJ5aW5nIHRvIGdldCBhIGNsZWFyIHBpY3R1cmUgb2Ygd2hhdCBmdW5jdGlvbnMgYXJlIGNhbGxlZCBieSBgaWVlZTgwMjExX3J4X2hhbmRsZXJzYC4gVGhpcyBpcyBteSBzdGFydGluZyBwb2ludCB3aGVuIHRyeWluZyB0byB1bmRlcnN0YW5kIHRoZSBwYWNrZXQgcmVjZXB0aW9uIHBpcGVsaW5lIGluIGEgZ2l2ZW4gODAyLjExIHN0YWNrLiBJJ20gbGlrZWx5IHRyeWluZyB0byB1bmRlcnN0YW5kIGEgc3BlY2lmaWMgaXNzdWUsIG9wdGltaXplIHBlcmZvcm1hbmNlLCBvciBwZXJoYXBzIGRlYnVnIHNvbWUgZXJyYXRpYyBiZWhhdmlvci4gS25vd2luZyB0aGUgY29udHJvbCBmbG93IHRocm91Z2ggdGhlc2UgaGFuZGxlcnMgaXMgYWJzb2x1dGVseSBjcml0aWNhbC4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hpY2ggZnVuY3Rpb25zIGFyZSByZXNwb25zaWJsZSBmb3IgaW5pdGlhbCBwcm9jZXNzaW5nLCBkZW11bHRpcGxleGluZywgZnJhbWUgY2xhc3NpZmljYXRpb24sIHNlY3VyaXR5IGNoZWNrcywgYW5kIHBhc3NpbmcgdGhlIGRhdGEgdXAgdGhlIHN0YWNrLlxuXG5JJ20gcHJvYmFibHkgdGhpbmtpbmcgYWJvdXQgYSBzcGVjaWZpYyA4MDIuMTEgZHJpdmVyIG9yIGltcGxlbWVudGF0aW9uIHRvby4gQW0gSSBsb29raW5nIGF0IHNvbWV0aGluZyBsaWtlIG1hYzgwMjExLCBhIHByb3ByaWV0YXJ5IGRyaXZlciwgb3Igc29tZSBjdXN0b20gcmVzZWFyY2ggY29kZT8gS25vd2luZyB0aGUgY29udGV4dCBoZWxwcyBtZSBuYXJyb3cgZG93biB3aGljaCBjYWxscyB3aXRoaW4gYGllZWU4MDIxMV9yeF9oYW5kbGVyc2AgYXJlIG1vc3QgaW1wb3J0YW50IHRvIGV4YW1pbmUgY2xvc2VseS4gQXJlIHRoZXJlIGFueSBwYXJ0aWN1bGFyIG1vZHVsZXMgb3IgZnVuY3Rpb25zIEkgZXhwZWN0IHRvIGJlIGludm9sdmVkIGJhc2VkIG9uIG15IHByaW9yIGtub3dsZWRnZT8gQXJlIHRoZXJlIGFueSBvYnZpb3VzIGNhbmRpZGF0ZXMgZm9yIHBlcmZvcm1hbmNlIGJvdHRsZW5lY2tzP1xuXG5JbiBzaG9ydCwgSSdtIG1hcHBpbmcgb3V0IHRoZSBjcml0aWNhbCBwYXRocyB3aXRoaW4gdGhlIFJYIHByb2Nlc3NpbmcgdG8gZGV2ZWxvcCBhIG1lbnRhbCBtb2RlbCBvZiBob3cgdGhlIHN5c3RlbSB3b3Jrcy5cblxuXG4iLCJJbnB1dFRva2VucyI6Mjc4NjksIk91dHB1dFRva2VucyI6MzksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxOSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yOVQwNjowMzoyNy4wMjY3NjEyODdaIiwiU2VxIjoyNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjUyMjU2NTc4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImllZWU4MDIxMV9yeF9oYW5kbGVyc1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvbWFjODAyMTFcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L21hYzgwMjExL3J4LmM9NDE1Nj1pZWVlODAyMTFfcnhfaF9tZ210KHN0cnVjdCBpZWVlODAyMTFfcnhfZGF0YSAqcngpXFxuLS1cXG5uZXQvbWFjODAyMTEvcnguYy00MjExLVxcbm5ldC9tYWM4MDIxMS9yeC5jOjQyMTI6c3RhdGljIHZvaWQgaWVlZTgwMjExX3J4X2hhbmRsZXJzX3Jlc3VsdChzdHJ1Y3QgaWVlZTgwMjExX3J4X2RhdGEgKnJ4LFxcbm5ldC9tYWM4MDIxMS9yeC5jLTQyMTMtXFx0XFx0XFx0XFx0XFx0IGllZWU4MDIxMV9yeF9yZXN1bHQgcmVzKVxcbi0tXFxubmV0L21hYzgwMjExL3J4LmMtNDIyOC1cXG5uZXQvbWFjODAyMTEvcnguYzo0MjI5OnN0YXRpYyB2b2lkIGllZWU4MDIxMV9yeF9oYW5kbGVycyhzdHJ1Y3QgaWVlZTgwMjExX3J4X2RhdGEgKnJ4LFxcbm5ldC9tYWM4MDIxMS9yeC5jLTQyMzAtXFx0XFx0XFx0XFx0ICBzdHJ1Y3Qgc2tfYnVmZl9oZWFkICpmcmFtZXMpXFxuLS1cXG5uZXQvbWFjODAyMTEvcnguYy00Mjg2LSByeGhfbmV4dDpcXG5uZXQvbWFjODAyMTEvcnguYzo0Mjg3OlxcdFxcdGllZWU4MDIxMV9yeF9oYW5kbGVyc19yZXN1bHQocngsIHJlcyk7XFxubmV0L21hYzgwMjExL3J4LmMtNDI4OC1cXG4tLVxcbm5ldC9tYWM4MDIxMS9yeC5jPTQyOTU9c3RhdGljIHZvaWQgaWVlZTgwMjExX2ludm9rZV9yeF9oYW5kbGVycyhzdHJ1Y3QgaWVlZTgwMjExX3J4X2RhdGEgKnJ4KVxcbi0tXFxubmV0L21hYzgwMjExL3J4LmMtNDMxMy1cXG5uZXQvbWFjODAyMTEvcnguYzo0MzE0OlxcdGllZWU4MDIxMV9yeF9oYW5kbGVycyhyeCwgXFx1MDAyNnJlb3JkZXJfcmVsZWFzZSk7XFxubmV0L21hYzgwMjExL3J4LmMtNDMxNS1cXHRyZXR1cm47XFxuLS1cXG5uZXQvbWFjODAyMTEvcnguYy00MzE3LSByeGhfbmV4dDpcXG5uZXQvbWFjODAyMTEvcnguYzo0MzE4OlxcdGllZWU4MDIxMV9yeF9oYW5kbGVyc19yZXN1bHQocngsIHJlcyk7XFxubmV0L21hYzgwMjExL3J4LmMtNDMxOS1cXG4tLVxcbm5ldC9tYWM4MDIxMS9yeC5jPTQzNzk9dm9pZCBpZWVlODAyMTFfcmVsZWFzZV9yZW9yZGVyX3RpbWVvdXQoc3RydWN0IHN0YV9pbmZvICpzdGEsIGludCB0aWQpXFxuLS1cXG5uZXQvbWFjODAyMTEvcnguYy00NDE1LVxcbm5ldC9tYWM4MDIxMS9yeC5jOjQ0MTY6XFx0aWVlZTgwMjExX3J4X2hhbmRsZXJzKFxcdTAwMjZyeCwgXFx1MDAyNmZyYW1lcyk7XFxubmV0L21hYzgwMjExL3J4LmMtNDQxNy19XFxuLS1cXG5uZXQvbWFjODAyMTEvcnguYz00NDE5PXZvaWQgaWVlZTgwMjExX21hcmtfcnhfYmFfZmlsdGVyZWRfZnJhbWVzKHN0cnVjdCBpZWVlODAyMTFfc3RhICpwdWJzdGEsIHU4IHRpZCxcXG4tLVxcbm5ldC9tYWM4MDIxMS9yeC5jLTQ0OTUtXFxubmV0L21hYzgwMjExL3J4LmM6NDQ5NjpcXHRpZWVlODAyMTFfcnhfaGFuZGxlcnMoXFx1MDAyNnJ4LCBcXHUwMDI2ZnJhbWVzKTtcXG5uZXQvbWFjODAyMTEvcnguYy00NDk3LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yOVQwNjowMzoyNy4wNzkwMjQyODVaIiwiU2VxIjoyNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NTA3OTY1NTMwOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIGEgc3VtbWFyeSBvZiBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIHJlcXVlc3RlZDpcblxuKipEZWNvbnN0cnVjdGluZyB0aGUgSUVFRSA4MDIuMTEgUlggSGFuZGxlciBJbnZvY2F0aW9uKipcblxuT2theSwgc28gSSdtIGRpdmluZyBpbnRvIHRoZSBgaWVlZTgwMjExX2ludm9rZV9yeF9oYW5kbGVyc2AgZnVuY3Rpb24uIE15IGluaXRpYWwgcXVlc3Rpb24gaXMgc3RyYWlnaHRmb3J3YXJkOiAqd2hvKiBpcyBjYWxsaW5nIHRoaXMgY3JpdGljYWwgcGllY2Ugb2YgdGhlIDgwMi4xMSByZWNlaXZlIHBhdGg/IEl0J3MgZXNzZW50aWFsIHRvIHVuZGVyc3RhbmQgdGhlIGNvbnRleHQgaW4gd2hpY2ggdGhpcyBmdW5jdGlvbiBvcGVyYXRlcy4gSSBuZWVkIHRvIHRyYWNlIHRoZSBjYWxsIHBhdGhzIHRvIGlkZW50aWZ5IHRoZSBkaWZmZXJlbnQgZW50cnkgcG9pbnRzIGFuZCB0aGUgY29uZGl0aW9ucyB1bmRlciB3aGljaCB0aGUgaGFuZGxlcnMgYXJlIGludm9rZWQuIEFyZSB3ZSB0YWxraW5nIGFib3V0IGEgc3RhbmRhcmQgZGF0YSBmcmFtZSwgYSBtYW5hZ2VtZW50IGZyYW1lLCBvciBjb250cm9sIGZyYW1lPyBBcmUgdGhlcmUgc3BlY2lmaWMgZHJpdmVyLXJlbGF0ZWQgYXNwZWN0cyB0byBjb25zaWRlciBpbiB0aGlzIGNhbGwgcGF0aD9cblxuSSB3YW50IHRvIGtub3cgd2hlcmUgaW4gdGhlIGRyaXZlcidzIHJlY2VpdmUgcHJvY2Vzc2luZyBpdCBmaXRzIGFuZCB0aGUgc2VxdWVuY2Ugb2YgZnVuY3Rpb24gY2FsbHMgYmVmb3JlIGFuZCBhZnRlciB0aGUgaW52b2NhdGlvbi4gS25vd2luZyB0aGlzIHdpbGwgZ2l2ZSBtZSBpbnNpZ2h0cyBpbnRvIHBvdGVudGlhbCBvcHRpbWl6YXRpb25zLCBlcnJvciBoYW5kbGluZyBzdHJhdGVnaWVzLCBhbmQgc2VjdXJpdHkgaW1wbGljYXRpb25zIG9mIHRoZSByZWNlaXZpbmcgcHJvY2Vzcy4gSSdsbCBuZWVkIHRvIGNvbnNpZGVyIGhvdyBpbnRlcnJ1cHQgaGFuZGxpbmcsIERNQSwgYW5kIG90aGVyIGhhcmR3YXJlIGludGVyYWN0aW9ucyBwbGF5IGludG8gdGhlIGZ1bmN0aW9u4oCZcyBleGVjdXRpb24uXG5cblRoaXMgaXMgYWxsIGFib3V0IHVuZGVyc3RhbmRpbmcgdGhlIGRhdGEgZmxvdyBvZiBpbmNvbWluZyBmcmFtZXMgYW5kIHVuZGVyc3RhbmRpbmcgaG93IHRoZSBzeXN0ZW0gaXMgZGVzaWduZWQgdG8gaGFuZGxlIGRpZmZlcmVudCBzY2VuYXJpb3MuIEZpbmRpbmcgdGhlIFwid2hvXCIgd2lsbCBnaXZlIG1lIGEgZm9vdGhvbGQgaW4gdW5kZXJzdGFuZGluZyB0aGUgXCJob3dcIiBhbmQgdGhlIFwid2h5LlwiXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI5MDQ5LCJPdXRwdXRUb2tlbnMiOjQxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjlUMDY6MDM6MzIuMTU4NjgyNjkzWiIsIlNlcSI6MjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0OTEyNTczOCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJpZWVlODAyMTFfaW52b2tlX3J4X2hhbmRsZXJzXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9tYWM4MDIxMVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvbWFjODAyMTEvcnguYz00MjI5PXN0YXRpYyB2b2lkIGllZWU4MDIxMV9yeF9oYW5kbGVycyhzdHJ1Y3QgaWVlZTgwMjExX3J4X2RhdGEgKnJ4LFxcbi0tXFxubmV0L21hYzgwMjExL3J4LmMtNDI5NC1cXG5uZXQvbWFjODAyMTEvcnguYzo0Mjk1OnN0YXRpYyB2b2lkIGllZWU4MDIxMV9pbnZva2VfcnhfaGFuZGxlcnMoc3RydWN0IGllZWU4MDIxMV9yeF9kYXRhICpyeClcXG5uZXQvbWFjODAyMTEvcnguYy00Mjk2LXtcXG4tLVxcbm5ldC9tYWM4MDIxMS9yeC5jPTUxNzM9c3RhdGljIGJvb2wgaWVlZTgwMjExX3ByZXBhcmVfYW5kX3J4X2hhbmRsZShzdHJ1Y3QgaWVlZTgwMjExX3J4X2RhdGEgKnJ4LFxcbi0tXFxubmV0L21hYzgwMjExL3J4LmMtNTIyNC1cXHRpZiAoaWVlZTgwMjExX2lzX3MxZ19iZWFjb24oaGRyLVxcdTAwM2VmcmFtZV9jb250cm9sKSkge1xcbm5ldC9tYWM4MDIxMS9yeC5jOjUyMjU6XFx0XFx0aWVlZTgwMjExX2ludm9rZV9yeF9oYW5kbGVycyhyeCk7XFxubmV0L21hYzgwMjExL3J4LmMtNTIyNi1cXHRcXHRyZXR1cm4gdHJ1ZTtcXG4tLVxcbm5ldC9tYWM4MDIxMS9yeC5jLTUyNTMtXFxubmV0L21hYzgwMjExL3J4LmM6NTI1NDpcXHRpZWVlODAyMTFfaW52b2tlX3J4X2hhbmRsZXJzKHJ4KTtcXG5uZXQvbWFjODAyMTEvcnguYy01MjU1LVxcdHJldHVybiB0cnVlO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yOVQwNjowMzozMi4yMDc4MTQ1NTFaIiwiU2VxIjoyOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MTc0MzExMTkzNTAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzOlxuXG4qKkRlZXAgRGl2ZSBvbiB0aGUgUmVjZWl2ZSBQYXRoKipcblxuQWxyaWdodCwgc28gYGllZWU4MDIxMV9wcmVwYXJlX2FuZF9yeF9oYW5kbGVgLi4uIHRoYXQncyB0aGUgZnVuY3Rpb24gd2UncmUgZGlzc2VjdGluZyB0b2RheS4gTGV0J3MgZGlnIGluIGFuZCBmaWd1cmUgb3V0IGV4YWN0bHkgd2hhdCdzIGNhbGxpbmcgdGhhdCBmdW5jdGlvbi4gVW5kZXJzdGFuZGluZyB0aGUgY2FsbCBjaGFpbiBoZXJlIGlzIGdvaW5nIHRvIGJlIGNydWNpYWwgZm9yIGZpZ3VyaW5nIG91dCBleGFjdGx5IGhvdyB0aGUgcGFja2V0IHByb2Nlc3NpbmcgaGFwcGVucyBvbiB0aGUgcmVjZWl2ZSBzaWRlLiBJIG5lZWQgdG8gdHJhY2UgdGhpcyBiYWNrIHRvIHRoZSB2ZXJ5IHN0YXJ0IG9mIHRoZSByZWNlaXZlIHBhdGguIEhvcGVmdWxseSwgaXQncyB3ZWxsLWRvY3VtZW50ZWQsIGJlY2F1c2UgSSdtIGdvaW5nIHRvIHdhbnQgdG8gdW5kZXJzdGFuZCB3aGF0IHRyaWdnZXJzIHRoaXMgZW50aXJlIHByb2Nlc3MuIExldCdzIHNlZSB3aGF0IHdlIGNhbiBmaW5kLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyOTc3MiwiT3V0cHV0VG9rZW5zIjo0MywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI5VDA2OjAzOjQ5LjYzODkzNjExMVoiLCJTZXEiOjMwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTc1Nzk4MzAzLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImllZWU4MDIxMV9wcmVwYXJlX2FuZF9yeF9oYW5kbGVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L21hYzgwMjExXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9tYWM4MDIxMS9yeC5jPTUwMTU9c3RhdGljIGJvb2wgaWVlZTgwMjExX2ludm9rZV9mYXN0X3J4KHN0cnVjdCBpZWVlODAyMTFfcnhfZGF0YSAqcngsXFxuLS1cXG5uZXQvbWFjODAyMTEvcnguYy01MTcyLSAqL1xcbm5ldC9tYWM4MDIxMS9yeC5jOjUxNzM6c3RhdGljIGJvb2wgaWVlZTgwMjExX3ByZXBhcmVfYW5kX3J4X2hhbmRsZShzdHJ1Y3QgaWVlZTgwMjExX3J4X2RhdGEgKnJ4LFxcbm5ldC9tYWM4MDIxMS9yeC5jLTUxNzQtXFx0XFx0XFx0XFx0XFx0ICAgIHN0cnVjdCBza19idWZmICpza2IsIGJvb2wgY29uc3VtZSlcXG4tLVxcbm5ldC9tYWM4MDIxMS9yeC5jPTUzMTA9c3RhdGljIGJvb2wgaWVlZTgwMjExX3J4X2Zvcl9pbnRlcmZhY2Uoc3RydWN0IGllZWU4MDIxMV9yeF9kYXRhICpyeCxcXG4tLVxcbm5ldC9tYWM4MDIxMS9yeC5jLTUzMjEtXFxubmV0L21hYzgwMjExL3J4LmM6NTMyMjpcXHRcXHRyZXR1cm4gaWVlZTgwMjExX3ByZXBhcmVfYW5kX3J4X2hhbmRsZShyeCwgc2tiLCBjb25zdW1lKTtcXG5uZXQvbWFjODAyMTEvcnguYy01MzIzLVxcdH1cXG4tLVxcbm5ldC9tYWM4MDIxMS9yeC5jLTUzNjEtXFxubmV0L21hYzgwMjExL3J4LmM6NTM2MjpcXHRyZXR1cm4gaWVlZTgwMjExX3ByZXBhcmVfYW5kX3J4X2hhbmRsZShyeCwgc2tiLCBjb25zdW1lKTtcXG5uZXQvbWFjODAyMTEvcnguYy01MzYzLX1cXG4tLVxcbm5ldC9tYWM4MDIxMS9yeC5jPTUzNjk9c3RhdGljIHZvaWQgX19pZWVlODAyMTFfcnhfaGFuZGxlX3BhY2tldChzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcXG4tLVxcbm5ldC9tYWM4MDIxMS9yeC5jLTU0NjEtXFxubmV0L21hYzgwMjExL3J4LmM6NTQ2MjpcXHRcXHRcXHRpZiAoaWVlZTgwMjExX3ByZXBhcmVfYW5kX3J4X2hhbmRsZShcXHUwMDI2cngsIHNrYiwgdHJ1ZSkpXFxubmV0L21hYzgwMjExL3J4LmMtNTQ2My1cXHRcXHRcXHRcXHRyZXR1cm47XFxuLS1cXG5uZXQvbWFjODAyMTEvcnguYy01NDg5LVxcbm5ldC9tYWM4MDIxMS9yeC5jOjU0OTA6XFx0XFx0XFx0aWVlZTgwMjExX3ByZXBhcmVfYW5kX3J4X2hhbmRsZShcXHUwMDI2cngsIHNrYiwgZmFsc2UpO1xcbm5ldC9tYWM4MDIxMS9yeC5jLTU0OTEtXFxuLS1cXG5uZXQvbWFjODAyMTEvcnguYy01NTEwLVxcbm5ldC9tYWM4MDIxMS9yeC5jOjU1MTE6XFx0XFx0XFx0aWYgKGllZWU4MDIxMV9wcmVwYXJlX2FuZF9yeF9oYW5kbGUoXFx1MDAyNnJ4LCBza2IsIHRydWUpKVxcbm5ldC9tYWM4MDIxMS9yeC5jLTU1MTItXFx0XFx0XFx0XFx0cmV0dXJuO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yOVQwNjowMzo0OS44MTQ3NDIxODRaIiwiU2VxIjozMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MjMzMjUxNzQ5MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipUcmFjaW5nIHRoZSBEYXRhIEZsb3c6IFRoZSBDdXJpb3VzIENhc2Ugb2YgYF9faWVlZTgwMjExX3J4X2hhbmRsZV9wYWNrZXRgKipcblxuQWxyaWdodCwgc28gSSdtIGRpZ2dpbmcgaW50byB0aGlzIGBfX2llZWU4MDIxMV9yeF9oYW5kbGVfcGFja2V0YCBmdW5jdGlvbi4gSXQncyBvYnZpb3VzbHkgY2VudHJhbCB0byB0aGUgODAyLjExIHJlY2VpdmUgcGF0aC4gQnV0IHRoZSBxdWVzdGlvbiBpcywgKndoYXQqIGtpY2tzIGl0IG9mZj8gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGNhbGwgY2hhaW4gdG8gdHJ1bHkgZ3Jhc3AgaXRzIHJvbGUgaW4gdGhlIGJpZ2dlciBwaWN0dXJlLiBNeSBtZW50YWwgY2hlY2tsaXN0IHN0YXJ0cyB3aXRoIGZpZ3VyaW5nIG91dCB3aGljaCBvdGhlciBmdW5jdGlvbnMgYXJlIHJlc3BvbnNpYmxlIGZvciBjYWxsaW5nIHRoaXMgb25lLiBJIG5lZWQgdG8gdHJhY2UgdGhpcyBkYXRhIGZsb3cuIExldCdzIHN0YXJ0IGJ5IG1ldGhvZGljYWxseSBjaGVja2luZyB0aGUgY29kZSBhbmQgZ2V0IHRoZSBmdWxsIGNhbGwgc3RhY2suXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMwNjgyLCJPdXRwdXRUb2tlbnMiOjQyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjlUMDY6MDM6NTIuMTQ3MjYyMTQ2WiIsIlNlcSI6MzIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0ODI3OTkwOCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJfX2llZWU4MDIxMV9yeF9oYW5kbGVfcGFja2V0XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9tYWM4MDIxMVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvbWFjODAyMTEvcnguYz01MzEwPXN0YXRpYyBib29sIGllZWU4MDIxMV9yeF9mb3JfaW50ZXJmYWNlKHN0cnVjdCBpZWVlODAyMTFfcnhfZGF0YSAqcngsXFxuLS1cXG5uZXQvbWFjODAyMTEvcnguYy01MzY4LSAqL1xcbm5ldC9tYWM4MDIxMS9yeC5jOjUzNjk6c3RhdGljIHZvaWQgX19pZWVlODAyMTFfcnhfaGFuZGxlX3BhY2tldChzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcXG5uZXQvbWFjODAyMTEvcnguYy01MzcwLVxcdFxcdFxcdFxcdFxcdCBzdHJ1Y3QgaWVlZTgwMjExX3N0YSAqcHVic3RhLFxcbi0tXFxubmV0L21hYzgwMjExL3J4LmM9NTU1OT12b2lkIGllZWU4MDIxMV9yeF9saXN0KHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LCBzdHJ1Y3QgaWVlZTgwMjExX3N0YSAqcHVic3RhLFxcbi0tXFxubmV0L21hYzgwMjExL3J4LmMtNTcxOS1cXHRcXHRlbHNlXFxubmV0L21hYzgwMjExL3J4LmM6NTcyMDpcXHRcXHRcXHRfX2llZWU4MDIxMV9yeF9oYW5kbGVfcGFja2V0KGh3LCBwdWJzdGEsIHNrYiwgbGlzdCk7XFxubmV0L21hYzgwMjExL3J4LmMtNTcyMS1cXHR9XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI5VDA2OjAzOjUyLjE5NTU0ODQyNFoiLCJTZXEiOjMzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo2MzI4NjMxMTk0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgODAyLjExIFJlY2VpdmUgUGF0aCoqXG5cbk9rYXksIGxldCdzIGJyZWFrIGRvd24gaG93IHRoaXMgODAyLjExIHJlY2VpdmUgcGF0aCBpcyBzdHJ1Y3R1cmVkLiBJdCBsb29rcyBsaWtlIHRoZSBtYWluIGVudHJ5IHBvaW50cyBmb3IgcHJvY2Vzc2luZyByZWNlaXZlZCBmcmFtZXMgYXJlIGBpZWVlODAyMTFfcnhfbGlzdGAsIGBpZWVlODAyMTFfcnhfbmFwaWAsIGFuZCBgaWVlZTgwMjExX3J4X2lycXNhZmVgLiBJIGFsc28gc2VlIGBpZWVlODAyMTFfcnhfaF9kZWZyYWdtZW50YCBsaXN0ZWQsIHdoaWNoIGlzIGxpa2VseSBpbnZvbHZlZCBpbiBkZWZyYWdtZW50YXRpb24sIGVzcGVjaWFsbHkgZ2l2ZW4gdGhlIGBNQUM4MDIxMV9OT0lOTElORWAgY29udGV4dCwgb3IgaWYgaXQncyBleHBsaWNpdGx5IGV4cG9ydGVkIGFuZCBub3QgaW5saW5lZC5cblxuTm93LCBJJ20gY3VyaW91cyBhYm91dCBgaWVlZTgwMjExX3J4X2hfZGVmcmFnbWVudGAuIEkgd2FudCB0byBrbm93IGlmIHRoaXMgZnVuY3Rpb24gaXMgc3RhdGljIG9yIGlmIGl0J3Mgc3ViamVjdCB0byBhbnkgc3BlY2lhbCBpbmxpbmluZyBjb25zaWRlcmF0aW9ucywgbGlrZSBgZGVidWdfbm9pbmxpbmVgLiBMb29raW5nIGF0IGxpbmUgMjM3MiwgSSBzZWU6IGBzdGF0aWMgaWVlZTgwMjExX3J4X3Jlc3VsdCBkZWJ1Z19ub2lubGluZSBpZWVlODAyMTFfcnhfaF9kZWZyYWdtZW50KHN0cnVjdCBpZWVlODAyMTFfcnhfZGF0YSAqcngpYC4gQWhhISBJdCdzIGBzdGF0aWNgIGFuZCB1c2VzIGBkZWJ1Z19ub2lubGluZWAuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgYGRlYnVnX25vaW5saW5lYCBhY3R1YWxseSAqbWVhbnMqIGluIHRoaXMgY29udGV4dC4gTGV0J3MgZGlnIGludG8gdGhlIGRlZmluaXRpb24gb2YgdGhhdCBtYWNybyBhbmQgc2VlIHdoYXQncyBnb2luZyBvbiB3aXRoIGlubGluaW5nIGhlcmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMxMjI4LCJPdXRwdXRUb2tlbnMiOjMyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTkwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI5VDA2OjAzOjU4LjUyNDE4MjQwOFoiLCJTZXEiOjM0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDkwMzgzNDcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZGVidWdfbm9pbmxpbmVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L21hYzgwMjExXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9tYWM4MDIxMS9pZWVlODAyMTFfaS5oPTI5NDQ9dTMyIGllZWU4MDIxMV9jYWxjX2V4cGVjdGVkX3R4X2FpcnRpbWUoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXFxuLS1cXG5uZXQvbWFjODAyMTEvaWVlZTgwMjExX2kuaC0yOTQ4LSNpZmRlZiBDT05GSUdfTUFDODAyMTFfTk9JTkxJTkVcXG5uZXQvbWFjODAyMTEvaWVlZTgwMjExX2kuaDoyOTQ5OiNkZWZpbmUgZGVidWdfbm9pbmxpbmUgbm9pbmxpbmVcXG5uZXQvbWFjODAyMTEvaWVlZTgwMjExX2kuaC0yOTUwLSNlbHNlXFxubmV0L21hYzgwMjExL2llZWU4MDIxMV9pLmg6Mjk1MTojZGVmaW5lIGRlYnVnX25vaW5saW5lXFxubmV0L21hYzgwMjExL2llZWU4MDIxMV9pLmgtMjk1Mi0jZW5kaWZcXG4tLVxcbm5ldC9tYWM4MDIxMS9yeC5jPTE0NDU9c3RhdGljIHZvaWQgaWVlZTgwMjExX3J4X3Jlb3JkZXJfYW1wZHUoc3RydWN0IGllZWU4MDIxMV9yeF9kYXRhICpyeCxcXG4tLVxcbm5ldC9tYWM4MDIxMS9yeC5jLTE1MTktXFxubmV0L21hYzgwMjExL3J4LmM6MTUyMDpzdGF0aWMgaWVlZTgwMjExX3J4X3Jlc3VsdCBkZWJ1Z19ub2lubGluZVxcbm5ldC9tYWM4MDIxMS9yeC5jLTE1MjEtaWVlZTgwMjExX3J4X2hfY2hlY2tfZHVwKHN0cnVjdCBpZWVlODAyMTFfcnhfZGF0YSAqcngpXFxuLS1cXG5uZXQvbWFjODAyMTEvcnguYy0xNTc3LVxcbm5ldC9tYWM4MDIxMS9yeC5jOjE1Nzg6c3RhdGljIGllZWU4MDIxMV9yeF9yZXN1bHQgZGVidWdfbm9pbmxpbmVcXG5uZXQvbWFjODAyMTEvcnguYy0xNTc5LWllZWU4MDIxMV9yeF9oX2NoZWNrKHN0cnVjdCBpZWVlODAyMTFfcnhfZGF0YSAqcngpXFxuLS1cXG5uZXQvbWFjODAyMTEvcnguYy0xNjUwLVxcbm5ldC9tYWM4MDIxMS9yeC5jOjE2NTE6c3RhdGljIGllZWU4MDIxMV9yeF9yZXN1bHQgZGVidWdfbm9pbmxpbmVcXG5uZXQvbWFjODAyMTEvcnguYy0xNjUyLWllZWU4MDIxMV9yeF9oX2NoZWNrX21vcmVfZGF0YShzdHJ1Y3QgaWVlZTgwMjExX3J4X2RhdGEgKnJ4KVxcbi0tXFxubmV0L21hYzgwMjExL3J4LmM9MTgwOD1FWFBPUlRfU1lNQk9MKGllZWU4MDIxMV9zdGFfdWFwc2RfdHJpZ2dlcik7XFxubmV0L21hYzgwMjExL3J4LmMtMTgwOS1cXG5uZXQvbWFjODAyMTEvcnguYzoxODEwOnN0YXRpYyBpZWVlODAyMTFfcnhfcmVzdWx0IGRlYnVnX25vaW5saW5lXFxubmV0L21hYzgwMjExL3J4LmMtMTgxMS1pZWVlODAyMTFfcnhfaF91YXBzZF9hbmRfcHNwb2xsKHN0cnVjdCBpZWVlODAyMTFfcnhfZGF0YSAqcngpXFxuLS1cXG5uZXQvbWFjODAyMTEvcnguYy0xODYwLVxcbm5ldC9tYWM4MDIxMS9yeC5jOjE4NjE6c3RhdGljIGllZWU4MDIxMV9yeF9yZXN1bHQgZGVidWdfbm9pbmxpbmVcXG5uZXQvbWFjODAyMTEvcnguYy0xODYyLWllZWU4MDIxMV9yeF9oX3N0YV9wcm9jZXNzKHN0cnVjdCBpZWVlODAyMTFfcnhfZGF0YSAqcngpXFxuLS1cXG5uZXQvbWFjODAyMTEvcnguYz0xOTk3PWllZWU4MDIxMV9yeF9nZXRfYmlndGsoc3RydWN0IGllZWU4MDIxMV9yeF9kYXRhICpyeCwgaW50IGlkeClcXG4tLVxcbm5ldC9tYWM4MDIxMS9yeC5jLTIwMjktXFxubmV0L21hYzgwMjExL3J4LmM6MjAzMDpzdGF0aWMgaWVlZTgwMjExX3J4X3Jlc3VsdCBkZWJ1Z19ub2lubGluZVxcbm5ldC9tYWM4MDIxMS9yeC5jLTIwMzEtaWVlZTgwMjExX3J4X2hfZGVjcnlwdChzdHJ1Y3QgaWVlZTgwMjExX3J4X2RhdGEgKnJ4KVxcbi0tXFxubmV0L21hYzgwMjExL3J4LmM9MjM2Mj1zdGF0aWMgYm9vbCByZXF1aXJlc19zZXF1ZW50aWFsX3BuKHN0cnVjdCBpZWVlODAyMTFfcnhfZGF0YSAqcngsIF9fbGUxNiBmYylcXG4tLVxcbm5ldC9tYWM4MDIxMS9yeC5jLTIzNzEtXFxubmV0L21hYzgwMjExL3J4LmM6MjM3MjpzdGF0aWMgaWVlZTgwMjExX3J4X3Jlc3VsdCBkZWJ1Z19ub2lubGluZVxcbm5ldC9tYWM4MDIxMS9yeC5jLTIzNzMtaWVlZTgwMjExX3J4X2hfZGVmcmFnbWVudChzdHJ1Y3QgaWVlZTgwMjExX3J4X2RhdGEgKnJ4KVxcbi0tXFxubmV0L21hYzgwMjExL3J4LmM9Mjk2MT1pZWVlODAyMTFfcnhfbWVzaF9kYXRhKHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLCBzdHJ1Y3Qgc3RhX2luZm8gKnN0YSxcXG4tLVxcbm5ldC9tYWM4MDIxMS9yeC5jLTMxNDMtXFxubmV0L21hYzgwMjExL3J4LmM6MzE0NDpzdGF0aWMgaWVlZTgwMjExX3J4X3Jlc3VsdCBkZWJ1Z19ub2lubGluZVxcbm5ldC9tYWM4MDIxMS9yeC5jLTMxNDUtX19pZWVlODAyMTFfcnhfaF9hbXNkdShzdHJ1Y3QgaWVlZTgwMjExX3J4X2RhdGEgKnJ4LCB1OCBkYXRhX29mZnNldClcXG4tLVxcbm5ldC9tYWM4MDIxMS9yeC5jLTMyMjktXFxubmV0L21hYzgwMjExL3J4LmM6MzIzMDpzdGF0aWMgaWVlZTgwMjExX3J4X3Jlc3VsdCBkZWJ1Z19ub2lubGluZVxcbm5ldC9tYWM4MDIxMS9yeC5jLTMyMzEtaWVlZTgwMjExX3J4X2hfYW1zZHUoc3RydWN0IGllZWU4MDIxMV9yeF9kYXRhICpyeClcXG4tLVxcbm5ldC9tYWM4MDIxMS9yeC5jLTMyODYtXFxubmV0L21hYzgwMjExL3J4LmM6MzI4NzpzdGF0aWMgaWVlZTgwMjExX3J4X3Jlc3VsdCBkZWJ1Z19ub2lubGluZVxcbm5ldC9tYWM4MDIxMS9yeC5jLTMyODgtaWVlZTgwMjExX3J4X2hfZGF0YShzdHJ1Y3QgaWVlZTgwMjExX3J4X2RhdGEgKnJ4KVxcbi0tXFxubmV0L21hYzgwMjExL3J4LmMtMzM2Ny1cXG5uZXQvbWFjODAyMTEvcnguYzozMzY4OnN0YXRpYyBpZWVlODAyMTFfcnhfcmVzdWx0IGRlYnVnX25vaW5saW5lXFxubmV0L21hYzgwMjExL3J4LmMtMzM2OS1pZWVlODAyMTFfcnhfaF9jdHJsKHN0cnVjdCBpZWVlODAyMTFfcnhfZGF0YSAqcngsIHN0cnVjdCBza19idWZmX2hlYWQgKmZyYW1lcylcXG4tLVxcbm5ldC9tYWM4MDIxMS9yeC5jPTM0Nzk9aWVlZTgwMjExX3J4X2NoZWNrX2Jzc19jb2xvcl9jb2xsaXNpb24oc3RydWN0IGllZWU4MDIxMV9yeF9kYXRhICpyeClcXG4tLVxcbm5ldC9tYWM4MDIxMS9yeC5jLTM1MjMtXFxubmV0L21hYzgwMjExL3J4LmM6MzUyNDpzdGF0aWMgaWVlZTgwMjExX3J4X3Jlc3VsdCBkZWJ1Z19ub2lubGluZVxcbm5ldC9tYWM4MDIxMS9yeC5jLTM1MjUtaWVlZTgwMjExX3J4X2hfbWdtdF9jaGVjayhzdHJ1Y3QgaWVlZTgwMjExX3J4X2RhdGEgKnJ4KVxcbi0tXFxubmV0L21hYzgwMjExL3J4LmM9MzU3Nz1pZWVlODAyMTFfcHJvY2Vzc19yeF90d3RfYWN0aW9uKHN0cnVjdCBpZWVlODAyMTFfcnhfZGF0YSAqcngpXFxuLS1cXG5uZXQvbWFjODAyMTEvcnguYy0zNjI2LVxcbm5ldC9tYWM4MDIxMS9yeC5jOjM2Mjc6c3RhdGljIGllZWU4MDIxMV9yeF9yZXN1bHQgZGVidWdfbm9pbmxpbmVcXG5uZXQvbWFjODAyMTEvcnguYy0zNjI4LWllZWU4MDIxMV9yeF9oX2FjdGlvbihzdHJ1Y3QgaWVlZTgwMjExX3J4X2RhdGEgKnJ4KVxcbi0tXFxubmV0L21hYzgwMjExL3J4LmMtMzk5Ny1cXG5uZXQvbWFjODAyMTEvcnguYzozOTk4OnN0YXRpYyBpZWVlODAyMTFfcnhfcmVzdWx0IGRlYnVnX25vaW5saW5lXFxubmV0L21hYzgwMjExL3J4LmMtMzk5OS1pZWVlODAyMTFfcnhfaF91c2Vyc3BhY2VfbWdtdChzdHJ1Y3QgaWVlZTgwMjExX3J4X2RhdGEgKnJ4KVxcbi0tXFxubmV0L21hYzgwMjExL3J4LmMtNDA0MC1cXG5uZXQvbWFjODAyMTEvcnguYzo0MDQxOnN0YXRpYyBpZWVlODAyMTFfcnhfcmVzdWx0IGRlYnVnX25vaW5saW5lXFxubmV0L21hYzgwMjExL3J4LmMtNDA0Mi1pZWVlODAyMTFfcnhfaF9hY3Rpb25fcG9zdF91c2Vyc3BhY2Uoc3RydWN0IGllZWU4MDIxMV9yeF9kYXRhICpyeClcXG4tLVxcbm5ldC9tYWM4MDIxMS9yeC5jLTQwNzQtXFxubmV0L21hYzgwMjExL3J4LmM6NDA3NTpzdGF0aWMgaWVlZTgwMjExX3J4X3Jlc3VsdCBkZWJ1Z19ub2lubGluZVxcbm5ldC9tYWM4MDIxMS9yeC5jLTQwNzYtaWVlZTgwMjExX3J4X2hfYWN0aW9uX3JldHVybihzdHJ1Y3QgaWVlZTgwMjExX3J4X2RhdGEgKnJ4KVxcbi0tXFxubmV0L21hYzgwMjExL3J4LmMtNDEzNi1cXG5uZXQvbWFjODAyMTEvcnguYzo0MTM3OnN0YXRpYyBpZWVlODAyMTFfcnhfcmVzdWx0IGRlYnVnX25vaW5saW5lXFxubmV0L21hYzgwMjExL3J4LmMtNDEzOC1pZWVlODAyMTFfcnhfaF9leHQoc3RydWN0IGllZWU4MDIxMV9yeF9kYXRhICpyeClcXG4tLVxcbm5ldC9tYWM4MDIxMS9yeC5jLTQxNTQtXFxubmV0L21hYzgwMjExL3J4LmM6NDE1NTpzdGF0aWMgaWVlZTgwMjExX3J4X3Jlc3VsdCBkZWJ1Z19ub2lubGluZVxcbm5ldC9tYWM4MDIxMS9yeC5jLTQxNTYtaWVlZTgwMjExX3J4X2hfbWdtdChzdHJ1Y3QgaWVlZTgwMjExX3J4X2RhdGEgKnJ4KVxcbi0tXFxubmV0L21hYzgwMjExL3R4LmM9NDM9c3RhdGljIF9fbGUxNiBpZWVlODAyMTFfZHVyYXRpb24oc3RydWN0IGllZWU4MDIxMV90eF9kYXRhICp0eCxcXG4tLVxcbm5ldC9tYWM4MDIxMS90eC5jLTE5MS0vKiB0eCBoYW5kbGVycyAqL1xcbm5ldC9tYWM4MDIxMS90eC5jOjE5MjpzdGF0aWMgaWVlZTgwMjExX3R4X3Jlc3VsdCBkZWJ1Z19ub2lubGluZVxcbm5ldC9tYWM4MDIxMS90eC5jLTE5My1pZWVlODAyMTFfdHhfaF9keW5hbWljX3BzKHN0cnVjdCBpZWVlODAyMTFfdHhfZGF0YSAqdHgpXFxuLS1cXG5uZXQvbWFjODAyMTEvdHguYy0yNjgtXFxubmV0L21hYzgwMjExL3R4LmM6MjY5OnN0YXRpYyBpZWVlODAyMTFfdHhfcmVzdWx0IGRlYnVnX25vaW5saW5lXFxubmV0L21hYzgwMjExL3R4LmMtMjcwLWllZWU4MDIxMV90eF9oX2NoZWNrX2Fzc29jKHN0cnVjdCBpZWVlODAyMTFfdHhfZGF0YSAqdHgpXFxuLS1cXG5uZXQvbWFjODAyMTEvdHguYz00NTg9aWVlZTgwMjExX3R4X2hfdW5pY2FzdF9wc19idWYoc3RydWN0IGllZWU4MDIxMV90eF9kYXRhICp0eClcXG4tLVxcbm5ldC9tYWM4MDIxMS90eC5jLTUzNS1cXG5uZXQvbWFjODAyMTEvdHguYzo1MzY6c3RhdGljIGllZWU4MDIxMV90eF9yZXN1bHQgZGVidWdfbm9pbmxpbmVcXG5uZXQvbWFjODAyMTEvdHguYy01MzctaWVlZTgwMjExX3R4X2hfcHNfYnVmKHN0cnVjdCBpZWVlODAyMTFfdHhfZGF0YSAqdHgpXFxuLS1cXG5uZXQvbWFjODAyMTEvdHguYy01NDctXFxubmV0L21hYzgwMjExL3R4LmM6NTQ4OnN0YXRpYyBpZWVlODAyMTFfdHhfcmVzdWx0IGRlYnVnX25vaW5saW5lXFxubmV0L21hYzgwMjExL3R4LmMtNTQ5LWllZWU4MDIxMV90eF9oX2NoZWNrX2NvbnRyb2xfcG9ydF9wcm90b2NvbChzdHJ1Y3QgaWVlZTgwMjExX3R4X2RhdGEgKnR4KVxcbi0tXFxubmV0L21hYzgwMjExL3R4LmM9NTY0PWllZWU4MDIxMV9zZWxlY3RfbGlua19rZXkoc3RydWN0IGllZWU4MDIxMV90eF9kYXRhICp0eClcXG4tLVxcbm5ldC9tYWM4MDIxMS90eC5jLTU5MS1cXG5uZXQvbWFjODAyMTEvdHguYzo1OTI6c3RhdGljIGllZWU4MDIxMV90eF9yZXN1bHQgZGVidWdfbm9pbmxpbmVcXG5uZXQvbWFjODAyMTEvdHguYy01OTMtaWVlZTgwMjExX3R4X2hfc2VsZWN0X2tleShzdHJ1Y3QgaWVlZTgwMjExX3R4X2RhdGEgKnR4KVxcbi0tXFxubmV0L21hYzgwMjExL3R4LmMtNjczLVxcbm5ldC9tYWM4MDIxMS90eC5jOjY3NDpzdGF0aWMgaWVlZTgwMjExX3R4X3Jlc3VsdCBkZWJ1Z19ub2lubGluZVxcbm5ldC9tYWM4MDIxMS90eC5jLTY3NS1pZWVlODAyMTFfdHhfaF9yYXRlX2N0cmwoc3RydWN0IGllZWU4MDIxMV90eF9kYXRhICp0eClcXG4tLVxcbm5ldC9tYWM4MDIxMS90eC5jPTgwOD1zdGF0aWMgX19sZTE2IGllZWU4MDIxMV90eF9uZXh0X3NlcShzdHJ1Y3Qgc3RhX2luZm8gKnN0YSwgaW50IHRpZClcXG4tLVxcbm5ldC9tYWM4MDIxMS90eC5jLTgxOC1cXG5uZXQvbWFjODAyMTEvdHguYzo4MTk6c3RhdGljIGllZWU4MDIxMV90eF9yZXN1bHQgZGVidWdfbm9pbmxpbmVcXG5uZXQvbWFjODAyMTEvdHguYy04MjAtaWVlZTgwMjExX3R4X2hfc2VxdWVuY2Uoc3RydWN0IGllZWU4MDIxMV90eF9kYXRhICp0eClcXG4tLVxcbm5ldC9tYWM4MDIxMS90eC5jPTg5MT1zdGF0aWMgaW50IGllZWU4MDIxMV9mcmFnbWVudChzdHJ1Y3QgaWVlZTgwMjExX3R4X2RhdGEgKnR4LFxcbi0tXFxubmV0L21hYzgwMjExL3R4LmMtOTUwLVxcbm5ldC9tYWM4MDIxMS90eC5jOjk1MTpzdGF0aWMgaWVlZTgwMjExX3R4X3Jlc3VsdCBkZWJ1Z19ub2lubGluZVxcbm5ldC9tYWM4MDIxMS90eC5jLTk1Mi1pZWVlODAyMTFfdHhfaF9mcmFnbWVudChzdHJ1Y3QgaWVlZTgwMjExX3R4X2RhdGEgKnR4KVxcbi0tXFxubmV0L21hYzgwMjExL3R4LmMtMTAyNS1cXG5uZXQvbWFjODAyMTEvdHguYzoxMDI2OnN0YXRpYyBpZWVlODAyMTFfdHhfcmVzdWx0IGRlYnVnX25vaW5saW5lXFxubmV0L21hYzgwMjExL3R4LmMtMTAyNy1pZWVlODAyMTFfdHhfaF9zdGF0cyhzdHJ1Y3QgaWVlZTgwMjExX3R4X2RhdGEgKnR4KVxcbi0tXFxubmV0L21hYzgwMjExL3R4LmMtMTA0NC1cXG5uZXQvbWFjODAyMTEvdHguYzoxMDQ1OnN0YXRpYyBpZWVlODAyMTFfdHhfcmVzdWx0IGRlYnVnX25vaW5saW5lXFxubmV0L21hYzgwMjExL3R4LmMtMTA0Ni1pZWVlODAyMTFfdHhfaF9lbmNyeXB0KHN0cnVjdCBpZWVlODAyMTFfdHhfZGF0YSAqdHgpXFxuLS1cXG5uZXQvbWFjODAyMTEvdHguYy0xMDc5LVxcbm5ldC9tYWM4MDIxMS90eC5jOjEwODA6c3RhdGljIGllZWU4MDIxMV90eF9yZXN1bHQgZGVidWdfbm9pbmxpbmVcXG5uZXQvbWFjODAyMTEvdHguYy0xMDgxLWllZWU4MDIxMV90eF9oX2NhbGN1bGF0ZV9kdXJhdGlvbihzdHJ1Y3QgaWVlZTgwMjExX3R4X2RhdGEgKnR4KVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yOVQwNjowMzo1OC41NzMyMjkxNzdaIiwiU2VxIjozNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MzYxNDEyNDM5OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBJbml0aWFsIEFzc2Vzc21lbnQgb2YgbWFjODAyMTEgUlggRW50cnkgUG9pbnRzKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhlIGVudHJ5IHBvaW50cyBmb3IgdGhlIG1hYzgwMjExIHJlY2VpdmUgcGF0aC4gUmlnaHQgb2ZmIHRoZSBiYXQsIEkgc2VlIHRoYXQgYGllZWU4MDIxMV9yeF9saXN0YCwgYGllZWU4MDIxMV9yeF9uYXBpYCwgYW5kIGBpZWVlODAyMTFfcnhfaXJxc2FmZWAgYXJlIHRoZSBub24tc3RhdGljIGVudHJ5IHBvaW50cyBkZWZpbmVkIHdpdGhpbiBgbmV0L21hYzgwMjExL3J4LmNgLiBNeSBpbnN0aW5jdCBpcyB0byBtYWtlIHN1cmUgdGhlc2UgYXJlIHRoZSBjb3JlIGludGVyZmFjZXMgSSBzaG91bGQgYmUgZm9jdXNpbmcgb24sIHNvIEkgbmVlZCB0byBxdWlja2x5IHNjYW4gYG5ldC9tYWM4MDIxMS9yeC5jYCBpdHNlbGYgYW5kIHBvc3NpYmx5IGVsc2V3aGVyZSB0byBlbnN1cmUgSSdtIG5vdCBtaXNzaW5nIGFueSBvdGhlciBjcnVjaWFsIHJlbGV2YW50IGZ1bmN0aW9ucy4gTXkgcmFkYXIgaXMgdXAgZm9yIGFueXRoaW5nIGVsc2UsIGxpa2UgdGhlIHdheSBgaWVlZTgwMjExX3J4X2hfZGVmcmFnbWVudGAgaXMgaGFuZGxlZCDigJMgaXQgKmlzKiBhIHN5bWJvbCBkdWUgdG8gYE1BQzgwMjExX05PSU5MSU5FYCBidXQgSSdkIHJhdGhlciBzdGljayB3aXRoIHRob3NlIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50cyBpZiBwb3NzaWJsZSwgYW5kIGVzcGVjaWFsbHkgdGhlIG9uZXMgSSBtZW50aW9uZWQgaW5pdGlhbGx5LlxuXG5JIHNob3VsZCBhbHNvIHF1aWNrbHkgcmV2aWV3IHRoZSByZWxldmFudCBjb25maWd1cmF0aW9uIG9wdGlvbnMuIGBNQUM4MDIxMWAsIG9idmlvdXNseSwgYENGRzgwMjExYCB3aGljaCBpcyBmdW5kYW1lbnRhbCwgYW5kIHRoZW4gYE1BQzgwMjExX0hXU0lNYC4gSSBuZWVkIHRvIGVuc3VyZSBJJ20gbm90IG92ZXJsb29raW5nIGFueXRoaW5nIGNydWNpYWwgdGhlcmUuIFNwZWNpZmljYWxseSwgZm9yIGBNQUM4MDIxMV9IV1NJTWAsIEknbGwgbmVlZCB0byBjaGVjayBpZiB0aGF0IG9wdGlvbiByZWxpZXMgb24gb3IgaW50ZXJhY3RzIHdpdGggYW55IG90aGVyIGNvbmZpZ3VyYXRpb25zLiBJJ2xsIHNlYXJjaCBmb3IgXCJjb25maWcgTUFDODAyMTFfSFdTSU1cIiB3aXRoaW4gYGRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvS2NvbmZpZ2AgdG8gcGlucG9pbnQgYW55IGRlcGVuZGVuY2llcyBvciBpbnRlcmFjdGlvbnMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM1Njc4LCJPdXRwdXRUb2tlbnMiOjM2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6Mjg5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI5VDA2OjA0OjAyLjE4NzM1NjA3NVoiLCJTZXEiOjM2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2NDQxMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogMzBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAgMTpcXHRjb25maWcgTUFDODAyMTFfSFdTSU1cXG4gICAyOlxcdFxcdHRyaXN0YXRlIFxcXCJTaW11bGF0ZWQgcmFkaW8gdGVzdGluZyB0b29sIGZvciBtYWM4MDIxMVxcXCJcXG4gICAzOlxcdFxcdGRlcGVuZHMgb24gTUFDODAyMTFcXG4gICA0OlxcdFxcdGhlbHBcXG4gICA1OlxcdFxcdCAgVGhpcyBkcml2ZXIgaXMgYSBkZXZlbG9wZXIgdGVzdGluZyB0b29sIHRoYXQgY2FuIGJlIHVzZWQgdG8gdGVzdFxcbiAgIDY6XFx0XFx0ICBJRUVFIDgwMi4xMSBuZXR3b3JraW5nIHN0YWNrIChtYWM4MDIxMSkgZnVuY3Rpb25hbGl0eS4gVGhpcyBpcyBub3RcXG4gICA3OlxcdFxcdCAgbmVlZGVkIGZvciBub3JtYWwgd2lyZWxlc3MgTEFOIHVzYWdlIGFuZCBpcyBvbmx5IGZvciB0ZXN0aW5nLiBTZWVcXG4gICA4OlxcdFxcdCAgRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL21hYzgwMjExX2h3c2ltIGZvciBtb3JlIGluZm9ybWF0aW9uIG9uIGhvd1xcbiAgIDk6XFx0XFx0ICB0byB1c2UgdGhpcyB0b29sLlxcbiAgMTA6XFx0XFxuICAxMTpcXHRcXHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmU6IHRoZSBtb2R1bGUgd2lsbCBiZVxcbiAgMTI6XFx0XFx0ICBjYWxsZWQgbWFjODAyMTFfaHdzaW0uICBJZiB1bnN1cmUsIHNheSBOLlxcbiAgMTM6XFx0XFxuICAxNDpcXHRjb25maWcgVklSVF9XSUZJXFxuICAxNTpcXHRcXHR0cmlzdGF0ZSBcXFwiV2lmaSB3cmFwcGVyIGZvciBldGhlcm5ldCBkcml2ZXJzXFxcIlxcbiAgMTY6XFx0XFx0ZGVwZW5kcyBvbiBDRkc4MDIxMVxcbiAgMTc6XFx0XFx0aGVscFxcbiAgMTg6XFx0XFx0ICBUaGlzIG9wdGlvbiBhZGRzIHN1cHBvcnQgZm9yIGV0aGVybmV0IGNvbm5lY3Rpb25zIHRvIGFwcGVhciBhcyBpZiB0aGV5XFxuICAxOTpcXHRcXHQgIGFyZSB3aWZpIGNvbm5lY3Rpb25zIHRocm91Z2ggYSBzcGVjaWFsIHJ0bmV0bGluayBkZXZpY2UuXFxuICAyMDpcXHRcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjlUMDY6MDQ6MDIuMTg3NDIyMTM1WiIsIlNlcSI6MzcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjU4MTIwMjYwODUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCdzIHNlZSB3aGF0J3MgZ29pbmcgb24gaGVyZS5cblxuKipJbnZlc3RpZ2F0aW5nIFdpcmVsZXNzIENvbmZpZ3VyYXRpb24gT3B0aW9ucyoqXG5cblJpZ2h0LCBzbyBJIG5lZWQgdG8gZGlnIGludG8gdGhlIHdpcmVsZXNzIGNvbmZpZ3VyYXRpb24sIHNwZWNpZmljYWxseSBhcm91bmQgbWFjODAyMTEuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCBhcmUgdGhlcmUgYW55ICpvdGhlciogY29uZmlncyByZWxhdGVkIHRvIHdpcmVsZXNzIG9yIG1hYzgwMjExIHRoYXQgSSdtIG92ZXJsb29raW5nPyBMZXQncyBzdGFydCB3aXRoIGEgc3lzdGVtYXRpYyBjaGVjay4gVGhlIGZpcnN0IHBsYWNlIHRvIGxvb2sgd291bGQgYmUgdW5kZXIgYE5FVERFVklDRVNgLCB0aGVuIGBXTEFOYCwgYW5kIGZpbmFsbHkgd2l0aGluIHRoZSBgTUFDODAyMTFgIHNlY3Rpb24uIEkgbmVlZCB0byBtYWtlIHN1cmUgSSdtIG5vdCBtaXNzaW5nIGFueXRoaW5nIGxpa2UgYE1BQzgwMjExX0hXU0lNYCBvciBgQ0ZHODAyMTFgIOKAkyB0aG9zZSBvZnRlbiBoYXZlIHRoZWlyIG93biBjb25maWd1cmF0aW9ucy4gVGhlbiwgdG8gYmUgdGhvcm91Z2gsIEkgc2hvdWxkIGFsc28gY2hlY2sgdGhlIGBkcml2ZXJzL25ldC93aXJlbGVzcy9LY29uZmlnYCBmaWxlLiBUaGF0J3MgdXN1YWxseSB0aGUgY2Fub25pY2FsIHNvdXJjZSBmb3IgdGhlc2Uga2luZHMgb2Ygc2V0dGluZ3MgYW5kIGRlcGVuZGVuY2llcy4gVGhpcyBzaG91bGQgZ2l2ZSBtZSBhIGdvb2QgbGF5IG9mIHRoZSBsYW5kLCBjb25maWd1cmF0aW9uLXdpc2UuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM2NzA3LCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NzcsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yOVQwNjowNDowNy45OTk0NTEyM1oiLCJTZXEiOjM4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2NDgxMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEsXG4gIFwiTGluZUNvdW50XCI6IDQwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgIDE6XFx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuICAgMjpcXHQjXFxuICAgMzpcXHQjIFdpcmVsZXNzIExBTiBkZXZpY2UgY29uZmlndXJhdGlvblxcbiAgIDQ6XFx0I1xcbiAgIDU6XFx0XFxuICAgNjpcXHRtZW51Y29uZmlnIFdMQU5cXG4gICA3OlxcdFxcdGJvb2wgXFxcIldpcmVsZXNzIExBTlxcXCJcXG4gICA4OlxcdFxcdGRlcGVuZHMgb24gIVMzOTBcXG4gICA5OlxcdFxcdGRlcGVuZHMgb24gTkVUXFxuICAxMDpcXHRcXHRzZWxlY3QgV0lSRUxFU1NcXG4gIDExOlxcdFxcdGRlZmF1bHQgeVxcbiAgMTI6XFx0XFx0aGVscFxcbiAgMTM6XFx0XFx0ICBUaGlzIHNlY3Rpb24gY29udGFpbnMgYWxsIHRoZSBwcmUgODAyLjExIGFuZCA4MDIuMTEgd2lyZWxlc3NcXG4gIDE0OlxcdFxcdCAgZGV2aWNlIGRyaXZlcnMuIEZvciBhIGNvbXBsZXRlIGxpc3Qgb2YgZHJpdmVycyBhbmQgZG9jdW1lbnRhdGlvblxcbiAgMTU6XFx0XFx0ICBvbiB0aGVtIHJlZmVyIHRvIHRoZSB3aXJlbGVzcyB3aWtpOlxcbiAgMTY6XFx0XFxuICAxNzpcXHRcXHQgIGh0dHBzOi8vd2lyZWxlc3Mud2lraS5rZXJuZWwub3JnL2VuL3VzZXJzL0RyaXZlcnNcXG4gIDE4OlxcdFxcbiAgMTk6XFx0aWYgV0xBTlxcbiAgMjA6XFx0XFxuICAyMTpcXHRzb3VyY2UgXFxcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2FkbXRlay9LY29uZmlnXFxcIlxcbiAgMjI6XFx0c291cmNlIFxcXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvS2NvbmZpZ1xcXCJcXG4gIDIzOlxcdHNvdXJjZSBcXFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRtZWwvS2NvbmZpZ1xcXCJcXG4gIDI0OlxcdHNvdXJjZSBcXFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vS2NvbmZpZ1xcXCJcXG4gIDI1OlxcdHNvdXJjZSBcXFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvS2NvbmZpZ1xcXCJcXG4gIDI2OlxcdHNvdXJjZSBcXFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvS2NvbmZpZ1xcXCJcXG4gIDI3OlxcdHNvdXJjZSBcXFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9LY29uZmlnXFxcIlxcbiAgMjg6XFx0c291cmNlIFxcXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9LY29uZmlnXFxcIlxcbiAgMjk6XFx0c291cmNlIFxcXCJkcml2ZXJzL25ldC93aXJlbGVzcy9taWNyb2NoaXAvS2NvbmZpZ1xcXCJcXG4gIDMwOlxcdHNvdXJjZSBcXFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9LY29uZmlnXFxcIlxcbiAgMzE6XFx0c291cmNlIFxcXCJkcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvS2NvbmZpZ1xcXCJcXG4gIDMyOlxcdHNvdXJjZSBcXFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvcHVyZWxpZmkvS2NvbmZpZ1xcXCJcXG4gIDMzOlxcdHNvdXJjZSBcXFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL0tjb25maWdcXFwiXFxuICAzNDpcXHRzb3VyY2UgXFxcImRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvS2NvbmZpZ1xcXCJcXG4gIDM1OlxcdHNvdXJjZSBcXFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvcnNpL0tjb25maWdcXFwiXFxuICAzNjpcXHRzb3VyY2UgXFxcImRyaXZlcnMvbmV0L3dpcmVsZXNzL3NpbGFicy9LY29uZmlnXFxcIlxcbiAgMzc6XFx0c291cmNlIFxcXCJkcml2ZXJzL25ldC93aXJlbGVzcy9zdC9LY29uZmlnXFxcIlxcbiAgMzg6XFx0c291cmNlIFxcXCJkcml2ZXJzL25ldC93aXJlbGVzcy90aS9LY29uZmlnXFxcIlxcbiAgMzk6XFx0c291cmNlIFxcXCJkcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy9LY29uZmlnXFxcIlxcbiAgNDA6XFx0c291cmNlIFxcXCJkcml2ZXJzL25ldC93aXJlbGVzcy9xdWFudGVubmEvS2NvbmZpZ1xcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjlUMDY6MDQ6MDcuOTk5NTE3OFoiLCJTZXEiOjM5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoyNDM4Njg4Mjg3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQncyBkaXZlIGludG8gdGhpcy4gSGVyZSdzIGhvdyBJJ2QgYXBwcm9hY2ggdGhhdCBrZXJuZWwgY29uZmlndXJhdGlvbiBmaWxlIGNoZWNrOlxuXG4qKkV4YW1pbmluZyB0aGUgV2lyZWxlc3MgVmlydHVhbCBEcml2ZXIgQ29uZmlndXJhdGlvbioqXG5cblJpZ2h0LCB0aW1lIHRvIGdldCBhIGdyaXAgb24gdGhpcyB3aXJlbGVzcyB2aXJ0dWFsIGRyaXZlciBjb25maWd1cmF0aW9uLiBGaXJzdCwgSSBuZWVkIHRvIHZlcmlmeSBpdHMgY29uZmlndXJhdGlvbiwgc28gbGV0J3MgY2hlY2sgYHNvdXJjZSBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvS2NvbmZpZ1wiYCBpbiBgZHJpdmVycy9uZXQvd2lyZWxlc3MvS2NvbmZpZ2AuIEknbGwgYmUgbG9va2luZyBmb3IgZGVwZW5kZW5jaWVzLCBkZWZhdWx0IHNldHRpbmdzLCBhbmQgYW55IHNwZWNpZmljIG9wdGlvbnMgdGhhdCBwZXJ0YWluIHRvIHRoZSB2aXJ0dWFsIGRyaXZlci4gSSBleHBlY3QgdG8gZmluZCB0aGUgYnVpbGRpbmcgYmxvY2tzIHRoYXQgY29udHJvbCB3aGV0aGVyIG9yIG5vdCB0aGlzIGRyaXZlciBpcyBpbmNsdWRlZCwgYW5kIGhvdyBpdHMgZmVhdHVyZXMgYXJlIGV4cG9zZWQuIFRoaXMgS2NvbmZpZyBmaWxlIHdpbGwgYmUgdGhlIGtleSB0byB1bmRlcnN0YW5kaW5nIGhvdyB0aGUga2VybmVsJ3Mgd2lyZWxlc3Mgc3Vic3lzdGVtIGlzIHRyZWF0aW5nIHZpcnR1YWwgbmV0d29yayBkZXZpY2VzLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgYmVoYXZpb3IgZnVsbHkgdG8gZGVidWcgYW5kIG9wdGltaXplLlxuXG5cbiIsIklucHV0VG9rZW5zIjozNzY1NSwiT3V0cHV0VG9rZW5zIjoyOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI5LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjlUMDY6MDQ6MTAuNDM4MjA4MzU4WiIsIlNlcSI6NDAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3MzkxNzY2OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ2aXJ0dWFsL0tjb25maWdcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3NcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvS2NvbmZpZz00MD1zb3VyY2UgXFxcImRyaXZlcnMvbmV0L3dpcmVsZXNzL3F1YW50ZW5uYS9LY29uZmlnXFxcIlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL0tjb25maWctNDEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvS2NvbmZpZzo0Mjpzb3VyY2UgXFxcImRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvS2NvbmZpZ1xcXCJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9LY29uZmlnLTQzLVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yOVQwNjowNDoxMC41MTIxMzM5MzVaIiwiU2VxIjo0MSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6Mzg4MDgzNzA0NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50IG9mIHRoZSBtYWM4MDIxMSBGcmFnbWVudCBIYW5kbGluZyBGaXgqKlxuXG5Pa2F5LCBzbyB0aGlzIHBhdGNoIGlzIGNydWNpYWwuIEl0J3MgYWRkcmVzc2luZyBhIHByZXR0eSBuYXN0eSBpbnRlZ2VyIG92ZXJmbG93IHZ1bG5lcmFiaWxpdHkgaW4gdGhlIG1hYzgwMjExIGZyYW1lIHJlYXNzZW1ibHkgcHJvY2Vzcy4gVGhleSdyZSBjaGFuZ2luZyBgZXh0cmFfbGVuYCB3aXRoaW4gdGhlIGBpZWVlODAyMTFfZnJhZ21lbnRfZW50cnlgIHN0cnVjdCBmcm9tIGEgYHUxNmAgdG8gYW4gYHVuc2lnbmVkIGludGAuIFRoYXQncyBhIGNsYXNzaWMgY2FzZSBvZiBwb3RlbnRpYWxseSBvdmVyZmxvd2luZyB0aGUgY3VtdWxhdGl2ZSBmcmFnbWVudCBsZW5ndGhzLCB3aGljaCwgaWYgZXhwbG9pdGVkLCBjb3VsZCBsZWFkIHRvIGEgc2VyaW91cyBidWZmZXIgb3ZlcmZsb3cgd2hlbiB0aGUgc3lzdGVtIGF0dGVtcHRzIHRvIGFzc2VtYmxlIHRoZSBmcmFnbWVudHMgd2l0aCBgc2tiX3B1dF9kYXRhYC4gVGhpcyBpcyBhYnNvbHV0ZWx5IGEgZnVuY3Rpb25hbCBmaXgsIGRpcmVjdGx5IGltcGFjdGluZyBjb3JlIG1hYzgwMjExIGtlcm5lbCBsb2dpYyDigJMgdGhlIHJlYXNzZW1ibHkgcGFydCwgaW4gcGFydGljdWxhci5cblxuVGhlIGJlYXV0eSBvZiB0aGlzIHZ1bG5lcmFiaWxpdHkgaXMgdGhhdCBpdCdzIGhpZ2hseSBmdXp6YWJsZS4gSW5qZWN0aW5nIGNyYWZ0ZWQgODAyLjExIGZyYW1lcyB2aWEgYG1hYzgwMjExX2h3c2ltYCBpcyBnb2luZyB0byBiZSBpbmNyZWRpYmx5IGVmZmVjdGl2ZSBhdCB1bmNvdmVyaW5nIGFueSBsaW5nZXJpbmcgaXNzdWVzIG9yIGVkZ2UgY2FzZXMuIFdlIHJlYWxseSBzaG91bGQgcHV0IGEgaGVhdnkgZm9jdXMgb24gdGhhdCBhcHByb2FjaC5cblxuSSdtIG1ha2luZyBhIG5vdGUgb2YgdGhlIHNwZWNpZmljIHN5bWJvbHMgdG8gZm9jdXMgb24gZHVyaW5nIGZ1enppbmc6IGBpZWVlODAyMTFfcnhfbGlzdGAsIGBpZWVlODAyMTFfcnhfbmFwaWAsIGFuZCBgaWVlZTgwMjExX3J4X2lycXNhZmVgLiBUaGV5J3JlIHByb2JhYmx5IHJpZ2h0IHdoZXJlIHRoZSBkYXRhIGlzIGhhbmRsZWQuIEFuZCwgdGhlIGBNQUM4MDIxMWAsIGBDRkc4MDIxMWAsIGFuZCBgTUFDODAyMTFfSFdTSU1gIGNvbmZpZ3MgaGF2ZSB0byBiZSBlbmFibGVkIHRvIHRlc3QgdGhpcyBwcm9wZXJseS5cblxuQWxyaWdodCwgdGltZSB0byBzZXQgdGhpcyB1cCBmb3IgZnV6emluZyBhbmQgZ2V0IHRoZSByZXN1bHRzIVxuXG5cbiIsIklucHV0VG9rZW5zIjozNzk3MywiT3V0cHV0VG9rZW5zIjoxODUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMjUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjlUMDY6MDQ6MTQuMzkyOTc0NTQxWiIsIlNlcSI6NDIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzU1NDczMDcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk1BQzgwMjExXCIsXG4gICAgXCJDRkc4MDIxMVwiLFxuICAgIFwiTUFDODAyMTFfSFdTSU1cIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJpZWVlODAyMTFfcnhfbGlzdFwiLFxuICAgIFwiaWVlZTgwMjExX3J4X25hcGlcIixcbiAgICBcImllZWU4MDIxMV9yeF9pcnFzYWZlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggY2hhbmdlcyBgZXh0cmFfbGVuYCBpbiBgc3RydWN0IGllZWU4MDIxMV9mcmFnbWVudF9lbnRyeWAgZnJvbSBgdTE2YCB0byBgdW5zaWduZWQgaW50YCB0byBwcmV2ZW50IGludGVnZXIgb3ZlcmZsb3cgZHVyaW5nIDgwMi4xMSBmcmFnbWVudCByZWFzc2VtYmx5IGluIG1hYzgwMjExIHJ4IGhhbmRsaW5nLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgZGlyZWN0bHkgYWZmZWN0aW5nIHBhY2tldCByZWFzc2VtYmx5IGFuZCBtZW1vcnkgbWFuYWdlbWVudCBpbiB0aGUgcmVhY2hhYmxlIHdpcmVsZXNzIG5ldHdvcmtpbmcgc3Vic3lzdGVtLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk1BQzgwMjExXCIsXG4gICAgXCJDRkc4MDIxMVwiLFxuICAgIFwiTUFDODAyMTFfSFdTSU1cIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJpZWVlODAyMTFfcnhfbGlzdFwiLFxuICAgIFwiaWVlZTgwMjExX3J4X25hcGlcIixcbiAgICBcImllZWU4MDIxMV9yeF9pcnFzYWZlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggY2hhbmdlcyBgZXh0cmFfbGVuYCBpbiBgc3RydWN0IGllZWU4MDIxMV9mcmFnbWVudF9lbnRyeWAgZnJvbSBgdTE2YCB0byBgdW5zaWduZWQgaW50YCB0byBwcmV2ZW50IGludGVnZXIgb3ZlcmZsb3cgZHVyaW5nIDgwMi4xMSBmcmFnbWVudCByZWFzc2VtYmx5IGluIG1hYzgwMjExIHJ4IGhhbmRsaW5nLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgZGlyZWN0bHkgYWZmZWN0aW5nIHBhY2tldCByZWFzc2VtYmx5IGFuZCBtZW1vcnkgbWFuYWdlbWVudCBpbiB0aGUgcmVhY2hhYmxlIHdpcmVsZXNzIG5ldHdvcmtpbmcgc3Vic3lzdGVtLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yOVQwNjowNDoxNC40Njg1MjgwMjhaIiwiU2VxIjo0MywiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJJZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjYyNzEzNjI2MDYwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjlUMDY6MDQ6MTQuNDY4OTQ2MTk4WiIsIlNlcSI6NDQsIk5lc3RpbmciOjIsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImNvcmUiLCJEdXJhdGlvbiI6NjI3MTMyMDM4MTAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGNoYW5nZXMgdGhlIHR5cGUgb2YgYGV4dHJhX2xlbmAgaW4gYHN0cnVjdCBpZWVlODAyMTFfZnJhZ21lbnRfZW50cnlgIGZyb20gYHUxNmAgdG8gYHVuc2lnbmVkIGludGAgdG8gcHJldmVudCBpbnRlZ2VyIG92ZXJmbG93L3RydW5jYXRpb24gd2hlbiBjYWxjdWxhdGluZyB0aGUgdG90YWwgbGVuZ3RoIG9mIGZyYWdtZW50ZWQgZnJhbWVzIGR1cmluZyBJRUVFIDgwMi4xMSBkZWZyYWdtZW50YXRpb24uXFxuXFxuYHN0cnVjdCBpZWVlODAyMTFfZnJhZ21lbnRfZW50cnlgIGlzIGFuIGludGVybmFsIGtlcm5lbCBkYXRhIHN0cnVjdHVyZSB1c2VkIGV4Y2x1c2l2ZWx5IGJ5IG1hYzgwMjExIFJYIGRlZnJhZ21lbnRhdGlvbiByb3V0aW5lcy4gYGVudHJ5LVxcdTAwM2VleHRyYV9sZW5gIGlzIGV4cGxpY2l0bHkgaW5pdGlhbGl6ZWQgdG8gYDBgIGluIGBpZWVlODAyMTFfcmVhc3NlbWJsZV9hZGQoKWAsIGFuZCB0aGUgc3RydWN0IGlzIG5ldmVyIGNvcGllZCB0byB1c2Vyc3BhY2Ugb3IgZXhwb3NlZCB0byB1bmluaXRpYWxpemVkIG1lbW9yeSByZWFkcy4gVGhlIHVuZGVybHlpbmcgaXNzdWUgcHJldmVudGVkIGJ5IHRoaXMgcGF0Y2ggaXMgYW4gaW50ZWdlciBvdmVyZmxvdyB0aGF0IGNvdWxkIGxlYWQgdG8gaW5zdWZmaWNpZW50IFNLQiByZWFsbG9jYXRpb24gKHNrYiB0YWlscm9vbSBleGhhdXN0aW9uIC8gb3V0LW9mLWJvdW5kcyB3cml0ZXMpLCB3aGljaCBpcyBkZXRlY3RlZCBieSBLQVNBTiBhbmQgc3RhbmRhcmQga2VybmVsIGFzc2VydGlvbnMuIFRoZXJlIGlzIG5vIHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgcmVhZHMgb3IgaW5mb3JtYXRpb24gbGVha3MsIHNvIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3Qgd2FycmFudGVkLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBzZWN1cml0eSBlbmdpbmVlciBzcGVjaWFsaXppbmcgaW4ga2VybmVsIG1lbW9yeVxuZXJyb3IgZGV0ZWN0b3JzIChLQVNBTiBhbmQgS01TQU4pLiBZb3VyIGpvYiBpcyB0byByZXZpZXcgdGhlIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmRcbmRldGVybWluZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGp1c3RpZnkgc3Bhd25pbmcgYSBkZWRpY2F0ZWQgS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcilcbmZ1enppbmcgc2Vzc2lvbiBpbiBhZGRpdGlvbiB0byBzdGFuZGFyZCBLQVNBTiBmdXp6aW5nLlxuXG5DUklUSUNBTCBESVNUSU5DVElPTiBCRVRXRUVOIEtBU0FOIEFORCBLTVNBTjpcbi0gU3RhbmRhcmQgS0FTQU4ga2VybmVsIGJ1aWxkcyAodXBzdHJlYW0tYXBwYXJtb3Ita2FzYW4uY29uZmlnKSBhbHJlYWR5IGVuYWJsZVxuICBhIGNvbXByZWhlbnNpdmUgc3VpdGUgb2YgZGVidWdnaW5nIHRvb2xzIGFuZCBzYW5pdGl6ZXJzLCBpbmNsdWRpbmcgS0FTQU5cbiAgKG91dC1vZi1ib3VuZHMgYWNjZXNzZXMsIHVzZS1hZnRlci1mcmVlLCBkb3VibGUgZnJlZSwgaW52YWxpZCBmcmVlKSwgTE9DS0RFUFxuICAobG9ja2luZyBidWdzIGFuZCBkZWFkbG9ja3MpLCBVQi1zYW5pdGl6ZXJzLCBhbmQgbWVtb3J5IGNvcnJ1cHRpb24gY2hlY2tzLlxuLSBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKSBkZXRlY3RzIHJlYWRzIG9mIFVOSU5JVElBTElaRUQgbWVtb3J5IChzdGFjaywgaGVhcCxcbiAgb3IgcGFnZSBhbGxvY2F0aW9ucykgYW5kIGtlcm5lbC10by11c2VyIG1lbW9yeSBpbmZvLWxlYWtzLlxuXG5SdWxlOiBUSEVSRSBJUyBOTyBTRU5TRSBJTiBSVU5OSU5HIEEgS01TQU4gU0VTU0lPTiBJRiBBIEJVRyBDQU4gQkUgQ0FVR0hUIEJZIEtBU0FOLFxuTE9DS0RFUCwgT1IgT1RIRVIgU1RBTkRBUkQgQlVHIERFVEVDVE9SUy5cbkEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpbmN1cnMgc2lnbmlmaWNhbnQgcmVzb3VyY2UgY29zdHMuIFlvdSBtdXN0IE9OTFlcbnNldCBOZWVkc0tNU0FOPXRydWUgaWYgdGhlIGNvZGUgY2hhbmdlcyBpbnRyb2R1Y2Ugb3IgZXhwb3NlIFVOSU5JVElBTElaRUQgTUVNT1JZIHJpc2tzXG50aGF0IGFyZSBkZXRlY3RlZCBPTkxZIGJ5IEtNU0FOLlxuXG5Mb29rIGhvbGlzdGljYWxseSBhdCB0aGUgcGF0Y2ggc2VyaWVzIGFuZCBzdXJyb3VuZGluZyBjb2RlLiBFdmVuIGlmIG5vIGRpcmVjdFxudW5pbml0aWFsaXplZCBmaWVsZCBhY2Nlc3NlcyBvciBuZXcgYnVmZmVyIGFsbG9jYXRpb25zIGFyZSBhZGRlZCBpbiB0aGUgZGlmZiBpdHNlbGYsXG5hIHBhdGNoIG1heSBhbHRlciBjb250cm9sIGZsb3csIGJvdW5kcyBjaGVja2luZywgb3IgZGF0YSBsZW5ndGggY2FsY3VsYXRpb25zIGluIHdheXNcbnRoYXQgY2hhbmdlIGhvdyB0aGUgcmVzdCBvZiB0aGUgY29kZSBvcGVyYXRlcyBvbiBleGlzdGluZyBidWZmZXJzIChlLmcuIGFsbG93aW5nXG51bmluaXRpYWxpemVkIHN0YWNrL2hlYXAgbWVtb3J5IHRvIGJlIHJlYWQsIGNvcGllZCB0byB1c2VyIHNwYWNlLCBvciB1c2VkIGluIGNvbnRyb2xcbmZsb3cpLiBEbyBub3QgaGVzaXRhdGUgdG8gdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSxcbmNhbGxlZCBmdW5jdGlvbnMsIGFuZCBjYWxsZXJzLlxuXG5TZXQgTmVlZHNLTVNBTj10cnVlIE9OTFkgSUYgdGhlIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXM6XG4xLiBLZXJuZWwgc3RydWN0dXJlcyBzZW50IHRvIHVzZXIgc3BhY2UgKHZpYSBjb3B5X3RvX3VzZXIsIHB1dF91c2VyLCBuZXRsaW5rIHNrYlxuICAgYXR0cmlidXRlcywgaW9jdGwgb3V0cHV0IGFyZ3VtZW50cywgc29ja2V0IG9wdGlvbnMsIG9yIEJQRiBidWZmZXJzKSB3aGVyZSBmaWVsZHNcbiAgIG9yIHN0cnVjdHVyZSBwYWRkaW5nIG1pZ2h0IG5vdCBiZSBmdWxseSBpbml0aWFsaXplZC96ZXJvZWQuXG4yLiBDb25kaXRpb25hbCBsb2dpYyBvciBicmFuY2hpbmcgdGhhdCBkZXBlbmRzIG9uIHBvdGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzXG4gICBvciBzdHJ1Y3QgZmllbGRzLlxuMy4gQWxsb2NhdGlvbiBvciBpbml0aWFsaXphdGlvbiBvZiBjb21wbGV4IGRhdGEgc3RydWN0dXJlcyB3aGVyZSB1bmluaXRpYWxpemVkIGZpZWxkc1xuICAgY291bGQgYmUgcmVhZCBsYXRlciBpbiByZWFjaGFibGUgY29kZSBwYXRocy5cbjQuIEJvdW5kcyBjaGVja3MsIGxlbmd0aHMsIG9yIGxvZ2ljIGluIGEgd2F5IHRoYXQgYWxsb3dzIHN1cnJvdW5kaW5nIGNvZGUgdG8gYWNjZXNzXG4gICB1bmluaXRpYWxpemVkIGJ5dGVzIG9mIGV4aXN0aW5nIGJ1ZmZlcnMuXG5cblNldCBOZWVkc0tNU0FOPWZhbHNlIElGOlxuLSBUaGUgY29kZSBjaGFuZ2VzIHByaW1hcmlseSByaXNrIG91dC1vZi1ib3VuZHMgYWNjZXNzLCBhcnJheSBvdmVyZmxvd3MsIE5VTEwgcG9pbnRlclxuICBkZXJlZmVyZW5jZXMsIGxvY2tpbmcgZGVhZGxvY2tzLCBvciB1c2UtYWZ0ZXItZnJlZSBidWdzICh0aGVzZSBhcmUgYWxyZWFkeSBjYXVnaHRcbiAgYnkgS0FTQU4sIExPQ0tERVAsIG9yIHN0YW5kYXJkIGJ1ZyBkZXRlY3RvcnMpLlxuLSBBbGwgc3RhY2svaGVhcCBzdHJ1Y3R1cmVzIHRvdWNoZWQgb3IgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggYXJlIGZ1bGx5IHplcm9lZFxuICBvciBpbml0aWFsaXplZCAoZS5nLiB1c2luZyA9IHswfSwgbWVtc2V0LCBremFsbG9jKSBiZWZvcmUgYmVpbmcgcmVhZCBvciBjb3BpZWQuXG4tIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcy5cblxuVXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSBpZiBuZWNlc3NhcnksIHRoZW4gcHJvdmlkZVxuZGV0YWlsZWQgS01TQU5SZWFzb25pbmcgY29udHJhc3RpbmcgS0FTQU4gdnMgS01TQU4gYXBwbGljYWJpbGl0eSBmb3IgdGhpcyBwYXRjaC5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IGEyY2FmNTY0NGE3MTYwNjBlM2MzMmJmZjY1YmJmNTcyYzdiNTMwNTZcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgU2F0IEF1ZyAyOSAwNjowMjoxMiAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL25ldC9tYWM4MDIxMS9zdGFfaW5mby5oIGIvbmV0L21hYzgwMjExL3N0YV9pbmZvLmhcbmluZGV4IGVlMGQzMjg3N2M1YjQuLjExMmMzMzNmYmU0NWIgMTAwNjQ0XG4tLS0gYS9uZXQvbWFjODAyMTEvc3RhX2luZm8uaFxuKysrIGIvbmV0L21hYzgwMjExL3N0YV9pbmZvLmhcbkBAIC00NTgsNyArNDU4LDcgQEAgc3RydWN0IGllZWU4MDIxMV9mcmFnbWVudF9lbnRyeSB7XG4gXHRzdHJ1Y3Qgc2tfYnVmZl9oZWFkIHNrYl9saXN0O1xuIFx0dW5zaWduZWQgbG9uZyBmaXJzdF9mcmFnX3RpbWU7XG4gXHR1MTYgc2VxO1xuLVx0dTE2IGV4dHJhX2xlbjtcbitcdHVuc2lnbmVkIGludCBleHRyYV9sZW47XG4gXHR1MTYgbGFzdF9mcmFnO1xuIFx0dTggcnhfcXVldWU7XG4gXHR1OCBjaGVja19zZXF1ZW50aWFsX3BuOjEsIC8qIG5lZWRlZCBmb3IgQ0NNUC9HQ01QICovXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yOVQwNjowNDoxNC40Njg5NDcxNjhaIiwiU2VxIjo0NSwiTmVzdGluZyI6MywiVHlwZSI6ImxsbSIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6OTcwMjkwNDQzMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHN1bW1hcnksIGFzIEknZCBhcHByb2FjaCB0aGlzIGFzIGFuIGV4cGVydDpcblxuKipEaXZpbmcgaW50byB0aGUgbmV0L21hYzgwMjExIENvZGViYXNlKipcblxuT2theSwgdGltZSB0byBnZXQgYSBncmlwIG9uIHRoaXMgcGF0Y2guIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBpbXBsaWNhdGlvbnMgb2YgdGhlIGNoYW5nZXMgcmVsYXRlZCB0byBgc3RydWN0IGllZWU4MDIxMV9mcmFnbWVudF9lbnRyeWAgYW5kLCBzcGVjaWZpY2FsbHksIGhvdyBgZXh0cmFfbGVuYCBpcyB1c2VkIHdpdGhpbiB0aGF0IGNvbnRleHQgaW4gdGhlIGtlcm5lbCdzIGBuZXQvbWFjODAyMTEvYCBzdWJzeXN0ZW0uIE15IHVzdWFsIGFwcHJvYWNoIGlzIHRvIGxldmVyYWdlIG15IHRvb2xpbmcgdG8gZWZmaWNpZW50bHkgbmF2aWdhdGUgdGhpcy4gSSdsbCBsYXVuY2ggYGdyZXBwZXJgIGFuZCBzZWFyY2ggZm9yIG9jY3VycmVuY2VzIG9mIGJvdGggYGV4dHJhX2xlbmAgYW5kIGBzdHJ1Y3QgaWVlZTgwMjExX2ZyYWdtZW50X2VudHJ5YCB3aXRoaW4gdGhlIGBuZXQvbWFjODAyMTEvYCBkaXJlY3RvcnkuIFRoaXMgc2hvdWxkIGdpdmUgbWUgYSBxdWljayBvdmVydmlldyBvZiB0aGUgY29kZSB0aGF0J3MgaW1wYWN0ZWQgYW5kIHdoZXJlIHRoZXNlIGVsZW1lbnRzIGFyZSBiZWluZyBtYW5pcHVsYXRlZC4gRnJvbSB0aGVyZSwgSSBjYW4gYmVnaW4gdG8gZHJhdyBjb25uZWN0aW9ucyBhbmQgdW5kZXJzdGFuZCB0aGUgb3ZlcmFsbCBwYXRjaCBjb250ZXh0LiBUaGlzIGZvY3VzZWQgc2VhcmNoIHdpbGwgYWxsb3cgbWUgdG8gcXVpY2tseSBpZGVudGlmeSBwb3RlbnRpYWwgZGVwZW5kZW5jaWVzIGFuZCBpbnRlcmFjdGlvbnMsIHNhdmluZyBtZSB0aW1lIGNvbXBhcmVkIHRvIGEgYnJvYWRlciBzZWFyY2guXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIwOTIsIk91dHB1dFRva2VucyI6MzEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo3OCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI5VDA2OjA0OjI0LjE3MTg1NDg4OVoiLCJTZXEiOjQ2LCJOZXN0aW5nIjozLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjAxNjEwNDYxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImV4dHJhX2xlblwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvbWFjODAyMTFcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L21hYzgwMjExL2llZWU4MDIxMV9pLmg9MjY4NT12b2lkIGllZWU4MDIxMV9zZW5kX2F1dGgoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsXFxubmV0L21hYzgwMjExL2llZWU4MDIxMV9pLmgtMjY4Ni1cXHRcXHRcXHQgdTE2IHRyYW5zYWN0aW9uLCB1MTYgYXV0aF9hbGcsIHUxNiBzdGF0dXMsXFxubmV0L21hYzgwMjExL2llZWU4MDIxMV9pLmg6MjY4NzpcXHRcXHRcXHQgY29uc3QgdTggKmV4dHJhLCBzaXplX3QgZXh0cmFfbGVuLCBjb25zdCB1OCAqYnNzaWQsXFxubmV0L21hYzgwMjExL2llZWU4MDIxMV9pLmgtMjY4OC1cXHRcXHRcXHQgY29uc3QgdTggKmRhLCBjb25zdCB1OCAqa2V5LCB1OCBrZXlfbGVuLCB1OCBrZXlfaWR4LFxcbi0tXFxubmV0L21hYzgwMjExL3J4LmM9MjI5Mz1pZWVlODAyMTFfcmVhc3NlbWJsZV9hZGQoc3RydWN0IGllZWU4MDIxMV9mcmFnbWVudF9jYWNoZSAqY2FjaGUsXFxuLS1cXG5uZXQvbWFjODAyMTEvcnguYy0yMzExLVxcdGVudHJ5LVxcdTAwM2VjaGVja19zZXF1ZW50aWFsX3BuID0gZmFsc2U7XFxubmV0L21hYzgwMjExL3J4LmM6MjMxMjpcXHRlbnRyeS1cXHUwMDNlZXh0cmFfbGVuID0gMDtcXG5uZXQvbWFjODAyMTEvcnguYy0yMzEzLVxcbi0tXFxubmV0L21hYzgwMjExL3J4LmM9MjM3Mz1pZWVlODAyMTFfcnhfaF9kZWZyYWdtZW50KHN0cnVjdCBpZWVlODAyMTFfcnhfZGF0YSAqcngpXFxuLS1cXG5uZXQvbWFjODAyMTEvcnguYy0yNTAzLVxcdGVudHJ5LVxcdTAwM2VsYXN0X2ZyYWcgPSBmcmFnO1xcbm5ldC9tYWM4MDIxMS9yeC5jOjI1MDQ6XFx0ZW50cnktXFx1MDAzZWV4dHJhX2xlbiArPSByeC1cXHUwMDNlc2tiLVxcdTAwM2VsZW47XFxubmV0L21hYzgwMjExL3J4LmMtMjUwNS1cXHRpZiAoaWVlZTgwMjExX2hhc19tb3JlZnJhZ3MoZmMpKSB7XFxuLS1cXG5uZXQvbWFjODAyMTEvcnguYy0yNTEwLVxcdHJ4LVxcdTAwM2Vza2IgPSBfX3NrYl9kZXF1ZXVlKFxcdTAwMjZlbnRyeS1cXHUwMDNlc2tiX2xpc3QpO1xcbm5ldC9tYWM4MDIxMS9yeC5jOjI1MTE6XFx0aWYgKHNrYl90YWlscm9vbShyeC1cXHUwMDNlc2tiKSBcXHUwMDNjIGVudHJ5LVxcdTAwM2VleHRyYV9sZW4pIHtcXG5uZXQvbWFjODAyMTEvcnguYy0yNTEyLVxcdFxcdEk4MDJfREVCVUdfSU5DKHJ4LVxcdTAwM2Vsb2NhbC1cXHUwMDNlcnhfZXhwYW5kX3NrYl9oZWFkX2RlZnJhZyk7XFxubmV0L21hYzgwMjExL3J4LmM6MjUxMzpcXHRcXHRpZiAodW5saWtlbHkocHNrYl9leHBhbmRfaGVhZChyeC1cXHUwMDNlc2tiLCAwLCBlbnRyeS1cXHUwMDNlZXh0cmFfbGVuLFxcbm5ldC9tYWM4MDIxMS9yeC5jLTI1MTQtXFx0XFx0XFx0XFx0XFx0ICAgICAgR0ZQX0FUT01JQykpKSB7XFxuLS1cXG5uZXQvbWFjODAyMTEvc3RhX2luZm8uaD00NTc9c3RydWN0IGllZWU4MDIxMV9mcmFnbWVudF9lbnRyeSB7XFxuLS1cXG5uZXQvbWFjODAyMTEvc3RhX2luZm8uaC00NjAtXFx0dTE2IHNlcTtcXG5uZXQvbWFjODAyMTEvc3RhX2luZm8uaDo0NjE6XFx0dW5zaWduZWQgaW50IGV4dHJhX2xlbjtcXG5uZXQvbWFjODAyMTEvc3RhX2luZm8uaC00NjItXFx0dTE2IGxhc3RfZnJhZztcXG4tLVxcbm5ldC9tYWM4MDIxMS91dGlsLmM9MTEzNz12b2lkIGllZWU4MDIxMV9zZW5kX2F1dGgoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsXFxubmV0L21hYzgwMjExL3V0aWwuYy0xMTM4LVxcdFxcdFxcdCB1MTYgdHJhbnNhY3Rpb24sIHUxNiBhdXRoX2FsZywgdTE2IHN0YXR1cyxcXG5uZXQvbWFjODAyMTEvdXRpbC5jOjExMzk6XFx0XFx0XFx0IGNvbnN0IHU4ICpleHRyYSwgc2l6ZV90IGV4dHJhX2xlbiwgY29uc3QgdTggKmRhLFxcbm5ldC9tYWM4MDIxMS91dGlsLmMtMTE0MC1cXHRcXHRcXHQgY29uc3QgdTggKmJzc2lkLCBjb25zdCB1OCAqa2V5LCB1OCBrZXlfbGVuLCB1OCBrZXlfaWR4LFxcbi0tXFxubmV0L21hYzgwMjExL3V0aWwuYy0xMTY0LVxcdFxcdCAgICFjZmc4MDIxMV9maW5kX2V4dF9lbGVtKFdMQU5fRUlEX0VYVF9FSFRfTVVMVElfTElOSyxcXG5uZXQvbWFjODAyMTEvdXRpbC5jOjExNjU6XFx0XFx0XFx0XFx0XFx0ICAgZXh0cmEsIGV4dHJhX2xlbikpO1xcbm5ldC9tYWM4MDIxMS91dGlsLmMtMTE2Ni1cXG4tLVxcbm5ldC9tYWM4MDIxMS91dGlsLmMtMTE2OC1cXHRza2IgPSBkZXZfYWxsb2Nfc2tiKGxvY2FsLVxcdTAwM2Vody5leHRyYV90eF9oZWFkcm9vbSArIElFRUU4MDIxMV9XRVBfSVZfTEVOICtcXG5uZXQvbWFjODAyMTEvdXRpbC5jOjExNjk6XFx0XFx0XFx0ICAgIDI0ICsgNiArIGV4dHJhX2xlbiArIElFRUU4MDIxMV9XRVBfSUNWX0xFTiArXFxubmV0L21hYzgwMjExL3V0aWwuYy0xMTcwLVxcdFxcdFxcdCAgICBhZGRfbWxlICogc2l6ZW9mKG1sZSkpO1xcbi0tXFxubmV0L21hYzgwMjExL3V0aWwuYy0xMTg1LVxcdGlmIChleHRyYSlcXG5uZXQvbWFjODAyMTEvdXRpbC5jOjExODY6XFx0XFx0c2tiX3B1dF9kYXRhKHNrYiwgZXh0cmEsIGV4dHJhX2xlbik7XFxubmV0L21hYzgwMjExL3V0aWwuYy0xMTg3LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yOVQwNjowNDoyNC4zNzM0NzMwOTFaIiwiU2VxIjo0NywiTmVzdGluZyI6MywiVHlwZSI6ImxsbSIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NTI5OTI5MzM3NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHN1bW1hcnksIGFzIHRob3VnaCBJJ20gdGhpbmtpbmcgdGhyb3VnaCB0aGlzIHByb2Nlc3M6XG5cbioqRGl2aW5nIGludG8gbWFjODAyMTEgUlggRGVmcmFtZW50YXRpb24qKlxuXG5BbHJpZ2h0LCBsZXQncyBnZXQgaW50byB0aGUgZGV0YWlscyBvZiBob3cgYGV4dHJhX2xlbmAgaXMgZW1wbG95ZWQgZHVyaW5nIHRoZSBkZWZyYWdtZW50YXRpb24gcHJvY2VzcyB3aXRoaW4gdGhlIG1hYzgwMjExIGNvZGUsIHNwZWNpZmljYWxseSBpbiBgbmV0L21hYzgwMjExL3J4LmNgLiBJJ20gZ29pbmcgdG8gZm9jdXMgbXkgYXR0ZW50aW9uIG9uIGxpbmVzIDIyOTAgdGhyb3VnaCAyNTQwLiBJIHdhbnQgdG8gc2VlIHByZWNpc2VseSBob3cgdGhpcyB2YXJpYWJsZSBpcyB1c2VkLiBJJ20gYXNzdW1pbmcgaXQgaGFzIGEgY3JpdGljYWwgcm9sZSBpbiBoYW5kbGluZyB0aGUgZnJhZ21lbnRlZCBwYWNrZXRzLCBidXQgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIG1lY2hhbmljcywgdGhlIG51YW5jZXMsIGFuZCBhbnkgcG90ZW50aWFsIGVkZ2UgY2FzZXMgdGhhdCBtaWdodCBiZSBoYW5kbGVkLiBJIHdpbGwgdHJhY2UgdGhlIHVzYWdlIHRvIHVuZGVyc3RhbmQgd2hhdCBzcGVjaWZpYyBkYXRhIGl0IHJlcHJlc2VudHMsIGhvdyBpdCBhZmZlY3RzIG1lbW9yeSBhbGxvY2F0aW9uIGFuZCBwYWNrZXQgcmVhc3NlbWJseS4gSSdtIGxvb2tpbmcgZm9yIHRoZSBsb2dpYyBmbG93LCB0aGUgZXJyb3IgaGFuZGxpbmcsIGFuZCBob3cgYGV4dHJhX2xlbmAgaXMgaW50ZWdyYXRlZCB3aXRoIHRoZSBvdGhlciBjcnVjaWFsIHZhcmlhYmxlcyBhbmQgZnVuY3Rpb25zIHdpdGhpbiB0aGF0IGZyYWdtZW50IG9mIGNvZGUuIExldCdzIHNlZSBob3cgc21hcnQgdGhpcyBpcyBkZXNpZ25lZCwgSSdtIGV4cGVjdGluZyBzb21lIHdlbGwtY3JhZnRlZCBsb2dpYyBoZXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjozNzI4LCJPdXRwdXRUb2tlbnMiOjQxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjlUMDY6MDQ6MjkuNjcyNzY4OTA4WiIsIlNlcSI6NDgsIk5lc3RpbmciOjMsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjMwNzg1MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJuZXQvbWFjODAyMTEvcnguY1wiLFxuICBcIkZpcnN0TGluZVwiOiAyMjkwLFxuICBcIkxpbmVDb3VudFwiOiA2MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIyMjkwOlxcdH1cXG4yMjkxOlxcdFxcbjIyOTI6XFx0c3RhdGljIGlubGluZSBzdHJ1Y3QgaWVlZTgwMjExX2ZyYWdtZW50X2VudHJ5ICpcXG4yMjkzOlxcdGllZWU4MDIxMV9yZWFzc2VtYmxlX2FkZChzdHJ1Y3QgaWVlZTgwMjExX2ZyYWdtZW50X2NhY2hlICpjYWNoZSxcXG4yMjk0OlxcdFxcdFxcdFxcdCB1bnNpZ25lZCBpbnQgZnJhZywgdW5zaWduZWQgaW50IHNlcSwgaW50IHJ4X3F1ZXVlLFxcbjIyOTU6XFx0XFx0XFx0XFx0IHN0cnVjdCBza19idWZmICoqc2tiKVxcbjIyOTY6XFx0e1xcbjIyOTc6XFx0XFx0c3RydWN0IGllZWU4MDIxMV9mcmFnbWVudF9lbnRyeSAqZW50cnk7XFxuMjI5ODpcXHRcXG4yMjk5OlxcdFxcdGVudHJ5ID0gXFx1MDAyNmNhY2hlLVxcdTAwM2VlbnRyaWVzW2NhY2hlLVxcdTAwM2VuZXh0KytdO1xcbjIzMDA6XFx0XFx0aWYgKGNhY2hlLVxcdTAwM2VuZXh0IFxcdTAwM2U9IElFRUU4MDIxMV9GUkFHTUVOVF9NQVgpXFxuMjMwMTpcXHRcXHRcXHRjYWNoZS1cXHUwMDNlbmV4dCA9IDA7XFxuMjMwMjpcXHRcXG4yMzAzOlxcdFxcdF9fc2tiX3F1ZXVlX3B1cmdlKFxcdTAwMjZlbnRyeS1cXHUwMDNlc2tiX2xpc3QpO1xcbjIzMDQ6XFx0XFxuMjMwNTpcXHRcXHRfX3NrYl9xdWV1ZV90YWlsKFxcdTAwMjZlbnRyeS1cXHUwMDNlc2tiX2xpc3QsICpza2IpOyAvKiBubyBuZWVkIGZvciBsb2NraW5nICovXFxuMjMwNjpcXHRcXHQqc2tiID0gTlVMTDtcXG4yMzA3OlxcdFxcdGVudHJ5LVxcdTAwM2VmaXJzdF9mcmFnX3RpbWUgPSBqaWZmaWVzO1xcbjIzMDg6XFx0XFx0ZW50cnktXFx1MDAzZXNlcSA9IHNlcTtcXG4yMzA5OlxcdFxcdGVudHJ5LVxcdTAwM2VyeF9xdWV1ZSA9IHJ4X3F1ZXVlO1xcbjIzMTA6XFx0XFx0ZW50cnktXFx1MDAzZWxhc3RfZnJhZyA9IGZyYWc7XFxuMjMxMTpcXHRcXHRlbnRyeS1cXHUwMDNlY2hlY2tfc2VxdWVudGlhbF9wbiA9IGZhbHNlO1xcbjIzMTI6XFx0XFx0ZW50cnktXFx1MDAzZWV4dHJhX2xlbiA9IDA7XFxuMjMxMzpcXHRcXG4yMzE0OlxcdFxcdHJldHVybiBlbnRyeTtcXG4yMzE1OlxcdH1cXG4yMzE2OlxcdFxcbjIzMTc6XFx0c3RhdGljIGlubGluZSBzdHJ1Y3QgaWVlZTgwMjExX2ZyYWdtZW50X2VudHJ5ICpcXG4yMzE4OlxcdGllZWU4MDIxMV9yZWFzc2VtYmxlX2ZpbmQoc3RydWN0IGllZWU4MDIxMV9mcmFnbWVudF9jYWNoZSAqY2FjaGUsXFxuMjMxOTpcXHRcXHRcXHRcXHQgIHVuc2lnbmVkIGludCBmcmFnLCB1bnNpZ25lZCBpbnQgc2VxLFxcbjIzMjA6XFx0XFx0XFx0XFx0ICBpbnQgcnhfcXVldWUsIHN0cnVjdCBpZWVlODAyMTFfaGRyICpoZHIpXFxuMjMyMTpcXHR7XFxuMjMyMjpcXHRcXHRzdHJ1Y3QgaWVlZTgwMjExX2ZyYWdtZW50X2VudHJ5ICplbnRyeTtcXG4yMzIzOlxcdFxcdGludCBpLCBpZHg7XFxuMjMyNDpcXHRcXG4yMzI1OlxcdFxcdGlkeCA9IGNhY2hlLVxcdTAwM2VuZXh0O1xcbjIzMjY6XFx0XFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIElFRUU4MDIxMV9GUkFHTUVOVF9NQVg7IGkrKykge1xcbjIzMjc6XFx0XFx0XFx0c3RydWN0IGllZWU4MDIxMV9oZHIgKmZfaGRyO1xcbjIzMjg6XFx0XFx0XFx0c3RydWN0IHNrX2J1ZmYgKmZfc2tiO1xcbjIzMjk6XFx0XFxuMjMzMDpcXHRcXHRcXHRpZHgtLTtcXG4yMzMxOlxcdFxcdFxcdGlmIChpZHggXFx1MDAzYyAwKVxcbjIzMzI6XFx0XFx0XFx0XFx0aWR4ID0gSUVFRTgwMjExX0ZSQUdNRU5UX01BWCAtIDE7XFxuMjMzMzpcXHRcXG4yMzM0OlxcdFxcdFxcdGVudHJ5ID0gXFx1MDAyNmNhY2hlLVxcdTAwM2VlbnRyaWVzW2lkeF07XFxuMjMzNTpcXHRcXHRcXHRpZiAoc2tiX3F1ZXVlX2VtcHR5KFxcdTAwMjZlbnRyeS1cXHUwMDNlc2tiX2xpc3QpIHx8IGVudHJ5LVxcdTAwM2VzZXEgIT0gc2VxIHx8XFxuMjMzNjpcXHRcXHRcXHQgICAgZW50cnktXFx1MDAzZXJ4X3F1ZXVlICE9IHJ4X3F1ZXVlIHx8XFxuMjMzNzpcXHRcXHRcXHQgICAgZW50cnktXFx1MDAzZWxhc3RfZnJhZyArIDEgIT0gZnJhZylcXG4yMzM4OlxcdFxcdFxcdFxcdGNvbnRpbnVlO1xcbjIzMzk6XFx0XFxuMjM0MDpcXHRcXHRcXHRmX3NrYiA9IF9fc2tiX3BlZWsoXFx1MDAyNmVudHJ5LVxcdTAwM2Vza2JfbGlzdCk7XFxuMjM0MTpcXHRcXHRcXHRmX2hkciA9IChzdHJ1Y3QgaWVlZTgwMjExX2hkciAqKSBmX3NrYi1cXHUwMDNlZGF0YTtcXG4yMzQyOlxcdFxcbjIzNDM6XFx0XFx0XFx0LypcXG4yMzQ0OlxcdFxcdFxcdCAqIENoZWNrIGZ0eXBlIGFuZCBhZGRyZXNzZXMgYXJlIGVxdWFsLCBlbHNlIGNoZWNrIG5leHQgZnJhZ21lbnRcXG4yMzQ1OlxcdFxcdFxcdCAqL1xcbjIzNDY6XFx0XFx0XFx0aWYgKCgoaGRyLVxcdTAwM2VmcmFtZV9jb250cm9sIF4gZl9oZHItXFx1MDAzZWZyYW1lX2NvbnRyb2wpIFxcdTAwMjZcXG4yMzQ3OlxcdFxcdFxcdCAgICAgY3B1X3RvX2xlMTYoSUVFRTgwMjExX0ZDVExfRlRZUEUpKSB8fFxcbjIzNDg6XFx0XFx0XFx0ICAgICFldGhlcl9hZGRyX2VxdWFsKGhkci1cXHUwMDNlYWRkcjEsIGZfaGRyLVxcdTAwM2VhZGRyMSkgfHxcXG4yMzQ5OlxcdFxcdFxcdCAgICAhZXRoZXJfYWRkcl9lcXVhbChoZHItXFx1MDAzZWFkZHIyLCBmX2hkci1cXHUwMDNlYWRkcjIpKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yOVQwNjowNDoyOS42NzMwNzg3MThaIiwiU2VxIjo0OSwiTmVzdGluZyI6MywiVHlwZSI6ImxsbSIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NDY5NzQzMDE1MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIGEgc3VtbWFyeSBvZiBteSBjdXJyZW50IHRob3VnaHQgcHJvY2VzcywgYXMgaWYgSSB3ZXJlIGFuYWx5emluZyB0aGUgY29kZTpcblxuKipEaXZpbmcgaW50byB0aGUgTUFDODAyMTEgUlggUGF0aCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IGBuZXQvbWFjODAyMTEvcnguY2AsIHNwZWNpZmljYWxseSBhcm91bmQgbGluZXMgMjUwMCB0byAyNTQwLiBJIHdhbnQgdG8gemVybyBpbiBvbiBob3cgdGhpcyBzZWN0aW9uIG9mIHRoZSBjb2RlIGhhbmRsZXMgcmVjZWl2aW5nIHBhY2tldHMuIEdpdmVuIG15IGV4cGVydGlzZSwgSSdtIHByb2JhYmx5IGxvb2tpbmcgZm9yIHNvbWV0aGluZyBzcGVjaWZpYyDigJMgbWF5YmUgYSBwYXJ0aWN1bGFybHkgY29tcGxleCBwcm9jZXNzaW5nIHN0YWdlLCBhIHBvdGVudGlhbCBvcHRpbWl6YXRpb24gcG9pbnQsIG9yIHBlcmhhcHMgYSBrbm93biBhcmVhIG9mIGNvbnRlbnRpb24gb3IgYSBjb21tb24gc291cmNlIG9mIGVycm9yLiBNeSBpbW1lZGlhdGUgZ29hbCBpcyB0byB1bmRlcnN0YW5kIHByZWNpc2VseSB3aGF0J3MgaGFwcGVuaW5nIGF0IHRoaXMgcG9pbnQgaW4gdGhlIHJlY2VwdGlvbiBmbG93LiBJJ20gZm9jdXNpbmcgb24gdGhvc2Ugc3BlY2lmaWMgbGluZXMgdG8gdW5kZXJzdGFuZCB0aGUgaW50cmljYWNpZXMgaW52b2x2ZWQgaW4gaGFuZGxpbmcgaW5jb21pbmcgd2lyZWxlc3MgZGF0YS4gVGhpcyBpcyBvZnRlbiB3aGVyZSB0aGluZ3MgbGlrZSBmcmFtZSB2YWxpZGF0aW9uLCBkZWNyeXB0aW9uIChpZiBhcHBsaWNhYmxlKSwgYW5kIGluaXRpYWwgcHJvY2Vzc2luZyBvY2N1ci4gSSdsbCBsaWtlbHkgYmUgbG9va2luZyBmb3IgY29uZGl0aW9uYWwgc3RhdGVtZW50cywgZnVuY3Rpb24gY2FsbHMsIGFuZCBkYXRhIHN0cnVjdHVyZSBtYW5pcHVsYXRpb25zIHRvIGdyYXNwIHRoZSBjb3JlIGxvZ2ljLiBUaGlzIHNob3VsZCBzaGVkIGxpZ2h0IG9uIGFueSBpbnRlcmVzdGluZyBpbnRlcmFjdGlvbnMgYmV0d2VlbiB0aGUgcGh5c2ljYWwgbGF5ZXIgYW5kIHRoZSBoaWdoZXIgcHJvdG9jb2wgc3RhY2tzLiBMZXQncyBkaWcgaW4uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjUwNjcsIk91dHB1dFRva2VucyI6NDEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMiwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI5VDA2OjA0OjM0LjM3MDUxMTY0WiIsIlNlcSI6NTAsIk5lc3RpbmciOjMsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjMzNjUwMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJuZXQvbWFjODAyMTEvcnguY1wiLFxuICBcIkZpcnN0TGluZVwiOiAyNDk1LFxuICBcIkxpbmVDb3VudFwiOiA1MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIyNDk1OlxcdFxcdH0gZWxzZSBpZiAoZW50cnktXFx1MDAzZWlzX3Byb3RlY3RlZCBcXHUwMDI2XFx1MDAyNiByeC1cXHUwMDNla2V5IFxcdTAwMjZcXHUwMDI2XFxuMjQ5NjpcXHRcXHRcXHQgICBlbnRyeS1cXHUwMDNla2V5X2NvbG9yICE9IHJ4LVxcdTAwM2VrZXktXFx1MDAzZWNvbG9yIFxcdTAwMjZcXHUwMDI2XFxuMjQ5NzpcXHRcXHRcXHQgICAoc3RhdHVzLVxcdTAwM2VmbGFnIFxcdTAwMjYgUlhfRkxBR19ERUNSWVBURUQpKSB7XFxuMjQ5ODpcXHRcXHRcXHRyZXR1cm4gUlhfRFJPUF9VX0JBRF9LRVlfQ09MT1I7XFxuMjQ5OTpcXHRcXHR9XFxuMjUwMDpcXHRcXG4yNTAxOlxcdFxcdHNrYl9wdWxsKHJ4LVxcdTAwM2Vza2IsIGllZWU4MDIxMV9oZHJsZW4oZmMpKTtcXG4yNTAyOlxcdFxcdF9fc2tiX3F1ZXVlX3RhaWwoXFx1MDAyNmVudHJ5LVxcdTAwM2Vza2JfbGlzdCwgcngtXFx1MDAzZXNrYik7XFxuMjUwMzpcXHRcXHRlbnRyeS1cXHUwMDNlbGFzdF9mcmFnID0gZnJhZztcXG4yNTA0OlxcdFxcdGVudHJ5LVxcdTAwM2VleHRyYV9sZW4gKz0gcngtXFx1MDAzZXNrYi1cXHUwMDNlbGVuO1xcbjI1MDU6XFx0XFx0aWYgKGllZWU4MDIxMV9oYXNfbW9yZWZyYWdzKGZjKSkge1xcbjI1MDY6XFx0XFx0XFx0cngtXFx1MDAzZXNrYiA9IE5VTEw7XFxuMjUwNzpcXHRcXHRcXHRyZXR1cm4gUlhfUVVFVUVEO1xcbjI1MDg6XFx0XFx0fVxcbjI1MDk6XFx0XFxuMjUxMDpcXHRcXHRyeC1cXHUwMDNlc2tiID0gX19za2JfZGVxdWV1ZShcXHUwMDI2ZW50cnktXFx1MDAzZXNrYl9saXN0KTtcXG4yNTExOlxcdFxcdGlmIChza2JfdGFpbHJvb20ocngtXFx1MDAzZXNrYikgXFx1MDAzYyBlbnRyeS1cXHUwMDNlZXh0cmFfbGVuKSB7XFxuMjUxMjpcXHRcXHRcXHRJODAyX0RFQlVHX0lOQyhyeC1cXHUwMDNlbG9jYWwtXFx1MDAzZXJ4X2V4cGFuZF9za2JfaGVhZF9kZWZyYWcpO1xcbjI1MTM6XFx0XFx0XFx0aWYgKHVubGlrZWx5KHBza2JfZXhwYW5kX2hlYWQocngtXFx1MDAzZXNrYiwgMCwgZW50cnktXFx1MDAzZWV4dHJhX2xlbixcXG4yNTE0OlxcdFxcdFxcdFxcdFxcdFxcdCAgICAgIEdGUF9BVE9NSUMpKSkge1xcbjI1MTU6XFx0XFx0XFx0XFx0STgwMl9ERUJVR19JTkMocngtXFx1MDAzZWxvY2FsLVxcdTAwM2VyeF9oYW5kbGVyc19kcm9wX2RlZnJhZyk7XFxuMjUxNjpcXHRcXHRcXHRcXHRfX3NrYl9xdWV1ZV9wdXJnZShcXHUwMDI2ZW50cnktXFx1MDAzZXNrYl9saXN0KTtcXG4yNTE3OlxcdFxcdFxcdFxcdHJldHVybiBSWF9EUk9QX1VfT09NO1xcbjI1MTg6XFx0XFx0XFx0fVxcbjI1MTk6XFx0XFx0fVxcbjI1MjA6XFx0XFx0d2hpbGUgKChza2IgPSBfX3NrYl9kZXF1ZXVlKFxcdTAwMjZlbnRyeS1cXHUwMDNlc2tiX2xpc3QpKSkge1xcbjI1MjE6XFx0XFx0XFx0c2tiX3B1dF9kYXRhKHJ4LVxcdTAwM2Vza2IsIHNrYi1cXHUwMDNlZGF0YSwgc2tiLVxcdTAwM2VsZW4pO1xcbjI1MjI6XFx0XFx0XFx0ZGV2X2tmcmVlX3NrYihza2IpO1xcbjI1MjM6XFx0XFx0fVxcbjI1MjQ6XFx0XFxuMjUyNTpcXHQgb3V0OlxcbjI1MjY6XFx0XFx0aWVlZTgwMjExX2xlZF9yeChyeC1cXHUwMDNlbG9jYWwpO1xcbjI1Mjc6XFx0XFx0aWYgKHJ4LVxcdTAwM2VzdGEpXFxuMjUyODpcXHRcXHRcXHRyeC1cXHUwMDNlbGlua19zdGEtXFx1MDAzZXJ4X3N0YXRzLnBhY2tldHMrKztcXG4yNTI5OlxcdFxcdHJldHVybiBSWF9DT05USU5VRTtcXG4yNTMwOlxcdH1cXG4yNTMxOlxcdFxcbjI1MzI6XFx0c3RhdGljIGludCBpZWVlODAyMTFfODAyXzF4X3BvcnRfY29udHJvbChzdHJ1Y3QgaWVlZTgwMjExX3J4X2RhdGEgKnJ4KVxcbjI1MzM6XFx0e1xcbjI1MzQ6XFx0XFx0aWYgKHVubGlrZWx5KCFyeC1cXHUwMDNlc3RhIHx8ICF0ZXN0X3N0YV9mbGFnKHJ4LVxcdTAwM2VzdGEsIFdMQU5fU1RBX0FVVEhPUklaRUQpKSlcXG4yNTM1OlxcdFxcdFxcdHJldHVybiAtRUFDQ0VTO1xcbjI1MzY6XFx0XFxuMjUzNzpcXHRcXHRyZXR1cm4gMDtcXG4yNTM4OlxcdH1cXG4yNTM5OlxcdFxcbjI1NDA6XFx0c3RhdGljIGludCBpZWVlODAyMTFfZHJvcF91bmVuY3J5cHRlZChzdHJ1Y3QgaWVlZTgwMjExX3J4X2RhdGEgKnJ4LCBfX2xlMTYgZmMpXFxuMjU0MTpcXHR7XFxuMjU0MjpcXHRcXHRzdHJ1Y3Qgc2tfYnVmZiAqc2tiID0gcngtXFx1MDAzZXNrYjtcXG4yNTQzOlxcdFxcdHN0cnVjdCBpZWVlODAyMTFfcnhfc3RhdHVzICpzdGF0dXMgPSBJRUVFODAyMTFfU0tCX1JYQ0Ioc2tiKTtcXG4yNTQ0OlxcdFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yOVQwNjowNDozNC4zNzA4NDk5M1oiLCJTZXEiOjUxLCJOZXN0aW5nIjozLCJUeXBlIjoibGxtIiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo0MDIyNjM0NDQxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIFBvdGVudGlhbCBJbnRlZ2VyIE92ZXJmbG93IFZ1bG5lcmFiaWxpdHkqKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIE15IGluaXRpYWwgY29uY2VybiBpcyB3aXRoIHRoaXMgYGV4dHJhX2xlbmAgZmllbGQuIEkgc2VlIHRoYXQgaXQgd2FzIHByZXZpb3VzbHkgZGVmaW5lZCBhcyBhIGB1MTZgLCB3aGljaCBpcyBhIDE2LWJpdCB1bnNpZ25lZCBpbnRlZ2VyLiBUaGUgY29kZSBzdWdnZXN0cyBpdCdzIHVzZWQgdG8gYWNjdW11bGF0ZSB0aGUgbGVuZ3RoIG9mIHBhY2tldCBmcmFnbWVudHM6IGBlbnRyeS1cdTAwM2VleHRyYV9sZW4gKz0gcngtXHUwMDNlc2tiLVx1MDAzZWxlbjtgLiBNeSBleHBlcnQgaW50dWl0aW9uIHRlbGxzIG1lIHRoYXQgdGhpcyBpcyBhIGNsYXNzaWMgc2NlbmFyaW8gZm9yIGFuIGludGVnZXIgb3ZlcmZsb3cgdnVsbmVyYWJpbGl0eS5cblxuSWYgdGhlIGFjY3VtdWxhdGVkIGxlbmd0aCwgYHJ4LVx1MDAzZXNrYi1cdTAwM2VsZW5gLCBleGNlZWRzIDY1NTM1LCB0aGUgYHUxNmAgd2lsbCB3cmFwIGFyb3VuZCB0byBhIHNtYWxsZXIgdmFsdWUuIFRoaXMgdHJ1bmNhdGlvbiBpcyB0aGUgY29yZSBvZiB0aGUgcHJvYmxlbS4gVGhpcyBtZWFucyB3aGVuIHRoZSBjb2RlIGNoZWNrcyBgc2tiX3RhaWxyb29tKHJ4LVx1MDAzZXNrYikgXHUwMDNjIGVudHJ5LVx1MDAzZWV4dHJhX2xlbmAgb3IgY2FsbHMgYHBza2JfZXhwYW5kX2hlYWQoLi4uLCBlbnRyeS1cdTAwM2VleHRyYV9sZW4pYCwgaXQgbWlnaHQgYmUgb3BlcmF0aW5nIHdpdGggYSBzaWduaWZpY2FudGx5IHNtYWxsZXIgYGVudHJ5LVx1MDAzZWV4dHJhX2xlbmAgdGhhbiB0aGUgYWN0dWFsIHJlcXVpcmVkIGJ1ZmZlciBzaXplLlxuXG5UaGUgY29uc2VxdWVuY2VzIGFyZSBjbGVhci4gVGhlIGV4cGFuc2lvbiBvZiB0aGUgc2tiIHdpbGwgYmUgaW5zdWZmaWNpZW50LiBUaGUgc3Vic2VxdWVudCBgc2tiX3B1dF9kYXRhYCBmdW5jdGlvbiwgd2hpY2ggY2FsbHMgYHNrYl9wdXRgIGFuZCBgbWVtY3B5YCwgd291bGQgdGhlbiB3cml0ZSBwYXN0IHRoZSBhbGxvY2F0ZWQgYnVmZmVyLCB0cmlnZ2VyaW5nIGFuIFNLQiBwYW5pYywgYnVmZmVyIG92ZXJmbG93LCBvciBLQVNBTiBkZXRlY3Rpb24g4oCTIHdoaWNoIHdlIGFic29sdXRlbHkgKmRvIG5vdCogd2FudC5cblxuVGhlIGZpeCwgY2hhbmdpbmcgYGV4dHJhX2xlbmAgdG8gYW4gYHVuc2lnbmVkIGludGAsIGlzIHRoZSByaWdodCBhcHByb2FjaCBiZWNhdXNlIGl0IHByZXZlbnRzIHRoZSBpbnRlZ2VyIG92ZXJmbG93LlxuXG5Ob3csIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBwb3RlbnRpYWwgaW1wYWN0LiBJdCdzIGNydWNpYWwgdG8gZGV0ZXJtaW5lIGlmIGBzdHJ1Y3QgaWVlZTgwMjExX2ZyYWdtZW50X2VudHJ5YCBpcyBleHBvc2VkIHRvIHVzZXJzcGFjZSwgb3IgaWYgdGhlcmUncyBhbnkgbWVtb3J5IGluaXRpYWxpemF0aW9uIGlzc3VlLiBJZiBpdCdzIGV4cG9zZWQsIGEgY2FyZWZ1bGx5IGNyYWZ0ZWQgbWFsaWNpb3VzIHBhY2tldCBjb3VsZCBiZSBjb25zdHJ1Y3RlZCB0byB0cmlnZ2VyIHRoaXMgb3ZlcmZsb3cgYW5kIHBvdGVudGlhbGx5IGV4ZWN1dGUgYXJiaXRyYXJ5IGNvZGUuIEknbSBnb2luZyB0byBzZWFyY2ggdGhlIGtlcm5lbCBjb2RlIGZvciBgc3RydWN0IGllZWU4MDIxMV9mcmFnbWVudF9lbnRyeWAgdG8gZGV0ZXJtaW5lIHRoZSBzY29wZSBvZiB0aGlzIGNoYW5nZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NjI4NSwiT3V0cHV0VG9rZW5zIjoyNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMyNiwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI5VDA2OjA0OjM4LjM5MzQ4ODI3MVoiLCJTZXEiOjUyLCJOZXN0aW5nIjozLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTYzNTQxNDA3MSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJpZWVlODAyMTFfZnJhZ21lbnRfZW50cnlcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L21hYzgwMjExL3J4LmM9MjI4ND12b2lkIGllZWU4MDIxMV9kZXN0cm95X2ZyYWdfY2FjaGUoc3RydWN0IGllZWU4MDIxMV9mcmFnbWVudF9jYWNoZSAqY2FjaGUpXFxuLS1cXG5uZXQvbWFjODAyMTEvcnguYy0yMjkxLVxcbm5ldC9tYWM4MDIxMS9yeC5jOjIyOTI6c3RhdGljIGlubGluZSBzdHJ1Y3QgaWVlZTgwMjExX2ZyYWdtZW50X2VudHJ5ICpcXG5uZXQvbWFjODAyMTEvcnguYy0yMjkzLWllZWU4MDIxMV9yZWFzc2VtYmxlX2FkZChzdHJ1Y3QgaWVlZTgwMjExX2ZyYWdtZW50X2NhY2hlICpjYWNoZSxcXG4tLVxcbm5ldC9tYWM4MDIxMS9yeC5jLTIyOTYte1xcbm5ldC9tYWM4MDIxMS9yeC5jOjIyOTc6XFx0c3RydWN0IGllZWU4MDIxMV9mcmFnbWVudF9lbnRyeSAqZW50cnk7XFxubmV0L21hYzgwMjExL3J4LmMtMjI5OC1cXG4tLVxcbm5ldC9tYWM4MDIxMS9yeC5jLTIzMTYtXFxubmV0L21hYzgwMjExL3J4LmM6MjMxNzpzdGF0aWMgaW5saW5lIHN0cnVjdCBpZWVlODAyMTFfZnJhZ21lbnRfZW50cnkgKlxcbm5ldC9tYWM4MDIxMS9yeC5jLTIzMTgtaWVlZTgwMjExX3JlYXNzZW1ibGVfZmluZChzdHJ1Y3QgaWVlZTgwMjExX2ZyYWdtZW50X2NhY2hlICpjYWNoZSxcXG4tLVxcbm5ldC9tYWM4MDIxMS9yeC5jLTIzMjEte1xcbm5ldC9tYWM4MDIxMS9yeC5jOjIzMjI6XFx0c3RydWN0IGllZWU4MDIxMV9mcmFnbWVudF9lbnRyeSAqZW50cnk7XFxubmV0L21hYzgwMjExL3J4LmMtMjMyMy1cXHRpbnQgaSwgaWR4O1xcbi0tXFxubmV0L21hYzgwMjExL3J4LmM9MjM3Mz1pZWVlODAyMTFfcnhfaF9kZWZyYWdtZW50KHN0cnVjdCBpZWVlODAyMTFfcnhfZGF0YSAqcngpXFxuLS1cXG5uZXQvbWFjODAyMTEvcnguYy0yMzc5LVxcdHVuc2lnbmVkIGludCBmcmFnLCBzZXE7XFxubmV0L21hYzgwMjExL3J4LmM6MjM4MDpcXHRzdHJ1Y3QgaWVlZTgwMjExX2ZyYWdtZW50X2VudHJ5ICplbnRyeTtcXG5uZXQvbWFjODAyMTEvcnguYy0yMzgxLVxcdHN0cnVjdCBza19idWZmICpza2I7XFxuLS1cXG5uZXQvbWFjODAyMTEvc3RhX2luZm8uaD00MzI9c3RydWN0IGllZWU4MDIxMV9zdGFfcnhfc3RhdHMge1xcbi0tXFxubmV0L21hYzgwMjExL3N0YV9pbmZvLmgtNDU2LVxcbm5ldC9tYWM4MDIxMS9zdGFfaW5mby5oOjQ1NzpzdHJ1Y3QgaWVlZTgwMjExX2ZyYWdtZW50X2VudHJ5IHtcXG5uZXQvbWFjODAyMTEvc3RhX2luZm8uaC00NTgtXFx0c3RydWN0IHNrX2J1ZmZfaGVhZCBza2JfbGlzdDtcXG4tLVxcbm5ldC9tYWM4MDIxMS9zdGFfaW5mby5oPTQ3MD1zdHJ1Y3QgaWVlZTgwMjExX2ZyYWdtZW50X2NhY2hlIHtcXG5uZXQvbWFjODAyMTEvc3RhX2luZm8uaDo0NzE6XFx0c3RydWN0IGllZWU4MDIxMV9mcmFnbWVudF9lbnRyeVxcdGVudHJpZXNbSUVFRTgwMjExX0ZSQUdNRU5UX01BWF07XFxubmV0L21hYzgwMjExL3N0YV9pbmZvLmgtNDcyLVxcdHVuc2lnbmVkIGludCBuZXh0O1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yOVQwNjowNDo0MC4wMjg5MjEwNTJaIiwiU2VxIjo1MywiTmVzdGluZyI6MywiVHlwZSI6ImxsbSIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NDgwNjM0MjI4OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIGEgc3VtbWFyeSBvZiBteSB0aG91Z2h0IHByb2Nlc3M6XG5cbioqRGl2aW5nIGludG8gYGllZWU4MDIxMV9mcmFnbWVudF9jYWNoZWAgSW5pdGlhbGl6YXRpb24qKlxuXG5Pa2F5LCB0aW1lIHRvIGdldCBteSBoYW5kcyBkaXJ0eSBhbmQgZGlnIGludG8gdGhlIGluaXRpYWxpemF0aW9uIGFuZCBhbGxvY2F0aW9uIG9mIHRoZSBgc3RydWN0IGllZWU4MDIxMV9mcmFnbWVudF9jYWNoZWAuIFRoaXMgaXMgYSBjcml0aWNhbCBkYXRhIHN0cnVjdHVyZSwgc28gdW5kZXJzdGFuZGluZyBob3cgaXQncyBjcmVhdGVkIGFuZCBtYW5hZ2VkIGlzIHBhcmFtb3VudC4gSSBuZWVkIHRvIHRyYWNlIHRoZSBjb2RlIHRvIHBpbnBvaW50IHdoZXJlIGFuZCBob3cgdGhpcyBzdHJ1Y3R1cmUgaXMgYnJvdWdodCB0byBsaWZlLiBJIHdhbnQgdG8gc2VlIGlmIGl0J3MgZHluYW1pY2FsbHkgYWxsb2NhdGVkLCBzdGF0aWNhbGx5IGRlY2xhcmVkLCBwYXJ0IG9mIGEgbGFyZ2VyIHN0cnVjdHVyZSwgb3IgYSBjb21iaW5hdGlvbi4gVGhlIGFsbG9jYXRpb24gc3RyYXRlZ3kgb2Z0ZW4gcmV2ZWFscyBpbXBvcnRhbnQgaW5zaWdodHMgaW50byBpdHMgdXNhZ2UgcGF0dGVybnMgYW5kIHBvdGVudGlhbCBwZXJmb3JtYW5jZSBpbXBsaWNhdGlvbnMsIGVzcGVjaWFsbHkgaW4gaGlnaC10aHJvdWdocHV0IHdpcmVsZXNzIHNjZW5hcmlvcy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaWYgaXQgaXMgbGlua2VkIHRvIGFueSBvdGhlciBzdHJ1Y3R1cmVzIHRoYXQgd291bGQgYWZmZWN0IGhvdyBpdCdzIGluaXRpYWxpemVkLiBGcm9tIHRoaXMsIEkgc2hvdWxkIGJlIGFibGUgdG8gZ2V0IGEgYmV0dGVyIGZlZWwgb2YgaXRzIHJvbGUgaW4gdGhlIHN5c3RlbS5cblxuXG4iLCJJbnB1dFRva2VucyI6Nzg0NywiT3V0cHV0VG9rZW5zIjoyNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI5VDA2OjA0OjQ0LjgzNTI2NTYxWiIsIlNlcSI6NTQsIk5lc3RpbmciOjMsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNjM3MTU5OTIxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImllZWU4MDIxMV9mcmFnbWVudF9jYWNoZVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvbWFjODAyMTEvaWVlZTgwMjExX2kuaD0xMTU3PXN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEge1xcbi0tXFxubmV0L21hYzgwMjExL2llZWU4MDIxMV9pLmgtMTE3OC1cXG5uZXQvbWFjODAyMTEvaWVlZTgwMjExX2kuaDoxMTc5OlxcdHN0cnVjdCBpZWVlODAyMTFfZnJhZ21lbnRfY2FjaGUgZnJhZ3M7XFxubmV0L21hYzgwMjExL2llZWU4MDIxMV9pLmgtMTE4MC1cXG4tLVxcbm5ldC9tYWM4MDIxMS9pZWVlODAyMTFfaS5oPTI5NDQ9dTMyIGllZWU4MDIxMV9jYWxjX2V4cGVjdGVkX3R4X2FpcnRpbWUoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXFxuLS1cXG5uZXQvbWFjODAyMTEvaWVlZTgwMjExX2kuaC0yOTUzLVxcbm5ldC9tYWM4MDIxMS9pZWVlODAyMTFfaS5oOjI5NTQ6dm9pZCBpZWVlODAyMTFfaW5pdF9mcmFnX2NhY2hlKHN0cnVjdCBpZWVlODAyMTFfZnJhZ21lbnRfY2FjaGUgKmNhY2hlKTtcXG5uZXQvbWFjODAyMTEvaWVlZTgwMjExX2kuaDoyOTU1OnZvaWQgaWVlZTgwMjExX2Rlc3Ryb3lfZnJhZ19jYWNoZShzdHJ1Y3QgaWVlZTgwMjExX2ZyYWdtZW50X2NhY2hlICpjYWNoZSk7XFxubmV0L21hYzgwMjExL2llZWU4MDIxMV9pLmgtMjk1Ni1cXG4tLVxcbm5ldC9tYWM4MDIxMS9yeC5jPTIwMzE9aWVlZTgwMjExX3J4X2hfZGVjcnlwdChzdHJ1Y3QgaWVlZTgwMjExX3J4X2RhdGEgKnJ4KVxcbi0tXFxubmV0L21hYzgwMjExL3J4LmMtMjI3NS1cXG5uZXQvbWFjODAyMTEvcnguYzoyMjc2OnZvaWQgaWVlZTgwMjExX2luaXRfZnJhZ19jYWNoZShzdHJ1Y3QgaWVlZTgwMjExX2ZyYWdtZW50X2NhY2hlICpjYWNoZSlcXG5uZXQvbWFjODAyMTEvcnguYy0yMjc3LXtcXG4tLVxcbm5ldC9tYWM4MDIxMS9yeC5jLTIyODMtXFxubmV0L21hYzgwMjExL3J4LmM6MjI4NDp2b2lkIGllZWU4MDIxMV9kZXN0cm95X2ZyYWdfY2FjaGUoc3RydWN0IGllZWU4MDIxMV9mcmFnbWVudF9jYWNoZSAqY2FjaGUpXFxubmV0L21hYzgwMjExL3J4LmMtMjI4NS17XFxuLS1cXG5uZXQvbWFjODAyMTEvcnguYz0yMjkyPXN0YXRpYyBpbmxpbmUgc3RydWN0IGllZWU4MDIxMV9mcmFnbWVudF9lbnRyeSAqXFxubmV0L21hYzgwMjExL3J4LmM6MjI5MzppZWVlODAyMTFfcmVhc3NlbWJsZV9hZGQoc3RydWN0IGllZWU4MDIxMV9mcmFnbWVudF9jYWNoZSAqY2FjaGUsXFxubmV0L21hYzgwMjExL3J4LmMtMjI5NC1cXHRcXHRcXHQgdW5zaWduZWQgaW50IGZyYWcsIHVuc2lnbmVkIGludCBzZXEsIGludCByeF9xdWV1ZSxcXG4tLVxcbm5ldC9tYWM4MDIxMS9yeC5jPTIzMTc9c3RhdGljIGlubGluZSBzdHJ1Y3QgaWVlZTgwMjExX2ZyYWdtZW50X2VudHJ5ICpcXG5uZXQvbWFjODAyMTEvcnguYzoyMzE4OmllZWU4MDIxMV9yZWFzc2VtYmxlX2ZpbmQoc3RydWN0IGllZWU4MDIxMV9mcmFnbWVudF9jYWNoZSAqY2FjaGUsXFxubmV0L21hYzgwMjExL3J4LmMtMjMxOS1cXHRcXHRcXHQgIHVuc2lnbmVkIGludCBmcmFnLCB1bnNpZ25lZCBpbnQgc2VxLFxcbi0tXFxubmV0L21hYzgwMjExL3J4LmM9MjM3Mz1pZWVlODAyMTFfcnhfaF9kZWZyYWdtZW50KHN0cnVjdCBpZWVlODAyMTFfcnhfZGF0YSAqcngpXFxubmV0L21hYzgwMjExL3J4LmMtMjM3NC17XFxubmV0L21hYzgwMjExL3J4LmM6MjM3NTpcXHRzdHJ1Y3QgaWVlZTgwMjExX2ZyYWdtZW50X2NhY2hlICpjYWNoZSA9IFxcdTAwMjZyeC1cXHUwMDNlc2RhdGEtXFx1MDAzZWZyYWdzO1xcbm5ldC9tYWM4MDIxMS9yeC5jLTIzNzYtXFx0c3RydWN0IGllZWU4MDIxMV9oZHIgKmhkcjtcXG4tLVxcbm5ldC9tYWM4MDIxMS9zdGFfaW5mby5oPTQ1Nz1zdHJ1Y3QgaWVlZTgwMjExX2ZyYWdtZW50X2VudHJ5IHtcXG4tLVxcbm5ldC9tYWM4MDIxMS9zdGFfaW5mby5oLTQ2OS1cXG5uZXQvbWFjODAyMTEvc3RhX2luZm8uaDo0NzA6c3RydWN0IGllZWU4MDIxMV9mcmFnbWVudF9jYWNoZSB7XFxubmV0L21hYzgwMjExL3N0YV9pbmZvLmgtNDcxLVxcdHN0cnVjdCBpZWVlODAyMTFfZnJhZ21lbnRfZW50cnlcXHRlbnRyaWVzW0lFRUU4MDIxMV9GUkFHTUVOVF9NQVhdO1xcbi0tXFxubmV0L21hYzgwMjExL3N0YV9pbmZvLmg9NzE1PXN0cnVjdCBzdGFfaW5mbyB7XFxuLS1cXG5uZXQvbWFjODAyMTEvc3RhX2luZm8uaC03ODItXFxubmV0L21hYzgwMjExL3N0YV9pbmZvLmg6NzgzOlxcdHN0cnVjdCBpZWVlODAyMTFfZnJhZ21lbnRfY2FjaGUgZnJhZ3M7XFxubmV0L21hYzgwMjExL3N0YV9pbmZvLmgtNzg0LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yOVQwNjowNDo0Ni40NzI0Mjk3NzFaIiwiU2VxIjo1NSwiTmVzdGluZyI6MywiVHlwZSI6ImxsbSIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NTc1Mjk3NzU3NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgYXMgaWYgSSB3ZXJlIHRoaW5raW5nIGl0OlxuXG4qKkRpdmluZyBpbnRvIHRoZSBGcmFnbWVudCBDYWNoZSBJbml0aWFsaXphdGlvbioqXG5cbk9rYXksIHRpbWUgdG8gZGlnIGludG8gdGhlIGludGVybmFscy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZSBmcmFnbWVudCBjYWNoZSBpcyBpbml0aWFsaXplZCBpbiBtYWM4MDIxMSwgc3BlY2lmaWNhbGx5IGZvciByZWNlaXZlIG9wZXJhdGlvbnMuIExldCdzIHN0YXJ0IGJ5IGxvb2tpbmcgYXQgYGllZWU4MDIxMV9pbml0X2ZyYWdfY2FjaGVgIHdpdGhpbiB0aGUgYG5ldC9tYWM4MDIxMS9yeC5jYCBmaWxlLiBJJ20gYXNzdW1pbmcgdGhpcyBpcyB3aGVyZSB0aGUgY29yZSBzZXR1cCBmb3IgaGFuZGxpbmcgZnJhZ21lbnRlZCBwYWNrZXRzIG9uIHRoZSByZWNlaXZlIHNpZGUgaXMgZGVmaW5lZC4gSSB3YW50IHRvIHNlZSBob3cgdGhlIGNhY2hlIGl0c2VsZiBpcyBzdHJ1Y3R1cmVkLCBob3cgaXQncyBhbGxvY2F0ZWQsIHdoYXQgdGhlIGluaXRpYWwgcGFyYW1ldGVycyBhcmUsIGFuZCBhbnkgaW1wb3J0YW50IGluaXRpYWxpemF0aW9ucyBvciBjaGVja3MgdGhhdCBhcmUgaGFwcGVuaW5nIHRoZXJlLiBVbmRlcnN0YW5kaW5nIHRoaXMgZnVuY3Rpb24gd2lsbCBiZSBjcnVjaWFsIGZvciBmaWd1cmluZyBvdXQgaG93IHRoZSBNQUMgaGFuZGxlcyByZWFzc2VtYmx5LlxuXG5cbiIsIklucHV0VG9rZW5zIjo5MzE0LCJPdXRwdXRUb2tlbnMiOjQxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjlUMDY6MDQ6NTIuMjI1NDA5NzA4WiIsIlNlcSI6NTYsIk5lc3RpbmciOjMsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM0NjcxMSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJuZXQvbWFjODAyMTEvcnguY1wiLFxuICBcIkZpcnN0TGluZVwiOiAyMjcwLFxuICBcIkxpbmVDb3VudFwiOiAyNVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIyMjcwOlxcdFxcdFxcdGNmZzgwMjExX3J4X3VucHJvdF9tbG1lX21nbXQocngtXFx1MDAzZXNkYXRhLVxcdTAwM2VkZXYsXFxuMjI3MTpcXHRcXHRcXHRcXHRcXHRcXHQgICAgIHNrYi1cXHUwMDNlZGF0YSwgc2tiLVxcdTAwM2VsZW4pO1xcbjIyNzI6XFx0XFxuMjI3MzpcXHRcXHRyZXR1cm4gcmVzdWx0O1xcbjIyNzQ6XFx0fVxcbjIyNzU6XFx0XFxuMjI3NjpcXHR2b2lkIGllZWU4MDIxMV9pbml0X2ZyYWdfY2FjaGUoc3RydWN0IGllZWU4MDIxMV9mcmFnbWVudF9jYWNoZSAqY2FjaGUpXFxuMjI3NzpcXHR7XFxuMjI3ODpcXHRcXHRpbnQgaTtcXG4yMjc5OlxcdFxcbjIyODA6XFx0XFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIEFSUkFZX1NJWkUoY2FjaGUtXFx1MDAzZWVudHJpZXMpOyBpKyspXFxuMjI4MTpcXHRcXHRcXHRza2JfcXVldWVfaGVhZF9pbml0KFxcdTAwMjZjYWNoZS1cXHUwMDNlZW50cmllc1tpXS5za2JfbGlzdCk7XFxuMjI4MjpcXHR9XFxuMjI4MzpcXHRcXG4yMjg0OlxcdHZvaWQgaWVlZTgwMjExX2Rlc3Ryb3lfZnJhZ19jYWNoZShzdHJ1Y3QgaWVlZTgwMjExX2ZyYWdtZW50X2NhY2hlICpjYWNoZSlcXG4yMjg1OlxcdHtcXG4yMjg2OlxcdFxcdGludCBpO1xcbjIyODc6XFx0XFxuMjI4ODpcXHRcXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgQVJSQVlfU0laRShjYWNoZS1cXHUwMDNlZW50cmllcyk7IGkrKylcXG4yMjg5OlxcdFxcdFxcdF9fc2tiX3F1ZXVlX3B1cmdlKFxcdTAwMjZjYWNoZS1cXHUwMDNlZW50cmllc1tpXS5za2JfbGlzdCk7XFxuMjI5MDpcXHR9XFxuMjI5MTpcXHRcXG4yMjkyOlxcdHN0YXRpYyBpbmxpbmUgc3RydWN0IGllZWU4MDIxMV9mcmFnbWVudF9lbnRyeSAqXFxuMjI5MzpcXHRpZWVlODAyMTFfcmVhc3NlbWJsZV9hZGQoc3RydWN0IGllZWU4MDIxMV9mcmFnbWVudF9jYWNoZSAqY2FjaGUsXFxuMjI5NDpcXHRcXHRcXHRcXHQgdW5zaWduZWQgaW50IGZyYWcsIHVuc2lnbmVkIGludCBzZXEsIGludCByeF9xdWV1ZSxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjlUMDY6MDQ6NTIuMjI1NzU4MDA4WiIsIlNlcSI6NTcsIk5lc3RpbmciOjMsIlR5cGUiOiJsbG0iLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjI0OTU2MzY4NDY5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgUGF0Y2ggZm9yIE1lbW9yeSBTYWZldHkqKlxuXG5Pa2F5LCBsZXQncyBicmVhayBkb3duIHRoaXMgcGF0Y2guIE15IGluaXRpYWwgYXNzZXNzbWVudCBpcyB0aGF0IGl0IGxvb2tzIGxpa2UgYSBzdHJhaWdodGZvcndhcmQgZml4IGZvciBhIHBvdGVudGlhbCBpbnRlZ2VyIG92ZXJmbG93IGlzc3VlIGR1cmluZyA4MDIuMTEgZGVmcmFnbWVudGF0aW9uLiBUaGUgY29tbWl0J3MgcHJpbWFyeSBjaGFuZ2UgaXMgd2lkZW5pbmcgYGV4dHJhX2xlbmAgZnJvbSBhIGB1MTZgIHRvIGFuIGB1bnNpZ25lZCBpbnRgIHdpdGhpbiB0aGUgYGllZWU4MDIxMV9mcmFnbWVudF9lbnRyeWAgc3RydWN0LlxuXG5JJ20gbm90aW5nIHRoZSBsaWZlY3ljbGUgb2YgYGVudHJ5LVx1MDAzZWV4dHJhX2xlbmA6IGl0J3MgaW5pdGlhbGl6ZWQgdG8gemVybyB3aXRoaW4gdGhlIGBpZWVlODAyMTFfcmVhc3NlbWJsZV9hZGRgIGZ1bmN0aW9uLCB1cGRhdGVkIGJ5IGFkZGluZyB0aGUgcmVjZWl2ZWQgcGFja2V0IGxlbmd0aCAoYHJ4LVx1MDAzZXNrYi1cdTAwM2VsZW5gKSwgYW5kIHRoZW4gdXNlZCB0byBjaGVjayBhdmFpbGFibGUgdGFpbHJvb20gaW4gdGhlIFNLQiBiZWZvcmUgYSBwb3NzaWJsZSBleHBhbnNpb24uXG5cblRoaXMgYGllZWU4MDIxMV9mcmFnbWVudF9lbnRyeWAgc3RydWN0dXJlIGlzIGludGVybmFsIHRvIHRoZSBtYWM4MDIxMSByZWFzc2VtYmx5IHByb2Nlc3M7IGl04oCZcyBlbWJlZGRlZCB3aXRoaW4gYGllZWU4MDIxMV9mcmFnbWVudF9jYWNoZWAsIHdoaWNoIGl0c2VsZiBsaXZlcyB3aXRoaW4gYGllZWU4MDIxMV9zdWJfaWZfZGF0YWAgYW5kIGBzdGFfaW5mb2AuIEltcG9ydGFudGx5LCB0aGlzIGRhdGEgaXMgbmV2ZXIgZXhwb3NlZCB0byB1c2Vyc3BhY2Ug4oCTIG5vIG5ldGxpbmssIG5vIGlvY3RsLiBBbHNvLCB0aGUgaW5pdGlhbGl6YXRpb24gdG8gemVybyBiZWZvcmUgdXNlIGlzIGEga2V5IGZhY3Rvci5cblxuVGhlIGZpeCBpdHNlbGYgaXMgZGVzaWduZWQgdG8gcHJldmVudCBpbnRlZ2VyIHRydW5jYXRpb24gb3Igb3ZlcmZsb3csIHdoaWNoIGNvdWxkIGxlYWQgdG8gb3V0LW9mLWJvdW5kcyB3cml0ZXMgb3IgU0tCIGhlYWRyb29tL3RhaWxyb29tIHBhbmljc+KAlGNsYXNzaWMgbWVtb3J5IGNvcnJ1cHRpb24gaXNzdWVzIHRoYXQgYXJlIHR5cGljYWxseSBjYXVnaHQgYnkgS0FTQU4gb3IgYXNzZXJ0aW9ucy5cblxuTm93LCBjb25zaWRlcmluZyBLTVNBTiBzcGVjaWZpY2FsbHk6IEkgZG9uJ3Qgc2VlIGFueSBldmlkZW5jZSB0aGF0IHRoaXMgcGF0Y2ggaW50cm9kdWNlcywgZXhwb3Nlcywgb3IgYWx0ZXJzIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LiBgZXh0cmFfbGVuYCBpcyBleHBsaWNpdGx5IGluaXRpYWxpemVkLCBhbmQgYWxsIGFjY2Vzc2VzIGFyZSBjb250cm9sbGVkIGFuZCB3aXRoaW4gdGhlIGJvdW5kcyBkZWZpbmVkIGJ5IHRoZSBpbnRlZ2VyIHNpemUuIFRoZXJlZm9yZSwgdGhlcmUncyBubyBuZWVkIHRvIGVuYWJsZSBLTVNBTiBoZXJlLlxuXG5MZXQncyBkbyBhIHF1aWNrIGNoZWNrbGlzdCB0byBjb25maXJtIG15IGFzc2Vzc21lbnQuIEkgbmVlZCB0byBtYWtlIHN1cmU6XG5cbiogICBgTmVlZHNLTVNBTmAgaXMgc2V0IHRvIGZhbHNlLlxuKiAgIEkgY2FuIGNsZWFybHkgYXJ0aWN1bGF0ZSB0aGF0IHN0YW5kYXJkIHNhbml0aXplcnMgbGlrZSBLQVNBTiBhcmUgc3VmZmljaWVudCwgZ2l2ZW4gdGhlIGJ1ZyBpcyByZWxhdGVkIHRvIGludGVnZXIgb3ZlcmZsb3cgYW5kIGJ1ZmZlciBzaXppbmcgZHVyaW5nIGRlZnJhZ21lbnRhdGlvbiwgbm90IGFuIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJlYWQgb3IgaW5mb3JtYXRpb24gbGVhay5cbiogICBGaW5hbGx5LCBJIG5lZWQgdG8gY2FsbCBgc2V0LXJlc3VsdHNgIHRvIHJlY29yZCB0aGlzIGFuYWx5c2lzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo5OTkzLCJPdXRwdXRUb2tlbnMiOjI0NiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQwNCwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI5VDA2OjA1OjE3LjE4MjEzMDI3OFoiLCJTZXEiOjU4LCJOZXN0aW5nIjozLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE4NDQwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggY2hhbmdlcyB0aGUgdHlwZSBvZiBgZXh0cmFfbGVuYCBpbiBgc3RydWN0IGllZWU4MDIxMV9mcmFnbWVudF9lbnRyeWAgZnJvbSBgdTE2YCB0byBgdW5zaWduZWQgaW50YCB0byBwcmV2ZW50IGludGVnZXIgb3ZlcmZsb3cvdHJ1bmNhdGlvbiB3aGVuIGNhbGN1bGF0aW5nIHRoZSB0b3RhbCBsZW5ndGggb2YgZnJhZ21lbnRlZCBmcmFtZXMgZHVyaW5nIElFRUUgODAyLjExIGRlZnJhZ21lbnRhdGlvbi5cXG5cXG5gc3RydWN0IGllZWU4MDIxMV9mcmFnbWVudF9lbnRyeWAgaXMgYW4gaW50ZXJuYWwga2VybmVsIGRhdGEgc3RydWN0dXJlIHVzZWQgZXhjbHVzaXZlbHkgYnkgbWFjODAyMTEgUlggZGVmcmFnbWVudGF0aW9uIHJvdXRpbmVzLiBgZW50cnktXFx1MDAzZWV4dHJhX2xlbmAgaXMgZXhwbGljaXRseSBpbml0aWFsaXplZCB0byBgMGAgaW4gYGllZWU4MDIxMV9yZWFzc2VtYmxlX2FkZCgpYCwgYW5kIHRoZSBzdHJ1Y3QgaXMgbmV2ZXIgY29waWVkIHRvIHVzZXJzcGFjZSBvciBleHBvc2VkIHRvIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJlYWRzLiBUaGUgdW5kZXJseWluZyBpc3N1ZSBwcmV2ZW50ZWQgYnkgdGhpcyBwYXRjaCBpcyBhbiBpbnRlZ2VyIG92ZXJmbG93IHRoYXQgY291bGQgbGVhZCB0byBpbnN1ZmZpY2llbnQgU0tCIHJlYWxsb2NhdGlvbiAoc2tiIHRhaWxyb29tIGV4aGF1c3Rpb24gLyBvdXQtb2YtYm91bmRzIHdyaXRlcyksIHdoaWNoIGlzIGRldGVjdGVkIGJ5IEtBU0FOIGFuZCBzdGFuZGFyZCBrZXJuZWwgYXNzZXJ0aW9ucy4gVGhlcmUgaXMgbm8gcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSByZWFkcyBvciBpbmZvcm1hdGlvbiBsZWFrcywgc28gYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCB3YXJyYW50ZWQuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggY2hhbmdlcyB0aGUgdHlwZSBvZiBgZXh0cmFfbGVuYCBpbiBgc3RydWN0IGllZWU4MDIxMV9mcmFnbWVudF9lbnRyeWAgZnJvbSBgdTE2YCB0byBgdW5zaWduZWQgaW50YCB0byBwcmV2ZW50IGludGVnZXIgb3ZlcmZsb3cvdHJ1bmNhdGlvbiB3aGVuIGNhbGN1bGF0aW5nIHRoZSB0b3RhbCBsZW5ndGggb2YgZnJhZ21lbnRlZCBmcmFtZXMgZHVyaW5nIElFRUUgODAyLjExIGRlZnJhZ21lbnRhdGlvbi5cXG5cXG5gc3RydWN0IGllZWU4MDIxMV9mcmFnbWVudF9lbnRyeWAgaXMgYW4gaW50ZXJuYWwga2VybmVsIGRhdGEgc3RydWN0dXJlIHVzZWQgZXhjbHVzaXZlbHkgYnkgbWFjODAyMTEgUlggZGVmcmFnbWVudGF0aW9uIHJvdXRpbmVzLiBgZW50cnktXFx1MDAzZWV4dHJhX2xlbmAgaXMgZXhwbGljaXRseSBpbml0aWFsaXplZCB0byBgMGAgaW4gYGllZWU4MDIxMV9yZWFzc2VtYmxlX2FkZCgpYCwgYW5kIHRoZSBzdHJ1Y3QgaXMgbmV2ZXIgY29waWVkIHRvIHVzZXJzcGFjZSBvciBleHBvc2VkIHRvIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJlYWRzLiBUaGUgdW5kZXJseWluZyBpc3N1ZSBwcmV2ZW50ZWQgYnkgdGhpcyBwYXRjaCBpcyBhbiBpbnRlZ2VyIG92ZXJmbG93IHRoYXQgY291bGQgbGVhZCB0byBpbnN1ZmZpY2llbnQgU0tCIHJlYWxsb2NhdGlvbiAoc2tiIHRhaWxyb29tIGV4aGF1c3Rpb24gLyBvdXQtb2YtYm91bmRzIHdyaXRlcyksIHdoaWNoIGlzIGRldGVjdGVkIGJ5IEtBU0FOIGFuZCBzdGFuZGFyZCBrZXJuZWwgYXNzZXJ0aW9ucy4gVGhlcmUgaXMgbm8gcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSByZWFkcyBvciBpbmZvcm1hdGlvbiBsZWFrcywgc28gYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCB3YXJyYW50ZWQuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowh5xms[1] Phase: Succeeded StartedAt: 2026-08-29 06:05:28 +0000 UTC FinishedAt: 2026-08-29 06:05:28 +0000 UTC Input: nil Output: nil --------- Name: series-workflowh5xms[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-08-29 06:05:28 +0000 UTC FinishedAt: 2026-08-29 06:05:28 +0000 UTC Input: nil Output: nil --------- Name: series-workflowh5xms[2] Phase: Succeeded StartedAt: 2026-08-29 06:05:28 +0000 UTC FinishedAt: 2026-08-29 09:43:38 +0000 UTC Input: nil Output: nil --------- Name: series-workflowh5xms[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"45c13f3f9e3bb15fd89ff2864c6f627a3b4b4229","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211","MAC80211_HWSIM"],"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_rx_list","ieee80211_rx_napi","ieee80211_rx_irqsafe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"45c13f3f9e3bb15fd89ff2864c6f627a3b4b4229","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211","MAC80211_HWSIM"],"series_id":"e74fd6c2-28ed-45bb-9bd4-df5d3581723a","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-08-29 06:05:28 +0000 UTC FinishedAt: 2026-08-29 09:43:38 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"45c13f3f9e3bb15fd89ff2864c6f627a3b4b4229","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211","MAC80211_HWSIM"],"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_rx_list","ieee80211_rx_napi","ieee80211_rx_irqsafe"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"45c13f3f9e3bb15fd89ff2864c6f627a3b4b4229","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211","MAC80211_HWSIM"],"series_id":"e74fd6c2-28ed-45bb-9bd4-df5d3581723a","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-workflowh5xms[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"45c13f3f9e3bb15fd89ff2864c6f627a3b4b4229","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211","MAC80211_HWSIM"],"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_rx_list","ieee80211_rx_napi","ieee80211_rx_irqsafe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"45c13f3f9e3bb15fd89ff2864c6f627a3b4b4229","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211","MAC80211_HWSIM"],"series_id":"e74fd6c2-28ed-45bb-9bd4-df5d3581723a","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-08-29 06:05:28 +0000 UTC FinishedAt: 2026-08-29 06:05:38 +0000 UTC Input: nil Output: nil --------- Name: series-workflowh5xms[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"45c13f3f9e3bb15fd89ff2864c6f627a3b4b4229","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211","MAC80211_HWSIM"],"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_rx_list","ieee80211_rx_napi","ieee80211_rx_irqsafe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"45c13f3f9e3bb15fd89ff2864c6f627a3b4b4229","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211","MAC80211_HWSIM"],"series_id":"e74fd6c2-28ed-45bb-9bd4-df5d3581723a","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-08-29 06:05:28 +0000 UTC FinishedAt: 2026-08-29 06:05:32 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"45c13f3f9e3bb15fd89ff2864c6f627a3b4b4229","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211","MAC80211_HWSIM"],"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-workflowh5xms/series-workflowh5xms-convert-artifact-3468234844/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowh5xms[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"45c13f3f9e3bb15fd89ff2864c6f627a3b4b4229","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211","MAC80211_HWSIM"],"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_rx_list","ieee80211_rx_napi","ieee80211_rx_irqsafe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"45c13f3f9e3bb15fd89ff2864c6f627a3b4b4229","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211","MAC80211_HWSIM"],"series_id":"e74fd6c2-28ed-45bb-9bd4-df5d3581723a","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-08-29 06:05:38 +0000 UTC FinishedAt: 2026-08-29 06:21:31 +0000 UTC Input: nil Output: nil --------- Name: series-workflowh5xms[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"45c13f3f9e3bb15fd89ff2864c6f627a3b4b4229","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211","MAC80211_HWSIM"],"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_rx_list","ieee80211_rx_napi","ieee80211_rx_irqsafe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"45c13f3f9e3bb15fd89ff2864c6f627a3b4b4229","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211","MAC80211_HWSIM"],"series_id":"e74fd6c2-28ed-45bb-9bd4-df5d3581723a","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-08-29 06:05:38 +0000 UTC FinishedAt: 2026-08-29 06:21:31 +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:*aa8b8a43-d8dc-48c9-85b1-27bd1debc9da,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-workflowh5xms/series-workflowh5xms-convert-artifact-3468234844/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": "7ffd7178-b08c-4a15-9b13-e103c3dc1367", "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-workflowh5xms/series-workflowh5xms-build-action-495666058/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowh5xms[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"45c13f3f9e3bb15fd89ff2864c6f627a3b4b4229","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211","MAC80211_HWSIM"],"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_rx_list","ieee80211_rx_napi","ieee80211_rx_irqsafe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"45c13f3f9e3bb15fd89ff2864c6f627a3b4b4229","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211","MAC80211_HWSIM"],"series_id":"e74fd6c2-28ed-45bb-9bd4-df5d3581723a","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-08-29 06:05:38 +0000 UTC FinishedAt: 2026-08-29 06:21:21 +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:*aa8b8a43-d8dc-48c9-85b1-27bd1debc9da,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-workflowh5xms/series-workflowh5xms-convert-artifact-3468234844/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": "7ffd7178-b08c-4a15-9b13-e103c3dc1367", "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-workflowh5xms/series-workflowh5xms-build-action-495666058/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowh5xms[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"45c13f3f9e3bb15fd89ff2864c6f627a3b4b4229","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211","MAC80211_HWSIM"],"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_rx_list","ieee80211_rx_napi","ieee80211_rx_irqsafe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"45c13f3f9e3bb15fd89ff2864c6f627a3b4b4229","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211","MAC80211_HWSIM"],"series_id":"e74fd6c2-28ed-45bb-9bd4-df5d3581723a","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-08-29 06:21:31 +0000 UTC FinishedAt: 2026-08-29 06:21:31 +0000 UTC Input: nil Output: nil --------- Name: series-workflowh5xms[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"45c13f3f9e3bb15fd89ff2864c6f627a3b4b4229","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211","MAC80211_HWSIM"],"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_rx_list","ieee80211_rx_napi","ieee80211_rx_irqsafe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"45c13f3f9e3bb15fd89ff2864c6f627a3b4b4229","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211","MAC80211_HWSIM"],"series_id":"e74fd6c2-28ed-45bb-9bd4-df5d3581723a","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-08-29 06:21:31 +0000 UTC FinishedAt: 2026-08-29 06:21:31 +0000 UTC Input: nil Output: nil --------- Name: series-workflowh5xms[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"45c13f3f9e3bb15fd89ff2864c6f627a3b4b4229","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211","MAC80211_HWSIM"],"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_rx_list","ieee80211_rx_napi","ieee80211_rx_irqsafe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"45c13f3f9e3bb15fd89ff2864c6f627a3b4b4229","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211","MAC80211_HWSIM"],"series_id":"e74fd6c2-28ed-45bb-9bd4-df5d3581723a","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-08-29 06:21:31 +0000 UTC FinishedAt: 2026-08-29 06:21:41 +0000 UTC Input: nil Output: nil --------- Name: series-workflowh5xms[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"45c13f3f9e3bb15fd89ff2864c6f627a3b4b4229","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211","MAC80211_HWSIM"],"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_rx_list","ieee80211_rx_napi","ieee80211_rx_irqsafe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"45c13f3f9e3bb15fd89ff2864c6f627a3b4b4229","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211","MAC80211_HWSIM"],"series_id":"e74fd6c2-28ed-45bb-9bd4-df5d3581723a","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-08-29 06:21:31 +0000 UTC FinishedAt: 2026-08-29 06:21:36 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"45c13f3f9e3bb15fd89ff2864c6f627a3b4b4229","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211","MAC80211_HWSIM"],"series_id":"e74fd6c2-28ed-45bb-9bd4-df5d3581723a","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-workflowh5xms/series-workflowh5xms-convert-artifact-27362203/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowh5xms[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"45c13f3f9e3bb15fd89ff2864c6f627a3b4b4229","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211","MAC80211_HWSIM"],"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_rx_list","ieee80211_rx_napi","ieee80211_rx_irqsafe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"45c13f3f9e3bb15fd89ff2864c6f627a3b4b4229","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211","MAC80211_HWSIM"],"series_id":"e74fd6c2-28ed-45bb-9bd4-df5d3581723a","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-08-29 06:21:41 +0000 UTC FinishedAt: 2026-08-29 06:23:32 +0000 UTC Input: nil Output: nil --------- Name: series-workflowh5xms[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"45c13f3f9e3bb15fd89ff2864c6f627a3b4b4229","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211","MAC80211_HWSIM"],"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_rx_list","ieee80211_rx_napi","ieee80211_rx_irqsafe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"45c13f3f9e3bb15fd89ff2864c6f627a3b4b4229","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211","MAC80211_HWSIM"],"series_id":"e74fd6c2-28ed-45bb-9bd4-df5d3581723a","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-08-29 06:21:41 +0000 UTC FinishedAt: 2026-08-29 06:23:22 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*7ffd7178-b08c-4a15-9b13-e103c3dc1367,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-workflowh5xms/series-workflowh5xms-build-action-495666058/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-workflowh5xms[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"45c13f3f9e3bb15fd89ff2864c6f627a3b4b4229","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211","MAC80211_HWSIM"],"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_rx_list","ieee80211_rx_napi","ieee80211_rx_irqsafe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"45c13f3f9e3bb15fd89ff2864c6f627a3b4b4229","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211","MAC80211_HWSIM"],"series_id":"e74fd6c2-28ed-45bb-9bd4-df5d3581723a","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-08-29 06:23:32 +0000 UTC FinishedAt: 2026-08-29 06:23:32 +0000 UTC Input: nil Output: nil --------- Name: series-workflowh5xms[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"45c13f3f9e3bb15fd89ff2864c6f627a3b4b4229","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211","MAC80211_HWSIM"],"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_rx_list","ieee80211_rx_napi","ieee80211_rx_irqsafe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"45c13f3f9e3bb15fd89ff2864c6f627a3b4b4229","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211","MAC80211_HWSIM"],"series_id":"e74fd6c2-28ed-45bb-9bd4-df5d3581723a","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-08-29 06:23:32 +0000 UTC FinishedAt: 2026-08-29 06:23:32 +0000 UTC Input: nil Output: nil --------- Name: series-workflowh5xms[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"45c13f3f9e3bb15fd89ff2864c6f627a3b4b4229","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211","MAC80211_HWSIM"],"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_rx_list","ieee80211_rx_napi","ieee80211_rx_irqsafe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"45c13f3f9e3bb15fd89ff2864c6f627a3b4b4229","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211","MAC80211_HWSIM"],"series_id":"e74fd6c2-28ed-45bb-9bd4-df5d3581723a","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-08-29 06:23:32 +0000 UTC FinishedAt: 2026-08-29 06:39:23 +0000 UTC Input: nil Output: nil --------- Name: series-workflowh5xms[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"45c13f3f9e3bb15fd89ff2864c6f627a3b4b4229","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211","MAC80211_HWSIM"],"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_rx_list","ieee80211_rx_napi","ieee80211_rx_irqsafe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"45c13f3f9e3bb15fd89ff2864c6f627a3b4b4229","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211","MAC80211_HWSIM"],"series_id":"e74fd6c2-28ed-45bb-9bd4-df5d3581723a","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-08-29 06:23:32 +0000 UTC FinishedAt: 2026-08-29 06:39:23 +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:*aa8b8a43-d8dc-48c9-85b1-27bd1debc9da,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-workflowh5xms/series-workflowh5xms-convert-artifact-27362203/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": "5380b8ba-0a2d-4b29-8bba-689a1f6eb48f", "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-workflowh5xms/series-workflowh5xms-build-action-1676734271/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowh5xms[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"45c13f3f9e3bb15fd89ff2864c6f627a3b4b4229","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211","MAC80211_HWSIM"],"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_rx_list","ieee80211_rx_napi","ieee80211_rx_irqsafe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"45c13f3f9e3bb15fd89ff2864c6f627a3b4b4229","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211","MAC80211_HWSIM"],"series_id":"e74fd6c2-28ed-45bb-9bd4-df5d3581723a","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-08-29 06:23:32 +0000 UTC FinishedAt: 2026-08-29 06:39:13 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*true,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Patched,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*aa8b8a43-d8dc-48c9-85b1-27bd1debc9da,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-workflowh5xms/series-workflowh5xms-convert-artifact-27362203/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": "5380b8ba-0a2d-4b29-8bba-689a1f6eb48f", "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-workflowh5xms/series-workflowh5xms-build-action-1676734271/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowh5xms[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"45c13f3f9e3bb15fd89ff2864c6f627a3b4b4229","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211","MAC80211_HWSIM"],"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_rx_list","ieee80211_rx_napi","ieee80211_rx_irqsafe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"45c13f3f9e3bb15fd89ff2864c6f627a3b4b4229","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211","MAC80211_HWSIM"],"series_id":"e74fd6c2-28ed-45bb-9bd4-df5d3581723a","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-08-29 06:39:23 +0000 UTC FinishedAt: 2026-08-29 06:39:23 +0000 UTC Input: nil Output: nil --------- Name: series-workflowh5xms[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"45c13f3f9e3bb15fd89ff2864c6f627a3b4b4229","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211","MAC80211_HWSIM"],"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_rx_list","ieee80211_rx_napi","ieee80211_rx_irqsafe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"45c13f3f9e3bb15fd89ff2864c6f627a3b4b4229","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211","MAC80211_HWSIM"],"series_id":"e74fd6c2-28ed-45bb-9bd4-df5d3581723a","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-08-29 06:39:23 +0000 UTC FinishedAt: 2026-08-29 06:39:23 +0000 UTC Input: nil Output: nil --------- Name: series-workflowh5xms[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"45c13f3f9e3bb15fd89ff2864c6f627a3b4b4229","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211","MAC80211_HWSIM"],"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_rx_list","ieee80211_rx_napi","ieee80211_rx_irqsafe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"45c13f3f9e3bb15fd89ff2864c6f627a3b4b4229","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211","MAC80211_HWSIM"],"series_id":"e74fd6c2-28ed-45bb-9bd4-df5d3581723a","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-08-29 06:39:23 +0000 UTC FinishedAt: 2026-08-29 06:41:17 +0000 UTC Input: nil Output: nil --------- Name: series-workflowh5xms[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"45c13f3f9e3bb15fd89ff2864c6f627a3b4b4229","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211","MAC80211_HWSIM"],"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_rx_list","ieee80211_rx_napi","ieee80211_rx_irqsafe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"45c13f3f9e3bb15fd89ff2864c6f627a3b4b4229","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211","MAC80211_HWSIM"],"series_id":"e74fd6c2-28ed-45bb-9bd4-df5d3581723a","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-08-29 06:39:23 +0000 UTC FinishedAt: 2026-08-29 06:41:07 +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:*5380b8ba-0a2d-4b29-8bba-689a1f6eb48f,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-workflowh5xms/series-workflowh5xms-build-action-1676734271/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-workflowh5xms[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"45c13f3f9e3bb15fd89ff2864c6f627a3b4b4229","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211","MAC80211_HWSIM"],"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_rx_list","ieee80211_rx_napi","ieee80211_rx_irqsafe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"45c13f3f9e3bb15fd89ff2864c6f627a3b4b4229","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211","MAC80211_HWSIM"],"series_id":"e74fd6c2-28ed-45bb-9bd4-df5d3581723a","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-08-29 06:41:17 +0000 UTC FinishedAt: 2026-08-29 09:43:38 +0000 UTC Input: nil Output: nil --------- Name: series-workflowh5xms[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"45c13f3f9e3bb15fd89ff2864c6f627a3b4b4229","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211","MAC80211_HWSIM"],"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_rx_list","ieee80211_rx_napi","ieee80211_rx_irqsafe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"45c13f3f9e3bb15fd89ff2864c6f627a3b4b4229","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211","MAC80211_HWSIM"],"series_id":"e74fd6c2-28ed-45bb-9bd4-df5d3581723a","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-08-29 06:41:17 +0000 UTC FinishedAt: 2026-08-29 09:43:38 +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_rx_list","ieee80211_rx_napi","ieee80211_rx_irqsafe"],"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:*7ffd7178-b08c-4a15-9b13-e103c3dc1367,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*5380b8ba-0a2d-4b29-8bba-689a1f6eb48f,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-workflowh5xms/series-workflowh5xms-build-action-495666058/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-workflowh5xms/series-workflowh5xms-build-action-1676734271/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowh5xms[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"45c13f3f9e3bb15fd89ff2864c6f627a3b4b4229","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211","MAC80211_HWSIM"],"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_rx_list","ieee80211_rx_napi","ieee80211_rx_irqsafe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"45c13f3f9e3bb15fd89ff2864c6f627a3b4b4229","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211","MAC80211_HWSIM"],"series_id":"e74fd6c2-28ed-45bb-9bd4-df5d3581723a","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-08-29 06:41:17 +0000 UTC FinishedAt: 2026-08-29 06:41:27 +0000 UTC Input: nil Output: nil --------- Name: series-workflowh5xms[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"45c13f3f9e3bb15fd89ff2864c6f627a3b4b4229","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211","MAC80211_HWSIM"],"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_rx_list","ieee80211_rx_napi","ieee80211_rx_irqsafe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"45c13f3f9e3bb15fd89ff2864c6f627a3b4b4229","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211","MAC80211_HWSIM"],"series_id":"e74fd6c2-28ed-45bb-9bd4-df5d3581723a","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-08-29 06:41:17 +0000 UTC FinishedAt: 2026-08-29 06:41:22 +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_rx_list","ieee80211_rx_napi","ieee80211_rx_irqsafe"],"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-workflowh5xms/series-workflowh5xms-convert-artifact-3920722068/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowh5xms[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"45c13f3f9e3bb15fd89ff2864c6f627a3b4b4229","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211","MAC80211_HWSIM"],"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_rx_list","ieee80211_rx_napi","ieee80211_rx_irqsafe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"45c13f3f9e3bb15fd89ff2864c6f627a3b4b4229","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211","MAC80211_HWSIM"],"series_id":"e74fd6c2-28ed-45bb-9bd4-df5d3581723a","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-08-29 06:41:17 +0000 UTC FinishedAt: 2026-08-29 06:41:17 +0000 UTC Input: nil Output: nil --------- Name: series-workflowh5xms[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"45c13f3f9e3bb15fd89ff2864c6f627a3b4b4229","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211","MAC80211_HWSIM"],"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_rx_list","ieee80211_rx_napi","ieee80211_rx_irqsafe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"45c13f3f9e3bb15fd89ff2864c6f627a3b4b4229","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211","MAC80211_HWSIM"],"series_id":"e74fd6c2-28ed-45bb-9bd4-df5d3581723a","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-08-29 06:41:17 +0000 UTC FinishedAt: 2026-08-29 06:41:17 +0000 UTC Input: nil Output: nil --------- Name: series-workflowh5xms[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"45c13f3f9e3bb15fd89ff2864c6f627a3b4b4229","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211","MAC80211_HWSIM"],"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_rx_list","ieee80211_rx_napi","ieee80211_rx_irqsafe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"45c13f3f9e3bb15fd89ff2864c6f627a3b4b4229","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211","MAC80211_HWSIM"],"series_id":"e74fd6c2-28ed-45bb-9bd4-df5d3581723a","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-08-29 06:41:17 +0000 UTC FinishedAt: 2026-08-29 06:41:17 +0000 UTC Input: nil Output: nil --------- Name: series-workflowh5xms[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"45c13f3f9e3bb15fd89ff2864c6f627a3b4b4229","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211","MAC80211_HWSIM"],"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_rx_list","ieee80211_rx_napi","ieee80211_rx_irqsafe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"45c13f3f9e3bb15fd89ff2864c6f627a3b4b4229","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211","MAC80211_HWSIM"],"series_id":"e74fd6c2-28ed-45bb-9bd4-df5d3581723a","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-08-29 06:41:27 +0000 UTC FinishedAt: 2026-08-29 09:43:38 +0000 UTC Input: nil Output: nil --------- Name: series-workflowh5xms[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"45c13f3f9e3bb15fd89ff2864c6f627a3b4b4229","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211","MAC80211_HWSIM"],"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_rx_list","ieee80211_rx_napi","ieee80211_rx_irqsafe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"45c13f3f9e3bb15fd89ff2864c6f627a3b4b4229","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211","MAC80211_HWSIM"],"series_id":"e74fd6c2-28ed-45bb-9bd4-df5d3581723a","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-08-29 06:41:27 +0000 UTC FinishedAt: 2026-08-29 09:43:28 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*7ffd7178-b08c-4a15-9b13-e103c3dc1367,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*5380b8ba-0a2d-4b29-8bba-689a1f6eb48f,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-workflowh5xms/series-workflowh5xms-build-action-495666058/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-workflowh5xms/series-workflowh5xms-build-action-1676734271/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-workflowh5xms/series-workflowh5xms-convert-artifact-3920722068/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,}