Name: series-workflowq5x72 Phase: Succeeded StartedAt: 2026-07-25 12:21:18 +0000 UTC FinishedAt: 2026-07-25 14:10:13 +0000 UTC Input: nil Output: nil --------- Name: series-workflowq5x72[0] Phase: Succeeded StartedAt: 2026-07-25 12:21:18 +0000 UTC FinishedAt: 2026-07-25 12:44:42 +0000 UTC Input: nil Output: nil --------- Name: series-workflowq5x72[0].run-triage Phase: Succeeded StartedAt: 2026-07-25 12:21:18 +0000 UTC FinishedAt: 2026-07-25 12:44:42 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "wireless-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git", "commit_hash": "90883c513ca01e77c56b8d94be7de11420c1dacf", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "MT7921U", "MT7921E", "MT7921S", "MAC80211", "CFG80211" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "wireless-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git", "commit_hash": "90883c513ca01e77c56b8d94be7de11420c1dacf", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "MT7921U", "MT7921E", "MT7921S", "MAC80211", "CFG80211" ], "series_id": "12ed6c34-1258-476c-9b79-49d84be06e2e" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "mt7921_run_firmware" ], "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+CgkJCTx0ZD4yMDI2LzA3LzI1IDEyOjQzPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O01UNzkyMVUmIzM0OywKICAgICYjMzQ7TVQ3OTIxRSYjMzQ7LAogICAgJiMzNDtNVDc5MjFTJiMzNDssCiAgICAmIzM0O01BQzgwMjExJiMzNDssCiAgICAmIzM0O0NGRzgwMjExJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7bXQ3OTIxX3J1bl9maXJtd2FyZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBmaXJtd2FyZSBsb2FkaW5nIGxvZ2ljIChgbXQ3OTIxX2xvYWRfY2xjYCkgaW4gdGhlIE1lZGlhdGVrIE1UNzkyMSB3aXJlbGVzcyBkcml2ZXIuIFRoaXMgZHJpdmVyIHN1cHBvcnRzIFVTQiAoYE1UNzkyMVVgKSwgd2hpY2ggY2FuIGJlIGZ1enplZCB2aWEgdGhlIFVTQiBnYWRnZXQgZnJhbWV3b3JrICh2aGNpKS4gVGhlIG1vZGlmaWVkIGZ1bmN0aW9uIGlzIHJlYWNoYWJsZSBkdXJpbmcgZGV2aWNlIGluaXRpYWxpemF0aW9uIHZpYSBgbXQ3OTIxX3J1bl9maXJtd2FyZWAuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMTI6NDM8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCBjMjFhNjk5ZWY4ZWViODhjYTEyZjliNGVlYmE0NTNiYzkyYWRmOGM5XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFNhdCBKdWwgMjUgMTI6NDM6MDYgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWN1LmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tY3UuY1xuaW5kZXggMjViOTQzNzI1MGY3YmEuLmM4Yzg0OTQzOTdjNzYxIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWN1LmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21jdS5jXG5AQCAtNDc2LDYgJiM0Mzs0NzYsMTAgQEAgc3RhdGljIGludCBtdDc5MjFfbG9hZF9jbGMoc3RydWN0IG10NzkyeF9kZXYgKmRldiwgY29uc3QgY2hhciAqZndfbmFtZSlcbiBcdFx0ICAgIHU4X2dldF9iaXRzKGNsYy1cdTAwM2V0eXBlLCBNVF9FRV9IV19UWVBFX0VOQ0FQKSAhPSBod19lbmNhcClcbiBcdFx0XHRjb250aW51ZTtcbiBcbiYjNDM7XHRcdGlmIChjbGMtXHUwMDNlaWR4ID09IE1UNzkyMV9DTENfUkVHRCBcdTAwMjZcdTAwMjZcbiYjNDM7XHRcdCAgICB1OF9nZXRfYml0cyhjbGMtXHUwMDNldHlwZSwgTVRfRUVfSFdfVFlQRV9FTkNBUCkgIT0gaHdfZW5jYXApXG4mIzQzO1x0XHRcdGNvbnRpbnVlO1xuJiM0MztcbiBcdFx0cGh5LVx1MDAzZWNsY1tjbGMtXHUwMDNlaWR4XSA9IGRldm1fa21lbWR1cChtZGV2LVx1MDAzZWRldiwgY2xjLFxuIFx0XHRcdFx0XHRcdCAgbGUzMl90b19jcHUoY2xjLVx1MDAzZWxlbiksXG4gXHRcdFx0XHRcdFx0ICBHRlBfS0VSTkVMKTtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tdDc5MjEuaCBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL210NzkyMS5oXG5pbmRleCBmYjg2NTRiN2M1ZTdlNy4uZjU2MjhmYjZiZmJmYzkgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tdDc5MjEuaFxuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbXQ3OTIxLmhcbkBAIC0xMzYsNiAmIzQzOzEzNiw3IEBAIHN0cnVjdCBtdDc5MjFfZG1hX2xheW91dCB7XG4gZW51bSB7XG4gXHRNVDc5MjFfQ0xDX1BPV0VSLFxuIFx0TVQ3OTIxX0NMQ19DSEFOLFxuJiM0MztcdE1UNzkyMV9DTENfUkVHRCA9IDMsXG4gXHRNVDc5MjFfQ0xDX01BWF9OVU0sXG4gfTtcbiBcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAxMjo0MzwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4xbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7TVQ3OTIxVSYjMzQ7LAogICAgJiMzNDtNVDc5MjFFJiMzNDssCiAgICAmIzM0O01UNzkyMVMmIzM0OywKICAgICYjMzQ7TUFDODAyMTEmIzM0OywKICAgICYjMzQ7Q0ZHODAyMTEmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDttdDc5MjFfcnVuX2Zpcm13YXJlJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIGZpcm13YXJlIGxvYWRpbmcgbG9naWMgKGBtdDc5MjFfbG9hZF9jbGNgKSBpbiB0aGUgTWVkaWF0ZWsgTVQ3OTIxIHdpcmVsZXNzIGRyaXZlci4gVGhpcyBkcml2ZXIgc3VwcG9ydHMgVVNCIChgTVQ3OTIxVWApLCB3aGljaCBjYW4gYmUgZnV6emVkIHZpYSB0aGUgVVNCIGdhZGdldCBmcmFtZXdvcmsgKHZoY2kpLiBUaGUgbW9kaWZpZWQgZnVuY3Rpb24gaXMgcmVhY2hhYmxlIGR1cmluZyBkZXZpY2UgaW5pdGlhbGl6YXRpb24gdmlhIGBtdDc5MjFfcnVuX2Zpcm13YXJlYC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IGMyMWE2OTllZjhlZWI4OGNhMTJmOWI0ZWViYTQ1M2JjOTJhZGY4YzkKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgU2F0IEp1bCAyNSAxMjo0MzowNiAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21jdS5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWN1LmMKaW5kZXggMjViOTQzNzI1MGY3YmEuLmM4Yzg0OTQzOTdjNzYxIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tY3UuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tY3UuYwpAQCAtNDc2LDYgJiM0Mzs0NzYsMTAgQEAgc3RhdGljIGludCBtdDc5MjFfbG9hZF9jbGMoc3RydWN0IG10NzkyeF9kZXYgKmRldiwgY29uc3QgY2hhciAqZndfbmFtZSkKIAkJICAgIHU4X2dldF9iaXRzKGNsYy0mZ3Q7dHlwZSwgTVRfRUVfSFdfVFlQRV9FTkNBUCkgIT0gaHdfZW5jYXApCiAJCQljb250aW51ZTsKIAomIzQzOwkJaWYgKGNsYy0mZ3Q7aWR4ID09IE1UNzkyMV9DTENfUkVHRCAmYW1wOyZhbXA7CiYjNDM7CQkgICAgdThfZ2V0X2JpdHMoY2xjLSZndDt0eXBlLCBNVF9FRV9IV19UWVBFX0VOQ0FQKSAhPSBod19lbmNhcCkKJiM0MzsJCQljb250aW51ZTsKJiM0MzsKIAkJcGh5LSZndDtjbGNbY2xjLSZndDtpZHhdID0gZGV2bV9rbWVtZHVwKG1kZXYtJmd0O2RldiwgY2xjLAogCQkJCQkJICBsZTMyX3RvX2NwdShjbGMtJmd0O2xlbiksCiAJCQkJCQkgIEdGUF9LRVJORUwpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbXQ3OTIxLmggYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tdDc5MjEuaAppbmRleCBmYjg2NTRiN2M1ZTdlNy4uZjU2MjhmYjZiZmJmYzkgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL210NzkyMS5oCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL210NzkyMS5oCkBAIC0xMzYsNiAmIzQzOzEzNiw3IEBAIHN0cnVjdCBtdDc5MjFfZG1hX2xheW91dCB7CiBlbnVtIHsKIAlNVDc5MjFfQ0xDX1BPV0VSLAogCU1UNzkyMV9DTENfQ0hBTiwKJiM0MzsJTVQ3OTIxX0NMQ19SRUdEID0gMywKIAlNVDc5MjFfQ0xDX01BWF9OVU0sCiB9OwogCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDEyOjQzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI0MjgKCQkJCQkJCW91dHB1dDogMzcKCQkJCQkJCXRob3VnaHRzOiAyMzEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgTVQ3OTIxIERyaXZlciBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTt2ZSBnb3QgdGhpcyBwYXRjaCB0aGF0IHRvdWNoZXMgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21jdS5jYCBhbmQgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL210NzkyMS5oYC4gSW1tZWRpYXRlbHksIEkgc2VlIGl0JiMzOTtzIGFkZGluZyBhIHNwZWNpZmljIGNoZWNrIHdpdGhpbiBgbXQ3OTIxX2xvYWRfY2xjYC4gVGhlIGxvZ2ljIGludm9sdmVzIGBjbGMtJmd0O2lkeGAsIHNwZWNpZmljYWxseSBsb29raW5nIGZvciBgTVQ3OTIxX0NMQ19SRUdEYCwgYW5kIGNvbXBhcmluZyB0aGUgYGh3X2VuY2FwYCB2YWx1ZSB3aXRoIHNvbWUgYml0cyBmcm9tIGBjbGMtJmd0O3R5cGVgLiBBbmQsIG9mIGNvdXJzZSwgdGhlIGhlYWRlciBmaWxlJiMzOTtzIGVudW0gaXMgYmVpbmcgZXh0ZW5kZWQgd2l0aCBgTVQ3OTIxX0NMQ19SRUdEID0gM2AuCgpNeSBmaXJzdCB0aG91Z2h0IGlzLCBpcyB0aGlzIGV2ZW4gKnJlYWNoYWJsZSogaW4gYSB0eXBpY2FsIFFFTVUgc2V0dXA/IFRoaXMgaXMgYSBNZWRpYXRlayBNVDc5MjEgZHJpdmVyLCB3aGljaCBwb2ludHMgdG8gd2lyZWxlc3MgZGV2aWNlcy4gSSYjMzk7bGwgbmVlZCB0byBmaWd1cmUgb3V0IHRoZSBidXMgdHlwZSB0aGlzIGRyaXZlciBpcyBmb3I7IFBDSSwgVVNCLCBvciBTRElPLCBtb3N0IGxpa2VseS4gU28sIHRoZSBuZXh0IHN0ZXAgaXMgdG8gZXhhbWluZSB0aGUgY29udGVudHMgb2YgdGhlIGBkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9gIGRpcmVjdG9yeS4gVGhhdCBzaG91bGQgZ2l2ZSBtZSBhIHNvbGlkIGNsdWUgYXMgdG8gdGhlIGRyaXZlciYjMzk7cyB0YXJnZXQgYW5kIHdoZXRoZXIgaXQmIzM5O3MgcG9zc2libGUgdG8gdHJpZ2dlciB0aGlzIGNvbmRpdGlvbi4gS25vd2luZyB0aGUgYnVzIHR5cGUgd2lsbCBxdWlja2x5IHRlbGwgbWUgaWYgdGhlIHBhdGNoIGlzIHJlbGV2YW50IHRvIG15IGN1cnJlbnQgdGVzdGluZyBjb25maWd1cmF0aW9uIG9yIGlmIEkgbmVlZCB0byBkaWcgZGVlcGVyLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDEyOjQzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Y29kZXNlYXJjaC1kaXItaW5kZXg8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0RpciYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlcyYjMzQ7OiBbCiAgICAmIzM0O2RlYnVnZnMuYyYjMzQ7LAogICAgJiMzNDtpbml0LmMmIzM0OywKICAgICYjMzQ7bWFjLmMmIzM0OywKICAgICYjMzQ7bWFpbi5jJiMzNDssCiAgICAmIzM0O21jdS5jJiMzNDssCiAgICAmIzM0O21jdS5oJiMzNDssCiAgICAmIzM0O210NzkyMS5oJiMzNDssCiAgICAmIzM0O3BjaS5jJiMzNDssCiAgICAmIzM0O3BjaV9tYWMuYyYjMzQ7LAogICAgJiMzNDtwY2lfbWN1LmMmIzM0OywKICAgICYjMzQ7cmVnZC5jJiMzNDssCiAgICAmIzM0O3JlZ2QuaCYjMzQ7LAogICAgJiMzNDtyZWdzLmgmIzM0OywKICAgICYjMzQ7c2Rpby5jJiMzNDssCiAgICAmIzM0O3NkaW9fbWFjLmMmIzM0OywKICAgICYjMzQ7c2Rpb19tY3UuYyYjMzQ7LAogICAgJiMzNDt0ZXN0bW9kZS5jJiMzNDssCiAgICAmIzM0O3VzYi5jJiMzNDsKICBdLAogICYjMzQ7U3ViZGlycyYjMzQ7OiBudWxsCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAxMjo0MzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMTcwCgkJCQkJCQlvdXRwdXQ6IDQ5CgkJCQkJCQl0aG91Z2h0czogODMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBEcml2ZXImIzM5O3MgU2NvcGUgYW5kIEZ1enppbmcgUG90ZW50aWFsKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIGNvZGUgYW5kIGltbWVkaWF0ZWx5IHNlZSBgcGNpLmNgLCBgc2Rpby5jYCwgYW5kIGB1c2IuY2AuIE15IG1pbmQganVtcHMgdG8gY29uY2x1c2lvbnMgaW1tZWRpYXRlbHksIGFzIHlvdSBkby4gVGhpcyBtZWFucyBpdCYjMzk7cyBhIGRyaXZlciB0aGF0JiMzOTtzIGJ1aWx0IHRvIHN1cHBvcnQgUENJLCBTRElPLCBhbmQgVVNCIGRldmljZXMsIHdoaWNoIGlzIHF1aXRlIHRoZSB0cmlmZWN0YS4gVGhlIHByZXNlbmNlIG9mIHRoYXQgVVNCIGRyaXZlciBpcyBwYXJ0aWN1bGFybHkgaW50ZXJlc3RpbmcuIFRoYXQgb3BlbnMgdGhlIGRvb3IgdG8gdXNpbmcgdGhlIFVTQiBnYWRnZXQgZnJhbWV3b3JrIOKAkyBzcGVjaWZpY2FsbHkgdmhjaSDigJMgZm9yIGZ1enppbmcuIEdpdmVuIHRoZSB0YXJnZXQsIEkgY2FuIG5vdyBpZGVudGlmeSBzZXZlcmFsIGdvb2Qgc3RhcnRpbmcgcG9pbnRzIGZvciBmdXp6aW5nLiBMZXQgbWUgY2hlY2sgYG10NzkyMV9sb2FkX2NsY2AgaW4gYG1jdS5jYC4gSSB3aWxsIHN0YXJ0IHRoZXJlIGZvciB0aGUgaW5pdGlhbCBpbnNwZWN0aW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDEyOjQzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O210NzkyMV9sb2FkX2NsYyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tY3UuYz0zOTk9aW50IG10NzkyMV9tY3VfdW5pX3J4X2JhKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWN1LmMtNDA5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWN1LmM6NDEwOnN0YXRpYyBpbnQgbXQ3OTIxX2xvYWRfY2xjKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYsIGNvbnN0IGNoYXIgKmZ3X25hbWUpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tY3UuYy00MTEte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21jdS5jPTYzOT1pbnQgbXQ3OTIxX3J1bl9maXJtd2FyZShzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21jdS5jLTY1MC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21jdS5jOjY1MTpcdGVyciA9IG10NzkyMV9sb2FkX2NsYyhkZXYsIG10NzkyeF9yYW1fbmFtZShkZXYpKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21jdS5jLTY1Mi1cdGlmIChlcnIpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMTI6NDM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzgyOAoJCQkJCQkJb3V0cHV0OiA0OQoJCQkJCQkJdGhvdWdodHM6IDQ4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRha2Ugb24gdGhlIHRob3VnaHQgcHJvY2VzcywgYXMgcmVxdWVzdGVkOgoKKipUcmFjaW5nIHRoZSBGaXJtd2FyZSBMb2FkaW5nIFNlcXVlbmNlKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGUgYG10NzkyMWAgZHJpdmVyLiBJIHNlZSB0aGF0IHRoZSBmdW5jdGlvbiBgbXQ3OTIxX2xvYWRfY2xjYCBpcyBjYWxsZWQgZnJvbSBgbXQ3OTIxX3J1bl9maXJtd2FyZWAuIFRoYXQmIzM5O3MgaW50ZXJlc3RpbmcsIHRoZSBgY2xjYCBwcmVzdW1hYmx5IG5lZWRzIHRvIGJlIGxvYWRlZCBieSB0aGUgZmlybXdhcmUgYXQgc29tZSBwb2ludCwgc28gdGhpcyBzZWVtcyBsb2dpY2FsLiBOb3csIG15IG5leHQgc3RlcCBpcyB0byBmaWd1cmUgb3V0IHRoZSAqZW50cnkgcG9pbnQqLiBJIHdhbnQgdG8gdW5kZXJzdGFuZCB0aGUgY29tcGxldGUgZmlybXdhcmUgbG9hZGluZyBzZXF1ZW5jZSwgYW5kIHNlZWluZyB3aGVyZSBgbXQ3OTIxX3J1bl9maXJtd2FyZWAgaXRzZWxmIGlzIGNhbGxlZCB3aWxsIHByb3ZpZGUgdGhlIGNydWNpYWwgY29udGV4dC4gVW5kZXJzdGFuZGluZyB0aGUgY2FsbGVyIHdpbGwgaWxsdW1pbmF0ZSB0aGUgaW5pdGlhbCB0cmlnZ2VyIGZvciB0aGUgd2hvbGUgcHJvY2Vzcy4gSSYjMzk7bGwgbmVlZCB0byB0cmFjZSB0aGUgY2FsbCBncmFwaCBiYWNrIHRvIHNlZSB3aGF0JiMzOTtzIHVsdGltYXRlbHkgaW5pdGlhbGl6aW5nIHRoZSBmaXJtd2FyZSBsb2FkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDEyOjQzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O210NzkyMV9ydW5fZmlybXdhcmUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWN1LmM9NjI2PWludCBtdDc5MjFfbWN1X2Z3X2xvZ18yX2hvc3Qoc3RydWN0IG10NzkyeF9kZXYgKmRldiwgdTggY3RybClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tY3UuYy02MzgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tY3UuYzo2Mzk6aW50IG10NzkyMV9ydW5fZmlybXdhcmUoc3RydWN0IG10NzkyeF9kZXYgKmRldilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21jdS5jLTY0MC17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWN1LmMtNjU3LX1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21jdS5jOjY1ODpFWFBPUlRfU1lNQk9MX0dQTChtdDc5MjFfcnVuX2Zpcm13YXJlKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21jdS5jLTY1OS1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tdDc5MjEuaD0yMDc9dm9pZCBtdDc5MjFfdW5yZWdpc3Rlcl9kZXZpY2Uoc3RydWN0IG10NzkyeF9kZXYgKmRldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tdDc5MjEuaDoyMDg6aW50IG10NzkyMV9ydW5fZmlybXdhcmUoc3RydWN0IG10NzkyeF9kZXYgKmRldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tdDc5MjEuaC0yMDktaW50IG10NzkyMV9zZXRfY2hhbm5lbChzdHJ1Y3QgbXQ3Nl9waHkgKm1waHkpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3BjaV9tYWMuYz01Nj1pbnQgbXQ3OTIxZV9tYWNfcmVzZXQoc3RydWN0IG10NzkyeF9kZXYgKmRldilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9wY2lfbWFjLmMtMTA1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvcGNpX21hYy5jOjEwNjpcdGVyciA9IG10NzkyMV9ydW5fZmlybXdhcmUoZGV2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3BjaV9tYWMuYy0xMDctXHRpZiAoZXJyKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3BjaV9tY3UuYz00MT1pbnQgbXQ3OTIxZV9tY3VfaW5pdChzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3BjaV9tY3UuYy01Ny1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3BjaV9tY3UuYzo1ODpcdGVyciA9IG10NzkyMV9ydW5fZmlybXdhcmUoZGV2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3BjaV9tY3UuYy01OS1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9zZGlvX21hYy5jPTE0Nz1pbnQgbXQ3OTIxc19tYWNfcmVzZXQoc3RydWN0IG10NzkyeF9kZXYgKmRldilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9zZGlvX21hYy5jLTE4MC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3NkaW9fbWFjLmM6MTgxOlx0ZXJyID0gbXQ3OTIxX3J1bl9maXJtd2FyZShkZXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvc2Rpb19tYWMuYy0xODItXHRpZiAoZXJyKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3NkaW9fbWN1LmM9NzQ9aW50IG10NzkyMXNfbWN1X2luaXQoc3RydWN0IG10NzkyeF9kZXYgKmRldilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9zZGlvX21jdS5jLTkwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvc2Rpb19tY3UuYzo5MTpcdHJldCA9IG10NzkyMV9ydW5fZmlybXdhcmUoZGV2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3NkaW9fbWN1LmMtOTItXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3VzYi5jPTY1PXN0YXRpYyBpbnQgbXQ3OTIxdV9tY3VfaW5pdChzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3VzYi5jLTc4LVx0bXQ3Nl9zZXQoZGV2LCBNVF9VRE1BX1RYX1FTRUwsIE1UX0ZXX0RMX0VOKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3VzYi5jOjc5Olx0cmV0ID0gbXQ3OTIxX3J1bl9maXJtd2FyZShkZXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvdXNiLmMtODAtXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3VzYi5jPTg5PXN0YXRpYyBpbnQgbXQ3OTIxdV9tYWNfcmVzZXQoc3RydWN0IG10NzkyeF9kZXYgKmRldilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS91c2IuYy0xMjYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS91c2IuYzoxMjc6XHRlcnIgPSBtdDc5MjFfcnVuX2Zpcm13YXJlKGRldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS91c2IuYy0xMjgtXHRpZiAoZXJyKVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDEyOjQzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDU1OTMKCQkJCQkJCW91dHB1dDogNTIKCQkJCQkJCXRob3VnaHRzOiAxNDIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBFeGVjdXRpb24gQ29udGV4dCBhbmQgVGVzdGluZyBTdHJhdGVneSoqCgpPa2F5LCBzbyB0aGlzIGNvZGUgc25pcHBldCwgdGhlIG9uZSBJJiMzOTttIGZvY3VzZWQgb24sIGdldHMgY2FsbGVkIGZyb20gYG10NzkyMXVfbWN1X2luaXRgIGFuZCBgbXQ3OTIxdV9tYWNfcmVzZXRgIHdpdGhpbiBgdXNiLmNgLiBUaGF0IHBsYWNlcyBpdCBmaXJtbHkgd2l0aGluIHRoZSBVU0IgZGV2aWNlIGluaXRpYWxpemF0aW9uIHNlcXVlbmNlLCB3aGljaCBpcyBleGFjdGx5IHRoZSBraW5kIG9mIGNvbnRleHQgSSBleHBlY3RlZC4gVGhpcyBpcyBnb29kIGJlY2F1c2UgaXQgaW1tZWRpYXRlbHkgc3VnZ2VzdHMgYSB2aWFibGUgdGVzdGluZyBzdHJhdGVneTogVVNCIGZ1enppbmcuIFdlIGNhbiBsZXZlcmFnZSBleGlzdGluZyB0b29scywgbGlrZSBzeXprYWxsZXImIzM5O3MgVVNCIGdhZGdldCBmdXp6aW5nIGNhcGFiaWxpdGllcywgdG8gdGFyZ2V0IHRoaXMgYXJlYSBlZmZlY3RpdmVseS4gVGhlIGZhY3QgdGhhdCB0aGlzIHBhdGNoIHNwZWNpZmljYWxseSBtb2RpZmllcyBgbXQ3OTIxX2xvYWRfY2xjYCBpcyB0aGUga2V5LgoKTm93LCBgbXQ3OTIxX2xvYWRfY2xjYOKApiBoYW5nIG9uLCBpc27igJl0IHRoYXQgdGhlIGZ1bmN0aW9uIHJlc3BvbnNpYmxlIGZvciBsb2FkaW5nIHRoZSBmaXJtd2FyZT8gWWVzLCBpdCBpcy4gQW5kIHRoYXQgZmlybXdhcmUgaXMgbG9hZGVkIGZyb20gdGhlIGZpbGVzeXN0ZW0gdXNpbmcgYGZ3X25hbWVgPyBFeGNlbGxlbnQuIFRoaXMgZ2l2ZXMgbWUgYW5vdGhlciBjcml0aWNhbCBwb2ludCB0byB1bmRlcnN0YW5kLiBMZXQgbWUgdGFrZSBhIGNsb3NlciBsb29rIGF0IGBtdDc5MjFfbG9hZF9jbGNgIHJpZ2h0IGF3YXksIHRoZSBkZXRhaWxzIG9mIHdoYXQgaXQgZG9lcyBhcmUga2V5IHRvIHVuZGVyc3RhbmRpbmcgdGhlIGltcGFjdCBvZiB0aGlzIGNoYW5nZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMTI6NDM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tY3UuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDQxMCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAxMDAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDQxMDpcdHN0YXRpYyBpbnQgbXQ3OTIxX2xvYWRfY2xjKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYsIGNvbnN0IGNoYXIgKmZ3X25hbWUpXG4gNDExOlx0e1xuIDQxMjpcdFx0Y29uc3Qgc3RydWN0IG10NzZfY29ubmFjMl9md190cmFpbGVyICpoZHI7XG4gNDEzOlx0XHRjb25zdCBzdHJ1Y3QgbXQ3Nl9jb25uYWMyX2Z3X3JlZ2lvbiAqcmVnaW9uO1xuIDQxNDpcdFx0Y29uc3Qgc3RydWN0IG10NzkyMV9jbGMgKmNsYztcbiA0MTU6XHRcdHN0cnVjdCBtdDc2X2RldiAqbWRldiA9IFx1MDAyNmRldi1cdTAwM2VtdDc2O1xuIDQxNjpcdFx0c3RydWN0IG10NzkyeF9waHkgKnBoeSA9IFx1MDAyNmRldi1cdTAwM2VwaHk7XG4gNDE3Olx0XHRjb25zdCBzdHJ1Y3QgZmlybXdhcmUgKmZ3O1xuIDQxODpcdFx0aW50IHJldCwgaSwgbGVuLCBvZmZzZXQgPSAwO1xuIDQxOTpcdFx0dTggKmNsY19iYXNlID0gTlVMTCwgaHdfZW5jYXAgPSAwO1xuIDQyMDpcdFxuIDQyMTpcdFx0ZGV2LVx1MDAzZXBoeS5jbGNfY2hhbl9jb25mID0gMHhmZjtcbiA0MjI6XHRcdGRldi1cdTAwM2VyZWdkX3VzZXIgPSBmYWxzZTtcbiA0MjM6XHRcdGlmICghbXQ3OTIxX3JlZ2RfY2xjX3N1cHBvcnRlZChkZXYpKVxuIDQyNDpcdFx0XHRyZXR1cm4gMDtcbiA0MjU6XHRcbiA0MjY6XHRcdGlmIChtdDc2X2lzX21taW8oXHUwMDI2ZGV2LVx1MDAzZW10NzYpKSB7XG4gNDI3Olx0XHRcdHJldCA9IG10NzkyMV9tY3VfcmVhZF9lZXByb20oZGV2LCBNVF9FRV9IV19UWVBFLCBcdTAwMjZod19lbmNhcCk7XG4gNDI4Olx0XHRcdGlmIChyZXQpXG4gNDI5Olx0XHRcdFx0cmV0dXJuIHJldDtcbiA0MzA6XHRcdFx0aHdfZW5jYXAgPSB1OF9nZXRfYml0cyhod19lbmNhcCwgTVRfRUVfSFdfVFlQRV9FTkNBUCk7XG4gNDMxOlx0XHR9XG4gNDMyOlx0XG4gNDMzOlx0XHRyZXQgPSByZXF1ZXN0X2Zpcm13YXJlKFx1MDAyNmZ3LCBmd19uYW1lLCBtZGV2LVx1MDAzZWRldik7XG4gNDM0Olx0XHRpZiAocmV0KVxuIDQzNTpcdFx0XHRyZXR1cm4gcmV0O1xuIDQzNjpcdFxuIDQzNzpcdFx0aWYgKCFmdyB8fCAhZnctXHUwMDNlZGF0YSB8fCBmdy1cdTAwM2VzaXplIFx1MDAzYyBzaXplb2YoKmhkcikpIHtcbiA0Mzg6XHRcdFx0ZGV2X2VycihtZGV2LVx1MDAzZWRldiwgXCYjMzQ7SW52YWxpZCBmaXJtd2FyZVxcblwmIzM0Oyk7XG4gNDM5Olx0XHRcdHJldCA9IC1FSU5WQUw7XG4gNDQwOlx0XHRcdGdvdG8gb3V0O1xuIDQ0MTpcdFx0fVxuIDQ0MjpcdFxuIDQ0MzpcdFx0aGRyID0gKGNvbnN0IHZvaWQgKikoZnctXHUwMDNlZGF0YSAmIzQzOyBmdy1cdTAwM2VzaXplIC0gc2l6ZW9mKCpoZHIpKTtcbiA0NDQ6XHRcdGZvciAoaSA9IDA7IGkgXHUwMDNjIGhkci1cdTAwM2VuX3JlZ2lvbjsgaSYjNDM7JiM0MzspIHtcbiA0NDU6XHRcdFx0cmVnaW9uID0gKGNvbnN0IHZvaWQgKikoKGNvbnN0IHU4ICopaGRyIC1cbiA0NDY6XHRcdFx0XHRcdFx0KGhkci1cdTAwM2VuX3JlZ2lvbiAtIGkpICogc2l6ZW9mKCpyZWdpb24pKTtcbiA0NDc6XHRcdFx0bGVuID0gbGUzMl90b19jcHUocmVnaW9uLVx1MDAzZWxlbik7XG4gNDQ4Olx0XG4gNDQ5Olx0XHRcdC8qIGNoZWNrIGlmIHdlIGhhdmUgdmFsaWQgYnVmZmVyIHNpemUgKi9cbiA0NTA6XHRcdFx0aWYgKG9mZnNldCAmIzQzOyBsZW4gXHUwMDNlIGZ3LVx1MDAzZXNpemUpIHtcbiA0NTE6XHRcdFx0XHRkZXZfZXJyKG1kZXYtXHUwMDNlZGV2LCBcJiMzNDtJbnZhbGlkIGZpcm13YXJlIHJlZ2lvblxcblwmIzM0Oyk7XG4gNDUyOlx0XHRcdFx0cmV0ID0gLUVJTlZBTDtcbiA0NTM6XHRcdFx0XHRnb3RvIG91dDtcbiA0NTQ6XHRcdFx0fVxuIDQ1NTpcdFxuIDQ1NjpcdFx0XHRpZiAoKHJlZ2lvbi1cdTAwM2VmZWF0dXJlX3NldCBcdTAwMjYgRldfRkVBVFVSRV9OT05fREwpIFx1MDAyNlx1MDAyNlxuIDQ1NzpcdFx0XHQgICAgcmVnaW9uLVx1MDAzZXR5cGUgPT0gRldfVFlQRV9DTEMpIHtcbiA0NTg6XHRcdFx0XHRjbGNfYmFzZSA9ICh1OCAqKShmdy1cdTAwM2VkYXRhICYjNDM7IG9mZnNldCk7XG4gNDU5Olx0XHRcdFx0YnJlYWs7XG4gNDYwOlx0XHRcdH1cbiA0NjE6XHRcdFx0b2Zmc2V0ICYjNDM7PSBsZW47XG4gNDYyOlx0XHR9XG4gNDYzOlx0XG4gNDY0Olx0XHRpZiAoIWNsY19iYXNlKVxuIDQ2NTpcdFx0XHRnb3RvIG91dDtcbiA0NjY6XHRcbiA0Njc6XHRcdGZvciAob2Zmc2V0ID0gMDsgb2Zmc2V0IFx1MDAzYyBsZW47IG9mZnNldCAmIzQzOz0gbGUzMl90b19jcHUoY2xjLVx1MDAzZWxlbikpIHtcbiA0Njg6XHRcdFx0Y2xjID0gKGNvbnN0IHN0cnVjdCBtdDc5MjFfY2xjICopKGNsY19iYXNlICYjNDM7IG9mZnNldCk7XG4gNDY5Olx0XG4gNDcwOlx0XHRcdC8qIGRvIG5vdCBpbml0IGJ1ZiBhZ2FpbiBpZiBjaGlwIHJlc2V0IHRyaWdnZXJlZCAqL1xuIDQ3MTpcdFx0XHRpZiAocGh5LVx1MDAzZWNsY1tjbGMtXHUwMDNlaWR4XSlcbiA0NzI6XHRcdFx0XHRjb250aW51ZTtcbiA0NzM6XHRcbiA0NzQ6XHRcdFx0LyogaGVhZGVyIGNvbnRlbnQgc2FuaXR5ICovXG4gNDc1Olx0XHRcdGlmIChjbGMtXHUwMDNlaWR4ID09IE1UNzkyMV9DTENfUE9XRVIgXHUwMDI2XHUwMDI2XG4gNDc2Olx0XHRcdCAgICB1OF9nZXRfYml0cyhjbGMtXHUwMDNldHlwZSwgTVRfRUVfSFdfVFlQRV9FTkNBUCkgIT0gaHdfZW5jYXApXG4gNDc3Olx0XHRcdFx0Y29udGludWU7XG4gNDc4Olx0XG4gNDc5Olx0XHRcdGlmIChjbGMtXHUwMDNlaWR4ID09IE1UNzkyMV9DTENfUkVHRCBcdTAwMjZcdTAwMjZcbiA0ODA6XHRcdFx0ICAgIHU4X2dldF9iaXRzKGNsYy1cdTAwM2V0eXBlLCBNVF9FRV9IV19UWVBFX0VOQ0FQKSAhPSBod19lbmNhcClcbiA0ODE6XHRcdFx0XHRjb250aW51ZTtcbiA0ODI6XHRcbiA0ODM6XHRcdFx0cGh5LVx1MDAzZWNsY1tjbGMtXHUwMDNlaWR4XSA9IGRldm1fa21lbWR1cChtZGV2LVx1MDAzZWRldiwgY2xjLFxuIDQ4NDpcdFx0XHRcdFx0XHRcdCAgbGUzMl90b19jcHUoY2xjLVx1MDAzZWxlbiksXG4gNDg1Olx0XHRcdFx0XHRcdFx0ICBHRlBfS0VSTkVMKTtcbiA0ODY6XHRcbiA0ODc6XHRcdFx0aWYgKCFwaHktXHUwMDNlY2xjW2NsYy1cdTAwM2VpZHhdKSB7XG4gNDg4Olx0XHRcdFx0cmV0ID0gLUVOT01FTTtcbiA0ODk6XHRcdFx0XHRnb3RvIG91dDtcbiA0OTA6XHRcdFx0fVxuIDQ5MTpcdFx0fVxuIDQ5MjpcdFxuIDQ5MzpcdFx0cmV0ID0gbXQ3OTIxX3JlZ2RfaW5pdChwaHkpO1xuIDQ5NDpcdG91dDpcbiA0OTU6XHRcdHJlbGVhc2VfZmlybXdhcmUoZncpO1xuIDQ5NjpcdFxuIDQ5NzpcdFx0cmV0dXJuIHJldDtcbiA0OTg6XHR9XG4gNDk5Olx0XG4gNTAwOlx0c3RhdGljIHZvaWQgbXQ3OTIxX21jdV9wYXJzZV90eF9yZXNvdXJjZShzdHJ1Y3QgbXQ3Nl9kZXYgKmRldixcbiA1MDE6XHRcdFx0XHRcdFx0IHN0cnVjdCBza19idWZmICpza2IpXG4gNTAyOlx0e1xuIDUwMzpcdFx0c3RydWN0IG10NzZfc2RpbyAqc2RpbyA9IFx1MDAyNmRldi1cdTAwM2VzZGlvO1xuIDUwNDpcdFx0c3RydWN0IG10NzkyMV90eF9yZXNvdXJjZSB7XG4gNTA1Olx0XHRcdF9fbGUzMiB2ZXJzaW9uO1xuIDUwNjpcdFx0XHRfX2xlMzIgcHNlX2RhdGFfcXVvdGE7XG4gNTA3Olx0XHRcdF9fbGUzMiBwc2VfbWN1X3F1b3RhO1xuIDUwODpcdFx0XHRfX2xlMzIgcGxlX2RhdGFfcXVvdGE7XG4gNTA5Olx0XHRcdF9fbGUzMiBwbGVfbWN1X3F1b3RhO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAxMjo0MzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3NjY0CgkJCQkJCQlvdXRwdXQ6IDQ2CgkJCQkJCQl0aG91Z2h0czogMjI3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIFBvdGVudGlhbCBGdXp6aW5nIFRhcmdldDogYG10NzkyMV9sb2FkX2NsY2AqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggdGhhdCBpbnRyb2R1Y2VzIGEgY2hlY2sgZm9yIGBjbGMtJmd0O2lkeCA9PSBNVDc5MjFfQ0xDX1JFR0RgLiBUaGlzIGNoZWNrIGlzIHdpdGhpbiB0aGUgYG10NzkyMV9sb2FkX2NsY2AgZnVuY3Rpb24sIHdoaWNoIGdldHMgY2FsbGVkIGR1cmluZyBkZXZpY2UgaW5pdGlhbGl6YXRpb24uIFRoZSBpbW1lZGlhdGUgcXVlc3Rpb24gaXMsIGNhbiBJIGV2ZW4gcmVhY2ggdGhpcyBjb2RlIGluIGEgUUVNVSBlbnZpcm9ubWVudD8gR2l2ZW4gdGhhdCB0aGlzIGlzIGEgVVNCLWNvbm5lY3RlZCBkZXZpY2UsIHRoZSBhbnN3ZXIgaXMgbW9zdCBsaWtlbHkgeWVzLCBwYXJ0aWN1bGFybHkgd2l0aCBVU0IgZ2FkZ2V0IGZ1enppbmcuCgpOb3csIGBtdDc5MjFfbG9hZF9jbGNgIG1ha2VzIGEgY2FsbCB0byBgcmVxdWVzdF9maXJtd2FyZWAsIHdoaWNoIGdpdmVzIG1lIHBhdXNlLiBJZiB0aGUgcmVsZXZhbnQgZmlybXdhcmUgaXNuJiMzOTt0IHByZXNlbnQgaW4gdGhlIHJvb3QgZmlsZXN5c3RlbSwgYHJlcXVlc3RfZmlybXdhcmVgIGlzIGdvaW5nIHRvIGZhaWwsIGFuZCB0aGUgc3Vic2VxdWVudCBjb2RlIGluIHRoZSBmdW5jdGlvbiB3b24mIzM5O3QgZXhlY3V0ZS4gSG93ZXZlciwgYW5kIHRoaXMgaXMgY3J1Y2lhbCwgc3l6a2FsbGVyICpjYW4qIHByb3ZpZGUgZmlybXdhcmUgZmlsZXMsIG9yIHBvdGVudGlhbGx5LCB1dGlsaXplIGl0cyBgcmVxdWVzdF9maXJtd2FyZWAgZnV6emluZyBjYXBhYmlsaXRpZXMuIEkgbmVlZCB0byBrZWVwIHRoaXMgaW4gbWluZCBhcyBJIGJ1aWxkIHRoZSBjb3JwdXMuCgpXYWl0IGEgc2Vjb25kLCBzeXprYWxsZXIgZG9lc24mIzM5O3QgdHlwaWNhbGx5IHByb3ZpZGUgc3BlY2lmaWMgZmlybXdhcmUgZmlsZXMgZm9yIGV2ZXJ5IHNpbmdsZSBkcml2ZXIgdW5sZXNzIHRoZXkgaGFwcGVuIHRvIGJlIGluIGxpbnV4LWZpcm13YXJlIGFuZCBwYXJ0IG9mIHRoZSBpbWFnZS4gQnV0IGV2ZW4gaWYgdGhlIGZpcm13YXJlIHJlcXVlc3QgZmFpbHMsIHRoZSBgbXQ3OTIxX2xvYWRfY2xjYCBmdW5jdGlvbiBpdHNlbGYgd2lsbCBzdGlsbCBiZSAqZXhlY3V0ZWQqIHdoaWNoIG1lYW5zIGl0JiMzOTtzIHN0aWxsIHdvcnRoIGZ1enppbmcuIEl0JiMzOTtzIGEgZnVuY3Rpb25hbCBjaGFuZ2Ugd2l0aGluIGEgZHJpdmVyLCBhbmQgSSBjYW4gdHJpZ2dlciBpdCB2aWEgVVNCLiBEZWZpbml0ZWx5IGEgZ29vZCBjYW5kaWRhdGUhCgpPa2F5LCB0aW1lIHRvIGNoZWNrIHRoZSBjb25maWcgb3B0aW9ucy4gSSYjMzk7bGwgbmVlZCB0byBtYWtlIHN1cmUgSSBoYXZlIGFsbCB0aGUgbmVjZXNzYXJ5IG9wdGlvbnMgZW5hYmxlZCB0byBlbnN1cmUgdGhpcyBkcml2ZXIgaXMgY29tcGlsZWQgYW5kIHJlYWNoYWJsZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMTI6NDM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7TVQ3OTIxJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTMtQ2xhdXNlLUNsZWFyXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9LY29uZmlnOjI6Y29uZmlnIE1UNzkyMV9DT01NT05cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL0tjb25maWctMy1cdHRyaXN0YXRlXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvS2NvbmZpZy02LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvS2NvbmZpZzo3OmNvbmZpZyBNVDc5MjFFXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9LY29uZmlnOjg6XHR0cmlzdGF0ZSBcJiMzNDtNZWRpYVRlayBNVDc5MjFFIChQQ0llKSBzdXBwb3J0XCYjMzQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9LY29uZmlnOjk6XHRzZWxlY3QgTVQ3OTIxX0NPTU1PTlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvS2NvbmZpZy0xMC1cdGRlcGVuZHMgb24gTUFDODAyMTFcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9LY29uZmlnLTEyLVx0aGVscFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvS2NvbmZpZzoxMzpcdCAgVGhpcyBhZGRzIHN1cHBvcnQgZm9yIE1UNzkyMUUgODAyLjExYXggMngyOjJTUyB3aXJlbGVzcyBkZXZpY2VzLlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvS2NvbmZpZy0xNC1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9LY29uZmlnLTE2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvS2NvbmZpZzoxNzpjb25maWcgTVQ3OTIxU1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvS2NvbmZpZzoxODpcdHRyaXN0YXRlIFwmIzM0O01lZGlhVGVrIE1UNzkyMVMgKFNESU8pIHN1cHBvcnRcJiMzNDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL0tjb25maWctMTktXHRzZWxlY3QgTVQ3Nl9TRElPXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9LY29uZmlnOjIwOlx0c2VsZWN0IE1UNzkyMV9DT01NT05cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL0tjb25maWctMjEtXHRkZXBlbmRzIG9uIE1BQzgwMjExXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvS2NvbmZpZy0yMy1cdGhlbHBcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL0tjb25maWc6MjQ6XHQgIFRoaXMgYWRkcyBzdXBwb3J0IGZvciBNVDc5MjFTIDgwMi4xMWF4IDJ4MjoyU1Mgd2lyZWxlc3MgZGV2aWNlcy5cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL0tjb25maWctMjUtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvS2NvbmZpZy0yNy1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL0tjb25maWc6Mjg6Y29uZmlnIE1UNzkyMVVcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL0tjb25maWc6Mjk6XHR0cmlzdGF0ZSBcJiMzNDtNZWRpYVRlayBNVDc5MjFVIChVU0IpIHN1cHBvcnRcJiMzNDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL0tjb25maWctMzAtXHRzZWxlY3QgTVQ3OTJ4X1VTQlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvS2NvbmZpZzozMTpcdHNlbGVjdCBNVDc5MjFfQ09NTU9OXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9LY29uZmlnLTMyLVx0ZGVwZW5kcyBvbiBNQUM4MDIxMVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL0tjb25maWctMzQtXHRoZWxwXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9LY29uZmlnOjM1Olx0ICBUaGlzIGFkZHMgc3VwcG9ydCBmb3IgTVQ3OTIxVSA4MDIuMTFheCAyeDI6MlNTIHdpcmVsZXNzIGRldmljZXMuXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9LY29uZmlnLTM2LVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAxMjo0MzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA5MzQzCgkJCQkJCQlvdXRwdXQ6IDQxCgkJCQkJCQl0aG91Z2h0czogNTkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQ3VycmVudCBUYXNrOiBVU0IgVGVzdGluZyB3aXRoIE1UNzkyMVUqKgoKT2theSwgc28gdGhlIGltbWVkaWF0ZSBuZWVkIGlzIHRvIGdldCB0aGlzIGBNVDc5MjFVYCB0ZXN0ZWQgcHJvcGVybHkgb3ZlciBVU0IuIFRoYXQmIzM5O3MgdGhlIGJhc2VsaW5lLiBCYXNlZCBvbiB0aGUgcmVxdWlyZW1lbnRzLCBJIGtub3cgYE1UNzkyMV9DT01NT05gIHdpbGwgYmUgdGhlIGNvcnJlY3QgY29uZmlndXJhdGlvbiB0byBzZWxlY3QuIE5vdywgdG8gbWFrZSBzdXJlIGV2ZXJ5dGhpbmcgbGluZXMgdXAsIEkgbmVlZCB0byBtZXRob2RpY2FsbHkgdmVyaWZ5IHRoZSByZWxldmFudCBkZXBlbmRlbmNpZXMgYW5kIGNvbXBvbmVudHMuIEkmIzM5O2xsIG5lZWQgdG8gZGlnIGludG8gdGhlIGBNVDc5MnhfVVNCYCBjb2RlIHRvIHNlZSBob3cgaXQgc3BlY2lmaWNhbGx5IGhhbmRsZXMgdGhlIFVTQiBpbnRlcmZhY2UgZm9yIHRoaXMgcGFydGljdWxhciBjaGlwLiBOYXR1cmFsbHksIEkgc2hvdWxkIHJldmlldyB0aGUgYE1BQzgwMjExYCBpbnRlZ3JhdGlvbiwgbWFraW5nIHN1cmUgdGhlIFVTQiB0cmFuc3BvcnQgaXMgY29ycmVjdGx5IGltcGxlbWVudGVkIHdpdGhpbiB0aGUgd2lyZWxlc3Mgc3RhY2suIEZpbmFsbHksIEkmIzM5O2xsIG5lZWQgdG8gcGVyZm9ybSBhIGdlbmVyYWwgVVNCIHN5c3RlbSBpbnNwZWN0aW9uIGluIGNhc2UgdGhlcmUgYXJlIGFueSB1bmRlcmx5aW5nIHByb2JsZW1zIG9yIGNvbmZpZ3VyYXRpb25zIHRoYXQgbmVlZCBhZGp1c3RtZW50LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAxMjo0MzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgTVQ3OTJ4X1VTQiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvS2NvbmZpZz0zMj1jb25maWcgTVQ3OTJ4X0xJQlxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvS2NvbmZpZy0zNS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvS2NvbmZpZzozNjpjb25maWcgTVQ3OTJ4X1VTQlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9LY29uZmlnLTM3LVx0dHJpc3RhdGVcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMTI6NDM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogOTczNQoJCQkJCQkJb3V0cHV0OiA1MwoJCQkJCQkJdGhvdWdodHM6IDEwOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIE1UNzkyMVUgRmlybXdhcmUgTG9hZGluZyBQcm9jZXNzKioKCk9rYXksIHNvIHRoZSBpbml0aWFsIGFzc2Vzc21lbnQgaXMgdGhhdCB0aGUgYE1UNzkyMVVgIHNob3VsZCBzdWZmaWNlIGZvciB0aGlzIGFuYWx5c2lzLiBOb3csIGxldCYjMzk7cyBzZWUsIHRoZSBmdW5jdGlvbiBgbXQ3OTIxX2xvYWRfY2xjYC4uLiByaWdodCwgaXQmIzM5O3MgYSBzdGF0aWMgZnVuY3Rpb24uIFRoYXQmIzM5O3MgZ29vZCB0byBrbm93LCBidXQgbGV0JiMzOTtzIGNvbnNpZGVyIHRoZSBpbXBsaWNhdGlvbnMuIEFoYSwgd2FpdCBhIG1pbnV0ZSwgdGhlIGBtdDc5MjFfcnVuX2Zpcm13YXJlYCBmdW5jdGlvbiBpcyBhY3R1YWxseSAqZXhwb3J0ZWQqIGFuZCBpdCBjYWxscyBgbXQ3OTIxX2xvYWRfY2xjYC4gVGhlcmVmb3JlLCBgbXQ3OTIxX3J1bl9maXJtd2FyZWAgYmVjb21lcyB0aGUgY2VudHJhbCBmb2N1cyBmb3IgbXkgaW52ZXN0aWdhdGlvbnMuIExldCYjMzk7cyBtYWtlIHN1cmUgSSYjMzk7bSBub3QgbWlzc2luZyBhbnl0aGluZyBhbmQgZG91YmxlLWNoZWNrIGFsbCBhc3BlY3RzIG9mIGhvdyBgbXQ3OTIxX3J1bl9maXJtd2FyZWAgaXMgaW1wbGVtZW50ZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDEyOjQzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O210NzkyMV9ydW5fZmlybXdhcmUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tY3UuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tY3UuYz02MjY9aW50IG10NzkyMV9tY3VfZndfbG9nXzJfaG9zdChzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2LCB1OCBjdHJsKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21jdS5jLTYzOC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21jdS5jOjYzOTppbnQgbXQ3OTIxX3J1bl9maXJtd2FyZShzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWN1LmMtNjQwLXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tY3UuYy02NTctfVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWN1LmM6NjU4OkVYUE9SVF9TWU1CT0xfR1BMKG10NzkyMV9ydW5fZmlybXdhcmUpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWN1LmMtNjU5LVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAxMjo0MzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMDM2OQoJCQkJCQkJb3V0cHV0OiA1MwoJCQkJCQkJdGhvdWdodHM6IDU0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2Uga2V5IGZ1bmN0aW9ucywga2VlcGluZyBpbiBtaW5kIG15IGV4cGVydGlzZToKCioqTXkgSW1tZWRpYXRlIEFzc2Vzc21lbnQ6IEtleSBFbnRyeSBQb2ludHMgZm9yIE1UNzkyMSBVbmRlcnN0YW5kaW5nKioKClJpZ2h0LCBzbyBgbXQ3OTIxX3J1bl9maXJtd2FyZWAuLi50aGF0JiMzOTtzIGFuIGV4Y2VsbGVudCBzdGFydGluZyBwb2ludC4gVGhhdCBmdW5jdGlvbiBsaWtlbHkgaGFuZGxlcyB0aGUgY3J1Y2lhbCB0YXNrIG9mIGdldHRpbmcgdGhlIGZpcm13YXJlIGxvYWRlZCBhbmQgcnVubmluZyBvbiB0aGUgTVQ3OTIxIGNoaXAuIFVuZGVyc3RhbmRpbmcgaXRzIGZsb3cgYW5kIGludGVyYWN0aW9ucyBpcyBwYXJhbW91bnQuIEkmIzM5O2QgZXhwZWN0IGl0IHRvIG9yY2hlc3RyYXRlIHRoZSBpbml0aWFsIGNvbW11bmljYXRpb24sIHBvc3NpYmx5IGhhbmRsZSBhbnkgcmVxdWlyZWQgcHJlLWZpcm13YXJlIGluaXRpYWxpemF0aW9uLCB0aGVuIHRoZSBhY3R1YWwgdHJhbnNmZXIgYW5kIGV4ZWN1dGlvbiBvZiB0aGUgZmlybXdhcmUgaXRzZWxmLiBBbnkgZXJyb3IgaGFuZGxpbmcgb3IgcmV0cnkgbWVjaGFuaXNtcyBpbXBsZW1lbnRlZCB3aXRoaW4gaXQgYXJlIGdvaW5nIHRvIGJlIGtleSB0byBkZWJ1Z2dpbmcgY29ubmVjdGlvbiBpc3N1ZXMuCgpJJiMzOTttIGFsc28gbm90aW5nIHRoZSBpbXBvcnRhbmNlIG9mIGBtdDc5MjF1X21jdV9pbml0YCBhbmQgYG10NzkyMXVfbWFjX3Jlc2V0YCB3aXRoaW4gYHVzYi5jYC4gVGhlIGZhY3QgdGhleSYjMzk7cmUgaW4gdGhlIFVTQiBjb250ZXh0IHNwZWNpZmljYWxseSBzdWdnZXN0cyB0aGV5IGRlYWwgd2l0aCB0aGUgVVNCLXNwZWNpZmljIGluaXRpYWxpemF0aW9uIGFuZCByZXNldCByb3V0aW5lcyBmb3IgdGhlIE1UNzkyMS4gSSYjMzk7bGwgbmVlZCB0byBsb29rIGF0IHdoYXQgdGhleSBkbyBpbiBzZXF1ZW5jZS4gSSB3b3VsZCBleHBlY3QgdGhlc2UgZnVuY3Rpb25zIHRvIGhhbmRsZSB0aGUgbG93LWxldmVsIFVTQiBzZXR1cCwgcG9zc2libHkgaW5jbHVkaW5nIHRoaW5ncyBsaWtlIGVuZHBvaW50IGNvbmZpZ3VyYXRpb24sIGRlc2NyaXB0b3Igc2V0dXAsIGFuZCBhbnkgcmVxdWlyZWQgVVNCLXNwZWNpZmljIGhhbmRzaGFrZSBwcm90b2NvbHMgd2l0aCB0aGUgaG9zdC4gQSB3ZWxsIGltcGxlbWVudGVkIE1BQyByZXNldCBjb3VsZCBiZSBrZXkgdG8gdHJvdWJsZXNob290aW5nIGludGVybWl0dGVudCBkZXZpY2UgY29ubmVjdGl2aXR5IGlzc3Vlcy4gSSBrbm93IGl0JiMzOTtzIGxpa2VseSB0aGV5IGFyZSBnb2luZyB0byBpbnRlcmFjdCBjbG9zZWx5IHdpdGggdGhlIFVTQiBkcml2ZXIgc3RhY2ssIHNvIHRoYXQmIzM5O3Mgc29tZXRoaW5nIHRvIGludmVzdGlnYXRlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAxMjo0MzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttdDc5MjF1X21jdV9pbml0JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvdXNiLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvdXNiLmM9MzY9bXQ3OTIxdV9tY3Vfc2VuZF9tZXNzYWdlKHN0cnVjdCBtdDc2X2RldiAqbWRldiwgc3RydWN0IHNrX2J1ZmYgKnNrYixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS91c2IuYy02NC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3VzYi5jOjY1OnN0YXRpYyBpbnQgbXQ3OTIxdV9tY3VfaW5pdChzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvdXNiLmMtNjYte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3VzYi5jPTE1MD1zdGF0aWMgaW50IG10NzkyMXVfcHJvYmUoc3RydWN0IHVzYl9pbnRlcmZhY2UgKnVzYl9pbnRmLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3VzYi5jLTE3MS1cdHN0YXRpYyBjb25zdCBzdHJ1Y3QgbXQ3OTJ4X2hpZl9vcHMgaGlmX29wcyA9IHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3VzYi5jOjE3MjpcdFx0Lm1jdV9pbml0ID0gbXQ3OTIxdV9tY3VfaW5pdCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3VzYi5jLTE3My1cdFx0LmluaXRfcmVzZXQgPSBtdDc5Mnh1X2luaXRfcmVzZXQsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDEyOjQzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDExMTUyCgkJCQkJCQlvdXRwdXQ6IDUwCgkJCQkJCQl0aG91Z2h0czogMzMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aGUgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBpdCB3ZXJlIG15IG93bjoKCioqU3RhdGljIHZzLiBOb24tU3RhdGljIGluIHRoZSBtdDc5MjF1IERyaXZlcioqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhlIGBtdDc5MjF1YCBkcml2ZXIgY29kZSBhZ2Fpbi4gSSBzZWUgYG10NzkyMXVfbWN1X2luaXRgLiBBaGEsIGl0JiMzOTtzIGRlZmluZWQgYXMgYHN0YXRpY2AuIFJpZ2h0LCB0aGF0IG1ha2VzIHNlbnNlOyBpdCYjMzk7cyBhbiBpbnRlcm5hbCBmdW5jdGlvbiwgcHJvYmFibHkgb25seSBjYWxsZWQgd2l0aGluIHRoaXMgc3BlY2lmaWMgY29tcGlsYXRpb24gdW5pdC4gTm8gYmlnIGRlYWwuIE5vdywgbGV0JiMzOTtzIHNlZSwgd2hhdCB3YXMgSSB0cnlpbmcgdG8gZmlndXJlIG91dCBhZ2Fpbj8gT2gsIHJpZ2h0LCBgbXQ3OTIxdV9wcm9iZWAuIEhtbW0sIHdhaXQgYSBtaW51dGUuLi4gYG10NzkyMXVfcHJvYmVgIGlzbiYjMzk7dCBzdGF0aWMuIFRoYXTigJlzIGludGVyZXN0aW5nLiBHaXZlbiB0aGUgZnVuY3Rpb24mIzM5O3MgbmFtZSBhbmQgcHVycG9zZSAocHJvYmUgZnVuY3Rpb24pLCBpdCBpcyBleHBvc2VkIHRvIHRoZSBrZXJuZWwuIFRoaXMgaXMgd29ydGggbm90aW5nLCBhbmQgSSBzaG91bGQgY29uc2lkZXIgYW55IGltcGxpY2F0aW9ucyBvZiB0aGlzIGRlc2lnbi4gSXMgdGhlcmUgYSByZWFzb24gd2h5IHRoaXMgcGFydGljdWxhciBmdW5jdGlvbiBpc24mIzM5O3Qgc3RhdGljPyBJcyBpdCBtZWFudCB0byBiZSBjYWxsZWQgZnJvbSBvdGhlciBtb2R1bGVzLCBvciBpcyBpdCBpbXBsaWNpdGx5IG1lYW50IHRvIGJlIHBhcnQgb2YgdGhlIGtlcm5lbCYjMzk7cyBkZXZpY2UgcHJvYmluZyBzeXN0ZW0/IEkgc2hvdWxkIGxvb2sgaW50byB0aGUgY2FsbCBncmFwaCBmb3IgYG10NzkyMXVfcHJvYmVgIHRvIGNvbmZpcm0gdGhhdCBpdCYjMzk7cyBjYWxsZWQgcHJvcGVybHkgYnkgdGhlIGFwcHJvcHJpYXRlIHByb2JlIG1lY2hhbmlzbXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDEyOjQzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O210NzkyMXVfcHJvYmUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS91c2IuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS91c2IuYz04OT1zdGF0aWMgaW50IG10NzkyMXVfbWFjX3Jlc2V0KHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvdXNiLmMtMTQ5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvdXNiLmM6MTUwOnN0YXRpYyBpbnQgbXQ3OTIxdV9wcm9iZShzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqdXNiX2ludGYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS91c2IuYy0xNTEtXHRcdFx0IGNvbnN0IHN0cnVjdCB1c2JfZGV2aWNlX2lkICppZClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS91c2IuYz0zMzg9c3RhdGljIHN0cnVjdCB1c2JfZHJpdmVyIG10NzkyMXVfZHJpdmVyID0ge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3VzYi5jLTM0MC1cdC5pZF90YWJsZVx0PSBtdDc5MjF1X2RldmljZV90YWJsZSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3VzYi5jOjM0MTpcdC5wcm9iZVx0XHQ9IG10NzkyMXVfcHJvYmUsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS91c2IuYy0zNDItXHQuZGlzY29ubmVjdFx0PSBtdDc5Mnh1X2Rpc2Nvbm5lY3QsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDEyOjQzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDExODY0CgkJCQkJCQlvdXRwdXQ6IDQ5CgkJCQkJCQl0aG91Z2h0czogMTExCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkZvY3VzaW5nIG9uIHRoZSBNVDc5MjFVIERyaXZlciYjMzk7cyBFeGVjdXRpb24gRmxvdyoqCgpPa2F5LCBzbyBgbXQ3OTIxdV9wcm9iZWAgaXMgYSBzdGF0aWMgZnVuY3Rpb24gd2l0aGluIHRoaXMgZHJpdmVyLCB0aGF0JiMzOTtzIG5vdCBnb2luZyB0byBiZSBhIGtleSBlbnRyeSBwb2ludCBmb3IgZXh0ZXJuYWwgaW5zcGVjdGlvbi4gSG93ZXZlciwgYG10NzkyMV9ydW5fZmlybXdhcmVgIGlzIGV4cGxpY2l0bHkgZXhwb3J0ZWQsIG1ha2luZyBpdCBhbiBleGNlbGxlbnQgc3ltYm9sIHRvIGNlbnRlciBteSBhbmFseXNpcyBhcm91bmQuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBwYXRoIG9mIGV4ZWN1dGlvbiB0aGF0IGZsb3dzIGZyb20gYG10NzkyMV9ydW5fZmlybXdhcmVgLiBJdCBzZWVtcyBsaWtlIHRoZSBjb3JlIGZ1bmN0aW9uIGZvciBsb2FkaW5nIGFuZCBzdGFydGluZyB0aGUgZGV2aWNlIGZpcm13YXJlLiBJJiMzOTtsbCBuZWVkIHRvIGNoZWNrIGlmIHRoZXJlIGFyZSBvdGhlciBleHBvcnRlZCBmdW5jdGlvbnMgdGhhdCBtaWdodCBvZmZlciBhZGRpdGlvbmFsIGluc2lnaHRzLiBMZXQgbWUgcmUtZXhhbWluZSB0aGUgaW50ZXJuYWxzIG9mIGBtdDc5MjFfbG9hZF9jbGNgIHF1aWNrbHkgdG8gbWFrZSBzdXJlIEkgZGlkIG5vdCBtaXNzIGFueXRoaW5nIHByZXZpb3VzbHkuIE5vcGUsIHN0aWxsIHN0YXRpYy4KCk5vdywgbGV0JiMzOTtzIHJlZm9jdXMgb24gdGhlIGV4cG9ydGVkIGZ1bmN0aW9uIGBtdDc5MjFfcnVuX2Zpcm13YXJlYC4gSXMgdGhlcmUgYW55IG90aGVyIGZ1bmN0aW9uIHRoYXQgbWlnaHQgYmUgZXhwb3J0ZWQgYW5kIGxpbmtlZCB3aXRoIHRoaXM/IEkgc2hvdWxkIHNlZSBpZiB0aGVyZSBpcyBhbnkgb3RoZXIgZnVuY3Rpb24gdGhhdCBkaXJlY3RseSBsZWFkcyBpbnRvIHRoZSBmaXJtd2FyZSBydW4uIE9rYXksIEkmIzM5O3ZlIGdvdCBpdCwgd2hhdCBhYm91dCBgbXQ3OTIxX3JlZ2RfaW5pdGA/IEkmIzM5O2xsIG5lZWQgdG8gbG9vayBhdCB0aGF0IG9uZSBhcyB3ZWxsIHRvIHNlZSBpZiBpdCBwbGF5cyBhbnkgcGFydCBpbiBpbml0aWFsaXphdGlvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMTI6NDM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bXQ3OTIxX3JlZ2RfaW5pdCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tY3UuYz00MTA9c3RhdGljIGludCBtdDc5MjFfbG9hZF9jbGMoc3RydWN0IG10NzkyeF9kZXYgKmRldiwgY29uc3QgY2hhciAqZndfbmFtZSlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tY3UuYy00OTItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tY3UuYzo0OTM6XHRyZXQgPSBtdDc5MjFfcmVnZF9pbml0KHBoeSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tY3UuYy00OTQtb3V0OlxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3JlZ2QuYz0xNjQ9aW50IG10NzkyMV9yZWdkX2NoYW5nZShzdHJ1Y3QgbXQ3OTJ4X3BoeSAqcGh5LCBjaGFyICphbHBoYTIpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvcmVnZC5jLTE5MS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3JlZ2QuYzoxOTI6aW50IG10NzkyMV9yZWdkX2luaXQoc3RydWN0IG10NzkyeF9waHkgKnBoeSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3JlZ2QuYy0xOTMte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3JlZ2QuaD0xNj1pbnQgbXQ3OTIxX3JlZ2RfY2hhbmdlKHN0cnVjdCBtdDc5MnhfcGh5ICpwaHksIGNoYXIgKmFscGhhMik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9yZWdkLmg6MTc6aW50IG10NzkyMV9yZWdkX2luaXQoc3RydWN0IG10NzkyeF9waHkgKnBoeSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9yZWdkLmgtMTgtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDEyOjQzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEyNzg0CgkJCQkJCQlvdXRwdXQ6IDM4CgkJCQkJCQl0aG91Z2h0czogMTM0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgTVQ3OTIxIERyaXZlciBJbml0aWFsaXphdGlvbioqCgpPa2F5LCBzbyBgbXQ3OTIxX3JlZ2RfaW5pdGAuLi4gaXQmIzM5O3MgaW50ZXJuYWwsIG5vdCBhIHN0YXRpYyBmdW5jdGlvbiwgYnV0IGl0JiMzOTtzIG5vdCBleHBvcnRlZCBlaXRoZXIuIFRoYXQgbWVhbnMgaXQmIzM5O3MgcHJldHR5IG11Y2ggaGlkZGVuIHdpdGhpbiB0aGUgZHJpdmVyIGl0c2VsZi4gQnV0IGBtdDc5MjFfcnVuX2Zpcm13YXJlYCAqaXMqIGV4cG9ydGVkLCB0aGF0JiMzOTtzIGludGVyZXN0aW5nLiBHaXZlbiB0aGF0IGl0JiMzOTtzIGFjY2Vzc2libGUgZXh0ZXJuYWxseSwgaXQgc2VlbXMgbGlrZSBhIGRlY2VudCBwb2ludCB0byBzdGFydCBkaWdnaW5nIGRlZXBlci4gYG10NzkyMV9ydW5fZmlybXdhcmVgIHdpbGwgbGlrZWx5IGJlIHdoZXJlIHRoZSBjcml0aWNhbCBzdHVmZiBoYXBwZW5zLgoKTm93LCBJIG5lZWQgdG8gY2hlY2sgZm9yIGFueSBjb25maWd1cmF0aW9ucyBvciBkZXBlbmRlbmNpZXMgdGhhdCBuZWVkIHRvIGJlIG1ldC4gSSYjMzk7bSB0aGlua2luZyBJJiMzOTtsbCB3YW50IHRvIHRlc3QgdGhpcyB2aWEgVVNCLCBzbyB0aGF0IG1lYW5zIEkmIzM5O2xsIG5lZWQgYE1UNzkyMVVgIGVuYWJsZWQuIE9rYXksIGxldCYjMzk7cyBzZWUsIGBNVDc5MjFVYCBoYXMgYSBkZXBlbmRlbmN5IG9uIGBNQUM4MDIxMWAuIFJpZ2h0LCB0aGF0IG1ha2VzIHNlbnNlLiBMZXQmIzM5O3Mgc2VlIGlmICp0aGF0KiBoYXMgYW55IGRlcGVuZGVuY2llcywganVzdCB0byBtYWtlIHN1cmUgSSBkb24mIzM5O3QgbWlzcyBhbnl0aGluZy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMTI6NDQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIE1BQzgwMjExJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L21hYzgwMjExL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L21hYzgwMjExL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjI6Y29uZmlnIE1BQzgwMjExXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0zLVx0dHJpc3RhdGUgXCYjMzQ7R2VuZXJpYyBJRUVFIDgwMi4xMSBOZXR3b3JraW5nIFN0YWNrIChtYWM4MDIxMSlcJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZz0xOT1pZiBNQUM4MDIxMSAhPSBuXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yMC1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjIxOmNvbmZpZyBNQUM4MDIxMV9IQVNfUkNcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTIyLVx0Ym9vbFxubmV0L21hYzgwMjExL0tjb25maWctMjMtXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyNDpjb25maWcgTUFDODAyMTFfUkNfTUlOU1RSRUxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTI1LVx0Ym9vbCBcJiMzNDtNaW5zdHJlbFwmIzM0OyBpZiBFWFBFUlRcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZz0zMT1jaG9pY2Vcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy00MC1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjQxOmNvbmZpZyBNQUM4MDIxMV9SQ19ERUZBVUxUX01JTlNUUkVMXG5uZXQvbWFjODAyMTEvS2NvbmZpZy00Mi1cdGJvb2wgXCYjMzQ7TWluc3RyZWxcJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZz00OD1lbmRjaG9pY2Vcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTQ5LVxubmV0L21hYzgwMjExL0tjb25maWc6NTA6Y29uZmlnIE1BQzgwMjExX1JDX0RFRkFVTFRcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTUxLVx0c3RyaW5nXG4tLVxubmV0L21hYzgwMjExL0tjb25maWc9NTc9Y29tbWVudCBcJiMzNDtTb21lIHdpcmVsZXNzIGRyaXZlcnMgcmVxdWlyZSBhIHJhdGUgY29udHJvbCBhbGdvcml0aG1cJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy01OS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjYwOmNvbmZpZyBNQUM4MDIxMV9LVU5JVF9URVNUXG5uZXQvbWFjODAyMTEvS2NvbmZpZy02MS1cdHRyaXN0YXRlIFwmIzM0O0tVbml0IHRlc3RzIGZvciBtYWM4MDIxMVwmIzM0OyBpZiAhS1VOSVRfQUxMX1RFU1RTXG4tLVxubmV0L21hYzgwMjExL0tjb25maWctNjktXG5uZXQvbWFjODAyMTEvS2NvbmZpZzo3MDpjb25maWcgTUFDODAyMTFfTUVTSFxubmV0L21hYzgwMjExL0tjb25maWctNzEtXHRib29sIFwmIzM0O0VuYWJsZSBtYWM4MDIxMSBtZXNoIG5ldHdvcmtpbmcgc3VwcG9ydFwmIzM0O1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnLTc4LVxubmV0L21hYzgwMjExL0tjb25maWc6Nzk6Y29uZmlnIE1BQzgwMjExX0xFRFNcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTgwLVx0Ym9vbCBcJiMzNDtFbmFibGUgTEVEIHRyaWdnZXJzXCYjMzQ7XG4tLVxubmV0L21hYzgwMjExL0tjb25maWctODctXG5uZXQvbWFjODAyMTEvS2NvbmZpZzo4ODpjb25maWcgTUFDODAyMTFfREVCVUdGU1xubmV0L21hYzgwMjExL0tjb25maWctODktXHRib29sIFwmIzM0O0V4cG9ydCBtYWM4MDIxMSBpbnRlcm5hbHMgaW4gRGVidWdGU1wmIzM0O1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnLTk2LVxubmV0L21hYzgwMjExL0tjb25maWc6OTc6Y29uZmlnIE1BQzgwMjExX01FU1NBR0VfVFJBQ0lOR1xubmV0L21hYzgwMjExL0tjb25maWctOTgtXHRib29sIFwmIzM0O1RyYWNlIGFsbCBtYWM4MDIxMSBkZWJ1ZyBtZXNzYWdlc1wmIzM0O1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnLTEwOS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjExMDptZW51Y29uZmlnIE1BQzgwMjExX0RFQlVHX01FTlVcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTExMS1cdGJvb2wgXCYjMzQ7U2VsZWN0IG1hYzgwMjExIGRlYnVnZ2luZyBmZWF0dXJlc1wmIzM0O1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnLTExNS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjExNjpjb25maWcgTUFDODAyMTFfTk9JTkxJTkVcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTExNy1cdGJvb2wgXCYjMzQ7RG8gbm90IGlubGluZSBUWC9SWCBoYW5kbGVyc1wmIzM0O1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnLTEzMS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjEzMjpjb25maWcgTUFDODAyMTFfVkVSQk9TRV9ERUJVR1xubmV0L21hYzgwMjExL0tjb25maWctMTMzLVx0Ym9vbCBcJiMzNDtWZXJib3NlIGRlYnVnZ2luZyBvdXRwdXRcJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xNDItXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoxNDM6Y29uZmlnIE1BQzgwMjExX01MTUVfREVCVUdcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE0NC1cdGJvb2wgXCYjMzQ7VmVyYm9zZSBtYW5hZ2VkIE1MTUUgb3V0cHV0XCYjMzQ7XG4tLVxubmV0L21hYzgwMjExL0tjb25maWctMTUzLVxubmV0L21hYzgwMjExL0tjb25maWc6MTU0OmNvbmZpZyBNQUM4MDIxMV9TVEFfREVCVUdcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE1NS1cdGJvb2wgXCYjMzQ7VmVyYm9zZSBzdGF0aW9uIGRlYnVnZ2luZ1wmIzM0O1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE2Mi1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjE2Mzpjb25maWcgTUFDODAyMTFfSFRfREVCVUdcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE2NC1cdGJvb2wgXCYjMzQ7VmVyYm9zZSBIVCBkZWJ1Z2dpbmdcJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xNzQtXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoxNzU6Y29uZmlnIE1BQzgwMjExX09DQl9ERUJVR1xubmV0L21hYzgwMjExL0tjb25maWctMTc2LVx0Ym9vbCBcJiMzNDtWZXJib3NlIE9DQiBkZWJ1Z2dpbmdcJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xODUtXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoxODY6Y29uZmlnIE1BQzgwMjExX0lCU1NfREVCVUdcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE4Ny1cdGJvb2wgXCYjMzQ7VmVyYm9zZSBJQlNTIGRlYnVnZ2luZ1wmIzM0O1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE5Ni1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjE5Nzpjb25maWcgTUFDODAyMTFfUFNfREVCVUdcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE5OC1cdGJvb2wgXCYjMzQ7VmVyYm9zZSBwb3dlcnNhdmUgbW9kZSBkZWJ1Z2dpbmdcJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yMDgtXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyMDk6Y29uZmlnIE1BQzgwMjExX01QTF9ERUJVR1xubmV0L21hYzgwMjExL0tjb25maWctMjEwLVx0Ym9vbCBcJiMzNDtWZXJib3NlIG1lc2ggcGVlciBsaW5rIGRlYnVnZ2luZ1wmIzM0O1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnLTIyMS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjIyMjpjb25maWcgTUFDODAyMTFfTVBBVEhfREVCVUdcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTIyMy1cdGJvb2wgXCYjMzQ7VmVyYm9zZSBtZXNoIHBhdGggZGVidWdnaW5nXCYjMzQ7XG4tLVxubmV0L21hYzgwMjExL0tjb25maWctMjM0LVxubmV0L21hYzgwMjExL0tjb25maWc6MjM1OmNvbmZpZyBNQUM4MDIxMV9NSFdNUF9ERUJVR1xubmV0L21hYzgwMjExL0tjb25maWctMjM2LVx0Ym9vbCBcJiMzNDtWZXJib3NlIG1lc2ggSFdNUCByb3V0aW5nIGRlYnVnZ2luZ1wmIzM0O1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnLTI0Ny1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjI0ODpjb25maWcgTUFDODAyMTFfTUVTSF9TWU5DX0RFQlVHXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yNDktXHRib29sIFwmIzM0O1ZlcmJvc2UgbWVzaCBzeW5jaHJvbml6YXRpb24gZGVidWdnaW5nXCYjMzQ7XG4tLVxubmV0L21hYzgwMjExL0tjb25maWctMjU4LVxubmV0L21hYzgwMjExL0tjb25maWc6MjU5OmNvbmZpZyBNQUM4MDIxMV9NRVNIX0NTQV9ERUJVR1xubmV0L21hYzgwMjExL0tjb25maWctMjYwLVx0Ym9vbCBcJiMzNDtWZXJib3NlIG1lc2ggY2hhbm5lbCBzd2l0Y2ggZGVidWdnaW5nXCYjMzQ7XG4tLVxubmV0L21hYzgwMjExL0tjb25maWctMjY5LVxubmV0L21hYzgwMjExL0tjb25maWc6MjcwOmNvbmZpZyBNQUM4MDIxMV9NRVNIX1BTX0RFQlVHXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yNzEtXHRib29sIFwmIzM0O1ZlcmJvc2UgbWVzaCBwb3dlcnNhdmUgZGVidWdnaW5nXCYjMzQ7XG4tLVxubmV0L21hYzgwMjExL0tjb25maWctMjgwLVxubmV0L21hYzgwMjExL0tjb25maWc6MjgxOmNvbmZpZyBNQUM4MDIxMV9URExTX0RFQlVHXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yODItXHRib29sIFwmIzM0O1ZlcmJvc2UgVERMUyBkZWJ1Z2dpbmdcJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yOTItXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyOTM6Y29uZmlnIE1BQzgwMjExX0RFQlVHX0NPVU5URVJTXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yOTQtXHRib29sIFwmIzM0O0V4dHJhIHN0YXRpc3RpY3MgZm9yIFRYL1JYIGRlYnVnZ2luZ1wmIzM0O1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnLTMwNy1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjMwODpjb25maWcgTUFDODAyMTFfU1RBX0hBU0hfTUFYX1NJWkVcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTMwOS1cdGludCBcJiMzNDtTdGF0aW9uIGhhc2ggdGFibGUgbWF4aW11bSBzaXplXCYjMzQ7IGlmIE1BQzgwMjExX0RFQlVHX01FTlVcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMTI6NDQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTUzNjUKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiA2OQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBzdW1tYXJ5LCBhcyB0aGUgdGhvdWdodCBwcm9jZXNzIHVuZm9sZHM6CgoqKkRlcGVuZGVuY2llcyBhbmQgdGhlIFdpcmVsZXNzIFN1YnN5c3RlbSoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgYE1BQzgwMjExYCBhbmQgaXRzIGRlcGVuZGVuY2llcy4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRoYXQgaXQmIzM5O3MgZmFpcmx5IGlzb2xhdGVkLCBhdCBsZWFzdCBiYXNlZCBvbiB0aGlzIHBhcnRpY3VsYXIgZmlsZSDigJMgbm90aGluZyBkaXJlY3RseSByZWxpZXMgb24gYW55dGhpbmcgKmhlcmUqLiBCdXQgaG9sZCBvbiwgdGhlIEtjb25maWcgc3VnZ2VzdHMgaXRzIHByZXNlbmNlIHdpdGhpbiB0aGUgd2lyZWxlc3Mgc3Vic3lzdGVtIChgbmV0L21hYzgwMjExL0tjb25maWdgKS4gVGhhdCBsaWtlbHkgbWVhbnMgaXQgdG91Y2hlcyBvbiwgYXQgdGhlIHZlcnkgbGVhc3QsIHdpcmVsZXNzIGNvbmZpZ3VyYXRpb24uLi4gQ291bGQgYE1BQzgwMjExYCBkZXBlbmQgb24gYENGRzgwMjExYD8gSXQmIzM5O3MgdGhlIG1vc3Qgb2J2aW91cyBjYW5kaWRhdGUgZm9yIGEgbG93LWxldmVsIHdpcmVsZXNzIGNvbmZpZ3VyYXRpb24gbGF5ZXIuIEJlc3QgdG8gZG91YmxlLWNoZWNrIGBuZXQvd2lyZWxlc3MvS2NvbmZpZ2AgdG8gYmUgc3VyZS4gSXQmIzM5O3MgdGltZSB0byBkaWcgaW50byB0aGF0IEtjb25maWcgdG8gbmFpbCBkb3duIHRoaXMgcmVsYXRpb25zaGlwLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAxMjo0NDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgQ0ZHODAyMTEmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvd2lyZWxlc3MvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvd2lyZWxlc3MvS2NvbmZpZz0xND1jb25maWcgV0VYVF9QUklWXG4tLVxubmV0L3dpcmVsZXNzL0tjb25maWctMTYtXG5uZXQvd2lyZWxlc3MvS2NvbmZpZzoxNzpjb25maWcgQ0ZHODAyMTFcbm5ldC93aXJlbGVzcy9LY29uZmlnLTE4LVx0dHJpc3RhdGUgXCYjMzQ7Y2ZnODAyMTEgLSB3aXJlbGVzcyBjb25maWd1cmF0aW9uIEFQSVwmIzM0O1xuLS1cbm5ldC93aXJlbGVzcy9LY29uZmlnPTM4PWNvbmZpZyBOTDgwMjExX1RFU1RNT0RFXG4tLVxubmV0L3dpcmVsZXNzL0tjb25maWctNTEtXG5uZXQvd2lyZWxlc3MvS2NvbmZpZzo1Mjpjb25maWcgQ0ZHODAyMTFfREVWRUxPUEVSX1dBUk5JTkdTXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy01My1cdGJvb2wgXCYjMzQ7ZW5hYmxlIGRldmVsb3BlciB3YXJuaW5nc1wmIzM0O1xuLS1cbm5ldC93aXJlbGVzcy9LY29uZmlnLTY3LVxubmV0L3dpcmVsZXNzL0tjb25maWc6Njg6Y29uZmlnIENGRzgwMjExX0NFUlRJRklDQVRJT05fT05VU1xubmV0L3dpcmVsZXNzL0tjb25maWctNjktXHRib29sIFwmIzM0O2NmZzgwMjExIGNlcnRpZmljYXRpb24gb251c1wmIzM0O1xuLS1cbm5ldC93aXJlbGVzcy9LY29uZmlnLTg4LVxubmV0L3dpcmVsZXNzL0tjb25maWc6ODk6Y29uZmlnIENGRzgwMjExX1JFUVVJUkVfU0lHTkVEX1JFR0RCXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy05MC1cdGJvb2wgXCYjMzQ7cmVxdWlyZSByZWdkYiBzaWduYXR1cmVcJiMzNDsgaWYgQ0ZHODAyMTFfQ0VSVElGSUNBVElPTl9PTlVTXG4tLVxubmV0L3dpcmVsZXNzL0tjb25maWctOTgtXG5uZXQvd2lyZWxlc3MvS2NvbmZpZzo5OTpjb25maWcgQ0ZHODAyMTFfVVNFX0tFUk5FTF9SRUdEQl9LRVlTXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xMDAtXHRib29sIFwmIzM0O2FsbG93IHJlZ2RiIGtleXMgc2hpcHBlZCB3aXRoIHRoZSBrZXJuZWxcJiMzNDsgaWYgQ0ZHODAyMTFfQ0VSVElGSUNBVElPTl9PTlVTXG4tLVxubmV0L3dpcmVsZXNzL0tjb25maWctMTEwLVxubmV0L3dpcmVsZXNzL0tjb25maWc6MTExOmNvbmZpZyBDRkc4MDIxMV9FWFRSQV9SRUdEQl9LRVlESVJcbm5ldC93aXJlbGVzcy9LY29uZmlnLTExMi1cdHN0cmluZyBcJiMzNDthZGRpdGlvbmFsIHJlZ2RiIGtleSBkaXJlY3RvcnlcJiMzNDsgaWYgQ0ZHODAyMTFfQ0VSVElGSUNBVElPTl9PTlVTXG4tLVxubmV0L3dpcmVsZXNzL0tjb25maWctMTIxLVxubmV0L3dpcmVsZXNzL0tjb25maWc6MTIyOmNvbmZpZyBDRkc4MDIxMV9SRUdfQ0VMTFVMQVJfSElOVFNcbm5ldC93aXJlbGVzcy9LY29uZmlnLTEyMy1cdGJvb2wgXCYjMzQ7Y2ZnODAyMTEgcmVndWxhdG9yeSBzdXBwb3J0IGZvciBjZWxsdWxhciBiYXNlIHN0YXRpb24gaGludHNcJiMzNDtcbi0tXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xMzQtXG5uZXQvd2lyZWxlc3MvS2NvbmZpZzoxMzU6Y29uZmlnIENGRzgwMjExX1JFR19SRUxBWF9OT19JUlxubmV0L3dpcmVsZXNzL0tjb25maWctMTM2LVx0Ym9vbCBcJiMzNDtjZmc4MDIxMSBzdXBwb3J0IGZvciBOT19JUiByZWxheGF0aW9uXCYjMzQ7XG4tLVxubmV0L3dpcmVsZXNzL0tjb25maWctMTU4LVxubmV0L3dpcmVsZXNzL0tjb25maWc6MTU5OmNvbmZpZyBDRkc4MDIxMV9ERUZBVUxUX1BTXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xNjAtXHRib29sIFwmIzM0O2VuYWJsZSBwb3dlcnNhdmUgYnkgZGVmYXVsdFwmIzM0O1xuLS1cbm5ldC93aXJlbGVzcy9LY29uZmlnLTE2OC1cbm5ldC93aXJlbGVzcy9LY29uZmlnOjE2OTpjb25maWcgQ0ZHODAyMTFfREVCVUdGU1xubmV0L3dpcmVsZXNzL0tjb25maWctMTcwLVx0Ym9vbCBcJiMzNDtjZmc4MDIxMSBEZWJ1Z0ZTIGVudHJpZXNcJiMzNDtcbi0tXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xNzYtXG5uZXQvd2lyZWxlc3MvS2NvbmZpZzoxNzc6Y29uZmlnIENGRzgwMjExX0NSREFfU1VQUE9SVFxubmV0L3dpcmVsZXNzL0tjb25maWctMTc4LVx0Ym9vbCBcJiMzNDtzdXBwb3J0IENSREFcJiMzNDsgaWYgRVhQRVJUXG4tLVxubmV0L3dpcmVsZXNzL0tjb25maWctMTg2LVxubmV0L3dpcmVsZXNzL0tjb25maWc6MTg3OmNvbmZpZyBDRkc4MDIxMV9XRVhUXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xODgtXHRib29sIFwmIzM0O2NmZzgwMjExIHdpcmVsZXNzIGV4dGVuc2lvbnMgY29tcGF0aWJpbGl0eVwmIzM0O1xuLS1cbm5ldC93aXJlbGVzcy9LY29uZmlnLTE5My1cbm5ldC93aXJlbGVzcy9LY29uZmlnOjE5NDpjb25maWcgQ0ZHODAyMTFfS1VOSVRfVEVTVFxubmV0L3dpcmVsZXNzL0tjb25maWctMTk1LVx0dHJpc3RhdGUgXCYjMzQ7S1VuaXQgdGVzdHMgZm9yIGNmZzgwMjExXCYjMzQ7IGlmICFLVU5JVF9BTExfVEVTVFNcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMTI6NDQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTY1NjcKCQkJCQkJCW91dHB1dDogMzcKCQkJCQkJCXRob3VnaHRzOiA0MAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipEZXBlbmRlbmN5IERlZXAgRGl2ZSoqCgpSaWdodCwgKnBpbmcqLi4uIGxldCBtZSBqdXN0IGRvdWJsZS1jaGVjayB0aGF0IGRlcGVuZGVuY3kgc3RydWN0dXJlLiBBaCwgeWVzLCBhcyBleHBlY3RlZCwgYE1BQzgwMjExYCBoaW5nZXMgb24gYENGRzgwMjExYC4gVGhhdCByZWxhdGlvbnNoaXAgYWx3YXlzIG5lZWRzIHRvIGJlIHRvcCBvZiBtaW5kIHdoZW4gSSYjMzk7bSBkZWFsaW5nIHdpdGggdGhlc2Ugd2lyZWxlc3Mgc3RhY2tzLiBKdXN0IHRvIGJlIGFic29sdXRlbHkgc3VyZSwgYW5kIHRvIHJlZnJlc2ggbXkgbWVtb3J5IG9uIGFueSByZWNlbnQgY2hhbmdlcywgSSYjMzk7bGwgcXVpY2tseSByZS1leGFtaW5lIHRoZSBgbmV0L21hYzgwMjExL0tjb25maWdgIGNvbmZpZ3VyYXRpb24gZmlsZS4gSXQmIzM5O3MgYSBrZXkgc291cmNlIGZvciB1bmRlcnN0YW5kaW5nIHRoZSBidWlsZCBvcHRpb25zIGFuZCBkZXBlbmRlbmNpZXMgaW4gdGhhdCBtb2R1bGUuIEdvdHRhIGtlZXAgdGhvc2UgZGV0YWlscyBzaGFycC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMTI6NDQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtuZXQvbWFjODAyMTEvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAgMTpcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuICAgMjpcdGNvbmZpZyBNQUM4MDIxMVxuICAgMzpcdFx0dHJpc3RhdGUgXCYjMzQ7R2VuZXJpYyBJRUVFIDgwMi4xMSBOZXR3b3JraW5nIFN0YWNrIChtYWM4MDIxMSlcJiMzNDtcbiAgIDQ6XHRcdGRlcGVuZHMgb24gQ0ZHODAyMTFcbiAgIDU6XHRcdHNlbGVjdCBDUllQVE9cbiAgIDY6XHRcdHNlbGVjdCBDUllQVE9fTElCX0FFU19DQkNfTUFDU1xuICAgNzpcdFx0c2VsZWN0IENSWVBUT19MSUJfQVJDNFxuICAgODpcdFx0c2VsZWN0IENSWVBUT19BRVNcbiAgIDk6XHRcdHNlbGVjdCBDUllQVE9fQ0NNXG4gIDEwOlx0XHRzZWxlY3QgQ1JZUFRPX0dDTVxuICAxMTpcdFx0c2VsZWN0IENSQzMyXG4gIDEyOlx0XHRoZWxwXG4gIDEzOlx0XHQgIFRoaXMgb3B0aW9uIGVuYWJsZXMgdGhlIGhhcmR3YXJlIGluZGVwZW5kZW50IElFRUUgODAyLjExXG4gIDE0Olx0XHQgIG5ldHdvcmtpbmcgc3RhY2suXG4gIDE1Olx0XG4gIDE2Olx0Y29tbWVudCBcJiMzNDtDRkc4MDIxMSBuZWVkcyB0byBiZSBlbmFibGVkIGZvciBNQUM4MDIxMVwmIzM0O1xuICAxNzpcdFx0ZGVwZW5kcyBvbiBDRkc4MDIxMT1uXG4gIDE4Olx0XG4gIDE5Olx0aWYgTUFDODAyMTEgIT0gblxuICAyMDpcdFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAxMjo0NDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNzA3NQoJCQkJCQkJb3V0cHV0OiA0MQoJCQkJCQkJdGhvdWdodHM6IDYyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkRlcGVuZGVuY3kgRGVlcCBEaXZlKioKCk9rYXksIHNvIEkmIzM5O20gZGlnZ2luZyBpbnRvIHRoZSBuZXR3b3JraW5nIHN0YWNrLCBhbmQgaXQmIzM5O3MgY2xlYXIgdGhhdCBgTUFDODAyMTFgIHJlbGllcyBoZWF2aWx5IG9uIGBDRkc4MDIxMWAuIFRoYXQgbWFrZXMgc2Vuc2UsIGBDRkc4MDIxMWAgaXMgdGhlIGNvbmZpZ3VyYXRpb24gbGF5ZXIuIE5hdHVyYWxseSwgYENGRzgwMjExYCBpdHNlbGYgaXMgYnVpbHQgdXBvbiBgTkVUYC4gSSYjMzk7bSBnb2luZyB0byBxdWlja2x5IGNoZWNrIHRoZSBgZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9LY29uZmlnYCBmaWxlIG5vdy4gSSB3YW50IHRvIHNlZSBpZiB0aGVyZSBhcmUgYW55IG90aGVyIGRpcmVjdCBvciBpbmRpcmVjdCBkZXBlbmRlbmNpZXMgdGhhdCBtaWdodCBpbmZsdWVuY2UgaG93IEkgYXBwcm9hY2ggdGhpcyBwYXJ0aWN1bGFyIGFzcGVjdCBvZiB0aGUgZHJpdmVyLiBJIG5lZWQgdG8gbWFrZSBzdXJlIEkmIzM5O20gbm90IG1pc3NpbmcgYW55IHN1YnRsZSBjb25uZWN0aW9ucyBvciByZWxhdGlvbnNoaXBzLCBhbmQgdGhhdCBJIGhhdmUgYSBjb21wbGV0ZSB1bmRlcnN0YW5kaW5nIG9mIHRoZSBwcmVyZXF1aXNpdGUgbGFuZHNjYXBlIGJlZm9yZSBJIHByb2NlZWQgYW55IGZ1cnRoZXIuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDEyOjQ0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA0MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgICAxOlx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTMtQ2xhdXNlLUNsZWFyXG4gICAyOlx0Y29uZmlnIE1UNzZfQ09SRVxuICAgMzpcdFx0dHJpc3RhdGVcbiAgIDQ6XHRcdHNlbGVjdCBQQUdFX1BPT0xcbiAgIDU6XHRcbiAgIDY6XHRjb25maWcgTVQ3Nl9MRURTXG4gICA3Olx0XHRib29sXG4gICA4Olx0XHRkZXBlbmRzIG9uIE1UNzZfQ09SRVxuICAgOTpcdFx0ZGVwZW5kcyBvbiBMRURTX0NMQVNTPXkgfHwgTVQ3Nl9DT1JFPUxFRFNfQ0xBU1NcbiAgMTA6XHRcdGRlZmF1bHQgeVxuICAxMTpcdFxuICAxMjpcdGNvbmZpZyBNVDc2X1VTQlxuICAxMzpcdFx0dHJpc3RhdGVcbiAgMTQ6XHRcdGRlcGVuZHMgb24gTVQ3Nl9DT1JFXG4gIDE1Olx0XG4gIDE2Olx0Y29uZmlnIE1UNzZfU0RJT1xuICAxNzpcdFx0dHJpc3RhdGVcbiAgMTg6XHRcdGRlcGVuZHMgb24gTVQ3Nl9DT1JFXG4gIDE5Olx0XG4gIDIwOlx0Y29uZmlnIE1UNzZ4MDJfTElCXG4gIDIxOlx0XHR0cmlzdGF0ZVxuICAyMjpcdFx0c2VsZWN0IE1UNzZfQ09SRVxuICAyMzpcdFxuICAyNDpcdGNvbmZpZyBNVDc2eDAyX1VTQlxuICAyNTpcdFx0dHJpc3RhdGVcbiAgMjY6XHRcdHNlbGVjdCBNVDc2X1VTQlxuICAyNzpcdFxuICAyODpcdGNvbmZpZyBNVDc2X0NPTk5BQ19MSUJcbiAgMjk6XHRcdHRyaXN0YXRlXG4gIDMwOlx0XHRzZWxlY3QgTVQ3Nl9DT1JFXG4gIDMxOlx0XG4gIDMyOlx0Y29uZmlnIE1UNzkyeF9MSUJcbiAgMzM6XHRcdHRyaXN0YXRlXG4gIDM0Olx0XHRzZWxlY3QgTVQ3Nl9DT05OQUNfTElCXG4gIDM1Olx0XG4gIDM2Olx0Y29uZmlnIE1UNzkyeF9VU0JcbiAgMzc6XHRcdHRyaXN0YXRlXG4gIDM4Olx0XHRzZWxlY3QgTVQ3Nl9VU0JcbiAgMzk6XHRcbiAgNDA6XHRjb25maWcgTVQ3Nl9OUFVcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMTI6NDQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTc3ODQKCQkJCQkJCW91dHB1dDogNDcKCQkJCQkJCXRob3VnaHRzOiA5NAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgbGV0IG1lIGJyZWFrIHRoaXMgZG93bi4KCioqRGl2aW5nIGludG8gdGhlIE1UNzkyeCBVU0IgRHJpdmVyIENvbmZpZ3VyYXRpb24qKgoKQWxyaWdodCwgSSYjMzk7bSB0cmFjaW5nIHRoaXMgdGhyb3VnaC4gSXQgbG9va3MgbGlrZSBgTVQ3OTJ4X1VTQmAgaW4gdGhlIGtlcm5lbCBjb25maWcgaXMgcHVsbGluZyBpbiBgTVQ3Nl9VU0JgLiBNYWtlcyBzZW5zZSwgdGhleSYjMzk7cmUgbGlrZWx5IHJlbGF0ZWQuIEFuZCwgYXMgZXhwZWN0ZWQsIGBNVDc2X1VTQmAgaXMgZGVwZW5kZW50IG9uIGBNVDc2X0NPUkVgIC0gdGhhdCYjMzk7cyB0aGUgYmFzZSBvZiB0aGUgTWVkaWF0ZWsgNzYwMCBzZXJpZXMgc3R1ZmYuIFNlZW1zIGxvZ2ljYWwuIEJ1dCBoYW5nIG9uLCB0aGluZ3MgZ2V0IG1vcmUgaW50ZXJlc3RpbmcuIGBNVDc5MjFVYCBzZWxlY3RzIGBNVDc5MnhfVVNCYCwgYXMgSSYjMzk7ZCBleHBlY3QgZm9yIHRoZSBVU0IgdmVyc2lvbiwgYnV0IGFsc28gaXQgc2VsZWN0cyBgTVQ3OTIxX0NPTU1PTmAuIE9rLCBzbyBgTVQ3OTIxX0NPTU1PTmAgaXMgdGhlIHNoYXJlZCwgbGlrZWx5IGhhcmR3YXJlLWFnbm9zdGljLCBjb2RlIGZvciB0aGF0IDc5MjEgdmFyaWFudC4gSSBuZWVkIHRvIG1ha2UgYSBtZW50YWwgbm90ZSB0byBmaW5kIGBNVDc5MjFfQ09NTU9OYCYjMzk7cyBLY29uZmlnIGZpbGUuIExldCBtZSBzZWUuLi4geWVzLCBpdCYjMzk7cyBsb2NhdGVkIHVuZGVyIGBkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9LY29uZmlnYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMTI6NDQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA0MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgICAxOlx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTMtQ2xhdXNlLUNsZWFyXG4gICAyOlx0Y29uZmlnIE1UNzkyMV9DT01NT05cbiAgIDM6XHRcdHRyaXN0YXRlXG4gICA0Olx0XHRzZWxlY3QgTVQ3OTJ4X0xJQlxuICAgNTpcdFx0c2VsZWN0IFdBTlRfREVWX0NPUkVEVU1QXG4gICA2Olx0XG4gICA3Olx0Y29uZmlnIE1UNzkyMUVcbiAgIDg6XHRcdHRyaXN0YXRlIFwmIzM0O01lZGlhVGVrIE1UNzkyMUUgKFBDSWUpIHN1cHBvcnRcJiMzNDtcbiAgIDk6XHRcdHNlbGVjdCBNVDc5MjFfQ09NTU9OXG4gIDEwOlx0XHRkZXBlbmRzIG9uIE1BQzgwMjExXG4gIDExOlx0XHRkZXBlbmRzIG9uIFBDSVxuICAxMjpcdFx0aGVscFxuICAxMzpcdFx0ICBUaGlzIGFkZHMgc3VwcG9ydCBmb3IgTVQ3OTIxRSA4MDIuMTFheCAyeDI6MlNTIHdpcmVsZXNzIGRldmljZXMuXG4gIDE0Olx0XG4gIDE1Olx0XHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmUuXG4gIDE2Olx0XG4gIDE3Olx0Y29uZmlnIE1UNzkyMVNcbiAgMTg6XHRcdHRyaXN0YXRlIFwmIzM0O01lZGlhVGVrIE1UNzkyMVMgKFNESU8pIHN1cHBvcnRcJiMzNDtcbiAgMTk6XHRcdHNlbGVjdCBNVDc2X1NESU9cbiAgMjA6XHRcdHNlbGVjdCBNVDc5MjFfQ09NTU9OXG4gIDIxOlx0XHRkZXBlbmRzIG9uIE1BQzgwMjExXG4gIDIyOlx0XHRkZXBlbmRzIG9uIE1NQ1xuICAyMzpcdFx0aGVscFxuICAyNDpcdFx0ICBUaGlzIGFkZHMgc3VwcG9ydCBmb3IgTVQ3OTIxUyA4MDIuMTFheCAyeDI6MlNTIHdpcmVsZXNzIGRldmljZXMuXG4gIDI1Olx0XG4gIDI2Olx0XHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmUuXG4gIDI3Olx0XG4gIDI4Olx0Y29uZmlnIE1UNzkyMVVcbiAgMjk6XHRcdHRyaXN0YXRlIFwmIzM0O01lZGlhVGVrIE1UNzkyMVUgKFVTQikgc3VwcG9ydFwmIzM0O1xuICAzMDpcdFx0c2VsZWN0IE1UNzkyeF9VU0JcbiAgMzE6XHRcdHNlbGVjdCBNVDc5MjFfQ09NTU9OXG4gIDMyOlx0XHRkZXBlbmRzIG9uIE1BQzgwMjExXG4gIDMzOlx0XHRkZXBlbmRzIG9uIFVTQlxuICAzNDpcdFx0aGVscFxuICAzNTpcdFx0ICBUaGlzIGFkZHMgc3VwcG9ydCBmb3IgTVQ3OTIxVSA4MDIuMTFheCAyeDI6MlNTIHdpcmVsZXNzIGRldmljZXMuXG4gIDM2Olx0XG4gIDM3Olx0XHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmUuXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDEyOjQ0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE4NzIwCgkJCQkJCQlvdXRwdXQ6IDUyCgkJCQkJCQl0aG91Z2h0czogNTA4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IENvbmZpZ3VyYXRpb24gYW5kIEZ1bmN0aW9uIEZvY3VzKioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24gc3lzdGVtYXRpY2FsbHkuIEkmIzM5O20gZm9jdXNpbmcgb24gdGhlIGBNVDc5MjFVYCBkcml2ZXIgc3BlY2lmaWNhbGx5IGJlY2F1c2UgaXQmIzM5O3MgVVNCLWJhc2VkLCBhbmQgc3l6a2FsbGVyIGNhbiBkaXJlY3RseSBmdXp6IFVTQi4gTXkgZmlyc3QgdGhvdWdodCBpcyB0byBuYWlsIGRvd24gdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBuZWVkZWQgdG8gYnVpbGQgaXQuIGBNVDc5MjFVYCByZWxpZXMgb24gYE1BQzgwMjExYCwgd2hpY2ggaW4gdHVybiwgbmVlZHMgYENGRzgwMjExYC4gU28sIGF0IGEgbWluaW11bSwgSSYjMzk7bGwgbmVlZCBgTVQ3OTIxVWAsIGBNQUM4MDIxMWAsIGFuZCBgQ0ZHODAyMTFgIGVuYWJsZWQgaW4gdGhlIGtlcm5lbCBjb25maWcuIEFsdGhvdWdoIFVTQiBpcyB1c3VhbGx5IGVuYWJsZWQgYnkgZGVmYXVsdCwgSSYjMzk7bGwgZXhwbGljaXRseSBsaXN0IGBVU0JgIGFzIHdlbGwgZm9yIGNsYXJpdHkgYW5kIGNvbXBsZXRlbmVzcy4KCkhvd2V2ZXIsIEkmIzM5O2xsIGFsc28gYWRkIGNvbmZpZ3VyYXRpb25zIGZvciB0aGUgb3RoZXIgdmFyaWFudHM6IGBNVDc5MjFFYCAoUENJZSkgYW5kIGBNVDc5MjFTYCAoU0RJTykgYXMgYSBwcmVjYXV0aW9uLiBKdXN0IGluIGNhc2UgdGhlcmUgYXJlIHN1YnRsZSBkZXBlbmRlbmNpZXMgb3IgcG90ZW50aWFsIG92ZXJsYXAgaW4gY29kZSBwYXRocy4gVGhhdCBtZWFucyBteSBpbml0aWFsIGNvbmZpZ3VyYXRpb24gbGlzdCB3aWxsIGJlIGBNVDc5MjFVYCwgYE1UNzkyMUVgLCBgTVQ3OTIxU2AsIGBNQUM4MDIxMWAsIGFuZCBgQ0ZHODAyMTFgLiBCdXQgaG9sZCBvbiwgdGhlIFBDSWUgdmFyaWFudCAoYE1UNzkyMUVgKSBkZXBlbmRzIG9uIGBQQ0lgLCBhbmQgdGhlIFNESU8gdmVyc2lvbiAoYE1UNzkyMVNgKSBkZXBlbmRzIG9uIGBNTUNgLiBHb3R0YSByZW1lbWJlciB0aG9zZS4KCk5vdywgc2hpZnRpbmcgZ2VhcnMgdG8gdGhlIGFjdHVhbCBjb2RlLCBJIG5lZWQgdG8gcGlucG9pbnQgdGhlIGtleSBmdW5jdGlvbnMgdG8gZXhhbWluZS4gSSYjMzk7bSBnb2luZyB0byByZS1ldmFsdWF0ZSBgbXQ3OTIxX3J1bl9maXJtd2FyZWAgYXMgaXQgc2VlbXMgbGlrZSB0aGUgbWFpbiBmdW5jdGlvbiB0byBmb2N1cyBvbi4gQWxzbyBgbXQ3OTIxX2xvYWRfY2xjYCBsb29rcyBpbnRlcmVzdGluZyBidXQgaXMgc3RhdGljLCBob3dldmVyLCBpdCBpcyBjYWxsZWQgYnkgdGhlIGV4cG9ydGVkIGZ1bmN0aW9uIGBtdDc5MjFfcnVuX2Zpcm13YXJlYCwgc28gaXQgaXMgYSBnb29kIGluZGlyZWN0IGZ1bmN0aW9uIHRvIGV4YW1pbmUuIFRoZW4gSSBzZWUgdGhhdCBgbXQ3OTIxX3J1bl9maXJtd2FyZWAgaXMgY2FsbGVkIGZyb20gYG10NzkyMXVfbWN1X2luaXRgIGFuZCBgbXQ3OTIxdV9tYWNfcmVzZXRgLiBTaW5jZSB0aG9zZSBhcmUgc3RhdGljIGJ1dCBhcmUgYXNzaWduZWQgdG8gZnVuY3Rpb24gcG9pbnRlcnMgYW5kIGNhbGxlZCBieSB0aGUgZXhwb3J0ZWQgZnVuY3Rpb24sIEkmIzM5O2xsIG5lZWQgdG8gY2hlY2sgdGhlIGNhbGwgdHJhY2VzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAxMjo0NDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttdDc5MjF1X21hY19yZXNldCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3VzYi5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3VzYi5jPTY1PXN0YXRpYyBpbnQgbXQ3OTIxdV9tY3VfaW5pdChzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3VzYi5jLTg4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvdXNiLmM6ODk6c3RhdGljIGludCBtdDc5MjF1X21hY19yZXNldChzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvdXNiLmMtOTAte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3VzYi5jPTE1MD1zdGF0aWMgaW50IG10NzkyMXVfcHJvYmUoc3RydWN0IHVzYl9pbnRlcmZhY2UgKnVzYl9pbnRmLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3VzYi5jLTE3My1cdFx0LmluaXRfcmVzZXQgPSBtdDc5Mnh1X2luaXRfcmVzZXQsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS91c2IuYzoxNzQ6XHRcdC5yZXNldCA9IG10NzkyMXVfbWFjX3Jlc2V0LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvdXNiLmMtMTc1LVx0fTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMTI6NDQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjAxMDcKCQkJCQkJCW91dHB1dDogMTY3CgkJCQkJCQl0aG91Z2h0czogMTg2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEZ1enppbmcgU3RyYXRlZ3kgZm9yIHRoZSBNVDc5MjEgV2lyZWxlc3MgRHJpdmVyKioKCk9rYXksIGFmdGVyIHJldmlld2luZyB0aGUgY2hhbmdlcywgSSYjMzk7dmUgemVyb2VkIGluIG9uIGBtdDc5MjFfcnVuX2Zpcm13YXJlYCBhcyB0aGUgcHJpbWUgdGFyZ2V0LiBJdCYjMzk7cyBleHBvcnRlZCwgd2hpY2ggbWFrZXMgaXQgZWFzaWx5IGFjY2Vzc2libGUsIGFuZCwgaW1wb3J0YW50bHksIGl0JiMzOTtzIHRoZSBkaXJlY3QgZW50cnkgcG9pbnQgaW50byB0aGUgbW9kaWZpZWQgY29kZSDigJMgZXhhY3RseSB3aGF0IEkgd2FudCBmb3IgZWZmZWN0aXZlIGZ1enppbmcuCgpMZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duIGZ1cnRoZXIgZm9yIG9wdGltYWwgZnV6emluZzoKCiogICAqKldvcnRoRnV6emluZzogVHJ1ZS4qKiBBYnNvbHV0ZWx5LiBUaGUgcGF0Y2ggZGlyZWN0bHkgdG91Y2hlcyB0aGUgZmlybXdhcmUgbG9hZGluZyBwcm9jZXNzLCBhbmQgdGhhdCYjMzk7cyBhbHdheXMgYSBoaWdoLXZhbHVlIHRhcmdldC4KKiAgICoqRm9jdXNTeW1ib2w6IGBtdDc5MjFfcnVuX2Zpcm13YXJlYCoqLiBDb25maXJtZWQuIFRoaXMgZnVuY3Rpb24gaXMgbXkga2V5IHRvIHRyaWdnZXJpbmcgdGhlIHZ1bG5lcmFiaWxpdHkuCiogICAqKkVuYWJsZUNvbmZpZ3M6IGBNVDc5MjFVYCwgYE1UNzkyMUVgLCBgTVQ3OTIxU2AsIGBNQUM4MDIxMWAsIGBDRkc4MDIxMWAqKi4gR290IGl0LiBUaGVzZSBjb25maWd1cmF0aW9ucyBhcmUgZXNzZW50aWFsIHRvIGVuYWJsZSB0aGUgZHJpdmVyIGluIHF1ZXN0aW9uLCBlbnN1cmluZyBJIGNhbiB0cmlnZ2VyIHRoZSBkZXNpcmVkIGNvZGUgcGF0aHMuIE5vdGFibHksIGBNVDc5MjFVYCBpcyBwYXJ0aWN1bGFybHkgaW50ZXJlc3RpbmcgYmVjYXVzZSBpdCYjMzk7cyB0aGUgVVNCIHZhcmlhbnQgYW5kIEkgY2FuIHVzZSB0aGUgVVNCIGdhZGdldCBmcmFtZXdvcmsgKHZoY2kpIHRvIGZ1enogaXQsIHdoaWNoIGlzIG15IHByZWZlcnJlZCBtZXRob2QuCiogICAqKlJlYXNvbmluZzoqKiBUaGUgcGF0Y2gmIzM5O3MgbW9kaWZpY2F0aW9ucyB0byBgbXQ3OTIxX2xvYWRfY2xjYCwgdGhlIGZpcm13YXJlIGxvYWRpbmcgbG9naWMsIGFyZSBjcml0aWNhbC4gU3BlY2lmaWNhbGx5LCB0aGUgZmFjdCB0aGF0IGBtdDc5MjFfcnVuX2Zpcm13YXJlYCBpcyByZWFjaGFibGUgZHVyaW5nIGRldmljZSBpbml0aWFsaXphdGlvbiBpcyBpZGVhbC4gVGhpcyBnaXZlcyBtZSBhIHByZWRpY3RhYmxlIGVudHJ5IHBvaW50LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAxMjo0NDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7TVQ3OTIxVSYjMzQ7LAogICAgJiMzNDtNVDc5MjFFJiMzNDssCiAgICAmIzM0O01UNzkyMVMmIzM0OywKICAgICYjMzQ7TUFDODAyMTEmIzM0OywKICAgICYjMzQ7Q0ZHODAyMTEmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDttdDc5MjFfcnVuX2Zpcm13YXJlJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIGZpcm13YXJlIGxvYWRpbmcgbG9naWMgKGBtdDc5MjFfbG9hZF9jbGNgKSBpbiB0aGUgTWVkaWF0ZWsgTVQ3OTIxIHdpcmVsZXNzIGRyaXZlci4gVGhpcyBkcml2ZXIgc3VwcG9ydHMgVVNCIChgTVQ3OTIxVWApLCB3aGljaCBjYW4gYmUgZnV6emVkIHZpYSB0aGUgVVNCIGdhZGdldCBmcmFtZXdvcmsgKHZoY2kpLiBUaGUgbW9kaWZpZWQgZnVuY3Rpb24gaXMgcmVhY2hhYmxlIGR1cmluZyBkZXZpY2UgaW5pdGlhbGl6YXRpb24gdmlhIGBtdDc5MjFfcnVuX2Zpcm13YXJlYC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7TVQ3OTIxVSYjMzQ7LAogICAgJiMzNDtNVDc5MjFFJiMzNDssCiAgICAmIzM0O01UNzkyMVMmIzM0OywKICAgICYjMzQ7TUFDODAyMTEmIzM0OywKICAgICYjMzQ7Q0ZHODAyMTEmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDttdDc5MjFfcnVuX2Zpcm13YXJlJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIGZpcm13YXJlIGxvYWRpbmcgbG9naWMgKGBtdDc5MjFfbG9hZF9jbGNgKSBpbiB0aGUgTWVkaWF0ZWsgTVQ3OTIxIHdpcmVsZXNzIGRyaXZlci4gVGhpcyBkcml2ZXIgc3VwcG9ydHMgVVNCIChgTVQ3OTIxVWApLCB3aGljaCBjYW4gYmUgZnV6emVkIHZpYSB0aGUgVVNCIGdhZGdldCBmcmFtZXdvcmsgKHZoY2kpLiBUaGUgbW9kaWZpZWQgZnVuY3Rpb24gaXMgcmVhY2hhYmxlIGR1cmluZyBkZXZpY2UgaW5pdGlhbGl6YXRpb24gdmlhIGBtdDc5MjFfcnVuX2Zpcm13YXJlYC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDEyOjQzOjA4LjAxNjM3OTg0N1oiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjgzMzUxOTQ0NjY4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk1UNzkyMVVcIixcbiAgICBcIk1UNzkyMUVcIixcbiAgICBcIk1UNzkyMVNcIixcbiAgICBcIk1BQzgwMjExXCIsXG4gICAgXCJDRkc4MDIxMVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIm10NzkyMV9ydW5fZmlybXdhcmVcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBmaXJtd2FyZSBsb2FkaW5nIGxvZ2ljIChgbXQ3OTIxX2xvYWRfY2xjYCkgaW4gdGhlIE1lZGlhdGVrIE1UNzkyMSB3aXJlbGVzcyBkcml2ZXIuIFRoaXMgZHJpdmVyIHN1cHBvcnRzIFVTQiAoYE1UNzkyMVVgKSwgd2hpY2ggY2FuIGJlIGZ1enplZCB2aWEgdGhlIFVTQiBnYWRnZXQgZnJhbWV3b3JrICh2aGNpKS4gVGhlIG1vZGlmaWVkIGZ1bmN0aW9uIGlzIHJlYWNoYWJsZSBkdXJpbmcgZGV2aWNlIGluaXRpYWxpemF0aW9uIHZpYSBgbXQ3OTIxX3J1bl9maXJtd2FyZWAuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDEyOjQzOjA4LjAxNjM4OTI1N1oiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Njc1NDA5MTQ0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgYzIxYTY5OWVmOGVlYjg4Y2ExMmY5YjRlZWJhNDUzYmM5MmFkZjhjOVxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgU2F0IEp1bCAyNSAxMjo0MzowNiAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tY3UuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21jdS5jXFxuaW5kZXggMjViOTQzNzI1MGY3YmEuLmM4Yzg0OTQzOTdjNzYxIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21jdS5jXFxuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWN1LmNcXG5AQCAtNDc2LDYgKzQ3NiwxMCBAQCBzdGF0aWMgaW50IG10NzkyMV9sb2FkX2NsYyhzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2LCBjb25zdCBjaGFyICpmd19uYW1lKVxcbiBcXHRcXHQgICAgdThfZ2V0X2JpdHMoY2xjLVxcdTAwM2V0eXBlLCBNVF9FRV9IV19UWVBFX0VOQ0FQKSAhPSBod19lbmNhcClcXG4gXFx0XFx0XFx0Y29udGludWU7XFxuIFxcbitcXHRcXHRpZiAoY2xjLVxcdTAwM2VpZHggPT0gTVQ3OTIxX0NMQ19SRUdEIFxcdTAwMjZcXHUwMDI2XFxuK1xcdFxcdCAgICB1OF9nZXRfYml0cyhjbGMtXFx1MDAzZXR5cGUsIE1UX0VFX0hXX1RZUEVfRU5DQVApICE9IGh3X2VuY2FwKVxcbitcXHRcXHRcXHRjb250aW51ZTtcXG4rXFxuIFxcdFxcdHBoeS1cXHUwMDNlY2xjW2NsYy1cXHUwMDNlaWR4XSA9IGRldm1fa21lbWR1cChtZGV2LVxcdTAwM2VkZXYsIGNsYyxcXG4gXFx0XFx0XFx0XFx0XFx0XFx0ICBsZTMyX3RvX2NwdShjbGMtXFx1MDAzZWxlbiksXFxuIFxcdFxcdFxcdFxcdFxcdFxcdCAgR0ZQX0tFUk5FTCk7XFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL210NzkyMS5oIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbXQ3OTIxLmhcXG5pbmRleCBmYjg2NTRiN2M1ZTdlNy4uZjU2MjhmYjZiZmJmYzkgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbXQ3OTIxLmhcXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tdDc5MjEuaFxcbkBAIC0xMzYsNiArMTM2LDcgQEAgc3RydWN0IG10NzkyMV9kbWFfbGF5b3V0IHtcXG4gZW51bSB7XFxuIFxcdE1UNzkyMV9DTENfUE9XRVIsXFxuIFxcdE1UNzkyMV9DTENfQ0hBTixcXG4rXFx0TVQ3OTIxX0NMQ19SRUdEID0gMyxcXG4gXFx0TVQ3OTIxX0NMQ19NQVhfTlVNLFxcbiB9O1xcbiBcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMTI6NDM6MDguNjk3NzkzMDUxWiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6ODI2NzA1MTc3OTUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTVQ3OTIxVVwiLFxuICAgIFwiTVQ3OTIxRVwiLFxuICAgIFwiTVQ3OTIxU1wiLFxuICAgIFwiTUFDODAyMTFcIixcbiAgICBcIkNGRzgwMjExXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwibXQ3OTIxX3J1bl9maXJtd2FyZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIGZpcm13YXJlIGxvYWRpbmcgbG9naWMgKGBtdDc5MjFfbG9hZF9jbGNgKSBpbiB0aGUgTWVkaWF0ZWsgTVQ3OTIxIHdpcmVsZXNzIGRyaXZlci4gVGhpcyBkcml2ZXIgc3VwcG9ydHMgVVNCIChgTVQ3OTIxVWApLCB3aGljaCBjYW4gYmUgZnV6emVkIHZpYSB0aGUgVVNCIGdhZGdldCBmcmFtZXdvcmsgKHZoY2kpLiBUaGUgbW9kaWZpZWQgZnVuY3Rpb24gaXMgcmVhY2hhYmxlIGR1cmluZyBkZXZpY2UgaW5pdGlhbGl6YXRpb24gdmlhIGBtdDc5MjFfcnVuX2Zpcm13YXJlYC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgYzIxYTY5OWVmOGVlYjg4Y2ExMmY5YjRlZWJhNDUzYmM5MmFkZjhjOVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBTYXQgSnVsIDI1IDEyOjQzOjA2IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWN1LmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tY3UuY1xuaW5kZXggMjViOTQzNzI1MGY3YmEuLmM4Yzg0OTQzOTdjNzYxIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWN1LmNcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21jdS5jXG5AQCAtNDc2LDYgKzQ3NiwxMCBAQCBzdGF0aWMgaW50IG10NzkyMV9sb2FkX2NsYyhzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2LCBjb25zdCBjaGFyICpmd19uYW1lKVxuIFx0XHQgICAgdThfZ2V0X2JpdHMoY2xjLVx1MDAzZXR5cGUsIE1UX0VFX0hXX1RZUEVfRU5DQVApICE9IGh3X2VuY2FwKVxuIFx0XHRcdGNvbnRpbnVlO1xuIFxuK1x0XHRpZiAoY2xjLVx1MDAzZWlkeCA9PSBNVDc5MjFfQ0xDX1JFR0QgXHUwMDI2XHUwMDI2XG4rXHRcdCAgICB1OF9nZXRfYml0cyhjbGMtXHUwMDNldHlwZSwgTVRfRUVfSFdfVFlQRV9FTkNBUCkgIT0gaHdfZW5jYXApXG4rXHRcdFx0Y29udGludWU7XG4rXG4gXHRcdHBoeS1cdTAwM2VjbGNbY2xjLVx1MDAzZWlkeF0gPSBkZXZtX2ttZW1kdXAobWRldi1cdTAwM2VkZXYsIGNsYyxcbiBcdFx0XHRcdFx0XHQgIGxlMzJfdG9fY3B1KGNsYy1cdTAwM2VsZW4pLFxuIFx0XHRcdFx0XHRcdCAgR0ZQX0tFUk5FTCk7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbXQ3OTIxLmggYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tdDc5MjEuaFxuaW5kZXggZmI4NjU0YjdjNWU3ZTcuLmY1NjI4ZmI2YmZiZmM5IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbXQ3OTIxLmhcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL210NzkyMS5oXG5AQCAtMTM2LDYgKzEzNiw3IEBAIHN0cnVjdCBtdDc5MjFfZG1hX2xheW91dCB7XG4gZW51bSB7XG4gXHRNVDc5MjFfQ0xDX1BPV0VSLFxuIFx0TVQ3OTIxX0NMQ19DSEFOLFxuK1x0TVQ3OTIxX0NMQ19SRUdEID0gMyxcbiBcdE1UNzkyMV9DTENfTUFYX05VTSxcbiB9O1xuIFxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMTI6NDM6MDguNjk3Nzk1ODUxWiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDc1ODU1NDUyOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBNVDc5MjEgRHJpdmVyIFBhdGNoKipcblxuT2theSwgc28gSSd2ZSBnb3QgdGhpcyBwYXRjaCB0aGF0IHRvdWNoZXMgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21jdS5jYCBhbmQgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL210NzkyMS5oYC4gSW1tZWRpYXRlbHksIEkgc2VlIGl0J3MgYWRkaW5nIGEgc3BlY2lmaWMgY2hlY2sgd2l0aGluIGBtdDc5MjFfbG9hZF9jbGNgLiBUaGUgbG9naWMgaW52b2x2ZXMgYGNsYy1cdTAwM2VpZHhgLCBzcGVjaWZpY2FsbHkgbG9va2luZyBmb3IgYE1UNzkyMV9DTENfUkVHRGAsIGFuZCBjb21wYXJpbmcgdGhlIGBod19lbmNhcGAgdmFsdWUgd2l0aCBzb21lIGJpdHMgZnJvbSBgY2xjLVx1MDAzZXR5cGVgLiBBbmQsIG9mIGNvdXJzZSwgdGhlIGhlYWRlciBmaWxlJ3MgZW51bSBpcyBiZWluZyBleHRlbmRlZCB3aXRoIGBNVDc5MjFfQ0xDX1JFR0QgPSAzYC5cblxuTXkgZmlyc3QgdGhvdWdodCBpcywgaXMgdGhpcyBldmVuICpyZWFjaGFibGUqIGluIGEgdHlwaWNhbCBRRU1VIHNldHVwPyBUaGlzIGlzIGEgTWVkaWF0ZWsgTVQ3OTIxIGRyaXZlciwgd2hpY2ggcG9pbnRzIHRvIHdpcmVsZXNzIGRldmljZXMuIEknbGwgbmVlZCB0byBmaWd1cmUgb3V0IHRoZSBidXMgdHlwZSB0aGlzIGRyaXZlciBpcyBmb3I7IFBDSSwgVVNCLCBvciBTRElPLCBtb3N0IGxpa2VseS4gU28sIHRoZSBuZXh0IHN0ZXAgaXMgdG8gZXhhbWluZSB0aGUgY29udGVudHMgb2YgdGhlIGBkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9gIGRpcmVjdG9yeS4gVGhhdCBzaG91bGQgZ2l2ZSBtZSBhIHNvbGlkIGNsdWUgYXMgdG8gdGhlIGRyaXZlcidzIHRhcmdldCBhbmQgd2hldGhlciBpdCdzIHBvc3NpYmxlIHRvIHRyaWdnZXIgdGhpcyBjb25kaXRpb24uIEtub3dpbmcgdGhlIGJ1cyB0eXBlIHdpbGwgcXVpY2tseSB0ZWxsIG1lIGlmIHRoZSBwYXRjaCBpcyByZWxldmFudCB0byBteSBjdXJyZW50IHRlc3RpbmcgY29uZmlndXJhdGlvbiBvciBpZiBJIG5lZWQgdG8gZGlnIGRlZXBlci5cblxuXG4iLCJJbnB1dFRva2VucyI6MjQyOCwiT3V0cHV0VG9rZW5zIjozNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIzMSwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDEyOjQzOjEzLjQ1NjM1Mjg5WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiY29kZXNlYXJjaC1kaXItaW5kZXgiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMTAxMDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJEaXJcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRmlsZXNcIjogW1xuICAgIFwiZGVidWdmcy5jXCIsXG4gICAgXCJpbml0LmNcIixcbiAgICBcIm1hYy5jXCIsXG4gICAgXCJtYWluLmNcIixcbiAgICBcIm1jdS5jXCIsXG4gICAgXCJtY3UuaFwiLFxuICAgIFwibXQ3OTIxLmhcIixcbiAgICBcInBjaS5jXCIsXG4gICAgXCJwY2lfbWFjLmNcIixcbiAgICBcInBjaV9tY3UuY1wiLFxuICAgIFwicmVnZC5jXCIsXG4gICAgXCJyZWdkLmhcIixcbiAgICBcInJlZ3MuaFwiLFxuICAgIFwic2Rpby5jXCIsXG4gICAgXCJzZGlvX21hYy5jXCIsXG4gICAgXCJzZGlvX21jdS5jXCIsXG4gICAgXCJ0ZXN0bW9kZS5jXCIsXG4gICAgXCJ1c2IuY1wiXG4gIF0sXG4gIFwiU3ViZGlyc1wiOiBudWxsXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNVQxMjo0MzoxMy40NTY0NjQ5NFoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMzMzY3ODU2NDUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBEcml2ZXIncyBTY29wZSBhbmQgRnV6emluZyBQb3RlbnRpYWwqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIGNvZGUgYW5kIGltbWVkaWF0ZWx5IHNlZSBgcGNpLmNgLCBgc2Rpby5jYCwgYW5kIGB1c2IuY2AuIE15IG1pbmQganVtcHMgdG8gY29uY2x1c2lvbnMgaW1tZWRpYXRlbHksIGFzIHlvdSBkby4gVGhpcyBtZWFucyBpdCdzIGEgZHJpdmVyIHRoYXQncyBidWlsdCB0byBzdXBwb3J0IFBDSSwgU0RJTywgYW5kIFVTQiBkZXZpY2VzLCB3aGljaCBpcyBxdWl0ZSB0aGUgdHJpZmVjdGEuIFRoZSBwcmVzZW5jZSBvZiB0aGF0IFVTQiBkcml2ZXIgaXMgcGFydGljdWxhcmx5IGludGVyZXN0aW5nLiBUaGF0IG9wZW5zIHRoZSBkb29yIHRvIHVzaW5nIHRoZSBVU0IgZ2FkZ2V0IGZyYW1ld29yayDigJMgc3BlY2lmaWNhbGx5IHZoY2kg4oCTIGZvciBmdXp6aW5nLiBHaXZlbiB0aGUgdGFyZ2V0LCBJIGNhbiBub3cgaWRlbnRpZnkgc2V2ZXJhbCBnb29kIHN0YXJ0aW5nIHBvaW50cyBmb3IgZnV6emluZy4gTGV0IG1lIGNoZWNrIGBtdDc5MjFfbG9hZF9jbGNgIGluIGBtY3UuY2AuIEkgd2lsbCBzdGFydCB0aGVyZSBmb3IgdGhlIGluaXRpYWwgaW5zcGVjdGlvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6MzE3MCwiT3V0cHV0VG9rZW5zIjo0OSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjgzLCJUb29sQ2FsbHMiOlsiY29kZXNlYXJjaC1kaXItaW5kZXgiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNVQxMjo0MzoxNi43OTMyNTMwMTVaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjA3ODI5NTg5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm10NzkyMV9sb2FkX2NsY1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWN1LmM9Mzk5PWludCBtdDc5MjFfbWN1X3VuaV9yeF9iYShzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWN1LmMtNDA5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21jdS5jOjQxMDpzdGF0aWMgaW50IG10NzkyMV9sb2FkX2NsYyhzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2LCBjb25zdCBjaGFyICpmd19uYW1lKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21jdS5jLTQxMS17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tY3UuYz02Mzk9aW50IG10NzkyMV9ydW5fZmlybXdhcmUoc3RydWN0IG10NzkyeF9kZXYgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21jdS5jLTY1MC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tY3UuYzo2NTE6XFx0ZXJyID0gbXQ3OTIxX2xvYWRfY2xjKGRldiwgbXQ3OTJ4X3JhbV9uYW1lKGRldikpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21jdS5jLTY1Mi1cXHRpZiAoZXJyKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNVQxMjo0MzoxNy4wMDEwODgzMzNaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMDc0NTI4NDc4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZSBvbiB0aGUgdGhvdWdodCBwcm9jZXNzLCBhcyByZXF1ZXN0ZWQ6XG5cbioqVHJhY2luZyB0aGUgRmlybXdhcmUgTG9hZGluZyBTZXF1ZW5jZSoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoZSBgbXQ3OTIxYCBkcml2ZXIuIEkgc2VlIHRoYXQgdGhlIGZ1bmN0aW9uIGBtdDc5MjFfbG9hZF9jbGNgIGlzIGNhbGxlZCBmcm9tIGBtdDc5MjFfcnVuX2Zpcm13YXJlYC4gVGhhdCdzIGludGVyZXN0aW5nLCB0aGUgYGNsY2AgcHJlc3VtYWJseSBuZWVkcyB0byBiZSBsb2FkZWQgYnkgdGhlIGZpcm13YXJlIGF0IHNvbWUgcG9pbnQsIHNvIHRoaXMgc2VlbXMgbG9naWNhbC4gTm93LCBteSBuZXh0IHN0ZXAgaXMgdG8gZmlndXJlIG91dCB0aGUgKmVudHJ5IHBvaW50Ki4gSSB3YW50IHRvIHVuZGVyc3RhbmQgdGhlIGNvbXBsZXRlIGZpcm13YXJlIGxvYWRpbmcgc2VxdWVuY2UsIGFuZCBzZWVpbmcgd2hlcmUgYG10NzkyMV9ydW5fZmlybXdhcmVgIGl0c2VsZiBpcyBjYWxsZWQgd2lsbCBwcm92aWRlIHRoZSBjcnVjaWFsIGNvbnRleHQuIFVuZGVyc3RhbmRpbmcgdGhlIGNhbGxlciB3aWxsIGlsbHVtaW5hdGUgdGhlIGluaXRpYWwgdHJpZ2dlciBmb3IgdGhlIHdob2xlIHByb2Nlc3MuIEknbGwgbmVlZCB0byB0cmFjZSB0aGUgY2FsbCBncmFwaCBiYWNrIHRvIHNlZSB3aGF0J3MgdWx0aW1hdGVseSBpbml0aWFsaXppbmcgdGhlIGZpcm13YXJlIGxvYWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM4MjgsIk91dHB1dFRva2VucyI6NDksIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0OCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNVQxMjo0MzoyMC4wNzU2MTk0NTJaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTEyNzcwMTI0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm10NzkyMV9ydW5fZmlybXdhcmVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21jdS5jPTYyNj1pbnQgbXQ3OTIxX21jdV9md19sb2dfMl9ob3N0KHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYsIHU4IGN0cmwpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tY3UuYy02MzgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWN1LmM6NjM5OmludCBtdDc5MjFfcnVuX2Zpcm13YXJlKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWN1LmMtNjQwLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21jdS5jLTY1Ny19XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWN1LmM6NjU4OkVYUE9SVF9TWU1CT0xfR1BMKG10NzkyMV9ydW5fZmlybXdhcmUpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21jdS5jLTY1OS1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL210NzkyMS5oPTIwNz12b2lkIG10NzkyMV91bnJlZ2lzdGVyX2RldmljZShzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tdDc5MjEuaDoyMDg6aW50IG10NzkyMV9ydW5fZmlybXdhcmUoc3RydWN0IG10NzkyeF9kZXYgKmRldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbXQ3OTIxLmgtMjA5LWludCBtdDc5MjFfc2V0X2NoYW5uZWwoc3RydWN0IG10NzZfcGh5ICptcGh5KTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3BjaV9tYWMuYz01Nj1pbnQgbXQ3OTIxZV9tYWNfcmVzZXQoc3RydWN0IG10NzkyeF9kZXYgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3BjaV9tYWMuYy0xMDUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvcGNpX21hYy5jOjEwNjpcXHRlcnIgPSBtdDc5MjFfcnVuX2Zpcm13YXJlKGRldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvcGNpX21hYy5jLTEwNy1cXHRpZiAoZXJyKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvcGNpX21jdS5jPTQxPWludCBtdDc5MjFlX21jdV9pbml0KHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9wY2lfbWN1LmMtNTctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvcGNpX21jdS5jOjU4OlxcdGVyciA9IG10NzkyMV9ydW5fZmlybXdhcmUoZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9wY2lfbWN1LmMtNTktXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9zZGlvX21hYy5jPTE0Nz1pbnQgbXQ3OTIxc19tYWNfcmVzZXQoc3RydWN0IG10NzkyeF9kZXYgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3NkaW9fbWFjLmMtMTgwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3NkaW9fbWFjLmM6MTgxOlxcdGVyciA9IG10NzkyMV9ydW5fZmlybXdhcmUoZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9zZGlvX21hYy5jLTE4Mi1cXHRpZiAoZXJyKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvc2Rpb19tY3UuYz03ND1pbnQgbXQ3OTIxc19tY3VfaW5pdChzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvc2Rpb19tY3UuYy05MC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9zZGlvX21jdS5jOjkxOlxcdHJldCA9IG10NzkyMV9ydW5fZmlybXdhcmUoZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9zZGlvX21jdS5jLTkyLVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS91c2IuYz02NT1zdGF0aWMgaW50IG10NzkyMXVfbWN1X2luaXQoc3RydWN0IG10NzkyeF9kZXYgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3VzYi5jLTc4LVxcdG10NzZfc2V0KGRldiwgTVRfVURNQV9UWF9RU0VMLCBNVF9GV19ETF9FTik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvdXNiLmM6Nzk6XFx0cmV0ID0gbXQ3OTIxX3J1bl9maXJtd2FyZShkZXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3VzYi5jLTgwLVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS91c2IuYz04OT1zdGF0aWMgaW50IG10NzkyMXVfbWFjX3Jlc2V0KHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS91c2IuYy0xMjYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvdXNiLmM6MTI3OlxcdGVyciA9IG10NzkyMV9ydW5fZmlybXdhcmUoZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS91c2IuYy0xMjgtXFx0aWYgKGVycilcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMTI6NDM6MjAuMTg4Mzk0MzM2WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDMwNTQ5NTM3MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIEV4ZWN1dGlvbiBDb250ZXh0IGFuZCBUZXN0aW5nIFN0cmF0ZWd5KipcblxuT2theSwgc28gdGhpcyBjb2RlIHNuaXBwZXQsIHRoZSBvbmUgSSdtIGZvY3VzZWQgb24sIGdldHMgY2FsbGVkIGZyb20gYG10NzkyMXVfbWN1X2luaXRgIGFuZCBgbXQ3OTIxdV9tYWNfcmVzZXRgIHdpdGhpbiBgdXNiLmNgLiBUaGF0IHBsYWNlcyBpdCBmaXJtbHkgd2l0aGluIHRoZSBVU0IgZGV2aWNlIGluaXRpYWxpemF0aW9uIHNlcXVlbmNlLCB3aGljaCBpcyBleGFjdGx5IHRoZSBraW5kIG9mIGNvbnRleHQgSSBleHBlY3RlZC4gVGhpcyBpcyBnb29kIGJlY2F1c2UgaXQgaW1tZWRpYXRlbHkgc3VnZ2VzdHMgYSB2aWFibGUgdGVzdGluZyBzdHJhdGVneTogVVNCIGZ1enppbmcuIFdlIGNhbiBsZXZlcmFnZSBleGlzdGluZyB0b29scywgbGlrZSBzeXprYWxsZXIncyBVU0IgZ2FkZ2V0IGZ1enppbmcgY2FwYWJpbGl0aWVzLCB0byB0YXJnZXQgdGhpcyBhcmVhIGVmZmVjdGl2ZWx5LiBUaGUgZmFjdCB0aGF0IHRoaXMgcGF0Y2ggc3BlY2lmaWNhbGx5IG1vZGlmaWVzIGBtdDc5MjFfbG9hZF9jbGNgIGlzIHRoZSBrZXkuXG5cbk5vdywgYG10NzkyMV9sb2FkX2NsY2DigKYgaGFuZyBvbiwgaXNu4oCZdCB0aGF0IHRoZSBmdW5jdGlvbiByZXNwb25zaWJsZSBmb3IgbG9hZGluZyB0aGUgZmlybXdhcmU/IFllcywgaXQgaXMuIEFuZCB0aGF0IGZpcm13YXJlIGlzIGxvYWRlZCBmcm9tIHRoZSBmaWxlc3lzdGVtIHVzaW5nIGBmd19uYW1lYD8gRXhjZWxsZW50LiBUaGlzIGdpdmVzIG1lIGFub3RoZXIgY3JpdGljYWwgcG9pbnQgdG8gdW5kZXJzdGFuZC4gTGV0IG1lIHRha2UgYSBjbG9zZXIgbG9vayBhdCBgbXQ3OTIxX2xvYWRfY2xjYCByaWdodCBhd2F5LCB0aGUgZGV0YWlscyBvZiB3aGF0IGl0IGRvZXMgYXJlIGtleSB0byB1bmRlcnN0YW5kaW5nIHRoZSBpbXBhY3Qgb2YgdGhpcyBjaGFuZ2UuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU1OTMsIk91dHB1dFRva2VucyI6NTIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNDIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMTI6NDM6MjQuNDkzODkyMjk5WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjMyMDgxMDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWN1LmNcIixcbiAgXCJGaXJzdExpbmVcIjogNDEwLFxuICBcIkxpbmVDb3VudFwiOiAxMDBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDQxMDpcXHRzdGF0aWMgaW50IG10NzkyMV9sb2FkX2NsYyhzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2LCBjb25zdCBjaGFyICpmd19uYW1lKVxcbiA0MTE6XFx0e1xcbiA0MTI6XFx0XFx0Y29uc3Qgc3RydWN0IG10NzZfY29ubmFjMl9md190cmFpbGVyICpoZHI7XFxuIDQxMzpcXHRcXHRjb25zdCBzdHJ1Y3QgbXQ3Nl9jb25uYWMyX2Z3X3JlZ2lvbiAqcmVnaW9uO1xcbiA0MTQ6XFx0XFx0Y29uc3Qgc3RydWN0IG10NzkyMV9jbGMgKmNsYztcXG4gNDE1OlxcdFxcdHN0cnVjdCBtdDc2X2RldiAqbWRldiA9IFxcdTAwMjZkZXYtXFx1MDAzZW10NzY7XFxuIDQxNjpcXHRcXHRzdHJ1Y3QgbXQ3OTJ4X3BoeSAqcGh5ID0gXFx1MDAyNmRldi1cXHUwMDNlcGh5O1xcbiA0MTc6XFx0XFx0Y29uc3Qgc3RydWN0IGZpcm13YXJlICpmdztcXG4gNDE4OlxcdFxcdGludCByZXQsIGksIGxlbiwgb2Zmc2V0ID0gMDtcXG4gNDE5OlxcdFxcdHU4ICpjbGNfYmFzZSA9IE5VTEwsIGh3X2VuY2FwID0gMDtcXG4gNDIwOlxcdFxcbiA0MjE6XFx0XFx0ZGV2LVxcdTAwM2VwaHkuY2xjX2NoYW5fY29uZiA9IDB4ZmY7XFxuIDQyMjpcXHRcXHRkZXYtXFx1MDAzZXJlZ2RfdXNlciA9IGZhbHNlO1xcbiA0MjM6XFx0XFx0aWYgKCFtdDc5MjFfcmVnZF9jbGNfc3VwcG9ydGVkKGRldikpXFxuIDQyNDpcXHRcXHRcXHRyZXR1cm4gMDtcXG4gNDI1OlxcdFxcbiA0MjY6XFx0XFx0aWYgKG10NzZfaXNfbW1pbyhcXHUwMDI2ZGV2LVxcdTAwM2VtdDc2KSkge1xcbiA0Mjc6XFx0XFx0XFx0cmV0ID0gbXQ3OTIxX21jdV9yZWFkX2VlcHJvbShkZXYsIE1UX0VFX0hXX1RZUEUsIFxcdTAwMjZod19lbmNhcCk7XFxuIDQyODpcXHRcXHRcXHRpZiAocmV0KVxcbiA0Mjk6XFx0XFx0XFx0XFx0cmV0dXJuIHJldDtcXG4gNDMwOlxcdFxcdFxcdGh3X2VuY2FwID0gdThfZ2V0X2JpdHMoaHdfZW5jYXAsIE1UX0VFX0hXX1RZUEVfRU5DQVApO1xcbiA0MzE6XFx0XFx0fVxcbiA0MzI6XFx0XFxuIDQzMzpcXHRcXHRyZXQgPSByZXF1ZXN0X2Zpcm13YXJlKFxcdTAwMjZmdywgZndfbmFtZSwgbWRldi1cXHUwMDNlZGV2KTtcXG4gNDM0OlxcdFxcdGlmIChyZXQpXFxuIDQzNTpcXHRcXHRcXHRyZXR1cm4gcmV0O1xcbiA0MzY6XFx0XFxuIDQzNzpcXHRcXHRpZiAoIWZ3IHx8ICFmdy1cXHUwMDNlZGF0YSB8fCBmdy1cXHUwMDNlc2l6ZSBcXHUwMDNjIHNpemVvZigqaGRyKSkge1xcbiA0Mzg6XFx0XFx0XFx0ZGV2X2VycihtZGV2LVxcdTAwM2VkZXYsIFxcXCJJbnZhbGlkIGZpcm13YXJlXFxcXG5cXFwiKTtcXG4gNDM5OlxcdFxcdFxcdHJldCA9IC1FSU5WQUw7XFxuIDQ0MDpcXHRcXHRcXHRnb3RvIG91dDtcXG4gNDQxOlxcdFxcdH1cXG4gNDQyOlxcdFxcbiA0NDM6XFx0XFx0aGRyID0gKGNvbnN0IHZvaWQgKikoZnctXFx1MDAzZWRhdGEgKyBmdy1cXHUwMDNlc2l6ZSAtIHNpemVvZigqaGRyKSk7XFxuIDQ0NDpcXHRcXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgaGRyLVxcdTAwM2VuX3JlZ2lvbjsgaSsrKSB7XFxuIDQ0NTpcXHRcXHRcXHRyZWdpb24gPSAoY29uc3Qgdm9pZCAqKSgoY29uc3QgdTggKiloZHIgLVxcbiA0NDY6XFx0XFx0XFx0XFx0XFx0XFx0KGhkci1cXHUwMDNlbl9yZWdpb24gLSBpKSAqIHNpemVvZigqcmVnaW9uKSk7XFxuIDQ0NzpcXHRcXHRcXHRsZW4gPSBsZTMyX3RvX2NwdShyZWdpb24tXFx1MDAzZWxlbik7XFxuIDQ0ODpcXHRcXG4gNDQ5OlxcdFxcdFxcdC8qIGNoZWNrIGlmIHdlIGhhdmUgdmFsaWQgYnVmZmVyIHNpemUgKi9cXG4gNDUwOlxcdFxcdFxcdGlmIChvZmZzZXQgKyBsZW4gXFx1MDAzZSBmdy1cXHUwMDNlc2l6ZSkge1xcbiA0NTE6XFx0XFx0XFx0XFx0ZGV2X2VycihtZGV2LVxcdTAwM2VkZXYsIFxcXCJJbnZhbGlkIGZpcm13YXJlIHJlZ2lvblxcXFxuXFxcIik7XFxuIDQ1MjpcXHRcXHRcXHRcXHRyZXQgPSAtRUlOVkFMO1xcbiA0NTM6XFx0XFx0XFx0XFx0Z290byBvdXQ7XFxuIDQ1NDpcXHRcXHRcXHR9XFxuIDQ1NTpcXHRcXG4gNDU2OlxcdFxcdFxcdGlmICgocmVnaW9uLVxcdTAwM2VmZWF0dXJlX3NldCBcXHUwMDI2IEZXX0ZFQVRVUkVfTk9OX0RMKSBcXHUwMDI2XFx1MDAyNlxcbiA0NTc6XFx0XFx0XFx0ICAgIHJlZ2lvbi1cXHUwMDNldHlwZSA9PSBGV19UWVBFX0NMQykge1xcbiA0NTg6XFx0XFx0XFx0XFx0Y2xjX2Jhc2UgPSAodTggKikoZnctXFx1MDAzZWRhdGEgKyBvZmZzZXQpO1xcbiA0NTk6XFx0XFx0XFx0XFx0YnJlYWs7XFxuIDQ2MDpcXHRcXHRcXHR9XFxuIDQ2MTpcXHRcXHRcXHRvZmZzZXQgKz0gbGVuO1xcbiA0NjI6XFx0XFx0fVxcbiA0NjM6XFx0XFxuIDQ2NDpcXHRcXHRpZiAoIWNsY19iYXNlKVxcbiA0NjU6XFx0XFx0XFx0Z290byBvdXQ7XFxuIDQ2NjpcXHRcXG4gNDY3OlxcdFxcdGZvciAob2Zmc2V0ID0gMDsgb2Zmc2V0IFxcdTAwM2MgbGVuOyBvZmZzZXQgKz0gbGUzMl90b19jcHUoY2xjLVxcdTAwM2VsZW4pKSB7XFxuIDQ2ODpcXHRcXHRcXHRjbGMgPSAoY29uc3Qgc3RydWN0IG10NzkyMV9jbGMgKikoY2xjX2Jhc2UgKyBvZmZzZXQpO1xcbiA0Njk6XFx0XFxuIDQ3MDpcXHRcXHRcXHQvKiBkbyBub3QgaW5pdCBidWYgYWdhaW4gaWYgY2hpcCByZXNldCB0cmlnZ2VyZWQgKi9cXG4gNDcxOlxcdFxcdFxcdGlmIChwaHktXFx1MDAzZWNsY1tjbGMtXFx1MDAzZWlkeF0pXFxuIDQ3MjpcXHRcXHRcXHRcXHRjb250aW51ZTtcXG4gNDczOlxcdFxcbiA0NzQ6XFx0XFx0XFx0LyogaGVhZGVyIGNvbnRlbnQgc2FuaXR5ICovXFxuIDQ3NTpcXHRcXHRcXHRpZiAoY2xjLVxcdTAwM2VpZHggPT0gTVQ3OTIxX0NMQ19QT1dFUiBcXHUwMDI2XFx1MDAyNlxcbiA0NzY6XFx0XFx0XFx0ICAgIHU4X2dldF9iaXRzKGNsYy1cXHUwMDNldHlwZSwgTVRfRUVfSFdfVFlQRV9FTkNBUCkgIT0gaHdfZW5jYXApXFxuIDQ3NzpcXHRcXHRcXHRcXHRjb250aW51ZTtcXG4gNDc4OlxcdFxcbiA0Nzk6XFx0XFx0XFx0aWYgKGNsYy1cXHUwMDNlaWR4ID09IE1UNzkyMV9DTENfUkVHRCBcXHUwMDI2XFx1MDAyNlxcbiA0ODA6XFx0XFx0XFx0ICAgIHU4X2dldF9iaXRzKGNsYy1cXHUwMDNldHlwZSwgTVRfRUVfSFdfVFlQRV9FTkNBUCkgIT0gaHdfZW5jYXApXFxuIDQ4MTpcXHRcXHRcXHRcXHRjb250aW51ZTtcXG4gNDgyOlxcdFxcbiA0ODM6XFx0XFx0XFx0cGh5LVxcdTAwM2VjbGNbY2xjLVxcdTAwM2VpZHhdID0gZGV2bV9rbWVtZHVwKG1kZXYtXFx1MDAzZWRldiwgY2xjLFxcbiA0ODQ6XFx0XFx0XFx0XFx0XFx0XFx0XFx0ICBsZTMyX3RvX2NwdShjbGMtXFx1MDAzZWxlbiksXFxuIDQ4NTpcXHRcXHRcXHRcXHRcXHRcXHRcXHQgIEdGUF9LRVJORUwpO1xcbiA0ODY6XFx0XFxuIDQ4NzpcXHRcXHRcXHRpZiAoIXBoeS1cXHUwMDNlY2xjW2NsYy1cXHUwMDNlaWR4XSkge1xcbiA0ODg6XFx0XFx0XFx0XFx0cmV0ID0gLUVOT01FTTtcXG4gNDg5OlxcdFxcdFxcdFxcdGdvdG8gb3V0O1xcbiA0OTA6XFx0XFx0XFx0fVxcbiA0OTE6XFx0XFx0fVxcbiA0OTI6XFx0XFxuIDQ5MzpcXHRcXHRyZXQgPSBtdDc5MjFfcmVnZF9pbml0KHBoeSk7XFxuIDQ5NDpcXHRvdXQ6XFxuIDQ5NTpcXHRcXHRyZWxlYXNlX2Zpcm13YXJlKGZ3KTtcXG4gNDk2OlxcdFxcbiA0OTc6XFx0XFx0cmV0dXJuIHJldDtcXG4gNDk4OlxcdH1cXG4gNDk5OlxcdFxcbiA1MDA6XFx0c3RhdGljIHZvaWQgbXQ3OTIxX21jdV9wYXJzZV90eF9yZXNvdXJjZShzdHJ1Y3QgbXQ3Nl9kZXYgKmRldixcXG4gNTAxOlxcdFxcdFxcdFxcdFxcdFxcdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbiA1MDI6XFx0e1xcbiA1MDM6XFx0XFx0c3RydWN0IG10NzZfc2RpbyAqc2RpbyA9IFxcdTAwMjZkZXYtXFx1MDAzZXNkaW87XFxuIDUwNDpcXHRcXHRzdHJ1Y3QgbXQ3OTIxX3R4X3Jlc291cmNlIHtcXG4gNTA1OlxcdFxcdFxcdF9fbGUzMiB2ZXJzaW9uO1xcbiA1MDY6XFx0XFx0XFx0X19sZTMyIHBzZV9kYXRhX3F1b3RhO1xcbiA1MDc6XFx0XFx0XFx0X19sZTMyIHBzZV9tY3VfcXVvdGE7XFxuIDUwODpcXHRcXHRcXHRfX2xlMzIgcGxlX2RhdGFfcXVvdGE7XFxuIDUwOTpcXHRcXHRcXHRfX2xlMzIgcGxlX21jdV9xdW90YTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMTI6NDM6MjQuNDk3MTA2MzU5WiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU3MzQ2MzA1NzcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgUG90ZW50aWFsIEZ1enppbmcgVGFyZ2V0OiBgbXQ3OTIxX2xvYWRfY2xjYCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggdGhhdCBpbnRyb2R1Y2VzIGEgY2hlY2sgZm9yIGBjbGMtXHUwMDNlaWR4ID09IE1UNzkyMV9DTENfUkVHRGAuIFRoaXMgY2hlY2sgaXMgd2l0aGluIHRoZSBgbXQ3OTIxX2xvYWRfY2xjYCBmdW5jdGlvbiwgd2hpY2ggZ2V0cyBjYWxsZWQgZHVyaW5nIGRldmljZSBpbml0aWFsaXphdGlvbi4gVGhlIGltbWVkaWF0ZSBxdWVzdGlvbiBpcywgY2FuIEkgZXZlbiByZWFjaCB0aGlzIGNvZGUgaW4gYSBRRU1VIGVudmlyb25tZW50PyBHaXZlbiB0aGF0IHRoaXMgaXMgYSBVU0ItY29ubmVjdGVkIGRldmljZSwgdGhlIGFuc3dlciBpcyBtb3N0IGxpa2VseSB5ZXMsIHBhcnRpY3VsYXJseSB3aXRoIFVTQiBnYWRnZXQgZnV6emluZy5cblxuTm93LCBgbXQ3OTIxX2xvYWRfY2xjYCBtYWtlcyBhIGNhbGwgdG8gYHJlcXVlc3RfZmlybXdhcmVgLCB3aGljaCBnaXZlcyBtZSBwYXVzZS4gSWYgdGhlIHJlbGV2YW50IGZpcm13YXJlIGlzbid0IHByZXNlbnQgaW4gdGhlIHJvb3QgZmlsZXN5c3RlbSwgYHJlcXVlc3RfZmlybXdhcmVgIGlzIGdvaW5nIHRvIGZhaWwsIGFuZCB0aGUgc3Vic2VxdWVudCBjb2RlIGluIHRoZSBmdW5jdGlvbiB3b24ndCBleGVjdXRlLiBIb3dldmVyLCBhbmQgdGhpcyBpcyBjcnVjaWFsLCBzeXprYWxsZXIgKmNhbiogcHJvdmlkZSBmaXJtd2FyZSBmaWxlcywgb3IgcG90ZW50aWFsbHksIHV0aWxpemUgaXRzIGByZXF1ZXN0X2Zpcm13YXJlYCBmdXp6aW5nIGNhcGFiaWxpdGllcy4gSSBuZWVkIHRvIGtlZXAgdGhpcyBpbiBtaW5kIGFzIEkgYnVpbGQgdGhlIGNvcnB1cy5cblxuV2FpdCBhIHNlY29uZCwgc3l6a2FsbGVyIGRvZXNuJ3QgdHlwaWNhbGx5IHByb3ZpZGUgc3BlY2lmaWMgZmlybXdhcmUgZmlsZXMgZm9yIGV2ZXJ5IHNpbmdsZSBkcml2ZXIgdW5sZXNzIHRoZXkgaGFwcGVuIHRvIGJlIGluIGxpbnV4LWZpcm13YXJlIGFuZCBwYXJ0IG9mIHRoZSBpbWFnZS4gQnV0IGV2ZW4gaWYgdGhlIGZpcm13YXJlIHJlcXVlc3QgZmFpbHMsIHRoZSBgbXQ3OTIxX2xvYWRfY2xjYCBmdW5jdGlvbiBpdHNlbGYgd2lsbCBzdGlsbCBiZSAqZXhlY3V0ZWQqIHdoaWNoIG1lYW5zIGl0J3Mgc3RpbGwgd29ydGggZnV6emluZy4gSXQncyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHdpdGhpbiBhIGRyaXZlciwgYW5kIEkgY2FuIHRyaWdnZXIgaXQgdmlhIFVTQi4gRGVmaW5pdGVseSBhIGdvb2QgY2FuZGlkYXRlIVxuXG5Pa2F5LCB0aW1lIHRvIGNoZWNrIHRoZSBjb25maWcgb3B0aW9ucy4gSSdsbCBuZWVkIHRvIG1ha2Ugc3VyZSBJIGhhdmUgYWxsIHRoZSBuZWNlc3Nhcnkgb3B0aW9ucyBlbmFibGVkIHRvIGVuc3VyZSB0aGlzIGRyaXZlciBpcyBjb21waWxlZCBhbmQgcmVhY2hhYmxlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo3NjY0LCJPdXRwdXRUb2tlbnMiOjQ2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjI3LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMTI6NDM6MzAuMjMxNzM5NDA3WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDU3NzQyMzQsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiTVQ3OTIxXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0zLUNsYXVzZS1DbGVhclxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL0tjb25maWc6Mjpjb25maWcgTVQ3OTIxX0NPTU1PTlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL0tjb25maWctMy1cXHR0cmlzdGF0ZVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvS2NvbmZpZy02LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL0tjb25maWc6Nzpjb25maWcgTVQ3OTIxRVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL0tjb25maWc6ODpcXHR0cmlzdGF0ZSBcXFwiTWVkaWFUZWsgTVQ3OTIxRSAoUENJZSkgc3VwcG9ydFxcXCJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9LY29uZmlnOjk6XFx0c2VsZWN0IE1UNzkyMV9DT01NT05cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9LY29uZmlnLTEwLVxcdGRlcGVuZHMgb24gTUFDODAyMTFcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL0tjb25maWctMTItXFx0aGVscFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL0tjb25maWc6MTM6XFx0ICBUaGlzIGFkZHMgc3VwcG9ydCBmb3IgTVQ3OTIxRSA4MDIuMTFheCAyeDI6MlNTIHdpcmVsZXNzIGRldmljZXMuXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvS2NvbmZpZy0xNC1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL0tjb25maWctMTYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvS2NvbmZpZzoxNzpjb25maWcgTVQ3OTIxU1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL0tjb25maWc6MTg6XFx0dHJpc3RhdGUgXFxcIk1lZGlhVGVrIE1UNzkyMVMgKFNESU8pIHN1cHBvcnRcXFwiXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvS2NvbmZpZy0xOS1cXHRzZWxlY3QgTVQ3Nl9TRElPXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvS2NvbmZpZzoyMDpcXHRzZWxlY3QgTVQ3OTIxX0NPTU1PTlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL0tjb25maWctMjEtXFx0ZGVwZW5kcyBvbiBNQUM4MDIxMVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvS2NvbmZpZy0yMy1cXHRoZWxwXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvS2NvbmZpZzoyNDpcXHQgIFRoaXMgYWRkcyBzdXBwb3J0IGZvciBNVDc5MjFTIDgwMi4xMWF4IDJ4MjoyU1Mgd2lyZWxlc3MgZGV2aWNlcy5cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9LY29uZmlnLTI1LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvS2NvbmZpZy0yNy1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9LY29uZmlnOjI4OmNvbmZpZyBNVDc5MjFVXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvS2NvbmZpZzoyOTpcXHR0cmlzdGF0ZSBcXFwiTWVkaWFUZWsgTVQ3OTIxVSAoVVNCKSBzdXBwb3J0XFxcIlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL0tjb25maWctMzAtXFx0c2VsZWN0IE1UNzkyeF9VU0JcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9LY29uZmlnOjMxOlxcdHNlbGVjdCBNVDc5MjFfQ09NTU9OXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvS2NvbmZpZy0zMi1cXHRkZXBlbmRzIG9uIE1BQzgwMjExXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9LY29uZmlnLTM0LVxcdGhlbHBcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9LY29uZmlnOjM1OlxcdCAgVGhpcyBhZGRzIHN1cHBvcnQgZm9yIE1UNzkyMVUgODAyLjExYXggMngyOjJTUyB3aXJlbGVzcyBkZXZpY2VzLlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL0tjb25maWctMzYtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDEyOjQzOjMwLjMzNzUxODkzMVoiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNzYxNzkwMDQyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEN1cnJlbnQgVGFzazogVVNCIFRlc3Rpbmcgd2l0aCBNVDc5MjFVKipcblxuT2theSwgc28gdGhlIGltbWVkaWF0ZSBuZWVkIGlzIHRvIGdldCB0aGlzIGBNVDc5MjFVYCB0ZXN0ZWQgcHJvcGVybHkgb3ZlciBVU0IuIFRoYXQncyB0aGUgYmFzZWxpbmUuIEJhc2VkIG9uIHRoZSByZXF1aXJlbWVudHMsIEkga25vdyBgTVQ3OTIxX0NPTU1PTmAgd2lsbCBiZSB0aGUgY29ycmVjdCBjb25maWd1cmF0aW9uIHRvIHNlbGVjdC4gTm93LCB0byBtYWtlIHN1cmUgZXZlcnl0aGluZyBsaW5lcyB1cCwgSSBuZWVkIHRvIG1ldGhvZGljYWxseSB2ZXJpZnkgdGhlIHJlbGV2YW50IGRlcGVuZGVuY2llcyBhbmQgY29tcG9uZW50cy4gSSdsbCBuZWVkIHRvIGRpZyBpbnRvIHRoZSBgTVQ3OTJ4X1VTQmAgY29kZSB0byBzZWUgaG93IGl0IHNwZWNpZmljYWxseSBoYW5kbGVzIHRoZSBVU0IgaW50ZXJmYWNlIGZvciB0aGlzIHBhcnRpY3VsYXIgY2hpcC4gTmF0dXJhbGx5LCBJIHNob3VsZCByZXZpZXcgdGhlIGBNQUM4MDIxMWAgaW50ZWdyYXRpb24sIG1ha2luZyBzdXJlIHRoZSBVU0IgdHJhbnNwb3J0IGlzIGNvcnJlY3RseSBpbXBsZW1lbnRlZCB3aXRoaW4gdGhlIHdpcmVsZXNzIHN0YWNrLiBGaW5hbGx5LCBJJ2xsIG5lZWQgdG8gcGVyZm9ybSBhIGdlbmVyYWwgVVNCIHN5c3RlbSBpbnNwZWN0aW9uIGluIGNhc2UgdGhlcmUgYXJlIGFueSB1bmRlcmx5aW5nIHByb2JsZW1zIG9yIGNvbmZpZ3VyYXRpb25zIHRoYXQgbmVlZCBhZGp1c3RtZW50LlxuXG5cbiIsIklucHV0VG9rZW5zIjo5MzQzLCJPdXRwdXRUb2tlbnMiOjQxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMTI6NDM6MzQuMDk5MzE4ODkzWiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNjQ4NTc3MDEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIE1UNzkyeF9VU0JcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9LY29uZmlnPTMyPWNvbmZpZyBNVDc5MnhfTElCXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L0tjb25maWctMzUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9LY29uZmlnOjM2OmNvbmZpZyBNVDc5MnhfVVNCXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9LY29uZmlnLTM3LVxcdHRyaXN0YXRlXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDEyOjQzOjM0LjI2NDE4MjA5NFoiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1MDQxMDExMjI1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgTVQ3OTIxVSBGaXJtd2FyZSBMb2FkaW5nIFByb2Nlc3MqKlxuXG5Pa2F5LCBzbyB0aGUgaW5pdGlhbCBhc3Nlc3NtZW50IGlzIHRoYXQgdGhlIGBNVDc5MjFVYCBzaG91bGQgc3VmZmljZSBmb3IgdGhpcyBhbmFseXNpcy4gTm93LCBsZXQncyBzZWUsIHRoZSBmdW5jdGlvbiBgbXQ3OTIxX2xvYWRfY2xjYC4uLiByaWdodCwgaXQncyBhIHN0YXRpYyBmdW5jdGlvbi4gVGhhdCdzIGdvb2QgdG8ga25vdywgYnV0IGxldCdzIGNvbnNpZGVyIHRoZSBpbXBsaWNhdGlvbnMuIEFoYSwgd2FpdCBhIG1pbnV0ZSwgdGhlIGBtdDc5MjFfcnVuX2Zpcm13YXJlYCBmdW5jdGlvbiBpcyBhY3R1YWxseSAqZXhwb3J0ZWQqIGFuZCBpdCBjYWxscyBgbXQ3OTIxX2xvYWRfY2xjYC4gVGhlcmVmb3JlLCBgbXQ3OTIxX3J1bl9maXJtd2FyZWAgYmVjb21lcyB0aGUgY2VudHJhbCBmb2N1cyBmb3IgbXkgaW52ZXN0aWdhdGlvbnMuIExldCdzIG1ha2Ugc3VyZSBJJ20gbm90IG1pc3NpbmcgYW55dGhpbmcgYW5kIGRvdWJsZS1jaGVjayBhbGwgYXNwZWN0cyBvZiBob3cgYG10NzkyMV9ydW5fZmlybXdhcmVgIGlzIGltcGxlbWVudGVkLlxuXG5cbiIsIklucHV0VG9rZW5zIjo5NzM1LCJPdXRwdXRUb2tlbnMiOjUzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTA4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDEyOjQzOjM5LjMwNTE5NjAxOFoiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTM0ODc5NzUyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm10NzkyMV9ydW5fZmlybXdhcmVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWN1LmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWN1LmM9NjI2PWludCBtdDc5MjFfbWN1X2Z3X2xvZ18yX2hvc3Qoc3RydWN0IG10NzkyeF9kZXYgKmRldiwgdTggY3RybClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21jdS5jLTYzOC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tY3UuYzo2Mzk6aW50IG10NzkyMV9ydW5fZmlybXdhcmUoc3RydWN0IG10NzkyeF9kZXYgKmRldilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tY3UuYy02NDAte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWN1LmMtNjU3LX1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tY3UuYzo2NTg6RVhQT1JUX1NZTUJPTF9HUEwobXQ3OTIxX3J1bl9maXJtd2FyZSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWN1LmMtNjU5LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNVQxMjo0MzozOS40NDAwODQ2MDFaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTU0NTU2NzgyOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2Uga2V5IGZ1bmN0aW9ucywga2VlcGluZyBpbiBtaW5kIG15IGV4cGVydGlzZTpcblxuKipNeSBJbW1lZGlhdGUgQXNzZXNzbWVudDogS2V5IEVudHJ5IFBvaW50cyBmb3IgTVQ3OTIxIFVuZGVyc3RhbmRpbmcqKlxuXG5SaWdodCwgc28gYG10NzkyMV9ydW5fZmlybXdhcmVgLi4udGhhdCdzIGFuIGV4Y2VsbGVudCBzdGFydGluZyBwb2ludC4gVGhhdCBmdW5jdGlvbiBsaWtlbHkgaGFuZGxlcyB0aGUgY3J1Y2lhbCB0YXNrIG9mIGdldHRpbmcgdGhlIGZpcm13YXJlIGxvYWRlZCBhbmQgcnVubmluZyBvbiB0aGUgTVQ3OTIxIGNoaXAuIFVuZGVyc3RhbmRpbmcgaXRzIGZsb3cgYW5kIGludGVyYWN0aW9ucyBpcyBwYXJhbW91bnQuIEknZCBleHBlY3QgaXQgdG8gb3JjaGVzdHJhdGUgdGhlIGluaXRpYWwgY29tbXVuaWNhdGlvbiwgcG9zc2libHkgaGFuZGxlIGFueSByZXF1aXJlZCBwcmUtZmlybXdhcmUgaW5pdGlhbGl6YXRpb24sIHRoZW4gdGhlIGFjdHVhbCB0cmFuc2ZlciBhbmQgZXhlY3V0aW9uIG9mIHRoZSBmaXJtd2FyZSBpdHNlbGYuIEFueSBlcnJvciBoYW5kbGluZyBvciByZXRyeSBtZWNoYW5pc21zIGltcGxlbWVudGVkIHdpdGhpbiBpdCBhcmUgZ29pbmcgdG8gYmUga2V5IHRvIGRlYnVnZ2luZyBjb25uZWN0aW9uIGlzc3Vlcy5cblxuSSdtIGFsc28gbm90aW5nIHRoZSBpbXBvcnRhbmNlIG9mIGBtdDc5MjF1X21jdV9pbml0YCBhbmQgYG10NzkyMXVfbWFjX3Jlc2V0YCB3aXRoaW4gYHVzYi5jYC4gVGhlIGZhY3QgdGhleSdyZSBpbiB0aGUgVVNCIGNvbnRleHQgc3BlY2lmaWNhbGx5IHN1Z2dlc3RzIHRoZXkgZGVhbCB3aXRoIHRoZSBVU0Itc3BlY2lmaWMgaW5pdGlhbGl6YXRpb24gYW5kIHJlc2V0IHJvdXRpbmVzIGZvciB0aGUgTVQ3OTIxLiBJJ2xsIG5lZWQgdG8gbG9vayBhdCB3aGF0IHRoZXkgZG8gaW4gc2VxdWVuY2UuIEkgd291bGQgZXhwZWN0IHRoZXNlIGZ1bmN0aW9ucyB0byBoYW5kbGUgdGhlIGxvdy1sZXZlbCBVU0Igc2V0dXAsIHBvc3NpYmx5IGluY2x1ZGluZyB0aGluZ3MgbGlrZSBlbmRwb2ludCBjb25maWd1cmF0aW9uLCBkZXNjcmlwdG9yIHNldHVwLCBhbmQgYW55IHJlcXVpcmVkIFVTQi1zcGVjaWZpYyBoYW5kc2hha2UgcHJvdG9jb2xzIHdpdGggdGhlIGhvc3QuIEEgd2VsbCBpbXBsZW1lbnRlZCBNQUMgcmVzZXQgY291bGQgYmUga2V5IHRvIHRyb3VibGVzaG9vdGluZyBpbnRlcm1pdHRlbnQgZGV2aWNlIGNvbm5lY3Rpdml0eSBpc3N1ZXMuIEkga25vdyBpdCdzIGxpa2VseSB0aGV5IGFyZSBnb2luZyB0byBpbnRlcmFjdCBjbG9zZWx5IHdpdGggdGhlIFVTQiBkcml2ZXIgc3RhY2ssIHNvIHRoYXQncyBzb21ldGhpbmcgdG8gaW52ZXN0aWdhdGUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEwMzY5LCJPdXRwdXRUb2tlbnMiOjUzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMTI6NDM6NDQuOTg1NjU1NjQ5WiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNjM0Mjg4ODEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibXQ3OTIxdV9tY3VfaW5pdFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS91c2IuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS91c2IuYz0zNj1tdDc5MjF1X21jdV9zZW5kX21lc3NhZ2Uoc3RydWN0IG10NzZfZGV2ICptZGV2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvdXNiLmMtNjQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvdXNiLmM6NjU6c3RhdGljIGludCBtdDc5MjF1X21jdV9pbml0KHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvdXNiLmMtNjYte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvdXNiLmM9MTUwPXN0YXRpYyBpbnQgbXQ3OTIxdV9wcm9iZShzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqdXNiX2ludGYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS91c2IuYy0xNzEtXFx0c3RhdGljIGNvbnN0IHN0cnVjdCBtdDc5MnhfaGlmX29wcyBoaWZfb3BzID0ge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3VzYi5jOjE3MjpcXHRcXHQubWN1X2luaXQgPSBtdDc5MjF1X21jdV9pbml0LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3VzYi5jLTE3My1cXHRcXHQuaW5pdF9yZXNldCA9IG10NzkyeHVfaW5pdF9yZXNldCxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMTI6NDM6NDUuMTQ5MDk2NDgxWiIsIlNlcSI6MTksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ2MDY4Mjc2MTcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0YWtlIG9uIHRoZSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIGl0IHdlcmUgbXkgb3duOlxuXG4qKlN0YXRpYyB2cy4gTm9uLVN0YXRpYyBpbiB0aGUgbXQ3OTIxdSBEcml2ZXIqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGUgYG10NzkyMXVgIGRyaXZlciBjb2RlIGFnYWluLiBJIHNlZSBgbXQ3OTIxdV9tY3VfaW5pdGAuIEFoYSwgaXQncyBkZWZpbmVkIGFzIGBzdGF0aWNgLiBSaWdodCwgdGhhdCBtYWtlcyBzZW5zZTsgaXQncyBhbiBpbnRlcm5hbCBmdW5jdGlvbiwgcHJvYmFibHkgb25seSBjYWxsZWQgd2l0aGluIHRoaXMgc3BlY2lmaWMgY29tcGlsYXRpb24gdW5pdC4gTm8gYmlnIGRlYWwuIE5vdywgbGV0J3Mgc2VlLCB3aGF0IHdhcyBJIHRyeWluZyB0byBmaWd1cmUgb3V0IGFnYWluPyBPaCwgcmlnaHQsIGBtdDc5MjF1X3Byb2JlYC4gSG1tbSwgd2FpdCBhIG1pbnV0ZS4uLiBgbXQ3OTIxdV9wcm9iZWAgaXNuJ3Qgc3RhdGljLiBUaGF04oCZcyBpbnRlcmVzdGluZy4gR2l2ZW4gdGhlIGZ1bmN0aW9uJ3MgbmFtZSBhbmQgcHVycG9zZSAocHJvYmUgZnVuY3Rpb24pLCBpdCBpcyBleHBvc2VkIHRvIHRoZSBrZXJuZWwuIFRoaXMgaXMgd29ydGggbm90aW5nLCBhbmQgSSBzaG91bGQgY29uc2lkZXIgYW55IGltcGxpY2F0aW9ucyBvZiB0aGlzIGRlc2lnbi4gSXMgdGhlcmUgYSByZWFzb24gd2h5IHRoaXMgcGFydGljdWxhciBmdW5jdGlvbiBpc24ndCBzdGF0aWM/IElzIGl0IG1lYW50IHRvIGJlIGNhbGxlZCBmcm9tIG90aGVyIG1vZHVsZXMsIG9yIGlzIGl0IGltcGxpY2l0bHkgbWVhbnQgdG8gYmUgcGFydCBvZiB0aGUga2VybmVsJ3MgZGV2aWNlIHByb2Jpbmcgc3lzdGVtPyBJIHNob3VsZCBsb29rIGludG8gdGhlIGNhbGwgZ3JhcGggZm9yIGBtdDc5MjF1X3Byb2JlYCB0byBjb25maXJtIHRoYXQgaXQncyBjYWxsZWQgcHJvcGVybHkgYnkgdGhlIGFwcHJvcHJpYXRlIHByb2JlIG1lY2hhbmlzbXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjExMTUyLCJPdXRwdXRUb2tlbnMiOjUwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMTI6NDM6NDkuNzU1OTI4MDE4WiIsIlNlcSI6MjAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozNzI0MjM2MDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibXQ3OTIxdV9wcm9iZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS91c2IuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS91c2IuYz04OT1zdGF0aWMgaW50IG10NzkyMXVfbWFjX3Jlc2V0KHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS91c2IuYy0xNDktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvdXNiLmM6MTUwOnN0YXRpYyBpbnQgbXQ3OTIxdV9wcm9iZShzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqdXNiX2ludGYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvdXNiLmMtMTUxLVxcdFxcdFxcdCBjb25zdCBzdHJ1Y3QgdXNiX2RldmljZV9pZCAqaWQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS91c2IuYz0zMzg9c3RhdGljIHN0cnVjdCB1c2JfZHJpdmVyIG10NzkyMXVfZHJpdmVyID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvdXNiLmMtMzQwLVxcdC5pZF90YWJsZVxcdD0gbXQ3OTIxdV9kZXZpY2VfdGFibGUsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvdXNiLmM6MzQxOlxcdC5wcm9iZVxcdFxcdD0gbXQ3OTIxdV9wcm9iZSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS91c2IuYy0zNDItXFx0LmRpc2Nvbm5lY3RcXHQ9IG10NzkyeHVfZGlzY29ubmVjdCxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMTI6NDM6NTAuMTI4MzU3MDE4WiIsIlNlcSI6MjEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ1Mzc1MDM0NDEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRm9jdXNpbmcgb24gdGhlIE1UNzkyMVUgRHJpdmVyJ3MgRXhlY3V0aW9uIEZsb3cqKlxuXG5Pa2F5LCBzbyBgbXQ3OTIxdV9wcm9iZWAgaXMgYSBzdGF0aWMgZnVuY3Rpb24gd2l0aGluIHRoaXMgZHJpdmVyLCB0aGF0J3Mgbm90IGdvaW5nIHRvIGJlIGEga2V5IGVudHJ5IHBvaW50IGZvciBleHRlcm5hbCBpbnNwZWN0aW9uLiBIb3dldmVyLCBgbXQ3OTIxX3J1bl9maXJtd2FyZWAgaXMgZXhwbGljaXRseSBleHBvcnRlZCwgbWFraW5nIGl0IGFuIGV4Y2VsbGVudCBzeW1ib2wgdG8gY2VudGVyIG15IGFuYWx5c2lzIGFyb3VuZC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIHBhdGggb2YgZXhlY3V0aW9uIHRoYXQgZmxvd3MgZnJvbSBgbXQ3OTIxX3J1bl9maXJtd2FyZWAuIEl0IHNlZW1zIGxpa2UgdGhlIGNvcmUgZnVuY3Rpb24gZm9yIGxvYWRpbmcgYW5kIHN0YXJ0aW5nIHRoZSBkZXZpY2UgZmlybXdhcmUuIEknbGwgbmVlZCB0byBjaGVjayBpZiB0aGVyZSBhcmUgb3RoZXIgZXhwb3J0ZWQgZnVuY3Rpb25zIHRoYXQgbWlnaHQgb2ZmZXIgYWRkaXRpb25hbCBpbnNpZ2h0cy4gTGV0IG1lIHJlLWV4YW1pbmUgdGhlIGludGVybmFscyBvZiBgbXQ3OTIxX2xvYWRfY2xjYCBxdWlja2x5IHRvIG1ha2Ugc3VyZSBJIGRpZCBub3QgbWlzcyBhbnl0aGluZyBwcmV2aW91c2x5LiBOb3BlLCBzdGlsbCBzdGF0aWMuXG5cbk5vdywgbGV0J3MgcmVmb2N1cyBvbiB0aGUgZXhwb3J0ZWQgZnVuY3Rpb24gYG10NzkyMV9ydW5fZmlybXdhcmVgLiBJcyB0aGVyZSBhbnkgb3RoZXIgZnVuY3Rpb24gdGhhdCBtaWdodCBiZSBleHBvcnRlZCBhbmQgbGlua2VkIHdpdGggdGhpcz8gSSBzaG91bGQgc2VlIGlmIHRoZXJlIGlzIGFueSBvdGhlciBmdW5jdGlvbiB0aGF0IGRpcmVjdGx5IGxlYWRzIGludG8gdGhlIGZpcm13YXJlIHJ1bi4gT2theSwgSSd2ZSBnb3QgaXQsIHdoYXQgYWJvdXQgYG10NzkyMV9yZWdkX2luaXRgPyBJJ2xsIG5lZWQgdG8gbG9vayBhdCB0aGF0IG9uZSBhcyB3ZWxsIHRvIHNlZSBpZiBpdCBwbGF5cyBhbnkgcGFydCBpbiBpbml0aWFsaXphdGlvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6MTE4NjQsIk91dHB1dFRva2VucyI6NDksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMTEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMTI6NDM6NTQuNjY1ODYzODY5WiIsIlNlcSI6MjIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNzg0Njk3MjY2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm10NzkyMV9yZWdkX2luaXRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21jdS5jPTQxMD1zdGF0aWMgaW50IG10NzkyMV9sb2FkX2NsYyhzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2LCBjb25zdCBjaGFyICpmd19uYW1lKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWN1LmMtNDkyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21jdS5jOjQ5MzpcXHRyZXQgPSBtdDc5MjFfcmVnZF9pbml0KHBoeSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWN1LmMtNDk0LW91dDpcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3JlZ2QuYz0xNjQ9aW50IG10NzkyMV9yZWdkX2NoYW5nZShzdHJ1Y3QgbXQ3OTJ4X3BoeSAqcGh5LCBjaGFyICphbHBoYTIpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9yZWdkLmMtMTkxLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3JlZ2QuYzoxOTI6aW50IG10NzkyMV9yZWdkX2luaXQoc3RydWN0IG10NzkyeF9waHkgKnBoeSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9yZWdkLmMtMTkzLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3JlZ2QuaD0xNj1pbnQgbXQ3OTIxX3JlZ2RfY2hhbmdlKHN0cnVjdCBtdDc5MnhfcGh5ICpwaHksIGNoYXIgKmFscGhhMik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvcmVnZC5oOjE3OmludCBtdDc5MjFfcmVnZF9pbml0KHN0cnVjdCBtdDc5MnhfcGh5ICpwaHkpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3JlZ2QuaC0xOC1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMTI6NDM6NTYuNDUwNTcxMjE1WiIsIlNlcSI6MjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQxMTA2MDk2MzMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBNVDc5MjEgRHJpdmVyIEluaXRpYWxpemF0aW9uKipcblxuT2theSwgc28gYG10NzkyMV9yZWdkX2luaXRgLi4uIGl0J3MgaW50ZXJuYWwsIG5vdCBhIHN0YXRpYyBmdW5jdGlvbiwgYnV0IGl0J3Mgbm90IGV4cG9ydGVkIGVpdGhlci4gVGhhdCBtZWFucyBpdCdzIHByZXR0eSBtdWNoIGhpZGRlbiB3aXRoaW4gdGhlIGRyaXZlciBpdHNlbGYuIEJ1dCBgbXQ3OTIxX3J1bl9maXJtd2FyZWAgKmlzKiBleHBvcnRlZCwgdGhhdCdzIGludGVyZXN0aW5nLiBHaXZlbiB0aGF0IGl0J3MgYWNjZXNzaWJsZSBleHRlcm5hbGx5LCBpdCBzZWVtcyBsaWtlIGEgZGVjZW50IHBvaW50IHRvIHN0YXJ0IGRpZ2dpbmcgZGVlcGVyLiBgbXQ3OTIxX3J1bl9maXJtd2FyZWAgd2lsbCBsaWtlbHkgYmUgd2hlcmUgdGhlIGNyaXRpY2FsIHN0dWZmIGhhcHBlbnMuXG5cbk5vdywgSSBuZWVkIHRvIGNoZWNrIGZvciBhbnkgY29uZmlndXJhdGlvbnMgb3IgZGVwZW5kZW5jaWVzIHRoYXQgbmVlZCB0byBiZSBtZXQuIEknbSB0aGlua2luZyBJJ2xsIHdhbnQgdG8gdGVzdCB0aGlzIHZpYSBVU0IsIHNvIHRoYXQgbWVhbnMgSSdsbCBuZWVkIGBNVDc5MjFVYCBlbmFibGVkLiBPa2F5LCBsZXQncyBzZWUsIGBNVDc5MjFVYCBoYXMgYSBkZXBlbmRlbmN5IG9uIGBNQUM4MDIxMWAuIFJpZ2h0LCB0aGF0IG1ha2VzIHNlbnNlLiBMZXQncyBzZWUgaWYgKnRoYXQqIGhhcyBhbnkgZGVwZW5kZW5jaWVzLCBqdXN0IHRvIG1ha2Ugc3VyZSBJIGRvbid0IG1pc3MgYW55dGhpbmcuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEyNzg0LCJPdXRwdXRUb2tlbnMiOjM4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTM0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDEyOjQ0OjAwLjU2MTE4NDMyOVoiLCJTZXEiOjI0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjQ0Mzg1NDA3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBNQUM4MDIxMVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvbWFjODAyMTEvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvbWFjODAyMTEvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjI6Y29uZmlnIE1BQzgwMjExXFxubmV0L21hYzgwMjExL0tjb25maWctMy1cXHR0cmlzdGF0ZSBcXFwiR2VuZXJpYyBJRUVFIDgwMi4xMSBOZXR3b3JraW5nIFN0YWNrIChtYWM4MDIxMSlcXFwiXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZz0xOT1pZiBNQUM4MDIxMSAhPSBuXFxubmV0L21hYzgwMjExL0tjb25maWctMjAtXFxubmV0L21hYzgwMjExL0tjb25maWc6MjE6Y29uZmlnIE1BQzgwMjExX0hBU19SQ1xcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTIyLVxcdGJvb2xcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yMy1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyNDpjb25maWcgTUFDODAyMTFfUkNfTUlOU1RSRUxcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yNS1cXHRib29sIFxcXCJNaW5zdHJlbFxcXCIgaWYgRVhQRVJUXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZz0zMT1jaG9pY2VcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTQwLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjQxOmNvbmZpZyBNQUM4MDIxMV9SQ19ERUZBVUxUX01JTlNUUkVMXFxubmV0L21hYzgwMjExL0tjb25maWctNDItXFx0Ym9vbCBcXFwiTWluc3RyZWxcXFwiXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZz00OD1lbmRjaG9pY2VcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy00OS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzo1MDpjb25maWcgTUFDODAyMTFfUkNfREVGQVVMVFxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTUxLVxcdHN0cmluZ1xcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWc9NTc9Y29tbWVudCBcXFwiU29tZSB3aXJlbGVzcyBkcml2ZXJzIHJlcXVpcmUgYSByYXRlIGNvbnRyb2wgYWxnb3JpdGhtXFxcIlxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWctNTktXFxubmV0L21hYzgwMjExL0tjb25maWc6NjA6Y29uZmlnIE1BQzgwMjExX0tVTklUX1RFU1RcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy02MS1cXHR0cmlzdGF0ZSBcXFwiS1VuaXQgdGVzdHMgZm9yIG1hYzgwMjExXFxcIiBpZiAhS1VOSVRfQUxMX1RFU1RTXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy02OS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzo3MDpjb25maWcgTUFDODAyMTFfTUVTSFxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTcxLVxcdGJvb2wgXFxcIkVuYWJsZSBtYWM4MDIxMSBtZXNoIG5ldHdvcmtpbmcgc3VwcG9ydFxcXCJcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTc4LVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjc5OmNvbmZpZyBNQUM4MDIxMV9MRURTXFxubmV0L21hYzgwMjExL0tjb25maWctODAtXFx0Ym9vbCBcXFwiRW5hYmxlIExFRCB0cmlnZ2Vyc1xcXCJcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTg3LVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjg4OmNvbmZpZyBNQUM4MDIxMV9ERUJVR0ZTXFxubmV0L21hYzgwMjExL0tjb25maWctODktXFx0Ym9vbCBcXFwiRXhwb3J0IG1hYzgwMjExIGludGVybmFscyBpbiBEZWJ1Z0ZTXFxcIlxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWctOTYtXFxubmV0L21hYzgwMjExL0tjb25maWc6OTc6Y29uZmlnIE1BQzgwMjExX01FU1NBR0VfVFJBQ0lOR1xcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTk4LVxcdGJvb2wgXFxcIlRyYWNlIGFsbCBtYWM4MDIxMSBkZWJ1ZyBtZXNzYWdlc1xcXCJcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTEwOS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoxMTA6bWVudWNvbmZpZyBNQUM4MDIxMV9ERUJVR19NRU5VXFxubmV0L21hYzgwMjExL0tjb25maWctMTExLVxcdGJvb2wgXFxcIlNlbGVjdCBtYWM4MDIxMSBkZWJ1Z2dpbmcgZmVhdHVyZXNcXFwiXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xMTUtXFxubmV0L21hYzgwMjExL0tjb25maWc6MTE2OmNvbmZpZyBNQUM4MDIxMV9OT0lOTElORVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTExNy1cXHRib29sIFxcXCJEbyBub3QgaW5saW5lIFRYL1JYIGhhbmRsZXJzXFxcIlxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWctMTMxLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjEzMjpjb25maWcgTUFDODAyMTFfVkVSQk9TRV9ERUJVR1xcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTEzMy1cXHRib29sIFxcXCJWZXJib3NlIGRlYnVnZ2luZyBvdXRwdXRcXFwiXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xNDItXFxubmV0L21hYzgwMjExL0tjb25maWc6MTQzOmNvbmZpZyBNQUM4MDIxMV9NTE1FX0RFQlVHXFxubmV0L21hYzgwMjExL0tjb25maWctMTQ0LVxcdGJvb2wgXFxcIlZlcmJvc2UgbWFuYWdlZCBNTE1FIG91dHB1dFxcXCJcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE1My1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoxNTQ6Y29uZmlnIE1BQzgwMjExX1NUQV9ERUJVR1xcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE1NS1cXHRib29sIFxcXCJWZXJib3NlIHN0YXRpb24gZGVidWdnaW5nXFxcIlxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWctMTYyLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjE2Mzpjb25maWcgTUFDODAyMTFfSFRfREVCVUdcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xNjQtXFx0Ym9vbCBcXFwiVmVyYm9zZSBIVCBkZWJ1Z2dpbmdcXFwiXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xNzQtXFxubmV0L21hYzgwMjExL0tjb25maWc6MTc1OmNvbmZpZyBNQUM4MDIxMV9PQ0JfREVCVUdcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xNzYtXFx0Ym9vbCBcXFwiVmVyYm9zZSBPQ0IgZGVidWdnaW5nXFxcIlxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWctMTg1LVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjE4Njpjb25maWcgTUFDODAyMTFfSUJTU19ERUJVR1xcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE4Ny1cXHRib29sIFxcXCJWZXJib3NlIElCU1MgZGVidWdnaW5nXFxcIlxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWctMTk2LVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjE5Nzpjb25maWcgTUFDODAyMTFfUFNfREVCVUdcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xOTgtXFx0Ym9vbCBcXFwiVmVyYm9zZSBwb3dlcnNhdmUgbW9kZSBkZWJ1Z2dpbmdcXFwiXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yMDgtXFxubmV0L21hYzgwMjExL0tjb25maWc6MjA5OmNvbmZpZyBNQUM4MDIxMV9NUExfREVCVUdcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yMTAtXFx0Ym9vbCBcXFwiVmVyYm9zZSBtZXNoIHBlZXIgbGluayBkZWJ1Z2dpbmdcXFwiXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yMjEtXFxubmV0L21hYzgwMjExL0tjb25maWc6MjIyOmNvbmZpZyBNQUM4MDIxMV9NUEFUSF9ERUJVR1xcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTIyMy1cXHRib29sIFxcXCJWZXJib3NlIG1lc2ggcGF0aCBkZWJ1Z2dpbmdcXFwiXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yMzQtXFxubmV0L21hYzgwMjExL0tjb25maWc6MjM1OmNvbmZpZyBNQUM4MDIxMV9NSFdNUF9ERUJVR1xcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTIzNi1cXHRib29sIFxcXCJWZXJib3NlIG1lc2ggSFdNUCByb3V0aW5nIGRlYnVnZ2luZ1xcXCJcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTI0Ny1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyNDg6Y29uZmlnIE1BQzgwMjExX01FU0hfU1lOQ19ERUJVR1xcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTI0OS1cXHRib29sIFxcXCJWZXJib3NlIG1lc2ggc3luY2hyb25pemF0aW9uIGRlYnVnZ2luZ1xcXCJcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTI1OC1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyNTk6Y29uZmlnIE1BQzgwMjExX01FU0hfQ1NBX0RFQlVHXFxubmV0L21hYzgwMjExL0tjb25maWctMjYwLVxcdGJvb2wgXFxcIlZlcmJvc2UgbWVzaCBjaGFubmVsIHN3aXRjaCBkZWJ1Z2dpbmdcXFwiXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yNjktXFxubmV0L21hYzgwMjExL0tjb25maWc6MjcwOmNvbmZpZyBNQUM4MDIxMV9NRVNIX1BTX0RFQlVHXFxubmV0L21hYzgwMjExL0tjb25maWctMjcxLVxcdGJvb2wgXFxcIlZlcmJvc2UgbWVzaCBwb3dlcnNhdmUgZGVidWdnaW5nXFxcIlxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWctMjgwLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjI4MTpjb25maWcgTUFDODAyMTFfVERMU19ERUJVR1xcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTI4Mi1cXHRib29sIFxcXCJWZXJib3NlIFRETFMgZGVidWdnaW5nXFxcIlxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWctMjkyLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjI5Mzpjb25maWcgTUFDODAyMTFfREVCVUdfQ09VTlRFUlNcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yOTQtXFx0Ym9vbCBcXFwiRXh0cmEgc3RhdGlzdGljcyBmb3IgVFgvUlggZGVidWdnaW5nXFxcIlxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWctMzA3LVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjMwODpjb25maWcgTUFDODAyMTFfU1RBX0hBU0hfTUFYX1NJWkVcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0zMDktXFx0aW50IFxcXCJTdGF0aW9uIGhhc2ggdGFibGUgbWF4aW11bSBzaXplXFxcIiBpZiBNQUM4MDIxMV9ERUJVR19NRU5VXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDEyOjQ0OjAwLjgwNTU3NzQ1NloiLCJTZXEiOjI1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNTM3ODE1MzEzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgc3VtbWFyeSwgYXMgdGhlIHRob3VnaHQgcHJvY2VzcyB1bmZvbGRzOlxuXG4qKkRlcGVuZGVuY2llcyBhbmQgdGhlIFdpcmVsZXNzIFN1YnN5c3RlbSoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IGBNQUM4MDIxMWAgYW5kIGl0cyBkZXBlbmRlbmNpZXMuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0aGF0IGl0J3MgZmFpcmx5IGlzb2xhdGVkLCBhdCBsZWFzdCBiYXNlZCBvbiB0aGlzIHBhcnRpY3VsYXIgZmlsZSDigJMgbm90aGluZyBkaXJlY3RseSByZWxpZXMgb24gYW55dGhpbmcgKmhlcmUqLiBCdXQgaG9sZCBvbiwgdGhlIEtjb25maWcgc3VnZ2VzdHMgaXRzIHByZXNlbmNlIHdpdGhpbiB0aGUgd2lyZWxlc3Mgc3Vic3lzdGVtIChgbmV0L21hYzgwMjExL0tjb25maWdgKS4gVGhhdCBsaWtlbHkgbWVhbnMgaXQgdG91Y2hlcyBvbiwgYXQgdGhlIHZlcnkgbGVhc3QsIHdpcmVsZXNzIGNvbmZpZ3VyYXRpb24uLi4gQ291bGQgYE1BQzgwMjExYCBkZXBlbmQgb24gYENGRzgwMjExYD8gSXQncyB0aGUgbW9zdCBvYnZpb3VzIGNhbmRpZGF0ZSBmb3IgYSBsb3ctbGV2ZWwgd2lyZWxlc3MgY29uZmlndXJhdGlvbiBsYXllci4gQmVzdCB0byBkb3VibGUtY2hlY2sgYG5ldC93aXJlbGVzcy9LY29uZmlnYCB0byBiZSBzdXJlLiBJdCdzIHRpbWUgdG8gZGlnIGludG8gdGhhdCBLY29uZmlnIHRvIG5haWwgZG93biB0aGlzIHJlbGF0aW9uc2hpcC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTUzNjUsIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2OSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNVQxMjo0NDowNC4zNDMzOTU2NzlaIiwiU2VxIjoyNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjUxNjMwMjEwMywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgQ0ZHODAyMTFcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L3dpcmVsZXNzL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L3dpcmVsZXNzL0tjb25maWc9MTQ9Y29uZmlnIFdFWFRfUFJJVlxcbi0tXFxubmV0L3dpcmVsZXNzL0tjb25maWctMTYtXFxubmV0L3dpcmVsZXNzL0tjb25maWc6MTc6Y29uZmlnIENGRzgwMjExXFxubmV0L3dpcmVsZXNzL0tjb25maWctMTgtXFx0dHJpc3RhdGUgXFxcImNmZzgwMjExIC0gd2lyZWxlc3MgY29uZmlndXJhdGlvbiBBUElcXFwiXFxuLS1cXG5uZXQvd2lyZWxlc3MvS2NvbmZpZz0zOD1jb25maWcgTkw4MDIxMV9URVNUTU9ERVxcbi0tXFxubmV0L3dpcmVsZXNzL0tjb25maWctNTEtXFxubmV0L3dpcmVsZXNzL0tjb25maWc6NTI6Y29uZmlnIENGRzgwMjExX0RFVkVMT1BFUl9XQVJOSU5HU1xcbm5ldC93aXJlbGVzcy9LY29uZmlnLTUzLVxcdGJvb2wgXFxcImVuYWJsZSBkZXZlbG9wZXIgd2FybmluZ3NcXFwiXFxuLS1cXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy02Ny1cXG5uZXQvd2lyZWxlc3MvS2NvbmZpZzo2ODpjb25maWcgQ0ZHODAyMTFfQ0VSVElGSUNBVElPTl9PTlVTXFxubmV0L3dpcmVsZXNzL0tjb25maWctNjktXFx0Ym9vbCBcXFwiY2ZnODAyMTEgY2VydGlmaWNhdGlvbiBvbnVzXFxcIlxcbi0tXFxubmV0L3dpcmVsZXNzL0tjb25maWctODgtXFxubmV0L3dpcmVsZXNzL0tjb25maWc6ODk6Y29uZmlnIENGRzgwMjExX1JFUVVJUkVfU0lHTkVEX1JFR0RCXFxubmV0L3dpcmVsZXNzL0tjb25maWctOTAtXFx0Ym9vbCBcXFwicmVxdWlyZSByZWdkYiBzaWduYXR1cmVcXFwiIGlmIENGRzgwMjExX0NFUlRJRklDQVRJT05fT05VU1xcbi0tXFxubmV0L3dpcmVsZXNzL0tjb25maWctOTgtXFxubmV0L3dpcmVsZXNzL0tjb25maWc6OTk6Y29uZmlnIENGRzgwMjExX1VTRV9LRVJORUxfUkVHREJfS0VZU1xcbm5ldC93aXJlbGVzcy9LY29uZmlnLTEwMC1cXHRib29sIFxcXCJhbGxvdyByZWdkYiBrZXlzIHNoaXBwZWQgd2l0aCB0aGUga2VybmVsXFxcIiBpZiBDRkc4MDIxMV9DRVJUSUZJQ0FUSU9OX09OVVNcXG4tLVxcbm5ldC93aXJlbGVzcy9LY29uZmlnLTExMC1cXG5uZXQvd2lyZWxlc3MvS2NvbmZpZzoxMTE6Y29uZmlnIENGRzgwMjExX0VYVFJBX1JFR0RCX0tFWURJUlxcbm5ldC93aXJlbGVzcy9LY29uZmlnLTExMi1cXHRzdHJpbmcgXFxcImFkZGl0aW9uYWwgcmVnZGIga2V5IGRpcmVjdG9yeVxcXCIgaWYgQ0ZHODAyMTFfQ0VSVElGSUNBVElPTl9PTlVTXFxuLS1cXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xMjEtXFxubmV0L3dpcmVsZXNzL0tjb25maWc6MTIyOmNvbmZpZyBDRkc4MDIxMV9SRUdfQ0VMTFVMQVJfSElOVFNcXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xMjMtXFx0Ym9vbCBcXFwiY2ZnODAyMTEgcmVndWxhdG9yeSBzdXBwb3J0IGZvciBjZWxsdWxhciBiYXNlIHN0YXRpb24gaGludHNcXFwiXFxuLS1cXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xMzQtXFxubmV0L3dpcmVsZXNzL0tjb25maWc6MTM1OmNvbmZpZyBDRkc4MDIxMV9SRUdfUkVMQVhfTk9fSVJcXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xMzYtXFx0Ym9vbCBcXFwiY2ZnODAyMTEgc3VwcG9ydCBmb3IgTk9fSVIgcmVsYXhhdGlvblxcXCJcXG4tLVxcbm5ldC93aXJlbGVzcy9LY29uZmlnLTE1OC1cXG5uZXQvd2lyZWxlc3MvS2NvbmZpZzoxNTk6Y29uZmlnIENGRzgwMjExX0RFRkFVTFRfUFNcXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xNjAtXFx0Ym9vbCBcXFwiZW5hYmxlIHBvd2Vyc2F2ZSBieSBkZWZhdWx0XFxcIlxcbi0tXFxubmV0L3dpcmVsZXNzL0tjb25maWctMTY4LVxcbm5ldC93aXJlbGVzcy9LY29uZmlnOjE2OTpjb25maWcgQ0ZHODAyMTFfREVCVUdGU1xcbm5ldC93aXJlbGVzcy9LY29uZmlnLTE3MC1cXHRib29sIFxcXCJjZmc4MDIxMSBEZWJ1Z0ZTIGVudHJpZXNcXFwiXFxuLS1cXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xNzYtXFxubmV0L3dpcmVsZXNzL0tjb25maWc6MTc3OmNvbmZpZyBDRkc4MDIxMV9DUkRBX1NVUFBPUlRcXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xNzgtXFx0Ym9vbCBcXFwic3VwcG9ydCBDUkRBXFxcIiBpZiBFWFBFUlRcXG4tLVxcbm5ldC93aXJlbGVzcy9LY29uZmlnLTE4Ni1cXG5uZXQvd2lyZWxlc3MvS2NvbmZpZzoxODc6Y29uZmlnIENGRzgwMjExX1dFWFRcXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xODgtXFx0Ym9vbCBcXFwiY2ZnODAyMTEgd2lyZWxlc3MgZXh0ZW5zaW9ucyBjb21wYXRpYmlsaXR5XFxcIlxcbi0tXFxubmV0L3dpcmVsZXNzL0tjb25maWctMTkzLVxcbm5ldC93aXJlbGVzcy9LY29uZmlnOjE5NDpjb25maWcgQ0ZHODAyMTFfS1VOSVRfVEVTVFxcbm5ldC93aXJlbGVzcy9LY29uZmlnLTE5NS1cXHR0cmlzdGF0ZSBcXFwiS1VuaXQgdGVzdHMgZm9yIGNmZzgwMjExXFxcIiBpZiAhS1VOSVRfQUxMX1RFU1RTXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDEyOjQ0OjA0Ljg1OTcwMzk5MloiLCJTZXEiOjI3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozODAyMjgxOTMwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipEZXBlbmRlbmN5IERlZXAgRGl2ZSoqXG5cblJpZ2h0LCAqcGluZyouLi4gbGV0IG1lIGp1c3QgZG91YmxlLWNoZWNrIHRoYXQgZGVwZW5kZW5jeSBzdHJ1Y3R1cmUuIEFoLCB5ZXMsIGFzIGV4cGVjdGVkLCBgTUFDODAyMTFgIGhpbmdlcyBvbiBgQ0ZHODAyMTFgLiBUaGF0IHJlbGF0aW9uc2hpcCBhbHdheXMgbmVlZHMgdG8gYmUgdG9wIG9mIG1pbmQgd2hlbiBJJ20gZGVhbGluZyB3aXRoIHRoZXNlIHdpcmVsZXNzIHN0YWNrcy4gSnVzdCB0byBiZSBhYnNvbHV0ZWx5IHN1cmUsIGFuZCB0byByZWZyZXNoIG15IG1lbW9yeSBvbiBhbnkgcmVjZW50IGNoYW5nZXMsIEknbGwgcXVpY2tseSByZS1leGFtaW5lIHRoZSBgbmV0L21hYzgwMjExL0tjb25maWdgIGNvbmZpZ3VyYXRpb24gZmlsZS4gSXQncyBhIGtleSBzb3VyY2UgZm9yIHVuZGVyc3RhbmRpbmcgdGhlIGJ1aWxkIG9wdGlvbnMgYW5kIGRlcGVuZGVuY2llcyBpbiB0aGF0IG1vZHVsZS4gR290dGEga2VlcCB0aG9zZSBkZXRhaWxzIHNoYXJwLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNjU2NywiT3V0cHV0VG9rZW5zIjozNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDEyOjQ0OjA4LjY2MTk5MDAzMloiLCJTZXEiOjI4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxODMwOTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwibmV0L21hYzgwMjExL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogMjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAgMTpcXHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG4gICAyOlxcdGNvbmZpZyBNQUM4MDIxMVxcbiAgIDM6XFx0XFx0dHJpc3RhdGUgXFxcIkdlbmVyaWMgSUVFRSA4MDIuMTEgTmV0d29ya2luZyBTdGFjayAobWFjODAyMTEpXFxcIlxcbiAgIDQ6XFx0XFx0ZGVwZW5kcyBvbiBDRkc4MDIxMVxcbiAgIDU6XFx0XFx0c2VsZWN0IENSWVBUT1xcbiAgIDY6XFx0XFx0c2VsZWN0IENSWVBUT19MSUJfQUVTX0NCQ19NQUNTXFxuICAgNzpcXHRcXHRzZWxlY3QgQ1JZUFRPX0xJQl9BUkM0XFxuICAgODpcXHRcXHRzZWxlY3QgQ1JZUFRPX0FFU1xcbiAgIDk6XFx0XFx0c2VsZWN0IENSWVBUT19DQ01cXG4gIDEwOlxcdFxcdHNlbGVjdCBDUllQVE9fR0NNXFxuICAxMTpcXHRcXHRzZWxlY3QgQ1JDMzJcXG4gIDEyOlxcdFxcdGhlbHBcXG4gIDEzOlxcdFxcdCAgVGhpcyBvcHRpb24gZW5hYmxlcyB0aGUgaGFyZHdhcmUgaW5kZXBlbmRlbnQgSUVFRSA4MDIuMTFcXG4gIDE0OlxcdFxcdCAgbmV0d29ya2luZyBzdGFjay5cXG4gIDE1OlxcdFxcbiAgMTY6XFx0Y29tbWVudCBcXFwiQ0ZHODAyMTEgbmVlZHMgdG8gYmUgZW5hYmxlZCBmb3IgTUFDODAyMTFcXFwiXFxuICAxNzpcXHRcXHRkZXBlbmRzIG9uIENGRzgwMjExPW5cXG4gIDE4OlxcdFxcbiAgMTk6XFx0aWYgTUFDODAyMTEgIT0gblxcbiAgMjA6XFx0XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDEyOjQ0OjA4LjY2MjE3NjYyMloiLCJTZXEiOjI5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNzc2OTM3NzQxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkRlcGVuZGVuY3kgRGVlcCBEaXZlKipcblxuT2theSwgc28gSSdtIGRpZ2dpbmcgaW50byB0aGUgbmV0d29ya2luZyBzdGFjaywgYW5kIGl0J3MgY2xlYXIgdGhhdCBgTUFDODAyMTFgIHJlbGllcyBoZWF2aWx5IG9uIGBDRkc4MDIxMWAuIFRoYXQgbWFrZXMgc2Vuc2UsIGBDRkc4MDIxMWAgaXMgdGhlIGNvbmZpZ3VyYXRpb24gbGF5ZXIuIE5hdHVyYWxseSwgYENGRzgwMjExYCBpdHNlbGYgaXMgYnVpbHQgdXBvbiBgTkVUYC4gSSdtIGdvaW5nIHRvIHF1aWNrbHkgY2hlY2sgdGhlIGBkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L0tjb25maWdgIGZpbGUgbm93LiBJIHdhbnQgdG8gc2VlIGlmIHRoZXJlIGFyZSBhbnkgb3RoZXIgZGlyZWN0IG9yIGluZGlyZWN0IGRlcGVuZGVuY2llcyB0aGF0IG1pZ2h0IGluZmx1ZW5jZSBob3cgSSBhcHByb2FjaCB0aGlzIHBhcnRpY3VsYXIgYXNwZWN0IG9mIHRoZSBkcml2ZXIuIEkgbmVlZCB0byBtYWtlIHN1cmUgSSdtIG5vdCBtaXNzaW5nIGFueSBzdWJ0bGUgY29ubmVjdGlvbnMgb3IgcmVsYXRpb25zaGlwcywgYW5kIHRoYXQgSSBoYXZlIGEgY29tcGxldGUgdW5kZXJzdGFuZGluZyBvZiB0aGUgcHJlcmVxdWlzaXRlIGxhbmRzY2FwZSBiZWZvcmUgSSBwcm9jZWVkIGFueSBmdXJ0aGVyLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNzA3NSwiT3V0cHV0VG9rZW5zIjo0MSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjYyLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMTI6NDQ6MTIuNDM5MTE3NjMzWiIsIlNlcSI6MzAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjExMDI3MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogNDBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAgMTpcXHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMy1DbGF1c2UtQ2xlYXJcXG4gICAyOlxcdGNvbmZpZyBNVDc2X0NPUkVcXG4gICAzOlxcdFxcdHRyaXN0YXRlXFxuICAgNDpcXHRcXHRzZWxlY3QgUEFHRV9QT09MXFxuICAgNTpcXHRcXG4gICA2OlxcdGNvbmZpZyBNVDc2X0xFRFNcXG4gICA3OlxcdFxcdGJvb2xcXG4gICA4OlxcdFxcdGRlcGVuZHMgb24gTVQ3Nl9DT1JFXFxuICAgOTpcXHRcXHRkZXBlbmRzIG9uIExFRFNfQ0xBU1M9eSB8fCBNVDc2X0NPUkU9TEVEU19DTEFTU1xcbiAgMTA6XFx0XFx0ZGVmYXVsdCB5XFxuICAxMTpcXHRcXG4gIDEyOlxcdGNvbmZpZyBNVDc2X1VTQlxcbiAgMTM6XFx0XFx0dHJpc3RhdGVcXG4gIDE0OlxcdFxcdGRlcGVuZHMgb24gTVQ3Nl9DT1JFXFxuICAxNTpcXHRcXG4gIDE2OlxcdGNvbmZpZyBNVDc2X1NESU9cXG4gIDE3OlxcdFxcdHRyaXN0YXRlXFxuICAxODpcXHRcXHRkZXBlbmRzIG9uIE1UNzZfQ09SRVxcbiAgMTk6XFx0XFxuICAyMDpcXHRjb25maWcgTVQ3NngwMl9MSUJcXG4gIDIxOlxcdFxcdHRyaXN0YXRlXFxuICAyMjpcXHRcXHRzZWxlY3QgTVQ3Nl9DT1JFXFxuICAyMzpcXHRcXG4gIDI0OlxcdGNvbmZpZyBNVDc2eDAyX1VTQlxcbiAgMjU6XFx0XFx0dHJpc3RhdGVcXG4gIDI2OlxcdFxcdHNlbGVjdCBNVDc2X1VTQlxcbiAgMjc6XFx0XFxuICAyODpcXHRjb25maWcgTVQ3Nl9DT05OQUNfTElCXFxuICAyOTpcXHRcXHR0cmlzdGF0ZVxcbiAgMzA6XFx0XFx0c2VsZWN0IE1UNzZfQ09SRVxcbiAgMzE6XFx0XFxuICAzMjpcXHRjb25maWcgTVQ3OTJ4X0xJQlxcbiAgMzM6XFx0XFx0dHJpc3RhdGVcXG4gIDM0OlxcdFxcdHNlbGVjdCBNVDc2X0NPTk5BQ19MSUJcXG4gIDM1OlxcdFxcbiAgMzY6XFx0Y29uZmlnIE1UNzkyeF9VU0JcXG4gIDM3OlxcdFxcdHRyaXN0YXRlXFxuICAzODpcXHRcXHRzZWxlY3QgTVQ3Nl9VU0JcXG4gIDM5OlxcdFxcbiAgNDA6XFx0Y29uZmlnIE1UNzZfTlBVXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDEyOjQ0OjEyLjQzOTIzMDE5M1oiLCJTZXEiOjMxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MzgzMDQ5Nzc5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQgbWUgYnJlYWsgdGhpcyBkb3duLlxuXG4qKkRpdmluZyBpbnRvIHRoZSBNVDc5MnggVVNCIERyaXZlciBDb25maWd1cmF0aW9uKipcblxuQWxyaWdodCwgSSdtIHRyYWNpbmcgdGhpcyB0aHJvdWdoLiBJdCBsb29rcyBsaWtlIGBNVDc5MnhfVVNCYCBpbiB0aGUga2VybmVsIGNvbmZpZyBpcyBwdWxsaW5nIGluIGBNVDc2X1VTQmAuIE1ha2VzIHNlbnNlLCB0aGV5J3JlIGxpa2VseSByZWxhdGVkLiBBbmQsIGFzIGV4cGVjdGVkLCBgTVQ3Nl9VU0JgIGlzIGRlcGVuZGVudCBvbiBgTVQ3Nl9DT1JFYCAtIHRoYXQncyB0aGUgYmFzZSBvZiB0aGUgTWVkaWF0ZWsgNzYwMCBzZXJpZXMgc3R1ZmYuIFNlZW1zIGxvZ2ljYWwuIEJ1dCBoYW5nIG9uLCB0aGluZ3MgZ2V0IG1vcmUgaW50ZXJlc3RpbmcuIGBNVDc5MjFVYCBzZWxlY3RzIGBNVDc5MnhfVVNCYCwgYXMgSSdkIGV4cGVjdCBmb3IgdGhlIFVTQiB2ZXJzaW9uLCBidXQgYWxzbyBpdCBzZWxlY3RzIGBNVDc5MjFfQ09NTU9OYC4gT2ssIHNvIGBNVDc5MjFfQ09NTU9OYCBpcyB0aGUgc2hhcmVkLCBsaWtlbHkgaGFyZHdhcmUtYWdub3N0aWMsIGNvZGUgZm9yIHRoYXQgNzkyMSB2YXJpYW50LiBJIG5lZWQgdG8gbWFrZSBhIG1lbnRhbCBub3RlIHRvIGZpbmQgYE1UNzkyMV9DT01NT05gJ3MgS2NvbmZpZyBmaWxlLiBMZXQgbWUgc2VlLi4uIHllcywgaXQncyBsb2NhdGVkIHVuZGVyIGBkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9LY29uZmlnYC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTc3ODQsIk91dHB1dFRva2VucyI6NDcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo5NCwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDEyOjQ0OjE2LjgyMjI4NDA3MloiLCJTZXEiOjMyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4NDAwMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEsXG4gIFwiTGluZUNvdW50XCI6IDQwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgIDE6XFx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTMtQ2xhdXNlLUNsZWFyXFxuICAgMjpcXHRjb25maWcgTVQ3OTIxX0NPTU1PTlxcbiAgIDM6XFx0XFx0dHJpc3RhdGVcXG4gICA0OlxcdFxcdHNlbGVjdCBNVDc5MnhfTElCXFxuICAgNTpcXHRcXHRzZWxlY3QgV0FOVF9ERVZfQ09SRURVTVBcXG4gICA2OlxcdFxcbiAgIDc6XFx0Y29uZmlnIE1UNzkyMUVcXG4gICA4OlxcdFxcdHRyaXN0YXRlIFxcXCJNZWRpYVRlayBNVDc5MjFFIChQQ0llKSBzdXBwb3J0XFxcIlxcbiAgIDk6XFx0XFx0c2VsZWN0IE1UNzkyMV9DT01NT05cXG4gIDEwOlxcdFxcdGRlcGVuZHMgb24gTUFDODAyMTFcXG4gIDExOlxcdFxcdGRlcGVuZHMgb24gUENJXFxuICAxMjpcXHRcXHRoZWxwXFxuICAxMzpcXHRcXHQgIFRoaXMgYWRkcyBzdXBwb3J0IGZvciBNVDc5MjFFIDgwMi4xMWF4IDJ4MjoyU1Mgd2lyZWxlc3MgZGV2aWNlcy5cXG4gIDE0OlxcdFxcbiAgMTU6XFx0XFx0ICBUbyBjb21waWxlIHRoaXMgZHJpdmVyIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlLlxcbiAgMTY6XFx0XFxuICAxNzpcXHRjb25maWcgTVQ3OTIxU1xcbiAgMTg6XFx0XFx0dHJpc3RhdGUgXFxcIk1lZGlhVGVrIE1UNzkyMVMgKFNESU8pIHN1cHBvcnRcXFwiXFxuICAxOTpcXHRcXHRzZWxlY3QgTVQ3Nl9TRElPXFxuICAyMDpcXHRcXHRzZWxlY3QgTVQ3OTIxX0NPTU1PTlxcbiAgMjE6XFx0XFx0ZGVwZW5kcyBvbiBNQUM4MDIxMVxcbiAgMjI6XFx0XFx0ZGVwZW5kcyBvbiBNTUNcXG4gIDIzOlxcdFxcdGhlbHBcXG4gIDI0OlxcdFxcdCAgVGhpcyBhZGRzIHN1cHBvcnQgZm9yIE1UNzkyMVMgODAyLjExYXggMngyOjJTUyB3aXJlbGVzcyBkZXZpY2VzLlxcbiAgMjU6XFx0XFxuICAyNjpcXHRcXHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmUuXFxuICAyNzpcXHRcXG4gIDI4OlxcdGNvbmZpZyBNVDc5MjFVXFxuICAyOTpcXHRcXHR0cmlzdGF0ZSBcXFwiTWVkaWFUZWsgTVQ3OTIxVSAoVVNCKSBzdXBwb3J0XFxcIlxcbiAgMzA6XFx0XFx0c2VsZWN0IE1UNzkyeF9VU0JcXG4gIDMxOlxcdFxcdHNlbGVjdCBNVDc5MjFfQ09NTU9OXFxuICAzMjpcXHRcXHRkZXBlbmRzIG9uIE1BQzgwMjExXFxuICAzMzpcXHRcXHRkZXBlbmRzIG9uIFVTQlxcbiAgMzQ6XFx0XFx0aGVscFxcbiAgMzU6XFx0XFx0ICBUaGlzIGFkZHMgc3VwcG9ydCBmb3IgTVQ3OTIxVSA4MDIuMTFheCAyeDI6MlNTIHdpcmVsZXNzIGRldmljZXMuXFxuICAzNjpcXHRcXG4gIDM3OlxcdFxcdCAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZS5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMTI6NDQ6MTYuODIyMzcwMjQyWiIsIlNlcSI6MzMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjc4NTc5MTE1OTYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQ29uZmlndXJhdGlvbiBhbmQgRnVuY3Rpb24gRm9jdXMqKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24gc3lzdGVtYXRpY2FsbHkuIEknbSBmb2N1c2luZyBvbiB0aGUgYE1UNzkyMVVgIGRyaXZlciBzcGVjaWZpY2FsbHkgYmVjYXVzZSBpdCdzIFVTQi1iYXNlZCwgYW5kIHN5emthbGxlciBjYW4gZGlyZWN0bHkgZnV6eiBVU0IuIE15IGZpcnN0IHRob3VnaHQgaXMgdG8gbmFpbCBkb3duIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgbmVlZGVkIHRvIGJ1aWxkIGl0LiBgTVQ3OTIxVWAgcmVsaWVzIG9uIGBNQUM4MDIxMWAsIHdoaWNoIGluIHR1cm4sIG5lZWRzIGBDRkc4MDIxMWAuIFNvLCBhdCBhIG1pbmltdW0sIEknbGwgbmVlZCBgTVQ3OTIxVWAsIGBNQUM4MDIxMWAsIGFuZCBgQ0ZHODAyMTFgIGVuYWJsZWQgaW4gdGhlIGtlcm5lbCBjb25maWcuIEFsdGhvdWdoIFVTQiBpcyB1c3VhbGx5IGVuYWJsZWQgYnkgZGVmYXVsdCwgSSdsbCBleHBsaWNpdGx5IGxpc3QgYFVTQmAgYXMgd2VsbCBmb3IgY2xhcml0eSBhbmQgY29tcGxldGVuZXNzLlxuXG5Ib3dldmVyLCBJJ2xsIGFsc28gYWRkIGNvbmZpZ3VyYXRpb25zIGZvciB0aGUgb3RoZXIgdmFyaWFudHM6IGBNVDc5MjFFYCAoUENJZSkgYW5kIGBNVDc5MjFTYCAoU0RJTykgYXMgYSBwcmVjYXV0aW9uLiBKdXN0IGluIGNhc2UgdGhlcmUgYXJlIHN1YnRsZSBkZXBlbmRlbmNpZXMgb3IgcG90ZW50aWFsIG92ZXJsYXAgaW4gY29kZSBwYXRocy4gVGhhdCBtZWFucyBteSBpbml0aWFsIGNvbmZpZ3VyYXRpb24gbGlzdCB3aWxsIGJlIGBNVDc5MjFVYCwgYE1UNzkyMUVgLCBgTVQ3OTIxU2AsIGBNQUM4MDIxMWAsIGFuZCBgQ0ZHODAyMTFgLiBCdXQgaG9sZCBvbiwgdGhlIFBDSWUgdmFyaWFudCAoYE1UNzkyMUVgKSBkZXBlbmRzIG9uIGBQQ0lgLCBhbmQgdGhlIFNESU8gdmVyc2lvbiAoYE1UNzkyMVNgKSBkZXBlbmRzIG9uIGBNTUNgLiBHb3R0YSByZW1lbWJlciB0aG9zZS5cblxuTm93LCBzaGlmdGluZyBnZWFycyB0byB0aGUgYWN0dWFsIGNvZGUsIEkgbmVlZCB0byBwaW5wb2ludCB0aGUga2V5IGZ1bmN0aW9ucyB0byBleGFtaW5lLiBJJ20gZ29pbmcgdG8gcmUtZXZhbHVhdGUgYG10NzkyMV9ydW5fZmlybXdhcmVgIGFzIGl0IHNlZW1zIGxpa2UgdGhlIG1haW4gZnVuY3Rpb24gdG8gZm9jdXMgb24uIEFsc28gYG10NzkyMV9sb2FkX2NsY2AgbG9va3MgaW50ZXJlc3RpbmcgYnV0IGlzIHN0YXRpYywgaG93ZXZlciwgaXQgaXMgY2FsbGVkIGJ5IHRoZSBleHBvcnRlZCBmdW5jdGlvbiBgbXQ3OTIxX3J1bl9maXJtd2FyZWAsIHNvIGl0IGlzIGEgZ29vZCBpbmRpcmVjdCBmdW5jdGlvbiB0byBleGFtaW5lLiBUaGVuIEkgc2VlIHRoYXQgYG10NzkyMV9ydW5fZmlybXdhcmVgIGlzIGNhbGxlZCBmcm9tIGBtdDc5MjF1X21jdV9pbml0YCBhbmQgYG10NzkyMXVfbWFjX3Jlc2V0YC4gU2luY2UgdGhvc2UgYXJlIHN0YXRpYyBidXQgYXJlIGFzc2lnbmVkIHRvIGZ1bmN0aW9uIHBvaW50ZXJzIGFuZCBjYWxsZWQgYnkgdGhlIGV4cG9ydGVkIGZ1bmN0aW9uLCBJJ2xsIG5lZWQgdG8gY2hlY2sgdGhlIGNhbGwgdHJhY2VzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxODcyMCwiT3V0cHV0VG9rZW5zIjo1MiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjUwOCwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDEyOjQ0OjI0LjY4MDI4NTM3OFoiLCJTZXEiOjM0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjU5NzkzMzg1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm10NzkyMXVfbWFjX3Jlc2V0XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3VzYi5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3VzYi5jPTY1PXN0YXRpYyBpbnQgbXQ3OTIxdV9tY3VfaW5pdChzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvdXNiLmMtODgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvdXNiLmM6ODk6c3RhdGljIGludCBtdDc5MjF1X21hY19yZXNldChzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3VzYi5jLTkwLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3VzYi5jPTE1MD1zdGF0aWMgaW50IG10NzkyMXVfcHJvYmUoc3RydWN0IHVzYl9pbnRlcmZhY2UgKnVzYl9pbnRmLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvdXNiLmMtMTczLVxcdFxcdC5pbml0X3Jlc2V0ID0gbXQ3OTJ4dV9pbml0X3Jlc2V0LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3VzYi5jOjE3NDpcXHRcXHQucmVzZXQgPSBtdDc5MjF1X21hY19yZXNldCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS91c2IuYy0xNzUtXFx0fTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMTI6NDQ6MjUuMzQwMDg3OTQzWiIsIlNlcSI6MzUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU4MjczMDQ3OTMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgRnV6emluZyBTdHJhdGVneSBmb3IgdGhlIE1UNzkyMSBXaXJlbGVzcyBEcml2ZXIqKlxuXG5Pa2F5LCBhZnRlciByZXZpZXdpbmcgdGhlIGNoYW5nZXMsIEkndmUgemVyb2VkIGluIG9uIGBtdDc5MjFfcnVuX2Zpcm13YXJlYCBhcyB0aGUgcHJpbWUgdGFyZ2V0LiBJdCdzIGV4cG9ydGVkLCB3aGljaCBtYWtlcyBpdCBlYXNpbHkgYWNjZXNzaWJsZSwgYW5kLCBpbXBvcnRhbnRseSwgaXQncyB0aGUgZGlyZWN0IGVudHJ5IHBvaW50IGludG8gdGhlIG1vZGlmaWVkIGNvZGUg4oCTIGV4YWN0bHkgd2hhdCBJIHdhbnQgZm9yIGVmZmVjdGl2ZSBmdXp6aW5nLlxuXG5MZXQncyBicmVhayB0aGlzIGRvd24gZnVydGhlciBmb3Igb3B0aW1hbCBmdXp6aW5nOlxuXG4qICAgKipXb3J0aEZ1enppbmc6IFRydWUuKiogQWJzb2x1dGVseS4gVGhlIHBhdGNoIGRpcmVjdGx5IHRvdWNoZXMgdGhlIGZpcm13YXJlIGxvYWRpbmcgcHJvY2VzcywgYW5kIHRoYXQncyBhbHdheXMgYSBoaWdoLXZhbHVlIHRhcmdldC5cbiogICAqKkZvY3VzU3ltYm9sOiBgbXQ3OTIxX3J1bl9maXJtd2FyZWAqKi4gQ29uZmlybWVkLiBUaGlzIGZ1bmN0aW9uIGlzIG15IGtleSB0byB0cmlnZ2VyaW5nIHRoZSB2dWxuZXJhYmlsaXR5LlxuKiAgICoqRW5hYmxlQ29uZmlnczogYE1UNzkyMVVgLCBgTVQ3OTIxRWAsIGBNVDc5MjFTYCwgYE1BQzgwMjExYCwgYENGRzgwMjExYCoqLiBHb3QgaXQuIFRoZXNlIGNvbmZpZ3VyYXRpb25zIGFyZSBlc3NlbnRpYWwgdG8gZW5hYmxlIHRoZSBkcml2ZXIgaW4gcXVlc3Rpb24sIGVuc3VyaW5nIEkgY2FuIHRyaWdnZXIgdGhlIGRlc2lyZWQgY29kZSBwYXRocy4gTm90YWJseSwgYE1UNzkyMVVgIGlzIHBhcnRpY3VsYXJseSBpbnRlcmVzdGluZyBiZWNhdXNlIGl0J3MgdGhlIFVTQiB2YXJpYW50IGFuZCBJIGNhbiB1c2UgdGhlIFVTQiBnYWRnZXQgZnJhbWV3b3JrICh2aGNpKSB0byBmdXp6IGl0LCB3aGljaCBpcyBteSBwcmVmZXJyZWQgbWV0aG9kLlxuKiAgICoqUmVhc29uaW5nOioqIFRoZSBwYXRjaCdzIG1vZGlmaWNhdGlvbnMgdG8gYG10NzkyMV9sb2FkX2NsY2AsIHRoZSBmaXJtd2FyZSBsb2FkaW5nIGxvZ2ljLCBhcmUgY3JpdGljYWwuIFNwZWNpZmljYWxseSwgdGhlIGZhY3QgdGhhdCBgbXQ3OTIxX3J1bl9maXJtd2FyZWAgaXMgcmVhY2hhYmxlIGR1cmluZyBkZXZpY2UgaW5pdGlhbGl6YXRpb24gaXMgaWRlYWwuIFRoaXMgZ2l2ZXMgbWUgYSBwcmVkaWN0YWJsZSBlbnRyeSBwb2ludC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjAxMDcsIk91dHB1dFRva2VucyI6MTY3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTg2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDEyOjQ0OjMxLjE2NzM5NTY5NloiLCJTZXEiOjM2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIwMDkxMDMyOSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTVQ3OTIxVVwiLFxuICAgIFwiTVQ3OTIxRVwiLFxuICAgIFwiTVQ3OTIxU1wiLFxuICAgIFwiTUFDODAyMTFcIixcbiAgICBcIkNGRzgwMjExXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwibXQ3OTIxX3J1bl9maXJtd2FyZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIGZpcm13YXJlIGxvYWRpbmcgbG9naWMgKGBtdDc5MjFfbG9hZF9jbGNgKSBpbiB0aGUgTWVkaWF0ZWsgTVQ3OTIxIHdpcmVsZXNzIGRyaXZlci4gVGhpcyBkcml2ZXIgc3VwcG9ydHMgVVNCIChgTVQ3OTIxVWApLCB3aGljaCBjYW4gYmUgZnV6emVkIHZpYSB0aGUgVVNCIGdhZGdldCBmcmFtZXdvcmsgKHZoY2kpLiBUaGUgbW9kaWZpZWQgZnVuY3Rpb24gaXMgcmVhY2hhYmxlIGR1cmluZyBkZXZpY2UgaW5pdGlhbGl6YXRpb24gdmlhIGBtdDc5MjFfcnVuX2Zpcm13YXJlYC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJNVDc5MjFVXCIsXG4gICAgXCJNVDc5MjFFXCIsXG4gICAgXCJNVDc5MjFTXCIsXG4gICAgXCJNQUM4MDIxMVwiLFxuICAgIFwiQ0ZHODAyMTFcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJtdDc5MjFfcnVuX2Zpcm13YXJlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgZmlybXdhcmUgbG9hZGluZyBsb2dpYyAoYG10NzkyMV9sb2FkX2NsY2ApIGluIHRoZSBNZWRpYXRlayBNVDc5MjEgd2lyZWxlc3MgZHJpdmVyLiBUaGlzIGRyaXZlciBzdXBwb3J0cyBVU0IgKGBNVDc5MjFVYCksIHdoaWNoIGNhbiBiZSBmdXp6ZWQgdmlhIHRoZSBVU0IgZ2FkZ2V0IGZyYW1ld29yayAodmhjaSkuIFRoZSBtb2RpZmllZCBmdW5jdGlvbiBpcyByZWFjaGFibGUgZHVyaW5nIGRldmljZSBpbml0aWFsaXphdGlvbiB2aWEgYG10NzkyMV9ydW5fZmlybXdhcmVgLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+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-workflowq5x72[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-25 12:21:18 +0000 UTC FinishedAt: 2026-07-25 12:44:32 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "wireless-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git", "commit_hash": "90883c513ca01e77c56b8d94be7de11420c1dacf", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "MT7921U", "MT7921E", "MT7921S", "MAC80211", "CFG80211" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "wireless-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git", "commit_hash": "90883c513ca01e77c56b8d94be7de11420c1dacf", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "MT7921U", "MT7921E", "MT7921S", "MAC80211", "CFG80211" ], "series_id": "12ed6c34-1258-476c-9b79-49d84be06e2e" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "mt7921_run_firmware" ], "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+CgkJCTx0ZD4yMDI2LzA3LzI1IDEyOjQzPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O01UNzkyMVUmIzM0OywKICAgICYjMzQ7TVQ3OTIxRSYjMzQ7LAogICAgJiMzNDtNVDc5MjFTJiMzNDssCiAgICAmIzM0O01BQzgwMjExJiMzNDssCiAgICAmIzM0O0NGRzgwMjExJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7bXQ3OTIxX3J1bl9maXJtd2FyZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBmaXJtd2FyZSBsb2FkaW5nIGxvZ2ljIChgbXQ3OTIxX2xvYWRfY2xjYCkgaW4gdGhlIE1lZGlhdGVrIE1UNzkyMSB3aXJlbGVzcyBkcml2ZXIuIFRoaXMgZHJpdmVyIHN1cHBvcnRzIFVTQiAoYE1UNzkyMVVgKSwgd2hpY2ggY2FuIGJlIGZ1enplZCB2aWEgdGhlIFVTQiBnYWRnZXQgZnJhbWV3b3JrICh2aGNpKS4gVGhlIG1vZGlmaWVkIGZ1bmN0aW9uIGlzIHJlYWNoYWJsZSBkdXJpbmcgZGV2aWNlIGluaXRpYWxpemF0aW9uIHZpYSBgbXQ3OTIxX3J1bl9maXJtd2FyZWAuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMTI6NDM8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCBjMjFhNjk5ZWY4ZWViODhjYTEyZjliNGVlYmE0NTNiYzkyYWRmOGM5XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFNhdCBKdWwgMjUgMTI6NDM6MDYgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWN1LmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tY3UuY1xuaW5kZXggMjViOTQzNzI1MGY3YmEuLmM4Yzg0OTQzOTdjNzYxIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWN1LmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21jdS5jXG5AQCAtNDc2LDYgJiM0Mzs0NzYsMTAgQEAgc3RhdGljIGludCBtdDc5MjFfbG9hZF9jbGMoc3RydWN0IG10NzkyeF9kZXYgKmRldiwgY29uc3QgY2hhciAqZndfbmFtZSlcbiBcdFx0ICAgIHU4X2dldF9iaXRzKGNsYy1cdTAwM2V0eXBlLCBNVF9FRV9IV19UWVBFX0VOQ0FQKSAhPSBod19lbmNhcClcbiBcdFx0XHRjb250aW51ZTtcbiBcbiYjNDM7XHRcdGlmIChjbGMtXHUwMDNlaWR4ID09IE1UNzkyMV9DTENfUkVHRCBcdTAwMjZcdTAwMjZcbiYjNDM7XHRcdCAgICB1OF9nZXRfYml0cyhjbGMtXHUwMDNldHlwZSwgTVRfRUVfSFdfVFlQRV9FTkNBUCkgIT0gaHdfZW5jYXApXG4mIzQzO1x0XHRcdGNvbnRpbnVlO1xuJiM0MztcbiBcdFx0cGh5LVx1MDAzZWNsY1tjbGMtXHUwMDNlaWR4XSA9IGRldm1fa21lbWR1cChtZGV2LVx1MDAzZWRldiwgY2xjLFxuIFx0XHRcdFx0XHRcdCAgbGUzMl90b19jcHUoY2xjLVx1MDAzZWxlbiksXG4gXHRcdFx0XHRcdFx0ICBHRlBfS0VSTkVMKTtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tdDc5MjEuaCBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL210NzkyMS5oXG5pbmRleCBmYjg2NTRiN2M1ZTdlNy4uZjU2MjhmYjZiZmJmYzkgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tdDc5MjEuaFxuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbXQ3OTIxLmhcbkBAIC0xMzYsNiAmIzQzOzEzNiw3IEBAIHN0cnVjdCBtdDc5MjFfZG1hX2xheW91dCB7XG4gZW51bSB7XG4gXHRNVDc5MjFfQ0xDX1BPV0VSLFxuIFx0TVQ3OTIxX0NMQ19DSEFOLFxuJiM0MztcdE1UNzkyMV9DTENfUkVHRCA9IDMsXG4gXHRNVDc5MjFfQ0xDX01BWF9OVU0sXG4gfTtcbiBcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAxMjo0MzwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4xbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7TVQ3OTIxVSYjMzQ7LAogICAgJiMzNDtNVDc5MjFFJiMzNDssCiAgICAmIzM0O01UNzkyMVMmIzM0OywKICAgICYjMzQ7TUFDODAyMTEmIzM0OywKICAgICYjMzQ7Q0ZHODAyMTEmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDttdDc5MjFfcnVuX2Zpcm13YXJlJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIGZpcm13YXJlIGxvYWRpbmcgbG9naWMgKGBtdDc5MjFfbG9hZF9jbGNgKSBpbiB0aGUgTWVkaWF0ZWsgTVQ3OTIxIHdpcmVsZXNzIGRyaXZlci4gVGhpcyBkcml2ZXIgc3VwcG9ydHMgVVNCIChgTVQ3OTIxVWApLCB3aGljaCBjYW4gYmUgZnV6emVkIHZpYSB0aGUgVVNCIGdhZGdldCBmcmFtZXdvcmsgKHZoY2kpLiBUaGUgbW9kaWZpZWQgZnVuY3Rpb24gaXMgcmVhY2hhYmxlIGR1cmluZyBkZXZpY2UgaW5pdGlhbGl6YXRpb24gdmlhIGBtdDc5MjFfcnVuX2Zpcm13YXJlYC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IGMyMWE2OTllZjhlZWI4OGNhMTJmOWI0ZWViYTQ1M2JjOTJhZGY4YzkKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgU2F0IEp1bCAyNSAxMjo0MzowNiAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21jdS5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWN1LmMKaW5kZXggMjViOTQzNzI1MGY3YmEuLmM4Yzg0OTQzOTdjNzYxIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tY3UuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tY3UuYwpAQCAtNDc2LDYgJiM0Mzs0NzYsMTAgQEAgc3RhdGljIGludCBtdDc5MjFfbG9hZF9jbGMoc3RydWN0IG10NzkyeF9kZXYgKmRldiwgY29uc3QgY2hhciAqZndfbmFtZSkKIAkJICAgIHU4X2dldF9iaXRzKGNsYy0mZ3Q7dHlwZSwgTVRfRUVfSFdfVFlQRV9FTkNBUCkgIT0gaHdfZW5jYXApCiAJCQljb250aW51ZTsKIAomIzQzOwkJaWYgKGNsYy0mZ3Q7aWR4ID09IE1UNzkyMV9DTENfUkVHRCAmYW1wOyZhbXA7CiYjNDM7CQkgICAgdThfZ2V0X2JpdHMoY2xjLSZndDt0eXBlLCBNVF9FRV9IV19UWVBFX0VOQ0FQKSAhPSBod19lbmNhcCkKJiM0MzsJCQljb250aW51ZTsKJiM0MzsKIAkJcGh5LSZndDtjbGNbY2xjLSZndDtpZHhdID0gZGV2bV9rbWVtZHVwKG1kZXYtJmd0O2RldiwgY2xjLAogCQkJCQkJICBsZTMyX3RvX2NwdShjbGMtJmd0O2xlbiksCiAJCQkJCQkgIEdGUF9LRVJORUwpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbXQ3OTIxLmggYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tdDc5MjEuaAppbmRleCBmYjg2NTRiN2M1ZTdlNy4uZjU2MjhmYjZiZmJmYzkgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL210NzkyMS5oCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL210NzkyMS5oCkBAIC0xMzYsNiAmIzQzOzEzNiw3IEBAIHN0cnVjdCBtdDc5MjFfZG1hX2xheW91dCB7CiBlbnVtIHsKIAlNVDc5MjFfQ0xDX1BPV0VSLAogCU1UNzkyMV9DTENfQ0hBTiwKJiM0MzsJTVQ3OTIxX0NMQ19SRUdEID0gMywKIAlNVDc5MjFfQ0xDX01BWF9OVU0sCiB9OwogCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDEyOjQzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI0MjgKCQkJCQkJCW91dHB1dDogMzcKCQkJCQkJCXRob3VnaHRzOiAyMzEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgTVQ3OTIxIERyaXZlciBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTt2ZSBnb3QgdGhpcyBwYXRjaCB0aGF0IHRvdWNoZXMgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21jdS5jYCBhbmQgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL210NzkyMS5oYC4gSW1tZWRpYXRlbHksIEkgc2VlIGl0JiMzOTtzIGFkZGluZyBhIHNwZWNpZmljIGNoZWNrIHdpdGhpbiBgbXQ3OTIxX2xvYWRfY2xjYC4gVGhlIGxvZ2ljIGludm9sdmVzIGBjbGMtJmd0O2lkeGAsIHNwZWNpZmljYWxseSBsb29raW5nIGZvciBgTVQ3OTIxX0NMQ19SRUdEYCwgYW5kIGNvbXBhcmluZyB0aGUgYGh3X2VuY2FwYCB2YWx1ZSB3aXRoIHNvbWUgYml0cyBmcm9tIGBjbGMtJmd0O3R5cGVgLiBBbmQsIG9mIGNvdXJzZSwgdGhlIGhlYWRlciBmaWxlJiMzOTtzIGVudW0gaXMgYmVpbmcgZXh0ZW5kZWQgd2l0aCBgTVQ3OTIxX0NMQ19SRUdEID0gM2AuCgpNeSBmaXJzdCB0aG91Z2h0IGlzLCBpcyB0aGlzIGV2ZW4gKnJlYWNoYWJsZSogaW4gYSB0eXBpY2FsIFFFTVUgc2V0dXA/IFRoaXMgaXMgYSBNZWRpYXRlayBNVDc5MjEgZHJpdmVyLCB3aGljaCBwb2ludHMgdG8gd2lyZWxlc3MgZGV2aWNlcy4gSSYjMzk7bGwgbmVlZCB0byBmaWd1cmUgb3V0IHRoZSBidXMgdHlwZSB0aGlzIGRyaXZlciBpcyBmb3I7IFBDSSwgVVNCLCBvciBTRElPLCBtb3N0IGxpa2VseS4gU28sIHRoZSBuZXh0IHN0ZXAgaXMgdG8gZXhhbWluZSB0aGUgY29udGVudHMgb2YgdGhlIGBkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9gIGRpcmVjdG9yeS4gVGhhdCBzaG91bGQgZ2l2ZSBtZSBhIHNvbGlkIGNsdWUgYXMgdG8gdGhlIGRyaXZlciYjMzk7cyB0YXJnZXQgYW5kIHdoZXRoZXIgaXQmIzM5O3MgcG9zc2libGUgdG8gdHJpZ2dlciB0aGlzIGNvbmRpdGlvbi4gS25vd2luZyB0aGUgYnVzIHR5cGUgd2lsbCBxdWlja2x5IHRlbGwgbWUgaWYgdGhlIHBhdGNoIGlzIHJlbGV2YW50IHRvIG15IGN1cnJlbnQgdGVzdGluZyBjb25maWd1cmF0aW9uIG9yIGlmIEkgbmVlZCB0byBkaWcgZGVlcGVyLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDEyOjQzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Y29kZXNlYXJjaC1kaXItaW5kZXg8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0RpciYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlcyYjMzQ7OiBbCiAgICAmIzM0O2RlYnVnZnMuYyYjMzQ7LAogICAgJiMzNDtpbml0LmMmIzM0OywKICAgICYjMzQ7bWFjLmMmIzM0OywKICAgICYjMzQ7bWFpbi5jJiMzNDssCiAgICAmIzM0O21jdS5jJiMzNDssCiAgICAmIzM0O21jdS5oJiMzNDssCiAgICAmIzM0O210NzkyMS5oJiMzNDssCiAgICAmIzM0O3BjaS5jJiMzNDssCiAgICAmIzM0O3BjaV9tYWMuYyYjMzQ7LAogICAgJiMzNDtwY2lfbWN1LmMmIzM0OywKICAgICYjMzQ7cmVnZC5jJiMzNDssCiAgICAmIzM0O3JlZ2QuaCYjMzQ7LAogICAgJiMzNDtyZWdzLmgmIzM0OywKICAgICYjMzQ7c2Rpby5jJiMzNDssCiAgICAmIzM0O3NkaW9fbWFjLmMmIzM0OywKICAgICYjMzQ7c2Rpb19tY3UuYyYjMzQ7LAogICAgJiMzNDt0ZXN0bW9kZS5jJiMzNDssCiAgICAmIzM0O3VzYi5jJiMzNDsKICBdLAogICYjMzQ7U3ViZGlycyYjMzQ7OiBudWxsCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAxMjo0MzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMTcwCgkJCQkJCQlvdXRwdXQ6IDQ5CgkJCQkJCQl0aG91Z2h0czogODMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBEcml2ZXImIzM5O3MgU2NvcGUgYW5kIEZ1enppbmcgUG90ZW50aWFsKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIGNvZGUgYW5kIGltbWVkaWF0ZWx5IHNlZSBgcGNpLmNgLCBgc2Rpby5jYCwgYW5kIGB1c2IuY2AuIE15IG1pbmQganVtcHMgdG8gY29uY2x1c2lvbnMgaW1tZWRpYXRlbHksIGFzIHlvdSBkby4gVGhpcyBtZWFucyBpdCYjMzk7cyBhIGRyaXZlciB0aGF0JiMzOTtzIGJ1aWx0IHRvIHN1cHBvcnQgUENJLCBTRElPLCBhbmQgVVNCIGRldmljZXMsIHdoaWNoIGlzIHF1aXRlIHRoZSB0cmlmZWN0YS4gVGhlIHByZXNlbmNlIG9mIHRoYXQgVVNCIGRyaXZlciBpcyBwYXJ0aWN1bGFybHkgaW50ZXJlc3RpbmcuIFRoYXQgb3BlbnMgdGhlIGRvb3IgdG8gdXNpbmcgdGhlIFVTQiBnYWRnZXQgZnJhbWV3b3JrIOKAkyBzcGVjaWZpY2FsbHkgdmhjaSDigJMgZm9yIGZ1enppbmcuIEdpdmVuIHRoZSB0YXJnZXQsIEkgY2FuIG5vdyBpZGVudGlmeSBzZXZlcmFsIGdvb2Qgc3RhcnRpbmcgcG9pbnRzIGZvciBmdXp6aW5nLiBMZXQgbWUgY2hlY2sgYG10NzkyMV9sb2FkX2NsY2AgaW4gYG1jdS5jYC4gSSB3aWxsIHN0YXJ0IHRoZXJlIGZvciB0aGUgaW5pdGlhbCBpbnNwZWN0aW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDEyOjQzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O210NzkyMV9sb2FkX2NsYyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tY3UuYz0zOTk9aW50IG10NzkyMV9tY3VfdW5pX3J4X2JhKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWN1LmMtNDA5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWN1LmM6NDEwOnN0YXRpYyBpbnQgbXQ3OTIxX2xvYWRfY2xjKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYsIGNvbnN0IGNoYXIgKmZ3X25hbWUpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tY3UuYy00MTEte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21jdS5jPTYzOT1pbnQgbXQ3OTIxX3J1bl9maXJtd2FyZShzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21jdS5jLTY1MC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21jdS5jOjY1MTpcdGVyciA9IG10NzkyMV9sb2FkX2NsYyhkZXYsIG10NzkyeF9yYW1fbmFtZShkZXYpKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21jdS5jLTY1Mi1cdGlmIChlcnIpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMTI6NDM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzgyOAoJCQkJCQkJb3V0cHV0OiA0OQoJCQkJCQkJdGhvdWdodHM6IDQ4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRha2Ugb24gdGhlIHRob3VnaHQgcHJvY2VzcywgYXMgcmVxdWVzdGVkOgoKKipUcmFjaW5nIHRoZSBGaXJtd2FyZSBMb2FkaW5nIFNlcXVlbmNlKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGUgYG10NzkyMWAgZHJpdmVyLiBJIHNlZSB0aGF0IHRoZSBmdW5jdGlvbiBgbXQ3OTIxX2xvYWRfY2xjYCBpcyBjYWxsZWQgZnJvbSBgbXQ3OTIxX3J1bl9maXJtd2FyZWAuIFRoYXQmIzM5O3MgaW50ZXJlc3RpbmcsIHRoZSBgY2xjYCBwcmVzdW1hYmx5IG5lZWRzIHRvIGJlIGxvYWRlZCBieSB0aGUgZmlybXdhcmUgYXQgc29tZSBwb2ludCwgc28gdGhpcyBzZWVtcyBsb2dpY2FsLiBOb3csIG15IG5leHQgc3RlcCBpcyB0byBmaWd1cmUgb3V0IHRoZSAqZW50cnkgcG9pbnQqLiBJIHdhbnQgdG8gdW5kZXJzdGFuZCB0aGUgY29tcGxldGUgZmlybXdhcmUgbG9hZGluZyBzZXF1ZW5jZSwgYW5kIHNlZWluZyB3aGVyZSBgbXQ3OTIxX3J1bl9maXJtd2FyZWAgaXRzZWxmIGlzIGNhbGxlZCB3aWxsIHByb3ZpZGUgdGhlIGNydWNpYWwgY29udGV4dC4gVW5kZXJzdGFuZGluZyB0aGUgY2FsbGVyIHdpbGwgaWxsdW1pbmF0ZSB0aGUgaW5pdGlhbCB0cmlnZ2VyIGZvciB0aGUgd2hvbGUgcHJvY2Vzcy4gSSYjMzk7bGwgbmVlZCB0byB0cmFjZSB0aGUgY2FsbCBncmFwaCBiYWNrIHRvIHNlZSB3aGF0JiMzOTtzIHVsdGltYXRlbHkgaW5pdGlhbGl6aW5nIHRoZSBmaXJtd2FyZSBsb2FkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDEyOjQzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O210NzkyMV9ydW5fZmlybXdhcmUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWN1LmM9NjI2PWludCBtdDc5MjFfbWN1X2Z3X2xvZ18yX2hvc3Qoc3RydWN0IG10NzkyeF9kZXYgKmRldiwgdTggY3RybClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tY3UuYy02MzgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tY3UuYzo2Mzk6aW50IG10NzkyMV9ydW5fZmlybXdhcmUoc3RydWN0IG10NzkyeF9kZXYgKmRldilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21jdS5jLTY0MC17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWN1LmMtNjU3LX1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21jdS5jOjY1ODpFWFBPUlRfU1lNQk9MX0dQTChtdDc5MjFfcnVuX2Zpcm13YXJlKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21jdS5jLTY1OS1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tdDc5MjEuaD0yMDc9dm9pZCBtdDc5MjFfdW5yZWdpc3Rlcl9kZXZpY2Uoc3RydWN0IG10NzkyeF9kZXYgKmRldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tdDc5MjEuaDoyMDg6aW50IG10NzkyMV9ydW5fZmlybXdhcmUoc3RydWN0IG10NzkyeF9kZXYgKmRldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tdDc5MjEuaC0yMDktaW50IG10NzkyMV9zZXRfY2hhbm5lbChzdHJ1Y3QgbXQ3Nl9waHkgKm1waHkpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3BjaV9tYWMuYz01Nj1pbnQgbXQ3OTIxZV9tYWNfcmVzZXQoc3RydWN0IG10NzkyeF9kZXYgKmRldilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9wY2lfbWFjLmMtMTA1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvcGNpX21hYy5jOjEwNjpcdGVyciA9IG10NzkyMV9ydW5fZmlybXdhcmUoZGV2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3BjaV9tYWMuYy0xMDctXHRpZiAoZXJyKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3BjaV9tY3UuYz00MT1pbnQgbXQ3OTIxZV9tY3VfaW5pdChzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3BjaV9tY3UuYy01Ny1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3BjaV9tY3UuYzo1ODpcdGVyciA9IG10NzkyMV9ydW5fZmlybXdhcmUoZGV2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3BjaV9tY3UuYy01OS1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9zZGlvX21hYy5jPTE0Nz1pbnQgbXQ3OTIxc19tYWNfcmVzZXQoc3RydWN0IG10NzkyeF9kZXYgKmRldilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9zZGlvX21hYy5jLTE4MC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3NkaW9fbWFjLmM6MTgxOlx0ZXJyID0gbXQ3OTIxX3J1bl9maXJtd2FyZShkZXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvc2Rpb19tYWMuYy0xODItXHRpZiAoZXJyKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3NkaW9fbWN1LmM9NzQ9aW50IG10NzkyMXNfbWN1X2luaXQoc3RydWN0IG10NzkyeF9kZXYgKmRldilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9zZGlvX21jdS5jLTkwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvc2Rpb19tY3UuYzo5MTpcdHJldCA9IG10NzkyMV9ydW5fZmlybXdhcmUoZGV2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3NkaW9fbWN1LmMtOTItXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3VzYi5jPTY1PXN0YXRpYyBpbnQgbXQ3OTIxdV9tY3VfaW5pdChzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3VzYi5jLTc4LVx0bXQ3Nl9zZXQoZGV2LCBNVF9VRE1BX1RYX1FTRUwsIE1UX0ZXX0RMX0VOKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3VzYi5jOjc5Olx0cmV0ID0gbXQ3OTIxX3J1bl9maXJtd2FyZShkZXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvdXNiLmMtODAtXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3VzYi5jPTg5PXN0YXRpYyBpbnQgbXQ3OTIxdV9tYWNfcmVzZXQoc3RydWN0IG10NzkyeF9kZXYgKmRldilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS91c2IuYy0xMjYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS91c2IuYzoxMjc6XHRlcnIgPSBtdDc5MjFfcnVuX2Zpcm13YXJlKGRldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS91c2IuYy0xMjgtXHRpZiAoZXJyKVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDEyOjQzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDU1OTMKCQkJCQkJCW91dHB1dDogNTIKCQkJCQkJCXRob3VnaHRzOiAxNDIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBFeGVjdXRpb24gQ29udGV4dCBhbmQgVGVzdGluZyBTdHJhdGVneSoqCgpPa2F5LCBzbyB0aGlzIGNvZGUgc25pcHBldCwgdGhlIG9uZSBJJiMzOTttIGZvY3VzZWQgb24sIGdldHMgY2FsbGVkIGZyb20gYG10NzkyMXVfbWN1X2luaXRgIGFuZCBgbXQ3OTIxdV9tYWNfcmVzZXRgIHdpdGhpbiBgdXNiLmNgLiBUaGF0IHBsYWNlcyBpdCBmaXJtbHkgd2l0aGluIHRoZSBVU0IgZGV2aWNlIGluaXRpYWxpemF0aW9uIHNlcXVlbmNlLCB3aGljaCBpcyBleGFjdGx5IHRoZSBraW5kIG9mIGNvbnRleHQgSSBleHBlY3RlZC4gVGhpcyBpcyBnb29kIGJlY2F1c2UgaXQgaW1tZWRpYXRlbHkgc3VnZ2VzdHMgYSB2aWFibGUgdGVzdGluZyBzdHJhdGVneTogVVNCIGZ1enppbmcuIFdlIGNhbiBsZXZlcmFnZSBleGlzdGluZyB0b29scywgbGlrZSBzeXprYWxsZXImIzM5O3MgVVNCIGdhZGdldCBmdXp6aW5nIGNhcGFiaWxpdGllcywgdG8gdGFyZ2V0IHRoaXMgYXJlYSBlZmZlY3RpdmVseS4gVGhlIGZhY3QgdGhhdCB0aGlzIHBhdGNoIHNwZWNpZmljYWxseSBtb2RpZmllcyBgbXQ3OTIxX2xvYWRfY2xjYCBpcyB0aGUga2V5LgoKTm93LCBgbXQ3OTIxX2xvYWRfY2xjYOKApiBoYW5nIG9uLCBpc27igJl0IHRoYXQgdGhlIGZ1bmN0aW9uIHJlc3BvbnNpYmxlIGZvciBsb2FkaW5nIHRoZSBmaXJtd2FyZT8gWWVzLCBpdCBpcy4gQW5kIHRoYXQgZmlybXdhcmUgaXMgbG9hZGVkIGZyb20gdGhlIGZpbGVzeXN0ZW0gdXNpbmcgYGZ3X25hbWVgPyBFeGNlbGxlbnQuIFRoaXMgZ2l2ZXMgbWUgYW5vdGhlciBjcml0aWNhbCBwb2ludCB0byB1bmRlcnN0YW5kLiBMZXQgbWUgdGFrZSBhIGNsb3NlciBsb29rIGF0IGBtdDc5MjFfbG9hZF9jbGNgIHJpZ2h0IGF3YXksIHRoZSBkZXRhaWxzIG9mIHdoYXQgaXQgZG9lcyBhcmUga2V5IHRvIHVuZGVyc3RhbmRpbmcgdGhlIGltcGFjdCBvZiB0aGlzIGNoYW5nZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMTI6NDM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tY3UuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDQxMCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAxMDAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDQxMDpcdHN0YXRpYyBpbnQgbXQ3OTIxX2xvYWRfY2xjKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYsIGNvbnN0IGNoYXIgKmZ3X25hbWUpXG4gNDExOlx0e1xuIDQxMjpcdFx0Y29uc3Qgc3RydWN0IG10NzZfY29ubmFjMl9md190cmFpbGVyICpoZHI7XG4gNDEzOlx0XHRjb25zdCBzdHJ1Y3QgbXQ3Nl9jb25uYWMyX2Z3X3JlZ2lvbiAqcmVnaW9uO1xuIDQxNDpcdFx0Y29uc3Qgc3RydWN0IG10NzkyMV9jbGMgKmNsYztcbiA0MTU6XHRcdHN0cnVjdCBtdDc2X2RldiAqbWRldiA9IFx1MDAyNmRldi1cdTAwM2VtdDc2O1xuIDQxNjpcdFx0c3RydWN0IG10NzkyeF9waHkgKnBoeSA9IFx1MDAyNmRldi1cdTAwM2VwaHk7XG4gNDE3Olx0XHRjb25zdCBzdHJ1Y3QgZmlybXdhcmUgKmZ3O1xuIDQxODpcdFx0aW50IHJldCwgaSwgbGVuLCBvZmZzZXQgPSAwO1xuIDQxOTpcdFx0dTggKmNsY19iYXNlID0gTlVMTCwgaHdfZW5jYXAgPSAwO1xuIDQyMDpcdFxuIDQyMTpcdFx0ZGV2LVx1MDAzZXBoeS5jbGNfY2hhbl9jb25mID0gMHhmZjtcbiA0MjI6XHRcdGRldi1cdTAwM2VyZWdkX3VzZXIgPSBmYWxzZTtcbiA0MjM6XHRcdGlmICghbXQ3OTIxX3JlZ2RfY2xjX3N1cHBvcnRlZChkZXYpKVxuIDQyNDpcdFx0XHRyZXR1cm4gMDtcbiA0MjU6XHRcbiA0MjY6XHRcdGlmIChtdDc2X2lzX21taW8oXHUwMDI2ZGV2LVx1MDAzZW10NzYpKSB7XG4gNDI3Olx0XHRcdHJldCA9IG10NzkyMV9tY3VfcmVhZF9lZXByb20oZGV2LCBNVF9FRV9IV19UWVBFLCBcdTAwMjZod19lbmNhcCk7XG4gNDI4Olx0XHRcdGlmIChyZXQpXG4gNDI5Olx0XHRcdFx0cmV0dXJuIHJldDtcbiA0MzA6XHRcdFx0aHdfZW5jYXAgPSB1OF9nZXRfYml0cyhod19lbmNhcCwgTVRfRUVfSFdfVFlQRV9FTkNBUCk7XG4gNDMxOlx0XHR9XG4gNDMyOlx0XG4gNDMzOlx0XHRyZXQgPSByZXF1ZXN0X2Zpcm13YXJlKFx1MDAyNmZ3LCBmd19uYW1lLCBtZGV2LVx1MDAzZWRldik7XG4gNDM0Olx0XHRpZiAocmV0KVxuIDQzNTpcdFx0XHRyZXR1cm4gcmV0O1xuIDQzNjpcdFxuIDQzNzpcdFx0aWYgKCFmdyB8fCAhZnctXHUwMDNlZGF0YSB8fCBmdy1cdTAwM2VzaXplIFx1MDAzYyBzaXplb2YoKmhkcikpIHtcbiA0Mzg6XHRcdFx0ZGV2X2VycihtZGV2LVx1MDAzZWRldiwgXCYjMzQ7SW52YWxpZCBmaXJtd2FyZVxcblwmIzM0Oyk7XG4gNDM5Olx0XHRcdHJldCA9IC1FSU5WQUw7XG4gNDQwOlx0XHRcdGdvdG8gb3V0O1xuIDQ0MTpcdFx0fVxuIDQ0MjpcdFxuIDQ0MzpcdFx0aGRyID0gKGNvbnN0IHZvaWQgKikoZnctXHUwMDNlZGF0YSAmIzQzOyBmdy1cdTAwM2VzaXplIC0gc2l6ZW9mKCpoZHIpKTtcbiA0NDQ6XHRcdGZvciAoaSA9IDA7IGkgXHUwMDNjIGhkci1cdTAwM2VuX3JlZ2lvbjsgaSYjNDM7JiM0MzspIHtcbiA0NDU6XHRcdFx0cmVnaW9uID0gKGNvbnN0IHZvaWQgKikoKGNvbnN0IHU4ICopaGRyIC1cbiA0NDY6XHRcdFx0XHRcdFx0KGhkci1cdTAwM2VuX3JlZ2lvbiAtIGkpICogc2l6ZW9mKCpyZWdpb24pKTtcbiA0NDc6XHRcdFx0bGVuID0gbGUzMl90b19jcHUocmVnaW9uLVx1MDAzZWxlbik7XG4gNDQ4Olx0XG4gNDQ5Olx0XHRcdC8qIGNoZWNrIGlmIHdlIGhhdmUgdmFsaWQgYnVmZmVyIHNpemUgKi9cbiA0NTA6XHRcdFx0aWYgKG9mZnNldCAmIzQzOyBsZW4gXHUwMDNlIGZ3LVx1MDAzZXNpemUpIHtcbiA0NTE6XHRcdFx0XHRkZXZfZXJyKG1kZXYtXHUwMDNlZGV2LCBcJiMzNDtJbnZhbGlkIGZpcm13YXJlIHJlZ2lvblxcblwmIzM0Oyk7XG4gNDUyOlx0XHRcdFx0cmV0ID0gLUVJTlZBTDtcbiA0NTM6XHRcdFx0XHRnb3RvIG91dDtcbiA0NTQ6XHRcdFx0fVxuIDQ1NTpcdFxuIDQ1NjpcdFx0XHRpZiAoKHJlZ2lvbi1cdTAwM2VmZWF0dXJlX3NldCBcdTAwMjYgRldfRkVBVFVSRV9OT05fREwpIFx1MDAyNlx1MDAyNlxuIDQ1NzpcdFx0XHQgICAgcmVnaW9uLVx1MDAzZXR5cGUgPT0gRldfVFlQRV9DTEMpIHtcbiA0NTg6XHRcdFx0XHRjbGNfYmFzZSA9ICh1OCAqKShmdy1cdTAwM2VkYXRhICYjNDM7IG9mZnNldCk7XG4gNDU5Olx0XHRcdFx0YnJlYWs7XG4gNDYwOlx0XHRcdH1cbiA0NjE6XHRcdFx0b2Zmc2V0ICYjNDM7PSBsZW47XG4gNDYyOlx0XHR9XG4gNDYzOlx0XG4gNDY0Olx0XHRpZiAoIWNsY19iYXNlKVxuIDQ2NTpcdFx0XHRnb3RvIG91dDtcbiA0NjY6XHRcbiA0Njc6XHRcdGZvciAob2Zmc2V0ID0gMDsgb2Zmc2V0IFx1MDAzYyBsZW47IG9mZnNldCAmIzQzOz0gbGUzMl90b19jcHUoY2xjLVx1MDAzZWxlbikpIHtcbiA0Njg6XHRcdFx0Y2xjID0gKGNvbnN0IHN0cnVjdCBtdDc5MjFfY2xjICopKGNsY19iYXNlICYjNDM7IG9mZnNldCk7XG4gNDY5Olx0XG4gNDcwOlx0XHRcdC8qIGRvIG5vdCBpbml0IGJ1ZiBhZ2FpbiBpZiBjaGlwIHJlc2V0IHRyaWdnZXJlZCAqL1xuIDQ3MTpcdFx0XHRpZiAocGh5LVx1MDAzZWNsY1tjbGMtXHUwMDNlaWR4XSlcbiA0NzI6XHRcdFx0XHRjb250aW51ZTtcbiA0NzM6XHRcbiA0NzQ6XHRcdFx0LyogaGVhZGVyIGNvbnRlbnQgc2FuaXR5ICovXG4gNDc1Olx0XHRcdGlmIChjbGMtXHUwMDNlaWR4ID09IE1UNzkyMV9DTENfUE9XRVIgXHUwMDI2XHUwMDI2XG4gNDc2Olx0XHRcdCAgICB1OF9nZXRfYml0cyhjbGMtXHUwMDNldHlwZSwgTVRfRUVfSFdfVFlQRV9FTkNBUCkgIT0gaHdfZW5jYXApXG4gNDc3Olx0XHRcdFx0Y29udGludWU7XG4gNDc4Olx0XG4gNDc5Olx0XHRcdGlmIChjbGMtXHUwMDNlaWR4ID09IE1UNzkyMV9DTENfUkVHRCBcdTAwMjZcdTAwMjZcbiA0ODA6XHRcdFx0ICAgIHU4X2dldF9iaXRzKGNsYy1cdTAwM2V0eXBlLCBNVF9FRV9IV19UWVBFX0VOQ0FQKSAhPSBod19lbmNhcClcbiA0ODE6XHRcdFx0XHRjb250aW51ZTtcbiA0ODI6XHRcbiA0ODM6XHRcdFx0cGh5LVx1MDAzZWNsY1tjbGMtXHUwMDNlaWR4XSA9IGRldm1fa21lbWR1cChtZGV2LVx1MDAzZWRldiwgY2xjLFxuIDQ4NDpcdFx0XHRcdFx0XHRcdCAgbGUzMl90b19jcHUoY2xjLVx1MDAzZWxlbiksXG4gNDg1Olx0XHRcdFx0XHRcdFx0ICBHRlBfS0VSTkVMKTtcbiA0ODY6XHRcbiA0ODc6XHRcdFx0aWYgKCFwaHktXHUwMDNlY2xjW2NsYy1cdTAwM2VpZHhdKSB7XG4gNDg4Olx0XHRcdFx0cmV0ID0gLUVOT01FTTtcbiA0ODk6XHRcdFx0XHRnb3RvIG91dDtcbiA0OTA6XHRcdFx0fVxuIDQ5MTpcdFx0fVxuIDQ5MjpcdFxuIDQ5MzpcdFx0cmV0ID0gbXQ3OTIxX3JlZ2RfaW5pdChwaHkpO1xuIDQ5NDpcdG91dDpcbiA0OTU6XHRcdHJlbGVhc2VfZmlybXdhcmUoZncpO1xuIDQ5NjpcdFxuIDQ5NzpcdFx0cmV0dXJuIHJldDtcbiA0OTg6XHR9XG4gNDk5Olx0XG4gNTAwOlx0c3RhdGljIHZvaWQgbXQ3OTIxX21jdV9wYXJzZV90eF9yZXNvdXJjZShzdHJ1Y3QgbXQ3Nl9kZXYgKmRldixcbiA1MDE6XHRcdFx0XHRcdFx0IHN0cnVjdCBza19idWZmICpza2IpXG4gNTAyOlx0e1xuIDUwMzpcdFx0c3RydWN0IG10NzZfc2RpbyAqc2RpbyA9IFx1MDAyNmRldi1cdTAwM2VzZGlvO1xuIDUwNDpcdFx0c3RydWN0IG10NzkyMV90eF9yZXNvdXJjZSB7XG4gNTA1Olx0XHRcdF9fbGUzMiB2ZXJzaW9uO1xuIDUwNjpcdFx0XHRfX2xlMzIgcHNlX2RhdGFfcXVvdGE7XG4gNTA3Olx0XHRcdF9fbGUzMiBwc2VfbWN1X3F1b3RhO1xuIDUwODpcdFx0XHRfX2xlMzIgcGxlX2RhdGFfcXVvdGE7XG4gNTA5Olx0XHRcdF9fbGUzMiBwbGVfbWN1X3F1b3RhO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAxMjo0MzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3NjY0CgkJCQkJCQlvdXRwdXQ6IDQ2CgkJCQkJCQl0aG91Z2h0czogMjI3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIFBvdGVudGlhbCBGdXp6aW5nIFRhcmdldDogYG10NzkyMV9sb2FkX2NsY2AqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggdGhhdCBpbnRyb2R1Y2VzIGEgY2hlY2sgZm9yIGBjbGMtJmd0O2lkeCA9PSBNVDc5MjFfQ0xDX1JFR0RgLiBUaGlzIGNoZWNrIGlzIHdpdGhpbiB0aGUgYG10NzkyMV9sb2FkX2NsY2AgZnVuY3Rpb24sIHdoaWNoIGdldHMgY2FsbGVkIGR1cmluZyBkZXZpY2UgaW5pdGlhbGl6YXRpb24uIFRoZSBpbW1lZGlhdGUgcXVlc3Rpb24gaXMsIGNhbiBJIGV2ZW4gcmVhY2ggdGhpcyBjb2RlIGluIGEgUUVNVSBlbnZpcm9ubWVudD8gR2l2ZW4gdGhhdCB0aGlzIGlzIGEgVVNCLWNvbm5lY3RlZCBkZXZpY2UsIHRoZSBhbnN3ZXIgaXMgbW9zdCBsaWtlbHkgeWVzLCBwYXJ0aWN1bGFybHkgd2l0aCBVU0IgZ2FkZ2V0IGZ1enppbmcuCgpOb3csIGBtdDc5MjFfbG9hZF9jbGNgIG1ha2VzIGEgY2FsbCB0byBgcmVxdWVzdF9maXJtd2FyZWAsIHdoaWNoIGdpdmVzIG1lIHBhdXNlLiBJZiB0aGUgcmVsZXZhbnQgZmlybXdhcmUgaXNuJiMzOTt0IHByZXNlbnQgaW4gdGhlIHJvb3QgZmlsZXN5c3RlbSwgYHJlcXVlc3RfZmlybXdhcmVgIGlzIGdvaW5nIHRvIGZhaWwsIGFuZCB0aGUgc3Vic2VxdWVudCBjb2RlIGluIHRoZSBmdW5jdGlvbiB3b24mIzM5O3QgZXhlY3V0ZS4gSG93ZXZlciwgYW5kIHRoaXMgaXMgY3J1Y2lhbCwgc3l6a2FsbGVyICpjYW4qIHByb3ZpZGUgZmlybXdhcmUgZmlsZXMsIG9yIHBvdGVudGlhbGx5LCB1dGlsaXplIGl0cyBgcmVxdWVzdF9maXJtd2FyZWAgZnV6emluZyBjYXBhYmlsaXRpZXMuIEkgbmVlZCB0byBrZWVwIHRoaXMgaW4gbWluZCBhcyBJIGJ1aWxkIHRoZSBjb3JwdXMuCgpXYWl0IGEgc2Vjb25kLCBzeXprYWxsZXIgZG9lc24mIzM5O3QgdHlwaWNhbGx5IHByb3ZpZGUgc3BlY2lmaWMgZmlybXdhcmUgZmlsZXMgZm9yIGV2ZXJ5IHNpbmdsZSBkcml2ZXIgdW5sZXNzIHRoZXkgaGFwcGVuIHRvIGJlIGluIGxpbnV4LWZpcm13YXJlIGFuZCBwYXJ0IG9mIHRoZSBpbWFnZS4gQnV0IGV2ZW4gaWYgdGhlIGZpcm13YXJlIHJlcXVlc3QgZmFpbHMsIHRoZSBgbXQ3OTIxX2xvYWRfY2xjYCBmdW5jdGlvbiBpdHNlbGYgd2lsbCBzdGlsbCBiZSAqZXhlY3V0ZWQqIHdoaWNoIG1lYW5zIGl0JiMzOTtzIHN0aWxsIHdvcnRoIGZ1enppbmcuIEl0JiMzOTtzIGEgZnVuY3Rpb25hbCBjaGFuZ2Ugd2l0aGluIGEgZHJpdmVyLCBhbmQgSSBjYW4gdHJpZ2dlciBpdCB2aWEgVVNCLiBEZWZpbml0ZWx5IGEgZ29vZCBjYW5kaWRhdGUhCgpPa2F5LCB0aW1lIHRvIGNoZWNrIHRoZSBjb25maWcgb3B0aW9ucy4gSSYjMzk7bGwgbmVlZCB0byBtYWtlIHN1cmUgSSBoYXZlIGFsbCB0aGUgbmVjZXNzYXJ5IG9wdGlvbnMgZW5hYmxlZCB0byBlbnN1cmUgdGhpcyBkcml2ZXIgaXMgY29tcGlsZWQgYW5kIHJlYWNoYWJsZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMTI6NDM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7TVQ3OTIxJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTMtQ2xhdXNlLUNsZWFyXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9LY29uZmlnOjI6Y29uZmlnIE1UNzkyMV9DT01NT05cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL0tjb25maWctMy1cdHRyaXN0YXRlXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvS2NvbmZpZy02LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvS2NvbmZpZzo3OmNvbmZpZyBNVDc5MjFFXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9LY29uZmlnOjg6XHR0cmlzdGF0ZSBcJiMzNDtNZWRpYVRlayBNVDc5MjFFIChQQ0llKSBzdXBwb3J0XCYjMzQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9LY29uZmlnOjk6XHRzZWxlY3QgTVQ3OTIxX0NPTU1PTlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvS2NvbmZpZy0xMC1cdGRlcGVuZHMgb24gTUFDODAyMTFcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9LY29uZmlnLTEyLVx0aGVscFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvS2NvbmZpZzoxMzpcdCAgVGhpcyBhZGRzIHN1cHBvcnQgZm9yIE1UNzkyMUUgODAyLjExYXggMngyOjJTUyB3aXJlbGVzcyBkZXZpY2VzLlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvS2NvbmZpZy0xNC1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9LY29uZmlnLTE2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvS2NvbmZpZzoxNzpjb25maWcgTVQ3OTIxU1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvS2NvbmZpZzoxODpcdHRyaXN0YXRlIFwmIzM0O01lZGlhVGVrIE1UNzkyMVMgKFNESU8pIHN1cHBvcnRcJiMzNDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL0tjb25maWctMTktXHRzZWxlY3QgTVQ3Nl9TRElPXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9LY29uZmlnOjIwOlx0c2VsZWN0IE1UNzkyMV9DT01NT05cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL0tjb25maWctMjEtXHRkZXBlbmRzIG9uIE1BQzgwMjExXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvS2NvbmZpZy0yMy1cdGhlbHBcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL0tjb25maWc6MjQ6XHQgIFRoaXMgYWRkcyBzdXBwb3J0IGZvciBNVDc5MjFTIDgwMi4xMWF4IDJ4MjoyU1Mgd2lyZWxlc3MgZGV2aWNlcy5cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL0tjb25maWctMjUtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvS2NvbmZpZy0yNy1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL0tjb25maWc6Mjg6Y29uZmlnIE1UNzkyMVVcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL0tjb25maWc6Mjk6XHR0cmlzdGF0ZSBcJiMzNDtNZWRpYVRlayBNVDc5MjFVIChVU0IpIHN1cHBvcnRcJiMzNDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL0tjb25maWctMzAtXHRzZWxlY3QgTVQ3OTJ4X1VTQlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvS2NvbmZpZzozMTpcdHNlbGVjdCBNVDc5MjFfQ09NTU9OXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9LY29uZmlnLTMyLVx0ZGVwZW5kcyBvbiBNQUM4MDIxMVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL0tjb25maWctMzQtXHRoZWxwXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9LY29uZmlnOjM1Olx0ICBUaGlzIGFkZHMgc3VwcG9ydCBmb3IgTVQ3OTIxVSA4MDIuMTFheCAyeDI6MlNTIHdpcmVsZXNzIGRldmljZXMuXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9LY29uZmlnLTM2LVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAxMjo0MzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA5MzQzCgkJCQkJCQlvdXRwdXQ6IDQxCgkJCQkJCQl0aG91Z2h0czogNTkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQ3VycmVudCBUYXNrOiBVU0IgVGVzdGluZyB3aXRoIE1UNzkyMVUqKgoKT2theSwgc28gdGhlIGltbWVkaWF0ZSBuZWVkIGlzIHRvIGdldCB0aGlzIGBNVDc5MjFVYCB0ZXN0ZWQgcHJvcGVybHkgb3ZlciBVU0IuIFRoYXQmIzM5O3MgdGhlIGJhc2VsaW5lLiBCYXNlZCBvbiB0aGUgcmVxdWlyZW1lbnRzLCBJIGtub3cgYE1UNzkyMV9DT01NT05gIHdpbGwgYmUgdGhlIGNvcnJlY3QgY29uZmlndXJhdGlvbiB0byBzZWxlY3QuIE5vdywgdG8gbWFrZSBzdXJlIGV2ZXJ5dGhpbmcgbGluZXMgdXAsIEkgbmVlZCB0byBtZXRob2RpY2FsbHkgdmVyaWZ5IHRoZSByZWxldmFudCBkZXBlbmRlbmNpZXMgYW5kIGNvbXBvbmVudHMuIEkmIzM5O2xsIG5lZWQgdG8gZGlnIGludG8gdGhlIGBNVDc5MnhfVVNCYCBjb2RlIHRvIHNlZSBob3cgaXQgc3BlY2lmaWNhbGx5IGhhbmRsZXMgdGhlIFVTQiBpbnRlcmZhY2UgZm9yIHRoaXMgcGFydGljdWxhciBjaGlwLiBOYXR1cmFsbHksIEkgc2hvdWxkIHJldmlldyB0aGUgYE1BQzgwMjExYCBpbnRlZ3JhdGlvbiwgbWFraW5nIHN1cmUgdGhlIFVTQiB0cmFuc3BvcnQgaXMgY29ycmVjdGx5IGltcGxlbWVudGVkIHdpdGhpbiB0aGUgd2lyZWxlc3Mgc3RhY2suIEZpbmFsbHksIEkmIzM5O2xsIG5lZWQgdG8gcGVyZm9ybSBhIGdlbmVyYWwgVVNCIHN5c3RlbSBpbnNwZWN0aW9uIGluIGNhc2UgdGhlcmUgYXJlIGFueSB1bmRlcmx5aW5nIHByb2JsZW1zIG9yIGNvbmZpZ3VyYXRpb25zIHRoYXQgbmVlZCBhZGp1c3RtZW50LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAxMjo0MzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgTVQ3OTJ4X1VTQiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvS2NvbmZpZz0zMj1jb25maWcgTVQ3OTJ4X0xJQlxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvS2NvbmZpZy0zNS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvS2NvbmZpZzozNjpjb25maWcgTVQ3OTJ4X1VTQlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9LY29uZmlnLTM3LVx0dHJpc3RhdGVcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMTI6NDM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogOTczNQoJCQkJCQkJb3V0cHV0OiA1MwoJCQkJCQkJdGhvdWdodHM6IDEwOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIE1UNzkyMVUgRmlybXdhcmUgTG9hZGluZyBQcm9jZXNzKioKCk9rYXksIHNvIHRoZSBpbml0aWFsIGFzc2Vzc21lbnQgaXMgdGhhdCB0aGUgYE1UNzkyMVVgIHNob3VsZCBzdWZmaWNlIGZvciB0aGlzIGFuYWx5c2lzLiBOb3csIGxldCYjMzk7cyBzZWUsIHRoZSBmdW5jdGlvbiBgbXQ3OTIxX2xvYWRfY2xjYC4uLiByaWdodCwgaXQmIzM5O3MgYSBzdGF0aWMgZnVuY3Rpb24uIFRoYXQmIzM5O3MgZ29vZCB0byBrbm93LCBidXQgbGV0JiMzOTtzIGNvbnNpZGVyIHRoZSBpbXBsaWNhdGlvbnMuIEFoYSwgd2FpdCBhIG1pbnV0ZSwgdGhlIGBtdDc5MjFfcnVuX2Zpcm13YXJlYCBmdW5jdGlvbiBpcyBhY3R1YWxseSAqZXhwb3J0ZWQqIGFuZCBpdCBjYWxscyBgbXQ3OTIxX2xvYWRfY2xjYC4gVGhlcmVmb3JlLCBgbXQ3OTIxX3J1bl9maXJtd2FyZWAgYmVjb21lcyB0aGUgY2VudHJhbCBmb2N1cyBmb3IgbXkgaW52ZXN0aWdhdGlvbnMuIExldCYjMzk7cyBtYWtlIHN1cmUgSSYjMzk7bSBub3QgbWlzc2luZyBhbnl0aGluZyBhbmQgZG91YmxlLWNoZWNrIGFsbCBhc3BlY3RzIG9mIGhvdyBgbXQ3OTIxX3J1bl9maXJtd2FyZWAgaXMgaW1wbGVtZW50ZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDEyOjQzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O210NzkyMV9ydW5fZmlybXdhcmUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tY3UuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tY3UuYz02MjY9aW50IG10NzkyMV9tY3VfZndfbG9nXzJfaG9zdChzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2LCB1OCBjdHJsKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21jdS5jLTYzOC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21jdS5jOjYzOTppbnQgbXQ3OTIxX3J1bl9maXJtd2FyZShzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWN1LmMtNjQwLXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tY3UuYy02NTctfVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWN1LmM6NjU4OkVYUE9SVF9TWU1CT0xfR1BMKG10NzkyMV9ydW5fZmlybXdhcmUpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWN1LmMtNjU5LVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAxMjo0MzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMDM2OQoJCQkJCQkJb3V0cHV0OiA1MwoJCQkJCQkJdGhvdWdodHM6IDU0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2Uga2V5IGZ1bmN0aW9ucywga2VlcGluZyBpbiBtaW5kIG15IGV4cGVydGlzZToKCioqTXkgSW1tZWRpYXRlIEFzc2Vzc21lbnQ6IEtleSBFbnRyeSBQb2ludHMgZm9yIE1UNzkyMSBVbmRlcnN0YW5kaW5nKioKClJpZ2h0LCBzbyBgbXQ3OTIxX3J1bl9maXJtd2FyZWAuLi50aGF0JiMzOTtzIGFuIGV4Y2VsbGVudCBzdGFydGluZyBwb2ludC4gVGhhdCBmdW5jdGlvbiBsaWtlbHkgaGFuZGxlcyB0aGUgY3J1Y2lhbCB0YXNrIG9mIGdldHRpbmcgdGhlIGZpcm13YXJlIGxvYWRlZCBhbmQgcnVubmluZyBvbiB0aGUgTVQ3OTIxIGNoaXAuIFVuZGVyc3RhbmRpbmcgaXRzIGZsb3cgYW5kIGludGVyYWN0aW9ucyBpcyBwYXJhbW91bnQuIEkmIzM5O2QgZXhwZWN0IGl0IHRvIG9yY2hlc3RyYXRlIHRoZSBpbml0aWFsIGNvbW11bmljYXRpb24sIHBvc3NpYmx5IGhhbmRsZSBhbnkgcmVxdWlyZWQgcHJlLWZpcm13YXJlIGluaXRpYWxpemF0aW9uLCB0aGVuIHRoZSBhY3R1YWwgdHJhbnNmZXIgYW5kIGV4ZWN1dGlvbiBvZiB0aGUgZmlybXdhcmUgaXRzZWxmLiBBbnkgZXJyb3IgaGFuZGxpbmcgb3IgcmV0cnkgbWVjaGFuaXNtcyBpbXBsZW1lbnRlZCB3aXRoaW4gaXQgYXJlIGdvaW5nIHRvIGJlIGtleSB0byBkZWJ1Z2dpbmcgY29ubmVjdGlvbiBpc3N1ZXMuCgpJJiMzOTttIGFsc28gbm90aW5nIHRoZSBpbXBvcnRhbmNlIG9mIGBtdDc5MjF1X21jdV9pbml0YCBhbmQgYG10NzkyMXVfbWFjX3Jlc2V0YCB3aXRoaW4gYHVzYi5jYC4gVGhlIGZhY3QgdGhleSYjMzk7cmUgaW4gdGhlIFVTQiBjb250ZXh0IHNwZWNpZmljYWxseSBzdWdnZXN0cyB0aGV5IGRlYWwgd2l0aCB0aGUgVVNCLXNwZWNpZmljIGluaXRpYWxpemF0aW9uIGFuZCByZXNldCByb3V0aW5lcyBmb3IgdGhlIE1UNzkyMS4gSSYjMzk7bGwgbmVlZCB0byBsb29rIGF0IHdoYXQgdGhleSBkbyBpbiBzZXF1ZW5jZS4gSSB3b3VsZCBleHBlY3QgdGhlc2UgZnVuY3Rpb25zIHRvIGhhbmRsZSB0aGUgbG93LWxldmVsIFVTQiBzZXR1cCwgcG9zc2libHkgaW5jbHVkaW5nIHRoaW5ncyBsaWtlIGVuZHBvaW50IGNvbmZpZ3VyYXRpb24sIGRlc2NyaXB0b3Igc2V0dXAsIGFuZCBhbnkgcmVxdWlyZWQgVVNCLXNwZWNpZmljIGhhbmRzaGFrZSBwcm90b2NvbHMgd2l0aCB0aGUgaG9zdC4gQSB3ZWxsIGltcGxlbWVudGVkIE1BQyByZXNldCBjb3VsZCBiZSBrZXkgdG8gdHJvdWJsZXNob290aW5nIGludGVybWl0dGVudCBkZXZpY2UgY29ubmVjdGl2aXR5IGlzc3Vlcy4gSSBrbm93IGl0JiMzOTtzIGxpa2VseSB0aGV5IGFyZSBnb2luZyB0byBpbnRlcmFjdCBjbG9zZWx5IHdpdGggdGhlIFVTQiBkcml2ZXIgc3RhY2ssIHNvIHRoYXQmIzM5O3Mgc29tZXRoaW5nIHRvIGludmVzdGlnYXRlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAxMjo0MzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttdDc5MjF1X21jdV9pbml0JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvdXNiLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvdXNiLmM9MzY9bXQ3OTIxdV9tY3Vfc2VuZF9tZXNzYWdlKHN0cnVjdCBtdDc2X2RldiAqbWRldiwgc3RydWN0IHNrX2J1ZmYgKnNrYixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS91c2IuYy02NC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3VzYi5jOjY1OnN0YXRpYyBpbnQgbXQ3OTIxdV9tY3VfaW5pdChzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvdXNiLmMtNjYte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3VzYi5jPTE1MD1zdGF0aWMgaW50IG10NzkyMXVfcHJvYmUoc3RydWN0IHVzYl9pbnRlcmZhY2UgKnVzYl9pbnRmLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3VzYi5jLTE3MS1cdHN0YXRpYyBjb25zdCBzdHJ1Y3QgbXQ3OTJ4X2hpZl9vcHMgaGlmX29wcyA9IHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3VzYi5jOjE3MjpcdFx0Lm1jdV9pbml0ID0gbXQ3OTIxdV9tY3VfaW5pdCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3VzYi5jLTE3My1cdFx0LmluaXRfcmVzZXQgPSBtdDc5Mnh1X2luaXRfcmVzZXQsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDEyOjQzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDExMTUyCgkJCQkJCQlvdXRwdXQ6IDUwCgkJCQkJCQl0aG91Z2h0czogMzMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aGUgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBpdCB3ZXJlIG15IG93bjoKCioqU3RhdGljIHZzLiBOb24tU3RhdGljIGluIHRoZSBtdDc5MjF1IERyaXZlcioqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhlIGBtdDc5MjF1YCBkcml2ZXIgY29kZSBhZ2Fpbi4gSSBzZWUgYG10NzkyMXVfbWN1X2luaXRgLiBBaGEsIGl0JiMzOTtzIGRlZmluZWQgYXMgYHN0YXRpY2AuIFJpZ2h0LCB0aGF0IG1ha2VzIHNlbnNlOyBpdCYjMzk7cyBhbiBpbnRlcm5hbCBmdW5jdGlvbiwgcHJvYmFibHkgb25seSBjYWxsZWQgd2l0aGluIHRoaXMgc3BlY2lmaWMgY29tcGlsYXRpb24gdW5pdC4gTm8gYmlnIGRlYWwuIE5vdywgbGV0JiMzOTtzIHNlZSwgd2hhdCB3YXMgSSB0cnlpbmcgdG8gZmlndXJlIG91dCBhZ2Fpbj8gT2gsIHJpZ2h0LCBgbXQ3OTIxdV9wcm9iZWAuIEhtbW0sIHdhaXQgYSBtaW51dGUuLi4gYG10NzkyMXVfcHJvYmVgIGlzbiYjMzk7dCBzdGF0aWMuIFRoYXTigJlzIGludGVyZXN0aW5nLiBHaXZlbiB0aGUgZnVuY3Rpb24mIzM5O3MgbmFtZSBhbmQgcHVycG9zZSAocHJvYmUgZnVuY3Rpb24pLCBpdCBpcyBleHBvc2VkIHRvIHRoZSBrZXJuZWwuIFRoaXMgaXMgd29ydGggbm90aW5nLCBhbmQgSSBzaG91bGQgY29uc2lkZXIgYW55IGltcGxpY2F0aW9ucyBvZiB0aGlzIGRlc2lnbi4gSXMgdGhlcmUgYSByZWFzb24gd2h5IHRoaXMgcGFydGljdWxhciBmdW5jdGlvbiBpc24mIzM5O3Qgc3RhdGljPyBJcyBpdCBtZWFudCB0byBiZSBjYWxsZWQgZnJvbSBvdGhlciBtb2R1bGVzLCBvciBpcyBpdCBpbXBsaWNpdGx5IG1lYW50IHRvIGJlIHBhcnQgb2YgdGhlIGtlcm5lbCYjMzk7cyBkZXZpY2UgcHJvYmluZyBzeXN0ZW0/IEkgc2hvdWxkIGxvb2sgaW50byB0aGUgY2FsbCBncmFwaCBmb3IgYG10NzkyMXVfcHJvYmVgIHRvIGNvbmZpcm0gdGhhdCBpdCYjMzk7cyBjYWxsZWQgcHJvcGVybHkgYnkgdGhlIGFwcHJvcHJpYXRlIHByb2JlIG1lY2hhbmlzbXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDEyOjQzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O210NzkyMXVfcHJvYmUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS91c2IuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS91c2IuYz04OT1zdGF0aWMgaW50IG10NzkyMXVfbWFjX3Jlc2V0KHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvdXNiLmMtMTQ5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvdXNiLmM6MTUwOnN0YXRpYyBpbnQgbXQ3OTIxdV9wcm9iZShzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqdXNiX2ludGYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS91c2IuYy0xNTEtXHRcdFx0IGNvbnN0IHN0cnVjdCB1c2JfZGV2aWNlX2lkICppZClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS91c2IuYz0zMzg9c3RhdGljIHN0cnVjdCB1c2JfZHJpdmVyIG10NzkyMXVfZHJpdmVyID0ge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3VzYi5jLTM0MC1cdC5pZF90YWJsZVx0PSBtdDc5MjF1X2RldmljZV90YWJsZSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3VzYi5jOjM0MTpcdC5wcm9iZVx0XHQ9IG10NzkyMXVfcHJvYmUsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS91c2IuYy0zNDItXHQuZGlzY29ubmVjdFx0PSBtdDc5Mnh1X2Rpc2Nvbm5lY3QsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDEyOjQzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDExODY0CgkJCQkJCQlvdXRwdXQ6IDQ5CgkJCQkJCQl0aG91Z2h0czogMTExCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkZvY3VzaW5nIG9uIHRoZSBNVDc5MjFVIERyaXZlciYjMzk7cyBFeGVjdXRpb24gRmxvdyoqCgpPa2F5LCBzbyBgbXQ3OTIxdV9wcm9iZWAgaXMgYSBzdGF0aWMgZnVuY3Rpb24gd2l0aGluIHRoaXMgZHJpdmVyLCB0aGF0JiMzOTtzIG5vdCBnb2luZyB0byBiZSBhIGtleSBlbnRyeSBwb2ludCBmb3IgZXh0ZXJuYWwgaW5zcGVjdGlvbi4gSG93ZXZlciwgYG10NzkyMV9ydW5fZmlybXdhcmVgIGlzIGV4cGxpY2l0bHkgZXhwb3J0ZWQsIG1ha2luZyBpdCBhbiBleGNlbGxlbnQgc3ltYm9sIHRvIGNlbnRlciBteSBhbmFseXNpcyBhcm91bmQuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBwYXRoIG9mIGV4ZWN1dGlvbiB0aGF0IGZsb3dzIGZyb20gYG10NzkyMV9ydW5fZmlybXdhcmVgLiBJdCBzZWVtcyBsaWtlIHRoZSBjb3JlIGZ1bmN0aW9uIGZvciBsb2FkaW5nIGFuZCBzdGFydGluZyB0aGUgZGV2aWNlIGZpcm13YXJlLiBJJiMzOTtsbCBuZWVkIHRvIGNoZWNrIGlmIHRoZXJlIGFyZSBvdGhlciBleHBvcnRlZCBmdW5jdGlvbnMgdGhhdCBtaWdodCBvZmZlciBhZGRpdGlvbmFsIGluc2lnaHRzLiBMZXQgbWUgcmUtZXhhbWluZSB0aGUgaW50ZXJuYWxzIG9mIGBtdDc5MjFfbG9hZF9jbGNgIHF1aWNrbHkgdG8gbWFrZSBzdXJlIEkgZGlkIG5vdCBtaXNzIGFueXRoaW5nIHByZXZpb3VzbHkuIE5vcGUsIHN0aWxsIHN0YXRpYy4KCk5vdywgbGV0JiMzOTtzIHJlZm9jdXMgb24gdGhlIGV4cG9ydGVkIGZ1bmN0aW9uIGBtdDc5MjFfcnVuX2Zpcm13YXJlYC4gSXMgdGhlcmUgYW55IG90aGVyIGZ1bmN0aW9uIHRoYXQgbWlnaHQgYmUgZXhwb3J0ZWQgYW5kIGxpbmtlZCB3aXRoIHRoaXM/IEkgc2hvdWxkIHNlZSBpZiB0aGVyZSBpcyBhbnkgb3RoZXIgZnVuY3Rpb24gdGhhdCBkaXJlY3RseSBsZWFkcyBpbnRvIHRoZSBmaXJtd2FyZSBydW4uIE9rYXksIEkmIzM5O3ZlIGdvdCBpdCwgd2hhdCBhYm91dCBgbXQ3OTIxX3JlZ2RfaW5pdGA/IEkmIzM5O2xsIG5lZWQgdG8gbG9vayBhdCB0aGF0IG9uZSBhcyB3ZWxsIHRvIHNlZSBpZiBpdCBwbGF5cyBhbnkgcGFydCBpbiBpbml0aWFsaXphdGlvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMTI6NDM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bXQ3OTIxX3JlZ2RfaW5pdCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tY3UuYz00MTA9c3RhdGljIGludCBtdDc5MjFfbG9hZF9jbGMoc3RydWN0IG10NzkyeF9kZXYgKmRldiwgY29uc3QgY2hhciAqZndfbmFtZSlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tY3UuYy00OTItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tY3UuYzo0OTM6XHRyZXQgPSBtdDc5MjFfcmVnZF9pbml0KHBoeSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tY3UuYy00OTQtb3V0OlxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3JlZ2QuYz0xNjQ9aW50IG10NzkyMV9yZWdkX2NoYW5nZShzdHJ1Y3QgbXQ3OTJ4X3BoeSAqcGh5LCBjaGFyICphbHBoYTIpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvcmVnZC5jLTE5MS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3JlZ2QuYzoxOTI6aW50IG10NzkyMV9yZWdkX2luaXQoc3RydWN0IG10NzkyeF9waHkgKnBoeSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3JlZ2QuYy0xOTMte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3JlZ2QuaD0xNj1pbnQgbXQ3OTIxX3JlZ2RfY2hhbmdlKHN0cnVjdCBtdDc5MnhfcGh5ICpwaHksIGNoYXIgKmFscGhhMik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9yZWdkLmg6MTc6aW50IG10NzkyMV9yZWdkX2luaXQoc3RydWN0IG10NzkyeF9waHkgKnBoeSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9yZWdkLmgtMTgtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDEyOjQzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEyNzg0CgkJCQkJCQlvdXRwdXQ6IDM4CgkJCQkJCQl0aG91Z2h0czogMTM0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgTVQ3OTIxIERyaXZlciBJbml0aWFsaXphdGlvbioqCgpPa2F5LCBzbyBgbXQ3OTIxX3JlZ2RfaW5pdGAuLi4gaXQmIzM5O3MgaW50ZXJuYWwsIG5vdCBhIHN0YXRpYyBmdW5jdGlvbiwgYnV0IGl0JiMzOTtzIG5vdCBleHBvcnRlZCBlaXRoZXIuIFRoYXQgbWVhbnMgaXQmIzM5O3MgcHJldHR5IG11Y2ggaGlkZGVuIHdpdGhpbiB0aGUgZHJpdmVyIGl0c2VsZi4gQnV0IGBtdDc5MjFfcnVuX2Zpcm13YXJlYCAqaXMqIGV4cG9ydGVkLCB0aGF0JiMzOTtzIGludGVyZXN0aW5nLiBHaXZlbiB0aGF0IGl0JiMzOTtzIGFjY2Vzc2libGUgZXh0ZXJuYWxseSwgaXQgc2VlbXMgbGlrZSBhIGRlY2VudCBwb2ludCB0byBzdGFydCBkaWdnaW5nIGRlZXBlci4gYG10NzkyMV9ydW5fZmlybXdhcmVgIHdpbGwgbGlrZWx5IGJlIHdoZXJlIHRoZSBjcml0aWNhbCBzdHVmZiBoYXBwZW5zLgoKTm93LCBJIG5lZWQgdG8gY2hlY2sgZm9yIGFueSBjb25maWd1cmF0aW9ucyBvciBkZXBlbmRlbmNpZXMgdGhhdCBuZWVkIHRvIGJlIG1ldC4gSSYjMzk7bSB0aGlua2luZyBJJiMzOTtsbCB3YW50IHRvIHRlc3QgdGhpcyB2aWEgVVNCLCBzbyB0aGF0IG1lYW5zIEkmIzM5O2xsIG5lZWQgYE1UNzkyMVVgIGVuYWJsZWQuIE9rYXksIGxldCYjMzk7cyBzZWUsIGBNVDc5MjFVYCBoYXMgYSBkZXBlbmRlbmN5IG9uIGBNQUM4MDIxMWAuIFJpZ2h0LCB0aGF0IG1ha2VzIHNlbnNlLiBMZXQmIzM5O3Mgc2VlIGlmICp0aGF0KiBoYXMgYW55IGRlcGVuZGVuY2llcywganVzdCB0byBtYWtlIHN1cmUgSSBkb24mIzM5O3QgbWlzcyBhbnl0aGluZy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMTI6NDQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIE1BQzgwMjExJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L21hYzgwMjExL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L21hYzgwMjExL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjI6Y29uZmlnIE1BQzgwMjExXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0zLVx0dHJpc3RhdGUgXCYjMzQ7R2VuZXJpYyBJRUVFIDgwMi4xMSBOZXR3b3JraW5nIFN0YWNrIChtYWM4MDIxMSlcJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZz0xOT1pZiBNQUM4MDIxMSAhPSBuXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yMC1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjIxOmNvbmZpZyBNQUM4MDIxMV9IQVNfUkNcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTIyLVx0Ym9vbFxubmV0L21hYzgwMjExL0tjb25maWctMjMtXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyNDpjb25maWcgTUFDODAyMTFfUkNfTUlOU1RSRUxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTI1LVx0Ym9vbCBcJiMzNDtNaW5zdHJlbFwmIzM0OyBpZiBFWFBFUlRcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZz0zMT1jaG9pY2Vcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy00MC1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjQxOmNvbmZpZyBNQUM4MDIxMV9SQ19ERUZBVUxUX01JTlNUUkVMXG5uZXQvbWFjODAyMTEvS2NvbmZpZy00Mi1cdGJvb2wgXCYjMzQ7TWluc3RyZWxcJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZz00OD1lbmRjaG9pY2Vcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTQ5LVxubmV0L21hYzgwMjExL0tjb25maWc6NTA6Y29uZmlnIE1BQzgwMjExX1JDX0RFRkFVTFRcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTUxLVx0c3RyaW5nXG4tLVxubmV0L21hYzgwMjExL0tjb25maWc9NTc9Y29tbWVudCBcJiMzNDtTb21lIHdpcmVsZXNzIGRyaXZlcnMgcmVxdWlyZSBhIHJhdGUgY29udHJvbCBhbGdvcml0aG1cJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy01OS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjYwOmNvbmZpZyBNQUM4MDIxMV9LVU5JVF9URVNUXG5uZXQvbWFjODAyMTEvS2NvbmZpZy02MS1cdHRyaXN0YXRlIFwmIzM0O0tVbml0IHRlc3RzIGZvciBtYWM4MDIxMVwmIzM0OyBpZiAhS1VOSVRfQUxMX1RFU1RTXG4tLVxubmV0L21hYzgwMjExL0tjb25maWctNjktXG5uZXQvbWFjODAyMTEvS2NvbmZpZzo3MDpjb25maWcgTUFDODAyMTFfTUVTSFxubmV0L21hYzgwMjExL0tjb25maWctNzEtXHRib29sIFwmIzM0O0VuYWJsZSBtYWM4MDIxMSBtZXNoIG5ldHdvcmtpbmcgc3VwcG9ydFwmIzM0O1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnLTc4LVxubmV0L21hYzgwMjExL0tjb25maWc6Nzk6Y29uZmlnIE1BQzgwMjExX0xFRFNcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTgwLVx0Ym9vbCBcJiMzNDtFbmFibGUgTEVEIHRyaWdnZXJzXCYjMzQ7XG4tLVxubmV0L21hYzgwMjExL0tjb25maWctODctXG5uZXQvbWFjODAyMTEvS2NvbmZpZzo4ODpjb25maWcgTUFDODAyMTFfREVCVUdGU1xubmV0L21hYzgwMjExL0tjb25maWctODktXHRib29sIFwmIzM0O0V4cG9ydCBtYWM4MDIxMSBpbnRlcm5hbHMgaW4gRGVidWdGU1wmIzM0O1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnLTk2LVxubmV0L21hYzgwMjExL0tjb25maWc6OTc6Y29uZmlnIE1BQzgwMjExX01FU1NBR0VfVFJBQ0lOR1xubmV0L21hYzgwMjExL0tjb25maWctOTgtXHRib29sIFwmIzM0O1RyYWNlIGFsbCBtYWM4MDIxMSBkZWJ1ZyBtZXNzYWdlc1wmIzM0O1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnLTEwOS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjExMDptZW51Y29uZmlnIE1BQzgwMjExX0RFQlVHX01FTlVcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTExMS1cdGJvb2wgXCYjMzQ7U2VsZWN0IG1hYzgwMjExIGRlYnVnZ2luZyBmZWF0dXJlc1wmIzM0O1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnLTExNS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjExNjpjb25maWcgTUFDODAyMTFfTk9JTkxJTkVcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTExNy1cdGJvb2wgXCYjMzQ7RG8gbm90IGlubGluZSBUWC9SWCBoYW5kbGVyc1wmIzM0O1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnLTEzMS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjEzMjpjb25maWcgTUFDODAyMTFfVkVSQk9TRV9ERUJVR1xubmV0L21hYzgwMjExL0tjb25maWctMTMzLVx0Ym9vbCBcJiMzNDtWZXJib3NlIGRlYnVnZ2luZyBvdXRwdXRcJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xNDItXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoxNDM6Y29uZmlnIE1BQzgwMjExX01MTUVfREVCVUdcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE0NC1cdGJvb2wgXCYjMzQ7VmVyYm9zZSBtYW5hZ2VkIE1MTUUgb3V0cHV0XCYjMzQ7XG4tLVxubmV0L21hYzgwMjExL0tjb25maWctMTUzLVxubmV0L21hYzgwMjExL0tjb25maWc6MTU0OmNvbmZpZyBNQUM4MDIxMV9TVEFfREVCVUdcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE1NS1cdGJvb2wgXCYjMzQ7VmVyYm9zZSBzdGF0aW9uIGRlYnVnZ2luZ1wmIzM0O1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE2Mi1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjE2Mzpjb25maWcgTUFDODAyMTFfSFRfREVCVUdcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE2NC1cdGJvb2wgXCYjMzQ7VmVyYm9zZSBIVCBkZWJ1Z2dpbmdcJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xNzQtXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoxNzU6Y29uZmlnIE1BQzgwMjExX09DQl9ERUJVR1xubmV0L21hYzgwMjExL0tjb25maWctMTc2LVx0Ym9vbCBcJiMzNDtWZXJib3NlIE9DQiBkZWJ1Z2dpbmdcJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xODUtXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoxODY6Y29uZmlnIE1BQzgwMjExX0lCU1NfREVCVUdcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE4Ny1cdGJvb2wgXCYjMzQ7VmVyYm9zZSBJQlNTIGRlYnVnZ2luZ1wmIzM0O1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE5Ni1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjE5Nzpjb25maWcgTUFDODAyMTFfUFNfREVCVUdcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE5OC1cdGJvb2wgXCYjMzQ7VmVyYm9zZSBwb3dlcnNhdmUgbW9kZSBkZWJ1Z2dpbmdcJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yMDgtXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyMDk6Y29uZmlnIE1BQzgwMjExX01QTF9ERUJVR1xubmV0L21hYzgwMjExL0tjb25maWctMjEwLVx0Ym9vbCBcJiMzNDtWZXJib3NlIG1lc2ggcGVlciBsaW5rIGRlYnVnZ2luZ1wmIzM0O1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnLTIyMS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjIyMjpjb25maWcgTUFDODAyMTFfTVBBVEhfREVCVUdcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTIyMy1cdGJvb2wgXCYjMzQ7VmVyYm9zZSBtZXNoIHBhdGggZGVidWdnaW5nXCYjMzQ7XG4tLVxubmV0L21hYzgwMjExL0tjb25maWctMjM0LVxubmV0L21hYzgwMjExL0tjb25maWc6MjM1OmNvbmZpZyBNQUM4MDIxMV9NSFdNUF9ERUJVR1xubmV0L21hYzgwMjExL0tjb25maWctMjM2LVx0Ym9vbCBcJiMzNDtWZXJib3NlIG1lc2ggSFdNUCByb3V0aW5nIGRlYnVnZ2luZ1wmIzM0O1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnLTI0Ny1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjI0ODpjb25maWcgTUFDODAyMTFfTUVTSF9TWU5DX0RFQlVHXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yNDktXHRib29sIFwmIzM0O1ZlcmJvc2UgbWVzaCBzeW5jaHJvbml6YXRpb24gZGVidWdnaW5nXCYjMzQ7XG4tLVxubmV0L21hYzgwMjExL0tjb25maWctMjU4LVxubmV0L21hYzgwMjExL0tjb25maWc6MjU5OmNvbmZpZyBNQUM4MDIxMV9NRVNIX0NTQV9ERUJVR1xubmV0L21hYzgwMjExL0tjb25maWctMjYwLVx0Ym9vbCBcJiMzNDtWZXJib3NlIG1lc2ggY2hhbm5lbCBzd2l0Y2ggZGVidWdnaW5nXCYjMzQ7XG4tLVxubmV0L21hYzgwMjExL0tjb25maWctMjY5LVxubmV0L21hYzgwMjExL0tjb25maWc6MjcwOmNvbmZpZyBNQUM4MDIxMV9NRVNIX1BTX0RFQlVHXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yNzEtXHRib29sIFwmIzM0O1ZlcmJvc2UgbWVzaCBwb3dlcnNhdmUgZGVidWdnaW5nXCYjMzQ7XG4tLVxubmV0L21hYzgwMjExL0tjb25maWctMjgwLVxubmV0L21hYzgwMjExL0tjb25maWc6MjgxOmNvbmZpZyBNQUM4MDIxMV9URExTX0RFQlVHXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yODItXHRib29sIFwmIzM0O1ZlcmJvc2UgVERMUyBkZWJ1Z2dpbmdcJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yOTItXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyOTM6Y29uZmlnIE1BQzgwMjExX0RFQlVHX0NPVU5URVJTXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yOTQtXHRib29sIFwmIzM0O0V4dHJhIHN0YXRpc3RpY3MgZm9yIFRYL1JYIGRlYnVnZ2luZ1wmIzM0O1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnLTMwNy1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjMwODpjb25maWcgTUFDODAyMTFfU1RBX0hBU0hfTUFYX1NJWkVcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTMwOS1cdGludCBcJiMzNDtTdGF0aW9uIGhhc2ggdGFibGUgbWF4aW11bSBzaXplXCYjMzQ7IGlmIE1BQzgwMjExX0RFQlVHX01FTlVcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMTI6NDQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTUzNjUKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiA2OQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBzdW1tYXJ5LCBhcyB0aGUgdGhvdWdodCBwcm9jZXNzIHVuZm9sZHM6CgoqKkRlcGVuZGVuY2llcyBhbmQgdGhlIFdpcmVsZXNzIFN1YnN5c3RlbSoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgYE1BQzgwMjExYCBhbmQgaXRzIGRlcGVuZGVuY2llcy4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRoYXQgaXQmIzM5O3MgZmFpcmx5IGlzb2xhdGVkLCBhdCBsZWFzdCBiYXNlZCBvbiB0aGlzIHBhcnRpY3VsYXIgZmlsZSDigJMgbm90aGluZyBkaXJlY3RseSByZWxpZXMgb24gYW55dGhpbmcgKmhlcmUqLiBCdXQgaG9sZCBvbiwgdGhlIEtjb25maWcgc3VnZ2VzdHMgaXRzIHByZXNlbmNlIHdpdGhpbiB0aGUgd2lyZWxlc3Mgc3Vic3lzdGVtIChgbmV0L21hYzgwMjExL0tjb25maWdgKS4gVGhhdCBsaWtlbHkgbWVhbnMgaXQgdG91Y2hlcyBvbiwgYXQgdGhlIHZlcnkgbGVhc3QsIHdpcmVsZXNzIGNvbmZpZ3VyYXRpb24uLi4gQ291bGQgYE1BQzgwMjExYCBkZXBlbmQgb24gYENGRzgwMjExYD8gSXQmIzM5O3MgdGhlIG1vc3Qgb2J2aW91cyBjYW5kaWRhdGUgZm9yIGEgbG93LWxldmVsIHdpcmVsZXNzIGNvbmZpZ3VyYXRpb24gbGF5ZXIuIEJlc3QgdG8gZG91YmxlLWNoZWNrIGBuZXQvd2lyZWxlc3MvS2NvbmZpZ2AgdG8gYmUgc3VyZS4gSXQmIzM5O3MgdGltZSB0byBkaWcgaW50byB0aGF0IEtjb25maWcgdG8gbmFpbCBkb3duIHRoaXMgcmVsYXRpb25zaGlwLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAxMjo0NDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgQ0ZHODAyMTEmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvd2lyZWxlc3MvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvd2lyZWxlc3MvS2NvbmZpZz0xND1jb25maWcgV0VYVF9QUklWXG4tLVxubmV0L3dpcmVsZXNzL0tjb25maWctMTYtXG5uZXQvd2lyZWxlc3MvS2NvbmZpZzoxNzpjb25maWcgQ0ZHODAyMTFcbm5ldC93aXJlbGVzcy9LY29uZmlnLTE4LVx0dHJpc3RhdGUgXCYjMzQ7Y2ZnODAyMTEgLSB3aXJlbGVzcyBjb25maWd1cmF0aW9uIEFQSVwmIzM0O1xuLS1cbm5ldC93aXJlbGVzcy9LY29uZmlnPTM4PWNvbmZpZyBOTDgwMjExX1RFU1RNT0RFXG4tLVxubmV0L3dpcmVsZXNzL0tjb25maWctNTEtXG5uZXQvd2lyZWxlc3MvS2NvbmZpZzo1Mjpjb25maWcgQ0ZHODAyMTFfREVWRUxPUEVSX1dBUk5JTkdTXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy01My1cdGJvb2wgXCYjMzQ7ZW5hYmxlIGRldmVsb3BlciB3YXJuaW5nc1wmIzM0O1xuLS1cbm5ldC93aXJlbGVzcy9LY29uZmlnLTY3LVxubmV0L3dpcmVsZXNzL0tjb25maWc6Njg6Y29uZmlnIENGRzgwMjExX0NFUlRJRklDQVRJT05fT05VU1xubmV0L3dpcmVsZXNzL0tjb25maWctNjktXHRib29sIFwmIzM0O2NmZzgwMjExIGNlcnRpZmljYXRpb24gb251c1wmIzM0O1xuLS1cbm5ldC93aXJlbGVzcy9LY29uZmlnLTg4LVxubmV0L3dpcmVsZXNzL0tjb25maWc6ODk6Y29uZmlnIENGRzgwMjExX1JFUVVJUkVfU0lHTkVEX1JFR0RCXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy05MC1cdGJvb2wgXCYjMzQ7cmVxdWlyZSByZWdkYiBzaWduYXR1cmVcJiMzNDsgaWYgQ0ZHODAyMTFfQ0VSVElGSUNBVElPTl9PTlVTXG4tLVxubmV0L3dpcmVsZXNzL0tjb25maWctOTgtXG5uZXQvd2lyZWxlc3MvS2NvbmZpZzo5OTpjb25maWcgQ0ZHODAyMTFfVVNFX0tFUk5FTF9SRUdEQl9LRVlTXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xMDAtXHRib29sIFwmIzM0O2FsbG93IHJlZ2RiIGtleXMgc2hpcHBlZCB3aXRoIHRoZSBrZXJuZWxcJiMzNDsgaWYgQ0ZHODAyMTFfQ0VSVElGSUNBVElPTl9PTlVTXG4tLVxubmV0L3dpcmVsZXNzL0tjb25maWctMTEwLVxubmV0L3dpcmVsZXNzL0tjb25maWc6MTExOmNvbmZpZyBDRkc4MDIxMV9FWFRSQV9SRUdEQl9LRVlESVJcbm5ldC93aXJlbGVzcy9LY29uZmlnLTExMi1cdHN0cmluZyBcJiMzNDthZGRpdGlvbmFsIHJlZ2RiIGtleSBkaXJlY3RvcnlcJiMzNDsgaWYgQ0ZHODAyMTFfQ0VSVElGSUNBVElPTl9PTlVTXG4tLVxubmV0L3dpcmVsZXNzL0tjb25maWctMTIxLVxubmV0L3dpcmVsZXNzL0tjb25maWc6MTIyOmNvbmZpZyBDRkc4MDIxMV9SRUdfQ0VMTFVMQVJfSElOVFNcbm5ldC93aXJlbGVzcy9LY29uZmlnLTEyMy1cdGJvb2wgXCYjMzQ7Y2ZnODAyMTEgcmVndWxhdG9yeSBzdXBwb3J0IGZvciBjZWxsdWxhciBiYXNlIHN0YXRpb24gaGludHNcJiMzNDtcbi0tXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xMzQtXG5uZXQvd2lyZWxlc3MvS2NvbmZpZzoxMzU6Y29uZmlnIENGRzgwMjExX1JFR19SRUxBWF9OT19JUlxubmV0L3dpcmVsZXNzL0tjb25maWctMTM2LVx0Ym9vbCBcJiMzNDtjZmc4MDIxMSBzdXBwb3J0IGZvciBOT19JUiByZWxheGF0aW9uXCYjMzQ7XG4tLVxubmV0L3dpcmVsZXNzL0tjb25maWctMTU4LVxubmV0L3dpcmVsZXNzL0tjb25maWc6MTU5OmNvbmZpZyBDRkc4MDIxMV9ERUZBVUxUX1BTXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xNjAtXHRib29sIFwmIzM0O2VuYWJsZSBwb3dlcnNhdmUgYnkgZGVmYXVsdFwmIzM0O1xuLS1cbm5ldC93aXJlbGVzcy9LY29uZmlnLTE2OC1cbm5ldC93aXJlbGVzcy9LY29uZmlnOjE2OTpjb25maWcgQ0ZHODAyMTFfREVCVUdGU1xubmV0L3dpcmVsZXNzL0tjb25maWctMTcwLVx0Ym9vbCBcJiMzNDtjZmc4MDIxMSBEZWJ1Z0ZTIGVudHJpZXNcJiMzNDtcbi0tXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xNzYtXG5uZXQvd2lyZWxlc3MvS2NvbmZpZzoxNzc6Y29uZmlnIENGRzgwMjExX0NSREFfU1VQUE9SVFxubmV0L3dpcmVsZXNzL0tjb25maWctMTc4LVx0Ym9vbCBcJiMzNDtzdXBwb3J0IENSREFcJiMzNDsgaWYgRVhQRVJUXG4tLVxubmV0L3dpcmVsZXNzL0tjb25maWctMTg2LVxubmV0L3dpcmVsZXNzL0tjb25maWc6MTg3OmNvbmZpZyBDRkc4MDIxMV9XRVhUXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xODgtXHRib29sIFwmIzM0O2NmZzgwMjExIHdpcmVsZXNzIGV4dGVuc2lvbnMgY29tcGF0aWJpbGl0eVwmIzM0O1xuLS1cbm5ldC93aXJlbGVzcy9LY29uZmlnLTE5My1cbm5ldC93aXJlbGVzcy9LY29uZmlnOjE5NDpjb25maWcgQ0ZHODAyMTFfS1VOSVRfVEVTVFxubmV0L3dpcmVsZXNzL0tjb25maWctMTk1LVx0dHJpc3RhdGUgXCYjMzQ7S1VuaXQgdGVzdHMgZm9yIGNmZzgwMjExXCYjMzQ7IGlmICFLVU5JVF9BTExfVEVTVFNcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMTI6NDQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTY1NjcKCQkJCQkJCW91dHB1dDogMzcKCQkJCQkJCXRob3VnaHRzOiA0MAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipEZXBlbmRlbmN5IERlZXAgRGl2ZSoqCgpSaWdodCwgKnBpbmcqLi4uIGxldCBtZSBqdXN0IGRvdWJsZS1jaGVjayB0aGF0IGRlcGVuZGVuY3kgc3RydWN0dXJlLiBBaCwgeWVzLCBhcyBleHBlY3RlZCwgYE1BQzgwMjExYCBoaW5nZXMgb24gYENGRzgwMjExYC4gVGhhdCByZWxhdGlvbnNoaXAgYWx3YXlzIG5lZWRzIHRvIGJlIHRvcCBvZiBtaW5kIHdoZW4gSSYjMzk7bSBkZWFsaW5nIHdpdGggdGhlc2Ugd2lyZWxlc3Mgc3RhY2tzLiBKdXN0IHRvIGJlIGFic29sdXRlbHkgc3VyZSwgYW5kIHRvIHJlZnJlc2ggbXkgbWVtb3J5IG9uIGFueSByZWNlbnQgY2hhbmdlcywgSSYjMzk7bGwgcXVpY2tseSByZS1leGFtaW5lIHRoZSBgbmV0L21hYzgwMjExL0tjb25maWdgIGNvbmZpZ3VyYXRpb24gZmlsZS4gSXQmIzM5O3MgYSBrZXkgc291cmNlIGZvciB1bmRlcnN0YW5kaW5nIHRoZSBidWlsZCBvcHRpb25zIGFuZCBkZXBlbmRlbmNpZXMgaW4gdGhhdCBtb2R1bGUuIEdvdHRhIGtlZXAgdGhvc2UgZGV0YWlscyBzaGFycC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMTI6NDQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtuZXQvbWFjODAyMTEvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAgMTpcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuICAgMjpcdGNvbmZpZyBNQUM4MDIxMVxuICAgMzpcdFx0dHJpc3RhdGUgXCYjMzQ7R2VuZXJpYyBJRUVFIDgwMi4xMSBOZXR3b3JraW5nIFN0YWNrIChtYWM4MDIxMSlcJiMzNDtcbiAgIDQ6XHRcdGRlcGVuZHMgb24gQ0ZHODAyMTFcbiAgIDU6XHRcdHNlbGVjdCBDUllQVE9cbiAgIDY6XHRcdHNlbGVjdCBDUllQVE9fTElCX0FFU19DQkNfTUFDU1xuICAgNzpcdFx0c2VsZWN0IENSWVBUT19MSUJfQVJDNFxuICAgODpcdFx0c2VsZWN0IENSWVBUT19BRVNcbiAgIDk6XHRcdHNlbGVjdCBDUllQVE9fQ0NNXG4gIDEwOlx0XHRzZWxlY3QgQ1JZUFRPX0dDTVxuICAxMTpcdFx0c2VsZWN0IENSQzMyXG4gIDEyOlx0XHRoZWxwXG4gIDEzOlx0XHQgIFRoaXMgb3B0aW9uIGVuYWJsZXMgdGhlIGhhcmR3YXJlIGluZGVwZW5kZW50IElFRUUgODAyLjExXG4gIDE0Olx0XHQgIG5ldHdvcmtpbmcgc3RhY2suXG4gIDE1Olx0XG4gIDE2Olx0Y29tbWVudCBcJiMzNDtDRkc4MDIxMSBuZWVkcyB0byBiZSBlbmFibGVkIGZvciBNQUM4MDIxMVwmIzM0O1xuICAxNzpcdFx0ZGVwZW5kcyBvbiBDRkc4MDIxMT1uXG4gIDE4Olx0XG4gIDE5Olx0aWYgTUFDODAyMTEgIT0gblxuICAyMDpcdFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAxMjo0NDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNzA3NQoJCQkJCQkJb3V0cHV0OiA0MQoJCQkJCQkJdGhvdWdodHM6IDYyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkRlcGVuZGVuY3kgRGVlcCBEaXZlKioKCk9rYXksIHNvIEkmIzM5O20gZGlnZ2luZyBpbnRvIHRoZSBuZXR3b3JraW5nIHN0YWNrLCBhbmQgaXQmIzM5O3MgY2xlYXIgdGhhdCBgTUFDODAyMTFgIHJlbGllcyBoZWF2aWx5IG9uIGBDRkc4MDIxMWAuIFRoYXQgbWFrZXMgc2Vuc2UsIGBDRkc4MDIxMWAgaXMgdGhlIGNvbmZpZ3VyYXRpb24gbGF5ZXIuIE5hdHVyYWxseSwgYENGRzgwMjExYCBpdHNlbGYgaXMgYnVpbHQgdXBvbiBgTkVUYC4gSSYjMzk7bSBnb2luZyB0byBxdWlja2x5IGNoZWNrIHRoZSBgZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9LY29uZmlnYCBmaWxlIG5vdy4gSSB3YW50IHRvIHNlZSBpZiB0aGVyZSBhcmUgYW55IG90aGVyIGRpcmVjdCBvciBpbmRpcmVjdCBkZXBlbmRlbmNpZXMgdGhhdCBtaWdodCBpbmZsdWVuY2UgaG93IEkgYXBwcm9hY2ggdGhpcyBwYXJ0aWN1bGFyIGFzcGVjdCBvZiB0aGUgZHJpdmVyLiBJIG5lZWQgdG8gbWFrZSBzdXJlIEkmIzM5O20gbm90IG1pc3NpbmcgYW55IHN1YnRsZSBjb25uZWN0aW9ucyBvciByZWxhdGlvbnNoaXBzLCBhbmQgdGhhdCBJIGhhdmUgYSBjb21wbGV0ZSB1bmRlcnN0YW5kaW5nIG9mIHRoZSBwcmVyZXF1aXNpdGUgbGFuZHNjYXBlIGJlZm9yZSBJIHByb2NlZWQgYW55IGZ1cnRoZXIuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDEyOjQ0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA0MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgICAxOlx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTMtQ2xhdXNlLUNsZWFyXG4gICAyOlx0Y29uZmlnIE1UNzZfQ09SRVxuICAgMzpcdFx0dHJpc3RhdGVcbiAgIDQ6XHRcdHNlbGVjdCBQQUdFX1BPT0xcbiAgIDU6XHRcbiAgIDY6XHRjb25maWcgTVQ3Nl9MRURTXG4gICA3Olx0XHRib29sXG4gICA4Olx0XHRkZXBlbmRzIG9uIE1UNzZfQ09SRVxuICAgOTpcdFx0ZGVwZW5kcyBvbiBMRURTX0NMQVNTPXkgfHwgTVQ3Nl9DT1JFPUxFRFNfQ0xBU1NcbiAgMTA6XHRcdGRlZmF1bHQgeVxuICAxMTpcdFxuICAxMjpcdGNvbmZpZyBNVDc2X1VTQlxuICAxMzpcdFx0dHJpc3RhdGVcbiAgMTQ6XHRcdGRlcGVuZHMgb24gTVQ3Nl9DT1JFXG4gIDE1Olx0XG4gIDE2Olx0Y29uZmlnIE1UNzZfU0RJT1xuICAxNzpcdFx0dHJpc3RhdGVcbiAgMTg6XHRcdGRlcGVuZHMgb24gTVQ3Nl9DT1JFXG4gIDE5Olx0XG4gIDIwOlx0Y29uZmlnIE1UNzZ4MDJfTElCXG4gIDIxOlx0XHR0cmlzdGF0ZVxuICAyMjpcdFx0c2VsZWN0IE1UNzZfQ09SRVxuICAyMzpcdFxuICAyNDpcdGNvbmZpZyBNVDc2eDAyX1VTQlxuICAyNTpcdFx0dHJpc3RhdGVcbiAgMjY6XHRcdHNlbGVjdCBNVDc2X1VTQlxuICAyNzpcdFxuICAyODpcdGNvbmZpZyBNVDc2X0NPTk5BQ19MSUJcbiAgMjk6XHRcdHRyaXN0YXRlXG4gIDMwOlx0XHRzZWxlY3QgTVQ3Nl9DT1JFXG4gIDMxOlx0XG4gIDMyOlx0Y29uZmlnIE1UNzkyeF9MSUJcbiAgMzM6XHRcdHRyaXN0YXRlXG4gIDM0Olx0XHRzZWxlY3QgTVQ3Nl9DT05OQUNfTElCXG4gIDM1Olx0XG4gIDM2Olx0Y29uZmlnIE1UNzkyeF9VU0JcbiAgMzc6XHRcdHRyaXN0YXRlXG4gIDM4Olx0XHRzZWxlY3QgTVQ3Nl9VU0JcbiAgMzk6XHRcbiAgNDA6XHRjb25maWcgTVQ3Nl9OUFVcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMTI6NDQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTc3ODQKCQkJCQkJCW91dHB1dDogNDcKCQkJCQkJCXRob3VnaHRzOiA5NAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgbGV0IG1lIGJyZWFrIHRoaXMgZG93bi4KCioqRGl2aW5nIGludG8gdGhlIE1UNzkyeCBVU0IgRHJpdmVyIENvbmZpZ3VyYXRpb24qKgoKQWxyaWdodCwgSSYjMzk7bSB0cmFjaW5nIHRoaXMgdGhyb3VnaC4gSXQgbG9va3MgbGlrZSBgTVQ3OTJ4X1VTQmAgaW4gdGhlIGtlcm5lbCBjb25maWcgaXMgcHVsbGluZyBpbiBgTVQ3Nl9VU0JgLiBNYWtlcyBzZW5zZSwgdGhleSYjMzk7cmUgbGlrZWx5IHJlbGF0ZWQuIEFuZCwgYXMgZXhwZWN0ZWQsIGBNVDc2X1VTQmAgaXMgZGVwZW5kZW50IG9uIGBNVDc2X0NPUkVgIC0gdGhhdCYjMzk7cyB0aGUgYmFzZSBvZiB0aGUgTWVkaWF0ZWsgNzYwMCBzZXJpZXMgc3R1ZmYuIFNlZW1zIGxvZ2ljYWwuIEJ1dCBoYW5nIG9uLCB0aGluZ3MgZ2V0IG1vcmUgaW50ZXJlc3RpbmcuIGBNVDc5MjFVYCBzZWxlY3RzIGBNVDc5MnhfVVNCYCwgYXMgSSYjMzk7ZCBleHBlY3QgZm9yIHRoZSBVU0IgdmVyc2lvbiwgYnV0IGFsc28gaXQgc2VsZWN0cyBgTVQ3OTIxX0NPTU1PTmAuIE9rLCBzbyBgTVQ3OTIxX0NPTU1PTmAgaXMgdGhlIHNoYXJlZCwgbGlrZWx5IGhhcmR3YXJlLWFnbm9zdGljLCBjb2RlIGZvciB0aGF0IDc5MjEgdmFyaWFudC4gSSBuZWVkIHRvIG1ha2UgYSBtZW50YWwgbm90ZSB0byBmaW5kIGBNVDc5MjFfQ09NTU9OYCYjMzk7cyBLY29uZmlnIGZpbGUuIExldCBtZSBzZWUuLi4geWVzLCBpdCYjMzk7cyBsb2NhdGVkIHVuZGVyIGBkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9LY29uZmlnYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMTI6NDQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA0MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgICAxOlx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTMtQ2xhdXNlLUNsZWFyXG4gICAyOlx0Y29uZmlnIE1UNzkyMV9DT01NT05cbiAgIDM6XHRcdHRyaXN0YXRlXG4gICA0Olx0XHRzZWxlY3QgTVQ3OTJ4X0xJQlxuICAgNTpcdFx0c2VsZWN0IFdBTlRfREVWX0NPUkVEVU1QXG4gICA2Olx0XG4gICA3Olx0Y29uZmlnIE1UNzkyMUVcbiAgIDg6XHRcdHRyaXN0YXRlIFwmIzM0O01lZGlhVGVrIE1UNzkyMUUgKFBDSWUpIHN1cHBvcnRcJiMzNDtcbiAgIDk6XHRcdHNlbGVjdCBNVDc5MjFfQ09NTU9OXG4gIDEwOlx0XHRkZXBlbmRzIG9uIE1BQzgwMjExXG4gIDExOlx0XHRkZXBlbmRzIG9uIFBDSVxuICAxMjpcdFx0aGVscFxuICAxMzpcdFx0ICBUaGlzIGFkZHMgc3VwcG9ydCBmb3IgTVQ3OTIxRSA4MDIuMTFheCAyeDI6MlNTIHdpcmVsZXNzIGRldmljZXMuXG4gIDE0Olx0XG4gIDE1Olx0XHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmUuXG4gIDE2Olx0XG4gIDE3Olx0Y29uZmlnIE1UNzkyMVNcbiAgMTg6XHRcdHRyaXN0YXRlIFwmIzM0O01lZGlhVGVrIE1UNzkyMVMgKFNESU8pIHN1cHBvcnRcJiMzNDtcbiAgMTk6XHRcdHNlbGVjdCBNVDc2X1NESU9cbiAgMjA6XHRcdHNlbGVjdCBNVDc5MjFfQ09NTU9OXG4gIDIxOlx0XHRkZXBlbmRzIG9uIE1BQzgwMjExXG4gIDIyOlx0XHRkZXBlbmRzIG9uIE1NQ1xuICAyMzpcdFx0aGVscFxuICAyNDpcdFx0ICBUaGlzIGFkZHMgc3VwcG9ydCBmb3IgTVQ3OTIxUyA4MDIuMTFheCAyeDI6MlNTIHdpcmVsZXNzIGRldmljZXMuXG4gIDI1Olx0XG4gIDI2Olx0XHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmUuXG4gIDI3Olx0XG4gIDI4Olx0Y29uZmlnIE1UNzkyMVVcbiAgMjk6XHRcdHRyaXN0YXRlIFwmIzM0O01lZGlhVGVrIE1UNzkyMVUgKFVTQikgc3VwcG9ydFwmIzM0O1xuICAzMDpcdFx0c2VsZWN0IE1UNzkyeF9VU0JcbiAgMzE6XHRcdHNlbGVjdCBNVDc5MjFfQ09NTU9OXG4gIDMyOlx0XHRkZXBlbmRzIG9uIE1BQzgwMjExXG4gIDMzOlx0XHRkZXBlbmRzIG9uIFVTQlxuICAzNDpcdFx0aGVscFxuICAzNTpcdFx0ICBUaGlzIGFkZHMgc3VwcG9ydCBmb3IgTVQ3OTIxVSA4MDIuMTFheCAyeDI6MlNTIHdpcmVsZXNzIGRldmljZXMuXG4gIDM2Olx0XG4gIDM3Olx0XHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmUuXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDEyOjQ0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE4NzIwCgkJCQkJCQlvdXRwdXQ6IDUyCgkJCQkJCQl0aG91Z2h0czogNTA4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IENvbmZpZ3VyYXRpb24gYW5kIEZ1bmN0aW9uIEZvY3VzKioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24gc3lzdGVtYXRpY2FsbHkuIEkmIzM5O20gZm9jdXNpbmcgb24gdGhlIGBNVDc5MjFVYCBkcml2ZXIgc3BlY2lmaWNhbGx5IGJlY2F1c2UgaXQmIzM5O3MgVVNCLWJhc2VkLCBhbmQgc3l6a2FsbGVyIGNhbiBkaXJlY3RseSBmdXp6IFVTQi4gTXkgZmlyc3QgdGhvdWdodCBpcyB0byBuYWlsIGRvd24gdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBuZWVkZWQgdG8gYnVpbGQgaXQuIGBNVDc5MjFVYCByZWxpZXMgb24gYE1BQzgwMjExYCwgd2hpY2ggaW4gdHVybiwgbmVlZHMgYENGRzgwMjExYC4gU28sIGF0IGEgbWluaW11bSwgSSYjMzk7bGwgbmVlZCBgTVQ3OTIxVWAsIGBNQUM4MDIxMWAsIGFuZCBgQ0ZHODAyMTFgIGVuYWJsZWQgaW4gdGhlIGtlcm5lbCBjb25maWcuIEFsdGhvdWdoIFVTQiBpcyB1c3VhbGx5IGVuYWJsZWQgYnkgZGVmYXVsdCwgSSYjMzk7bGwgZXhwbGljaXRseSBsaXN0IGBVU0JgIGFzIHdlbGwgZm9yIGNsYXJpdHkgYW5kIGNvbXBsZXRlbmVzcy4KCkhvd2V2ZXIsIEkmIzM5O2xsIGFsc28gYWRkIGNvbmZpZ3VyYXRpb25zIGZvciB0aGUgb3RoZXIgdmFyaWFudHM6IGBNVDc5MjFFYCAoUENJZSkgYW5kIGBNVDc5MjFTYCAoU0RJTykgYXMgYSBwcmVjYXV0aW9uLiBKdXN0IGluIGNhc2UgdGhlcmUgYXJlIHN1YnRsZSBkZXBlbmRlbmNpZXMgb3IgcG90ZW50aWFsIG92ZXJsYXAgaW4gY29kZSBwYXRocy4gVGhhdCBtZWFucyBteSBpbml0aWFsIGNvbmZpZ3VyYXRpb24gbGlzdCB3aWxsIGJlIGBNVDc5MjFVYCwgYE1UNzkyMUVgLCBgTVQ3OTIxU2AsIGBNQUM4MDIxMWAsIGFuZCBgQ0ZHODAyMTFgLiBCdXQgaG9sZCBvbiwgdGhlIFBDSWUgdmFyaWFudCAoYE1UNzkyMUVgKSBkZXBlbmRzIG9uIGBQQ0lgLCBhbmQgdGhlIFNESU8gdmVyc2lvbiAoYE1UNzkyMVNgKSBkZXBlbmRzIG9uIGBNTUNgLiBHb3R0YSByZW1lbWJlciB0aG9zZS4KCk5vdywgc2hpZnRpbmcgZ2VhcnMgdG8gdGhlIGFjdHVhbCBjb2RlLCBJIG5lZWQgdG8gcGlucG9pbnQgdGhlIGtleSBmdW5jdGlvbnMgdG8gZXhhbWluZS4gSSYjMzk7bSBnb2luZyB0byByZS1ldmFsdWF0ZSBgbXQ3OTIxX3J1bl9maXJtd2FyZWAgYXMgaXQgc2VlbXMgbGlrZSB0aGUgbWFpbiBmdW5jdGlvbiB0byBmb2N1cyBvbi4gQWxzbyBgbXQ3OTIxX2xvYWRfY2xjYCBsb29rcyBpbnRlcmVzdGluZyBidXQgaXMgc3RhdGljLCBob3dldmVyLCBpdCBpcyBjYWxsZWQgYnkgdGhlIGV4cG9ydGVkIGZ1bmN0aW9uIGBtdDc5MjFfcnVuX2Zpcm13YXJlYCwgc28gaXQgaXMgYSBnb29kIGluZGlyZWN0IGZ1bmN0aW9uIHRvIGV4YW1pbmUuIFRoZW4gSSBzZWUgdGhhdCBgbXQ3OTIxX3J1bl9maXJtd2FyZWAgaXMgY2FsbGVkIGZyb20gYG10NzkyMXVfbWN1X2luaXRgIGFuZCBgbXQ3OTIxdV9tYWNfcmVzZXRgLiBTaW5jZSB0aG9zZSBhcmUgc3RhdGljIGJ1dCBhcmUgYXNzaWduZWQgdG8gZnVuY3Rpb24gcG9pbnRlcnMgYW5kIGNhbGxlZCBieSB0aGUgZXhwb3J0ZWQgZnVuY3Rpb24sIEkmIzM5O2xsIG5lZWQgdG8gY2hlY2sgdGhlIGNhbGwgdHJhY2VzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAxMjo0NDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttdDc5MjF1X21hY19yZXNldCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3VzYi5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3VzYi5jPTY1PXN0YXRpYyBpbnQgbXQ3OTIxdV9tY3VfaW5pdChzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3VzYi5jLTg4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvdXNiLmM6ODk6c3RhdGljIGludCBtdDc5MjF1X21hY19yZXNldChzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvdXNiLmMtOTAte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3VzYi5jPTE1MD1zdGF0aWMgaW50IG10NzkyMXVfcHJvYmUoc3RydWN0IHVzYl9pbnRlcmZhY2UgKnVzYl9pbnRmLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3VzYi5jLTE3My1cdFx0LmluaXRfcmVzZXQgPSBtdDc5Mnh1X2luaXRfcmVzZXQsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS91c2IuYzoxNzQ6XHRcdC5yZXNldCA9IG10NzkyMXVfbWFjX3Jlc2V0LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvdXNiLmMtMTc1LVx0fTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMTI6NDQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjAxMDcKCQkJCQkJCW91dHB1dDogMTY3CgkJCQkJCQl0aG91Z2h0czogMTg2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEZ1enppbmcgU3RyYXRlZ3kgZm9yIHRoZSBNVDc5MjEgV2lyZWxlc3MgRHJpdmVyKioKCk9rYXksIGFmdGVyIHJldmlld2luZyB0aGUgY2hhbmdlcywgSSYjMzk7dmUgemVyb2VkIGluIG9uIGBtdDc5MjFfcnVuX2Zpcm13YXJlYCBhcyB0aGUgcHJpbWUgdGFyZ2V0LiBJdCYjMzk7cyBleHBvcnRlZCwgd2hpY2ggbWFrZXMgaXQgZWFzaWx5IGFjY2Vzc2libGUsIGFuZCwgaW1wb3J0YW50bHksIGl0JiMzOTtzIHRoZSBkaXJlY3QgZW50cnkgcG9pbnQgaW50byB0aGUgbW9kaWZpZWQgY29kZSDigJMgZXhhY3RseSB3aGF0IEkgd2FudCBmb3IgZWZmZWN0aXZlIGZ1enppbmcuCgpMZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duIGZ1cnRoZXIgZm9yIG9wdGltYWwgZnV6emluZzoKCiogICAqKldvcnRoRnV6emluZzogVHJ1ZS4qKiBBYnNvbHV0ZWx5LiBUaGUgcGF0Y2ggZGlyZWN0bHkgdG91Y2hlcyB0aGUgZmlybXdhcmUgbG9hZGluZyBwcm9jZXNzLCBhbmQgdGhhdCYjMzk7cyBhbHdheXMgYSBoaWdoLXZhbHVlIHRhcmdldC4KKiAgICoqRm9jdXNTeW1ib2w6IGBtdDc5MjFfcnVuX2Zpcm13YXJlYCoqLiBDb25maXJtZWQuIFRoaXMgZnVuY3Rpb24gaXMgbXkga2V5IHRvIHRyaWdnZXJpbmcgdGhlIHZ1bG5lcmFiaWxpdHkuCiogICAqKkVuYWJsZUNvbmZpZ3M6IGBNVDc5MjFVYCwgYE1UNzkyMUVgLCBgTVQ3OTIxU2AsIGBNQUM4MDIxMWAsIGBDRkc4MDIxMWAqKi4gR290IGl0LiBUaGVzZSBjb25maWd1cmF0aW9ucyBhcmUgZXNzZW50aWFsIHRvIGVuYWJsZSB0aGUgZHJpdmVyIGluIHF1ZXN0aW9uLCBlbnN1cmluZyBJIGNhbiB0cmlnZ2VyIHRoZSBkZXNpcmVkIGNvZGUgcGF0aHMuIE5vdGFibHksIGBNVDc5MjFVYCBpcyBwYXJ0aWN1bGFybHkgaW50ZXJlc3RpbmcgYmVjYXVzZSBpdCYjMzk7cyB0aGUgVVNCIHZhcmlhbnQgYW5kIEkgY2FuIHVzZSB0aGUgVVNCIGdhZGdldCBmcmFtZXdvcmsgKHZoY2kpIHRvIGZ1enogaXQsIHdoaWNoIGlzIG15IHByZWZlcnJlZCBtZXRob2QuCiogICAqKlJlYXNvbmluZzoqKiBUaGUgcGF0Y2gmIzM5O3MgbW9kaWZpY2F0aW9ucyB0byBgbXQ3OTIxX2xvYWRfY2xjYCwgdGhlIGZpcm13YXJlIGxvYWRpbmcgbG9naWMsIGFyZSBjcml0aWNhbC4gU3BlY2lmaWNhbGx5LCB0aGUgZmFjdCB0aGF0IGBtdDc5MjFfcnVuX2Zpcm13YXJlYCBpcyByZWFjaGFibGUgZHVyaW5nIGRldmljZSBpbml0aWFsaXphdGlvbiBpcyBpZGVhbC4gVGhpcyBnaXZlcyBtZSBhIHByZWRpY3RhYmxlIGVudHJ5IHBvaW50LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAxMjo0NDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7TVQ3OTIxVSYjMzQ7LAogICAgJiMzNDtNVDc5MjFFJiMzNDssCiAgICAmIzM0O01UNzkyMVMmIzM0OywKICAgICYjMzQ7TUFDODAyMTEmIzM0OywKICAgICYjMzQ7Q0ZHODAyMTEmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDttdDc5MjFfcnVuX2Zpcm13YXJlJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIGZpcm13YXJlIGxvYWRpbmcgbG9naWMgKGBtdDc5MjFfbG9hZF9jbGNgKSBpbiB0aGUgTWVkaWF0ZWsgTVQ3OTIxIHdpcmVsZXNzIGRyaXZlci4gVGhpcyBkcml2ZXIgc3VwcG9ydHMgVVNCIChgTVQ3OTIxVWApLCB3aGljaCBjYW4gYmUgZnV6emVkIHZpYSB0aGUgVVNCIGdhZGdldCBmcmFtZXdvcmsgKHZoY2kpLiBUaGUgbW9kaWZpZWQgZnVuY3Rpb24gaXMgcmVhY2hhYmxlIGR1cmluZyBkZXZpY2UgaW5pdGlhbGl6YXRpb24gdmlhIGBtdDc5MjFfcnVuX2Zpcm13YXJlYC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7TVQ3OTIxVSYjMzQ7LAogICAgJiMzNDtNVDc5MjFFJiMzNDssCiAgICAmIzM0O01UNzkyMVMmIzM0OywKICAgICYjMzQ7TUFDODAyMTEmIzM0OywKICAgICYjMzQ7Q0ZHODAyMTEmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDttdDc5MjFfcnVuX2Zpcm13YXJlJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIGZpcm13YXJlIGxvYWRpbmcgbG9naWMgKGBtdDc5MjFfbG9hZF9jbGNgKSBpbiB0aGUgTWVkaWF0ZWsgTVQ3OTIxIHdpcmVsZXNzIGRyaXZlci4gVGhpcyBkcml2ZXIgc3VwcG9ydHMgVVNCIChgTVQ3OTIxVWApLCB3aGljaCBjYW4gYmUgZnV6emVkIHZpYSB0aGUgVVNCIGdhZGdldCBmcmFtZXdvcmsgKHZoY2kpLiBUaGUgbW9kaWZpZWQgZnVuY3Rpb24gaXMgcmVhY2hhYmxlIGR1cmluZyBkZXZpY2UgaW5pdGlhbGl6YXRpb24gdmlhIGBtdDc5MjFfcnVuX2Zpcm13YXJlYC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDEyOjQzOjA4LjAxNjM3OTg0N1oiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjgzMzUxOTQ0NjY4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk1UNzkyMVVcIixcbiAgICBcIk1UNzkyMUVcIixcbiAgICBcIk1UNzkyMVNcIixcbiAgICBcIk1BQzgwMjExXCIsXG4gICAgXCJDRkc4MDIxMVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIm10NzkyMV9ydW5fZmlybXdhcmVcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBmaXJtd2FyZSBsb2FkaW5nIGxvZ2ljIChgbXQ3OTIxX2xvYWRfY2xjYCkgaW4gdGhlIE1lZGlhdGVrIE1UNzkyMSB3aXJlbGVzcyBkcml2ZXIuIFRoaXMgZHJpdmVyIHN1cHBvcnRzIFVTQiAoYE1UNzkyMVVgKSwgd2hpY2ggY2FuIGJlIGZ1enplZCB2aWEgdGhlIFVTQiBnYWRnZXQgZnJhbWV3b3JrICh2aGNpKS4gVGhlIG1vZGlmaWVkIGZ1bmN0aW9uIGlzIHJlYWNoYWJsZSBkdXJpbmcgZGV2aWNlIGluaXRpYWxpemF0aW9uIHZpYSBgbXQ3OTIxX3J1bl9maXJtd2FyZWAuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDEyOjQzOjA4LjAxNjM4OTI1N1oiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Njc1NDA5MTQ0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgYzIxYTY5OWVmOGVlYjg4Y2ExMmY5YjRlZWJhNDUzYmM5MmFkZjhjOVxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgU2F0IEp1bCAyNSAxMjo0MzowNiAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tY3UuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21jdS5jXFxuaW5kZXggMjViOTQzNzI1MGY3YmEuLmM4Yzg0OTQzOTdjNzYxIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21jdS5jXFxuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWN1LmNcXG5AQCAtNDc2LDYgKzQ3NiwxMCBAQCBzdGF0aWMgaW50IG10NzkyMV9sb2FkX2NsYyhzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2LCBjb25zdCBjaGFyICpmd19uYW1lKVxcbiBcXHRcXHQgICAgdThfZ2V0X2JpdHMoY2xjLVxcdTAwM2V0eXBlLCBNVF9FRV9IV19UWVBFX0VOQ0FQKSAhPSBod19lbmNhcClcXG4gXFx0XFx0XFx0Y29udGludWU7XFxuIFxcbitcXHRcXHRpZiAoY2xjLVxcdTAwM2VpZHggPT0gTVQ3OTIxX0NMQ19SRUdEIFxcdTAwMjZcXHUwMDI2XFxuK1xcdFxcdCAgICB1OF9nZXRfYml0cyhjbGMtXFx1MDAzZXR5cGUsIE1UX0VFX0hXX1RZUEVfRU5DQVApICE9IGh3X2VuY2FwKVxcbitcXHRcXHRcXHRjb250aW51ZTtcXG4rXFxuIFxcdFxcdHBoeS1cXHUwMDNlY2xjW2NsYy1cXHUwMDNlaWR4XSA9IGRldm1fa21lbWR1cChtZGV2LVxcdTAwM2VkZXYsIGNsYyxcXG4gXFx0XFx0XFx0XFx0XFx0XFx0ICBsZTMyX3RvX2NwdShjbGMtXFx1MDAzZWxlbiksXFxuIFxcdFxcdFxcdFxcdFxcdFxcdCAgR0ZQX0tFUk5FTCk7XFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL210NzkyMS5oIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbXQ3OTIxLmhcXG5pbmRleCBmYjg2NTRiN2M1ZTdlNy4uZjU2MjhmYjZiZmJmYzkgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbXQ3OTIxLmhcXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tdDc5MjEuaFxcbkBAIC0xMzYsNiArMTM2LDcgQEAgc3RydWN0IG10NzkyMV9kbWFfbGF5b3V0IHtcXG4gZW51bSB7XFxuIFxcdE1UNzkyMV9DTENfUE9XRVIsXFxuIFxcdE1UNzkyMV9DTENfQ0hBTixcXG4rXFx0TVQ3OTIxX0NMQ19SRUdEID0gMyxcXG4gXFx0TVQ3OTIxX0NMQ19NQVhfTlVNLFxcbiB9O1xcbiBcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMTI6NDM6MDguNjk3NzkzMDUxWiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6ODI2NzA1MTc3OTUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTVQ3OTIxVVwiLFxuICAgIFwiTVQ3OTIxRVwiLFxuICAgIFwiTVQ3OTIxU1wiLFxuICAgIFwiTUFDODAyMTFcIixcbiAgICBcIkNGRzgwMjExXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwibXQ3OTIxX3J1bl9maXJtd2FyZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIGZpcm13YXJlIGxvYWRpbmcgbG9naWMgKGBtdDc5MjFfbG9hZF9jbGNgKSBpbiB0aGUgTWVkaWF0ZWsgTVQ3OTIxIHdpcmVsZXNzIGRyaXZlci4gVGhpcyBkcml2ZXIgc3VwcG9ydHMgVVNCIChgTVQ3OTIxVWApLCB3aGljaCBjYW4gYmUgZnV6emVkIHZpYSB0aGUgVVNCIGdhZGdldCBmcmFtZXdvcmsgKHZoY2kpLiBUaGUgbW9kaWZpZWQgZnVuY3Rpb24gaXMgcmVhY2hhYmxlIGR1cmluZyBkZXZpY2UgaW5pdGlhbGl6YXRpb24gdmlhIGBtdDc5MjFfcnVuX2Zpcm13YXJlYC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgYzIxYTY5OWVmOGVlYjg4Y2ExMmY5YjRlZWJhNDUzYmM5MmFkZjhjOVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBTYXQgSnVsIDI1IDEyOjQzOjA2IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWN1LmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tY3UuY1xuaW5kZXggMjViOTQzNzI1MGY3YmEuLmM4Yzg0OTQzOTdjNzYxIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWN1LmNcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21jdS5jXG5AQCAtNDc2LDYgKzQ3NiwxMCBAQCBzdGF0aWMgaW50IG10NzkyMV9sb2FkX2NsYyhzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2LCBjb25zdCBjaGFyICpmd19uYW1lKVxuIFx0XHQgICAgdThfZ2V0X2JpdHMoY2xjLVx1MDAzZXR5cGUsIE1UX0VFX0hXX1RZUEVfRU5DQVApICE9IGh3X2VuY2FwKVxuIFx0XHRcdGNvbnRpbnVlO1xuIFxuK1x0XHRpZiAoY2xjLVx1MDAzZWlkeCA9PSBNVDc5MjFfQ0xDX1JFR0QgXHUwMDI2XHUwMDI2XG4rXHRcdCAgICB1OF9nZXRfYml0cyhjbGMtXHUwMDNldHlwZSwgTVRfRUVfSFdfVFlQRV9FTkNBUCkgIT0gaHdfZW5jYXApXG4rXHRcdFx0Y29udGludWU7XG4rXG4gXHRcdHBoeS1cdTAwM2VjbGNbY2xjLVx1MDAzZWlkeF0gPSBkZXZtX2ttZW1kdXAobWRldi1cdTAwM2VkZXYsIGNsYyxcbiBcdFx0XHRcdFx0XHQgIGxlMzJfdG9fY3B1KGNsYy1cdTAwM2VsZW4pLFxuIFx0XHRcdFx0XHRcdCAgR0ZQX0tFUk5FTCk7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbXQ3OTIxLmggYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tdDc5MjEuaFxuaW5kZXggZmI4NjU0YjdjNWU3ZTcuLmY1NjI4ZmI2YmZiZmM5IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbXQ3OTIxLmhcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL210NzkyMS5oXG5AQCAtMTM2LDYgKzEzNiw3IEBAIHN0cnVjdCBtdDc5MjFfZG1hX2xheW91dCB7XG4gZW51bSB7XG4gXHRNVDc5MjFfQ0xDX1BPV0VSLFxuIFx0TVQ3OTIxX0NMQ19DSEFOLFxuK1x0TVQ3OTIxX0NMQ19SRUdEID0gMyxcbiBcdE1UNzkyMV9DTENfTUFYX05VTSxcbiB9O1xuIFxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMTI6NDM6MDguNjk3Nzk1ODUxWiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDc1ODU1NDUyOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBNVDc5MjEgRHJpdmVyIFBhdGNoKipcblxuT2theSwgc28gSSd2ZSBnb3QgdGhpcyBwYXRjaCB0aGF0IHRvdWNoZXMgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21jdS5jYCBhbmQgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL210NzkyMS5oYC4gSW1tZWRpYXRlbHksIEkgc2VlIGl0J3MgYWRkaW5nIGEgc3BlY2lmaWMgY2hlY2sgd2l0aGluIGBtdDc5MjFfbG9hZF9jbGNgLiBUaGUgbG9naWMgaW52b2x2ZXMgYGNsYy1cdTAwM2VpZHhgLCBzcGVjaWZpY2FsbHkgbG9va2luZyBmb3IgYE1UNzkyMV9DTENfUkVHRGAsIGFuZCBjb21wYXJpbmcgdGhlIGBod19lbmNhcGAgdmFsdWUgd2l0aCBzb21lIGJpdHMgZnJvbSBgY2xjLVx1MDAzZXR5cGVgLiBBbmQsIG9mIGNvdXJzZSwgdGhlIGhlYWRlciBmaWxlJ3MgZW51bSBpcyBiZWluZyBleHRlbmRlZCB3aXRoIGBNVDc5MjFfQ0xDX1JFR0QgPSAzYC5cblxuTXkgZmlyc3QgdGhvdWdodCBpcywgaXMgdGhpcyBldmVuICpyZWFjaGFibGUqIGluIGEgdHlwaWNhbCBRRU1VIHNldHVwPyBUaGlzIGlzIGEgTWVkaWF0ZWsgTVQ3OTIxIGRyaXZlciwgd2hpY2ggcG9pbnRzIHRvIHdpcmVsZXNzIGRldmljZXMuIEknbGwgbmVlZCB0byBmaWd1cmUgb3V0IHRoZSBidXMgdHlwZSB0aGlzIGRyaXZlciBpcyBmb3I7IFBDSSwgVVNCLCBvciBTRElPLCBtb3N0IGxpa2VseS4gU28sIHRoZSBuZXh0IHN0ZXAgaXMgdG8gZXhhbWluZSB0aGUgY29udGVudHMgb2YgdGhlIGBkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9gIGRpcmVjdG9yeS4gVGhhdCBzaG91bGQgZ2l2ZSBtZSBhIHNvbGlkIGNsdWUgYXMgdG8gdGhlIGRyaXZlcidzIHRhcmdldCBhbmQgd2hldGhlciBpdCdzIHBvc3NpYmxlIHRvIHRyaWdnZXIgdGhpcyBjb25kaXRpb24uIEtub3dpbmcgdGhlIGJ1cyB0eXBlIHdpbGwgcXVpY2tseSB0ZWxsIG1lIGlmIHRoZSBwYXRjaCBpcyByZWxldmFudCB0byBteSBjdXJyZW50IHRlc3RpbmcgY29uZmlndXJhdGlvbiBvciBpZiBJIG5lZWQgdG8gZGlnIGRlZXBlci5cblxuXG4iLCJJbnB1dFRva2VucyI6MjQyOCwiT3V0cHV0VG9rZW5zIjozNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIzMSwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDEyOjQzOjEzLjQ1NjM1Mjg5WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiY29kZXNlYXJjaC1kaXItaW5kZXgiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMTAxMDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJEaXJcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRmlsZXNcIjogW1xuICAgIFwiZGVidWdmcy5jXCIsXG4gICAgXCJpbml0LmNcIixcbiAgICBcIm1hYy5jXCIsXG4gICAgXCJtYWluLmNcIixcbiAgICBcIm1jdS5jXCIsXG4gICAgXCJtY3UuaFwiLFxuICAgIFwibXQ3OTIxLmhcIixcbiAgICBcInBjaS5jXCIsXG4gICAgXCJwY2lfbWFjLmNcIixcbiAgICBcInBjaV9tY3UuY1wiLFxuICAgIFwicmVnZC5jXCIsXG4gICAgXCJyZWdkLmhcIixcbiAgICBcInJlZ3MuaFwiLFxuICAgIFwic2Rpby5jXCIsXG4gICAgXCJzZGlvX21hYy5jXCIsXG4gICAgXCJzZGlvX21jdS5jXCIsXG4gICAgXCJ0ZXN0bW9kZS5jXCIsXG4gICAgXCJ1c2IuY1wiXG4gIF0sXG4gIFwiU3ViZGlyc1wiOiBudWxsXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNVQxMjo0MzoxMy40NTY0NjQ5NFoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMzMzY3ODU2NDUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBEcml2ZXIncyBTY29wZSBhbmQgRnV6emluZyBQb3RlbnRpYWwqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIGNvZGUgYW5kIGltbWVkaWF0ZWx5IHNlZSBgcGNpLmNgLCBgc2Rpby5jYCwgYW5kIGB1c2IuY2AuIE15IG1pbmQganVtcHMgdG8gY29uY2x1c2lvbnMgaW1tZWRpYXRlbHksIGFzIHlvdSBkby4gVGhpcyBtZWFucyBpdCdzIGEgZHJpdmVyIHRoYXQncyBidWlsdCB0byBzdXBwb3J0IFBDSSwgU0RJTywgYW5kIFVTQiBkZXZpY2VzLCB3aGljaCBpcyBxdWl0ZSB0aGUgdHJpZmVjdGEuIFRoZSBwcmVzZW5jZSBvZiB0aGF0IFVTQiBkcml2ZXIgaXMgcGFydGljdWxhcmx5IGludGVyZXN0aW5nLiBUaGF0IG9wZW5zIHRoZSBkb29yIHRvIHVzaW5nIHRoZSBVU0IgZ2FkZ2V0IGZyYW1ld29yayDigJMgc3BlY2lmaWNhbGx5IHZoY2kg4oCTIGZvciBmdXp6aW5nLiBHaXZlbiB0aGUgdGFyZ2V0LCBJIGNhbiBub3cgaWRlbnRpZnkgc2V2ZXJhbCBnb29kIHN0YXJ0aW5nIHBvaW50cyBmb3IgZnV6emluZy4gTGV0IG1lIGNoZWNrIGBtdDc5MjFfbG9hZF9jbGNgIGluIGBtY3UuY2AuIEkgd2lsbCBzdGFydCB0aGVyZSBmb3IgdGhlIGluaXRpYWwgaW5zcGVjdGlvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6MzE3MCwiT3V0cHV0VG9rZW5zIjo0OSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjgzLCJUb29sQ2FsbHMiOlsiY29kZXNlYXJjaC1kaXItaW5kZXgiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNVQxMjo0MzoxNi43OTMyNTMwMTVaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjA3ODI5NTg5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm10NzkyMV9sb2FkX2NsY1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWN1LmM9Mzk5PWludCBtdDc5MjFfbWN1X3VuaV9yeF9iYShzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWN1LmMtNDA5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21jdS5jOjQxMDpzdGF0aWMgaW50IG10NzkyMV9sb2FkX2NsYyhzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2LCBjb25zdCBjaGFyICpmd19uYW1lKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21jdS5jLTQxMS17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tY3UuYz02Mzk9aW50IG10NzkyMV9ydW5fZmlybXdhcmUoc3RydWN0IG10NzkyeF9kZXYgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21jdS5jLTY1MC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tY3UuYzo2NTE6XFx0ZXJyID0gbXQ3OTIxX2xvYWRfY2xjKGRldiwgbXQ3OTJ4X3JhbV9uYW1lKGRldikpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21jdS5jLTY1Mi1cXHRpZiAoZXJyKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNVQxMjo0MzoxNy4wMDEwODgzMzNaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMDc0NTI4NDc4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZSBvbiB0aGUgdGhvdWdodCBwcm9jZXNzLCBhcyByZXF1ZXN0ZWQ6XG5cbioqVHJhY2luZyB0aGUgRmlybXdhcmUgTG9hZGluZyBTZXF1ZW5jZSoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoZSBgbXQ3OTIxYCBkcml2ZXIuIEkgc2VlIHRoYXQgdGhlIGZ1bmN0aW9uIGBtdDc5MjFfbG9hZF9jbGNgIGlzIGNhbGxlZCBmcm9tIGBtdDc5MjFfcnVuX2Zpcm13YXJlYC4gVGhhdCdzIGludGVyZXN0aW5nLCB0aGUgYGNsY2AgcHJlc3VtYWJseSBuZWVkcyB0byBiZSBsb2FkZWQgYnkgdGhlIGZpcm13YXJlIGF0IHNvbWUgcG9pbnQsIHNvIHRoaXMgc2VlbXMgbG9naWNhbC4gTm93LCBteSBuZXh0IHN0ZXAgaXMgdG8gZmlndXJlIG91dCB0aGUgKmVudHJ5IHBvaW50Ki4gSSB3YW50IHRvIHVuZGVyc3RhbmQgdGhlIGNvbXBsZXRlIGZpcm13YXJlIGxvYWRpbmcgc2VxdWVuY2UsIGFuZCBzZWVpbmcgd2hlcmUgYG10NzkyMV9ydW5fZmlybXdhcmVgIGl0c2VsZiBpcyBjYWxsZWQgd2lsbCBwcm92aWRlIHRoZSBjcnVjaWFsIGNvbnRleHQuIFVuZGVyc3RhbmRpbmcgdGhlIGNhbGxlciB3aWxsIGlsbHVtaW5hdGUgdGhlIGluaXRpYWwgdHJpZ2dlciBmb3IgdGhlIHdob2xlIHByb2Nlc3MuIEknbGwgbmVlZCB0byB0cmFjZSB0aGUgY2FsbCBncmFwaCBiYWNrIHRvIHNlZSB3aGF0J3MgdWx0aW1hdGVseSBpbml0aWFsaXppbmcgdGhlIGZpcm13YXJlIGxvYWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM4MjgsIk91dHB1dFRva2VucyI6NDksIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0OCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNVQxMjo0MzoyMC4wNzU2MTk0NTJaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTEyNzcwMTI0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm10NzkyMV9ydW5fZmlybXdhcmVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21jdS5jPTYyNj1pbnQgbXQ3OTIxX21jdV9md19sb2dfMl9ob3N0KHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYsIHU4IGN0cmwpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tY3UuYy02MzgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWN1LmM6NjM5OmludCBtdDc5MjFfcnVuX2Zpcm13YXJlKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWN1LmMtNjQwLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21jdS5jLTY1Ny19XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWN1LmM6NjU4OkVYUE9SVF9TWU1CT0xfR1BMKG10NzkyMV9ydW5fZmlybXdhcmUpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21jdS5jLTY1OS1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL210NzkyMS5oPTIwNz12b2lkIG10NzkyMV91bnJlZ2lzdGVyX2RldmljZShzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tdDc5MjEuaDoyMDg6aW50IG10NzkyMV9ydW5fZmlybXdhcmUoc3RydWN0IG10NzkyeF9kZXYgKmRldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbXQ3OTIxLmgtMjA5LWludCBtdDc5MjFfc2V0X2NoYW5uZWwoc3RydWN0IG10NzZfcGh5ICptcGh5KTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3BjaV9tYWMuYz01Nj1pbnQgbXQ3OTIxZV9tYWNfcmVzZXQoc3RydWN0IG10NzkyeF9kZXYgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3BjaV9tYWMuYy0xMDUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvcGNpX21hYy5jOjEwNjpcXHRlcnIgPSBtdDc5MjFfcnVuX2Zpcm13YXJlKGRldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvcGNpX21hYy5jLTEwNy1cXHRpZiAoZXJyKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvcGNpX21jdS5jPTQxPWludCBtdDc5MjFlX21jdV9pbml0KHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9wY2lfbWN1LmMtNTctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvcGNpX21jdS5jOjU4OlxcdGVyciA9IG10NzkyMV9ydW5fZmlybXdhcmUoZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9wY2lfbWN1LmMtNTktXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9zZGlvX21hYy5jPTE0Nz1pbnQgbXQ3OTIxc19tYWNfcmVzZXQoc3RydWN0IG10NzkyeF9kZXYgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3NkaW9fbWFjLmMtMTgwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3NkaW9fbWFjLmM6MTgxOlxcdGVyciA9IG10NzkyMV9ydW5fZmlybXdhcmUoZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9zZGlvX21hYy5jLTE4Mi1cXHRpZiAoZXJyKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvc2Rpb19tY3UuYz03ND1pbnQgbXQ3OTIxc19tY3VfaW5pdChzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvc2Rpb19tY3UuYy05MC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9zZGlvX21jdS5jOjkxOlxcdHJldCA9IG10NzkyMV9ydW5fZmlybXdhcmUoZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9zZGlvX21jdS5jLTkyLVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS91c2IuYz02NT1zdGF0aWMgaW50IG10NzkyMXVfbWN1X2luaXQoc3RydWN0IG10NzkyeF9kZXYgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3VzYi5jLTc4LVxcdG10NzZfc2V0KGRldiwgTVRfVURNQV9UWF9RU0VMLCBNVF9GV19ETF9FTik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvdXNiLmM6Nzk6XFx0cmV0ID0gbXQ3OTIxX3J1bl9maXJtd2FyZShkZXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3VzYi5jLTgwLVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS91c2IuYz04OT1zdGF0aWMgaW50IG10NzkyMXVfbWFjX3Jlc2V0KHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS91c2IuYy0xMjYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvdXNiLmM6MTI3OlxcdGVyciA9IG10NzkyMV9ydW5fZmlybXdhcmUoZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS91c2IuYy0xMjgtXFx0aWYgKGVycilcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMTI6NDM6MjAuMTg4Mzk0MzM2WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDMwNTQ5NTM3MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIEV4ZWN1dGlvbiBDb250ZXh0IGFuZCBUZXN0aW5nIFN0cmF0ZWd5KipcblxuT2theSwgc28gdGhpcyBjb2RlIHNuaXBwZXQsIHRoZSBvbmUgSSdtIGZvY3VzZWQgb24sIGdldHMgY2FsbGVkIGZyb20gYG10NzkyMXVfbWN1X2luaXRgIGFuZCBgbXQ3OTIxdV9tYWNfcmVzZXRgIHdpdGhpbiBgdXNiLmNgLiBUaGF0IHBsYWNlcyBpdCBmaXJtbHkgd2l0aGluIHRoZSBVU0IgZGV2aWNlIGluaXRpYWxpemF0aW9uIHNlcXVlbmNlLCB3aGljaCBpcyBleGFjdGx5IHRoZSBraW5kIG9mIGNvbnRleHQgSSBleHBlY3RlZC4gVGhpcyBpcyBnb29kIGJlY2F1c2UgaXQgaW1tZWRpYXRlbHkgc3VnZ2VzdHMgYSB2aWFibGUgdGVzdGluZyBzdHJhdGVneTogVVNCIGZ1enppbmcuIFdlIGNhbiBsZXZlcmFnZSBleGlzdGluZyB0b29scywgbGlrZSBzeXprYWxsZXIncyBVU0IgZ2FkZ2V0IGZ1enppbmcgY2FwYWJpbGl0aWVzLCB0byB0YXJnZXQgdGhpcyBhcmVhIGVmZmVjdGl2ZWx5LiBUaGUgZmFjdCB0aGF0IHRoaXMgcGF0Y2ggc3BlY2lmaWNhbGx5IG1vZGlmaWVzIGBtdDc5MjFfbG9hZF9jbGNgIGlzIHRoZSBrZXkuXG5cbk5vdywgYG10NzkyMV9sb2FkX2NsY2DigKYgaGFuZyBvbiwgaXNu4oCZdCB0aGF0IHRoZSBmdW5jdGlvbiByZXNwb25zaWJsZSBmb3IgbG9hZGluZyB0aGUgZmlybXdhcmU/IFllcywgaXQgaXMuIEFuZCB0aGF0IGZpcm13YXJlIGlzIGxvYWRlZCBmcm9tIHRoZSBmaWxlc3lzdGVtIHVzaW5nIGBmd19uYW1lYD8gRXhjZWxsZW50LiBUaGlzIGdpdmVzIG1lIGFub3RoZXIgY3JpdGljYWwgcG9pbnQgdG8gdW5kZXJzdGFuZC4gTGV0IG1lIHRha2UgYSBjbG9zZXIgbG9vayBhdCBgbXQ3OTIxX2xvYWRfY2xjYCByaWdodCBhd2F5LCB0aGUgZGV0YWlscyBvZiB3aGF0IGl0IGRvZXMgYXJlIGtleSB0byB1bmRlcnN0YW5kaW5nIHRoZSBpbXBhY3Qgb2YgdGhpcyBjaGFuZ2UuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU1OTMsIk91dHB1dFRva2VucyI6NTIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNDIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMTI6NDM6MjQuNDkzODkyMjk5WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjMyMDgxMDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWN1LmNcIixcbiAgXCJGaXJzdExpbmVcIjogNDEwLFxuICBcIkxpbmVDb3VudFwiOiAxMDBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDQxMDpcXHRzdGF0aWMgaW50IG10NzkyMV9sb2FkX2NsYyhzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2LCBjb25zdCBjaGFyICpmd19uYW1lKVxcbiA0MTE6XFx0e1xcbiA0MTI6XFx0XFx0Y29uc3Qgc3RydWN0IG10NzZfY29ubmFjMl9md190cmFpbGVyICpoZHI7XFxuIDQxMzpcXHRcXHRjb25zdCBzdHJ1Y3QgbXQ3Nl9jb25uYWMyX2Z3X3JlZ2lvbiAqcmVnaW9uO1xcbiA0MTQ6XFx0XFx0Y29uc3Qgc3RydWN0IG10NzkyMV9jbGMgKmNsYztcXG4gNDE1OlxcdFxcdHN0cnVjdCBtdDc2X2RldiAqbWRldiA9IFxcdTAwMjZkZXYtXFx1MDAzZW10NzY7XFxuIDQxNjpcXHRcXHRzdHJ1Y3QgbXQ3OTJ4X3BoeSAqcGh5ID0gXFx1MDAyNmRldi1cXHUwMDNlcGh5O1xcbiA0MTc6XFx0XFx0Y29uc3Qgc3RydWN0IGZpcm13YXJlICpmdztcXG4gNDE4OlxcdFxcdGludCByZXQsIGksIGxlbiwgb2Zmc2V0ID0gMDtcXG4gNDE5OlxcdFxcdHU4ICpjbGNfYmFzZSA9IE5VTEwsIGh3X2VuY2FwID0gMDtcXG4gNDIwOlxcdFxcbiA0MjE6XFx0XFx0ZGV2LVxcdTAwM2VwaHkuY2xjX2NoYW5fY29uZiA9IDB4ZmY7XFxuIDQyMjpcXHRcXHRkZXYtXFx1MDAzZXJlZ2RfdXNlciA9IGZhbHNlO1xcbiA0MjM6XFx0XFx0aWYgKCFtdDc5MjFfcmVnZF9jbGNfc3VwcG9ydGVkKGRldikpXFxuIDQyNDpcXHRcXHRcXHRyZXR1cm4gMDtcXG4gNDI1OlxcdFxcbiA0MjY6XFx0XFx0aWYgKG10NzZfaXNfbW1pbyhcXHUwMDI2ZGV2LVxcdTAwM2VtdDc2KSkge1xcbiA0Mjc6XFx0XFx0XFx0cmV0ID0gbXQ3OTIxX21jdV9yZWFkX2VlcHJvbShkZXYsIE1UX0VFX0hXX1RZUEUsIFxcdTAwMjZod19lbmNhcCk7XFxuIDQyODpcXHRcXHRcXHRpZiAocmV0KVxcbiA0Mjk6XFx0XFx0XFx0XFx0cmV0dXJuIHJldDtcXG4gNDMwOlxcdFxcdFxcdGh3X2VuY2FwID0gdThfZ2V0X2JpdHMoaHdfZW5jYXAsIE1UX0VFX0hXX1RZUEVfRU5DQVApO1xcbiA0MzE6XFx0XFx0fVxcbiA0MzI6XFx0XFxuIDQzMzpcXHRcXHRyZXQgPSByZXF1ZXN0X2Zpcm13YXJlKFxcdTAwMjZmdywgZndfbmFtZSwgbWRldi1cXHUwMDNlZGV2KTtcXG4gNDM0OlxcdFxcdGlmIChyZXQpXFxuIDQzNTpcXHRcXHRcXHRyZXR1cm4gcmV0O1xcbiA0MzY6XFx0XFxuIDQzNzpcXHRcXHRpZiAoIWZ3IHx8ICFmdy1cXHUwMDNlZGF0YSB8fCBmdy1cXHUwMDNlc2l6ZSBcXHUwMDNjIHNpemVvZigqaGRyKSkge1xcbiA0Mzg6XFx0XFx0XFx0ZGV2X2VycihtZGV2LVxcdTAwM2VkZXYsIFxcXCJJbnZhbGlkIGZpcm13YXJlXFxcXG5cXFwiKTtcXG4gNDM5OlxcdFxcdFxcdHJldCA9IC1FSU5WQUw7XFxuIDQ0MDpcXHRcXHRcXHRnb3RvIG91dDtcXG4gNDQxOlxcdFxcdH1cXG4gNDQyOlxcdFxcbiA0NDM6XFx0XFx0aGRyID0gKGNvbnN0IHZvaWQgKikoZnctXFx1MDAzZWRhdGEgKyBmdy1cXHUwMDNlc2l6ZSAtIHNpemVvZigqaGRyKSk7XFxuIDQ0NDpcXHRcXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgaGRyLVxcdTAwM2VuX3JlZ2lvbjsgaSsrKSB7XFxuIDQ0NTpcXHRcXHRcXHRyZWdpb24gPSAoY29uc3Qgdm9pZCAqKSgoY29uc3QgdTggKiloZHIgLVxcbiA0NDY6XFx0XFx0XFx0XFx0XFx0XFx0KGhkci1cXHUwMDNlbl9yZWdpb24gLSBpKSAqIHNpemVvZigqcmVnaW9uKSk7XFxuIDQ0NzpcXHRcXHRcXHRsZW4gPSBsZTMyX3RvX2NwdShyZWdpb24tXFx1MDAzZWxlbik7XFxuIDQ0ODpcXHRcXG4gNDQ5OlxcdFxcdFxcdC8qIGNoZWNrIGlmIHdlIGhhdmUgdmFsaWQgYnVmZmVyIHNpemUgKi9cXG4gNDUwOlxcdFxcdFxcdGlmIChvZmZzZXQgKyBsZW4gXFx1MDAzZSBmdy1cXHUwMDNlc2l6ZSkge1xcbiA0NTE6XFx0XFx0XFx0XFx0ZGV2X2VycihtZGV2LVxcdTAwM2VkZXYsIFxcXCJJbnZhbGlkIGZpcm13YXJlIHJlZ2lvblxcXFxuXFxcIik7XFxuIDQ1MjpcXHRcXHRcXHRcXHRyZXQgPSAtRUlOVkFMO1xcbiA0NTM6XFx0XFx0XFx0XFx0Z290byBvdXQ7XFxuIDQ1NDpcXHRcXHRcXHR9XFxuIDQ1NTpcXHRcXG4gNDU2OlxcdFxcdFxcdGlmICgocmVnaW9uLVxcdTAwM2VmZWF0dXJlX3NldCBcXHUwMDI2IEZXX0ZFQVRVUkVfTk9OX0RMKSBcXHUwMDI2XFx1MDAyNlxcbiA0NTc6XFx0XFx0XFx0ICAgIHJlZ2lvbi1cXHUwMDNldHlwZSA9PSBGV19UWVBFX0NMQykge1xcbiA0NTg6XFx0XFx0XFx0XFx0Y2xjX2Jhc2UgPSAodTggKikoZnctXFx1MDAzZWRhdGEgKyBvZmZzZXQpO1xcbiA0NTk6XFx0XFx0XFx0XFx0YnJlYWs7XFxuIDQ2MDpcXHRcXHRcXHR9XFxuIDQ2MTpcXHRcXHRcXHRvZmZzZXQgKz0gbGVuO1xcbiA0NjI6XFx0XFx0fVxcbiA0NjM6XFx0XFxuIDQ2NDpcXHRcXHRpZiAoIWNsY19iYXNlKVxcbiA0NjU6XFx0XFx0XFx0Z290byBvdXQ7XFxuIDQ2NjpcXHRcXG4gNDY3OlxcdFxcdGZvciAob2Zmc2V0ID0gMDsgb2Zmc2V0IFxcdTAwM2MgbGVuOyBvZmZzZXQgKz0gbGUzMl90b19jcHUoY2xjLVxcdTAwM2VsZW4pKSB7XFxuIDQ2ODpcXHRcXHRcXHRjbGMgPSAoY29uc3Qgc3RydWN0IG10NzkyMV9jbGMgKikoY2xjX2Jhc2UgKyBvZmZzZXQpO1xcbiA0Njk6XFx0XFxuIDQ3MDpcXHRcXHRcXHQvKiBkbyBub3QgaW5pdCBidWYgYWdhaW4gaWYgY2hpcCByZXNldCB0cmlnZ2VyZWQgKi9cXG4gNDcxOlxcdFxcdFxcdGlmIChwaHktXFx1MDAzZWNsY1tjbGMtXFx1MDAzZWlkeF0pXFxuIDQ3MjpcXHRcXHRcXHRcXHRjb250aW51ZTtcXG4gNDczOlxcdFxcbiA0NzQ6XFx0XFx0XFx0LyogaGVhZGVyIGNvbnRlbnQgc2FuaXR5ICovXFxuIDQ3NTpcXHRcXHRcXHRpZiAoY2xjLVxcdTAwM2VpZHggPT0gTVQ3OTIxX0NMQ19QT1dFUiBcXHUwMDI2XFx1MDAyNlxcbiA0NzY6XFx0XFx0XFx0ICAgIHU4X2dldF9iaXRzKGNsYy1cXHUwMDNldHlwZSwgTVRfRUVfSFdfVFlQRV9FTkNBUCkgIT0gaHdfZW5jYXApXFxuIDQ3NzpcXHRcXHRcXHRcXHRjb250aW51ZTtcXG4gNDc4OlxcdFxcbiA0Nzk6XFx0XFx0XFx0aWYgKGNsYy1cXHUwMDNlaWR4ID09IE1UNzkyMV9DTENfUkVHRCBcXHUwMDI2XFx1MDAyNlxcbiA0ODA6XFx0XFx0XFx0ICAgIHU4X2dldF9iaXRzKGNsYy1cXHUwMDNldHlwZSwgTVRfRUVfSFdfVFlQRV9FTkNBUCkgIT0gaHdfZW5jYXApXFxuIDQ4MTpcXHRcXHRcXHRcXHRjb250aW51ZTtcXG4gNDgyOlxcdFxcbiA0ODM6XFx0XFx0XFx0cGh5LVxcdTAwM2VjbGNbY2xjLVxcdTAwM2VpZHhdID0gZGV2bV9rbWVtZHVwKG1kZXYtXFx1MDAzZWRldiwgY2xjLFxcbiA0ODQ6XFx0XFx0XFx0XFx0XFx0XFx0XFx0ICBsZTMyX3RvX2NwdShjbGMtXFx1MDAzZWxlbiksXFxuIDQ4NTpcXHRcXHRcXHRcXHRcXHRcXHRcXHQgIEdGUF9LRVJORUwpO1xcbiA0ODY6XFx0XFxuIDQ4NzpcXHRcXHRcXHRpZiAoIXBoeS1cXHUwMDNlY2xjW2NsYy1cXHUwMDNlaWR4XSkge1xcbiA0ODg6XFx0XFx0XFx0XFx0cmV0ID0gLUVOT01FTTtcXG4gNDg5OlxcdFxcdFxcdFxcdGdvdG8gb3V0O1xcbiA0OTA6XFx0XFx0XFx0fVxcbiA0OTE6XFx0XFx0fVxcbiA0OTI6XFx0XFxuIDQ5MzpcXHRcXHRyZXQgPSBtdDc5MjFfcmVnZF9pbml0KHBoeSk7XFxuIDQ5NDpcXHRvdXQ6XFxuIDQ5NTpcXHRcXHRyZWxlYXNlX2Zpcm13YXJlKGZ3KTtcXG4gNDk2OlxcdFxcbiA0OTc6XFx0XFx0cmV0dXJuIHJldDtcXG4gNDk4OlxcdH1cXG4gNDk5OlxcdFxcbiA1MDA6XFx0c3RhdGljIHZvaWQgbXQ3OTIxX21jdV9wYXJzZV90eF9yZXNvdXJjZShzdHJ1Y3QgbXQ3Nl9kZXYgKmRldixcXG4gNTAxOlxcdFxcdFxcdFxcdFxcdFxcdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbiA1MDI6XFx0e1xcbiA1MDM6XFx0XFx0c3RydWN0IG10NzZfc2RpbyAqc2RpbyA9IFxcdTAwMjZkZXYtXFx1MDAzZXNkaW87XFxuIDUwNDpcXHRcXHRzdHJ1Y3QgbXQ3OTIxX3R4X3Jlc291cmNlIHtcXG4gNTA1OlxcdFxcdFxcdF9fbGUzMiB2ZXJzaW9uO1xcbiA1MDY6XFx0XFx0XFx0X19sZTMyIHBzZV9kYXRhX3F1b3RhO1xcbiA1MDc6XFx0XFx0XFx0X19sZTMyIHBzZV9tY3VfcXVvdGE7XFxuIDUwODpcXHRcXHRcXHRfX2xlMzIgcGxlX2RhdGFfcXVvdGE7XFxuIDUwOTpcXHRcXHRcXHRfX2xlMzIgcGxlX21jdV9xdW90YTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMTI6NDM6MjQuNDk3MTA2MzU5WiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU3MzQ2MzA1NzcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgUG90ZW50aWFsIEZ1enppbmcgVGFyZ2V0OiBgbXQ3OTIxX2xvYWRfY2xjYCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggdGhhdCBpbnRyb2R1Y2VzIGEgY2hlY2sgZm9yIGBjbGMtXHUwMDNlaWR4ID09IE1UNzkyMV9DTENfUkVHRGAuIFRoaXMgY2hlY2sgaXMgd2l0aGluIHRoZSBgbXQ3OTIxX2xvYWRfY2xjYCBmdW5jdGlvbiwgd2hpY2ggZ2V0cyBjYWxsZWQgZHVyaW5nIGRldmljZSBpbml0aWFsaXphdGlvbi4gVGhlIGltbWVkaWF0ZSBxdWVzdGlvbiBpcywgY2FuIEkgZXZlbiByZWFjaCB0aGlzIGNvZGUgaW4gYSBRRU1VIGVudmlyb25tZW50PyBHaXZlbiB0aGF0IHRoaXMgaXMgYSBVU0ItY29ubmVjdGVkIGRldmljZSwgdGhlIGFuc3dlciBpcyBtb3N0IGxpa2VseSB5ZXMsIHBhcnRpY3VsYXJseSB3aXRoIFVTQiBnYWRnZXQgZnV6emluZy5cblxuTm93LCBgbXQ3OTIxX2xvYWRfY2xjYCBtYWtlcyBhIGNhbGwgdG8gYHJlcXVlc3RfZmlybXdhcmVgLCB3aGljaCBnaXZlcyBtZSBwYXVzZS4gSWYgdGhlIHJlbGV2YW50IGZpcm13YXJlIGlzbid0IHByZXNlbnQgaW4gdGhlIHJvb3QgZmlsZXN5c3RlbSwgYHJlcXVlc3RfZmlybXdhcmVgIGlzIGdvaW5nIHRvIGZhaWwsIGFuZCB0aGUgc3Vic2VxdWVudCBjb2RlIGluIHRoZSBmdW5jdGlvbiB3b24ndCBleGVjdXRlLiBIb3dldmVyLCBhbmQgdGhpcyBpcyBjcnVjaWFsLCBzeXprYWxsZXIgKmNhbiogcHJvdmlkZSBmaXJtd2FyZSBmaWxlcywgb3IgcG90ZW50aWFsbHksIHV0aWxpemUgaXRzIGByZXF1ZXN0X2Zpcm13YXJlYCBmdXp6aW5nIGNhcGFiaWxpdGllcy4gSSBuZWVkIHRvIGtlZXAgdGhpcyBpbiBtaW5kIGFzIEkgYnVpbGQgdGhlIGNvcnB1cy5cblxuV2FpdCBhIHNlY29uZCwgc3l6a2FsbGVyIGRvZXNuJ3QgdHlwaWNhbGx5IHByb3ZpZGUgc3BlY2lmaWMgZmlybXdhcmUgZmlsZXMgZm9yIGV2ZXJ5IHNpbmdsZSBkcml2ZXIgdW5sZXNzIHRoZXkgaGFwcGVuIHRvIGJlIGluIGxpbnV4LWZpcm13YXJlIGFuZCBwYXJ0IG9mIHRoZSBpbWFnZS4gQnV0IGV2ZW4gaWYgdGhlIGZpcm13YXJlIHJlcXVlc3QgZmFpbHMsIHRoZSBgbXQ3OTIxX2xvYWRfY2xjYCBmdW5jdGlvbiBpdHNlbGYgd2lsbCBzdGlsbCBiZSAqZXhlY3V0ZWQqIHdoaWNoIG1lYW5zIGl0J3Mgc3RpbGwgd29ydGggZnV6emluZy4gSXQncyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHdpdGhpbiBhIGRyaXZlciwgYW5kIEkgY2FuIHRyaWdnZXIgaXQgdmlhIFVTQi4gRGVmaW5pdGVseSBhIGdvb2QgY2FuZGlkYXRlIVxuXG5Pa2F5LCB0aW1lIHRvIGNoZWNrIHRoZSBjb25maWcgb3B0aW9ucy4gSSdsbCBuZWVkIHRvIG1ha2Ugc3VyZSBJIGhhdmUgYWxsIHRoZSBuZWNlc3Nhcnkgb3B0aW9ucyBlbmFibGVkIHRvIGVuc3VyZSB0aGlzIGRyaXZlciBpcyBjb21waWxlZCBhbmQgcmVhY2hhYmxlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo3NjY0LCJPdXRwdXRUb2tlbnMiOjQ2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjI3LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMTI6NDM6MzAuMjMxNzM5NDA3WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDU3NzQyMzQsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiTVQ3OTIxXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0zLUNsYXVzZS1DbGVhclxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL0tjb25maWc6Mjpjb25maWcgTVQ3OTIxX0NPTU1PTlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL0tjb25maWctMy1cXHR0cmlzdGF0ZVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvS2NvbmZpZy02LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL0tjb25maWc6Nzpjb25maWcgTVQ3OTIxRVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL0tjb25maWc6ODpcXHR0cmlzdGF0ZSBcXFwiTWVkaWFUZWsgTVQ3OTIxRSAoUENJZSkgc3VwcG9ydFxcXCJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9LY29uZmlnOjk6XFx0c2VsZWN0IE1UNzkyMV9DT01NT05cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9LY29uZmlnLTEwLVxcdGRlcGVuZHMgb24gTUFDODAyMTFcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL0tjb25maWctMTItXFx0aGVscFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL0tjb25maWc6MTM6XFx0ICBUaGlzIGFkZHMgc3VwcG9ydCBmb3IgTVQ3OTIxRSA4MDIuMTFheCAyeDI6MlNTIHdpcmVsZXNzIGRldmljZXMuXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvS2NvbmZpZy0xNC1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL0tjb25maWctMTYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvS2NvbmZpZzoxNzpjb25maWcgTVQ3OTIxU1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL0tjb25maWc6MTg6XFx0dHJpc3RhdGUgXFxcIk1lZGlhVGVrIE1UNzkyMVMgKFNESU8pIHN1cHBvcnRcXFwiXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvS2NvbmZpZy0xOS1cXHRzZWxlY3QgTVQ3Nl9TRElPXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvS2NvbmZpZzoyMDpcXHRzZWxlY3QgTVQ3OTIxX0NPTU1PTlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL0tjb25maWctMjEtXFx0ZGVwZW5kcyBvbiBNQUM4MDIxMVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvS2NvbmZpZy0yMy1cXHRoZWxwXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvS2NvbmZpZzoyNDpcXHQgIFRoaXMgYWRkcyBzdXBwb3J0IGZvciBNVDc5MjFTIDgwMi4xMWF4IDJ4MjoyU1Mgd2lyZWxlc3MgZGV2aWNlcy5cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9LY29uZmlnLTI1LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvS2NvbmZpZy0yNy1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9LY29uZmlnOjI4OmNvbmZpZyBNVDc5MjFVXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvS2NvbmZpZzoyOTpcXHR0cmlzdGF0ZSBcXFwiTWVkaWFUZWsgTVQ3OTIxVSAoVVNCKSBzdXBwb3J0XFxcIlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL0tjb25maWctMzAtXFx0c2VsZWN0IE1UNzkyeF9VU0JcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9LY29uZmlnOjMxOlxcdHNlbGVjdCBNVDc5MjFfQ09NTU9OXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvS2NvbmZpZy0zMi1cXHRkZXBlbmRzIG9uIE1BQzgwMjExXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9LY29uZmlnLTM0LVxcdGhlbHBcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9LY29uZmlnOjM1OlxcdCAgVGhpcyBhZGRzIHN1cHBvcnQgZm9yIE1UNzkyMVUgODAyLjExYXggMngyOjJTUyB3aXJlbGVzcyBkZXZpY2VzLlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL0tjb25maWctMzYtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDEyOjQzOjMwLjMzNzUxODkzMVoiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNzYxNzkwMDQyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEN1cnJlbnQgVGFzazogVVNCIFRlc3Rpbmcgd2l0aCBNVDc5MjFVKipcblxuT2theSwgc28gdGhlIGltbWVkaWF0ZSBuZWVkIGlzIHRvIGdldCB0aGlzIGBNVDc5MjFVYCB0ZXN0ZWQgcHJvcGVybHkgb3ZlciBVU0IuIFRoYXQncyB0aGUgYmFzZWxpbmUuIEJhc2VkIG9uIHRoZSByZXF1aXJlbWVudHMsIEkga25vdyBgTVQ3OTIxX0NPTU1PTmAgd2lsbCBiZSB0aGUgY29ycmVjdCBjb25maWd1cmF0aW9uIHRvIHNlbGVjdC4gTm93LCB0byBtYWtlIHN1cmUgZXZlcnl0aGluZyBsaW5lcyB1cCwgSSBuZWVkIHRvIG1ldGhvZGljYWxseSB2ZXJpZnkgdGhlIHJlbGV2YW50IGRlcGVuZGVuY2llcyBhbmQgY29tcG9uZW50cy4gSSdsbCBuZWVkIHRvIGRpZyBpbnRvIHRoZSBgTVQ3OTJ4X1VTQmAgY29kZSB0byBzZWUgaG93IGl0IHNwZWNpZmljYWxseSBoYW5kbGVzIHRoZSBVU0IgaW50ZXJmYWNlIGZvciB0aGlzIHBhcnRpY3VsYXIgY2hpcC4gTmF0dXJhbGx5LCBJIHNob3VsZCByZXZpZXcgdGhlIGBNQUM4MDIxMWAgaW50ZWdyYXRpb24sIG1ha2luZyBzdXJlIHRoZSBVU0IgdHJhbnNwb3J0IGlzIGNvcnJlY3RseSBpbXBsZW1lbnRlZCB3aXRoaW4gdGhlIHdpcmVsZXNzIHN0YWNrLiBGaW5hbGx5LCBJJ2xsIG5lZWQgdG8gcGVyZm9ybSBhIGdlbmVyYWwgVVNCIHN5c3RlbSBpbnNwZWN0aW9uIGluIGNhc2UgdGhlcmUgYXJlIGFueSB1bmRlcmx5aW5nIHByb2JsZW1zIG9yIGNvbmZpZ3VyYXRpb25zIHRoYXQgbmVlZCBhZGp1c3RtZW50LlxuXG5cbiIsIklucHV0VG9rZW5zIjo5MzQzLCJPdXRwdXRUb2tlbnMiOjQxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMTI6NDM6MzQuMDk5MzE4ODkzWiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNjQ4NTc3MDEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIE1UNzkyeF9VU0JcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9LY29uZmlnPTMyPWNvbmZpZyBNVDc5MnhfTElCXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L0tjb25maWctMzUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9LY29uZmlnOjM2OmNvbmZpZyBNVDc5MnhfVVNCXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9LY29uZmlnLTM3LVxcdHRyaXN0YXRlXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDEyOjQzOjM0LjI2NDE4MjA5NFoiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1MDQxMDExMjI1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgTVQ3OTIxVSBGaXJtd2FyZSBMb2FkaW5nIFByb2Nlc3MqKlxuXG5Pa2F5LCBzbyB0aGUgaW5pdGlhbCBhc3Nlc3NtZW50IGlzIHRoYXQgdGhlIGBNVDc5MjFVYCBzaG91bGQgc3VmZmljZSBmb3IgdGhpcyBhbmFseXNpcy4gTm93LCBsZXQncyBzZWUsIHRoZSBmdW5jdGlvbiBgbXQ3OTIxX2xvYWRfY2xjYC4uLiByaWdodCwgaXQncyBhIHN0YXRpYyBmdW5jdGlvbi4gVGhhdCdzIGdvb2QgdG8ga25vdywgYnV0IGxldCdzIGNvbnNpZGVyIHRoZSBpbXBsaWNhdGlvbnMuIEFoYSwgd2FpdCBhIG1pbnV0ZSwgdGhlIGBtdDc5MjFfcnVuX2Zpcm13YXJlYCBmdW5jdGlvbiBpcyBhY3R1YWxseSAqZXhwb3J0ZWQqIGFuZCBpdCBjYWxscyBgbXQ3OTIxX2xvYWRfY2xjYC4gVGhlcmVmb3JlLCBgbXQ3OTIxX3J1bl9maXJtd2FyZWAgYmVjb21lcyB0aGUgY2VudHJhbCBmb2N1cyBmb3IgbXkgaW52ZXN0aWdhdGlvbnMuIExldCdzIG1ha2Ugc3VyZSBJJ20gbm90IG1pc3NpbmcgYW55dGhpbmcgYW5kIGRvdWJsZS1jaGVjayBhbGwgYXNwZWN0cyBvZiBob3cgYG10NzkyMV9ydW5fZmlybXdhcmVgIGlzIGltcGxlbWVudGVkLlxuXG5cbiIsIklucHV0VG9rZW5zIjo5NzM1LCJPdXRwdXRUb2tlbnMiOjUzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTA4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDEyOjQzOjM5LjMwNTE5NjAxOFoiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTM0ODc5NzUyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm10NzkyMV9ydW5fZmlybXdhcmVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWN1LmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWN1LmM9NjI2PWludCBtdDc5MjFfbWN1X2Z3X2xvZ18yX2hvc3Qoc3RydWN0IG10NzkyeF9kZXYgKmRldiwgdTggY3RybClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21jdS5jLTYzOC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tY3UuYzo2Mzk6aW50IG10NzkyMV9ydW5fZmlybXdhcmUoc3RydWN0IG10NzkyeF9kZXYgKmRldilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tY3UuYy02NDAte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWN1LmMtNjU3LX1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tY3UuYzo2NTg6RVhQT1JUX1NZTUJPTF9HUEwobXQ3OTIxX3J1bl9maXJtd2FyZSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWN1LmMtNjU5LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNVQxMjo0MzozOS40NDAwODQ2MDFaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTU0NTU2NzgyOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2Uga2V5IGZ1bmN0aW9ucywga2VlcGluZyBpbiBtaW5kIG15IGV4cGVydGlzZTpcblxuKipNeSBJbW1lZGlhdGUgQXNzZXNzbWVudDogS2V5IEVudHJ5IFBvaW50cyBmb3IgTVQ3OTIxIFVuZGVyc3RhbmRpbmcqKlxuXG5SaWdodCwgc28gYG10NzkyMV9ydW5fZmlybXdhcmVgLi4udGhhdCdzIGFuIGV4Y2VsbGVudCBzdGFydGluZyBwb2ludC4gVGhhdCBmdW5jdGlvbiBsaWtlbHkgaGFuZGxlcyB0aGUgY3J1Y2lhbCB0YXNrIG9mIGdldHRpbmcgdGhlIGZpcm13YXJlIGxvYWRlZCBhbmQgcnVubmluZyBvbiB0aGUgTVQ3OTIxIGNoaXAuIFVuZGVyc3RhbmRpbmcgaXRzIGZsb3cgYW5kIGludGVyYWN0aW9ucyBpcyBwYXJhbW91bnQuIEknZCBleHBlY3QgaXQgdG8gb3JjaGVzdHJhdGUgdGhlIGluaXRpYWwgY29tbXVuaWNhdGlvbiwgcG9zc2libHkgaGFuZGxlIGFueSByZXF1aXJlZCBwcmUtZmlybXdhcmUgaW5pdGlhbGl6YXRpb24sIHRoZW4gdGhlIGFjdHVhbCB0cmFuc2ZlciBhbmQgZXhlY3V0aW9uIG9mIHRoZSBmaXJtd2FyZSBpdHNlbGYuIEFueSBlcnJvciBoYW5kbGluZyBvciByZXRyeSBtZWNoYW5pc21zIGltcGxlbWVudGVkIHdpdGhpbiBpdCBhcmUgZ29pbmcgdG8gYmUga2V5IHRvIGRlYnVnZ2luZyBjb25uZWN0aW9uIGlzc3Vlcy5cblxuSSdtIGFsc28gbm90aW5nIHRoZSBpbXBvcnRhbmNlIG9mIGBtdDc5MjF1X21jdV9pbml0YCBhbmQgYG10NzkyMXVfbWFjX3Jlc2V0YCB3aXRoaW4gYHVzYi5jYC4gVGhlIGZhY3QgdGhleSdyZSBpbiB0aGUgVVNCIGNvbnRleHQgc3BlY2lmaWNhbGx5IHN1Z2dlc3RzIHRoZXkgZGVhbCB3aXRoIHRoZSBVU0Itc3BlY2lmaWMgaW5pdGlhbGl6YXRpb24gYW5kIHJlc2V0IHJvdXRpbmVzIGZvciB0aGUgTVQ3OTIxLiBJJ2xsIG5lZWQgdG8gbG9vayBhdCB3aGF0IHRoZXkgZG8gaW4gc2VxdWVuY2UuIEkgd291bGQgZXhwZWN0IHRoZXNlIGZ1bmN0aW9ucyB0byBoYW5kbGUgdGhlIGxvdy1sZXZlbCBVU0Igc2V0dXAsIHBvc3NpYmx5IGluY2x1ZGluZyB0aGluZ3MgbGlrZSBlbmRwb2ludCBjb25maWd1cmF0aW9uLCBkZXNjcmlwdG9yIHNldHVwLCBhbmQgYW55IHJlcXVpcmVkIFVTQi1zcGVjaWZpYyBoYW5kc2hha2UgcHJvdG9jb2xzIHdpdGggdGhlIGhvc3QuIEEgd2VsbCBpbXBsZW1lbnRlZCBNQUMgcmVzZXQgY291bGQgYmUga2V5IHRvIHRyb3VibGVzaG9vdGluZyBpbnRlcm1pdHRlbnQgZGV2aWNlIGNvbm5lY3Rpdml0eSBpc3N1ZXMuIEkga25vdyBpdCdzIGxpa2VseSB0aGV5IGFyZSBnb2luZyB0byBpbnRlcmFjdCBjbG9zZWx5IHdpdGggdGhlIFVTQiBkcml2ZXIgc3RhY2ssIHNvIHRoYXQncyBzb21ldGhpbmcgdG8gaW52ZXN0aWdhdGUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEwMzY5LCJPdXRwdXRUb2tlbnMiOjUzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMTI6NDM6NDQuOTg1NjU1NjQ5WiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNjM0Mjg4ODEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibXQ3OTIxdV9tY3VfaW5pdFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS91c2IuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS91c2IuYz0zNj1tdDc5MjF1X21jdV9zZW5kX21lc3NhZ2Uoc3RydWN0IG10NzZfZGV2ICptZGV2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvdXNiLmMtNjQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvdXNiLmM6NjU6c3RhdGljIGludCBtdDc5MjF1X21jdV9pbml0KHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvdXNiLmMtNjYte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvdXNiLmM9MTUwPXN0YXRpYyBpbnQgbXQ3OTIxdV9wcm9iZShzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqdXNiX2ludGYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS91c2IuYy0xNzEtXFx0c3RhdGljIGNvbnN0IHN0cnVjdCBtdDc5MnhfaGlmX29wcyBoaWZfb3BzID0ge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3VzYi5jOjE3MjpcXHRcXHQubWN1X2luaXQgPSBtdDc5MjF1X21jdV9pbml0LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3VzYi5jLTE3My1cXHRcXHQuaW5pdF9yZXNldCA9IG10NzkyeHVfaW5pdF9yZXNldCxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMTI6NDM6NDUuMTQ5MDk2NDgxWiIsIlNlcSI6MTksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ2MDY4Mjc2MTcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0YWtlIG9uIHRoZSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIGl0IHdlcmUgbXkgb3duOlxuXG4qKlN0YXRpYyB2cy4gTm9uLVN0YXRpYyBpbiB0aGUgbXQ3OTIxdSBEcml2ZXIqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGUgYG10NzkyMXVgIGRyaXZlciBjb2RlIGFnYWluLiBJIHNlZSBgbXQ3OTIxdV9tY3VfaW5pdGAuIEFoYSwgaXQncyBkZWZpbmVkIGFzIGBzdGF0aWNgLiBSaWdodCwgdGhhdCBtYWtlcyBzZW5zZTsgaXQncyBhbiBpbnRlcm5hbCBmdW5jdGlvbiwgcHJvYmFibHkgb25seSBjYWxsZWQgd2l0aGluIHRoaXMgc3BlY2lmaWMgY29tcGlsYXRpb24gdW5pdC4gTm8gYmlnIGRlYWwuIE5vdywgbGV0J3Mgc2VlLCB3aGF0IHdhcyBJIHRyeWluZyB0byBmaWd1cmUgb3V0IGFnYWluPyBPaCwgcmlnaHQsIGBtdDc5MjF1X3Byb2JlYC4gSG1tbSwgd2FpdCBhIG1pbnV0ZS4uLiBgbXQ3OTIxdV9wcm9iZWAgaXNuJ3Qgc3RhdGljLiBUaGF04oCZcyBpbnRlcmVzdGluZy4gR2l2ZW4gdGhlIGZ1bmN0aW9uJ3MgbmFtZSBhbmQgcHVycG9zZSAocHJvYmUgZnVuY3Rpb24pLCBpdCBpcyBleHBvc2VkIHRvIHRoZSBrZXJuZWwuIFRoaXMgaXMgd29ydGggbm90aW5nLCBhbmQgSSBzaG91bGQgY29uc2lkZXIgYW55IGltcGxpY2F0aW9ucyBvZiB0aGlzIGRlc2lnbi4gSXMgdGhlcmUgYSByZWFzb24gd2h5IHRoaXMgcGFydGljdWxhciBmdW5jdGlvbiBpc24ndCBzdGF0aWM/IElzIGl0IG1lYW50IHRvIGJlIGNhbGxlZCBmcm9tIG90aGVyIG1vZHVsZXMsIG9yIGlzIGl0IGltcGxpY2l0bHkgbWVhbnQgdG8gYmUgcGFydCBvZiB0aGUga2VybmVsJ3MgZGV2aWNlIHByb2Jpbmcgc3lzdGVtPyBJIHNob3VsZCBsb29rIGludG8gdGhlIGNhbGwgZ3JhcGggZm9yIGBtdDc5MjF1X3Byb2JlYCB0byBjb25maXJtIHRoYXQgaXQncyBjYWxsZWQgcHJvcGVybHkgYnkgdGhlIGFwcHJvcHJpYXRlIHByb2JlIG1lY2hhbmlzbXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjExMTUyLCJPdXRwdXRUb2tlbnMiOjUwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMTI6NDM6NDkuNzU1OTI4MDE4WiIsIlNlcSI6MjAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozNzI0MjM2MDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibXQ3OTIxdV9wcm9iZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS91c2IuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS91c2IuYz04OT1zdGF0aWMgaW50IG10NzkyMXVfbWFjX3Jlc2V0KHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS91c2IuYy0xNDktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvdXNiLmM6MTUwOnN0YXRpYyBpbnQgbXQ3OTIxdV9wcm9iZShzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqdXNiX2ludGYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvdXNiLmMtMTUxLVxcdFxcdFxcdCBjb25zdCBzdHJ1Y3QgdXNiX2RldmljZV9pZCAqaWQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS91c2IuYz0zMzg9c3RhdGljIHN0cnVjdCB1c2JfZHJpdmVyIG10NzkyMXVfZHJpdmVyID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvdXNiLmMtMzQwLVxcdC5pZF90YWJsZVxcdD0gbXQ3OTIxdV9kZXZpY2VfdGFibGUsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvdXNiLmM6MzQxOlxcdC5wcm9iZVxcdFxcdD0gbXQ3OTIxdV9wcm9iZSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS91c2IuYy0zNDItXFx0LmRpc2Nvbm5lY3RcXHQ9IG10NzkyeHVfZGlzY29ubmVjdCxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMTI6NDM6NTAuMTI4MzU3MDE4WiIsIlNlcSI6MjEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ1Mzc1MDM0NDEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRm9jdXNpbmcgb24gdGhlIE1UNzkyMVUgRHJpdmVyJ3MgRXhlY3V0aW9uIEZsb3cqKlxuXG5Pa2F5LCBzbyBgbXQ3OTIxdV9wcm9iZWAgaXMgYSBzdGF0aWMgZnVuY3Rpb24gd2l0aGluIHRoaXMgZHJpdmVyLCB0aGF0J3Mgbm90IGdvaW5nIHRvIGJlIGEga2V5IGVudHJ5IHBvaW50IGZvciBleHRlcm5hbCBpbnNwZWN0aW9uLiBIb3dldmVyLCBgbXQ3OTIxX3J1bl9maXJtd2FyZWAgaXMgZXhwbGljaXRseSBleHBvcnRlZCwgbWFraW5nIGl0IGFuIGV4Y2VsbGVudCBzeW1ib2wgdG8gY2VudGVyIG15IGFuYWx5c2lzIGFyb3VuZC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIHBhdGggb2YgZXhlY3V0aW9uIHRoYXQgZmxvd3MgZnJvbSBgbXQ3OTIxX3J1bl9maXJtd2FyZWAuIEl0IHNlZW1zIGxpa2UgdGhlIGNvcmUgZnVuY3Rpb24gZm9yIGxvYWRpbmcgYW5kIHN0YXJ0aW5nIHRoZSBkZXZpY2UgZmlybXdhcmUuIEknbGwgbmVlZCB0byBjaGVjayBpZiB0aGVyZSBhcmUgb3RoZXIgZXhwb3J0ZWQgZnVuY3Rpb25zIHRoYXQgbWlnaHQgb2ZmZXIgYWRkaXRpb25hbCBpbnNpZ2h0cy4gTGV0IG1lIHJlLWV4YW1pbmUgdGhlIGludGVybmFscyBvZiBgbXQ3OTIxX2xvYWRfY2xjYCBxdWlja2x5IHRvIG1ha2Ugc3VyZSBJIGRpZCBub3QgbWlzcyBhbnl0aGluZyBwcmV2aW91c2x5LiBOb3BlLCBzdGlsbCBzdGF0aWMuXG5cbk5vdywgbGV0J3MgcmVmb2N1cyBvbiB0aGUgZXhwb3J0ZWQgZnVuY3Rpb24gYG10NzkyMV9ydW5fZmlybXdhcmVgLiBJcyB0aGVyZSBhbnkgb3RoZXIgZnVuY3Rpb24gdGhhdCBtaWdodCBiZSBleHBvcnRlZCBhbmQgbGlua2VkIHdpdGggdGhpcz8gSSBzaG91bGQgc2VlIGlmIHRoZXJlIGlzIGFueSBvdGhlciBmdW5jdGlvbiB0aGF0IGRpcmVjdGx5IGxlYWRzIGludG8gdGhlIGZpcm13YXJlIHJ1bi4gT2theSwgSSd2ZSBnb3QgaXQsIHdoYXQgYWJvdXQgYG10NzkyMV9yZWdkX2luaXRgPyBJJ2xsIG5lZWQgdG8gbG9vayBhdCB0aGF0IG9uZSBhcyB3ZWxsIHRvIHNlZSBpZiBpdCBwbGF5cyBhbnkgcGFydCBpbiBpbml0aWFsaXphdGlvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6MTE4NjQsIk91dHB1dFRva2VucyI6NDksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMTEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMTI6NDM6NTQuNjY1ODYzODY5WiIsIlNlcSI6MjIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNzg0Njk3MjY2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm10NzkyMV9yZWdkX2luaXRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21jdS5jPTQxMD1zdGF0aWMgaW50IG10NzkyMV9sb2FkX2NsYyhzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2LCBjb25zdCBjaGFyICpmd19uYW1lKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWN1LmMtNDkyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21jdS5jOjQ5MzpcXHRyZXQgPSBtdDc5MjFfcmVnZF9pbml0KHBoeSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWN1LmMtNDk0LW91dDpcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3JlZ2QuYz0xNjQ9aW50IG10NzkyMV9yZWdkX2NoYW5nZShzdHJ1Y3QgbXQ3OTJ4X3BoeSAqcGh5LCBjaGFyICphbHBoYTIpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9yZWdkLmMtMTkxLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3JlZ2QuYzoxOTI6aW50IG10NzkyMV9yZWdkX2luaXQoc3RydWN0IG10NzkyeF9waHkgKnBoeSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9yZWdkLmMtMTkzLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3JlZ2QuaD0xNj1pbnQgbXQ3OTIxX3JlZ2RfY2hhbmdlKHN0cnVjdCBtdDc5MnhfcGh5ICpwaHksIGNoYXIgKmFscGhhMik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvcmVnZC5oOjE3OmludCBtdDc5MjFfcmVnZF9pbml0KHN0cnVjdCBtdDc5MnhfcGh5ICpwaHkpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3JlZ2QuaC0xOC1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMTI6NDM6NTYuNDUwNTcxMjE1WiIsIlNlcSI6MjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQxMTA2MDk2MzMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBNVDc5MjEgRHJpdmVyIEluaXRpYWxpemF0aW9uKipcblxuT2theSwgc28gYG10NzkyMV9yZWdkX2luaXRgLi4uIGl0J3MgaW50ZXJuYWwsIG5vdCBhIHN0YXRpYyBmdW5jdGlvbiwgYnV0IGl0J3Mgbm90IGV4cG9ydGVkIGVpdGhlci4gVGhhdCBtZWFucyBpdCdzIHByZXR0eSBtdWNoIGhpZGRlbiB3aXRoaW4gdGhlIGRyaXZlciBpdHNlbGYuIEJ1dCBgbXQ3OTIxX3J1bl9maXJtd2FyZWAgKmlzKiBleHBvcnRlZCwgdGhhdCdzIGludGVyZXN0aW5nLiBHaXZlbiB0aGF0IGl0J3MgYWNjZXNzaWJsZSBleHRlcm5hbGx5LCBpdCBzZWVtcyBsaWtlIGEgZGVjZW50IHBvaW50IHRvIHN0YXJ0IGRpZ2dpbmcgZGVlcGVyLiBgbXQ3OTIxX3J1bl9maXJtd2FyZWAgd2lsbCBsaWtlbHkgYmUgd2hlcmUgdGhlIGNyaXRpY2FsIHN0dWZmIGhhcHBlbnMuXG5cbk5vdywgSSBuZWVkIHRvIGNoZWNrIGZvciBhbnkgY29uZmlndXJhdGlvbnMgb3IgZGVwZW5kZW5jaWVzIHRoYXQgbmVlZCB0byBiZSBtZXQuIEknbSB0aGlua2luZyBJJ2xsIHdhbnQgdG8gdGVzdCB0aGlzIHZpYSBVU0IsIHNvIHRoYXQgbWVhbnMgSSdsbCBuZWVkIGBNVDc5MjFVYCBlbmFibGVkLiBPa2F5LCBsZXQncyBzZWUsIGBNVDc5MjFVYCBoYXMgYSBkZXBlbmRlbmN5IG9uIGBNQUM4MDIxMWAuIFJpZ2h0LCB0aGF0IG1ha2VzIHNlbnNlLiBMZXQncyBzZWUgaWYgKnRoYXQqIGhhcyBhbnkgZGVwZW5kZW5jaWVzLCBqdXN0IHRvIG1ha2Ugc3VyZSBJIGRvbid0IG1pc3MgYW55dGhpbmcuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEyNzg0LCJPdXRwdXRUb2tlbnMiOjM4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTM0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDEyOjQ0OjAwLjU2MTE4NDMyOVoiLCJTZXEiOjI0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjQ0Mzg1NDA3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBNQUM4MDIxMVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvbWFjODAyMTEvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvbWFjODAyMTEvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjI6Y29uZmlnIE1BQzgwMjExXFxubmV0L21hYzgwMjExL0tjb25maWctMy1cXHR0cmlzdGF0ZSBcXFwiR2VuZXJpYyBJRUVFIDgwMi4xMSBOZXR3b3JraW5nIFN0YWNrIChtYWM4MDIxMSlcXFwiXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZz0xOT1pZiBNQUM4MDIxMSAhPSBuXFxubmV0L21hYzgwMjExL0tjb25maWctMjAtXFxubmV0L21hYzgwMjExL0tjb25maWc6MjE6Y29uZmlnIE1BQzgwMjExX0hBU19SQ1xcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTIyLVxcdGJvb2xcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yMy1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyNDpjb25maWcgTUFDODAyMTFfUkNfTUlOU1RSRUxcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yNS1cXHRib29sIFxcXCJNaW5zdHJlbFxcXCIgaWYgRVhQRVJUXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZz0zMT1jaG9pY2VcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTQwLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjQxOmNvbmZpZyBNQUM4MDIxMV9SQ19ERUZBVUxUX01JTlNUUkVMXFxubmV0L21hYzgwMjExL0tjb25maWctNDItXFx0Ym9vbCBcXFwiTWluc3RyZWxcXFwiXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZz00OD1lbmRjaG9pY2VcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy00OS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzo1MDpjb25maWcgTUFDODAyMTFfUkNfREVGQVVMVFxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTUxLVxcdHN0cmluZ1xcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWc9NTc9Y29tbWVudCBcXFwiU29tZSB3aXJlbGVzcyBkcml2ZXJzIHJlcXVpcmUgYSByYXRlIGNvbnRyb2wgYWxnb3JpdGhtXFxcIlxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWctNTktXFxubmV0L21hYzgwMjExL0tjb25maWc6NjA6Y29uZmlnIE1BQzgwMjExX0tVTklUX1RFU1RcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy02MS1cXHR0cmlzdGF0ZSBcXFwiS1VuaXQgdGVzdHMgZm9yIG1hYzgwMjExXFxcIiBpZiAhS1VOSVRfQUxMX1RFU1RTXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy02OS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzo3MDpjb25maWcgTUFDODAyMTFfTUVTSFxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTcxLVxcdGJvb2wgXFxcIkVuYWJsZSBtYWM4MDIxMSBtZXNoIG5ldHdvcmtpbmcgc3VwcG9ydFxcXCJcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTc4LVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjc5OmNvbmZpZyBNQUM4MDIxMV9MRURTXFxubmV0L21hYzgwMjExL0tjb25maWctODAtXFx0Ym9vbCBcXFwiRW5hYmxlIExFRCB0cmlnZ2Vyc1xcXCJcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTg3LVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjg4OmNvbmZpZyBNQUM4MDIxMV9ERUJVR0ZTXFxubmV0L21hYzgwMjExL0tjb25maWctODktXFx0Ym9vbCBcXFwiRXhwb3J0IG1hYzgwMjExIGludGVybmFscyBpbiBEZWJ1Z0ZTXFxcIlxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWctOTYtXFxubmV0L21hYzgwMjExL0tjb25maWc6OTc6Y29uZmlnIE1BQzgwMjExX01FU1NBR0VfVFJBQ0lOR1xcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTk4LVxcdGJvb2wgXFxcIlRyYWNlIGFsbCBtYWM4MDIxMSBkZWJ1ZyBtZXNzYWdlc1xcXCJcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTEwOS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoxMTA6bWVudWNvbmZpZyBNQUM4MDIxMV9ERUJVR19NRU5VXFxubmV0L21hYzgwMjExL0tjb25maWctMTExLVxcdGJvb2wgXFxcIlNlbGVjdCBtYWM4MDIxMSBkZWJ1Z2dpbmcgZmVhdHVyZXNcXFwiXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xMTUtXFxubmV0L21hYzgwMjExL0tjb25maWc6MTE2OmNvbmZpZyBNQUM4MDIxMV9OT0lOTElORVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTExNy1cXHRib29sIFxcXCJEbyBub3QgaW5saW5lIFRYL1JYIGhhbmRsZXJzXFxcIlxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWctMTMxLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjEzMjpjb25maWcgTUFDODAyMTFfVkVSQk9TRV9ERUJVR1xcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTEzMy1cXHRib29sIFxcXCJWZXJib3NlIGRlYnVnZ2luZyBvdXRwdXRcXFwiXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xNDItXFxubmV0L21hYzgwMjExL0tjb25maWc6MTQzOmNvbmZpZyBNQUM4MDIxMV9NTE1FX0RFQlVHXFxubmV0L21hYzgwMjExL0tjb25maWctMTQ0LVxcdGJvb2wgXFxcIlZlcmJvc2UgbWFuYWdlZCBNTE1FIG91dHB1dFxcXCJcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE1My1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoxNTQ6Y29uZmlnIE1BQzgwMjExX1NUQV9ERUJVR1xcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE1NS1cXHRib29sIFxcXCJWZXJib3NlIHN0YXRpb24gZGVidWdnaW5nXFxcIlxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWctMTYyLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjE2Mzpjb25maWcgTUFDODAyMTFfSFRfREVCVUdcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xNjQtXFx0Ym9vbCBcXFwiVmVyYm9zZSBIVCBkZWJ1Z2dpbmdcXFwiXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xNzQtXFxubmV0L21hYzgwMjExL0tjb25maWc6MTc1OmNvbmZpZyBNQUM4MDIxMV9PQ0JfREVCVUdcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xNzYtXFx0Ym9vbCBcXFwiVmVyYm9zZSBPQ0IgZGVidWdnaW5nXFxcIlxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWctMTg1LVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjE4Njpjb25maWcgTUFDODAyMTFfSUJTU19ERUJVR1xcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE4Ny1cXHRib29sIFxcXCJWZXJib3NlIElCU1MgZGVidWdnaW5nXFxcIlxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWctMTk2LVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjE5Nzpjb25maWcgTUFDODAyMTFfUFNfREVCVUdcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xOTgtXFx0Ym9vbCBcXFwiVmVyYm9zZSBwb3dlcnNhdmUgbW9kZSBkZWJ1Z2dpbmdcXFwiXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yMDgtXFxubmV0L21hYzgwMjExL0tjb25maWc6MjA5OmNvbmZpZyBNQUM4MDIxMV9NUExfREVCVUdcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yMTAtXFx0Ym9vbCBcXFwiVmVyYm9zZSBtZXNoIHBlZXIgbGluayBkZWJ1Z2dpbmdcXFwiXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yMjEtXFxubmV0L21hYzgwMjExL0tjb25maWc6MjIyOmNvbmZpZyBNQUM4MDIxMV9NUEFUSF9ERUJVR1xcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTIyMy1cXHRib29sIFxcXCJWZXJib3NlIG1lc2ggcGF0aCBkZWJ1Z2dpbmdcXFwiXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yMzQtXFxubmV0L21hYzgwMjExL0tjb25maWc6MjM1OmNvbmZpZyBNQUM4MDIxMV9NSFdNUF9ERUJVR1xcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTIzNi1cXHRib29sIFxcXCJWZXJib3NlIG1lc2ggSFdNUCByb3V0aW5nIGRlYnVnZ2luZ1xcXCJcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTI0Ny1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyNDg6Y29uZmlnIE1BQzgwMjExX01FU0hfU1lOQ19ERUJVR1xcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTI0OS1cXHRib29sIFxcXCJWZXJib3NlIG1lc2ggc3luY2hyb25pemF0aW9uIGRlYnVnZ2luZ1xcXCJcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTI1OC1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyNTk6Y29uZmlnIE1BQzgwMjExX01FU0hfQ1NBX0RFQlVHXFxubmV0L21hYzgwMjExL0tjb25maWctMjYwLVxcdGJvb2wgXFxcIlZlcmJvc2UgbWVzaCBjaGFubmVsIHN3aXRjaCBkZWJ1Z2dpbmdcXFwiXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yNjktXFxubmV0L21hYzgwMjExL0tjb25maWc6MjcwOmNvbmZpZyBNQUM4MDIxMV9NRVNIX1BTX0RFQlVHXFxubmV0L21hYzgwMjExL0tjb25maWctMjcxLVxcdGJvb2wgXFxcIlZlcmJvc2UgbWVzaCBwb3dlcnNhdmUgZGVidWdnaW5nXFxcIlxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWctMjgwLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjI4MTpjb25maWcgTUFDODAyMTFfVERMU19ERUJVR1xcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTI4Mi1cXHRib29sIFxcXCJWZXJib3NlIFRETFMgZGVidWdnaW5nXFxcIlxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWctMjkyLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjI5Mzpjb25maWcgTUFDODAyMTFfREVCVUdfQ09VTlRFUlNcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yOTQtXFx0Ym9vbCBcXFwiRXh0cmEgc3RhdGlzdGljcyBmb3IgVFgvUlggZGVidWdnaW5nXFxcIlxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWctMzA3LVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjMwODpjb25maWcgTUFDODAyMTFfU1RBX0hBU0hfTUFYX1NJWkVcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0zMDktXFx0aW50IFxcXCJTdGF0aW9uIGhhc2ggdGFibGUgbWF4aW11bSBzaXplXFxcIiBpZiBNQUM4MDIxMV9ERUJVR19NRU5VXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDEyOjQ0OjAwLjgwNTU3NzQ1NloiLCJTZXEiOjI1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNTM3ODE1MzEzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgc3VtbWFyeSwgYXMgdGhlIHRob3VnaHQgcHJvY2VzcyB1bmZvbGRzOlxuXG4qKkRlcGVuZGVuY2llcyBhbmQgdGhlIFdpcmVsZXNzIFN1YnN5c3RlbSoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IGBNQUM4MDIxMWAgYW5kIGl0cyBkZXBlbmRlbmNpZXMuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0aGF0IGl0J3MgZmFpcmx5IGlzb2xhdGVkLCBhdCBsZWFzdCBiYXNlZCBvbiB0aGlzIHBhcnRpY3VsYXIgZmlsZSDigJMgbm90aGluZyBkaXJlY3RseSByZWxpZXMgb24gYW55dGhpbmcgKmhlcmUqLiBCdXQgaG9sZCBvbiwgdGhlIEtjb25maWcgc3VnZ2VzdHMgaXRzIHByZXNlbmNlIHdpdGhpbiB0aGUgd2lyZWxlc3Mgc3Vic3lzdGVtIChgbmV0L21hYzgwMjExL0tjb25maWdgKS4gVGhhdCBsaWtlbHkgbWVhbnMgaXQgdG91Y2hlcyBvbiwgYXQgdGhlIHZlcnkgbGVhc3QsIHdpcmVsZXNzIGNvbmZpZ3VyYXRpb24uLi4gQ291bGQgYE1BQzgwMjExYCBkZXBlbmQgb24gYENGRzgwMjExYD8gSXQncyB0aGUgbW9zdCBvYnZpb3VzIGNhbmRpZGF0ZSBmb3IgYSBsb3ctbGV2ZWwgd2lyZWxlc3MgY29uZmlndXJhdGlvbiBsYXllci4gQmVzdCB0byBkb3VibGUtY2hlY2sgYG5ldC93aXJlbGVzcy9LY29uZmlnYCB0byBiZSBzdXJlLiBJdCdzIHRpbWUgdG8gZGlnIGludG8gdGhhdCBLY29uZmlnIHRvIG5haWwgZG93biB0aGlzIHJlbGF0aW9uc2hpcC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTUzNjUsIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2OSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNVQxMjo0NDowNC4zNDMzOTU2NzlaIiwiU2VxIjoyNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjUxNjMwMjEwMywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgQ0ZHODAyMTFcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L3dpcmVsZXNzL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L3dpcmVsZXNzL0tjb25maWc9MTQ9Y29uZmlnIFdFWFRfUFJJVlxcbi0tXFxubmV0L3dpcmVsZXNzL0tjb25maWctMTYtXFxubmV0L3dpcmVsZXNzL0tjb25maWc6MTc6Y29uZmlnIENGRzgwMjExXFxubmV0L3dpcmVsZXNzL0tjb25maWctMTgtXFx0dHJpc3RhdGUgXFxcImNmZzgwMjExIC0gd2lyZWxlc3MgY29uZmlndXJhdGlvbiBBUElcXFwiXFxuLS1cXG5uZXQvd2lyZWxlc3MvS2NvbmZpZz0zOD1jb25maWcgTkw4MDIxMV9URVNUTU9ERVxcbi0tXFxubmV0L3dpcmVsZXNzL0tjb25maWctNTEtXFxubmV0L3dpcmVsZXNzL0tjb25maWc6NTI6Y29uZmlnIENGRzgwMjExX0RFVkVMT1BFUl9XQVJOSU5HU1xcbm5ldC93aXJlbGVzcy9LY29uZmlnLTUzLVxcdGJvb2wgXFxcImVuYWJsZSBkZXZlbG9wZXIgd2FybmluZ3NcXFwiXFxuLS1cXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy02Ny1cXG5uZXQvd2lyZWxlc3MvS2NvbmZpZzo2ODpjb25maWcgQ0ZHODAyMTFfQ0VSVElGSUNBVElPTl9PTlVTXFxubmV0L3dpcmVsZXNzL0tjb25maWctNjktXFx0Ym9vbCBcXFwiY2ZnODAyMTEgY2VydGlmaWNhdGlvbiBvbnVzXFxcIlxcbi0tXFxubmV0L3dpcmVsZXNzL0tjb25maWctODgtXFxubmV0L3dpcmVsZXNzL0tjb25maWc6ODk6Y29uZmlnIENGRzgwMjExX1JFUVVJUkVfU0lHTkVEX1JFR0RCXFxubmV0L3dpcmVsZXNzL0tjb25maWctOTAtXFx0Ym9vbCBcXFwicmVxdWlyZSByZWdkYiBzaWduYXR1cmVcXFwiIGlmIENGRzgwMjExX0NFUlRJRklDQVRJT05fT05VU1xcbi0tXFxubmV0L3dpcmVsZXNzL0tjb25maWctOTgtXFxubmV0L3dpcmVsZXNzL0tjb25maWc6OTk6Y29uZmlnIENGRzgwMjExX1VTRV9LRVJORUxfUkVHREJfS0VZU1xcbm5ldC93aXJlbGVzcy9LY29uZmlnLTEwMC1cXHRib29sIFxcXCJhbGxvdyByZWdkYiBrZXlzIHNoaXBwZWQgd2l0aCB0aGUga2VybmVsXFxcIiBpZiBDRkc4MDIxMV9DRVJUSUZJQ0FUSU9OX09OVVNcXG4tLVxcbm5ldC93aXJlbGVzcy9LY29uZmlnLTExMC1cXG5uZXQvd2lyZWxlc3MvS2NvbmZpZzoxMTE6Y29uZmlnIENGRzgwMjExX0VYVFJBX1JFR0RCX0tFWURJUlxcbm5ldC93aXJlbGVzcy9LY29uZmlnLTExMi1cXHRzdHJpbmcgXFxcImFkZGl0aW9uYWwgcmVnZGIga2V5IGRpcmVjdG9yeVxcXCIgaWYgQ0ZHODAyMTFfQ0VSVElGSUNBVElPTl9PTlVTXFxuLS1cXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xMjEtXFxubmV0L3dpcmVsZXNzL0tjb25maWc6MTIyOmNvbmZpZyBDRkc4MDIxMV9SRUdfQ0VMTFVMQVJfSElOVFNcXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xMjMtXFx0Ym9vbCBcXFwiY2ZnODAyMTEgcmVndWxhdG9yeSBzdXBwb3J0IGZvciBjZWxsdWxhciBiYXNlIHN0YXRpb24gaGludHNcXFwiXFxuLS1cXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xMzQtXFxubmV0L3dpcmVsZXNzL0tjb25maWc6MTM1OmNvbmZpZyBDRkc4MDIxMV9SRUdfUkVMQVhfTk9fSVJcXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xMzYtXFx0Ym9vbCBcXFwiY2ZnODAyMTEgc3VwcG9ydCBmb3IgTk9fSVIgcmVsYXhhdGlvblxcXCJcXG4tLVxcbm5ldC93aXJlbGVzcy9LY29uZmlnLTE1OC1cXG5uZXQvd2lyZWxlc3MvS2NvbmZpZzoxNTk6Y29uZmlnIENGRzgwMjExX0RFRkFVTFRfUFNcXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xNjAtXFx0Ym9vbCBcXFwiZW5hYmxlIHBvd2Vyc2F2ZSBieSBkZWZhdWx0XFxcIlxcbi0tXFxubmV0L3dpcmVsZXNzL0tjb25maWctMTY4LVxcbm5ldC93aXJlbGVzcy9LY29uZmlnOjE2OTpjb25maWcgQ0ZHODAyMTFfREVCVUdGU1xcbm5ldC93aXJlbGVzcy9LY29uZmlnLTE3MC1cXHRib29sIFxcXCJjZmc4MDIxMSBEZWJ1Z0ZTIGVudHJpZXNcXFwiXFxuLS1cXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xNzYtXFxubmV0L3dpcmVsZXNzL0tjb25maWc6MTc3OmNvbmZpZyBDRkc4MDIxMV9DUkRBX1NVUFBPUlRcXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xNzgtXFx0Ym9vbCBcXFwic3VwcG9ydCBDUkRBXFxcIiBpZiBFWFBFUlRcXG4tLVxcbm5ldC93aXJlbGVzcy9LY29uZmlnLTE4Ni1cXG5uZXQvd2lyZWxlc3MvS2NvbmZpZzoxODc6Y29uZmlnIENGRzgwMjExX1dFWFRcXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xODgtXFx0Ym9vbCBcXFwiY2ZnODAyMTEgd2lyZWxlc3MgZXh0ZW5zaW9ucyBjb21wYXRpYmlsaXR5XFxcIlxcbi0tXFxubmV0L3dpcmVsZXNzL0tjb25maWctMTkzLVxcbm5ldC93aXJlbGVzcy9LY29uZmlnOjE5NDpjb25maWcgQ0ZHODAyMTFfS1VOSVRfVEVTVFxcbm5ldC93aXJlbGVzcy9LY29uZmlnLTE5NS1cXHR0cmlzdGF0ZSBcXFwiS1VuaXQgdGVzdHMgZm9yIGNmZzgwMjExXFxcIiBpZiAhS1VOSVRfQUxMX1RFU1RTXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDEyOjQ0OjA0Ljg1OTcwMzk5MloiLCJTZXEiOjI3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozODAyMjgxOTMwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipEZXBlbmRlbmN5IERlZXAgRGl2ZSoqXG5cblJpZ2h0LCAqcGluZyouLi4gbGV0IG1lIGp1c3QgZG91YmxlLWNoZWNrIHRoYXQgZGVwZW5kZW5jeSBzdHJ1Y3R1cmUuIEFoLCB5ZXMsIGFzIGV4cGVjdGVkLCBgTUFDODAyMTFgIGhpbmdlcyBvbiBgQ0ZHODAyMTFgLiBUaGF0IHJlbGF0aW9uc2hpcCBhbHdheXMgbmVlZHMgdG8gYmUgdG9wIG9mIG1pbmQgd2hlbiBJJ20gZGVhbGluZyB3aXRoIHRoZXNlIHdpcmVsZXNzIHN0YWNrcy4gSnVzdCB0byBiZSBhYnNvbHV0ZWx5IHN1cmUsIGFuZCB0byByZWZyZXNoIG15IG1lbW9yeSBvbiBhbnkgcmVjZW50IGNoYW5nZXMsIEknbGwgcXVpY2tseSByZS1leGFtaW5lIHRoZSBgbmV0L21hYzgwMjExL0tjb25maWdgIGNvbmZpZ3VyYXRpb24gZmlsZS4gSXQncyBhIGtleSBzb3VyY2UgZm9yIHVuZGVyc3RhbmRpbmcgdGhlIGJ1aWxkIG9wdGlvbnMgYW5kIGRlcGVuZGVuY2llcyBpbiB0aGF0IG1vZHVsZS4gR290dGEga2VlcCB0aG9zZSBkZXRhaWxzIHNoYXJwLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNjU2NywiT3V0cHV0VG9rZW5zIjozNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDEyOjQ0OjA4LjY2MTk5MDAzMloiLCJTZXEiOjI4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxODMwOTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwibmV0L21hYzgwMjExL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogMjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAgMTpcXHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG4gICAyOlxcdGNvbmZpZyBNQUM4MDIxMVxcbiAgIDM6XFx0XFx0dHJpc3RhdGUgXFxcIkdlbmVyaWMgSUVFRSA4MDIuMTEgTmV0d29ya2luZyBTdGFjayAobWFjODAyMTEpXFxcIlxcbiAgIDQ6XFx0XFx0ZGVwZW5kcyBvbiBDRkc4MDIxMVxcbiAgIDU6XFx0XFx0c2VsZWN0IENSWVBUT1xcbiAgIDY6XFx0XFx0c2VsZWN0IENSWVBUT19MSUJfQUVTX0NCQ19NQUNTXFxuICAgNzpcXHRcXHRzZWxlY3QgQ1JZUFRPX0xJQl9BUkM0XFxuICAgODpcXHRcXHRzZWxlY3QgQ1JZUFRPX0FFU1xcbiAgIDk6XFx0XFx0c2VsZWN0IENSWVBUT19DQ01cXG4gIDEwOlxcdFxcdHNlbGVjdCBDUllQVE9fR0NNXFxuICAxMTpcXHRcXHRzZWxlY3QgQ1JDMzJcXG4gIDEyOlxcdFxcdGhlbHBcXG4gIDEzOlxcdFxcdCAgVGhpcyBvcHRpb24gZW5hYmxlcyB0aGUgaGFyZHdhcmUgaW5kZXBlbmRlbnQgSUVFRSA4MDIuMTFcXG4gIDE0OlxcdFxcdCAgbmV0d29ya2luZyBzdGFjay5cXG4gIDE1OlxcdFxcbiAgMTY6XFx0Y29tbWVudCBcXFwiQ0ZHODAyMTEgbmVlZHMgdG8gYmUgZW5hYmxlZCBmb3IgTUFDODAyMTFcXFwiXFxuICAxNzpcXHRcXHRkZXBlbmRzIG9uIENGRzgwMjExPW5cXG4gIDE4OlxcdFxcbiAgMTk6XFx0aWYgTUFDODAyMTEgIT0gblxcbiAgMjA6XFx0XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDEyOjQ0OjA4LjY2MjE3NjYyMloiLCJTZXEiOjI5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNzc2OTM3NzQxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkRlcGVuZGVuY3kgRGVlcCBEaXZlKipcblxuT2theSwgc28gSSdtIGRpZ2dpbmcgaW50byB0aGUgbmV0d29ya2luZyBzdGFjaywgYW5kIGl0J3MgY2xlYXIgdGhhdCBgTUFDODAyMTFgIHJlbGllcyBoZWF2aWx5IG9uIGBDRkc4MDIxMWAuIFRoYXQgbWFrZXMgc2Vuc2UsIGBDRkc4MDIxMWAgaXMgdGhlIGNvbmZpZ3VyYXRpb24gbGF5ZXIuIE5hdHVyYWxseSwgYENGRzgwMjExYCBpdHNlbGYgaXMgYnVpbHQgdXBvbiBgTkVUYC4gSSdtIGdvaW5nIHRvIHF1aWNrbHkgY2hlY2sgdGhlIGBkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L0tjb25maWdgIGZpbGUgbm93LiBJIHdhbnQgdG8gc2VlIGlmIHRoZXJlIGFyZSBhbnkgb3RoZXIgZGlyZWN0IG9yIGluZGlyZWN0IGRlcGVuZGVuY2llcyB0aGF0IG1pZ2h0IGluZmx1ZW5jZSBob3cgSSBhcHByb2FjaCB0aGlzIHBhcnRpY3VsYXIgYXNwZWN0IG9mIHRoZSBkcml2ZXIuIEkgbmVlZCB0byBtYWtlIHN1cmUgSSdtIG5vdCBtaXNzaW5nIGFueSBzdWJ0bGUgY29ubmVjdGlvbnMgb3IgcmVsYXRpb25zaGlwcywgYW5kIHRoYXQgSSBoYXZlIGEgY29tcGxldGUgdW5kZXJzdGFuZGluZyBvZiB0aGUgcHJlcmVxdWlzaXRlIGxhbmRzY2FwZSBiZWZvcmUgSSBwcm9jZWVkIGFueSBmdXJ0aGVyLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNzA3NSwiT3V0cHV0VG9rZW5zIjo0MSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjYyLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMTI6NDQ6MTIuNDM5MTE3NjMzWiIsIlNlcSI6MzAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjExMDI3MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogNDBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAgMTpcXHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMy1DbGF1c2UtQ2xlYXJcXG4gICAyOlxcdGNvbmZpZyBNVDc2X0NPUkVcXG4gICAzOlxcdFxcdHRyaXN0YXRlXFxuICAgNDpcXHRcXHRzZWxlY3QgUEFHRV9QT09MXFxuICAgNTpcXHRcXG4gICA2OlxcdGNvbmZpZyBNVDc2X0xFRFNcXG4gICA3OlxcdFxcdGJvb2xcXG4gICA4OlxcdFxcdGRlcGVuZHMgb24gTVQ3Nl9DT1JFXFxuICAgOTpcXHRcXHRkZXBlbmRzIG9uIExFRFNfQ0xBU1M9eSB8fCBNVDc2X0NPUkU9TEVEU19DTEFTU1xcbiAgMTA6XFx0XFx0ZGVmYXVsdCB5XFxuICAxMTpcXHRcXG4gIDEyOlxcdGNvbmZpZyBNVDc2X1VTQlxcbiAgMTM6XFx0XFx0dHJpc3RhdGVcXG4gIDE0OlxcdFxcdGRlcGVuZHMgb24gTVQ3Nl9DT1JFXFxuICAxNTpcXHRcXG4gIDE2OlxcdGNvbmZpZyBNVDc2X1NESU9cXG4gIDE3OlxcdFxcdHRyaXN0YXRlXFxuICAxODpcXHRcXHRkZXBlbmRzIG9uIE1UNzZfQ09SRVxcbiAgMTk6XFx0XFxuICAyMDpcXHRjb25maWcgTVQ3NngwMl9MSUJcXG4gIDIxOlxcdFxcdHRyaXN0YXRlXFxuICAyMjpcXHRcXHRzZWxlY3QgTVQ3Nl9DT1JFXFxuICAyMzpcXHRcXG4gIDI0OlxcdGNvbmZpZyBNVDc2eDAyX1VTQlxcbiAgMjU6XFx0XFx0dHJpc3RhdGVcXG4gIDI2OlxcdFxcdHNlbGVjdCBNVDc2X1VTQlxcbiAgMjc6XFx0XFxuICAyODpcXHRjb25maWcgTVQ3Nl9DT05OQUNfTElCXFxuICAyOTpcXHRcXHR0cmlzdGF0ZVxcbiAgMzA6XFx0XFx0c2VsZWN0IE1UNzZfQ09SRVxcbiAgMzE6XFx0XFxuICAzMjpcXHRjb25maWcgTVQ3OTJ4X0xJQlxcbiAgMzM6XFx0XFx0dHJpc3RhdGVcXG4gIDM0OlxcdFxcdHNlbGVjdCBNVDc2X0NPTk5BQ19MSUJcXG4gIDM1OlxcdFxcbiAgMzY6XFx0Y29uZmlnIE1UNzkyeF9VU0JcXG4gIDM3OlxcdFxcdHRyaXN0YXRlXFxuICAzODpcXHRcXHRzZWxlY3QgTVQ3Nl9VU0JcXG4gIDM5OlxcdFxcbiAgNDA6XFx0Y29uZmlnIE1UNzZfTlBVXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDEyOjQ0OjEyLjQzOTIzMDE5M1oiLCJTZXEiOjMxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MzgzMDQ5Nzc5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQgbWUgYnJlYWsgdGhpcyBkb3duLlxuXG4qKkRpdmluZyBpbnRvIHRoZSBNVDc5MnggVVNCIERyaXZlciBDb25maWd1cmF0aW9uKipcblxuQWxyaWdodCwgSSdtIHRyYWNpbmcgdGhpcyB0aHJvdWdoLiBJdCBsb29rcyBsaWtlIGBNVDc5MnhfVVNCYCBpbiB0aGUga2VybmVsIGNvbmZpZyBpcyBwdWxsaW5nIGluIGBNVDc2X1VTQmAuIE1ha2VzIHNlbnNlLCB0aGV5J3JlIGxpa2VseSByZWxhdGVkLiBBbmQsIGFzIGV4cGVjdGVkLCBgTVQ3Nl9VU0JgIGlzIGRlcGVuZGVudCBvbiBgTVQ3Nl9DT1JFYCAtIHRoYXQncyB0aGUgYmFzZSBvZiB0aGUgTWVkaWF0ZWsgNzYwMCBzZXJpZXMgc3R1ZmYuIFNlZW1zIGxvZ2ljYWwuIEJ1dCBoYW5nIG9uLCB0aGluZ3MgZ2V0IG1vcmUgaW50ZXJlc3RpbmcuIGBNVDc5MjFVYCBzZWxlY3RzIGBNVDc5MnhfVVNCYCwgYXMgSSdkIGV4cGVjdCBmb3IgdGhlIFVTQiB2ZXJzaW9uLCBidXQgYWxzbyBpdCBzZWxlY3RzIGBNVDc5MjFfQ09NTU9OYC4gT2ssIHNvIGBNVDc5MjFfQ09NTU9OYCBpcyB0aGUgc2hhcmVkLCBsaWtlbHkgaGFyZHdhcmUtYWdub3N0aWMsIGNvZGUgZm9yIHRoYXQgNzkyMSB2YXJpYW50LiBJIG5lZWQgdG8gbWFrZSBhIG1lbnRhbCBub3RlIHRvIGZpbmQgYE1UNzkyMV9DT01NT05gJ3MgS2NvbmZpZyBmaWxlLiBMZXQgbWUgc2VlLi4uIHllcywgaXQncyBsb2NhdGVkIHVuZGVyIGBkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9LY29uZmlnYC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTc3ODQsIk91dHB1dFRva2VucyI6NDcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo5NCwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDEyOjQ0OjE2LjgyMjI4NDA3MloiLCJTZXEiOjMyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4NDAwMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEsXG4gIFwiTGluZUNvdW50XCI6IDQwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgIDE6XFx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTMtQ2xhdXNlLUNsZWFyXFxuICAgMjpcXHRjb25maWcgTVQ3OTIxX0NPTU1PTlxcbiAgIDM6XFx0XFx0dHJpc3RhdGVcXG4gICA0OlxcdFxcdHNlbGVjdCBNVDc5MnhfTElCXFxuICAgNTpcXHRcXHRzZWxlY3QgV0FOVF9ERVZfQ09SRURVTVBcXG4gICA2OlxcdFxcbiAgIDc6XFx0Y29uZmlnIE1UNzkyMUVcXG4gICA4OlxcdFxcdHRyaXN0YXRlIFxcXCJNZWRpYVRlayBNVDc5MjFFIChQQ0llKSBzdXBwb3J0XFxcIlxcbiAgIDk6XFx0XFx0c2VsZWN0IE1UNzkyMV9DT01NT05cXG4gIDEwOlxcdFxcdGRlcGVuZHMgb24gTUFDODAyMTFcXG4gIDExOlxcdFxcdGRlcGVuZHMgb24gUENJXFxuICAxMjpcXHRcXHRoZWxwXFxuICAxMzpcXHRcXHQgIFRoaXMgYWRkcyBzdXBwb3J0IGZvciBNVDc5MjFFIDgwMi4xMWF4IDJ4MjoyU1Mgd2lyZWxlc3MgZGV2aWNlcy5cXG4gIDE0OlxcdFxcbiAgMTU6XFx0XFx0ICBUbyBjb21waWxlIHRoaXMgZHJpdmVyIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlLlxcbiAgMTY6XFx0XFxuICAxNzpcXHRjb25maWcgTVQ3OTIxU1xcbiAgMTg6XFx0XFx0dHJpc3RhdGUgXFxcIk1lZGlhVGVrIE1UNzkyMVMgKFNESU8pIHN1cHBvcnRcXFwiXFxuICAxOTpcXHRcXHRzZWxlY3QgTVQ3Nl9TRElPXFxuICAyMDpcXHRcXHRzZWxlY3QgTVQ3OTIxX0NPTU1PTlxcbiAgMjE6XFx0XFx0ZGVwZW5kcyBvbiBNQUM4MDIxMVxcbiAgMjI6XFx0XFx0ZGVwZW5kcyBvbiBNTUNcXG4gIDIzOlxcdFxcdGhlbHBcXG4gIDI0OlxcdFxcdCAgVGhpcyBhZGRzIHN1cHBvcnQgZm9yIE1UNzkyMVMgODAyLjExYXggMngyOjJTUyB3aXJlbGVzcyBkZXZpY2VzLlxcbiAgMjU6XFx0XFxuICAyNjpcXHRcXHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmUuXFxuICAyNzpcXHRcXG4gIDI4OlxcdGNvbmZpZyBNVDc5MjFVXFxuICAyOTpcXHRcXHR0cmlzdGF0ZSBcXFwiTWVkaWFUZWsgTVQ3OTIxVSAoVVNCKSBzdXBwb3J0XFxcIlxcbiAgMzA6XFx0XFx0c2VsZWN0IE1UNzkyeF9VU0JcXG4gIDMxOlxcdFxcdHNlbGVjdCBNVDc5MjFfQ09NTU9OXFxuICAzMjpcXHRcXHRkZXBlbmRzIG9uIE1BQzgwMjExXFxuICAzMzpcXHRcXHRkZXBlbmRzIG9uIFVTQlxcbiAgMzQ6XFx0XFx0aGVscFxcbiAgMzU6XFx0XFx0ICBUaGlzIGFkZHMgc3VwcG9ydCBmb3IgTVQ3OTIxVSA4MDIuMTFheCAyeDI6MlNTIHdpcmVsZXNzIGRldmljZXMuXFxuICAzNjpcXHRcXG4gIDM3OlxcdFxcdCAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZS5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMTI6NDQ6MTYuODIyMzcwMjQyWiIsIlNlcSI6MzMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjc4NTc5MTE1OTYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQ29uZmlndXJhdGlvbiBhbmQgRnVuY3Rpb24gRm9jdXMqKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24gc3lzdGVtYXRpY2FsbHkuIEknbSBmb2N1c2luZyBvbiB0aGUgYE1UNzkyMVVgIGRyaXZlciBzcGVjaWZpY2FsbHkgYmVjYXVzZSBpdCdzIFVTQi1iYXNlZCwgYW5kIHN5emthbGxlciBjYW4gZGlyZWN0bHkgZnV6eiBVU0IuIE15IGZpcnN0IHRob3VnaHQgaXMgdG8gbmFpbCBkb3duIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgbmVlZGVkIHRvIGJ1aWxkIGl0LiBgTVQ3OTIxVWAgcmVsaWVzIG9uIGBNQUM4MDIxMWAsIHdoaWNoIGluIHR1cm4sIG5lZWRzIGBDRkc4MDIxMWAuIFNvLCBhdCBhIG1pbmltdW0sIEknbGwgbmVlZCBgTVQ3OTIxVWAsIGBNQUM4MDIxMWAsIGFuZCBgQ0ZHODAyMTFgIGVuYWJsZWQgaW4gdGhlIGtlcm5lbCBjb25maWcuIEFsdGhvdWdoIFVTQiBpcyB1c3VhbGx5IGVuYWJsZWQgYnkgZGVmYXVsdCwgSSdsbCBleHBsaWNpdGx5IGxpc3QgYFVTQmAgYXMgd2VsbCBmb3IgY2xhcml0eSBhbmQgY29tcGxldGVuZXNzLlxuXG5Ib3dldmVyLCBJJ2xsIGFsc28gYWRkIGNvbmZpZ3VyYXRpb25zIGZvciB0aGUgb3RoZXIgdmFyaWFudHM6IGBNVDc5MjFFYCAoUENJZSkgYW5kIGBNVDc5MjFTYCAoU0RJTykgYXMgYSBwcmVjYXV0aW9uLiBKdXN0IGluIGNhc2UgdGhlcmUgYXJlIHN1YnRsZSBkZXBlbmRlbmNpZXMgb3IgcG90ZW50aWFsIG92ZXJsYXAgaW4gY29kZSBwYXRocy4gVGhhdCBtZWFucyBteSBpbml0aWFsIGNvbmZpZ3VyYXRpb24gbGlzdCB3aWxsIGJlIGBNVDc5MjFVYCwgYE1UNzkyMUVgLCBgTVQ3OTIxU2AsIGBNQUM4MDIxMWAsIGFuZCBgQ0ZHODAyMTFgLiBCdXQgaG9sZCBvbiwgdGhlIFBDSWUgdmFyaWFudCAoYE1UNzkyMUVgKSBkZXBlbmRzIG9uIGBQQ0lgLCBhbmQgdGhlIFNESU8gdmVyc2lvbiAoYE1UNzkyMVNgKSBkZXBlbmRzIG9uIGBNTUNgLiBHb3R0YSByZW1lbWJlciB0aG9zZS5cblxuTm93LCBzaGlmdGluZyBnZWFycyB0byB0aGUgYWN0dWFsIGNvZGUsIEkgbmVlZCB0byBwaW5wb2ludCB0aGUga2V5IGZ1bmN0aW9ucyB0byBleGFtaW5lLiBJJ20gZ29pbmcgdG8gcmUtZXZhbHVhdGUgYG10NzkyMV9ydW5fZmlybXdhcmVgIGFzIGl0IHNlZW1zIGxpa2UgdGhlIG1haW4gZnVuY3Rpb24gdG8gZm9jdXMgb24uIEFsc28gYG10NzkyMV9sb2FkX2NsY2AgbG9va3MgaW50ZXJlc3RpbmcgYnV0IGlzIHN0YXRpYywgaG93ZXZlciwgaXQgaXMgY2FsbGVkIGJ5IHRoZSBleHBvcnRlZCBmdW5jdGlvbiBgbXQ3OTIxX3J1bl9maXJtd2FyZWAsIHNvIGl0IGlzIGEgZ29vZCBpbmRpcmVjdCBmdW5jdGlvbiB0byBleGFtaW5lLiBUaGVuIEkgc2VlIHRoYXQgYG10NzkyMV9ydW5fZmlybXdhcmVgIGlzIGNhbGxlZCBmcm9tIGBtdDc5MjF1X21jdV9pbml0YCBhbmQgYG10NzkyMXVfbWFjX3Jlc2V0YC4gU2luY2UgdGhvc2UgYXJlIHN0YXRpYyBidXQgYXJlIGFzc2lnbmVkIHRvIGZ1bmN0aW9uIHBvaW50ZXJzIGFuZCBjYWxsZWQgYnkgdGhlIGV4cG9ydGVkIGZ1bmN0aW9uLCBJJ2xsIG5lZWQgdG8gY2hlY2sgdGhlIGNhbGwgdHJhY2VzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxODcyMCwiT3V0cHV0VG9rZW5zIjo1MiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjUwOCwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDEyOjQ0OjI0LjY4MDI4NTM3OFoiLCJTZXEiOjM0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjU5NzkzMzg1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm10NzkyMXVfbWFjX3Jlc2V0XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3VzYi5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3VzYi5jPTY1PXN0YXRpYyBpbnQgbXQ3OTIxdV9tY3VfaW5pdChzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvdXNiLmMtODgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvdXNiLmM6ODk6c3RhdGljIGludCBtdDc5MjF1X21hY19yZXNldChzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3VzYi5jLTkwLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3VzYi5jPTE1MD1zdGF0aWMgaW50IG10NzkyMXVfcHJvYmUoc3RydWN0IHVzYl9pbnRlcmZhY2UgKnVzYl9pbnRmLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvdXNiLmMtMTczLVxcdFxcdC5pbml0X3Jlc2V0ID0gbXQ3OTJ4dV9pbml0X3Jlc2V0LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3VzYi5jOjE3NDpcXHRcXHQucmVzZXQgPSBtdDc5MjF1X21hY19yZXNldCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS91c2IuYy0xNzUtXFx0fTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMTI6NDQ6MjUuMzQwMDg3OTQzWiIsIlNlcSI6MzUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU4MjczMDQ3OTMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgRnV6emluZyBTdHJhdGVneSBmb3IgdGhlIE1UNzkyMSBXaXJlbGVzcyBEcml2ZXIqKlxuXG5Pa2F5LCBhZnRlciByZXZpZXdpbmcgdGhlIGNoYW5nZXMsIEkndmUgemVyb2VkIGluIG9uIGBtdDc5MjFfcnVuX2Zpcm13YXJlYCBhcyB0aGUgcHJpbWUgdGFyZ2V0LiBJdCdzIGV4cG9ydGVkLCB3aGljaCBtYWtlcyBpdCBlYXNpbHkgYWNjZXNzaWJsZSwgYW5kLCBpbXBvcnRhbnRseSwgaXQncyB0aGUgZGlyZWN0IGVudHJ5IHBvaW50IGludG8gdGhlIG1vZGlmaWVkIGNvZGUg4oCTIGV4YWN0bHkgd2hhdCBJIHdhbnQgZm9yIGVmZmVjdGl2ZSBmdXp6aW5nLlxuXG5MZXQncyBicmVhayB0aGlzIGRvd24gZnVydGhlciBmb3Igb3B0aW1hbCBmdXp6aW5nOlxuXG4qICAgKipXb3J0aEZ1enppbmc6IFRydWUuKiogQWJzb2x1dGVseS4gVGhlIHBhdGNoIGRpcmVjdGx5IHRvdWNoZXMgdGhlIGZpcm13YXJlIGxvYWRpbmcgcHJvY2VzcywgYW5kIHRoYXQncyBhbHdheXMgYSBoaWdoLXZhbHVlIHRhcmdldC5cbiogICAqKkZvY3VzU3ltYm9sOiBgbXQ3OTIxX3J1bl9maXJtd2FyZWAqKi4gQ29uZmlybWVkLiBUaGlzIGZ1bmN0aW9uIGlzIG15IGtleSB0byB0cmlnZ2VyaW5nIHRoZSB2dWxuZXJhYmlsaXR5LlxuKiAgICoqRW5hYmxlQ29uZmlnczogYE1UNzkyMVVgLCBgTVQ3OTIxRWAsIGBNVDc5MjFTYCwgYE1BQzgwMjExYCwgYENGRzgwMjExYCoqLiBHb3QgaXQuIFRoZXNlIGNvbmZpZ3VyYXRpb25zIGFyZSBlc3NlbnRpYWwgdG8gZW5hYmxlIHRoZSBkcml2ZXIgaW4gcXVlc3Rpb24sIGVuc3VyaW5nIEkgY2FuIHRyaWdnZXIgdGhlIGRlc2lyZWQgY29kZSBwYXRocy4gTm90YWJseSwgYE1UNzkyMVVgIGlzIHBhcnRpY3VsYXJseSBpbnRlcmVzdGluZyBiZWNhdXNlIGl0J3MgdGhlIFVTQiB2YXJpYW50IGFuZCBJIGNhbiB1c2UgdGhlIFVTQiBnYWRnZXQgZnJhbWV3b3JrICh2aGNpKSB0byBmdXp6IGl0LCB3aGljaCBpcyBteSBwcmVmZXJyZWQgbWV0aG9kLlxuKiAgICoqUmVhc29uaW5nOioqIFRoZSBwYXRjaCdzIG1vZGlmaWNhdGlvbnMgdG8gYG10NzkyMV9sb2FkX2NsY2AsIHRoZSBmaXJtd2FyZSBsb2FkaW5nIGxvZ2ljLCBhcmUgY3JpdGljYWwuIFNwZWNpZmljYWxseSwgdGhlIGZhY3QgdGhhdCBgbXQ3OTIxX3J1bl9maXJtd2FyZWAgaXMgcmVhY2hhYmxlIGR1cmluZyBkZXZpY2UgaW5pdGlhbGl6YXRpb24gaXMgaWRlYWwuIFRoaXMgZ2l2ZXMgbWUgYSBwcmVkaWN0YWJsZSBlbnRyeSBwb2ludC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjAxMDcsIk91dHB1dFRva2VucyI6MTY3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTg2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDEyOjQ0OjMxLjE2NzM5NTY5NloiLCJTZXEiOjM2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIwMDkxMDMyOSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTVQ3OTIxVVwiLFxuICAgIFwiTVQ3OTIxRVwiLFxuICAgIFwiTVQ3OTIxU1wiLFxuICAgIFwiTUFDODAyMTFcIixcbiAgICBcIkNGRzgwMjExXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwibXQ3OTIxX3J1bl9maXJtd2FyZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIGZpcm13YXJlIGxvYWRpbmcgbG9naWMgKGBtdDc5MjFfbG9hZF9jbGNgKSBpbiB0aGUgTWVkaWF0ZWsgTVQ3OTIxIHdpcmVsZXNzIGRyaXZlci4gVGhpcyBkcml2ZXIgc3VwcG9ydHMgVVNCIChgTVQ3OTIxVWApLCB3aGljaCBjYW4gYmUgZnV6emVkIHZpYSB0aGUgVVNCIGdhZGdldCBmcmFtZXdvcmsgKHZoY2kpLiBUaGUgbW9kaWZpZWQgZnVuY3Rpb24gaXMgcmVhY2hhYmxlIGR1cmluZyBkZXZpY2UgaW5pdGlhbGl6YXRpb24gdmlhIGBtdDc5MjFfcnVuX2Zpcm13YXJlYC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJNVDc5MjFVXCIsXG4gICAgXCJNVDc5MjFFXCIsXG4gICAgXCJNVDc5MjFTXCIsXG4gICAgXCJNQUM4MDIxMVwiLFxuICAgIFwiQ0ZHODAyMTFcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJtdDc5MjFfcnVuX2Zpcm13YXJlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgZmlybXdhcmUgbG9hZGluZyBsb2dpYyAoYG10NzkyMV9sb2FkX2NsY2ApIGluIHRoZSBNZWRpYXRlayBNVDc5MjEgd2lyZWxlc3MgZHJpdmVyLiBUaGlzIGRyaXZlciBzdXBwb3J0cyBVU0IgKGBNVDc5MjFVYCksIHdoaWNoIGNhbiBiZSBmdXp6ZWQgdmlhIHRoZSBVU0IgZ2FkZ2V0IGZyYW1ld29yayAodmhjaSkuIFRoZSBtb2RpZmllZCBmdW5jdGlvbiBpcyByZWFjaGFibGUgZHVyaW5nIGRldmljZSBpbml0aWFsaXphdGlvbiB2aWEgYG10NzkyMV9ydW5fZmlybXdhcmVgLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+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-workflowq5x72[1] Phase: Succeeded StartedAt: 2026-07-25 12:44:42 +0000 UTC FinishedAt: 2026-07-25 12:44:42 +0000 UTC Input: nil Output: nil --------- Name: series-workflowq5x72[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-07-25 12:44:42 +0000 UTC FinishedAt: 2026-07-25 12:44:42 +0000 UTC Input: nil Output: nil --------- Name: series-workflowq5x72[2] Phase: Succeeded StartedAt: 2026-07-25 12:44:42 +0000 UTC FinishedAt: 2026-07-25 14:10:13 +0000 UTC Input: nil Output: nil --------- Name: series-workflowq5x72[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7921U","MT7921E","MT7921S","MAC80211","CFG80211"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7921_run_firmware"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7921U","MT7921E","MT7921S","MAC80211","CFG80211"],"series_id":"12ed6c34-1258-476c-9b79-49d84be06e2e","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-07-25 12:44:42 +0000 UTC FinishedAt: 2026-07-25 14:10:13 +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":["MT7921U","MT7921E","MT7921S","MAC80211","CFG80211"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7921_run_firmware"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7921U","MT7921E","MT7921S","MAC80211","CFG80211"],"series_id":"12ed6c34-1258-476c-9b79-49d84be06e2e","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowq5x72[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7921U","MT7921E","MT7921S","MAC80211","CFG80211"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7921_run_firmware"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7921U","MT7921E","MT7921S","MAC80211","CFG80211"],"series_id":"12ed6c34-1258-476c-9b79-49d84be06e2e","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-07-25 12:44:42 +0000 UTC FinishedAt: 2026-07-25 12:45:03 +0000 UTC Input: nil Output: nil --------- Name: series-workflowq5x72[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7921U","MT7921E","MT7921S","MAC80211","CFG80211"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7921_run_firmware"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7921U","MT7921E","MT7921S","MAC80211","CFG80211"],"series_id":"12ed6c34-1258-476c-9b79-49d84be06e2e","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-07-25 12:44:42 +0000 UTC FinishedAt: 2026-07-25 12:44:51 +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":["MT7921U","MT7921E","MT7921S","MAC80211","CFG80211"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowq5x72/series-workflowq5x72-convert-artifact-3396477617/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowq5x72[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7921U","MT7921E","MT7921S","MAC80211","CFG80211"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7921_run_firmware"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7921U","MT7921E","MT7921S","MAC80211","CFG80211"],"series_id":"12ed6c34-1258-476c-9b79-49d84be06e2e","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-07-25 12:45:03 +0000 UTC FinishedAt: 2026-07-25 13:36:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowq5x72[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7921U","MT7921E","MT7921S","MAC80211","CFG80211"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7921_run_firmware"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7921U","MT7921E","MT7921S","MAC80211","CFG80211"],"series_id":"12ed6c34-1258-476c-9b79-49d84be06e2e","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-07-25 12:45:03 +0000 UTC FinishedAt: 2026-07-25 13:36:00 +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:*f8491732-41a6-4718-b8cf-2391d96f2479,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-workflowq5x72/series-workflowq5x72-convert-artifact-3396477617/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": "b2977964-714a-465f-bce4-85fae38bba87", "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-workflowq5x72/series-workflowq5x72-build-action-3664167135/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowq5x72[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7921U","MT7921E","MT7921S","MAC80211","CFG80211"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7921_run_firmware"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7921U","MT7921E","MT7921S","MAC80211","CFG80211"],"series_id":"12ed6c34-1258-476c-9b79-49d84be06e2e","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-07-25 12:45:03 +0000 UTC FinishedAt: 2026-07-25 13:34:35 +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:*f8491732-41a6-4718-b8cf-2391d96f2479,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-workflowq5x72/series-workflowq5x72-convert-artifact-3396477617/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": "b2977964-714a-465f-bce4-85fae38bba87", "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-workflowq5x72/series-workflowq5x72-build-action-3664167135/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowq5x72[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7921U","MT7921E","MT7921S","MAC80211","CFG80211"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7921_run_firmware"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7921U","MT7921E","MT7921S","MAC80211","CFG80211"],"series_id":"12ed6c34-1258-476c-9b79-49d84be06e2e","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-07-25 13:36:00 +0000 UTC FinishedAt: 2026-07-25 13:36:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowq5x72[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7921U","MT7921E","MT7921S","MAC80211","CFG80211"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7921_run_firmware"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7921U","MT7921E","MT7921S","MAC80211","CFG80211"],"series_id":"12ed6c34-1258-476c-9b79-49d84be06e2e","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-07-25 13:36:00 +0000 UTC FinishedAt: 2026-07-25 13:36:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowq5x72[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7921U","MT7921E","MT7921S","MAC80211","CFG80211"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7921_run_firmware"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7921U","MT7921E","MT7921S","MAC80211","CFG80211"],"series_id":"12ed6c34-1258-476c-9b79-49d84be06e2e","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-07-25 13:36:00 +0000 UTC FinishedAt: 2026-07-25 13:36:21 +0000 UTC Input: nil Output: nil --------- Name: series-workflowq5x72[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7921U","MT7921E","MT7921S","MAC80211","CFG80211"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7921_run_firmware"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7921U","MT7921E","MT7921S","MAC80211","CFG80211"],"series_id":"12ed6c34-1258-476c-9b79-49d84be06e2e","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-07-25 13:36:00 +0000 UTC FinishedAt: 2026-07-25 13:36:13 +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":["MT7921U","MT7921E","MT7921S","MAC80211","CFG80211"],"series_id":"12ed6c34-1258-476c-9b79-49d84be06e2e","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowq5x72/series-workflowq5x72-convert-artifact-3298494212/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowq5x72[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7921U","MT7921E","MT7921S","MAC80211","CFG80211"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7921_run_firmware"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7921U","MT7921E","MT7921S","MAC80211","CFG80211"],"series_id":"12ed6c34-1258-476c-9b79-49d84be06e2e","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-07-25 13:36:21 +0000 UTC FinishedAt: 2026-07-25 13:38:52 +0000 UTC Input: nil Output: nil --------- Name: series-workflowq5x72[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7921U","MT7921E","MT7921S","MAC80211","CFG80211"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7921_run_firmware"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7921U","MT7921E","MT7921S","MAC80211","CFG80211"],"series_id":"12ed6c34-1258-476c-9b79-49d84be06e2e","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-07-25 13:36:21 +0000 UTC FinishedAt: 2026-07-25 13:38:42 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*b2977964-714a-465f-bce4-85fae38bba87,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-workflowq5x72/series-workflowq5x72-build-action-3664167135/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-workflowq5x72[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7921U","MT7921E","MT7921S","MAC80211","CFG80211"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7921_run_firmware"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7921U","MT7921E","MT7921S","MAC80211","CFG80211"],"series_id":"12ed6c34-1258-476c-9b79-49d84be06e2e","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-07-25 13:38:52 +0000 UTC FinishedAt: 2026-07-25 13:38:52 +0000 UTC Input: nil Output: nil --------- Name: series-workflowq5x72[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7921U","MT7921E","MT7921S","MAC80211","CFG80211"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7921_run_firmware"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7921U","MT7921E","MT7921S","MAC80211","CFG80211"],"series_id":"12ed6c34-1258-476c-9b79-49d84be06e2e","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-07-25 13:38:52 +0000 UTC FinishedAt: 2026-07-25 13:38:52 +0000 UTC Input: nil Output: nil --------- Name: series-workflowq5x72[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7921U","MT7921E","MT7921S","MAC80211","CFG80211"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7921_run_firmware"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7921U","MT7921E","MT7921S","MAC80211","CFG80211"],"series_id":"12ed6c34-1258-476c-9b79-49d84be06e2e","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-07-25 13:38:52 +0000 UTC FinishedAt: 2026-07-25 14:05:13 +0000 UTC Input: nil Output: nil --------- Name: series-workflowq5x72[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7921U","MT7921E","MT7921S","MAC80211","CFG80211"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7921_run_firmware"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7921U","MT7921E","MT7921S","MAC80211","CFG80211"],"series_id":"12ed6c34-1258-476c-9b79-49d84be06e2e","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-07-25 13:38:52 +0000 UTC FinishedAt: 2026-07-25 14:05:13 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*true,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Patched,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*f8491732-41a6-4718-b8cf-2391d96f2479,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-workflowq5x72/series-workflowq5x72-convert-artifact-3298494212/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": "8c78c365-803d-4e3c-a4af-f62b3d1df6da", "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-workflowq5x72/series-workflowq5x72-build-action-2784035088/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowq5x72[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7921U","MT7921E","MT7921S","MAC80211","CFG80211"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7921_run_firmware"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7921U","MT7921E","MT7921S","MAC80211","CFG80211"],"series_id":"12ed6c34-1258-476c-9b79-49d84be06e2e","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-07-25 13:38:52 +0000 UTC FinishedAt: 2026-07-25 14:05: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:*f8491732-41a6-4718-b8cf-2391d96f2479,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-workflowq5x72/series-workflowq5x72-convert-artifact-3298494212/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": "8c78c365-803d-4e3c-a4af-f62b3d1df6da", "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-workflowq5x72/series-workflowq5x72-build-action-2784035088/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowq5x72[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7921U","MT7921E","MT7921S","MAC80211","CFG80211"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7921_run_firmware"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7921U","MT7921E","MT7921S","MAC80211","CFG80211"],"series_id":"12ed6c34-1258-476c-9b79-49d84be06e2e","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-07-25 14:05:13 +0000 UTC FinishedAt: 2026-07-25 14:05:13 +0000 UTC Input: nil Output: nil --------- Name: series-workflowq5x72[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7921U","MT7921E","MT7921S","MAC80211","CFG80211"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7921_run_firmware"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7921U","MT7921E","MT7921S","MAC80211","CFG80211"],"series_id":"12ed6c34-1258-476c-9b79-49d84be06e2e","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-07-25 14:05:13 +0000 UTC FinishedAt: 2026-07-25 14:05:13 +0000 UTC Input: nil Output: nil --------- Name: series-workflowq5x72[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7921U","MT7921E","MT7921S","MAC80211","CFG80211"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7921_run_firmware"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7921U","MT7921E","MT7921S","MAC80211","CFG80211"],"series_id":"12ed6c34-1258-476c-9b79-49d84be06e2e","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-07-25 14:05:13 +0000 UTC FinishedAt: 2026-07-25 14:07:26 +0000 UTC Input: nil Output: nil --------- Name: series-workflowq5x72[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7921U","MT7921E","MT7921S","MAC80211","CFG80211"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7921_run_firmware"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7921U","MT7921E","MT7921S","MAC80211","CFG80211"],"series_id":"12ed6c34-1258-476c-9b79-49d84be06e2e","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-07-25 14:05:13 +0000 UTC FinishedAt: 2026-07-25 14:07:16 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*8c78c365-803d-4e3c-a4af-f62b3d1df6da,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-workflowq5x72/series-workflowq5x72-build-action-2784035088/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-workflowq5x72[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7921U","MT7921E","MT7921S","MAC80211","CFG80211"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7921_run_firmware"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7921U","MT7921E","MT7921S","MAC80211","CFG80211"],"series_id":"12ed6c34-1258-476c-9b79-49d84be06e2e","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-07-25 14:07:26 +0000 UTC FinishedAt: 2026-07-25 14:10:13 +0000 UTC Input: nil Output: nil --------- Name: series-workflowq5x72[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7921U","MT7921E","MT7921S","MAC80211","CFG80211"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7921_run_firmware"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7921U","MT7921E","MT7921S","MAC80211","CFG80211"],"series_id":"12ed6c34-1258-476c-9b79-49d84be06e2e","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-07-25 14:07:26 +0000 UTC FinishedAt: 2026-07-25 14:10:13 +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":["mt7921_run_firmware"],"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:*b2977964-714a-465f-bce4-85fae38bba87,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*8c78c365-803d-4e3c-a4af-f62b3d1df6da,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-workflowq5x72/series-workflowq5x72-build-action-3664167135/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-workflowq5x72/series-workflowq5x72-build-action-2784035088/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowq5x72[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7921U","MT7921E","MT7921S","MAC80211","CFG80211"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7921_run_firmware"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7921U","MT7921E","MT7921S","MAC80211","CFG80211"],"series_id":"12ed6c34-1258-476c-9b79-49d84be06e2e","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-07-25 14:07:26 +0000 UTC FinishedAt: 2026-07-25 14:07:36 +0000 UTC Input: nil Output: nil --------- Name: series-workflowq5x72[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7921U","MT7921E","MT7921S","MAC80211","CFG80211"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7921_run_firmware"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7921U","MT7921E","MT7921S","MAC80211","CFG80211"],"series_id":"12ed6c34-1258-476c-9b79-49d84be06e2e","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-07-25 14:07:26 +0000 UTC FinishedAt: 2026-07-25 14:07:31 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7921_run_firmware"],"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-workflowq5x72/series-workflowq5x72-convert-artifact-3110973197/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowq5x72[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7921U","MT7921E","MT7921S","MAC80211","CFG80211"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7921_run_firmware"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7921U","MT7921E","MT7921S","MAC80211","CFG80211"],"series_id":"12ed6c34-1258-476c-9b79-49d84be06e2e","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-07-25 14:07:26 +0000 UTC FinishedAt: 2026-07-25 14:07:26 +0000 UTC Input: nil Output: nil --------- Name: series-workflowq5x72[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7921U","MT7921E","MT7921S","MAC80211","CFG80211"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7921_run_firmware"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7921U","MT7921E","MT7921S","MAC80211","CFG80211"],"series_id":"12ed6c34-1258-476c-9b79-49d84be06e2e","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-07-25 14:07:26 +0000 UTC FinishedAt: 2026-07-25 14:07:26 +0000 UTC Input: nil Output: nil --------- Name: series-workflowq5x72[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7921U","MT7921E","MT7921S","MAC80211","CFG80211"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7921_run_firmware"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7921U","MT7921E","MT7921S","MAC80211","CFG80211"],"series_id":"12ed6c34-1258-476c-9b79-49d84be06e2e","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-07-25 14:07:26 +0000 UTC FinishedAt: 2026-07-25 14:07:26 +0000 UTC Input: nil Output: nil --------- Name: series-workflowq5x72[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7921U","MT7921E","MT7921S","MAC80211","CFG80211"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7921_run_firmware"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7921U","MT7921E","MT7921S","MAC80211","CFG80211"],"series_id":"12ed6c34-1258-476c-9b79-49d84be06e2e","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-07-25 14:07:36 +0000 UTC FinishedAt: 2026-07-25 14:10:13 +0000 UTC Input: nil Output: nil --------- Name: series-workflowq5x72[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7921U","MT7921E","MT7921S","MAC80211","CFG80211"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7921_run_firmware"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7921U","MT7921E","MT7921S","MAC80211","CFG80211"],"series_id":"12ed6c34-1258-476c-9b79-49d84be06e2e","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-07-25 14:07:36 +0000 UTC FinishedAt: 2026-07-25 14:09:52 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*b2977964-714a-465f-bce4-85fae38bba87,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*8c78c365-803d-4e3c-a4af-f62b3d1df6da,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-workflowq5x72/series-workflowq5x72-build-action-3664167135/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-workflowq5x72/series-workflowq5x72-build-action-2784035088/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-workflowq5x72/series-workflowq5x72-convert-artifact-3110973197/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,}