Name: series-workflowq986w Phase: Succeeded StartedAt: 2026-07-26 18:30:51 +0000 UTC FinishedAt: 2026-07-26 22:14:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowq986w[0] Phase: Succeeded StartedAt: 2026-07-26 18:30:51 +0000 UTC FinishedAt: 2026-07-26 18:56:57 +0000 UTC Input: nil Output: nil --------- Name: series-workflowq986w[0].run-triage Phase: Succeeded StartedAt: 2026-07-26 18:30:51 +0000 UTC FinishedAt: 2026-07-26 18:56:57 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "linux-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next", "commit_hash": "90883c513ca01e77c56b8d94be7de11420c1dacf", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "WCN36XX", "QCOM_WCNSS_CTRL", "RPMSG_VIRTIO", "MAC80211" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "linux-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next", "commit_hash": "90883c513ca01e77c56b8d94be7de11420c1dacf", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "WCN36XX", "QCOM_WCNSS_CTRL", "RPMSG_VIRTIO", "MAC80211" ], "series_id": "f1fbd891-3701-488e-882d-6c92e98c0170" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "wcn36xx_smd_rsp_process" ], "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+CgkJCTx0ZD4yMDI2LzA3LzI2IDE4OjUzPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+M208L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1dDTjM2WFgmIzM0OywKICAgICYjMzQ7UUNPTV9XQ05TU19DVFJMJiMzNDssCiAgICAmIzM0O1JQTVNHX1ZJUlRJTyYjMzQ7LAogICAgJiMzNDtNQUM4MDIxMSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3djbjM2eHhfc21kX3JzcF9wcm9jZXNzJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGFuIG91dC1vZi1ib3VuZHMgcmVhZCBpbiBgd2NuMzZ4eF9zbWRfcnNwX3Byb2Nlc3NgIGJ5IGFkZGluZyBhIGxlbmd0aCBjaGVjayBmb3IgdGhlIEhBTCBtZXNzYWdlIGhlYWRlci4gVGhpcyBmdW5jdGlvbiBwcm9jZXNzZXMgaW5jb21pbmcgbWVzc2FnZXMgZnJvbSB0aGUgU01EIGNoYW5uZWwgKHJwbXNnKS4gSXQgaXMgcmVhY2hhYmxlIHZpYSB0aGUgdmlydGlvLXJwbXNnIGJ1cyBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMsIG1ha2luZyBpdCBzdWl0YWJsZSBmb3IgZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNiAxODo1MzwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDkzNjcwOTQwNjhlYWNmMWY2YTE5MzQ3ZjU3NTVlMzNmZmUwNWM2MTNcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgU3VuIEp1bCAyNiAxODo1MzozOCAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9zbWQuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L3NtZC5jXG5pbmRleCBjMGI0NzczNDU4MzJiOC4uMzJkZWM0NWRiYjUwZjUgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9zbWQuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvc21kLmNcbkBAIC0zMjU0LDYgJiM0MzszMjU0LDExIEBAIGludCB3Y24zNnh4X3NtZF9yc3BfcHJvY2VzcyhzdHJ1Y3QgcnBtc2dfZGV2aWNlICpycGRldixcbiBcdHN0cnVjdCB3Y24zNnh4X2hhbF9pbmRfbXNnICptc2dfaW5kO1xuIFx0d2NuMzZ4eF9kYmdfZHVtcChXQ04zNlhYX0RCR19TTURfRFVNUCwgXCYjMzQ7U01EIFx1MDAzY1x1MDAzY1x1MDAzYyBcJiMzNDssIGJ1ZiwgbGVuKTtcbiBcbiYjNDM7XHRpZiAobGVuIFx1MDAzYyBzaXplb2YoKm1zZ19oZWFkZXIpKSB7XG4mIzQzO1x0XHR3Y24zNnh4X3dhcm4oXCYjMzQ7Q29ycnVwdGVkIEhBTCBtZXNzYWdlOiBsZW5ndGggJWRcXG5cJiMzNDssIGxlbik7XG4mIzQzO1x0XHRyZXR1cm4gMDtcbiYjNDM7XHR9XG4mIzQzO1xuIFx0c3dpdGNoIChtc2dfaGVhZGVyLVx1MDAzZW1zZ190eXBlKSB7XG4gXHRjYXNlIFdDTjM2WFhfSEFMX1NUQVJUX1JTUDpcbiBcdGNhc2UgV0NOMzZYWF9IQUxfQ09ORklHX1NUQV9SU1A6XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMTg6NTM8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+M208L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1dDTjM2WFgmIzM0OywKICAgICYjMzQ7UUNPTV9XQ05TU19DVFJMJiMzNDssCiAgICAmIzM0O1JQTVNHX1ZJUlRJTyYjMzQ7LAogICAgJiMzNDtNQUM4MDIxMSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3djbjM2eHhfc21kX3JzcF9wcm9jZXNzJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGFuIG91dC1vZi1ib3VuZHMgcmVhZCBpbiBgd2NuMzZ4eF9zbWRfcnNwX3Byb2Nlc3NgIGJ5IGFkZGluZyBhIGxlbmd0aCBjaGVjayBmb3IgdGhlIEhBTCBtZXNzYWdlIGhlYWRlci4gVGhpcyBmdW5jdGlvbiBwcm9jZXNzZXMgaW5jb21pbmcgbWVzc2FnZXMgZnJvbSB0aGUgU01EIGNoYW5uZWwgKHJwbXNnKS4gSXQgaXMgcmVhY2hhYmxlIHZpYSB0aGUgdmlydGlvLXJwbXNnIGJ1cyBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMsIG1ha2luZyBpdCBzdWl0YWJsZSBmb3IgZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDkzNjcwOTQwNjhlYWNmMWY2YTE5MzQ3ZjU3NTVlMzNmZmUwNWM2MTMKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgU3VuIEp1bCAyNiAxODo1MzozOCAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L3NtZC5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvc21kLmMKaW5kZXggYzBiNDc3MzQ1ODMyYjguLjMyZGVjNDVkYmI1MGY1IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9zbWQuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9zbWQuYwpAQCAtMzI1NCw2ICYjNDM7MzI1NCwxMSBAQCBpbnQgd2NuMzZ4eF9zbWRfcnNwX3Byb2Nlc3Moc3RydWN0IHJwbXNnX2RldmljZSAqcnBkZXYsCiAJc3RydWN0IHdjbjM2eHhfaGFsX2luZF9tc2cgKm1zZ19pbmQ7CiAJd2NuMzZ4eF9kYmdfZHVtcChXQ04zNlhYX0RCR19TTURfRFVNUCwgJiMzNDtTTUQgJmx0OyZsdDsmbHQ7ICYjMzQ7LCBidWYsIGxlbik7CiAKJiM0MzsJaWYgKGxlbiAmbHQ7IHNpemVvZigqbXNnX2hlYWRlcikpIHsKJiM0MzsJCXdjbjM2eHhfd2FybigmIzM0O0NvcnJ1cHRlZCBIQUwgbWVzc2FnZTogbGVuZ3RoICVkXG4mIzM0OywgbGVuKTsKJiM0MzsJCXJldHVybiAwOwomIzQzOwl9CiYjNDM7CiAJc3dpdGNoIChtc2dfaGVhZGVyLSZndDttc2dfdHlwZSkgewogCWNhc2UgV0NOMzZYWF9IQUxfU1RBUlRfUlNQOgogCWNhc2UgV0NOMzZYWF9IQUxfQ09ORklHX1NUQV9SU1A6CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDE4OjUzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIxNjMKCQkJCQkJCW91dHB1dDogNDYKCQkJCQkJCXRob3VnaHRzOiAyMDIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgRHJpdmVyIFBhdGNoIGZvciBWdWxuZXJhYmlsaXR5KioKCk9rYXksIHNvIEkmIzM5O3ZlIGdvdCB0aGlzIHBhdGNoIGhlcmUgdGhhdCBpbnRyb2R1Y2VzIGEgbGVuZ3RoIGNoZWNrIGluIGB3Y24zNnh4X3NtZF9yc3BfcHJvY2Vzc2Agd2l0aGluIHRoZSBgd2NuMzZ4eGAgZHJpdmVyLiBJdCBsb29rcyBsaWtlIGl0JiMzOTtzIGd1YXJkaW5nIGFnYWluc3Qgb3V0LW9mLWJvdW5kcyByZWFkcywgd2hpY2ggaXMgYWx3YXlzIGEgZ29vZCB0aGluZy4gU3BlY2lmaWNhbGx5LCBpdCYjMzk7cyBjaGVja2luZyBpZiB0aGUgcmVjZWl2ZWQgbWVzc2FnZSBsZW5ndGggaXMgc21hbGxlciB0aGFuIHRoZSBzaXplIG9mIHRoZSBtZXNzYWdlIGhlYWRlciBhbmQgcmV0dXJuaW5nIDAgaWYgdGhhdCYjMzk7cyB0aGUgY2FzZS4gSXQgYXBwZWFycyB0byBiZSBhIHByZXR0eSBzdHJhaWdodGZvcndhcmQgZnVuY3Rpb25hbCBjaGFuZ2UgdG8gcHJldmVudCBhIHBvdGVudGlhbCB2dWxuZXJhYmlsaXR5LgoKSG1tLCBsZXQgbWUgc2VlLi4uIGB3Y24zNnh4YC4uLiB0aGF0IHJpbmdzIGEgYmVsbC4gQWgsIHllcywgaXQmIzM5O3MgdGhlIGRyaXZlciBmb3IgdGhlIFF1YWxjb21tIEF0aGVyb3MgV0NOMzY2MC8zNjgwIE1BQy9CQi9SYWRpbyBjaGlwcy4gSW50ZXJlc3RpbmcuIE5vdywgdGhlIGtleSBxdWVzdGlvbiBpcyB3aGV0aGVyIHRoaXMgaXMgc29tZXRoaW5nIEkgY2FuIGFjdHVhbGx5ICpyZWFjaCogd2hlbiBmdXp6aW5nLiBDYW4gSSB0cmlnZ2VyIGl0IGluIGEgUUVNVSBlbnZpcm9ubWVudD8gQ29uc2lkZXJpbmcgdGhpcyB1c2VzIHJwbXNnIChSZW1vdGUgUHJvY2Vzc29yIE1lc3NhZ2luZyksIHRoZSBsaWtlbGlob29kIGlzIGhpZ2guIE15IHRob3VnaHQgbm93IGlzLCBjYW4gSSBmdXp6IHRoaXMgcGFydGljdWxhciBmdW5jdGlvbj8KCkxldCBtZSBmb2N1cyBvbiB0aGF0IGZ1bmN0aW9uLCBgd2NuMzZ4eF9zbWRfcnNwX3Byb2Nlc3NgLiBMZXQgbWUgc2VlIHdoYXQgSSBjYW4gZmluZCByZWdhcmRpbmcgdGhpcyBkcml2ZXIuIEkmIzM5O2xsIGRvIGEgcXVpY2sgZ3JlcCBmb3IgYm90aCBgd2NuMzZ4eF9zbWRfcnNwX3Byb2Nlc3NgIGFuZCBqdXN0IHRoZSBkcml2ZXIgbmFtZSwgYHdjbjM2eHhgIHdpdGhpbiB0aGUgS2NvbmZpZyBmaWxlcy4gVGhpcyBzaG91bGQgZ2l2ZSBtZSBhIGJldHRlciB1bmRlcnN0YW5kaW5nIG9mIGhvdyB0aGUgZHJpdmVyIGlzIGNvbmZpZ3VyZWQgYW5kIGlmIGl0JiMzOTtzIGV2ZW4gZW5hYmxlZCBpbiB0aGUgc3lzdGVtcyBJJiMzOTttIGxpa2VseSB0byB0ZXN0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDE4OjUzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3djbjM2eHhfc21kX3JzcF9wcm9jZXNzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYz0xNTU4PXN0YXRpYyBpbnQgd2NuMzZ4eF9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYy0xNjA2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jOjE2MDc6XHR3Y24tXHUwMDNlc21kX2NoYW5uZWwgPSBxY29tX3djbnNzX29wZW5fY2hhbm5lbCh3Y25zcywgXCYjMzQ7V0xBTl9DVFJMXCYjMzQ7LCB3Y24zNnh4X3NtZF9yc3BfcHJvY2VzcywgaHcpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTE2MDgtXHRpZiAoSVNfRVJSKHdjbi1cdTAwM2VzbWRfY2hhbm5lbCkpIHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9zbWQuYz0zMjAyPWludCB3Y24zNnh4X3NtZF9hZGRfYmVhY29uX2ZpbHRlcihzdHJ1Y3Qgd2NuMzZ4eCAqd2NuLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L3NtZC5jLTMyNDctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9zbWQuYzozMjQ4OmludCB3Y24zNnh4X3NtZF9yc3BfcHJvY2VzcyhzdHJ1Y3QgcnBtc2dfZGV2aWNlICpycGRldixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L3NtZC5jLTMyNDktXHRcdFx0ICAgIHZvaWQgKmJ1ZiwgaW50IGxlbiwgdm9pZCAqcHJpdiwgdTMyIGFkZHIpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvc21kLmg9MTQwPWludCB3Y24zNnh4X3NtZF91cGRhdGVfY2ZnKHN0cnVjdCB3Y24zNnh4ICp3Y24sIHUzMiBjZmdfaWQsIHUzMiB2YWx1ZSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9zbWQuaC0xNDEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9zbWQuaDoxNDI6aW50IHdjbjM2eHhfc21kX3JzcF9wcm9jZXNzKHN0cnVjdCBycG1zZ19kZXZpY2UgKnJwZGV2LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvc21kLmgtMTQzLVx0XHRcdCAgICB2b2lkICpidWYsIGludCBsZW4sIHZvaWQgKnByaXYsIHUzMiBhZGRyKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNiAxODo1MzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgV0NOMzZYWCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogSVNDXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9LY29uZmlnOjI6Y29uZmlnIFdDTjM2WFhcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L0tjb25maWctMy1cdHRyaXN0YXRlIFwmIzM0O1F1YWxjb21tIEF0aGVyb3MgV0NOMzY2MC8zNjgwIHN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9LY29uZmlnLTEyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvS2NvbmZpZzoxMzpjb25maWcgV0NOMzZYWF9ERUJVR0ZTXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9LY29uZmlnLTE0LVx0Ym9vbCBcJiMzNDtXQ04zNlhYIGRlYnVnZnMgc3VwcG9ydFwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDE4OjUzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM0NzMKCQkJCQkJCW91dHB1dDogNDIKCQkJCQkJCXRob3VnaHRzOiA2NgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBzdW1tYXJ5LCBhcyBJIGRlbHZlIGludG8gdGhlc2UgZGVwZW5kZW5jaWVzOgoKKipEaXZpbmcgRGVlcCBpbnRvIHRoZSBXQ04zNlhYIERyaXZlcioqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBgV0NOMzZYWGAgZHJpdmVyLCBhbmQgaW1tZWRpYXRlbHkgbXkgbWluZCBqdW1wcyB0byBpdHMgZGVwZW5kZW5jaWVzLiBTZWVtcyBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkIGF0IGZpcnN0IGdsYW5jZSDigJMgaXQgKnJlbGllcyogb24gYE1BQzgwMjExYCwgd2hpY2ggaXMgc3RhbmRhcmQgZm9yIGEgd2lyZWxlc3MgZHJpdmVyLCBhbmQgdGhlbiBgSEFTX0lPTUVNYCwgd2hpY2ggaXMgdG8gYmUgZXhwZWN0ZWQgZm9yIGFueSBkcml2ZXIgdGhhdCBuZWVkcyB0byBpbnRlcmFjdCB3aXRoIGhhcmR3YXJlIG1lbW9yeS4gVGhlIHJlYWwgcXVlc3Rpb24gbWFyayBpcyB0aGlzIGBRQ09NX1dDTlNTX0NUUkwgfHwgUUNPTV9XQ05TU19DVFJMPW5gIGJpdC4gVGhhdCBpbmRpY2F0ZXMgYSBjb25kaXRpb25hbCBkZXBlbmRlbmN5LCBJIG5lZWQgdG8ga25vdyBhIGxpdHRsZSBtb3JlLgoKSSBuZWVkIHRvIHF1aWNrbHkgdmVyaWZ5IG15IHVuZGVyc3RhbmRpbmcuIEl0IGlzIHBydWRlbnQgdG8gY2hlY2sgdGhlIGZ1bGwgZGVwZW5kZW5jeSBjaGFpbiBmb3IgYFdDTjM2WFhgLiBJIHdpbGwgbmVlZCB0byBsb29rIGRlZXBlciBpbnRvIGBRQ09NX1dDTlNTX0NUUkxgIHRvIHRydWx5IHVuZGVyc3RhbmQgaG93IHRoZSBgV0NOMzZYWGAgZHJpdmVyIGZpdHMgaW50byB0aGUgYnJvYWRlciBRdWFsY29tbSB3aXJlbGVzcyBzdWJzeXN0ZW0uIExldCYjMzk7cyBkaWcgaW4uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMTg6NTM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAyMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgICAxOlx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogSVNDXG4gICAyOlx0Y29uZmlnIFdDTjM2WFhcbiAgIDM6XHRcdHRyaXN0YXRlIFwmIzM0O1F1YWxjb21tIEF0aGVyb3MgV0NOMzY2MC8zNjgwIHN1cHBvcnRcJiMzNDtcbiAgIDQ6XHRcdGRlcGVuZHMgb24gTUFDODAyMTEgXHUwMDI2XHUwMDI2IEhBU19ETUFcbiAgIDU6XHRcdGRlcGVuZHMgb24gUUNPTV9XQ05TU19DVFJMIHx8IFFDT01fV0NOU1NfQ1RSTD1uXG4gICA2Olx0XHRkZXBlbmRzIG9uIFJQTVNHIHx8IFJQTVNHPW5cbiAgIDc6XHRcdGhlbHBcbiAgIDg6XHRcdCAgVGhpcyBtb2R1bGUgYWRkcyBzdXBwb3J0IGZvciB3aXJlbGVzcyBhZGFwdGVycyBiYXNlZCBvblxuICAgOTpcdFx0ICBRdWFsY29tbSBBdGhlcm9zIFdDTjM2NjAgYW5kIFdDTjM2ODAgbW9iaWxlIGNoaXBzZXRzLlxuICAxMDpcdFxuICAxMTpcdFx0ICBJZiB5b3UgY2hvb3NlIHRvIGJ1aWxkIGEgbW9kdWxlLCBpdCYjMzk7bGwgYmUgY2FsbGVkIHdjbjM2eHguXG4gIDEyOlx0XG4gIDEzOlx0Y29uZmlnIFdDTjM2WFhfREVCVUdGU1xuICAxNDpcdFx0Ym9vbCBcJiMzNDtXQ04zNlhYIGRlYnVnZnMgc3VwcG9ydFwmIzM0O1xuICAxNTpcdFx0ZGVwZW5kcyBvbiBXQ04zNlhYXG4gIDE2Olx0XHRoZWxwXG4gIDE3Olx0XHQgIEVuYWJsZWQgZGVidWdmcyBzdXBwb3J0XG4gIDE4Olx0XG4gIDE5Olx0XHQgIElmIHVuc3VyZSwgc2F5IFkgdG8gbWFrZSBpdCBlYXNpZXIgdG8gZGVidWcgcHJvYmxlbXMuXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMTg6NTM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDA5OAoJCQkJCQkJb3V0cHV0OiA4MAoJCQkJCQkJdGhvdWdodHM6IDcwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBEcml2ZXIgUmVhY2hhYmlsaXR5IGluIFFFTVUqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGllY2Ugb2YgY29kZSwgYW5kIHRoZSBmaXJzdCB0aGluZyB0aGF0IGp1bXBzIG91dCBpcyB0aGUgZGVwZW5kZW5jeSBvbiBgTUFDODAyMTEgJmFtcDsmYW1wOyBIQVNfRE1BYC4gVGhhdCYjMzk7cyBhIHByZXR0eSBjbGVhciBpbmRpY2F0b3Igb2Ygd2hhdCB0aGlzIGRyaXZlciAqbWlnaHQqIGJlIHVzZWQgZm9yLiBCdXQgdGhlIGtleSBxdWVzdGlvbiBoZXJlLCBlc3BlY2lhbGx5IGdpdmVuIG15IGRlYnVnZ2luZyBzZXR1cCwgaXM6IGNhbiB0aGlzIGRyaXZlciBldmVuICpyZWFjaCogUUVNVT8gSSBuZWVkIHRvIHF1aWNrbHkgZXN0YWJsaXNoIGlmIGl0JiMzOTtzIHBhcnQgb2YgdGhlIGNvbmZpZ3VyYXRpb24gSSYjMzk7bSBydW5uaW5nLgoKVGhlIG5leHQgY2x1ZSBpcyBgcWNvbV93Y25zc19vcGVuX2NoYW5uZWxgLiBUaGF0IGZ1bmN0aW9uIGltbWVkaWF0ZWx5IHBvaW50cyBtZSB0byBgUUNPTV9XQ05TU19DVFJMYCwgd2hpY2ggaXMgYW5vdGhlciBpbXBvcnRhbnQgcGllY2Ugb2YgdGhlIHB1enpsZS4gTm93IEkmIzM5O20gdHJ5aW5nIHRvIHBpY3R1cmUgdGhlIG1vZHVsZSYjMzk7cyBzdHJ1Y3R1cmUgaW4gbXkgaGVhZC4gSSYjMzk7bSBhbG1vc3QgY2VydGFpbiBJIGhhdmUgdGhhdCBlbmFibGVkIGJ1dCBJIG5lZWQgdG8gcXVpY2tseSBkZXRlcm1pbmUgd2hldGhlciBpdCByZWdpc3RlcnMgYSBwbGF0Zm9ybSBkcml2ZXIgb3Igc29tZXRoaW5nIGVsc2UgdGhhdCBRRU1VIGFjdHVhbGx5IGxldmVyYWdlcy4gVGhpcyB3b3VsZCBvZmZlciBhIGNsZWFyIHBhdGggZm9yIGV4cGxvaXRhdGlvbi4gTGV0JiMzOTtzIHNlZS4uLiBsb29raW5nIGZvciBwbGF0Zm9ybSBkcml2ZXIgcmVnaXN0cmF0aW9uIG5leHQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMTg6NTM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bW9kdWxlX3BsYXRmb3JtX2RyaXZlciYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmM9MTY3Nj1zdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RyaXZlciB3Y24zNnh4X2RyaXZlciA9IHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmMtMTY4NC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYzoxNjg1Om1vZHVsZV9wbGF0Zm9ybV9kcml2ZXIod2NuMzZ4eF9kcml2ZXIpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTE2ODYtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDE4OjUzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3djbjM2eHhfcHJvYmUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jPTE0NzI9c3RhdGljIGludCB3Y24zNnh4X3BsYXRmb3JtX2dldF9yZXNvdXJjZXMoc3RydWN0IHdjbjM2eHggKndjbixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmMtMTU1Ny1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYzoxNTU4OnN0YXRpYyBpbnQgd2NuMzZ4eF9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTE1NTkte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYz0xNjc2PXN0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIHdjbjM2eHhfZHJpdmVyID0ge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jOjE2Nzc6XHQucHJvYmUgPSB3Y24zNnh4X3Byb2JlLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTE2NzgtXHQucmVtb3ZlID0gd2NuMzZ4eF9yZW1vdmUsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDE4OjUzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ4NjcKCQkJCQkJCW91dHB1dDogNDYKCQkJCQkJCXRob3VnaHRzOiA2NgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzOgoKKipEaXNzZWN0aW5nIHRoZSBQbGF0Zm9ybSBEcml2ZXIgSW50ZXJhY3Rpb24qKgoKT2theSwgc28gd2UmIzM5O3JlIGxvb2tpbmcgYXQgYSBwbGF0Zm9ybSBkcml2ZXIgaW50ZXJhY3Rpb24sIG1vc3QgbGlrZWx5IGludm9sdmluZyBzb21ldGhpbmcgdHJpZ2dlcmVkIGJ5IFN5emthbGxlciwgd2hpY2gsIGlmIEkgcmVjYWxsIGNvcnJlY3RseSwgY2FuIGluamVjdCBwbGF0Zm9ybSBkZXZpY2VzIHVzaW5nIGZ1bmN0aW9ucyBsaWtlIGBzeXpfZGV2X3BsYXRmb3JtX2FkZGAuIFRoYXQmIzM5O3MgdGhlIHR5cGljYWwgYXBwcm9hY2guIFdhaXQgYSBtaW51dGUsIHdoYXQmIzM5O3MgZ29pbmcgb24gd2l0aCBgd2NuMzZ4eF9zbWRfcnNwX3Byb2Nlc3NgPyBUaGF0IG5hbWUgaXMgbWFraW5nIG1lIHRoaW5r4oCmaXNuJiMzOTt0IHRoYXQgYW4gcnBtc2cgY2FsbGJhY2s/IFRoYXQgY2VydGFpbmx5IHNtZWxscyBsaWtlIGFuIGludGVyLXByb2Nlc3NvciBjb21tdW5pY2F0aW9uIHNjaGVtZS4gT2theSwgbGV0JiMzOTtzIGJhY2sgdXAgYSBiaXQgYW5kIGdvIHRvIHRoZSBzb3VyY2UsIHN0YXJ0aW5nIHdpdGggYHdjbjM2eHhfcHJvYmVgLiBUaGF0JiMzOTtzIHdoZXJlIGl0IGFsbCBiZWdpbnMuIEZyb20gdGhlcmUsIHdlIGNhbiBhbmFseXplIHRoZSBpbml0aWFsaXphdGlvbiBhbmQgcmVnaXN0cmF0aW9uLCB0byBzZWUgaG93IHRoYXQgY2FsbGJhY2sgaXMgYXNzb2NpYXRlZCBhbmQgdHJpZ2dlcmVkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNiAxODo1NDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDE1NTgsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNTAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7MTU1ODpcdHN0YXRpYyBpbnQgd2NuMzZ4eF9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuMTU1OTpcdHtcbjE1NjA6XHRcdHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3O1xuMTU2MTpcdFx0c3RydWN0IHdjbjM2eHggKndjbjtcbjE1NjI6XHRcdHZvaWQgKndjbnNzO1xuMTU2MzpcdFx0aW50IHJldDtcbjE1NjQ6XHRcdGNvbnN0IHU4ICphZGRyO1xuMTU2NTpcdFx0aW50IG5fY2hhbm5lbHM7XG4xNTY2Olx0XG4xNTY3Olx0XHR3Y24zNnh4X2RiZyhXQ04zNlhYX0RCR19NQUMsIFwmIzM0O3BsYXRmb3JtIHByb2JlXFxuXCYjMzQ7KTtcbjE1Njg6XHRcbjE1Njk6XHRcdHdjbnNzID0gZGV2X2dldF9kcnZkYXRhKHBkZXYtXHUwMDNlZGV2LnBhcmVudCk7XG4xNTcwOlx0XG4xNTcxOlx0XHRuX2NoYW5uZWxzID0gd2NuX2JhbmRfMmdoei5uX2NoYW5uZWxzICYjNDM7IHdjbl9iYW5kXzVnaHoubl9jaGFubmVscztcbjE1NzI6XHRcdGh3ID0gaWVlZTgwMjExX2FsbG9jX2h3KHN0cnVjdF9zaXplKHdjbiwgY2hhbl9zdXJ2ZXksIG5fY2hhbm5lbHMpLCBcdTAwMjZ3Y24zNnh4X29wcyk7XG4xNTczOlx0XHRpZiAoIWh3KSB7XG4xNTc0Olx0XHRcdHdjbjM2eHhfZXJyKFwmIzM0O2ZhaWxlZCB0byBhbGxvYyBod1xcblwmIzM0Oyk7XG4xNTc1Olx0XHRcdHJldCA9IC1FTk9NRU07XG4xNTc2Olx0XHRcdGdvdG8gb3V0X2VycjtcbjE1Nzc6XHRcdH1cbjE1Nzg6XHRcdHBsYXRmb3JtX3NldF9kcnZkYXRhKHBkZXYsIGh3KTtcbjE1Nzk6XHRcdHdjbiA9IGh3LVx1MDAzZXByaXY7XG4xNTgwOlx0XHR3Y24tXHUwMDNlaHcgPSBodztcbjE1ODE6XHRcdHdjbi1cdTAwM2VkZXYgPSBcdTAwMjZwZGV2LVx1MDAzZWRldjtcbjE1ODI6XHRcdHdjbi1cdTAwM2VmaXJzdF9ib290ID0gdHJ1ZTtcbjE1ODM6XHRcdG11dGV4X2luaXQoXHUwMDI2d2NuLVx1MDAzZWNvbmZfbXV0ZXgpO1xuMTU4NDpcdFx0bXV0ZXhfaW5pdChcdTAwMjZ3Y24tXHUwMDNlaGFsX211dGV4KTtcbjE1ODU6XHRcdG11dGV4X2luaXQoXHUwMDI2d2NuLVx1MDAzZXNjYW5fbG9jayk7XG4xNTg2Olx0XHRfX3NrYl9xdWV1ZV9oZWFkX2luaXQoXHUwMDI2d2NuLVx1MDAzZWFtc2R1KTtcbjE1ODc6XHRcbjE1ODg6XHRcdHdjbi1cdTAwM2VoYWxfYnVmID0gZGV2bV9rbWFsbG9jKHdjbi1cdTAwM2VkZXYsIFdDTjM2WFhfSEFMX0JVRl9TSVpFLCBHRlBfS0VSTkVMKTtcbjE1ODk6XHRcdGlmICghd2NuLVx1MDAzZWhhbF9idWYpIHtcbjE1OTA6XHRcdFx0cmV0ID0gLUVOT01FTTtcbjE1OTE6XHRcdFx0Z290byBvdXRfd3E7XG4xNTkyOlx0XHR9XG4xNTkzOlx0XG4xNTk0Olx0XHRyZXQgPSBkbWFfc2V0X21hc2tfYW5kX2NvaGVyZW50KHdjbi1cdTAwM2VkZXYsIERNQV9CSVRfTUFTSygzMikpO1xuMTU5NTpcdFx0aWYgKHJldCBcdTAwM2MgMCkge1xuMTU5NjpcdFx0XHR3Y24zNnh4X2VycihcJiMzNDtmYWlsZWQgdG8gc2V0IERNQSBtYXNrOiAlZFxcblwmIzM0OywgcmV0KTtcbjE1OTc6XHRcdFx0Z290byBvdXRfd3E7XG4xNTk4Olx0XHR9XG4xNTk5Olx0XG4xNjAwOlx0XHR3Y24tXHUwMDNlbnZfZmlsZSA9IFdMQU5fTlZfRklMRTtcbjE2MDE6XHRcdHJldCA9IG9mX3Byb3BlcnR5X3JlYWRfc3RyaW5nKHdjbi1cdTAwM2VkZXYtXHUwMDNlcGFyZW50LVx1MDAzZW9mX25vZGUsIFwmIzM0O2Zpcm13YXJlLW5hbWVcJiMzNDssIFx1MDAyNndjbi1cdTAwM2Vudl9maWxlKTtcbjE2MDI6XHRcdGlmIChyZXQgXHUwMDNjIDAgXHUwMDI2XHUwMDI2IHJldCAhPSAtRUlOVkFMKSB7XG4xNjAzOlx0XHRcdHdjbjM2eHhfZXJyKFwmIzM0O2ZhaWxlZCB0byByZWFkIFxcXCYjMzQ7ZmlybXdhcmUtbmFtZVxcXCYjMzQ7IHByb3BlcnR5OiAlZFxcblwmIzM0OywgcmV0KTtcbjE2MDQ6XHRcdFx0Z290byBvdXRfd3E7XG4xNjA1Olx0XHR9XG4xNjA2Olx0XG4xNjA3Olx0XHR3Y24tXHUwMDNlc21kX2NoYW5uZWwgPSBxY29tX3djbnNzX29wZW5fY2hhbm5lbCh3Y25zcywgXCYjMzQ7V0xBTl9DVFJMXCYjMzQ7LCB3Y24zNnh4X3NtZF9yc3BfcHJvY2VzcywgaHcpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNiAxODo1NDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2MDgxCgkJCQkJCQlvdXRwdXQ6IDI0CgkJCQkJCQl0aG91Z2h0czogMzYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uCgoqKkRpdmluZyBpbnRvIHRoZSBQcm9iZSBGdW5jdGlvbiBhbmQgV0NOU1MgQ2hhbm5lbCBPcGVuaW5nKioKCkFscmlnaHQsIHNvIHRoZSBgcHJvYmVgIGZ1bmN0aW9uIGlzIGNhbGxpbmcgYHFjb21fd2Nuc3Nfb3Blbl9jaGFubmVsYC4gVGhhdCYjMzk7cyB0aGUga2V5LiBNeSBmaXJzdCB0aG91Z2h0IGlzLCAmIzM0O09rYXksIHdoYXQmIzM5O3MgKnRoYXQqIGFib3V0PyYjMzQ7IEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgYHFjb21fd2Nuc3Nfb3Blbl9jaGFubmVsYCBpcyBkb2luZyB0byBwcm9wZXJseSB1bmRlcnN0YW5kIHRoZSBwcm9iZSBmdW5jdGlvbi4gTGV0JiMzOTtzIGRpZyBpbnRvIHRoYXQgZnVuY3Rpb24gZGVmaW5pdGlvbiBhbmQgc2VlIHdoYXQgaXQgZW50YWlscy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhpcyBjaGFubmVsIG9wZW5pbmcgcHJvY2VzcyBhbmQgaG93IGl0IHJlbGF0ZXMgdG8gdGhlIG92ZXJhbGwgaW5pdGlhbGl6YXRpb24gb2Ygd2hhdGV2ZXIgaGFyZHdhcmUgaXMgYmVpbmcgcHJvYmVkIGhlcmUuIEtub3dpbmcgdGhpcyB3aWxsIGdpdmUgbWUgYSBwcm9wZXIgY29udGV4dCBmb3IgdGhlIHJlc3Qgb2YgdGhlIGZ1bmN0aW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNiAxODo1NDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtxY29tX3djbnNzX29wZW5fY2hhbm5lbCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL2JsdWV0b290aC9idHFjb21zbWQuYz0xNDA9c3RhdGljIGludCBidHFjb21zbWRfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL2JsdWV0b290aC9idHFjb21zbWQuYy0xNTItXG5kcml2ZXJzL2JsdWV0b290aC9idHFjb21zbWQuYzoxNTM6XHRidHEtXHUwMDNlYWNsX2NoYW5uZWwgPSBxY29tX3djbnNzX29wZW5fY2hhbm5lbCh3Y25zcywgXCYjMzQ7QVBQU19SSVZBX0JUX0FDTFwmIzM0OyxcbmRyaXZlcnMvYmx1ZXRvb3RoL2J0cWNvbXNtZC5jLTE1NC1cdFx0XHRcdFx0XHQgICBidHFjb21zbWRfYWNsX2NhbGxiYWNrLCBidHEpO1xuLS1cbmRyaXZlcnMvYmx1ZXRvb3RoL2J0cWNvbXNtZC5jLTE1Ny1cbmRyaXZlcnMvYmx1ZXRvb3RoL2J0cWNvbXNtZC5jOjE1ODpcdGJ0cS1cdTAwM2VjbWRfY2hhbm5lbCA9IHFjb21fd2Nuc3Nfb3Blbl9jaGFubmVsKHdjbnNzLCBcJiMzNDtBUFBTX1JJVkFfQlRfQ01EXCYjMzQ7LFxuZHJpdmVycy9ibHVldG9vdGgvYnRxY29tc21kLmMtMTU5LVx0XHRcdFx0XHRcdCAgIGJ0cWNvbXNtZF9jbWRfY2FsbGJhY2ssIGJ0cSk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jPTE1NTg9c3RhdGljIGludCB3Y24zNnh4X3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTE2MDYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmM6MTYwNzpcdHdjbi1cdTAwM2VzbWRfY2hhbm5lbCA9IHFjb21fd2Nuc3Nfb3Blbl9jaGFubmVsKHdjbnNzLCBcJiMzNDtXTEFOX0NUUkxcJiMzNDssIHdjbjM2eHhfc21kX3JzcF9wcm9jZXNzLCBodyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmMtMTYwOC1cdGlmIChJU19FUlIod2NuLVx1MDAzZXNtZF9jaGFubmVsKSkge1xuLS1cbmRyaXZlcnMvc29jL3Fjb20vd2Nuc3NfY3RybC5jPTIwMD1zdGF0aWMgaW50IHdjbnNzX2Rvd25sb2FkX252KHN0cnVjdCB3Y25zc19jdHJsICp3Y25zcywgYm9vbCAqZXhwZWN0X2NiYylcbi0tXG5kcml2ZXJzL3NvYy9xY29tL3djbnNzX2N0cmwuYy0yNzUtLyoqXG5kcml2ZXJzL3NvYy9xY29tL3djbnNzX2N0cmwuYzoyNzY6ICogcWNvbV93Y25zc19vcGVuX2NoYW5uZWwoKSAtIG9wZW4gYWRkaXRpb25hbCBTTUQgY2hhbm5lbCB0byBXQ05TU1xuZHJpdmVycy9zb2MvcWNvbS93Y25zc19jdHJsLmMtMjc3LSAqIEB3Y25zczpcdHdjbnNzIGhhbmRsZSwgcmV0cmlldmVkIGZyb20gZHJ2ZGF0YVxuLS1cbmRyaXZlcnMvc29jL3Fjb20vd2Nuc3NfY3RybC5jLTI4MS0gKi9cbmRyaXZlcnMvc29jL3Fjb20vd2Nuc3NfY3RybC5jOjI4MjpzdHJ1Y3QgcnBtc2dfZW5kcG9pbnQgKnFjb21fd2Nuc3Nfb3Blbl9jaGFubmVsKHZvaWQgKndjbnNzLCBjb25zdCBjaGFyICpuYW1lLCBycG1zZ19yeF9jYl90IGNiLCB2b2lkICpwcml2KVxuZHJpdmVycy9zb2MvcWNvbS93Y25zc19jdHJsLmMtMjgzLXtcbi0tXG5kcml2ZXJzL3NvYy9xY29tL3djbnNzX2N0cmwuYy0yOTItfVxuZHJpdmVycy9zb2MvcWNvbS93Y25zc19jdHJsLmM6MjkzOkVYUE9SVF9TWU1CT0xfR1BMKHFjb21fd2Nuc3Nfb3Blbl9jaGFubmVsKTtcbmRyaXZlcnMvc29jL3Fjb20vd2Nuc3NfY3RybC5jLTI5NC1cbi0tXG5pbmNsdWRlL2xpbnV4L3NvYy9xY29tL3djbnNzX2N0cmwuaC04LVxuaW5jbHVkZS9saW51eC9zb2MvcWNvbS93Y25zc19jdHJsLmg6OTpzdHJ1Y3QgcnBtc2dfZW5kcG9pbnQgKnFjb21fd2Nuc3Nfb3Blbl9jaGFubmVsKHZvaWQgKndjbnNzLCBjb25zdCBjaGFyICpuYW1lLFxuaW5jbHVkZS9saW51eC9zb2MvcWNvbS93Y25zc19jdHJsLmgtMTAtXHRcdFx0XHRcdCAgICAgICBycG1zZ19yeF9jYl90IGNiLCB2b2lkICpwcml2KTtcbi0tXG5pbmNsdWRlL2xpbnV4L3NvYy9xY29tL3djbnNzX2N0cmwuaC0xMy1cbmluY2x1ZGUvbGludXgvc29jL3Fjb20vd2Nuc3NfY3RybC5oOjE0OnN0YXRpYyBzdHJ1Y3QgcnBtc2dfZW5kcG9pbnQgKnFjb21fd2Nuc3Nfb3Blbl9jaGFubmVsKHZvaWQgKndjbnNzLFxuaW5jbHVkZS9saW51eC9zb2MvcWNvbS93Y25zc19jdHJsLmgtMTUtXHRcdFx0XHRcdFx0ICAgICAgY29uc3QgY2hhciAqbmFtZSxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMTg6NTQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzI1NgoJCQkJCQkJb3V0cHV0OiA0MgoJCQkJCQkJdGhvdWdodHM6IDIyNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipSUE1TRyBDaGFubmVsIEZ1enppbmcgaW4gUUVNVTogQSBQYXRoIEZvcndhcmQ/KioKCk9rYXksIHNvIEkmIzM5O20gdGhpbmtpbmcgYWJvdXQgaG93IHRvIHBvdGVudGlhbGx5IGZ1enogYW4gcnBtc2cgY2hhbm5lbC4gSXQgc3RhcnRzIHdpdGggZXN0YWJsaXNoaW5nIHRoaXMgY29tbXVuaWNhdGlvbiBjaGFubmVsLCByaWdodD8gUlBNU0cgaXMgdGhpcyBmcmFtZXdvcmsgZm9yIHJlbW90ZSBwcm9jZXNzb3IgbWVzc2FnaW5nLCBhbmQgbXkgaW1tZWRpYXRlIHF1ZXN0aW9uIGlzOiBjYW4gd2UgYWN0dWFsbHkgZnV6eiB0aGVzZSBjaGFubmVscyB3aXRoaW4gYSBRRU1VIGVudmlyb25tZW50PyBJIGtub3cgU3l6a2FsbGVyIGhhcyBzb21lIGV4aXN0aW5nIHN1cHBvcnQsIG9yIGF0IGxlYXN0IHRoZSBwb3RlbnRpYWwgdG8gaW5qZWN0IG1lc3NhZ2VzLCBpZiB0aGVyZSYjMzk7cyBhIHByYWN0aWNhbCB3YXkgdG8gZ2V0IHRoaW5ncyBnb2luZy4KClNwZWNpZmljYWxseSwgSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgYHdjbjM2eHhgIHRoaW5nOyBpdCBhcHBlYXJzIHRvIGJlIGEgcGxhdGZvcm0gZGV2aWNlLiBJZiBJIGNhbiBzb21laG93IHJlYWNoIHRoZSBgd2NuMzZ4eF9zbWRfcnNwX3Byb2Nlc3NgIGZ1bmN0aW9uLCB0aGF0JiMzOTtzIHdoYXQgSSB3YW50LiBUaGUgaWRlYSBpcyB0aGF0IGlmIFN5emthbGxlciBjYW4gaW5zdGFudGlhdGUgYSBgd2NuMzZ4eGAgcGxhdGZvcm0gZGV2aWNlLCB0aGF0IHdvdWxkIHRyaWdnZXIgYSBjYWxsIHRvIGB3Y24zNnh4X3Byb2JlYC4gQnV0IGB3Y24zNnh4X3Byb2JlYCBzZWVtcyB0byBjYWxsIGBxY29tX3djbnNzX29wZW5fY2hhbm5lbGAsIHRha2luZyBhIGB3Y25zc2AgcGFyYW1ldGVyLgoKTm93LCBoZXJlJiMzOTtzIHdoZXJlIGl0IGdldHMgaW50ZXJlc3Rpbmc6IHRoZSBgd2Nuc3NgIHZhbHVlIGFwcGVhcnMgdG8gYmUgZmV0Y2hlZCB1c2luZyBgZGV2X2dldF9kcnZkYXRhKHBkZXYtJmd0O2Rldi5wYXJlbnQpYC4gVGhlIHByb2JsZW0gaXMgdGhhdCBpZiBgcGRldi0mZ3Q7ZGV2LnBhcmVudGAgaXMgTlVMTCBvciBkb2VzbiYjMzk7dCBoYXZlIGFueSBkcml2ZXIgZGF0YSBhc3NvY2lhdGVkIHdpdGggaXQsIHRoZW4gYHdjbnNzYCBpcyBnb2luZyB0byBiZSBOVUxMLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGF0IGBxY29tX3djbnNzX29wZW5fY2hhbm5lbGAgZnVuY3Rpb24sIGxldCYjMzk7cyBzZWUgaG93IHRoYXQgYmVoYXZlcyBpZiBgd2Nuc3NgIGlzIG51bGwuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDE4OjU0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9zb2MvcWNvbS93Y25zc19jdHJsLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAyNzUsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDI3NTpcdC8qKlxuIDI3NjpcdCAqIHFjb21fd2Nuc3Nfb3Blbl9jaGFubmVsKCkgLSBvcGVuIGFkZGl0aW9uYWwgU01EIGNoYW5uZWwgdG8gV0NOU1NcbiAyNzc6XHQgKiBAd2Nuc3M6XHR3Y25zcyBoYW5kbGUsIHJldHJpZXZlZCBmcm9tIGRydmRhdGFcbiAyNzg6XHQgKiBAbmFtZTpcdFNNRCBjaGFubmVsIG5hbWVcbiAyNzk6XHQgKiBAY2I6XHRcdGNhbGxiYWNrIHRvIGhhbmRsZSBpbmNvbWluZyBkYXRhIG9uIHRoZSBjaGFubmVsXG4gMjgwOlx0ICogQHByaXY6XHRwcml2YXRlIGRhdGEgZm9yIHVzZSBpbiB0aGUgY2FsbC1iYWNrXG4gMjgxOlx0ICovXG4gMjgyOlx0c3RydWN0IHJwbXNnX2VuZHBvaW50ICpxY29tX3djbnNzX29wZW5fY2hhbm5lbCh2b2lkICp3Y25zcywgY29uc3QgY2hhciAqbmFtZSwgcnBtc2dfcnhfY2JfdCBjYiwgdm9pZCAqcHJpdilcbiAyODM6XHR7XG4gMjg0Olx0XHRzdHJ1Y3QgcnBtc2dfY2hhbm5lbF9pbmZvIGNoaW5mbztcbiAyODU6XHRcdHN0cnVjdCB3Y25zc19jdHJsICpfd2Nuc3MgPSB3Y25zcztcbiAyODY6XHRcbiAyODc6XHRcdHN0cnNjcHkoY2hpbmZvLm5hbWUsIG5hbWUsIHNpemVvZihjaGluZm8ubmFtZSkpO1xuIDI4ODpcdFx0Y2hpbmZvLnNyYyA9IFJQTVNHX0FERFJfQU5ZO1xuIDI4OTpcdFx0Y2hpbmZvLmRzdCA9IFJQTVNHX0FERFJfQU5ZO1xuIDI5MDpcdFxuIDI5MTpcdFx0cmV0dXJuIHJwbXNnX2NyZWF0ZV9lcHQoX3djbnNzLVx1MDAzZWNoYW5uZWwtXHUwMDNlcnBkZXYsIGNiLCBwcml2LCBjaGluZm8pO1xuIDI5MjpcdH1cbiAyOTM6XHRFWFBPUlRfU1lNQk9MX0dQTChxY29tX3djbnNzX29wZW5fY2hhbm5lbCk7XG4gMjk0Olx0XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDE4OjU0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDgyNDkKCQkJCQkJCW91dHB1dDogNzcKCQkJCQkJCXRob3VnaHRzOiA3NgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBQb3RlbnRpYWwgQ3Jhc2ggaW4gdGhlIFdDTjM2eHggRHJpdmVyKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIGNvZGUgYW5kIGltbWVkaWF0ZWx5IHNlZSBhIHBvdGVudGlhbCBpc3N1ZS4gSWYgdGhlIGBfd2Nuc3NgIHBvaW50ZXIgaXMgTlVMTCwgdHJ5aW5nIHRvIGFjY2VzcyBgX3djbnNzLSZndDtjaGFubmVsYCBpcyBkZWZpbml0ZWx5IGdvaW5nIHRvIGNyYXNoIHRoZSBzeXN0ZW0uIFRoYXQmIzM5O3MgYSBjbGFzc2ljIG51bGwgcG9pbnRlciBkZXJlZmVyZW5jZSwgYW5kIHdlIG5lZWQgdG8gYmUgcmVhbGx5IGNhcmVmdWwgYWJvdXQgdGhhdC4gVGhpcyBzdWdnZXN0cyBhIGNyaXRpY2FsIGRlcGVuZGVuY3k6IHRoZSBgd2NuMzZ4eGAgZHJpdmVyICpuZWVkcyogYSBwYXJlbnQgZGV2aWNlLCBzcGVjaWZpY2FsbHkgYSBgd2Nuc3NfY3RybGAgZGV2aWNlLCB0byBmdW5jdGlvbiBwcm9wZXJseS4KClRoZSByZWFsIHF1ZXN0aW9uIG5vdyBpcywgY2FuIHN5emthbGxlciwgb3VyIGZ1enplciwgc2V0IHVwIHRoYXQgcHJlcmVxdWlzaXRlPyBJZiBzeXprYWxsZXIgY2FuJiMzOTt0IGNyZWF0ZSB0aGUgbmVjZXNzYXJ5IGB3Y25zc19jdHJsYCBkZXZpY2UsIHRoZW4gd2UgYXJlIHZlcnkgdW5saWtlbHkgdG8gdHJpZ2dlciB0aGUgdnVsbmVyYWJsZSBjb2RlLCBvciBhdCBsZWFzdCB0aGUgY3Jhc2guIE15IG5leHQgc3RlcCB3aWxsIGJlIHRvIGRpdmUgaW50byBgd2Nuc3NfY3RybC5jYC4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgdGhlIGRldmljZSBjcmVhdGlvbiBwcm9jZXNzIG9mIGEgYHdjbnNzX2N0cmxgIGRldmljZSBhbmQgaG93IHN5emthbGxlciBpcyBpbnRlcmFjdGluZyB3aXRoIGl0LCBvciBmYWlsaW5nIHRvLiBUaGF0JiMzOTtzIHRoZSBrZXkgdG8gdW5kZXJzdGFuZGluZyBpZiB0aGlzIGlzIGEgcmVhbCB2dWxuZXJhYmlsaXR5IHRoYXQgY2FuIGJlIGV4cGxvaXRlZCwgb3IgaWYgb3VyIGZ1enplciBpcyBqdXN0IG5vdCBzZXQgdXAgdG8gcmVhY2ggaXQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDE4OjU0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bW9kdWxlX3BsYXRmb3JtX2RyaXZlciYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvc29jL3Fjb20vd2Nuc3NfY3RybC5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMTg6NTQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cnBtc2dfZHJpdmVyJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9zb2MvcWNvbS93Y25zc19jdHJsLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9zb2MvcWNvbS93Y25zc19jdHJsLmM9MzUzPU1PRFVMRV9ERVZJQ0VfVEFCTEUob2YsIHdjbnNzX2N0cmxfb2ZfbWF0Y2gpO1xuZHJpdmVycy9zb2MvcWNvbS93Y25zc19jdHJsLmMtMzU0LVxuZHJpdmVycy9zb2MvcWNvbS93Y25zc19jdHJsLmM6MzU1OnN0YXRpYyBzdHJ1Y3QgcnBtc2dfZHJpdmVyIHdjbnNzX2N0cmxfZHJpdmVyID0ge1xuZHJpdmVycy9zb2MvcWNvbS93Y25zc19jdHJsLmMtMzU2LVx0LnByb2JlID0gd2Nuc3NfY3RybF9wcm9iZSxcbi0tXG5kcml2ZXJzL3NvYy9xY29tL3djbnNzX2N0cmwuYy0zNjQtXG5kcml2ZXJzL3NvYy9xY29tL3djbnNzX2N0cmwuYzozNjU6bW9kdWxlX3JwbXNnX2RyaXZlcih3Y25zc19jdHJsX2RyaXZlcik7XG5kcml2ZXJzL3NvYy9xY29tL3djbnNzX2N0cmwuYy0zNjYtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDE4OjU0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDg4OTAKCQkJCQkJCW91dHB1dDogNDcKCQkJCQkJCXRob3VnaHRzOiA2MDYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqUmVhY2hpbmcgdGhlIGB3Y25zc19jdHJsYCBEcml2ZXIgd2l0aCBTeXprYWxsZXIqKgoKT2theSwgc28gYHdjbnNzX2N0cmxgIGlzIGFuIGBycG1zZ19kcml2ZXJgLiBUaGF0IG1lYW5zIGl0IG5lZWRzIGFuIHJwbXNnIGRldmljZSB0byBiZSBwcm9iZWQuIFRoZSBxdWVzdGlvbiBpcywgY2FuIFN5emthbGxlciBjcmVhdGUgb25lPyBJIHdhcyB0aGlua2luZyBhYm91dCBgc3l6X3JwbXNnX2NyZWF0ZV9lcHRgIG9yIHNvbWV0aGluZyBzaW1pbGFyLCBidXQgdGhhdCBkb2VzbiYjMzk7dCBleGlzdCwgYW5kIEkgc3RhcnRlZCBjb25zaWRlcmluZyBgc3l6X21hYzgwMjExX2h3c2ltYCBvciBldmVuIGBzeXpfZGV2X3BsYXRmb3JtX2FkZGAuCgpIYW5nIG9uLCB0aGlzIGJ1ZyB3YXMgYWN0dWFsbHkgZm91bmQgYnkgc3l6Ym90LCBhbmQgdGhlIGF1dGhvciBvZiB0aGUgcGF0Y2ggaXMgbGlzdGVkIGFzIGBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7YC4gVGhhdCYjMzk7cyBhIGh1Z2UgY2x1ZSEgSXQgbWVhbnMgdGhpcyBjb2RlIGlzICpyZWFjaGFibGUqIHdpdGhpbiBTeXprYWxsZXImIzM5O3MgUUVNVSBlbnZpcm9ubWVudC4gSXQgd2FzIGFscmVhZHkgZm91bmQuIEkgd2FzIHRoaW5raW5nIHRoYXQgSSYjMzk7ZCBuZWVkIHRvIGV4cGxpY2l0bHkgY3JhZnQgc29tZXRoaW5nIHRvIGNyZWF0ZSB0aGUgbmVjZXNzYXJ5IHJwbXNnIGRldmljZSwgYnV0IHN5emJvdCBoYXMgYWxyZWFkeSBkb25lIHRoYXQgd29yay4KClRoZSBjb21taXQgbWVzc2FnZSBzYXlzICYjMzQ7YXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcsJiMzNDsgc28gaXQgaGFzIHRvIGJlIHJlYWNoYWJsZS4gTm93LCBob3cgKmRpZCogU3l6a2FsbGVyIGdldCB0aGVyZT8gSSB3YXMgY29uc2lkZXJpbmcgYG1hYzgwMjExX2h3c2ltYCBhcyBhIGdlbmVyYWwgcGF0aCwgb3IgbWF5YmUgc29tZSBkaXJlY3QgcGxhdGZvcm0gZGV2aWNlIGFkZGl0aW9uLCBidXQgdGhlbiBJIHJlbWVtYmVyIHRoYXQgYHdjbnNzX2N0cmxgIGlzIGEgcnBtc2cgZHJpdmVyLiBUaGVuLCBpdCBoaXRzIG1lLiBFaXRoZXIgYHZoY2lgIG9yIGBtYWM4MDIxMV9od3NpbWAgb3IgYHZpcnRpb19ycG1zZ19idXNgIGlzIHVzZWQuCgpJZiBgdmlydGlvX3JwbXNnX2J1c2AgaXMgaW4gcGxheSwgU3l6a2FsbGVyIGNvdWxkIGJlIGluamVjdGluZyB2aXJ0aW8gZGV2aWNlcywgcHJvYmFibHkgdXNpbmcgc29tZXRoaW5nIGxpa2UgYC9kZXYvdmhvc3QtbmV0YCBvciBtYXliZSBhIGN1c3RvbSBgc3l6X3ZpcnRpb2Agc3lzY2FsbCDigJMgbm8sIG5vdCBgc3l6X3ZpcnRpb2AsIEkgd2FzIHRoaW5raW5nIG1vcmUgYWJvdXQgc29tZXRoaW5nIGxpa2UgYHN5el9nZW5ldGxpbmtfZ2V0X2ZhbWlseWAsIGJ1dCBubywgdGhhdCYjMzk7cyBub3QgaXQuIE9yIGV2ZW4sIGBzeXpfa3ZtX3NldHVwX2NwdWAgb3Igb3RoZXIgS1ZNIGNhbGxzLCBuby4gU3l6a2FsbGVyIGZ1enplZCB2aXJ0aW8gZGV2aWNlcyB3aXRoIGAvZGV2L3Zob3N0LXZzb2NrYD8KCkFueXdheSwgdGhlIGltcG9ydGFudCBwb2ludCBpcyB0aGF0IHN5emJvdCAqZm91bmQqIHRoaXMsIHNvIGl0ICppcyogcmVhY2hhYmxlLiBJdCYjMzk7cyBzYWZlIHRvIGFzc3VtZSBTeXprYWxsZXIgaXMgZG9pbmcgc29tZXRoaW5nIHRvIGluc3RhbnRpYXRlIGFuIHJwbXNnIGRldmljZS4gSSBqdXN0IG5lZWQgdG8gZmlndXJlIG91dCB3aGF0IHRoYXQgJiMzNDtzb21ldGhpbmcmIzM0OyBpcywgYnV0IHRoYXQgaXMgbm90IHRoZSBpc3N1ZSwgaXQgaXMgcmVhY2hhYmxlLgoKTm93LCBsZXQgbWUganVzdCBkb3VibGUtY2hlY2sgdGhhdCBgd2NuMzZ4eF9zbWRfcnNwX3Byb2Nlc3NgIGlzIGluZGVlZCB0aGUgZnVuY3Rpb24gYmVpbmcgcGF0Y2hlZC4gQWgsIHllcywgdGhlIHBhdGNoICpkb2VzKiBhZGQgYSBsZW5ndGggY2hlY2sgaW4gYHdjbjM2eHhfc21kX3JzcF9wcm9jZXNzYC4gU2luY2Ugc3l6Ym90IGZvdW5kIGl0LCBpdCYjMzk7cyBkZWZpbml0ZWx5IHJlYWNoYWJsZS4KClRpbWUgdG8gbG9vayBpbnRvIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiBgd2NuMzZ4eF9zbWRfcnNwX3Byb2Nlc3NgIGl0c2VsZi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMTg6NTQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9zbWQuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDMyNDgsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMzAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7MzI0ODpcdGludCB3Y24zNnh4X3NtZF9yc3BfcHJvY2VzcyhzdHJ1Y3QgcnBtc2dfZGV2aWNlICpycGRldixcbjMyNDk6XHRcdFx0XHQgICAgdm9pZCAqYnVmLCBpbnQgbGVuLCB2b2lkICpwcml2LCB1MzIgYWRkcilcbjMyNTA6XHR7XG4zMjUxOlx0XHRjb25zdCBzdHJ1Y3Qgd2NuMzZ4eF9oYWxfbXNnX2hlYWRlciAqbXNnX2hlYWRlciA9IGJ1ZjtcbjMyNTI6XHRcdHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3ID0gcHJpdjtcbjMyNTM6XHRcdHN0cnVjdCB3Y24zNnh4ICp3Y24gPSBody1cdTAwM2Vwcml2O1xuMzI1NDpcdFx0c3RydWN0IHdjbjM2eHhfaGFsX2luZF9tc2cgKm1zZ19pbmQ7XG4zMjU1Olx0XHR3Y24zNnh4X2RiZ19kdW1wKFdDTjM2WFhfREJHX1NNRF9EVU1QLCBcJiMzNDtTTUQgXHUwMDNjXHUwMDNjXHUwMDNjIFwmIzM0OywgYnVmLCBsZW4pO1xuMzI1NjpcdFxuMzI1NzpcdFx0aWYgKGxlbiBcdTAwM2Mgc2l6ZW9mKCptc2dfaGVhZGVyKSkge1xuMzI1ODpcdFx0XHR3Y24zNnh4X3dhcm4oXCYjMzQ7Q29ycnVwdGVkIEhBTCBtZXNzYWdlOiBsZW5ndGggJWRcXG5cJiMzNDssIGxlbik7XG4zMjU5Olx0XHRcdHJldHVybiAwO1xuMzI2MDpcdFx0fVxuMzI2MTpcdFxuMzI2MjpcdFx0c3dpdGNoIChtc2dfaGVhZGVyLVx1MDAzZW1zZ190eXBlKSB7XG4zMjYzOlx0XHRjYXNlIFdDTjM2WFhfSEFMX1NUQVJUX1JTUDpcbjMyNjQ6XHRcdGNhc2UgV0NOMzZYWF9IQUxfQ09ORklHX1NUQV9SU1A6XG4zMjY1Olx0XHRjYXNlIFdDTjM2WFhfSEFMX0NPTkZJR19CU1NfUlNQOlxuMzI2NjpcdFx0Y2FzZSBXQ04zNlhYX0hBTF9BRERfU1RBX1NFTEZfUlNQOlxuMzI2NzpcdFx0Y2FzZSBXQ04zNlhYX0hBTF9TVE9QX1JTUDpcbjMyNjg6XHRcdGNhc2UgV0NOMzZYWF9IQUxfREVMX1NUQV9TRUxGX1JTUDpcbjMyNjk6XHRcdGNhc2UgV0NOMzZYWF9IQUxfREVMRVRFX1NUQV9SU1A6XG4zMjcwOlx0XHRjYXNlIFdDTjM2WFhfSEFMX0lOSVRfU0NBTl9SU1A6XG4zMjcxOlx0XHRjYXNlIFdDTjM2WFhfSEFMX1NUQVJUX1NDQU5fUlNQOlxuMzI3MjpcdFx0Y2FzZSBXQ04zNlhYX0hBTF9FTkRfU0NBTl9SU1A6XG4zMjczOlx0XHRjYXNlIFdDTjM2WFhfSEFMX0ZJTklTSF9TQ0FOX1JTUDpcbjMyNzQ6XHRcdGNhc2UgV0NOMzZYWF9IQUxfRE9XTkxPQURfTlZfUlNQOlxuMzI3NTpcdFx0Y2FzZSBXQ04zNlhYX0hBTF9ERUxFVEVfQlNTX1JTUDpcbjMyNzY6XHRcdGNhc2UgV0NOMzZYWF9IQUxfU0VORF9CRUFDT05fUlNQOlxuMzI3NzpcdFx0Y2FzZSBXQ04zNlhYX0hBTF9TRVRfTElOS19TVF9SU1A6XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDE4OjU0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEwODE5CgkJCQkJCQlvdXRwdXQ6IDI4CgkJCQkJCQl0aG91Z2h0czogNDIxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIFBvdGVudGlhbCBTeXpib3QtRGV0ZWN0ZWQgQnVnIEZpeCoqCgpPa2F5LCBzbyB0aGlzIHBhdGNoIGludHJvZHVjZXMgYSBsZW5ndGggY2hlY2ssIHNwZWNpZmljYWxseTogYGlmIChsZW4gJmx0OyBzaXplb2YoKm1zZ19oZWFkZXIpKWAuIEhtbSwgdGhpcyBsb29rcyBsaWtlIGEgc3RyYWlnaHRmb3J3YXJkIGZpeCBmb3IgYW4gb3V0LW9mLWJvdW5kcyByZWFkIHZ1bG5lcmFiaWxpdHkgb24gYG1zZ19oZWFkZXItJmd0O21zZ190eXBlYC4gU2luY2UgaXQmIzM5O3MgYSBkcml2ZXIgY2hhbmdlIGFuZCBzeXpib3QgZm91bmQgaXQsIGl0JiMzOTtzIHByZXR0eSBsaWtlbHkgdGhlIGJ1ZyBpcyByZWFjaGFibGUuIFdhaXQsIGhvdyBkbyBJIGtub3cgaXQmIzM5O3MgYSBzeXpib3QgcGF0Y2g/IEFoLCByaWdodCwgdGhlIGNvbW1pdCBtZXNzYWdlOiBgQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7YC4gQ2xlYXIuCgpCdXQgd2FpdCwgSSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGlzIGlzbiYjMzk7dCBpbiBhIGRyaXZlciB0aGF0IHJlcXVpcmVzIHNwZWNpYWwgaGFyZHdhcmUgdGhhdCBzeXprYWxsZXIgY2FuJiMzOTt0IGVtdWxhdGUuIFRoZSBwcm9tcHQgcmVtaW5kZWQgbWUgdG8gY2hlY2sgaWYgdGhlIGRyaXZlciBpcyBhIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVLiBUaGUgZHJpdmVyIGlzIGB3Y24zNnh4YC4gSXMgdGhpcyBhIFBDSWUgZHJpdmVyPyBMZXQmIzM5O3MgY2hlY2sgdGhlIEtjb25maWcgZmlsZSBmb3IgdGhlIGRyaXZlci4KCk9rYXksIGNoZWNraW5nIGBkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9LY29uZmlnYCBhZ2Fpbi4gSXQgZGVwZW5kcyBvbiBgUUNPTV9XQ05TU19DVFJMYCBhbmQgYFJQTVNHYC4gSSByZWNhbGwgYFFDT01fV0NOU1NfQ1RSTGAgaXMgYW4gcnBtc2cgZHJpdmVyLiBSaWdodCwgcnBtc2cgaXMgYSBtZXNzYWdpbmcgYnVzLiBJIHRoaW5rIEkmIzM5O3ZlIHNlZW4gcnBtc2cgZW11bGF0ZWQgdmlhIHZpcnRpbyBpbiBRRU1VICh2aXJ0aW8tcnBtc2cpLiBEb2VzIFFFTVUgaGF2ZSB2aXJ0aW8tcnBtc2c/IE9yIGRvZXMgc3l6a2FsbGVyIGluamVjdCBycG1zZyBtZXNzYWdlcyBzb21laG93PyBJIHNob3VsZCBjaGVjay4KCkFjdHVhbGx5LCBJIGtub3cgc3l6a2FsbGVyIGhhcyBgc3l6X21hYzgwMjExX2h3c2ltYCB3aGljaCBpcyBmb3IgbWFjODAyMTEuIFdhaXQsIGRvZXMgc3l6a2FsbGVyIGhhdmUgc29tZXRoaW5nIHNpbWlsYXIgZm9yIHJwbXNnPyBEb2VzIGl0IGhhdmUgYSBwc2V1ZG8tc3lzY2FsbCBzcGVjaWZpY2FsbHkgZm9yIHJwbXNnPyBJIHNob3VsZCBjaGVjayBpZiBzeXprYWxsZXIgaGFzIGFueSBycG1zZyBkZXNjcmlwdGlvbnMgaW4gaXRzIHNvdXJjZSBjb2RlLiBJIG5lZWQgdG8gYmUgc3VyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMTg6NTQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtzeXpfJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9ycG1zZy8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNiAxODo1NDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMTY5MQoJCQkJCQkJb3V0cHV0OiAzOQoJCQkJCQkJdGhvdWdodHM6IDIyNwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIEZlYXNpYmlsaXR5IG9mIFRhcmdldGluZyBgd2NuMzZ4eGAgd2l0aCBTeXprYWxsZXIqKgoKT2theSwgc28gSSBjYW4mIzM5O3QganVzdCBwbHVnIGEga2V5d29yZCBsaWtlICYjMzQ7c3l6a2FsbGVyJiMzNDsgaW50byBhIHNlYXJjaCBhbmQgZXhwZWN0IHRvIHB1bGwgdXAgcmVsZXZhbnQgZGVzY3JpcHRpb25zLiBJIG5lZWQgdG8gYmUgbW9yZSBzdHJhdGVnaWMuIE15IGluaXRpYWwgdGhvdWdodCB3YXMgdG8gc2VlIGlmIHRoZXJlIHdlcmUgYW55IHBzZXVkby1zeXNjYWxscyBkaXJlY3RseSBidWlsdCBpbnRvIHRoZSBrZXJuZWwsIGJ1dCBubywgdGhvc2UgYXJlIG5vdCBwcmVzZW50LgoKTm93LCB0aGUgcmVhbCBxdWVzdGlvbiBpcywgY2FuIEkgZXZlbiBnZXQgYHdjbjM2eHhgIHJ1bm5pbmcgaW4gYSBRRU1VIGVudmlyb25tZW50LCBhbmQgaWYgc28gaG93PyBMZXQmIzM5O3MgY2hlY2s6IGlzIGB3Y24zNnh4YCBhIHBsYXRmb3JtIGRyaXZlcj8gWWVzLCBpdCBpcy4gUmlnaHQsIHNvIEkgaGF2ZSB0byB0aGluayBhYm91dCBob3cgc3l6a2FsbGVyIGNhbiBpbnRlcmZhY2UuIFJlbWVtYmVyIGBzeXpfZGV2X3BsYXRmb3JtX2FkZGAgZXhpc3RzLCB3aGljaCBjYW4gYWRkIHBsYXRmb3JtIGRldmljZXMuCgpIZXJlJiMzOTtzIHRoZSBwcm9ibGVtOiBgd2NuMzZ4eGAmIzM5O3MgcHJvYmUgZnVuY3Rpb24gc2VlbXMgdG8gYmUgZGVwZW5kZW50IG9uIGB3Y25zc2AgZHJpdmVyIGRhdGEgcmV0cmlldmVkIHRocm91Z2ggYGRldl9nZXRfZHJ2ZGF0YShwZGV2LSZndDtkZXYucGFyZW50KWAuIElmIEkgdXNlIGBzeXpfZGV2X3BsYXRmb3JtX2FkZGAgdG8gYWRkIGB3Y24zNnh4YCwgaXRzIHBhcmVudCBkZXZpY2UgbWF5IG5vdCBoYXZlIHRoZSBuZWNlc3NhcnkgYHdjbnNzYCBkcml2ZXIgZGF0YS4gVGhhdCBjb3VsZCBsZWFkIHRvIGEgY3Jhc2gsIG9yIGF0IGxlYXN0IGEgZmFpbGVkIHByb2JlLgoKSGFuZyBvbi4uLiBpc24mIzM5O3QgYHdjbjM2eHhgIGFjdHVhbGx5IHByb2JlZCBieSBgd2Nuc3NfY3RybGA/IEkgYmV0dGVyIGNoZWNrIHRoYXQuIExldCYjMzk7cyBkaWcgaW50byBgZHJpdmVycy9zb2MvcWNvbS93Y25zc19jdHJsLmNgLiBUaGF0IHNob3VsZCBnaXZlIG1lIHRoZSBhbnN3ZXIuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDE4OjU0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7d2NuMzZ4eCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvc29jL3Fjb20vd2Nuc3NfY3RybC5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMTg6NTQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjFtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTIzMDEKCQkJCQkJCW91dHB1dDogNDIKCQkJCQkJCXRob3VnaHRzOiAyOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIEkgd2VyZSBjb25zaWRlcmluZyB0aGlzIGNvZGU6CgoqKkRpZ2dpbmcgaW50byB0aGUgYHdjbjM2eHhgIERyaXZlciBJbnN0YW50aWF0aW9uKioKCk9rYXksIGhvbGQgb24gYSBzZWNvbmQuLi4gaG93ICpleGFjdGx5KiBpcyB0aGlzIGB3Y24zNnh4YCBkcml2ZXIgZ2V0dGluZyBpbml0aWFsaXplZD8gSSBuZWVkIHRvIHJlZnJlc2ggbXkgbWVtb3J5IG9uIHRoZSBpbnN0YW50aWF0aW9uIGZsb3cuIExldCYjMzk7cyBzZWUuLi4gdGhlIG1vc3QgbG9naWNhbCBwbGFjZSB0byBzdGFydCB0cmFjaW5nIGlzIHRoZSBgd2NuMzZ4eF9wcm9iZWAgZnVuY3Rpb24uIEkgc2hvdWxkIHJldmlldyB0aGF0IHJvdXRpbmUgY2FyZWZ1bGx5LCBsb29raW5nIGZvciBjbHVlcyBhYm91dCB0aGUgZGV2aWNlJiMzOTtzIGF0dGFjaG1lbnQgdG8gdGhlIHN5c3RlbSBhbmQgdGhlIG92ZXJhbGwgaW5pdGlhbGl6YXRpb24gc2VxdWVuY2UuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDE4OjU1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3djbjM2eHgmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7XG5GdWxsIG91dHB1dCBpcyB0b28gbG9uZywgc2hvd2luZyA1MDAgb3V0IG9mIDg1MyBsaW5lcy5cblVzZSBtb3JlIHByZWNpc2UgZXhwcmVzc2lvbiBpZiBwb3NzaWJsZS5cblxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTI3LSNpbmNsdWRlIFx1MDAzY25ldC9pcHY2LmhcdTAwM2VcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYzoyODojaW5jbHVkZSBcJiMzNDt3Y24zNnh4LmhcJiMzNDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYy0yOS0jaW5jbHVkZSBcJiMzNDt0ZXN0bW9kZS5oXCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTMxLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jOjMyOnVuc2lnbmVkIGludCB3Y24zNnh4X2RiZ19tYXNrO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jOjMzOm1vZHVsZV9wYXJhbV9uYW1lZChkZWJ1Z19tYXNrLCB3Y24zNnh4X2RiZ19tYXNrLCB1aW50LCAwNjQ0KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYy0zNC1NT0RVTEVfUEFSTV9ERVNDKGRlYnVnX21hc2ssIFwmIzM0O0RlYnVnZ2luZyBtYXNrXCYjMzQ7KTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmM9MTg3PXN0YXRpYyBpbmxpbmUgdTggZ2V0X3N0YV9pbmRleChzdHJ1Y3QgaWVlZTgwMjExX3ZpZiAqdmlmLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jOjE4ODpcdFx0XHQgICAgICAgc3RydWN0IHdjbjM2eHhfc3RhICpzdGFfcHJpdilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYy0xODkte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYy0xOTQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmM6MTk1OnN0YXRpYyB2b2lkIHdjbjM2eHhfZmVhdF9jYXBzX2luZm8oc3RydWN0IHdjbjM2eHggKndjbilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYy0xOTYte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYy0xOTktXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBNQVhfRkVBVFVSRV9TVVBQT1JURUQ7IGkmIzQzOyYjNDM7KSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmM6MjAwOlx0XHRpZiAod2NuMzZ4eF9maXJtd2FyZV9nZXRfZmVhdF9jYXBzKHdjbi1cdTAwM2Vmd19mZWF0X2NhcHMsIGkpKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmM6MjAxOlx0XHRcdHdjbjM2eHhfZGJnKFdDTjM2WFhfREJHX01BQywgXCYjMzQ7RlcgQ2FwICVzXFxuXCYjMzQ7LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jOjIwMjpcdFx0XHRcdCAgICB3Y24zNnh4X2Zpcm13YXJlX2dldF9jYXBfbmFtZShpKSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmMtMjAzLVx0XHR9XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTIwNi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYzoyMDc6c3RhdGljIGludCB3Y24zNnh4X3N0YXJ0KHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTIwOC17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmM6MjA5Olx0c3RydWN0IHdjbjM2eHggKndjbiA9IGh3LVx1MDAzZXByaXY7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmMtMjEwLVx0aW50IHJldDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYy0yMTEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmM6MjEyOlx0d2NuMzZ4eF9kYmcoV0NOMzZYWF9EQkdfTUFDLCBcJiMzNDttYWMgc3RhcnRcXG5cJiMzNDspO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTIxMy1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYy0yMTQtXHQvKiBTTUQgaW5pdGlhbGl6YXRpb24gKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYzoyMTU6XHRyZXQgPSB3Y24zNnh4X3NtZF9vcGVuKHdjbik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmMtMjE2LVx0aWYgKHJldCkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jOjIxNzpcdFx0d2NuMzZ4eF9lcnIoXCYjMzQ7RmFpbGVkIHRvIG9wZW4gc21kIGNoYW5uZWw6ICVkXFxuXCYjMzQ7LCByZXQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTIxOC1cdFx0Z290byBvdXRfZXJyO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYy0yMjEtXHQvKiBBbGxvY2F0ZSBtZW1vcnkgcG9vbHMgZm9yIE1nbXQgQkQgaGVhZGVycyBhbmQgRGF0YSBCRCBoZWFkZXJzICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmM6MjIyOlx0cmV0ID0gd2NuMzZ4eF9keGVfYWxsb2NhdGVfbWVtX3Bvb2xzKHdjbik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmMtMjIzLVx0aWYgKHJldCkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jOjIyNDpcdFx0d2NuMzZ4eF9lcnIoXCYjMzQ7RmFpbGVkIHRvIGFsbG9jIERYRSBtZW1wb29sOiAlZFxcblwmIzM0OywgcmV0KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYy0yMjUtXHRcdGdvdG8gb3V0X3NtZF9jbG9zZTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmMtMjI3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jOjIyODpcdHJldCA9IHdjbjM2eHhfZHhlX2FsbG9jX2N0bF9ibGtzKHdjbik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmMtMjI5LVx0aWYgKHJldCkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jOjIzMDpcdFx0d2NuMzZ4eF9lcnIoXCYjMzQ7RmFpbGVkIHRvIGFsbG9jIERYRSBjdGwgYmxvY2tzOiAlZFxcblwmIzM0OywgcmV0KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYy0yMzEtXHRcdGdvdG8gb3V0X2ZyZWVfZHhlX3Bvb2w7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTIzMy1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYzoyMzQ6XHRyZXQgPSB3Y24zNnh4X3NtZF9sb2FkX252KHdjbik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmMtMjM1LVx0aWYgKHJldCkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jOjIzNjpcdFx0d2NuMzZ4eF9lcnIoXCYjMzQ7RmFpbGVkIHRvIHB1c2ggTlYgdG8gY2hpcFxcblwmIzM0Oyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmMtMjM3LVx0XHRnb3RvIG91dF9mcmVlX2R4ZV9jdGw7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTIzOS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYzoyNDA6XHRyZXQgPSB3Y24zNnh4X3NtZF9zdGFydCh3Y24pO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTI0MS1cdGlmIChyZXQpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYzoyNDI6XHRcdHdjbjM2eHhfZXJyKFwmIzM0O0ZhaWxlZCB0byBzdGFydCBjaGlwXFxuXCYjMzQ7KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYy0yNDMtXHRcdGdvdG8gb3V0X2ZyZWVfZHhlX2N0bDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmMtMjQ1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jOjI0NjpcdGlmICghd2NuMzZ4eF9pc19md192ZXJzaW9uKHdjbiwgMSwgMiwgMiwgMjQpKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmM6MjQ3Olx0XHRyZXQgPSB3Y24zNnh4X3NtZF9mZWF0dXJlX2NhcHNfZXhjaGFuZ2Uod2NuKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYy0yNDgtXHRcdGlmIChyZXQpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmM6MjQ5Olx0XHRcdHdjbjM2eHhfd2FybihcJiMzNDtFeGNoYW5nZSBmZWF0dXJlIGNhcHMgZmFpbGVkXFxuXCYjMzQ7KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYy0yNTAtXHRcdGVsc2VcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYzoyNTE6XHRcdFx0d2NuMzZ4eF9mZWF0X2NhcHNfaW5mbyh3Y24pO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTI1Mi1cdH1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmMtMjU0LVx0LyogRE1BIGNoYW5uZWwgaW5pdGlhbGl6YXRpb24gKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYzoyNTU6XHRyZXQgPSB3Y24zNnh4X2R4ZV9pbml0KHdjbik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmMtMjU2LVx0aWYgKHJldCkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jOjI1NzpcdFx0d2NuMzZ4eF9lcnIoXCYjMzQ7RFhFIGluaXQgZmFpbGVkXFxuXCYjMzQ7KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYy0yNTgtXHRcdGdvdG8gb3V0X3NtZF9zdG9wO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYy0yNjAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmM6MjYxOlx0d2NuMzZ4eF9kZWJ1Z2ZzX2luaXQod2NuKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYy0yNjItXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTI2OS1vdXRfc21kX3N0b3A6XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmM6MjcwOlx0d2NuMzZ4eF9zbWRfc3RvcCh3Y24pO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTI3MS1vdXRfZnJlZV9keGVfY3RsOlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jOjI3MjpcdHdjbjM2eHhfZHhlX2ZyZWVfY3RsX2Jsa3Mod2NuKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYy0yNzMtb3V0X2ZyZWVfZHhlX3Bvb2w6XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmM6Mjc0Olx0d2NuMzZ4eF9keGVfZnJlZV9tZW1fcG9vbHMod2NuKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYy0yNzUtb3V0X3NtZF9jbG9zZTpcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYzoyNzY6XHR3Y24zNnh4X3NtZF9jbG9zZSh3Y24pO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTI3Ny1vdXRfZXJyOlxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYy0yODAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmM6MjgxOnN0YXRpYyB2b2lkIHdjbjM2eHhfc3RvcChzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodywgYm9vbCBzdXNwZW5kKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTI4Mi17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmM6MjgzOlx0c3RydWN0IHdjbjM2eHggKndjbiA9IGh3LVx1MDAzZXByaXY7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmMtMjg0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jOjI4NTpcdHdjbjM2eHhfZGJnKFdDTjM2WFhfREJHX01BQywgXCYjMzQ7bWFjIHN0b3BcXG5cJiMzNDspO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTI4Ni1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmMtMjk3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jOjI5ODpcdHdjbjM2eHhfZGVidWdmc19leGl0KHdjbik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmM6Mjk5Olx0d2NuMzZ4eF9zbWRfc3RvcCh3Y24pO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jOjMwMDpcdHdjbjM2eHhfZHhlX2RlaW5pdCh3Y24pO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jOjMwMTpcdHdjbjM2eHhfc21kX2Nsb3NlKHdjbik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmMtMzAyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jOjMwMzpcdHdjbjM2eHhfZHhlX2ZyZWVfbWVtX3Bvb2xzKHdjbik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmM6MzA0Olx0d2NuMzZ4eF9keGVfZnJlZV9jdGxfYmxrcyh3Y24pO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTMwNS19XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmMtMzA2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jOjMwNzpzdGF0aWMgdm9pZCB3Y24zNnh4X2NoYW5nZV9wcyhzdHJ1Y3Qgd2NuMzZ4eCAqd2NuLCBib29sIGVuYWJsZSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYy0zMDgte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTMwOS1cdHN0cnVjdCBpZWVlODAyMTFfdmlmICp2aWYgPSBOVUxMO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jOjMxMDpcdHN0cnVjdCB3Y24zNnh4X3ZpZiAqdG1wO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTMxMS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYy0zMTItXHRsaXN0X2Zvcl9lYWNoX2VudHJ5KHRtcCwgXHUwMDI2d2NuLVx1MDAzZXZpZl9saXN0LCBsaXN0KSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmM6MzEzOlx0XHR2aWYgPSB3Y24zNnh4X3ByaXZfdG9fdmlmKHRtcCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmMtMzE0LVx0XHRpZiAoZW5hYmxlIFx1MDAyNlx1MDAyNiAhd2NuLVx1MDAzZXN3X3NjYW4pIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYy0zMTUtXHRcdFx0aWYgKHZpZi1cdTAwM2VjZmcucHMpIC8qIHBzIGFsbG93ZWQgPyAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jOjMxNjpcdFx0XHRcdHdjbjM2eHhfcG1jX2VudGVyX2JtcHNfc3RhdGUod2NuLCB2aWYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTMxNy1cdFx0fSBlbHNlIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYzozMTg6XHRcdFx0d2NuMzZ4eF9wbWNfZXhpdF9ibXBzX3N0YXRlKHdjbiwgdmlmKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYy0zMTktXHRcdH1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmMtMzIyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jOjMyMzpzdGF0aWMgdm9pZCB3Y24zNnh4X2NoYW5nZV9vcGNoYW5uZWwoc3RydWN0IHdjbjM2eHggKndjbiwgaW50IGNoKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTMyNC17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmMtMzI1LVx0c3RydWN0IGllZWU4MDIxMV92aWYgKnZpZiA9IE5VTEw7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmM6MzI2Olx0c3RydWN0IHdjbjM2eHhfdmlmICp0bXA7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmMtMzI3LVx0c3RydWN0IGllZWU4MDIxMV9zdXBwb3J0ZWRfYmFuZCAqYmFuZDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmMtMzQ2LVx0aWYgKCFjaGFubmVsKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmM6MzQ3Olx0XHR3Y24zNnh4X2VycihcJiMzNDtDYW5ub3QgdHVuZSB0byBjaGFubmVsICVkXFxuXCYjMzQ7LCBjaCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmMtMzQ4LVx0XHRyZXR1cm47XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTM1Ni1cdGxpc3RfZm9yX2VhY2hfZW50cnkodG1wLCBcdTAwMjZ3Y24tXHUwMDNldmlmX2xpc3QsIGxpc3QpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYzozNTc6XHRcdHZpZiA9IHdjbjM2eHhfcHJpdl90b192aWYodG1wKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYzozNTg6XHRcdHdjbjM2eHhfc21kX3N3aXRjaF9jaGFubmVsKHdjbiwgdmlmLCBjaCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmMtMzU5LVx0fVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYy0zNjMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmM6MzY0OnN0YXRpYyBpbnQgd2NuMzZ4eF9jb25maWcoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsIGludCByYWRpb19pZHgsIHUzMiBjaGFuZ2VkKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTM2NS17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmM6MzY2Olx0c3RydWN0IHdjbjM2eHggKndjbiA9IGh3LVx1MDAzZXByaXY7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmMtMzY3LVx0aW50IHJldDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYy0zNjgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmM6MzY5Olx0d2NuMzZ4eF9kYmcoV0NOMzZYWF9EQkdfTUFDLCBcJiMzNDttYWMgY29uZmlnIGNoYW5nZWQgMHglMDh4XFxuXCYjMzQ7LCBjaGFuZ2VkKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYy0zNzAtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTM3NC1cdFx0aW50IGNoID0gV0NOMzZYWF9IV19DSEFOTkVMKHdjbik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmM6Mzc1Olx0XHR3Y24zNnh4X2RiZyhXQ04zNlhYX0RCR19NQUMsIFwmIzM0O3djbjM2eHhfY29uZmlnIGNoYW5uZWwgc3dpdGNoPSVkXFxuXCYjMzQ7LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTM3Ni1cdFx0XHQgICAgY2gpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYy0zODMtXHRcdFx0aWYgKHdjbi1cdTAwM2Vzd19zY2FuX2NoYW5uZWwpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmM6Mzg0Olx0XHRcdFx0d2NuMzZ4eF9zbWRfZW5kX3NjYW4od2NuLCB3Y24tXHUwMDNlc3dfc2Nhbl9jaGFubmVsKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYy0zODUtXHRcdFx0aWYgKHdjbi1cdTAwM2Vzd19zY2FuX2luaXQpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYzozODY6XHRcdFx0XHR3Y24zNnh4X3NtZF9maW5pc2hfc2Nhbih3Y24sIEhBTF9TWVNfTU9ERV9TQ0FOLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTM4Ny1cdFx0XHRcdFx0XHRcdHdjbi1cdTAwM2Vzd19zY2FuX3ZpZik7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTM5My1cdFx0XHRpZiAod2NuLVx1MDAzZXN3X3NjYW5fY2hhbm5lbClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYzozOTQ6XHRcdFx0XHR3Y24zNnh4X3NtZF9lbmRfc2Nhbih3Y24sIHdjbi1cdTAwM2Vzd19zY2FuX2NoYW5uZWwpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTM5NS1cdFx0XHRpZiAoIXdjbi1cdTAwM2Vzd19zY2FuX2luaXQpIHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmMtMzk4LVx0XHRcdFx0ICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmM6Mzk5Olx0XHRcdFx0cmV0ID0gd2NuMzZ4eF9zbWRfaW5pdF9zY2FuKHdjbixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYy00MDAtXHRcdFx0XHRcdFx0XHQgICAgSEFMX1NZU19NT0RFX1NDQU4sXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTQwNi1cdFx0XHR9XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmM6NDA3Olx0XHRcdHdjbjM2eHhfc21kX3N0YXJ0X3NjYW4od2NuLCBjaCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmMtNDA4LVx0XHR9IGVsc2Uge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jOjQwOTpcdFx0XHR3Y24zNnh4X2NoYW5nZV9vcGNoYW5uZWwod2NuLCBjaCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmMtNDEwLVx0XHR9XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTQxMy1cdGlmIChjaGFuZ2VkIFx1MDAyNiBJRUVFODAyMTFfQ09ORl9DSEFOR0VfUFMpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmM6NDE0Olx0XHR3Y24zNnh4X2NoYW5nZV9wcyh3Y24sIGh3LVx1MDAzZWNvbmYuZmxhZ3MgXHUwMDI2IElFRUU4MDIxMV9DT05GX1BTKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYy00MTUtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTQxNy1cdFx0aWYgKGh3LVx1MDAzZWNvbmYuZmxhZ3MgXHUwMDI2IElFRUU4MDIxMV9DT05GX0lETEUpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmM6NDE4Olx0XHRcdHdjbjM2eHhfc21kX2VudGVyX2ltcHMod2NuKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYy00MTktXHRcdGVsc2VcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYzo0MjA6XHRcdFx0d2NuMzZ4eF9zbWRfZXhpdF9pbXBzKHdjbik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmMtNDIxLVx0fVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYy00MjctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmM6NDI4OnN0YXRpYyB2b2lkIHdjbjM2eHhfY29uZmlndXJlX2ZpbHRlcihzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYy00MjktXHRcdFx0XHQgICAgIHVuc2lnbmVkIGludCBjaGFuZ2VkLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYy00MzEte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jOjQzMjpcdHN0cnVjdCB3Y24zNnh4X2hhbF9yY3ZfZmx0X21jX2FkZHJfbGlzdF90eXBlICpmcDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYzo0MzM6XHRzdHJ1Y3Qgd2NuMzZ4eCAqd2NuID0gaHctXHUwMDNlcHJpdjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYzo0MzQ6XHRzdHJ1Y3Qgd2NuMzZ4eF92aWYgKnRtcDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYy00MzUtXHRzdHJ1Y3QgaWVlZTgwMjExX3ZpZiAqdmlmID0gTlVMTDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYy00MzYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmM6NDM3Olx0d2NuMzZ4eF9kYmcoV0NOMzZYWF9EQkdfTUFDLCBcJiMzNDttYWMgY29uZmlndXJlIGZpbHRlclxcblwmIzM0Oyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmMtNDM4LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYy00NDQtXHRsaXN0X2Zvcl9lYWNoX2VudHJ5KHRtcCwgXHUwMDI2d2NuLVx1MDAzZXZpZl9saXN0LCBsaXN0KSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmM6NDQ1Olx0XHR2aWYgPSB3Y24zNnh4X3ByaXZfdG9fdmlmKHRtcCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmMtNDQ2LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYy00NDgtXHRcdGlmICgqdG90YWwgXHUwMDI2IEZJRl9BTExNVUxUSSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYzo0NDk6XHRcdFx0d2NuMzZ4eF9zbWRfc2V0X21jX2xpc3Qod2NuLCB2aWYsIE5VTEwpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTQ1MC1cdFx0ZWxzZSBpZiAoTkw4MDIxMV9JRlRZUEVfU1RBVElPTiA9PSB2aWYtXHUwMDNldHlwZSBcdTAwMjZcdTAwMjYgdG1wLVx1MDAzZXN0YV9hc3NvYylcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYzo0NTE6XHRcdFx0d2NuMzZ4eF9zbWRfc2V0X21jX2xpc3Qod2NuLCB2aWYsIGZwKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYy00NTItXHR9XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTQ1Ny1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYzo0NTg6c3RhdGljIHU2NCB3Y24zNnh4X3ByZXBhcmVfbXVsdGljYXN0KHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTQ1OS1cdFx0XHRcdCAgICAgc3RydWN0IG5ldGRldl9od19hZGRyX2xpc3QgKm1jX2xpc3QpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmMtNDYwLXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYzo0NjE6XHRzdHJ1Y3Qgd2NuMzZ4eF9oYWxfcmN2X2ZsdF9tY19hZGRyX2xpc3RfdHlwZSAqZnA7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmMtNDYyLVx0c3RydWN0IG5ldGRldl9od19hZGRyICpoYTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYy00NjMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmM6NDY0Olx0d2NuMzZ4eF9kYmcoV0NOMzZYWF9EQkdfTUFDLCBcJiMzNDttYWMgcHJlcGFyZSBtdWx0aWNhc3QgbGlzdFxcblwmIzM0Oyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmMtNDY1LVx0ZnAgPSBremFsbG9jX29iaigqZnAsIEdGUF9BVE9NSUMpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTQ2Ni1cdGlmICghZnApIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYzo0Njc6XHRcdHdjbjM2eHhfZXJyKFwmIzM0O091dCBvZiBtZW1vcnkgc2V0dGluZyBmaWx0ZXJzLlxcblwmIzM0Oyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmMtNDY4LVx0XHRyZXR1cm4gMDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmMtNDg0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jOjQ4NTpzdGF0aWMgdm9pZCB3Y24zNnh4X3R4KHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTQ4Ni1cdFx0ICAgICAgIHN0cnVjdCBpZWVlODAyMTFfdHhfY29udHJvbCAqY29udHJvbCxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmMtNDg4LXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYzo0ODk6XHRzdHJ1Y3Qgd2NuMzZ4eCAqd2NuID0gaHctXHUwMDNlcHJpdjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYzo0OTA6XHRzdHJ1Y3Qgd2NuMzZ4eF9zdGEgKnN0YV9wcml2ID0gTlVMTDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYy00OTEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmMtNDkyLVx0aWYgKGNvbnRyb2wtXHUwMDNlc3RhKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jOjQ5MzpcdFx0c3RhX3ByaXYgPSB3Y24zNnh4X3N0YV90b19wcml2KGNvbnRyb2wtXHUwMDNlc3RhKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYy00OTQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmM6NDk1Olx0aWYgKHdjbjM2eHhfc3RhcnRfdHgod2NuLCBzdGFfcHJpdiwgc2tiKSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYy00OTYtXHRcdGllZWU4MDIxMV9mcmVlX3R4c2tiKHdjbi1cdTAwM2Vodywgc2tiKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmMtNDk4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jOjQ5OTpzdGF0aWMgaW50IHdjbjM2eHhfc2V0X2tleShzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodywgZW51bSBzZXRfa2V5X2NtZCBjbWQsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmMtNTAwLVx0XHRcdCAgIHN0cnVjdCBpZWVlODAyMTFfdmlmICp2aWYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTUwMy17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmM6NTA0Olx0c3RydWN0IHdjbjM2eHggKndjbiA9IGh3LVx1MDAzZXByaXY7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmM6NTA1Olx0c3RydWN0IHdjbjM2eHhfdmlmICp2aWZfcHJpdiA9IHdjbjM2eHhfdmlmX3RvX3ByaXYodmlmKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYzo1MDY6XHRzdHJ1Y3Qgd2NuMzZ4eF9zdGEgKnN0YV9wcml2ID0gc3RhID8gd2NuMzZ4eF9zdGFfdG9fcHJpdihzdGEpIDogTlVMTDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYy01MDctXHRpbnQgcmV0ID0gMDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmMtNTA5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jOjUxMDpcdHdjbjM2eHhfZGJnKFdDTjM2WFhfREJHX01BQywgXCYjMzQ7bWFjODAyMTEgc2V0IGtleVxcblwmIzM0Oyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmM6NTExOlx0d2NuMzZ4eF9kYmcoV0NOMzZYWF9EQkdfTUFDLCBcJiMzNDtLZXk6IGNtZD0weCV4IGFsZ286MHgleCwgaWQ6JWQsIGxlbjolZCBmbGFncyAweCV4XFxuXCYjMzQ7LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTUxMi1cdFx0ICAgIGNtZCwga2V5X2NvbmYtXHUwMDNlY2lwaGVyLCBrZXlfY29uZi1cdTAwM2VrZXlpZHgsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmMtNTEzLVx0XHQgICAga2V5X2NvbmYtXHUwMDNla2V5bGVuLCBrZXlfY29uZi1cdTAwM2VmbGFncyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmM6NTE0Olx0d2NuMzZ4eF9kYmdfZHVtcChXQ04zNlhYX0RCR19NQUMsIFwmIzM0O0tFWTogXCYjMzQ7LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTUxNS1cdFx0XHQga2V5X2NvbmYtXHUwMDNla2V5LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYy01MzMtXHRkZWZhdWx0OlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jOjUzNDpcdFx0d2NuMzZ4eF9lcnIoXCYjMzQ7VW5zdXBwb3J0ZWQga2V5IHR5cGUgMHgleFxcblwmIzM0OyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYy01MzUtXHRcdFx0ICAgICAga2V5X2NvbmYtXHUwMDNlY2lwaGVyKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmMtNTYwLVx0XHRcdGlmIChOTDgwMjExX0lGVFlQRV9TVEFUSU9OID09IHZpZi1cdTAwM2V0eXBlKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmM6NTYxOlx0XHRcdFx0d2NuMzZ4eF9zbWRfY29uZmlnX2Jzcyh3Y24sXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmMtNTYyLVx0XHRcdFx0XHRcdCAgICAgICB2aWYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTU2NS1cdFx0XHRcdFx0XHQgICAgICAgdHJ1ZSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmM6NTY2Olx0XHRcdFx0d2NuMzZ4eF9zbWRfY29uZmlnX3N0YSh3Y24sIHZpZiwgc3RhKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYy01NjctXHRcdFx0fVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTU2OC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYzo1Njk6XHRcdFx0d2NuMzZ4eF9zbWRfc2V0X3N0YWtleSh3Y24sXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmMtNTcwLVx0XHRcdFx0dmlmX3ByaXYtXHUwMDNlZW5jcnlwdF90eXBlLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYy01NzUtXHRcdH0gZWxzZSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmM6NTc2Olx0XHRcdHdjbjM2eHhfc21kX3NldF9ic3NrZXkod2NuLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTU3Ny1cdFx0XHRcdHZpZl9wcml2LVx1MDAzZWVuY3J5cHRfdHlwZSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmMtNTg3LVx0XHRcdFx0XHRzdGFfcHJpdi1cdTAwM2Vpc19kYXRhX2VuY3J5cHRlZCA9IHRydWU7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmM6NTg4Olx0XHRcdFx0XHR3Y24zNnh4X3NtZF9zZXRfc3Rha2V5KHdjbixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYy01ODktXHRcdFx0XHRcdFx0dmlmX3ByaXYtXHUwMDNlZW5jcnlwdF90eXBlLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYy02MDAtXHRcdFx0aWYgKHZpZl9wcml2LVx1MDAzZWJzc19pbmRleCAhPSBXQ04zNlhYX0hBTF9CU1NfSU5WQUxJRF9JRFgpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmM6NjAxOlx0XHRcdFx0d2NuMzZ4eF9zbWRfcmVtb3ZlX2Jzc2tleSh3Y24sXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmMtNjAyLVx0XHRcdFx0XHR2aWZfcHJpdi1cdTAwM2VlbmNyeXB0X3R5cGUsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTYxMC1cdFx0XHRpZiAoc3RhX3ByaXYtXHUwMDNlYWlkKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jOjYxMTpcdFx0XHRcdHdjbjM2eHhfc21kX3JlbW92ZV9zdGFrZXkod2NuLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTYxMi1cdFx0XHRcdFx0dmlmX3ByaXYtXHUwMDNlZW5jcnlwdF90eXBlLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYy02MTctXHRkZWZhdWx0OlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jOjYxODpcdFx0d2NuMzZ4eF9lcnIoXCYjMzQ7VW5zdXBwb3J0ZWQga2V5IGNtZCAweCV4XFxuXCYjMzQ7LCBjbWQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTYxOS1cdFx0cmV0ID0gLUVPUE5PVFNVUFA7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTYyOC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYzo2Mjk6c3RhdGljIGludCB3Y24zNnh4X2h3X3NjYW4oc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmMtNjMwLVx0XHRcdCAgIHN0cnVjdCBpZWVlODAyMTFfdmlmICp2aWYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTYzMi17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmM6NjMzOlx0c3RydWN0IHdjbjM2eHggKndjbiA9IGh3LVx1MDAzZXByaXY7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmMtNjM0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jOjYzNTpcdGlmICghd2NuMzZ4eF9maXJtd2FyZV9nZXRfZmVhdF9jYXBzKHdjbi1cdTAwM2Vmd19mZWF0X2NhcHMsIFNDQU5fT0ZGTE9BRCkpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYy02MzYtXHRcdC8qIGZhbGxiYWNrIHRvIG1hYzgwMjExIHNvZnR3YXJlIHNjYW4gKi9cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmMtNjQzLVx0aWYgKGh3X3JlcS1cdTAwM2VyZXEubl9jaGFubmVscyBcdTAwM2UgNDgpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYzo2NDQ6XHRcdHdjbjM2eHhfd2FybihcJiMzNDtPZmZsb2FkIHNjYW4gYWJvcnRlZCwgbl9jaGFubmVscz0ldVwmIzM0OyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYy02NDUtXHRcdFx0ICAgICBod19yZXEtXHUwMDNlcmVxLm5fY2hhbm5lbHMpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYy02NTktXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmM6NjYwOlx0d2NuMzZ4eF9zbWRfdXBkYXRlX2NoYW5uZWxfbGlzdCh3Y24sIFx1MDAyNmh3X3JlcS1cdTAwM2VyZXEpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jOjY2MTpcdHJldHVybiB3Y24zNnh4X3NtZF9zdGFydF9od19zY2FuKHdjbiwgdmlmLCBcdTAwMjZod19yZXEtXHUwMDNlcmVxKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYy02NjItfVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTY2My1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYzo2NjQ6c3RhdGljIHZvaWQgd2NuMzZ4eF9jYW5jZWxfaHdfc2NhbihzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYy02NjUtXHRcdFx0XHQgICBzdHJ1Y3QgaWVlZTgwMjExX3ZpZiAqdmlmKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTY2Ni17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmM6NjY3Olx0c3RydWN0IHdjbjM2eHggKndjbiA9IGh3LVx1MDAzZXByaXY7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmMtNjY4LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYy02NzItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmM6NjczOlx0aWYgKHdjbjM2eHhfZmlybXdhcmVfZ2V0X2ZlYXRfY2Fwcyh3Y24tXHUwMDNlZndfZmVhdF9jYXBzLCBTQ0FOX09GRkxPQUQpKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmMtNjc0LVx0XHQvKiBpZWVlODAyMTFfc2Nhbl9jb21wbGV0ZWQgd2lsbCBiZSBjYWxsZWQgb24gRlcgc2NhblxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTY3NS1cdFx0ICogaW5kaWNhdGlvbiAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jOjY3NjpcdFx0d2NuMzZ4eF9zbWRfc3RvcF9od19zY2FuKHdjbik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmMtNjc3LVx0fVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYy02NzktXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmM6NjgwOnN0YXRpYyB2b2lkIHdjbjM2eHhfc3dfc2Nhbl9zdGFydChzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYy02ODEtXHRcdFx0XHQgIHN0cnVjdCBpZWVlODAyMTFfdmlmICp2aWYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTY4My17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmM6Njg0Olx0c3RydWN0IHdjbjM2eHggKndjbiA9IGh3LVx1MDAzZXByaXY7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmM6Njg1Olx0c3RydWN0IHdjbjM2eHhfdmlmICp2aWZfcHJpdiA9IHdjbjM2eHhfdmlmX3RvX3ByaXYodmlmKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYy02ODYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmM6Njg3Olx0d2NuMzZ4eF9kYmcoV0NOMzZYWF9EQkdfTUFDLCBcJiMzNDtzd19zY2FuX3N0YXJ0XCYjMzQ7KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYy02ODgtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTY5Ny1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYzo2OTg6c3RhdGljIHZvaWQgd2NuMzZ4eF9zd19zY2FuX2NvbXBsZXRlKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTY5OS1cdFx0XHRcdCAgICAgc3RydWN0IGllZWU4MDIxMV92aWYgKnZpZilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYy03MDAte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jOjcwMTpcdHN0cnVjdCB3Y24zNnh4ICp3Y24gPSBody1cdTAwM2Vwcml2O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTcwMi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYzo3MDM6XHR3Y24zNnh4X2RiZyhXQ04zNlhYX0RCR19NQUMsIFwmIzM0O3N3X3NjYW5fY29tcGxldGVcJiMzNDspO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTcwNC1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmMtNzA2LVx0aWYgKHdjbi1cdTAwM2Vzd19zY2FuX2NoYW5uZWwpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmM6NzA3Olx0XHR3Y24zNnh4X3NtZF9lbmRfc2Nhbih3Y24sIHdjbi1cdTAwM2Vzd19zY2FuX2NoYW5uZWwpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTcwOC1cdGlmICh3Y24tXHUwMDNlc3dfc2Nhbl9pbml0KSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmM6NzA5Olx0XHR3Y24zNnh4X3NtZF9maW5pc2hfc2Nhbih3Y24sIEhBTF9TWVNfTU9ERV9TQ0FOLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTcxMC1cdFx0XHRcdFx0d2NuLVx1MDAzZXN3X3NjYW5fdmlmKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmMtNzE1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jOjcxNjpzdGF0aWMgdm9pZCB3Y24zNnh4X3VwZGF0ZV9hbGxvd2VkX3JhdGVzKHN0cnVjdCBpZWVlODAyMTFfc3RhICpzdGEsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmMtNzE3LVx0XHRcdFx0XHQgZW51bSBubDgwMjExX2JhbmQgYmFuZClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmMtNzIwLVx0dTE2ICpyYXRlc190YWJsZTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYzo3MjE6XHRzdHJ1Y3Qgd2NuMzZ4eF9zdGEgKnN0YV9wcml2ID0gd2NuMzZ4eF9zdGFfdG9fcHJpdihzdGEpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTcyMi1cdHUzMiByYXRlcyA9IHN0YS1cdTAwM2VkZWZsaW5rLnN1cHBfcmF0ZXNbYmFuZF07XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTc2NC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYzo3NjU6dm9pZCB3Y24zNnh4X3NldF9kZWZhdWx0X3JhdGVzKHN0cnVjdCB3Y24zNnh4X2hhbF9zdXBwb3J0ZWRfcmF0ZXMgKnJhdGVzKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTc2Ni17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTc5MS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYzo3OTI6dm9pZCB3Y24zNnh4X3NldF9kZWZhdWx0X3JhdGVzX3YxKHN0cnVjdCB3Y24zNnh4X2hhbF9zdXBwb3J0ZWRfcmF0ZXNfdjEgKnJhdGVzKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTc5My17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTc5OC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYzo3OTk6c3RhdGljIHZvaWQgd2NuMzZ4eF9ic3NfaW5mb19jaGFuZ2VkKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTgwMC1cdFx0XHRcdCAgICAgc3RydWN0IGllZWU4MDIxMV92aWYgKnZpZixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmMtODAzLXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYzo4MDQ6XHRzdHJ1Y3Qgd2NuMzZ4eCAqd2NuID0gaHctXHUwMDNlcHJpdjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYy04MDUtXHRzdHJ1Y3Qgc2tfYnVmZiAqc2tiID0gTlVMTDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYy04MDYtXHR1MTYgdGltX29mZiwgdGltX2xlbjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYzo4MDc6XHRlbnVtIHdjbjM2eHhfaGFsX2xpbmtfc3RhdGUgbGlua19zdGF0ZTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYzo4MDg6XHRzdHJ1Y3Qgd2NuMzZ4eF92aWYgKnZpZl9wcml2ID0gd2NuMzZ4eF92aWZfdG9fcHJpdih2aWYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTgwOS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYzo4MTA6XHR3Y24zNnh4X2RiZyhXQ04zNlhYX0RCR19NQUMsIFwmIzM0O21hYyBic3MgaW5mbyBjaGFuZ2VkIHZpZiAlcCBjaGFuZ2VkIDB4JWxseFxcblwmIzM0OyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYy04MTEtXHRcdCAgICB2aWYsIGNoYW5nZWQpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYy04MTUtXHRpZiAoY2hhbmdlZCBcdTAwMjYgQlNTX0NIQU5HRURfQkVBQ09OX0lORk8pIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYzo4MTY6XHRcdHdjbjM2eHhfZGJnKFdDTjM2WFhfREJHX01BQyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYy04MTctXHRcdFx0ICAgIFwmIzM0O21hYyBic3MgY2hhbmdlZCBkdGltIHBlcmlvZCAlZFxcblwmIzM0Oyxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmMtODIzLVx0aWYgKGNoYW5nZWQgXHUwMDI2IEJTU19DSEFOR0VEX0JTU0lEKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmM6ODI0Olx0XHR3Y24zNnh4X2RiZyhXQ04zNlhYX0RCR19NQUMsIFwmIzM0O21hYyBic3MgY2hhbmdlZF9ic3NpZCAlcE1cXG5cJiMzNDssXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmMtODI1LVx0XHRcdCAgICBic3NfY29uZi1cdTAwM2Vic3NpZCk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTgyOS1cdFx0XHR2aWZfcHJpdi1cdTAwM2Vic3NfaW5kZXggPSBXQ04zNlhYX0hBTF9CU1NfSU5WQUxJRF9JRFg7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmM6ODMwOlx0XHRcdHdjbjM2eHhfc21kX3NldF9saW5rX3N0KHdjbiwgYnNzX2NvbmYtXHUwMDNlYnNzaWQsIHZpZi1cdTAwM2VhZGRyLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTgzMS1cdFx0XHRcdFx0XHRXQ04zNlhYX0hBTF9MSU5LX1BSRUFTU09DX1NUQVRFKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYzo4MzI6XHRcdFx0d2NuMzZ4eF9zbWRfam9pbih3Y24sIGJzc19jb25mLVx1MDAzZWJzc2lkLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTgzMy1cdFx0XHRcdFx0IHZpZi1cdTAwM2VhZGRyLCBXQ04zNlhYX0hXX0NIQU5ORUwod2NuKSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmM6ODM0Olx0XHRcdHdjbjM2eHhfc21kX2NvbmZpZ19ic3Mod2NuLCB2aWYsIE5VTEwsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmMtODM1LVx0XHRcdFx0XHQgICAgICAgYnNzX2NvbmYtXHUwMDNlYnNzaWQsIGZhbHNlKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmMtODM3LVx0XHRcdHZpZl9wcml2LVx1MDAzZWlzX2pvaW5pbmcgPSBmYWxzZTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYzo4Mzg6XHRcdFx0d2NuMzZ4eF9zbWRfZGVsZXRlX2Jzcyh3Y24sIHZpZik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmM6ODM5Olx0XHRcdHdjbjM2eHhfc21kX3NldF9saW5rX3N0KHdjbiwgYnNzX2NvbmYtXHUwMDNlYnNzaWQsIHZpZi1cdTAwM2VhZGRyLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTg0MC1cdFx0XHRcdFx0XHRXQ04zNlhYX0hBTF9MSU5LX0lETEVfU1RBVEUpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYy04NDUtXHRpZiAoY2hhbmdlZCBcdTAwMjYgQlNTX0NIQU5HRURfU1NJRCkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jOjg0NjpcdFx0d2NuMzZ4eF9kYmcoV0NOMzZYWF9EQkdfTUFDLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTg0Ny1cdFx0XHQgICAgXCYjMzQ7bWFjIGJzcyBjaGFuZ2VkIHNzaWRcXG5cJiMzNDspO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jOjg0ODpcdFx0d2NuMzZ4eF9kYmdfZHVtcChXQ04zNlhYX0RCR19NQUMsIFwmIzM0O3NzaWQgXCYjMzQ7LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTg0OS1cdFx0XHRcdCB2aWYtXHUwMDNlY2ZnLnNzaWQsIHZpZi1cdTAwM2VjZmcuc3NpZF9sZW4pO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYy04NjAtXHRcdFx0c3RydWN0IGllZWU4MDIxMV9zdGEgKnN0YTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYzo4NjE6XHRcdFx0c3RydWN0IHdjbjM2eHhfc3RhICpzdGFfcHJpdjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYy04NjItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmM6ODYzOlx0XHRcdHdjbjM2eHhfZGJnKFdDTjM2WFhfREJHX01BQyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYy04NjQtXHRcdFx0XHQgICAgXCYjMzQ7bWFjIGFzc29jIGJzcyAlcE0gdmlmICVwTSBBSUQ9JWRcXG5cJiMzNDssXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTg3Mi1cdFx0XHQgKiBIb2xkaW5nIGNvbmZfbXV0ZXggZW5zdXJlcyBtdXRhbCBleGNsdXNpb24gd2l0aFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jOjg3MzpcdFx0XHQgKiB3Y24zNnh4X3N0YV9yZW1vdmUoKSBhbmQgYXMgc3VjaCBlbnN1cmVzIHRoYXQgc3RhXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmMtODc0LVx0XHRcdCAqIHdvbiYjMzk7dCBiZSBmcmVlZCB3aGlsZSB3ZSYjMzk7cmUgb3BlcmF0aW5nIG9uIGl0LiBBcyBzdWNoXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTg3OC1cdFx0XHRpZiAoIXN0YSkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jOjg3OTpcdFx0XHRcdHdjbjM2eHhfZXJyKFwmIzM0O3N0YSAlcE0gaXMgbm90IGZvdW5kXFxuXCYjMzQ7LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTg4MC1cdFx0XHRcdFx0ICAgICAgYnNzX2NvbmYtXHUwMDNlYnNzaWQpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYy04ODItXHRcdFx0fVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jOjg4MzpcdFx0XHRzdGFfcHJpdiA9IHdjbjM2eHhfc3RhX3RvX3ByaXYoc3RhKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYy04ODQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmM6ODg1Olx0XHRcdHdjbjM2eHhfdXBkYXRlX2FsbG93ZWRfcmF0ZXMoc3RhLCBXQ04zNlhYX0JBTkQod2NuKSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmMtODg2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jOjg4NzpcdFx0XHR3Y24zNnh4X3NtZF9zZXRfbGlua19zdCh3Y24sIGJzc19jb25mLVx1MDAzZWJzc2lkLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTg4OC1cdFx0XHRcdHZpZi1cdTAwM2VhZGRyLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTg4OS1cdFx0XHRcdFdDTjM2WFhfSEFMX0xJTktfUE9TVEFTU09DX1NUQVRFKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYzo4OTA6XHRcdFx0d2NuMzZ4eF9zbWRfY29uZmlnX2Jzcyh3Y24sIHZpZiwgc3RhLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTg5MS1cdFx0XHRcdFx0ICAgICAgIGJzc19jb25mLVx1MDAzZWJzc2lkLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYy04OTctXHRcdFx0ICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmM6ODk4Olx0XHRcdHdjbjM2eHhfc21kX2NvbmZpZ19zdGEod2NuLCB2aWYsIHN0YSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmMtODk5LVx0XHRcdGlmICh2aWYtXHUwMDNldHlwZSA9PSBOTDgwMjExX0lGVFlQRV9TVEFUSU9OKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jOjkwMDpcdFx0XHRcdHdjbjM2eHhfc21kX2FkZF9iZWFjb25fZmlsdGVyKHdjbiwgdmlmKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYzo5MDE6XHRcdFx0d2NuMzZ4eF9lbmFibGVfa2VlcF9hbGl2ZV9udWxsX3BhY2tldCh3Y24sIHZpZik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmMtOTAyLVx0XHR9IGVsc2Uge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jOjkwMzpcdFx0XHR3Y24zNnh4X2RiZyhXQ04zNlhYX0RCR19NQUMsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmMtOTA0LVx0XHRcdFx0ICAgIFwmIzM0O2Rpc2Fzc29jaWF0ZWQgYnNzICVwTSB2aWYgJXBNIEFJRD0lZFxcblwmIzM0Oyxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmMtOTA4LVx0XHRcdHZpZl9wcml2LVx1MDAzZXN0YV9hc3NvYyA9IGZhbHNlO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jOjkwOTpcdFx0XHR3Y24zNnh4X3NtZF9zZXRfbGlua19zdCh3Y24sXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmMtOTEwLVx0XHRcdFx0XHRcdGJzc19jb25mLVx1MDAzZWJzc2lkLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYy05MTYtXHRpZiAoY2hhbmdlZCBcdTAwMjYgQlNTX0NIQU5HRURfQVBfUFJPQkVfUkVTUCkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jOjkxNzpcdFx0d2NuMzZ4eF9kYmcoV0NOMzZYWF9EQkdfTUFDLCBcJiMzNDttYWMgYnNzIGNoYW5nZWQgYXAgcHJvYmUgcmVzcFxcblwmIzM0Oyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmMtOTE4LVx0XHRza2IgPSBpZWVlODAyMTFfcHJvYmVyZXNwX2dldChodywgdmlmKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYy05MTktXHRcdGlmICghc2tiKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmM6OTIwOlx0XHRcdHdjbjM2eHhfZXJyKFwmIzM0O2ZhaWxlZCB0byBhbGxvYyBwcm9iZXJlcSBza2JcXG5cJiMzNDspO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTkyMS1cdFx0XHRnb3RvIG91dDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmMtOTIzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jOjkyNDpcdFx0d2NuMzZ4eF9zbWRfdXBkYXRlX3Byb2JlcmVzcF90bXBsKHdjbiwgdmlmLCBza2IpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTkyNS1cdFx0ZGV2X2tmcmVlX3NrYihza2IpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYy05MjktXHQgICAgY2hhbmdlZCBcdTAwMjYgQlNTX0NIQU5HRURfQkVBQ09OKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmM6OTMwOlx0XHR3Y24zNnh4X2RiZyhXQ04zNlhYX0RCR19NQUMsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmMtOTMxLVx0XHRcdCAgICBcJiMzNDttYWMgYnNzIGNoYW5nZWQgYmVhY29uIGVuYWJsZWQgJWRcXG5cJiMzNDssXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTkzNi1cdFx0XHR2aWZfcHJpdi1cdTAwM2Vic3NfaW5kZXggPSBXQ04zNlhYX0hBTF9CU1NfSU5WQUxJRF9JRFg7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmM6OTM3Olx0XHRcdHdjbjM2eHhfc21kX2NvbmZpZ19ic3Mod2NuLCB2aWYsIE5VTEwsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmMtOTM4LVx0XHRcdFx0XHQgICAgICAgdmlmLVx1MDAzZWFkZHIsIGZhbHNlKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmMtOTQxLVx0XHRcdGlmICghc2tiKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmM6OTQyOlx0XHRcdFx0d2NuMzZ4eF9lcnIoXCYjMzQ7ZmFpbGVkIHRvIGFsbG9jIGJlYWNvbiBza2JcXG5cJiMzNDspO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTk0My1cdFx0XHRcdGdvdG8gb3V0O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTk0NC1cdFx0XHR9XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmM6OTQ1Olx0XHRcdHdjbjM2eHhfc21kX3NlbmRfYmVhY29uKHdjbiwgdmlmLCBza2IsIHRpbV9vZmYsIDApO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTk0Ni1cdFx0XHRkZXZfa2ZyZWVfc2tiKHNrYik7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTk1My1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYzo5NTQ6XHRcdFx0d2NuMzZ4eF9zbWRfc2V0X2xpbmtfc3Qod2NuLCB2aWYtXHUwMDNlYWRkciwgdmlmLVx1MDAzZWFkZHIsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmMtOTU1LVx0XHRcdFx0XHRcdGxpbmtfc3RhdGUpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTk1Ni1cdFx0fSBlbHNlIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYzo5NTc6XHRcdFx0d2NuMzZ4eF9zbWRfZGVsZXRlX2Jzcyh3Y24sIHZpZik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmM6OTU4Olx0XHRcdHdjbjM2eHhfc21kX3NldF9saW5rX3N0KHdjbiwgdmlmLVx1MDAzZWFkZHIsIHZpZi1cdTAwM2VhZGRyLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTk1OS1cdFx0XHRcdFx0XHRXQ04zNlhYX0hBTF9MSU5LX0lETEVfU1RBVEUpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYy05NjctLyogdGhpcyBpcyByZXF1aXJlZCB3aGVuIHVzaW5nIElFRUU4MDIxMV9IV19IQVNfUkFURV9DT05UUk9MICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmM6OTY4OnN0YXRpYyBpbnQgd2NuMzZ4eF9zZXRfcnRzX3RocmVzaG9sZChzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodywgaW50IHJhZGlvX2lkeCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYy05NjktXHRcdFx0XHQgICAgIHUzMiB2YWx1ZSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYy05NzAte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jOjk3MTpcdHN0cnVjdCB3Y24zNnh4ICp3Y24gPSBody1cdTAwM2Vwcml2O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jOjk3MjpcdHdjbjM2eHhfZGJnKFdDTjM2WFhfREJHX01BQywgXCYjMzQ7bWFjIHNldCBSVFMgdGhyZXNob2xkICVkXFxuXCYjMzQ7LCB2YWx1ZSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmMtOTczLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTk3NC1cdG11dGV4X2xvY2soXHUwMDI2d2NuLVx1MDAzZWNvbmZfbXV0ZXgpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jOjk3NTpcdHdjbjM2eHhfc21kX3VwZGF0ZV9jZmcod2NuLCBXQ04zNlhYX0hBTF9DRkdfUlRTX1RIUkVTSE9MRCwgdmFsdWUpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTk3Ni1cdG11dGV4X3VubG9jayhcdTAwMjZ3Y24tXHUwMDNlY29uZl9tdXRleCk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTk4MC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYzo5ODE6c3RhdGljIHZvaWQgd2NuMzZ4eF9yZW1vdmVfaW50ZXJmYWNlKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTk4Mi1cdFx0XHRcdCAgICAgc3RydWN0IGllZWU4MDIxMV92aWYgKnZpZilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYy05ODMte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jOjk4NDpcdHN0cnVjdCB3Y24zNnh4ICp3Y24gPSBody1cdTAwM2Vwcml2O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jOjk4NTpcdHN0cnVjdCB3Y24zNnh4X3ZpZiAqdmlmX3ByaXYgPSB3Y24zNnh4X3ZpZl90b19wcml2KHZpZik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmM6OTg2Olx0d2NuMzZ4eF9kYmcoV0NOMzZYWF9EQkdfTUFDLCBcJiMzNDttYWMgcmVtb3ZlIGludGVyZmFjZSB2aWYgJXBcXG5cJiMzNDssIHZpZik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmMtOTg3LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYy05OTAtXHRsaXN0X2RlbChcdTAwMjZ2aWZfcHJpdi1cdTAwM2VsaXN0KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYzo5OTE6XHR3Y24zNnh4X3NtZF9kZWxldGVfc3RhX3NlbGYod2NuLCB2aWYtXHUwMDNlYWRkcik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmMtOTkyLVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYy05OTUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmM6OTk2OnN0YXRpYyBpbnQgd2NuMzZ4eF9hZGRfaW50ZXJmYWNlKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTk5Ny1cdFx0XHRcdCBzdHJ1Y3QgaWVlZTgwMjExX3ZpZiAqdmlmKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTk5OC17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmM6OTk5Olx0c3RydWN0IHdjbjM2eHggKndjbiA9IGh3LVx1MDAzZXByaXY7XG5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMTg6NTU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjc5NjYKCQkJCQkJCW91dHB1dDogMzcKCQkJCQkJCXRob3VnaHRzOiAxODYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBTeXpib3QgRmluZGluZ3MqKgoKT2theSwgc28gYHdjbjM2eHhfc21kX3JzcF9wcm9jZXNzYCBpcyBkZWZpbml0ZWx5IGNhbGxlZCB3aGVuIGEgbWVzc2FnZSBhcnJpdmVzIG9uIHRoZSBTTUQgY2hhbm5lbCDigJMgdGhhdCYjMzk7cyBjbGVhciBmcm9tIHRoZSBjb2RlLiBBbmQgdGhlIFNNRCBjaGFubmVsIGl0c2VsZiBpcyBvcGVuZWQgd2l0aGluIGB3Y24zNnh4X3Byb2JlYCB1c2luZyBgcWNvbV93Y25zc19vcGVuX2NoYW5uZWxgLiBTbywgaWYgc3l6Ym90IGlzIGhpdHRpbmcgdGhpcyBjb2RlLCBpdCBtZWFucyBpdCYjMzk7cyBtYW5hZ2luZyB0byB0cmlnZ2VyIGB3Y24zNnh4X3Byb2JlYCBzb21laG93IGFuZCB0aGVuIGluamVjdCBtZXNzYWdlcyAqaW50byogdGhhdCBTTUQgY2hhbm5lbC4gVGhhdCYjMzk7cyBhIGNydWNpYWwgcG9pbnQuCgpOb3csIG15IGluaXRpYWwgdGhvdWdodCBpczogZG9lcyBzeXprYWxsZXIgaGF2ZSBkaXJlY3Qgc3VwcG9ydCBmb3IgYHFjb21fd2Nuc3Nfb3Blbl9jaGFubmVsYD8gSSBkb3VidCBpdCwgYnV0IGl0JiMzOTtzIHdvcnRoIGNoZWNraW5nLiBXYWl0IGEgbWludXRlLi4uIHN5emthbGxlciBtaWdodCBiZSBieXBhc3NpbmcgdGhlIGB3Y24zNnh4YCBkcml2ZXIgZW50aXJlbHkgYW5kIGZ1enppbmcgdGhlIHJwbXNnIGJ1cyBkaXJlY3RseS4gVGhhdCYjMzk7cyBhIGRpc3RpbmN0IHBvc3NpYmlsaXR5LiBJZiB0aGUgUUVNVSBlbnZpcm9ubWVudCBpbmNsdWRlcyB2aXJ0aW8tcnBtc2csIHN5emthbGxlciBjb3VsZCBiZSBkeW5hbWljYWxseSBjcmVhdGluZyBycG1zZyBkZXZpY2VzIGFuZCBzZW5kaW5nIG1lc3NhZ2VzIHRvIHRoZW0uIFRoaXMgZXhwbGFpbnMgdGhlIHBvdGVudGlhbCBieXBhc3MuCgpIb3dldmVyLCBgd2NuMzZ4eGAgaXMgYSBwbGF0Zm9ybSBkZXZpY2UsIHJpZ2h0PyBUaGF0IHN1Z2dlc3RzIGl0JiMzOTtzICpub3QqIGEgc3RhbmRhcmQgdmlydGlvIGRldmljZSBkaXJlY3RseSBleHBvc2VkIHZpYSB0aGUgcnBtc2cgYnVzLiBIbW0sIEkgbmVlZCB0byB2ZXJpZnkgaWYgc3l6a2FsbGVyIGhhcyBhIHBzZXVkby1zeXNjYWxsIGRlZmluZWQgZm9yIGB3Y24zNnh4YCBpdHNlbGYuIFRoaXMgaXMgdGhlIHBpZWNlIG9mIHRoZSBwdXp6bGUgdG8gY29ubmVjdCBoZXJlLiBUaGF0IHdpbGwgc2hvdyBpZiB0aGVyZSBpcyBkaXJlY3Qgc3l6a2FsbGVyIGludGVncmF0aW9uIG9yIGlmIGl0JiMzOTtzIGZ1enppbmcgdmlhIHRoZSBycG1zZyBidXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDE4OjU1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c3l6XyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDE4OjU1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI4NTM3CgkJCQkJCQlvdXRwdXQ6IDQ3CgkJCQkJCQl0aG91Z2h0czogNDY4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgV29ydGhGdXp6aW5nIENyaXRlcmlhIGZvciBhIGB3Y24zNnh4YCBQYXRjaCoqCgpPa2F5LCBzbyB0aGUgaW5pdGlhbCB0aG91Z2h0IGlzLCB0aGVyZSBhcmUgbm8gJiMzNDtwc2V1ZG8tc3lzY2FsbHMmIzM0OyBpbnZvbHZlZCBoZXJlLiBCdXQgd2FpdCwgSSByZWNhbGwgc2VlaW5nIGBzeXpfZGV2X3BsYXRmb3JtX2FkZGAgb3Igc29tZXRoaW5nIHNpbWlsYXIgYmVpbmcgdXNlZCBieSBzeXpib3Q/IE5vLCBhY3R1YWxseSBzeXpib3QgaXRzZWxmIGRvZXNuJiMzOTt0IGhhdmUgc3VjaCBhIHNwZWNpZmljIHN5c2NhbGwuIEl0IHV0aWxpemVzIGBzeXpfdXNiX2Nvbm5lY3RgLCBgc3l6XzgwMjExX2luamVjdF9mcmFtZWAsIGV0Yy4gdG8gaW50ZXJhY3Qgd2l0aCB0aGUgdGFyZ2V0LiBIb3cgY291bGQgc3l6Ym90IHJlYWNoIHRoaXMgcGFydGljdWxhciBkcml2ZXIsIHRoZW4/CgpQZXJoYXBzIGB3Y24zNnh4YCBpcyBjb21waWxlZCBkaXJlY3RseSBpbnRvIHRoZSBrZXJuZWwgYW5kIGF1dG9tYXRpY2FsbHkgcHJvYmVkIGlmIHRoZSBkZXZpY2UgdHJlZSBpbmNsdWRlcyBpdD8gT3IsIG1heWJlIHN5emJvdCB1c2VzIGEgY3VzdG9tIGRldmljZSB0cmVlLCBvciBtYXliZSBpdCYjMzk7cyBhIHBsYXRmb3JtIGRldmljZSB0aGF0IGNhbiBiZSBpbnN0YW50aWF0ZWQgdGhyb3VnaCBzeXNmcz8gQWgsIHJpZ2h0LCBgd2NuMzZ4eGAgaXMgYSBwbGF0Zm9ybSBkcml2ZXIuIFBsYXRmb3JtIGRldmljZXMgY2FuIGJlIGNyZWF0ZWQgdGhyb3VnaCB0aGUgZGV2aWNlIHRyZWUgKm9yKiBvdGhlciBkcml2ZXJzLgoKT2theSwgbGV0JiMzOTtzIHJlbWVtYmVyIHN5emJvdCB0ZXN0cyBvbiBHQ0Ugd2l0aCBhIHNwZWNpZmljIGtlcm5lbCBjb25maWcuIElmIHN5emJvdCBoYXMgZm91bmQgaXQsIHRoZW4gaXQgKmlzKiByZWFjaGFibGUuIFRoZSBwcm9tcHQgc2F5cyB0byByZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBpbnZvbHZlcyBjb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLiBJcyBgd2NuMzZ4eGAgYSBQQ0llIGRyaXZlcj8gTm8sIGl0JiMzOTtzIGEgcGxhdGZvcm0gZHJpdmVyIGZvciBRdWFsY29tbSBBdGhlcm9zIFdDTjM2NjAvMzY4MC4gU28gdGhlIG5leHQga2V5IHF1ZXN0aW9uOiBJcyBpdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VPwoKV2FpdCwgaWYgc3l6Ym90IGhhcyBmb3VuZCBpdCwgdGhlbiBpdCBtZWFucyBpdCAqaXMqIHJlYWNoYWJsZSBpbiBzeXpib3QmIzM5O3MgZW52aXJvbm1lbnQsIHdoaWNoIGlzIFFFTVUhIFNvIHRoZSBhbnN3ZXIgaXMgeWVzLiBCdXQsIGRvZXMgc3l6Ym90IGhhdmUgYSBgcWNvbWAgdGFyZ2V0IG9yIHRlc3RzIEFSTTY0PyBZZXMsIHN5emJvdCBkb2VzIHRlc3QgQVJNNjQgYW5kIEFSTS4gSWYgc3l6Ym90IGZvdW5kIGl0LCBpdCYjMzk7cyBkZWZpbml0ZWx5IHJlYWNoYWJsZS4KClRoZSBwYXRjaCBpdHNlbGYgYWRkcyBhIGxlbmd0aCBjaGVjayB0byBgd2NuMzZ4eF9zbWRfcnNwX3Byb2Nlc3NgLiBUaGUgbmV4dCBzdGVwIGlzIGNsZWFyOiBJIG5lZWQgdG8gZGlnIGludG8gdGhlIGB3Y24zNnh4X3NtZF9yc3BfcHJvY2Vzc2AgZnVuY3Rpb24gdG8gdW5kZXJzdGFuZCB0aGUgc3Vycm91bmRpbmcgY29kZSBhbmQgZGV0ZXJtaW5lIHRoZSBzY29wZSBvZiB0aGlzIGNoYW5nZSwgYW5kIHNlZSB3aGF0IGZ1bmN0aW9ucyB0aGUgY3VycmVudCBjb2RlIGNhbGxzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNiAxODo1NTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L3NtZC5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMzI0OCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA1MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDszMjQ4Olx0aW50IHdjbjM2eHhfc21kX3JzcF9wcm9jZXNzKHN0cnVjdCBycG1zZ19kZXZpY2UgKnJwZGV2LFxuMzI0OTpcdFx0XHRcdCAgICB2b2lkICpidWYsIGludCBsZW4sIHZvaWQgKnByaXYsIHUzMiBhZGRyKVxuMzI1MDpcdHtcbjMyNTE6XHRcdGNvbnN0IHN0cnVjdCB3Y24zNnh4X2hhbF9tc2dfaGVhZGVyICptc2dfaGVhZGVyID0gYnVmO1xuMzI1MjpcdFx0c3RydWN0IGllZWU4MDIxMV9odyAqaHcgPSBwcml2O1xuMzI1MzpcdFx0c3RydWN0IHdjbjM2eHggKndjbiA9IGh3LVx1MDAzZXByaXY7XG4zMjU0Olx0XHRzdHJ1Y3Qgd2NuMzZ4eF9oYWxfaW5kX21zZyAqbXNnX2luZDtcbjMyNTU6XHRcdHdjbjM2eHhfZGJnX2R1bXAoV0NOMzZYWF9EQkdfU01EX0RVTVAsIFwmIzM0O1NNRCBcdTAwM2NcdTAwM2NcdTAwM2MgXCYjMzQ7LCBidWYsIGxlbik7XG4zMjU2Olx0XG4zMjU3Olx0XHRpZiAobGVuIFx1MDAzYyBzaXplb2YoKm1zZ19oZWFkZXIpKSB7XG4zMjU4Olx0XHRcdHdjbjM2eHhfd2FybihcJiMzNDtDb3JydXB0ZWQgSEFMIG1lc3NhZ2U6IGxlbmd0aCAlZFxcblwmIzM0OywgbGVuKTtcbjMyNTk6XHRcdFx0cmV0dXJuIDA7XG4zMjYwOlx0XHR9XG4zMjYxOlx0XG4zMjYyOlx0XHRzd2l0Y2ggKG1zZ19oZWFkZXItXHUwMDNlbXNnX3R5cGUpIHtcbjMyNjM6XHRcdGNhc2UgV0NOMzZYWF9IQUxfU1RBUlRfUlNQOlxuMzI2NDpcdFx0Y2FzZSBXQ04zNlhYX0hBTF9DT05GSUdfU1RBX1JTUDpcbjMyNjU6XHRcdGNhc2UgV0NOMzZYWF9IQUxfQ09ORklHX0JTU19SU1A6XG4zMjY2Olx0XHRjYXNlIFdDTjM2WFhfSEFMX0FERF9TVEFfU0VMRl9SU1A6XG4zMjY3Olx0XHRjYXNlIFdDTjM2WFhfSEFMX1NUT1BfUlNQOlxuMzI2ODpcdFx0Y2FzZSBXQ04zNlhYX0hBTF9ERUxfU1RBX1NFTEZfUlNQOlxuMzI2OTpcdFx0Y2FzZSBXQ04zNlhYX0hBTF9ERUxFVEVfU1RBX1JTUDpcbjMyNzA6XHRcdGNhc2UgV0NOMzZYWF9IQUxfSU5JVF9TQ0FOX1JTUDpcbjMyNzE6XHRcdGNhc2UgV0NOMzZYWF9IQUxfU1RBUlRfU0NBTl9SU1A6XG4zMjcyOlx0XHRjYXNlIFdDTjM2WFhfSEFMX0VORF9TQ0FOX1JTUDpcbjMyNzM6XHRcdGNhc2UgV0NOMzZYWF9IQUxfRklOSVNIX1NDQU5fUlNQOlxuMzI3NDpcdFx0Y2FzZSBXQ04zNlhYX0hBTF9ET1dOTE9BRF9OVl9SU1A6XG4zMjc1Olx0XHRjYXNlIFdDTjM2WFhfSEFMX0RFTEVURV9CU1NfUlNQOlxuMzI3NjpcdFx0Y2FzZSBXQ04zNlhYX0hBTF9TRU5EX0JFQUNPTl9SU1A6XG4zMjc3Olx0XHRjYXNlIFdDTjM2WFhfSEFMX1NFVF9MSU5LX1NUX1JTUDpcbjMyNzg6XHRcdGNhc2UgV0NOMzZYWF9IQUxfVVBEQVRFX1BST0JFX1JTUF9URU1QTEFURV9SU1A6XG4zMjc5Olx0XHRjYXNlIFdDTjM2WFhfSEFMX1NFVF9CU1NLRVlfUlNQOlxuMzI4MDpcdFx0Y2FzZSBXQ04zNlhYX0hBTF9TRVRfU1RBS0VZX1JTUDpcbjMyODE6XHRcdGNhc2UgV0NOMzZYWF9IQUxfUk1WX1NUQUtFWV9SU1A6XG4zMjgyOlx0XHRjYXNlIFdDTjM2WFhfSEFMX1JNVl9CU1NLRVlfUlNQOlxuMzI4MzpcdFx0Y2FzZSBXQ04zNlhYX0hBTF9FTlRFUl9CTVBTX1JTUDpcbjMyODQ6XHRcdGNhc2UgV0NOMzZYWF9IQUxfU0VUX1BPV0VSX1BBUkFNU19SU1A6XG4zMjg1Olx0XHRjYXNlIFdDTjM2WFhfSEFMX0VYSVRfQk1QU19SU1A6XG4zMjg2Olx0XHRjYXNlIFdDTjM2WFhfSEFMX0tFRVBfQUxJVkVfUlNQOlxuMzI4NzpcdFx0Y2FzZSBXQ04zNlhYX0hBTF9EVU1QX0NPTU1BTkRfUlNQOlxuMzI4ODpcdFx0Y2FzZSBXQ04zNlhYX0hBTF9BRERfQkFfU0VTU0lPTl9SU1A6XG4zMjg5Olx0XHRjYXNlIFdDTjM2WFhfSEFMX0FERF9CQV9SU1A6XG4zMjkwOlx0XHRjYXNlIFdDTjM2WFhfSEFMX0RFTF9CQV9SU1A6XG4zMjkxOlx0XHRjYXNlIFdDTjM2WFhfSEFMX0dFVF9TVEFUU19SU1A6XG4zMjkyOlx0XHRjYXNlIFdDTjM2WFhfSEFMX1RSSUdHRVJfQkFfUlNQOlxuMzI5MzpcdFx0Y2FzZSBXQ04zNlhYX0hBTF9VUERBVEVfQ0ZHX1JTUDpcbjMyOTQ6XHRcdGNhc2UgV0NOMzZYWF9IQUxfSk9JTl9SU1A6XG4zMjk1Olx0XHRjYXNlIFdDTjM2WFhfSEFMX1VQREFURV9TQ0FOX1BBUkFNX1JTUDpcbjMyOTY6XHRcdGNhc2UgV0NOMzZYWF9IQUxfQ0hfU1dJVENIX1JTUDpcbjMyOTc6XHRcdGNhc2UgV0NOMzZYWF9IQUxfUFJPQ0VTU19QVFRfUlNQOlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNiAxODo1NTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMDY5MgoJCQkJCQkJb3V0cHV0OiA0NwoJCQkJCQkJdGhvdWdodHM6IDM1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQmIzM5O3MgaW5uZXIgbW9ub2xvZ3VlOgoKKipGb2N1c2luZyBvbiB0aGUgUmVzcG9uc2UgUHJvY2Vzc2luZyoqCgpSaWdodCwgdGhlIGB3Y24zNnh4X3NtZF9yc3BfcHJvY2Vzc2AgZnVuY3Rpb24uIFRoYXQmIzM5O3MgdGhlIGxpa2VseSBrZXkgdG8gdW5kZXJzdGFuZGluZyBob3cgdGhlIGRyaXZlciBoYW5kbGVzIHJlc3BvbnNlcy4gTXkgaW5pdGlhbCBpbnN0aW5jdCBpcyB0byBob25lIGluIG9uIHRoaXMgb25lLiBCdXQsIGJlZm9yZSBJIGdldCB0b28gZGVlcCwgbGV0JiMzOTtzIHRha2UgYSBxdWljayBsb29rIGFyb3VuZCB0aGUgY29kZWJhc2UuIEkgbmVlZCB0byBtYWtlIHN1cmUgSSYjMzk7bSBub3QgbWlzc2luZyBhbnkgb3RoZXIgcmVsYXRlZCBmdW5jdGlvbnMuIFRoZXJlIGNvdWxkIGJlIG90aGVycyB0aGF0IGludGVyYWN0IHdpdGggaXQsIG9yIG1heWJlIGV2ZW4gcHJlLXByb2Nlc3MgdGhlIGRhdGEgYmVmb3JlIGl0JiMzOTtzIHNlbnQgdG8gdGhpcyBmdW5jdGlvbi4gQSBxdWljayBzY2FuIHdpbGwgY29uZmlybSBteSBpbml0aWFsIGh5cG90aGVzaXMgYW5kIHByZXZlbnQgd2FzdGVkIHRpbWUuIEkgd2lsbCBjaGVjayBmb3IgcmVsYXRlZCBmdW5jdGlvbnMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDE4OjU1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvc21kLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAzMjk4LAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDUwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OzMyOTg6XHRcdGNhc2UgV0NOMzZYWF9IQUxfRkVBVFVSRV9DQVBTX0VYQ0hBTkdFX1JTUDpcbjMyOTk6XHRcdGNhc2UgV0NOMzZYWF9IQUxfODAyM19NVUxUSUNBU1RfTElTVF9SU1A6XG4zMzAwOlx0XHRjYXNlIFdDTjM2WFhfSEFMX1NUQVJUX1NDQU5fT0ZGTE9BRF9SU1A6XG4zMzAxOlx0XHRjYXNlIFdDTjM2WFhfSEFMX1NUT1BfU0NBTl9PRkZMT0FEX1JTUDpcbjMzMDI6XHRcdGNhc2UgV0NOMzZYWF9IQUxfSE9TVF9PRkZMT0FEX1JTUDpcbjMzMDM6XHRcdGNhc2UgV0NOMzZYWF9IQUxfR1RLX09GRkxPQURfUlNQOlxuMzMwNDpcdFx0Y2FzZSBXQ04zNlhYX0hBTF9HVEtfT0ZGTE9BRF9HRVRJTkZPX1JTUDpcbjMzMDU6XHRcdGNhc2UgV0NOMzZYWF9IQUxfSE9TVF9SRVNVTUVfUlNQOlxuMzMwNjpcdFx0Y2FzZSBXQ04zNlhYX0hBTF9FTlRFUl9JTVBTX1JTUDpcbjMzMDc6XHRcdGNhc2UgV0NOMzZYWF9IQUxfRVhJVF9JTVBTX1JTUDpcbjMzMDg6XHRcdGNhc2UgV0NOMzZYWF9IQUxfVVBEQVRFX0NIQU5ORUxfTElTVF9SU1A6XG4zMzA5Olx0XHRjYXNlIFdDTjM2WFhfSEFMX0FERF9CQ05fRklMVEVSX1JTUDpcbjMzMTA6XHRcdFx0aWYgKGxlbiBcdTAwM2UgV0NOMzZYWF9IQUxfQlVGX1NJWkUpIHtcbjMzMTE6XHRcdFx0XHR3Y24zNnh4X3dhcm4oXCYjMzQ7SEFMIHJlc3BvbnNlIHRvbyBsYXJnZTogJWRcXG5cJiMzNDssIGxlbik7XG4zMzEyOlx0XHRcdFx0YnJlYWs7XG4zMzEzOlx0XHRcdH1cbjMzMTQ6XHRcdFx0bWVtY3B5KHdjbi1cdTAwM2VoYWxfYnVmLCBidWYsIGxlbik7XG4zMzE1Olx0XHRcdHdjbi1cdTAwM2VoYWxfcnNwX2xlbiA9IGxlbjtcbjMzMTY6XHRcdFx0Y29tcGxldGUoXHUwMDI2d2NuLVx1MDAzZWhhbF9yc3BfY29tcGwpO1xuMzMxNzpcdFx0XHRicmVhaztcbjMzMTg6XHRcbjMzMTk6XHRcdGNhc2UgV0NOMzZYWF9IQUxfQ09FWF9JTkQ6XG4zMzIwOlx0XHRjYXNlIFdDTjM2WFhfSEFMX0FWT0lEX0ZSRVFfUkFOR0VfSU5EOlxuMzMyMTpcdFx0Y2FzZSBXQ04zNlhYX0hBTF9ERUxfQkFfSU5EOlxuMzMyMjpcdFx0Y2FzZSBXQ04zNlhYX0hBTF9PVEFfVFhfQ09NUExfSU5EOlxuMzMyMzpcdFx0Y2FzZSBXQ04zNlhYX0hBTF9NSVNTRURfQkVBQ09OX0lORDpcbjMzMjQ6XHRcdGNhc2UgV0NOMzZYWF9IQUxfREVMRVRFX1NUQV9DT05URVhUX0lORDpcbjMzMjU6XHRcdGNhc2UgV0NOMzZYWF9IQUxfUFJJTlRfUkVHX0lORk9fSU5EOlxuMzMyNjpcdFx0Y2FzZSBXQ04zNlhYX0hBTF9TQ0FOX09GRkxPQURfSU5EOlxuMzMyNzpcdFx0XHRtc2dfaW5kID0ga21hbGxvY19mbGV4KCptc2dfaW5kLCBtc2csIGxlbiwgR0ZQX0FUT01JQyk7XG4zMzI4Olx0XHRcdGlmICghbXNnX2luZCkge1xuMzMyOTpcdFx0XHRcdHdjbjM2eHhfZXJyKFwmIzM0O1J1biBvdXQgb2YgbWVtb3J5IHdoaWxlIGhhbmRsaW5nIFNNRF9FVkVOVCAoJWQpXFxuXCYjMzQ7LFxuMzMzMDpcdFx0XHRcdFx0ICAgIG1zZ19oZWFkZXItXHUwMDNlbXNnX3R5cGUpO1xuMzMzMTpcdFx0XHRcdHJldHVybiAtRU5PTUVNO1xuMzMzMjpcdFx0XHR9XG4zMzMzOlx0XG4zMzM0Olx0XHRcdG1zZ19pbmQtXHUwMDNlbXNnX2xlbiA9IGxlbjtcbjMzMzU6XHRcdFx0bWVtY3B5KG1zZ19pbmQtXHUwMDNlbXNnLCBidWYsIGxlbik7XG4zMzM2Olx0XG4zMzM3Olx0XHRcdHNwaW5fbG9jayhcdTAwMjZ3Y24tXHUwMDNlaGFsX2luZF9sb2NrKTtcbjMzMzg6XHRcdFx0bGlzdF9hZGRfdGFpbChcdTAwMjZtc2dfaW5kLVx1MDAzZWxpc3QsIFx1MDAyNndjbi1cdTAwM2VoYWxfaW5kX3F1ZXVlKTtcbjMzMzk6XHRcdFx0cXVldWVfd29yayh3Y24tXHUwMDNlaGFsX2luZF93cSwgXHUwMDI2d2NuLVx1MDAzZWhhbF9pbmRfd29yayk7XG4zMzQwOlx0XHRcdHNwaW5fdW5sb2NrKFx1MDAyNndjbi1cdTAwM2VoYWxfaW5kX2xvY2spO1xuMzM0MTpcdFx0XHR3Y24zNnh4X2RiZyhXQ04zNlhYX0RCR19IQUwsIFwmIzM0O2luZGljYXRpb24gYXJyaXZlZFxcblwmIzM0Oyk7XG4zMzQyOlx0XHRcdGJyZWFrO1xuMzM0MzpcdFx0ZGVmYXVsdDpcbjMzNDQ6XHRcdFx0d2NuMzZ4eF9lcnIoXCYjMzQ7U01EX0VWRU5UICglZCkgbm90IHN1cHBvcnRlZFxcblwmIzM0OyxcbjMzNDU6XHRcdFx0XHQgICAgICBtc2dfaGVhZGVyLVx1MDAzZW1zZ190eXBlKTtcbjMzNDY6XHRcdH1cbjMzNDc6XHRcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMTg6NTU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzE5NDQKCQkJCQkJCW91dHB1dDogNDIKCQkJCQkJCXRob3VnaHRzOiAxMDgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBTTUQgUmVzcG9uc2UgUHJvY2Vzc2luZyBGdW5jdGlvbioqCgpPa2F5LCBzbyB0aGUgaXNzdWUgSSYjMzk7bSBsb29raW5nIGF0IHJldm9sdmVzIGFyb3VuZCBhIGZ1bmN0aW9uIGNhbGxlZCBgd2NuMzZ4eF9zbWRfcnNwX3Byb2Nlc3NgLiBJJiMzOTttIHByZXR0eSBzdXJlIHRoYXQmIzM5O3Mgd2hlcmUgdGhlIGluY29taW5nIG1lc3NhZ2VzIGZyb20gdGhlIFNNRCBjaGFubmVsIGFyZSBoYW5kbGVkLiBJJiMzOTt2ZSBjb25maXJtZWQgdGhhdCBpdCYjMzk7cyBhY3R1YWxseSByZWFjaGFibGUgYW5kIHRoYXQgaXQmIzM5O3Mgd29ya2luZyBhcyBleHBlY3RlZC4gTGV0JiMzOTtzIG1hcmsgaXQgYXMgYSB0YXJnZXQgZm9yIGZ1enppbmcg4oCTIEkmIzM5O2xsIHNldCBgV29ydGhGdXp6aW5nPXRydWVgLgoKRm9yIHRoZSBmb2N1cyBzeW1ib2xzLCBJJiMzOTtsbCBkZWZpbml0ZWx5IHNwZWNpZnkgYHdjbjM2eHhfc21kX3JzcF9wcm9jZXNzYC4gV2UgbmVlZCB0byBkZWZpbmUgc29tZSBzcGVjaWZpYyBjb25maWd1cmF0aW9ucyBmb3IgZnV6emluZyBzbyBsZXQmIzM5O3MgdXNlIGBXQ04zNlhYYCwgYFFDT01fV0NOU1NfQ1RSTGAsIGFuZCBgUlBNU0dgLgoKQmVmb3JlIEkgZGlnIGluIHRvbyBkZWVwIEkgc2hvdWxkIHByb2JhYmx5IGRvdWJsZSBjaGVjayB0aGUgS2NvbmZpZyBmb3IgYFdDTjM2WFhgIGFuZCBtYWtlIHN1cmUgaXQmIzM5O3Mgc2V0IHVwIGNvcnJlY3RseS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMTg6NTY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAyMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgICAxOlx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogSVNDXG4gICAyOlx0Y29uZmlnIFdDTjM2WFhcbiAgIDM6XHRcdHRyaXN0YXRlIFwmIzM0O1F1YWxjb21tIEF0aGVyb3MgV0NOMzY2MC8zNjgwIHN1cHBvcnRcJiMzNDtcbiAgIDQ6XHRcdGRlcGVuZHMgb24gTUFDODAyMTEgXHUwMDI2XHUwMDI2IEhBU19ETUFcbiAgIDU6XHRcdGRlcGVuZHMgb24gUUNPTV9XQ05TU19DVFJMIHx8IFFDT01fV0NOU1NfQ1RSTD1uXG4gICA2Olx0XHRkZXBlbmRzIG9uIFJQTVNHIHx8IFJQTVNHPW5cbiAgIDc6XHRcdGhlbHBcbiAgIDg6XHRcdCAgVGhpcyBtb2R1bGUgYWRkcyBzdXBwb3J0IGZvciB3aXJlbGVzcyBhZGFwdGVycyBiYXNlZCBvblxuICAgOTpcdFx0ICBRdWFsY29tbSBBdGhlcm9zIFdDTjM2NjAgYW5kIFdDTjM2ODAgbW9iaWxlIGNoaXBzZXRzLlxuICAxMDpcdFxuICAxMTpcdFx0ICBJZiB5b3UgY2hvb3NlIHRvIGJ1aWxkIGEgbW9kdWxlLCBpdCYjMzk7bGwgYmUgY2FsbGVkIHdjbjM2eHguXG4gIDEyOlx0XG4gIDEzOlx0Y29uZmlnIFdDTjM2WFhfREVCVUdGU1xuICAxNDpcdFx0Ym9vbCBcJiMzNDtXQ04zNlhYIGRlYnVnZnMgc3VwcG9ydFwmIzM0O1xuICAxNTpcdFx0ZGVwZW5kcyBvbiBXQ04zNlhYXG4gIDE2Olx0XHRoZWxwXG4gIDE3Olx0XHQgIEVuYWJsZWQgZGVidWdmcyBzdXBwb3J0XG4gIDE4Olx0XG4gIDE5Olx0XHQgIElmIHVuc3VyZSwgc2F5IFkgdG8gbWFrZSBpdCBlYXNpZXIgdG8gZGVidWcgcHJvYmxlbXMuXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDE4OjU2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMyNTg0CgkJCQkJCQlvdXRwdXQ6IDIzCgkJCQkJCQl0aG91Z2h0czogODMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBXaS1GaSBEcml2ZXIgRGVwZW5kZW5jeSoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBkcml2ZXIgYW5kIGltbWVkaWF0ZWx5LCB0aGUgZGVwZW5kZW5jaWVzIGFyZSBqdW1waW5nIG91dC4gSXQgaGluZ2VzIG9uIGBNQUM4MDIxMWAgYW5kIGBIQVNfRE1BYCwgd2hpY2ggbWFrZXMgc2Vuc2UgZm9yIGFueSBtb2Rlcm4gV2ktRmkgaW1wbGVtZW50YXRpb247IERNQSBpcyBjcml0aWNhbCBmb3IgZWZmaWNpZW50IGRhdGEgdHJhbnNmZXIuIEJ1dCB0aGVuIGl0IGFkZHMgYFFDT01fV0NOU1NfQ1RSTCB8fCBRQ09NX1dDTlNTX0NUUkw9bmAuIFRoYXQgc2Vjb25kIHBhcnQgaXMgd2hhdCBjYXRjaGVzIG15IGV5ZS4gSWYgYFFDT01fV0NOU1NfQ1RSTGAgaXMgKnNldCB0byBmYWxzZSosIGhvdyB0aGUgaGVsbCBkb2VzIHRoaXMgdGhpbmcgZXZlbiBmdW5jdGlvbj8gSXQgc2VlbXMgY291bnRlci1pbnR1aXRpdmUgdG8gaGF2ZSBhIGRlcGVuZGVuY3kgdGhhdCBkaXNhYmxlcyB0aGUgY29yZSBmdW5jdGlvbmFsaXR5LiBJIG5lZWQgdG8gZ2V0IHRvIHRoZSBib3R0b20gb2YgdGhpcy4gUmlnaHQsIGxldCYjMzk7cyBkaXZlIGludG8gdGhlIEtjb25maWcgZm9yIGBkcml2ZXJzL3NvYy9xY29tL3djbnNzX2N0cmwuY2AgYW5kIGZpZ3VyZSBvdXQgd2hhdCYjMzk7cyByZWFsbHkgZ29pbmcgb24gdGhlcmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDE4OjU2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBRQ09NX1dDTlNTX0NUUkwmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9zb2MvcWNvbS9LY29uZmlnPTIzOT1jb25maWcgUUNPTV9TVEFUU1xuLS1cbmRyaXZlcnMvc29jL3Fjb20vS2NvbmZpZy0yNDktXG5kcml2ZXJzL3NvYy9xY29tL0tjb25maWc6MjUwOmNvbmZpZyBRQ09NX1dDTlNTX0NUUkxcbmRyaXZlcnMvc29jL3Fjb20vS2NvbmZpZy0yNTEtXHR0cmlzdGF0ZSBcJiMzNDtRdWFsY29tbSBXQ05TUyBjb250cm9sIGRyaXZlclwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNiAxODo1NjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMjk4MAoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDE1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIGEgc3VtbWFyeSBvZiBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIEkgd2VyZSB0aGUgb25lIHRoaW5raW5nIGl0OgoKKipEaXZpbmcgaW50byB0aGUgUUNPTSBTb0MgRHJpdmVyIENvbmZpZ3VyYXRpb24qKgoKT2theSwgdGltZSB0byBnZXQgbXkgaGFuZHMgZGlydHkuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIHRoZSBRdWFsY29tbSBTeXN0ZW0tb24tQ2hpcCAoU29DKSBkcml2ZXJzLiBNeSBmb2N1cyBpcyBnb2luZyB0byBiZSBvbiB0aGUgYGRyaXZlcnMvc29jL3Fjb20vS2NvbmZpZ2AgZmlsZS4gVGhpcyBpcyB3aGVyZSBJIGV4cGVjdCB0byBmaW5kIHRoZSBtZWF0IG9mIHRoZSBkcml2ZXIgc2VsZWN0aW9uIGFuZCBmZWF0dXJlIGVuYWJsZW1lbnQgZm9yIHRoZXNlIFFDT00gZGV2aWNlcy4gVGhpcyBLY29uZmlnIGZpbGUgd2lsbCBkZWZpbmUgdGhlIGRlcGVuZGVuY2llcywgc3ltYm9scywgYW5kIGhlbHAgdGV4dCB0aGF0IHVzZXJzIHdpbGwgc2VlIHdoZW4gdGhleSBjb25maWd1cmUgdGhlaXIga2VybmVsIGZvciBhIFF1YWxjb21tLWJhc2VkIHN5c3RlbS4gSSBhbnRpY2lwYXRlIHNlZWluZyB0aGluZ3MgbGlrZToKCiogICAqKkNoaXBzZXQtc3BlY2lmaWMgb3B0aW9uczoqKiBJIGV4cGVjdCBkaWZmZXJlbnQgYGNvbmZpZ2Agb3B0aW9ucyBmb3IgZGlmZmVyZW50IFNuYXBkcmFnb24gdmFyaWFudHMgKGUuZy4sIDggR2VuIDEsIDg4OCwgZXRjLiksIHdoaWNoIHdpbGwgZW5hYmxlIHRoZSBhcHByb3ByaWF0ZSBkcml2ZXJzIGZvciBzcGVjaWZpYyBoYXJkd2FyZSBmZWF0dXJlcyB3aXRoaW4gdGhvc2UgU29Dcy4KKiAgICoqUGVyaXBoZXJhbCBlbmFibGVtZW50czoqKiBJJiMzOTtsbCBiZSBsb29raW5nIGZvciBjb25maWd1cmF0aW9uIG9wdGlvbnMgcmVsYXRlZCB0byBpbmRpdmlkdWFsIHBlcmlwaGVyYWxzLCBsaWtlIHRoZSBjYW1lcmEgaW50ZXJmYWNlLCBkaXNwbGF5IGNvbnRyb2xsZXJzLCBhdWRpbyBjb2RlY3MsIFVTQiBjb250cm9sbGVycywgYW5kIG1lbW9yeSBjb250cm9sbGVycy4gVGhlc2Ugd2lsbCBsaWtlbHkgaGF2ZSBhc3NvY2lhdGVkIGRlcGVuZGVuY2llcyBvbiBvdGhlciBLY29uZmlnIHN5bWJvbHMgYW5kIGJvYXJkIGNvbmZpZ3VyYXRpb25zLgoqICAgKipQb3dlciBtYW5hZ2VtZW50IGNvbnNpZGVyYXRpb25zOioqIEdpdmVuIHRoZSBpbXBvcnRhbmNlIG9mIHBvd2VyIGVmZmljaWVuY3kgaW4gbW9iaWxlIGRldmljZXMsIEkgZnVsbHkgZXhwZWN0IHRvIGZpbmQgYSBzZWN0aW9uIHJlbGF0ZWQgdG8gcG93ZXIgbWFuYWdlbWVudCBmZWF0dXJlcywgaW5jbHVkaW5nIGNsb2Nrcywgdm9sdGFnZSByZWd1bGF0b3JzLCBhbmQgdGhlcm1hbCBtYW5hZ2VtZW50LiBUaGUgS2NvbmZpZyBmaWxlIHdpbGwgZ3VpZGUgd2hpY2ggZmVhdHVyZXMgSSBjYW4gdG9nZ2xlLgoqICAgKipEb2N1bWVudGF0aW9uIGFuZCBIZWxwIFRleHQ6KiogSSBuZWVkIHRvIHBheSBjbG9zZSBhdHRlbnRpb24gdG8gdGhlIGhlbHAgdGV4dCBhc3NvY2lhdGVkIHdpdGggZWFjaCBjb25maWd1cmF0aW9uIG9wdGlvbi4gVGhpcyBpcyBjcml0aWNhbCBmb3IgdW5kZXJzdGFuZGluZyB0aGUgcHVycG9zZSBvZiBlYWNoIHNldHRpbmcgYW5kIHRoZSBwb3RlbnRpYWwgaW1wbGljYXRpb25zIG9mIGVuYWJsaW5nIG9yIGRpc2FibGluZyBhIHNwZWNpZmljIGZlYXR1cmUuIFRoaXMgd2lsbCBhaWQgd2hlbiBJIGFtIGRlc2lnbmluZyB0aGUga2VybmVsIHRvIG1lZXQgcmVxdWlyZW1lbnRzLgoqICAgKipEZXBlbmRlbmNpZXMgYW5kIERlZmF1bHRzOioqIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGUgS2NvbmZpZyBmaWxlIGludGVyYWN0cyB3aXRoIG90aGVyIGNvbmZpZ3VyYXRpb24gZmlsZXMsIHN1Y2ggYXMgdGhvc2UgcmVsYXRlZCB0byB0aGUgYm9hcmQgc3VwcG9ydCBwYWNrYWdlIChCU1ApLiBBbHNvLCB0aGUgZGVwZW5kZW5jaWVzIHRoYXQgZ292ZXJuIHRoZSBhdmFpbGFiaWxpdHkgb2YgZGlmZmVyZW50IG9wdGlvbnMgYXJlIGNydWNpYWwsIGFzIHdlbGwgYXMgdGhlIGRlZmF1bHQgdmFsdWVzLgoqICAgKipBcmNoaXRlY3R1cmFsIE51YW5jZXM6KiogSSBrbm93IFF1YWxjb21tIGhhcyBpdHMgb3duIGFyY2hpdGVjdHVyYWwgcXVpcmtzLCBzbyBJJiMzOTtsbCBiZSBsb29raW5nIGZvciBjb25maWd1cmF0aW9uIGVsZW1lbnRzIHRoYXQgc3BlY2lmaWNhbGx5IGFkZHJlc3MgdGhlc2UgYXNwZWN0cyDigJMgcGVyaGFwcyByZWxhdGVkIHRvIHRoZWlyIGludGVyY29ubmVjdCBmYWJyaWMgb3IgdGhlaXIgc2VjdXJpdHkgZmVhdHVyZXMuCgpJJiMzOTttIHJlYWR5IHRvIGRpZyBpbiBhbmQgZGVjb25zdHJ1Y3QgdGhpcyBLY29uZmlnIGZpbGUsIHVuZGVyc3RhbmRpbmcgaG93IGl0IHN0ZWVycyB0aGUgc2VsZWN0aW9uIGFuZCBjb25maWd1cmF0aW9uIG9mIFFDT00gU29DIGRyaXZlcnMgd2l0aGluIHRoZSBrZXJuZWwuIEl04oCZcyB0aW1lIHRvIGZpbmQgb3V0IHdoYXQgc2VjcmV0cyB0aGlzIGZpbGUgaG9sZHMhCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDE4OjU2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9zb2MvcWNvbS9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMjUwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDEwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAyNTA6XHRjb25maWcgUUNPTV9XQ05TU19DVFJMXG4gMjUxOlx0XHR0cmlzdGF0ZSBcJiMzNDtRdWFsY29tbSBXQ05TUyBjb250cm9sIGRyaXZlclwmIzM0O1xuIDI1MjpcdFx0ZGVwZW5kcyBvbiBBUkNIX1FDT00gfHwgQ09NUElMRV9URVNUXG4gMjUzOlx0XHRkZXBlbmRzIG9uIFJQTVNHXG4gMjU0Olx0XHRoZWxwXG4gMjU1Olx0XHQgIENsaWVudCBkcml2ZXIgZm9yIHRoZSBXQ05TU19DVFJMIFNNRCBjaGFubmVsLCB1c2VkIHRvIGRvd25sb2FkIG52XG4gMjU2Olx0XHQgIGZpcm13YXJlIHRvIGEgbmV3bHkgYm9vdGVkIFdDTlNTIGNoaXAuXG4gMjU3Olx0XG4gMjU4Olx0Y29uZmlnIFFDT01fQVBSXG4gMjU5Olx0XHR0cmlzdGF0ZSBcJiMzNDtRdWFsY29tbSBBUFIvR1BSIEJ1cyAoQXN5bmNocm9ub3VzL0dlbmVyaWMgUGFja2V0IFJvdXRlcilcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40MC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMTg6NTY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzM3MTQKCQkJCQkJCW91dHB1dDogNDIKCQkJCQkJCXRob3VnaHRzOiAxMTcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBRQ09NX1dDTlNTX0NUUkwgRGVwZW5kZW5jeSoqCgpPa2F5LCBzbyBpdCBsb29rcyBsaWtlIGBRQ09NX1dDTlNTX0NUUkxgIGhhcyBhIGhhcmQgZGVwZW5kZW5jeSBvbiBgUlBNU0dgLiBUaGF0JiMzOTtzIHRoZSBiYXNlbGluZS4gTm93LCBpZiBJIGVuYWJsZSBgUUNPTV9XQ05TU19DVFJMYCwgdGhhdCBpbXBsaWVzIHRoYXQgdGhlIGB3Y24zNnh4YCBkcml2ZXIgKmNhbiogdXRpbGl6ZSBpdCwgcHJlc3VtYWJseSBmb3Igc29tZSBraW5kIG9mIGNvbnRyb2wgb3IgY29tbXVuaWNhdGlvbi4gTWFrZXMgc2Vuc2UuCgpCdXQgd2hhdCBpZiBJIGRpc2FibGUgYFFDT01fV0NOU1NfQ1RSTGA/IFRoZSBpbXBsaWNhdGlvbnMgYXJlIGltcG9ydGFudC4gVGhlIHRleHQgc3VnZ2VzdHMgdGhhdCBgd2NuMzZ4eGAgY2FuIHN0aWxsIGJlIGNvbXBpbGVkLCBidXQgZnVuY3Rpb25hbGl0eSB3aWxsIGxpa2VseSBiZSBjcmlwcGxlZC4gVGhlIGtleSBoZXJlIHNlZW1zIHRvIGJlIGBxY29tX3djbnNzX29wZW5fY2hhbm5lbGAuIElmIGBRQ09NX1dDTlNTX0NUUkxgIGlzIGRpc2FibGVkLCB0aGlzIGZ1bmN0aW9uIHByb2JhYmx5IGdldHMgc3R1YmJlZCBvdXQuIEl04oCZcyBlc3NlbnRpYWxseSByZW5kZXJlZCB1c2VsZXNzLgoKSSB0aGluayBpdOKAmXMgdGltZSB0byBkb3VibGUgY2hlY2sgdGhlIGhlYWRlciBmaWxlLiBJIG5lZWQgdG8gZGl2ZSBpbnRvIGBpbmNsdWRlL2xpbnV4L3NvYy9xY29tL3djbnNzX2N0cmwuaGAgdG8gc2VlIGV4YWN0bHkgd2hhdOKAmXMgZ29pbmcgb24gYXQgdGhhdCBsZXZlbCBhbmQgaG93IHRoYXQgZnVuY3Rpb24gaXMgYmVpbmcgaGFuZGxlZCBpbiBkaWZmZXJlbnQgY29uZmlndXJhdGlvbnMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDE4OjU2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7aW5jbHVkZS9saW51eC9zb2MvcWNvbS93Y25zc19jdHJsLmgmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDIwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgIDE6XHQvKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMCAqL1xuICAgMjpcdCNpZm5kZWYgX19XQ05TU19DVFJMX0hfX1xuICAgMzpcdCNkZWZpbmUgX19XQ05TU19DVFJMX0hfX1xuICAgNDpcdFxuICAgNTpcdCNpbmNsdWRlIFx1MDAzY2xpbnV4L3JwbXNnLmhcdTAwM2VcbiAgIDY6XHRcbiAgIDc6XHQjaWYgSVNfRU5BQkxFRChDT05GSUdfUUNPTV9XQ05TU19DVFJMKVxuICAgODpcdFxuICAgOTpcdHN0cnVjdCBycG1zZ19lbmRwb2ludCAqcWNvbV93Y25zc19vcGVuX2NoYW5uZWwodm9pZCAqd2Nuc3MsIGNvbnN0IGNoYXIgKm5hbWUsXG4gIDEwOlx0XHRcdFx0XHRcdCAgICAgICBycG1zZ19yeF9jYl90IGNiLCB2b2lkICpwcml2KTtcbiAgMTE6XHRcbiAgMTI6XHQjZWxzZVxuICAxMzpcdFxuICAxNDpcdHN0YXRpYyBzdHJ1Y3QgcnBtc2dfZW5kcG9pbnQgKnFjb21fd2Nuc3Nfb3Blbl9jaGFubmVsKHZvaWQgKndjbnNzLFxuICAxNTpcdFx0XHRcdFx0XHRcdCAgICAgIGNvbnN0IGNoYXIgKm5hbWUsXG4gIDE2Olx0XHRcdFx0XHRcdFx0ICAgICAgcnBtc2dfcnhfY2JfdCBjYixcbiAgMTc6XHRcdFx0XHRcdFx0XHQgICAgICB2b2lkICpwcml2KVxuICAxODpcdHtcbiAgMTk6XHRcdFdBUk5fT04oMSk7XG4gIDIwOlx0XHRyZXR1cm4gRVJSX1BUUigtRU5YSU8pO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNiAxODo1NjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNDQwOAoJCQkJCQkJb3V0cHV0OiAxNwoJCQkJCQkJdGhvdWdodHM6IDE2NwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBDb25maWd1cmF0aW9uIE11c2luZ3MqKgoKUmlnaHQsIHNvIEkmIzM5O20gZGlnZ2luZyBpbnRvIHRoaXMgY29kZSBhbmQgaXQmIzM5O3MgcHJldHR5IGNsZWFyOiBpZiBgQ09ORklHX1FDT01fV0NOU1NfQ1RSTGAgaXNuJiMzOTt0IGVuYWJsZWQsIHdlJiMzOTtyZSBnb2luZyB0byBnZXQgYSBgLUVOWElPYCBlcnJvciBmcm9tIGBxY29tX3djbnNzX29wZW5fY2hhbm5lbGAgYW5kIGEgcmF0aGVyIGFubm95aW5nIGBXQVJOX09OKDEpYC4gVGhhdCYjMzk7cyBhIG5vLWdvLiBUaGVyZWZvcmUsIHdlICphYnNvbHV0ZWx5KiBuZWVkIGBRQ09NX1dDTlNTX0NUUkxgIGVuYWJsZWQuIAoKTm93LCBJIHJlbWVtYmVyIGZyb20gdGhlIGJ1aWxkIGNvbmZpZyB0aGF0IGBRQ09NX1dDTlNTX0NUUkxgIGRlcGVuZHMgb24gYFJQTVNHYC4gRmluZSwgbm8gcHJvYmxlbSwgYWRkIHRoYXQgdG8gdGhlIGxpc3QuIFRoYXQgbWVhbnMgaW4gbXkgYEVuYWJsZUNvbmZpZ3NgIEkmIzM5O20gZGVmaW5pdGVseSBnb2luZyB0byBuZWVkIGBXQ04zNlhYYCwgYFFDT01fV0NOU1NfQ1RSTGAsIGFuZCBgUlBNU0dgLgoKSGFuZyBvbiBhIHNlY29uZC4gYFdDTjM2WFhgIGhhcyBkZXBlbmRlbmNpZXMgdG9vISBTcGVjaWZpY2FsbHksIGl0IHJlcXVpcmVzIGJvdGggYE1BQzgwMjExYCBhbmQgYEhBU19ETUFgLiBTbywgSSBuZWVkIHRvIGJlIHN1cmUgdG8gaW5jbHVkZSBgTUFDODAyMTFgIGluIHRoZSBjb25maWd1cmF0aW9uIGFzIHdlbGwuIAoKT2theSwgbGV0JiMzOTtzIGp1c3QgbWFrZSBzdXJlIHRoZXJlIGFyZW4mIzM5O3QgYW55IHNuZWFreSBkZXBlbmRlbmNpZXMgdGllZCB0byBgUlBNU0dgIG5vdyB0aGF0IEkmIzM5O20gaGVyZS4gQ2FuJiMzOTt0IGJlIHRvbyBjYXJlZnVsLCByaWdodD8KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40My8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMTg6NTY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIFJQTVNHJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3d3YW4vS2NvbmZpZz02NT1jb25maWcgUUNPTV9CQU1fRE1VWFxuLS1cbmRyaXZlcnMvbmV0L3d3YW4vS2NvbmZpZy03Ny1cbmRyaXZlcnMvbmV0L3d3YW4vS2NvbmZpZzo3ODpjb25maWcgUlBNU0dfV1dBTl9DVFJMXG5kcml2ZXJzL25ldC93d2FuL0tjb25maWctNzktXHR0cmlzdGF0ZSBcJiMzNDtSUE1TRyBXV0FOIGNvbnRyb2wgZHJpdmVyXCYjMzQ7XG4tLVxuZHJpdmVycy9ycG1zZy9LY29uZmlnPTM9bWVudSBcJiMzNDtScG1zZyBkcml2ZXJzXCYjMzQ7XG4tLVxuZHJpdmVycy9ycG1zZy9LY29uZmlnLTUtIyBSUE1TRyBhbHdheXMgZ2V0cyBzZWxlY3RlZCBieSB3aG9ldmVyIHdhbnRzIGl0XG5kcml2ZXJzL3JwbXNnL0tjb25maWc6Njpjb25maWcgUlBNU0dcbmRyaXZlcnMvcnBtc2cvS2NvbmZpZy03LVx0dHJpc3RhdGVcbmRyaXZlcnMvcnBtc2cvS2NvbmZpZy04LVxuZHJpdmVycy9ycG1zZy9LY29uZmlnOjk6Y29uZmlnIFJQTVNHX0NIQVJcbmRyaXZlcnMvcnBtc2cvS2NvbmZpZy0xMC1cdHRyaXN0YXRlIFwmIzM0O1JQTVNHIGRldmljZSBpbnRlcmZhY2VcJiMzNDtcbi0tXG5kcml2ZXJzL3JwbXNnL0tjb25maWctMTctXG5kcml2ZXJzL3JwbXNnL0tjb25maWc6MTg6Y29uZmlnIFJQTVNHX0NUUkxcbmRyaXZlcnMvcnBtc2cvS2NvbmZpZy0xOS1cdHRyaXN0YXRlIFwmIzM0O1JQTVNHIGNvbnRyb2wgaW50ZXJmYWNlXCYjMzQ7XG4tLVxuZHJpdmVycy9ycG1zZy9LY29uZmlnLTI1LVxuZHJpdmVycy9ycG1zZy9LY29uZmlnOjI2OmNvbmZpZyBSUE1TR19OU1xuZHJpdmVycy9ycG1zZy9LY29uZmlnLTI3LVx0dHJpc3RhdGUgXCYjMzQ7UlBNU0cgbmFtZSBzZXJ2aWNlIGFubm91bmNlbWVudFwmIzM0O1xuLS1cbmRyaXZlcnMvcnBtc2cvS2NvbmZpZy0zMy1cbmRyaXZlcnMvcnBtc2cvS2NvbmZpZzozNDpjb25maWcgUlBNU0dfTVRLX1NDUFxuZHJpdmVycy9ycG1zZy9LY29uZmlnLTM1LVx0dHJpc3RhdGUgXCYjMzQ7TWVkaWFUZWsgU0NQXCYjMzQ7XG4tLVxuZHJpdmVycy9ycG1zZy9LY29uZmlnLTQyLVxuZHJpdmVycy9ycG1zZy9LY29uZmlnOjQzOmNvbmZpZyBSUE1TR19RQ09NX0dMSU5LXG5kcml2ZXJzL3JwbXNnL0tjb25maWctNDQtXHR0cmlzdGF0ZVxuLS1cbmRyaXZlcnMvcnBtc2cvS2NvbmZpZy00Ni1cbmRyaXZlcnMvcnBtc2cvS2NvbmZpZzo0Nzpjb25maWcgUlBNU0dfUUNPTV9HTElOS19SUE1cbmRyaXZlcnMvcnBtc2cvS2NvbmZpZy00OC1cdHRyaXN0YXRlIFwmIzM0O1F1YWxjb21tIFJQTSBHbGluayBkcml2ZXJcJiMzNDtcbi0tXG5kcml2ZXJzL3JwbXNnL0tjb25maWctNTYtXG5kcml2ZXJzL3JwbXNnL0tjb25maWc6NTc6Y29uZmlnIFJQTVNHX1FDT01fR0xJTktfU01FTVxuZHJpdmVycy9ycG1zZy9LY29uZmlnLTU4LVx0dHJpc3RhdGUgXCYjMzQ7UXVhbGNvbW0gU01FTSBHbGluayBkcml2ZXJcJiMzNDtcbi0tXG5kcml2ZXJzL3JwbXNnL0tjb25maWctNjYtXG5kcml2ZXJzL3JwbXNnL0tjb25maWc6Njc6Y29uZmlnIFJQTVNHX1FDT01fU01EXG5kcml2ZXJzL3JwbXNnL0tjb25maWctNjgtXHR0cmlzdGF0ZSBcJiMzNDtRdWFsY29tbSBTaGFyZWQgTWVtb3J5IERyaXZlciAoU01EKVwmIzM0O1xuLS1cbmRyaXZlcnMvcnBtc2cvS2NvbmZpZy03Ni1cbmRyaXZlcnMvcnBtc2cvS2NvbmZpZzo3Nzpjb25maWcgUlBNU0dfVklSVElPXG5kcml2ZXJzL3JwbXNnL0tjb25maWctNzgtXHR0cmlzdGF0ZSBcJiMzNDtWaXJ0aW8gUlBNU0cgYnVzIGRyaXZlclwmIzM0O1xuLS1cbmRyaXZlcnMvdHR5L0tjb25maWc9NDA0PXNvdXJjZSBcJiMzNDtkcml2ZXJzL3R0eS9odmMvS2NvbmZpZ1wmIzM0O1xuZHJpdmVycy90dHkvS2NvbmZpZy00MDUtXG5kcml2ZXJzL3R0eS9LY29uZmlnOjQwNjpjb25maWcgUlBNU0dfVFRZXG5kcml2ZXJzL3R0eS9LY29uZmlnLTQwNy1cdHRyaXN0YXRlIFwmIzM0O1JQTVNHIHR0eSBkcml2ZXJcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMTg6NTY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzU2MjQKCQkJCQkJCW91dHB1dDogMzcKCQkJCQkJCXRob3VnaHRzOiA1NQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIERlcGVuZGVuY2llcyoqCgpPa2F5LCBzbyBgUlBNU0dgIGlzIGEgdHJpY2t5IG9uZSwgc2VlbWluZ2x5IGFsd2F5cyBpbiBkZW1hbmQsIGNvbnN0YW50bHkgYmVpbmcgc2VsZWN0ZWQgYnkgd2hhdGV2ZXIgc3Vic3lzdGVtIG5lZWRzIGl0LiBIbW0sIGJ1dCBub3cgSSYjMzk7bSByZW1lbWJlcmluZyB0aGF0IGBRQ09NX1dDTlNTX0NUUkxgIGhhcyBhIGRlcGVuZGVuY3kgb24gYFJQTVNHYC4gQmVzdCB0byBkb3VibGUtY2hlY2sgdGhhdCBgZHJpdmVycy9zb2MvcWNvbS9LY29uZmlnYCBmaWxlIGFnYWluLiBKdXN0IHRvIG1ha2Ugc3VyZSBteSB1bmRlcnN0YW5kaW5nIG9mIHRoaXMgaXNuJiMzOTt0IHNsaXBwaW5nLiBHb3R0YSBiZSB0aG9yb3VnaCB3aXRoIHRoZXNlIGNvcmUgZGVwZW5kZW5jaWVzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQ1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNiAxODo1NjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvc29jL3Fjb20vS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDI1MCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAxMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgMjUwOlx0Y29uZmlnIFFDT01fV0NOU1NfQ1RSTFxuIDI1MTpcdFx0dHJpc3RhdGUgXCYjMzQ7UXVhbGNvbW0gV0NOU1MgY29udHJvbCBkcml2ZXJcJiMzNDtcbiAyNTI6XHRcdGRlcGVuZHMgb24gQVJDSF9RQ09NIHx8IENPTVBJTEVfVEVTVFxuIDI1MzpcdFx0ZGVwZW5kcyBvbiBSUE1TR1xuIDI1NDpcdFx0aGVscFxuIDI1NTpcdFx0ICBDbGllbnQgZHJpdmVyIGZvciB0aGUgV0NOU1NfQ1RSTCBTTUQgY2hhbm5lbCwgdXNlZCB0byBkb3dubG9hZCBudlxuIDI1NjpcdFx0ICBmaXJtd2FyZSB0byBhIG5ld2x5IGJvb3RlZCBXQ05TUyBjaGlwLlxuIDI1NzpcdFxuIDI1ODpcdGNvbmZpZyBRQ09NX0FQUlxuIDI1OTpcdFx0dHJpc3RhdGUgXCYjMzQ7UXVhbGNvbW0gQVBSL0dQUiBCdXMgKEFzeW5jaHJvbm91cy9HZW5lcmljIFBhY2tldCBSb3V0ZXIpXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDE4OjU2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM1OTkwCgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogMTAxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgYFFDT01fV0NOU1NfQ1RSTGAgRGVwZW5kZW5jeSoqCgpPa2F5LCBzbyBJJiMzOTttIGRpZ2dpbmcgaW50byB0aGlzIGNvbmZpZ3VyYXRpb24gYW5kIGl0JiMzOTtzIGNsZWFyIHRoYXQgYFFDT01fV0NOU1NfQ1RSTGAgaGFzIGEgZGVwZW5kZW5jeSBvbiBgUlBNU0dgLiBSaWdodCwgc2ltcGxlIGVub3VnaC4gSWYgYFJQTVNHYCBpc24mIzM5O3QgZW5hYmxlZCwgdGhlbiBgUUNPTV9XQ05TU19DVFJMYCBpcyBlc3NlbnRpYWxseSBoaWRkZW4gZnJvbSB2aWV3LCB3aGljaCBtYWtlcyBzZW5zZSBmcm9tIGEgbW9kdWxhcml0eSBwZXJzcGVjdGl2ZS4gTm93IEkmIzM5O20gcGF1c2luZyB0aG91Z2gsIGJlY2F1c2UgSSBzZWUgdGhhdCBgUlBNU0dgIGlzIGEgYHRyaXN0YXRlYCB3aXRob3V0IGEgcHJvbXB0LiBUaGF0IGltbWVkaWF0ZWx5IHRyaWdnZXJzIGEgbWVudGFsIGNoZWNrbGlzdDogYSBgdHJpc3RhdGVgIHdpdGhvdXQgYSBwcm9tcHQgdXN1YWxseSBtZWFucyBpdCYjMzk7cyBleGNsdXNpdmVseSBjb250cm9sbGVkIGJ5IG90aGVyIGNvbmZpZ3VyYXRpb24gb3B0aW9ucy4gSXQmIzM5O3Mgbm90IHNvbWV0aGluZyBhIHVzZXIgd291bGQgZGlyZWN0bHkgZW5hYmxlLiBSaWdodCwgcmlnaHQuLi4gc28sIGlmIEkgd2FudCB0byBmaWd1cmUgb3V0ICp3aHkqIGBSUE1TR2AgaXMgZW5hYmxlZCBpbiB0aGlzIGNvbnRleHQsIEkgbmVlZCB0byB0cmFjZSBiYWNrIHdoaWNoIHNwZWNpZmljIGNvbmZpZ3VyYXRpb25zIGFyZSAqc2VsZWN0aW5nKiBpdC4gSSYjMzk7bGwgbmVlZCB0byBjaGVjayB3aGV0aGVyIGBSUE1TR19WSVJUSU9gIG9yIGBSUE1TR19RQ09NX1NNRGAgYXJlIHRoZSBzZWxlY3RvcnMgaGVyZS4gVGhhdCYjMzk7cyB0aGUga2V5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQ3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNiAxODo1NjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvcnBtc2cvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDc3LAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDEwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgNzc6XHRjb25maWcgUlBNU0dfVklSVElPXG4gIDc4Olx0XHR0cmlzdGF0ZSBcJiMzNDtWaXJ0aW8gUlBNU0cgYnVzIGRyaXZlclwmIzM0O1xuICA3OTpcdFx0ZGVwZW5kcyBvbiBIQVNfRE1BXG4gIDgwOlx0XHRzZWxlY3QgUlBNU0dcbiAgODE6XHRcdHNlbGVjdCBSUE1TR19OU1xuICA4MjpcdFx0c2VsZWN0IFZJUlRJT1xuICA4MzpcdFxuICA4NDpcdGVuZG1lbnVcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMTg6NTY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzY0NTYKCQkJCQkJCW91dHB1dDogNDIKCQkJCQkJCXRob3VnaHRzOiAyMzAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqS2VybmVsIENvbmZpZ3VyYXRpb24gVHdlYWtzKioKCk9rYXksIHNvIGBSUE1TR19WSVJUSU9gIGF1dG9tYXRpY2FsbHkgcHVsbHMgaW4gYFJQTVNHYC4gTWFrZXMgc2Vuc2UsIHNvIHdlIGRlZmluaXRlbHkgd2FudCB0byBlbmFibGUgYFJQTVNHX1ZJUlRJT2AgYXMgb3VyIGVudHJ5IHBvaW50LiBOb3csIGRpZ2dpbmcgYSBsaXR0bGUgZGVlcGVyLCBgUUNPTV9XQ05TU19DVFJMYCBoYXMgYSBkZXBlbmRlbmN5IG9uIGVpdGhlciBgQVJDSF9RQ09NYCBvciBgQ09NUElMRV9URVNUYC4gSG1tLCBgQ09NUElMRV9URVNUYCBpcyBhIGNvbW1vbiBkZWZhdWx0IGluIHN5emJvdCBjb25maWd1cmF0aW9ucywgYnV0IHRvIGtlZXAgdGhpbmdzIHRpZHkgYW5kIHByZWRpY3RhYmxlLCBsZXQmIzM5O3MgZXhwbGljaXRseSBsaXN0IGBRQ09NX1dDTlNTX0NUUkxgIGluc3RlYWQgb2YgcmVseWluZyBvbiBpdC4KClRoZW4gd2UgbG9vayBhdCBgV0NOMzZYWGAsIGl0cyBkZXBlbmRlbmN5IGlzIGBRQ09NX1dDTlNTX0NUUkwgfHwgUUNPTV9XQ05TU19DVFJMPW5gLiBUaGlzIG1lYW5zIHdlIGNhbiBjb25maWd1cmUgdGhlIGBRQ09NX1dDTlNTX0NUUkxgIG1vZHVsZSBhcyBhIG1vZHVsZSBhbmQgYFdDTjM2WFhgIGJlY29tZXMgYSBtb2R1bGUgYXMgd2VsbC4gSG93ZXZlciwgaWYgd2Ugd2FudCB0aGVtIGJ1aWx0LWluIHRvIHRoZSBrZXJuZWwgaW1hZ2UsIHdlIHNob3VsZCBiZSBleHBsaWNpdCBhbmQganVzdCBsaXN0IGBXQ04zNlhYYCwgYFFDT01fV0NOU1NfQ1RSTGAsIGFuZCBgUlBNU0dfVklSVElPYC4gR290dGEgZG91YmxlLWNoZWNrIHRob3NlIGRlcGVuZGVuY2llcywgdGhvdWdoOyBsZXQmIzM5O3MgcmV2aXNpdCBgV0NOMzZYWGAmIzM5O3Mgc2V0dXAgYWdhaW4ganVzdCB0byBiZSBzdXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQ5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNiAxODo1NjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDEwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgIDE6XHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBJU0NcbiAgIDI6XHRjb25maWcgV0NOMzZYWFxuICAgMzpcdFx0dHJpc3RhdGUgXCYjMzQ7UXVhbGNvbW0gQXRoZXJvcyBXQ04zNjYwLzM2ODAgc3VwcG9ydFwmIzM0O1xuICAgNDpcdFx0ZGVwZW5kcyBvbiBNQUM4MDIxMSBcdTAwMjZcdTAwMjYgSEFTX0RNQVxuICAgNTpcdFx0ZGVwZW5kcyBvbiBRQ09NX1dDTlNTX0NUUkwgfHwgUUNPTV9XQ05TU19DVFJMPW5cbiAgIDY6XHRcdGRlcGVuZHMgb24gUlBNU0cgfHwgUlBNU0c9blxuICAgNzpcdFx0aGVscFxuICAgODpcdFx0ICBUaGlzIG1vZHVsZSBhZGRzIHN1cHBvcnQgZm9yIHdpcmVsZXNzIGFkYXB0ZXJzIGJhc2VkIG9uXG4gICA5Olx0XHQgIFF1YWxjb21tIEF0aGVyb3MgV0NOMzY2MCBhbmQgV0NOMzY4MCBtb2JpbGUgY2hpcHNldHMuXG4gIDEwOlx0XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDE4OjU2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM3MTc2CgkJCQkJCQlvdXRwdXQ6IDE1MwoJCQkJCQkJdGhvdWdodHM6IDM0MgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBbmFseXNpcyBvZiB0aGUgV0NOMzZYWCBWdWxuZXJhYmlsaXR5KioKCk9rYXksIHNvIEkmIzM5O3ZlIGJlZW4gbG9va2luZyBhdCB0aGlzIGBXQ04zNlhYYCBkcml2ZXIsIGFuZCBpdCYjMzk7cyBjbGVhciB0aGF0IGl0IGhhcyBhIGRlcGVuZGVuY3kgb24gYE1BQzgwMjExYC4gUmlnaHQgYXdheSwgSSBuZWVkIHRvIG1ha2Ugc3VyZSBgTUFDODAyMTFgIGlzIGVuYWJsZWQsIHNvIEkmIzM5O2xsIGFkZCBpdCB0byB0aGUgYEVuYWJsZUNvbmZpZ3NgIGxpc3QuIEN1cnJlbnRseSwgSSBoYXZlOiBgV0NOMzZYWGAsIGBRQ09NX1dDTlNTX0NUUkxgLCBgUlBNU0dfVklSVElPYCwgYW5kIG5vdywgYE1BQzgwMjExYC4KCk5vdywgdGhlIHZ1bG5lcmFiaWxpdHkgbGllcyBpbiBgd2NuMzZ4eF9zbWRfcnNwX3Byb2Nlc3NgLCBzbyBsZXQmIzM5O3MgY2hlY2sgaXRzIHJlYWNoYWJpbGl0eS4gQWgsIHllcywgaXQmIzM5O3MgdGhlIGNhbGxiYWNrIGZvciB0aGUgcnBtc2cgZW5kcG9pbnQgdGhhdCYjMzk7cyBjcmVhdGVkIGR1cmluZyBgd2NuMzZ4eF9wcm9iZWAuIFRoYXQgbWFrZXMgc2Vuc2UuIFdoZW4gYSBtZXNzYWdlIGNvbWVzIGluIG92ZXIgdGhhdCBlbmRwb2ludCwgYHdjbjM2eHhfc21kX3JzcF9wcm9jZXNzYCBpcyBjYWxsZWQuIEFuZCBzaW5jZSBTeXpib3QgY2FuIGluamVjdCBtZXNzYWdlcyB2aWEgdmlydGlvLXJwbXNnLCB0aGlzIGlzIGRlZmluaXRlbHkgc29tZXRoaW5nIHdlIGNhbiBmdXp6LiBXZSBoYXZlIGEgY2xlYXIgcGF0aCB0byBleHBsb2l0IHRoaXMhCgpUaGVyZWZvcmUsIHRoZSBgRm9jdXNTeW1ib2xzYCB3aWxsIGJlIGB3Y24zNnh4X3NtZF9yc3BfcHJvY2Vzc2AuIFRoZSBgRW5hYmxlQ29uZmlnc2AgbGlzdCBpcyBhcyBkZXNjcmliZWQgYWJvdmUuIFRoZSByZWFzb25pbmcgaGVyZSBpcyBzb2xpZDogdGhlIHBhdGNoIGZpeGVzIGFuIG91dC1vZi1ib3VuZHMgcmVhZCBpbiBgd2NuMzZ4eF9zbWRfcnNwX3Byb2Nlc3NgIGJ5IGFkZGluZyBhIGxlbmd0aCBjaGVjayBmb3IgdGhlIEhBTCBtZXNzYWdlIGhlYWRlci4gVGhpcyBmdW5jdGlvbiBwcm9jZXNzZXMgaW5jb21pbmcgbWVzc2FnZXMgZnJvbSB0aGUgU01EIGNoYW5uZWwgKHJwbXNnKSwgYW5kIGl0cyByZWFjaGFiaWxpdHkgdmlhIHRoZSB2aXJ0aW8tcnBtc2cgYnVzIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBtYWtlcyBpdCBpZGVhbCBmb3IgZnV6emluZy4KCkxldCBtZSBqdXN0IGRvdWJsZS1jaGVjayB0byBiZSBhYnNvbHV0ZWx5IHN1cmUuLi4gWWVwLCB0aGUgcGF0Y2ggb25seSBtb2RpZmllcyBgd2NuMzZ4eF9zbWRfcnNwX3Byb2Nlc3NgLiBPa2F5LCB0aGF0JiMzOTtzIGl0LiBXZSYjMzk7cmUgZ29vZCB0byBnby4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41MS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMTg6NTY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1dDTjM2WFgmIzM0OywKICAgICYjMzQ7UUNPTV9XQ05TU19DVFJMJiMzNDssCiAgICAmIzM0O1JQTVNHX1ZJUlRJTyYjMzQ7LAogICAgJiMzNDtNQUM4MDIxMSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3djbjM2eHhfc21kX3JzcF9wcm9jZXNzJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGFuIG91dC1vZi1ib3VuZHMgcmVhZCBpbiBgd2NuMzZ4eF9zbWRfcnNwX3Byb2Nlc3NgIGJ5IGFkZGluZyBhIGxlbmd0aCBjaGVjayBmb3IgdGhlIEhBTCBtZXNzYWdlIGhlYWRlci4gVGhpcyBmdW5jdGlvbiBwcm9jZXNzZXMgaW5jb21pbmcgbWVzc2FnZXMgZnJvbSB0aGUgU01EIGNoYW5uZWwgKHJwbXNnKS4gSXQgaXMgcmVhY2hhYmxlIHZpYSB0aGUgdmlydGlvLXJwbXNnIGJ1cyBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMsIG1ha2luZyBpdCBzdWl0YWJsZSBmb3IgZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7V0NOMzZYWCYjMzQ7LAogICAgJiMzNDtRQ09NX1dDTlNTX0NUUkwmIzM0OywKICAgICYjMzQ7UlBNU0dfVklSVElPJiMzNDssCiAgICAmIzM0O01BQzgwMjExJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7d2NuMzZ4eF9zbWRfcnNwX3Byb2Nlc3MmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYW4gb3V0LW9mLWJvdW5kcyByZWFkIGluIGB3Y24zNnh4X3NtZF9yc3BfcHJvY2Vzc2AgYnkgYWRkaW5nIGEgbGVuZ3RoIGNoZWNrIGZvciB0aGUgSEFMIG1lc3NhZ2UgaGVhZGVyLiBUaGlzIGZ1bmN0aW9uIHByb2Nlc3NlcyBpbmNvbWluZyBtZXNzYWdlcyBmcm9tIHRoZSBTTUQgY2hhbm5lbCAocnBtc2cpLiBJdCBpcyByZWFjaGFibGUgdmlhIHRoZSB2aXJ0aW8tcnBtc2cgYnVzIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cywgbWFraW5nIGl0IHN1aXRhYmxlIGZvciBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDctMjZUMTg6NTM6NDAuMDg5NjIxOTMxWiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTg1MTIyNjE5NTg0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIldDTjM2WFhcIixcbiAgICBcIlFDT01fV0NOU1NfQ1RSTFwiLFxuICAgIFwiUlBNU0dfVklSVElPXCIsXG4gICAgXCJNQUM4MDIxMVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIndjbjM2eHhfc21kX3JzcF9wcm9jZXNzXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYW4gb3V0LW9mLWJvdW5kcyByZWFkIGluIGB3Y24zNnh4X3NtZF9yc3BfcHJvY2Vzc2AgYnkgYWRkaW5nIGEgbGVuZ3RoIGNoZWNrIGZvciB0aGUgSEFMIG1lc3NhZ2UgaGVhZGVyLiBUaGlzIGZ1bmN0aW9uIHByb2Nlc3NlcyBpbmNvbWluZyBtZXNzYWdlcyBmcm9tIHRoZSBTTUQgY2hhbm5lbCAocnBtc2cpLiBJdCBpcyByZWFjaGFibGUgdmlhIHRoZSB2aXJ0aW8tcnBtc2cgYnVzIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cywgbWFraW5nIGl0IHN1aXRhYmxlIGZvciBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQxODo1Mzo0MC4wODk2MzE2OFoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTA1OTE0MTg4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgOTM2NzA5NDA2OGVhY2YxZjZhMTkzNDdmNTc1NWUzM2ZmZTA1YzYxM1xcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgU3VuIEp1bCAyNiAxODo1MzozOCAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9zbWQuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L3NtZC5jXFxuaW5kZXggYzBiNDc3MzQ1ODMyYjguLjMyZGVjNDVkYmI1MGY1IDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L3NtZC5jXFxuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvc21kLmNcXG5AQCAtMzI1NCw2ICszMjU0LDExIEBAIGludCB3Y24zNnh4X3NtZF9yc3BfcHJvY2VzcyhzdHJ1Y3QgcnBtc2dfZGV2aWNlICpycGRldixcXG4gXFx0c3RydWN0IHdjbjM2eHhfaGFsX2luZF9tc2cgKm1zZ19pbmQ7XFxuIFxcdHdjbjM2eHhfZGJnX2R1bXAoV0NOMzZYWF9EQkdfU01EX0RVTVAsIFxcXCJTTUQgXFx1MDAzY1xcdTAwM2NcXHUwMDNjIFxcXCIsIGJ1ZiwgbGVuKTtcXG4gXFxuK1xcdGlmIChsZW4gXFx1MDAzYyBzaXplb2YoKm1zZ19oZWFkZXIpKSB7XFxuK1xcdFxcdHdjbjM2eHhfd2FybihcXFwiQ29ycnVwdGVkIEhBTCBtZXNzYWdlOiBsZW5ndGggJWRcXFxcblxcXCIsIGxlbik7XFxuK1xcdFxcdHJldHVybiAwO1xcbitcXHR9XFxuK1xcbiBcXHRzd2l0Y2ggKG1zZ19oZWFkZXItXFx1MDAzZW1zZ190eXBlKSB7XFxuIFxcdGNhc2UgV0NOMzZYWF9IQUxfU1RBUlRfUlNQOlxcbiBcXHRjYXNlIFdDTjM2WFhfSEFMX0NPTkZJR19TVEFfUlNQOlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQxODo1Mzo0MC41OTYyODg5OThaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjoxODQ2MTU5NDA4OTcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiV0NOMzZYWFwiLFxuICAgIFwiUUNPTV9XQ05TU19DVFJMXCIsXG4gICAgXCJSUE1TR19WSVJUSU9cIixcbiAgICBcIk1BQzgwMjExXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwid2NuMzZ4eF9zbWRfcnNwX3Byb2Nlc3NcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhbiBvdXQtb2YtYm91bmRzIHJlYWQgaW4gYHdjbjM2eHhfc21kX3JzcF9wcm9jZXNzYCBieSBhZGRpbmcgYSBsZW5ndGggY2hlY2sgZm9yIHRoZSBIQUwgbWVzc2FnZSBoZWFkZXIuIFRoaXMgZnVuY3Rpb24gcHJvY2Vzc2VzIGluY29taW5nIG1lc3NhZ2VzIGZyb20gdGhlIFNNRCBjaGFubmVsIChycG1zZykuIEl0IGlzIHJlYWNoYWJsZSB2aWEgdGhlIHZpcnRpby1ycG1zZyBidXMgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLCBtYWtpbmcgaXQgc3VpdGFibGUgZm9yIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpXG4gIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zXG4gICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgQWxzbyBjaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3NcbiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlnc1xuICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDkzNjcwOTQwNjhlYWNmMWY2YTE5MzQ3ZjU3NTVlMzNmZmUwNWM2MTNcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgU3VuIEp1bCAyNiAxODo1MzozOCAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L3NtZC5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvc21kLmNcbmluZGV4IGMwYjQ3NzM0NTgzMmI4Li4zMmRlYzQ1ZGJiNTBmNSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L3NtZC5jXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9zbWQuY1xuQEAgLTMyNTQsNiArMzI1NCwxMSBAQCBpbnQgd2NuMzZ4eF9zbWRfcnNwX3Byb2Nlc3Moc3RydWN0IHJwbXNnX2RldmljZSAqcnBkZXYsXG4gXHRzdHJ1Y3Qgd2NuMzZ4eF9oYWxfaW5kX21zZyAqbXNnX2luZDtcbiBcdHdjbjM2eHhfZGJnX2R1bXAoV0NOMzZYWF9EQkdfU01EX0RVTVAsIFwiU01EIFx1MDAzY1x1MDAzY1x1MDAzYyBcIiwgYnVmLCBsZW4pO1xuIFxuK1x0aWYgKGxlbiBcdTAwM2Mgc2l6ZW9mKCptc2dfaGVhZGVyKSkge1xuK1x0XHR3Y24zNnh4X3dhcm4oXCJDb3JydXB0ZWQgSEFMIG1lc3NhZ2U6IGxlbmd0aCAlZFxcblwiLCBsZW4pO1xuK1x0XHRyZXR1cm4gMDtcbitcdH1cbitcbiBcdHN3aXRjaCAobXNnX2hlYWRlci1cdTAwM2Vtc2dfdHlwZSkge1xuIFx0Y2FzZSBXQ04zNlhYX0hBTF9TVEFSVF9SU1A6XG4gXHRjYXNlIFdDTjM2WFhfSEFMX0NPTkZJR19TVEFfUlNQOlxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjZUMTg6NTM6NDAuNTk2MjkwNDU4WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTE4MjgyNzczOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBEcml2ZXIgUGF0Y2ggZm9yIFZ1bG5lcmFiaWxpdHkqKlxuXG5Pa2F5LCBzbyBJJ3ZlIGdvdCB0aGlzIHBhdGNoIGhlcmUgdGhhdCBpbnRyb2R1Y2VzIGEgbGVuZ3RoIGNoZWNrIGluIGB3Y24zNnh4X3NtZF9yc3BfcHJvY2Vzc2Agd2l0aGluIHRoZSBgd2NuMzZ4eGAgZHJpdmVyLiBJdCBsb29rcyBsaWtlIGl0J3MgZ3VhcmRpbmcgYWdhaW5zdCBvdXQtb2YtYm91bmRzIHJlYWRzLCB3aGljaCBpcyBhbHdheXMgYSBnb29kIHRoaW5nLiBTcGVjaWZpY2FsbHksIGl0J3MgY2hlY2tpbmcgaWYgdGhlIHJlY2VpdmVkIG1lc3NhZ2UgbGVuZ3RoIGlzIHNtYWxsZXIgdGhhbiB0aGUgc2l6ZSBvZiB0aGUgbWVzc2FnZSBoZWFkZXIgYW5kIHJldHVybmluZyAwIGlmIHRoYXQncyB0aGUgY2FzZS4gSXQgYXBwZWFycyB0byBiZSBhIHByZXR0eSBzdHJhaWdodGZvcndhcmQgZnVuY3Rpb25hbCBjaGFuZ2UgdG8gcHJldmVudCBhIHBvdGVudGlhbCB2dWxuZXJhYmlsaXR5LlxuXG5IbW0sIGxldCBtZSBzZWUuLi4gYHdjbjM2eHhgLi4uIHRoYXQgcmluZ3MgYSBiZWxsLiBBaCwgeWVzLCBpdCdzIHRoZSBkcml2ZXIgZm9yIHRoZSBRdWFsY29tbSBBdGhlcm9zIFdDTjM2NjAvMzY4MCBNQUMvQkIvUmFkaW8gY2hpcHMuIEludGVyZXN0aW5nLiBOb3csIHRoZSBrZXkgcXVlc3Rpb24gaXMgd2hldGhlciB0aGlzIGlzIHNvbWV0aGluZyBJIGNhbiBhY3R1YWxseSAqcmVhY2gqIHdoZW4gZnV6emluZy4gQ2FuIEkgdHJpZ2dlciBpdCBpbiBhIFFFTVUgZW52aXJvbm1lbnQ/IENvbnNpZGVyaW5nIHRoaXMgdXNlcyBycG1zZyAoUmVtb3RlIFByb2Nlc3NvciBNZXNzYWdpbmcpLCB0aGUgbGlrZWxpaG9vZCBpcyBoaWdoLiBNeSB0aG91Z2h0IG5vdyBpcywgY2FuIEkgZnV6eiB0aGlzIHBhcnRpY3VsYXIgZnVuY3Rpb24/XG5cbkxldCBtZSBmb2N1cyBvbiB0aGF0IGZ1bmN0aW9uLCBgd2NuMzZ4eF9zbWRfcnNwX3Byb2Nlc3NgLiBMZXQgbWUgc2VlIHdoYXQgSSBjYW4gZmluZCByZWdhcmRpbmcgdGhpcyBkcml2ZXIuIEknbGwgZG8gYSBxdWljayBncmVwIGZvciBib3RoIGB3Y24zNnh4X3NtZF9yc3BfcHJvY2Vzc2AgYW5kIGp1c3QgdGhlIGRyaXZlciBuYW1lLCBgd2NuMzZ4eGAgd2l0aGluIHRoZSBLY29uZmlnIGZpbGVzLiBUaGlzIHNob3VsZCBnaXZlIG1lIGEgYmV0dGVyIHVuZGVyc3RhbmRpbmcgb2YgaG93IHRoZSBkcml2ZXIgaXMgY29uZmlndXJlZCBhbmQgaWYgaXQncyBldmVuIGVuYWJsZWQgaW4gdGhlIHN5c3RlbXMgSSdtIGxpa2VseSB0byB0ZXN0LlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMTYzLCJPdXRwdXRUb2tlbnMiOjQ2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjAyLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjZUMTg6NTM6NDUuNzc5MTIxMzI3WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjMzODIxNjQwNTMsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwid2NuMzZ4eF9zbWRfcnNwX3Byb2Nlc3NcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jPTE1NTg9c3RhdGljIGludCB3Y24zNnh4X3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmMtMTYwNi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmM6MTYwNzpcXHR3Y24tXFx1MDAzZXNtZF9jaGFubmVsID0gcWNvbV93Y25zc19vcGVuX2NoYW5uZWwod2Nuc3MsIFxcXCJXTEFOX0NUUkxcXFwiLCB3Y24zNnh4X3NtZF9yc3BfcHJvY2VzcywgaHcpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYy0xNjA4LVxcdGlmIChJU19FUlIod2NuLVxcdTAwM2VzbWRfY2hhbm5lbCkpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L3NtZC5jPTMyMDI9aW50IHdjbjM2eHhfc21kX2FkZF9iZWFjb25fZmlsdGVyKHN0cnVjdCB3Y24zNnh4ICp3Y24sXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9zbWQuYy0zMjQ3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L3NtZC5jOjMyNDg6aW50IHdjbjM2eHhfc21kX3JzcF9wcm9jZXNzKHN0cnVjdCBycG1zZ19kZXZpY2UgKnJwZGV2LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L3NtZC5jLTMyNDktXFx0XFx0XFx0ICAgIHZvaWQgKmJ1ZiwgaW50IGxlbiwgdm9pZCAqcHJpdiwgdTMyIGFkZHIpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9zbWQuaD0xNDA9aW50IHdjbjM2eHhfc21kX3VwZGF0ZV9jZmcoc3RydWN0IHdjbjM2eHggKndjbiwgdTMyIGNmZ19pZCwgdTMyIHZhbHVlKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9zbWQuaC0xNDEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvc21kLmg6MTQyOmludCB3Y24zNnh4X3NtZF9yc3BfcHJvY2VzcyhzdHJ1Y3QgcnBtc2dfZGV2aWNlICpycGRldixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9zbWQuaC0xNDMtXFx0XFx0XFx0ICAgIHZvaWQgKmJ1ZiwgaW50IGxlbiwgdm9pZCAqcHJpdiwgdTMyIGFkZHIpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQxODo1Mzo0OS4xNjEyOTA2M1oiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMDk3MzE4NzE5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBXQ04zNlhYXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBJU0NcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9LY29uZmlnOjI6Y29uZmlnIFdDTjM2WFhcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9LY29uZmlnLTMtXFx0dHJpc3RhdGUgXFxcIlF1YWxjb21tIEF0aGVyb3MgV0NOMzY2MC8zNjgwIHN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9LY29uZmlnLTEyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L0tjb25maWc6MTM6Y29uZmlnIFdDTjM2WFhfREVCVUdGU1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L0tjb25maWctMTQtXFx0Ym9vbCBcXFwiV0NOMzZYWCBkZWJ1Z2ZzIHN1cHBvcnRcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDE4OjUzOjUxLjI1ODYxODE3WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzQ5OTI5MjIwNCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHN1bW1hcnksIGFzIEkgZGVsdmUgaW50byB0aGVzZSBkZXBlbmRlbmNpZXM6XG5cbioqRGl2aW5nIERlZXAgaW50byB0aGUgV0NOMzZYWCBEcml2ZXIqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIGBXQ04zNlhYYCBkcml2ZXIsIGFuZCBpbW1lZGlhdGVseSBteSBtaW5kIGp1bXBzIHRvIGl0cyBkZXBlbmRlbmNpZXMuIFNlZW1zIHByZXR0eSBzdHJhaWdodGZvcndhcmQgYXQgZmlyc3QgZ2xhbmNlIOKAkyBpdCAqcmVsaWVzKiBvbiBgTUFDODAyMTFgLCB3aGljaCBpcyBzdGFuZGFyZCBmb3IgYSB3aXJlbGVzcyBkcml2ZXIsIGFuZCB0aGVuIGBIQVNfSU9NRU1gLCB3aGljaCBpcyB0byBiZSBleHBlY3RlZCBmb3IgYW55IGRyaXZlciB0aGF0IG5lZWRzIHRvIGludGVyYWN0IHdpdGggaGFyZHdhcmUgbWVtb3J5LiBUaGUgcmVhbCBxdWVzdGlvbiBtYXJrIGlzIHRoaXMgYFFDT01fV0NOU1NfQ1RSTCB8fCBRQ09NX1dDTlNTX0NUUkw9bmAgYml0LiBUaGF0IGluZGljYXRlcyBhIGNvbmRpdGlvbmFsIGRlcGVuZGVuY3ksIEkgbmVlZCB0byBrbm93IGEgbGl0dGxlIG1vcmUuXG5cbkkgbmVlZCB0byBxdWlja2x5IHZlcmlmeSBteSB1bmRlcnN0YW5kaW5nLiBJdCBpcyBwcnVkZW50IHRvIGNoZWNrIHRoZSBmdWxsIGRlcGVuZGVuY3kgY2hhaW4gZm9yIGBXQ04zNlhYYC4gSSB3aWxsIG5lZWQgdG8gbG9vayBkZWVwZXIgaW50byBgUUNPTV9XQ05TU19DVFJMYCB0byB0cnVseSB1bmRlcnN0YW5kIGhvdyB0aGUgYFdDTjM2WFhgIGRyaXZlciBmaXRzIGludG8gdGhlIGJyb2FkZXIgUXVhbGNvbW0gd2lyZWxlc3Mgc3Vic3lzdGVtLiBMZXQncyBkaWcgaW4uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM0NzMsIk91dHB1dFRva2VucyI6NDIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2NiwiVG9vbENhbGxzIjpbImdyZXBwZXIiLCJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjZUMTg6NTM6NTQuNzU3OTEzMzcyWiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Nzc3NDksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAxLFxuICBcIkxpbmVDb3VudFwiOiAyMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgICAxOlxcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IElTQ1xcbiAgIDI6XFx0Y29uZmlnIFdDTjM2WFhcXG4gICAzOlxcdFxcdHRyaXN0YXRlIFxcXCJRdWFsY29tbSBBdGhlcm9zIFdDTjM2NjAvMzY4MCBzdXBwb3J0XFxcIlxcbiAgIDQ6XFx0XFx0ZGVwZW5kcyBvbiBNQUM4MDIxMSBcXHUwMDI2XFx1MDAyNiBIQVNfRE1BXFxuICAgNTpcXHRcXHRkZXBlbmRzIG9uIFFDT01fV0NOU1NfQ1RSTCB8fCBRQ09NX1dDTlNTX0NUUkw9blxcbiAgIDY6XFx0XFx0ZGVwZW5kcyBvbiBSUE1TRyB8fCBSUE1TRz1uXFxuICAgNzpcXHRcXHRoZWxwXFxuICAgODpcXHRcXHQgIFRoaXMgbW9kdWxlIGFkZHMgc3VwcG9ydCBmb3Igd2lyZWxlc3MgYWRhcHRlcnMgYmFzZWQgb25cXG4gICA5OlxcdFxcdCAgUXVhbGNvbW0gQXRoZXJvcyBXQ04zNjYwIGFuZCBXQ04zNjgwIG1vYmlsZSBjaGlwc2V0cy5cXG4gIDEwOlxcdFxcbiAgMTE6XFx0XFx0ICBJZiB5b3UgY2hvb3NlIHRvIGJ1aWxkIGEgbW9kdWxlLCBpdCdsbCBiZSBjYWxsZWQgd2NuMzZ4eC5cXG4gIDEyOlxcdFxcbiAgMTM6XFx0Y29uZmlnIFdDTjM2WFhfREVCVUdGU1xcbiAgMTQ6XFx0XFx0Ym9vbCBcXFwiV0NOMzZYWCBkZWJ1Z2ZzIHN1cHBvcnRcXFwiXFxuICAxNTpcXHRcXHRkZXBlbmRzIG9uIFdDTjM2WFhcXG4gIDE2OlxcdFxcdGhlbHBcXG4gIDE3OlxcdFxcdCAgRW5hYmxlZCBkZWJ1Z2ZzIHN1cHBvcnRcXG4gIDE4OlxcdFxcbiAgMTk6XFx0XFx0ICBJZiB1bnN1cmUsIHNheSBZIHRvIG1ha2UgaXQgZWFzaWVyIHRvIGRlYnVnIHByb2JsZW1zLlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQxODo1Mzo1NC43NTc5OTMwOTJaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNjE5MDA2MjgyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBEcml2ZXIgUmVhY2hhYmlsaXR5IGluIFFFTVUqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBpZWNlIG9mIGNvZGUsIGFuZCB0aGUgZmlyc3QgdGhpbmcgdGhhdCBqdW1wcyBvdXQgaXMgdGhlIGRlcGVuZGVuY3kgb24gYE1BQzgwMjExIFx1MDAyNlx1MDAyNiBIQVNfRE1BYC4gVGhhdCdzIGEgcHJldHR5IGNsZWFyIGluZGljYXRvciBvZiB3aGF0IHRoaXMgZHJpdmVyICptaWdodCogYmUgdXNlZCBmb3IuIEJ1dCB0aGUga2V5IHF1ZXN0aW9uIGhlcmUsIGVzcGVjaWFsbHkgZ2l2ZW4gbXkgZGVidWdnaW5nIHNldHVwLCBpczogY2FuIHRoaXMgZHJpdmVyIGV2ZW4gKnJlYWNoKiBRRU1VPyBJIG5lZWQgdG8gcXVpY2tseSBlc3RhYmxpc2ggaWYgaXQncyBwYXJ0IG9mIHRoZSBjb25maWd1cmF0aW9uIEknbSBydW5uaW5nLlxuXG5UaGUgbmV4dCBjbHVlIGlzIGBxY29tX3djbnNzX29wZW5fY2hhbm5lbGAuIFRoYXQgZnVuY3Rpb24gaW1tZWRpYXRlbHkgcG9pbnRzIG1lIHRvIGBRQ09NX1dDTlNTX0NUUkxgLCB3aGljaCBpcyBhbm90aGVyIGltcG9ydGFudCBwaWVjZSBvZiB0aGUgcHV6emxlLiBOb3cgSSdtIHRyeWluZyB0byBwaWN0dXJlIHRoZSBtb2R1bGUncyBzdHJ1Y3R1cmUgaW4gbXkgaGVhZC4gSSdtIGFsbW9zdCBjZXJ0YWluIEkgaGF2ZSB0aGF0IGVuYWJsZWQgYnV0IEkgbmVlZCB0byBxdWlja2x5IGRldGVybWluZSB3aGV0aGVyIGl0IHJlZ2lzdGVycyBhIHBsYXRmb3JtIGRyaXZlciBvciBzb21ldGhpbmcgZWxzZSB0aGF0IFFFTVUgYWN0dWFsbHkgbGV2ZXJhZ2VzLiBUaGlzIHdvdWxkIG9mZmVyIGEgY2xlYXIgcGF0aCBmb3IgZXhwbG9pdGF0aW9uLiBMZXQncyBzZWUuLi4gbG9va2luZyBmb3IgcGxhdGZvcm0gZHJpdmVyIHJlZ2lzdHJhdGlvbiBuZXh0LlxuXG5cbiIsIklucHV0VG9rZW5zIjo0MDk4LCJPdXRwdXRUb2tlbnMiOjgwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NzAsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQxODo1Mzo1OC4zNzcwMDMwNzRaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzkwMjQ0NTE3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm1vZHVsZV9wbGF0Zm9ybV9kcml2ZXJcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYz0xNjc2PXN0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIHdjbjM2eHhfZHJpdmVyID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTE2ODQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jOjE2ODU6bW9kdWxlX3BsYXRmb3JtX2RyaXZlcih3Y24zNnh4X2RyaXZlcik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTE2ODYtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDE4OjUzOjU4Ljc2NzI1ODM1MVoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjE4NzI2ODMsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwid2NuMzZ4eF9wcm9iZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jPTE0NzI9c3RhdGljIGludCB3Y24zNnh4X3BsYXRmb3JtX2dldF9yZXNvdXJjZXMoc3RydWN0IHdjbjM2eHggKndjbixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYy0xNTU3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYzoxNTU4OnN0YXRpYyBpbnQgd2NuMzZ4eF9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYy0xNTU5LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYz0xNjc2PXN0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIHdjbjM2eHhfZHJpdmVyID0ge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYzoxNjc3OlxcdC5wcm9iZSA9IHdjbjM2eHhfcHJvYmUsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTE2NzgtXFx0LnJlbW92ZSA9IHdjbjM2eHhfcmVtb3ZlLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQxODo1Mzo1OC44MjkxNDE4ODRaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzM3Mjc5MjExOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHM6XG5cbioqRGlzc2VjdGluZyB0aGUgUGxhdGZvcm0gRHJpdmVyIEludGVyYWN0aW9uKipcblxuT2theSwgc28gd2UncmUgbG9va2luZyBhdCBhIHBsYXRmb3JtIGRyaXZlciBpbnRlcmFjdGlvbiwgbW9zdCBsaWtlbHkgaW52b2x2aW5nIHNvbWV0aGluZyB0cmlnZ2VyZWQgYnkgU3l6a2FsbGVyLCB3aGljaCwgaWYgSSByZWNhbGwgY29ycmVjdGx5LCBjYW4gaW5qZWN0IHBsYXRmb3JtIGRldmljZXMgdXNpbmcgZnVuY3Rpb25zIGxpa2UgYHN5el9kZXZfcGxhdGZvcm1fYWRkYC4gVGhhdCdzIHRoZSB0eXBpY2FsIGFwcHJvYWNoLiBXYWl0IGEgbWludXRlLCB3aGF0J3MgZ29pbmcgb24gd2l0aCBgd2NuMzZ4eF9zbWRfcnNwX3Byb2Nlc3NgPyBUaGF0IG5hbWUgaXMgbWFraW5nIG1lIHRoaW5r4oCmaXNuJ3QgdGhhdCBhbiBycG1zZyBjYWxsYmFjaz8gVGhhdCBjZXJ0YWlubHkgc21lbGxzIGxpa2UgYW4gaW50ZXItcHJvY2Vzc29yIGNvbW11bmljYXRpb24gc2NoZW1lLiBPa2F5LCBsZXQncyBiYWNrIHVwIGEgYml0IGFuZCBnbyB0byB0aGUgc291cmNlLCBzdGFydGluZyB3aXRoIGB3Y24zNnh4X3Byb2JlYC4gVGhhdCdzIHdoZXJlIGl0IGFsbCBiZWdpbnMuIEZyb20gdGhlcmUsIHdlIGNhbiBhbmFseXplIHRoZSBpbml0aWFsaXphdGlvbiBhbmQgcmVnaXN0cmF0aW9uLCB0byBzZWUgaG93IHRoYXQgY2FsbGJhY2sgaXMgYXNzb2NpYXRlZCBhbmQgdHJpZ2dlcmVkLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0ODY3LCJPdXRwdXRUb2tlbnMiOjQ2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NjYsIlRvb2xDYWxscyI6WyJncmVwcGVyIiwiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDE4OjU0OjAyLjIwMTkzNzQzM1oiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNjk5NDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDE1NTgsXG4gIFwiTGluZUNvdW50XCI6IDUwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIjE1NTg6XFx0c3RhdGljIGludCB3Y24zNnh4X3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuMTU1OTpcXHR7XFxuMTU2MDpcXHRcXHRzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodztcXG4xNTYxOlxcdFxcdHN0cnVjdCB3Y24zNnh4ICp3Y247XFxuMTU2MjpcXHRcXHR2b2lkICp3Y25zcztcXG4xNTYzOlxcdFxcdGludCByZXQ7XFxuMTU2NDpcXHRcXHRjb25zdCB1OCAqYWRkcjtcXG4xNTY1OlxcdFxcdGludCBuX2NoYW5uZWxzO1xcbjE1NjY6XFx0XFxuMTU2NzpcXHRcXHR3Y24zNnh4X2RiZyhXQ04zNlhYX0RCR19NQUMsIFxcXCJwbGF0Zm9ybSBwcm9iZVxcXFxuXFxcIik7XFxuMTU2ODpcXHRcXG4xNTY5OlxcdFxcdHdjbnNzID0gZGV2X2dldF9kcnZkYXRhKHBkZXYtXFx1MDAzZWRldi5wYXJlbnQpO1xcbjE1NzA6XFx0XFxuMTU3MTpcXHRcXHRuX2NoYW5uZWxzID0gd2NuX2JhbmRfMmdoei5uX2NoYW5uZWxzICsgd2NuX2JhbmRfNWdoei5uX2NoYW5uZWxzO1xcbjE1NzI6XFx0XFx0aHcgPSBpZWVlODAyMTFfYWxsb2NfaHcoc3RydWN0X3NpemUod2NuLCBjaGFuX3N1cnZleSwgbl9jaGFubmVscyksIFxcdTAwMjZ3Y24zNnh4X29wcyk7XFxuMTU3MzpcXHRcXHRpZiAoIWh3KSB7XFxuMTU3NDpcXHRcXHRcXHR3Y24zNnh4X2VycihcXFwiZmFpbGVkIHRvIGFsbG9jIGh3XFxcXG5cXFwiKTtcXG4xNTc1OlxcdFxcdFxcdHJldCA9IC1FTk9NRU07XFxuMTU3NjpcXHRcXHRcXHRnb3RvIG91dF9lcnI7XFxuMTU3NzpcXHRcXHR9XFxuMTU3ODpcXHRcXHRwbGF0Zm9ybV9zZXRfZHJ2ZGF0YShwZGV2LCBodyk7XFxuMTU3OTpcXHRcXHR3Y24gPSBody1cXHUwMDNlcHJpdjtcXG4xNTgwOlxcdFxcdHdjbi1cXHUwMDNlaHcgPSBodztcXG4xNTgxOlxcdFxcdHdjbi1cXHUwMDNlZGV2ID0gXFx1MDAyNnBkZXYtXFx1MDAzZWRldjtcXG4xNTgyOlxcdFxcdHdjbi1cXHUwMDNlZmlyc3RfYm9vdCA9IHRydWU7XFxuMTU4MzpcXHRcXHRtdXRleF9pbml0KFxcdTAwMjZ3Y24tXFx1MDAzZWNvbmZfbXV0ZXgpO1xcbjE1ODQ6XFx0XFx0bXV0ZXhfaW5pdChcXHUwMDI2d2NuLVxcdTAwM2VoYWxfbXV0ZXgpO1xcbjE1ODU6XFx0XFx0bXV0ZXhfaW5pdChcXHUwMDI2d2NuLVxcdTAwM2VzY2FuX2xvY2spO1xcbjE1ODY6XFx0XFx0X19za2JfcXVldWVfaGVhZF9pbml0KFxcdTAwMjZ3Y24tXFx1MDAzZWFtc2R1KTtcXG4xNTg3OlxcdFxcbjE1ODg6XFx0XFx0d2NuLVxcdTAwM2VoYWxfYnVmID0gZGV2bV9rbWFsbG9jKHdjbi1cXHUwMDNlZGV2LCBXQ04zNlhYX0hBTF9CVUZfU0laRSwgR0ZQX0tFUk5FTCk7XFxuMTU4OTpcXHRcXHRpZiAoIXdjbi1cXHUwMDNlaGFsX2J1Zikge1xcbjE1OTA6XFx0XFx0XFx0cmV0ID0gLUVOT01FTTtcXG4xNTkxOlxcdFxcdFxcdGdvdG8gb3V0X3dxO1xcbjE1OTI6XFx0XFx0fVxcbjE1OTM6XFx0XFxuMTU5NDpcXHRcXHRyZXQgPSBkbWFfc2V0X21hc2tfYW5kX2NvaGVyZW50KHdjbi1cXHUwMDNlZGV2LCBETUFfQklUX01BU0soMzIpKTtcXG4xNTk1OlxcdFxcdGlmIChyZXQgXFx1MDAzYyAwKSB7XFxuMTU5NjpcXHRcXHRcXHR3Y24zNnh4X2VycihcXFwiZmFpbGVkIHRvIHNldCBETUEgbWFzazogJWRcXFxcblxcXCIsIHJldCk7XFxuMTU5NzpcXHRcXHRcXHRnb3RvIG91dF93cTtcXG4xNTk4OlxcdFxcdH1cXG4xNTk5OlxcdFxcbjE2MDA6XFx0XFx0d2NuLVxcdTAwM2Vudl9maWxlID0gV0xBTl9OVl9GSUxFO1xcbjE2MDE6XFx0XFx0cmV0ID0gb2ZfcHJvcGVydHlfcmVhZF9zdHJpbmcod2NuLVxcdTAwM2VkZXYtXFx1MDAzZXBhcmVudC1cXHUwMDNlb2Zfbm9kZSwgXFxcImZpcm13YXJlLW5hbWVcXFwiLCBcXHUwMDI2d2NuLVxcdTAwM2Vudl9maWxlKTtcXG4xNjAyOlxcdFxcdGlmIChyZXQgXFx1MDAzYyAwIFxcdTAwMjZcXHUwMDI2IHJldCAhPSAtRUlOVkFMKSB7XFxuMTYwMzpcXHRcXHRcXHR3Y24zNnh4X2VycihcXFwiZmFpbGVkIHRvIHJlYWQgXFxcXFxcXCJmaXJtd2FyZS1uYW1lXFxcXFxcXCIgcHJvcGVydHk6ICVkXFxcXG5cXFwiLCByZXQpO1xcbjE2MDQ6XFx0XFx0XFx0Z290byBvdXRfd3E7XFxuMTYwNTpcXHRcXHR9XFxuMTYwNjpcXHRcXG4xNjA3OlxcdFxcdHdjbi1cXHUwMDNlc21kX2NoYW5uZWwgPSBxY29tX3djbnNzX29wZW5fY2hhbm5lbCh3Y25zcywgXFxcIldMQU5fQ1RSTFxcXCIsIHdjbjM2eHhfc21kX3JzcF9wcm9jZXNzLCBodyk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDE4OjU0OjAyLjIwMjExMTQ0M1oiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyOTg5NjMwOTY3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uXG5cbioqRGl2aW5nIGludG8gdGhlIFByb2JlIEZ1bmN0aW9uIGFuZCBXQ05TUyBDaGFubmVsIE9wZW5pbmcqKlxuXG5BbHJpZ2h0LCBzbyB0aGUgYHByb2JlYCBmdW5jdGlvbiBpcyBjYWxsaW5nIGBxY29tX3djbnNzX29wZW5fY2hhbm5lbGAuIFRoYXQncyB0aGUga2V5LiBNeSBmaXJzdCB0aG91Z2h0IGlzLCBcIk9rYXksIHdoYXQncyAqdGhhdCogYWJvdXQ/XCIgSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCBgcWNvbV93Y25zc19vcGVuX2NoYW5uZWxgIGlzIGRvaW5nIHRvIHByb3Blcmx5IHVuZGVyc3RhbmQgdGhlIHByb2JlIGZ1bmN0aW9uLiBMZXQncyBkaWcgaW50byB0aGF0IGZ1bmN0aW9uIGRlZmluaXRpb24gYW5kIHNlZSB3aGF0IGl0IGVudGFpbHMuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoaXMgY2hhbm5lbCBvcGVuaW5nIHByb2Nlc3MgYW5kIGhvdyBpdCByZWxhdGVzIHRvIHRoZSBvdmVyYWxsIGluaXRpYWxpemF0aW9uIG9mIHdoYXRldmVyIGhhcmR3YXJlIGlzIGJlaW5nIHByb2JlZCBoZXJlLiBLbm93aW5nIHRoaXMgd2lsbCBnaXZlIG1lIGEgcHJvcGVyIGNvbnRleHQgZm9yIHRoZSByZXN0IG9mIHRoZSBmdW5jdGlvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6NjA4MSwiT3V0cHV0VG9rZW5zIjoyNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM2LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjZUMTg6NTQ6MDUuMTkxNzQ2MTZaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE5MTY0NDIwNjcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicWNvbV93Y25zc19vcGVuX2NoYW5uZWxcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9ibHVldG9vdGgvYnRxY29tc21kLmM9MTQwPXN0YXRpYyBpbnQgYnRxY29tc21kX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL2JsdWV0b290aC9idHFjb21zbWQuYy0xNTItXFxuZHJpdmVycy9ibHVldG9vdGgvYnRxY29tc21kLmM6MTUzOlxcdGJ0cS1cXHUwMDNlYWNsX2NoYW5uZWwgPSBxY29tX3djbnNzX29wZW5fY2hhbm5lbCh3Y25zcywgXFxcIkFQUFNfUklWQV9CVF9BQ0xcXFwiLFxcbmRyaXZlcnMvYmx1ZXRvb3RoL2J0cWNvbXNtZC5jLTE1NC1cXHRcXHRcXHRcXHRcXHRcXHQgICBidHFjb21zbWRfYWNsX2NhbGxiYWNrLCBidHEpO1xcbi0tXFxuZHJpdmVycy9ibHVldG9vdGgvYnRxY29tc21kLmMtMTU3LVxcbmRyaXZlcnMvYmx1ZXRvb3RoL2J0cWNvbXNtZC5jOjE1ODpcXHRidHEtXFx1MDAzZWNtZF9jaGFubmVsID0gcWNvbV93Y25zc19vcGVuX2NoYW5uZWwod2Nuc3MsIFxcXCJBUFBTX1JJVkFfQlRfQ01EXFxcIixcXG5kcml2ZXJzL2JsdWV0b290aC9idHFjb21zbWQuYy0xNTktXFx0XFx0XFx0XFx0XFx0XFx0ICAgYnRxY29tc21kX2NtZF9jYWxsYmFjaywgYnRxKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYz0xNTU4PXN0YXRpYyBpbnQgd2NuMzZ4eF9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTE2MDYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jOjE2MDc6XFx0d2NuLVxcdTAwM2VzbWRfY2hhbm5lbCA9IHFjb21fd2Nuc3Nfb3Blbl9jaGFubmVsKHdjbnNzLCBcXFwiV0xBTl9DVFJMXFxcIiwgd2NuMzZ4eF9zbWRfcnNwX3Byb2Nlc3MsIGh3KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmMtMTYwOC1cXHRpZiAoSVNfRVJSKHdjbi1cXHUwMDNlc21kX2NoYW5uZWwpKSB7XFxuLS1cXG5kcml2ZXJzL3NvYy9xY29tL3djbnNzX2N0cmwuYz0yMDA9c3RhdGljIGludCB3Y25zc19kb3dubG9hZF9udihzdHJ1Y3Qgd2Nuc3NfY3RybCAqd2Nuc3MsIGJvb2wgKmV4cGVjdF9jYmMpXFxuLS1cXG5kcml2ZXJzL3NvYy9xY29tL3djbnNzX2N0cmwuYy0yNzUtLyoqXFxuZHJpdmVycy9zb2MvcWNvbS93Y25zc19jdHJsLmM6Mjc2OiAqIHFjb21fd2Nuc3Nfb3Blbl9jaGFubmVsKCkgLSBvcGVuIGFkZGl0aW9uYWwgU01EIGNoYW5uZWwgdG8gV0NOU1NcXG5kcml2ZXJzL3NvYy9xY29tL3djbnNzX2N0cmwuYy0yNzctICogQHdjbnNzOlxcdHdjbnNzIGhhbmRsZSwgcmV0cmlldmVkIGZyb20gZHJ2ZGF0YVxcbi0tXFxuZHJpdmVycy9zb2MvcWNvbS93Y25zc19jdHJsLmMtMjgxLSAqL1xcbmRyaXZlcnMvc29jL3Fjb20vd2Nuc3NfY3RybC5jOjI4MjpzdHJ1Y3QgcnBtc2dfZW5kcG9pbnQgKnFjb21fd2Nuc3Nfb3Blbl9jaGFubmVsKHZvaWQgKndjbnNzLCBjb25zdCBjaGFyICpuYW1lLCBycG1zZ19yeF9jYl90IGNiLCB2b2lkICpwcml2KVxcbmRyaXZlcnMvc29jL3Fjb20vd2Nuc3NfY3RybC5jLTI4My17XFxuLS1cXG5kcml2ZXJzL3NvYy9xY29tL3djbnNzX2N0cmwuYy0yOTItfVxcbmRyaXZlcnMvc29jL3Fjb20vd2Nuc3NfY3RybC5jOjI5MzpFWFBPUlRfU1lNQk9MX0dQTChxY29tX3djbnNzX29wZW5fY2hhbm5lbCk7XFxuZHJpdmVycy9zb2MvcWNvbS93Y25zc19jdHJsLmMtMjk0LVxcbi0tXFxuaW5jbHVkZS9saW51eC9zb2MvcWNvbS93Y25zc19jdHJsLmgtOC1cXG5pbmNsdWRlL2xpbnV4L3NvYy9xY29tL3djbnNzX2N0cmwuaDo5OnN0cnVjdCBycG1zZ19lbmRwb2ludCAqcWNvbV93Y25zc19vcGVuX2NoYW5uZWwodm9pZCAqd2Nuc3MsIGNvbnN0IGNoYXIgKm5hbWUsXFxuaW5jbHVkZS9saW51eC9zb2MvcWNvbS93Y25zc19jdHJsLmgtMTAtXFx0XFx0XFx0XFx0XFx0ICAgICAgIHJwbXNnX3J4X2NiX3QgY2IsIHZvaWQgKnByaXYpO1xcbi0tXFxuaW5jbHVkZS9saW51eC9zb2MvcWNvbS93Y25zc19jdHJsLmgtMTMtXFxuaW5jbHVkZS9saW51eC9zb2MvcWNvbS93Y25zc19jdHJsLmg6MTQ6c3RhdGljIHN0cnVjdCBycG1zZ19lbmRwb2ludCAqcWNvbV93Y25zc19vcGVuX2NoYW5uZWwodm9pZCAqd2Nuc3MsXFxuaW5jbHVkZS9saW51eC9zb2MvcWNvbS93Y25zc19jdHJsLmgtMTUtXFx0XFx0XFx0XFx0XFx0XFx0ICAgICAgY29uc3QgY2hhciAqbmFtZSxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjZUMTg6NTQ6MDcuMTA4MTk1NDU3WiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ4OTQ5NTY3NDAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqUlBNU0cgQ2hhbm5lbCBGdXp6aW5nIGluIFFFTVU6IEEgUGF0aCBGb3J3YXJkPyoqXG5cbk9rYXksIHNvIEknbSB0aGlua2luZyBhYm91dCBob3cgdG8gcG90ZW50aWFsbHkgZnV6eiBhbiBycG1zZyBjaGFubmVsLiBJdCBzdGFydHMgd2l0aCBlc3RhYmxpc2hpbmcgdGhpcyBjb21tdW5pY2F0aW9uIGNoYW5uZWwsIHJpZ2h0PyBSUE1TRyBpcyB0aGlzIGZyYW1ld29yayBmb3IgcmVtb3RlIHByb2Nlc3NvciBtZXNzYWdpbmcsIGFuZCBteSBpbW1lZGlhdGUgcXVlc3Rpb24gaXM6IGNhbiB3ZSBhY3R1YWxseSBmdXp6IHRoZXNlIGNoYW5uZWxzIHdpdGhpbiBhIFFFTVUgZW52aXJvbm1lbnQ/IEkga25vdyBTeXprYWxsZXIgaGFzIHNvbWUgZXhpc3Rpbmcgc3VwcG9ydCwgb3IgYXQgbGVhc3QgdGhlIHBvdGVudGlhbCB0byBpbmplY3QgbWVzc2FnZXMsIGlmIHRoZXJlJ3MgYSBwcmFjdGljYWwgd2F5IHRvIGdldCB0aGluZ3MgZ29pbmcuXG5cblNwZWNpZmljYWxseSwgSSdtIGxvb2tpbmcgYXQgdGhpcyBgd2NuMzZ4eGAgdGhpbmc7IGl0IGFwcGVhcnMgdG8gYmUgYSBwbGF0Zm9ybSBkZXZpY2UuIElmIEkgY2FuIHNvbWVob3cgcmVhY2ggdGhlIGB3Y24zNnh4X3NtZF9yc3BfcHJvY2Vzc2AgZnVuY3Rpb24sIHRoYXQncyB3aGF0IEkgd2FudC4gVGhlIGlkZWEgaXMgdGhhdCBpZiBTeXprYWxsZXIgY2FuIGluc3RhbnRpYXRlIGEgYHdjbjM2eHhgIHBsYXRmb3JtIGRldmljZSwgdGhhdCB3b3VsZCB0cmlnZ2VyIGEgY2FsbCB0byBgd2NuMzZ4eF9wcm9iZWAuIEJ1dCBgd2NuMzZ4eF9wcm9iZWAgc2VlbXMgdG8gY2FsbCBgcWNvbV93Y25zc19vcGVuX2NoYW5uZWxgLCB0YWtpbmcgYSBgd2Nuc3NgIHBhcmFtZXRlci5cblxuTm93LCBoZXJlJ3Mgd2hlcmUgaXQgZ2V0cyBpbnRlcmVzdGluZzogdGhlIGB3Y25zc2AgdmFsdWUgYXBwZWFycyB0byBiZSBmZXRjaGVkIHVzaW5nIGBkZXZfZ2V0X2RydmRhdGEocGRldi1cdTAwM2VkZXYucGFyZW50KWAuIFRoZSBwcm9ibGVtIGlzIHRoYXQgaWYgYHBkZXYtXHUwMDNlZGV2LnBhcmVudGAgaXMgTlVMTCBvciBkb2Vzbid0IGhhdmUgYW55IGRyaXZlciBkYXRhIGFzc29jaWF0ZWQgd2l0aCBpdCwgdGhlbiBgd2Nuc3NgIGlzIGdvaW5nIHRvIGJlIE5VTEwuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoYXQgYHFjb21fd2Nuc3Nfb3Blbl9jaGFubmVsYCBmdW5jdGlvbiwgbGV0J3Mgc2VlIGhvdyB0aGF0IGJlaGF2ZXMgaWYgYHdjbnNzYCBpcyBudWxsLlxuXG5cbiIsIklucHV0VG9rZW5zIjo3MjU2LCJPdXRwdXRUb2tlbnMiOjQyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjI1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDE4OjU0OjEyLjAwMzE1NTk0N1oiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo5OTgwOSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL3NvYy9xY29tL3djbnNzX2N0cmwuY1wiLFxuICBcIkZpcnN0TGluZVwiOiAyNzUsXG4gIFwiTGluZUNvdW50XCI6IDIwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAyNzU6XFx0LyoqXFxuIDI3NjpcXHQgKiBxY29tX3djbnNzX29wZW5fY2hhbm5lbCgpIC0gb3BlbiBhZGRpdGlvbmFsIFNNRCBjaGFubmVsIHRvIFdDTlNTXFxuIDI3NzpcXHQgKiBAd2Nuc3M6XFx0d2Nuc3MgaGFuZGxlLCByZXRyaWV2ZWQgZnJvbSBkcnZkYXRhXFxuIDI3ODpcXHQgKiBAbmFtZTpcXHRTTUQgY2hhbm5lbCBuYW1lXFxuIDI3OTpcXHQgKiBAY2I6XFx0XFx0Y2FsbGJhY2sgdG8gaGFuZGxlIGluY29taW5nIGRhdGEgb24gdGhlIGNoYW5uZWxcXG4gMjgwOlxcdCAqIEBwcml2OlxcdHByaXZhdGUgZGF0YSBmb3IgdXNlIGluIHRoZSBjYWxsLWJhY2tcXG4gMjgxOlxcdCAqL1xcbiAyODI6XFx0c3RydWN0IHJwbXNnX2VuZHBvaW50ICpxY29tX3djbnNzX29wZW5fY2hhbm5lbCh2b2lkICp3Y25zcywgY29uc3QgY2hhciAqbmFtZSwgcnBtc2dfcnhfY2JfdCBjYiwgdm9pZCAqcHJpdilcXG4gMjgzOlxcdHtcXG4gMjg0OlxcdFxcdHN0cnVjdCBycG1zZ19jaGFubmVsX2luZm8gY2hpbmZvO1xcbiAyODU6XFx0XFx0c3RydWN0IHdjbnNzX2N0cmwgKl93Y25zcyA9IHdjbnNzO1xcbiAyODY6XFx0XFxuIDI4NzpcXHRcXHRzdHJzY3B5KGNoaW5mby5uYW1lLCBuYW1lLCBzaXplb2YoY2hpbmZvLm5hbWUpKTtcXG4gMjg4OlxcdFxcdGNoaW5mby5zcmMgPSBSUE1TR19BRERSX0FOWTtcXG4gMjg5OlxcdFxcdGNoaW5mby5kc3QgPSBSUE1TR19BRERSX0FOWTtcXG4gMjkwOlxcdFxcbiAyOTE6XFx0XFx0cmV0dXJuIHJwbXNnX2NyZWF0ZV9lcHQoX3djbnNzLVxcdTAwM2VjaGFubmVsLVxcdTAwM2VycGRldiwgY2IsIHByaXYsIGNoaW5mbyk7XFxuIDI5MjpcXHR9XFxuIDI5MzpcXHRFWFBPUlRfU1lNQk9MX0dQTChxY29tX3djbnNzX29wZW5fY2hhbm5lbCk7XFxuIDI5NDpcXHRcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjZUMTg6NTQ6MTIuMDAzMjU3MzU4WiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ2MjE5ODUzODQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgUG90ZW50aWFsIENyYXNoIGluIHRoZSBXQ04zNnh4IERyaXZlcioqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgY29kZSBhbmQgaW1tZWRpYXRlbHkgc2VlIGEgcG90ZW50aWFsIGlzc3VlLiBJZiB0aGUgYF93Y25zc2AgcG9pbnRlciBpcyBOVUxMLCB0cnlpbmcgdG8gYWNjZXNzIGBfd2Nuc3MtXHUwMDNlY2hhbm5lbGAgaXMgZGVmaW5pdGVseSBnb2luZyB0byBjcmFzaCB0aGUgc3lzdGVtLiBUaGF0J3MgYSBjbGFzc2ljIG51bGwgcG9pbnRlciBkZXJlZmVyZW5jZSwgYW5kIHdlIG5lZWQgdG8gYmUgcmVhbGx5IGNhcmVmdWwgYWJvdXQgdGhhdC4gVGhpcyBzdWdnZXN0cyBhIGNyaXRpY2FsIGRlcGVuZGVuY3k6IHRoZSBgd2NuMzZ4eGAgZHJpdmVyICpuZWVkcyogYSBwYXJlbnQgZGV2aWNlLCBzcGVjaWZpY2FsbHkgYSBgd2Nuc3NfY3RybGAgZGV2aWNlLCB0byBmdW5jdGlvbiBwcm9wZXJseS5cblxuVGhlIHJlYWwgcXVlc3Rpb24gbm93IGlzLCBjYW4gc3l6a2FsbGVyLCBvdXIgZnV6emVyLCBzZXQgdXAgdGhhdCBwcmVyZXF1aXNpdGU/IElmIHN5emthbGxlciBjYW4ndCBjcmVhdGUgdGhlIG5lY2Vzc2FyeSBgd2Nuc3NfY3RybGAgZGV2aWNlLCB0aGVuIHdlIGFyZSB2ZXJ5IHVubGlrZWx5IHRvIHRyaWdnZXIgdGhlIHZ1bG5lcmFibGUgY29kZSwgb3IgYXQgbGVhc3QgdGhlIGNyYXNoLiBNeSBuZXh0IHN0ZXAgd2lsbCBiZSB0byBkaXZlIGludG8gYHdjbnNzX2N0cmwuY2AuIEkgbmVlZCB0byBmaWd1cmUgb3V0IHRoZSBkZXZpY2UgY3JlYXRpb24gcHJvY2VzcyBvZiBhIGB3Y25zc19jdHJsYCBkZXZpY2UgYW5kIGhvdyBzeXprYWxsZXIgaXMgaW50ZXJhY3Rpbmcgd2l0aCBpdCwgb3IgZmFpbGluZyB0by4gVGhhdCdzIHRoZSBrZXkgdG8gdW5kZXJzdGFuZGluZyBpZiB0aGlzIGlzIGEgcmVhbCB2dWxuZXJhYmlsaXR5IHRoYXQgY2FuIGJlIGV4cGxvaXRlZCwgb3IgaWYgb3VyIGZ1enplciBpcyBqdXN0IG5vdCBzZXQgdXAgdG8gcmVhY2ggaXQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjgyNDksIk91dHB1dFRva2VucyI6NzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo3NiwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDE4OjU0OjE2LjYyNTI0NTc2MVoiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjM0MDgwMzIsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm1vZHVsZV9wbGF0Zm9ybV9kcml2ZXJcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9zb2MvcWNvbS93Y25zc19jdHJsLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDE4OjU0OjE2LjY4ODY2Mzg3M1oiLCJTZXEiOjE5LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjMyNDE0MzIsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicnBtc2dfZHJpdmVyXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvc29jL3Fjb20vd2Nuc3NfY3RybC5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvc29jL3Fjb20vd2Nuc3NfY3RybC5jPTM1Mz1NT0RVTEVfREVWSUNFX1RBQkxFKG9mLCB3Y25zc19jdHJsX29mX21hdGNoKTtcXG5kcml2ZXJzL3NvYy9xY29tL3djbnNzX2N0cmwuYy0zNTQtXFxuZHJpdmVycy9zb2MvcWNvbS93Y25zc19jdHJsLmM6MzU1OnN0YXRpYyBzdHJ1Y3QgcnBtc2dfZHJpdmVyIHdjbnNzX2N0cmxfZHJpdmVyID0ge1xcbmRyaXZlcnMvc29jL3Fjb20vd2Nuc3NfY3RybC5jLTM1Ni1cXHQucHJvYmUgPSB3Y25zc19jdHJsX3Byb2JlLFxcbi0tXFxuZHJpdmVycy9zb2MvcWNvbS93Y25zc19jdHJsLmMtMzY0LVxcbmRyaXZlcnMvc29jL3Fjb20vd2Nuc3NfY3RybC5jOjM2NTptb2R1bGVfcnBtc2dfZHJpdmVyKHdjbnNzX2N0cmxfZHJpdmVyKTtcXG5kcml2ZXJzL3NvYy9xY29tL3djbnNzX2N0cmwuYy0zNjYtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDE4OjU0OjE2Ljc1MTkxMzE5NVoiLCJTZXEiOjIwLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo5NzkxNDc0OTMwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKlJlYWNoaW5nIHRoZSBgd2Nuc3NfY3RybGAgRHJpdmVyIHdpdGggU3l6a2FsbGVyKipcblxuT2theSwgc28gYHdjbnNzX2N0cmxgIGlzIGFuIGBycG1zZ19kcml2ZXJgLiBUaGF0IG1lYW5zIGl0IG5lZWRzIGFuIHJwbXNnIGRldmljZSB0byBiZSBwcm9iZWQuIFRoZSBxdWVzdGlvbiBpcywgY2FuIFN5emthbGxlciBjcmVhdGUgb25lPyBJIHdhcyB0aGlua2luZyBhYm91dCBgc3l6X3JwbXNnX2NyZWF0ZV9lcHRgIG9yIHNvbWV0aGluZyBzaW1pbGFyLCBidXQgdGhhdCBkb2Vzbid0IGV4aXN0LCBhbmQgSSBzdGFydGVkIGNvbnNpZGVyaW5nIGBzeXpfbWFjODAyMTFfaHdzaW1gIG9yIGV2ZW4gYHN5el9kZXZfcGxhdGZvcm1fYWRkYC5cblxuSGFuZyBvbiwgdGhpcyBidWcgd2FzIGFjdHVhbGx5IGZvdW5kIGJ5IHN5emJvdCwgYW5kIHRoZSBhdXRob3Igb2YgdGhlIHBhdGNoIGlzIGxpc3RlZCBhcyBgc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VgLiBUaGF0J3MgYSBodWdlIGNsdWUhIEl0IG1lYW5zIHRoaXMgY29kZSBpcyAqcmVhY2hhYmxlKiB3aXRoaW4gU3l6a2FsbGVyJ3MgUUVNVSBlbnZpcm9ubWVudC4gSXQgd2FzIGFscmVhZHkgZm91bmQuIEkgd2FzIHRoaW5raW5nIHRoYXQgSSdkIG5lZWQgdG8gZXhwbGljaXRseSBjcmFmdCBzb21ldGhpbmcgdG8gY3JlYXRlIHRoZSBuZWNlc3NhcnkgcnBtc2cgZGV2aWNlLCBidXQgc3l6Ym90IGhhcyBhbHJlYWR5IGRvbmUgdGhhdCB3b3JrLlxuXG5UaGUgY29tbWl0IG1lc3NhZ2Ugc2F5cyBcImFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3LFwiIHNvIGl0IGhhcyB0byBiZSByZWFjaGFibGUuIE5vdywgaG93ICpkaWQqIFN5emthbGxlciBnZXQgdGhlcmU/IEkgd2FzIGNvbnNpZGVyaW5nIGBtYWM4MDIxMV9od3NpbWAgYXMgYSBnZW5lcmFsIHBhdGgsIG9yIG1heWJlIHNvbWUgZGlyZWN0IHBsYXRmb3JtIGRldmljZSBhZGRpdGlvbiwgYnV0IHRoZW4gSSByZW1lbWJlciB0aGF0IGB3Y25zc19jdHJsYCBpcyBhIHJwbXNnIGRyaXZlci4gVGhlbiwgaXQgaGl0cyBtZS4gRWl0aGVyIGB2aGNpYCBvciBgbWFjODAyMTFfaHdzaW1gIG9yIGB2aXJ0aW9fcnBtc2dfYnVzYCBpcyB1c2VkLlxuXG5JZiBgdmlydGlvX3JwbXNnX2J1c2AgaXMgaW4gcGxheSwgU3l6a2FsbGVyIGNvdWxkIGJlIGluamVjdGluZyB2aXJ0aW8gZGV2aWNlcywgcHJvYmFibHkgdXNpbmcgc29tZXRoaW5nIGxpa2UgYC9kZXYvdmhvc3QtbmV0YCBvciBtYXliZSBhIGN1c3RvbSBgc3l6X3ZpcnRpb2Agc3lzY2FsbCDigJMgbm8sIG5vdCBgc3l6X3ZpcnRpb2AsIEkgd2FzIHRoaW5raW5nIG1vcmUgYWJvdXQgc29tZXRoaW5nIGxpa2UgYHN5el9nZW5ldGxpbmtfZ2V0X2ZhbWlseWAsIGJ1dCBubywgdGhhdCdzIG5vdCBpdC4gT3IgZXZlbiwgYHN5el9rdm1fc2V0dXBfY3B1YCBvciBvdGhlciBLVk0gY2FsbHMsIG5vLiBTeXprYWxsZXIgZnV6emVkIHZpcnRpbyBkZXZpY2VzIHdpdGggYC9kZXYvdmhvc3QtdnNvY2tgP1xuXG5Bbnl3YXksIHRoZSBpbXBvcnRhbnQgcG9pbnQgaXMgdGhhdCBzeXpib3QgKmZvdW5kKiB0aGlzLCBzbyBpdCAqaXMqIHJlYWNoYWJsZS4gSXQncyBzYWZlIHRvIGFzc3VtZSBTeXprYWxsZXIgaXMgZG9pbmcgc29tZXRoaW5nIHRvIGluc3RhbnRpYXRlIGFuIHJwbXNnIGRldmljZS4gSSBqdXN0IG5lZWQgdG8gZmlndXJlIG91dCB3aGF0IHRoYXQgXCJzb21ldGhpbmdcIiBpcywgYnV0IHRoYXQgaXMgbm90IHRoZSBpc3N1ZSwgaXQgaXMgcmVhY2hhYmxlLlxuXG5Ob3csIGxldCBtZSBqdXN0IGRvdWJsZS1jaGVjayB0aGF0IGB3Y24zNnh4X3NtZF9yc3BfcHJvY2Vzc2AgaXMgaW5kZWVkIHRoZSBmdW5jdGlvbiBiZWluZyBwYXRjaGVkLiBBaCwgeWVzLCB0aGUgcGF0Y2ggKmRvZXMqIGFkZCBhIGxlbmd0aCBjaGVjayBpbiBgd2NuMzZ4eF9zbWRfcnNwX3Byb2Nlc3NgLiBTaW5jZSBzeXpib3QgZm91bmQgaXQsIGl0J3MgZGVmaW5pdGVseSByZWFjaGFibGUuXG5cblRpbWUgdG8gbG9vayBpbnRvIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiBgd2NuMzZ4eF9zbWRfcnNwX3Byb2Nlc3NgIGl0c2VsZi5cblxuXG4iLCJJbnB1dFRva2VucyI6ODg5MCwiT3V0cHV0VG9rZW5zIjo0NywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjYwNiwiVG9vbENhbGxzIjpbImdyZXBwZXIiLCJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjZUMTg6NTQ6MjYuNTQzMzkxNzc2WiIsIlNlcSI6MjEsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI2Mzc4MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9zbWQuY1wiLFxuICBcIkZpcnN0TGluZVwiOiAzMjQ4LFxuICBcIkxpbmVDb3VudFwiOiAzMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIzMjQ4OlxcdGludCB3Y24zNnh4X3NtZF9yc3BfcHJvY2VzcyhzdHJ1Y3QgcnBtc2dfZGV2aWNlICpycGRldixcXG4zMjQ5OlxcdFxcdFxcdFxcdCAgICB2b2lkICpidWYsIGludCBsZW4sIHZvaWQgKnByaXYsIHUzMiBhZGRyKVxcbjMyNTA6XFx0e1xcbjMyNTE6XFx0XFx0Y29uc3Qgc3RydWN0IHdjbjM2eHhfaGFsX21zZ19oZWFkZXIgKm1zZ19oZWFkZXIgPSBidWY7XFxuMzI1MjpcXHRcXHRzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyA9IHByaXY7XFxuMzI1MzpcXHRcXHRzdHJ1Y3Qgd2NuMzZ4eCAqd2NuID0gaHctXFx1MDAzZXByaXY7XFxuMzI1NDpcXHRcXHRzdHJ1Y3Qgd2NuMzZ4eF9oYWxfaW5kX21zZyAqbXNnX2luZDtcXG4zMjU1OlxcdFxcdHdjbjM2eHhfZGJnX2R1bXAoV0NOMzZYWF9EQkdfU01EX0RVTVAsIFxcXCJTTUQgXFx1MDAzY1xcdTAwM2NcXHUwMDNjIFxcXCIsIGJ1ZiwgbGVuKTtcXG4zMjU2OlxcdFxcbjMyNTc6XFx0XFx0aWYgKGxlbiBcXHUwMDNjIHNpemVvZigqbXNnX2hlYWRlcikpIHtcXG4zMjU4OlxcdFxcdFxcdHdjbjM2eHhfd2FybihcXFwiQ29ycnVwdGVkIEhBTCBtZXNzYWdlOiBsZW5ndGggJWRcXFxcblxcXCIsIGxlbik7XFxuMzI1OTpcXHRcXHRcXHRyZXR1cm4gMDtcXG4zMjYwOlxcdFxcdH1cXG4zMjYxOlxcdFxcbjMyNjI6XFx0XFx0c3dpdGNoIChtc2dfaGVhZGVyLVxcdTAwM2Vtc2dfdHlwZSkge1xcbjMyNjM6XFx0XFx0Y2FzZSBXQ04zNlhYX0hBTF9TVEFSVF9SU1A6XFxuMzI2NDpcXHRcXHRjYXNlIFdDTjM2WFhfSEFMX0NPTkZJR19TVEFfUlNQOlxcbjMyNjU6XFx0XFx0Y2FzZSBXQ04zNlhYX0hBTF9DT05GSUdfQlNTX1JTUDpcXG4zMjY2OlxcdFxcdGNhc2UgV0NOMzZYWF9IQUxfQUREX1NUQV9TRUxGX1JTUDpcXG4zMjY3OlxcdFxcdGNhc2UgV0NOMzZYWF9IQUxfU1RPUF9SU1A6XFxuMzI2ODpcXHRcXHRjYXNlIFdDTjM2WFhfSEFMX0RFTF9TVEFfU0VMRl9SU1A6XFxuMzI2OTpcXHRcXHRjYXNlIFdDTjM2WFhfSEFMX0RFTEVURV9TVEFfUlNQOlxcbjMyNzA6XFx0XFx0Y2FzZSBXQ04zNlhYX0hBTF9JTklUX1NDQU5fUlNQOlxcbjMyNzE6XFx0XFx0Y2FzZSBXQ04zNlhYX0hBTF9TVEFSVF9TQ0FOX1JTUDpcXG4zMjcyOlxcdFxcdGNhc2UgV0NOMzZYWF9IQUxfRU5EX1NDQU5fUlNQOlxcbjMyNzM6XFx0XFx0Y2FzZSBXQ04zNlhYX0hBTF9GSU5JU0hfU0NBTl9SU1A6XFxuMzI3NDpcXHRcXHRjYXNlIFdDTjM2WFhfSEFMX0RPV05MT0FEX05WX1JTUDpcXG4zMjc1OlxcdFxcdGNhc2UgV0NOMzZYWF9IQUxfREVMRVRFX0JTU19SU1A6XFxuMzI3NjpcXHRcXHRjYXNlIFdDTjM2WFhfSEFMX1NFTkRfQkVBQ09OX1JTUDpcXG4zMjc3OlxcdFxcdGNhc2UgV0NOMzZYWF9IQUxfU0VUX0xJTktfU1RfUlNQOlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQxODo1NDoyNi41NDM2NTgxMzZaIiwiU2VxIjoyMiwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjY3MDAwMzQxMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBQb3RlbnRpYWwgU3l6Ym90LURldGVjdGVkIEJ1ZyBGaXgqKlxuXG5Pa2F5LCBzbyB0aGlzIHBhdGNoIGludHJvZHVjZXMgYSBsZW5ndGggY2hlY2ssIHNwZWNpZmljYWxseTogYGlmIChsZW4gXHUwMDNjIHNpemVvZigqbXNnX2hlYWRlcikpYC4gSG1tLCB0aGlzIGxvb2tzIGxpa2UgYSBzdHJhaWdodGZvcndhcmQgZml4IGZvciBhbiBvdXQtb2YtYm91bmRzIHJlYWQgdnVsbmVyYWJpbGl0eSBvbiBgbXNnX2hlYWRlci1cdTAwM2Vtc2dfdHlwZWAuIFNpbmNlIGl0J3MgYSBkcml2ZXIgY2hhbmdlIGFuZCBzeXpib3QgZm91bmQgaXQsIGl0J3MgcHJldHR5IGxpa2VseSB0aGUgYnVnIGlzIHJlYWNoYWJsZS4gV2FpdCwgaG93IGRvIEkga25vdyBpdCdzIGEgc3l6Ym90IHBhdGNoPyBBaCwgcmlnaHQsIHRoZSBjb21taXQgbWVzc2FnZTogYEF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VgLiBDbGVhci5cblxuQnV0IHdhaXQsIEkgbmVlZCB0byBtYWtlIHN1cmUgdGhpcyBpc24ndCBpbiBhIGRyaXZlciB0aGF0IHJlcXVpcmVzIHNwZWNpYWwgaGFyZHdhcmUgdGhhdCBzeXprYWxsZXIgY2FuJ3QgZW11bGF0ZS4gVGhlIHByb21wdCByZW1pbmRlZCBtZSB0byBjaGVjayBpZiB0aGUgZHJpdmVyIGlzIGEgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUuIFRoZSBkcml2ZXIgaXMgYHdjbjM2eHhgLiBJcyB0aGlzIGEgUENJZSBkcml2ZXI/IExldCdzIGNoZWNrIHRoZSBLY29uZmlnIGZpbGUgZm9yIHRoZSBkcml2ZXIuXG5cbk9rYXksIGNoZWNraW5nIGBkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9LY29uZmlnYCBhZ2Fpbi4gSXQgZGVwZW5kcyBvbiBgUUNPTV9XQ05TU19DVFJMYCBhbmQgYFJQTVNHYC4gSSByZWNhbGwgYFFDT01fV0NOU1NfQ1RSTGAgaXMgYW4gcnBtc2cgZHJpdmVyLiBSaWdodCwgcnBtc2cgaXMgYSBtZXNzYWdpbmcgYnVzLiBJIHRoaW5rIEkndmUgc2VlbiBycG1zZyBlbXVsYXRlZCB2aWEgdmlydGlvIGluIFFFTVUgKHZpcnRpby1ycG1zZykuIERvZXMgUUVNVSBoYXZlIHZpcnRpby1ycG1zZz8gT3IgZG9lcyBzeXprYWxsZXIgaW5qZWN0IHJwbXNnIG1lc3NhZ2VzIHNvbWVob3c/IEkgc2hvdWxkIGNoZWNrLlxuXG5BY3R1YWxseSwgSSBrbm93IHN5emthbGxlciBoYXMgYHN5el9tYWM4MDIxMV9od3NpbWAgd2hpY2ggaXMgZm9yIG1hYzgwMjExLiBXYWl0LCBkb2VzIHN5emthbGxlciBoYXZlIHNvbWV0aGluZyBzaW1pbGFyIGZvciBycG1zZz8gRG9lcyBpdCBoYXZlIGEgcHNldWRvLXN5c2NhbGwgc3BlY2lmaWNhbGx5IGZvciBycG1zZz8gSSBzaG91bGQgY2hlY2sgaWYgc3l6a2FsbGVyIGhhcyBhbnkgcnBtc2cgZGVzY3JpcHRpb25zIGluIGl0cyBzb3VyY2UgY29kZS4gSSBuZWVkIHRvIGJlIHN1cmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEwODE5LCJPdXRwdXRUb2tlbnMiOjI4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDIxLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjZUMTg6NTQ6MzMuMjEzNjY1MjU4WiIsIlNlcSI6MjMsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozMjM2NTg1MjcsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInN5el9cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9ycG1zZy9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDE4OjU0OjMzLjUzNzMzMzQyNVoiLCJTZXEiOjI0LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1MDQ0ODY3NzkxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgRmVhc2liaWxpdHkgb2YgVGFyZ2V0aW5nIGB3Y24zNnh4YCB3aXRoIFN5emthbGxlcioqXG5cbk9rYXksIHNvIEkgY2FuJ3QganVzdCBwbHVnIGEga2V5d29yZCBsaWtlIFwic3l6a2FsbGVyXCIgaW50byBhIHNlYXJjaCBhbmQgZXhwZWN0IHRvIHB1bGwgdXAgcmVsZXZhbnQgZGVzY3JpcHRpb25zLiBJIG5lZWQgdG8gYmUgbW9yZSBzdHJhdGVnaWMuIE15IGluaXRpYWwgdGhvdWdodCB3YXMgdG8gc2VlIGlmIHRoZXJlIHdlcmUgYW55IHBzZXVkby1zeXNjYWxscyBkaXJlY3RseSBidWlsdCBpbnRvIHRoZSBrZXJuZWwsIGJ1dCBubywgdGhvc2UgYXJlIG5vdCBwcmVzZW50LlxuXG5Ob3csIHRoZSByZWFsIHF1ZXN0aW9uIGlzLCBjYW4gSSBldmVuIGdldCBgd2NuMzZ4eGAgcnVubmluZyBpbiBhIFFFTVUgZW52aXJvbm1lbnQsIGFuZCBpZiBzbyBob3c/IExldCdzIGNoZWNrOiBpcyBgd2NuMzZ4eGAgYSBwbGF0Zm9ybSBkcml2ZXI/IFllcywgaXQgaXMuIFJpZ2h0LCBzbyBJIGhhdmUgdG8gdGhpbmsgYWJvdXQgaG93IHN5emthbGxlciBjYW4gaW50ZXJmYWNlLiBSZW1lbWJlciBgc3l6X2Rldl9wbGF0Zm9ybV9hZGRgIGV4aXN0cywgd2hpY2ggY2FuIGFkZCBwbGF0Zm9ybSBkZXZpY2VzLlxuXG5IZXJlJ3MgdGhlIHByb2JsZW06IGB3Y24zNnh4YCdzIHByb2JlIGZ1bmN0aW9uIHNlZW1zIHRvIGJlIGRlcGVuZGVudCBvbiBgd2Nuc3NgIGRyaXZlciBkYXRhIHJldHJpZXZlZCB0aHJvdWdoIGBkZXZfZ2V0X2RydmRhdGEocGRldi1cdTAwM2VkZXYucGFyZW50KWAuIElmIEkgdXNlIGBzeXpfZGV2X3BsYXRmb3JtX2FkZGAgdG8gYWRkIGB3Y24zNnh4YCwgaXRzIHBhcmVudCBkZXZpY2UgbWF5IG5vdCBoYXZlIHRoZSBuZWNlc3NhcnkgYHdjbnNzYCBkcml2ZXIgZGF0YS4gVGhhdCBjb3VsZCBsZWFkIHRvIGEgY3Jhc2gsIG9yIGF0IGxlYXN0IGEgZmFpbGVkIHByb2JlLlxuXG5IYW5nIG9uLi4uIGlzbid0IGB3Y24zNnh4YCBhY3R1YWxseSBwcm9iZWQgYnkgYHdjbnNzX2N0cmxgPyBJIGJldHRlciBjaGVjayB0aGF0LiBMZXQncyBkaWcgaW50byBgZHJpdmVycy9zb2MvcWNvbS93Y25zc19jdHJsLmNgLiBUaGF0IHNob3VsZCBnaXZlIG1lIHRoZSBhbnN3ZXIuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjExNjkxLCJPdXRwdXRUb2tlbnMiOjM5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjI3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDE4OjU0OjM4LjU4MjIwNDQ2NloiLCJTZXEiOjI1LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODA3MTM5NTIsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIndjbjM2eHhcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9zb2MvcWNvbS93Y25zc19jdHJsLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDE4OjU0OjM4LjY2MjkzMTM3OFoiLCJTZXEiOjI2LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2MjczNzM0Mzc1NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaWYgSSB3ZXJlIGNvbnNpZGVyaW5nIHRoaXMgY29kZTpcblxuKipEaWdnaW5nIGludG8gdGhlIGB3Y24zNnh4YCBEcml2ZXIgSW5zdGFudGlhdGlvbioqXG5cbk9rYXksIGhvbGQgb24gYSBzZWNvbmQuLi4gaG93ICpleGFjdGx5KiBpcyB0aGlzIGB3Y24zNnh4YCBkcml2ZXIgZ2V0dGluZyBpbml0aWFsaXplZD8gSSBuZWVkIHRvIHJlZnJlc2ggbXkgbWVtb3J5IG9uIHRoZSBpbnN0YW50aWF0aW9uIGZsb3cuIExldCdzIHNlZS4uLiB0aGUgbW9zdCBsb2dpY2FsIHBsYWNlIHRvIHN0YXJ0IHRyYWNpbmcgaXMgdGhlIGB3Y24zNnh4X3Byb2JlYCBmdW5jdGlvbi4gSSBzaG91bGQgcmV2aWV3IHRoYXQgcm91dGluZSBjYXJlZnVsbHksIGxvb2tpbmcgZm9yIGNsdWVzIGFib3V0IHRoZSBkZXZpY2UncyBhdHRhY2htZW50IHRvIHRoZSBzeXN0ZW0gYW5kIHRoZSBvdmVyYWxsIGluaXRpYWxpemF0aW9uIHNlcXVlbmNlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMjMwMSwiT3V0cHV0VG9rZW5zIjo0MiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDE4OjU1OjQxLjQwMDI3ODEyMloiLCJTZXEiOjI3LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTQ2NjI5MzI2NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ3Y24zNnh4XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJcXG5GdWxsIG91dHB1dCBpcyB0b28gbG9uZywgc2hvd2luZyA1MDAgb3V0IG9mIDg1MyBsaW5lcy5cXG5Vc2UgbW9yZSBwcmVjaXNlIGV4cHJlc3Npb24gaWYgcG9zc2libGUuXFxuXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTI3LSNpbmNsdWRlIFxcdTAwM2NuZXQvaXB2Ni5oXFx1MDAzZVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYzoyODojaW5jbHVkZSBcXFwid2NuMzZ4eC5oXFxcIlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYy0yOS0jaW5jbHVkZSBcXFwidGVzdG1vZGUuaFxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYy0zMS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmM6MzI6dW5zaWduZWQgaW50IHdjbjM2eHhfZGJnX21hc2s7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jOjMzOm1vZHVsZV9wYXJhbV9uYW1lZChkZWJ1Z19tYXNrLCB3Y24zNnh4X2RiZ19tYXNrLCB1aW50LCAwNjQ0KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmMtMzQtTU9EVUxFX1BBUk1fREVTQyhkZWJ1Z19tYXNrLCBcXFwiRGVidWdnaW5nIG1hc2tcXFwiKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYz0xODc9c3RhdGljIGlubGluZSB1OCBnZXRfc3RhX2luZGV4KHN0cnVjdCBpZWVlODAyMTFfdmlmICp2aWYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jOjE4ODpcXHRcXHRcXHQgICAgICAgc3RydWN0IHdjbjM2eHhfc3RhICpzdGFfcHJpdilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmMtMTg5LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYy0xOTQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jOjE5NTpzdGF0aWMgdm9pZCB3Y24zNnh4X2ZlYXRfY2Fwc19pbmZvKHN0cnVjdCB3Y24zNnh4ICp3Y24pXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTE5Ni17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmMtMTk5LVxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBNQVhfRkVBVFVSRV9TVVBQT1JURUQ7IGkrKykge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYzoyMDA6XFx0XFx0aWYgKHdjbjM2eHhfZmlybXdhcmVfZ2V0X2ZlYXRfY2Fwcyh3Y24tXFx1MDAzZWZ3X2ZlYXRfY2FwcywgaSkpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmM6MjAxOlxcdFxcdFxcdHdjbjM2eHhfZGJnKFdDTjM2WFhfREJHX01BQywgXFxcIkZXIENhcCAlc1xcXFxuXFxcIixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmM6MjAyOlxcdFxcdFxcdFxcdCAgICB3Y24zNnh4X2Zpcm13YXJlX2dldF9jYXBfbmFtZShpKSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTIwMy1cXHRcXHR9XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmMtMjA2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYzoyMDc6c3RhdGljIGludCB3Y24zNnh4X3N0YXJ0KHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYy0yMDgte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYzoyMDk6XFx0c3RydWN0IHdjbjM2eHggKndjbiA9IGh3LVxcdTAwM2Vwcml2O1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYy0yMTAtXFx0aW50IHJldDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmMtMjExLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYzoyMTI6XFx0d2NuMzZ4eF9kYmcoV0NOMzZYWF9EQkdfTUFDLCBcXFwibWFjIHN0YXJ0XFxcXG5cXFwiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmMtMjEzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYy0yMTQtXFx0LyogU01EIGluaXRpYWxpemF0aW9uICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jOjIxNTpcXHRyZXQgPSB3Y24zNnh4X3NtZF9vcGVuKHdjbik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTIxNi1cXHRpZiAocmV0KSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jOjIxNzpcXHRcXHR3Y24zNnh4X2VycihcXFwiRmFpbGVkIHRvIG9wZW4gc21kIGNoYW5uZWw6ICVkXFxcXG5cXFwiLCByZXQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYy0yMTgtXFx0XFx0Z290byBvdXRfZXJyO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTIyMS1cXHQvKiBBbGxvY2F0ZSBtZW1vcnkgcG9vbHMgZm9yIE1nbXQgQkQgaGVhZGVycyBhbmQgRGF0YSBCRCBoZWFkZXJzICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jOjIyMjpcXHRyZXQgPSB3Y24zNnh4X2R4ZV9hbGxvY2F0ZV9tZW1fcG9vbHMod2NuKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmMtMjIzLVxcdGlmIChyZXQpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmM6MjI0OlxcdFxcdHdjbjM2eHhfZXJyKFxcXCJGYWlsZWQgdG8gYWxsb2MgRFhFIG1lbXBvb2w6ICVkXFxcXG5cXFwiLCByZXQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYy0yMjUtXFx0XFx0Z290byBvdXRfc21kX2Nsb3NlO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTIyNy1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmM6MjI4OlxcdHJldCA9IHdjbjM2eHhfZHhlX2FsbG9jX2N0bF9ibGtzKHdjbik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTIyOS1cXHRpZiAocmV0KSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jOjIzMDpcXHRcXHR3Y24zNnh4X2VycihcXFwiRmFpbGVkIHRvIGFsbG9jIERYRSBjdGwgYmxvY2tzOiAlZFxcXFxuXFxcIiwgcmV0KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmMtMjMxLVxcdFxcdGdvdG8gb3V0X2ZyZWVfZHhlX3Bvb2w7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmMtMjMzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYzoyMzQ6XFx0cmV0ID0gd2NuMzZ4eF9zbWRfbG9hZF9udih3Y24pO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYy0yMzUtXFx0aWYgKHJldCkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYzoyMzY6XFx0XFx0d2NuMzZ4eF9lcnIoXFxcIkZhaWxlZCB0byBwdXNoIE5WIHRvIGNoaXBcXFxcblxcXCIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYy0yMzctXFx0XFx0Z290byBvdXRfZnJlZV9keGVfY3RsO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTIzOS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmM6MjQwOlxcdHJldCA9IHdjbjM2eHhfc21kX3N0YXJ0KHdjbik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTI0MS1cXHRpZiAocmV0KSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jOjI0MjpcXHRcXHR3Y24zNnh4X2VycihcXFwiRmFpbGVkIHRvIHN0YXJ0IGNoaXBcXFxcblxcXCIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYy0yNDMtXFx0XFx0Z290byBvdXRfZnJlZV9keGVfY3RsO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTI0NS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmM6MjQ2OlxcdGlmICghd2NuMzZ4eF9pc19md192ZXJzaW9uKHdjbiwgMSwgMiwgMiwgMjQpKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jOjI0NzpcXHRcXHRyZXQgPSB3Y24zNnh4X3NtZF9mZWF0dXJlX2NhcHNfZXhjaGFuZ2Uod2NuKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmMtMjQ4LVxcdFxcdGlmIChyZXQpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jOjI0OTpcXHRcXHRcXHR3Y24zNnh4X3dhcm4oXFxcIkV4Y2hhbmdlIGZlYXR1cmUgY2FwcyBmYWlsZWRcXFxcblxcXCIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYy0yNTAtXFx0XFx0ZWxzZVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYzoyNTE6XFx0XFx0XFx0d2NuMzZ4eF9mZWF0X2NhcHNfaW5mbyh3Y24pO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYy0yNTItXFx0fVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTI1NC1cXHQvKiBETUEgY2hhbm5lbCBpbml0aWFsaXphdGlvbiAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYzoyNTU6XFx0cmV0ID0gd2NuMzZ4eF9keGVfaW5pdCh3Y24pO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYy0yNTYtXFx0aWYgKHJldCkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYzoyNTc6XFx0XFx0d2NuMzZ4eF9lcnIoXFxcIkRYRSBpbml0IGZhaWxlZFxcXFxuXFxcIik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTI1OC1cXHRcXHRnb3RvIG91dF9zbWRfc3RvcDtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYy0yNjAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jOjI2MTpcXHR3Y24zNnh4X2RlYnVnZnNfaW5pdCh3Y24pO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYy0yNjItXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmMtMjY5LW91dF9zbWRfc3RvcDpcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmM6MjcwOlxcdHdjbjM2eHhfc21kX3N0b3Aod2NuKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmMtMjcxLW91dF9mcmVlX2R4ZV9jdGw6XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jOjI3MjpcXHR3Y24zNnh4X2R4ZV9mcmVlX2N0bF9ibGtzKHdjbik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTI3My1vdXRfZnJlZV9keGVfcG9vbDpcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmM6Mjc0OlxcdHdjbjM2eHhfZHhlX2ZyZWVfbWVtX3Bvb2xzKHdjbik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTI3NS1vdXRfc21kX2Nsb3NlOlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYzoyNzY6XFx0d2NuMzZ4eF9zbWRfY2xvc2Uod2NuKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmMtMjc3LW91dF9lcnI6XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmMtMjgwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYzoyODE6c3RhdGljIHZvaWQgd2NuMzZ4eF9zdG9wKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LCBib29sIHN1c3BlbmQpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTI4Mi17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jOjI4MzpcXHRzdHJ1Y3Qgd2NuMzZ4eCAqd2NuID0gaHctXFx1MDAzZXByaXY7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTI4NC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmM6Mjg1OlxcdHdjbjM2eHhfZGJnKFdDTjM2WFhfREJHX01BQywgXFxcIm1hYyBzdG9wXFxcXG5cXFwiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmMtMjg2LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTI5Ny1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmM6Mjk4OlxcdHdjbjM2eHhfZGVidWdmc19leGl0KHdjbik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jOjI5OTpcXHR3Y24zNnh4X3NtZF9zdG9wKHdjbik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jOjMwMDpcXHR3Y24zNnh4X2R4ZV9kZWluaXQod2NuKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmM6MzAxOlxcdHdjbjM2eHhfc21kX2Nsb3NlKHdjbik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTMwMi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmM6MzAzOlxcdHdjbjM2eHhfZHhlX2ZyZWVfbWVtX3Bvb2xzKHdjbik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jOjMwNDpcXHR3Y24zNnh4X2R4ZV9mcmVlX2N0bF9ibGtzKHdjbik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTMwNS19XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTMwNi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmM6MzA3OnN0YXRpYyB2b2lkIHdjbjM2eHhfY2hhbmdlX3BzKHN0cnVjdCB3Y24zNnh4ICp3Y24sIGJvb2wgZW5hYmxlKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYy0zMDgte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYy0zMDktXFx0c3RydWN0IGllZWU4MDIxMV92aWYgKnZpZiA9IE5VTEw7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jOjMxMDpcXHRzdHJ1Y3Qgd2NuMzZ4eF92aWYgKnRtcDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmMtMzExLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYy0zMTItXFx0bGlzdF9mb3JfZWFjaF9lbnRyeSh0bXAsIFxcdTAwMjZ3Y24tXFx1MDAzZXZpZl9saXN0LCBsaXN0KSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jOjMxMzpcXHRcXHR2aWYgPSB3Y24zNnh4X3ByaXZfdG9fdmlmKHRtcCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTMxNC1cXHRcXHRpZiAoZW5hYmxlIFxcdTAwMjZcXHUwMDI2ICF3Y24tXFx1MDAzZXN3X3NjYW4pIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmMtMzE1LVxcdFxcdFxcdGlmICh2aWYtXFx1MDAzZWNmZy5wcykgLyogcHMgYWxsb3dlZCA/ICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jOjMxNjpcXHRcXHRcXHRcXHR3Y24zNnh4X3BtY19lbnRlcl9ibXBzX3N0YXRlKHdjbiwgdmlmKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmMtMzE3LVxcdFxcdH0gZWxzZSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jOjMxODpcXHRcXHRcXHR3Y24zNnh4X3BtY19leGl0X2JtcHNfc3RhdGUod2NuLCB2aWYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYy0zMTktXFx0XFx0fVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTMyMi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmM6MzIzOnN0YXRpYyB2b2lkIHdjbjM2eHhfY2hhbmdlX29wY2hhbm5lbChzdHJ1Y3Qgd2NuMzZ4eCAqd2NuLCBpbnQgY2gpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTMyNC17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTMyNS1cXHRzdHJ1Y3QgaWVlZTgwMjExX3ZpZiAqdmlmID0gTlVMTDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmM6MzI2OlxcdHN0cnVjdCB3Y24zNnh4X3ZpZiAqdG1wO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYy0zMjctXFx0c3RydWN0IGllZWU4MDIxMV9zdXBwb3J0ZWRfYmFuZCAqYmFuZDtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYy0zNDYtXFx0aWYgKCFjaGFubmVsKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jOjM0NzpcXHRcXHR3Y24zNnh4X2VycihcXFwiQ2Fubm90IHR1bmUgdG8gY2hhbm5lbCAlZFxcXFxuXFxcIiwgY2gpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYy0zNDgtXFx0XFx0cmV0dXJuO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTM1Ni1cXHRsaXN0X2Zvcl9lYWNoX2VudHJ5KHRtcCwgXFx1MDAyNndjbi1cXHUwMDNldmlmX2xpc3QsIGxpc3QpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmM6MzU3OlxcdFxcdHZpZiA9IHdjbjM2eHhfcHJpdl90b192aWYodG1wKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmM6MzU4OlxcdFxcdHdjbjM2eHhfc21kX3N3aXRjaF9jaGFubmVsKHdjbiwgdmlmLCBjaCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTM1OS1cXHR9XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmMtMzYzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYzozNjQ6c3RhdGljIGludCB3Y24zNnh4X2NvbmZpZyhzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodywgaW50IHJhZGlvX2lkeCwgdTMyIGNoYW5nZWQpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTM2NS17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jOjM2NjpcXHRzdHJ1Y3Qgd2NuMzZ4eCAqd2NuID0gaHctXFx1MDAzZXByaXY7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTM2Ny1cXHRpbnQgcmV0O1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYy0zNjgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jOjM2OTpcXHR3Y24zNnh4X2RiZyhXQ04zNlhYX0RCR19NQUMsIFxcXCJtYWMgY29uZmlnIGNoYW5nZWQgMHglMDh4XFxcXG5cXFwiLCBjaGFuZ2VkKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmMtMzcwLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTM3NC1cXHRcXHRpbnQgY2ggPSBXQ04zNlhYX0hXX0NIQU5ORUwod2NuKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmM6Mzc1OlxcdFxcdHdjbjM2eHhfZGJnKFdDTjM2WFhfREJHX01BQywgXFxcIndjbjM2eHhfY29uZmlnIGNoYW5uZWwgc3dpdGNoPSVkXFxcXG5cXFwiLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYy0zNzYtXFx0XFx0XFx0ICAgIGNoKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYy0zODMtXFx0XFx0XFx0aWYgKHdjbi1cXHUwMDNlc3dfc2Nhbl9jaGFubmVsKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYzozODQ6XFx0XFx0XFx0XFx0d2NuMzZ4eF9zbWRfZW5kX3NjYW4od2NuLCB3Y24tXFx1MDAzZXN3X3NjYW5fY2hhbm5lbCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTM4NS1cXHRcXHRcXHRpZiAod2NuLVxcdTAwM2Vzd19zY2FuX2luaXQpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmM6Mzg2OlxcdFxcdFxcdFxcdHdjbjM2eHhfc21kX2ZpbmlzaF9zY2FuKHdjbiwgSEFMX1NZU19NT0RFX1NDQU4sXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTM4Ny1cXHRcXHRcXHRcXHRcXHRcXHRcXHR3Y24tXFx1MDAzZXN3X3NjYW5fdmlmKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYy0zOTMtXFx0XFx0XFx0aWYgKHdjbi1cXHUwMDNlc3dfc2Nhbl9jaGFubmVsKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYzozOTQ6XFx0XFx0XFx0XFx0d2NuMzZ4eF9zbWRfZW5kX3NjYW4od2NuLCB3Y24tXFx1MDAzZXN3X3NjYW5fY2hhbm5lbCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTM5NS1cXHRcXHRcXHRpZiAoIXdjbi1cXHUwMDNlc3dfc2Nhbl9pbml0KSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmMtMzk4LVxcdFxcdFxcdFxcdCAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYzozOTk6XFx0XFx0XFx0XFx0cmV0ID0gd2NuMzZ4eF9zbWRfaW5pdF9zY2FuKHdjbixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmMtNDAwLVxcdFxcdFxcdFxcdFxcdFxcdFxcdCAgICBIQUxfU1lTX01PREVfU0NBTixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYy00MDYtXFx0XFx0XFx0fVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYzo0MDc6XFx0XFx0XFx0d2NuMzZ4eF9zbWRfc3RhcnRfc2Nhbih3Y24sIGNoKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmMtNDA4LVxcdFxcdH0gZWxzZSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jOjQwOTpcXHRcXHRcXHR3Y24zNnh4X2NoYW5nZV9vcGNoYW5uZWwod2NuLCBjaCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTQxMC1cXHRcXHR9XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmMtNDEzLVxcdGlmIChjaGFuZ2VkIFxcdTAwMjYgSUVFRTgwMjExX0NPTkZfQ0hBTkdFX1BTKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYzo0MTQ6XFx0XFx0d2NuMzZ4eF9jaGFuZ2VfcHMod2NuLCBody1cXHUwMDNlY29uZi5mbGFncyBcXHUwMDI2IElFRUU4MDIxMV9DT05GX1BTKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmMtNDE1LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTQxNy1cXHRcXHRpZiAoaHctXFx1MDAzZWNvbmYuZmxhZ3MgXFx1MDAyNiBJRUVFODAyMTFfQ09ORl9JRExFKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYzo0MTg6XFx0XFx0XFx0d2NuMzZ4eF9zbWRfZW50ZXJfaW1wcyh3Y24pO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYy00MTktXFx0XFx0ZWxzZVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYzo0MjA6XFx0XFx0XFx0d2NuMzZ4eF9zbWRfZXhpdF9pbXBzKHdjbik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTQyMS1cXHR9XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmMtNDI3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYzo0Mjg6c3RhdGljIHZvaWQgd2NuMzZ4eF9jb25maWd1cmVfZmlsdGVyKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYy00MjktXFx0XFx0XFx0XFx0ICAgICB1bnNpZ25lZCBpbnQgY2hhbmdlZCxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYy00MzEte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYzo0MzI6XFx0c3RydWN0IHdjbjM2eHhfaGFsX3Jjdl9mbHRfbWNfYWRkcl9saXN0X3R5cGUgKmZwO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYzo0MzM6XFx0c3RydWN0IHdjbjM2eHggKndjbiA9IGh3LVxcdTAwM2Vwcml2O1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYzo0MzQ6XFx0c3RydWN0IHdjbjM2eHhfdmlmICp0bXA7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTQzNS1cXHRzdHJ1Y3QgaWVlZTgwMjExX3ZpZiAqdmlmID0gTlVMTDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmMtNDM2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYzo0Mzc6XFx0d2NuMzZ4eF9kYmcoV0NOMzZYWF9EQkdfTUFDLCBcXFwibWFjIGNvbmZpZ3VyZSBmaWx0ZXJcXFxcblxcXCIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYy00MzgtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmMtNDQ0LVxcdGxpc3RfZm9yX2VhY2hfZW50cnkodG1wLCBcXHUwMDI2d2NuLVxcdTAwM2V2aWZfbGlzdCwgbGlzdCkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYzo0NDU6XFx0XFx0dmlmID0gd2NuMzZ4eF9wcml2X3RvX3ZpZih0bXApO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYy00NDYtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmMtNDQ4LVxcdFxcdGlmICgqdG90YWwgXFx1MDAyNiBGSUZfQUxMTVVMVEkpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jOjQ0OTpcXHRcXHRcXHR3Y24zNnh4X3NtZF9zZXRfbWNfbGlzdCh3Y24sIHZpZiwgTlVMTCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTQ1MC1cXHRcXHRlbHNlIGlmIChOTDgwMjExX0lGVFlQRV9TVEFUSU9OID09IHZpZi1cXHUwMDNldHlwZSBcXHUwMDI2XFx1MDAyNiB0bXAtXFx1MDAzZXN0YV9hc3NvYylcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmM6NDUxOlxcdFxcdFxcdHdjbjM2eHhfc21kX3NldF9tY19saXN0KHdjbiwgdmlmLCBmcCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTQ1Mi1cXHR9XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmMtNDU3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYzo0NTg6c3RhdGljIHU2NCB3Y24zNnh4X3ByZXBhcmVfbXVsdGljYXN0KHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYy00NTktXFx0XFx0XFx0XFx0ICAgICBzdHJ1Y3QgbmV0ZGV2X2h3X2FkZHJfbGlzdCAqbWNfbGlzdClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmMtNDYwLXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmM6NDYxOlxcdHN0cnVjdCB3Y24zNnh4X2hhbF9yY3ZfZmx0X21jX2FkZHJfbGlzdF90eXBlICpmcDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmMtNDYyLVxcdHN0cnVjdCBuZXRkZXZfaHdfYWRkciAqaGE7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTQ2My1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmM6NDY0OlxcdHdjbjM2eHhfZGJnKFdDTjM2WFhfREJHX01BQywgXFxcIm1hYyBwcmVwYXJlIG11bHRpY2FzdCBsaXN0XFxcXG5cXFwiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmMtNDY1LVxcdGZwID0ga3phbGxvY19vYmooKmZwLCBHRlBfQVRPTUlDKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmMtNDY2LVxcdGlmICghZnApIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmM6NDY3OlxcdFxcdHdjbjM2eHhfZXJyKFxcXCJPdXQgb2YgbWVtb3J5IHNldHRpbmcgZmlsdGVycy5cXFxcblxcXCIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYy00NjgtXFx0XFx0cmV0dXJuIDA7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmMtNDg0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYzo0ODU6c3RhdGljIHZvaWQgd2NuMzZ4eF90eChzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmMtNDg2LVxcdFxcdCAgICAgICBzdHJ1Y3QgaWVlZTgwMjExX3R4X2NvbnRyb2wgKmNvbnRyb2wsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmMtNDg4LXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmM6NDg5OlxcdHN0cnVjdCB3Y24zNnh4ICp3Y24gPSBody1cXHUwMDNlcHJpdjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmM6NDkwOlxcdHN0cnVjdCB3Y24zNnh4X3N0YSAqc3RhX3ByaXYgPSBOVUxMO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYy00OTEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTQ5Mi1cXHRpZiAoY29udHJvbC1cXHUwMDNlc3RhKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYzo0OTM6XFx0XFx0c3RhX3ByaXYgPSB3Y24zNnh4X3N0YV90b19wcml2KGNvbnRyb2wtXFx1MDAzZXN0YSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTQ5NC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmM6NDk1OlxcdGlmICh3Y24zNnh4X3N0YXJ0X3R4KHdjbiwgc3RhX3ByaXYsIHNrYikpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTQ5Ni1cXHRcXHRpZWVlODAyMTFfZnJlZV90eHNrYih3Y24tXFx1MDAzZWh3LCBza2IpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTQ5OC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmM6NDk5OnN0YXRpYyBpbnQgd2NuMzZ4eF9zZXRfa2V5KHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LCBlbnVtIHNldF9rZXlfY21kIGNtZCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmMtNTAwLVxcdFxcdFxcdCAgIHN0cnVjdCBpZWVlODAyMTFfdmlmICp2aWYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmMtNTAzLXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmM6NTA0OlxcdHN0cnVjdCB3Y24zNnh4ICp3Y24gPSBody1cXHUwMDNlcHJpdjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmM6NTA1OlxcdHN0cnVjdCB3Y24zNnh4X3ZpZiAqdmlmX3ByaXYgPSB3Y24zNnh4X3ZpZl90b19wcml2KHZpZik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jOjUwNjpcXHRzdHJ1Y3Qgd2NuMzZ4eF9zdGEgKnN0YV9wcml2ID0gc3RhID8gd2NuMzZ4eF9zdGFfdG9fcHJpdihzdGEpIDogTlVMTDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmMtNTA3LVxcdGludCByZXQgPSAwO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTUwOS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmM6NTEwOlxcdHdjbjM2eHhfZGJnKFdDTjM2WFhfREJHX01BQywgXFxcIm1hYzgwMjExIHNldCBrZXlcXFxcblxcXCIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYzo1MTE6XFx0d2NuMzZ4eF9kYmcoV0NOMzZYWF9EQkdfTUFDLCBcXFwiS2V5OiBjbWQ9MHgleCBhbGdvOjB4JXgsIGlkOiVkLCBsZW46JWQgZmxhZ3MgMHgleFxcXFxuXFxcIixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmMtNTEyLVxcdFxcdCAgICBjbWQsIGtleV9jb25mLVxcdTAwM2VjaXBoZXIsIGtleV9jb25mLVxcdTAwM2VrZXlpZHgsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTUxMy1cXHRcXHQgICAga2V5X2NvbmYtXFx1MDAzZWtleWxlbiwga2V5X2NvbmYtXFx1MDAzZWZsYWdzKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmM6NTE0OlxcdHdjbjM2eHhfZGJnX2R1bXAoV0NOMzZYWF9EQkdfTUFDLCBcXFwiS0VZOiBcXFwiLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYy01MTUtXFx0XFx0XFx0IGtleV9jb25mLVxcdTAwM2VrZXksXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmMtNTMzLVxcdGRlZmF1bHQ6XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jOjUzNDpcXHRcXHR3Y24zNnh4X2VycihcXFwiVW5zdXBwb3J0ZWQga2V5IHR5cGUgMHgleFxcXFxuXFxcIixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmMtNTM1LVxcdFxcdFxcdCAgICAgIGtleV9jb25mLVxcdTAwM2VjaXBoZXIpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTU2MC1cXHRcXHRcXHRpZiAoTkw4MDIxMV9JRlRZUEVfU1RBVElPTiA9PSB2aWYtXFx1MDAzZXR5cGUpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmM6NTYxOlxcdFxcdFxcdFxcdHdjbjM2eHhfc21kX2NvbmZpZ19ic3Mod2NuLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYy01NjItXFx0XFx0XFx0XFx0XFx0XFx0ICAgICAgIHZpZixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYy01NjUtXFx0XFx0XFx0XFx0XFx0XFx0ICAgICAgIHRydWUpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYzo1NjY6XFx0XFx0XFx0XFx0d2NuMzZ4eF9zbWRfY29uZmlnX3N0YSh3Y24sIHZpZiwgc3RhKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmMtNTY3LVxcdFxcdFxcdH1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmMtNTY4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYzo1Njk6XFx0XFx0XFx0d2NuMzZ4eF9zbWRfc2V0X3N0YWtleSh3Y24sXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTU3MC1cXHRcXHRcXHRcXHR2aWZfcHJpdi1cXHUwMDNlZW5jcnlwdF90eXBlLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTU3NS1cXHRcXHR9IGVsc2Uge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYzo1NzY6XFx0XFx0XFx0d2NuMzZ4eF9zbWRfc2V0X2Jzc2tleSh3Y24sXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTU3Ny1cXHRcXHRcXHRcXHR2aWZfcHJpdi1cXHUwMDNlZW5jcnlwdF90eXBlLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTU4Ny1cXHRcXHRcXHRcXHRcXHRzdGFfcHJpdi1cXHUwMDNlaXNfZGF0YV9lbmNyeXB0ZWQgPSB0cnVlO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYzo1ODg6XFx0XFx0XFx0XFx0XFx0d2NuMzZ4eF9zbWRfc2V0X3N0YWtleSh3Y24sXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTU4OS1cXHRcXHRcXHRcXHRcXHRcXHR2aWZfcHJpdi1cXHUwMDNlZW5jcnlwdF90eXBlLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTYwMC1cXHRcXHRcXHRpZiAodmlmX3ByaXYtXFx1MDAzZWJzc19pbmRleCAhPSBXQ04zNlhYX0hBTF9CU1NfSU5WQUxJRF9JRFgpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jOjYwMTpcXHRcXHRcXHRcXHR3Y24zNnh4X3NtZF9yZW1vdmVfYnNza2V5KHdjbixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmMtNjAyLVxcdFxcdFxcdFxcdFxcdHZpZl9wcml2LVxcdTAwM2VlbmNyeXB0X3R5cGUsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmMtNjEwLVxcdFxcdFxcdGlmIChzdGFfcHJpdi1cXHUwMDNlYWlkKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYzo2MTE6XFx0XFx0XFx0XFx0d2NuMzZ4eF9zbWRfcmVtb3ZlX3N0YWtleSh3Y24sXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTYxMi1cXHRcXHRcXHRcXHRcXHR2aWZfcHJpdi1cXHUwMDNlZW5jcnlwdF90eXBlLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTYxNy1cXHRkZWZhdWx0OlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYzo2MTg6XFx0XFx0d2NuMzZ4eF9lcnIoXFxcIlVuc3VwcG9ydGVkIGtleSBjbWQgMHgleFxcXFxuXFxcIiwgY21kKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmMtNjE5LVxcdFxcdHJldCA9IC1FT1BOT1RTVVBQO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTYyOC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmM6NjI5OnN0YXRpYyBpbnQgd2NuMzZ4eF9od19zY2FuKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYy02MzAtXFx0XFx0XFx0ICAgc3RydWN0IGllZWU4MDIxMV92aWYgKnZpZixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYy02MzIte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYzo2MzM6XFx0c3RydWN0IHdjbjM2eHggKndjbiA9IGh3LVxcdTAwM2Vwcml2O1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYy02MzQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jOjYzNTpcXHRpZiAoIXdjbjM2eHhfZmlybXdhcmVfZ2V0X2ZlYXRfY2Fwcyh3Y24tXFx1MDAzZWZ3X2ZlYXRfY2FwcywgU0NBTl9PRkZMT0FEKSkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYy02MzYtXFx0XFx0LyogZmFsbGJhY2sgdG8gbWFjODAyMTEgc29mdHdhcmUgc2NhbiAqL1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTY0My1cXHRpZiAoaHdfcmVxLVxcdTAwM2VyZXEubl9jaGFubmVscyBcXHUwMDNlIDQ4KSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jOjY0NDpcXHRcXHR3Y24zNnh4X3dhcm4oXFxcIk9mZmxvYWQgc2NhbiBhYm9ydGVkLCBuX2NoYW5uZWxzPSV1XFxcIixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmMtNjQ1LVxcdFxcdFxcdCAgICAgaHdfcmVxLVxcdTAwM2VyZXEubl9jaGFubmVscyk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmMtNjU5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYzo2NjA6XFx0d2NuMzZ4eF9zbWRfdXBkYXRlX2NoYW5uZWxfbGlzdCh3Y24sIFxcdTAwMjZod19yZXEtXFx1MDAzZXJlcSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jOjY2MTpcXHRyZXR1cm4gd2NuMzZ4eF9zbWRfc3RhcnRfaHdfc2Nhbih3Y24sIHZpZiwgXFx1MDAyNmh3X3JlcS1cXHUwMDNlcmVxKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmMtNjYyLX1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmMtNjYzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYzo2NjQ6c3RhdGljIHZvaWQgd2NuMzZ4eF9jYW5jZWxfaHdfc2NhbihzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmMtNjY1LVxcdFxcdFxcdFxcdCAgIHN0cnVjdCBpZWVlODAyMTFfdmlmICp2aWYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTY2Ni17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jOjY2NzpcXHRzdHJ1Y3Qgd2NuMzZ4eCAqd2NuID0gaHctXFx1MDAzZXByaXY7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTY2OC1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYy02NzItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jOjY3MzpcXHRpZiAod2NuMzZ4eF9maXJtd2FyZV9nZXRfZmVhdF9jYXBzKHdjbi1cXHUwMDNlZndfZmVhdF9jYXBzLCBTQ0FOX09GRkxPQUQpKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTY3NC1cXHRcXHQvKiBpZWVlODAyMTFfc2Nhbl9jb21wbGV0ZWQgd2lsbCBiZSBjYWxsZWQgb24gRlcgc2NhblxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYy02NzUtXFx0XFx0ICogaW5kaWNhdGlvbiAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYzo2NzY6XFx0XFx0d2NuMzZ4eF9zbWRfc3RvcF9od19zY2FuKHdjbik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTY3Ny1cXHR9XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmMtNjc5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYzo2ODA6c3RhdGljIHZvaWQgd2NuMzZ4eF9zd19zY2FuX3N0YXJ0KHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYy02ODEtXFx0XFx0XFx0XFx0ICBzdHJ1Y3QgaWVlZTgwMjExX3ZpZiAqdmlmLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTY4My17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jOjY4NDpcXHRzdHJ1Y3Qgd2NuMzZ4eCAqd2NuID0gaHctXFx1MDAzZXByaXY7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jOjY4NTpcXHRzdHJ1Y3Qgd2NuMzZ4eF92aWYgKnZpZl9wcml2ID0gd2NuMzZ4eF92aWZfdG9fcHJpdih2aWYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYy02ODYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jOjY4NzpcXHR3Y24zNnh4X2RiZyhXQ04zNlhYX0RCR19NQUMsIFxcXCJzd19zY2FuX3N0YXJ0XFxcIik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTY4OC1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYy02OTctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jOjY5ODpzdGF0aWMgdm9pZCB3Y24zNnh4X3N3X3NjYW5fY29tcGxldGUoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTY5OS1cXHRcXHRcXHRcXHQgICAgIHN0cnVjdCBpZWVlODAyMTFfdmlmICp2aWYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTcwMC17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jOjcwMTpcXHRzdHJ1Y3Qgd2NuMzZ4eCAqd2NuID0gaHctXFx1MDAzZXByaXY7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTcwMi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmM6NzAzOlxcdHdjbjM2eHhfZGJnKFdDTjM2WFhfREJHX01BQywgXFxcInN3X3NjYW5fY29tcGxldGVcXFwiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmMtNzA0LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTcwNi1cXHRpZiAod2NuLVxcdTAwM2Vzd19zY2FuX2NoYW5uZWwpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jOjcwNzpcXHRcXHR3Y24zNnh4X3NtZF9lbmRfc2Nhbih3Y24sIHdjbi1cXHUwMDNlc3dfc2Nhbl9jaGFubmVsKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmMtNzA4LVxcdGlmICh3Y24tXFx1MDAzZXN3X3NjYW5faW5pdCkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYzo3MDk6XFx0XFx0d2NuMzZ4eF9zbWRfZmluaXNoX3NjYW4od2NuLCBIQUxfU1lTX01PREVfU0NBTixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmMtNzEwLVxcdFxcdFxcdFxcdFxcdHdjbi1cXHUwMDNlc3dfc2Nhbl92aWYpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTcxNS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmM6NzE2OnN0YXRpYyB2b2lkIHdjbjM2eHhfdXBkYXRlX2FsbG93ZWRfcmF0ZXMoc3RydWN0IGllZWU4MDIxMV9zdGEgKnN0YSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmMtNzE3LVxcdFxcdFxcdFxcdFxcdCBlbnVtIG5sODAyMTFfYmFuZCBiYW5kKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTcyMC1cXHR1MTYgKnJhdGVzX3RhYmxlO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYzo3MjE6XFx0c3RydWN0IHdjbjM2eHhfc3RhICpzdGFfcHJpdiA9IHdjbjM2eHhfc3RhX3RvX3ByaXYoc3RhKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmMtNzIyLVxcdHUzMiByYXRlcyA9IHN0YS1cXHUwMDNlZGVmbGluay5zdXBwX3JhdGVzW2JhbmRdO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTc2NC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmM6NzY1OnZvaWQgd2NuMzZ4eF9zZXRfZGVmYXVsdF9yYXRlcyhzdHJ1Y3Qgd2NuMzZ4eF9oYWxfc3VwcG9ydGVkX3JhdGVzICpyYXRlcylcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmMtNzY2LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYy03OTEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jOjc5Mjp2b2lkIHdjbjM2eHhfc2V0X2RlZmF1bHRfcmF0ZXNfdjEoc3RydWN0IHdjbjM2eHhfaGFsX3N1cHBvcnRlZF9yYXRlc192MSAqcmF0ZXMpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTc5My17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmMtNzk4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYzo3OTk6c3RhdGljIHZvaWQgd2NuMzZ4eF9ic3NfaW5mb19jaGFuZ2VkKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYy04MDAtXFx0XFx0XFx0XFx0ICAgICBzdHJ1Y3QgaWVlZTgwMjExX3ZpZiAqdmlmLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTgwMy17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jOjgwNDpcXHRzdHJ1Y3Qgd2NuMzZ4eCAqd2NuID0gaHctXFx1MDAzZXByaXY7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTgwNS1cXHRzdHJ1Y3Qgc2tfYnVmZiAqc2tiID0gTlVMTDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmMtODA2LVxcdHUxNiB0aW1fb2ZmLCB0aW1fbGVuO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYzo4MDc6XFx0ZW51bSB3Y24zNnh4X2hhbF9saW5rX3N0YXRlIGxpbmtfc3RhdGU7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jOjgwODpcXHRzdHJ1Y3Qgd2NuMzZ4eF92aWYgKnZpZl9wcml2ID0gd2NuMzZ4eF92aWZfdG9fcHJpdih2aWYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYy04MDktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jOjgxMDpcXHR3Y24zNnh4X2RiZyhXQ04zNlhYX0RCR19NQUMsIFxcXCJtYWMgYnNzIGluZm8gY2hhbmdlZCB2aWYgJXAgY2hhbmdlZCAweCVsbHhcXFxcblxcXCIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTgxMS1cXHRcXHQgICAgdmlmLCBjaGFuZ2VkKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYy04MTUtXFx0aWYgKGNoYW5nZWQgXFx1MDAyNiBCU1NfQ0hBTkdFRF9CRUFDT05fSU5GTykge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYzo4MTY6XFx0XFx0d2NuMzZ4eF9kYmcoV0NOMzZYWF9EQkdfTUFDLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYy04MTctXFx0XFx0XFx0ICAgIFxcXCJtYWMgYnNzIGNoYW5nZWQgZHRpbSBwZXJpb2QgJWRcXFxcblxcXCIsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmMtODIzLVxcdGlmIChjaGFuZ2VkIFxcdTAwMjYgQlNTX0NIQU5HRURfQlNTSUQpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmM6ODI0OlxcdFxcdHdjbjM2eHhfZGJnKFdDTjM2WFhfREJHX01BQywgXFxcIm1hYyBic3MgY2hhbmdlZF9ic3NpZCAlcE1cXFxcblxcXCIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTgyNS1cXHRcXHRcXHQgICAgYnNzX2NvbmYtXFx1MDAzZWJzc2lkKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYy04MjktXFx0XFx0XFx0dmlmX3ByaXYtXFx1MDAzZWJzc19pbmRleCA9IFdDTjM2WFhfSEFMX0JTU19JTlZBTElEX0lEWDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmM6ODMwOlxcdFxcdFxcdHdjbjM2eHhfc21kX3NldF9saW5rX3N0KHdjbiwgYnNzX2NvbmYtXFx1MDAzZWJzc2lkLCB2aWYtXFx1MDAzZWFkZHIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTgzMS1cXHRcXHRcXHRcXHRcXHRcXHRXQ04zNlhYX0hBTF9MSU5LX1BSRUFTU09DX1NUQVRFKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmM6ODMyOlxcdFxcdFxcdHdjbjM2eHhfc21kX2pvaW4od2NuLCBic3NfY29uZi1cXHUwMDNlYnNzaWQsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTgzMy1cXHRcXHRcXHRcXHRcXHQgdmlmLVxcdTAwM2VhZGRyLCBXQ04zNlhYX0hXX0NIQU5ORUwod2NuKSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jOjgzNDpcXHRcXHRcXHR3Y24zNnh4X3NtZF9jb25maWdfYnNzKHdjbiwgdmlmLCBOVUxMLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYy04MzUtXFx0XFx0XFx0XFx0XFx0ICAgICAgIGJzc19jb25mLVxcdTAwM2Vic3NpZCwgZmFsc2UpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTgzNy1cXHRcXHRcXHR2aWZfcHJpdi1cXHUwMDNlaXNfam9pbmluZyA9IGZhbHNlO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYzo4Mzg6XFx0XFx0XFx0d2NuMzZ4eF9zbWRfZGVsZXRlX2Jzcyh3Y24sIHZpZik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jOjgzOTpcXHRcXHRcXHR3Y24zNnh4X3NtZF9zZXRfbGlua19zdCh3Y24sIGJzc19jb25mLVxcdTAwM2Vic3NpZCwgdmlmLVxcdTAwM2VhZGRyLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYy04NDAtXFx0XFx0XFx0XFx0XFx0XFx0V0NOMzZYWF9IQUxfTElOS19JRExFX1NUQVRFKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYy04NDUtXFx0aWYgKGNoYW5nZWQgXFx1MDAyNiBCU1NfQ0hBTkdFRF9TU0lEKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jOjg0NjpcXHRcXHR3Y24zNnh4X2RiZyhXQ04zNlhYX0RCR19NQUMsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTg0Ny1cXHRcXHRcXHQgICAgXFxcIm1hYyBic3MgY2hhbmdlZCBzc2lkXFxcXG5cXFwiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmM6ODQ4OlxcdFxcdHdjbjM2eHhfZGJnX2R1bXAoV0NOMzZYWF9EQkdfTUFDLCBcXFwic3NpZCBcXFwiLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYy04NDktXFx0XFx0XFx0XFx0IHZpZi1cXHUwMDNlY2ZnLnNzaWQsIHZpZi1cXHUwMDNlY2ZnLnNzaWRfbGVuKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYy04NjAtXFx0XFx0XFx0c3RydWN0IGllZWU4MDIxMV9zdGEgKnN0YTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmM6ODYxOlxcdFxcdFxcdHN0cnVjdCB3Y24zNnh4X3N0YSAqc3RhX3ByaXY7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTg2Mi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmM6ODYzOlxcdFxcdFxcdHdjbjM2eHhfZGJnKFdDTjM2WFhfREJHX01BQyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmMtODY0LVxcdFxcdFxcdFxcdCAgICBcXFwibWFjIGFzc29jIGJzcyAlcE0gdmlmICVwTSBBSUQ9JWRcXFxcblxcXCIsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmMtODcyLVxcdFxcdFxcdCAqIEhvbGRpbmcgY29uZl9tdXRleCBlbnN1cmVzIG11dGFsIGV4Y2x1c2lvbiB3aXRoXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jOjg3MzpcXHRcXHRcXHQgKiB3Y24zNnh4X3N0YV9yZW1vdmUoKSBhbmQgYXMgc3VjaCBlbnN1cmVzIHRoYXQgc3RhXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTg3NC1cXHRcXHRcXHQgKiB3b24ndCBiZSBmcmVlZCB3aGlsZSB3ZSdyZSBvcGVyYXRpbmcgb24gaXQuIEFzIHN1Y2hcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYy04NzgtXFx0XFx0XFx0aWYgKCFzdGEpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmM6ODc5OlxcdFxcdFxcdFxcdHdjbjM2eHhfZXJyKFxcXCJzdGEgJXBNIGlzIG5vdCBmb3VuZFxcXFxuXFxcIixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmMtODgwLVxcdFxcdFxcdFxcdFxcdCAgICAgIGJzc19jb25mLVxcdTAwM2Vic3NpZCk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmMtODgyLVxcdFxcdFxcdH1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmM6ODgzOlxcdFxcdFxcdHN0YV9wcml2ID0gd2NuMzZ4eF9zdGFfdG9fcHJpdihzdGEpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYy04ODQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jOjg4NTpcXHRcXHRcXHR3Y24zNnh4X3VwZGF0ZV9hbGxvd2VkX3JhdGVzKHN0YSwgV0NOMzZYWF9CQU5EKHdjbikpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYy04ODYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jOjg4NzpcXHRcXHRcXHR3Y24zNnh4X3NtZF9zZXRfbGlua19zdCh3Y24sIGJzc19jb25mLVxcdTAwM2Vic3NpZCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmMtODg4LVxcdFxcdFxcdFxcdHZpZi1cXHUwMDNlYWRkcixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmMtODg5LVxcdFxcdFxcdFxcdFdDTjM2WFhfSEFMX0xJTktfUE9TVEFTU09DX1NUQVRFKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmM6ODkwOlxcdFxcdFxcdHdjbjM2eHhfc21kX2NvbmZpZ19ic3Mod2NuLCB2aWYsIHN0YSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmMtODkxLVxcdFxcdFxcdFxcdFxcdCAgICAgICBic3NfY29uZi1cXHUwMDNlYnNzaWQsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmMtODk3LVxcdFxcdFxcdCAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYzo4OTg6XFx0XFx0XFx0d2NuMzZ4eF9zbWRfY29uZmlnX3N0YSh3Y24sIHZpZiwgc3RhKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmMtODk5LVxcdFxcdFxcdGlmICh2aWYtXFx1MDAzZXR5cGUgPT0gTkw4MDIxMV9JRlRZUEVfU1RBVElPTilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmM6OTAwOlxcdFxcdFxcdFxcdHdjbjM2eHhfc21kX2FkZF9iZWFjb25fZmlsdGVyKHdjbiwgdmlmKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmM6OTAxOlxcdFxcdFxcdHdjbjM2eHhfZW5hYmxlX2tlZXBfYWxpdmVfbnVsbF9wYWNrZXQod2NuLCB2aWYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYy05MDItXFx0XFx0fSBlbHNlIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmM6OTAzOlxcdFxcdFxcdHdjbjM2eHhfZGJnKFdDTjM2WFhfREJHX01BQyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmMtOTA0LVxcdFxcdFxcdFxcdCAgICBcXFwiZGlzYXNzb2NpYXRlZCBic3MgJXBNIHZpZiAlcE0gQUlEPSVkXFxcXG5cXFwiLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTkwOC1cXHRcXHRcXHR2aWZfcHJpdi1cXHUwMDNlc3RhX2Fzc29jID0gZmFsc2U7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jOjkwOTpcXHRcXHRcXHR3Y24zNnh4X3NtZF9zZXRfbGlua19zdCh3Y24sXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTkxMC1cXHRcXHRcXHRcXHRcXHRcXHRic3NfY29uZi1cXHUwMDNlYnNzaWQsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmMtOTE2LVxcdGlmIChjaGFuZ2VkIFxcdTAwMjYgQlNTX0NIQU5HRURfQVBfUFJPQkVfUkVTUCkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYzo5MTc6XFx0XFx0d2NuMzZ4eF9kYmcoV0NOMzZYWF9EQkdfTUFDLCBcXFwibWFjIGJzcyBjaGFuZ2VkIGFwIHByb2JlIHJlc3BcXFxcblxcXCIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYy05MTgtXFx0XFx0c2tiID0gaWVlZTgwMjExX3Byb2JlcmVzcF9nZXQoaHcsIHZpZik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTkxOS1cXHRcXHRpZiAoIXNrYikge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYzo5MjA6XFx0XFx0XFx0d2NuMzZ4eF9lcnIoXFxcImZhaWxlZCB0byBhbGxvYyBwcm9iZXJlcSBza2JcXFxcblxcXCIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYy05MjEtXFx0XFx0XFx0Z290byBvdXQ7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmMtOTIzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYzo5MjQ6XFx0XFx0d2NuMzZ4eF9zbWRfdXBkYXRlX3Byb2JlcmVzcF90bXBsKHdjbiwgdmlmLCBza2IpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYy05MjUtXFx0XFx0ZGV2X2tmcmVlX3NrYihza2IpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTkyOS1cXHQgICAgY2hhbmdlZCBcXHUwMDI2IEJTU19DSEFOR0VEX0JFQUNPTikge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYzo5MzA6XFx0XFx0d2NuMzZ4eF9kYmcoV0NOMzZYWF9EQkdfTUFDLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYy05MzEtXFx0XFx0XFx0ICAgIFxcXCJtYWMgYnNzIGNoYW5nZWQgYmVhY29uIGVuYWJsZWQgJWRcXFxcblxcXCIsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmMtOTM2LVxcdFxcdFxcdHZpZl9wcml2LVxcdTAwM2Vic3NfaW5kZXggPSBXQ04zNlhYX0hBTF9CU1NfSU5WQUxJRF9JRFg7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jOjkzNzpcXHRcXHRcXHR3Y24zNnh4X3NtZF9jb25maWdfYnNzKHdjbiwgdmlmLCBOVUxMLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYy05MzgtXFx0XFx0XFx0XFx0XFx0ICAgICAgIHZpZi1cXHUwMDNlYWRkciwgZmFsc2UpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTk0MS1cXHRcXHRcXHRpZiAoIXNrYikge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYzo5NDI6XFx0XFx0XFx0XFx0d2NuMzZ4eF9lcnIoXFxcImZhaWxlZCB0byBhbGxvYyBiZWFjb24gc2tiXFxcXG5cXFwiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmMtOTQzLVxcdFxcdFxcdFxcdGdvdG8gb3V0O1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYy05NDQtXFx0XFx0XFx0fVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYzo5NDU6XFx0XFx0XFx0d2NuMzZ4eF9zbWRfc2VuZF9iZWFjb24od2NuLCB2aWYsIHNrYiwgdGltX29mZiwgMCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTk0Ni1cXHRcXHRcXHRkZXZfa2ZyZWVfc2tiKHNrYik7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmMtOTUzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYzo5NTQ6XFx0XFx0XFx0d2NuMzZ4eF9zbWRfc2V0X2xpbmtfc3Qod2NuLCB2aWYtXFx1MDAzZWFkZHIsIHZpZi1cXHUwMDNlYWRkcixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmMtOTU1LVxcdFxcdFxcdFxcdFxcdFxcdGxpbmtfc3RhdGUpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYy05NTYtXFx0XFx0fSBlbHNlIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmM6OTU3OlxcdFxcdFxcdHdjbjM2eHhfc21kX2RlbGV0ZV9ic3Mod2NuLCB2aWYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYzo5NTg6XFx0XFx0XFx0d2NuMzZ4eF9zbWRfc2V0X2xpbmtfc3Qod2NuLCB2aWYtXFx1MDAzZWFkZHIsIHZpZi1cXHUwMDNlYWRkcixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmMtOTU5LVxcdFxcdFxcdFxcdFxcdFxcdFdDTjM2WFhfSEFMX0xJTktfSURMRV9TVEFURSk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmMtOTY3LS8qIHRoaXMgaXMgcmVxdWlyZWQgd2hlbiB1c2luZyBJRUVFODAyMTFfSFdfSEFTX1JBVEVfQ09OVFJPTCAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYzo5Njg6c3RhdGljIGludCB3Y24zNnh4X3NldF9ydHNfdGhyZXNob2xkKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LCBpbnQgcmFkaW9faWR4LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYy05NjktXFx0XFx0XFx0XFx0ICAgICB1MzIgdmFsdWUpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTk3MC17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jOjk3MTpcXHRzdHJ1Y3Qgd2NuMzZ4eCAqd2NuID0gaHctXFx1MDAzZXByaXY7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jOjk3MjpcXHR3Y24zNnh4X2RiZyhXQ04zNlhYX0RCR19NQUMsIFxcXCJtYWMgc2V0IFJUUyB0aHJlc2hvbGQgJWRcXFxcblxcXCIsIHZhbHVlKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmMtOTczLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYy05NzQtXFx0bXV0ZXhfbG9jayhcXHUwMDI2d2NuLVxcdTAwM2Vjb25mX211dGV4KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmM6OTc1OlxcdHdjbjM2eHhfc21kX3VwZGF0ZV9jZmcod2NuLCBXQ04zNlhYX0hBTF9DRkdfUlRTX1RIUkVTSE9MRCwgdmFsdWUpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYy05NzYtXFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZ3Y24tXFx1MDAzZWNvbmZfbXV0ZXgpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTk4MC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmM6OTgxOnN0YXRpYyB2b2lkIHdjbjM2eHhfcmVtb3ZlX2ludGVyZmFjZShzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmMtOTgyLVxcdFxcdFxcdFxcdCAgICAgc3RydWN0IGllZWU4MDIxMV92aWYgKnZpZilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmMtOTgzLXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmM6OTg0OlxcdHN0cnVjdCB3Y24zNnh4ICp3Y24gPSBody1cXHUwMDNlcHJpdjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmM6OTg1OlxcdHN0cnVjdCB3Y24zNnh4X3ZpZiAqdmlmX3ByaXYgPSB3Y24zNnh4X3ZpZl90b19wcml2KHZpZik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jOjk4NjpcXHR3Y24zNnh4X2RiZyhXQ04zNlhYX0RCR19NQUMsIFxcXCJtYWMgcmVtb3ZlIGludGVyZmFjZSB2aWYgJXBcXFxcblxcXCIsIHZpZik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTk4Ny1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYy05OTAtXFx0bGlzdF9kZWwoXFx1MDAyNnZpZl9wcml2LVxcdTAwM2VsaXN0KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmM6OTkxOlxcdHdjbjM2eHhfc21kX2RlbGV0ZV9zdGFfc2VsZih3Y24sIHZpZi1cXHUwMDNlYWRkcik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTk5Mi1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYy05OTUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jOjk5NjpzdGF0aWMgaW50IHdjbjM2eHhfYWRkX2ludGVyZmFjZShzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmMtOTk3LVxcdFxcdFxcdFxcdCBzdHJ1Y3QgaWVlZTgwMjExX3ZpZiAqdmlmKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYy05OTgte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYzo5OTk6XFx0c3RydWN0IHdjbjM2eHggKndjbiA9IGh3LVxcdTAwM2Vwcml2O1xcblxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQxODo1NTo0Mi44NjY1ODMyOTdaIiwiU2VxIjoyOCwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTE5MzQwNjI1MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFN5emJvdCBGaW5kaW5ncyoqXG5cbk9rYXksIHNvIGB3Y24zNnh4X3NtZF9yc3BfcHJvY2Vzc2AgaXMgZGVmaW5pdGVseSBjYWxsZWQgd2hlbiBhIG1lc3NhZ2UgYXJyaXZlcyBvbiB0aGUgU01EIGNoYW5uZWwg4oCTIHRoYXQncyBjbGVhciBmcm9tIHRoZSBjb2RlLiBBbmQgdGhlIFNNRCBjaGFubmVsIGl0c2VsZiBpcyBvcGVuZWQgd2l0aGluIGB3Y24zNnh4X3Byb2JlYCB1c2luZyBgcWNvbV93Y25zc19vcGVuX2NoYW5uZWxgLiBTbywgaWYgc3l6Ym90IGlzIGhpdHRpbmcgdGhpcyBjb2RlLCBpdCBtZWFucyBpdCdzIG1hbmFnaW5nIHRvIHRyaWdnZXIgYHdjbjM2eHhfcHJvYmVgIHNvbWVob3cgYW5kIHRoZW4gaW5qZWN0IG1lc3NhZ2VzICppbnRvKiB0aGF0IFNNRCBjaGFubmVsLiBUaGF0J3MgYSBjcnVjaWFsIHBvaW50LlxuXG5Ob3csIG15IGluaXRpYWwgdGhvdWdodCBpczogZG9lcyBzeXprYWxsZXIgaGF2ZSBkaXJlY3Qgc3VwcG9ydCBmb3IgYHFjb21fd2Nuc3Nfb3Blbl9jaGFubmVsYD8gSSBkb3VidCBpdCwgYnV0IGl0J3Mgd29ydGggY2hlY2tpbmcuIFdhaXQgYSBtaW51dGUuLi4gc3l6a2FsbGVyIG1pZ2h0IGJlIGJ5cGFzc2luZyB0aGUgYHdjbjM2eHhgIGRyaXZlciBlbnRpcmVseSBhbmQgZnV6emluZyB0aGUgcnBtc2cgYnVzIGRpcmVjdGx5LiBUaGF0J3MgYSBkaXN0aW5jdCBwb3NzaWJpbGl0eS4gSWYgdGhlIFFFTVUgZW52aXJvbm1lbnQgaW5jbHVkZXMgdmlydGlvLXJwbXNnLCBzeXprYWxsZXIgY291bGQgYmUgZHluYW1pY2FsbHkgY3JlYXRpbmcgcnBtc2cgZGV2aWNlcyBhbmQgc2VuZGluZyBtZXNzYWdlcyB0byB0aGVtLiBUaGlzIGV4cGxhaW5zIHRoZSBwb3RlbnRpYWwgYnlwYXNzLlxuXG5Ib3dldmVyLCBgd2NuMzZ4eGAgaXMgYSBwbGF0Zm9ybSBkZXZpY2UsIHJpZ2h0PyBUaGF0IHN1Z2dlc3RzIGl0J3MgKm5vdCogYSBzdGFuZGFyZCB2aXJ0aW8gZGV2aWNlIGRpcmVjdGx5IGV4cG9zZWQgdmlhIHRoZSBycG1zZyBidXMuIEhtbSwgSSBuZWVkIHRvIHZlcmlmeSBpZiBzeXprYWxsZXIgaGFzIGEgcHNldWRvLXN5c2NhbGwgZGVmaW5lZCBmb3IgYHdjbjM2eHhgIGl0c2VsZi4gVGhpcyBpcyB0aGUgcGllY2Ugb2YgdGhlIHB1enpsZSB0byBjb25uZWN0IGhlcmUuIFRoYXQgd2lsbCBzaG93IGlmIHRoZXJlIGlzIGRpcmVjdCBzeXprYWxsZXIgaW50ZWdyYXRpb24gb3IgaWYgaXQncyBmdXp6aW5nIHZpYSB0aGUgcnBtc2cgYnVzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNzk2NiwiT3V0cHV0VG9rZW5zIjozNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE4NiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQxODo1NTo0OC4wNTk5OTI3OFoiLCJTZXEiOjI5LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDIyNTgwOTE4LCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJzeXpfXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjZUMTg6NTU6NDguNDgyNTg1ODA4WiIsIlNlcSI6MzAsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjc2ODExMTQ0NzksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBXb3J0aEZ1enppbmcgQ3JpdGVyaWEgZm9yIGEgYHdjbjM2eHhgIFBhdGNoKipcblxuT2theSwgc28gdGhlIGluaXRpYWwgdGhvdWdodCBpcywgdGhlcmUgYXJlIG5vIFwicHNldWRvLXN5c2NhbGxzXCIgaW52b2x2ZWQgaGVyZS4gQnV0IHdhaXQsIEkgcmVjYWxsIHNlZWluZyBgc3l6X2Rldl9wbGF0Zm9ybV9hZGRgIG9yIHNvbWV0aGluZyBzaW1pbGFyIGJlaW5nIHVzZWQgYnkgc3l6Ym90PyBObywgYWN0dWFsbHkgc3l6Ym90IGl0c2VsZiBkb2Vzbid0IGhhdmUgc3VjaCBhIHNwZWNpZmljIHN5c2NhbGwuIEl0IHV0aWxpemVzIGBzeXpfdXNiX2Nvbm5lY3RgLCBgc3l6XzgwMjExX2luamVjdF9mcmFtZWAsIGV0Yy4gdG8gaW50ZXJhY3Qgd2l0aCB0aGUgdGFyZ2V0LiBIb3cgY291bGQgc3l6Ym90IHJlYWNoIHRoaXMgcGFydGljdWxhciBkcml2ZXIsIHRoZW4/XG5cblBlcmhhcHMgYHdjbjM2eHhgIGlzIGNvbXBpbGVkIGRpcmVjdGx5IGludG8gdGhlIGtlcm5lbCBhbmQgYXV0b21hdGljYWxseSBwcm9iZWQgaWYgdGhlIGRldmljZSB0cmVlIGluY2x1ZGVzIGl0PyBPciwgbWF5YmUgc3l6Ym90IHVzZXMgYSBjdXN0b20gZGV2aWNlIHRyZWUsIG9yIG1heWJlIGl0J3MgYSBwbGF0Zm9ybSBkZXZpY2UgdGhhdCBjYW4gYmUgaW5zdGFudGlhdGVkIHRocm91Z2ggc3lzZnM/IEFoLCByaWdodCwgYHdjbjM2eHhgIGlzIGEgcGxhdGZvcm0gZHJpdmVyLiBQbGF0Zm9ybSBkZXZpY2VzIGNhbiBiZSBjcmVhdGVkIHRocm91Z2ggdGhlIGRldmljZSB0cmVlICpvciogb3RoZXIgZHJpdmVycy5cblxuT2theSwgbGV0J3MgcmVtZW1iZXIgc3l6Ym90IHRlc3RzIG9uIEdDRSB3aXRoIGEgc3BlY2lmaWMga2VybmVsIGNvbmZpZy4gSWYgc3l6Ym90IGhhcyBmb3VuZCBpdCwgdGhlbiBpdCAqaXMqIHJlYWNoYWJsZS4gVGhlIHByb21wdCBzYXlzIHRvIHJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIGludm9sdmVzIGNvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuIElzIGB3Y24zNnh4YCBhIFBDSWUgZHJpdmVyPyBObywgaXQncyBhIHBsYXRmb3JtIGRyaXZlciBmb3IgUXVhbGNvbW0gQXRoZXJvcyBXQ04zNjYwLzM2ODAuIFNvIHRoZSBuZXh0IGtleSBxdWVzdGlvbjogSXMgaXQgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVT9cblxuV2FpdCwgaWYgc3l6Ym90IGhhcyBmb3VuZCBpdCwgdGhlbiBpdCBtZWFucyBpdCAqaXMqIHJlYWNoYWJsZSBpbiBzeXpib3QncyBlbnZpcm9ubWVudCwgd2hpY2ggaXMgUUVNVSEgU28gdGhlIGFuc3dlciBpcyB5ZXMuIEJ1dCwgZG9lcyBzeXpib3QgaGF2ZSBhIGBxY29tYCB0YXJnZXQgb3IgdGVzdHMgQVJNNjQ/IFllcywgc3l6Ym90IGRvZXMgdGVzdCBBUk02NCBhbmQgQVJNLiBJZiBzeXpib3QgZm91bmQgaXQsIGl0J3MgZGVmaW5pdGVseSByZWFjaGFibGUuXG5cblRoZSBwYXRjaCBpdHNlbGYgYWRkcyBhIGxlbmd0aCBjaGVjayB0byBgd2NuMzZ4eF9zbWRfcnNwX3Byb2Nlc3NgLiBUaGUgbmV4dCBzdGVwIGlzIGNsZWFyOiBJIG5lZWQgdG8gZGlnIGludG8gdGhlIGB3Y24zNnh4X3NtZF9yc3BfcHJvY2Vzc2AgZnVuY3Rpb24gdG8gdW5kZXJzdGFuZCB0aGUgc3Vycm91bmRpbmcgY29kZSBhbmQgZGV0ZXJtaW5lIHRoZSBzY29wZSBvZiB0aGlzIGNoYW5nZSwgYW5kIHNlZSB3aGF0IGZ1bmN0aW9ucyB0aGUgY3VycmVudCBjb2RlIGNhbGxzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyODUzNywiT3V0cHV0VG9rZW5zIjo0NywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQ2OCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQxODo1NTo1Ni4xNjM3MDM4NDdaIiwiU2VxIjozMSwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjE0NjIwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L3NtZC5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDMyNDgsXG4gIFwiTGluZUNvdW50XCI6IDUwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIjMyNDg6XFx0aW50IHdjbjM2eHhfc21kX3JzcF9wcm9jZXNzKHN0cnVjdCBycG1zZ19kZXZpY2UgKnJwZGV2LFxcbjMyNDk6XFx0XFx0XFx0XFx0ICAgIHZvaWQgKmJ1ZiwgaW50IGxlbiwgdm9pZCAqcHJpdiwgdTMyIGFkZHIpXFxuMzI1MDpcXHR7XFxuMzI1MTpcXHRcXHRjb25zdCBzdHJ1Y3Qgd2NuMzZ4eF9oYWxfbXNnX2hlYWRlciAqbXNnX2hlYWRlciA9IGJ1ZjtcXG4zMjUyOlxcdFxcdHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3ID0gcHJpdjtcXG4zMjUzOlxcdFxcdHN0cnVjdCB3Y24zNnh4ICp3Y24gPSBody1cXHUwMDNlcHJpdjtcXG4zMjU0OlxcdFxcdHN0cnVjdCB3Y24zNnh4X2hhbF9pbmRfbXNnICptc2dfaW5kO1xcbjMyNTU6XFx0XFx0d2NuMzZ4eF9kYmdfZHVtcChXQ04zNlhYX0RCR19TTURfRFVNUCwgXFxcIlNNRCBcXHUwMDNjXFx1MDAzY1xcdTAwM2MgXFxcIiwgYnVmLCBsZW4pO1xcbjMyNTY6XFx0XFxuMzI1NzpcXHRcXHRpZiAobGVuIFxcdTAwM2Mgc2l6ZW9mKCptc2dfaGVhZGVyKSkge1xcbjMyNTg6XFx0XFx0XFx0d2NuMzZ4eF93YXJuKFxcXCJDb3JydXB0ZWQgSEFMIG1lc3NhZ2U6IGxlbmd0aCAlZFxcXFxuXFxcIiwgbGVuKTtcXG4zMjU5OlxcdFxcdFxcdHJldHVybiAwO1xcbjMyNjA6XFx0XFx0fVxcbjMyNjE6XFx0XFxuMzI2MjpcXHRcXHRzd2l0Y2ggKG1zZ19oZWFkZXItXFx1MDAzZW1zZ190eXBlKSB7XFxuMzI2MzpcXHRcXHRjYXNlIFdDTjM2WFhfSEFMX1NUQVJUX1JTUDpcXG4zMjY0OlxcdFxcdGNhc2UgV0NOMzZYWF9IQUxfQ09ORklHX1NUQV9SU1A6XFxuMzI2NTpcXHRcXHRjYXNlIFdDTjM2WFhfSEFMX0NPTkZJR19CU1NfUlNQOlxcbjMyNjY6XFx0XFx0Y2FzZSBXQ04zNlhYX0hBTF9BRERfU1RBX1NFTEZfUlNQOlxcbjMyNjc6XFx0XFx0Y2FzZSBXQ04zNlhYX0hBTF9TVE9QX1JTUDpcXG4zMjY4OlxcdFxcdGNhc2UgV0NOMzZYWF9IQUxfREVMX1NUQV9TRUxGX1JTUDpcXG4zMjY5OlxcdFxcdGNhc2UgV0NOMzZYWF9IQUxfREVMRVRFX1NUQV9SU1A6XFxuMzI3MDpcXHRcXHRjYXNlIFdDTjM2WFhfSEFMX0lOSVRfU0NBTl9SU1A6XFxuMzI3MTpcXHRcXHRjYXNlIFdDTjM2WFhfSEFMX1NUQVJUX1NDQU5fUlNQOlxcbjMyNzI6XFx0XFx0Y2FzZSBXQ04zNlhYX0hBTF9FTkRfU0NBTl9SU1A6XFxuMzI3MzpcXHRcXHRjYXNlIFdDTjM2WFhfSEFMX0ZJTklTSF9TQ0FOX1JTUDpcXG4zMjc0OlxcdFxcdGNhc2UgV0NOMzZYWF9IQUxfRE9XTkxPQURfTlZfUlNQOlxcbjMyNzU6XFx0XFx0Y2FzZSBXQ04zNlhYX0hBTF9ERUxFVEVfQlNTX1JTUDpcXG4zMjc2OlxcdFxcdGNhc2UgV0NOMzZYWF9IQUxfU0VORF9CRUFDT05fUlNQOlxcbjMyNzc6XFx0XFx0Y2FzZSBXQ04zNlhYX0hBTF9TRVRfTElOS19TVF9SU1A6XFxuMzI3ODpcXHRcXHRjYXNlIFdDTjM2WFhfSEFMX1VQREFURV9QUk9CRV9SU1BfVEVNUExBVEVfUlNQOlxcbjMyNzk6XFx0XFx0Y2FzZSBXQ04zNlhYX0hBTF9TRVRfQlNTS0VZX1JTUDpcXG4zMjgwOlxcdFxcdGNhc2UgV0NOMzZYWF9IQUxfU0VUX1NUQUtFWV9SU1A6XFxuMzI4MTpcXHRcXHRjYXNlIFdDTjM2WFhfSEFMX1JNVl9TVEFLRVlfUlNQOlxcbjMyODI6XFx0XFx0Y2FzZSBXQ04zNlhYX0hBTF9STVZfQlNTS0VZX1JTUDpcXG4zMjgzOlxcdFxcdGNhc2UgV0NOMzZYWF9IQUxfRU5URVJfQk1QU19SU1A6XFxuMzI4NDpcXHRcXHRjYXNlIFdDTjM2WFhfSEFMX1NFVF9QT1dFUl9QQVJBTVNfUlNQOlxcbjMyODU6XFx0XFx0Y2FzZSBXQ04zNlhYX0hBTF9FWElUX0JNUFNfUlNQOlxcbjMyODY6XFx0XFx0Y2FzZSBXQ04zNlhYX0hBTF9LRUVQX0FMSVZFX1JTUDpcXG4zMjg3OlxcdFxcdGNhc2UgV0NOMzZYWF9IQUxfRFVNUF9DT01NQU5EX1JTUDpcXG4zMjg4OlxcdFxcdGNhc2UgV0NOMzZYWF9IQUxfQUREX0JBX1NFU1NJT05fUlNQOlxcbjMyODk6XFx0XFx0Y2FzZSBXQ04zNlhYX0hBTF9BRERfQkFfUlNQOlxcbjMyOTA6XFx0XFx0Y2FzZSBXQ04zNlhYX0hBTF9ERUxfQkFfUlNQOlxcbjMyOTE6XFx0XFx0Y2FzZSBXQ04zNlhYX0hBTF9HRVRfU1RBVFNfUlNQOlxcbjMyOTI6XFx0XFx0Y2FzZSBXQ04zNlhYX0hBTF9UUklHR0VSX0JBX1JTUDpcXG4zMjkzOlxcdFxcdGNhc2UgV0NOMzZYWF9IQUxfVVBEQVRFX0NGR19SU1A6XFxuMzI5NDpcXHRcXHRjYXNlIFdDTjM2WFhfSEFMX0pPSU5fUlNQOlxcbjMyOTU6XFx0XFx0Y2FzZSBXQ04zNlhYX0hBTF9VUERBVEVfU0NBTl9QQVJBTV9SU1A6XFxuMzI5NjpcXHRcXHRjYXNlIFdDTjM2WFhfSEFMX0NIX1NXSVRDSF9SU1A6XFxuMzI5NzpcXHRcXHRjYXNlIFdDTjM2WFhfSEFMX1BST0NFU1NfUFRUX1JTUDpcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjZUMTg6NTU6NTYuMTYzOTE5OTA3WiIsIlNlcSI6MzIsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMyODk1MTA4NjgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0J3MgaW5uZXIgbW9ub2xvZ3VlOlxuXG4qKkZvY3VzaW5nIG9uIHRoZSBSZXNwb25zZSBQcm9jZXNzaW5nKipcblxuUmlnaHQsIHRoZSBgd2NuMzZ4eF9zbWRfcnNwX3Byb2Nlc3NgIGZ1bmN0aW9uLiBUaGF0J3MgdGhlIGxpa2VseSBrZXkgdG8gdW5kZXJzdGFuZGluZyBob3cgdGhlIGRyaXZlciBoYW5kbGVzIHJlc3BvbnNlcy4gTXkgaW5pdGlhbCBpbnN0aW5jdCBpcyB0byBob25lIGluIG9uIHRoaXMgb25lLiBCdXQsIGJlZm9yZSBJIGdldCB0b28gZGVlcCwgbGV0J3MgdGFrZSBhIHF1aWNrIGxvb2sgYXJvdW5kIHRoZSBjb2RlYmFzZS4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBJJ20gbm90IG1pc3NpbmcgYW55IG90aGVyIHJlbGF0ZWQgZnVuY3Rpb25zLiBUaGVyZSBjb3VsZCBiZSBvdGhlcnMgdGhhdCBpbnRlcmFjdCB3aXRoIGl0LCBvciBtYXliZSBldmVuIHByZS1wcm9jZXNzIHRoZSBkYXRhIGJlZm9yZSBpdCdzIHNlbnQgdG8gdGhpcyBmdW5jdGlvbi4gQSBxdWljayBzY2FuIHdpbGwgY29uZmlybSBteSBpbml0aWFsIGh5cG90aGVzaXMgYW5kIHByZXZlbnQgd2FzdGVkIHRpbWUuIEkgd2lsbCBjaGVjayBmb3IgcmVsYXRlZCBmdW5jdGlvbnMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMwNjkyLCJPdXRwdXRUb2tlbnMiOjQ3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzUsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQxODo1NTo1OS40NTM0MzM3NTVaIiwiU2VxIjozMywiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzMzODkwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L3NtZC5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDMyOTgsXG4gIFwiTGluZUNvdW50XCI6IDUwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIjMyOTg6XFx0XFx0Y2FzZSBXQ04zNlhYX0hBTF9GRUFUVVJFX0NBUFNfRVhDSEFOR0VfUlNQOlxcbjMyOTk6XFx0XFx0Y2FzZSBXQ04zNlhYX0hBTF84MDIzX01VTFRJQ0FTVF9MSVNUX1JTUDpcXG4zMzAwOlxcdFxcdGNhc2UgV0NOMzZYWF9IQUxfU1RBUlRfU0NBTl9PRkZMT0FEX1JTUDpcXG4zMzAxOlxcdFxcdGNhc2UgV0NOMzZYWF9IQUxfU1RPUF9TQ0FOX09GRkxPQURfUlNQOlxcbjMzMDI6XFx0XFx0Y2FzZSBXQ04zNlhYX0hBTF9IT1NUX09GRkxPQURfUlNQOlxcbjMzMDM6XFx0XFx0Y2FzZSBXQ04zNlhYX0hBTF9HVEtfT0ZGTE9BRF9SU1A6XFxuMzMwNDpcXHRcXHRjYXNlIFdDTjM2WFhfSEFMX0dUS19PRkZMT0FEX0dFVElORk9fUlNQOlxcbjMzMDU6XFx0XFx0Y2FzZSBXQ04zNlhYX0hBTF9IT1NUX1JFU1VNRV9SU1A6XFxuMzMwNjpcXHRcXHRjYXNlIFdDTjM2WFhfSEFMX0VOVEVSX0lNUFNfUlNQOlxcbjMzMDc6XFx0XFx0Y2FzZSBXQ04zNlhYX0hBTF9FWElUX0lNUFNfUlNQOlxcbjMzMDg6XFx0XFx0Y2FzZSBXQ04zNlhYX0hBTF9VUERBVEVfQ0hBTk5FTF9MSVNUX1JTUDpcXG4zMzA5OlxcdFxcdGNhc2UgV0NOMzZYWF9IQUxfQUREX0JDTl9GSUxURVJfUlNQOlxcbjMzMTA6XFx0XFx0XFx0aWYgKGxlbiBcXHUwMDNlIFdDTjM2WFhfSEFMX0JVRl9TSVpFKSB7XFxuMzMxMTpcXHRcXHRcXHRcXHR3Y24zNnh4X3dhcm4oXFxcIkhBTCByZXNwb25zZSB0b28gbGFyZ2U6ICVkXFxcXG5cXFwiLCBsZW4pO1xcbjMzMTI6XFx0XFx0XFx0XFx0YnJlYWs7XFxuMzMxMzpcXHRcXHRcXHR9XFxuMzMxNDpcXHRcXHRcXHRtZW1jcHkod2NuLVxcdTAwM2VoYWxfYnVmLCBidWYsIGxlbik7XFxuMzMxNTpcXHRcXHRcXHR3Y24tXFx1MDAzZWhhbF9yc3BfbGVuID0gbGVuO1xcbjMzMTY6XFx0XFx0XFx0Y29tcGxldGUoXFx1MDAyNndjbi1cXHUwMDNlaGFsX3JzcF9jb21wbCk7XFxuMzMxNzpcXHRcXHRcXHRicmVhaztcXG4zMzE4OlxcdFxcbjMzMTk6XFx0XFx0Y2FzZSBXQ04zNlhYX0hBTF9DT0VYX0lORDpcXG4zMzIwOlxcdFxcdGNhc2UgV0NOMzZYWF9IQUxfQVZPSURfRlJFUV9SQU5HRV9JTkQ6XFxuMzMyMTpcXHRcXHRjYXNlIFdDTjM2WFhfSEFMX0RFTF9CQV9JTkQ6XFxuMzMyMjpcXHRcXHRjYXNlIFdDTjM2WFhfSEFMX09UQV9UWF9DT01QTF9JTkQ6XFxuMzMyMzpcXHRcXHRjYXNlIFdDTjM2WFhfSEFMX01JU1NFRF9CRUFDT05fSU5EOlxcbjMzMjQ6XFx0XFx0Y2FzZSBXQ04zNlhYX0hBTF9ERUxFVEVfU1RBX0NPTlRFWFRfSU5EOlxcbjMzMjU6XFx0XFx0Y2FzZSBXQ04zNlhYX0hBTF9QUklOVF9SRUdfSU5GT19JTkQ6XFxuMzMyNjpcXHRcXHRjYXNlIFdDTjM2WFhfSEFMX1NDQU5fT0ZGTE9BRF9JTkQ6XFxuMzMyNzpcXHRcXHRcXHRtc2dfaW5kID0ga21hbGxvY19mbGV4KCptc2dfaW5kLCBtc2csIGxlbiwgR0ZQX0FUT01JQyk7XFxuMzMyODpcXHRcXHRcXHRpZiAoIW1zZ19pbmQpIHtcXG4zMzI5OlxcdFxcdFxcdFxcdHdjbjM2eHhfZXJyKFxcXCJSdW4gb3V0IG9mIG1lbW9yeSB3aGlsZSBoYW5kbGluZyBTTURfRVZFTlQgKCVkKVxcXFxuXFxcIixcXG4zMzMwOlxcdFxcdFxcdFxcdFxcdCAgICBtc2dfaGVhZGVyLVxcdTAwM2Vtc2dfdHlwZSk7XFxuMzMzMTpcXHRcXHRcXHRcXHRyZXR1cm4gLUVOT01FTTtcXG4zMzMyOlxcdFxcdFxcdH1cXG4zMzMzOlxcdFxcbjMzMzQ6XFx0XFx0XFx0bXNnX2luZC1cXHUwMDNlbXNnX2xlbiA9IGxlbjtcXG4zMzM1OlxcdFxcdFxcdG1lbWNweShtc2dfaW5kLVxcdTAwM2Vtc2csIGJ1ZiwgbGVuKTtcXG4zMzM2OlxcdFxcbjMzMzc6XFx0XFx0XFx0c3Bpbl9sb2NrKFxcdTAwMjZ3Y24tXFx1MDAzZWhhbF9pbmRfbG9jayk7XFxuMzMzODpcXHRcXHRcXHRsaXN0X2FkZF90YWlsKFxcdTAwMjZtc2dfaW5kLVxcdTAwM2VsaXN0LCBcXHUwMDI2d2NuLVxcdTAwM2VoYWxfaW5kX3F1ZXVlKTtcXG4zMzM5OlxcdFxcdFxcdHF1ZXVlX3dvcmsod2NuLVxcdTAwM2VoYWxfaW5kX3dxLCBcXHUwMDI2d2NuLVxcdTAwM2VoYWxfaW5kX3dvcmspO1xcbjMzNDA6XFx0XFx0XFx0c3Bpbl91bmxvY2soXFx1MDAyNndjbi1cXHUwMDNlaGFsX2luZF9sb2NrKTtcXG4zMzQxOlxcdFxcdFxcdHdjbjM2eHhfZGJnKFdDTjM2WFhfREJHX0hBTCwgXFxcImluZGljYXRpb24gYXJyaXZlZFxcXFxuXFxcIik7XFxuMzM0MjpcXHRcXHRcXHRicmVhaztcXG4zMzQzOlxcdFxcdGRlZmF1bHQ6XFxuMzM0NDpcXHRcXHRcXHR3Y24zNnh4X2VycihcXFwiU01EX0VWRU5UICglZCkgbm90IHN1cHBvcnRlZFxcXFxuXFxcIixcXG4zMzQ1OlxcdFxcdFxcdFxcdCAgICAgIG1zZ19oZWFkZXItXFx1MDAzZW1zZ190eXBlKTtcXG4zMzQ2OlxcdFxcdH1cXG4zMzQ3OlxcdFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQxODo1NTo1OS40NTM3NjkzNzVaIiwiU2VxIjozNCwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzgyMzU0OTcxOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFNNRCBSZXNwb25zZSBQcm9jZXNzaW5nIEZ1bmN0aW9uKipcblxuT2theSwgc28gdGhlIGlzc3VlIEknbSBsb29raW5nIGF0IHJldm9sdmVzIGFyb3VuZCBhIGZ1bmN0aW9uIGNhbGxlZCBgd2NuMzZ4eF9zbWRfcnNwX3Byb2Nlc3NgLiBJJ20gcHJldHR5IHN1cmUgdGhhdCdzIHdoZXJlIHRoZSBpbmNvbWluZyBtZXNzYWdlcyBmcm9tIHRoZSBTTUQgY2hhbm5lbCBhcmUgaGFuZGxlZC4gSSd2ZSBjb25maXJtZWQgdGhhdCBpdCdzIGFjdHVhbGx5IHJlYWNoYWJsZSBhbmQgdGhhdCBpdCdzIHdvcmtpbmcgYXMgZXhwZWN0ZWQuIExldCdzIG1hcmsgaXQgYXMgYSB0YXJnZXQgZm9yIGZ1enppbmcg4oCTIEknbGwgc2V0IGBXb3J0aEZ1enppbmc9dHJ1ZWAuXG5cbkZvciB0aGUgZm9jdXMgc3ltYm9scywgSSdsbCBkZWZpbml0ZWx5IHNwZWNpZnkgYHdjbjM2eHhfc21kX3JzcF9wcm9jZXNzYC4gV2UgbmVlZCB0byBkZWZpbmUgc29tZSBzcGVjaWZpYyBjb25maWd1cmF0aW9ucyBmb3IgZnV6emluZyBzbyBsZXQncyB1c2UgYFdDTjM2WFhgLCBgUUNPTV9XQ05TU19DVFJMYCwgYW5kIGBSUE1TR2AuXG5cbkJlZm9yZSBJIGRpZyBpbiB0b28gZGVlcCBJIHNob3VsZCBwcm9iYWJseSBkb3VibGUgY2hlY2sgdGhlIEtjb25maWcgZm9yIGBXQ04zNlhYYCBhbmQgbWFrZSBzdXJlIGl0J3Mgc2V0IHVwIGNvcnJlY3RseS5cblxuXG4iLCJJbnB1dFRva2VucyI6MzE5NDQsIk91dHB1dFRva2VucyI6NDIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMDgsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQxODo1NjowMy4yNzczMjQyNTRaIiwiU2VxIjozNSwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTA4MjgwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogMjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAgMTpcXHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBJU0NcXG4gICAyOlxcdGNvbmZpZyBXQ04zNlhYXFxuICAgMzpcXHRcXHR0cmlzdGF0ZSBcXFwiUXVhbGNvbW0gQXRoZXJvcyBXQ04zNjYwLzM2ODAgc3VwcG9ydFxcXCJcXG4gICA0OlxcdFxcdGRlcGVuZHMgb24gTUFDODAyMTEgXFx1MDAyNlxcdTAwMjYgSEFTX0RNQVxcbiAgIDU6XFx0XFx0ZGVwZW5kcyBvbiBRQ09NX1dDTlNTX0NUUkwgfHwgUUNPTV9XQ05TU19DVFJMPW5cXG4gICA2OlxcdFxcdGRlcGVuZHMgb24gUlBNU0cgfHwgUlBNU0c9blxcbiAgIDc6XFx0XFx0aGVscFxcbiAgIDg6XFx0XFx0ICBUaGlzIG1vZHVsZSBhZGRzIHN1cHBvcnQgZm9yIHdpcmVsZXNzIGFkYXB0ZXJzIGJhc2VkIG9uXFxuICAgOTpcXHRcXHQgIFF1YWxjb21tIEF0aGVyb3MgV0NOMzY2MCBhbmQgV0NOMzY4MCBtb2JpbGUgY2hpcHNldHMuXFxuICAxMDpcXHRcXG4gIDExOlxcdFxcdCAgSWYgeW91IGNob29zZSB0byBidWlsZCBhIG1vZHVsZSwgaXQnbGwgYmUgY2FsbGVkIHdjbjM2eHguXFxuICAxMjpcXHRcXG4gIDEzOlxcdGNvbmZpZyBXQ04zNlhYX0RFQlVHRlNcXG4gIDE0OlxcdFxcdGJvb2wgXFxcIldDTjM2WFggZGVidWdmcyBzdXBwb3J0XFxcIlxcbiAgMTU6XFx0XFx0ZGVwZW5kcyBvbiBXQ04zNlhYXFxuICAxNjpcXHRcXHRoZWxwXFxuICAxNzpcXHRcXHQgIEVuYWJsZWQgZGVidWdmcyBzdXBwb3J0XFxuICAxODpcXHRcXG4gIDE5OlxcdFxcdCAgSWYgdW5zdXJlLCBzYXkgWSB0byBtYWtlIGl0IGVhc2llciB0byBkZWJ1ZyBwcm9ibGVtcy5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjZUMTg6NTY6MDMuMjc3NDM0MjM0WiIsIlNlcSI6MzYsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM0NTM3NzE0NjEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBXaS1GaSBEcml2ZXIgRGVwZW5kZW5jeSoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgZHJpdmVyIGFuZCBpbW1lZGlhdGVseSwgdGhlIGRlcGVuZGVuY2llcyBhcmUganVtcGluZyBvdXQuIEl0IGhpbmdlcyBvbiBgTUFDODAyMTFgIGFuZCBgSEFTX0RNQWAsIHdoaWNoIG1ha2VzIHNlbnNlIGZvciBhbnkgbW9kZXJuIFdpLUZpIGltcGxlbWVudGF0aW9uOyBETUEgaXMgY3JpdGljYWwgZm9yIGVmZmljaWVudCBkYXRhIHRyYW5zZmVyLiBCdXQgdGhlbiBpdCBhZGRzIGBRQ09NX1dDTlNTX0NUUkwgfHwgUUNPTV9XQ05TU19DVFJMPW5gLiBUaGF0IHNlY29uZCBwYXJ0IGlzIHdoYXQgY2F0Y2hlcyBteSBleWUuIElmIGBRQ09NX1dDTlNTX0NUUkxgIGlzICpzZXQgdG8gZmFsc2UqLCBob3cgdGhlIGhlbGwgZG9lcyB0aGlzIHRoaW5nIGV2ZW4gZnVuY3Rpb24/IEl0IHNlZW1zIGNvdW50ZXItaW50dWl0aXZlIHRvIGhhdmUgYSBkZXBlbmRlbmN5IHRoYXQgZGlzYWJsZXMgdGhlIGNvcmUgZnVuY3Rpb25hbGl0eS4gSSBuZWVkIHRvIGdldCB0byB0aGUgYm90dG9tIG9mIHRoaXMuIFJpZ2h0LCBsZXQncyBkaXZlIGludG8gdGhlIEtjb25maWcgZm9yIGBkcml2ZXJzL3NvYy9xY29tL3djbnNzX2N0cmwuY2AgYW5kIGZpZ3VyZSBvdXQgd2hhdCdzIHJlYWxseSBnb2luZyBvbiB0aGVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MzI1ODQsIk91dHB1dFRva2VucyI6MjMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo4MywiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDE4OjU2OjA2LjczMTIwODYyNFoiLCJTZXEiOjM3LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjMzMDQ3MjE4MSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgUUNPTV9XQ05TU19DVFJMXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvc29jL3Fjb20vS2NvbmZpZz0yMzk9Y29uZmlnIFFDT01fU1RBVFNcXG4tLVxcbmRyaXZlcnMvc29jL3Fjb20vS2NvbmZpZy0yNDktXFxuZHJpdmVycy9zb2MvcWNvbS9LY29uZmlnOjI1MDpjb25maWcgUUNPTV9XQ05TU19DVFJMXFxuZHJpdmVycy9zb2MvcWNvbS9LY29uZmlnLTI1MS1cXHR0cmlzdGF0ZSBcXFwiUXVhbGNvbW0gV0NOU1MgY29udHJvbCBkcml2ZXJcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDE4OjU2OjA5LjA2MTY5MzQ5NVoiLCJTZXEiOjM4LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0ODI0NTI2MDYyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgYSBzdW1tYXJ5IG9mIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaWYgSSB3ZXJlIHRoZSBvbmUgdGhpbmtpbmcgaXQ6XG5cbioqRGl2aW5nIGludG8gdGhlIFFDT00gU29DIERyaXZlciBDb25maWd1cmF0aW9uKipcblxuT2theSwgdGltZSB0byBnZXQgbXkgaGFuZHMgZGlydHkuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIHRoZSBRdWFsY29tbSBTeXN0ZW0tb24tQ2hpcCAoU29DKSBkcml2ZXJzLiBNeSBmb2N1cyBpcyBnb2luZyB0byBiZSBvbiB0aGUgYGRyaXZlcnMvc29jL3Fjb20vS2NvbmZpZ2AgZmlsZS4gVGhpcyBpcyB3aGVyZSBJIGV4cGVjdCB0byBmaW5kIHRoZSBtZWF0IG9mIHRoZSBkcml2ZXIgc2VsZWN0aW9uIGFuZCBmZWF0dXJlIGVuYWJsZW1lbnQgZm9yIHRoZXNlIFFDT00gZGV2aWNlcy4gVGhpcyBLY29uZmlnIGZpbGUgd2lsbCBkZWZpbmUgdGhlIGRlcGVuZGVuY2llcywgc3ltYm9scywgYW5kIGhlbHAgdGV4dCB0aGF0IHVzZXJzIHdpbGwgc2VlIHdoZW4gdGhleSBjb25maWd1cmUgdGhlaXIga2VybmVsIGZvciBhIFF1YWxjb21tLWJhc2VkIHN5c3RlbS4gSSBhbnRpY2lwYXRlIHNlZWluZyB0aGluZ3MgbGlrZTpcblxuKiAgICoqQ2hpcHNldC1zcGVjaWZpYyBvcHRpb25zOioqIEkgZXhwZWN0IGRpZmZlcmVudCBgY29uZmlnYCBvcHRpb25zIGZvciBkaWZmZXJlbnQgU25hcGRyYWdvbiB2YXJpYW50cyAoZS5nLiwgOCBHZW4gMSwgODg4LCBldGMuKSwgd2hpY2ggd2lsbCBlbmFibGUgdGhlIGFwcHJvcHJpYXRlIGRyaXZlcnMgZm9yIHNwZWNpZmljIGhhcmR3YXJlIGZlYXR1cmVzIHdpdGhpbiB0aG9zZSBTb0NzLlxuKiAgICoqUGVyaXBoZXJhbCBlbmFibGVtZW50czoqKiBJJ2xsIGJlIGxvb2tpbmcgZm9yIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyByZWxhdGVkIHRvIGluZGl2aWR1YWwgcGVyaXBoZXJhbHMsIGxpa2UgdGhlIGNhbWVyYSBpbnRlcmZhY2UsIGRpc3BsYXkgY29udHJvbGxlcnMsIGF1ZGlvIGNvZGVjcywgVVNCIGNvbnRyb2xsZXJzLCBhbmQgbWVtb3J5IGNvbnRyb2xsZXJzLiBUaGVzZSB3aWxsIGxpa2VseSBoYXZlIGFzc29jaWF0ZWQgZGVwZW5kZW5jaWVzIG9uIG90aGVyIEtjb25maWcgc3ltYm9scyBhbmQgYm9hcmQgY29uZmlndXJhdGlvbnMuXG4qICAgKipQb3dlciBtYW5hZ2VtZW50IGNvbnNpZGVyYXRpb25zOioqIEdpdmVuIHRoZSBpbXBvcnRhbmNlIG9mIHBvd2VyIGVmZmljaWVuY3kgaW4gbW9iaWxlIGRldmljZXMsIEkgZnVsbHkgZXhwZWN0IHRvIGZpbmQgYSBzZWN0aW9uIHJlbGF0ZWQgdG8gcG93ZXIgbWFuYWdlbWVudCBmZWF0dXJlcywgaW5jbHVkaW5nIGNsb2Nrcywgdm9sdGFnZSByZWd1bGF0b3JzLCBhbmQgdGhlcm1hbCBtYW5hZ2VtZW50LiBUaGUgS2NvbmZpZyBmaWxlIHdpbGwgZ3VpZGUgd2hpY2ggZmVhdHVyZXMgSSBjYW4gdG9nZ2xlLlxuKiAgICoqRG9jdW1lbnRhdGlvbiBhbmQgSGVscCBUZXh0OioqIEkgbmVlZCB0byBwYXkgY2xvc2UgYXR0ZW50aW9uIHRvIHRoZSBoZWxwIHRleHQgYXNzb2NpYXRlZCB3aXRoIGVhY2ggY29uZmlndXJhdGlvbiBvcHRpb24uIFRoaXMgaXMgY3JpdGljYWwgZm9yIHVuZGVyc3RhbmRpbmcgdGhlIHB1cnBvc2Ugb2YgZWFjaCBzZXR0aW5nIGFuZCB0aGUgcG90ZW50aWFsIGltcGxpY2F0aW9ucyBvZiBlbmFibGluZyBvciBkaXNhYmxpbmcgYSBzcGVjaWZpYyBmZWF0dXJlLiBUaGlzIHdpbGwgYWlkIHdoZW4gSSBhbSBkZXNpZ25pbmcgdGhlIGtlcm5lbCB0byBtZWV0IHJlcXVpcmVtZW50cy5cbiogICAqKkRlcGVuZGVuY2llcyBhbmQgRGVmYXVsdHM6KiogSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZSBLY29uZmlnIGZpbGUgaW50ZXJhY3RzIHdpdGggb3RoZXIgY29uZmlndXJhdGlvbiBmaWxlcywgc3VjaCBhcyB0aG9zZSByZWxhdGVkIHRvIHRoZSBib2FyZCBzdXBwb3J0IHBhY2thZ2UgKEJTUCkuIEFsc28sIHRoZSBkZXBlbmRlbmNpZXMgdGhhdCBnb3Zlcm4gdGhlIGF2YWlsYWJpbGl0eSBvZiBkaWZmZXJlbnQgb3B0aW9ucyBhcmUgY3J1Y2lhbCwgYXMgd2VsbCBhcyB0aGUgZGVmYXVsdCB2YWx1ZXMuXG4qICAgKipBcmNoaXRlY3R1cmFsIE51YW5jZXM6KiogSSBrbm93IFF1YWxjb21tIGhhcyBpdHMgb3duIGFyY2hpdGVjdHVyYWwgcXVpcmtzLCBzbyBJJ2xsIGJlIGxvb2tpbmcgZm9yIGNvbmZpZ3VyYXRpb24gZWxlbWVudHMgdGhhdCBzcGVjaWZpY2FsbHkgYWRkcmVzcyB0aGVzZSBhc3BlY3RzIOKAkyBwZXJoYXBzIHJlbGF0ZWQgdG8gdGhlaXIgaW50ZXJjb25uZWN0IGZhYnJpYyBvciB0aGVpciBzZWN1cml0eSBmZWF0dXJlcy5cblxuSSdtIHJlYWR5IHRvIGRpZyBpbiBhbmQgZGVjb25zdHJ1Y3QgdGhpcyBLY29uZmlnIGZpbGUsIHVuZGVyc3RhbmRpbmcgaG93IGl0IHN0ZWVycyB0aGUgc2VsZWN0aW9uIGFuZCBjb25maWd1cmF0aW9uIG9mIFFDT00gU29DIGRyaXZlcnMgd2l0aGluIHRoZSBrZXJuZWwuIEl04oCZcyB0aW1lIHRvIGZpbmQgb3V0IHdoYXQgc2VjcmV0cyB0aGlzIGZpbGUgaG9sZHMhXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMyOTgwLCJPdXRwdXRUb2tlbnMiOjM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjZUMTg6NTY6MTMuODg2MjIzNjA3WiIsIlNlcSI6MzksIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjk0NzgwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvc29jL3Fjb20vS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAyNTAsXG4gIFwiTGluZUNvdW50XCI6IDEwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAyNTA6XFx0Y29uZmlnIFFDT01fV0NOU1NfQ1RSTFxcbiAyNTE6XFx0XFx0dHJpc3RhdGUgXFxcIlF1YWxjb21tIFdDTlNTIGNvbnRyb2wgZHJpdmVyXFxcIlxcbiAyNTI6XFx0XFx0ZGVwZW5kcyBvbiBBUkNIX1FDT00gfHwgQ09NUElMRV9URVNUXFxuIDI1MzpcXHRcXHRkZXBlbmRzIG9uIFJQTVNHXFxuIDI1NDpcXHRcXHRoZWxwXFxuIDI1NTpcXHRcXHQgIENsaWVudCBkcml2ZXIgZm9yIHRoZSBXQ05TU19DVFJMIFNNRCBjaGFubmVsLCB1c2VkIHRvIGRvd25sb2FkIG52XFxuIDI1NjpcXHRcXHQgIGZpcm13YXJlIHRvIGEgbmV3bHkgYm9vdGVkIFdDTlNTIGNoaXAuXFxuIDI1NzpcXHRcXG4gMjU4OlxcdGNvbmZpZyBRQ09NX0FQUlxcbiAyNTk6XFx0XFx0dHJpc3RhdGUgXFxcIlF1YWxjb21tIEFQUi9HUFIgQnVzIChBc3luY2hyb25vdXMvR2VuZXJpYyBQYWNrZXQgUm91dGVyKVxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjZUMTg6NTY6MTMuODg2MzE5ODY3WiIsIlNlcSI6NDAsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ2MTE0NDMxNzAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBRQ09NX1dDTlNTX0NUUkwgRGVwZW5kZW5jeSoqXG5cbk9rYXksIHNvIGl0IGxvb2tzIGxpa2UgYFFDT01fV0NOU1NfQ1RSTGAgaGFzIGEgaGFyZCBkZXBlbmRlbmN5IG9uIGBSUE1TR2AuIFRoYXQncyB0aGUgYmFzZWxpbmUuIE5vdywgaWYgSSBlbmFibGUgYFFDT01fV0NOU1NfQ1RSTGAsIHRoYXQgaW1wbGllcyB0aGF0IHRoZSBgd2NuMzZ4eGAgZHJpdmVyICpjYW4qIHV0aWxpemUgaXQsIHByZXN1bWFibHkgZm9yIHNvbWUga2luZCBvZiBjb250cm9sIG9yIGNvbW11bmljYXRpb24uIE1ha2VzIHNlbnNlLlxuXG5CdXQgd2hhdCBpZiBJIGRpc2FibGUgYFFDT01fV0NOU1NfQ1RSTGA/IFRoZSBpbXBsaWNhdGlvbnMgYXJlIGltcG9ydGFudC4gVGhlIHRleHQgc3VnZ2VzdHMgdGhhdCBgd2NuMzZ4eGAgY2FuIHN0aWxsIGJlIGNvbXBpbGVkLCBidXQgZnVuY3Rpb25hbGl0eSB3aWxsIGxpa2VseSBiZSBjcmlwcGxlZC4gVGhlIGtleSBoZXJlIHNlZW1zIHRvIGJlIGBxY29tX3djbnNzX29wZW5fY2hhbm5lbGAuIElmIGBRQ09NX1dDTlNTX0NUUkxgIGlzIGRpc2FibGVkLCB0aGlzIGZ1bmN0aW9uIHByb2JhYmx5IGdldHMgc3R1YmJlZCBvdXQuIEl04oCZcyBlc3NlbnRpYWxseSByZW5kZXJlZCB1c2VsZXNzLlxuXG5JIHRoaW5rIGl04oCZcyB0aW1lIHRvIGRvdWJsZSBjaGVjayB0aGUgaGVhZGVyIGZpbGUuIEkgbmVlZCB0byBkaXZlIGludG8gYGluY2x1ZGUvbGludXgvc29jL3Fjb20vd2Nuc3NfY3RybC5oYCB0byBzZWUgZXhhY3RseSB3aGF04oCZcyBnb2luZyBvbiBhdCB0aGF0IGxldmVsIGFuZCBob3cgdGhhdCBmdW5jdGlvbiBpcyBiZWluZyBoYW5kbGVkIGluIGRpZmZlcmVudCBjb25maWd1cmF0aW9ucy5cblxuXG4iLCJJbnB1dFRva2VucyI6MzM3MTQsIk91dHB1dFRva2VucyI6NDIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMTcsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQxODo1NjoxOC40OTc3Njc4NjdaIiwiU2VxIjo0MSwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTE0ODgwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImluY2x1ZGUvbGludXgvc29jL3Fjb20vd2Nuc3NfY3RybC5oXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEsXG4gIFwiTGluZUNvdW50XCI6IDIwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgIDE6XFx0LyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAgKi9cXG4gICAyOlxcdCNpZm5kZWYgX19XQ05TU19DVFJMX0hfX1xcbiAgIDM6XFx0I2RlZmluZSBfX1dDTlNTX0NUUkxfSF9fXFxuICAgNDpcXHRcXG4gICA1OlxcdCNpbmNsdWRlIFxcdTAwM2NsaW51eC9ycG1zZy5oXFx1MDAzZVxcbiAgIDY6XFx0XFxuICAgNzpcXHQjaWYgSVNfRU5BQkxFRChDT05GSUdfUUNPTV9XQ05TU19DVFJMKVxcbiAgIDg6XFx0XFxuICAgOTpcXHRzdHJ1Y3QgcnBtc2dfZW5kcG9pbnQgKnFjb21fd2Nuc3Nfb3Blbl9jaGFubmVsKHZvaWQgKndjbnNzLCBjb25zdCBjaGFyICpuYW1lLFxcbiAgMTA6XFx0XFx0XFx0XFx0XFx0XFx0ICAgICAgIHJwbXNnX3J4X2NiX3QgY2IsIHZvaWQgKnByaXYpO1xcbiAgMTE6XFx0XFxuICAxMjpcXHQjZWxzZVxcbiAgMTM6XFx0XFxuICAxNDpcXHRzdGF0aWMgc3RydWN0IHJwbXNnX2VuZHBvaW50ICpxY29tX3djbnNzX29wZW5fY2hhbm5lbCh2b2lkICp3Y25zcyxcXG4gIDE1OlxcdFxcdFxcdFxcdFxcdFxcdFxcdCAgICAgIGNvbnN0IGNoYXIgKm5hbWUsXFxuICAxNjpcXHRcXHRcXHRcXHRcXHRcXHRcXHQgICAgICBycG1zZ19yeF9jYl90IGNiLFxcbiAgMTc6XFx0XFx0XFx0XFx0XFx0XFx0XFx0ICAgICAgdm9pZCAqcHJpdilcXG4gIDE4OlxcdHtcXG4gIDE5OlxcdFxcdFdBUk5fT04oMSk7XFxuICAyMDpcXHRcXHRyZXR1cm4gRVJSX1BUUigtRU5YSU8pO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQxODo1NjoxOC40OTc4ODQ4NTdaIiwiU2VxIjo0MiwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDUyNzQ3MjEzMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBDb25maWd1cmF0aW9uIE11c2luZ3MqKlxuXG5SaWdodCwgc28gSSdtIGRpZ2dpbmcgaW50byB0aGlzIGNvZGUgYW5kIGl0J3MgcHJldHR5IGNsZWFyOiBpZiBgQ09ORklHX1FDT01fV0NOU1NfQ1RSTGAgaXNuJ3QgZW5hYmxlZCwgd2UncmUgZ29pbmcgdG8gZ2V0IGEgYC1FTlhJT2AgZXJyb3IgZnJvbSBgcWNvbV93Y25zc19vcGVuX2NoYW5uZWxgIGFuZCBhIHJhdGhlciBhbm5veWluZyBgV0FSTl9PTigxKWAuIFRoYXQncyBhIG5vLWdvLiBUaGVyZWZvcmUsIHdlICphYnNvbHV0ZWx5KiBuZWVkIGBRQ09NX1dDTlNTX0NUUkxgIGVuYWJsZWQuIFxuXG5Ob3csIEkgcmVtZW1iZXIgZnJvbSB0aGUgYnVpbGQgY29uZmlnIHRoYXQgYFFDT01fV0NOU1NfQ1RSTGAgZGVwZW5kcyBvbiBgUlBNU0dgLiBGaW5lLCBubyBwcm9ibGVtLCBhZGQgdGhhdCB0byB0aGUgbGlzdC4gVGhhdCBtZWFucyBpbiBteSBgRW5hYmxlQ29uZmlnc2AgSSdtIGRlZmluaXRlbHkgZ29pbmcgdG8gbmVlZCBgV0NOMzZYWGAsIGBRQ09NX1dDTlNTX0NUUkxgLCBhbmQgYFJQTVNHYC5cblxuSGFuZyBvbiBhIHNlY29uZC4gYFdDTjM2WFhgIGhhcyBkZXBlbmRlbmNpZXMgdG9vISBTcGVjaWZpY2FsbHksIGl0IHJlcXVpcmVzIGJvdGggYE1BQzgwMjExYCBhbmQgYEhBU19ETUFgLiBTbywgSSBuZWVkIHRvIGJlIHN1cmUgdG8gaW5jbHVkZSBgTUFDODAyMTFgIGluIHRoZSBjb25maWd1cmF0aW9uIGFzIHdlbGwuIFxuXG5Pa2F5LCBsZXQncyBqdXN0IG1ha2Ugc3VyZSB0aGVyZSBhcmVuJ3QgYW55IHNuZWFreSBkZXBlbmRlbmNpZXMgdGllZCB0byBgUlBNU0dgIG5vdyB0aGF0IEknbSBoZXJlLiBDYW4ndCBiZSB0b28gY2FyZWZ1bCwgcmlnaHQ/XG5cblxuIiwiSW5wdXRUb2tlbnMiOjM0NDA4LCJPdXRwdXRUb2tlbnMiOjE3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTY3LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjZUMTg6NTY6MjMuMDI1MzYwMTM3WiIsIlNlcSI6NDMsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozMjc3ODQwMTA1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBSUE1TR1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93d2FuL0tjb25maWc9NjU9Y29uZmlnIFFDT01fQkFNX0RNVVhcXG4tLVxcbmRyaXZlcnMvbmV0L3d3YW4vS2NvbmZpZy03Ny1cXG5kcml2ZXJzL25ldC93d2FuL0tjb25maWc6Nzg6Y29uZmlnIFJQTVNHX1dXQU5fQ1RSTFxcbmRyaXZlcnMvbmV0L3d3YW4vS2NvbmZpZy03OS1cXHR0cmlzdGF0ZSBcXFwiUlBNU0cgV1dBTiBjb250cm9sIGRyaXZlclxcXCJcXG4tLVxcbmRyaXZlcnMvcnBtc2cvS2NvbmZpZz0zPW1lbnUgXFxcIlJwbXNnIGRyaXZlcnNcXFwiXFxuLS1cXG5kcml2ZXJzL3JwbXNnL0tjb25maWctNS0jIFJQTVNHIGFsd2F5cyBnZXRzIHNlbGVjdGVkIGJ5IHdob2V2ZXIgd2FudHMgaXRcXG5kcml2ZXJzL3JwbXNnL0tjb25maWc6Njpjb25maWcgUlBNU0dcXG5kcml2ZXJzL3JwbXNnL0tjb25maWctNy1cXHR0cmlzdGF0ZVxcbmRyaXZlcnMvcnBtc2cvS2NvbmZpZy04LVxcbmRyaXZlcnMvcnBtc2cvS2NvbmZpZzo5OmNvbmZpZyBSUE1TR19DSEFSXFxuZHJpdmVycy9ycG1zZy9LY29uZmlnLTEwLVxcdHRyaXN0YXRlIFxcXCJSUE1TRyBkZXZpY2UgaW50ZXJmYWNlXFxcIlxcbi0tXFxuZHJpdmVycy9ycG1zZy9LY29uZmlnLTE3LVxcbmRyaXZlcnMvcnBtc2cvS2NvbmZpZzoxODpjb25maWcgUlBNU0dfQ1RSTFxcbmRyaXZlcnMvcnBtc2cvS2NvbmZpZy0xOS1cXHR0cmlzdGF0ZSBcXFwiUlBNU0cgY29udHJvbCBpbnRlcmZhY2VcXFwiXFxuLS1cXG5kcml2ZXJzL3JwbXNnL0tjb25maWctMjUtXFxuZHJpdmVycy9ycG1zZy9LY29uZmlnOjI2OmNvbmZpZyBSUE1TR19OU1xcbmRyaXZlcnMvcnBtc2cvS2NvbmZpZy0yNy1cXHR0cmlzdGF0ZSBcXFwiUlBNU0cgbmFtZSBzZXJ2aWNlIGFubm91bmNlbWVudFxcXCJcXG4tLVxcbmRyaXZlcnMvcnBtc2cvS2NvbmZpZy0zMy1cXG5kcml2ZXJzL3JwbXNnL0tjb25maWc6MzQ6Y29uZmlnIFJQTVNHX01US19TQ1BcXG5kcml2ZXJzL3JwbXNnL0tjb25maWctMzUtXFx0dHJpc3RhdGUgXFxcIk1lZGlhVGVrIFNDUFxcXCJcXG4tLVxcbmRyaXZlcnMvcnBtc2cvS2NvbmZpZy00Mi1cXG5kcml2ZXJzL3JwbXNnL0tjb25maWc6NDM6Y29uZmlnIFJQTVNHX1FDT01fR0xJTktcXG5kcml2ZXJzL3JwbXNnL0tjb25maWctNDQtXFx0dHJpc3RhdGVcXG4tLVxcbmRyaXZlcnMvcnBtc2cvS2NvbmZpZy00Ni1cXG5kcml2ZXJzL3JwbXNnL0tjb25maWc6NDc6Y29uZmlnIFJQTVNHX1FDT01fR0xJTktfUlBNXFxuZHJpdmVycy9ycG1zZy9LY29uZmlnLTQ4LVxcdHRyaXN0YXRlIFxcXCJRdWFsY29tbSBSUE0gR2xpbmsgZHJpdmVyXFxcIlxcbi0tXFxuZHJpdmVycy9ycG1zZy9LY29uZmlnLTU2LVxcbmRyaXZlcnMvcnBtc2cvS2NvbmZpZzo1Nzpjb25maWcgUlBNU0dfUUNPTV9HTElOS19TTUVNXFxuZHJpdmVycy9ycG1zZy9LY29uZmlnLTU4LVxcdHRyaXN0YXRlIFxcXCJRdWFsY29tbSBTTUVNIEdsaW5rIGRyaXZlclxcXCJcXG4tLVxcbmRyaXZlcnMvcnBtc2cvS2NvbmZpZy02Ni1cXG5kcml2ZXJzL3JwbXNnL0tjb25maWc6Njc6Y29uZmlnIFJQTVNHX1FDT01fU01EXFxuZHJpdmVycy9ycG1zZy9LY29uZmlnLTY4LVxcdHRyaXN0YXRlIFxcXCJRdWFsY29tbSBTaGFyZWQgTWVtb3J5IERyaXZlciAoU01EKVxcXCJcXG4tLVxcbmRyaXZlcnMvcnBtc2cvS2NvbmZpZy03Ni1cXG5kcml2ZXJzL3JwbXNnL0tjb25maWc6Nzc6Y29uZmlnIFJQTVNHX1ZJUlRJT1xcbmRyaXZlcnMvcnBtc2cvS2NvbmZpZy03OC1cXHR0cmlzdGF0ZSBcXFwiVmlydGlvIFJQTVNHIGJ1cyBkcml2ZXJcXFwiXFxuLS1cXG5kcml2ZXJzL3R0eS9LY29uZmlnPTQwND1zb3VyY2UgXFxcImRyaXZlcnMvdHR5L2h2Yy9LY29uZmlnXFxcIlxcbmRyaXZlcnMvdHR5L0tjb25maWctNDA1LVxcbmRyaXZlcnMvdHR5L0tjb25maWc6NDA2OmNvbmZpZyBSUE1TR19UVFlcXG5kcml2ZXJzL3R0eS9LY29uZmlnLTQwNy1cXHR0cmlzdGF0ZSBcXFwiUlBNU0cgdHR5IGRyaXZlclxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjZUMTg6NTY6MjYuMzAzMjA4NzEyWiIsIlNlcSI6NDQsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMwNTQxMTkyODgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBEZXBlbmRlbmNpZXMqKlxuXG5Pa2F5LCBzbyBgUlBNU0dgIGlzIGEgdHJpY2t5IG9uZSwgc2VlbWluZ2x5IGFsd2F5cyBpbiBkZW1hbmQsIGNvbnN0YW50bHkgYmVpbmcgc2VsZWN0ZWQgYnkgd2hhdGV2ZXIgc3Vic3lzdGVtIG5lZWRzIGl0LiBIbW0sIGJ1dCBub3cgSSdtIHJlbWVtYmVyaW5nIHRoYXQgYFFDT01fV0NOU1NfQ1RSTGAgaGFzIGEgZGVwZW5kZW5jeSBvbiBgUlBNU0dgLiBCZXN0IHRvIGRvdWJsZS1jaGVjayB0aGF0IGBkcml2ZXJzL3NvYy9xY29tL0tjb25maWdgIGZpbGUgYWdhaW4uIEp1c3QgdG8gbWFrZSBzdXJlIG15IHVuZGVyc3RhbmRpbmcgb2YgdGhpcyBpc24ndCBzbGlwcGluZy4gR290dGEgYmUgdGhvcm91Z2ggd2l0aCB0aGVzZSBjb3JlIGRlcGVuZGVuY2llcy5cblxuXG4iLCJJbnB1dFRva2VucyI6MzU2MjQsIk91dHB1dFRva2VucyI6MzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1NSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQxODo1NjoyOS4zNTczMzIxM1oiLCJTZXEiOjQ1LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo5MzY0MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL3NvYy9xY29tL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMjUwLFxuICBcIkxpbmVDb3VudFwiOiAxMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgMjUwOlxcdGNvbmZpZyBRQ09NX1dDTlNTX0NUUkxcXG4gMjUxOlxcdFxcdHRyaXN0YXRlIFxcXCJRdWFsY29tbSBXQ05TUyBjb250cm9sIGRyaXZlclxcXCJcXG4gMjUyOlxcdFxcdGRlcGVuZHMgb24gQVJDSF9RQ09NIHx8IENPTVBJTEVfVEVTVFxcbiAyNTM6XFx0XFx0ZGVwZW5kcyBvbiBSUE1TR1xcbiAyNTQ6XFx0XFx0aGVscFxcbiAyNTU6XFx0XFx0ICBDbGllbnQgZHJpdmVyIGZvciB0aGUgV0NOU1NfQ1RSTCBTTUQgY2hhbm5lbCwgdXNlZCB0byBkb3dubG9hZCBudlxcbiAyNTY6XFx0XFx0ICBmaXJtd2FyZSB0byBhIG5ld2x5IGJvb3RlZCBXQ05TUyBjaGlwLlxcbiAyNTc6XFx0XFxuIDI1ODpcXHRjb25maWcgUUNPTV9BUFJcXG4gMjU5OlxcdFxcdHRyaXN0YXRlIFxcXCJRdWFsY29tbSBBUFIvR1BSIEJ1cyAoQXN5bmNocm9ub3VzL0dlbmVyaWMgUGFja2V0IFJvdXRlcilcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDE4OjU2OjI5LjM1NzQyNzUzWiIsIlNlcSI6NDYsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM5NDkwNTM5NDUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBgUUNPTV9XQ05TU19DVFJMYCBEZXBlbmRlbmN5KipcblxuT2theSwgc28gSSdtIGRpZ2dpbmcgaW50byB0aGlzIGNvbmZpZ3VyYXRpb24gYW5kIGl0J3MgY2xlYXIgdGhhdCBgUUNPTV9XQ05TU19DVFJMYCBoYXMgYSBkZXBlbmRlbmN5IG9uIGBSUE1TR2AuIFJpZ2h0LCBzaW1wbGUgZW5vdWdoLiBJZiBgUlBNU0dgIGlzbid0IGVuYWJsZWQsIHRoZW4gYFFDT01fV0NOU1NfQ1RSTGAgaXMgZXNzZW50aWFsbHkgaGlkZGVuIGZyb20gdmlldywgd2hpY2ggbWFrZXMgc2Vuc2UgZnJvbSBhIG1vZHVsYXJpdHkgcGVyc3BlY3RpdmUuIE5vdyBJJ20gcGF1c2luZyB0aG91Z2gsIGJlY2F1c2UgSSBzZWUgdGhhdCBgUlBNU0dgIGlzIGEgYHRyaXN0YXRlYCB3aXRob3V0IGEgcHJvbXB0LiBUaGF0IGltbWVkaWF0ZWx5IHRyaWdnZXJzIGEgbWVudGFsIGNoZWNrbGlzdDogYSBgdHJpc3RhdGVgIHdpdGhvdXQgYSBwcm9tcHQgdXN1YWxseSBtZWFucyBpdCdzIGV4Y2x1c2l2ZWx5IGNvbnRyb2xsZWQgYnkgb3RoZXIgY29uZmlndXJhdGlvbiBvcHRpb25zLiBJdCdzIG5vdCBzb21ldGhpbmcgYSB1c2VyIHdvdWxkIGRpcmVjdGx5IGVuYWJsZS4gUmlnaHQsIHJpZ2h0Li4uIHNvLCBpZiBJIHdhbnQgdG8gZmlndXJlIG91dCAqd2h5KiBgUlBNU0dgIGlzIGVuYWJsZWQgaW4gdGhpcyBjb250ZXh0LCBJIG5lZWQgdG8gdHJhY2UgYmFjayB3aGljaCBzcGVjaWZpYyBjb25maWd1cmF0aW9ucyBhcmUgKnNlbGVjdGluZyogaXQuIEknbGwgbmVlZCB0byBjaGVjayB3aGV0aGVyIGBSUE1TR19WSVJUSU9gIG9yIGBSUE1TR19RQ09NX1NNRGAgYXJlIHRoZSBzZWxlY3RvcnMgaGVyZS4gVGhhdCdzIHRoZSBrZXkuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM1OTkwLCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTAxLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjZUMTg6NTY6MzMuMzA2NDg1ODg1WiIsIlNlcSI6NDcsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjc5MzYwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvcnBtc2cvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiA3NyxcbiAgXCJMaW5lQ291bnRcIjogMTBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICA3NzpcXHRjb25maWcgUlBNU0dfVklSVElPXFxuICA3ODpcXHRcXHR0cmlzdGF0ZSBcXFwiVmlydGlvIFJQTVNHIGJ1cyBkcml2ZXJcXFwiXFxuICA3OTpcXHRcXHRkZXBlbmRzIG9uIEhBU19ETUFcXG4gIDgwOlxcdFxcdHNlbGVjdCBSUE1TR1xcbiAgODE6XFx0XFx0c2VsZWN0IFJQTVNHX05TXFxuICA4MjpcXHRcXHRzZWxlY3QgVklSVElPXFxuICA4MzpcXHRcXG4gIDg0OlxcdGVuZG1lbnVcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjZUMTg6NTY6MzMuMzA2NTY2NjM1WiIsIlNlcSI6NDgsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ5MTkwMjU2NjcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqS2VybmVsIENvbmZpZ3VyYXRpb24gVHdlYWtzKipcblxuT2theSwgc28gYFJQTVNHX1ZJUlRJT2AgYXV0b21hdGljYWxseSBwdWxscyBpbiBgUlBNU0dgLiBNYWtlcyBzZW5zZSwgc28gd2UgZGVmaW5pdGVseSB3YW50IHRvIGVuYWJsZSBgUlBNU0dfVklSVElPYCBhcyBvdXIgZW50cnkgcG9pbnQuIE5vdywgZGlnZ2luZyBhIGxpdHRsZSBkZWVwZXIsIGBRQ09NX1dDTlNTX0NUUkxgIGhhcyBhIGRlcGVuZGVuY3kgb24gZWl0aGVyIGBBUkNIX1FDT01gIG9yIGBDT01QSUxFX1RFU1RgLiBIbW0sIGBDT01QSUxFX1RFU1RgIGlzIGEgY29tbW9uIGRlZmF1bHQgaW4gc3l6Ym90IGNvbmZpZ3VyYXRpb25zLCBidXQgdG8ga2VlcCB0aGluZ3MgdGlkeSBhbmQgcHJlZGljdGFibGUsIGxldCdzIGV4cGxpY2l0bHkgbGlzdCBgUUNPTV9XQ05TU19DVFJMYCBpbnN0ZWFkIG9mIHJlbHlpbmcgb24gaXQuXG5cblRoZW4gd2UgbG9vayBhdCBgV0NOMzZYWGAsIGl0cyBkZXBlbmRlbmN5IGlzIGBRQ09NX1dDTlNTX0NUUkwgfHwgUUNPTV9XQ05TU19DVFJMPW5gLiBUaGlzIG1lYW5zIHdlIGNhbiBjb25maWd1cmUgdGhlIGBRQ09NX1dDTlNTX0NUUkxgIG1vZHVsZSBhcyBhIG1vZHVsZSBhbmQgYFdDTjM2WFhgIGJlY29tZXMgYSBtb2R1bGUgYXMgd2VsbC4gSG93ZXZlciwgaWYgd2Ugd2FudCB0aGVtIGJ1aWx0LWluIHRvIHRoZSBrZXJuZWwgaW1hZ2UsIHdlIHNob3VsZCBiZSBleHBsaWNpdCBhbmQganVzdCBsaXN0IGBXQ04zNlhYYCwgYFFDT01fV0NOU1NfQ1RSTGAsIGFuZCBgUlBNU0dfVklSVElPYC4gR290dGEgZG91YmxlLWNoZWNrIHRob3NlIGRlcGVuZGVuY2llcywgdGhvdWdoOyBsZXQncyByZXZpc2l0IGBXQ04zNlhYYCdzIHNldHVwIGFnYWluIGp1c3QgdG8gYmUgc3VyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MzY0NTYsIk91dHB1dFRva2VucyI6NDIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMzAsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQxODo1NjozOC4yMjU1OTU1OTJaIiwiU2VxIjo0OSwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODAzNjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAxLFxuICBcIkxpbmVDb3VudFwiOiAxMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgICAxOlxcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IElTQ1xcbiAgIDI6XFx0Y29uZmlnIFdDTjM2WFhcXG4gICAzOlxcdFxcdHRyaXN0YXRlIFxcXCJRdWFsY29tbSBBdGhlcm9zIFdDTjM2NjAvMzY4MCBzdXBwb3J0XFxcIlxcbiAgIDQ6XFx0XFx0ZGVwZW5kcyBvbiBNQUM4MDIxMSBcXHUwMDI2XFx1MDAyNiBIQVNfRE1BXFxuICAgNTpcXHRcXHRkZXBlbmRzIG9uIFFDT01fV0NOU1NfQ1RSTCB8fCBRQ09NX1dDTlNTX0NUUkw9blxcbiAgIDY6XFx0XFx0ZGVwZW5kcyBvbiBSUE1TRyB8fCBSUE1TRz1uXFxuICAgNzpcXHRcXHRoZWxwXFxuICAgODpcXHRcXHQgIFRoaXMgbW9kdWxlIGFkZHMgc3VwcG9ydCBmb3Igd2lyZWxlc3MgYWRhcHRlcnMgYmFzZWQgb25cXG4gICA5OlxcdFxcdCAgUXVhbGNvbW0gQXRoZXJvcyBXQ04zNjYwIGFuZCBXQ04zNjgwIG1vYmlsZSBjaGlwc2V0cy5cXG4gIDEwOlxcdFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQxODo1NjozOC4yMjU2NzcyMjFaIiwiU2VxIjo1MCwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjkwMTU0ODg4NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBbmFseXNpcyBvZiB0aGUgV0NOMzZYWCBWdWxuZXJhYmlsaXR5KipcblxuT2theSwgc28gSSd2ZSBiZWVuIGxvb2tpbmcgYXQgdGhpcyBgV0NOMzZYWGAgZHJpdmVyLCBhbmQgaXQncyBjbGVhciB0aGF0IGl0IGhhcyBhIGRlcGVuZGVuY3kgb24gYE1BQzgwMjExYC4gUmlnaHQgYXdheSwgSSBuZWVkIHRvIG1ha2Ugc3VyZSBgTUFDODAyMTFgIGlzIGVuYWJsZWQsIHNvIEknbGwgYWRkIGl0IHRvIHRoZSBgRW5hYmxlQ29uZmlnc2AgbGlzdC4gQ3VycmVudGx5LCBJIGhhdmU6IGBXQ04zNlhYYCwgYFFDT01fV0NOU1NfQ1RSTGAsIGBSUE1TR19WSVJUSU9gLCBhbmQgbm93LCBgTUFDODAyMTFgLlxuXG5Ob3csIHRoZSB2dWxuZXJhYmlsaXR5IGxpZXMgaW4gYHdjbjM2eHhfc21kX3JzcF9wcm9jZXNzYCwgc28gbGV0J3MgY2hlY2sgaXRzIHJlYWNoYWJpbGl0eS4gQWgsIHllcywgaXQncyB0aGUgY2FsbGJhY2sgZm9yIHRoZSBycG1zZyBlbmRwb2ludCB0aGF0J3MgY3JlYXRlZCBkdXJpbmcgYHdjbjM2eHhfcHJvYmVgLiBUaGF0IG1ha2VzIHNlbnNlLiBXaGVuIGEgbWVzc2FnZSBjb21lcyBpbiBvdmVyIHRoYXQgZW5kcG9pbnQsIGB3Y24zNnh4X3NtZF9yc3BfcHJvY2Vzc2AgaXMgY2FsbGVkLiBBbmQgc2luY2UgU3l6Ym90IGNhbiBpbmplY3QgbWVzc2FnZXMgdmlhIHZpcnRpby1ycG1zZywgdGhpcyBpcyBkZWZpbml0ZWx5IHNvbWV0aGluZyB3ZSBjYW4gZnV6ei4gV2UgaGF2ZSBhIGNsZWFyIHBhdGggdG8gZXhwbG9pdCB0aGlzIVxuXG5UaGVyZWZvcmUsIHRoZSBgRm9jdXNTeW1ib2xzYCB3aWxsIGJlIGB3Y24zNnh4X3NtZF9yc3BfcHJvY2Vzc2AuIFRoZSBgRW5hYmxlQ29uZmlnc2AgbGlzdCBpcyBhcyBkZXNjcmliZWQgYWJvdmUuIFRoZSByZWFzb25pbmcgaGVyZSBpcyBzb2xpZDogdGhlIHBhdGNoIGZpeGVzIGFuIG91dC1vZi1ib3VuZHMgcmVhZCBpbiBgd2NuMzZ4eF9zbWRfcnNwX3Byb2Nlc3NgIGJ5IGFkZGluZyBhIGxlbmd0aCBjaGVjayBmb3IgdGhlIEhBTCBtZXNzYWdlIGhlYWRlci4gVGhpcyBmdW5jdGlvbiBwcm9jZXNzZXMgaW5jb21pbmcgbWVzc2FnZXMgZnJvbSB0aGUgU01EIGNoYW5uZWwgKHJwbXNnKSwgYW5kIGl0cyByZWFjaGFiaWxpdHkgdmlhIHRoZSB2aXJ0aW8tcnBtc2cgYnVzIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBtYWtlcyBpdCBpZGVhbCBmb3IgZnV6emluZy5cblxuTGV0IG1lIGp1c3QgZG91YmxlLWNoZWNrIHRvIGJlIGFic29sdXRlbHkgc3VyZS4uLiBZZXAsIHRoZSBwYXRjaCBvbmx5IG1vZGlmaWVzIGB3Y24zNnh4X3NtZF9yc3BfcHJvY2Vzc2AuIE9rYXksIHRoYXQncyBpdC4gV2UncmUgZ29vZCB0byBnby5cblxuXG4iLCJJbnB1dFRva2VucyI6MzcxNzYsIk91dHB1dFRva2VucyI6MTUzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzQyLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjZUMTg6NTY6NDUuMTI3MjI4ODQ1WiIsIlNlcSI6NTEsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODQ5OTYyNjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIldDTjM2WFhcIixcbiAgICBcIlFDT01fV0NOU1NfQ1RSTFwiLFxuICAgIFwiUlBNU0dfVklSVElPXCIsXG4gICAgXCJNQUM4MDIxMVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIndjbjM2eHhfc21kX3JzcF9wcm9jZXNzXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYW4gb3V0LW9mLWJvdW5kcyByZWFkIGluIGB3Y24zNnh4X3NtZF9yc3BfcHJvY2Vzc2AgYnkgYWRkaW5nIGEgbGVuZ3RoIGNoZWNrIGZvciB0aGUgSEFMIG1lc3NhZ2UgaGVhZGVyLiBUaGlzIGZ1bmN0aW9uIHByb2Nlc3NlcyBpbmNvbWluZyBtZXNzYWdlcyBmcm9tIHRoZSBTTUQgY2hhbm5lbCAocnBtc2cpLiBJdCBpcyByZWFjaGFibGUgdmlhIHRoZSB2aXJ0aW8tcnBtc2cgYnVzIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cywgbWFraW5nIGl0IHN1aXRhYmxlIGZvciBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIldDTjM2WFhcIixcbiAgICBcIlFDT01fV0NOU1NfQ1RSTFwiLFxuICAgIFwiUlBNU0dfVklSVElPXCIsXG4gICAgXCJNQUM4MDIxMVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIndjbjM2eHhfc21kX3JzcF9wcm9jZXNzXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYW4gb3V0LW9mLWJvdW5kcyByZWFkIGluIGB3Y24zNnh4X3NtZF9yc3BfcHJvY2Vzc2AgYnkgYWRkaW5nIGEgbGVuZ3RoIGNoZWNrIGZvciB0aGUgSEFMIG1lc3NhZ2UgaGVhZGVyLiBUaGlzIGZ1bmN0aW9uIHByb2Nlc3NlcyBpbmNvbWluZyBtZXNzYWdlcyBmcm9tIHRoZSBTTUQgY2hhbm5lbCAocnBtc2cpLiBJdCBpcyByZWFjaGFibGUgdmlhIHRoZSB2aXJ0aW8tcnBtc2cgYnVzIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cywgbWFraW5nIGl0IHN1aXRhYmxlIGZvciBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowq986w[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-26 18:30:51 +0000 UTC FinishedAt: 2026-07-26 18:56:47 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "linux-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next", "commit_hash": "90883c513ca01e77c56b8d94be7de11420c1dacf", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "WCN36XX", "QCOM_WCNSS_CTRL", "RPMSG_VIRTIO", "MAC80211" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "linux-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next", "commit_hash": "90883c513ca01e77c56b8d94be7de11420c1dacf", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "WCN36XX", "QCOM_WCNSS_CTRL", "RPMSG_VIRTIO", "MAC80211" ], "series_id": "f1fbd891-3701-488e-882d-6c92e98c0170" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "wcn36xx_smd_rsp_process" ], "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+CgkJCTx0ZD4yMDI2LzA3LzI2IDE4OjUzPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+M208L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1dDTjM2WFgmIzM0OywKICAgICYjMzQ7UUNPTV9XQ05TU19DVFJMJiMzNDssCiAgICAmIzM0O1JQTVNHX1ZJUlRJTyYjMzQ7LAogICAgJiMzNDtNQUM4MDIxMSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3djbjM2eHhfc21kX3JzcF9wcm9jZXNzJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGFuIG91dC1vZi1ib3VuZHMgcmVhZCBpbiBgd2NuMzZ4eF9zbWRfcnNwX3Byb2Nlc3NgIGJ5IGFkZGluZyBhIGxlbmd0aCBjaGVjayBmb3IgdGhlIEhBTCBtZXNzYWdlIGhlYWRlci4gVGhpcyBmdW5jdGlvbiBwcm9jZXNzZXMgaW5jb21pbmcgbWVzc2FnZXMgZnJvbSB0aGUgU01EIGNoYW5uZWwgKHJwbXNnKS4gSXQgaXMgcmVhY2hhYmxlIHZpYSB0aGUgdmlydGlvLXJwbXNnIGJ1cyBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMsIG1ha2luZyBpdCBzdWl0YWJsZSBmb3IgZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNiAxODo1MzwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDkzNjcwOTQwNjhlYWNmMWY2YTE5MzQ3ZjU3NTVlMzNmZmUwNWM2MTNcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgU3VuIEp1bCAyNiAxODo1MzozOCAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9zbWQuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L3NtZC5jXG5pbmRleCBjMGI0NzczNDU4MzJiOC4uMzJkZWM0NWRiYjUwZjUgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9zbWQuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvc21kLmNcbkBAIC0zMjU0LDYgJiM0MzszMjU0LDExIEBAIGludCB3Y24zNnh4X3NtZF9yc3BfcHJvY2VzcyhzdHJ1Y3QgcnBtc2dfZGV2aWNlICpycGRldixcbiBcdHN0cnVjdCB3Y24zNnh4X2hhbF9pbmRfbXNnICptc2dfaW5kO1xuIFx0d2NuMzZ4eF9kYmdfZHVtcChXQ04zNlhYX0RCR19TTURfRFVNUCwgXCYjMzQ7U01EIFx1MDAzY1x1MDAzY1x1MDAzYyBcJiMzNDssIGJ1ZiwgbGVuKTtcbiBcbiYjNDM7XHRpZiAobGVuIFx1MDAzYyBzaXplb2YoKm1zZ19oZWFkZXIpKSB7XG4mIzQzO1x0XHR3Y24zNnh4X3dhcm4oXCYjMzQ7Q29ycnVwdGVkIEhBTCBtZXNzYWdlOiBsZW5ndGggJWRcXG5cJiMzNDssIGxlbik7XG4mIzQzO1x0XHRyZXR1cm4gMDtcbiYjNDM7XHR9XG4mIzQzO1xuIFx0c3dpdGNoIChtc2dfaGVhZGVyLVx1MDAzZW1zZ190eXBlKSB7XG4gXHRjYXNlIFdDTjM2WFhfSEFMX1NUQVJUX1JTUDpcbiBcdGNhc2UgV0NOMzZYWF9IQUxfQ09ORklHX1NUQV9SU1A6XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMTg6NTM8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+M208L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1dDTjM2WFgmIzM0OywKICAgICYjMzQ7UUNPTV9XQ05TU19DVFJMJiMzNDssCiAgICAmIzM0O1JQTVNHX1ZJUlRJTyYjMzQ7LAogICAgJiMzNDtNQUM4MDIxMSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3djbjM2eHhfc21kX3JzcF9wcm9jZXNzJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGFuIG91dC1vZi1ib3VuZHMgcmVhZCBpbiBgd2NuMzZ4eF9zbWRfcnNwX3Byb2Nlc3NgIGJ5IGFkZGluZyBhIGxlbmd0aCBjaGVjayBmb3IgdGhlIEhBTCBtZXNzYWdlIGhlYWRlci4gVGhpcyBmdW5jdGlvbiBwcm9jZXNzZXMgaW5jb21pbmcgbWVzc2FnZXMgZnJvbSB0aGUgU01EIGNoYW5uZWwgKHJwbXNnKS4gSXQgaXMgcmVhY2hhYmxlIHZpYSB0aGUgdmlydGlvLXJwbXNnIGJ1cyBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMsIG1ha2luZyBpdCBzdWl0YWJsZSBmb3IgZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDkzNjcwOTQwNjhlYWNmMWY2YTE5MzQ3ZjU3NTVlMzNmZmUwNWM2MTMKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgU3VuIEp1bCAyNiAxODo1MzozOCAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L3NtZC5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvc21kLmMKaW5kZXggYzBiNDc3MzQ1ODMyYjguLjMyZGVjNDVkYmI1MGY1IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9zbWQuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9zbWQuYwpAQCAtMzI1NCw2ICYjNDM7MzI1NCwxMSBAQCBpbnQgd2NuMzZ4eF9zbWRfcnNwX3Byb2Nlc3Moc3RydWN0IHJwbXNnX2RldmljZSAqcnBkZXYsCiAJc3RydWN0IHdjbjM2eHhfaGFsX2luZF9tc2cgKm1zZ19pbmQ7CiAJd2NuMzZ4eF9kYmdfZHVtcChXQ04zNlhYX0RCR19TTURfRFVNUCwgJiMzNDtTTUQgJmx0OyZsdDsmbHQ7ICYjMzQ7LCBidWYsIGxlbik7CiAKJiM0MzsJaWYgKGxlbiAmbHQ7IHNpemVvZigqbXNnX2hlYWRlcikpIHsKJiM0MzsJCXdjbjM2eHhfd2FybigmIzM0O0NvcnJ1cHRlZCBIQUwgbWVzc2FnZTogbGVuZ3RoICVkXG4mIzM0OywgbGVuKTsKJiM0MzsJCXJldHVybiAwOwomIzQzOwl9CiYjNDM7CiAJc3dpdGNoIChtc2dfaGVhZGVyLSZndDttc2dfdHlwZSkgewogCWNhc2UgV0NOMzZYWF9IQUxfU1RBUlRfUlNQOgogCWNhc2UgV0NOMzZYWF9IQUxfQ09ORklHX1NUQV9SU1A6CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDE4OjUzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIxNjMKCQkJCQkJCW91dHB1dDogNDYKCQkJCQkJCXRob3VnaHRzOiAyMDIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgRHJpdmVyIFBhdGNoIGZvciBWdWxuZXJhYmlsaXR5KioKCk9rYXksIHNvIEkmIzM5O3ZlIGdvdCB0aGlzIHBhdGNoIGhlcmUgdGhhdCBpbnRyb2R1Y2VzIGEgbGVuZ3RoIGNoZWNrIGluIGB3Y24zNnh4X3NtZF9yc3BfcHJvY2Vzc2Agd2l0aGluIHRoZSBgd2NuMzZ4eGAgZHJpdmVyLiBJdCBsb29rcyBsaWtlIGl0JiMzOTtzIGd1YXJkaW5nIGFnYWluc3Qgb3V0LW9mLWJvdW5kcyByZWFkcywgd2hpY2ggaXMgYWx3YXlzIGEgZ29vZCB0aGluZy4gU3BlY2lmaWNhbGx5LCBpdCYjMzk7cyBjaGVja2luZyBpZiB0aGUgcmVjZWl2ZWQgbWVzc2FnZSBsZW5ndGggaXMgc21hbGxlciB0aGFuIHRoZSBzaXplIG9mIHRoZSBtZXNzYWdlIGhlYWRlciBhbmQgcmV0dXJuaW5nIDAgaWYgdGhhdCYjMzk7cyB0aGUgY2FzZS4gSXQgYXBwZWFycyB0byBiZSBhIHByZXR0eSBzdHJhaWdodGZvcndhcmQgZnVuY3Rpb25hbCBjaGFuZ2UgdG8gcHJldmVudCBhIHBvdGVudGlhbCB2dWxuZXJhYmlsaXR5LgoKSG1tLCBsZXQgbWUgc2VlLi4uIGB3Y24zNnh4YC4uLiB0aGF0IHJpbmdzIGEgYmVsbC4gQWgsIHllcywgaXQmIzM5O3MgdGhlIGRyaXZlciBmb3IgdGhlIFF1YWxjb21tIEF0aGVyb3MgV0NOMzY2MC8zNjgwIE1BQy9CQi9SYWRpbyBjaGlwcy4gSW50ZXJlc3RpbmcuIE5vdywgdGhlIGtleSBxdWVzdGlvbiBpcyB3aGV0aGVyIHRoaXMgaXMgc29tZXRoaW5nIEkgY2FuIGFjdHVhbGx5ICpyZWFjaCogd2hlbiBmdXp6aW5nLiBDYW4gSSB0cmlnZ2VyIGl0IGluIGEgUUVNVSBlbnZpcm9ubWVudD8gQ29uc2lkZXJpbmcgdGhpcyB1c2VzIHJwbXNnIChSZW1vdGUgUHJvY2Vzc29yIE1lc3NhZ2luZyksIHRoZSBsaWtlbGlob29kIGlzIGhpZ2guIE15IHRob3VnaHQgbm93IGlzLCBjYW4gSSBmdXp6IHRoaXMgcGFydGljdWxhciBmdW5jdGlvbj8KCkxldCBtZSBmb2N1cyBvbiB0aGF0IGZ1bmN0aW9uLCBgd2NuMzZ4eF9zbWRfcnNwX3Byb2Nlc3NgLiBMZXQgbWUgc2VlIHdoYXQgSSBjYW4gZmluZCByZWdhcmRpbmcgdGhpcyBkcml2ZXIuIEkmIzM5O2xsIGRvIGEgcXVpY2sgZ3JlcCBmb3IgYm90aCBgd2NuMzZ4eF9zbWRfcnNwX3Byb2Nlc3NgIGFuZCBqdXN0IHRoZSBkcml2ZXIgbmFtZSwgYHdjbjM2eHhgIHdpdGhpbiB0aGUgS2NvbmZpZyBmaWxlcy4gVGhpcyBzaG91bGQgZ2l2ZSBtZSBhIGJldHRlciB1bmRlcnN0YW5kaW5nIG9mIGhvdyB0aGUgZHJpdmVyIGlzIGNvbmZpZ3VyZWQgYW5kIGlmIGl0JiMzOTtzIGV2ZW4gZW5hYmxlZCBpbiB0aGUgc3lzdGVtcyBJJiMzOTttIGxpa2VseSB0byB0ZXN0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDE4OjUzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3djbjM2eHhfc21kX3JzcF9wcm9jZXNzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYz0xNTU4PXN0YXRpYyBpbnQgd2NuMzZ4eF9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYy0xNjA2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jOjE2MDc6XHR3Y24tXHUwMDNlc21kX2NoYW5uZWwgPSBxY29tX3djbnNzX29wZW5fY2hhbm5lbCh3Y25zcywgXCYjMzQ7V0xBTl9DVFJMXCYjMzQ7LCB3Y24zNnh4X3NtZF9yc3BfcHJvY2VzcywgaHcpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTE2MDgtXHRpZiAoSVNfRVJSKHdjbi1cdTAwM2VzbWRfY2hhbm5lbCkpIHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9zbWQuYz0zMjAyPWludCB3Y24zNnh4X3NtZF9hZGRfYmVhY29uX2ZpbHRlcihzdHJ1Y3Qgd2NuMzZ4eCAqd2NuLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L3NtZC5jLTMyNDctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9zbWQuYzozMjQ4OmludCB3Y24zNnh4X3NtZF9yc3BfcHJvY2VzcyhzdHJ1Y3QgcnBtc2dfZGV2aWNlICpycGRldixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L3NtZC5jLTMyNDktXHRcdFx0ICAgIHZvaWQgKmJ1ZiwgaW50IGxlbiwgdm9pZCAqcHJpdiwgdTMyIGFkZHIpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvc21kLmg9MTQwPWludCB3Y24zNnh4X3NtZF91cGRhdGVfY2ZnKHN0cnVjdCB3Y24zNnh4ICp3Y24sIHUzMiBjZmdfaWQsIHUzMiB2YWx1ZSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9zbWQuaC0xNDEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9zbWQuaDoxNDI6aW50IHdjbjM2eHhfc21kX3JzcF9wcm9jZXNzKHN0cnVjdCBycG1zZ19kZXZpY2UgKnJwZGV2LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvc21kLmgtMTQzLVx0XHRcdCAgICB2b2lkICpidWYsIGludCBsZW4sIHZvaWQgKnByaXYsIHUzMiBhZGRyKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNiAxODo1MzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgV0NOMzZYWCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogSVNDXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9LY29uZmlnOjI6Y29uZmlnIFdDTjM2WFhcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L0tjb25maWctMy1cdHRyaXN0YXRlIFwmIzM0O1F1YWxjb21tIEF0aGVyb3MgV0NOMzY2MC8zNjgwIHN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9LY29uZmlnLTEyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvS2NvbmZpZzoxMzpjb25maWcgV0NOMzZYWF9ERUJVR0ZTXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9LY29uZmlnLTE0LVx0Ym9vbCBcJiMzNDtXQ04zNlhYIGRlYnVnZnMgc3VwcG9ydFwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDE4OjUzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM0NzMKCQkJCQkJCW91dHB1dDogNDIKCQkJCQkJCXRob3VnaHRzOiA2NgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBzdW1tYXJ5LCBhcyBJIGRlbHZlIGludG8gdGhlc2UgZGVwZW5kZW5jaWVzOgoKKipEaXZpbmcgRGVlcCBpbnRvIHRoZSBXQ04zNlhYIERyaXZlcioqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBgV0NOMzZYWGAgZHJpdmVyLCBhbmQgaW1tZWRpYXRlbHkgbXkgbWluZCBqdW1wcyB0byBpdHMgZGVwZW5kZW5jaWVzLiBTZWVtcyBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkIGF0IGZpcnN0IGdsYW5jZSDigJMgaXQgKnJlbGllcyogb24gYE1BQzgwMjExYCwgd2hpY2ggaXMgc3RhbmRhcmQgZm9yIGEgd2lyZWxlc3MgZHJpdmVyLCBhbmQgdGhlbiBgSEFTX0lPTUVNYCwgd2hpY2ggaXMgdG8gYmUgZXhwZWN0ZWQgZm9yIGFueSBkcml2ZXIgdGhhdCBuZWVkcyB0byBpbnRlcmFjdCB3aXRoIGhhcmR3YXJlIG1lbW9yeS4gVGhlIHJlYWwgcXVlc3Rpb24gbWFyayBpcyB0aGlzIGBRQ09NX1dDTlNTX0NUUkwgfHwgUUNPTV9XQ05TU19DVFJMPW5gIGJpdC4gVGhhdCBpbmRpY2F0ZXMgYSBjb25kaXRpb25hbCBkZXBlbmRlbmN5LCBJIG5lZWQgdG8ga25vdyBhIGxpdHRsZSBtb3JlLgoKSSBuZWVkIHRvIHF1aWNrbHkgdmVyaWZ5IG15IHVuZGVyc3RhbmRpbmcuIEl0IGlzIHBydWRlbnQgdG8gY2hlY2sgdGhlIGZ1bGwgZGVwZW5kZW5jeSBjaGFpbiBmb3IgYFdDTjM2WFhgLiBJIHdpbGwgbmVlZCB0byBsb29rIGRlZXBlciBpbnRvIGBRQ09NX1dDTlNTX0NUUkxgIHRvIHRydWx5IHVuZGVyc3RhbmQgaG93IHRoZSBgV0NOMzZYWGAgZHJpdmVyIGZpdHMgaW50byB0aGUgYnJvYWRlciBRdWFsY29tbSB3aXJlbGVzcyBzdWJzeXN0ZW0uIExldCYjMzk7cyBkaWcgaW4uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMTg6NTM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAyMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgICAxOlx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogSVNDXG4gICAyOlx0Y29uZmlnIFdDTjM2WFhcbiAgIDM6XHRcdHRyaXN0YXRlIFwmIzM0O1F1YWxjb21tIEF0aGVyb3MgV0NOMzY2MC8zNjgwIHN1cHBvcnRcJiMzNDtcbiAgIDQ6XHRcdGRlcGVuZHMgb24gTUFDODAyMTEgXHUwMDI2XHUwMDI2IEhBU19ETUFcbiAgIDU6XHRcdGRlcGVuZHMgb24gUUNPTV9XQ05TU19DVFJMIHx8IFFDT01fV0NOU1NfQ1RSTD1uXG4gICA2Olx0XHRkZXBlbmRzIG9uIFJQTVNHIHx8IFJQTVNHPW5cbiAgIDc6XHRcdGhlbHBcbiAgIDg6XHRcdCAgVGhpcyBtb2R1bGUgYWRkcyBzdXBwb3J0IGZvciB3aXJlbGVzcyBhZGFwdGVycyBiYXNlZCBvblxuICAgOTpcdFx0ICBRdWFsY29tbSBBdGhlcm9zIFdDTjM2NjAgYW5kIFdDTjM2ODAgbW9iaWxlIGNoaXBzZXRzLlxuICAxMDpcdFxuICAxMTpcdFx0ICBJZiB5b3UgY2hvb3NlIHRvIGJ1aWxkIGEgbW9kdWxlLCBpdCYjMzk7bGwgYmUgY2FsbGVkIHdjbjM2eHguXG4gIDEyOlx0XG4gIDEzOlx0Y29uZmlnIFdDTjM2WFhfREVCVUdGU1xuICAxNDpcdFx0Ym9vbCBcJiMzNDtXQ04zNlhYIGRlYnVnZnMgc3VwcG9ydFwmIzM0O1xuICAxNTpcdFx0ZGVwZW5kcyBvbiBXQ04zNlhYXG4gIDE2Olx0XHRoZWxwXG4gIDE3Olx0XHQgIEVuYWJsZWQgZGVidWdmcyBzdXBwb3J0XG4gIDE4Olx0XG4gIDE5Olx0XHQgIElmIHVuc3VyZSwgc2F5IFkgdG8gbWFrZSBpdCBlYXNpZXIgdG8gZGVidWcgcHJvYmxlbXMuXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMTg6NTM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDA5OAoJCQkJCQkJb3V0cHV0OiA4MAoJCQkJCQkJdGhvdWdodHM6IDcwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBEcml2ZXIgUmVhY2hhYmlsaXR5IGluIFFFTVUqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGllY2Ugb2YgY29kZSwgYW5kIHRoZSBmaXJzdCB0aGluZyB0aGF0IGp1bXBzIG91dCBpcyB0aGUgZGVwZW5kZW5jeSBvbiBgTUFDODAyMTEgJmFtcDsmYW1wOyBIQVNfRE1BYC4gVGhhdCYjMzk7cyBhIHByZXR0eSBjbGVhciBpbmRpY2F0b3Igb2Ygd2hhdCB0aGlzIGRyaXZlciAqbWlnaHQqIGJlIHVzZWQgZm9yLiBCdXQgdGhlIGtleSBxdWVzdGlvbiBoZXJlLCBlc3BlY2lhbGx5IGdpdmVuIG15IGRlYnVnZ2luZyBzZXR1cCwgaXM6IGNhbiB0aGlzIGRyaXZlciBldmVuICpyZWFjaCogUUVNVT8gSSBuZWVkIHRvIHF1aWNrbHkgZXN0YWJsaXNoIGlmIGl0JiMzOTtzIHBhcnQgb2YgdGhlIGNvbmZpZ3VyYXRpb24gSSYjMzk7bSBydW5uaW5nLgoKVGhlIG5leHQgY2x1ZSBpcyBgcWNvbV93Y25zc19vcGVuX2NoYW5uZWxgLiBUaGF0IGZ1bmN0aW9uIGltbWVkaWF0ZWx5IHBvaW50cyBtZSB0byBgUUNPTV9XQ05TU19DVFJMYCwgd2hpY2ggaXMgYW5vdGhlciBpbXBvcnRhbnQgcGllY2Ugb2YgdGhlIHB1enpsZS4gTm93IEkmIzM5O20gdHJ5aW5nIHRvIHBpY3R1cmUgdGhlIG1vZHVsZSYjMzk7cyBzdHJ1Y3R1cmUgaW4gbXkgaGVhZC4gSSYjMzk7bSBhbG1vc3QgY2VydGFpbiBJIGhhdmUgdGhhdCBlbmFibGVkIGJ1dCBJIG5lZWQgdG8gcXVpY2tseSBkZXRlcm1pbmUgd2hldGhlciBpdCByZWdpc3RlcnMgYSBwbGF0Zm9ybSBkcml2ZXIgb3Igc29tZXRoaW5nIGVsc2UgdGhhdCBRRU1VIGFjdHVhbGx5IGxldmVyYWdlcy4gVGhpcyB3b3VsZCBvZmZlciBhIGNsZWFyIHBhdGggZm9yIGV4cGxvaXRhdGlvbi4gTGV0JiMzOTtzIHNlZS4uLiBsb29raW5nIGZvciBwbGF0Zm9ybSBkcml2ZXIgcmVnaXN0cmF0aW9uIG5leHQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMTg6NTM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bW9kdWxlX3BsYXRmb3JtX2RyaXZlciYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmM9MTY3Nj1zdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RyaXZlciB3Y24zNnh4X2RyaXZlciA9IHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmMtMTY4NC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYzoxNjg1Om1vZHVsZV9wbGF0Zm9ybV9kcml2ZXIod2NuMzZ4eF9kcml2ZXIpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTE2ODYtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDE4OjUzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3djbjM2eHhfcHJvYmUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jPTE0NzI9c3RhdGljIGludCB3Y24zNnh4X3BsYXRmb3JtX2dldF9yZXNvdXJjZXMoc3RydWN0IHdjbjM2eHggKndjbixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmMtMTU1Ny1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYzoxNTU4OnN0YXRpYyBpbnQgd2NuMzZ4eF9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTE1NTkte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYz0xNjc2PXN0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIHdjbjM2eHhfZHJpdmVyID0ge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jOjE2Nzc6XHQucHJvYmUgPSB3Y24zNnh4X3Byb2JlLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTE2NzgtXHQucmVtb3ZlID0gd2NuMzZ4eF9yZW1vdmUsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDE4OjUzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ4NjcKCQkJCQkJCW91dHB1dDogNDYKCQkJCQkJCXRob3VnaHRzOiA2NgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzOgoKKipEaXNzZWN0aW5nIHRoZSBQbGF0Zm9ybSBEcml2ZXIgSW50ZXJhY3Rpb24qKgoKT2theSwgc28gd2UmIzM5O3JlIGxvb2tpbmcgYXQgYSBwbGF0Zm9ybSBkcml2ZXIgaW50ZXJhY3Rpb24sIG1vc3QgbGlrZWx5IGludm9sdmluZyBzb21ldGhpbmcgdHJpZ2dlcmVkIGJ5IFN5emthbGxlciwgd2hpY2gsIGlmIEkgcmVjYWxsIGNvcnJlY3RseSwgY2FuIGluamVjdCBwbGF0Zm9ybSBkZXZpY2VzIHVzaW5nIGZ1bmN0aW9ucyBsaWtlIGBzeXpfZGV2X3BsYXRmb3JtX2FkZGAuIFRoYXQmIzM5O3MgdGhlIHR5cGljYWwgYXBwcm9hY2guIFdhaXQgYSBtaW51dGUsIHdoYXQmIzM5O3MgZ29pbmcgb24gd2l0aCBgd2NuMzZ4eF9zbWRfcnNwX3Byb2Nlc3NgPyBUaGF0IG5hbWUgaXMgbWFraW5nIG1lIHRoaW5r4oCmaXNuJiMzOTt0IHRoYXQgYW4gcnBtc2cgY2FsbGJhY2s/IFRoYXQgY2VydGFpbmx5IHNtZWxscyBsaWtlIGFuIGludGVyLXByb2Nlc3NvciBjb21tdW5pY2F0aW9uIHNjaGVtZS4gT2theSwgbGV0JiMzOTtzIGJhY2sgdXAgYSBiaXQgYW5kIGdvIHRvIHRoZSBzb3VyY2UsIHN0YXJ0aW5nIHdpdGggYHdjbjM2eHhfcHJvYmVgLiBUaGF0JiMzOTtzIHdoZXJlIGl0IGFsbCBiZWdpbnMuIEZyb20gdGhlcmUsIHdlIGNhbiBhbmFseXplIHRoZSBpbml0aWFsaXphdGlvbiBhbmQgcmVnaXN0cmF0aW9uLCB0byBzZWUgaG93IHRoYXQgY2FsbGJhY2sgaXMgYXNzb2NpYXRlZCBhbmQgdHJpZ2dlcmVkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNiAxODo1NDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDE1NTgsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNTAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7MTU1ODpcdHN0YXRpYyBpbnQgd2NuMzZ4eF9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuMTU1OTpcdHtcbjE1NjA6XHRcdHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3O1xuMTU2MTpcdFx0c3RydWN0IHdjbjM2eHggKndjbjtcbjE1NjI6XHRcdHZvaWQgKndjbnNzO1xuMTU2MzpcdFx0aW50IHJldDtcbjE1NjQ6XHRcdGNvbnN0IHU4ICphZGRyO1xuMTU2NTpcdFx0aW50IG5fY2hhbm5lbHM7XG4xNTY2Olx0XG4xNTY3Olx0XHR3Y24zNnh4X2RiZyhXQ04zNlhYX0RCR19NQUMsIFwmIzM0O3BsYXRmb3JtIHByb2JlXFxuXCYjMzQ7KTtcbjE1Njg6XHRcbjE1Njk6XHRcdHdjbnNzID0gZGV2X2dldF9kcnZkYXRhKHBkZXYtXHUwMDNlZGV2LnBhcmVudCk7XG4xNTcwOlx0XG4xNTcxOlx0XHRuX2NoYW5uZWxzID0gd2NuX2JhbmRfMmdoei5uX2NoYW5uZWxzICYjNDM7IHdjbl9iYW5kXzVnaHoubl9jaGFubmVscztcbjE1NzI6XHRcdGh3ID0gaWVlZTgwMjExX2FsbG9jX2h3KHN0cnVjdF9zaXplKHdjbiwgY2hhbl9zdXJ2ZXksIG5fY2hhbm5lbHMpLCBcdTAwMjZ3Y24zNnh4X29wcyk7XG4xNTczOlx0XHRpZiAoIWh3KSB7XG4xNTc0Olx0XHRcdHdjbjM2eHhfZXJyKFwmIzM0O2ZhaWxlZCB0byBhbGxvYyBod1xcblwmIzM0Oyk7XG4xNTc1Olx0XHRcdHJldCA9IC1FTk9NRU07XG4xNTc2Olx0XHRcdGdvdG8gb3V0X2VycjtcbjE1Nzc6XHRcdH1cbjE1Nzg6XHRcdHBsYXRmb3JtX3NldF9kcnZkYXRhKHBkZXYsIGh3KTtcbjE1Nzk6XHRcdHdjbiA9IGh3LVx1MDAzZXByaXY7XG4xNTgwOlx0XHR3Y24tXHUwMDNlaHcgPSBodztcbjE1ODE6XHRcdHdjbi1cdTAwM2VkZXYgPSBcdTAwMjZwZGV2LVx1MDAzZWRldjtcbjE1ODI6XHRcdHdjbi1cdTAwM2VmaXJzdF9ib290ID0gdHJ1ZTtcbjE1ODM6XHRcdG11dGV4X2luaXQoXHUwMDI2d2NuLVx1MDAzZWNvbmZfbXV0ZXgpO1xuMTU4NDpcdFx0bXV0ZXhfaW5pdChcdTAwMjZ3Y24tXHUwMDNlaGFsX211dGV4KTtcbjE1ODU6XHRcdG11dGV4X2luaXQoXHUwMDI2d2NuLVx1MDAzZXNjYW5fbG9jayk7XG4xNTg2Olx0XHRfX3NrYl9xdWV1ZV9oZWFkX2luaXQoXHUwMDI2d2NuLVx1MDAzZWFtc2R1KTtcbjE1ODc6XHRcbjE1ODg6XHRcdHdjbi1cdTAwM2VoYWxfYnVmID0gZGV2bV9rbWFsbG9jKHdjbi1cdTAwM2VkZXYsIFdDTjM2WFhfSEFMX0JVRl9TSVpFLCBHRlBfS0VSTkVMKTtcbjE1ODk6XHRcdGlmICghd2NuLVx1MDAzZWhhbF9idWYpIHtcbjE1OTA6XHRcdFx0cmV0ID0gLUVOT01FTTtcbjE1OTE6XHRcdFx0Z290byBvdXRfd3E7XG4xNTkyOlx0XHR9XG4xNTkzOlx0XG4xNTk0Olx0XHRyZXQgPSBkbWFfc2V0X21hc2tfYW5kX2NvaGVyZW50KHdjbi1cdTAwM2VkZXYsIERNQV9CSVRfTUFTSygzMikpO1xuMTU5NTpcdFx0aWYgKHJldCBcdTAwM2MgMCkge1xuMTU5NjpcdFx0XHR3Y24zNnh4X2VycihcJiMzNDtmYWlsZWQgdG8gc2V0IERNQSBtYXNrOiAlZFxcblwmIzM0OywgcmV0KTtcbjE1OTc6XHRcdFx0Z290byBvdXRfd3E7XG4xNTk4Olx0XHR9XG4xNTk5Olx0XG4xNjAwOlx0XHR3Y24tXHUwMDNlbnZfZmlsZSA9IFdMQU5fTlZfRklMRTtcbjE2MDE6XHRcdHJldCA9IG9mX3Byb3BlcnR5X3JlYWRfc3RyaW5nKHdjbi1cdTAwM2VkZXYtXHUwMDNlcGFyZW50LVx1MDAzZW9mX25vZGUsIFwmIzM0O2Zpcm13YXJlLW5hbWVcJiMzNDssIFx1MDAyNndjbi1cdTAwM2Vudl9maWxlKTtcbjE2MDI6XHRcdGlmIChyZXQgXHUwMDNjIDAgXHUwMDI2XHUwMDI2IHJldCAhPSAtRUlOVkFMKSB7XG4xNjAzOlx0XHRcdHdjbjM2eHhfZXJyKFwmIzM0O2ZhaWxlZCB0byByZWFkIFxcXCYjMzQ7ZmlybXdhcmUtbmFtZVxcXCYjMzQ7IHByb3BlcnR5OiAlZFxcblwmIzM0OywgcmV0KTtcbjE2MDQ6XHRcdFx0Z290byBvdXRfd3E7XG4xNjA1Olx0XHR9XG4xNjA2Olx0XG4xNjA3Olx0XHR3Y24tXHUwMDNlc21kX2NoYW5uZWwgPSBxY29tX3djbnNzX29wZW5fY2hhbm5lbCh3Y25zcywgXCYjMzQ7V0xBTl9DVFJMXCYjMzQ7LCB3Y24zNnh4X3NtZF9yc3BfcHJvY2VzcywgaHcpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNiAxODo1NDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2MDgxCgkJCQkJCQlvdXRwdXQ6IDI0CgkJCQkJCQl0aG91Z2h0czogMzYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uCgoqKkRpdmluZyBpbnRvIHRoZSBQcm9iZSBGdW5jdGlvbiBhbmQgV0NOU1MgQ2hhbm5lbCBPcGVuaW5nKioKCkFscmlnaHQsIHNvIHRoZSBgcHJvYmVgIGZ1bmN0aW9uIGlzIGNhbGxpbmcgYHFjb21fd2Nuc3Nfb3Blbl9jaGFubmVsYC4gVGhhdCYjMzk7cyB0aGUga2V5LiBNeSBmaXJzdCB0aG91Z2h0IGlzLCAmIzM0O09rYXksIHdoYXQmIzM5O3MgKnRoYXQqIGFib3V0PyYjMzQ7IEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgYHFjb21fd2Nuc3Nfb3Blbl9jaGFubmVsYCBpcyBkb2luZyB0byBwcm9wZXJseSB1bmRlcnN0YW5kIHRoZSBwcm9iZSBmdW5jdGlvbi4gTGV0JiMzOTtzIGRpZyBpbnRvIHRoYXQgZnVuY3Rpb24gZGVmaW5pdGlvbiBhbmQgc2VlIHdoYXQgaXQgZW50YWlscy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhpcyBjaGFubmVsIG9wZW5pbmcgcHJvY2VzcyBhbmQgaG93IGl0IHJlbGF0ZXMgdG8gdGhlIG92ZXJhbGwgaW5pdGlhbGl6YXRpb24gb2Ygd2hhdGV2ZXIgaGFyZHdhcmUgaXMgYmVpbmcgcHJvYmVkIGhlcmUuIEtub3dpbmcgdGhpcyB3aWxsIGdpdmUgbWUgYSBwcm9wZXIgY29udGV4dCBmb3IgdGhlIHJlc3Qgb2YgdGhlIGZ1bmN0aW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNiAxODo1NDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtxY29tX3djbnNzX29wZW5fY2hhbm5lbCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL2JsdWV0b290aC9idHFjb21zbWQuYz0xNDA9c3RhdGljIGludCBidHFjb21zbWRfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL2JsdWV0b290aC9idHFjb21zbWQuYy0xNTItXG5kcml2ZXJzL2JsdWV0b290aC9idHFjb21zbWQuYzoxNTM6XHRidHEtXHUwMDNlYWNsX2NoYW5uZWwgPSBxY29tX3djbnNzX29wZW5fY2hhbm5lbCh3Y25zcywgXCYjMzQ7QVBQU19SSVZBX0JUX0FDTFwmIzM0OyxcbmRyaXZlcnMvYmx1ZXRvb3RoL2J0cWNvbXNtZC5jLTE1NC1cdFx0XHRcdFx0XHQgICBidHFjb21zbWRfYWNsX2NhbGxiYWNrLCBidHEpO1xuLS1cbmRyaXZlcnMvYmx1ZXRvb3RoL2J0cWNvbXNtZC5jLTE1Ny1cbmRyaXZlcnMvYmx1ZXRvb3RoL2J0cWNvbXNtZC5jOjE1ODpcdGJ0cS1cdTAwM2VjbWRfY2hhbm5lbCA9IHFjb21fd2Nuc3Nfb3Blbl9jaGFubmVsKHdjbnNzLCBcJiMzNDtBUFBTX1JJVkFfQlRfQ01EXCYjMzQ7LFxuZHJpdmVycy9ibHVldG9vdGgvYnRxY29tc21kLmMtMTU5LVx0XHRcdFx0XHRcdCAgIGJ0cWNvbXNtZF9jbWRfY2FsbGJhY2ssIGJ0cSk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jPTE1NTg9c3RhdGljIGludCB3Y24zNnh4X3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTE2MDYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmM6MTYwNzpcdHdjbi1cdTAwM2VzbWRfY2hhbm5lbCA9IHFjb21fd2Nuc3Nfb3Blbl9jaGFubmVsKHdjbnNzLCBcJiMzNDtXTEFOX0NUUkxcJiMzNDssIHdjbjM2eHhfc21kX3JzcF9wcm9jZXNzLCBodyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmMtMTYwOC1cdGlmIChJU19FUlIod2NuLVx1MDAzZXNtZF9jaGFubmVsKSkge1xuLS1cbmRyaXZlcnMvc29jL3Fjb20vd2Nuc3NfY3RybC5jPTIwMD1zdGF0aWMgaW50IHdjbnNzX2Rvd25sb2FkX252KHN0cnVjdCB3Y25zc19jdHJsICp3Y25zcywgYm9vbCAqZXhwZWN0X2NiYylcbi0tXG5kcml2ZXJzL3NvYy9xY29tL3djbnNzX2N0cmwuYy0yNzUtLyoqXG5kcml2ZXJzL3NvYy9xY29tL3djbnNzX2N0cmwuYzoyNzY6ICogcWNvbV93Y25zc19vcGVuX2NoYW5uZWwoKSAtIG9wZW4gYWRkaXRpb25hbCBTTUQgY2hhbm5lbCB0byBXQ05TU1xuZHJpdmVycy9zb2MvcWNvbS93Y25zc19jdHJsLmMtMjc3LSAqIEB3Y25zczpcdHdjbnNzIGhhbmRsZSwgcmV0cmlldmVkIGZyb20gZHJ2ZGF0YVxuLS1cbmRyaXZlcnMvc29jL3Fjb20vd2Nuc3NfY3RybC5jLTI4MS0gKi9cbmRyaXZlcnMvc29jL3Fjb20vd2Nuc3NfY3RybC5jOjI4MjpzdHJ1Y3QgcnBtc2dfZW5kcG9pbnQgKnFjb21fd2Nuc3Nfb3Blbl9jaGFubmVsKHZvaWQgKndjbnNzLCBjb25zdCBjaGFyICpuYW1lLCBycG1zZ19yeF9jYl90IGNiLCB2b2lkICpwcml2KVxuZHJpdmVycy9zb2MvcWNvbS93Y25zc19jdHJsLmMtMjgzLXtcbi0tXG5kcml2ZXJzL3NvYy9xY29tL3djbnNzX2N0cmwuYy0yOTItfVxuZHJpdmVycy9zb2MvcWNvbS93Y25zc19jdHJsLmM6MjkzOkVYUE9SVF9TWU1CT0xfR1BMKHFjb21fd2Nuc3Nfb3Blbl9jaGFubmVsKTtcbmRyaXZlcnMvc29jL3Fjb20vd2Nuc3NfY3RybC5jLTI5NC1cbi0tXG5pbmNsdWRlL2xpbnV4L3NvYy9xY29tL3djbnNzX2N0cmwuaC04LVxuaW5jbHVkZS9saW51eC9zb2MvcWNvbS93Y25zc19jdHJsLmg6OTpzdHJ1Y3QgcnBtc2dfZW5kcG9pbnQgKnFjb21fd2Nuc3Nfb3Blbl9jaGFubmVsKHZvaWQgKndjbnNzLCBjb25zdCBjaGFyICpuYW1lLFxuaW5jbHVkZS9saW51eC9zb2MvcWNvbS93Y25zc19jdHJsLmgtMTAtXHRcdFx0XHRcdCAgICAgICBycG1zZ19yeF9jYl90IGNiLCB2b2lkICpwcml2KTtcbi0tXG5pbmNsdWRlL2xpbnV4L3NvYy9xY29tL3djbnNzX2N0cmwuaC0xMy1cbmluY2x1ZGUvbGludXgvc29jL3Fjb20vd2Nuc3NfY3RybC5oOjE0OnN0YXRpYyBzdHJ1Y3QgcnBtc2dfZW5kcG9pbnQgKnFjb21fd2Nuc3Nfb3Blbl9jaGFubmVsKHZvaWQgKndjbnNzLFxuaW5jbHVkZS9saW51eC9zb2MvcWNvbS93Y25zc19jdHJsLmgtMTUtXHRcdFx0XHRcdFx0ICAgICAgY29uc3QgY2hhciAqbmFtZSxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMTg6NTQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzI1NgoJCQkJCQkJb3V0cHV0OiA0MgoJCQkJCQkJdGhvdWdodHM6IDIyNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipSUE1TRyBDaGFubmVsIEZ1enppbmcgaW4gUUVNVTogQSBQYXRoIEZvcndhcmQ/KioKCk9rYXksIHNvIEkmIzM5O20gdGhpbmtpbmcgYWJvdXQgaG93IHRvIHBvdGVudGlhbGx5IGZ1enogYW4gcnBtc2cgY2hhbm5lbC4gSXQgc3RhcnRzIHdpdGggZXN0YWJsaXNoaW5nIHRoaXMgY29tbXVuaWNhdGlvbiBjaGFubmVsLCByaWdodD8gUlBNU0cgaXMgdGhpcyBmcmFtZXdvcmsgZm9yIHJlbW90ZSBwcm9jZXNzb3IgbWVzc2FnaW5nLCBhbmQgbXkgaW1tZWRpYXRlIHF1ZXN0aW9uIGlzOiBjYW4gd2UgYWN0dWFsbHkgZnV6eiB0aGVzZSBjaGFubmVscyB3aXRoaW4gYSBRRU1VIGVudmlyb25tZW50PyBJIGtub3cgU3l6a2FsbGVyIGhhcyBzb21lIGV4aXN0aW5nIHN1cHBvcnQsIG9yIGF0IGxlYXN0IHRoZSBwb3RlbnRpYWwgdG8gaW5qZWN0IG1lc3NhZ2VzLCBpZiB0aGVyZSYjMzk7cyBhIHByYWN0aWNhbCB3YXkgdG8gZ2V0IHRoaW5ncyBnb2luZy4KClNwZWNpZmljYWxseSwgSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgYHdjbjM2eHhgIHRoaW5nOyBpdCBhcHBlYXJzIHRvIGJlIGEgcGxhdGZvcm0gZGV2aWNlLiBJZiBJIGNhbiBzb21laG93IHJlYWNoIHRoZSBgd2NuMzZ4eF9zbWRfcnNwX3Byb2Nlc3NgIGZ1bmN0aW9uLCB0aGF0JiMzOTtzIHdoYXQgSSB3YW50LiBUaGUgaWRlYSBpcyB0aGF0IGlmIFN5emthbGxlciBjYW4gaW5zdGFudGlhdGUgYSBgd2NuMzZ4eGAgcGxhdGZvcm0gZGV2aWNlLCB0aGF0IHdvdWxkIHRyaWdnZXIgYSBjYWxsIHRvIGB3Y24zNnh4X3Byb2JlYC4gQnV0IGB3Y24zNnh4X3Byb2JlYCBzZWVtcyB0byBjYWxsIGBxY29tX3djbnNzX29wZW5fY2hhbm5lbGAsIHRha2luZyBhIGB3Y25zc2AgcGFyYW1ldGVyLgoKTm93LCBoZXJlJiMzOTtzIHdoZXJlIGl0IGdldHMgaW50ZXJlc3Rpbmc6IHRoZSBgd2Nuc3NgIHZhbHVlIGFwcGVhcnMgdG8gYmUgZmV0Y2hlZCB1c2luZyBgZGV2X2dldF9kcnZkYXRhKHBkZXYtJmd0O2Rldi5wYXJlbnQpYC4gVGhlIHByb2JsZW0gaXMgdGhhdCBpZiBgcGRldi0mZ3Q7ZGV2LnBhcmVudGAgaXMgTlVMTCBvciBkb2VzbiYjMzk7dCBoYXZlIGFueSBkcml2ZXIgZGF0YSBhc3NvY2lhdGVkIHdpdGggaXQsIHRoZW4gYHdjbnNzYCBpcyBnb2luZyB0byBiZSBOVUxMLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGF0IGBxY29tX3djbnNzX29wZW5fY2hhbm5lbGAgZnVuY3Rpb24sIGxldCYjMzk7cyBzZWUgaG93IHRoYXQgYmVoYXZlcyBpZiBgd2Nuc3NgIGlzIG51bGwuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDE4OjU0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9zb2MvcWNvbS93Y25zc19jdHJsLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAyNzUsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDI3NTpcdC8qKlxuIDI3NjpcdCAqIHFjb21fd2Nuc3Nfb3Blbl9jaGFubmVsKCkgLSBvcGVuIGFkZGl0aW9uYWwgU01EIGNoYW5uZWwgdG8gV0NOU1NcbiAyNzc6XHQgKiBAd2Nuc3M6XHR3Y25zcyBoYW5kbGUsIHJldHJpZXZlZCBmcm9tIGRydmRhdGFcbiAyNzg6XHQgKiBAbmFtZTpcdFNNRCBjaGFubmVsIG5hbWVcbiAyNzk6XHQgKiBAY2I6XHRcdGNhbGxiYWNrIHRvIGhhbmRsZSBpbmNvbWluZyBkYXRhIG9uIHRoZSBjaGFubmVsXG4gMjgwOlx0ICogQHByaXY6XHRwcml2YXRlIGRhdGEgZm9yIHVzZSBpbiB0aGUgY2FsbC1iYWNrXG4gMjgxOlx0ICovXG4gMjgyOlx0c3RydWN0IHJwbXNnX2VuZHBvaW50ICpxY29tX3djbnNzX29wZW5fY2hhbm5lbCh2b2lkICp3Y25zcywgY29uc3QgY2hhciAqbmFtZSwgcnBtc2dfcnhfY2JfdCBjYiwgdm9pZCAqcHJpdilcbiAyODM6XHR7XG4gMjg0Olx0XHRzdHJ1Y3QgcnBtc2dfY2hhbm5lbF9pbmZvIGNoaW5mbztcbiAyODU6XHRcdHN0cnVjdCB3Y25zc19jdHJsICpfd2Nuc3MgPSB3Y25zcztcbiAyODY6XHRcbiAyODc6XHRcdHN0cnNjcHkoY2hpbmZvLm5hbWUsIG5hbWUsIHNpemVvZihjaGluZm8ubmFtZSkpO1xuIDI4ODpcdFx0Y2hpbmZvLnNyYyA9IFJQTVNHX0FERFJfQU5ZO1xuIDI4OTpcdFx0Y2hpbmZvLmRzdCA9IFJQTVNHX0FERFJfQU5ZO1xuIDI5MDpcdFxuIDI5MTpcdFx0cmV0dXJuIHJwbXNnX2NyZWF0ZV9lcHQoX3djbnNzLVx1MDAzZWNoYW5uZWwtXHUwMDNlcnBkZXYsIGNiLCBwcml2LCBjaGluZm8pO1xuIDI5MjpcdH1cbiAyOTM6XHRFWFBPUlRfU1lNQk9MX0dQTChxY29tX3djbnNzX29wZW5fY2hhbm5lbCk7XG4gMjk0Olx0XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDE4OjU0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDgyNDkKCQkJCQkJCW91dHB1dDogNzcKCQkJCQkJCXRob3VnaHRzOiA3NgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBQb3RlbnRpYWwgQ3Jhc2ggaW4gdGhlIFdDTjM2eHggRHJpdmVyKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIGNvZGUgYW5kIGltbWVkaWF0ZWx5IHNlZSBhIHBvdGVudGlhbCBpc3N1ZS4gSWYgdGhlIGBfd2Nuc3NgIHBvaW50ZXIgaXMgTlVMTCwgdHJ5aW5nIHRvIGFjY2VzcyBgX3djbnNzLSZndDtjaGFubmVsYCBpcyBkZWZpbml0ZWx5IGdvaW5nIHRvIGNyYXNoIHRoZSBzeXN0ZW0uIFRoYXQmIzM5O3MgYSBjbGFzc2ljIG51bGwgcG9pbnRlciBkZXJlZmVyZW5jZSwgYW5kIHdlIG5lZWQgdG8gYmUgcmVhbGx5IGNhcmVmdWwgYWJvdXQgdGhhdC4gVGhpcyBzdWdnZXN0cyBhIGNyaXRpY2FsIGRlcGVuZGVuY3k6IHRoZSBgd2NuMzZ4eGAgZHJpdmVyICpuZWVkcyogYSBwYXJlbnQgZGV2aWNlLCBzcGVjaWZpY2FsbHkgYSBgd2Nuc3NfY3RybGAgZGV2aWNlLCB0byBmdW5jdGlvbiBwcm9wZXJseS4KClRoZSByZWFsIHF1ZXN0aW9uIG5vdyBpcywgY2FuIHN5emthbGxlciwgb3VyIGZ1enplciwgc2V0IHVwIHRoYXQgcHJlcmVxdWlzaXRlPyBJZiBzeXprYWxsZXIgY2FuJiMzOTt0IGNyZWF0ZSB0aGUgbmVjZXNzYXJ5IGB3Y25zc19jdHJsYCBkZXZpY2UsIHRoZW4gd2UgYXJlIHZlcnkgdW5saWtlbHkgdG8gdHJpZ2dlciB0aGUgdnVsbmVyYWJsZSBjb2RlLCBvciBhdCBsZWFzdCB0aGUgY3Jhc2guIE15IG5leHQgc3RlcCB3aWxsIGJlIHRvIGRpdmUgaW50byBgd2Nuc3NfY3RybC5jYC4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgdGhlIGRldmljZSBjcmVhdGlvbiBwcm9jZXNzIG9mIGEgYHdjbnNzX2N0cmxgIGRldmljZSBhbmQgaG93IHN5emthbGxlciBpcyBpbnRlcmFjdGluZyB3aXRoIGl0LCBvciBmYWlsaW5nIHRvLiBUaGF0JiMzOTtzIHRoZSBrZXkgdG8gdW5kZXJzdGFuZGluZyBpZiB0aGlzIGlzIGEgcmVhbCB2dWxuZXJhYmlsaXR5IHRoYXQgY2FuIGJlIGV4cGxvaXRlZCwgb3IgaWYgb3VyIGZ1enplciBpcyBqdXN0IG5vdCBzZXQgdXAgdG8gcmVhY2ggaXQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDE4OjU0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bW9kdWxlX3BsYXRmb3JtX2RyaXZlciYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvc29jL3Fjb20vd2Nuc3NfY3RybC5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMTg6NTQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cnBtc2dfZHJpdmVyJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9zb2MvcWNvbS93Y25zc19jdHJsLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9zb2MvcWNvbS93Y25zc19jdHJsLmM9MzUzPU1PRFVMRV9ERVZJQ0VfVEFCTEUob2YsIHdjbnNzX2N0cmxfb2ZfbWF0Y2gpO1xuZHJpdmVycy9zb2MvcWNvbS93Y25zc19jdHJsLmMtMzU0LVxuZHJpdmVycy9zb2MvcWNvbS93Y25zc19jdHJsLmM6MzU1OnN0YXRpYyBzdHJ1Y3QgcnBtc2dfZHJpdmVyIHdjbnNzX2N0cmxfZHJpdmVyID0ge1xuZHJpdmVycy9zb2MvcWNvbS93Y25zc19jdHJsLmMtMzU2LVx0LnByb2JlID0gd2Nuc3NfY3RybF9wcm9iZSxcbi0tXG5kcml2ZXJzL3NvYy9xY29tL3djbnNzX2N0cmwuYy0zNjQtXG5kcml2ZXJzL3NvYy9xY29tL3djbnNzX2N0cmwuYzozNjU6bW9kdWxlX3JwbXNnX2RyaXZlcih3Y25zc19jdHJsX2RyaXZlcik7XG5kcml2ZXJzL3NvYy9xY29tL3djbnNzX2N0cmwuYy0zNjYtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDE4OjU0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDg4OTAKCQkJCQkJCW91dHB1dDogNDcKCQkJCQkJCXRob3VnaHRzOiA2MDYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqUmVhY2hpbmcgdGhlIGB3Y25zc19jdHJsYCBEcml2ZXIgd2l0aCBTeXprYWxsZXIqKgoKT2theSwgc28gYHdjbnNzX2N0cmxgIGlzIGFuIGBycG1zZ19kcml2ZXJgLiBUaGF0IG1lYW5zIGl0IG5lZWRzIGFuIHJwbXNnIGRldmljZSB0byBiZSBwcm9iZWQuIFRoZSBxdWVzdGlvbiBpcywgY2FuIFN5emthbGxlciBjcmVhdGUgb25lPyBJIHdhcyB0aGlua2luZyBhYm91dCBgc3l6X3JwbXNnX2NyZWF0ZV9lcHRgIG9yIHNvbWV0aGluZyBzaW1pbGFyLCBidXQgdGhhdCBkb2VzbiYjMzk7dCBleGlzdCwgYW5kIEkgc3RhcnRlZCBjb25zaWRlcmluZyBgc3l6X21hYzgwMjExX2h3c2ltYCBvciBldmVuIGBzeXpfZGV2X3BsYXRmb3JtX2FkZGAuCgpIYW5nIG9uLCB0aGlzIGJ1ZyB3YXMgYWN0dWFsbHkgZm91bmQgYnkgc3l6Ym90LCBhbmQgdGhlIGF1dGhvciBvZiB0aGUgcGF0Y2ggaXMgbGlzdGVkIGFzIGBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7YC4gVGhhdCYjMzk7cyBhIGh1Z2UgY2x1ZSEgSXQgbWVhbnMgdGhpcyBjb2RlIGlzICpyZWFjaGFibGUqIHdpdGhpbiBTeXprYWxsZXImIzM5O3MgUUVNVSBlbnZpcm9ubWVudC4gSXQgd2FzIGFscmVhZHkgZm91bmQuIEkgd2FzIHRoaW5raW5nIHRoYXQgSSYjMzk7ZCBuZWVkIHRvIGV4cGxpY2l0bHkgY3JhZnQgc29tZXRoaW5nIHRvIGNyZWF0ZSB0aGUgbmVjZXNzYXJ5IHJwbXNnIGRldmljZSwgYnV0IHN5emJvdCBoYXMgYWxyZWFkeSBkb25lIHRoYXQgd29yay4KClRoZSBjb21taXQgbWVzc2FnZSBzYXlzICYjMzQ7YXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcsJiMzNDsgc28gaXQgaGFzIHRvIGJlIHJlYWNoYWJsZS4gTm93LCBob3cgKmRpZCogU3l6a2FsbGVyIGdldCB0aGVyZT8gSSB3YXMgY29uc2lkZXJpbmcgYG1hYzgwMjExX2h3c2ltYCBhcyBhIGdlbmVyYWwgcGF0aCwgb3IgbWF5YmUgc29tZSBkaXJlY3QgcGxhdGZvcm0gZGV2aWNlIGFkZGl0aW9uLCBidXQgdGhlbiBJIHJlbWVtYmVyIHRoYXQgYHdjbnNzX2N0cmxgIGlzIGEgcnBtc2cgZHJpdmVyLiBUaGVuLCBpdCBoaXRzIG1lLiBFaXRoZXIgYHZoY2lgIG9yIGBtYWM4MDIxMV9od3NpbWAgb3IgYHZpcnRpb19ycG1zZ19idXNgIGlzIHVzZWQuCgpJZiBgdmlydGlvX3JwbXNnX2J1c2AgaXMgaW4gcGxheSwgU3l6a2FsbGVyIGNvdWxkIGJlIGluamVjdGluZyB2aXJ0aW8gZGV2aWNlcywgcHJvYmFibHkgdXNpbmcgc29tZXRoaW5nIGxpa2UgYC9kZXYvdmhvc3QtbmV0YCBvciBtYXliZSBhIGN1c3RvbSBgc3l6X3ZpcnRpb2Agc3lzY2FsbCDigJMgbm8sIG5vdCBgc3l6X3ZpcnRpb2AsIEkgd2FzIHRoaW5raW5nIG1vcmUgYWJvdXQgc29tZXRoaW5nIGxpa2UgYHN5el9nZW5ldGxpbmtfZ2V0X2ZhbWlseWAsIGJ1dCBubywgdGhhdCYjMzk7cyBub3QgaXQuIE9yIGV2ZW4sIGBzeXpfa3ZtX3NldHVwX2NwdWAgb3Igb3RoZXIgS1ZNIGNhbGxzLCBuby4gU3l6a2FsbGVyIGZ1enplZCB2aXJ0aW8gZGV2aWNlcyB3aXRoIGAvZGV2L3Zob3N0LXZzb2NrYD8KCkFueXdheSwgdGhlIGltcG9ydGFudCBwb2ludCBpcyB0aGF0IHN5emJvdCAqZm91bmQqIHRoaXMsIHNvIGl0ICppcyogcmVhY2hhYmxlLiBJdCYjMzk7cyBzYWZlIHRvIGFzc3VtZSBTeXprYWxsZXIgaXMgZG9pbmcgc29tZXRoaW5nIHRvIGluc3RhbnRpYXRlIGFuIHJwbXNnIGRldmljZS4gSSBqdXN0IG5lZWQgdG8gZmlndXJlIG91dCB3aGF0IHRoYXQgJiMzNDtzb21ldGhpbmcmIzM0OyBpcywgYnV0IHRoYXQgaXMgbm90IHRoZSBpc3N1ZSwgaXQgaXMgcmVhY2hhYmxlLgoKTm93LCBsZXQgbWUganVzdCBkb3VibGUtY2hlY2sgdGhhdCBgd2NuMzZ4eF9zbWRfcnNwX3Byb2Nlc3NgIGlzIGluZGVlZCB0aGUgZnVuY3Rpb24gYmVpbmcgcGF0Y2hlZC4gQWgsIHllcywgdGhlIHBhdGNoICpkb2VzKiBhZGQgYSBsZW5ndGggY2hlY2sgaW4gYHdjbjM2eHhfc21kX3JzcF9wcm9jZXNzYC4gU2luY2Ugc3l6Ym90IGZvdW5kIGl0LCBpdCYjMzk7cyBkZWZpbml0ZWx5IHJlYWNoYWJsZS4KClRpbWUgdG8gbG9vayBpbnRvIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiBgd2NuMzZ4eF9zbWRfcnNwX3Byb2Nlc3NgIGl0c2VsZi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMTg6NTQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9zbWQuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDMyNDgsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMzAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7MzI0ODpcdGludCB3Y24zNnh4X3NtZF9yc3BfcHJvY2VzcyhzdHJ1Y3QgcnBtc2dfZGV2aWNlICpycGRldixcbjMyNDk6XHRcdFx0XHQgICAgdm9pZCAqYnVmLCBpbnQgbGVuLCB2b2lkICpwcml2LCB1MzIgYWRkcilcbjMyNTA6XHR7XG4zMjUxOlx0XHRjb25zdCBzdHJ1Y3Qgd2NuMzZ4eF9oYWxfbXNnX2hlYWRlciAqbXNnX2hlYWRlciA9IGJ1ZjtcbjMyNTI6XHRcdHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3ID0gcHJpdjtcbjMyNTM6XHRcdHN0cnVjdCB3Y24zNnh4ICp3Y24gPSBody1cdTAwM2Vwcml2O1xuMzI1NDpcdFx0c3RydWN0IHdjbjM2eHhfaGFsX2luZF9tc2cgKm1zZ19pbmQ7XG4zMjU1Olx0XHR3Y24zNnh4X2RiZ19kdW1wKFdDTjM2WFhfREJHX1NNRF9EVU1QLCBcJiMzNDtTTUQgXHUwMDNjXHUwMDNjXHUwMDNjIFwmIzM0OywgYnVmLCBsZW4pO1xuMzI1NjpcdFxuMzI1NzpcdFx0aWYgKGxlbiBcdTAwM2Mgc2l6ZW9mKCptc2dfaGVhZGVyKSkge1xuMzI1ODpcdFx0XHR3Y24zNnh4X3dhcm4oXCYjMzQ7Q29ycnVwdGVkIEhBTCBtZXNzYWdlOiBsZW5ndGggJWRcXG5cJiMzNDssIGxlbik7XG4zMjU5Olx0XHRcdHJldHVybiAwO1xuMzI2MDpcdFx0fVxuMzI2MTpcdFxuMzI2MjpcdFx0c3dpdGNoIChtc2dfaGVhZGVyLVx1MDAzZW1zZ190eXBlKSB7XG4zMjYzOlx0XHRjYXNlIFdDTjM2WFhfSEFMX1NUQVJUX1JTUDpcbjMyNjQ6XHRcdGNhc2UgV0NOMzZYWF9IQUxfQ09ORklHX1NUQV9SU1A6XG4zMjY1Olx0XHRjYXNlIFdDTjM2WFhfSEFMX0NPTkZJR19CU1NfUlNQOlxuMzI2NjpcdFx0Y2FzZSBXQ04zNlhYX0hBTF9BRERfU1RBX1NFTEZfUlNQOlxuMzI2NzpcdFx0Y2FzZSBXQ04zNlhYX0hBTF9TVE9QX1JTUDpcbjMyNjg6XHRcdGNhc2UgV0NOMzZYWF9IQUxfREVMX1NUQV9TRUxGX1JTUDpcbjMyNjk6XHRcdGNhc2UgV0NOMzZYWF9IQUxfREVMRVRFX1NUQV9SU1A6XG4zMjcwOlx0XHRjYXNlIFdDTjM2WFhfSEFMX0lOSVRfU0NBTl9SU1A6XG4zMjcxOlx0XHRjYXNlIFdDTjM2WFhfSEFMX1NUQVJUX1NDQU5fUlNQOlxuMzI3MjpcdFx0Y2FzZSBXQ04zNlhYX0hBTF9FTkRfU0NBTl9SU1A6XG4zMjczOlx0XHRjYXNlIFdDTjM2WFhfSEFMX0ZJTklTSF9TQ0FOX1JTUDpcbjMyNzQ6XHRcdGNhc2UgV0NOMzZYWF9IQUxfRE9XTkxPQURfTlZfUlNQOlxuMzI3NTpcdFx0Y2FzZSBXQ04zNlhYX0hBTF9ERUxFVEVfQlNTX1JTUDpcbjMyNzY6XHRcdGNhc2UgV0NOMzZYWF9IQUxfU0VORF9CRUFDT05fUlNQOlxuMzI3NzpcdFx0Y2FzZSBXQ04zNlhYX0hBTF9TRVRfTElOS19TVF9SU1A6XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDE4OjU0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEwODE5CgkJCQkJCQlvdXRwdXQ6IDI4CgkJCQkJCQl0aG91Z2h0czogNDIxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIFBvdGVudGlhbCBTeXpib3QtRGV0ZWN0ZWQgQnVnIEZpeCoqCgpPa2F5LCBzbyB0aGlzIHBhdGNoIGludHJvZHVjZXMgYSBsZW5ndGggY2hlY2ssIHNwZWNpZmljYWxseTogYGlmIChsZW4gJmx0OyBzaXplb2YoKm1zZ19oZWFkZXIpKWAuIEhtbSwgdGhpcyBsb29rcyBsaWtlIGEgc3RyYWlnaHRmb3J3YXJkIGZpeCBmb3IgYW4gb3V0LW9mLWJvdW5kcyByZWFkIHZ1bG5lcmFiaWxpdHkgb24gYG1zZ19oZWFkZXItJmd0O21zZ190eXBlYC4gU2luY2UgaXQmIzM5O3MgYSBkcml2ZXIgY2hhbmdlIGFuZCBzeXpib3QgZm91bmQgaXQsIGl0JiMzOTtzIHByZXR0eSBsaWtlbHkgdGhlIGJ1ZyBpcyByZWFjaGFibGUuIFdhaXQsIGhvdyBkbyBJIGtub3cgaXQmIzM5O3MgYSBzeXpib3QgcGF0Y2g/IEFoLCByaWdodCwgdGhlIGNvbW1pdCBtZXNzYWdlOiBgQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7YC4gQ2xlYXIuCgpCdXQgd2FpdCwgSSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGlzIGlzbiYjMzk7dCBpbiBhIGRyaXZlciB0aGF0IHJlcXVpcmVzIHNwZWNpYWwgaGFyZHdhcmUgdGhhdCBzeXprYWxsZXIgY2FuJiMzOTt0IGVtdWxhdGUuIFRoZSBwcm9tcHQgcmVtaW5kZWQgbWUgdG8gY2hlY2sgaWYgdGhlIGRyaXZlciBpcyBhIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVLiBUaGUgZHJpdmVyIGlzIGB3Y24zNnh4YC4gSXMgdGhpcyBhIFBDSWUgZHJpdmVyPyBMZXQmIzM5O3MgY2hlY2sgdGhlIEtjb25maWcgZmlsZSBmb3IgdGhlIGRyaXZlci4KCk9rYXksIGNoZWNraW5nIGBkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9LY29uZmlnYCBhZ2Fpbi4gSXQgZGVwZW5kcyBvbiBgUUNPTV9XQ05TU19DVFJMYCBhbmQgYFJQTVNHYC4gSSByZWNhbGwgYFFDT01fV0NOU1NfQ1RSTGAgaXMgYW4gcnBtc2cgZHJpdmVyLiBSaWdodCwgcnBtc2cgaXMgYSBtZXNzYWdpbmcgYnVzLiBJIHRoaW5rIEkmIzM5O3ZlIHNlZW4gcnBtc2cgZW11bGF0ZWQgdmlhIHZpcnRpbyBpbiBRRU1VICh2aXJ0aW8tcnBtc2cpLiBEb2VzIFFFTVUgaGF2ZSB2aXJ0aW8tcnBtc2c/IE9yIGRvZXMgc3l6a2FsbGVyIGluamVjdCBycG1zZyBtZXNzYWdlcyBzb21laG93PyBJIHNob3VsZCBjaGVjay4KCkFjdHVhbGx5LCBJIGtub3cgc3l6a2FsbGVyIGhhcyBgc3l6X21hYzgwMjExX2h3c2ltYCB3aGljaCBpcyBmb3IgbWFjODAyMTEuIFdhaXQsIGRvZXMgc3l6a2FsbGVyIGhhdmUgc29tZXRoaW5nIHNpbWlsYXIgZm9yIHJwbXNnPyBEb2VzIGl0IGhhdmUgYSBwc2V1ZG8tc3lzY2FsbCBzcGVjaWZpY2FsbHkgZm9yIHJwbXNnPyBJIHNob3VsZCBjaGVjayBpZiBzeXprYWxsZXIgaGFzIGFueSBycG1zZyBkZXNjcmlwdGlvbnMgaW4gaXRzIHNvdXJjZSBjb2RlLiBJIG5lZWQgdG8gYmUgc3VyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMTg6NTQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtzeXpfJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9ycG1zZy8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNiAxODo1NDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMTY5MQoJCQkJCQkJb3V0cHV0OiAzOQoJCQkJCQkJdGhvdWdodHM6IDIyNwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIEZlYXNpYmlsaXR5IG9mIFRhcmdldGluZyBgd2NuMzZ4eGAgd2l0aCBTeXprYWxsZXIqKgoKT2theSwgc28gSSBjYW4mIzM5O3QganVzdCBwbHVnIGEga2V5d29yZCBsaWtlICYjMzQ7c3l6a2FsbGVyJiMzNDsgaW50byBhIHNlYXJjaCBhbmQgZXhwZWN0IHRvIHB1bGwgdXAgcmVsZXZhbnQgZGVzY3JpcHRpb25zLiBJIG5lZWQgdG8gYmUgbW9yZSBzdHJhdGVnaWMuIE15IGluaXRpYWwgdGhvdWdodCB3YXMgdG8gc2VlIGlmIHRoZXJlIHdlcmUgYW55IHBzZXVkby1zeXNjYWxscyBkaXJlY3RseSBidWlsdCBpbnRvIHRoZSBrZXJuZWwsIGJ1dCBubywgdGhvc2UgYXJlIG5vdCBwcmVzZW50LgoKTm93LCB0aGUgcmVhbCBxdWVzdGlvbiBpcywgY2FuIEkgZXZlbiBnZXQgYHdjbjM2eHhgIHJ1bm5pbmcgaW4gYSBRRU1VIGVudmlyb25tZW50LCBhbmQgaWYgc28gaG93PyBMZXQmIzM5O3MgY2hlY2s6IGlzIGB3Y24zNnh4YCBhIHBsYXRmb3JtIGRyaXZlcj8gWWVzLCBpdCBpcy4gUmlnaHQsIHNvIEkgaGF2ZSB0byB0aGluayBhYm91dCBob3cgc3l6a2FsbGVyIGNhbiBpbnRlcmZhY2UuIFJlbWVtYmVyIGBzeXpfZGV2X3BsYXRmb3JtX2FkZGAgZXhpc3RzLCB3aGljaCBjYW4gYWRkIHBsYXRmb3JtIGRldmljZXMuCgpIZXJlJiMzOTtzIHRoZSBwcm9ibGVtOiBgd2NuMzZ4eGAmIzM5O3MgcHJvYmUgZnVuY3Rpb24gc2VlbXMgdG8gYmUgZGVwZW5kZW50IG9uIGB3Y25zc2AgZHJpdmVyIGRhdGEgcmV0cmlldmVkIHRocm91Z2ggYGRldl9nZXRfZHJ2ZGF0YShwZGV2LSZndDtkZXYucGFyZW50KWAuIElmIEkgdXNlIGBzeXpfZGV2X3BsYXRmb3JtX2FkZGAgdG8gYWRkIGB3Y24zNnh4YCwgaXRzIHBhcmVudCBkZXZpY2UgbWF5IG5vdCBoYXZlIHRoZSBuZWNlc3NhcnkgYHdjbnNzYCBkcml2ZXIgZGF0YS4gVGhhdCBjb3VsZCBsZWFkIHRvIGEgY3Jhc2gsIG9yIGF0IGxlYXN0IGEgZmFpbGVkIHByb2JlLgoKSGFuZyBvbi4uLiBpc24mIzM5O3QgYHdjbjM2eHhgIGFjdHVhbGx5IHByb2JlZCBieSBgd2Nuc3NfY3RybGA/IEkgYmV0dGVyIGNoZWNrIHRoYXQuIExldCYjMzk7cyBkaWcgaW50byBgZHJpdmVycy9zb2MvcWNvbS93Y25zc19jdHJsLmNgLiBUaGF0IHNob3VsZCBnaXZlIG1lIHRoZSBhbnN3ZXIuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDE4OjU0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7d2NuMzZ4eCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvc29jL3Fjb20vd2Nuc3NfY3RybC5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMTg6NTQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjFtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTIzMDEKCQkJCQkJCW91dHB1dDogNDIKCQkJCQkJCXRob3VnaHRzOiAyOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIEkgd2VyZSBjb25zaWRlcmluZyB0aGlzIGNvZGU6CgoqKkRpZ2dpbmcgaW50byB0aGUgYHdjbjM2eHhgIERyaXZlciBJbnN0YW50aWF0aW9uKioKCk9rYXksIGhvbGQgb24gYSBzZWNvbmQuLi4gaG93ICpleGFjdGx5KiBpcyB0aGlzIGB3Y24zNnh4YCBkcml2ZXIgZ2V0dGluZyBpbml0aWFsaXplZD8gSSBuZWVkIHRvIHJlZnJlc2ggbXkgbWVtb3J5IG9uIHRoZSBpbnN0YW50aWF0aW9uIGZsb3cuIExldCYjMzk7cyBzZWUuLi4gdGhlIG1vc3QgbG9naWNhbCBwbGFjZSB0byBzdGFydCB0cmFjaW5nIGlzIHRoZSBgd2NuMzZ4eF9wcm9iZWAgZnVuY3Rpb24uIEkgc2hvdWxkIHJldmlldyB0aGF0IHJvdXRpbmUgY2FyZWZ1bGx5LCBsb29raW5nIGZvciBjbHVlcyBhYm91dCB0aGUgZGV2aWNlJiMzOTtzIGF0dGFjaG1lbnQgdG8gdGhlIHN5c3RlbSBhbmQgdGhlIG92ZXJhbGwgaW5pdGlhbGl6YXRpb24gc2VxdWVuY2UuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDE4OjU1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3djbjM2eHgmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7XG5GdWxsIG91dHB1dCBpcyB0b28gbG9uZywgc2hvd2luZyA1MDAgb3V0IG9mIDg1MyBsaW5lcy5cblVzZSBtb3JlIHByZWNpc2UgZXhwcmVzc2lvbiBpZiBwb3NzaWJsZS5cblxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTI3LSNpbmNsdWRlIFx1MDAzY25ldC9pcHY2LmhcdTAwM2VcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYzoyODojaW5jbHVkZSBcJiMzNDt3Y24zNnh4LmhcJiMzNDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYy0yOS0jaW5jbHVkZSBcJiMzNDt0ZXN0bW9kZS5oXCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTMxLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jOjMyOnVuc2lnbmVkIGludCB3Y24zNnh4X2RiZ19tYXNrO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jOjMzOm1vZHVsZV9wYXJhbV9uYW1lZChkZWJ1Z19tYXNrLCB3Y24zNnh4X2RiZ19tYXNrLCB1aW50LCAwNjQ0KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYy0zNC1NT0RVTEVfUEFSTV9ERVNDKGRlYnVnX21hc2ssIFwmIzM0O0RlYnVnZ2luZyBtYXNrXCYjMzQ7KTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmM9MTg3PXN0YXRpYyBpbmxpbmUgdTggZ2V0X3N0YV9pbmRleChzdHJ1Y3QgaWVlZTgwMjExX3ZpZiAqdmlmLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jOjE4ODpcdFx0XHQgICAgICAgc3RydWN0IHdjbjM2eHhfc3RhICpzdGFfcHJpdilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYy0xODkte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYy0xOTQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmM6MTk1OnN0YXRpYyB2b2lkIHdjbjM2eHhfZmVhdF9jYXBzX2luZm8oc3RydWN0IHdjbjM2eHggKndjbilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYy0xOTYte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYy0xOTktXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBNQVhfRkVBVFVSRV9TVVBQT1JURUQ7IGkmIzQzOyYjNDM7KSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmM6MjAwOlx0XHRpZiAod2NuMzZ4eF9maXJtd2FyZV9nZXRfZmVhdF9jYXBzKHdjbi1cdTAwM2Vmd19mZWF0X2NhcHMsIGkpKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmM6MjAxOlx0XHRcdHdjbjM2eHhfZGJnKFdDTjM2WFhfREJHX01BQywgXCYjMzQ7RlcgQ2FwICVzXFxuXCYjMzQ7LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jOjIwMjpcdFx0XHRcdCAgICB3Y24zNnh4X2Zpcm13YXJlX2dldF9jYXBfbmFtZShpKSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmMtMjAzLVx0XHR9XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTIwNi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYzoyMDc6c3RhdGljIGludCB3Y24zNnh4X3N0YXJ0KHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTIwOC17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmM6MjA5Olx0c3RydWN0IHdjbjM2eHggKndjbiA9IGh3LVx1MDAzZXByaXY7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmMtMjEwLVx0aW50IHJldDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYy0yMTEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmM6MjEyOlx0d2NuMzZ4eF9kYmcoV0NOMzZYWF9EQkdfTUFDLCBcJiMzNDttYWMgc3RhcnRcXG5cJiMzNDspO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTIxMy1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYy0yMTQtXHQvKiBTTUQgaW5pdGlhbGl6YXRpb24gKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYzoyMTU6XHRyZXQgPSB3Y24zNnh4X3NtZF9vcGVuKHdjbik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmMtMjE2LVx0aWYgKHJldCkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jOjIxNzpcdFx0d2NuMzZ4eF9lcnIoXCYjMzQ7RmFpbGVkIHRvIG9wZW4gc21kIGNoYW5uZWw6ICVkXFxuXCYjMzQ7LCByZXQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTIxOC1cdFx0Z290byBvdXRfZXJyO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYy0yMjEtXHQvKiBBbGxvY2F0ZSBtZW1vcnkgcG9vbHMgZm9yIE1nbXQgQkQgaGVhZGVycyBhbmQgRGF0YSBCRCBoZWFkZXJzICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmM6MjIyOlx0cmV0ID0gd2NuMzZ4eF9keGVfYWxsb2NhdGVfbWVtX3Bvb2xzKHdjbik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmMtMjIzLVx0aWYgKHJldCkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jOjIyNDpcdFx0d2NuMzZ4eF9lcnIoXCYjMzQ7RmFpbGVkIHRvIGFsbG9jIERYRSBtZW1wb29sOiAlZFxcblwmIzM0OywgcmV0KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYy0yMjUtXHRcdGdvdG8gb3V0X3NtZF9jbG9zZTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmMtMjI3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jOjIyODpcdHJldCA9IHdjbjM2eHhfZHhlX2FsbG9jX2N0bF9ibGtzKHdjbik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmMtMjI5LVx0aWYgKHJldCkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jOjIzMDpcdFx0d2NuMzZ4eF9lcnIoXCYjMzQ7RmFpbGVkIHRvIGFsbG9jIERYRSBjdGwgYmxvY2tzOiAlZFxcblwmIzM0OywgcmV0KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYy0yMzEtXHRcdGdvdG8gb3V0X2ZyZWVfZHhlX3Bvb2w7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTIzMy1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYzoyMzQ6XHRyZXQgPSB3Y24zNnh4X3NtZF9sb2FkX252KHdjbik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmMtMjM1LVx0aWYgKHJldCkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jOjIzNjpcdFx0d2NuMzZ4eF9lcnIoXCYjMzQ7RmFpbGVkIHRvIHB1c2ggTlYgdG8gY2hpcFxcblwmIzM0Oyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmMtMjM3LVx0XHRnb3RvIG91dF9mcmVlX2R4ZV9jdGw7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTIzOS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYzoyNDA6XHRyZXQgPSB3Y24zNnh4X3NtZF9zdGFydCh3Y24pO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTI0MS1cdGlmIChyZXQpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYzoyNDI6XHRcdHdjbjM2eHhfZXJyKFwmIzM0O0ZhaWxlZCB0byBzdGFydCBjaGlwXFxuXCYjMzQ7KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYy0yNDMtXHRcdGdvdG8gb3V0X2ZyZWVfZHhlX2N0bDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmMtMjQ1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jOjI0NjpcdGlmICghd2NuMzZ4eF9pc19md192ZXJzaW9uKHdjbiwgMSwgMiwgMiwgMjQpKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmM6MjQ3Olx0XHRyZXQgPSB3Y24zNnh4X3NtZF9mZWF0dXJlX2NhcHNfZXhjaGFuZ2Uod2NuKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYy0yNDgtXHRcdGlmIChyZXQpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmM6MjQ5Olx0XHRcdHdjbjM2eHhfd2FybihcJiMzNDtFeGNoYW5nZSBmZWF0dXJlIGNhcHMgZmFpbGVkXFxuXCYjMzQ7KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYy0yNTAtXHRcdGVsc2VcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYzoyNTE6XHRcdFx0d2NuMzZ4eF9mZWF0X2NhcHNfaW5mbyh3Y24pO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTI1Mi1cdH1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmMtMjU0LVx0LyogRE1BIGNoYW5uZWwgaW5pdGlhbGl6YXRpb24gKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYzoyNTU6XHRyZXQgPSB3Y24zNnh4X2R4ZV9pbml0KHdjbik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmMtMjU2LVx0aWYgKHJldCkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jOjI1NzpcdFx0d2NuMzZ4eF9lcnIoXCYjMzQ7RFhFIGluaXQgZmFpbGVkXFxuXCYjMzQ7KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYy0yNTgtXHRcdGdvdG8gb3V0X3NtZF9zdG9wO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYy0yNjAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmM6MjYxOlx0d2NuMzZ4eF9kZWJ1Z2ZzX2luaXQod2NuKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYy0yNjItXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTI2OS1vdXRfc21kX3N0b3A6XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmM6MjcwOlx0d2NuMzZ4eF9zbWRfc3RvcCh3Y24pO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTI3MS1vdXRfZnJlZV9keGVfY3RsOlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jOjI3MjpcdHdjbjM2eHhfZHhlX2ZyZWVfY3RsX2Jsa3Mod2NuKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYy0yNzMtb3V0X2ZyZWVfZHhlX3Bvb2w6XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmM6Mjc0Olx0d2NuMzZ4eF9keGVfZnJlZV9tZW1fcG9vbHMod2NuKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYy0yNzUtb3V0X3NtZF9jbG9zZTpcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYzoyNzY6XHR3Y24zNnh4X3NtZF9jbG9zZSh3Y24pO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTI3Ny1vdXRfZXJyOlxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYy0yODAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmM6MjgxOnN0YXRpYyB2b2lkIHdjbjM2eHhfc3RvcChzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodywgYm9vbCBzdXNwZW5kKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTI4Mi17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmM6MjgzOlx0c3RydWN0IHdjbjM2eHggKndjbiA9IGh3LVx1MDAzZXByaXY7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmMtMjg0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jOjI4NTpcdHdjbjM2eHhfZGJnKFdDTjM2WFhfREJHX01BQywgXCYjMzQ7bWFjIHN0b3BcXG5cJiMzNDspO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTI4Ni1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmMtMjk3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jOjI5ODpcdHdjbjM2eHhfZGVidWdmc19leGl0KHdjbik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmM6Mjk5Olx0d2NuMzZ4eF9zbWRfc3RvcCh3Y24pO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jOjMwMDpcdHdjbjM2eHhfZHhlX2RlaW5pdCh3Y24pO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jOjMwMTpcdHdjbjM2eHhfc21kX2Nsb3NlKHdjbik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmMtMzAyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jOjMwMzpcdHdjbjM2eHhfZHhlX2ZyZWVfbWVtX3Bvb2xzKHdjbik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmM6MzA0Olx0d2NuMzZ4eF9keGVfZnJlZV9jdGxfYmxrcyh3Y24pO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTMwNS19XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmMtMzA2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jOjMwNzpzdGF0aWMgdm9pZCB3Y24zNnh4X2NoYW5nZV9wcyhzdHJ1Y3Qgd2NuMzZ4eCAqd2NuLCBib29sIGVuYWJsZSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYy0zMDgte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTMwOS1cdHN0cnVjdCBpZWVlODAyMTFfdmlmICp2aWYgPSBOVUxMO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jOjMxMDpcdHN0cnVjdCB3Y24zNnh4X3ZpZiAqdG1wO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTMxMS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYy0zMTItXHRsaXN0X2Zvcl9lYWNoX2VudHJ5KHRtcCwgXHUwMDI2d2NuLVx1MDAzZXZpZl9saXN0LCBsaXN0KSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmM6MzEzOlx0XHR2aWYgPSB3Y24zNnh4X3ByaXZfdG9fdmlmKHRtcCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmMtMzE0LVx0XHRpZiAoZW5hYmxlIFx1MDAyNlx1MDAyNiAhd2NuLVx1MDAzZXN3X3NjYW4pIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYy0zMTUtXHRcdFx0aWYgKHZpZi1cdTAwM2VjZmcucHMpIC8qIHBzIGFsbG93ZWQgPyAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jOjMxNjpcdFx0XHRcdHdjbjM2eHhfcG1jX2VudGVyX2JtcHNfc3RhdGUod2NuLCB2aWYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTMxNy1cdFx0fSBlbHNlIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYzozMTg6XHRcdFx0d2NuMzZ4eF9wbWNfZXhpdF9ibXBzX3N0YXRlKHdjbiwgdmlmKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYy0zMTktXHRcdH1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmMtMzIyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jOjMyMzpzdGF0aWMgdm9pZCB3Y24zNnh4X2NoYW5nZV9vcGNoYW5uZWwoc3RydWN0IHdjbjM2eHggKndjbiwgaW50IGNoKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTMyNC17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmMtMzI1LVx0c3RydWN0IGllZWU4MDIxMV92aWYgKnZpZiA9IE5VTEw7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmM6MzI2Olx0c3RydWN0IHdjbjM2eHhfdmlmICp0bXA7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmMtMzI3LVx0c3RydWN0IGllZWU4MDIxMV9zdXBwb3J0ZWRfYmFuZCAqYmFuZDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmMtMzQ2LVx0aWYgKCFjaGFubmVsKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmM6MzQ3Olx0XHR3Y24zNnh4X2VycihcJiMzNDtDYW5ub3QgdHVuZSB0byBjaGFubmVsICVkXFxuXCYjMzQ7LCBjaCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmMtMzQ4LVx0XHRyZXR1cm47XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTM1Ni1cdGxpc3RfZm9yX2VhY2hfZW50cnkodG1wLCBcdTAwMjZ3Y24tXHUwMDNldmlmX2xpc3QsIGxpc3QpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYzozNTc6XHRcdHZpZiA9IHdjbjM2eHhfcHJpdl90b192aWYodG1wKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYzozNTg6XHRcdHdjbjM2eHhfc21kX3N3aXRjaF9jaGFubmVsKHdjbiwgdmlmLCBjaCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmMtMzU5LVx0fVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYy0zNjMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmM6MzY0OnN0YXRpYyBpbnQgd2NuMzZ4eF9jb25maWcoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsIGludCByYWRpb19pZHgsIHUzMiBjaGFuZ2VkKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTM2NS17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmM6MzY2Olx0c3RydWN0IHdjbjM2eHggKndjbiA9IGh3LVx1MDAzZXByaXY7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmMtMzY3LVx0aW50IHJldDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYy0zNjgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmM6MzY5Olx0d2NuMzZ4eF9kYmcoV0NOMzZYWF9EQkdfTUFDLCBcJiMzNDttYWMgY29uZmlnIGNoYW5nZWQgMHglMDh4XFxuXCYjMzQ7LCBjaGFuZ2VkKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYy0zNzAtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTM3NC1cdFx0aW50IGNoID0gV0NOMzZYWF9IV19DSEFOTkVMKHdjbik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmM6Mzc1Olx0XHR3Y24zNnh4X2RiZyhXQ04zNlhYX0RCR19NQUMsIFwmIzM0O3djbjM2eHhfY29uZmlnIGNoYW5uZWwgc3dpdGNoPSVkXFxuXCYjMzQ7LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTM3Ni1cdFx0XHQgICAgY2gpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYy0zODMtXHRcdFx0aWYgKHdjbi1cdTAwM2Vzd19zY2FuX2NoYW5uZWwpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmM6Mzg0Olx0XHRcdFx0d2NuMzZ4eF9zbWRfZW5kX3NjYW4od2NuLCB3Y24tXHUwMDNlc3dfc2Nhbl9jaGFubmVsKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYy0zODUtXHRcdFx0aWYgKHdjbi1cdTAwM2Vzd19zY2FuX2luaXQpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYzozODY6XHRcdFx0XHR3Y24zNnh4X3NtZF9maW5pc2hfc2Nhbih3Y24sIEhBTF9TWVNfTU9ERV9TQ0FOLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTM4Ny1cdFx0XHRcdFx0XHRcdHdjbi1cdTAwM2Vzd19zY2FuX3ZpZik7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTM5My1cdFx0XHRpZiAod2NuLVx1MDAzZXN3X3NjYW5fY2hhbm5lbClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYzozOTQ6XHRcdFx0XHR3Y24zNnh4X3NtZF9lbmRfc2Nhbih3Y24sIHdjbi1cdTAwM2Vzd19zY2FuX2NoYW5uZWwpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTM5NS1cdFx0XHRpZiAoIXdjbi1cdTAwM2Vzd19zY2FuX2luaXQpIHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmMtMzk4LVx0XHRcdFx0ICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmM6Mzk5Olx0XHRcdFx0cmV0ID0gd2NuMzZ4eF9zbWRfaW5pdF9zY2FuKHdjbixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYy00MDAtXHRcdFx0XHRcdFx0XHQgICAgSEFMX1NZU19NT0RFX1NDQU4sXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTQwNi1cdFx0XHR9XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmM6NDA3Olx0XHRcdHdjbjM2eHhfc21kX3N0YXJ0X3NjYW4od2NuLCBjaCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmMtNDA4LVx0XHR9IGVsc2Uge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jOjQwOTpcdFx0XHR3Y24zNnh4X2NoYW5nZV9vcGNoYW5uZWwod2NuLCBjaCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmMtNDEwLVx0XHR9XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTQxMy1cdGlmIChjaGFuZ2VkIFx1MDAyNiBJRUVFODAyMTFfQ09ORl9DSEFOR0VfUFMpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmM6NDE0Olx0XHR3Y24zNnh4X2NoYW5nZV9wcyh3Y24sIGh3LVx1MDAzZWNvbmYuZmxhZ3MgXHUwMDI2IElFRUU4MDIxMV9DT05GX1BTKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYy00MTUtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTQxNy1cdFx0aWYgKGh3LVx1MDAzZWNvbmYuZmxhZ3MgXHUwMDI2IElFRUU4MDIxMV9DT05GX0lETEUpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmM6NDE4Olx0XHRcdHdjbjM2eHhfc21kX2VudGVyX2ltcHMod2NuKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYy00MTktXHRcdGVsc2VcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYzo0MjA6XHRcdFx0d2NuMzZ4eF9zbWRfZXhpdF9pbXBzKHdjbik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmMtNDIxLVx0fVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYy00MjctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmM6NDI4OnN0YXRpYyB2b2lkIHdjbjM2eHhfY29uZmlndXJlX2ZpbHRlcihzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYy00MjktXHRcdFx0XHQgICAgIHVuc2lnbmVkIGludCBjaGFuZ2VkLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYy00MzEte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jOjQzMjpcdHN0cnVjdCB3Y24zNnh4X2hhbF9yY3ZfZmx0X21jX2FkZHJfbGlzdF90eXBlICpmcDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYzo0MzM6XHRzdHJ1Y3Qgd2NuMzZ4eCAqd2NuID0gaHctXHUwMDNlcHJpdjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYzo0MzQ6XHRzdHJ1Y3Qgd2NuMzZ4eF92aWYgKnRtcDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYy00MzUtXHRzdHJ1Y3QgaWVlZTgwMjExX3ZpZiAqdmlmID0gTlVMTDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYy00MzYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmM6NDM3Olx0d2NuMzZ4eF9kYmcoV0NOMzZYWF9EQkdfTUFDLCBcJiMzNDttYWMgY29uZmlndXJlIGZpbHRlclxcblwmIzM0Oyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmMtNDM4LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYy00NDQtXHRsaXN0X2Zvcl9lYWNoX2VudHJ5KHRtcCwgXHUwMDI2d2NuLVx1MDAzZXZpZl9saXN0LCBsaXN0KSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmM6NDQ1Olx0XHR2aWYgPSB3Y24zNnh4X3ByaXZfdG9fdmlmKHRtcCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmMtNDQ2LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYy00NDgtXHRcdGlmICgqdG90YWwgXHUwMDI2IEZJRl9BTExNVUxUSSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYzo0NDk6XHRcdFx0d2NuMzZ4eF9zbWRfc2V0X21jX2xpc3Qod2NuLCB2aWYsIE5VTEwpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTQ1MC1cdFx0ZWxzZSBpZiAoTkw4MDIxMV9JRlRZUEVfU1RBVElPTiA9PSB2aWYtXHUwMDNldHlwZSBcdTAwMjZcdTAwMjYgdG1wLVx1MDAzZXN0YV9hc3NvYylcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYzo0NTE6XHRcdFx0d2NuMzZ4eF9zbWRfc2V0X21jX2xpc3Qod2NuLCB2aWYsIGZwKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYy00NTItXHR9XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTQ1Ny1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYzo0NTg6c3RhdGljIHU2NCB3Y24zNnh4X3ByZXBhcmVfbXVsdGljYXN0KHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTQ1OS1cdFx0XHRcdCAgICAgc3RydWN0IG5ldGRldl9od19hZGRyX2xpc3QgKm1jX2xpc3QpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmMtNDYwLXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYzo0NjE6XHRzdHJ1Y3Qgd2NuMzZ4eF9oYWxfcmN2X2ZsdF9tY19hZGRyX2xpc3RfdHlwZSAqZnA7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmMtNDYyLVx0c3RydWN0IG5ldGRldl9od19hZGRyICpoYTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYy00NjMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmM6NDY0Olx0d2NuMzZ4eF9kYmcoV0NOMzZYWF9EQkdfTUFDLCBcJiMzNDttYWMgcHJlcGFyZSBtdWx0aWNhc3QgbGlzdFxcblwmIzM0Oyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmMtNDY1LVx0ZnAgPSBremFsbG9jX29iaigqZnAsIEdGUF9BVE9NSUMpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTQ2Ni1cdGlmICghZnApIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYzo0Njc6XHRcdHdjbjM2eHhfZXJyKFwmIzM0O091dCBvZiBtZW1vcnkgc2V0dGluZyBmaWx0ZXJzLlxcblwmIzM0Oyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmMtNDY4LVx0XHRyZXR1cm4gMDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmMtNDg0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jOjQ4NTpzdGF0aWMgdm9pZCB3Y24zNnh4X3R4KHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTQ4Ni1cdFx0ICAgICAgIHN0cnVjdCBpZWVlODAyMTFfdHhfY29udHJvbCAqY29udHJvbCxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmMtNDg4LXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYzo0ODk6XHRzdHJ1Y3Qgd2NuMzZ4eCAqd2NuID0gaHctXHUwMDNlcHJpdjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYzo0OTA6XHRzdHJ1Y3Qgd2NuMzZ4eF9zdGEgKnN0YV9wcml2ID0gTlVMTDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYy00OTEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmMtNDkyLVx0aWYgKGNvbnRyb2wtXHUwMDNlc3RhKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jOjQ5MzpcdFx0c3RhX3ByaXYgPSB3Y24zNnh4X3N0YV90b19wcml2KGNvbnRyb2wtXHUwMDNlc3RhKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYy00OTQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmM6NDk1Olx0aWYgKHdjbjM2eHhfc3RhcnRfdHgod2NuLCBzdGFfcHJpdiwgc2tiKSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYy00OTYtXHRcdGllZWU4MDIxMV9mcmVlX3R4c2tiKHdjbi1cdTAwM2Vodywgc2tiKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmMtNDk4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jOjQ5OTpzdGF0aWMgaW50IHdjbjM2eHhfc2V0X2tleShzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodywgZW51bSBzZXRfa2V5X2NtZCBjbWQsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmMtNTAwLVx0XHRcdCAgIHN0cnVjdCBpZWVlODAyMTFfdmlmICp2aWYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTUwMy17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmM6NTA0Olx0c3RydWN0IHdjbjM2eHggKndjbiA9IGh3LVx1MDAzZXByaXY7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmM6NTA1Olx0c3RydWN0IHdjbjM2eHhfdmlmICp2aWZfcHJpdiA9IHdjbjM2eHhfdmlmX3RvX3ByaXYodmlmKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYzo1MDY6XHRzdHJ1Y3Qgd2NuMzZ4eF9zdGEgKnN0YV9wcml2ID0gc3RhID8gd2NuMzZ4eF9zdGFfdG9fcHJpdihzdGEpIDogTlVMTDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYy01MDctXHRpbnQgcmV0ID0gMDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmMtNTA5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jOjUxMDpcdHdjbjM2eHhfZGJnKFdDTjM2WFhfREJHX01BQywgXCYjMzQ7bWFjODAyMTEgc2V0IGtleVxcblwmIzM0Oyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmM6NTExOlx0d2NuMzZ4eF9kYmcoV0NOMzZYWF9EQkdfTUFDLCBcJiMzNDtLZXk6IGNtZD0weCV4IGFsZ286MHgleCwgaWQ6JWQsIGxlbjolZCBmbGFncyAweCV4XFxuXCYjMzQ7LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTUxMi1cdFx0ICAgIGNtZCwga2V5X2NvbmYtXHUwMDNlY2lwaGVyLCBrZXlfY29uZi1cdTAwM2VrZXlpZHgsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmMtNTEzLVx0XHQgICAga2V5X2NvbmYtXHUwMDNla2V5bGVuLCBrZXlfY29uZi1cdTAwM2VmbGFncyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmM6NTE0Olx0d2NuMzZ4eF9kYmdfZHVtcChXQ04zNlhYX0RCR19NQUMsIFwmIzM0O0tFWTogXCYjMzQ7LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTUxNS1cdFx0XHQga2V5X2NvbmYtXHUwMDNla2V5LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYy01MzMtXHRkZWZhdWx0OlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jOjUzNDpcdFx0d2NuMzZ4eF9lcnIoXCYjMzQ7VW5zdXBwb3J0ZWQga2V5IHR5cGUgMHgleFxcblwmIzM0OyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYy01MzUtXHRcdFx0ICAgICAga2V5X2NvbmYtXHUwMDNlY2lwaGVyKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmMtNTYwLVx0XHRcdGlmIChOTDgwMjExX0lGVFlQRV9TVEFUSU9OID09IHZpZi1cdTAwM2V0eXBlKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmM6NTYxOlx0XHRcdFx0d2NuMzZ4eF9zbWRfY29uZmlnX2Jzcyh3Y24sXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmMtNTYyLVx0XHRcdFx0XHRcdCAgICAgICB2aWYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTU2NS1cdFx0XHRcdFx0XHQgICAgICAgdHJ1ZSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmM6NTY2Olx0XHRcdFx0d2NuMzZ4eF9zbWRfY29uZmlnX3N0YSh3Y24sIHZpZiwgc3RhKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYy01NjctXHRcdFx0fVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTU2OC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYzo1Njk6XHRcdFx0d2NuMzZ4eF9zbWRfc2V0X3N0YWtleSh3Y24sXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmMtNTcwLVx0XHRcdFx0dmlmX3ByaXYtXHUwMDNlZW5jcnlwdF90eXBlLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYy01NzUtXHRcdH0gZWxzZSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmM6NTc2Olx0XHRcdHdjbjM2eHhfc21kX3NldF9ic3NrZXkod2NuLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTU3Ny1cdFx0XHRcdHZpZl9wcml2LVx1MDAzZWVuY3J5cHRfdHlwZSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmMtNTg3LVx0XHRcdFx0XHRzdGFfcHJpdi1cdTAwM2Vpc19kYXRhX2VuY3J5cHRlZCA9IHRydWU7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmM6NTg4Olx0XHRcdFx0XHR3Y24zNnh4X3NtZF9zZXRfc3Rha2V5KHdjbixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYy01ODktXHRcdFx0XHRcdFx0dmlmX3ByaXYtXHUwMDNlZW5jcnlwdF90eXBlLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYy02MDAtXHRcdFx0aWYgKHZpZl9wcml2LVx1MDAzZWJzc19pbmRleCAhPSBXQ04zNlhYX0hBTF9CU1NfSU5WQUxJRF9JRFgpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmM6NjAxOlx0XHRcdFx0d2NuMzZ4eF9zbWRfcmVtb3ZlX2Jzc2tleSh3Y24sXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmMtNjAyLVx0XHRcdFx0XHR2aWZfcHJpdi1cdTAwM2VlbmNyeXB0X3R5cGUsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTYxMC1cdFx0XHRpZiAoc3RhX3ByaXYtXHUwMDNlYWlkKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jOjYxMTpcdFx0XHRcdHdjbjM2eHhfc21kX3JlbW92ZV9zdGFrZXkod2NuLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTYxMi1cdFx0XHRcdFx0dmlmX3ByaXYtXHUwMDNlZW5jcnlwdF90eXBlLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYy02MTctXHRkZWZhdWx0OlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jOjYxODpcdFx0d2NuMzZ4eF9lcnIoXCYjMzQ7VW5zdXBwb3J0ZWQga2V5IGNtZCAweCV4XFxuXCYjMzQ7LCBjbWQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTYxOS1cdFx0cmV0ID0gLUVPUE5PVFNVUFA7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTYyOC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYzo2Mjk6c3RhdGljIGludCB3Y24zNnh4X2h3X3NjYW4oc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmMtNjMwLVx0XHRcdCAgIHN0cnVjdCBpZWVlODAyMTFfdmlmICp2aWYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTYzMi17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmM6NjMzOlx0c3RydWN0IHdjbjM2eHggKndjbiA9IGh3LVx1MDAzZXByaXY7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmMtNjM0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jOjYzNTpcdGlmICghd2NuMzZ4eF9maXJtd2FyZV9nZXRfZmVhdF9jYXBzKHdjbi1cdTAwM2Vmd19mZWF0X2NhcHMsIFNDQU5fT0ZGTE9BRCkpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYy02MzYtXHRcdC8qIGZhbGxiYWNrIHRvIG1hYzgwMjExIHNvZnR3YXJlIHNjYW4gKi9cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmMtNjQzLVx0aWYgKGh3X3JlcS1cdTAwM2VyZXEubl9jaGFubmVscyBcdTAwM2UgNDgpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYzo2NDQ6XHRcdHdjbjM2eHhfd2FybihcJiMzNDtPZmZsb2FkIHNjYW4gYWJvcnRlZCwgbl9jaGFubmVscz0ldVwmIzM0OyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYy02NDUtXHRcdFx0ICAgICBod19yZXEtXHUwMDNlcmVxLm5fY2hhbm5lbHMpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYy02NTktXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmM6NjYwOlx0d2NuMzZ4eF9zbWRfdXBkYXRlX2NoYW5uZWxfbGlzdCh3Y24sIFx1MDAyNmh3X3JlcS1cdTAwM2VyZXEpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jOjY2MTpcdHJldHVybiB3Y24zNnh4X3NtZF9zdGFydF9od19zY2FuKHdjbiwgdmlmLCBcdTAwMjZod19yZXEtXHUwMDNlcmVxKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYy02NjItfVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTY2My1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYzo2NjQ6c3RhdGljIHZvaWQgd2NuMzZ4eF9jYW5jZWxfaHdfc2NhbihzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYy02NjUtXHRcdFx0XHQgICBzdHJ1Y3QgaWVlZTgwMjExX3ZpZiAqdmlmKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTY2Ni17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmM6NjY3Olx0c3RydWN0IHdjbjM2eHggKndjbiA9IGh3LVx1MDAzZXByaXY7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmMtNjY4LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYy02NzItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmM6NjczOlx0aWYgKHdjbjM2eHhfZmlybXdhcmVfZ2V0X2ZlYXRfY2Fwcyh3Y24tXHUwMDNlZndfZmVhdF9jYXBzLCBTQ0FOX09GRkxPQUQpKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmMtNjc0LVx0XHQvKiBpZWVlODAyMTFfc2Nhbl9jb21wbGV0ZWQgd2lsbCBiZSBjYWxsZWQgb24gRlcgc2NhblxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTY3NS1cdFx0ICogaW5kaWNhdGlvbiAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jOjY3NjpcdFx0d2NuMzZ4eF9zbWRfc3RvcF9od19zY2FuKHdjbik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmMtNjc3LVx0fVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYy02NzktXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmM6NjgwOnN0YXRpYyB2b2lkIHdjbjM2eHhfc3dfc2Nhbl9zdGFydChzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYy02ODEtXHRcdFx0XHQgIHN0cnVjdCBpZWVlODAyMTFfdmlmICp2aWYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTY4My17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmM6Njg0Olx0c3RydWN0IHdjbjM2eHggKndjbiA9IGh3LVx1MDAzZXByaXY7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmM6Njg1Olx0c3RydWN0IHdjbjM2eHhfdmlmICp2aWZfcHJpdiA9IHdjbjM2eHhfdmlmX3RvX3ByaXYodmlmKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYy02ODYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmM6Njg3Olx0d2NuMzZ4eF9kYmcoV0NOMzZYWF9EQkdfTUFDLCBcJiMzNDtzd19zY2FuX3N0YXJ0XCYjMzQ7KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYy02ODgtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTY5Ny1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYzo2OTg6c3RhdGljIHZvaWQgd2NuMzZ4eF9zd19zY2FuX2NvbXBsZXRlKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTY5OS1cdFx0XHRcdCAgICAgc3RydWN0IGllZWU4MDIxMV92aWYgKnZpZilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYy03MDAte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jOjcwMTpcdHN0cnVjdCB3Y24zNnh4ICp3Y24gPSBody1cdTAwM2Vwcml2O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTcwMi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYzo3MDM6XHR3Y24zNnh4X2RiZyhXQ04zNlhYX0RCR19NQUMsIFwmIzM0O3N3X3NjYW5fY29tcGxldGVcJiMzNDspO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTcwNC1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmMtNzA2LVx0aWYgKHdjbi1cdTAwM2Vzd19zY2FuX2NoYW5uZWwpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmM6NzA3Olx0XHR3Y24zNnh4X3NtZF9lbmRfc2Nhbih3Y24sIHdjbi1cdTAwM2Vzd19zY2FuX2NoYW5uZWwpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTcwOC1cdGlmICh3Y24tXHUwMDNlc3dfc2Nhbl9pbml0KSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmM6NzA5Olx0XHR3Y24zNnh4X3NtZF9maW5pc2hfc2Nhbih3Y24sIEhBTF9TWVNfTU9ERV9TQ0FOLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTcxMC1cdFx0XHRcdFx0d2NuLVx1MDAzZXN3X3NjYW5fdmlmKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmMtNzE1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jOjcxNjpzdGF0aWMgdm9pZCB3Y24zNnh4X3VwZGF0ZV9hbGxvd2VkX3JhdGVzKHN0cnVjdCBpZWVlODAyMTFfc3RhICpzdGEsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmMtNzE3LVx0XHRcdFx0XHQgZW51bSBubDgwMjExX2JhbmQgYmFuZClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmMtNzIwLVx0dTE2ICpyYXRlc190YWJsZTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYzo3MjE6XHRzdHJ1Y3Qgd2NuMzZ4eF9zdGEgKnN0YV9wcml2ID0gd2NuMzZ4eF9zdGFfdG9fcHJpdihzdGEpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTcyMi1cdHUzMiByYXRlcyA9IHN0YS1cdTAwM2VkZWZsaW5rLnN1cHBfcmF0ZXNbYmFuZF07XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTc2NC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYzo3NjU6dm9pZCB3Y24zNnh4X3NldF9kZWZhdWx0X3JhdGVzKHN0cnVjdCB3Y24zNnh4X2hhbF9zdXBwb3J0ZWRfcmF0ZXMgKnJhdGVzKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTc2Ni17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTc5MS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYzo3OTI6dm9pZCB3Y24zNnh4X3NldF9kZWZhdWx0X3JhdGVzX3YxKHN0cnVjdCB3Y24zNnh4X2hhbF9zdXBwb3J0ZWRfcmF0ZXNfdjEgKnJhdGVzKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTc5My17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTc5OC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYzo3OTk6c3RhdGljIHZvaWQgd2NuMzZ4eF9ic3NfaW5mb19jaGFuZ2VkKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTgwMC1cdFx0XHRcdCAgICAgc3RydWN0IGllZWU4MDIxMV92aWYgKnZpZixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmMtODAzLXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYzo4MDQ6XHRzdHJ1Y3Qgd2NuMzZ4eCAqd2NuID0gaHctXHUwMDNlcHJpdjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYy04MDUtXHRzdHJ1Y3Qgc2tfYnVmZiAqc2tiID0gTlVMTDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYy04MDYtXHR1MTYgdGltX29mZiwgdGltX2xlbjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYzo4MDc6XHRlbnVtIHdjbjM2eHhfaGFsX2xpbmtfc3RhdGUgbGlua19zdGF0ZTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYzo4MDg6XHRzdHJ1Y3Qgd2NuMzZ4eF92aWYgKnZpZl9wcml2ID0gd2NuMzZ4eF92aWZfdG9fcHJpdih2aWYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTgwOS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYzo4MTA6XHR3Y24zNnh4X2RiZyhXQ04zNlhYX0RCR19NQUMsIFwmIzM0O21hYyBic3MgaW5mbyBjaGFuZ2VkIHZpZiAlcCBjaGFuZ2VkIDB4JWxseFxcblwmIzM0OyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYy04MTEtXHRcdCAgICB2aWYsIGNoYW5nZWQpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYy04MTUtXHRpZiAoY2hhbmdlZCBcdTAwMjYgQlNTX0NIQU5HRURfQkVBQ09OX0lORk8pIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYzo4MTY6XHRcdHdjbjM2eHhfZGJnKFdDTjM2WFhfREJHX01BQyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYy04MTctXHRcdFx0ICAgIFwmIzM0O21hYyBic3MgY2hhbmdlZCBkdGltIHBlcmlvZCAlZFxcblwmIzM0Oyxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmMtODIzLVx0aWYgKGNoYW5nZWQgXHUwMDI2IEJTU19DSEFOR0VEX0JTU0lEKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmM6ODI0Olx0XHR3Y24zNnh4X2RiZyhXQ04zNlhYX0RCR19NQUMsIFwmIzM0O21hYyBic3MgY2hhbmdlZF9ic3NpZCAlcE1cXG5cJiMzNDssXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmMtODI1LVx0XHRcdCAgICBic3NfY29uZi1cdTAwM2Vic3NpZCk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTgyOS1cdFx0XHR2aWZfcHJpdi1cdTAwM2Vic3NfaW5kZXggPSBXQ04zNlhYX0hBTF9CU1NfSU5WQUxJRF9JRFg7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmM6ODMwOlx0XHRcdHdjbjM2eHhfc21kX3NldF9saW5rX3N0KHdjbiwgYnNzX2NvbmYtXHUwMDNlYnNzaWQsIHZpZi1cdTAwM2VhZGRyLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTgzMS1cdFx0XHRcdFx0XHRXQ04zNlhYX0hBTF9MSU5LX1BSRUFTU09DX1NUQVRFKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYzo4MzI6XHRcdFx0d2NuMzZ4eF9zbWRfam9pbih3Y24sIGJzc19jb25mLVx1MDAzZWJzc2lkLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTgzMy1cdFx0XHRcdFx0IHZpZi1cdTAwM2VhZGRyLCBXQ04zNlhYX0hXX0NIQU5ORUwod2NuKSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmM6ODM0Olx0XHRcdHdjbjM2eHhfc21kX2NvbmZpZ19ic3Mod2NuLCB2aWYsIE5VTEwsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmMtODM1LVx0XHRcdFx0XHQgICAgICAgYnNzX2NvbmYtXHUwMDNlYnNzaWQsIGZhbHNlKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmMtODM3LVx0XHRcdHZpZl9wcml2LVx1MDAzZWlzX2pvaW5pbmcgPSBmYWxzZTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYzo4Mzg6XHRcdFx0d2NuMzZ4eF9zbWRfZGVsZXRlX2Jzcyh3Y24sIHZpZik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmM6ODM5Olx0XHRcdHdjbjM2eHhfc21kX3NldF9saW5rX3N0KHdjbiwgYnNzX2NvbmYtXHUwMDNlYnNzaWQsIHZpZi1cdTAwM2VhZGRyLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTg0MC1cdFx0XHRcdFx0XHRXQ04zNlhYX0hBTF9MSU5LX0lETEVfU1RBVEUpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYy04NDUtXHRpZiAoY2hhbmdlZCBcdTAwMjYgQlNTX0NIQU5HRURfU1NJRCkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jOjg0NjpcdFx0d2NuMzZ4eF9kYmcoV0NOMzZYWF9EQkdfTUFDLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTg0Ny1cdFx0XHQgICAgXCYjMzQ7bWFjIGJzcyBjaGFuZ2VkIHNzaWRcXG5cJiMzNDspO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jOjg0ODpcdFx0d2NuMzZ4eF9kYmdfZHVtcChXQ04zNlhYX0RCR19NQUMsIFwmIzM0O3NzaWQgXCYjMzQ7LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTg0OS1cdFx0XHRcdCB2aWYtXHUwMDNlY2ZnLnNzaWQsIHZpZi1cdTAwM2VjZmcuc3NpZF9sZW4pO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYy04NjAtXHRcdFx0c3RydWN0IGllZWU4MDIxMV9zdGEgKnN0YTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYzo4NjE6XHRcdFx0c3RydWN0IHdjbjM2eHhfc3RhICpzdGFfcHJpdjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYy04NjItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmM6ODYzOlx0XHRcdHdjbjM2eHhfZGJnKFdDTjM2WFhfREJHX01BQyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYy04NjQtXHRcdFx0XHQgICAgXCYjMzQ7bWFjIGFzc29jIGJzcyAlcE0gdmlmICVwTSBBSUQ9JWRcXG5cJiMzNDssXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTg3Mi1cdFx0XHQgKiBIb2xkaW5nIGNvbmZfbXV0ZXggZW5zdXJlcyBtdXRhbCBleGNsdXNpb24gd2l0aFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jOjg3MzpcdFx0XHQgKiB3Y24zNnh4X3N0YV9yZW1vdmUoKSBhbmQgYXMgc3VjaCBlbnN1cmVzIHRoYXQgc3RhXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmMtODc0LVx0XHRcdCAqIHdvbiYjMzk7dCBiZSBmcmVlZCB3aGlsZSB3ZSYjMzk7cmUgb3BlcmF0aW5nIG9uIGl0LiBBcyBzdWNoXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTg3OC1cdFx0XHRpZiAoIXN0YSkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jOjg3OTpcdFx0XHRcdHdjbjM2eHhfZXJyKFwmIzM0O3N0YSAlcE0gaXMgbm90IGZvdW5kXFxuXCYjMzQ7LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTg4MC1cdFx0XHRcdFx0ICAgICAgYnNzX2NvbmYtXHUwMDNlYnNzaWQpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYy04ODItXHRcdFx0fVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jOjg4MzpcdFx0XHRzdGFfcHJpdiA9IHdjbjM2eHhfc3RhX3RvX3ByaXYoc3RhKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYy04ODQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmM6ODg1Olx0XHRcdHdjbjM2eHhfdXBkYXRlX2FsbG93ZWRfcmF0ZXMoc3RhLCBXQ04zNlhYX0JBTkQod2NuKSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmMtODg2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jOjg4NzpcdFx0XHR3Y24zNnh4X3NtZF9zZXRfbGlua19zdCh3Y24sIGJzc19jb25mLVx1MDAzZWJzc2lkLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTg4OC1cdFx0XHRcdHZpZi1cdTAwM2VhZGRyLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTg4OS1cdFx0XHRcdFdDTjM2WFhfSEFMX0xJTktfUE9TVEFTU09DX1NUQVRFKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYzo4OTA6XHRcdFx0d2NuMzZ4eF9zbWRfY29uZmlnX2Jzcyh3Y24sIHZpZiwgc3RhLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTg5MS1cdFx0XHRcdFx0ICAgICAgIGJzc19jb25mLVx1MDAzZWJzc2lkLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYy04OTctXHRcdFx0ICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmM6ODk4Olx0XHRcdHdjbjM2eHhfc21kX2NvbmZpZ19zdGEod2NuLCB2aWYsIHN0YSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmMtODk5LVx0XHRcdGlmICh2aWYtXHUwMDNldHlwZSA9PSBOTDgwMjExX0lGVFlQRV9TVEFUSU9OKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jOjkwMDpcdFx0XHRcdHdjbjM2eHhfc21kX2FkZF9iZWFjb25fZmlsdGVyKHdjbiwgdmlmKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYzo5MDE6XHRcdFx0d2NuMzZ4eF9lbmFibGVfa2VlcF9hbGl2ZV9udWxsX3BhY2tldCh3Y24sIHZpZik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmMtOTAyLVx0XHR9IGVsc2Uge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jOjkwMzpcdFx0XHR3Y24zNnh4X2RiZyhXQ04zNlhYX0RCR19NQUMsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmMtOTA0LVx0XHRcdFx0ICAgIFwmIzM0O2Rpc2Fzc29jaWF0ZWQgYnNzICVwTSB2aWYgJXBNIEFJRD0lZFxcblwmIzM0Oyxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmMtOTA4LVx0XHRcdHZpZl9wcml2LVx1MDAzZXN0YV9hc3NvYyA9IGZhbHNlO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jOjkwOTpcdFx0XHR3Y24zNnh4X3NtZF9zZXRfbGlua19zdCh3Y24sXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmMtOTEwLVx0XHRcdFx0XHRcdGJzc19jb25mLVx1MDAzZWJzc2lkLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYy05MTYtXHRpZiAoY2hhbmdlZCBcdTAwMjYgQlNTX0NIQU5HRURfQVBfUFJPQkVfUkVTUCkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jOjkxNzpcdFx0d2NuMzZ4eF9kYmcoV0NOMzZYWF9EQkdfTUFDLCBcJiMzNDttYWMgYnNzIGNoYW5nZWQgYXAgcHJvYmUgcmVzcFxcblwmIzM0Oyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmMtOTE4LVx0XHRza2IgPSBpZWVlODAyMTFfcHJvYmVyZXNwX2dldChodywgdmlmKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYy05MTktXHRcdGlmICghc2tiKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmM6OTIwOlx0XHRcdHdjbjM2eHhfZXJyKFwmIzM0O2ZhaWxlZCB0byBhbGxvYyBwcm9iZXJlcSBza2JcXG5cJiMzNDspO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTkyMS1cdFx0XHRnb3RvIG91dDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmMtOTIzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jOjkyNDpcdFx0d2NuMzZ4eF9zbWRfdXBkYXRlX3Byb2JlcmVzcF90bXBsKHdjbiwgdmlmLCBza2IpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTkyNS1cdFx0ZGV2X2tmcmVlX3NrYihza2IpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYy05MjktXHQgICAgY2hhbmdlZCBcdTAwMjYgQlNTX0NIQU5HRURfQkVBQ09OKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmM6OTMwOlx0XHR3Y24zNnh4X2RiZyhXQ04zNlhYX0RCR19NQUMsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmMtOTMxLVx0XHRcdCAgICBcJiMzNDttYWMgYnNzIGNoYW5nZWQgYmVhY29uIGVuYWJsZWQgJWRcXG5cJiMzNDssXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTkzNi1cdFx0XHR2aWZfcHJpdi1cdTAwM2Vic3NfaW5kZXggPSBXQ04zNlhYX0hBTF9CU1NfSU5WQUxJRF9JRFg7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmM6OTM3Olx0XHRcdHdjbjM2eHhfc21kX2NvbmZpZ19ic3Mod2NuLCB2aWYsIE5VTEwsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmMtOTM4LVx0XHRcdFx0XHQgICAgICAgdmlmLVx1MDAzZWFkZHIsIGZhbHNlKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmMtOTQxLVx0XHRcdGlmICghc2tiKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmM6OTQyOlx0XHRcdFx0d2NuMzZ4eF9lcnIoXCYjMzQ7ZmFpbGVkIHRvIGFsbG9jIGJlYWNvbiBza2JcXG5cJiMzNDspO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTk0My1cdFx0XHRcdGdvdG8gb3V0O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTk0NC1cdFx0XHR9XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmM6OTQ1Olx0XHRcdHdjbjM2eHhfc21kX3NlbmRfYmVhY29uKHdjbiwgdmlmLCBza2IsIHRpbV9vZmYsIDApO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTk0Ni1cdFx0XHRkZXZfa2ZyZWVfc2tiKHNrYik7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTk1My1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYzo5NTQ6XHRcdFx0d2NuMzZ4eF9zbWRfc2V0X2xpbmtfc3Qod2NuLCB2aWYtXHUwMDNlYWRkciwgdmlmLVx1MDAzZWFkZHIsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmMtOTU1LVx0XHRcdFx0XHRcdGxpbmtfc3RhdGUpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTk1Ni1cdFx0fSBlbHNlIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYzo5NTc6XHRcdFx0d2NuMzZ4eF9zbWRfZGVsZXRlX2Jzcyh3Y24sIHZpZik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmM6OTU4Olx0XHRcdHdjbjM2eHhfc21kX3NldF9saW5rX3N0KHdjbiwgdmlmLVx1MDAzZWFkZHIsIHZpZi1cdTAwM2VhZGRyLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTk1OS1cdFx0XHRcdFx0XHRXQ04zNlhYX0hBTF9MSU5LX0lETEVfU1RBVEUpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYy05NjctLyogdGhpcyBpcyByZXF1aXJlZCB3aGVuIHVzaW5nIElFRUU4MDIxMV9IV19IQVNfUkFURV9DT05UUk9MICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmM6OTY4OnN0YXRpYyBpbnQgd2NuMzZ4eF9zZXRfcnRzX3RocmVzaG9sZChzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodywgaW50IHJhZGlvX2lkeCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYy05NjktXHRcdFx0XHQgICAgIHUzMiB2YWx1ZSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYy05NzAte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jOjk3MTpcdHN0cnVjdCB3Y24zNnh4ICp3Y24gPSBody1cdTAwM2Vwcml2O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jOjk3MjpcdHdjbjM2eHhfZGJnKFdDTjM2WFhfREJHX01BQywgXCYjMzQ7bWFjIHNldCBSVFMgdGhyZXNob2xkICVkXFxuXCYjMzQ7LCB2YWx1ZSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmMtOTczLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTk3NC1cdG11dGV4X2xvY2soXHUwMDI2d2NuLVx1MDAzZWNvbmZfbXV0ZXgpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jOjk3NTpcdHdjbjM2eHhfc21kX3VwZGF0ZV9jZmcod2NuLCBXQ04zNlhYX0hBTF9DRkdfUlRTX1RIUkVTSE9MRCwgdmFsdWUpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTk3Ni1cdG11dGV4X3VubG9jayhcdTAwMjZ3Y24tXHUwMDNlY29uZl9tdXRleCk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTk4MC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYzo5ODE6c3RhdGljIHZvaWQgd2NuMzZ4eF9yZW1vdmVfaW50ZXJmYWNlKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTk4Mi1cdFx0XHRcdCAgICAgc3RydWN0IGllZWU4MDIxMV92aWYgKnZpZilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYy05ODMte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jOjk4NDpcdHN0cnVjdCB3Y24zNnh4ICp3Y24gPSBody1cdTAwM2Vwcml2O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jOjk4NTpcdHN0cnVjdCB3Y24zNnh4X3ZpZiAqdmlmX3ByaXYgPSB3Y24zNnh4X3ZpZl90b19wcml2KHZpZik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmM6OTg2Olx0d2NuMzZ4eF9kYmcoV0NOMzZYWF9EQkdfTUFDLCBcJiMzNDttYWMgcmVtb3ZlIGludGVyZmFjZSB2aWYgJXBcXG5cJiMzNDssIHZpZik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmMtOTg3LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYy05OTAtXHRsaXN0X2RlbChcdTAwMjZ2aWZfcHJpdi1cdTAwM2VsaXN0KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYzo5OTE6XHR3Y24zNnh4X3NtZF9kZWxldGVfc3RhX3NlbGYod2NuLCB2aWYtXHUwMDNlYWRkcik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmMtOTkyLVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYy05OTUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmM6OTk2OnN0YXRpYyBpbnQgd2NuMzZ4eF9hZGRfaW50ZXJmYWNlKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTk5Ny1cdFx0XHRcdCBzdHJ1Y3QgaWVlZTgwMjExX3ZpZiAqdmlmKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTk5OC17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmM6OTk5Olx0c3RydWN0IHdjbjM2eHggKndjbiA9IGh3LVx1MDAzZXByaXY7XG5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMTg6NTU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjc5NjYKCQkJCQkJCW91dHB1dDogMzcKCQkJCQkJCXRob3VnaHRzOiAxODYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBTeXpib3QgRmluZGluZ3MqKgoKT2theSwgc28gYHdjbjM2eHhfc21kX3JzcF9wcm9jZXNzYCBpcyBkZWZpbml0ZWx5IGNhbGxlZCB3aGVuIGEgbWVzc2FnZSBhcnJpdmVzIG9uIHRoZSBTTUQgY2hhbm5lbCDigJMgdGhhdCYjMzk7cyBjbGVhciBmcm9tIHRoZSBjb2RlLiBBbmQgdGhlIFNNRCBjaGFubmVsIGl0c2VsZiBpcyBvcGVuZWQgd2l0aGluIGB3Y24zNnh4X3Byb2JlYCB1c2luZyBgcWNvbV93Y25zc19vcGVuX2NoYW5uZWxgLiBTbywgaWYgc3l6Ym90IGlzIGhpdHRpbmcgdGhpcyBjb2RlLCBpdCBtZWFucyBpdCYjMzk7cyBtYW5hZ2luZyB0byB0cmlnZ2VyIGB3Y24zNnh4X3Byb2JlYCBzb21laG93IGFuZCB0aGVuIGluamVjdCBtZXNzYWdlcyAqaW50byogdGhhdCBTTUQgY2hhbm5lbC4gVGhhdCYjMzk7cyBhIGNydWNpYWwgcG9pbnQuCgpOb3csIG15IGluaXRpYWwgdGhvdWdodCBpczogZG9lcyBzeXprYWxsZXIgaGF2ZSBkaXJlY3Qgc3VwcG9ydCBmb3IgYHFjb21fd2Nuc3Nfb3Blbl9jaGFubmVsYD8gSSBkb3VidCBpdCwgYnV0IGl0JiMzOTtzIHdvcnRoIGNoZWNraW5nLiBXYWl0IGEgbWludXRlLi4uIHN5emthbGxlciBtaWdodCBiZSBieXBhc3NpbmcgdGhlIGB3Y24zNnh4YCBkcml2ZXIgZW50aXJlbHkgYW5kIGZ1enppbmcgdGhlIHJwbXNnIGJ1cyBkaXJlY3RseS4gVGhhdCYjMzk7cyBhIGRpc3RpbmN0IHBvc3NpYmlsaXR5LiBJZiB0aGUgUUVNVSBlbnZpcm9ubWVudCBpbmNsdWRlcyB2aXJ0aW8tcnBtc2csIHN5emthbGxlciBjb3VsZCBiZSBkeW5hbWljYWxseSBjcmVhdGluZyBycG1zZyBkZXZpY2VzIGFuZCBzZW5kaW5nIG1lc3NhZ2VzIHRvIHRoZW0uIFRoaXMgZXhwbGFpbnMgdGhlIHBvdGVudGlhbCBieXBhc3MuCgpIb3dldmVyLCBgd2NuMzZ4eGAgaXMgYSBwbGF0Zm9ybSBkZXZpY2UsIHJpZ2h0PyBUaGF0IHN1Z2dlc3RzIGl0JiMzOTtzICpub3QqIGEgc3RhbmRhcmQgdmlydGlvIGRldmljZSBkaXJlY3RseSBleHBvc2VkIHZpYSB0aGUgcnBtc2cgYnVzLiBIbW0sIEkgbmVlZCB0byB2ZXJpZnkgaWYgc3l6a2FsbGVyIGhhcyBhIHBzZXVkby1zeXNjYWxsIGRlZmluZWQgZm9yIGB3Y24zNnh4YCBpdHNlbGYuIFRoaXMgaXMgdGhlIHBpZWNlIG9mIHRoZSBwdXp6bGUgdG8gY29ubmVjdCBoZXJlLiBUaGF0IHdpbGwgc2hvdyBpZiB0aGVyZSBpcyBkaXJlY3Qgc3l6a2FsbGVyIGludGVncmF0aW9uIG9yIGlmIGl0JiMzOTtzIGZ1enppbmcgdmlhIHRoZSBycG1zZyBidXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDE4OjU1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c3l6XyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDE4OjU1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI4NTM3CgkJCQkJCQlvdXRwdXQ6IDQ3CgkJCQkJCQl0aG91Z2h0czogNDY4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgV29ydGhGdXp6aW5nIENyaXRlcmlhIGZvciBhIGB3Y24zNnh4YCBQYXRjaCoqCgpPa2F5LCBzbyB0aGUgaW5pdGlhbCB0aG91Z2h0IGlzLCB0aGVyZSBhcmUgbm8gJiMzNDtwc2V1ZG8tc3lzY2FsbHMmIzM0OyBpbnZvbHZlZCBoZXJlLiBCdXQgd2FpdCwgSSByZWNhbGwgc2VlaW5nIGBzeXpfZGV2X3BsYXRmb3JtX2FkZGAgb3Igc29tZXRoaW5nIHNpbWlsYXIgYmVpbmcgdXNlZCBieSBzeXpib3Q/IE5vLCBhY3R1YWxseSBzeXpib3QgaXRzZWxmIGRvZXNuJiMzOTt0IGhhdmUgc3VjaCBhIHNwZWNpZmljIHN5c2NhbGwuIEl0IHV0aWxpemVzIGBzeXpfdXNiX2Nvbm5lY3RgLCBgc3l6XzgwMjExX2luamVjdF9mcmFtZWAsIGV0Yy4gdG8gaW50ZXJhY3Qgd2l0aCB0aGUgdGFyZ2V0LiBIb3cgY291bGQgc3l6Ym90IHJlYWNoIHRoaXMgcGFydGljdWxhciBkcml2ZXIsIHRoZW4/CgpQZXJoYXBzIGB3Y24zNnh4YCBpcyBjb21waWxlZCBkaXJlY3RseSBpbnRvIHRoZSBrZXJuZWwgYW5kIGF1dG9tYXRpY2FsbHkgcHJvYmVkIGlmIHRoZSBkZXZpY2UgdHJlZSBpbmNsdWRlcyBpdD8gT3IsIG1heWJlIHN5emJvdCB1c2VzIGEgY3VzdG9tIGRldmljZSB0cmVlLCBvciBtYXliZSBpdCYjMzk7cyBhIHBsYXRmb3JtIGRldmljZSB0aGF0IGNhbiBiZSBpbnN0YW50aWF0ZWQgdGhyb3VnaCBzeXNmcz8gQWgsIHJpZ2h0LCBgd2NuMzZ4eGAgaXMgYSBwbGF0Zm9ybSBkcml2ZXIuIFBsYXRmb3JtIGRldmljZXMgY2FuIGJlIGNyZWF0ZWQgdGhyb3VnaCB0aGUgZGV2aWNlIHRyZWUgKm9yKiBvdGhlciBkcml2ZXJzLgoKT2theSwgbGV0JiMzOTtzIHJlbWVtYmVyIHN5emJvdCB0ZXN0cyBvbiBHQ0Ugd2l0aCBhIHNwZWNpZmljIGtlcm5lbCBjb25maWcuIElmIHN5emJvdCBoYXMgZm91bmQgaXQsIHRoZW4gaXQgKmlzKiByZWFjaGFibGUuIFRoZSBwcm9tcHQgc2F5cyB0byByZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBpbnZvbHZlcyBjb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLiBJcyBgd2NuMzZ4eGAgYSBQQ0llIGRyaXZlcj8gTm8sIGl0JiMzOTtzIGEgcGxhdGZvcm0gZHJpdmVyIGZvciBRdWFsY29tbSBBdGhlcm9zIFdDTjM2NjAvMzY4MC4gU28gdGhlIG5leHQga2V5IHF1ZXN0aW9uOiBJcyBpdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VPwoKV2FpdCwgaWYgc3l6Ym90IGhhcyBmb3VuZCBpdCwgdGhlbiBpdCBtZWFucyBpdCAqaXMqIHJlYWNoYWJsZSBpbiBzeXpib3QmIzM5O3MgZW52aXJvbm1lbnQsIHdoaWNoIGlzIFFFTVUhIFNvIHRoZSBhbnN3ZXIgaXMgeWVzLiBCdXQsIGRvZXMgc3l6Ym90IGhhdmUgYSBgcWNvbWAgdGFyZ2V0IG9yIHRlc3RzIEFSTTY0PyBZZXMsIHN5emJvdCBkb2VzIHRlc3QgQVJNNjQgYW5kIEFSTS4gSWYgc3l6Ym90IGZvdW5kIGl0LCBpdCYjMzk7cyBkZWZpbml0ZWx5IHJlYWNoYWJsZS4KClRoZSBwYXRjaCBpdHNlbGYgYWRkcyBhIGxlbmd0aCBjaGVjayB0byBgd2NuMzZ4eF9zbWRfcnNwX3Byb2Nlc3NgLiBUaGUgbmV4dCBzdGVwIGlzIGNsZWFyOiBJIG5lZWQgdG8gZGlnIGludG8gdGhlIGB3Y24zNnh4X3NtZF9yc3BfcHJvY2Vzc2AgZnVuY3Rpb24gdG8gdW5kZXJzdGFuZCB0aGUgc3Vycm91bmRpbmcgY29kZSBhbmQgZGV0ZXJtaW5lIHRoZSBzY29wZSBvZiB0aGlzIGNoYW5nZSwgYW5kIHNlZSB3aGF0IGZ1bmN0aW9ucyB0aGUgY3VycmVudCBjb2RlIGNhbGxzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNiAxODo1NTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L3NtZC5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMzI0OCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA1MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDszMjQ4Olx0aW50IHdjbjM2eHhfc21kX3JzcF9wcm9jZXNzKHN0cnVjdCBycG1zZ19kZXZpY2UgKnJwZGV2LFxuMzI0OTpcdFx0XHRcdCAgICB2b2lkICpidWYsIGludCBsZW4sIHZvaWQgKnByaXYsIHUzMiBhZGRyKVxuMzI1MDpcdHtcbjMyNTE6XHRcdGNvbnN0IHN0cnVjdCB3Y24zNnh4X2hhbF9tc2dfaGVhZGVyICptc2dfaGVhZGVyID0gYnVmO1xuMzI1MjpcdFx0c3RydWN0IGllZWU4MDIxMV9odyAqaHcgPSBwcml2O1xuMzI1MzpcdFx0c3RydWN0IHdjbjM2eHggKndjbiA9IGh3LVx1MDAzZXByaXY7XG4zMjU0Olx0XHRzdHJ1Y3Qgd2NuMzZ4eF9oYWxfaW5kX21zZyAqbXNnX2luZDtcbjMyNTU6XHRcdHdjbjM2eHhfZGJnX2R1bXAoV0NOMzZYWF9EQkdfU01EX0RVTVAsIFwmIzM0O1NNRCBcdTAwM2NcdTAwM2NcdTAwM2MgXCYjMzQ7LCBidWYsIGxlbik7XG4zMjU2Olx0XG4zMjU3Olx0XHRpZiAobGVuIFx1MDAzYyBzaXplb2YoKm1zZ19oZWFkZXIpKSB7XG4zMjU4Olx0XHRcdHdjbjM2eHhfd2FybihcJiMzNDtDb3JydXB0ZWQgSEFMIG1lc3NhZ2U6IGxlbmd0aCAlZFxcblwmIzM0OywgbGVuKTtcbjMyNTk6XHRcdFx0cmV0dXJuIDA7XG4zMjYwOlx0XHR9XG4zMjYxOlx0XG4zMjYyOlx0XHRzd2l0Y2ggKG1zZ19oZWFkZXItXHUwMDNlbXNnX3R5cGUpIHtcbjMyNjM6XHRcdGNhc2UgV0NOMzZYWF9IQUxfU1RBUlRfUlNQOlxuMzI2NDpcdFx0Y2FzZSBXQ04zNlhYX0hBTF9DT05GSUdfU1RBX1JTUDpcbjMyNjU6XHRcdGNhc2UgV0NOMzZYWF9IQUxfQ09ORklHX0JTU19SU1A6XG4zMjY2Olx0XHRjYXNlIFdDTjM2WFhfSEFMX0FERF9TVEFfU0VMRl9SU1A6XG4zMjY3Olx0XHRjYXNlIFdDTjM2WFhfSEFMX1NUT1BfUlNQOlxuMzI2ODpcdFx0Y2FzZSBXQ04zNlhYX0hBTF9ERUxfU1RBX1NFTEZfUlNQOlxuMzI2OTpcdFx0Y2FzZSBXQ04zNlhYX0hBTF9ERUxFVEVfU1RBX1JTUDpcbjMyNzA6XHRcdGNhc2UgV0NOMzZYWF9IQUxfSU5JVF9TQ0FOX1JTUDpcbjMyNzE6XHRcdGNhc2UgV0NOMzZYWF9IQUxfU1RBUlRfU0NBTl9SU1A6XG4zMjcyOlx0XHRjYXNlIFdDTjM2WFhfSEFMX0VORF9TQ0FOX1JTUDpcbjMyNzM6XHRcdGNhc2UgV0NOMzZYWF9IQUxfRklOSVNIX1NDQU5fUlNQOlxuMzI3NDpcdFx0Y2FzZSBXQ04zNlhYX0hBTF9ET1dOTE9BRF9OVl9SU1A6XG4zMjc1Olx0XHRjYXNlIFdDTjM2WFhfSEFMX0RFTEVURV9CU1NfUlNQOlxuMzI3NjpcdFx0Y2FzZSBXQ04zNlhYX0hBTF9TRU5EX0JFQUNPTl9SU1A6XG4zMjc3Olx0XHRjYXNlIFdDTjM2WFhfSEFMX1NFVF9MSU5LX1NUX1JTUDpcbjMyNzg6XHRcdGNhc2UgV0NOMzZYWF9IQUxfVVBEQVRFX1BST0JFX1JTUF9URU1QTEFURV9SU1A6XG4zMjc5Olx0XHRjYXNlIFdDTjM2WFhfSEFMX1NFVF9CU1NLRVlfUlNQOlxuMzI4MDpcdFx0Y2FzZSBXQ04zNlhYX0hBTF9TRVRfU1RBS0VZX1JTUDpcbjMyODE6XHRcdGNhc2UgV0NOMzZYWF9IQUxfUk1WX1NUQUtFWV9SU1A6XG4zMjgyOlx0XHRjYXNlIFdDTjM2WFhfSEFMX1JNVl9CU1NLRVlfUlNQOlxuMzI4MzpcdFx0Y2FzZSBXQ04zNlhYX0hBTF9FTlRFUl9CTVBTX1JTUDpcbjMyODQ6XHRcdGNhc2UgV0NOMzZYWF9IQUxfU0VUX1BPV0VSX1BBUkFNU19SU1A6XG4zMjg1Olx0XHRjYXNlIFdDTjM2WFhfSEFMX0VYSVRfQk1QU19SU1A6XG4zMjg2Olx0XHRjYXNlIFdDTjM2WFhfSEFMX0tFRVBfQUxJVkVfUlNQOlxuMzI4NzpcdFx0Y2FzZSBXQ04zNlhYX0hBTF9EVU1QX0NPTU1BTkRfUlNQOlxuMzI4ODpcdFx0Y2FzZSBXQ04zNlhYX0hBTF9BRERfQkFfU0VTU0lPTl9SU1A6XG4zMjg5Olx0XHRjYXNlIFdDTjM2WFhfSEFMX0FERF9CQV9SU1A6XG4zMjkwOlx0XHRjYXNlIFdDTjM2WFhfSEFMX0RFTF9CQV9SU1A6XG4zMjkxOlx0XHRjYXNlIFdDTjM2WFhfSEFMX0dFVF9TVEFUU19SU1A6XG4zMjkyOlx0XHRjYXNlIFdDTjM2WFhfSEFMX1RSSUdHRVJfQkFfUlNQOlxuMzI5MzpcdFx0Y2FzZSBXQ04zNlhYX0hBTF9VUERBVEVfQ0ZHX1JTUDpcbjMyOTQ6XHRcdGNhc2UgV0NOMzZYWF9IQUxfSk9JTl9SU1A6XG4zMjk1Olx0XHRjYXNlIFdDTjM2WFhfSEFMX1VQREFURV9TQ0FOX1BBUkFNX1JTUDpcbjMyOTY6XHRcdGNhc2UgV0NOMzZYWF9IQUxfQ0hfU1dJVENIX1JTUDpcbjMyOTc6XHRcdGNhc2UgV0NOMzZYWF9IQUxfUFJPQ0VTU19QVFRfUlNQOlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNiAxODo1NTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMDY5MgoJCQkJCQkJb3V0cHV0OiA0NwoJCQkJCQkJdGhvdWdodHM6IDM1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQmIzM5O3MgaW5uZXIgbW9ub2xvZ3VlOgoKKipGb2N1c2luZyBvbiB0aGUgUmVzcG9uc2UgUHJvY2Vzc2luZyoqCgpSaWdodCwgdGhlIGB3Y24zNnh4X3NtZF9yc3BfcHJvY2Vzc2AgZnVuY3Rpb24uIFRoYXQmIzM5O3MgdGhlIGxpa2VseSBrZXkgdG8gdW5kZXJzdGFuZGluZyBob3cgdGhlIGRyaXZlciBoYW5kbGVzIHJlc3BvbnNlcy4gTXkgaW5pdGlhbCBpbnN0aW5jdCBpcyB0byBob25lIGluIG9uIHRoaXMgb25lLiBCdXQsIGJlZm9yZSBJIGdldCB0b28gZGVlcCwgbGV0JiMzOTtzIHRha2UgYSBxdWljayBsb29rIGFyb3VuZCB0aGUgY29kZWJhc2UuIEkgbmVlZCB0byBtYWtlIHN1cmUgSSYjMzk7bSBub3QgbWlzc2luZyBhbnkgb3RoZXIgcmVsYXRlZCBmdW5jdGlvbnMuIFRoZXJlIGNvdWxkIGJlIG90aGVycyB0aGF0IGludGVyYWN0IHdpdGggaXQsIG9yIG1heWJlIGV2ZW4gcHJlLXByb2Nlc3MgdGhlIGRhdGEgYmVmb3JlIGl0JiMzOTtzIHNlbnQgdG8gdGhpcyBmdW5jdGlvbi4gQSBxdWljayBzY2FuIHdpbGwgY29uZmlybSBteSBpbml0aWFsIGh5cG90aGVzaXMgYW5kIHByZXZlbnQgd2FzdGVkIHRpbWUuIEkgd2lsbCBjaGVjayBmb3IgcmVsYXRlZCBmdW5jdGlvbnMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDE4OjU1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvc21kLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAzMjk4LAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDUwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OzMyOTg6XHRcdGNhc2UgV0NOMzZYWF9IQUxfRkVBVFVSRV9DQVBTX0VYQ0hBTkdFX1JTUDpcbjMyOTk6XHRcdGNhc2UgV0NOMzZYWF9IQUxfODAyM19NVUxUSUNBU1RfTElTVF9SU1A6XG4zMzAwOlx0XHRjYXNlIFdDTjM2WFhfSEFMX1NUQVJUX1NDQU5fT0ZGTE9BRF9SU1A6XG4zMzAxOlx0XHRjYXNlIFdDTjM2WFhfSEFMX1NUT1BfU0NBTl9PRkZMT0FEX1JTUDpcbjMzMDI6XHRcdGNhc2UgV0NOMzZYWF9IQUxfSE9TVF9PRkZMT0FEX1JTUDpcbjMzMDM6XHRcdGNhc2UgV0NOMzZYWF9IQUxfR1RLX09GRkxPQURfUlNQOlxuMzMwNDpcdFx0Y2FzZSBXQ04zNlhYX0hBTF9HVEtfT0ZGTE9BRF9HRVRJTkZPX1JTUDpcbjMzMDU6XHRcdGNhc2UgV0NOMzZYWF9IQUxfSE9TVF9SRVNVTUVfUlNQOlxuMzMwNjpcdFx0Y2FzZSBXQ04zNlhYX0hBTF9FTlRFUl9JTVBTX1JTUDpcbjMzMDc6XHRcdGNhc2UgV0NOMzZYWF9IQUxfRVhJVF9JTVBTX1JTUDpcbjMzMDg6XHRcdGNhc2UgV0NOMzZYWF9IQUxfVVBEQVRFX0NIQU5ORUxfTElTVF9SU1A6XG4zMzA5Olx0XHRjYXNlIFdDTjM2WFhfSEFMX0FERF9CQ05fRklMVEVSX1JTUDpcbjMzMTA6XHRcdFx0aWYgKGxlbiBcdTAwM2UgV0NOMzZYWF9IQUxfQlVGX1NJWkUpIHtcbjMzMTE6XHRcdFx0XHR3Y24zNnh4X3dhcm4oXCYjMzQ7SEFMIHJlc3BvbnNlIHRvbyBsYXJnZTogJWRcXG5cJiMzNDssIGxlbik7XG4zMzEyOlx0XHRcdFx0YnJlYWs7XG4zMzEzOlx0XHRcdH1cbjMzMTQ6XHRcdFx0bWVtY3B5KHdjbi1cdTAwM2VoYWxfYnVmLCBidWYsIGxlbik7XG4zMzE1Olx0XHRcdHdjbi1cdTAwM2VoYWxfcnNwX2xlbiA9IGxlbjtcbjMzMTY6XHRcdFx0Y29tcGxldGUoXHUwMDI2d2NuLVx1MDAzZWhhbF9yc3BfY29tcGwpO1xuMzMxNzpcdFx0XHRicmVhaztcbjMzMTg6XHRcbjMzMTk6XHRcdGNhc2UgV0NOMzZYWF9IQUxfQ09FWF9JTkQ6XG4zMzIwOlx0XHRjYXNlIFdDTjM2WFhfSEFMX0FWT0lEX0ZSRVFfUkFOR0VfSU5EOlxuMzMyMTpcdFx0Y2FzZSBXQ04zNlhYX0hBTF9ERUxfQkFfSU5EOlxuMzMyMjpcdFx0Y2FzZSBXQ04zNlhYX0hBTF9PVEFfVFhfQ09NUExfSU5EOlxuMzMyMzpcdFx0Y2FzZSBXQ04zNlhYX0hBTF9NSVNTRURfQkVBQ09OX0lORDpcbjMzMjQ6XHRcdGNhc2UgV0NOMzZYWF9IQUxfREVMRVRFX1NUQV9DT05URVhUX0lORDpcbjMzMjU6XHRcdGNhc2UgV0NOMzZYWF9IQUxfUFJJTlRfUkVHX0lORk9fSU5EOlxuMzMyNjpcdFx0Y2FzZSBXQ04zNlhYX0hBTF9TQ0FOX09GRkxPQURfSU5EOlxuMzMyNzpcdFx0XHRtc2dfaW5kID0ga21hbGxvY19mbGV4KCptc2dfaW5kLCBtc2csIGxlbiwgR0ZQX0FUT01JQyk7XG4zMzI4Olx0XHRcdGlmICghbXNnX2luZCkge1xuMzMyOTpcdFx0XHRcdHdjbjM2eHhfZXJyKFwmIzM0O1J1biBvdXQgb2YgbWVtb3J5IHdoaWxlIGhhbmRsaW5nIFNNRF9FVkVOVCAoJWQpXFxuXCYjMzQ7LFxuMzMzMDpcdFx0XHRcdFx0ICAgIG1zZ19oZWFkZXItXHUwMDNlbXNnX3R5cGUpO1xuMzMzMTpcdFx0XHRcdHJldHVybiAtRU5PTUVNO1xuMzMzMjpcdFx0XHR9XG4zMzMzOlx0XG4zMzM0Olx0XHRcdG1zZ19pbmQtXHUwMDNlbXNnX2xlbiA9IGxlbjtcbjMzMzU6XHRcdFx0bWVtY3B5KG1zZ19pbmQtXHUwMDNlbXNnLCBidWYsIGxlbik7XG4zMzM2Olx0XG4zMzM3Olx0XHRcdHNwaW5fbG9jayhcdTAwMjZ3Y24tXHUwMDNlaGFsX2luZF9sb2NrKTtcbjMzMzg6XHRcdFx0bGlzdF9hZGRfdGFpbChcdTAwMjZtc2dfaW5kLVx1MDAzZWxpc3QsIFx1MDAyNndjbi1cdTAwM2VoYWxfaW5kX3F1ZXVlKTtcbjMzMzk6XHRcdFx0cXVldWVfd29yayh3Y24tXHUwMDNlaGFsX2luZF93cSwgXHUwMDI2d2NuLVx1MDAzZWhhbF9pbmRfd29yayk7XG4zMzQwOlx0XHRcdHNwaW5fdW5sb2NrKFx1MDAyNndjbi1cdTAwM2VoYWxfaW5kX2xvY2spO1xuMzM0MTpcdFx0XHR3Y24zNnh4X2RiZyhXQ04zNlhYX0RCR19IQUwsIFwmIzM0O2luZGljYXRpb24gYXJyaXZlZFxcblwmIzM0Oyk7XG4zMzQyOlx0XHRcdGJyZWFrO1xuMzM0MzpcdFx0ZGVmYXVsdDpcbjMzNDQ6XHRcdFx0d2NuMzZ4eF9lcnIoXCYjMzQ7U01EX0VWRU5UICglZCkgbm90IHN1cHBvcnRlZFxcblwmIzM0OyxcbjMzNDU6XHRcdFx0XHQgICAgICBtc2dfaGVhZGVyLVx1MDAzZW1zZ190eXBlKTtcbjMzNDY6XHRcdH1cbjMzNDc6XHRcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMTg6NTU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzE5NDQKCQkJCQkJCW91dHB1dDogNDIKCQkJCQkJCXRob3VnaHRzOiAxMDgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBTTUQgUmVzcG9uc2UgUHJvY2Vzc2luZyBGdW5jdGlvbioqCgpPa2F5LCBzbyB0aGUgaXNzdWUgSSYjMzk7bSBsb29raW5nIGF0IHJldm9sdmVzIGFyb3VuZCBhIGZ1bmN0aW9uIGNhbGxlZCBgd2NuMzZ4eF9zbWRfcnNwX3Byb2Nlc3NgLiBJJiMzOTttIHByZXR0eSBzdXJlIHRoYXQmIzM5O3Mgd2hlcmUgdGhlIGluY29taW5nIG1lc3NhZ2VzIGZyb20gdGhlIFNNRCBjaGFubmVsIGFyZSBoYW5kbGVkLiBJJiMzOTt2ZSBjb25maXJtZWQgdGhhdCBpdCYjMzk7cyBhY3R1YWxseSByZWFjaGFibGUgYW5kIHRoYXQgaXQmIzM5O3Mgd29ya2luZyBhcyBleHBlY3RlZC4gTGV0JiMzOTtzIG1hcmsgaXQgYXMgYSB0YXJnZXQgZm9yIGZ1enppbmcg4oCTIEkmIzM5O2xsIHNldCBgV29ydGhGdXp6aW5nPXRydWVgLgoKRm9yIHRoZSBmb2N1cyBzeW1ib2xzLCBJJiMzOTtsbCBkZWZpbml0ZWx5IHNwZWNpZnkgYHdjbjM2eHhfc21kX3JzcF9wcm9jZXNzYC4gV2UgbmVlZCB0byBkZWZpbmUgc29tZSBzcGVjaWZpYyBjb25maWd1cmF0aW9ucyBmb3IgZnV6emluZyBzbyBsZXQmIzM5O3MgdXNlIGBXQ04zNlhYYCwgYFFDT01fV0NOU1NfQ1RSTGAsIGFuZCBgUlBNU0dgLgoKQmVmb3JlIEkgZGlnIGluIHRvbyBkZWVwIEkgc2hvdWxkIHByb2JhYmx5IGRvdWJsZSBjaGVjayB0aGUgS2NvbmZpZyBmb3IgYFdDTjM2WFhgIGFuZCBtYWtlIHN1cmUgaXQmIzM5O3Mgc2V0IHVwIGNvcnJlY3RseS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMTg6NTY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAyMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgICAxOlx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogSVNDXG4gICAyOlx0Y29uZmlnIFdDTjM2WFhcbiAgIDM6XHRcdHRyaXN0YXRlIFwmIzM0O1F1YWxjb21tIEF0aGVyb3MgV0NOMzY2MC8zNjgwIHN1cHBvcnRcJiMzNDtcbiAgIDQ6XHRcdGRlcGVuZHMgb24gTUFDODAyMTEgXHUwMDI2XHUwMDI2IEhBU19ETUFcbiAgIDU6XHRcdGRlcGVuZHMgb24gUUNPTV9XQ05TU19DVFJMIHx8IFFDT01fV0NOU1NfQ1RSTD1uXG4gICA2Olx0XHRkZXBlbmRzIG9uIFJQTVNHIHx8IFJQTVNHPW5cbiAgIDc6XHRcdGhlbHBcbiAgIDg6XHRcdCAgVGhpcyBtb2R1bGUgYWRkcyBzdXBwb3J0IGZvciB3aXJlbGVzcyBhZGFwdGVycyBiYXNlZCBvblxuICAgOTpcdFx0ICBRdWFsY29tbSBBdGhlcm9zIFdDTjM2NjAgYW5kIFdDTjM2ODAgbW9iaWxlIGNoaXBzZXRzLlxuICAxMDpcdFxuICAxMTpcdFx0ICBJZiB5b3UgY2hvb3NlIHRvIGJ1aWxkIGEgbW9kdWxlLCBpdCYjMzk7bGwgYmUgY2FsbGVkIHdjbjM2eHguXG4gIDEyOlx0XG4gIDEzOlx0Y29uZmlnIFdDTjM2WFhfREVCVUdGU1xuICAxNDpcdFx0Ym9vbCBcJiMzNDtXQ04zNlhYIGRlYnVnZnMgc3VwcG9ydFwmIzM0O1xuICAxNTpcdFx0ZGVwZW5kcyBvbiBXQ04zNlhYXG4gIDE2Olx0XHRoZWxwXG4gIDE3Olx0XHQgIEVuYWJsZWQgZGVidWdmcyBzdXBwb3J0XG4gIDE4Olx0XG4gIDE5Olx0XHQgIElmIHVuc3VyZSwgc2F5IFkgdG8gbWFrZSBpdCBlYXNpZXIgdG8gZGVidWcgcHJvYmxlbXMuXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDE4OjU2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMyNTg0CgkJCQkJCQlvdXRwdXQ6IDIzCgkJCQkJCQl0aG91Z2h0czogODMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBXaS1GaSBEcml2ZXIgRGVwZW5kZW5jeSoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBkcml2ZXIgYW5kIGltbWVkaWF0ZWx5LCB0aGUgZGVwZW5kZW5jaWVzIGFyZSBqdW1waW5nIG91dC4gSXQgaGluZ2VzIG9uIGBNQUM4MDIxMWAgYW5kIGBIQVNfRE1BYCwgd2hpY2ggbWFrZXMgc2Vuc2UgZm9yIGFueSBtb2Rlcm4gV2ktRmkgaW1wbGVtZW50YXRpb247IERNQSBpcyBjcml0aWNhbCBmb3IgZWZmaWNpZW50IGRhdGEgdHJhbnNmZXIuIEJ1dCB0aGVuIGl0IGFkZHMgYFFDT01fV0NOU1NfQ1RSTCB8fCBRQ09NX1dDTlNTX0NUUkw9bmAuIFRoYXQgc2Vjb25kIHBhcnQgaXMgd2hhdCBjYXRjaGVzIG15IGV5ZS4gSWYgYFFDT01fV0NOU1NfQ1RSTGAgaXMgKnNldCB0byBmYWxzZSosIGhvdyB0aGUgaGVsbCBkb2VzIHRoaXMgdGhpbmcgZXZlbiBmdW5jdGlvbj8gSXQgc2VlbXMgY291bnRlci1pbnR1aXRpdmUgdG8gaGF2ZSBhIGRlcGVuZGVuY3kgdGhhdCBkaXNhYmxlcyB0aGUgY29yZSBmdW5jdGlvbmFsaXR5LiBJIG5lZWQgdG8gZ2V0IHRvIHRoZSBib3R0b20gb2YgdGhpcy4gUmlnaHQsIGxldCYjMzk7cyBkaXZlIGludG8gdGhlIEtjb25maWcgZm9yIGBkcml2ZXJzL3NvYy9xY29tL3djbnNzX2N0cmwuY2AgYW5kIGZpZ3VyZSBvdXQgd2hhdCYjMzk7cyByZWFsbHkgZ29pbmcgb24gdGhlcmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDE4OjU2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBRQ09NX1dDTlNTX0NUUkwmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9zb2MvcWNvbS9LY29uZmlnPTIzOT1jb25maWcgUUNPTV9TVEFUU1xuLS1cbmRyaXZlcnMvc29jL3Fjb20vS2NvbmZpZy0yNDktXG5kcml2ZXJzL3NvYy9xY29tL0tjb25maWc6MjUwOmNvbmZpZyBRQ09NX1dDTlNTX0NUUkxcbmRyaXZlcnMvc29jL3Fjb20vS2NvbmZpZy0yNTEtXHR0cmlzdGF0ZSBcJiMzNDtRdWFsY29tbSBXQ05TUyBjb250cm9sIGRyaXZlclwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNiAxODo1NjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMjk4MAoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDE1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIGEgc3VtbWFyeSBvZiBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIEkgd2VyZSB0aGUgb25lIHRoaW5raW5nIGl0OgoKKipEaXZpbmcgaW50byB0aGUgUUNPTSBTb0MgRHJpdmVyIENvbmZpZ3VyYXRpb24qKgoKT2theSwgdGltZSB0byBnZXQgbXkgaGFuZHMgZGlydHkuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIHRoZSBRdWFsY29tbSBTeXN0ZW0tb24tQ2hpcCAoU29DKSBkcml2ZXJzLiBNeSBmb2N1cyBpcyBnb2luZyB0byBiZSBvbiB0aGUgYGRyaXZlcnMvc29jL3Fjb20vS2NvbmZpZ2AgZmlsZS4gVGhpcyBpcyB3aGVyZSBJIGV4cGVjdCB0byBmaW5kIHRoZSBtZWF0IG9mIHRoZSBkcml2ZXIgc2VsZWN0aW9uIGFuZCBmZWF0dXJlIGVuYWJsZW1lbnQgZm9yIHRoZXNlIFFDT00gZGV2aWNlcy4gVGhpcyBLY29uZmlnIGZpbGUgd2lsbCBkZWZpbmUgdGhlIGRlcGVuZGVuY2llcywgc3ltYm9scywgYW5kIGhlbHAgdGV4dCB0aGF0IHVzZXJzIHdpbGwgc2VlIHdoZW4gdGhleSBjb25maWd1cmUgdGhlaXIga2VybmVsIGZvciBhIFF1YWxjb21tLWJhc2VkIHN5c3RlbS4gSSBhbnRpY2lwYXRlIHNlZWluZyB0aGluZ3MgbGlrZToKCiogICAqKkNoaXBzZXQtc3BlY2lmaWMgb3B0aW9uczoqKiBJIGV4cGVjdCBkaWZmZXJlbnQgYGNvbmZpZ2Agb3B0aW9ucyBmb3IgZGlmZmVyZW50IFNuYXBkcmFnb24gdmFyaWFudHMgKGUuZy4sIDggR2VuIDEsIDg4OCwgZXRjLiksIHdoaWNoIHdpbGwgZW5hYmxlIHRoZSBhcHByb3ByaWF0ZSBkcml2ZXJzIGZvciBzcGVjaWZpYyBoYXJkd2FyZSBmZWF0dXJlcyB3aXRoaW4gdGhvc2UgU29Dcy4KKiAgICoqUGVyaXBoZXJhbCBlbmFibGVtZW50czoqKiBJJiMzOTtsbCBiZSBsb29raW5nIGZvciBjb25maWd1cmF0aW9uIG9wdGlvbnMgcmVsYXRlZCB0byBpbmRpdmlkdWFsIHBlcmlwaGVyYWxzLCBsaWtlIHRoZSBjYW1lcmEgaW50ZXJmYWNlLCBkaXNwbGF5IGNvbnRyb2xsZXJzLCBhdWRpbyBjb2RlY3MsIFVTQiBjb250cm9sbGVycywgYW5kIG1lbW9yeSBjb250cm9sbGVycy4gVGhlc2Ugd2lsbCBsaWtlbHkgaGF2ZSBhc3NvY2lhdGVkIGRlcGVuZGVuY2llcyBvbiBvdGhlciBLY29uZmlnIHN5bWJvbHMgYW5kIGJvYXJkIGNvbmZpZ3VyYXRpb25zLgoqICAgKipQb3dlciBtYW5hZ2VtZW50IGNvbnNpZGVyYXRpb25zOioqIEdpdmVuIHRoZSBpbXBvcnRhbmNlIG9mIHBvd2VyIGVmZmljaWVuY3kgaW4gbW9iaWxlIGRldmljZXMsIEkgZnVsbHkgZXhwZWN0IHRvIGZpbmQgYSBzZWN0aW9uIHJlbGF0ZWQgdG8gcG93ZXIgbWFuYWdlbWVudCBmZWF0dXJlcywgaW5jbHVkaW5nIGNsb2Nrcywgdm9sdGFnZSByZWd1bGF0b3JzLCBhbmQgdGhlcm1hbCBtYW5hZ2VtZW50LiBUaGUgS2NvbmZpZyBmaWxlIHdpbGwgZ3VpZGUgd2hpY2ggZmVhdHVyZXMgSSBjYW4gdG9nZ2xlLgoqICAgKipEb2N1bWVudGF0aW9uIGFuZCBIZWxwIFRleHQ6KiogSSBuZWVkIHRvIHBheSBjbG9zZSBhdHRlbnRpb24gdG8gdGhlIGhlbHAgdGV4dCBhc3NvY2lhdGVkIHdpdGggZWFjaCBjb25maWd1cmF0aW9uIG9wdGlvbi4gVGhpcyBpcyBjcml0aWNhbCBmb3IgdW5kZXJzdGFuZGluZyB0aGUgcHVycG9zZSBvZiBlYWNoIHNldHRpbmcgYW5kIHRoZSBwb3RlbnRpYWwgaW1wbGljYXRpb25zIG9mIGVuYWJsaW5nIG9yIGRpc2FibGluZyBhIHNwZWNpZmljIGZlYXR1cmUuIFRoaXMgd2lsbCBhaWQgd2hlbiBJIGFtIGRlc2lnbmluZyB0aGUga2VybmVsIHRvIG1lZXQgcmVxdWlyZW1lbnRzLgoqICAgKipEZXBlbmRlbmNpZXMgYW5kIERlZmF1bHRzOioqIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGUgS2NvbmZpZyBmaWxlIGludGVyYWN0cyB3aXRoIG90aGVyIGNvbmZpZ3VyYXRpb24gZmlsZXMsIHN1Y2ggYXMgdGhvc2UgcmVsYXRlZCB0byB0aGUgYm9hcmQgc3VwcG9ydCBwYWNrYWdlIChCU1ApLiBBbHNvLCB0aGUgZGVwZW5kZW5jaWVzIHRoYXQgZ292ZXJuIHRoZSBhdmFpbGFiaWxpdHkgb2YgZGlmZmVyZW50IG9wdGlvbnMgYXJlIGNydWNpYWwsIGFzIHdlbGwgYXMgdGhlIGRlZmF1bHQgdmFsdWVzLgoqICAgKipBcmNoaXRlY3R1cmFsIE51YW5jZXM6KiogSSBrbm93IFF1YWxjb21tIGhhcyBpdHMgb3duIGFyY2hpdGVjdHVyYWwgcXVpcmtzLCBzbyBJJiMzOTtsbCBiZSBsb29raW5nIGZvciBjb25maWd1cmF0aW9uIGVsZW1lbnRzIHRoYXQgc3BlY2lmaWNhbGx5IGFkZHJlc3MgdGhlc2UgYXNwZWN0cyDigJMgcGVyaGFwcyByZWxhdGVkIHRvIHRoZWlyIGludGVyY29ubmVjdCBmYWJyaWMgb3IgdGhlaXIgc2VjdXJpdHkgZmVhdHVyZXMuCgpJJiMzOTttIHJlYWR5IHRvIGRpZyBpbiBhbmQgZGVjb25zdHJ1Y3QgdGhpcyBLY29uZmlnIGZpbGUsIHVuZGVyc3RhbmRpbmcgaG93IGl0IHN0ZWVycyB0aGUgc2VsZWN0aW9uIGFuZCBjb25maWd1cmF0aW9uIG9mIFFDT00gU29DIGRyaXZlcnMgd2l0aGluIHRoZSBrZXJuZWwuIEl04oCZcyB0aW1lIHRvIGZpbmQgb3V0IHdoYXQgc2VjcmV0cyB0aGlzIGZpbGUgaG9sZHMhCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDE4OjU2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9zb2MvcWNvbS9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMjUwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDEwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAyNTA6XHRjb25maWcgUUNPTV9XQ05TU19DVFJMXG4gMjUxOlx0XHR0cmlzdGF0ZSBcJiMzNDtRdWFsY29tbSBXQ05TUyBjb250cm9sIGRyaXZlclwmIzM0O1xuIDI1MjpcdFx0ZGVwZW5kcyBvbiBBUkNIX1FDT00gfHwgQ09NUElMRV9URVNUXG4gMjUzOlx0XHRkZXBlbmRzIG9uIFJQTVNHXG4gMjU0Olx0XHRoZWxwXG4gMjU1Olx0XHQgIENsaWVudCBkcml2ZXIgZm9yIHRoZSBXQ05TU19DVFJMIFNNRCBjaGFubmVsLCB1c2VkIHRvIGRvd25sb2FkIG52XG4gMjU2Olx0XHQgIGZpcm13YXJlIHRvIGEgbmV3bHkgYm9vdGVkIFdDTlNTIGNoaXAuXG4gMjU3Olx0XG4gMjU4Olx0Y29uZmlnIFFDT01fQVBSXG4gMjU5Olx0XHR0cmlzdGF0ZSBcJiMzNDtRdWFsY29tbSBBUFIvR1BSIEJ1cyAoQXN5bmNocm9ub3VzL0dlbmVyaWMgUGFja2V0IFJvdXRlcilcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40MC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMTg6NTY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzM3MTQKCQkJCQkJCW91dHB1dDogNDIKCQkJCQkJCXRob3VnaHRzOiAxMTcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBRQ09NX1dDTlNTX0NUUkwgRGVwZW5kZW5jeSoqCgpPa2F5LCBzbyBpdCBsb29rcyBsaWtlIGBRQ09NX1dDTlNTX0NUUkxgIGhhcyBhIGhhcmQgZGVwZW5kZW5jeSBvbiBgUlBNU0dgLiBUaGF0JiMzOTtzIHRoZSBiYXNlbGluZS4gTm93LCBpZiBJIGVuYWJsZSBgUUNPTV9XQ05TU19DVFJMYCwgdGhhdCBpbXBsaWVzIHRoYXQgdGhlIGB3Y24zNnh4YCBkcml2ZXIgKmNhbiogdXRpbGl6ZSBpdCwgcHJlc3VtYWJseSBmb3Igc29tZSBraW5kIG9mIGNvbnRyb2wgb3IgY29tbXVuaWNhdGlvbi4gTWFrZXMgc2Vuc2UuCgpCdXQgd2hhdCBpZiBJIGRpc2FibGUgYFFDT01fV0NOU1NfQ1RSTGA/IFRoZSBpbXBsaWNhdGlvbnMgYXJlIGltcG9ydGFudC4gVGhlIHRleHQgc3VnZ2VzdHMgdGhhdCBgd2NuMzZ4eGAgY2FuIHN0aWxsIGJlIGNvbXBpbGVkLCBidXQgZnVuY3Rpb25hbGl0eSB3aWxsIGxpa2VseSBiZSBjcmlwcGxlZC4gVGhlIGtleSBoZXJlIHNlZW1zIHRvIGJlIGBxY29tX3djbnNzX29wZW5fY2hhbm5lbGAuIElmIGBRQ09NX1dDTlNTX0NUUkxgIGlzIGRpc2FibGVkLCB0aGlzIGZ1bmN0aW9uIHByb2JhYmx5IGdldHMgc3R1YmJlZCBvdXQuIEl04oCZcyBlc3NlbnRpYWxseSByZW5kZXJlZCB1c2VsZXNzLgoKSSB0aGluayBpdOKAmXMgdGltZSB0byBkb3VibGUgY2hlY2sgdGhlIGhlYWRlciBmaWxlLiBJIG5lZWQgdG8gZGl2ZSBpbnRvIGBpbmNsdWRlL2xpbnV4L3NvYy9xY29tL3djbnNzX2N0cmwuaGAgdG8gc2VlIGV4YWN0bHkgd2hhdOKAmXMgZ29pbmcgb24gYXQgdGhhdCBsZXZlbCBhbmQgaG93IHRoYXQgZnVuY3Rpb24gaXMgYmVpbmcgaGFuZGxlZCBpbiBkaWZmZXJlbnQgY29uZmlndXJhdGlvbnMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDE4OjU2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7aW5jbHVkZS9saW51eC9zb2MvcWNvbS93Y25zc19jdHJsLmgmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDIwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgIDE6XHQvKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMCAqL1xuICAgMjpcdCNpZm5kZWYgX19XQ05TU19DVFJMX0hfX1xuICAgMzpcdCNkZWZpbmUgX19XQ05TU19DVFJMX0hfX1xuICAgNDpcdFxuICAgNTpcdCNpbmNsdWRlIFx1MDAzY2xpbnV4L3JwbXNnLmhcdTAwM2VcbiAgIDY6XHRcbiAgIDc6XHQjaWYgSVNfRU5BQkxFRChDT05GSUdfUUNPTV9XQ05TU19DVFJMKVxuICAgODpcdFxuICAgOTpcdHN0cnVjdCBycG1zZ19lbmRwb2ludCAqcWNvbV93Y25zc19vcGVuX2NoYW5uZWwodm9pZCAqd2Nuc3MsIGNvbnN0IGNoYXIgKm5hbWUsXG4gIDEwOlx0XHRcdFx0XHRcdCAgICAgICBycG1zZ19yeF9jYl90IGNiLCB2b2lkICpwcml2KTtcbiAgMTE6XHRcbiAgMTI6XHQjZWxzZVxuICAxMzpcdFxuICAxNDpcdHN0YXRpYyBzdHJ1Y3QgcnBtc2dfZW5kcG9pbnQgKnFjb21fd2Nuc3Nfb3Blbl9jaGFubmVsKHZvaWQgKndjbnNzLFxuICAxNTpcdFx0XHRcdFx0XHRcdCAgICAgIGNvbnN0IGNoYXIgKm5hbWUsXG4gIDE2Olx0XHRcdFx0XHRcdFx0ICAgICAgcnBtc2dfcnhfY2JfdCBjYixcbiAgMTc6XHRcdFx0XHRcdFx0XHQgICAgICB2b2lkICpwcml2KVxuICAxODpcdHtcbiAgMTk6XHRcdFdBUk5fT04oMSk7XG4gIDIwOlx0XHRyZXR1cm4gRVJSX1BUUigtRU5YSU8pO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNiAxODo1NjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNDQwOAoJCQkJCQkJb3V0cHV0OiAxNwoJCQkJCQkJdGhvdWdodHM6IDE2NwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBDb25maWd1cmF0aW9uIE11c2luZ3MqKgoKUmlnaHQsIHNvIEkmIzM5O20gZGlnZ2luZyBpbnRvIHRoaXMgY29kZSBhbmQgaXQmIzM5O3MgcHJldHR5IGNsZWFyOiBpZiBgQ09ORklHX1FDT01fV0NOU1NfQ1RSTGAgaXNuJiMzOTt0IGVuYWJsZWQsIHdlJiMzOTtyZSBnb2luZyB0byBnZXQgYSBgLUVOWElPYCBlcnJvciBmcm9tIGBxY29tX3djbnNzX29wZW5fY2hhbm5lbGAgYW5kIGEgcmF0aGVyIGFubm95aW5nIGBXQVJOX09OKDEpYC4gVGhhdCYjMzk7cyBhIG5vLWdvLiBUaGVyZWZvcmUsIHdlICphYnNvbHV0ZWx5KiBuZWVkIGBRQ09NX1dDTlNTX0NUUkxgIGVuYWJsZWQuIAoKTm93LCBJIHJlbWVtYmVyIGZyb20gdGhlIGJ1aWxkIGNvbmZpZyB0aGF0IGBRQ09NX1dDTlNTX0NUUkxgIGRlcGVuZHMgb24gYFJQTVNHYC4gRmluZSwgbm8gcHJvYmxlbSwgYWRkIHRoYXQgdG8gdGhlIGxpc3QuIFRoYXQgbWVhbnMgaW4gbXkgYEVuYWJsZUNvbmZpZ3NgIEkmIzM5O20gZGVmaW5pdGVseSBnb2luZyB0byBuZWVkIGBXQ04zNlhYYCwgYFFDT01fV0NOU1NfQ1RSTGAsIGFuZCBgUlBNU0dgLgoKSGFuZyBvbiBhIHNlY29uZC4gYFdDTjM2WFhgIGhhcyBkZXBlbmRlbmNpZXMgdG9vISBTcGVjaWZpY2FsbHksIGl0IHJlcXVpcmVzIGJvdGggYE1BQzgwMjExYCBhbmQgYEhBU19ETUFgLiBTbywgSSBuZWVkIHRvIGJlIHN1cmUgdG8gaW5jbHVkZSBgTUFDODAyMTFgIGluIHRoZSBjb25maWd1cmF0aW9uIGFzIHdlbGwuIAoKT2theSwgbGV0JiMzOTtzIGp1c3QgbWFrZSBzdXJlIHRoZXJlIGFyZW4mIzM5O3QgYW55IHNuZWFreSBkZXBlbmRlbmNpZXMgdGllZCB0byBgUlBNU0dgIG5vdyB0aGF0IEkmIzM5O20gaGVyZS4gQ2FuJiMzOTt0IGJlIHRvbyBjYXJlZnVsLCByaWdodD8KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40My8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMTg6NTY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIFJQTVNHJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3d3YW4vS2NvbmZpZz02NT1jb25maWcgUUNPTV9CQU1fRE1VWFxuLS1cbmRyaXZlcnMvbmV0L3d3YW4vS2NvbmZpZy03Ny1cbmRyaXZlcnMvbmV0L3d3YW4vS2NvbmZpZzo3ODpjb25maWcgUlBNU0dfV1dBTl9DVFJMXG5kcml2ZXJzL25ldC93d2FuL0tjb25maWctNzktXHR0cmlzdGF0ZSBcJiMzNDtSUE1TRyBXV0FOIGNvbnRyb2wgZHJpdmVyXCYjMzQ7XG4tLVxuZHJpdmVycy9ycG1zZy9LY29uZmlnPTM9bWVudSBcJiMzNDtScG1zZyBkcml2ZXJzXCYjMzQ7XG4tLVxuZHJpdmVycy9ycG1zZy9LY29uZmlnLTUtIyBSUE1TRyBhbHdheXMgZ2V0cyBzZWxlY3RlZCBieSB3aG9ldmVyIHdhbnRzIGl0XG5kcml2ZXJzL3JwbXNnL0tjb25maWc6Njpjb25maWcgUlBNU0dcbmRyaXZlcnMvcnBtc2cvS2NvbmZpZy03LVx0dHJpc3RhdGVcbmRyaXZlcnMvcnBtc2cvS2NvbmZpZy04LVxuZHJpdmVycy9ycG1zZy9LY29uZmlnOjk6Y29uZmlnIFJQTVNHX0NIQVJcbmRyaXZlcnMvcnBtc2cvS2NvbmZpZy0xMC1cdHRyaXN0YXRlIFwmIzM0O1JQTVNHIGRldmljZSBpbnRlcmZhY2VcJiMzNDtcbi0tXG5kcml2ZXJzL3JwbXNnL0tjb25maWctMTctXG5kcml2ZXJzL3JwbXNnL0tjb25maWc6MTg6Y29uZmlnIFJQTVNHX0NUUkxcbmRyaXZlcnMvcnBtc2cvS2NvbmZpZy0xOS1cdHRyaXN0YXRlIFwmIzM0O1JQTVNHIGNvbnRyb2wgaW50ZXJmYWNlXCYjMzQ7XG4tLVxuZHJpdmVycy9ycG1zZy9LY29uZmlnLTI1LVxuZHJpdmVycy9ycG1zZy9LY29uZmlnOjI2OmNvbmZpZyBSUE1TR19OU1xuZHJpdmVycy9ycG1zZy9LY29uZmlnLTI3LVx0dHJpc3RhdGUgXCYjMzQ7UlBNU0cgbmFtZSBzZXJ2aWNlIGFubm91bmNlbWVudFwmIzM0O1xuLS1cbmRyaXZlcnMvcnBtc2cvS2NvbmZpZy0zMy1cbmRyaXZlcnMvcnBtc2cvS2NvbmZpZzozNDpjb25maWcgUlBNU0dfTVRLX1NDUFxuZHJpdmVycy9ycG1zZy9LY29uZmlnLTM1LVx0dHJpc3RhdGUgXCYjMzQ7TWVkaWFUZWsgU0NQXCYjMzQ7XG4tLVxuZHJpdmVycy9ycG1zZy9LY29uZmlnLTQyLVxuZHJpdmVycy9ycG1zZy9LY29uZmlnOjQzOmNvbmZpZyBSUE1TR19RQ09NX0dMSU5LXG5kcml2ZXJzL3JwbXNnL0tjb25maWctNDQtXHR0cmlzdGF0ZVxuLS1cbmRyaXZlcnMvcnBtc2cvS2NvbmZpZy00Ni1cbmRyaXZlcnMvcnBtc2cvS2NvbmZpZzo0Nzpjb25maWcgUlBNU0dfUUNPTV9HTElOS19SUE1cbmRyaXZlcnMvcnBtc2cvS2NvbmZpZy00OC1cdHRyaXN0YXRlIFwmIzM0O1F1YWxjb21tIFJQTSBHbGluayBkcml2ZXJcJiMzNDtcbi0tXG5kcml2ZXJzL3JwbXNnL0tjb25maWctNTYtXG5kcml2ZXJzL3JwbXNnL0tjb25maWc6NTc6Y29uZmlnIFJQTVNHX1FDT01fR0xJTktfU01FTVxuZHJpdmVycy9ycG1zZy9LY29uZmlnLTU4LVx0dHJpc3RhdGUgXCYjMzQ7UXVhbGNvbW0gU01FTSBHbGluayBkcml2ZXJcJiMzNDtcbi0tXG5kcml2ZXJzL3JwbXNnL0tjb25maWctNjYtXG5kcml2ZXJzL3JwbXNnL0tjb25maWc6Njc6Y29uZmlnIFJQTVNHX1FDT01fU01EXG5kcml2ZXJzL3JwbXNnL0tjb25maWctNjgtXHR0cmlzdGF0ZSBcJiMzNDtRdWFsY29tbSBTaGFyZWQgTWVtb3J5IERyaXZlciAoU01EKVwmIzM0O1xuLS1cbmRyaXZlcnMvcnBtc2cvS2NvbmZpZy03Ni1cbmRyaXZlcnMvcnBtc2cvS2NvbmZpZzo3Nzpjb25maWcgUlBNU0dfVklSVElPXG5kcml2ZXJzL3JwbXNnL0tjb25maWctNzgtXHR0cmlzdGF0ZSBcJiMzNDtWaXJ0aW8gUlBNU0cgYnVzIGRyaXZlclwmIzM0O1xuLS1cbmRyaXZlcnMvdHR5L0tjb25maWc9NDA0PXNvdXJjZSBcJiMzNDtkcml2ZXJzL3R0eS9odmMvS2NvbmZpZ1wmIzM0O1xuZHJpdmVycy90dHkvS2NvbmZpZy00MDUtXG5kcml2ZXJzL3R0eS9LY29uZmlnOjQwNjpjb25maWcgUlBNU0dfVFRZXG5kcml2ZXJzL3R0eS9LY29uZmlnLTQwNy1cdHRyaXN0YXRlIFwmIzM0O1JQTVNHIHR0eSBkcml2ZXJcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMTg6NTY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzU2MjQKCQkJCQkJCW91dHB1dDogMzcKCQkJCQkJCXRob3VnaHRzOiA1NQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIERlcGVuZGVuY2llcyoqCgpPa2F5LCBzbyBgUlBNU0dgIGlzIGEgdHJpY2t5IG9uZSwgc2VlbWluZ2x5IGFsd2F5cyBpbiBkZW1hbmQsIGNvbnN0YW50bHkgYmVpbmcgc2VsZWN0ZWQgYnkgd2hhdGV2ZXIgc3Vic3lzdGVtIG5lZWRzIGl0LiBIbW0sIGJ1dCBub3cgSSYjMzk7bSByZW1lbWJlcmluZyB0aGF0IGBRQ09NX1dDTlNTX0NUUkxgIGhhcyBhIGRlcGVuZGVuY3kgb24gYFJQTVNHYC4gQmVzdCB0byBkb3VibGUtY2hlY2sgdGhhdCBgZHJpdmVycy9zb2MvcWNvbS9LY29uZmlnYCBmaWxlIGFnYWluLiBKdXN0IHRvIG1ha2Ugc3VyZSBteSB1bmRlcnN0YW5kaW5nIG9mIHRoaXMgaXNuJiMzOTt0IHNsaXBwaW5nLiBHb3R0YSBiZSB0aG9yb3VnaCB3aXRoIHRoZXNlIGNvcmUgZGVwZW5kZW5jaWVzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQ1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNiAxODo1NjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvc29jL3Fjb20vS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDI1MCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAxMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgMjUwOlx0Y29uZmlnIFFDT01fV0NOU1NfQ1RSTFxuIDI1MTpcdFx0dHJpc3RhdGUgXCYjMzQ7UXVhbGNvbW0gV0NOU1MgY29udHJvbCBkcml2ZXJcJiMzNDtcbiAyNTI6XHRcdGRlcGVuZHMgb24gQVJDSF9RQ09NIHx8IENPTVBJTEVfVEVTVFxuIDI1MzpcdFx0ZGVwZW5kcyBvbiBSUE1TR1xuIDI1NDpcdFx0aGVscFxuIDI1NTpcdFx0ICBDbGllbnQgZHJpdmVyIGZvciB0aGUgV0NOU1NfQ1RSTCBTTUQgY2hhbm5lbCwgdXNlZCB0byBkb3dubG9hZCBudlxuIDI1NjpcdFx0ICBmaXJtd2FyZSB0byBhIG5ld2x5IGJvb3RlZCBXQ05TUyBjaGlwLlxuIDI1NzpcdFxuIDI1ODpcdGNvbmZpZyBRQ09NX0FQUlxuIDI1OTpcdFx0dHJpc3RhdGUgXCYjMzQ7UXVhbGNvbW0gQVBSL0dQUiBCdXMgKEFzeW5jaHJvbm91cy9HZW5lcmljIFBhY2tldCBSb3V0ZXIpXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDE4OjU2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM1OTkwCgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogMTAxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgYFFDT01fV0NOU1NfQ1RSTGAgRGVwZW5kZW5jeSoqCgpPa2F5LCBzbyBJJiMzOTttIGRpZ2dpbmcgaW50byB0aGlzIGNvbmZpZ3VyYXRpb24gYW5kIGl0JiMzOTtzIGNsZWFyIHRoYXQgYFFDT01fV0NOU1NfQ1RSTGAgaGFzIGEgZGVwZW5kZW5jeSBvbiBgUlBNU0dgLiBSaWdodCwgc2ltcGxlIGVub3VnaC4gSWYgYFJQTVNHYCBpc24mIzM5O3QgZW5hYmxlZCwgdGhlbiBgUUNPTV9XQ05TU19DVFJMYCBpcyBlc3NlbnRpYWxseSBoaWRkZW4gZnJvbSB2aWV3LCB3aGljaCBtYWtlcyBzZW5zZSBmcm9tIGEgbW9kdWxhcml0eSBwZXJzcGVjdGl2ZS4gTm93IEkmIzM5O20gcGF1c2luZyB0aG91Z2gsIGJlY2F1c2UgSSBzZWUgdGhhdCBgUlBNU0dgIGlzIGEgYHRyaXN0YXRlYCB3aXRob3V0IGEgcHJvbXB0LiBUaGF0IGltbWVkaWF0ZWx5IHRyaWdnZXJzIGEgbWVudGFsIGNoZWNrbGlzdDogYSBgdHJpc3RhdGVgIHdpdGhvdXQgYSBwcm9tcHQgdXN1YWxseSBtZWFucyBpdCYjMzk7cyBleGNsdXNpdmVseSBjb250cm9sbGVkIGJ5IG90aGVyIGNvbmZpZ3VyYXRpb24gb3B0aW9ucy4gSXQmIzM5O3Mgbm90IHNvbWV0aGluZyBhIHVzZXIgd291bGQgZGlyZWN0bHkgZW5hYmxlLiBSaWdodCwgcmlnaHQuLi4gc28sIGlmIEkgd2FudCB0byBmaWd1cmUgb3V0ICp3aHkqIGBSUE1TR2AgaXMgZW5hYmxlZCBpbiB0aGlzIGNvbnRleHQsIEkgbmVlZCB0byB0cmFjZSBiYWNrIHdoaWNoIHNwZWNpZmljIGNvbmZpZ3VyYXRpb25zIGFyZSAqc2VsZWN0aW5nKiBpdC4gSSYjMzk7bGwgbmVlZCB0byBjaGVjayB3aGV0aGVyIGBSUE1TR19WSVJUSU9gIG9yIGBSUE1TR19RQ09NX1NNRGAgYXJlIHRoZSBzZWxlY3RvcnMgaGVyZS4gVGhhdCYjMzk7cyB0aGUga2V5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQ3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNiAxODo1NjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvcnBtc2cvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDc3LAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDEwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgNzc6XHRjb25maWcgUlBNU0dfVklSVElPXG4gIDc4Olx0XHR0cmlzdGF0ZSBcJiMzNDtWaXJ0aW8gUlBNU0cgYnVzIGRyaXZlclwmIzM0O1xuICA3OTpcdFx0ZGVwZW5kcyBvbiBIQVNfRE1BXG4gIDgwOlx0XHRzZWxlY3QgUlBNU0dcbiAgODE6XHRcdHNlbGVjdCBSUE1TR19OU1xuICA4MjpcdFx0c2VsZWN0IFZJUlRJT1xuICA4MzpcdFxuICA4NDpcdGVuZG1lbnVcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMTg6NTY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzY0NTYKCQkJCQkJCW91dHB1dDogNDIKCQkJCQkJCXRob3VnaHRzOiAyMzAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqS2VybmVsIENvbmZpZ3VyYXRpb24gVHdlYWtzKioKCk9rYXksIHNvIGBSUE1TR19WSVJUSU9gIGF1dG9tYXRpY2FsbHkgcHVsbHMgaW4gYFJQTVNHYC4gTWFrZXMgc2Vuc2UsIHNvIHdlIGRlZmluaXRlbHkgd2FudCB0byBlbmFibGUgYFJQTVNHX1ZJUlRJT2AgYXMgb3VyIGVudHJ5IHBvaW50LiBOb3csIGRpZ2dpbmcgYSBsaXR0bGUgZGVlcGVyLCBgUUNPTV9XQ05TU19DVFJMYCBoYXMgYSBkZXBlbmRlbmN5IG9uIGVpdGhlciBgQVJDSF9RQ09NYCBvciBgQ09NUElMRV9URVNUYC4gSG1tLCBgQ09NUElMRV9URVNUYCBpcyBhIGNvbW1vbiBkZWZhdWx0IGluIHN5emJvdCBjb25maWd1cmF0aW9ucywgYnV0IHRvIGtlZXAgdGhpbmdzIHRpZHkgYW5kIHByZWRpY3RhYmxlLCBsZXQmIzM5O3MgZXhwbGljaXRseSBsaXN0IGBRQ09NX1dDTlNTX0NUUkxgIGluc3RlYWQgb2YgcmVseWluZyBvbiBpdC4KClRoZW4gd2UgbG9vayBhdCBgV0NOMzZYWGAsIGl0cyBkZXBlbmRlbmN5IGlzIGBRQ09NX1dDTlNTX0NUUkwgfHwgUUNPTV9XQ05TU19DVFJMPW5gLiBUaGlzIG1lYW5zIHdlIGNhbiBjb25maWd1cmUgdGhlIGBRQ09NX1dDTlNTX0NUUkxgIG1vZHVsZSBhcyBhIG1vZHVsZSBhbmQgYFdDTjM2WFhgIGJlY29tZXMgYSBtb2R1bGUgYXMgd2VsbC4gSG93ZXZlciwgaWYgd2Ugd2FudCB0aGVtIGJ1aWx0LWluIHRvIHRoZSBrZXJuZWwgaW1hZ2UsIHdlIHNob3VsZCBiZSBleHBsaWNpdCBhbmQganVzdCBsaXN0IGBXQ04zNlhYYCwgYFFDT01fV0NOU1NfQ1RSTGAsIGFuZCBgUlBNU0dfVklSVElPYC4gR290dGEgZG91YmxlLWNoZWNrIHRob3NlIGRlcGVuZGVuY2llcywgdGhvdWdoOyBsZXQmIzM5O3MgcmV2aXNpdCBgV0NOMzZYWGAmIzM5O3Mgc2V0dXAgYWdhaW4ganVzdCB0byBiZSBzdXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQ5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNiAxODo1NjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDEwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgIDE6XHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBJU0NcbiAgIDI6XHRjb25maWcgV0NOMzZYWFxuICAgMzpcdFx0dHJpc3RhdGUgXCYjMzQ7UXVhbGNvbW0gQXRoZXJvcyBXQ04zNjYwLzM2ODAgc3VwcG9ydFwmIzM0O1xuICAgNDpcdFx0ZGVwZW5kcyBvbiBNQUM4MDIxMSBcdTAwMjZcdTAwMjYgSEFTX0RNQVxuICAgNTpcdFx0ZGVwZW5kcyBvbiBRQ09NX1dDTlNTX0NUUkwgfHwgUUNPTV9XQ05TU19DVFJMPW5cbiAgIDY6XHRcdGRlcGVuZHMgb24gUlBNU0cgfHwgUlBNU0c9blxuICAgNzpcdFx0aGVscFxuICAgODpcdFx0ICBUaGlzIG1vZHVsZSBhZGRzIHN1cHBvcnQgZm9yIHdpcmVsZXNzIGFkYXB0ZXJzIGJhc2VkIG9uXG4gICA5Olx0XHQgIFF1YWxjb21tIEF0aGVyb3MgV0NOMzY2MCBhbmQgV0NOMzY4MCBtb2JpbGUgY2hpcHNldHMuXG4gIDEwOlx0XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDE4OjU2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM3MTc2CgkJCQkJCQlvdXRwdXQ6IDE1MwoJCQkJCQkJdGhvdWdodHM6IDM0MgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBbmFseXNpcyBvZiB0aGUgV0NOMzZYWCBWdWxuZXJhYmlsaXR5KioKCk9rYXksIHNvIEkmIzM5O3ZlIGJlZW4gbG9va2luZyBhdCB0aGlzIGBXQ04zNlhYYCBkcml2ZXIsIGFuZCBpdCYjMzk7cyBjbGVhciB0aGF0IGl0IGhhcyBhIGRlcGVuZGVuY3kgb24gYE1BQzgwMjExYC4gUmlnaHQgYXdheSwgSSBuZWVkIHRvIG1ha2Ugc3VyZSBgTUFDODAyMTFgIGlzIGVuYWJsZWQsIHNvIEkmIzM5O2xsIGFkZCBpdCB0byB0aGUgYEVuYWJsZUNvbmZpZ3NgIGxpc3QuIEN1cnJlbnRseSwgSSBoYXZlOiBgV0NOMzZYWGAsIGBRQ09NX1dDTlNTX0NUUkxgLCBgUlBNU0dfVklSVElPYCwgYW5kIG5vdywgYE1BQzgwMjExYC4KCk5vdywgdGhlIHZ1bG5lcmFiaWxpdHkgbGllcyBpbiBgd2NuMzZ4eF9zbWRfcnNwX3Byb2Nlc3NgLCBzbyBsZXQmIzM5O3MgY2hlY2sgaXRzIHJlYWNoYWJpbGl0eS4gQWgsIHllcywgaXQmIzM5O3MgdGhlIGNhbGxiYWNrIGZvciB0aGUgcnBtc2cgZW5kcG9pbnQgdGhhdCYjMzk7cyBjcmVhdGVkIGR1cmluZyBgd2NuMzZ4eF9wcm9iZWAuIFRoYXQgbWFrZXMgc2Vuc2UuIFdoZW4gYSBtZXNzYWdlIGNvbWVzIGluIG92ZXIgdGhhdCBlbmRwb2ludCwgYHdjbjM2eHhfc21kX3JzcF9wcm9jZXNzYCBpcyBjYWxsZWQuIEFuZCBzaW5jZSBTeXpib3QgY2FuIGluamVjdCBtZXNzYWdlcyB2aWEgdmlydGlvLXJwbXNnLCB0aGlzIGlzIGRlZmluaXRlbHkgc29tZXRoaW5nIHdlIGNhbiBmdXp6LiBXZSBoYXZlIGEgY2xlYXIgcGF0aCB0byBleHBsb2l0IHRoaXMhCgpUaGVyZWZvcmUsIHRoZSBgRm9jdXNTeW1ib2xzYCB3aWxsIGJlIGB3Y24zNnh4X3NtZF9yc3BfcHJvY2Vzc2AuIFRoZSBgRW5hYmxlQ29uZmlnc2AgbGlzdCBpcyBhcyBkZXNjcmliZWQgYWJvdmUuIFRoZSByZWFzb25pbmcgaGVyZSBpcyBzb2xpZDogdGhlIHBhdGNoIGZpeGVzIGFuIG91dC1vZi1ib3VuZHMgcmVhZCBpbiBgd2NuMzZ4eF9zbWRfcnNwX3Byb2Nlc3NgIGJ5IGFkZGluZyBhIGxlbmd0aCBjaGVjayBmb3IgdGhlIEhBTCBtZXNzYWdlIGhlYWRlci4gVGhpcyBmdW5jdGlvbiBwcm9jZXNzZXMgaW5jb21pbmcgbWVzc2FnZXMgZnJvbSB0aGUgU01EIGNoYW5uZWwgKHJwbXNnKSwgYW5kIGl0cyByZWFjaGFiaWxpdHkgdmlhIHRoZSB2aXJ0aW8tcnBtc2cgYnVzIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBtYWtlcyBpdCBpZGVhbCBmb3IgZnV6emluZy4KCkxldCBtZSBqdXN0IGRvdWJsZS1jaGVjayB0byBiZSBhYnNvbHV0ZWx5IHN1cmUuLi4gWWVwLCB0aGUgcGF0Y2ggb25seSBtb2RpZmllcyBgd2NuMzZ4eF9zbWRfcnNwX3Byb2Nlc3NgLiBPa2F5LCB0aGF0JiMzOTtzIGl0LiBXZSYjMzk7cmUgZ29vZCB0byBnby4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41MS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMTg6NTY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1dDTjM2WFgmIzM0OywKICAgICYjMzQ7UUNPTV9XQ05TU19DVFJMJiMzNDssCiAgICAmIzM0O1JQTVNHX1ZJUlRJTyYjMzQ7LAogICAgJiMzNDtNQUM4MDIxMSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3djbjM2eHhfc21kX3JzcF9wcm9jZXNzJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGFuIG91dC1vZi1ib3VuZHMgcmVhZCBpbiBgd2NuMzZ4eF9zbWRfcnNwX3Byb2Nlc3NgIGJ5IGFkZGluZyBhIGxlbmd0aCBjaGVjayBmb3IgdGhlIEhBTCBtZXNzYWdlIGhlYWRlci4gVGhpcyBmdW5jdGlvbiBwcm9jZXNzZXMgaW5jb21pbmcgbWVzc2FnZXMgZnJvbSB0aGUgU01EIGNoYW5uZWwgKHJwbXNnKS4gSXQgaXMgcmVhY2hhYmxlIHZpYSB0aGUgdmlydGlvLXJwbXNnIGJ1cyBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMsIG1ha2luZyBpdCBzdWl0YWJsZSBmb3IgZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7V0NOMzZYWCYjMzQ7LAogICAgJiMzNDtRQ09NX1dDTlNTX0NUUkwmIzM0OywKICAgICYjMzQ7UlBNU0dfVklSVElPJiMzNDssCiAgICAmIzM0O01BQzgwMjExJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7d2NuMzZ4eF9zbWRfcnNwX3Byb2Nlc3MmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYW4gb3V0LW9mLWJvdW5kcyByZWFkIGluIGB3Y24zNnh4X3NtZF9yc3BfcHJvY2Vzc2AgYnkgYWRkaW5nIGEgbGVuZ3RoIGNoZWNrIGZvciB0aGUgSEFMIG1lc3NhZ2UgaGVhZGVyLiBUaGlzIGZ1bmN0aW9uIHByb2Nlc3NlcyBpbmNvbWluZyBtZXNzYWdlcyBmcm9tIHRoZSBTTUQgY2hhbm5lbCAocnBtc2cpLiBJdCBpcyByZWFjaGFibGUgdmlhIHRoZSB2aXJ0aW8tcnBtc2cgYnVzIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cywgbWFraW5nIGl0IHN1aXRhYmxlIGZvciBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDctMjZUMTg6NTM6NDAuMDg5NjIxOTMxWiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTg1MTIyNjE5NTg0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIldDTjM2WFhcIixcbiAgICBcIlFDT01fV0NOU1NfQ1RSTFwiLFxuICAgIFwiUlBNU0dfVklSVElPXCIsXG4gICAgXCJNQUM4MDIxMVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIndjbjM2eHhfc21kX3JzcF9wcm9jZXNzXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYW4gb3V0LW9mLWJvdW5kcyByZWFkIGluIGB3Y24zNnh4X3NtZF9yc3BfcHJvY2Vzc2AgYnkgYWRkaW5nIGEgbGVuZ3RoIGNoZWNrIGZvciB0aGUgSEFMIG1lc3NhZ2UgaGVhZGVyLiBUaGlzIGZ1bmN0aW9uIHByb2Nlc3NlcyBpbmNvbWluZyBtZXNzYWdlcyBmcm9tIHRoZSBTTUQgY2hhbm5lbCAocnBtc2cpLiBJdCBpcyByZWFjaGFibGUgdmlhIHRoZSB2aXJ0aW8tcnBtc2cgYnVzIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cywgbWFraW5nIGl0IHN1aXRhYmxlIGZvciBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQxODo1Mzo0MC4wODk2MzE2OFoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTA1OTE0MTg4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgOTM2NzA5NDA2OGVhY2YxZjZhMTkzNDdmNTc1NWUzM2ZmZTA1YzYxM1xcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgU3VuIEp1bCAyNiAxODo1MzozOCAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9zbWQuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L3NtZC5jXFxuaW5kZXggYzBiNDc3MzQ1ODMyYjguLjMyZGVjNDVkYmI1MGY1IDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L3NtZC5jXFxuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvc21kLmNcXG5AQCAtMzI1NCw2ICszMjU0LDExIEBAIGludCB3Y24zNnh4X3NtZF9yc3BfcHJvY2VzcyhzdHJ1Y3QgcnBtc2dfZGV2aWNlICpycGRldixcXG4gXFx0c3RydWN0IHdjbjM2eHhfaGFsX2luZF9tc2cgKm1zZ19pbmQ7XFxuIFxcdHdjbjM2eHhfZGJnX2R1bXAoV0NOMzZYWF9EQkdfU01EX0RVTVAsIFxcXCJTTUQgXFx1MDAzY1xcdTAwM2NcXHUwMDNjIFxcXCIsIGJ1ZiwgbGVuKTtcXG4gXFxuK1xcdGlmIChsZW4gXFx1MDAzYyBzaXplb2YoKm1zZ19oZWFkZXIpKSB7XFxuK1xcdFxcdHdjbjM2eHhfd2FybihcXFwiQ29ycnVwdGVkIEhBTCBtZXNzYWdlOiBsZW5ndGggJWRcXFxcblxcXCIsIGxlbik7XFxuK1xcdFxcdHJldHVybiAwO1xcbitcXHR9XFxuK1xcbiBcXHRzd2l0Y2ggKG1zZ19oZWFkZXItXFx1MDAzZW1zZ190eXBlKSB7XFxuIFxcdGNhc2UgV0NOMzZYWF9IQUxfU1RBUlRfUlNQOlxcbiBcXHRjYXNlIFdDTjM2WFhfSEFMX0NPTkZJR19TVEFfUlNQOlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQxODo1Mzo0MC41OTYyODg5OThaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjoxODQ2MTU5NDA4OTcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiV0NOMzZYWFwiLFxuICAgIFwiUUNPTV9XQ05TU19DVFJMXCIsXG4gICAgXCJSUE1TR19WSVJUSU9cIixcbiAgICBcIk1BQzgwMjExXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwid2NuMzZ4eF9zbWRfcnNwX3Byb2Nlc3NcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhbiBvdXQtb2YtYm91bmRzIHJlYWQgaW4gYHdjbjM2eHhfc21kX3JzcF9wcm9jZXNzYCBieSBhZGRpbmcgYSBsZW5ndGggY2hlY2sgZm9yIHRoZSBIQUwgbWVzc2FnZSBoZWFkZXIuIFRoaXMgZnVuY3Rpb24gcHJvY2Vzc2VzIGluY29taW5nIG1lc3NhZ2VzIGZyb20gdGhlIFNNRCBjaGFubmVsIChycG1zZykuIEl0IGlzIHJlYWNoYWJsZSB2aWEgdGhlIHZpcnRpby1ycG1zZyBidXMgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLCBtYWtpbmcgaXQgc3VpdGFibGUgZm9yIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpXG4gIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zXG4gICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgQWxzbyBjaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3NcbiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlnc1xuICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDkzNjcwOTQwNjhlYWNmMWY2YTE5MzQ3ZjU3NTVlMzNmZmUwNWM2MTNcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgU3VuIEp1bCAyNiAxODo1MzozOCAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L3NtZC5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvc21kLmNcbmluZGV4IGMwYjQ3NzM0NTgzMmI4Li4zMmRlYzQ1ZGJiNTBmNSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L3NtZC5jXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9zbWQuY1xuQEAgLTMyNTQsNiArMzI1NCwxMSBAQCBpbnQgd2NuMzZ4eF9zbWRfcnNwX3Byb2Nlc3Moc3RydWN0IHJwbXNnX2RldmljZSAqcnBkZXYsXG4gXHRzdHJ1Y3Qgd2NuMzZ4eF9oYWxfaW5kX21zZyAqbXNnX2luZDtcbiBcdHdjbjM2eHhfZGJnX2R1bXAoV0NOMzZYWF9EQkdfU01EX0RVTVAsIFwiU01EIFx1MDAzY1x1MDAzY1x1MDAzYyBcIiwgYnVmLCBsZW4pO1xuIFxuK1x0aWYgKGxlbiBcdTAwM2Mgc2l6ZW9mKCptc2dfaGVhZGVyKSkge1xuK1x0XHR3Y24zNnh4X3dhcm4oXCJDb3JydXB0ZWQgSEFMIG1lc3NhZ2U6IGxlbmd0aCAlZFxcblwiLCBsZW4pO1xuK1x0XHRyZXR1cm4gMDtcbitcdH1cbitcbiBcdHN3aXRjaCAobXNnX2hlYWRlci1cdTAwM2Vtc2dfdHlwZSkge1xuIFx0Y2FzZSBXQ04zNlhYX0hBTF9TVEFSVF9SU1A6XG4gXHRjYXNlIFdDTjM2WFhfSEFMX0NPTkZJR19TVEFfUlNQOlxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjZUMTg6NTM6NDAuNTk2MjkwNDU4WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTE4MjgyNzczOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBEcml2ZXIgUGF0Y2ggZm9yIFZ1bG5lcmFiaWxpdHkqKlxuXG5Pa2F5LCBzbyBJJ3ZlIGdvdCB0aGlzIHBhdGNoIGhlcmUgdGhhdCBpbnRyb2R1Y2VzIGEgbGVuZ3RoIGNoZWNrIGluIGB3Y24zNnh4X3NtZF9yc3BfcHJvY2Vzc2Agd2l0aGluIHRoZSBgd2NuMzZ4eGAgZHJpdmVyLiBJdCBsb29rcyBsaWtlIGl0J3MgZ3VhcmRpbmcgYWdhaW5zdCBvdXQtb2YtYm91bmRzIHJlYWRzLCB3aGljaCBpcyBhbHdheXMgYSBnb29kIHRoaW5nLiBTcGVjaWZpY2FsbHksIGl0J3MgY2hlY2tpbmcgaWYgdGhlIHJlY2VpdmVkIG1lc3NhZ2UgbGVuZ3RoIGlzIHNtYWxsZXIgdGhhbiB0aGUgc2l6ZSBvZiB0aGUgbWVzc2FnZSBoZWFkZXIgYW5kIHJldHVybmluZyAwIGlmIHRoYXQncyB0aGUgY2FzZS4gSXQgYXBwZWFycyB0byBiZSBhIHByZXR0eSBzdHJhaWdodGZvcndhcmQgZnVuY3Rpb25hbCBjaGFuZ2UgdG8gcHJldmVudCBhIHBvdGVudGlhbCB2dWxuZXJhYmlsaXR5LlxuXG5IbW0sIGxldCBtZSBzZWUuLi4gYHdjbjM2eHhgLi4uIHRoYXQgcmluZ3MgYSBiZWxsLiBBaCwgeWVzLCBpdCdzIHRoZSBkcml2ZXIgZm9yIHRoZSBRdWFsY29tbSBBdGhlcm9zIFdDTjM2NjAvMzY4MCBNQUMvQkIvUmFkaW8gY2hpcHMuIEludGVyZXN0aW5nLiBOb3csIHRoZSBrZXkgcXVlc3Rpb24gaXMgd2hldGhlciB0aGlzIGlzIHNvbWV0aGluZyBJIGNhbiBhY3R1YWxseSAqcmVhY2gqIHdoZW4gZnV6emluZy4gQ2FuIEkgdHJpZ2dlciBpdCBpbiBhIFFFTVUgZW52aXJvbm1lbnQ/IENvbnNpZGVyaW5nIHRoaXMgdXNlcyBycG1zZyAoUmVtb3RlIFByb2Nlc3NvciBNZXNzYWdpbmcpLCB0aGUgbGlrZWxpaG9vZCBpcyBoaWdoLiBNeSB0aG91Z2h0IG5vdyBpcywgY2FuIEkgZnV6eiB0aGlzIHBhcnRpY3VsYXIgZnVuY3Rpb24/XG5cbkxldCBtZSBmb2N1cyBvbiB0aGF0IGZ1bmN0aW9uLCBgd2NuMzZ4eF9zbWRfcnNwX3Byb2Nlc3NgLiBMZXQgbWUgc2VlIHdoYXQgSSBjYW4gZmluZCByZWdhcmRpbmcgdGhpcyBkcml2ZXIuIEknbGwgZG8gYSBxdWljayBncmVwIGZvciBib3RoIGB3Y24zNnh4X3NtZF9yc3BfcHJvY2Vzc2AgYW5kIGp1c3QgdGhlIGRyaXZlciBuYW1lLCBgd2NuMzZ4eGAgd2l0aGluIHRoZSBLY29uZmlnIGZpbGVzLiBUaGlzIHNob3VsZCBnaXZlIG1lIGEgYmV0dGVyIHVuZGVyc3RhbmRpbmcgb2YgaG93IHRoZSBkcml2ZXIgaXMgY29uZmlndXJlZCBhbmQgaWYgaXQncyBldmVuIGVuYWJsZWQgaW4gdGhlIHN5c3RlbXMgSSdtIGxpa2VseSB0byB0ZXN0LlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMTYzLCJPdXRwdXRUb2tlbnMiOjQ2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjAyLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjZUMTg6NTM6NDUuNzc5MTIxMzI3WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjMzODIxNjQwNTMsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwid2NuMzZ4eF9zbWRfcnNwX3Byb2Nlc3NcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jPTE1NTg9c3RhdGljIGludCB3Y24zNnh4X3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmMtMTYwNi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmM6MTYwNzpcXHR3Y24tXFx1MDAzZXNtZF9jaGFubmVsID0gcWNvbV93Y25zc19vcGVuX2NoYW5uZWwod2Nuc3MsIFxcXCJXTEFOX0NUUkxcXFwiLCB3Y24zNnh4X3NtZF9yc3BfcHJvY2VzcywgaHcpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYy0xNjA4LVxcdGlmIChJU19FUlIod2NuLVxcdTAwM2VzbWRfY2hhbm5lbCkpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L3NtZC5jPTMyMDI9aW50IHdjbjM2eHhfc21kX2FkZF9iZWFjb25fZmlsdGVyKHN0cnVjdCB3Y24zNnh4ICp3Y24sXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9zbWQuYy0zMjQ3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L3NtZC5jOjMyNDg6aW50IHdjbjM2eHhfc21kX3JzcF9wcm9jZXNzKHN0cnVjdCBycG1zZ19kZXZpY2UgKnJwZGV2LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L3NtZC5jLTMyNDktXFx0XFx0XFx0ICAgIHZvaWQgKmJ1ZiwgaW50IGxlbiwgdm9pZCAqcHJpdiwgdTMyIGFkZHIpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9zbWQuaD0xNDA9aW50IHdjbjM2eHhfc21kX3VwZGF0ZV9jZmcoc3RydWN0IHdjbjM2eHggKndjbiwgdTMyIGNmZ19pZCwgdTMyIHZhbHVlKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9zbWQuaC0xNDEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvc21kLmg6MTQyOmludCB3Y24zNnh4X3NtZF9yc3BfcHJvY2VzcyhzdHJ1Y3QgcnBtc2dfZGV2aWNlICpycGRldixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9zbWQuaC0xNDMtXFx0XFx0XFx0ICAgIHZvaWQgKmJ1ZiwgaW50IGxlbiwgdm9pZCAqcHJpdiwgdTMyIGFkZHIpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQxODo1Mzo0OS4xNjEyOTA2M1oiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMDk3MzE4NzE5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBXQ04zNlhYXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBJU0NcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9LY29uZmlnOjI6Y29uZmlnIFdDTjM2WFhcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9LY29uZmlnLTMtXFx0dHJpc3RhdGUgXFxcIlF1YWxjb21tIEF0aGVyb3MgV0NOMzY2MC8zNjgwIHN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9LY29uZmlnLTEyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L0tjb25maWc6MTM6Y29uZmlnIFdDTjM2WFhfREVCVUdGU1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L0tjb25maWctMTQtXFx0Ym9vbCBcXFwiV0NOMzZYWCBkZWJ1Z2ZzIHN1cHBvcnRcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDE4OjUzOjUxLjI1ODYxODE3WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzQ5OTI5MjIwNCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHN1bW1hcnksIGFzIEkgZGVsdmUgaW50byB0aGVzZSBkZXBlbmRlbmNpZXM6XG5cbioqRGl2aW5nIERlZXAgaW50byB0aGUgV0NOMzZYWCBEcml2ZXIqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIGBXQ04zNlhYYCBkcml2ZXIsIGFuZCBpbW1lZGlhdGVseSBteSBtaW5kIGp1bXBzIHRvIGl0cyBkZXBlbmRlbmNpZXMuIFNlZW1zIHByZXR0eSBzdHJhaWdodGZvcndhcmQgYXQgZmlyc3QgZ2xhbmNlIOKAkyBpdCAqcmVsaWVzKiBvbiBgTUFDODAyMTFgLCB3aGljaCBpcyBzdGFuZGFyZCBmb3IgYSB3aXJlbGVzcyBkcml2ZXIsIGFuZCB0aGVuIGBIQVNfSU9NRU1gLCB3aGljaCBpcyB0byBiZSBleHBlY3RlZCBmb3IgYW55IGRyaXZlciB0aGF0IG5lZWRzIHRvIGludGVyYWN0IHdpdGggaGFyZHdhcmUgbWVtb3J5LiBUaGUgcmVhbCBxdWVzdGlvbiBtYXJrIGlzIHRoaXMgYFFDT01fV0NOU1NfQ1RSTCB8fCBRQ09NX1dDTlNTX0NUUkw9bmAgYml0LiBUaGF0IGluZGljYXRlcyBhIGNvbmRpdGlvbmFsIGRlcGVuZGVuY3ksIEkgbmVlZCB0byBrbm93IGEgbGl0dGxlIG1vcmUuXG5cbkkgbmVlZCB0byBxdWlja2x5IHZlcmlmeSBteSB1bmRlcnN0YW5kaW5nLiBJdCBpcyBwcnVkZW50IHRvIGNoZWNrIHRoZSBmdWxsIGRlcGVuZGVuY3kgY2hhaW4gZm9yIGBXQ04zNlhYYC4gSSB3aWxsIG5lZWQgdG8gbG9vayBkZWVwZXIgaW50byBgUUNPTV9XQ05TU19DVFJMYCB0byB0cnVseSB1bmRlcnN0YW5kIGhvdyB0aGUgYFdDTjM2WFhgIGRyaXZlciBmaXRzIGludG8gdGhlIGJyb2FkZXIgUXVhbGNvbW0gd2lyZWxlc3Mgc3Vic3lzdGVtLiBMZXQncyBkaWcgaW4uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM0NzMsIk91dHB1dFRva2VucyI6NDIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2NiwiVG9vbENhbGxzIjpbImdyZXBwZXIiLCJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjZUMTg6NTM6NTQuNzU3OTEzMzcyWiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Nzc3NDksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAxLFxuICBcIkxpbmVDb3VudFwiOiAyMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgICAxOlxcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IElTQ1xcbiAgIDI6XFx0Y29uZmlnIFdDTjM2WFhcXG4gICAzOlxcdFxcdHRyaXN0YXRlIFxcXCJRdWFsY29tbSBBdGhlcm9zIFdDTjM2NjAvMzY4MCBzdXBwb3J0XFxcIlxcbiAgIDQ6XFx0XFx0ZGVwZW5kcyBvbiBNQUM4MDIxMSBcXHUwMDI2XFx1MDAyNiBIQVNfRE1BXFxuICAgNTpcXHRcXHRkZXBlbmRzIG9uIFFDT01fV0NOU1NfQ1RSTCB8fCBRQ09NX1dDTlNTX0NUUkw9blxcbiAgIDY6XFx0XFx0ZGVwZW5kcyBvbiBSUE1TRyB8fCBSUE1TRz1uXFxuICAgNzpcXHRcXHRoZWxwXFxuICAgODpcXHRcXHQgIFRoaXMgbW9kdWxlIGFkZHMgc3VwcG9ydCBmb3Igd2lyZWxlc3MgYWRhcHRlcnMgYmFzZWQgb25cXG4gICA5OlxcdFxcdCAgUXVhbGNvbW0gQXRoZXJvcyBXQ04zNjYwIGFuZCBXQ04zNjgwIG1vYmlsZSBjaGlwc2V0cy5cXG4gIDEwOlxcdFxcbiAgMTE6XFx0XFx0ICBJZiB5b3UgY2hvb3NlIHRvIGJ1aWxkIGEgbW9kdWxlLCBpdCdsbCBiZSBjYWxsZWQgd2NuMzZ4eC5cXG4gIDEyOlxcdFxcbiAgMTM6XFx0Y29uZmlnIFdDTjM2WFhfREVCVUdGU1xcbiAgMTQ6XFx0XFx0Ym9vbCBcXFwiV0NOMzZYWCBkZWJ1Z2ZzIHN1cHBvcnRcXFwiXFxuICAxNTpcXHRcXHRkZXBlbmRzIG9uIFdDTjM2WFhcXG4gIDE2OlxcdFxcdGhlbHBcXG4gIDE3OlxcdFxcdCAgRW5hYmxlZCBkZWJ1Z2ZzIHN1cHBvcnRcXG4gIDE4OlxcdFxcbiAgMTk6XFx0XFx0ICBJZiB1bnN1cmUsIHNheSBZIHRvIG1ha2UgaXQgZWFzaWVyIHRvIGRlYnVnIHByb2JsZW1zLlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQxODo1Mzo1NC43NTc5OTMwOTJaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNjE5MDA2MjgyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBEcml2ZXIgUmVhY2hhYmlsaXR5IGluIFFFTVUqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBpZWNlIG9mIGNvZGUsIGFuZCB0aGUgZmlyc3QgdGhpbmcgdGhhdCBqdW1wcyBvdXQgaXMgdGhlIGRlcGVuZGVuY3kgb24gYE1BQzgwMjExIFx1MDAyNlx1MDAyNiBIQVNfRE1BYC4gVGhhdCdzIGEgcHJldHR5IGNsZWFyIGluZGljYXRvciBvZiB3aGF0IHRoaXMgZHJpdmVyICptaWdodCogYmUgdXNlZCBmb3IuIEJ1dCB0aGUga2V5IHF1ZXN0aW9uIGhlcmUsIGVzcGVjaWFsbHkgZ2l2ZW4gbXkgZGVidWdnaW5nIHNldHVwLCBpczogY2FuIHRoaXMgZHJpdmVyIGV2ZW4gKnJlYWNoKiBRRU1VPyBJIG5lZWQgdG8gcXVpY2tseSBlc3RhYmxpc2ggaWYgaXQncyBwYXJ0IG9mIHRoZSBjb25maWd1cmF0aW9uIEknbSBydW5uaW5nLlxuXG5UaGUgbmV4dCBjbHVlIGlzIGBxY29tX3djbnNzX29wZW5fY2hhbm5lbGAuIFRoYXQgZnVuY3Rpb24gaW1tZWRpYXRlbHkgcG9pbnRzIG1lIHRvIGBRQ09NX1dDTlNTX0NUUkxgLCB3aGljaCBpcyBhbm90aGVyIGltcG9ydGFudCBwaWVjZSBvZiB0aGUgcHV6emxlLiBOb3cgSSdtIHRyeWluZyB0byBwaWN0dXJlIHRoZSBtb2R1bGUncyBzdHJ1Y3R1cmUgaW4gbXkgaGVhZC4gSSdtIGFsbW9zdCBjZXJ0YWluIEkgaGF2ZSB0aGF0IGVuYWJsZWQgYnV0IEkgbmVlZCB0byBxdWlja2x5IGRldGVybWluZSB3aGV0aGVyIGl0IHJlZ2lzdGVycyBhIHBsYXRmb3JtIGRyaXZlciBvciBzb21ldGhpbmcgZWxzZSB0aGF0IFFFTVUgYWN0dWFsbHkgbGV2ZXJhZ2VzLiBUaGlzIHdvdWxkIG9mZmVyIGEgY2xlYXIgcGF0aCBmb3IgZXhwbG9pdGF0aW9uLiBMZXQncyBzZWUuLi4gbG9va2luZyBmb3IgcGxhdGZvcm0gZHJpdmVyIHJlZ2lzdHJhdGlvbiBuZXh0LlxuXG5cbiIsIklucHV0VG9rZW5zIjo0MDk4LCJPdXRwdXRUb2tlbnMiOjgwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NzAsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQxODo1Mzo1OC4zNzcwMDMwNzRaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzkwMjQ0NTE3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm1vZHVsZV9wbGF0Zm9ybV9kcml2ZXJcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYz0xNjc2PXN0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIHdjbjM2eHhfZHJpdmVyID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTE2ODQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jOjE2ODU6bW9kdWxlX3BsYXRmb3JtX2RyaXZlcih3Y24zNnh4X2RyaXZlcik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTE2ODYtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDE4OjUzOjU4Ljc2NzI1ODM1MVoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjE4NzI2ODMsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwid2NuMzZ4eF9wcm9iZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jPTE0NzI9c3RhdGljIGludCB3Y24zNnh4X3BsYXRmb3JtX2dldF9yZXNvdXJjZXMoc3RydWN0IHdjbjM2eHggKndjbixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYy0xNTU3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYzoxNTU4OnN0YXRpYyBpbnQgd2NuMzZ4eF9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYy0xNTU5LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYz0xNjc2PXN0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIHdjbjM2eHhfZHJpdmVyID0ge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYzoxNjc3OlxcdC5wcm9iZSA9IHdjbjM2eHhfcHJvYmUsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTE2NzgtXFx0LnJlbW92ZSA9IHdjbjM2eHhfcmVtb3ZlLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQxODo1Mzo1OC44MjkxNDE4ODRaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzM3Mjc5MjExOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHM6XG5cbioqRGlzc2VjdGluZyB0aGUgUGxhdGZvcm0gRHJpdmVyIEludGVyYWN0aW9uKipcblxuT2theSwgc28gd2UncmUgbG9va2luZyBhdCBhIHBsYXRmb3JtIGRyaXZlciBpbnRlcmFjdGlvbiwgbW9zdCBsaWtlbHkgaW52b2x2aW5nIHNvbWV0aGluZyB0cmlnZ2VyZWQgYnkgU3l6a2FsbGVyLCB3aGljaCwgaWYgSSByZWNhbGwgY29ycmVjdGx5LCBjYW4gaW5qZWN0IHBsYXRmb3JtIGRldmljZXMgdXNpbmcgZnVuY3Rpb25zIGxpa2UgYHN5el9kZXZfcGxhdGZvcm1fYWRkYC4gVGhhdCdzIHRoZSB0eXBpY2FsIGFwcHJvYWNoLiBXYWl0IGEgbWludXRlLCB3aGF0J3MgZ29pbmcgb24gd2l0aCBgd2NuMzZ4eF9zbWRfcnNwX3Byb2Nlc3NgPyBUaGF0IG5hbWUgaXMgbWFraW5nIG1lIHRoaW5r4oCmaXNuJ3QgdGhhdCBhbiBycG1zZyBjYWxsYmFjaz8gVGhhdCBjZXJ0YWlubHkgc21lbGxzIGxpa2UgYW4gaW50ZXItcHJvY2Vzc29yIGNvbW11bmljYXRpb24gc2NoZW1lLiBPa2F5LCBsZXQncyBiYWNrIHVwIGEgYml0IGFuZCBnbyB0byB0aGUgc291cmNlLCBzdGFydGluZyB3aXRoIGB3Y24zNnh4X3Byb2JlYC4gVGhhdCdzIHdoZXJlIGl0IGFsbCBiZWdpbnMuIEZyb20gdGhlcmUsIHdlIGNhbiBhbmFseXplIHRoZSBpbml0aWFsaXphdGlvbiBhbmQgcmVnaXN0cmF0aW9uLCB0byBzZWUgaG93IHRoYXQgY2FsbGJhY2sgaXMgYXNzb2NpYXRlZCBhbmQgdHJpZ2dlcmVkLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0ODY3LCJPdXRwdXRUb2tlbnMiOjQ2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NjYsIlRvb2xDYWxscyI6WyJncmVwcGVyIiwiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDE4OjU0OjAyLjIwMTkzNzQzM1oiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNjk5NDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDE1NTgsXG4gIFwiTGluZUNvdW50XCI6IDUwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIjE1NTg6XFx0c3RhdGljIGludCB3Y24zNnh4X3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuMTU1OTpcXHR7XFxuMTU2MDpcXHRcXHRzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodztcXG4xNTYxOlxcdFxcdHN0cnVjdCB3Y24zNnh4ICp3Y247XFxuMTU2MjpcXHRcXHR2b2lkICp3Y25zcztcXG4xNTYzOlxcdFxcdGludCByZXQ7XFxuMTU2NDpcXHRcXHRjb25zdCB1OCAqYWRkcjtcXG4xNTY1OlxcdFxcdGludCBuX2NoYW5uZWxzO1xcbjE1NjY6XFx0XFxuMTU2NzpcXHRcXHR3Y24zNnh4X2RiZyhXQ04zNlhYX0RCR19NQUMsIFxcXCJwbGF0Zm9ybSBwcm9iZVxcXFxuXFxcIik7XFxuMTU2ODpcXHRcXG4xNTY5OlxcdFxcdHdjbnNzID0gZGV2X2dldF9kcnZkYXRhKHBkZXYtXFx1MDAzZWRldi5wYXJlbnQpO1xcbjE1NzA6XFx0XFxuMTU3MTpcXHRcXHRuX2NoYW5uZWxzID0gd2NuX2JhbmRfMmdoei5uX2NoYW5uZWxzICsgd2NuX2JhbmRfNWdoei5uX2NoYW5uZWxzO1xcbjE1NzI6XFx0XFx0aHcgPSBpZWVlODAyMTFfYWxsb2NfaHcoc3RydWN0X3NpemUod2NuLCBjaGFuX3N1cnZleSwgbl9jaGFubmVscyksIFxcdTAwMjZ3Y24zNnh4X29wcyk7XFxuMTU3MzpcXHRcXHRpZiAoIWh3KSB7XFxuMTU3NDpcXHRcXHRcXHR3Y24zNnh4X2VycihcXFwiZmFpbGVkIHRvIGFsbG9jIGh3XFxcXG5cXFwiKTtcXG4xNTc1OlxcdFxcdFxcdHJldCA9IC1FTk9NRU07XFxuMTU3NjpcXHRcXHRcXHRnb3RvIG91dF9lcnI7XFxuMTU3NzpcXHRcXHR9XFxuMTU3ODpcXHRcXHRwbGF0Zm9ybV9zZXRfZHJ2ZGF0YShwZGV2LCBodyk7XFxuMTU3OTpcXHRcXHR3Y24gPSBody1cXHUwMDNlcHJpdjtcXG4xNTgwOlxcdFxcdHdjbi1cXHUwMDNlaHcgPSBodztcXG4xNTgxOlxcdFxcdHdjbi1cXHUwMDNlZGV2ID0gXFx1MDAyNnBkZXYtXFx1MDAzZWRldjtcXG4xNTgyOlxcdFxcdHdjbi1cXHUwMDNlZmlyc3RfYm9vdCA9IHRydWU7XFxuMTU4MzpcXHRcXHRtdXRleF9pbml0KFxcdTAwMjZ3Y24tXFx1MDAzZWNvbmZfbXV0ZXgpO1xcbjE1ODQ6XFx0XFx0bXV0ZXhfaW5pdChcXHUwMDI2d2NuLVxcdTAwM2VoYWxfbXV0ZXgpO1xcbjE1ODU6XFx0XFx0bXV0ZXhfaW5pdChcXHUwMDI2d2NuLVxcdTAwM2VzY2FuX2xvY2spO1xcbjE1ODY6XFx0XFx0X19za2JfcXVldWVfaGVhZF9pbml0KFxcdTAwMjZ3Y24tXFx1MDAzZWFtc2R1KTtcXG4xNTg3OlxcdFxcbjE1ODg6XFx0XFx0d2NuLVxcdTAwM2VoYWxfYnVmID0gZGV2bV9rbWFsbG9jKHdjbi1cXHUwMDNlZGV2LCBXQ04zNlhYX0hBTF9CVUZfU0laRSwgR0ZQX0tFUk5FTCk7XFxuMTU4OTpcXHRcXHRpZiAoIXdjbi1cXHUwMDNlaGFsX2J1Zikge1xcbjE1OTA6XFx0XFx0XFx0cmV0ID0gLUVOT01FTTtcXG4xNTkxOlxcdFxcdFxcdGdvdG8gb3V0X3dxO1xcbjE1OTI6XFx0XFx0fVxcbjE1OTM6XFx0XFxuMTU5NDpcXHRcXHRyZXQgPSBkbWFfc2V0X21hc2tfYW5kX2NvaGVyZW50KHdjbi1cXHUwMDNlZGV2LCBETUFfQklUX01BU0soMzIpKTtcXG4xNTk1OlxcdFxcdGlmIChyZXQgXFx1MDAzYyAwKSB7XFxuMTU5NjpcXHRcXHRcXHR3Y24zNnh4X2VycihcXFwiZmFpbGVkIHRvIHNldCBETUEgbWFzazogJWRcXFxcblxcXCIsIHJldCk7XFxuMTU5NzpcXHRcXHRcXHRnb3RvIG91dF93cTtcXG4xNTk4OlxcdFxcdH1cXG4xNTk5OlxcdFxcbjE2MDA6XFx0XFx0d2NuLVxcdTAwM2Vudl9maWxlID0gV0xBTl9OVl9GSUxFO1xcbjE2MDE6XFx0XFx0cmV0ID0gb2ZfcHJvcGVydHlfcmVhZF9zdHJpbmcod2NuLVxcdTAwM2VkZXYtXFx1MDAzZXBhcmVudC1cXHUwMDNlb2Zfbm9kZSwgXFxcImZpcm13YXJlLW5hbWVcXFwiLCBcXHUwMDI2d2NuLVxcdTAwM2Vudl9maWxlKTtcXG4xNjAyOlxcdFxcdGlmIChyZXQgXFx1MDAzYyAwIFxcdTAwMjZcXHUwMDI2IHJldCAhPSAtRUlOVkFMKSB7XFxuMTYwMzpcXHRcXHRcXHR3Y24zNnh4X2VycihcXFwiZmFpbGVkIHRvIHJlYWQgXFxcXFxcXCJmaXJtd2FyZS1uYW1lXFxcXFxcXCIgcHJvcGVydHk6ICVkXFxcXG5cXFwiLCByZXQpO1xcbjE2MDQ6XFx0XFx0XFx0Z290byBvdXRfd3E7XFxuMTYwNTpcXHRcXHR9XFxuMTYwNjpcXHRcXG4xNjA3OlxcdFxcdHdjbi1cXHUwMDNlc21kX2NoYW5uZWwgPSBxY29tX3djbnNzX29wZW5fY2hhbm5lbCh3Y25zcywgXFxcIldMQU5fQ1RSTFxcXCIsIHdjbjM2eHhfc21kX3JzcF9wcm9jZXNzLCBodyk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDE4OjU0OjAyLjIwMjExMTQ0M1oiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyOTg5NjMwOTY3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uXG5cbioqRGl2aW5nIGludG8gdGhlIFByb2JlIEZ1bmN0aW9uIGFuZCBXQ05TUyBDaGFubmVsIE9wZW5pbmcqKlxuXG5BbHJpZ2h0LCBzbyB0aGUgYHByb2JlYCBmdW5jdGlvbiBpcyBjYWxsaW5nIGBxY29tX3djbnNzX29wZW5fY2hhbm5lbGAuIFRoYXQncyB0aGUga2V5LiBNeSBmaXJzdCB0aG91Z2h0IGlzLCBcIk9rYXksIHdoYXQncyAqdGhhdCogYWJvdXQ/XCIgSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCBgcWNvbV93Y25zc19vcGVuX2NoYW5uZWxgIGlzIGRvaW5nIHRvIHByb3Blcmx5IHVuZGVyc3RhbmQgdGhlIHByb2JlIGZ1bmN0aW9uLiBMZXQncyBkaWcgaW50byB0aGF0IGZ1bmN0aW9uIGRlZmluaXRpb24gYW5kIHNlZSB3aGF0IGl0IGVudGFpbHMuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoaXMgY2hhbm5lbCBvcGVuaW5nIHByb2Nlc3MgYW5kIGhvdyBpdCByZWxhdGVzIHRvIHRoZSBvdmVyYWxsIGluaXRpYWxpemF0aW9uIG9mIHdoYXRldmVyIGhhcmR3YXJlIGlzIGJlaW5nIHByb2JlZCBoZXJlLiBLbm93aW5nIHRoaXMgd2lsbCBnaXZlIG1lIGEgcHJvcGVyIGNvbnRleHQgZm9yIHRoZSByZXN0IG9mIHRoZSBmdW5jdGlvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6NjA4MSwiT3V0cHV0VG9rZW5zIjoyNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM2LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjZUMTg6NTQ6MDUuMTkxNzQ2MTZaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE5MTY0NDIwNjcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicWNvbV93Y25zc19vcGVuX2NoYW5uZWxcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9ibHVldG9vdGgvYnRxY29tc21kLmM9MTQwPXN0YXRpYyBpbnQgYnRxY29tc21kX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL2JsdWV0b290aC9idHFjb21zbWQuYy0xNTItXFxuZHJpdmVycy9ibHVldG9vdGgvYnRxY29tc21kLmM6MTUzOlxcdGJ0cS1cXHUwMDNlYWNsX2NoYW5uZWwgPSBxY29tX3djbnNzX29wZW5fY2hhbm5lbCh3Y25zcywgXFxcIkFQUFNfUklWQV9CVF9BQ0xcXFwiLFxcbmRyaXZlcnMvYmx1ZXRvb3RoL2J0cWNvbXNtZC5jLTE1NC1cXHRcXHRcXHRcXHRcXHRcXHQgICBidHFjb21zbWRfYWNsX2NhbGxiYWNrLCBidHEpO1xcbi0tXFxuZHJpdmVycy9ibHVldG9vdGgvYnRxY29tc21kLmMtMTU3LVxcbmRyaXZlcnMvYmx1ZXRvb3RoL2J0cWNvbXNtZC5jOjE1ODpcXHRidHEtXFx1MDAzZWNtZF9jaGFubmVsID0gcWNvbV93Y25zc19vcGVuX2NoYW5uZWwod2Nuc3MsIFxcXCJBUFBTX1JJVkFfQlRfQ01EXFxcIixcXG5kcml2ZXJzL2JsdWV0b290aC9idHFjb21zbWQuYy0xNTktXFx0XFx0XFx0XFx0XFx0XFx0ICAgYnRxY29tc21kX2NtZF9jYWxsYmFjaywgYnRxKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYz0xNTU4PXN0YXRpYyBpbnQgd2NuMzZ4eF9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTE2MDYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jOjE2MDc6XFx0d2NuLVxcdTAwM2VzbWRfY2hhbm5lbCA9IHFjb21fd2Nuc3Nfb3Blbl9jaGFubmVsKHdjbnNzLCBcXFwiV0xBTl9DVFJMXFxcIiwgd2NuMzZ4eF9zbWRfcnNwX3Byb2Nlc3MsIGh3KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmMtMTYwOC1cXHRpZiAoSVNfRVJSKHdjbi1cXHUwMDNlc21kX2NoYW5uZWwpKSB7XFxuLS1cXG5kcml2ZXJzL3NvYy9xY29tL3djbnNzX2N0cmwuYz0yMDA9c3RhdGljIGludCB3Y25zc19kb3dubG9hZF9udihzdHJ1Y3Qgd2Nuc3NfY3RybCAqd2Nuc3MsIGJvb2wgKmV4cGVjdF9jYmMpXFxuLS1cXG5kcml2ZXJzL3NvYy9xY29tL3djbnNzX2N0cmwuYy0yNzUtLyoqXFxuZHJpdmVycy9zb2MvcWNvbS93Y25zc19jdHJsLmM6Mjc2OiAqIHFjb21fd2Nuc3Nfb3Blbl9jaGFubmVsKCkgLSBvcGVuIGFkZGl0aW9uYWwgU01EIGNoYW5uZWwgdG8gV0NOU1NcXG5kcml2ZXJzL3NvYy9xY29tL3djbnNzX2N0cmwuYy0yNzctICogQHdjbnNzOlxcdHdjbnNzIGhhbmRsZSwgcmV0cmlldmVkIGZyb20gZHJ2ZGF0YVxcbi0tXFxuZHJpdmVycy9zb2MvcWNvbS93Y25zc19jdHJsLmMtMjgxLSAqL1xcbmRyaXZlcnMvc29jL3Fjb20vd2Nuc3NfY3RybC5jOjI4MjpzdHJ1Y3QgcnBtc2dfZW5kcG9pbnQgKnFjb21fd2Nuc3Nfb3Blbl9jaGFubmVsKHZvaWQgKndjbnNzLCBjb25zdCBjaGFyICpuYW1lLCBycG1zZ19yeF9jYl90IGNiLCB2b2lkICpwcml2KVxcbmRyaXZlcnMvc29jL3Fjb20vd2Nuc3NfY3RybC5jLTI4My17XFxuLS1cXG5kcml2ZXJzL3NvYy9xY29tL3djbnNzX2N0cmwuYy0yOTItfVxcbmRyaXZlcnMvc29jL3Fjb20vd2Nuc3NfY3RybC5jOjI5MzpFWFBPUlRfU1lNQk9MX0dQTChxY29tX3djbnNzX29wZW5fY2hhbm5lbCk7XFxuZHJpdmVycy9zb2MvcWNvbS93Y25zc19jdHJsLmMtMjk0LVxcbi0tXFxuaW5jbHVkZS9saW51eC9zb2MvcWNvbS93Y25zc19jdHJsLmgtOC1cXG5pbmNsdWRlL2xpbnV4L3NvYy9xY29tL3djbnNzX2N0cmwuaDo5OnN0cnVjdCBycG1zZ19lbmRwb2ludCAqcWNvbV93Y25zc19vcGVuX2NoYW5uZWwodm9pZCAqd2Nuc3MsIGNvbnN0IGNoYXIgKm5hbWUsXFxuaW5jbHVkZS9saW51eC9zb2MvcWNvbS93Y25zc19jdHJsLmgtMTAtXFx0XFx0XFx0XFx0XFx0ICAgICAgIHJwbXNnX3J4X2NiX3QgY2IsIHZvaWQgKnByaXYpO1xcbi0tXFxuaW5jbHVkZS9saW51eC9zb2MvcWNvbS93Y25zc19jdHJsLmgtMTMtXFxuaW5jbHVkZS9saW51eC9zb2MvcWNvbS93Y25zc19jdHJsLmg6MTQ6c3RhdGljIHN0cnVjdCBycG1zZ19lbmRwb2ludCAqcWNvbV93Y25zc19vcGVuX2NoYW5uZWwodm9pZCAqd2Nuc3MsXFxuaW5jbHVkZS9saW51eC9zb2MvcWNvbS93Y25zc19jdHJsLmgtMTUtXFx0XFx0XFx0XFx0XFx0XFx0ICAgICAgY29uc3QgY2hhciAqbmFtZSxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjZUMTg6NTQ6MDcuMTA4MTk1NDU3WiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ4OTQ5NTY3NDAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqUlBNU0cgQ2hhbm5lbCBGdXp6aW5nIGluIFFFTVU6IEEgUGF0aCBGb3J3YXJkPyoqXG5cbk9rYXksIHNvIEknbSB0aGlua2luZyBhYm91dCBob3cgdG8gcG90ZW50aWFsbHkgZnV6eiBhbiBycG1zZyBjaGFubmVsLiBJdCBzdGFydHMgd2l0aCBlc3RhYmxpc2hpbmcgdGhpcyBjb21tdW5pY2F0aW9uIGNoYW5uZWwsIHJpZ2h0PyBSUE1TRyBpcyB0aGlzIGZyYW1ld29yayBmb3IgcmVtb3RlIHByb2Nlc3NvciBtZXNzYWdpbmcsIGFuZCBteSBpbW1lZGlhdGUgcXVlc3Rpb24gaXM6IGNhbiB3ZSBhY3R1YWxseSBmdXp6IHRoZXNlIGNoYW5uZWxzIHdpdGhpbiBhIFFFTVUgZW52aXJvbm1lbnQ/IEkga25vdyBTeXprYWxsZXIgaGFzIHNvbWUgZXhpc3Rpbmcgc3VwcG9ydCwgb3IgYXQgbGVhc3QgdGhlIHBvdGVudGlhbCB0byBpbmplY3QgbWVzc2FnZXMsIGlmIHRoZXJlJ3MgYSBwcmFjdGljYWwgd2F5IHRvIGdldCB0aGluZ3MgZ29pbmcuXG5cblNwZWNpZmljYWxseSwgSSdtIGxvb2tpbmcgYXQgdGhpcyBgd2NuMzZ4eGAgdGhpbmc7IGl0IGFwcGVhcnMgdG8gYmUgYSBwbGF0Zm9ybSBkZXZpY2UuIElmIEkgY2FuIHNvbWVob3cgcmVhY2ggdGhlIGB3Y24zNnh4X3NtZF9yc3BfcHJvY2Vzc2AgZnVuY3Rpb24sIHRoYXQncyB3aGF0IEkgd2FudC4gVGhlIGlkZWEgaXMgdGhhdCBpZiBTeXprYWxsZXIgY2FuIGluc3RhbnRpYXRlIGEgYHdjbjM2eHhgIHBsYXRmb3JtIGRldmljZSwgdGhhdCB3b3VsZCB0cmlnZ2VyIGEgY2FsbCB0byBgd2NuMzZ4eF9wcm9iZWAuIEJ1dCBgd2NuMzZ4eF9wcm9iZWAgc2VlbXMgdG8gY2FsbCBgcWNvbV93Y25zc19vcGVuX2NoYW5uZWxgLCB0YWtpbmcgYSBgd2Nuc3NgIHBhcmFtZXRlci5cblxuTm93LCBoZXJlJ3Mgd2hlcmUgaXQgZ2V0cyBpbnRlcmVzdGluZzogdGhlIGB3Y25zc2AgdmFsdWUgYXBwZWFycyB0byBiZSBmZXRjaGVkIHVzaW5nIGBkZXZfZ2V0X2RydmRhdGEocGRldi1cdTAwM2VkZXYucGFyZW50KWAuIFRoZSBwcm9ibGVtIGlzIHRoYXQgaWYgYHBkZXYtXHUwMDNlZGV2LnBhcmVudGAgaXMgTlVMTCBvciBkb2Vzbid0IGhhdmUgYW55IGRyaXZlciBkYXRhIGFzc29jaWF0ZWQgd2l0aCBpdCwgdGhlbiBgd2Nuc3NgIGlzIGdvaW5nIHRvIGJlIE5VTEwuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoYXQgYHFjb21fd2Nuc3Nfb3Blbl9jaGFubmVsYCBmdW5jdGlvbiwgbGV0J3Mgc2VlIGhvdyB0aGF0IGJlaGF2ZXMgaWYgYHdjbnNzYCBpcyBudWxsLlxuXG5cbiIsIklucHV0VG9rZW5zIjo3MjU2LCJPdXRwdXRUb2tlbnMiOjQyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjI1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDE4OjU0OjEyLjAwMzE1NTk0N1oiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo5OTgwOSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL3NvYy9xY29tL3djbnNzX2N0cmwuY1wiLFxuICBcIkZpcnN0TGluZVwiOiAyNzUsXG4gIFwiTGluZUNvdW50XCI6IDIwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAyNzU6XFx0LyoqXFxuIDI3NjpcXHQgKiBxY29tX3djbnNzX29wZW5fY2hhbm5lbCgpIC0gb3BlbiBhZGRpdGlvbmFsIFNNRCBjaGFubmVsIHRvIFdDTlNTXFxuIDI3NzpcXHQgKiBAd2Nuc3M6XFx0d2Nuc3MgaGFuZGxlLCByZXRyaWV2ZWQgZnJvbSBkcnZkYXRhXFxuIDI3ODpcXHQgKiBAbmFtZTpcXHRTTUQgY2hhbm5lbCBuYW1lXFxuIDI3OTpcXHQgKiBAY2I6XFx0XFx0Y2FsbGJhY2sgdG8gaGFuZGxlIGluY29taW5nIGRhdGEgb24gdGhlIGNoYW5uZWxcXG4gMjgwOlxcdCAqIEBwcml2OlxcdHByaXZhdGUgZGF0YSBmb3IgdXNlIGluIHRoZSBjYWxsLWJhY2tcXG4gMjgxOlxcdCAqL1xcbiAyODI6XFx0c3RydWN0IHJwbXNnX2VuZHBvaW50ICpxY29tX3djbnNzX29wZW5fY2hhbm5lbCh2b2lkICp3Y25zcywgY29uc3QgY2hhciAqbmFtZSwgcnBtc2dfcnhfY2JfdCBjYiwgdm9pZCAqcHJpdilcXG4gMjgzOlxcdHtcXG4gMjg0OlxcdFxcdHN0cnVjdCBycG1zZ19jaGFubmVsX2luZm8gY2hpbmZvO1xcbiAyODU6XFx0XFx0c3RydWN0IHdjbnNzX2N0cmwgKl93Y25zcyA9IHdjbnNzO1xcbiAyODY6XFx0XFxuIDI4NzpcXHRcXHRzdHJzY3B5KGNoaW5mby5uYW1lLCBuYW1lLCBzaXplb2YoY2hpbmZvLm5hbWUpKTtcXG4gMjg4OlxcdFxcdGNoaW5mby5zcmMgPSBSUE1TR19BRERSX0FOWTtcXG4gMjg5OlxcdFxcdGNoaW5mby5kc3QgPSBSUE1TR19BRERSX0FOWTtcXG4gMjkwOlxcdFxcbiAyOTE6XFx0XFx0cmV0dXJuIHJwbXNnX2NyZWF0ZV9lcHQoX3djbnNzLVxcdTAwM2VjaGFubmVsLVxcdTAwM2VycGRldiwgY2IsIHByaXYsIGNoaW5mbyk7XFxuIDI5MjpcXHR9XFxuIDI5MzpcXHRFWFBPUlRfU1lNQk9MX0dQTChxY29tX3djbnNzX29wZW5fY2hhbm5lbCk7XFxuIDI5NDpcXHRcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjZUMTg6NTQ6MTIuMDAzMjU3MzU4WiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ2MjE5ODUzODQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgUG90ZW50aWFsIENyYXNoIGluIHRoZSBXQ04zNnh4IERyaXZlcioqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgY29kZSBhbmQgaW1tZWRpYXRlbHkgc2VlIGEgcG90ZW50aWFsIGlzc3VlLiBJZiB0aGUgYF93Y25zc2AgcG9pbnRlciBpcyBOVUxMLCB0cnlpbmcgdG8gYWNjZXNzIGBfd2Nuc3MtXHUwMDNlY2hhbm5lbGAgaXMgZGVmaW5pdGVseSBnb2luZyB0byBjcmFzaCB0aGUgc3lzdGVtLiBUaGF0J3MgYSBjbGFzc2ljIG51bGwgcG9pbnRlciBkZXJlZmVyZW5jZSwgYW5kIHdlIG5lZWQgdG8gYmUgcmVhbGx5IGNhcmVmdWwgYWJvdXQgdGhhdC4gVGhpcyBzdWdnZXN0cyBhIGNyaXRpY2FsIGRlcGVuZGVuY3k6IHRoZSBgd2NuMzZ4eGAgZHJpdmVyICpuZWVkcyogYSBwYXJlbnQgZGV2aWNlLCBzcGVjaWZpY2FsbHkgYSBgd2Nuc3NfY3RybGAgZGV2aWNlLCB0byBmdW5jdGlvbiBwcm9wZXJseS5cblxuVGhlIHJlYWwgcXVlc3Rpb24gbm93IGlzLCBjYW4gc3l6a2FsbGVyLCBvdXIgZnV6emVyLCBzZXQgdXAgdGhhdCBwcmVyZXF1aXNpdGU/IElmIHN5emthbGxlciBjYW4ndCBjcmVhdGUgdGhlIG5lY2Vzc2FyeSBgd2Nuc3NfY3RybGAgZGV2aWNlLCB0aGVuIHdlIGFyZSB2ZXJ5IHVubGlrZWx5IHRvIHRyaWdnZXIgdGhlIHZ1bG5lcmFibGUgY29kZSwgb3IgYXQgbGVhc3QgdGhlIGNyYXNoLiBNeSBuZXh0IHN0ZXAgd2lsbCBiZSB0byBkaXZlIGludG8gYHdjbnNzX2N0cmwuY2AuIEkgbmVlZCB0byBmaWd1cmUgb3V0IHRoZSBkZXZpY2UgY3JlYXRpb24gcHJvY2VzcyBvZiBhIGB3Y25zc19jdHJsYCBkZXZpY2UgYW5kIGhvdyBzeXprYWxsZXIgaXMgaW50ZXJhY3Rpbmcgd2l0aCBpdCwgb3IgZmFpbGluZyB0by4gVGhhdCdzIHRoZSBrZXkgdG8gdW5kZXJzdGFuZGluZyBpZiB0aGlzIGlzIGEgcmVhbCB2dWxuZXJhYmlsaXR5IHRoYXQgY2FuIGJlIGV4cGxvaXRlZCwgb3IgaWYgb3VyIGZ1enplciBpcyBqdXN0IG5vdCBzZXQgdXAgdG8gcmVhY2ggaXQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjgyNDksIk91dHB1dFRva2VucyI6NzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo3NiwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDE4OjU0OjE2LjYyNTI0NTc2MVoiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjM0MDgwMzIsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm1vZHVsZV9wbGF0Zm9ybV9kcml2ZXJcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9zb2MvcWNvbS93Y25zc19jdHJsLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDE4OjU0OjE2LjY4ODY2Mzg3M1oiLCJTZXEiOjE5LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjMyNDE0MzIsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicnBtc2dfZHJpdmVyXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvc29jL3Fjb20vd2Nuc3NfY3RybC5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvc29jL3Fjb20vd2Nuc3NfY3RybC5jPTM1Mz1NT0RVTEVfREVWSUNFX1RBQkxFKG9mLCB3Y25zc19jdHJsX29mX21hdGNoKTtcXG5kcml2ZXJzL3NvYy9xY29tL3djbnNzX2N0cmwuYy0zNTQtXFxuZHJpdmVycy9zb2MvcWNvbS93Y25zc19jdHJsLmM6MzU1OnN0YXRpYyBzdHJ1Y3QgcnBtc2dfZHJpdmVyIHdjbnNzX2N0cmxfZHJpdmVyID0ge1xcbmRyaXZlcnMvc29jL3Fjb20vd2Nuc3NfY3RybC5jLTM1Ni1cXHQucHJvYmUgPSB3Y25zc19jdHJsX3Byb2JlLFxcbi0tXFxuZHJpdmVycy9zb2MvcWNvbS93Y25zc19jdHJsLmMtMzY0LVxcbmRyaXZlcnMvc29jL3Fjb20vd2Nuc3NfY3RybC5jOjM2NTptb2R1bGVfcnBtc2dfZHJpdmVyKHdjbnNzX2N0cmxfZHJpdmVyKTtcXG5kcml2ZXJzL3NvYy9xY29tL3djbnNzX2N0cmwuYy0zNjYtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDE4OjU0OjE2Ljc1MTkxMzE5NVoiLCJTZXEiOjIwLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo5NzkxNDc0OTMwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKlJlYWNoaW5nIHRoZSBgd2Nuc3NfY3RybGAgRHJpdmVyIHdpdGggU3l6a2FsbGVyKipcblxuT2theSwgc28gYHdjbnNzX2N0cmxgIGlzIGFuIGBycG1zZ19kcml2ZXJgLiBUaGF0IG1lYW5zIGl0IG5lZWRzIGFuIHJwbXNnIGRldmljZSB0byBiZSBwcm9iZWQuIFRoZSBxdWVzdGlvbiBpcywgY2FuIFN5emthbGxlciBjcmVhdGUgb25lPyBJIHdhcyB0aGlua2luZyBhYm91dCBgc3l6X3JwbXNnX2NyZWF0ZV9lcHRgIG9yIHNvbWV0aGluZyBzaW1pbGFyLCBidXQgdGhhdCBkb2Vzbid0IGV4aXN0LCBhbmQgSSBzdGFydGVkIGNvbnNpZGVyaW5nIGBzeXpfbWFjODAyMTFfaHdzaW1gIG9yIGV2ZW4gYHN5el9kZXZfcGxhdGZvcm1fYWRkYC5cblxuSGFuZyBvbiwgdGhpcyBidWcgd2FzIGFjdHVhbGx5IGZvdW5kIGJ5IHN5emJvdCwgYW5kIHRoZSBhdXRob3Igb2YgdGhlIHBhdGNoIGlzIGxpc3RlZCBhcyBgc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VgLiBUaGF0J3MgYSBodWdlIGNsdWUhIEl0IG1lYW5zIHRoaXMgY29kZSBpcyAqcmVhY2hhYmxlKiB3aXRoaW4gU3l6a2FsbGVyJ3MgUUVNVSBlbnZpcm9ubWVudC4gSXQgd2FzIGFscmVhZHkgZm91bmQuIEkgd2FzIHRoaW5raW5nIHRoYXQgSSdkIG5lZWQgdG8gZXhwbGljaXRseSBjcmFmdCBzb21ldGhpbmcgdG8gY3JlYXRlIHRoZSBuZWNlc3NhcnkgcnBtc2cgZGV2aWNlLCBidXQgc3l6Ym90IGhhcyBhbHJlYWR5IGRvbmUgdGhhdCB3b3JrLlxuXG5UaGUgY29tbWl0IG1lc3NhZ2Ugc2F5cyBcImFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3LFwiIHNvIGl0IGhhcyB0byBiZSByZWFjaGFibGUuIE5vdywgaG93ICpkaWQqIFN5emthbGxlciBnZXQgdGhlcmU/IEkgd2FzIGNvbnNpZGVyaW5nIGBtYWM4MDIxMV9od3NpbWAgYXMgYSBnZW5lcmFsIHBhdGgsIG9yIG1heWJlIHNvbWUgZGlyZWN0IHBsYXRmb3JtIGRldmljZSBhZGRpdGlvbiwgYnV0IHRoZW4gSSByZW1lbWJlciB0aGF0IGB3Y25zc19jdHJsYCBpcyBhIHJwbXNnIGRyaXZlci4gVGhlbiwgaXQgaGl0cyBtZS4gRWl0aGVyIGB2aGNpYCBvciBgbWFjODAyMTFfaHdzaW1gIG9yIGB2aXJ0aW9fcnBtc2dfYnVzYCBpcyB1c2VkLlxuXG5JZiBgdmlydGlvX3JwbXNnX2J1c2AgaXMgaW4gcGxheSwgU3l6a2FsbGVyIGNvdWxkIGJlIGluamVjdGluZyB2aXJ0aW8gZGV2aWNlcywgcHJvYmFibHkgdXNpbmcgc29tZXRoaW5nIGxpa2UgYC9kZXYvdmhvc3QtbmV0YCBvciBtYXliZSBhIGN1c3RvbSBgc3l6X3ZpcnRpb2Agc3lzY2FsbCDigJMgbm8sIG5vdCBgc3l6X3ZpcnRpb2AsIEkgd2FzIHRoaW5raW5nIG1vcmUgYWJvdXQgc29tZXRoaW5nIGxpa2UgYHN5el9nZW5ldGxpbmtfZ2V0X2ZhbWlseWAsIGJ1dCBubywgdGhhdCdzIG5vdCBpdC4gT3IgZXZlbiwgYHN5el9rdm1fc2V0dXBfY3B1YCBvciBvdGhlciBLVk0gY2FsbHMsIG5vLiBTeXprYWxsZXIgZnV6emVkIHZpcnRpbyBkZXZpY2VzIHdpdGggYC9kZXYvdmhvc3QtdnNvY2tgP1xuXG5Bbnl3YXksIHRoZSBpbXBvcnRhbnQgcG9pbnQgaXMgdGhhdCBzeXpib3QgKmZvdW5kKiB0aGlzLCBzbyBpdCAqaXMqIHJlYWNoYWJsZS4gSXQncyBzYWZlIHRvIGFzc3VtZSBTeXprYWxsZXIgaXMgZG9pbmcgc29tZXRoaW5nIHRvIGluc3RhbnRpYXRlIGFuIHJwbXNnIGRldmljZS4gSSBqdXN0IG5lZWQgdG8gZmlndXJlIG91dCB3aGF0IHRoYXQgXCJzb21ldGhpbmdcIiBpcywgYnV0IHRoYXQgaXMgbm90IHRoZSBpc3N1ZSwgaXQgaXMgcmVhY2hhYmxlLlxuXG5Ob3csIGxldCBtZSBqdXN0IGRvdWJsZS1jaGVjayB0aGF0IGB3Y24zNnh4X3NtZF9yc3BfcHJvY2Vzc2AgaXMgaW5kZWVkIHRoZSBmdW5jdGlvbiBiZWluZyBwYXRjaGVkLiBBaCwgeWVzLCB0aGUgcGF0Y2ggKmRvZXMqIGFkZCBhIGxlbmd0aCBjaGVjayBpbiBgd2NuMzZ4eF9zbWRfcnNwX3Byb2Nlc3NgLiBTaW5jZSBzeXpib3QgZm91bmQgaXQsIGl0J3MgZGVmaW5pdGVseSByZWFjaGFibGUuXG5cblRpbWUgdG8gbG9vayBpbnRvIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiBgd2NuMzZ4eF9zbWRfcnNwX3Byb2Nlc3NgIGl0c2VsZi5cblxuXG4iLCJJbnB1dFRva2VucyI6ODg5MCwiT3V0cHV0VG9rZW5zIjo0NywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjYwNiwiVG9vbENhbGxzIjpbImdyZXBwZXIiLCJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjZUMTg6NTQ6MjYuNTQzMzkxNzc2WiIsIlNlcSI6MjEsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI2Mzc4MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9zbWQuY1wiLFxuICBcIkZpcnN0TGluZVwiOiAzMjQ4LFxuICBcIkxpbmVDb3VudFwiOiAzMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIzMjQ4OlxcdGludCB3Y24zNnh4X3NtZF9yc3BfcHJvY2VzcyhzdHJ1Y3QgcnBtc2dfZGV2aWNlICpycGRldixcXG4zMjQ5OlxcdFxcdFxcdFxcdCAgICB2b2lkICpidWYsIGludCBsZW4sIHZvaWQgKnByaXYsIHUzMiBhZGRyKVxcbjMyNTA6XFx0e1xcbjMyNTE6XFx0XFx0Y29uc3Qgc3RydWN0IHdjbjM2eHhfaGFsX21zZ19oZWFkZXIgKm1zZ19oZWFkZXIgPSBidWY7XFxuMzI1MjpcXHRcXHRzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyA9IHByaXY7XFxuMzI1MzpcXHRcXHRzdHJ1Y3Qgd2NuMzZ4eCAqd2NuID0gaHctXFx1MDAzZXByaXY7XFxuMzI1NDpcXHRcXHRzdHJ1Y3Qgd2NuMzZ4eF9oYWxfaW5kX21zZyAqbXNnX2luZDtcXG4zMjU1OlxcdFxcdHdjbjM2eHhfZGJnX2R1bXAoV0NOMzZYWF9EQkdfU01EX0RVTVAsIFxcXCJTTUQgXFx1MDAzY1xcdTAwM2NcXHUwMDNjIFxcXCIsIGJ1ZiwgbGVuKTtcXG4zMjU2OlxcdFxcbjMyNTc6XFx0XFx0aWYgKGxlbiBcXHUwMDNjIHNpemVvZigqbXNnX2hlYWRlcikpIHtcXG4zMjU4OlxcdFxcdFxcdHdjbjM2eHhfd2FybihcXFwiQ29ycnVwdGVkIEhBTCBtZXNzYWdlOiBsZW5ndGggJWRcXFxcblxcXCIsIGxlbik7XFxuMzI1OTpcXHRcXHRcXHRyZXR1cm4gMDtcXG4zMjYwOlxcdFxcdH1cXG4zMjYxOlxcdFxcbjMyNjI6XFx0XFx0c3dpdGNoIChtc2dfaGVhZGVyLVxcdTAwM2Vtc2dfdHlwZSkge1xcbjMyNjM6XFx0XFx0Y2FzZSBXQ04zNlhYX0hBTF9TVEFSVF9SU1A6XFxuMzI2NDpcXHRcXHRjYXNlIFdDTjM2WFhfSEFMX0NPTkZJR19TVEFfUlNQOlxcbjMyNjU6XFx0XFx0Y2FzZSBXQ04zNlhYX0hBTF9DT05GSUdfQlNTX1JTUDpcXG4zMjY2OlxcdFxcdGNhc2UgV0NOMzZYWF9IQUxfQUREX1NUQV9TRUxGX1JTUDpcXG4zMjY3OlxcdFxcdGNhc2UgV0NOMzZYWF9IQUxfU1RPUF9SU1A6XFxuMzI2ODpcXHRcXHRjYXNlIFdDTjM2WFhfSEFMX0RFTF9TVEFfU0VMRl9SU1A6XFxuMzI2OTpcXHRcXHRjYXNlIFdDTjM2WFhfSEFMX0RFTEVURV9TVEFfUlNQOlxcbjMyNzA6XFx0XFx0Y2FzZSBXQ04zNlhYX0hBTF9JTklUX1NDQU5fUlNQOlxcbjMyNzE6XFx0XFx0Y2FzZSBXQ04zNlhYX0hBTF9TVEFSVF9TQ0FOX1JTUDpcXG4zMjcyOlxcdFxcdGNhc2UgV0NOMzZYWF9IQUxfRU5EX1NDQU5fUlNQOlxcbjMyNzM6XFx0XFx0Y2FzZSBXQ04zNlhYX0hBTF9GSU5JU0hfU0NBTl9SU1A6XFxuMzI3NDpcXHRcXHRjYXNlIFdDTjM2WFhfSEFMX0RPV05MT0FEX05WX1JTUDpcXG4zMjc1OlxcdFxcdGNhc2UgV0NOMzZYWF9IQUxfREVMRVRFX0JTU19SU1A6XFxuMzI3NjpcXHRcXHRjYXNlIFdDTjM2WFhfSEFMX1NFTkRfQkVBQ09OX1JTUDpcXG4zMjc3OlxcdFxcdGNhc2UgV0NOMzZYWF9IQUxfU0VUX0xJTktfU1RfUlNQOlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQxODo1NDoyNi41NDM2NTgxMzZaIiwiU2VxIjoyMiwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjY3MDAwMzQxMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBQb3RlbnRpYWwgU3l6Ym90LURldGVjdGVkIEJ1ZyBGaXgqKlxuXG5Pa2F5LCBzbyB0aGlzIHBhdGNoIGludHJvZHVjZXMgYSBsZW5ndGggY2hlY2ssIHNwZWNpZmljYWxseTogYGlmIChsZW4gXHUwMDNjIHNpemVvZigqbXNnX2hlYWRlcikpYC4gSG1tLCB0aGlzIGxvb2tzIGxpa2UgYSBzdHJhaWdodGZvcndhcmQgZml4IGZvciBhbiBvdXQtb2YtYm91bmRzIHJlYWQgdnVsbmVyYWJpbGl0eSBvbiBgbXNnX2hlYWRlci1cdTAwM2Vtc2dfdHlwZWAuIFNpbmNlIGl0J3MgYSBkcml2ZXIgY2hhbmdlIGFuZCBzeXpib3QgZm91bmQgaXQsIGl0J3MgcHJldHR5IGxpa2VseSB0aGUgYnVnIGlzIHJlYWNoYWJsZS4gV2FpdCwgaG93IGRvIEkga25vdyBpdCdzIGEgc3l6Ym90IHBhdGNoPyBBaCwgcmlnaHQsIHRoZSBjb21taXQgbWVzc2FnZTogYEF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VgLiBDbGVhci5cblxuQnV0IHdhaXQsIEkgbmVlZCB0byBtYWtlIHN1cmUgdGhpcyBpc24ndCBpbiBhIGRyaXZlciB0aGF0IHJlcXVpcmVzIHNwZWNpYWwgaGFyZHdhcmUgdGhhdCBzeXprYWxsZXIgY2FuJ3QgZW11bGF0ZS4gVGhlIHByb21wdCByZW1pbmRlZCBtZSB0byBjaGVjayBpZiB0aGUgZHJpdmVyIGlzIGEgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUuIFRoZSBkcml2ZXIgaXMgYHdjbjM2eHhgLiBJcyB0aGlzIGEgUENJZSBkcml2ZXI/IExldCdzIGNoZWNrIHRoZSBLY29uZmlnIGZpbGUgZm9yIHRoZSBkcml2ZXIuXG5cbk9rYXksIGNoZWNraW5nIGBkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9LY29uZmlnYCBhZ2Fpbi4gSXQgZGVwZW5kcyBvbiBgUUNPTV9XQ05TU19DVFJMYCBhbmQgYFJQTVNHYC4gSSByZWNhbGwgYFFDT01fV0NOU1NfQ1RSTGAgaXMgYW4gcnBtc2cgZHJpdmVyLiBSaWdodCwgcnBtc2cgaXMgYSBtZXNzYWdpbmcgYnVzLiBJIHRoaW5rIEkndmUgc2VlbiBycG1zZyBlbXVsYXRlZCB2aWEgdmlydGlvIGluIFFFTVUgKHZpcnRpby1ycG1zZykuIERvZXMgUUVNVSBoYXZlIHZpcnRpby1ycG1zZz8gT3IgZG9lcyBzeXprYWxsZXIgaW5qZWN0IHJwbXNnIG1lc3NhZ2VzIHNvbWVob3c/IEkgc2hvdWxkIGNoZWNrLlxuXG5BY3R1YWxseSwgSSBrbm93IHN5emthbGxlciBoYXMgYHN5el9tYWM4MDIxMV9od3NpbWAgd2hpY2ggaXMgZm9yIG1hYzgwMjExLiBXYWl0LCBkb2VzIHN5emthbGxlciBoYXZlIHNvbWV0aGluZyBzaW1pbGFyIGZvciBycG1zZz8gRG9lcyBpdCBoYXZlIGEgcHNldWRvLXN5c2NhbGwgc3BlY2lmaWNhbGx5IGZvciBycG1zZz8gSSBzaG91bGQgY2hlY2sgaWYgc3l6a2FsbGVyIGhhcyBhbnkgcnBtc2cgZGVzY3JpcHRpb25zIGluIGl0cyBzb3VyY2UgY29kZS4gSSBuZWVkIHRvIGJlIHN1cmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEwODE5LCJPdXRwdXRUb2tlbnMiOjI4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDIxLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjZUMTg6NTQ6MzMuMjEzNjY1MjU4WiIsIlNlcSI6MjMsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozMjM2NTg1MjcsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInN5el9cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9ycG1zZy9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDE4OjU0OjMzLjUzNzMzMzQyNVoiLCJTZXEiOjI0LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1MDQ0ODY3NzkxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgRmVhc2liaWxpdHkgb2YgVGFyZ2V0aW5nIGB3Y24zNnh4YCB3aXRoIFN5emthbGxlcioqXG5cbk9rYXksIHNvIEkgY2FuJ3QganVzdCBwbHVnIGEga2V5d29yZCBsaWtlIFwic3l6a2FsbGVyXCIgaW50byBhIHNlYXJjaCBhbmQgZXhwZWN0IHRvIHB1bGwgdXAgcmVsZXZhbnQgZGVzY3JpcHRpb25zLiBJIG5lZWQgdG8gYmUgbW9yZSBzdHJhdGVnaWMuIE15IGluaXRpYWwgdGhvdWdodCB3YXMgdG8gc2VlIGlmIHRoZXJlIHdlcmUgYW55IHBzZXVkby1zeXNjYWxscyBkaXJlY3RseSBidWlsdCBpbnRvIHRoZSBrZXJuZWwsIGJ1dCBubywgdGhvc2UgYXJlIG5vdCBwcmVzZW50LlxuXG5Ob3csIHRoZSByZWFsIHF1ZXN0aW9uIGlzLCBjYW4gSSBldmVuIGdldCBgd2NuMzZ4eGAgcnVubmluZyBpbiBhIFFFTVUgZW52aXJvbm1lbnQsIGFuZCBpZiBzbyBob3c/IExldCdzIGNoZWNrOiBpcyBgd2NuMzZ4eGAgYSBwbGF0Zm9ybSBkcml2ZXI/IFllcywgaXQgaXMuIFJpZ2h0LCBzbyBJIGhhdmUgdG8gdGhpbmsgYWJvdXQgaG93IHN5emthbGxlciBjYW4gaW50ZXJmYWNlLiBSZW1lbWJlciBgc3l6X2Rldl9wbGF0Zm9ybV9hZGRgIGV4aXN0cywgd2hpY2ggY2FuIGFkZCBwbGF0Zm9ybSBkZXZpY2VzLlxuXG5IZXJlJ3MgdGhlIHByb2JsZW06IGB3Y24zNnh4YCdzIHByb2JlIGZ1bmN0aW9uIHNlZW1zIHRvIGJlIGRlcGVuZGVudCBvbiBgd2Nuc3NgIGRyaXZlciBkYXRhIHJldHJpZXZlZCB0aHJvdWdoIGBkZXZfZ2V0X2RydmRhdGEocGRldi1cdTAwM2VkZXYucGFyZW50KWAuIElmIEkgdXNlIGBzeXpfZGV2X3BsYXRmb3JtX2FkZGAgdG8gYWRkIGB3Y24zNnh4YCwgaXRzIHBhcmVudCBkZXZpY2UgbWF5IG5vdCBoYXZlIHRoZSBuZWNlc3NhcnkgYHdjbnNzYCBkcml2ZXIgZGF0YS4gVGhhdCBjb3VsZCBsZWFkIHRvIGEgY3Jhc2gsIG9yIGF0IGxlYXN0IGEgZmFpbGVkIHByb2JlLlxuXG5IYW5nIG9uLi4uIGlzbid0IGB3Y24zNnh4YCBhY3R1YWxseSBwcm9iZWQgYnkgYHdjbnNzX2N0cmxgPyBJIGJldHRlciBjaGVjayB0aGF0LiBMZXQncyBkaWcgaW50byBgZHJpdmVycy9zb2MvcWNvbS93Y25zc19jdHJsLmNgLiBUaGF0IHNob3VsZCBnaXZlIG1lIHRoZSBhbnN3ZXIuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjExNjkxLCJPdXRwdXRUb2tlbnMiOjM5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjI3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDE4OjU0OjM4LjU4MjIwNDQ2NloiLCJTZXEiOjI1LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODA3MTM5NTIsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIndjbjM2eHhcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9zb2MvcWNvbS93Y25zc19jdHJsLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDE4OjU0OjM4LjY2MjkzMTM3OFoiLCJTZXEiOjI2LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2MjczNzM0Mzc1NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaWYgSSB3ZXJlIGNvbnNpZGVyaW5nIHRoaXMgY29kZTpcblxuKipEaWdnaW5nIGludG8gdGhlIGB3Y24zNnh4YCBEcml2ZXIgSW5zdGFudGlhdGlvbioqXG5cbk9rYXksIGhvbGQgb24gYSBzZWNvbmQuLi4gaG93ICpleGFjdGx5KiBpcyB0aGlzIGB3Y24zNnh4YCBkcml2ZXIgZ2V0dGluZyBpbml0aWFsaXplZD8gSSBuZWVkIHRvIHJlZnJlc2ggbXkgbWVtb3J5IG9uIHRoZSBpbnN0YW50aWF0aW9uIGZsb3cuIExldCdzIHNlZS4uLiB0aGUgbW9zdCBsb2dpY2FsIHBsYWNlIHRvIHN0YXJ0IHRyYWNpbmcgaXMgdGhlIGB3Y24zNnh4X3Byb2JlYCBmdW5jdGlvbi4gSSBzaG91bGQgcmV2aWV3IHRoYXQgcm91dGluZSBjYXJlZnVsbHksIGxvb2tpbmcgZm9yIGNsdWVzIGFib3V0IHRoZSBkZXZpY2UncyBhdHRhY2htZW50IHRvIHRoZSBzeXN0ZW0gYW5kIHRoZSBvdmVyYWxsIGluaXRpYWxpemF0aW9uIHNlcXVlbmNlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMjMwMSwiT3V0cHV0VG9rZW5zIjo0MiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDE4OjU1OjQxLjQwMDI3ODEyMloiLCJTZXEiOjI3LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTQ2NjI5MzI2NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ3Y24zNnh4XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJcXG5GdWxsIG91dHB1dCBpcyB0b28gbG9uZywgc2hvd2luZyA1MDAgb3V0IG9mIDg1MyBsaW5lcy5cXG5Vc2UgbW9yZSBwcmVjaXNlIGV4cHJlc3Npb24gaWYgcG9zc2libGUuXFxuXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTI3LSNpbmNsdWRlIFxcdTAwM2NuZXQvaXB2Ni5oXFx1MDAzZVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYzoyODojaW5jbHVkZSBcXFwid2NuMzZ4eC5oXFxcIlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYy0yOS0jaW5jbHVkZSBcXFwidGVzdG1vZGUuaFxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYy0zMS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmM6MzI6dW5zaWduZWQgaW50IHdjbjM2eHhfZGJnX21hc2s7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jOjMzOm1vZHVsZV9wYXJhbV9uYW1lZChkZWJ1Z19tYXNrLCB3Y24zNnh4X2RiZ19tYXNrLCB1aW50LCAwNjQ0KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmMtMzQtTU9EVUxFX1BBUk1fREVTQyhkZWJ1Z19tYXNrLCBcXFwiRGVidWdnaW5nIG1hc2tcXFwiKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYz0xODc9c3RhdGljIGlubGluZSB1OCBnZXRfc3RhX2luZGV4KHN0cnVjdCBpZWVlODAyMTFfdmlmICp2aWYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jOjE4ODpcXHRcXHRcXHQgICAgICAgc3RydWN0IHdjbjM2eHhfc3RhICpzdGFfcHJpdilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmMtMTg5LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYy0xOTQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jOjE5NTpzdGF0aWMgdm9pZCB3Y24zNnh4X2ZlYXRfY2Fwc19pbmZvKHN0cnVjdCB3Y24zNnh4ICp3Y24pXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTE5Ni17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmMtMTk5LVxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBNQVhfRkVBVFVSRV9TVVBQT1JURUQ7IGkrKykge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYzoyMDA6XFx0XFx0aWYgKHdjbjM2eHhfZmlybXdhcmVfZ2V0X2ZlYXRfY2Fwcyh3Y24tXFx1MDAzZWZ3X2ZlYXRfY2FwcywgaSkpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmM6MjAxOlxcdFxcdFxcdHdjbjM2eHhfZGJnKFdDTjM2WFhfREJHX01BQywgXFxcIkZXIENhcCAlc1xcXFxuXFxcIixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmM6MjAyOlxcdFxcdFxcdFxcdCAgICB3Y24zNnh4X2Zpcm13YXJlX2dldF9jYXBfbmFtZShpKSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTIwMy1cXHRcXHR9XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmMtMjA2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYzoyMDc6c3RhdGljIGludCB3Y24zNnh4X3N0YXJ0KHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYy0yMDgte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYzoyMDk6XFx0c3RydWN0IHdjbjM2eHggKndjbiA9IGh3LVxcdTAwM2Vwcml2O1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYy0yMTAtXFx0aW50IHJldDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmMtMjExLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYzoyMTI6XFx0d2NuMzZ4eF9kYmcoV0NOMzZYWF9EQkdfTUFDLCBcXFwibWFjIHN0YXJ0XFxcXG5cXFwiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmMtMjEzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYy0yMTQtXFx0LyogU01EIGluaXRpYWxpemF0aW9uICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jOjIxNTpcXHRyZXQgPSB3Y24zNnh4X3NtZF9vcGVuKHdjbik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTIxNi1cXHRpZiAocmV0KSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jOjIxNzpcXHRcXHR3Y24zNnh4X2VycihcXFwiRmFpbGVkIHRvIG9wZW4gc21kIGNoYW5uZWw6ICVkXFxcXG5cXFwiLCByZXQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYy0yMTgtXFx0XFx0Z290byBvdXRfZXJyO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTIyMS1cXHQvKiBBbGxvY2F0ZSBtZW1vcnkgcG9vbHMgZm9yIE1nbXQgQkQgaGVhZGVycyBhbmQgRGF0YSBCRCBoZWFkZXJzICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jOjIyMjpcXHRyZXQgPSB3Y24zNnh4X2R4ZV9hbGxvY2F0ZV9tZW1fcG9vbHMod2NuKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmMtMjIzLVxcdGlmIChyZXQpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmM6MjI0OlxcdFxcdHdjbjM2eHhfZXJyKFxcXCJGYWlsZWQgdG8gYWxsb2MgRFhFIG1lbXBvb2w6ICVkXFxcXG5cXFwiLCByZXQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYy0yMjUtXFx0XFx0Z290byBvdXRfc21kX2Nsb3NlO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTIyNy1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmM6MjI4OlxcdHJldCA9IHdjbjM2eHhfZHhlX2FsbG9jX2N0bF9ibGtzKHdjbik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTIyOS1cXHRpZiAocmV0KSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jOjIzMDpcXHRcXHR3Y24zNnh4X2VycihcXFwiRmFpbGVkIHRvIGFsbG9jIERYRSBjdGwgYmxvY2tzOiAlZFxcXFxuXFxcIiwgcmV0KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmMtMjMxLVxcdFxcdGdvdG8gb3V0X2ZyZWVfZHhlX3Bvb2w7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmMtMjMzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYzoyMzQ6XFx0cmV0ID0gd2NuMzZ4eF9zbWRfbG9hZF9udih3Y24pO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYy0yMzUtXFx0aWYgKHJldCkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYzoyMzY6XFx0XFx0d2NuMzZ4eF9lcnIoXFxcIkZhaWxlZCB0byBwdXNoIE5WIHRvIGNoaXBcXFxcblxcXCIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYy0yMzctXFx0XFx0Z290byBvdXRfZnJlZV9keGVfY3RsO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTIzOS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmM6MjQwOlxcdHJldCA9IHdjbjM2eHhfc21kX3N0YXJ0KHdjbik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTI0MS1cXHRpZiAocmV0KSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jOjI0MjpcXHRcXHR3Y24zNnh4X2VycihcXFwiRmFpbGVkIHRvIHN0YXJ0IGNoaXBcXFxcblxcXCIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYy0yNDMtXFx0XFx0Z290byBvdXRfZnJlZV9keGVfY3RsO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTI0NS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmM6MjQ2OlxcdGlmICghd2NuMzZ4eF9pc19md192ZXJzaW9uKHdjbiwgMSwgMiwgMiwgMjQpKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jOjI0NzpcXHRcXHRyZXQgPSB3Y24zNnh4X3NtZF9mZWF0dXJlX2NhcHNfZXhjaGFuZ2Uod2NuKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmMtMjQ4LVxcdFxcdGlmIChyZXQpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jOjI0OTpcXHRcXHRcXHR3Y24zNnh4X3dhcm4oXFxcIkV4Y2hhbmdlIGZlYXR1cmUgY2FwcyBmYWlsZWRcXFxcblxcXCIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYy0yNTAtXFx0XFx0ZWxzZVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYzoyNTE6XFx0XFx0XFx0d2NuMzZ4eF9mZWF0X2NhcHNfaW5mbyh3Y24pO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYy0yNTItXFx0fVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTI1NC1cXHQvKiBETUEgY2hhbm5lbCBpbml0aWFsaXphdGlvbiAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYzoyNTU6XFx0cmV0ID0gd2NuMzZ4eF9keGVfaW5pdCh3Y24pO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYy0yNTYtXFx0aWYgKHJldCkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYzoyNTc6XFx0XFx0d2NuMzZ4eF9lcnIoXFxcIkRYRSBpbml0IGZhaWxlZFxcXFxuXFxcIik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTI1OC1cXHRcXHRnb3RvIG91dF9zbWRfc3RvcDtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYy0yNjAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jOjI2MTpcXHR3Y24zNnh4X2RlYnVnZnNfaW5pdCh3Y24pO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYy0yNjItXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmMtMjY5LW91dF9zbWRfc3RvcDpcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmM6MjcwOlxcdHdjbjM2eHhfc21kX3N0b3Aod2NuKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmMtMjcxLW91dF9mcmVlX2R4ZV9jdGw6XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jOjI3MjpcXHR3Y24zNnh4X2R4ZV9mcmVlX2N0bF9ibGtzKHdjbik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTI3My1vdXRfZnJlZV9keGVfcG9vbDpcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmM6Mjc0OlxcdHdjbjM2eHhfZHhlX2ZyZWVfbWVtX3Bvb2xzKHdjbik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTI3NS1vdXRfc21kX2Nsb3NlOlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYzoyNzY6XFx0d2NuMzZ4eF9zbWRfY2xvc2Uod2NuKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmMtMjc3LW91dF9lcnI6XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmMtMjgwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYzoyODE6c3RhdGljIHZvaWQgd2NuMzZ4eF9zdG9wKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LCBib29sIHN1c3BlbmQpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTI4Mi17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jOjI4MzpcXHRzdHJ1Y3Qgd2NuMzZ4eCAqd2NuID0gaHctXFx1MDAzZXByaXY7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTI4NC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmM6Mjg1OlxcdHdjbjM2eHhfZGJnKFdDTjM2WFhfREJHX01BQywgXFxcIm1hYyBzdG9wXFxcXG5cXFwiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmMtMjg2LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTI5Ny1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmM6Mjk4OlxcdHdjbjM2eHhfZGVidWdmc19leGl0KHdjbik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jOjI5OTpcXHR3Y24zNnh4X3NtZF9zdG9wKHdjbik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jOjMwMDpcXHR3Y24zNnh4X2R4ZV9kZWluaXQod2NuKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmM6MzAxOlxcdHdjbjM2eHhfc21kX2Nsb3NlKHdjbik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTMwMi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmM6MzAzOlxcdHdjbjM2eHhfZHhlX2ZyZWVfbWVtX3Bvb2xzKHdjbik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jOjMwNDpcXHR3Y24zNnh4X2R4ZV9mcmVlX2N0bF9ibGtzKHdjbik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTMwNS19XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTMwNi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmM6MzA3OnN0YXRpYyB2b2lkIHdjbjM2eHhfY2hhbmdlX3BzKHN0cnVjdCB3Y24zNnh4ICp3Y24sIGJvb2wgZW5hYmxlKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYy0zMDgte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYy0zMDktXFx0c3RydWN0IGllZWU4MDIxMV92aWYgKnZpZiA9IE5VTEw7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jOjMxMDpcXHRzdHJ1Y3Qgd2NuMzZ4eF92aWYgKnRtcDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmMtMzExLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYy0zMTItXFx0bGlzdF9mb3JfZWFjaF9lbnRyeSh0bXAsIFxcdTAwMjZ3Y24tXFx1MDAzZXZpZl9saXN0LCBsaXN0KSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jOjMxMzpcXHRcXHR2aWYgPSB3Y24zNnh4X3ByaXZfdG9fdmlmKHRtcCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTMxNC1cXHRcXHRpZiAoZW5hYmxlIFxcdTAwMjZcXHUwMDI2ICF3Y24tXFx1MDAzZXN3X3NjYW4pIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmMtMzE1LVxcdFxcdFxcdGlmICh2aWYtXFx1MDAzZWNmZy5wcykgLyogcHMgYWxsb3dlZCA/ICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jOjMxNjpcXHRcXHRcXHRcXHR3Y24zNnh4X3BtY19lbnRlcl9ibXBzX3N0YXRlKHdjbiwgdmlmKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmMtMzE3LVxcdFxcdH0gZWxzZSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jOjMxODpcXHRcXHRcXHR3Y24zNnh4X3BtY19leGl0X2JtcHNfc3RhdGUod2NuLCB2aWYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYy0zMTktXFx0XFx0fVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTMyMi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmM6MzIzOnN0YXRpYyB2b2lkIHdjbjM2eHhfY2hhbmdlX29wY2hhbm5lbChzdHJ1Y3Qgd2NuMzZ4eCAqd2NuLCBpbnQgY2gpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTMyNC17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTMyNS1cXHRzdHJ1Y3QgaWVlZTgwMjExX3ZpZiAqdmlmID0gTlVMTDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmM6MzI2OlxcdHN0cnVjdCB3Y24zNnh4X3ZpZiAqdG1wO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYy0zMjctXFx0c3RydWN0IGllZWU4MDIxMV9zdXBwb3J0ZWRfYmFuZCAqYmFuZDtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYy0zNDYtXFx0aWYgKCFjaGFubmVsKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jOjM0NzpcXHRcXHR3Y24zNnh4X2VycihcXFwiQ2Fubm90IHR1bmUgdG8gY2hhbm5lbCAlZFxcXFxuXFxcIiwgY2gpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYy0zNDgtXFx0XFx0cmV0dXJuO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTM1Ni1cXHRsaXN0X2Zvcl9lYWNoX2VudHJ5KHRtcCwgXFx1MDAyNndjbi1cXHUwMDNldmlmX2xpc3QsIGxpc3QpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmM6MzU3OlxcdFxcdHZpZiA9IHdjbjM2eHhfcHJpdl90b192aWYodG1wKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmM6MzU4OlxcdFxcdHdjbjM2eHhfc21kX3N3aXRjaF9jaGFubmVsKHdjbiwgdmlmLCBjaCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTM1OS1cXHR9XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmMtMzYzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYzozNjQ6c3RhdGljIGludCB3Y24zNnh4X2NvbmZpZyhzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodywgaW50IHJhZGlvX2lkeCwgdTMyIGNoYW5nZWQpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTM2NS17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jOjM2NjpcXHRzdHJ1Y3Qgd2NuMzZ4eCAqd2NuID0gaHctXFx1MDAzZXByaXY7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTM2Ny1cXHRpbnQgcmV0O1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYy0zNjgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jOjM2OTpcXHR3Y24zNnh4X2RiZyhXQ04zNlhYX0RCR19NQUMsIFxcXCJtYWMgY29uZmlnIGNoYW5nZWQgMHglMDh4XFxcXG5cXFwiLCBjaGFuZ2VkKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmMtMzcwLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTM3NC1cXHRcXHRpbnQgY2ggPSBXQ04zNlhYX0hXX0NIQU5ORUwod2NuKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmM6Mzc1OlxcdFxcdHdjbjM2eHhfZGJnKFdDTjM2WFhfREJHX01BQywgXFxcIndjbjM2eHhfY29uZmlnIGNoYW5uZWwgc3dpdGNoPSVkXFxcXG5cXFwiLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYy0zNzYtXFx0XFx0XFx0ICAgIGNoKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYy0zODMtXFx0XFx0XFx0aWYgKHdjbi1cXHUwMDNlc3dfc2Nhbl9jaGFubmVsKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYzozODQ6XFx0XFx0XFx0XFx0d2NuMzZ4eF9zbWRfZW5kX3NjYW4od2NuLCB3Y24tXFx1MDAzZXN3X3NjYW5fY2hhbm5lbCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTM4NS1cXHRcXHRcXHRpZiAod2NuLVxcdTAwM2Vzd19zY2FuX2luaXQpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmM6Mzg2OlxcdFxcdFxcdFxcdHdjbjM2eHhfc21kX2ZpbmlzaF9zY2FuKHdjbiwgSEFMX1NZU19NT0RFX1NDQU4sXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTM4Ny1cXHRcXHRcXHRcXHRcXHRcXHRcXHR3Y24tXFx1MDAzZXN3X3NjYW5fdmlmKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYy0zOTMtXFx0XFx0XFx0aWYgKHdjbi1cXHUwMDNlc3dfc2Nhbl9jaGFubmVsKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYzozOTQ6XFx0XFx0XFx0XFx0d2NuMzZ4eF9zbWRfZW5kX3NjYW4od2NuLCB3Y24tXFx1MDAzZXN3X3NjYW5fY2hhbm5lbCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTM5NS1cXHRcXHRcXHRpZiAoIXdjbi1cXHUwMDNlc3dfc2Nhbl9pbml0KSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmMtMzk4LVxcdFxcdFxcdFxcdCAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYzozOTk6XFx0XFx0XFx0XFx0cmV0ID0gd2NuMzZ4eF9zbWRfaW5pdF9zY2FuKHdjbixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmMtNDAwLVxcdFxcdFxcdFxcdFxcdFxcdFxcdCAgICBIQUxfU1lTX01PREVfU0NBTixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYy00MDYtXFx0XFx0XFx0fVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYzo0MDc6XFx0XFx0XFx0d2NuMzZ4eF9zbWRfc3RhcnRfc2Nhbih3Y24sIGNoKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmMtNDA4LVxcdFxcdH0gZWxzZSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jOjQwOTpcXHRcXHRcXHR3Y24zNnh4X2NoYW5nZV9vcGNoYW5uZWwod2NuLCBjaCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTQxMC1cXHRcXHR9XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmMtNDEzLVxcdGlmIChjaGFuZ2VkIFxcdTAwMjYgSUVFRTgwMjExX0NPTkZfQ0hBTkdFX1BTKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYzo0MTQ6XFx0XFx0d2NuMzZ4eF9jaGFuZ2VfcHMod2NuLCBody1cXHUwMDNlY29uZi5mbGFncyBcXHUwMDI2IElFRUU4MDIxMV9DT05GX1BTKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmMtNDE1LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTQxNy1cXHRcXHRpZiAoaHctXFx1MDAzZWNvbmYuZmxhZ3MgXFx1MDAyNiBJRUVFODAyMTFfQ09ORl9JRExFKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYzo0MTg6XFx0XFx0XFx0d2NuMzZ4eF9zbWRfZW50ZXJfaW1wcyh3Y24pO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYy00MTktXFx0XFx0ZWxzZVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYzo0MjA6XFx0XFx0XFx0d2NuMzZ4eF9zbWRfZXhpdF9pbXBzKHdjbik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTQyMS1cXHR9XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmMtNDI3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYzo0Mjg6c3RhdGljIHZvaWQgd2NuMzZ4eF9jb25maWd1cmVfZmlsdGVyKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYy00MjktXFx0XFx0XFx0XFx0ICAgICB1bnNpZ25lZCBpbnQgY2hhbmdlZCxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYy00MzEte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYzo0MzI6XFx0c3RydWN0IHdjbjM2eHhfaGFsX3Jjdl9mbHRfbWNfYWRkcl9saXN0X3R5cGUgKmZwO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYzo0MzM6XFx0c3RydWN0IHdjbjM2eHggKndjbiA9IGh3LVxcdTAwM2Vwcml2O1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYzo0MzQ6XFx0c3RydWN0IHdjbjM2eHhfdmlmICp0bXA7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTQzNS1cXHRzdHJ1Y3QgaWVlZTgwMjExX3ZpZiAqdmlmID0gTlVMTDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmMtNDM2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYzo0Mzc6XFx0d2NuMzZ4eF9kYmcoV0NOMzZYWF9EQkdfTUFDLCBcXFwibWFjIGNvbmZpZ3VyZSBmaWx0ZXJcXFxcblxcXCIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYy00MzgtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmMtNDQ0LVxcdGxpc3RfZm9yX2VhY2hfZW50cnkodG1wLCBcXHUwMDI2d2NuLVxcdTAwM2V2aWZfbGlzdCwgbGlzdCkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYzo0NDU6XFx0XFx0dmlmID0gd2NuMzZ4eF9wcml2X3RvX3ZpZih0bXApO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYy00NDYtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmMtNDQ4LVxcdFxcdGlmICgqdG90YWwgXFx1MDAyNiBGSUZfQUxMTVVMVEkpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jOjQ0OTpcXHRcXHRcXHR3Y24zNnh4X3NtZF9zZXRfbWNfbGlzdCh3Y24sIHZpZiwgTlVMTCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTQ1MC1cXHRcXHRlbHNlIGlmIChOTDgwMjExX0lGVFlQRV9TVEFUSU9OID09IHZpZi1cXHUwMDNldHlwZSBcXHUwMDI2XFx1MDAyNiB0bXAtXFx1MDAzZXN0YV9hc3NvYylcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmM6NDUxOlxcdFxcdFxcdHdjbjM2eHhfc21kX3NldF9tY19saXN0KHdjbiwgdmlmLCBmcCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTQ1Mi1cXHR9XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmMtNDU3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYzo0NTg6c3RhdGljIHU2NCB3Y24zNnh4X3ByZXBhcmVfbXVsdGljYXN0KHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYy00NTktXFx0XFx0XFx0XFx0ICAgICBzdHJ1Y3QgbmV0ZGV2X2h3X2FkZHJfbGlzdCAqbWNfbGlzdClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmMtNDYwLXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmM6NDYxOlxcdHN0cnVjdCB3Y24zNnh4X2hhbF9yY3ZfZmx0X21jX2FkZHJfbGlzdF90eXBlICpmcDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmMtNDYyLVxcdHN0cnVjdCBuZXRkZXZfaHdfYWRkciAqaGE7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTQ2My1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmM6NDY0OlxcdHdjbjM2eHhfZGJnKFdDTjM2WFhfREJHX01BQywgXFxcIm1hYyBwcmVwYXJlIG11bHRpY2FzdCBsaXN0XFxcXG5cXFwiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmMtNDY1LVxcdGZwID0ga3phbGxvY19vYmooKmZwLCBHRlBfQVRPTUlDKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmMtNDY2LVxcdGlmICghZnApIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmM6NDY3OlxcdFxcdHdjbjM2eHhfZXJyKFxcXCJPdXQgb2YgbWVtb3J5IHNldHRpbmcgZmlsdGVycy5cXFxcblxcXCIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYy00NjgtXFx0XFx0cmV0dXJuIDA7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmMtNDg0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYzo0ODU6c3RhdGljIHZvaWQgd2NuMzZ4eF90eChzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmMtNDg2LVxcdFxcdCAgICAgICBzdHJ1Y3QgaWVlZTgwMjExX3R4X2NvbnRyb2wgKmNvbnRyb2wsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmMtNDg4LXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmM6NDg5OlxcdHN0cnVjdCB3Y24zNnh4ICp3Y24gPSBody1cXHUwMDNlcHJpdjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmM6NDkwOlxcdHN0cnVjdCB3Y24zNnh4X3N0YSAqc3RhX3ByaXYgPSBOVUxMO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYy00OTEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTQ5Mi1cXHRpZiAoY29udHJvbC1cXHUwMDNlc3RhKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYzo0OTM6XFx0XFx0c3RhX3ByaXYgPSB3Y24zNnh4X3N0YV90b19wcml2KGNvbnRyb2wtXFx1MDAzZXN0YSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTQ5NC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmM6NDk1OlxcdGlmICh3Y24zNnh4X3N0YXJ0X3R4KHdjbiwgc3RhX3ByaXYsIHNrYikpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTQ5Ni1cXHRcXHRpZWVlODAyMTFfZnJlZV90eHNrYih3Y24tXFx1MDAzZWh3LCBza2IpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTQ5OC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmM6NDk5OnN0YXRpYyBpbnQgd2NuMzZ4eF9zZXRfa2V5KHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LCBlbnVtIHNldF9rZXlfY21kIGNtZCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmMtNTAwLVxcdFxcdFxcdCAgIHN0cnVjdCBpZWVlODAyMTFfdmlmICp2aWYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmMtNTAzLXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmM6NTA0OlxcdHN0cnVjdCB3Y24zNnh4ICp3Y24gPSBody1cXHUwMDNlcHJpdjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmM6NTA1OlxcdHN0cnVjdCB3Y24zNnh4X3ZpZiAqdmlmX3ByaXYgPSB3Y24zNnh4X3ZpZl90b19wcml2KHZpZik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jOjUwNjpcXHRzdHJ1Y3Qgd2NuMzZ4eF9zdGEgKnN0YV9wcml2ID0gc3RhID8gd2NuMzZ4eF9zdGFfdG9fcHJpdihzdGEpIDogTlVMTDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmMtNTA3LVxcdGludCByZXQgPSAwO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTUwOS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmM6NTEwOlxcdHdjbjM2eHhfZGJnKFdDTjM2WFhfREJHX01BQywgXFxcIm1hYzgwMjExIHNldCBrZXlcXFxcblxcXCIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYzo1MTE6XFx0d2NuMzZ4eF9kYmcoV0NOMzZYWF9EQkdfTUFDLCBcXFwiS2V5OiBjbWQ9MHgleCBhbGdvOjB4JXgsIGlkOiVkLCBsZW46JWQgZmxhZ3MgMHgleFxcXFxuXFxcIixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmMtNTEyLVxcdFxcdCAgICBjbWQsIGtleV9jb25mLVxcdTAwM2VjaXBoZXIsIGtleV9jb25mLVxcdTAwM2VrZXlpZHgsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTUxMy1cXHRcXHQgICAga2V5X2NvbmYtXFx1MDAzZWtleWxlbiwga2V5X2NvbmYtXFx1MDAzZWZsYWdzKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmM6NTE0OlxcdHdjbjM2eHhfZGJnX2R1bXAoV0NOMzZYWF9EQkdfTUFDLCBcXFwiS0VZOiBcXFwiLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYy01MTUtXFx0XFx0XFx0IGtleV9jb25mLVxcdTAwM2VrZXksXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmMtNTMzLVxcdGRlZmF1bHQ6XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jOjUzNDpcXHRcXHR3Y24zNnh4X2VycihcXFwiVW5zdXBwb3J0ZWQga2V5IHR5cGUgMHgleFxcXFxuXFxcIixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmMtNTM1LVxcdFxcdFxcdCAgICAgIGtleV9jb25mLVxcdTAwM2VjaXBoZXIpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTU2MC1cXHRcXHRcXHRpZiAoTkw4MDIxMV9JRlRZUEVfU1RBVElPTiA9PSB2aWYtXFx1MDAzZXR5cGUpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmM6NTYxOlxcdFxcdFxcdFxcdHdjbjM2eHhfc21kX2NvbmZpZ19ic3Mod2NuLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYy01NjItXFx0XFx0XFx0XFx0XFx0XFx0ICAgICAgIHZpZixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYy01NjUtXFx0XFx0XFx0XFx0XFx0XFx0ICAgICAgIHRydWUpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYzo1NjY6XFx0XFx0XFx0XFx0d2NuMzZ4eF9zbWRfY29uZmlnX3N0YSh3Y24sIHZpZiwgc3RhKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmMtNTY3LVxcdFxcdFxcdH1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmMtNTY4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYzo1Njk6XFx0XFx0XFx0d2NuMzZ4eF9zbWRfc2V0X3N0YWtleSh3Y24sXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTU3MC1cXHRcXHRcXHRcXHR2aWZfcHJpdi1cXHUwMDNlZW5jcnlwdF90eXBlLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTU3NS1cXHRcXHR9IGVsc2Uge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYzo1NzY6XFx0XFx0XFx0d2NuMzZ4eF9zbWRfc2V0X2Jzc2tleSh3Y24sXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTU3Ny1cXHRcXHRcXHRcXHR2aWZfcHJpdi1cXHUwMDNlZW5jcnlwdF90eXBlLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTU4Ny1cXHRcXHRcXHRcXHRcXHRzdGFfcHJpdi1cXHUwMDNlaXNfZGF0YV9lbmNyeXB0ZWQgPSB0cnVlO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYzo1ODg6XFx0XFx0XFx0XFx0XFx0d2NuMzZ4eF9zbWRfc2V0X3N0YWtleSh3Y24sXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTU4OS1cXHRcXHRcXHRcXHRcXHRcXHR2aWZfcHJpdi1cXHUwMDNlZW5jcnlwdF90eXBlLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTYwMC1cXHRcXHRcXHRpZiAodmlmX3ByaXYtXFx1MDAzZWJzc19pbmRleCAhPSBXQ04zNlhYX0hBTF9CU1NfSU5WQUxJRF9JRFgpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jOjYwMTpcXHRcXHRcXHRcXHR3Y24zNnh4X3NtZF9yZW1vdmVfYnNza2V5KHdjbixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmMtNjAyLVxcdFxcdFxcdFxcdFxcdHZpZl9wcml2LVxcdTAwM2VlbmNyeXB0X3R5cGUsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmMtNjEwLVxcdFxcdFxcdGlmIChzdGFfcHJpdi1cXHUwMDNlYWlkKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYzo2MTE6XFx0XFx0XFx0XFx0d2NuMzZ4eF9zbWRfcmVtb3ZlX3N0YWtleSh3Y24sXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTYxMi1cXHRcXHRcXHRcXHRcXHR2aWZfcHJpdi1cXHUwMDNlZW5jcnlwdF90eXBlLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTYxNy1cXHRkZWZhdWx0OlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYzo2MTg6XFx0XFx0d2NuMzZ4eF9lcnIoXFxcIlVuc3VwcG9ydGVkIGtleSBjbWQgMHgleFxcXFxuXFxcIiwgY21kKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmMtNjE5LVxcdFxcdHJldCA9IC1FT1BOT1RTVVBQO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTYyOC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmM6NjI5OnN0YXRpYyBpbnQgd2NuMzZ4eF9od19zY2FuKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYy02MzAtXFx0XFx0XFx0ICAgc3RydWN0IGllZWU4MDIxMV92aWYgKnZpZixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYy02MzIte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYzo2MzM6XFx0c3RydWN0IHdjbjM2eHggKndjbiA9IGh3LVxcdTAwM2Vwcml2O1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYy02MzQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jOjYzNTpcXHRpZiAoIXdjbjM2eHhfZmlybXdhcmVfZ2V0X2ZlYXRfY2Fwcyh3Y24tXFx1MDAzZWZ3X2ZlYXRfY2FwcywgU0NBTl9PRkZMT0FEKSkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYy02MzYtXFx0XFx0LyogZmFsbGJhY2sgdG8gbWFjODAyMTEgc29mdHdhcmUgc2NhbiAqL1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTY0My1cXHRpZiAoaHdfcmVxLVxcdTAwM2VyZXEubl9jaGFubmVscyBcXHUwMDNlIDQ4KSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jOjY0NDpcXHRcXHR3Y24zNnh4X3dhcm4oXFxcIk9mZmxvYWQgc2NhbiBhYm9ydGVkLCBuX2NoYW5uZWxzPSV1XFxcIixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmMtNjQ1LVxcdFxcdFxcdCAgICAgaHdfcmVxLVxcdTAwM2VyZXEubl9jaGFubmVscyk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmMtNjU5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYzo2NjA6XFx0d2NuMzZ4eF9zbWRfdXBkYXRlX2NoYW5uZWxfbGlzdCh3Y24sIFxcdTAwMjZod19yZXEtXFx1MDAzZXJlcSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jOjY2MTpcXHRyZXR1cm4gd2NuMzZ4eF9zbWRfc3RhcnRfaHdfc2Nhbih3Y24sIHZpZiwgXFx1MDAyNmh3X3JlcS1cXHUwMDNlcmVxKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmMtNjYyLX1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmMtNjYzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYzo2NjQ6c3RhdGljIHZvaWQgd2NuMzZ4eF9jYW5jZWxfaHdfc2NhbihzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmMtNjY1LVxcdFxcdFxcdFxcdCAgIHN0cnVjdCBpZWVlODAyMTFfdmlmICp2aWYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTY2Ni17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jOjY2NzpcXHRzdHJ1Y3Qgd2NuMzZ4eCAqd2NuID0gaHctXFx1MDAzZXByaXY7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTY2OC1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYy02NzItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jOjY3MzpcXHRpZiAod2NuMzZ4eF9maXJtd2FyZV9nZXRfZmVhdF9jYXBzKHdjbi1cXHUwMDNlZndfZmVhdF9jYXBzLCBTQ0FOX09GRkxPQUQpKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTY3NC1cXHRcXHQvKiBpZWVlODAyMTFfc2Nhbl9jb21wbGV0ZWQgd2lsbCBiZSBjYWxsZWQgb24gRlcgc2NhblxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYy02NzUtXFx0XFx0ICogaW5kaWNhdGlvbiAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYzo2NzY6XFx0XFx0d2NuMzZ4eF9zbWRfc3RvcF9od19zY2FuKHdjbik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTY3Ny1cXHR9XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmMtNjc5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYzo2ODA6c3RhdGljIHZvaWQgd2NuMzZ4eF9zd19zY2FuX3N0YXJ0KHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYy02ODEtXFx0XFx0XFx0XFx0ICBzdHJ1Y3QgaWVlZTgwMjExX3ZpZiAqdmlmLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTY4My17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jOjY4NDpcXHRzdHJ1Y3Qgd2NuMzZ4eCAqd2NuID0gaHctXFx1MDAzZXByaXY7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jOjY4NTpcXHRzdHJ1Y3Qgd2NuMzZ4eF92aWYgKnZpZl9wcml2ID0gd2NuMzZ4eF92aWZfdG9fcHJpdih2aWYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYy02ODYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jOjY4NzpcXHR3Y24zNnh4X2RiZyhXQ04zNlhYX0RCR19NQUMsIFxcXCJzd19zY2FuX3N0YXJ0XFxcIik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTY4OC1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYy02OTctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jOjY5ODpzdGF0aWMgdm9pZCB3Y24zNnh4X3N3X3NjYW5fY29tcGxldGUoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTY5OS1cXHRcXHRcXHRcXHQgICAgIHN0cnVjdCBpZWVlODAyMTFfdmlmICp2aWYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTcwMC17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jOjcwMTpcXHRzdHJ1Y3Qgd2NuMzZ4eCAqd2NuID0gaHctXFx1MDAzZXByaXY7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTcwMi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmM6NzAzOlxcdHdjbjM2eHhfZGJnKFdDTjM2WFhfREJHX01BQywgXFxcInN3X3NjYW5fY29tcGxldGVcXFwiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmMtNzA0LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTcwNi1cXHRpZiAod2NuLVxcdTAwM2Vzd19zY2FuX2NoYW5uZWwpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jOjcwNzpcXHRcXHR3Y24zNnh4X3NtZF9lbmRfc2Nhbih3Y24sIHdjbi1cXHUwMDNlc3dfc2Nhbl9jaGFubmVsKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmMtNzA4LVxcdGlmICh3Y24tXFx1MDAzZXN3X3NjYW5faW5pdCkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYzo3MDk6XFx0XFx0d2NuMzZ4eF9zbWRfZmluaXNoX3NjYW4od2NuLCBIQUxfU1lTX01PREVfU0NBTixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmMtNzEwLVxcdFxcdFxcdFxcdFxcdHdjbi1cXHUwMDNlc3dfc2Nhbl92aWYpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTcxNS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmM6NzE2OnN0YXRpYyB2b2lkIHdjbjM2eHhfdXBkYXRlX2FsbG93ZWRfcmF0ZXMoc3RydWN0IGllZWU4MDIxMV9zdGEgKnN0YSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmMtNzE3LVxcdFxcdFxcdFxcdFxcdCBlbnVtIG5sODAyMTFfYmFuZCBiYW5kKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTcyMC1cXHR1MTYgKnJhdGVzX3RhYmxlO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYzo3MjE6XFx0c3RydWN0IHdjbjM2eHhfc3RhICpzdGFfcHJpdiA9IHdjbjM2eHhfc3RhX3RvX3ByaXYoc3RhKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmMtNzIyLVxcdHUzMiByYXRlcyA9IHN0YS1cXHUwMDNlZGVmbGluay5zdXBwX3JhdGVzW2JhbmRdO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTc2NC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmM6NzY1OnZvaWQgd2NuMzZ4eF9zZXRfZGVmYXVsdF9yYXRlcyhzdHJ1Y3Qgd2NuMzZ4eF9oYWxfc3VwcG9ydGVkX3JhdGVzICpyYXRlcylcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmMtNzY2LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYy03OTEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jOjc5Mjp2b2lkIHdjbjM2eHhfc2V0X2RlZmF1bHRfcmF0ZXNfdjEoc3RydWN0IHdjbjM2eHhfaGFsX3N1cHBvcnRlZF9yYXRlc192MSAqcmF0ZXMpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTc5My17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmMtNzk4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYzo3OTk6c3RhdGljIHZvaWQgd2NuMzZ4eF9ic3NfaW5mb19jaGFuZ2VkKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYy04MDAtXFx0XFx0XFx0XFx0ICAgICBzdHJ1Y3QgaWVlZTgwMjExX3ZpZiAqdmlmLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTgwMy17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jOjgwNDpcXHRzdHJ1Y3Qgd2NuMzZ4eCAqd2NuID0gaHctXFx1MDAzZXByaXY7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTgwNS1cXHRzdHJ1Y3Qgc2tfYnVmZiAqc2tiID0gTlVMTDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmMtODA2LVxcdHUxNiB0aW1fb2ZmLCB0aW1fbGVuO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYzo4MDc6XFx0ZW51bSB3Y24zNnh4X2hhbF9saW5rX3N0YXRlIGxpbmtfc3RhdGU7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jOjgwODpcXHRzdHJ1Y3Qgd2NuMzZ4eF92aWYgKnZpZl9wcml2ID0gd2NuMzZ4eF92aWZfdG9fcHJpdih2aWYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYy04MDktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jOjgxMDpcXHR3Y24zNnh4X2RiZyhXQ04zNlhYX0RCR19NQUMsIFxcXCJtYWMgYnNzIGluZm8gY2hhbmdlZCB2aWYgJXAgY2hhbmdlZCAweCVsbHhcXFxcblxcXCIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTgxMS1cXHRcXHQgICAgdmlmLCBjaGFuZ2VkKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYy04MTUtXFx0aWYgKGNoYW5nZWQgXFx1MDAyNiBCU1NfQ0hBTkdFRF9CRUFDT05fSU5GTykge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYzo4MTY6XFx0XFx0d2NuMzZ4eF9kYmcoV0NOMzZYWF9EQkdfTUFDLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYy04MTctXFx0XFx0XFx0ICAgIFxcXCJtYWMgYnNzIGNoYW5nZWQgZHRpbSBwZXJpb2QgJWRcXFxcblxcXCIsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmMtODIzLVxcdGlmIChjaGFuZ2VkIFxcdTAwMjYgQlNTX0NIQU5HRURfQlNTSUQpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmM6ODI0OlxcdFxcdHdjbjM2eHhfZGJnKFdDTjM2WFhfREJHX01BQywgXFxcIm1hYyBic3MgY2hhbmdlZF9ic3NpZCAlcE1cXFxcblxcXCIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTgyNS1cXHRcXHRcXHQgICAgYnNzX2NvbmYtXFx1MDAzZWJzc2lkKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYy04MjktXFx0XFx0XFx0dmlmX3ByaXYtXFx1MDAzZWJzc19pbmRleCA9IFdDTjM2WFhfSEFMX0JTU19JTlZBTElEX0lEWDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmM6ODMwOlxcdFxcdFxcdHdjbjM2eHhfc21kX3NldF9saW5rX3N0KHdjbiwgYnNzX2NvbmYtXFx1MDAzZWJzc2lkLCB2aWYtXFx1MDAzZWFkZHIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTgzMS1cXHRcXHRcXHRcXHRcXHRcXHRXQ04zNlhYX0hBTF9MSU5LX1BSRUFTU09DX1NUQVRFKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmM6ODMyOlxcdFxcdFxcdHdjbjM2eHhfc21kX2pvaW4od2NuLCBic3NfY29uZi1cXHUwMDNlYnNzaWQsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTgzMy1cXHRcXHRcXHRcXHRcXHQgdmlmLVxcdTAwM2VhZGRyLCBXQ04zNlhYX0hXX0NIQU5ORUwod2NuKSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jOjgzNDpcXHRcXHRcXHR3Y24zNnh4X3NtZF9jb25maWdfYnNzKHdjbiwgdmlmLCBOVUxMLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYy04MzUtXFx0XFx0XFx0XFx0XFx0ICAgICAgIGJzc19jb25mLVxcdTAwM2Vic3NpZCwgZmFsc2UpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTgzNy1cXHRcXHRcXHR2aWZfcHJpdi1cXHUwMDNlaXNfam9pbmluZyA9IGZhbHNlO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYzo4Mzg6XFx0XFx0XFx0d2NuMzZ4eF9zbWRfZGVsZXRlX2Jzcyh3Y24sIHZpZik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jOjgzOTpcXHRcXHRcXHR3Y24zNnh4X3NtZF9zZXRfbGlua19zdCh3Y24sIGJzc19jb25mLVxcdTAwM2Vic3NpZCwgdmlmLVxcdTAwM2VhZGRyLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYy04NDAtXFx0XFx0XFx0XFx0XFx0XFx0V0NOMzZYWF9IQUxfTElOS19JRExFX1NUQVRFKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYy04NDUtXFx0aWYgKGNoYW5nZWQgXFx1MDAyNiBCU1NfQ0hBTkdFRF9TU0lEKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jOjg0NjpcXHRcXHR3Y24zNnh4X2RiZyhXQ04zNlhYX0RCR19NQUMsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTg0Ny1cXHRcXHRcXHQgICAgXFxcIm1hYyBic3MgY2hhbmdlZCBzc2lkXFxcXG5cXFwiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmM6ODQ4OlxcdFxcdHdjbjM2eHhfZGJnX2R1bXAoV0NOMzZYWF9EQkdfTUFDLCBcXFwic3NpZCBcXFwiLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYy04NDktXFx0XFx0XFx0XFx0IHZpZi1cXHUwMDNlY2ZnLnNzaWQsIHZpZi1cXHUwMDNlY2ZnLnNzaWRfbGVuKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYy04NjAtXFx0XFx0XFx0c3RydWN0IGllZWU4MDIxMV9zdGEgKnN0YTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmM6ODYxOlxcdFxcdFxcdHN0cnVjdCB3Y24zNnh4X3N0YSAqc3RhX3ByaXY7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTg2Mi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmM6ODYzOlxcdFxcdFxcdHdjbjM2eHhfZGJnKFdDTjM2WFhfREJHX01BQyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmMtODY0LVxcdFxcdFxcdFxcdCAgICBcXFwibWFjIGFzc29jIGJzcyAlcE0gdmlmICVwTSBBSUQ9JWRcXFxcblxcXCIsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmMtODcyLVxcdFxcdFxcdCAqIEhvbGRpbmcgY29uZl9tdXRleCBlbnN1cmVzIG11dGFsIGV4Y2x1c2lvbiB3aXRoXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jOjg3MzpcXHRcXHRcXHQgKiB3Y24zNnh4X3N0YV9yZW1vdmUoKSBhbmQgYXMgc3VjaCBlbnN1cmVzIHRoYXQgc3RhXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTg3NC1cXHRcXHRcXHQgKiB3b24ndCBiZSBmcmVlZCB3aGlsZSB3ZSdyZSBvcGVyYXRpbmcgb24gaXQuIEFzIHN1Y2hcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYy04NzgtXFx0XFx0XFx0aWYgKCFzdGEpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmM6ODc5OlxcdFxcdFxcdFxcdHdjbjM2eHhfZXJyKFxcXCJzdGEgJXBNIGlzIG5vdCBmb3VuZFxcXFxuXFxcIixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmMtODgwLVxcdFxcdFxcdFxcdFxcdCAgICAgIGJzc19jb25mLVxcdTAwM2Vic3NpZCk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmMtODgyLVxcdFxcdFxcdH1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmM6ODgzOlxcdFxcdFxcdHN0YV9wcml2ID0gd2NuMzZ4eF9zdGFfdG9fcHJpdihzdGEpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYy04ODQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jOjg4NTpcXHRcXHRcXHR3Y24zNnh4X3VwZGF0ZV9hbGxvd2VkX3JhdGVzKHN0YSwgV0NOMzZYWF9CQU5EKHdjbikpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYy04ODYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jOjg4NzpcXHRcXHRcXHR3Y24zNnh4X3NtZF9zZXRfbGlua19zdCh3Y24sIGJzc19jb25mLVxcdTAwM2Vic3NpZCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmMtODg4LVxcdFxcdFxcdFxcdHZpZi1cXHUwMDNlYWRkcixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmMtODg5LVxcdFxcdFxcdFxcdFdDTjM2WFhfSEFMX0xJTktfUE9TVEFTU09DX1NUQVRFKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmM6ODkwOlxcdFxcdFxcdHdjbjM2eHhfc21kX2NvbmZpZ19ic3Mod2NuLCB2aWYsIHN0YSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmMtODkxLVxcdFxcdFxcdFxcdFxcdCAgICAgICBic3NfY29uZi1cXHUwMDNlYnNzaWQsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmMtODk3LVxcdFxcdFxcdCAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYzo4OTg6XFx0XFx0XFx0d2NuMzZ4eF9zbWRfY29uZmlnX3N0YSh3Y24sIHZpZiwgc3RhKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmMtODk5LVxcdFxcdFxcdGlmICh2aWYtXFx1MDAzZXR5cGUgPT0gTkw4MDIxMV9JRlRZUEVfU1RBVElPTilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmM6OTAwOlxcdFxcdFxcdFxcdHdjbjM2eHhfc21kX2FkZF9iZWFjb25fZmlsdGVyKHdjbiwgdmlmKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmM6OTAxOlxcdFxcdFxcdHdjbjM2eHhfZW5hYmxlX2tlZXBfYWxpdmVfbnVsbF9wYWNrZXQod2NuLCB2aWYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYy05MDItXFx0XFx0fSBlbHNlIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmM6OTAzOlxcdFxcdFxcdHdjbjM2eHhfZGJnKFdDTjM2WFhfREJHX01BQyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmMtOTA0LVxcdFxcdFxcdFxcdCAgICBcXFwiZGlzYXNzb2NpYXRlZCBic3MgJXBNIHZpZiAlcE0gQUlEPSVkXFxcXG5cXFwiLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTkwOC1cXHRcXHRcXHR2aWZfcHJpdi1cXHUwMDNlc3RhX2Fzc29jID0gZmFsc2U7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jOjkwOTpcXHRcXHRcXHR3Y24zNnh4X3NtZF9zZXRfbGlua19zdCh3Y24sXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTkxMC1cXHRcXHRcXHRcXHRcXHRcXHRic3NfY29uZi1cXHUwMDNlYnNzaWQsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmMtOTE2LVxcdGlmIChjaGFuZ2VkIFxcdTAwMjYgQlNTX0NIQU5HRURfQVBfUFJPQkVfUkVTUCkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYzo5MTc6XFx0XFx0d2NuMzZ4eF9kYmcoV0NOMzZYWF9EQkdfTUFDLCBcXFwibWFjIGJzcyBjaGFuZ2VkIGFwIHByb2JlIHJlc3BcXFxcblxcXCIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYy05MTgtXFx0XFx0c2tiID0gaWVlZTgwMjExX3Byb2JlcmVzcF9nZXQoaHcsIHZpZik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTkxOS1cXHRcXHRpZiAoIXNrYikge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYzo5MjA6XFx0XFx0XFx0d2NuMzZ4eF9lcnIoXFxcImZhaWxlZCB0byBhbGxvYyBwcm9iZXJlcSBza2JcXFxcblxcXCIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYy05MjEtXFx0XFx0XFx0Z290byBvdXQ7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmMtOTIzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYzo5MjQ6XFx0XFx0d2NuMzZ4eF9zbWRfdXBkYXRlX3Byb2JlcmVzcF90bXBsKHdjbiwgdmlmLCBza2IpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYy05MjUtXFx0XFx0ZGV2X2tmcmVlX3NrYihza2IpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTkyOS1cXHQgICAgY2hhbmdlZCBcXHUwMDI2IEJTU19DSEFOR0VEX0JFQUNPTikge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYzo5MzA6XFx0XFx0d2NuMzZ4eF9kYmcoV0NOMzZYWF9EQkdfTUFDLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYy05MzEtXFx0XFx0XFx0ICAgIFxcXCJtYWMgYnNzIGNoYW5nZWQgYmVhY29uIGVuYWJsZWQgJWRcXFxcblxcXCIsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmMtOTM2LVxcdFxcdFxcdHZpZl9wcml2LVxcdTAwM2Vic3NfaW5kZXggPSBXQ04zNlhYX0hBTF9CU1NfSU5WQUxJRF9JRFg7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jOjkzNzpcXHRcXHRcXHR3Y24zNnh4X3NtZF9jb25maWdfYnNzKHdjbiwgdmlmLCBOVUxMLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYy05MzgtXFx0XFx0XFx0XFx0XFx0ICAgICAgIHZpZi1cXHUwMDNlYWRkciwgZmFsc2UpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTk0MS1cXHRcXHRcXHRpZiAoIXNrYikge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYzo5NDI6XFx0XFx0XFx0XFx0d2NuMzZ4eF9lcnIoXFxcImZhaWxlZCB0byBhbGxvYyBiZWFjb24gc2tiXFxcXG5cXFwiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmMtOTQzLVxcdFxcdFxcdFxcdGdvdG8gb3V0O1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYy05NDQtXFx0XFx0XFx0fVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYzo5NDU6XFx0XFx0XFx0d2NuMzZ4eF9zbWRfc2VuZF9iZWFjb24od2NuLCB2aWYsIHNrYiwgdGltX29mZiwgMCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTk0Ni1cXHRcXHRcXHRkZXZfa2ZyZWVfc2tiKHNrYik7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmMtOTUzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYzo5NTQ6XFx0XFx0XFx0d2NuMzZ4eF9zbWRfc2V0X2xpbmtfc3Qod2NuLCB2aWYtXFx1MDAzZWFkZHIsIHZpZi1cXHUwMDNlYWRkcixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmMtOTU1LVxcdFxcdFxcdFxcdFxcdFxcdGxpbmtfc3RhdGUpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYy05NTYtXFx0XFx0fSBlbHNlIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmM6OTU3OlxcdFxcdFxcdHdjbjM2eHhfc21kX2RlbGV0ZV9ic3Mod2NuLCB2aWYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYzo5NTg6XFx0XFx0XFx0d2NuMzZ4eF9zbWRfc2V0X2xpbmtfc3Qod2NuLCB2aWYtXFx1MDAzZWFkZHIsIHZpZi1cXHUwMDNlYWRkcixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmMtOTU5LVxcdFxcdFxcdFxcdFxcdFxcdFdDTjM2WFhfSEFMX0xJTktfSURMRV9TVEFURSk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmMtOTY3LS8qIHRoaXMgaXMgcmVxdWlyZWQgd2hlbiB1c2luZyBJRUVFODAyMTFfSFdfSEFTX1JBVEVfQ09OVFJPTCAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYzo5Njg6c3RhdGljIGludCB3Y24zNnh4X3NldF9ydHNfdGhyZXNob2xkKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LCBpbnQgcmFkaW9faWR4LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYy05NjktXFx0XFx0XFx0XFx0ICAgICB1MzIgdmFsdWUpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTk3MC17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jOjk3MTpcXHRzdHJ1Y3Qgd2NuMzZ4eCAqd2NuID0gaHctXFx1MDAzZXByaXY7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jOjk3MjpcXHR3Y24zNnh4X2RiZyhXQ04zNlhYX0RCR19NQUMsIFxcXCJtYWMgc2V0IFJUUyB0aHJlc2hvbGQgJWRcXFxcblxcXCIsIHZhbHVlKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmMtOTczLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYy05NzQtXFx0bXV0ZXhfbG9jayhcXHUwMDI2d2NuLVxcdTAwM2Vjb25mX211dGV4KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmM6OTc1OlxcdHdjbjM2eHhfc21kX3VwZGF0ZV9jZmcod2NuLCBXQ04zNlhYX0hBTF9DRkdfUlRTX1RIUkVTSE9MRCwgdmFsdWUpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYy05NzYtXFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZ3Y24tXFx1MDAzZWNvbmZfbXV0ZXgpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTk4MC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmM6OTgxOnN0YXRpYyB2b2lkIHdjbjM2eHhfcmVtb3ZlX2ludGVyZmFjZShzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmMtOTgyLVxcdFxcdFxcdFxcdCAgICAgc3RydWN0IGllZWU4MDIxMV92aWYgKnZpZilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmMtOTgzLXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmM6OTg0OlxcdHN0cnVjdCB3Y24zNnh4ICp3Y24gPSBody1cXHUwMDNlcHJpdjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmM6OTg1OlxcdHN0cnVjdCB3Y24zNnh4X3ZpZiAqdmlmX3ByaXYgPSB3Y24zNnh4X3ZpZl90b19wcml2KHZpZik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jOjk4NjpcXHR3Y24zNnh4X2RiZyhXQ04zNlhYX0RCR19NQUMsIFxcXCJtYWMgcmVtb3ZlIGludGVyZmFjZSB2aWYgJXBcXFxcblxcXCIsIHZpZik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTk4Ny1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYy05OTAtXFx0bGlzdF9kZWwoXFx1MDAyNnZpZl9wcml2LVxcdTAwM2VsaXN0KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmM6OTkxOlxcdHdjbjM2eHhfc21kX2RlbGV0ZV9zdGFfc2VsZih3Y24sIHZpZi1cXHUwMDNlYWRkcik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTk5Mi1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYy05OTUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jOjk5NjpzdGF0aWMgaW50IHdjbjM2eHhfYWRkX2ludGVyZmFjZShzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmMtOTk3LVxcdFxcdFxcdFxcdCBzdHJ1Y3QgaWVlZTgwMjExX3ZpZiAqdmlmKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYy05OTgte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYzo5OTk6XFx0c3RydWN0IHdjbjM2eHggKndjbiA9IGh3LVxcdTAwM2Vwcml2O1xcblxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQxODo1NTo0Mi44NjY1ODMyOTdaIiwiU2VxIjoyOCwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTE5MzQwNjI1MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFN5emJvdCBGaW5kaW5ncyoqXG5cbk9rYXksIHNvIGB3Y24zNnh4X3NtZF9yc3BfcHJvY2Vzc2AgaXMgZGVmaW5pdGVseSBjYWxsZWQgd2hlbiBhIG1lc3NhZ2UgYXJyaXZlcyBvbiB0aGUgU01EIGNoYW5uZWwg4oCTIHRoYXQncyBjbGVhciBmcm9tIHRoZSBjb2RlLiBBbmQgdGhlIFNNRCBjaGFubmVsIGl0c2VsZiBpcyBvcGVuZWQgd2l0aGluIGB3Y24zNnh4X3Byb2JlYCB1c2luZyBgcWNvbV93Y25zc19vcGVuX2NoYW5uZWxgLiBTbywgaWYgc3l6Ym90IGlzIGhpdHRpbmcgdGhpcyBjb2RlLCBpdCBtZWFucyBpdCdzIG1hbmFnaW5nIHRvIHRyaWdnZXIgYHdjbjM2eHhfcHJvYmVgIHNvbWVob3cgYW5kIHRoZW4gaW5qZWN0IG1lc3NhZ2VzICppbnRvKiB0aGF0IFNNRCBjaGFubmVsLiBUaGF0J3MgYSBjcnVjaWFsIHBvaW50LlxuXG5Ob3csIG15IGluaXRpYWwgdGhvdWdodCBpczogZG9lcyBzeXprYWxsZXIgaGF2ZSBkaXJlY3Qgc3VwcG9ydCBmb3IgYHFjb21fd2Nuc3Nfb3Blbl9jaGFubmVsYD8gSSBkb3VidCBpdCwgYnV0IGl0J3Mgd29ydGggY2hlY2tpbmcuIFdhaXQgYSBtaW51dGUuLi4gc3l6a2FsbGVyIG1pZ2h0IGJlIGJ5cGFzc2luZyB0aGUgYHdjbjM2eHhgIGRyaXZlciBlbnRpcmVseSBhbmQgZnV6emluZyB0aGUgcnBtc2cgYnVzIGRpcmVjdGx5LiBUaGF0J3MgYSBkaXN0aW5jdCBwb3NzaWJpbGl0eS4gSWYgdGhlIFFFTVUgZW52aXJvbm1lbnQgaW5jbHVkZXMgdmlydGlvLXJwbXNnLCBzeXprYWxsZXIgY291bGQgYmUgZHluYW1pY2FsbHkgY3JlYXRpbmcgcnBtc2cgZGV2aWNlcyBhbmQgc2VuZGluZyBtZXNzYWdlcyB0byB0aGVtLiBUaGlzIGV4cGxhaW5zIHRoZSBwb3RlbnRpYWwgYnlwYXNzLlxuXG5Ib3dldmVyLCBgd2NuMzZ4eGAgaXMgYSBwbGF0Zm9ybSBkZXZpY2UsIHJpZ2h0PyBUaGF0IHN1Z2dlc3RzIGl0J3MgKm5vdCogYSBzdGFuZGFyZCB2aXJ0aW8gZGV2aWNlIGRpcmVjdGx5IGV4cG9zZWQgdmlhIHRoZSBycG1zZyBidXMuIEhtbSwgSSBuZWVkIHRvIHZlcmlmeSBpZiBzeXprYWxsZXIgaGFzIGEgcHNldWRvLXN5c2NhbGwgZGVmaW5lZCBmb3IgYHdjbjM2eHhgIGl0c2VsZi4gVGhpcyBpcyB0aGUgcGllY2Ugb2YgdGhlIHB1enpsZSB0byBjb25uZWN0IGhlcmUuIFRoYXQgd2lsbCBzaG93IGlmIHRoZXJlIGlzIGRpcmVjdCBzeXprYWxsZXIgaW50ZWdyYXRpb24gb3IgaWYgaXQncyBmdXp6aW5nIHZpYSB0aGUgcnBtc2cgYnVzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNzk2NiwiT3V0cHV0VG9rZW5zIjozNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE4NiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQxODo1NTo0OC4wNTk5OTI3OFoiLCJTZXEiOjI5LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDIyNTgwOTE4LCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJzeXpfXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjZUMTg6NTU6NDguNDgyNTg1ODA4WiIsIlNlcSI6MzAsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjc2ODExMTQ0NzksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBXb3J0aEZ1enppbmcgQ3JpdGVyaWEgZm9yIGEgYHdjbjM2eHhgIFBhdGNoKipcblxuT2theSwgc28gdGhlIGluaXRpYWwgdGhvdWdodCBpcywgdGhlcmUgYXJlIG5vIFwicHNldWRvLXN5c2NhbGxzXCIgaW52b2x2ZWQgaGVyZS4gQnV0IHdhaXQsIEkgcmVjYWxsIHNlZWluZyBgc3l6X2Rldl9wbGF0Zm9ybV9hZGRgIG9yIHNvbWV0aGluZyBzaW1pbGFyIGJlaW5nIHVzZWQgYnkgc3l6Ym90PyBObywgYWN0dWFsbHkgc3l6Ym90IGl0c2VsZiBkb2Vzbid0IGhhdmUgc3VjaCBhIHNwZWNpZmljIHN5c2NhbGwuIEl0IHV0aWxpemVzIGBzeXpfdXNiX2Nvbm5lY3RgLCBgc3l6XzgwMjExX2luamVjdF9mcmFtZWAsIGV0Yy4gdG8gaW50ZXJhY3Qgd2l0aCB0aGUgdGFyZ2V0LiBIb3cgY291bGQgc3l6Ym90IHJlYWNoIHRoaXMgcGFydGljdWxhciBkcml2ZXIsIHRoZW4/XG5cblBlcmhhcHMgYHdjbjM2eHhgIGlzIGNvbXBpbGVkIGRpcmVjdGx5IGludG8gdGhlIGtlcm5lbCBhbmQgYXV0b21hdGljYWxseSBwcm9iZWQgaWYgdGhlIGRldmljZSB0cmVlIGluY2x1ZGVzIGl0PyBPciwgbWF5YmUgc3l6Ym90IHVzZXMgYSBjdXN0b20gZGV2aWNlIHRyZWUsIG9yIG1heWJlIGl0J3MgYSBwbGF0Zm9ybSBkZXZpY2UgdGhhdCBjYW4gYmUgaW5zdGFudGlhdGVkIHRocm91Z2ggc3lzZnM/IEFoLCByaWdodCwgYHdjbjM2eHhgIGlzIGEgcGxhdGZvcm0gZHJpdmVyLiBQbGF0Zm9ybSBkZXZpY2VzIGNhbiBiZSBjcmVhdGVkIHRocm91Z2ggdGhlIGRldmljZSB0cmVlICpvciogb3RoZXIgZHJpdmVycy5cblxuT2theSwgbGV0J3MgcmVtZW1iZXIgc3l6Ym90IHRlc3RzIG9uIEdDRSB3aXRoIGEgc3BlY2lmaWMga2VybmVsIGNvbmZpZy4gSWYgc3l6Ym90IGhhcyBmb3VuZCBpdCwgdGhlbiBpdCAqaXMqIHJlYWNoYWJsZS4gVGhlIHByb21wdCBzYXlzIHRvIHJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIGludm9sdmVzIGNvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuIElzIGB3Y24zNnh4YCBhIFBDSWUgZHJpdmVyPyBObywgaXQncyBhIHBsYXRmb3JtIGRyaXZlciBmb3IgUXVhbGNvbW0gQXRoZXJvcyBXQ04zNjYwLzM2ODAuIFNvIHRoZSBuZXh0IGtleSBxdWVzdGlvbjogSXMgaXQgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVT9cblxuV2FpdCwgaWYgc3l6Ym90IGhhcyBmb3VuZCBpdCwgdGhlbiBpdCBtZWFucyBpdCAqaXMqIHJlYWNoYWJsZSBpbiBzeXpib3QncyBlbnZpcm9ubWVudCwgd2hpY2ggaXMgUUVNVSEgU28gdGhlIGFuc3dlciBpcyB5ZXMuIEJ1dCwgZG9lcyBzeXpib3QgaGF2ZSBhIGBxY29tYCB0YXJnZXQgb3IgdGVzdHMgQVJNNjQ/IFllcywgc3l6Ym90IGRvZXMgdGVzdCBBUk02NCBhbmQgQVJNLiBJZiBzeXpib3QgZm91bmQgaXQsIGl0J3MgZGVmaW5pdGVseSByZWFjaGFibGUuXG5cblRoZSBwYXRjaCBpdHNlbGYgYWRkcyBhIGxlbmd0aCBjaGVjayB0byBgd2NuMzZ4eF9zbWRfcnNwX3Byb2Nlc3NgLiBUaGUgbmV4dCBzdGVwIGlzIGNsZWFyOiBJIG5lZWQgdG8gZGlnIGludG8gdGhlIGB3Y24zNnh4X3NtZF9yc3BfcHJvY2Vzc2AgZnVuY3Rpb24gdG8gdW5kZXJzdGFuZCB0aGUgc3Vycm91bmRpbmcgY29kZSBhbmQgZGV0ZXJtaW5lIHRoZSBzY29wZSBvZiB0aGlzIGNoYW5nZSwgYW5kIHNlZSB3aGF0IGZ1bmN0aW9ucyB0aGUgY3VycmVudCBjb2RlIGNhbGxzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyODUzNywiT3V0cHV0VG9rZW5zIjo0NywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQ2OCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQxODo1NTo1Ni4xNjM3MDM4NDdaIiwiU2VxIjozMSwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjE0NjIwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L3NtZC5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDMyNDgsXG4gIFwiTGluZUNvdW50XCI6IDUwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIjMyNDg6XFx0aW50IHdjbjM2eHhfc21kX3JzcF9wcm9jZXNzKHN0cnVjdCBycG1zZ19kZXZpY2UgKnJwZGV2LFxcbjMyNDk6XFx0XFx0XFx0XFx0ICAgIHZvaWQgKmJ1ZiwgaW50IGxlbiwgdm9pZCAqcHJpdiwgdTMyIGFkZHIpXFxuMzI1MDpcXHR7XFxuMzI1MTpcXHRcXHRjb25zdCBzdHJ1Y3Qgd2NuMzZ4eF9oYWxfbXNnX2hlYWRlciAqbXNnX2hlYWRlciA9IGJ1ZjtcXG4zMjUyOlxcdFxcdHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3ID0gcHJpdjtcXG4zMjUzOlxcdFxcdHN0cnVjdCB3Y24zNnh4ICp3Y24gPSBody1cXHUwMDNlcHJpdjtcXG4zMjU0OlxcdFxcdHN0cnVjdCB3Y24zNnh4X2hhbF9pbmRfbXNnICptc2dfaW5kO1xcbjMyNTU6XFx0XFx0d2NuMzZ4eF9kYmdfZHVtcChXQ04zNlhYX0RCR19TTURfRFVNUCwgXFxcIlNNRCBcXHUwMDNjXFx1MDAzY1xcdTAwM2MgXFxcIiwgYnVmLCBsZW4pO1xcbjMyNTY6XFx0XFxuMzI1NzpcXHRcXHRpZiAobGVuIFxcdTAwM2Mgc2l6ZW9mKCptc2dfaGVhZGVyKSkge1xcbjMyNTg6XFx0XFx0XFx0d2NuMzZ4eF93YXJuKFxcXCJDb3JydXB0ZWQgSEFMIG1lc3NhZ2U6IGxlbmd0aCAlZFxcXFxuXFxcIiwgbGVuKTtcXG4zMjU5OlxcdFxcdFxcdHJldHVybiAwO1xcbjMyNjA6XFx0XFx0fVxcbjMyNjE6XFx0XFxuMzI2MjpcXHRcXHRzd2l0Y2ggKG1zZ19oZWFkZXItXFx1MDAzZW1zZ190eXBlKSB7XFxuMzI2MzpcXHRcXHRjYXNlIFdDTjM2WFhfSEFMX1NUQVJUX1JTUDpcXG4zMjY0OlxcdFxcdGNhc2UgV0NOMzZYWF9IQUxfQ09ORklHX1NUQV9SU1A6XFxuMzI2NTpcXHRcXHRjYXNlIFdDTjM2WFhfSEFMX0NPTkZJR19CU1NfUlNQOlxcbjMyNjY6XFx0XFx0Y2FzZSBXQ04zNlhYX0hBTF9BRERfU1RBX1NFTEZfUlNQOlxcbjMyNjc6XFx0XFx0Y2FzZSBXQ04zNlhYX0hBTF9TVE9QX1JTUDpcXG4zMjY4OlxcdFxcdGNhc2UgV0NOMzZYWF9IQUxfREVMX1NUQV9TRUxGX1JTUDpcXG4zMjY5OlxcdFxcdGNhc2UgV0NOMzZYWF9IQUxfREVMRVRFX1NUQV9SU1A6XFxuMzI3MDpcXHRcXHRjYXNlIFdDTjM2WFhfSEFMX0lOSVRfU0NBTl9SU1A6XFxuMzI3MTpcXHRcXHRjYXNlIFdDTjM2WFhfSEFMX1NUQVJUX1NDQU5fUlNQOlxcbjMyNzI6XFx0XFx0Y2FzZSBXQ04zNlhYX0hBTF9FTkRfU0NBTl9SU1A6XFxuMzI3MzpcXHRcXHRjYXNlIFdDTjM2WFhfSEFMX0ZJTklTSF9TQ0FOX1JTUDpcXG4zMjc0OlxcdFxcdGNhc2UgV0NOMzZYWF9IQUxfRE9XTkxPQURfTlZfUlNQOlxcbjMyNzU6XFx0XFx0Y2FzZSBXQ04zNlhYX0hBTF9ERUxFVEVfQlNTX1JTUDpcXG4zMjc2OlxcdFxcdGNhc2UgV0NOMzZYWF9IQUxfU0VORF9CRUFDT05fUlNQOlxcbjMyNzc6XFx0XFx0Y2FzZSBXQ04zNlhYX0hBTF9TRVRfTElOS19TVF9SU1A6XFxuMzI3ODpcXHRcXHRjYXNlIFdDTjM2WFhfSEFMX1VQREFURV9QUk9CRV9SU1BfVEVNUExBVEVfUlNQOlxcbjMyNzk6XFx0XFx0Y2FzZSBXQ04zNlhYX0hBTF9TRVRfQlNTS0VZX1JTUDpcXG4zMjgwOlxcdFxcdGNhc2UgV0NOMzZYWF9IQUxfU0VUX1NUQUtFWV9SU1A6XFxuMzI4MTpcXHRcXHRjYXNlIFdDTjM2WFhfSEFMX1JNVl9TVEFLRVlfUlNQOlxcbjMyODI6XFx0XFx0Y2FzZSBXQ04zNlhYX0hBTF9STVZfQlNTS0VZX1JTUDpcXG4zMjgzOlxcdFxcdGNhc2UgV0NOMzZYWF9IQUxfRU5URVJfQk1QU19SU1A6XFxuMzI4NDpcXHRcXHRjYXNlIFdDTjM2WFhfSEFMX1NFVF9QT1dFUl9QQVJBTVNfUlNQOlxcbjMyODU6XFx0XFx0Y2FzZSBXQ04zNlhYX0hBTF9FWElUX0JNUFNfUlNQOlxcbjMyODY6XFx0XFx0Y2FzZSBXQ04zNlhYX0hBTF9LRUVQX0FMSVZFX1JTUDpcXG4zMjg3OlxcdFxcdGNhc2UgV0NOMzZYWF9IQUxfRFVNUF9DT01NQU5EX1JTUDpcXG4zMjg4OlxcdFxcdGNhc2UgV0NOMzZYWF9IQUxfQUREX0JBX1NFU1NJT05fUlNQOlxcbjMyODk6XFx0XFx0Y2FzZSBXQ04zNlhYX0hBTF9BRERfQkFfUlNQOlxcbjMyOTA6XFx0XFx0Y2FzZSBXQ04zNlhYX0hBTF9ERUxfQkFfUlNQOlxcbjMyOTE6XFx0XFx0Y2FzZSBXQ04zNlhYX0hBTF9HRVRfU1RBVFNfUlNQOlxcbjMyOTI6XFx0XFx0Y2FzZSBXQ04zNlhYX0hBTF9UUklHR0VSX0JBX1JTUDpcXG4zMjkzOlxcdFxcdGNhc2UgV0NOMzZYWF9IQUxfVVBEQVRFX0NGR19SU1A6XFxuMzI5NDpcXHRcXHRjYXNlIFdDTjM2WFhfSEFMX0pPSU5fUlNQOlxcbjMyOTU6XFx0XFx0Y2FzZSBXQ04zNlhYX0hBTF9VUERBVEVfU0NBTl9QQVJBTV9SU1A6XFxuMzI5NjpcXHRcXHRjYXNlIFdDTjM2WFhfSEFMX0NIX1NXSVRDSF9SU1A6XFxuMzI5NzpcXHRcXHRjYXNlIFdDTjM2WFhfSEFMX1BST0NFU1NfUFRUX1JTUDpcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjZUMTg6NTU6NTYuMTYzOTE5OTA3WiIsIlNlcSI6MzIsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMyODk1MTA4NjgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0J3MgaW5uZXIgbW9ub2xvZ3VlOlxuXG4qKkZvY3VzaW5nIG9uIHRoZSBSZXNwb25zZSBQcm9jZXNzaW5nKipcblxuUmlnaHQsIHRoZSBgd2NuMzZ4eF9zbWRfcnNwX3Byb2Nlc3NgIGZ1bmN0aW9uLiBUaGF0J3MgdGhlIGxpa2VseSBrZXkgdG8gdW5kZXJzdGFuZGluZyBob3cgdGhlIGRyaXZlciBoYW5kbGVzIHJlc3BvbnNlcy4gTXkgaW5pdGlhbCBpbnN0aW5jdCBpcyB0byBob25lIGluIG9uIHRoaXMgb25lLiBCdXQsIGJlZm9yZSBJIGdldCB0b28gZGVlcCwgbGV0J3MgdGFrZSBhIHF1aWNrIGxvb2sgYXJvdW5kIHRoZSBjb2RlYmFzZS4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBJJ20gbm90IG1pc3NpbmcgYW55IG90aGVyIHJlbGF0ZWQgZnVuY3Rpb25zLiBUaGVyZSBjb3VsZCBiZSBvdGhlcnMgdGhhdCBpbnRlcmFjdCB3aXRoIGl0LCBvciBtYXliZSBldmVuIHByZS1wcm9jZXNzIHRoZSBkYXRhIGJlZm9yZSBpdCdzIHNlbnQgdG8gdGhpcyBmdW5jdGlvbi4gQSBxdWljayBzY2FuIHdpbGwgY29uZmlybSBteSBpbml0aWFsIGh5cG90aGVzaXMgYW5kIHByZXZlbnQgd2FzdGVkIHRpbWUuIEkgd2lsbCBjaGVjayBmb3IgcmVsYXRlZCBmdW5jdGlvbnMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMwNjkyLCJPdXRwdXRUb2tlbnMiOjQ3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzUsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQxODo1NTo1OS40NTM0MzM3NTVaIiwiU2VxIjozMywiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzMzODkwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L3NtZC5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDMyOTgsXG4gIFwiTGluZUNvdW50XCI6IDUwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIjMyOTg6XFx0XFx0Y2FzZSBXQ04zNlhYX0hBTF9GRUFUVVJFX0NBUFNfRVhDSEFOR0VfUlNQOlxcbjMyOTk6XFx0XFx0Y2FzZSBXQ04zNlhYX0hBTF84MDIzX01VTFRJQ0FTVF9MSVNUX1JTUDpcXG4zMzAwOlxcdFxcdGNhc2UgV0NOMzZYWF9IQUxfU1RBUlRfU0NBTl9PRkZMT0FEX1JTUDpcXG4zMzAxOlxcdFxcdGNhc2UgV0NOMzZYWF9IQUxfU1RPUF9TQ0FOX09GRkxPQURfUlNQOlxcbjMzMDI6XFx0XFx0Y2FzZSBXQ04zNlhYX0hBTF9IT1NUX09GRkxPQURfUlNQOlxcbjMzMDM6XFx0XFx0Y2FzZSBXQ04zNlhYX0hBTF9HVEtfT0ZGTE9BRF9SU1A6XFxuMzMwNDpcXHRcXHRjYXNlIFdDTjM2WFhfSEFMX0dUS19PRkZMT0FEX0dFVElORk9fUlNQOlxcbjMzMDU6XFx0XFx0Y2FzZSBXQ04zNlhYX0hBTF9IT1NUX1JFU1VNRV9SU1A6XFxuMzMwNjpcXHRcXHRjYXNlIFdDTjM2WFhfSEFMX0VOVEVSX0lNUFNfUlNQOlxcbjMzMDc6XFx0XFx0Y2FzZSBXQ04zNlhYX0hBTF9FWElUX0lNUFNfUlNQOlxcbjMzMDg6XFx0XFx0Y2FzZSBXQ04zNlhYX0hBTF9VUERBVEVfQ0hBTk5FTF9MSVNUX1JTUDpcXG4zMzA5OlxcdFxcdGNhc2UgV0NOMzZYWF9IQUxfQUREX0JDTl9GSUxURVJfUlNQOlxcbjMzMTA6XFx0XFx0XFx0aWYgKGxlbiBcXHUwMDNlIFdDTjM2WFhfSEFMX0JVRl9TSVpFKSB7XFxuMzMxMTpcXHRcXHRcXHRcXHR3Y24zNnh4X3dhcm4oXFxcIkhBTCByZXNwb25zZSB0b28gbGFyZ2U6ICVkXFxcXG5cXFwiLCBsZW4pO1xcbjMzMTI6XFx0XFx0XFx0XFx0YnJlYWs7XFxuMzMxMzpcXHRcXHRcXHR9XFxuMzMxNDpcXHRcXHRcXHRtZW1jcHkod2NuLVxcdTAwM2VoYWxfYnVmLCBidWYsIGxlbik7XFxuMzMxNTpcXHRcXHRcXHR3Y24tXFx1MDAzZWhhbF9yc3BfbGVuID0gbGVuO1xcbjMzMTY6XFx0XFx0XFx0Y29tcGxldGUoXFx1MDAyNndjbi1cXHUwMDNlaGFsX3JzcF9jb21wbCk7XFxuMzMxNzpcXHRcXHRcXHRicmVhaztcXG4zMzE4OlxcdFxcbjMzMTk6XFx0XFx0Y2FzZSBXQ04zNlhYX0hBTF9DT0VYX0lORDpcXG4zMzIwOlxcdFxcdGNhc2UgV0NOMzZYWF9IQUxfQVZPSURfRlJFUV9SQU5HRV9JTkQ6XFxuMzMyMTpcXHRcXHRjYXNlIFdDTjM2WFhfSEFMX0RFTF9CQV9JTkQ6XFxuMzMyMjpcXHRcXHRjYXNlIFdDTjM2WFhfSEFMX09UQV9UWF9DT01QTF9JTkQ6XFxuMzMyMzpcXHRcXHRjYXNlIFdDTjM2WFhfSEFMX01JU1NFRF9CRUFDT05fSU5EOlxcbjMzMjQ6XFx0XFx0Y2FzZSBXQ04zNlhYX0hBTF9ERUxFVEVfU1RBX0NPTlRFWFRfSU5EOlxcbjMzMjU6XFx0XFx0Y2FzZSBXQ04zNlhYX0hBTF9QUklOVF9SRUdfSU5GT19JTkQ6XFxuMzMyNjpcXHRcXHRjYXNlIFdDTjM2WFhfSEFMX1NDQU5fT0ZGTE9BRF9JTkQ6XFxuMzMyNzpcXHRcXHRcXHRtc2dfaW5kID0ga21hbGxvY19mbGV4KCptc2dfaW5kLCBtc2csIGxlbiwgR0ZQX0FUT01JQyk7XFxuMzMyODpcXHRcXHRcXHRpZiAoIW1zZ19pbmQpIHtcXG4zMzI5OlxcdFxcdFxcdFxcdHdjbjM2eHhfZXJyKFxcXCJSdW4gb3V0IG9mIG1lbW9yeSB3aGlsZSBoYW5kbGluZyBTTURfRVZFTlQgKCVkKVxcXFxuXFxcIixcXG4zMzMwOlxcdFxcdFxcdFxcdFxcdCAgICBtc2dfaGVhZGVyLVxcdTAwM2Vtc2dfdHlwZSk7XFxuMzMzMTpcXHRcXHRcXHRcXHRyZXR1cm4gLUVOT01FTTtcXG4zMzMyOlxcdFxcdFxcdH1cXG4zMzMzOlxcdFxcbjMzMzQ6XFx0XFx0XFx0bXNnX2luZC1cXHUwMDNlbXNnX2xlbiA9IGxlbjtcXG4zMzM1OlxcdFxcdFxcdG1lbWNweShtc2dfaW5kLVxcdTAwM2Vtc2csIGJ1ZiwgbGVuKTtcXG4zMzM2OlxcdFxcbjMzMzc6XFx0XFx0XFx0c3Bpbl9sb2NrKFxcdTAwMjZ3Y24tXFx1MDAzZWhhbF9pbmRfbG9jayk7XFxuMzMzODpcXHRcXHRcXHRsaXN0X2FkZF90YWlsKFxcdTAwMjZtc2dfaW5kLVxcdTAwM2VsaXN0LCBcXHUwMDI2d2NuLVxcdTAwM2VoYWxfaW5kX3F1ZXVlKTtcXG4zMzM5OlxcdFxcdFxcdHF1ZXVlX3dvcmsod2NuLVxcdTAwM2VoYWxfaW5kX3dxLCBcXHUwMDI2d2NuLVxcdTAwM2VoYWxfaW5kX3dvcmspO1xcbjMzNDA6XFx0XFx0XFx0c3Bpbl91bmxvY2soXFx1MDAyNndjbi1cXHUwMDNlaGFsX2luZF9sb2NrKTtcXG4zMzQxOlxcdFxcdFxcdHdjbjM2eHhfZGJnKFdDTjM2WFhfREJHX0hBTCwgXFxcImluZGljYXRpb24gYXJyaXZlZFxcXFxuXFxcIik7XFxuMzM0MjpcXHRcXHRcXHRicmVhaztcXG4zMzQzOlxcdFxcdGRlZmF1bHQ6XFxuMzM0NDpcXHRcXHRcXHR3Y24zNnh4X2VycihcXFwiU01EX0VWRU5UICglZCkgbm90IHN1cHBvcnRlZFxcXFxuXFxcIixcXG4zMzQ1OlxcdFxcdFxcdFxcdCAgICAgIG1zZ19oZWFkZXItXFx1MDAzZW1zZ190eXBlKTtcXG4zMzQ2OlxcdFxcdH1cXG4zMzQ3OlxcdFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQxODo1NTo1OS40NTM3NjkzNzVaIiwiU2VxIjozNCwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzgyMzU0OTcxOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFNNRCBSZXNwb25zZSBQcm9jZXNzaW5nIEZ1bmN0aW9uKipcblxuT2theSwgc28gdGhlIGlzc3VlIEknbSBsb29raW5nIGF0IHJldm9sdmVzIGFyb3VuZCBhIGZ1bmN0aW9uIGNhbGxlZCBgd2NuMzZ4eF9zbWRfcnNwX3Byb2Nlc3NgLiBJJ20gcHJldHR5IHN1cmUgdGhhdCdzIHdoZXJlIHRoZSBpbmNvbWluZyBtZXNzYWdlcyBmcm9tIHRoZSBTTUQgY2hhbm5lbCBhcmUgaGFuZGxlZC4gSSd2ZSBjb25maXJtZWQgdGhhdCBpdCdzIGFjdHVhbGx5IHJlYWNoYWJsZSBhbmQgdGhhdCBpdCdzIHdvcmtpbmcgYXMgZXhwZWN0ZWQuIExldCdzIG1hcmsgaXQgYXMgYSB0YXJnZXQgZm9yIGZ1enppbmcg4oCTIEknbGwgc2V0IGBXb3J0aEZ1enppbmc9dHJ1ZWAuXG5cbkZvciB0aGUgZm9jdXMgc3ltYm9scywgSSdsbCBkZWZpbml0ZWx5IHNwZWNpZnkgYHdjbjM2eHhfc21kX3JzcF9wcm9jZXNzYC4gV2UgbmVlZCB0byBkZWZpbmUgc29tZSBzcGVjaWZpYyBjb25maWd1cmF0aW9ucyBmb3IgZnV6emluZyBzbyBsZXQncyB1c2UgYFdDTjM2WFhgLCBgUUNPTV9XQ05TU19DVFJMYCwgYW5kIGBSUE1TR2AuXG5cbkJlZm9yZSBJIGRpZyBpbiB0b28gZGVlcCBJIHNob3VsZCBwcm9iYWJseSBkb3VibGUgY2hlY2sgdGhlIEtjb25maWcgZm9yIGBXQ04zNlhYYCBhbmQgbWFrZSBzdXJlIGl0J3Mgc2V0IHVwIGNvcnJlY3RseS5cblxuXG4iLCJJbnB1dFRva2VucyI6MzE5NDQsIk91dHB1dFRva2VucyI6NDIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMDgsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQxODo1NjowMy4yNzczMjQyNTRaIiwiU2VxIjozNSwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTA4MjgwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogMjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAgMTpcXHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBJU0NcXG4gICAyOlxcdGNvbmZpZyBXQ04zNlhYXFxuICAgMzpcXHRcXHR0cmlzdGF0ZSBcXFwiUXVhbGNvbW0gQXRoZXJvcyBXQ04zNjYwLzM2ODAgc3VwcG9ydFxcXCJcXG4gICA0OlxcdFxcdGRlcGVuZHMgb24gTUFDODAyMTEgXFx1MDAyNlxcdTAwMjYgSEFTX0RNQVxcbiAgIDU6XFx0XFx0ZGVwZW5kcyBvbiBRQ09NX1dDTlNTX0NUUkwgfHwgUUNPTV9XQ05TU19DVFJMPW5cXG4gICA2OlxcdFxcdGRlcGVuZHMgb24gUlBNU0cgfHwgUlBNU0c9blxcbiAgIDc6XFx0XFx0aGVscFxcbiAgIDg6XFx0XFx0ICBUaGlzIG1vZHVsZSBhZGRzIHN1cHBvcnQgZm9yIHdpcmVsZXNzIGFkYXB0ZXJzIGJhc2VkIG9uXFxuICAgOTpcXHRcXHQgIFF1YWxjb21tIEF0aGVyb3MgV0NOMzY2MCBhbmQgV0NOMzY4MCBtb2JpbGUgY2hpcHNldHMuXFxuICAxMDpcXHRcXG4gIDExOlxcdFxcdCAgSWYgeW91IGNob29zZSB0byBidWlsZCBhIG1vZHVsZSwgaXQnbGwgYmUgY2FsbGVkIHdjbjM2eHguXFxuICAxMjpcXHRcXG4gIDEzOlxcdGNvbmZpZyBXQ04zNlhYX0RFQlVHRlNcXG4gIDE0OlxcdFxcdGJvb2wgXFxcIldDTjM2WFggZGVidWdmcyBzdXBwb3J0XFxcIlxcbiAgMTU6XFx0XFx0ZGVwZW5kcyBvbiBXQ04zNlhYXFxuICAxNjpcXHRcXHRoZWxwXFxuICAxNzpcXHRcXHQgIEVuYWJsZWQgZGVidWdmcyBzdXBwb3J0XFxuICAxODpcXHRcXG4gIDE5OlxcdFxcdCAgSWYgdW5zdXJlLCBzYXkgWSB0byBtYWtlIGl0IGVhc2llciB0byBkZWJ1ZyBwcm9ibGVtcy5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjZUMTg6NTY6MDMuMjc3NDM0MjM0WiIsIlNlcSI6MzYsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM0NTM3NzE0NjEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBXaS1GaSBEcml2ZXIgRGVwZW5kZW5jeSoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgZHJpdmVyIGFuZCBpbW1lZGlhdGVseSwgdGhlIGRlcGVuZGVuY2llcyBhcmUganVtcGluZyBvdXQuIEl0IGhpbmdlcyBvbiBgTUFDODAyMTFgIGFuZCBgSEFTX0RNQWAsIHdoaWNoIG1ha2VzIHNlbnNlIGZvciBhbnkgbW9kZXJuIFdpLUZpIGltcGxlbWVudGF0aW9uOyBETUEgaXMgY3JpdGljYWwgZm9yIGVmZmljaWVudCBkYXRhIHRyYW5zZmVyLiBCdXQgdGhlbiBpdCBhZGRzIGBRQ09NX1dDTlNTX0NUUkwgfHwgUUNPTV9XQ05TU19DVFJMPW5gLiBUaGF0IHNlY29uZCBwYXJ0IGlzIHdoYXQgY2F0Y2hlcyBteSBleWUuIElmIGBRQ09NX1dDTlNTX0NUUkxgIGlzICpzZXQgdG8gZmFsc2UqLCBob3cgdGhlIGhlbGwgZG9lcyB0aGlzIHRoaW5nIGV2ZW4gZnVuY3Rpb24/IEl0IHNlZW1zIGNvdW50ZXItaW50dWl0aXZlIHRvIGhhdmUgYSBkZXBlbmRlbmN5IHRoYXQgZGlzYWJsZXMgdGhlIGNvcmUgZnVuY3Rpb25hbGl0eS4gSSBuZWVkIHRvIGdldCB0byB0aGUgYm90dG9tIG9mIHRoaXMuIFJpZ2h0LCBsZXQncyBkaXZlIGludG8gdGhlIEtjb25maWcgZm9yIGBkcml2ZXJzL3NvYy9xY29tL3djbnNzX2N0cmwuY2AgYW5kIGZpZ3VyZSBvdXQgd2hhdCdzIHJlYWxseSBnb2luZyBvbiB0aGVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MzI1ODQsIk91dHB1dFRva2VucyI6MjMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo4MywiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDE4OjU2OjA2LjczMTIwODYyNFoiLCJTZXEiOjM3LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjMzMDQ3MjE4MSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgUUNPTV9XQ05TU19DVFJMXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvc29jL3Fjb20vS2NvbmZpZz0yMzk9Y29uZmlnIFFDT01fU1RBVFNcXG4tLVxcbmRyaXZlcnMvc29jL3Fjb20vS2NvbmZpZy0yNDktXFxuZHJpdmVycy9zb2MvcWNvbS9LY29uZmlnOjI1MDpjb25maWcgUUNPTV9XQ05TU19DVFJMXFxuZHJpdmVycy9zb2MvcWNvbS9LY29uZmlnLTI1MS1cXHR0cmlzdGF0ZSBcXFwiUXVhbGNvbW0gV0NOU1MgY29udHJvbCBkcml2ZXJcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDE4OjU2OjA5LjA2MTY5MzQ5NVoiLCJTZXEiOjM4LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0ODI0NTI2MDYyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgYSBzdW1tYXJ5IG9mIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaWYgSSB3ZXJlIHRoZSBvbmUgdGhpbmtpbmcgaXQ6XG5cbioqRGl2aW5nIGludG8gdGhlIFFDT00gU29DIERyaXZlciBDb25maWd1cmF0aW9uKipcblxuT2theSwgdGltZSB0byBnZXQgbXkgaGFuZHMgZGlydHkuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIHRoZSBRdWFsY29tbSBTeXN0ZW0tb24tQ2hpcCAoU29DKSBkcml2ZXJzLiBNeSBmb2N1cyBpcyBnb2luZyB0byBiZSBvbiB0aGUgYGRyaXZlcnMvc29jL3Fjb20vS2NvbmZpZ2AgZmlsZS4gVGhpcyBpcyB3aGVyZSBJIGV4cGVjdCB0byBmaW5kIHRoZSBtZWF0IG9mIHRoZSBkcml2ZXIgc2VsZWN0aW9uIGFuZCBmZWF0dXJlIGVuYWJsZW1lbnQgZm9yIHRoZXNlIFFDT00gZGV2aWNlcy4gVGhpcyBLY29uZmlnIGZpbGUgd2lsbCBkZWZpbmUgdGhlIGRlcGVuZGVuY2llcywgc3ltYm9scywgYW5kIGhlbHAgdGV4dCB0aGF0IHVzZXJzIHdpbGwgc2VlIHdoZW4gdGhleSBjb25maWd1cmUgdGhlaXIga2VybmVsIGZvciBhIFF1YWxjb21tLWJhc2VkIHN5c3RlbS4gSSBhbnRpY2lwYXRlIHNlZWluZyB0aGluZ3MgbGlrZTpcblxuKiAgICoqQ2hpcHNldC1zcGVjaWZpYyBvcHRpb25zOioqIEkgZXhwZWN0IGRpZmZlcmVudCBgY29uZmlnYCBvcHRpb25zIGZvciBkaWZmZXJlbnQgU25hcGRyYWdvbiB2YXJpYW50cyAoZS5nLiwgOCBHZW4gMSwgODg4LCBldGMuKSwgd2hpY2ggd2lsbCBlbmFibGUgdGhlIGFwcHJvcHJpYXRlIGRyaXZlcnMgZm9yIHNwZWNpZmljIGhhcmR3YXJlIGZlYXR1cmVzIHdpdGhpbiB0aG9zZSBTb0NzLlxuKiAgICoqUGVyaXBoZXJhbCBlbmFibGVtZW50czoqKiBJJ2xsIGJlIGxvb2tpbmcgZm9yIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyByZWxhdGVkIHRvIGluZGl2aWR1YWwgcGVyaXBoZXJhbHMsIGxpa2UgdGhlIGNhbWVyYSBpbnRlcmZhY2UsIGRpc3BsYXkgY29udHJvbGxlcnMsIGF1ZGlvIGNvZGVjcywgVVNCIGNvbnRyb2xsZXJzLCBhbmQgbWVtb3J5IGNvbnRyb2xsZXJzLiBUaGVzZSB3aWxsIGxpa2VseSBoYXZlIGFzc29jaWF0ZWQgZGVwZW5kZW5jaWVzIG9uIG90aGVyIEtjb25maWcgc3ltYm9scyBhbmQgYm9hcmQgY29uZmlndXJhdGlvbnMuXG4qICAgKipQb3dlciBtYW5hZ2VtZW50IGNvbnNpZGVyYXRpb25zOioqIEdpdmVuIHRoZSBpbXBvcnRhbmNlIG9mIHBvd2VyIGVmZmljaWVuY3kgaW4gbW9iaWxlIGRldmljZXMsIEkgZnVsbHkgZXhwZWN0IHRvIGZpbmQgYSBzZWN0aW9uIHJlbGF0ZWQgdG8gcG93ZXIgbWFuYWdlbWVudCBmZWF0dXJlcywgaW5jbHVkaW5nIGNsb2Nrcywgdm9sdGFnZSByZWd1bGF0b3JzLCBhbmQgdGhlcm1hbCBtYW5hZ2VtZW50LiBUaGUgS2NvbmZpZyBmaWxlIHdpbGwgZ3VpZGUgd2hpY2ggZmVhdHVyZXMgSSBjYW4gdG9nZ2xlLlxuKiAgICoqRG9jdW1lbnRhdGlvbiBhbmQgSGVscCBUZXh0OioqIEkgbmVlZCB0byBwYXkgY2xvc2UgYXR0ZW50aW9uIHRvIHRoZSBoZWxwIHRleHQgYXNzb2NpYXRlZCB3aXRoIGVhY2ggY29uZmlndXJhdGlvbiBvcHRpb24uIFRoaXMgaXMgY3JpdGljYWwgZm9yIHVuZGVyc3RhbmRpbmcgdGhlIHB1cnBvc2Ugb2YgZWFjaCBzZXR0aW5nIGFuZCB0aGUgcG90ZW50aWFsIGltcGxpY2F0aW9ucyBvZiBlbmFibGluZyBvciBkaXNhYmxpbmcgYSBzcGVjaWZpYyBmZWF0dXJlLiBUaGlzIHdpbGwgYWlkIHdoZW4gSSBhbSBkZXNpZ25pbmcgdGhlIGtlcm5lbCB0byBtZWV0IHJlcXVpcmVtZW50cy5cbiogICAqKkRlcGVuZGVuY2llcyBhbmQgRGVmYXVsdHM6KiogSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZSBLY29uZmlnIGZpbGUgaW50ZXJhY3RzIHdpdGggb3RoZXIgY29uZmlndXJhdGlvbiBmaWxlcywgc3VjaCBhcyB0aG9zZSByZWxhdGVkIHRvIHRoZSBib2FyZCBzdXBwb3J0IHBhY2thZ2UgKEJTUCkuIEFsc28sIHRoZSBkZXBlbmRlbmNpZXMgdGhhdCBnb3Zlcm4gdGhlIGF2YWlsYWJpbGl0eSBvZiBkaWZmZXJlbnQgb3B0aW9ucyBhcmUgY3J1Y2lhbCwgYXMgd2VsbCBhcyB0aGUgZGVmYXVsdCB2YWx1ZXMuXG4qICAgKipBcmNoaXRlY3R1cmFsIE51YW5jZXM6KiogSSBrbm93IFF1YWxjb21tIGhhcyBpdHMgb3duIGFyY2hpdGVjdHVyYWwgcXVpcmtzLCBzbyBJJ2xsIGJlIGxvb2tpbmcgZm9yIGNvbmZpZ3VyYXRpb24gZWxlbWVudHMgdGhhdCBzcGVjaWZpY2FsbHkgYWRkcmVzcyB0aGVzZSBhc3BlY3RzIOKAkyBwZXJoYXBzIHJlbGF0ZWQgdG8gdGhlaXIgaW50ZXJjb25uZWN0IGZhYnJpYyBvciB0aGVpciBzZWN1cml0eSBmZWF0dXJlcy5cblxuSSdtIHJlYWR5IHRvIGRpZyBpbiBhbmQgZGVjb25zdHJ1Y3QgdGhpcyBLY29uZmlnIGZpbGUsIHVuZGVyc3RhbmRpbmcgaG93IGl0IHN0ZWVycyB0aGUgc2VsZWN0aW9uIGFuZCBjb25maWd1cmF0aW9uIG9mIFFDT00gU29DIGRyaXZlcnMgd2l0aGluIHRoZSBrZXJuZWwuIEl04oCZcyB0aW1lIHRvIGZpbmQgb3V0IHdoYXQgc2VjcmV0cyB0aGlzIGZpbGUgaG9sZHMhXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMyOTgwLCJPdXRwdXRUb2tlbnMiOjM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjZUMTg6NTY6MTMuODg2MjIzNjA3WiIsIlNlcSI6MzksIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjk0NzgwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvc29jL3Fjb20vS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAyNTAsXG4gIFwiTGluZUNvdW50XCI6IDEwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAyNTA6XFx0Y29uZmlnIFFDT01fV0NOU1NfQ1RSTFxcbiAyNTE6XFx0XFx0dHJpc3RhdGUgXFxcIlF1YWxjb21tIFdDTlNTIGNvbnRyb2wgZHJpdmVyXFxcIlxcbiAyNTI6XFx0XFx0ZGVwZW5kcyBvbiBBUkNIX1FDT00gfHwgQ09NUElMRV9URVNUXFxuIDI1MzpcXHRcXHRkZXBlbmRzIG9uIFJQTVNHXFxuIDI1NDpcXHRcXHRoZWxwXFxuIDI1NTpcXHRcXHQgIENsaWVudCBkcml2ZXIgZm9yIHRoZSBXQ05TU19DVFJMIFNNRCBjaGFubmVsLCB1c2VkIHRvIGRvd25sb2FkIG52XFxuIDI1NjpcXHRcXHQgIGZpcm13YXJlIHRvIGEgbmV3bHkgYm9vdGVkIFdDTlNTIGNoaXAuXFxuIDI1NzpcXHRcXG4gMjU4OlxcdGNvbmZpZyBRQ09NX0FQUlxcbiAyNTk6XFx0XFx0dHJpc3RhdGUgXFxcIlF1YWxjb21tIEFQUi9HUFIgQnVzIChBc3luY2hyb25vdXMvR2VuZXJpYyBQYWNrZXQgUm91dGVyKVxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjZUMTg6NTY6MTMuODg2MzE5ODY3WiIsIlNlcSI6NDAsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ2MTE0NDMxNzAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBRQ09NX1dDTlNTX0NUUkwgRGVwZW5kZW5jeSoqXG5cbk9rYXksIHNvIGl0IGxvb2tzIGxpa2UgYFFDT01fV0NOU1NfQ1RSTGAgaGFzIGEgaGFyZCBkZXBlbmRlbmN5IG9uIGBSUE1TR2AuIFRoYXQncyB0aGUgYmFzZWxpbmUuIE5vdywgaWYgSSBlbmFibGUgYFFDT01fV0NOU1NfQ1RSTGAsIHRoYXQgaW1wbGllcyB0aGF0IHRoZSBgd2NuMzZ4eGAgZHJpdmVyICpjYW4qIHV0aWxpemUgaXQsIHByZXN1bWFibHkgZm9yIHNvbWUga2luZCBvZiBjb250cm9sIG9yIGNvbW11bmljYXRpb24uIE1ha2VzIHNlbnNlLlxuXG5CdXQgd2hhdCBpZiBJIGRpc2FibGUgYFFDT01fV0NOU1NfQ1RSTGA/IFRoZSBpbXBsaWNhdGlvbnMgYXJlIGltcG9ydGFudC4gVGhlIHRleHQgc3VnZ2VzdHMgdGhhdCBgd2NuMzZ4eGAgY2FuIHN0aWxsIGJlIGNvbXBpbGVkLCBidXQgZnVuY3Rpb25hbGl0eSB3aWxsIGxpa2VseSBiZSBjcmlwcGxlZC4gVGhlIGtleSBoZXJlIHNlZW1zIHRvIGJlIGBxY29tX3djbnNzX29wZW5fY2hhbm5lbGAuIElmIGBRQ09NX1dDTlNTX0NUUkxgIGlzIGRpc2FibGVkLCB0aGlzIGZ1bmN0aW9uIHByb2JhYmx5IGdldHMgc3R1YmJlZCBvdXQuIEl04oCZcyBlc3NlbnRpYWxseSByZW5kZXJlZCB1c2VsZXNzLlxuXG5JIHRoaW5rIGl04oCZcyB0aW1lIHRvIGRvdWJsZSBjaGVjayB0aGUgaGVhZGVyIGZpbGUuIEkgbmVlZCB0byBkaXZlIGludG8gYGluY2x1ZGUvbGludXgvc29jL3Fjb20vd2Nuc3NfY3RybC5oYCB0byBzZWUgZXhhY3RseSB3aGF04oCZcyBnb2luZyBvbiBhdCB0aGF0IGxldmVsIGFuZCBob3cgdGhhdCBmdW5jdGlvbiBpcyBiZWluZyBoYW5kbGVkIGluIGRpZmZlcmVudCBjb25maWd1cmF0aW9ucy5cblxuXG4iLCJJbnB1dFRva2VucyI6MzM3MTQsIk91dHB1dFRva2VucyI6NDIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMTcsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQxODo1NjoxOC40OTc3Njc4NjdaIiwiU2VxIjo0MSwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTE0ODgwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImluY2x1ZGUvbGludXgvc29jL3Fjb20vd2Nuc3NfY3RybC5oXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEsXG4gIFwiTGluZUNvdW50XCI6IDIwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgIDE6XFx0LyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAgKi9cXG4gICAyOlxcdCNpZm5kZWYgX19XQ05TU19DVFJMX0hfX1xcbiAgIDM6XFx0I2RlZmluZSBfX1dDTlNTX0NUUkxfSF9fXFxuICAgNDpcXHRcXG4gICA1OlxcdCNpbmNsdWRlIFxcdTAwM2NsaW51eC9ycG1zZy5oXFx1MDAzZVxcbiAgIDY6XFx0XFxuICAgNzpcXHQjaWYgSVNfRU5BQkxFRChDT05GSUdfUUNPTV9XQ05TU19DVFJMKVxcbiAgIDg6XFx0XFxuICAgOTpcXHRzdHJ1Y3QgcnBtc2dfZW5kcG9pbnQgKnFjb21fd2Nuc3Nfb3Blbl9jaGFubmVsKHZvaWQgKndjbnNzLCBjb25zdCBjaGFyICpuYW1lLFxcbiAgMTA6XFx0XFx0XFx0XFx0XFx0XFx0ICAgICAgIHJwbXNnX3J4X2NiX3QgY2IsIHZvaWQgKnByaXYpO1xcbiAgMTE6XFx0XFxuICAxMjpcXHQjZWxzZVxcbiAgMTM6XFx0XFxuICAxNDpcXHRzdGF0aWMgc3RydWN0IHJwbXNnX2VuZHBvaW50ICpxY29tX3djbnNzX29wZW5fY2hhbm5lbCh2b2lkICp3Y25zcyxcXG4gIDE1OlxcdFxcdFxcdFxcdFxcdFxcdFxcdCAgICAgIGNvbnN0IGNoYXIgKm5hbWUsXFxuICAxNjpcXHRcXHRcXHRcXHRcXHRcXHRcXHQgICAgICBycG1zZ19yeF9jYl90IGNiLFxcbiAgMTc6XFx0XFx0XFx0XFx0XFx0XFx0XFx0ICAgICAgdm9pZCAqcHJpdilcXG4gIDE4OlxcdHtcXG4gIDE5OlxcdFxcdFdBUk5fT04oMSk7XFxuICAyMDpcXHRcXHRyZXR1cm4gRVJSX1BUUigtRU5YSU8pO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQxODo1NjoxOC40OTc4ODQ4NTdaIiwiU2VxIjo0MiwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDUyNzQ3MjEzMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBDb25maWd1cmF0aW9uIE11c2luZ3MqKlxuXG5SaWdodCwgc28gSSdtIGRpZ2dpbmcgaW50byB0aGlzIGNvZGUgYW5kIGl0J3MgcHJldHR5IGNsZWFyOiBpZiBgQ09ORklHX1FDT01fV0NOU1NfQ1RSTGAgaXNuJ3QgZW5hYmxlZCwgd2UncmUgZ29pbmcgdG8gZ2V0IGEgYC1FTlhJT2AgZXJyb3IgZnJvbSBgcWNvbV93Y25zc19vcGVuX2NoYW5uZWxgIGFuZCBhIHJhdGhlciBhbm5veWluZyBgV0FSTl9PTigxKWAuIFRoYXQncyBhIG5vLWdvLiBUaGVyZWZvcmUsIHdlICphYnNvbHV0ZWx5KiBuZWVkIGBRQ09NX1dDTlNTX0NUUkxgIGVuYWJsZWQuIFxuXG5Ob3csIEkgcmVtZW1iZXIgZnJvbSB0aGUgYnVpbGQgY29uZmlnIHRoYXQgYFFDT01fV0NOU1NfQ1RSTGAgZGVwZW5kcyBvbiBgUlBNU0dgLiBGaW5lLCBubyBwcm9ibGVtLCBhZGQgdGhhdCB0byB0aGUgbGlzdC4gVGhhdCBtZWFucyBpbiBteSBgRW5hYmxlQ29uZmlnc2AgSSdtIGRlZmluaXRlbHkgZ29pbmcgdG8gbmVlZCBgV0NOMzZYWGAsIGBRQ09NX1dDTlNTX0NUUkxgLCBhbmQgYFJQTVNHYC5cblxuSGFuZyBvbiBhIHNlY29uZC4gYFdDTjM2WFhgIGhhcyBkZXBlbmRlbmNpZXMgdG9vISBTcGVjaWZpY2FsbHksIGl0IHJlcXVpcmVzIGJvdGggYE1BQzgwMjExYCBhbmQgYEhBU19ETUFgLiBTbywgSSBuZWVkIHRvIGJlIHN1cmUgdG8gaW5jbHVkZSBgTUFDODAyMTFgIGluIHRoZSBjb25maWd1cmF0aW9uIGFzIHdlbGwuIFxuXG5Pa2F5LCBsZXQncyBqdXN0IG1ha2Ugc3VyZSB0aGVyZSBhcmVuJ3QgYW55IHNuZWFreSBkZXBlbmRlbmNpZXMgdGllZCB0byBgUlBNU0dgIG5vdyB0aGF0IEknbSBoZXJlLiBDYW4ndCBiZSB0b28gY2FyZWZ1bCwgcmlnaHQ/XG5cblxuIiwiSW5wdXRUb2tlbnMiOjM0NDA4LCJPdXRwdXRUb2tlbnMiOjE3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTY3LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjZUMTg6NTY6MjMuMDI1MzYwMTM3WiIsIlNlcSI6NDMsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozMjc3ODQwMTA1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBSUE1TR1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93d2FuL0tjb25maWc9NjU9Y29uZmlnIFFDT01fQkFNX0RNVVhcXG4tLVxcbmRyaXZlcnMvbmV0L3d3YW4vS2NvbmZpZy03Ny1cXG5kcml2ZXJzL25ldC93d2FuL0tjb25maWc6Nzg6Y29uZmlnIFJQTVNHX1dXQU5fQ1RSTFxcbmRyaXZlcnMvbmV0L3d3YW4vS2NvbmZpZy03OS1cXHR0cmlzdGF0ZSBcXFwiUlBNU0cgV1dBTiBjb250cm9sIGRyaXZlclxcXCJcXG4tLVxcbmRyaXZlcnMvcnBtc2cvS2NvbmZpZz0zPW1lbnUgXFxcIlJwbXNnIGRyaXZlcnNcXFwiXFxuLS1cXG5kcml2ZXJzL3JwbXNnL0tjb25maWctNS0jIFJQTVNHIGFsd2F5cyBnZXRzIHNlbGVjdGVkIGJ5IHdob2V2ZXIgd2FudHMgaXRcXG5kcml2ZXJzL3JwbXNnL0tjb25maWc6Njpjb25maWcgUlBNU0dcXG5kcml2ZXJzL3JwbXNnL0tjb25maWctNy1cXHR0cmlzdGF0ZVxcbmRyaXZlcnMvcnBtc2cvS2NvbmZpZy04LVxcbmRyaXZlcnMvcnBtc2cvS2NvbmZpZzo5OmNvbmZpZyBSUE1TR19DSEFSXFxuZHJpdmVycy9ycG1zZy9LY29uZmlnLTEwLVxcdHRyaXN0YXRlIFxcXCJSUE1TRyBkZXZpY2UgaW50ZXJmYWNlXFxcIlxcbi0tXFxuZHJpdmVycy9ycG1zZy9LY29uZmlnLTE3LVxcbmRyaXZlcnMvcnBtc2cvS2NvbmZpZzoxODpjb25maWcgUlBNU0dfQ1RSTFxcbmRyaXZlcnMvcnBtc2cvS2NvbmZpZy0xOS1cXHR0cmlzdGF0ZSBcXFwiUlBNU0cgY29udHJvbCBpbnRlcmZhY2VcXFwiXFxuLS1cXG5kcml2ZXJzL3JwbXNnL0tjb25maWctMjUtXFxuZHJpdmVycy9ycG1zZy9LY29uZmlnOjI2OmNvbmZpZyBSUE1TR19OU1xcbmRyaXZlcnMvcnBtc2cvS2NvbmZpZy0yNy1cXHR0cmlzdGF0ZSBcXFwiUlBNU0cgbmFtZSBzZXJ2aWNlIGFubm91bmNlbWVudFxcXCJcXG4tLVxcbmRyaXZlcnMvcnBtc2cvS2NvbmZpZy0zMy1cXG5kcml2ZXJzL3JwbXNnL0tjb25maWc6MzQ6Y29uZmlnIFJQTVNHX01US19TQ1BcXG5kcml2ZXJzL3JwbXNnL0tjb25maWctMzUtXFx0dHJpc3RhdGUgXFxcIk1lZGlhVGVrIFNDUFxcXCJcXG4tLVxcbmRyaXZlcnMvcnBtc2cvS2NvbmZpZy00Mi1cXG5kcml2ZXJzL3JwbXNnL0tjb25maWc6NDM6Y29uZmlnIFJQTVNHX1FDT01fR0xJTktcXG5kcml2ZXJzL3JwbXNnL0tjb25maWctNDQtXFx0dHJpc3RhdGVcXG4tLVxcbmRyaXZlcnMvcnBtc2cvS2NvbmZpZy00Ni1cXG5kcml2ZXJzL3JwbXNnL0tjb25maWc6NDc6Y29uZmlnIFJQTVNHX1FDT01fR0xJTktfUlBNXFxuZHJpdmVycy9ycG1zZy9LY29uZmlnLTQ4LVxcdHRyaXN0YXRlIFxcXCJRdWFsY29tbSBSUE0gR2xpbmsgZHJpdmVyXFxcIlxcbi0tXFxuZHJpdmVycy9ycG1zZy9LY29uZmlnLTU2LVxcbmRyaXZlcnMvcnBtc2cvS2NvbmZpZzo1Nzpjb25maWcgUlBNU0dfUUNPTV9HTElOS19TTUVNXFxuZHJpdmVycy9ycG1zZy9LY29uZmlnLTU4LVxcdHRyaXN0YXRlIFxcXCJRdWFsY29tbSBTTUVNIEdsaW5rIGRyaXZlclxcXCJcXG4tLVxcbmRyaXZlcnMvcnBtc2cvS2NvbmZpZy02Ni1cXG5kcml2ZXJzL3JwbXNnL0tjb25maWc6Njc6Y29uZmlnIFJQTVNHX1FDT01fU01EXFxuZHJpdmVycy9ycG1zZy9LY29uZmlnLTY4LVxcdHRyaXN0YXRlIFxcXCJRdWFsY29tbSBTaGFyZWQgTWVtb3J5IERyaXZlciAoU01EKVxcXCJcXG4tLVxcbmRyaXZlcnMvcnBtc2cvS2NvbmZpZy03Ni1cXG5kcml2ZXJzL3JwbXNnL0tjb25maWc6Nzc6Y29uZmlnIFJQTVNHX1ZJUlRJT1xcbmRyaXZlcnMvcnBtc2cvS2NvbmZpZy03OC1cXHR0cmlzdGF0ZSBcXFwiVmlydGlvIFJQTVNHIGJ1cyBkcml2ZXJcXFwiXFxuLS1cXG5kcml2ZXJzL3R0eS9LY29uZmlnPTQwND1zb3VyY2UgXFxcImRyaXZlcnMvdHR5L2h2Yy9LY29uZmlnXFxcIlxcbmRyaXZlcnMvdHR5L0tjb25maWctNDA1LVxcbmRyaXZlcnMvdHR5L0tjb25maWc6NDA2OmNvbmZpZyBSUE1TR19UVFlcXG5kcml2ZXJzL3R0eS9LY29uZmlnLTQwNy1cXHR0cmlzdGF0ZSBcXFwiUlBNU0cgdHR5IGRyaXZlclxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjZUMTg6NTY6MjYuMzAzMjA4NzEyWiIsIlNlcSI6NDQsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMwNTQxMTkyODgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBEZXBlbmRlbmNpZXMqKlxuXG5Pa2F5LCBzbyBgUlBNU0dgIGlzIGEgdHJpY2t5IG9uZSwgc2VlbWluZ2x5IGFsd2F5cyBpbiBkZW1hbmQsIGNvbnN0YW50bHkgYmVpbmcgc2VsZWN0ZWQgYnkgd2hhdGV2ZXIgc3Vic3lzdGVtIG5lZWRzIGl0LiBIbW0sIGJ1dCBub3cgSSdtIHJlbWVtYmVyaW5nIHRoYXQgYFFDT01fV0NOU1NfQ1RSTGAgaGFzIGEgZGVwZW5kZW5jeSBvbiBgUlBNU0dgLiBCZXN0IHRvIGRvdWJsZS1jaGVjayB0aGF0IGBkcml2ZXJzL3NvYy9xY29tL0tjb25maWdgIGZpbGUgYWdhaW4uIEp1c3QgdG8gbWFrZSBzdXJlIG15IHVuZGVyc3RhbmRpbmcgb2YgdGhpcyBpc24ndCBzbGlwcGluZy4gR290dGEgYmUgdGhvcm91Z2ggd2l0aCB0aGVzZSBjb3JlIGRlcGVuZGVuY2llcy5cblxuXG4iLCJJbnB1dFRva2VucyI6MzU2MjQsIk91dHB1dFRva2VucyI6MzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1NSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQxODo1NjoyOS4zNTczMzIxM1oiLCJTZXEiOjQ1LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo5MzY0MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL3NvYy9xY29tL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMjUwLFxuICBcIkxpbmVDb3VudFwiOiAxMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgMjUwOlxcdGNvbmZpZyBRQ09NX1dDTlNTX0NUUkxcXG4gMjUxOlxcdFxcdHRyaXN0YXRlIFxcXCJRdWFsY29tbSBXQ05TUyBjb250cm9sIGRyaXZlclxcXCJcXG4gMjUyOlxcdFxcdGRlcGVuZHMgb24gQVJDSF9RQ09NIHx8IENPTVBJTEVfVEVTVFxcbiAyNTM6XFx0XFx0ZGVwZW5kcyBvbiBSUE1TR1xcbiAyNTQ6XFx0XFx0aGVscFxcbiAyNTU6XFx0XFx0ICBDbGllbnQgZHJpdmVyIGZvciB0aGUgV0NOU1NfQ1RSTCBTTUQgY2hhbm5lbCwgdXNlZCB0byBkb3dubG9hZCBudlxcbiAyNTY6XFx0XFx0ICBmaXJtd2FyZSB0byBhIG5ld2x5IGJvb3RlZCBXQ05TUyBjaGlwLlxcbiAyNTc6XFx0XFxuIDI1ODpcXHRjb25maWcgUUNPTV9BUFJcXG4gMjU5OlxcdFxcdHRyaXN0YXRlIFxcXCJRdWFsY29tbSBBUFIvR1BSIEJ1cyAoQXN5bmNocm9ub3VzL0dlbmVyaWMgUGFja2V0IFJvdXRlcilcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDE4OjU2OjI5LjM1NzQyNzUzWiIsIlNlcSI6NDYsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM5NDkwNTM5NDUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBgUUNPTV9XQ05TU19DVFJMYCBEZXBlbmRlbmN5KipcblxuT2theSwgc28gSSdtIGRpZ2dpbmcgaW50byB0aGlzIGNvbmZpZ3VyYXRpb24gYW5kIGl0J3MgY2xlYXIgdGhhdCBgUUNPTV9XQ05TU19DVFJMYCBoYXMgYSBkZXBlbmRlbmN5IG9uIGBSUE1TR2AuIFJpZ2h0LCBzaW1wbGUgZW5vdWdoLiBJZiBgUlBNU0dgIGlzbid0IGVuYWJsZWQsIHRoZW4gYFFDT01fV0NOU1NfQ1RSTGAgaXMgZXNzZW50aWFsbHkgaGlkZGVuIGZyb20gdmlldywgd2hpY2ggbWFrZXMgc2Vuc2UgZnJvbSBhIG1vZHVsYXJpdHkgcGVyc3BlY3RpdmUuIE5vdyBJJ20gcGF1c2luZyB0aG91Z2gsIGJlY2F1c2UgSSBzZWUgdGhhdCBgUlBNU0dgIGlzIGEgYHRyaXN0YXRlYCB3aXRob3V0IGEgcHJvbXB0LiBUaGF0IGltbWVkaWF0ZWx5IHRyaWdnZXJzIGEgbWVudGFsIGNoZWNrbGlzdDogYSBgdHJpc3RhdGVgIHdpdGhvdXQgYSBwcm9tcHQgdXN1YWxseSBtZWFucyBpdCdzIGV4Y2x1c2l2ZWx5IGNvbnRyb2xsZWQgYnkgb3RoZXIgY29uZmlndXJhdGlvbiBvcHRpb25zLiBJdCdzIG5vdCBzb21ldGhpbmcgYSB1c2VyIHdvdWxkIGRpcmVjdGx5IGVuYWJsZS4gUmlnaHQsIHJpZ2h0Li4uIHNvLCBpZiBJIHdhbnQgdG8gZmlndXJlIG91dCAqd2h5KiBgUlBNU0dgIGlzIGVuYWJsZWQgaW4gdGhpcyBjb250ZXh0LCBJIG5lZWQgdG8gdHJhY2UgYmFjayB3aGljaCBzcGVjaWZpYyBjb25maWd1cmF0aW9ucyBhcmUgKnNlbGVjdGluZyogaXQuIEknbGwgbmVlZCB0byBjaGVjayB3aGV0aGVyIGBSUE1TR19WSVJUSU9gIG9yIGBSUE1TR19RQ09NX1NNRGAgYXJlIHRoZSBzZWxlY3RvcnMgaGVyZS4gVGhhdCdzIHRoZSBrZXkuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM1OTkwLCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTAxLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjZUMTg6NTY6MzMuMzA2NDg1ODg1WiIsIlNlcSI6NDcsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjc5MzYwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvcnBtc2cvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiA3NyxcbiAgXCJMaW5lQ291bnRcIjogMTBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICA3NzpcXHRjb25maWcgUlBNU0dfVklSVElPXFxuICA3ODpcXHRcXHR0cmlzdGF0ZSBcXFwiVmlydGlvIFJQTVNHIGJ1cyBkcml2ZXJcXFwiXFxuICA3OTpcXHRcXHRkZXBlbmRzIG9uIEhBU19ETUFcXG4gIDgwOlxcdFxcdHNlbGVjdCBSUE1TR1xcbiAgODE6XFx0XFx0c2VsZWN0IFJQTVNHX05TXFxuICA4MjpcXHRcXHRzZWxlY3QgVklSVElPXFxuICA4MzpcXHRcXG4gIDg0OlxcdGVuZG1lbnVcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjZUMTg6NTY6MzMuMzA2NTY2NjM1WiIsIlNlcSI6NDgsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ5MTkwMjU2NjcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqS2VybmVsIENvbmZpZ3VyYXRpb24gVHdlYWtzKipcblxuT2theSwgc28gYFJQTVNHX1ZJUlRJT2AgYXV0b21hdGljYWxseSBwdWxscyBpbiBgUlBNU0dgLiBNYWtlcyBzZW5zZSwgc28gd2UgZGVmaW5pdGVseSB3YW50IHRvIGVuYWJsZSBgUlBNU0dfVklSVElPYCBhcyBvdXIgZW50cnkgcG9pbnQuIE5vdywgZGlnZ2luZyBhIGxpdHRsZSBkZWVwZXIsIGBRQ09NX1dDTlNTX0NUUkxgIGhhcyBhIGRlcGVuZGVuY3kgb24gZWl0aGVyIGBBUkNIX1FDT01gIG9yIGBDT01QSUxFX1RFU1RgLiBIbW0sIGBDT01QSUxFX1RFU1RgIGlzIGEgY29tbW9uIGRlZmF1bHQgaW4gc3l6Ym90IGNvbmZpZ3VyYXRpb25zLCBidXQgdG8ga2VlcCB0aGluZ3MgdGlkeSBhbmQgcHJlZGljdGFibGUsIGxldCdzIGV4cGxpY2l0bHkgbGlzdCBgUUNPTV9XQ05TU19DVFJMYCBpbnN0ZWFkIG9mIHJlbHlpbmcgb24gaXQuXG5cblRoZW4gd2UgbG9vayBhdCBgV0NOMzZYWGAsIGl0cyBkZXBlbmRlbmN5IGlzIGBRQ09NX1dDTlNTX0NUUkwgfHwgUUNPTV9XQ05TU19DVFJMPW5gLiBUaGlzIG1lYW5zIHdlIGNhbiBjb25maWd1cmUgdGhlIGBRQ09NX1dDTlNTX0NUUkxgIG1vZHVsZSBhcyBhIG1vZHVsZSBhbmQgYFdDTjM2WFhgIGJlY29tZXMgYSBtb2R1bGUgYXMgd2VsbC4gSG93ZXZlciwgaWYgd2Ugd2FudCB0aGVtIGJ1aWx0LWluIHRvIHRoZSBrZXJuZWwgaW1hZ2UsIHdlIHNob3VsZCBiZSBleHBsaWNpdCBhbmQganVzdCBsaXN0IGBXQ04zNlhYYCwgYFFDT01fV0NOU1NfQ1RSTGAsIGFuZCBgUlBNU0dfVklSVElPYC4gR290dGEgZG91YmxlLWNoZWNrIHRob3NlIGRlcGVuZGVuY2llcywgdGhvdWdoOyBsZXQncyByZXZpc2l0IGBXQ04zNlhYYCdzIHNldHVwIGFnYWluIGp1c3QgdG8gYmUgc3VyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MzY0NTYsIk91dHB1dFRva2VucyI6NDIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMzAsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQxODo1NjozOC4yMjU1OTU1OTJaIiwiU2VxIjo0OSwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODAzNjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAxLFxuICBcIkxpbmVDb3VudFwiOiAxMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgICAxOlxcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IElTQ1xcbiAgIDI6XFx0Y29uZmlnIFdDTjM2WFhcXG4gICAzOlxcdFxcdHRyaXN0YXRlIFxcXCJRdWFsY29tbSBBdGhlcm9zIFdDTjM2NjAvMzY4MCBzdXBwb3J0XFxcIlxcbiAgIDQ6XFx0XFx0ZGVwZW5kcyBvbiBNQUM4MDIxMSBcXHUwMDI2XFx1MDAyNiBIQVNfRE1BXFxuICAgNTpcXHRcXHRkZXBlbmRzIG9uIFFDT01fV0NOU1NfQ1RSTCB8fCBRQ09NX1dDTlNTX0NUUkw9blxcbiAgIDY6XFx0XFx0ZGVwZW5kcyBvbiBSUE1TRyB8fCBSUE1TRz1uXFxuICAgNzpcXHRcXHRoZWxwXFxuICAgODpcXHRcXHQgIFRoaXMgbW9kdWxlIGFkZHMgc3VwcG9ydCBmb3Igd2lyZWxlc3MgYWRhcHRlcnMgYmFzZWQgb25cXG4gICA5OlxcdFxcdCAgUXVhbGNvbW0gQXRoZXJvcyBXQ04zNjYwIGFuZCBXQ04zNjgwIG1vYmlsZSBjaGlwc2V0cy5cXG4gIDEwOlxcdFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQxODo1NjozOC4yMjU2NzcyMjFaIiwiU2VxIjo1MCwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjkwMTU0ODg4NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBbmFseXNpcyBvZiB0aGUgV0NOMzZYWCBWdWxuZXJhYmlsaXR5KipcblxuT2theSwgc28gSSd2ZSBiZWVuIGxvb2tpbmcgYXQgdGhpcyBgV0NOMzZYWGAgZHJpdmVyLCBhbmQgaXQncyBjbGVhciB0aGF0IGl0IGhhcyBhIGRlcGVuZGVuY3kgb24gYE1BQzgwMjExYC4gUmlnaHQgYXdheSwgSSBuZWVkIHRvIG1ha2Ugc3VyZSBgTUFDODAyMTFgIGlzIGVuYWJsZWQsIHNvIEknbGwgYWRkIGl0IHRvIHRoZSBgRW5hYmxlQ29uZmlnc2AgbGlzdC4gQ3VycmVudGx5LCBJIGhhdmU6IGBXQ04zNlhYYCwgYFFDT01fV0NOU1NfQ1RSTGAsIGBSUE1TR19WSVJUSU9gLCBhbmQgbm93LCBgTUFDODAyMTFgLlxuXG5Ob3csIHRoZSB2dWxuZXJhYmlsaXR5IGxpZXMgaW4gYHdjbjM2eHhfc21kX3JzcF9wcm9jZXNzYCwgc28gbGV0J3MgY2hlY2sgaXRzIHJlYWNoYWJpbGl0eS4gQWgsIHllcywgaXQncyB0aGUgY2FsbGJhY2sgZm9yIHRoZSBycG1zZyBlbmRwb2ludCB0aGF0J3MgY3JlYXRlZCBkdXJpbmcgYHdjbjM2eHhfcHJvYmVgLiBUaGF0IG1ha2VzIHNlbnNlLiBXaGVuIGEgbWVzc2FnZSBjb21lcyBpbiBvdmVyIHRoYXQgZW5kcG9pbnQsIGB3Y24zNnh4X3NtZF9yc3BfcHJvY2Vzc2AgaXMgY2FsbGVkLiBBbmQgc2luY2UgU3l6Ym90IGNhbiBpbmplY3QgbWVzc2FnZXMgdmlhIHZpcnRpby1ycG1zZywgdGhpcyBpcyBkZWZpbml0ZWx5IHNvbWV0aGluZyB3ZSBjYW4gZnV6ei4gV2UgaGF2ZSBhIGNsZWFyIHBhdGggdG8gZXhwbG9pdCB0aGlzIVxuXG5UaGVyZWZvcmUsIHRoZSBgRm9jdXNTeW1ib2xzYCB3aWxsIGJlIGB3Y24zNnh4X3NtZF9yc3BfcHJvY2Vzc2AuIFRoZSBgRW5hYmxlQ29uZmlnc2AgbGlzdCBpcyBhcyBkZXNjcmliZWQgYWJvdmUuIFRoZSByZWFzb25pbmcgaGVyZSBpcyBzb2xpZDogdGhlIHBhdGNoIGZpeGVzIGFuIG91dC1vZi1ib3VuZHMgcmVhZCBpbiBgd2NuMzZ4eF9zbWRfcnNwX3Byb2Nlc3NgIGJ5IGFkZGluZyBhIGxlbmd0aCBjaGVjayBmb3IgdGhlIEhBTCBtZXNzYWdlIGhlYWRlci4gVGhpcyBmdW5jdGlvbiBwcm9jZXNzZXMgaW5jb21pbmcgbWVzc2FnZXMgZnJvbSB0aGUgU01EIGNoYW5uZWwgKHJwbXNnKSwgYW5kIGl0cyByZWFjaGFiaWxpdHkgdmlhIHRoZSB2aXJ0aW8tcnBtc2cgYnVzIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBtYWtlcyBpdCBpZGVhbCBmb3IgZnV6emluZy5cblxuTGV0IG1lIGp1c3QgZG91YmxlLWNoZWNrIHRvIGJlIGFic29sdXRlbHkgc3VyZS4uLiBZZXAsIHRoZSBwYXRjaCBvbmx5IG1vZGlmaWVzIGB3Y24zNnh4X3NtZF9yc3BfcHJvY2Vzc2AuIE9rYXksIHRoYXQncyBpdC4gV2UncmUgZ29vZCB0byBnby5cblxuXG4iLCJJbnB1dFRva2VucyI6MzcxNzYsIk91dHB1dFRva2VucyI6MTUzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzQyLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjZUMTg6NTY6NDUuMTI3MjI4ODQ1WiIsIlNlcSI6NTEsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODQ5OTYyNjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIldDTjM2WFhcIixcbiAgICBcIlFDT01fV0NOU1NfQ1RSTFwiLFxuICAgIFwiUlBNU0dfVklSVElPXCIsXG4gICAgXCJNQUM4MDIxMVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIndjbjM2eHhfc21kX3JzcF9wcm9jZXNzXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYW4gb3V0LW9mLWJvdW5kcyByZWFkIGluIGB3Y24zNnh4X3NtZF9yc3BfcHJvY2Vzc2AgYnkgYWRkaW5nIGEgbGVuZ3RoIGNoZWNrIGZvciB0aGUgSEFMIG1lc3NhZ2UgaGVhZGVyLiBUaGlzIGZ1bmN0aW9uIHByb2Nlc3NlcyBpbmNvbWluZyBtZXNzYWdlcyBmcm9tIHRoZSBTTUQgY2hhbm5lbCAocnBtc2cpLiBJdCBpcyByZWFjaGFibGUgdmlhIHRoZSB2aXJ0aW8tcnBtc2cgYnVzIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cywgbWFraW5nIGl0IHN1aXRhYmxlIGZvciBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIldDTjM2WFhcIixcbiAgICBcIlFDT01fV0NOU1NfQ1RSTFwiLFxuICAgIFwiUlBNU0dfVklSVElPXCIsXG4gICAgXCJNQUM4MDIxMVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIndjbjM2eHhfc21kX3JzcF9wcm9jZXNzXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYW4gb3V0LW9mLWJvdW5kcyByZWFkIGluIGB3Y24zNnh4X3NtZF9yc3BfcHJvY2Vzc2AgYnkgYWRkaW5nIGEgbGVuZ3RoIGNoZWNrIGZvciB0aGUgSEFMIG1lc3NhZ2UgaGVhZGVyLiBUaGlzIGZ1bmN0aW9uIHByb2Nlc3NlcyBpbmNvbWluZyBtZXNzYWdlcyBmcm9tIHRoZSBTTUQgY2hhbm5lbCAocnBtc2cpLiBJdCBpcyByZWFjaGFibGUgdmlhIHRoZSB2aXJ0aW8tcnBtc2cgYnVzIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cywgbWFraW5nIGl0IHN1aXRhYmxlIGZvciBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowq986w[1] Phase: Succeeded StartedAt: 2026-07-26 18:56:57 +0000 UTC FinishedAt: 2026-07-26 18:56:57 +0000 UTC Input: nil Output: nil --------- Name: series-workflowq986w[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-07-26 18:56:57 +0000 UTC FinishedAt: 2026-07-26 18:56:57 +0000 UTC Input: nil Output: nil --------- Name: series-workflowq986w[2] Phase: Succeeded StartedAt: 2026-07-26 18:56:57 +0000 UTC FinishedAt: 2026-07-26 22:14:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowq986w[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["WCN36XX","QCOM_WCNSS_CTRL","RPMSG_VIRTIO","MAC80211"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["wcn36xx_smd_rsp_process"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["WCN36XX","QCOM_WCNSS_CTRL","RPMSG_VIRTIO","MAC80211"],"series_id":"f1fbd891-3701-488e-882d-6c92e98c0170","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-07-26 18:56:58 +0000 UTC FinishedAt: 2026-07-26 22:14:00 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["WCN36XX","QCOM_WCNSS_CTRL","RPMSG_VIRTIO","MAC80211"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["wcn36xx_smd_rsp_process"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["WCN36XX","QCOM_WCNSS_CTRL","RPMSG_VIRTIO","MAC80211"],"series_id":"f1fbd891-3701-488e-882d-6c92e98c0170","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowq986w[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["WCN36XX","QCOM_WCNSS_CTRL","RPMSG_VIRTIO","MAC80211"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["wcn36xx_smd_rsp_process"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["WCN36XX","QCOM_WCNSS_CTRL","RPMSG_VIRTIO","MAC80211"],"series_id":"f1fbd891-3701-488e-882d-6c92e98c0170","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-07-26 18:56:58 +0000 UTC FinishedAt: 2026-07-26 18:57:10 +0000 UTC Input: nil Output: nil --------- Name: series-workflowq986w[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["WCN36XX","QCOM_WCNSS_CTRL","RPMSG_VIRTIO","MAC80211"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["wcn36xx_smd_rsp_process"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["WCN36XX","QCOM_WCNSS_CTRL","RPMSG_VIRTIO","MAC80211"],"series_id":"f1fbd891-3701-488e-882d-6c92e98c0170","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-07-26 18:56:58 +0000 UTC FinishedAt: 2026-07-26 18:57:04 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["WCN36XX","QCOM_WCNSS_CTRL","RPMSG_VIRTIO","MAC80211"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowq986w/series-workflowq986w-convert-artifact-2650282912/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowq986w[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["WCN36XX","QCOM_WCNSS_CTRL","RPMSG_VIRTIO","MAC80211"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["wcn36xx_smd_rsp_process"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["WCN36XX","QCOM_WCNSS_CTRL","RPMSG_VIRTIO","MAC80211"],"series_id":"f1fbd891-3701-488e-882d-6c92e98c0170","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-07-26 18:57:10 +0000 UTC FinishedAt: 2026-07-26 20:08:33 +0000 UTC Input: nil Output: nil --------- Name: series-workflowq986w[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["WCN36XX","QCOM_WCNSS_CTRL","RPMSG_VIRTIO","MAC80211"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["wcn36xx_smd_rsp_process"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["WCN36XX","QCOM_WCNSS_CTRL","RPMSG_VIRTIO","MAC80211"],"series_id":"f1fbd891-3701-488e-882d-6c92e98c0170","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-07-26 18:57:10 +0000 UTC FinishedAt: 2026-07-26 20:08:33 +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:*bda85d47-a883-4c92-bc54-51f9a4b538f8,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-workflowq986w/series-workflowq986w-convert-artifact-2650282912/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": "5ab39e48-f7d6-429d-a40b-77b6ad3b8876", "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-workflowq986w/series-workflowq986w-build-action-3043555942/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowq986w[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["WCN36XX","QCOM_WCNSS_CTRL","RPMSG_VIRTIO","MAC80211"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["wcn36xx_smd_rsp_process"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["WCN36XX","QCOM_WCNSS_CTRL","RPMSG_VIRTIO","MAC80211"],"series_id":"f1fbd891-3701-488e-882d-6c92e98c0170","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-07-26 18:57:10 +0000 UTC FinishedAt: 2026-07-26 20:08:19 +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:*bda85d47-a883-4c92-bc54-51f9a4b538f8,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-workflowq986w/series-workflowq986w-convert-artifact-2650282912/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": "5ab39e48-f7d6-429d-a40b-77b6ad3b8876", "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-workflowq986w/series-workflowq986w-build-action-3043555942/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowq986w[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["WCN36XX","QCOM_WCNSS_CTRL","RPMSG_VIRTIO","MAC80211"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["wcn36xx_smd_rsp_process"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["WCN36XX","QCOM_WCNSS_CTRL","RPMSG_VIRTIO","MAC80211"],"series_id":"f1fbd891-3701-488e-882d-6c92e98c0170","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-07-26 20:08:33 +0000 UTC FinishedAt: 2026-07-26 20:08:33 +0000 UTC Input: nil Output: nil --------- Name: series-workflowq986w[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["WCN36XX","QCOM_WCNSS_CTRL","RPMSG_VIRTIO","MAC80211"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["wcn36xx_smd_rsp_process"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["WCN36XX","QCOM_WCNSS_CTRL","RPMSG_VIRTIO","MAC80211"],"series_id":"f1fbd891-3701-488e-882d-6c92e98c0170","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-07-26 20:08:33 +0000 UTC FinishedAt: 2026-07-26 20:08:33 +0000 UTC Input: nil Output: nil --------- Name: series-workflowq986w[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["WCN36XX","QCOM_WCNSS_CTRL","RPMSG_VIRTIO","MAC80211"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["wcn36xx_smd_rsp_process"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["WCN36XX","QCOM_WCNSS_CTRL","RPMSG_VIRTIO","MAC80211"],"series_id":"f1fbd891-3701-488e-882d-6c92e98c0170","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-07-26 20:08:33 +0000 UTC FinishedAt: 2026-07-26 20:08:49 +0000 UTC Input: nil Output: nil --------- Name: series-workflowq986w[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["WCN36XX","QCOM_WCNSS_CTRL","RPMSG_VIRTIO","MAC80211"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["wcn36xx_smd_rsp_process"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["WCN36XX","QCOM_WCNSS_CTRL","RPMSG_VIRTIO","MAC80211"],"series_id":"f1fbd891-3701-488e-882d-6c92e98c0170","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-07-26 20:08:33 +0000 UTC FinishedAt: 2026-07-26 20:08:44 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["WCN36XX","QCOM_WCNSS_CTRL","RPMSG_VIRTIO","MAC80211"],"series_id":"f1fbd891-3701-488e-882d-6c92e98c0170","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowq986w/series-workflowq986w-convert-artifact-562638535/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowq986w[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["WCN36XX","QCOM_WCNSS_CTRL","RPMSG_VIRTIO","MAC80211"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["wcn36xx_smd_rsp_process"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["WCN36XX","QCOM_WCNSS_CTRL","RPMSG_VIRTIO","MAC80211"],"series_id":"f1fbd891-3701-488e-882d-6c92e98c0170","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-07-26 20:08:49 +0000 UTC FinishedAt: 2026-07-26 20:12:18 +0000 UTC Input: nil Output: nil --------- Name: series-workflowq986w[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["WCN36XX","QCOM_WCNSS_CTRL","RPMSG_VIRTIO","MAC80211"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["wcn36xx_smd_rsp_process"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["WCN36XX","QCOM_WCNSS_CTRL","RPMSG_VIRTIO","MAC80211"],"series_id":"f1fbd891-3701-488e-882d-6c92e98c0170","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-07-26 20:08:49 +0000 UTC FinishedAt: 2026-07-26 20:10:40 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*5ab39e48-f7d6-429d-a40b-77b6ad3b8876,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-workflowq986w/series-workflowq986w-build-action-3043555942/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-workflowq986w[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["WCN36XX","QCOM_WCNSS_CTRL","RPMSG_VIRTIO","MAC80211"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["wcn36xx_smd_rsp_process"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["WCN36XX","QCOM_WCNSS_CTRL","RPMSG_VIRTIO","MAC80211"],"series_id":"f1fbd891-3701-488e-882d-6c92e98c0170","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-07-26 20:12:18 +0000 UTC FinishedAt: 2026-07-26 20:12:18 +0000 UTC Input: nil Output: nil --------- Name: series-workflowq986w[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["WCN36XX","QCOM_WCNSS_CTRL","RPMSG_VIRTIO","MAC80211"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["wcn36xx_smd_rsp_process"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["WCN36XX","QCOM_WCNSS_CTRL","RPMSG_VIRTIO","MAC80211"],"series_id":"f1fbd891-3701-488e-882d-6c92e98c0170","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-07-26 20:12:18 +0000 UTC FinishedAt: 2026-07-26 20:12:18 +0000 UTC Input: nil Output: nil --------- Name: series-workflowq986w[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["WCN36XX","QCOM_WCNSS_CTRL","RPMSG_VIRTIO","MAC80211"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["wcn36xx_smd_rsp_process"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["WCN36XX","QCOM_WCNSS_CTRL","RPMSG_VIRTIO","MAC80211"],"series_id":"f1fbd891-3701-488e-882d-6c92e98c0170","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-07-26 20:12:18 +0000 UTC FinishedAt: 2026-07-26 21:15:03 +0000 UTC Input: nil Output: nil --------- Name: series-workflowq986w[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["WCN36XX","QCOM_WCNSS_CTRL","RPMSG_VIRTIO","MAC80211"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["wcn36xx_smd_rsp_process"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["WCN36XX","QCOM_WCNSS_CTRL","RPMSG_VIRTIO","MAC80211"],"series_id":"f1fbd891-3701-488e-882d-6c92e98c0170","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-07-26 20:12:18 +0000 UTC FinishedAt: 2026-07-26 21:15:03 +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:*bda85d47-a883-4c92-bc54-51f9a4b538f8,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-workflowq986w/series-workflowq986w-convert-artifact-562638535/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": "b93bf69e-80fe-43c4-b2ea-18ecd1a5fc7a", "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-workflowq986w/series-workflowq986w-build-action-40201803/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowq986w[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["WCN36XX","QCOM_WCNSS_CTRL","RPMSG_VIRTIO","MAC80211"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["wcn36xx_smd_rsp_process"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["WCN36XX","QCOM_WCNSS_CTRL","RPMSG_VIRTIO","MAC80211"],"series_id":"f1fbd891-3701-488e-882d-6c92e98c0170","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-07-26 20:12:18 +0000 UTC FinishedAt: 2026-07-26 21:14:36 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*true,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Patched,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*bda85d47-a883-4c92-bc54-51f9a4b538f8,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-workflowq986w/series-workflowq986w-convert-artifact-562638535/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": "b93bf69e-80fe-43c4-b2ea-18ecd1a5fc7a", "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-workflowq986w/series-workflowq986w-build-action-40201803/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowq986w[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["WCN36XX","QCOM_WCNSS_CTRL","RPMSG_VIRTIO","MAC80211"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["wcn36xx_smd_rsp_process"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["WCN36XX","QCOM_WCNSS_CTRL","RPMSG_VIRTIO","MAC80211"],"series_id":"f1fbd891-3701-488e-882d-6c92e98c0170","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-07-26 21:15:03 +0000 UTC FinishedAt: 2026-07-26 21:15:04 +0000 UTC Input: nil Output: nil --------- Name: series-workflowq986w[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["WCN36XX","QCOM_WCNSS_CTRL","RPMSG_VIRTIO","MAC80211"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["wcn36xx_smd_rsp_process"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["WCN36XX","QCOM_WCNSS_CTRL","RPMSG_VIRTIO","MAC80211"],"series_id":"f1fbd891-3701-488e-882d-6c92e98c0170","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-07-26 21:15:04 +0000 UTC FinishedAt: 2026-07-26 21:15:04 +0000 UTC Input: nil Output: nil --------- Name: series-workflowq986w[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["WCN36XX","QCOM_WCNSS_CTRL","RPMSG_VIRTIO","MAC80211"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["wcn36xx_smd_rsp_process"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["WCN36XX","QCOM_WCNSS_CTRL","RPMSG_VIRTIO","MAC80211"],"series_id":"f1fbd891-3701-488e-882d-6c92e98c0170","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-07-26 21:15:04 +0000 UTC FinishedAt: 2026-07-26 21:17:26 +0000 UTC Input: nil Output: nil --------- Name: series-workflowq986w[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["WCN36XX","QCOM_WCNSS_CTRL","RPMSG_VIRTIO","MAC80211"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["wcn36xx_smd_rsp_process"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["WCN36XX","QCOM_WCNSS_CTRL","RPMSG_VIRTIO","MAC80211"],"series_id":"f1fbd891-3701-488e-882d-6c92e98c0170","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-07-26 21:15:04 +0000 UTC FinishedAt: 2026-07-26 21:17:06 +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:*b93bf69e-80fe-43c4-b2ea-18ecd1a5fc7a,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-workflowq986w/series-workflowq986w-build-action-40201803/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-workflowq986w[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["WCN36XX","QCOM_WCNSS_CTRL","RPMSG_VIRTIO","MAC80211"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["wcn36xx_smd_rsp_process"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["WCN36XX","QCOM_WCNSS_CTRL","RPMSG_VIRTIO","MAC80211"],"series_id":"f1fbd891-3701-488e-882d-6c92e98c0170","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-07-26 21:17:26 +0000 UTC FinishedAt: 2026-07-26 22:14:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowq986w[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["WCN36XX","QCOM_WCNSS_CTRL","RPMSG_VIRTIO","MAC80211"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["wcn36xx_smd_rsp_process"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["WCN36XX","QCOM_WCNSS_CTRL","RPMSG_VIRTIO","MAC80211"],"series_id":"f1fbd891-3701-488e-882d-6c92e98c0170","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-07-26 21:17:26 +0000 UTC FinishedAt: 2026-07-26 21:17:26 +0000 UTC Input: nil Output: nil --------- Name: series-workflowq986w[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["WCN36XX","QCOM_WCNSS_CTRL","RPMSG_VIRTIO","MAC80211"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["wcn36xx_smd_rsp_process"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["WCN36XX","QCOM_WCNSS_CTRL","RPMSG_VIRTIO","MAC80211"],"series_id":"f1fbd891-3701-488e-882d-6c92e98c0170","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-07-26 21:17:26 +0000 UTC FinishedAt: 2026-07-26 21:17:26 +0000 UTC Input: nil Output: nil --------- Name: series-workflowq986w[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["WCN36XX","QCOM_WCNSS_CTRL","RPMSG_VIRTIO","MAC80211"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["wcn36xx_smd_rsp_process"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["WCN36XX","QCOM_WCNSS_CTRL","RPMSG_VIRTIO","MAC80211"],"series_id":"f1fbd891-3701-488e-882d-6c92e98c0170","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-07-26 21:17:28 +0000 UTC FinishedAt: 2026-07-26 22:14:00 +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":["wcn36xx_smd_rsp_process"],"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:*5ab39e48-f7d6-429d-a40b-77b6ad3b8876,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*b93bf69e-80fe-43c4-b2ea-18ecd1a5fc7a,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-workflowq986w/series-workflowq986w-build-action-3043555942/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-workflowq986w/series-workflowq986w-build-action-40201803/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowq986w[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["WCN36XX","QCOM_WCNSS_CTRL","RPMSG_VIRTIO","MAC80211"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["wcn36xx_smd_rsp_process"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["WCN36XX","QCOM_WCNSS_CTRL","RPMSG_VIRTIO","MAC80211"],"series_id":"f1fbd891-3701-488e-882d-6c92e98c0170","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-07-26 21:17:28 +0000 UTC FinishedAt: 2026-07-26 21:17:56 +0000 UTC Input: nil Output: nil --------- Name: series-workflowq986w[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["WCN36XX","QCOM_WCNSS_CTRL","RPMSG_VIRTIO","MAC80211"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["wcn36xx_smd_rsp_process"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["WCN36XX","QCOM_WCNSS_CTRL","RPMSG_VIRTIO","MAC80211"],"series_id":"f1fbd891-3701-488e-882d-6c92e98c0170","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-07-26 21:17:29 +0000 UTC FinishedAt: 2026-07-26 21:17:35 +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":["wcn36xx_smd_rsp_process"],"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-workflowq986w/series-workflowq986w-convert-artifact-1229914784/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowq986w[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["WCN36XX","QCOM_WCNSS_CTRL","RPMSG_VIRTIO","MAC80211"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["wcn36xx_smd_rsp_process"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["WCN36XX","QCOM_WCNSS_CTRL","RPMSG_VIRTIO","MAC80211"],"series_id":"f1fbd891-3701-488e-882d-6c92e98c0170","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-07-26 21:17:32 +0000 UTC FinishedAt: 2026-07-26 21:17:32 +0000 UTC Input: nil Output: nil --------- Name: series-workflowq986w[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["WCN36XX","QCOM_WCNSS_CTRL","RPMSG_VIRTIO","MAC80211"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["wcn36xx_smd_rsp_process"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["WCN36XX","QCOM_WCNSS_CTRL","RPMSG_VIRTIO","MAC80211"],"series_id":"f1fbd891-3701-488e-882d-6c92e98c0170","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-07-26 21:17:56 +0000 UTC FinishedAt: 2026-07-26 22:14:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowq986w[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["WCN36XX","QCOM_WCNSS_CTRL","RPMSG_VIRTIO","MAC80211"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["wcn36xx_smd_rsp_process"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["WCN36XX","QCOM_WCNSS_CTRL","RPMSG_VIRTIO","MAC80211"],"series_id":"f1fbd891-3701-488e-882d-6c92e98c0170","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-07-26 21:17:56 +0000 UTC FinishedAt: 2026-07-26 22:13:50 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*5ab39e48-f7d6-429d-a40b-77b6ad3b8876,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*b93bf69e-80fe-43c4-b2ea-18ecd1a5fc7a,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-workflowq986w/series-workflowq986w-build-action-3043555942/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-workflowq986w/series-workflowq986w-build-action-40201803/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-workflowq986w/series-workflowq986w-convert-artifact-1229914784/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,}