Name: series-workflowvtj7l Phase: Succeeded StartedAt: 2026-07-25 08:35:03 +0000 UTC FinishedAt: 2026-07-25 13:38:30 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvtj7l[0] Phase: Succeeded StartedAt: 2026-07-25 08:35:03 +0000 UTC FinishedAt: 2026-07-25 09:00:26 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvtj7l[0].run-triage Phase: Succeeded StartedAt: 2026-07-25 08:35:03 +0000 UTC FinishedAt: 2026-07-25 09:00:26 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git", "commit_hash": "04026c998c24ac47eb76886b9790c5710b603eb4", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BRIDGE_MRP" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git", "commit_hash": "04026c998c24ac47eb76886b9790c5710b603eb4", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BRIDGE_MRP" ], "series_id": "32962ccc-95a9-4841-8ff7-1294892e86a5" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "br_mrp_start_test", "br_mrp_add", "br_mrp_set_ring_role", "br_mrp_set_ring_state", "br_mrp_start_in_test", "br_mrp_set_in_role", "br_mrp_set_in_state", "br_mrp_set_port_state", "br_mrp_set_port_role", "br_mrp_del", "br_mrp_rcv", "br_mrp_process" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDA4OjU5PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JSSURHRV9NUlAmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDticl9tcnBfc3RhcnRfdGVzdCYjMzQ7LAogICAgJiMzNDticl9tcnBfYWRkJiMzNDssCiAgICAmIzM0O2JyX21ycF9zZXRfcmluZ19yb2xlJiMzNDssCiAgICAmIzM0O2JyX21ycF9zZXRfcmluZ19zdGF0ZSYjMzQ7LAogICAgJiMzNDticl9tcnBfc3RhcnRfaW5fdGVzdCYjMzQ7LAogICAgJiMzNDticl9tcnBfc2V0X2luX3JvbGUmIzM0OywKICAgICYjMzQ7YnJfbXJwX3NldF9pbl9zdGF0ZSYjMzQ7LAogICAgJiMzNDticl9tcnBfc2V0X3BvcnRfc3RhdGUmIzM0OywKICAgICYjMzQ7YnJfbXJwX3NldF9wb3J0X3JvbGUmIzM0OywKICAgICYjMzQ7YnJfbXJwX2RlbCYjMzQ7LAogICAgJiMzNDticl9tcnBfcmN2JiMzNDssCiAgICAmIzM0O2JyX21ycF9wcm9jZXNzJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGFuIGluY29ycmVjdCBzaXplIGNhbGN1bGF0aW9uIGluIGBicl9tcnBfYWxsb2NfdGVzdF9za2JgIHdoZXJlIGBzaXplb2Yob3VpKWAgKHBvaW50ZXIgc2l6ZSkgd2FzIHVzZWQgaW5zdGVhZCBvZiBgc2l6ZW9mKCpvdWkpYCAoc3RydWN0IHNpemUpLiBUaGlzIGFmZmVjdHMgdGhlIGxlbmd0aCBvZiB0aGUgYWxsb2NhdGVkL3BvcHVsYXRlZCBUTFYgaW4gTVJQIHRlc3QgcGFja2V0cy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBicmlkZ2UgTVJQIHByb3RvY29sIGltcGxlbWVudGF0aW9uIGFuZCBzaG91bGQgYmUgZnV6emVkIHRvIGVuc3VyZSBjb3JyZWN0IHBhY2tldCBjb25zdHJ1Y3Rpb24gYW5kIGhhbmRsaW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDA4OjU5PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgYzFiMDVlZDIzNDM2N2QxN2E2ZTIzMjA1ODNiZjA3ODhlM2EwNzEwOVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBTYXQgSnVsIDI1IDA4OjU5OjEyIDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL25ldC9icmlkZ2UvYnJfbXJwLmMgYi9uZXQvYnJpZGdlL2JyX21ycC5jXG5pbmRleCAzZjcxMjZhN2Q3MjAwMy4uMTc5ZDI0NzBiNzI0ODggMTAwNjQ0XG4tLS0gYS9uZXQvYnJpZGdlL2JyX21ycC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvYnJpZGdlL2JyX21ycC5jXG5AQCAtMjE1LDcgJiM0MzsyMTUsNyBAQCBzdGF0aWMgc3RydWN0IHNrX2J1ZmYgKmJyX21ycF9hbGxvY190ZXN0X3NrYihzdHJ1Y3QgYnJfbXJwICptcnAsXG4gXHRcdHN0cnVjdCBicl9tcnBfb3VpX2hkciAqb3VpID0gTlVMTDtcbiBcdFx0dTggbGVuZ3RoO1xuIFxuLVx0XHRsZW5ndGggPSBzaXplb2YoKnN1Yl9vcHQpICYjNDM7IHNpemVvZigqc3ViX3RsdikgJiM0Mzsgc2l6ZW9mKG91aSkgJiM0MztcbiYjNDM7XHRcdGxlbmd0aCA9IHNpemVvZigqc3ViX29wdCkgJiM0Mzsgc2l6ZW9mKCpzdWJfdGx2KSAmIzQzOyBzaXplb2YoKm91aSkgJiM0MztcbiBcdFx0XHRNUlBfT1BUX1BBRERJTkc7XG4gXHRcdGJyX21ycF9za2JfdGx2KHNrYiwgQlJfTVJQX1RMVl9IRUFERVJfT1BUSU9OLCBsZW5ndGgpO1xuIFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDA4OjU5PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjFtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtCUklER0VfTVJQJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7YnJfbXJwX3N0YXJ0X3Rlc3QmIzM0OywKICAgICYjMzQ7YnJfbXJwX2FkZCYjMzQ7LAogICAgJiMzNDticl9tcnBfc2V0X3Jpbmdfcm9sZSYjMzQ7LAogICAgJiMzNDticl9tcnBfc2V0X3Jpbmdfc3RhdGUmIzM0OywKICAgICYjMzQ7YnJfbXJwX3N0YXJ0X2luX3Rlc3QmIzM0OywKICAgICYjMzQ7YnJfbXJwX3NldF9pbl9yb2xlJiMzNDssCiAgICAmIzM0O2JyX21ycF9zZXRfaW5fc3RhdGUmIzM0OywKICAgICYjMzQ7YnJfbXJwX3NldF9wb3J0X3N0YXRlJiMzNDssCiAgICAmIzM0O2JyX21ycF9zZXRfcG9ydF9yb2xlJiMzNDssCiAgICAmIzM0O2JyX21ycF9kZWwmIzM0OywKICAgICYjMzQ7YnJfbXJwX3JjdiYjMzQ7LAogICAgJiMzNDticl9tcnBfcHJvY2VzcyYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhbiBpbmNvcnJlY3Qgc2l6ZSBjYWxjdWxhdGlvbiBpbiBgYnJfbXJwX2FsbG9jX3Rlc3Rfc2tiYCB3aGVyZSBgc2l6ZW9mKG91aSlgIChwb2ludGVyIHNpemUpIHdhcyB1c2VkIGluc3RlYWQgb2YgYHNpemVvZigqb3VpKWAgKHN0cnVjdCBzaXplKS4gVGhpcyBhZmZlY3RzIHRoZSBsZW5ndGggb2YgdGhlIGFsbG9jYXRlZC9wb3B1bGF0ZWQgVExWIGluIE1SUCB0ZXN0IHBhY2tldHMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgYnJpZGdlIE1SUCBwcm90b2NvbCBpbXBsZW1lbnRhdGlvbiBhbmQgc2hvdWxkIGJlIGZ1enplZCB0byBlbnN1cmUgY29ycmVjdCBwYWNrZXQgY29uc3RydWN0aW9uIGFuZCBoYW5kbGluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IGMxYjA1ZWQyMzQzNjdkMTdhNmUyMzIwNTgzYmYwNzg4ZTNhMDcxMDkKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgU2F0IEp1bCAyNSAwODo1OToxMiAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL25ldC9icmlkZ2UvYnJfbXJwLmMgYi9uZXQvYnJpZGdlL2JyX21ycC5jCmluZGV4IDNmNzEyNmE3ZDcyMDAzLi4xNzlkMjQ3MGI3MjQ4OCAxMDA2NDQKLS0tIGEvbmV0L2JyaWRnZS9icl9tcnAuYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvYnJpZGdlL2JyX21ycC5jCkBAIC0yMTUsNyAmIzQzOzIxNSw3IEBAIHN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqYnJfbXJwX2FsbG9jX3Rlc3Rfc2tiKHN0cnVjdCBicl9tcnAgKm1ycCwKIAkJc3RydWN0IGJyX21ycF9vdWlfaGRyICpvdWkgPSBOVUxMOwogCQl1OCBsZW5ndGg7CiAKLQkJbGVuZ3RoID0gc2l6ZW9mKCpzdWJfb3B0KSAmIzQzOyBzaXplb2YoKnN1Yl90bHYpICYjNDM7IHNpemVvZihvdWkpICYjNDM7CiYjNDM7CQlsZW5ndGggPSBzaXplb2YoKnN1Yl9vcHQpICYjNDM7IHNpemVvZigqc3ViX3RsdikgJiM0Mzsgc2l6ZW9mKCpvdWkpICYjNDM7CiAJCQlNUlBfT1BUX1BBRERJTkc7CiAJCWJyX21ycF9za2JfdGx2KHNrYiwgQlJfTVJQX1RMVl9IRUFERVJfT1BUSU9OLCBsZW5ndGgpOwogCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDA4OjU5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIwOTQKCQkJCQkJCW91dHB1dDogNDEKCQkJCQkJCXRob3VnaHRzOiAxMDgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgQnJpZGdlIE1SUCBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTt2ZSBnb3QgdGhpcyBwYXRjaCBhZmZlY3RpbmcgYG5ldC9icmlkZ2UvYnJfbXJwLmNgLCBhbmQgaXQgbG9va3MgbGlrZSBhIHNpemUgY2FsY3VsYXRpb24gYWRqdXN0bWVudCBpcyB0aGUga2V5IGhlcmUuIFNwZWNpZmljYWxseSwgdGhlIGNoYW5nZSBpbiBgYnJfbXJwX2FsbG9jX3Rlc3Rfc2tiYCBmcm9tIGBzaXplb2Yob3VpKWAgdG8gYHNpemVvZigqb3VpKWAgaW1tZWRpYXRlbHkgZmxhZ3MgbXkgYXR0ZW50aW9uLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UsIGRlZmluaXRlbHkgaW1wYWN0aW5nIHRoZSBsZW5ndGggb2YgYWxsb2NhdGVkIG9yIGNhbGN1bGF0ZWQgYnVmZmVycywgc28gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGltcGxpY2F0aW9ucyB0aG9yb3VnaGx5LgoKTXkgbmV4dCBzdGVwIGlzIGNsZWFyOiBJIG5lZWQgdG8gZGlnIGludG8gdGhlIHJlbGV2YW50IGZ1bmN0aW9ucyB3aXRoaW4gYG5ldC9icmlkZ2UvYnJfbXJwLmNgLiBJJiMzOTtsbCBiZSBtZXRpY3Vsb3VzbHkgZXhhbWluaW5nIGBicl9tcnBfYWxsb2NfdGVzdF9za2JgIGFuZCBgYnJfbXJwX3NrYl90bHZgLCBhcyB0aG9zZSBhcmUgdGhlIGNvcmUgYXJlYXMgd2hlcmUgdGhpcyBzaXplIG1vZGlmaWNhdGlvbiB3aWxsIG1hbmlmZXN0IGFuZCBwb3RlbnRpYWxseSBpbXBhY3QgYmVoYXZpb3IuIEdvdHRhIGlkZW50aWZ5ICp3aHkqIHRoaXMgY2hhbmdlIHdhcyBtYWRlIGFuZCB3aGF0IGNvbnNlcXVlbmNlcyBpdCBicmluZ3MuIFVuZGVyc3RhbmRpbmcgaG93IHRoZSBidWZmZXIgc2l6ZSBpbXBhY3RzIGRhdGEgc3RydWN0dXJlcyBhbmQgcHJvY2Vzc2luZyBpcyBwYXJhbW91bnQsIGVzcGVjaWFsbHkgd2hlbiBkZWFsaW5nIHdpdGggYnJpZGdpbmcgcHJvdG9jb2xzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDA4OjU5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2JyX21ycF9hbGxvY190ZXN0X3NrYiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9icmlkZ2UvYnJfbXJwLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L2JyaWRnZS9icl9tcnAuYz0xNzE9c3RhdGljIHZvaWQgYnJfbXJwX3NrYl9jb21tb24oc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGJyX21ycCAqbXJwKVxuLS1cbm5ldC9icmlkZ2UvYnJfbXJwLmMtMTgxLVxubmV0L2JyaWRnZS9icl9tcnAuYzoxODI6c3RhdGljIHN0cnVjdCBza19idWZmICpicl9tcnBfYWxsb2NfdGVzdF9za2Ioc3RydWN0IGJyX21ycCAqbXJwLFxubmV0L2JyaWRnZS9icl9tcnAuYy0xODMtXHRcdFx0XHRcdCAgICAgc3RydWN0IG5ldF9icmlkZ2VfcG9ydCAqcCxcbi0tXG5uZXQvYnJpZGdlL2JyX21ycC5jPTI3OT1zdGF0aWMgdm9pZCBicl9tcnBfdGVzdF93b3JrX2V4cGlyZWQoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxuLS1cbm5ldC9icmlkZ2UvYnJfbXJwLmMtMzExLVx0XHRpZiAoIW1ycC1cdTAwM2V0ZXN0X21vbml0b3IpIHtcbm5ldC9icmlkZ2UvYnJfbXJwLmM6MzEyOlx0XHRcdHNrYiA9IGJyX21ycF9hbGxvY190ZXN0X3NrYihtcnAsIHAsXG5uZXQvYnJpZGdlL2JyX21ycC5jLTMxMy1cdFx0XHRcdFx0XHQgICAgQlJfTVJQX1BPUlRfUk9MRV9QUklNQVJZKTtcbi0tXG5uZXQvYnJpZGdlL2JyX21ycC5jLTMyNy1cdFx0aWYgKCFtcnAtXHUwMDNldGVzdF9tb25pdG9yKSB7XG5uZXQvYnJpZGdlL2JyX21ycC5jOjMyODpcdFx0XHRza2IgPSBicl9tcnBfYWxsb2NfdGVzdF9za2IobXJwLCBwLFxubmV0L2JyaWRnZS9icl9tcnAuYy0zMjktXHRcdFx0XHRcdFx0ICAgIEJSX01SUF9QT1JUX1JPTEVfU0VDT05EQVJZKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAwODo1OTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyODMwCgkJCQkJCQlvdXRwdXQ6IDMwCgkJCQkJCQl0aG91Z2h0czogNTgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBNUlAgQWxsb2NhdGlvbiBUZXN0KioKCk9rYXksIHNvIGBicl9tcnBfYWxsb2NfdGVzdF9za2JgIGlzIHRyaWdnZXJlZCBieSBgYnJfbXJwX3Rlc3Rfd29ya19leHBpcmVkYC4gVGhhdCYjMzk7cyBwYXJ0IG9mIHRoZSBNZWRpYSBSZWR1bmRhbmN5IFByb3RvY29sIGJyaWRnZSBpbXBsZW1lbnRhdGlvbi4gTWFrZXMgc2Vuc2UuIEJlZm9yZSBJIGRpZyB0b28gZGVlcCBpbnRvIHRoZSBjb2RlIGl0c2VsZiwgSSYjMzk7bSBnb2luZyB0byB0YWtlIGEgcXVpY2sgbG9vayBhdCB0aGUgS2NvbmZpZyBmaWxlLiBJIG5lZWQgdG8gbWFrZSBzdXJlIE1SUCBpcyBhY3R1YWxseSBlbmFibGVkLCBhbmQgY2hlY2sgYW55IGNvbmZpZ3VyYXRpb24gb3B0aW9ucyByZWxhdGVkIHRvIGl0LiBVbmRlcnN0YW5kaW5nIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgd2lsbCBnaXZlIG1lIGEgYmV0dGVyIG92ZXJ2aWV3IG9mIHdoYXQgdG8gbG9vayBmb3IgaW4gdGhlIGFsbG9jYXRlZCBjb2RlLiBJdCYjMzk7bGwgZ2l2ZSBtZSBhIGZyYW1ld29yayB0byB1bmRlcnN0YW5kIHdoYXQgdGhlIGNvZGUgaXMgbWVhbnQgdG8gYWNjb21wbGlzaC4gTGV0IG1lIHF1aWNrbHkgc2NhbiB0aGF0IEtjb25maWcuLi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAwODo1OTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgQlJJREdFX01SUCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9icmlkZ2UvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvYnJpZGdlL0tjb25maWc9NTA9Y29uZmlnIEJSSURHRV9WTEFOX0ZJTFRFUklOR1xuLS1cbm5ldC9icmlkZ2UvS2NvbmZpZy02My1cbm5ldC9icmlkZ2UvS2NvbmZpZzo2NDpjb25maWcgQlJJREdFX01SUFxubmV0L2JyaWRnZS9LY29uZmlnLTY1LVx0Ym9vbCBcJiMzNDtNUlAgcHJvdG9jb2xcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAwODo1OTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMTQwCgkJCQkJCQlvdXRwdXQ6IDI5CgkJCQkJCQl0aG91Z2h0czogMTMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipBbmFseXppbmcgRGVwZW5kZW5jaWVzIGZvciBCUklER0VfTVJQKioKCk9rYXksIHNvIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBhcmNoaXRlY3R1cmUgYXJvdW5kIGBCUklER0VfTVJQYC4gSSBpbW1lZGlhdGVseSBzdGFydCB0aGlua2luZyBhYm91dCBpdHMgZGVwZW5kZW5jaWVzLiBXaGF0IG90aGVyIG1vZHVsZXMsIHNlcnZpY2VzLCBkYXRhIHN0cnVjdHVyZXMsIG9yIGV2ZW4gZXh0ZXJuYWwgc3lzdGVtcyBkb2VzIHRoaXMgcGFydGljdWxhciBwaWVjZSBvZiBjb2RlIHJlbHkgdXBvbj8gSSYjMzk7bSBlc3NlbnRpYWxseSB0cmFjaW5nIHRoZSBjYWxsIGdyYXBoLCBidXQgZnJvbSB0aGUgcGVyc3BlY3RpdmUgb2YgaG93IE1SUCAoTWF0ZXJpYWwgUmVxdWlyZW1lbnRzIFBsYW5uaW5nKSBpcyBzcGVjaWZpY2FsbHkgYmVpbmcgaGFuZGxlZCB3aXRoaW4gdGhlIGJyaWRnZS4gSXMgaXQgYSBjb3JlIGNhbGN1bGF0aW9uIGVuZ2luZSwgYSBkYXRhIGFkYXB0ZXIsIGFuIGludGVncmF0aW9uIGxheWVyLCBvciBzb21ldGhpbmcgZWxzZSBlbnRpcmVseT8gS25vd2luZyB0aGUgZGVwZW5kZW5jaWVzIHdpbGwgaGVscCBtZSBpbW1lZGlhdGVseSBncmFzcCBpdHMgaW1wYWN0IGFuZCBwaW5wb2ludCBwb3RlbnRpYWwgYXJlYXMgZm9yIG9wdGltaXphdGlvbiwgZGVidWdnaW5nLCBvciBmdXR1cmUgaW50ZWdyYXRpb24gZWZmb3J0cy4gVGhpcyBpcyB0aGUgZmlyc3QgcXVlc3Rpb24gSSBuZWVkIHRvIGFuc3dlci4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAwODo1OTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtCUklER0VfTVJQJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L2JyaWRnZS9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9icmlkZ2UvS2NvbmZpZz01MD1jb25maWcgQlJJREdFX1ZMQU5fRklMVEVSSU5HXG4tLVxubmV0L2JyaWRnZS9LY29uZmlnLTYzLVxubmV0L2JyaWRnZS9LY29uZmlnOjY0OmNvbmZpZyBCUklER0VfTVJQXG5uZXQvYnJpZGdlL0tjb25maWctNjUtXHRib29sIFwmIzM0O01SUCBwcm90b2NvbFwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDA4OjU5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM0MTQKCQkJCQkJCW91dHB1dDogMzMKCQkJCQkJCXRob3VnaHRzOiAxOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBhIHN1bW1hcnkgb2YgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyByZXF1ZXN0ZWQ6CgoqKk5hdmlnYXRpbmcgdGhlIEtlcm5lbCYjMzk7cyBOZXR3b3JrIEJyaWRnZSBDb25maWd1cmF0aW9uKioKCk9rYXksIHNvIEkmIzM5O20gZGlnZ2luZyBpbnRvIHRoZSBuZXR3b3JrIGJyaWRnZSBjb25maWd1cmF0aW9uLCBzcGVjaWZpY2FsbHkgd2l0aGluIHRoZSBrZXJuZWwuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byB6ZXJvIGluIG9uIGBuZXQvYnJpZGdlL0tjb25maWdgLiBUaGF0JiMzOTtzIHdoZXJlIEkmIzM5O2QgZXhwZWN0IHRvIGZpbmQgdGhlIGNvcmUgY29uZmlndXJhdGlvbiBvcHRpb25zIHJlbGF0ZWQgdG8gYnJpZGdpbmcuIEdpdmVuIG15IGZhbWlsaWFyaXR5IHdpdGggdGhlIGtlcm5lbCYjMzk7cyBzdHJ1Y3R1cmUsIEkgaW5zdGluY3RpdmVseSBnbyBzdHJhaWdodCB0byB0aGUgY29uZmlndXJhdGlvbiBmaWxlcy4gQW5kIHRvIHN0YXJ0LCBsZXQmIzM5O3MgbG9vayBhcm91bmQgbGluZSA2NCAtIHRoYXQgc2VlbXMgbGlrZSBhIHJlYXNvbmFibGUgcGxhY2UgdG8gc3RhcnQsIGFzIG9mdGVuIGltcG9ydGFudCBhbmQgZnVuZGFtZW50YWwgY29uZmlnIG9wdGlvbnMgYXJlIGluIHRoYXQgYXJlYSBvZiBhIGZpbGUuIFRoaXMmIzM5O2xsIGxpa2VseSBjb250YWluIHRoZSBtYWluIGBjb25maWdgIG9wdGlvbnMgYW5kIHBvc3NpYmx5IGRlcGVuZGVuY2llcyBmb3IgYnJpZGdlIGZ1bmN0aW9uYWxpdHksIGFuZCB0aGF0JiMzOTtzIGV4YWN0bHkgd2hhdCBJIG5lZWQgdG8gdW5kZXJzdGFuZC4gTGV0JiMzOTtzIHNlZSB3aGF0JiMzOTtzIHRoZXJlLi4uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDA4OjU5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7bmV0L2JyaWRnZS9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogNTAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMzAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICA1MDpcdGNvbmZpZyBCUklER0VfVkxBTl9GSUxURVJJTkdcbiAgNTE6XHRcdGJvb2wgXCYjMzQ7VkxBTiBmaWx0ZXJpbmdcJiMzNDtcbiAgNTI6XHRcdGRlcGVuZHMgb24gQlJJREdFXG4gIDUzOlx0XHRkZXBlbmRzIG9uIFZMQU5fODAyMVFcbiAgNTQ6XHRcdGRlZmF1bHQgblxuICA1NTpcdFx0aGVscFxuICA1NjpcdFx0ICBJZiB5b3Ugc2F5IFkgaGVyZSwgdGhlbiB0aGUgRXRoZXJuZXQgYnJpZGdlIHdpbGwgYmUgYWJsZSBzZWxlY3RpdmVseVxuICA1NzpcdFx0ICByZWNlaXZlIGFuZCBmb3J3YXJkIHRyYWZmaWMgYmFzZWQgb24gVkxBTiBpbmZvcm1hdGlvbiBpbiB0aGUgcGFja2V0XG4gIDU4Olx0XHQgIGFueSBWTEFOIGluZm9ybWF0aW9uIGNvbmZpZ3VyZWQgb24gdGhlIGJyaWRnZSBwb3J0IG9yIGJyaWRnZSBkZXZpY2UuXG4gIDU5Olx0XG4gIDYwOlx0XHQgIFNheSBOIHRvIGV4Y2x1ZGUgdGhpcyBzdXBwb3J0IGFuZCByZWR1Y2UgdGhlIGJpbmFyeSBzaXplLlxuICA2MTpcdFxuICA2MjpcdFx0ICBJZiB1bnN1cmUsIHNheSBZLlxuICA2MzpcdFxuICA2NDpcdGNvbmZpZyBCUklER0VfTVJQXG4gIDY1Olx0XHRib29sIFwmIzM0O01SUCBwcm90b2NvbFwmIzM0O1xuICA2NjpcdFx0ZGVwZW5kcyBvbiBCUklER0VcbiAgNjc6XHRcdGRlZmF1bHQgblxuICA2ODpcdFx0aGVscFxuICA2OTpcdFx0ICBJZiB5b3Ugc2F5IFkgaGVyZSwgdGhlbiB0aGUgRXRoZXJuZXQgYnJpZGdlIHdpbGwgYmUgYWJsZSB0byBydW4gTVJQXG4gIDcwOlx0XHQgIHByb3RvY29sIHRvIGRldGVjdCBsb29wc1xuICA3MTpcdFxuICA3MjpcdFx0ICBTYXkgTiB0byBleGNsdWRlIHRoaXMgc3VwcG9ydCBhbmQgcmVkdWNlIHRoZSBiaW5hcnkgc2l6ZS5cbiAgNzM6XHRcbiAgNzQ6XHRcdCAgSWYgdW5zdXJlLCBzYXkgTi5cbiAgNzU6XHRcbiAgNzY6XHRjb25maWcgQlJJREdFX0NGTVxuICA3NzpcdFx0Ym9vbCBcJiMzNDtDRk0gcHJvdG9jb2xcJiMzNDtcbiAgNzg6XHRcdGRlcGVuZHMgb24gQlJJREdFXG4gIDc5Olx0XHRoZWxwXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDA4OjU5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM5OTMKCQkJCQkJCW91dHB1dDogMzUKCQkJCQkJCXRob3VnaHRzOiA1NgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4KCioqRGVjb2RpbmcgdGhlIE1SUCBDb25maWd1cmF0aW9uIERlcGVuZGVuY3kqKgoKUmlnaHQsIHNvIHRoZSBjb25maWd1cmF0aW9uIGluIHF1ZXN0aW9uIGlzIGBCUklER0VfTVJQYC4gVGhhdCBpbW1lZGlhdGVseSB0ZWxscyBtZSBpdCYjMzk7cyByZWxhdGVkIHRvIHRoZSBicmlkZ2UgZnVuY3Rpb25hbGl0eSwgc3BlY2lmaWNhbGx5IHRoZSBNUlAgYXNwZWN0cy4gIEl0IGV4cGxpY2l0bHkgc3RhdGVzIGEgZGVwZW5kZW5jeSBvbiBgQlJJREdFYC4gVGhhdCYjMzk7cyBub3Qgc3VycHJpc2luZzsgTVJQIGxpa2VseSByZXF1aXJlcyB0aGUgY29yZSBicmlkZ2luZyBjb2RlIHRvIGJlIGZ1bmN0aW9uYWwgZmlyc3QuIE5vIHN1cnByaXNlcyB0aGVyZS4KCk5leHQsIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoZXJlIHRoZSBNUlAgY29kZSBpcyBraWNraW5nIGluLiBUaGUgbWVudGlvbiBvZiB0aGUgZnVuY3Rpb24gYGJyX21ycF9hbGxvY190ZXN0X3NrYmAgYmVpbmcgYHN0YXRpY2AgaXMgYSB1c2VmdWwgY2x1ZS4gQmVjYXVzZSBpdCYjMzk7cyBzdGF0aWMsIGl0JiMzOTtzIHNjb3BlZCB0byBpdHMgY29tcGlsYXRpb24gdW5pdCBhbmQgd29uJiMzOTt0IGJlIGRpcmVjdGx5IGV4cG9zZWQgYXMgYSBzeW1ib2wgaW4gdGhlIHN0YW5kYXJkIHN5bWJvbCB0YWJsZS4gIFRoYXQgbWVhbnMgSSBjYW4mIzM5O3QgcmVseSBvbiBgbm1gIG9yIHNpbWlsYXIgdG9vbHMgdG8gZmluZCB0aGUgZnVuY3Rpb24sIHNpbmNlIGl0IGhhcyBsaW1pdGVkIHZpc2liaWxpdHkgb3V0c2lkZSB0aGUgZmlsZS4gSXQgYWxzbyBtZWFucyBpdCBtYXkgYmUgaW5saW5lZC4KClRoZXJlZm9yZSwgSSBuZWVkIHRvIHRoaW5rIGFib3V0IHRoZSBtb3JlIGxpa2VseSBlbnRyeSBwb2ludHMgZm9yIHRoaXMgd2hvbGUgTVJQIHN1YnN5c3RlbS4gSSBuZWVkIHRvIGZvY3VzIG9uIHdoZXJlIHRoZSBNUlAgZnVuY3Rpb25hbGl0eSBpcyAqYWN0dWFsbHkqIGludm9rZWQuICBJIHNob3VsZCBzdGFydCBsb29raW5nIGZvciB0aGluZ3MgbGlrZSBuZXRsaW5rIGludGVyZmFjZSBoYW5kbGVycywgbW9kdWxlIGluaXRpYWxpemF0aW9uIGZ1bmN0aW9ucywgb3IgY2FsbGJhY2sgcm91dGluZXMgcmVnaXN0ZXJlZCB3aXRoIHRoZSBicmlkZ2UuIEkmIzM5O2xsIG5lZWQgdG8gbG9vayBmb3IgZnVuY3Rpb25zIHRoYXQgYXJlIG5vdCBzdGF0aWMsIHRoYXQgaW5pdGlhbGl6ZSB0aGUgTVJQLiAgT3IsIG1vcmUgc3BlY2lmaWNhbGx5LCBJIG5lZWQgdG8gZmluZCB0aGUgZW50cnkgcG9pbnRzICppbnRvKiB0aGUgTVJQIGNvZGUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDA4OjU5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2JyX21ycF8mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvYnJpZGdlL2JyX21ycC5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O1xuRnVsbCBvdXRwdXQgaXMgdG9vIGxvbmcsIHNob3dpbmcgNTAwIG91dCBvZiA1MjEgbGluZXMuXG5Vc2UgbW9yZSBwcmVjaXNlIGV4cHJlc3Npb24gaWYgcG9zc2libGUuXG5cbm5ldC9icmlkZ2UvYnJfbXJwLmM9Nz1zdGF0aWMgY29uc3QgdTggbXJwX2luX3Rlc3RfZG1hY1tFVEhfQUxFTl0gPSB7IDB4MSwgMHgxNSwgMHg0ZSwgMHgwLCAweDAsIDB4MyB9O1xubmV0L2JyaWRnZS9icl9tcnAuYy04LVxubmV0L2JyaWRnZS9icl9tcnAuYzo5OnN0YXRpYyBpbnQgYnJfbXJwX3Byb2Nlc3Moc3RydWN0IG5ldF9icmlkZ2VfcG9ydCAqcCwgc3RydWN0IHNrX2J1ZmYgKnNrYik7XG5uZXQvYnJpZGdlL2JyX21ycC5jLTEwLVxubmV0L2JyaWRnZS9icl9tcnAuYz0xMT1zdGF0aWMgc3RydWN0IGJyX2ZyYW1lX3R5cGUgbXJwX2ZyYW1lX3R5cGUgX19yZWFkX21vc3RseSA9IHtcbm5ldC9icmlkZ2UvYnJfbXJwLmMtMTItXHQudHlwZSA9IGNwdV90b19iZTE2KEVUSF9QX01SUCksXG5uZXQvYnJpZGdlL2JyX21ycC5jOjEzOlx0LmZyYW1lX2hhbmRsZXIgPSBicl9tcnBfcHJvY2Vzcyxcbm5ldC9icmlkZ2UvYnJfbXJwLmMtMTQtfTtcbm5ldC9icmlkZ2UvYnJfbXJwLmMtMTUtXG5uZXQvYnJpZGdlL2JyX21ycC5jOjE2OnN0YXRpYyBib29sIGJyX21ycF9pc19yaW5nX3BvcnQoc3RydWN0IG5ldF9icmlkZ2VfcG9ydCAqcF9wb3J0LFxubmV0L2JyaWRnZS9icl9tcnAuYy0xNy1cdFx0XHRcdHN0cnVjdCBuZXRfYnJpZGdlX3BvcnQgKnNfcG9ydCxcbi0tXG5uZXQvYnJpZGdlL2JyX21ycC5jLTI2LVxubmV0L2JyaWRnZS9icl9tcnAuYzoyNzpzdGF0aWMgYm9vbCBicl9tcnBfaXNfaW5fcG9ydChzdHJ1Y3QgbmV0X2JyaWRnZV9wb3J0ICppX3BvcnQsXG5uZXQvYnJpZGdlL2JyX21ycC5jLTI4LVx0XHRcdCAgICAgIHN0cnVjdCBuZXRfYnJpZGdlX3BvcnQgKnBvcnQpXG4tLVxubmV0L2JyaWRnZS9icl9tcnAuYy0zNS1cbm5ldC9icmlkZ2UvYnJfbXJwLmM6MzY6c3RhdGljIHN0cnVjdCBuZXRfYnJpZGdlX3BvcnQgKmJyX21ycF9nZXRfcG9ydChzdHJ1Y3QgbmV0X2JyaWRnZSAqYnIsXG5uZXQvYnJpZGdlL2JyX21ycC5jLTM3LVx0XHRcdFx0XHQgICAgICAgdTMyIGlmaW5kZXgpXG4tLVxubmV0L2JyaWRnZS9icl9tcnAuYy01MS1cbm5ldC9icmlkZ2UvYnJfbXJwLmM6NTI6c3RhdGljIHN0cnVjdCBicl9tcnAgKmJyX21ycF9maW5kX2lkKHN0cnVjdCBuZXRfYnJpZGdlICpiciwgdTMyIHJpbmdfaWQpXG5uZXQvYnJpZGdlL2JyX21ycC5jLTUzLXtcbi0tXG5uZXQvYnJpZGdlL2JyX21ycC5jLTY3LVxubmV0L2JyaWRnZS9icl9tcnAuYzo2ODpzdGF0aWMgc3RydWN0IGJyX21ycCAqYnJfbXJwX2ZpbmRfaW5faWQoc3RydWN0IG5ldF9icmlkZ2UgKmJyLCB1MzIgaW5faWQpXG5uZXQvYnJpZGdlL2JyX21ycC5jLTY5LXtcbi0tXG5uZXQvYnJpZGdlL2JyX21ycC5jLTgzLVxubmV0L2JyaWRnZS9icl9tcnAuYzo4NDpzdGF0aWMgYm9vbCBicl9tcnBfdW5pcXVlX2lmaW5kZXgoc3RydWN0IG5ldF9icmlkZ2UgKmJyLCB1MzIgaWZpbmRleClcbm5ldC9icmlkZ2UvYnJfbXJwLmMtODUte1xuLS1cbm5ldC9icmlkZ2UvYnJfbXJwLmMtMTA3LVxubmV0L2JyaWRnZS9icl9tcnAuYzoxMDg6c3RhdGljIHN0cnVjdCBicl9tcnAgKmJyX21ycF9maW5kX3BvcnQoc3RydWN0IG5ldF9icmlkZ2UgKmJyLFxubmV0L2JyaWRnZS9icl9tcnAuYy0xMDktXHRcdFx0XHQgICAgICAgc3RydWN0IG5ldF9icmlkZ2VfcG9ydCAqcClcbi0tXG5uZXQvYnJpZGdlL2JyX21ycC5jLTEyNi1cbm5ldC9icmlkZ2UvYnJfbXJwLmM6MTI3OnN0YXRpYyBpbnQgYnJfbXJwX25leHRfc2VxKHN0cnVjdCBicl9tcnAgKm1ycClcbm5ldC9icmlkZ2UvYnJfbXJwLmMtMTI4LXtcbi0tXG5uZXQvYnJpZGdlL2JyX21ycC5jLTEzMi1cbm5ldC9icmlkZ2UvYnJfbXJwLmM6MTMzOnN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqYnJfbXJwX3NrYl9hbGxvYyhzdHJ1Y3QgbmV0X2JyaWRnZV9wb3J0ICpwLFxubmV0L2JyaWRnZS9icl9tcnAuYy0xMzQtXHRcdFx0XHRcdGNvbnN0IHU4ICpzcmMsIGNvbnN0IHU4ICpkc3QpXG4tLVxubmV0L2JyaWRnZS9icl9tcnAuYy0xNTktXG5uZXQvYnJpZGdlL2JyX21ycC5jOjE2MDpzdGF0aWMgdm9pZCBicl9tcnBfc2tiX3RsdihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxubmV0L2JyaWRnZS9icl9tcnAuYzoxNjE6XHRcdFx0ICAgZW51bSBicl9tcnBfdGx2X2hlYWRlcl90eXBlIHR5cGUsXG5uZXQvYnJpZGdlL2JyX21ycC5jLTE2Mi1cdFx0XHQgICB1OCBsZW5ndGgpXG5uZXQvYnJpZGdlL2JyX21ycC5jLTE2My17XG5uZXQvYnJpZGdlL2JyX21ycC5jOjE2NDpcdHN0cnVjdCBicl9tcnBfdGx2X2hkciAqaGRyO1xubmV0L2JyaWRnZS9icl9tcnAuYy0xNjUtXG4tLVxubmV0L2JyaWRnZS9icl9tcnAuYy0xNzAtXG5uZXQvYnJpZGdlL2JyX21ycC5jOjE3MTpzdGF0aWMgdm9pZCBicl9tcnBfc2tiX2NvbW1vbihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgYnJfbXJwICptcnApXG5uZXQvYnJpZGdlL2JyX21ycC5jLTE3Mi17XG5uZXQvYnJpZGdlL2JyX21ycC5jOjE3MzpcdHN0cnVjdCBicl9tcnBfY29tbW9uX2hkciAqaGRyO1xubmV0L2JyaWRnZS9icl9tcnAuYy0xNzQtXG5uZXQvYnJpZGdlL2JyX21ycC5jOjE3NTpcdGJyX21ycF9za2JfdGx2KHNrYiwgQlJfTVJQX1RMVl9IRUFERVJfQ09NTU9OLCBzaXplb2YoKmhkcikpO1xubmV0L2JyaWRnZS9icl9tcnAuYy0xNzYtXG5uZXQvYnJpZGdlL2JyX21ycC5jLTE3Ny1cdGhkciA9IHNrYl9wdXQoc2tiLCBzaXplb2YoKmhkcikpO1xubmV0L2JyaWRnZS9icl9tcnAuYzoxNzg6XHRoZHItXHUwMDNlc2VxX2lkID0gY3B1X3RvX2JlMTYoYnJfbXJwX25leHRfc2VxKG1ycCkpO1xubmV0L2JyaWRnZS9icl9tcnAuYy0xNzktXHRtZW1zZXQoaGRyLVx1MDAzZWRvbWFpbiwgMHhmZiwgTVJQX0RPTUFJTl9VVUlEX0xFTkdUSCk7XG4tLVxubmV0L2JyaWRnZS9icl9tcnAuYy0xODEtXG5uZXQvYnJpZGdlL2JyX21ycC5jOjE4MjpzdGF0aWMgc3RydWN0IHNrX2J1ZmYgKmJyX21ycF9hbGxvY190ZXN0X3NrYihzdHJ1Y3QgYnJfbXJwICptcnAsXG5uZXQvYnJpZGdlL2JyX21ycC5jLTE4My1cdFx0XHRcdFx0ICAgICBzdHJ1Y3QgbmV0X2JyaWRnZV9wb3J0ICpwLFxubmV0L2JyaWRnZS9icl9tcnAuYzoxODQ6XHRcdFx0XHRcdCAgICAgZW51bSBicl9tcnBfcG9ydF9yb2xlX3R5cGUgcG9ydF9yb2xlKVxubmV0L2JyaWRnZS9icl9tcnAuYy0xODUte1xubmV0L2JyaWRnZS9icl9tcnAuYzoxODY6XHRzdHJ1Y3QgYnJfbXJwX3JpbmdfdGVzdF9oZHIgKmhkciA9IE5VTEw7XG5uZXQvYnJpZGdlL2JyX21ycC5jLTE4Ny1cdHN0cnVjdCBza19idWZmICpza2IgPSBOVUxMO1xuLS1cbm5ldC9icmlkZ2UvYnJfbXJwLmMtMTkxLVxubmV0L2JyaWRnZS9icl9tcnAuYzoxOTI6XHRza2IgPSBicl9tcnBfc2tiX2FsbG9jKHAsIHAtXHUwMDNlZGV2LVx1MDAzZWRldl9hZGRyLCBtcnBfdGVzdF9kbWFjKTtcbm5ldC9icmlkZ2UvYnJfbXJwLmMtMTkzLVx0aWYgKCFza2IpXG4tLVxubmV0L2JyaWRnZS9icl9tcnAuYy0xOTUtXG5uZXQvYnJpZGdlL2JyX21ycC5jOjE5NjpcdGJyX21ycF9za2JfdGx2KHNrYiwgQlJfTVJQX1RMVl9IRUFERVJfUklOR19URVNULCBzaXplb2YoKmhkcikpO1xubmV0L2JyaWRnZS9icl9tcnAuYy0xOTctXHRoZHIgPSBza2JfcHV0KHNrYiwgc2l6ZW9mKCpoZHIpKTtcbi0tXG5uZXQvYnJpZGdlL2JyX21ycC5jLTIwNS1cbm5ldC9icmlkZ2UvYnJfbXJwLmM6MjA2Olx0YnJfbXJwX3NrYl9jb21tb24oc2tiLCBtcnApO1xubmV0L2JyaWRnZS9icl9tcnAuYy0yMDctXG4tLVxubmV0L2JyaWRnZS9icl9tcnAuYy0yMTItXHRpZiAobXJwLVx1MDAzZXJpbmdfcm9sZSA9PSBCUl9NUlBfUklOR19ST0xFX01SQSkge1xubmV0L2JyaWRnZS9icl9tcnAuYzoyMTM6XHRcdHN0cnVjdCBicl9tcnBfc3ViX29wdGlvbjFfaGRyICpzdWJfb3B0ID0gTlVMTDtcbm5ldC9icmlkZ2UvYnJfbXJwLmM6MjE0Olx0XHRzdHJ1Y3QgYnJfbXJwX3Rsdl9oZHIgKnN1Yl90bHYgPSBOVUxMO1xubmV0L2JyaWRnZS9icl9tcnAuYzoyMTU6XHRcdHN0cnVjdCBicl9tcnBfb3VpX2hkciAqb3VpID0gTlVMTDtcbm5ldC9icmlkZ2UvYnJfbXJwLmMtMjE2LVx0XHR1OCBsZW5ndGg7XG4tLVxubmV0L2JyaWRnZS9icl9tcnAuYy0yMTktXHRcdFx0TVJQX09QVF9QQURESU5HO1xubmV0L2JyaWRnZS9icl9tcnAuYzoyMjA6XHRcdGJyX21ycF9za2JfdGx2KHNrYiwgQlJfTVJQX1RMVl9IRUFERVJfT1BUSU9OLCBsZW5ndGgpO1xubmV0L2JyaWRnZS9icl9tcnAuYy0yMjEtXG4tLVxubmV0L2JyaWRnZS9icl9tcnAuYy0yMzMtXG5uZXQvYnJpZGdlL2JyX21ycC5jOjIzNDpcdGJyX21ycF9za2JfdGx2KHNrYiwgQlJfTVJQX1RMVl9IRUFERVJfRU5ELCAweDApO1xubmV0L2JyaWRnZS9icl9tcnAuYy0yMzUtXG4tLVxubmV0L2JyaWRnZS9icl9tcnAuYy0yMzgtXG5uZXQvYnJpZGdlL2JyX21ycC5jOjIzOTpzdGF0aWMgc3RydWN0IHNrX2J1ZmYgKmJyX21ycF9hbGxvY19pbl90ZXN0X3NrYihzdHJ1Y3QgYnJfbXJwICptcnAsXG5uZXQvYnJpZGdlL2JyX21ycC5jLTI0MC1cdFx0XHRcdFx0XHRzdHJ1Y3QgbmV0X2JyaWRnZV9wb3J0ICpwLFxubmV0L2JyaWRnZS9icl9tcnAuYzoyNDE6XHRcdFx0XHRcdFx0ZW51bSBicl9tcnBfcG9ydF9yb2xlX3R5cGUgcG9ydF9yb2xlKVxubmV0L2JyaWRnZS9icl9tcnAuYy0yNDIte1xubmV0L2JyaWRnZS9icl9tcnAuYzoyNDM6XHRzdHJ1Y3QgYnJfbXJwX2luX3Rlc3RfaGRyICpoZHIgPSBOVUxMO1xubmV0L2JyaWRnZS9icl9tcnAuYy0yNDQtXHRzdHJ1Y3Qgc2tfYnVmZiAqc2tiID0gTlVMTDtcbi0tXG5uZXQvYnJpZGdlL2JyX21ycC5jLTI0OC1cbm5ldC9icmlkZ2UvYnJfbXJwLmM6MjQ5Olx0c2tiID0gYnJfbXJwX3NrYl9hbGxvYyhwLCBwLVx1MDAzZWRldi1cdTAwM2VkZXZfYWRkciwgbXJwX2luX3Rlc3RfZG1hYyk7XG5uZXQvYnJpZGdlL2JyX21ycC5jLTI1MC1cdGlmICghc2tiKVxuLS1cbm5ldC9icmlkZ2UvYnJfbXJwLmMtMjUyLVxubmV0L2JyaWRnZS9icl9tcnAuYzoyNTM6XHRicl9tcnBfc2tiX3Rsdihza2IsIEJSX01SUF9UTFZfSEVBREVSX0lOX1RFU1QsIHNpemVvZigqaGRyKSk7XG5uZXQvYnJpZGdlL2JyX21ycC5jLTI1NC1cdGhkciA9IHNrYl9wdXQoc2tiLCBzaXplb2YoKmhkcikpO1xuLS1cbm5ldC9icmlkZ2UvYnJfbXJwLmMtMjYyLVxubmV0L2JyaWRnZS9icl9tcnAuYzoyNjM6XHRicl9tcnBfc2tiX2NvbW1vbihza2IsIG1ycCk7XG5uZXQvYnJpZGdlL2JyX21ycC5jOjI2NDpcdGJyX21ycF9za2JfdGx2KHNrYiwgQlJfTVJQX1RMVl9IRUFERVJfRU5ELCAweDApO1xubmV0L2JyaWRnZS9icl9tcnAuYy0yNjUtXG4tLVxubmV0L2JyaWRnZS9icl9tcnAuYy0yNzgtICovXG5uZXQvYnJpZGdlL2JyX21ycC5jOjI3OTpzdGF0aWMgdm9pZCBicl9tcnBfdGVzdF93b3JrX2V4cGlyZWQoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxubmV0L2JyaWRnZS9icl9tcnAuYy0yODAte1xuLS1cbm5ldC9icmlkZ2UvYnJfbXJwLmMtMzExLVx0XHRpZiAoIW1ycC1cdTAwM2V0ZXN0X21vbml0b3IpIHtcbm5ldC9icmlkZ2UvYnJfbXJwLmM6MzEyOlx0XHRcdHNrYiA9IGJyX21ycF9hbGxvY190ZXN0X3NrYihtcnAsIHAsXG5uZXQvYnJpZGdlL2JyX21ycC5jLTMxMy1cdFx0XHRcdFx0XHQgICAgQlJfTVJQX1BPUlRfUk9MRV9QUklNQVJZKTtcbi0tXG5uZXQvYnJpZGdlL2JyX21ycC5jLTMyMS1cdFx0aWYgKG5vdGlmeV9vcGVuIFx1MDAyNlx1MDAyNiAhbXJwLVx1MDAzZXJpbmdfcm9sZV9vZmZsb2FkZWQpXG5uZXQvYnJpZGdlL2JyX21ycC5jOjMyMjpcdFx0XHRicl9tcnBfcmluZ19wb3J0X29wZW4ocC1cdTAwM2VkZXYsIHRydWUpO1xubmV0L2JyaWRnZS9icl9tcnAuYy0zMjMtXHR9XG4tLVxubmV0L2JyaWRnZS9icl9tcnAuYy0zMjctXHRcdGlmICghbXJwLVx1MDAzZXRlc3RfbW9uaXRvcikge1xubmV0L2JyaWRnZS9icl9tcnAuYzozMjg6XHRcdFx0c2tiID0gYnJfbXJwX2FsbG9jX3Rlc3Rfc2tiKG1ycCwgcCxcbm5ldC9icmlkZ2UvYnJfbXJwLmMtMzI5LVx0XHRcdFx0XHRcdCAgICBCUl9NUlBfUE9SVF9ST0xFX1NFQ09OREFSWSk7XG4tLVxubmV0L2JyaWRnZS9icl9tcnAuYy0zMzctXHRcdGlmIChub3RpZnlfb3BlbiBcdTAwMjZcdTAwMjYgIW1ycC1cdTAwM2VyaW5nX3JvbGVfb2ZmbG9hZGVkKVxubmV0L2JyaWRnZS9icl9tcnAuYzozMzg6XHRcdFx0YnJfbXJwX3JpbmdfcG9ydF9vcGVuKHAtXHUwMDNlZGV2LCB0cnVlKTtcbm5ldC9icmlkZ2UvYnJfbXJwLmMtMzM5LVx0fVxuLS1cbm5ldC9icmlkZ2UvYnJfbXJwLmMtMzUxLSAqL1xubmV0L2JyaWRnZS9icl9tcnAuYzozNTI6c3RhdGljIHZvaWQgYnJfbXJwX2luX3Rlc3Rfd29ya19leHBpcmVkKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcbm5ldC9icmlkZ2UvYnJfbXJwLmMtMzUzLXtcbi0tXG5uZXQvYnJpZGdlL2JyX21ycC5jLTM3Ny1cdGlmIChwKSB7XG5uZXQvYnJpZGdlL2JyX21ycC5jOjM3ODpcdFx0c2tiID0gYnJfbXJwX2FsbG9jX2luX3Rlc3Rfc2tiKG1ycCwgcCxcbm5ldC9icmlkZ2UvYnJfbXJwLmMtMzc5LVx0XHRcdFx0XHQgICAgICAgQlJfTVJQX1BPUlRfUk9MRV9QUklNQVJZKTtcbi0tXG5uZXQvYnJpZGdlL2JyX21ycC5jLTM4Ni1cdFx0aWYgKG5vdGlmeV9vcGVuIFx1MDAyNlx1MDAyNiAhbXJwLVx1MDAzZWluX3JvbGVfb2ZmbG9hZGVkKVxubmV0L2JyaWRnZS9icl9tcnAuYzozODc6XHRcdFx0YnJfbXJwX2luX3BvcnRfb3BlbihwLVx1MDAzZWRldiwgdHJ1ZSk7XG5uZXQvYnJpZGdlL2JyX21ycC5jLTM4OC1cdH1cbi0tXG5uZXQvYnJpZGdlL2JyX21ycC5jLTM5MS1cdGlmIChwKSB7XG5uZXQvYnJpZGdlL2JyX21ycC5jOjM5MjpcdFx0c2tiID0gYnJfbXJwX2FsbG9jX2luX3Rlc3Rfc2tiKG1ycCwgcCxcbm5ldC9icmlkZ2UvYnJfbXJwLmMtMzkzLVx0XHRcdFx0XHQgICAgICAgQlJfTVJQX1BPUlRfUk9MRV9TRUNPTkRBUlkpO1xuLS1cbm5ldC9icmlkZ2UvYnJfbXJwLmMtNDAwLVx0XHRpZiAobm90aWZ5X29wZW4gXHUwMDI2XHUwMDI2ICFtcnAtXHUwMDNlaW5fcm9sZV9vZmZsb2FkZWQpXG5uZXQvYnJpZGdlL2JyX21ycC5jOjQwMTpcdFx0XHRicl9tcnBfaW5fcG9ydF9vcGVuKHAtXHUwMDNlZGV2LCB0cnVlKTtcbm5ldC9icmlkZ2UvYnJfbXJwLmMtNDAyLVx0fVxuLS1cbm5ldC9icmlkZ2UvYnJfbXJwLmMtNDA1LVx0aWYgKHApIHtcbm5ldC9icmlkZ2UvYnJfbXJwLmM6NDA2Olx0XHRza2IgPSBicl9tcnBfYWxsb2NfaW5fdGVzdF9za2IobXJwLCBwLFxubmV0L2JyaWRnZS9icl9tcnAuYy00MDctXHRcdFx0XHRcdCAgICAgICBCUl9NUlBfUE9SVF9ST0xFX0lOVEVSKTtcbi0tXG5uZXQvYnJpZGdlL2JyX21ycC5jLTQxNC1cdFx0aWYgKG5vdGlmeV9vcGVuIFx1MDAyNlx1MDAyNiAhbXJwLVx1MDAzZWluX3JvbGVfb2ZmbG9hZGVkKVxubmV0L2JyaWRnZS9icl9tcnAuYzo0MTU6XHRcdFx0YnJfbXJwX2luX3BvcnRfb3BlbihwLVx1MDAzZWRldiwgdHJ1ZSk7XG5uZXQvYnJpZGdlL2JyX21ycC5jLTQxNi1cdH1cbi0tXG5uZXQvYnJpZGdlL2JyX21ycC5jLTQyNy0gKi9cbm5ldC9icmlkZ2UvYnJfbXJwLmM6NDI4OnN0YXRpYyB2b2lkIGJyX21ycF9kZWxfaW1wbChzdHJ1Y3QgbmV0X2JyaWRnZSAqYnIsIHN0cnVjdCBicl9tcnAgKm1ycClcbm5ldC9icmlkZ2UvYnJfbXJwLmMtNDI5LXtcbi0tXG5uZXQvYnJpZGdlL2JyX21ycC5jLTQzNC1cdGNhbmNlbF9kZWxheWVkX3dvcmtfc3luYyhcdTAwMjZtcnAtXHUwMDNldGVzdF93b3JrKTtcbm5ldC9icmlkZ2UvYnJfbXJwLmM6NDM1Olx0YnJfbXJwX3N3aXRjaGRldl9zZW5kX3JpbmdfdGVzdChiciwgbXJwLCAwLCAwLCAwLCAwKTtcbm5ldC9icmlkZ2UvYnJfbXJwLmMtNDM2LVxuLS1cbm5ldC9icmlkZ2UvYnJfbXJwLmMtNDM4LVx0Y2FuY2VsX2RlbGF5ZWRfd29ya19zeW5jKFx1MDAyNm1ycC1cdTAwM2Vpbl90ZXN0X3dvcmspO1xubmV0L2JyaWRnZS9icl9tcnAuYzo0Mzk6XHRicl9tcnBfc3dpdGNoZGV2X3NlbmRfaW5fdGVzdChiciwgbXJwLCAwLCAwLCAwKTtcbm5ldC9icmlkZ2UvYnJfbXJwLmMtNDQwLVxubmV0L2JyaWRnZS9icl9tcnAuYy00NDEtXHQvKiBEaXNhYmxlIHRoZSByb2xlcyAqL1xubmV0L2JyaWRnZS9icl9tcnAuYzo0NDI6XHRicl9tcnBfc3dpdGNoZGV2X3NldF9yaW5nX3JvbGUoYnIsIG1ycCwgQlJfTVJQX1JJTkdfUk9MRV9ESVNBQkxFRCk7XG5uZXQvYnJpZGdlL2JyX21ycC5jLTQ0My1cdHAgPSBydG5sX2RlcmVmZXJlbmNlKG1ycC1cdTAwM2VpX3BvcnQpO1xubmV0L2JyaWRnZS9icl9tcnAuYy00NDQtXHRpZiAocClcbm5ldC9icmlkZ2UvYnJfbXJwLmM6NDQ1Olx0XHRicl9tcnBfc3dpdGNoZGV2X3NldF9pbl9yb2xlKGJyLCBtcnAsIG1ycC1cdTAwM2Vpbl9pZCwgbXJwLVx1MDAzZXJpbmdfaWQsXG5uZXQvYnJpZGdlL2JyX21ycC5jLTQ0Ni1cdFx0XHRcdFx0ICAgICBCUl9NUlBfSU5fUk9MRV9ESVNBQkxFRCk7XG5uZXQvYnJpZGdlL2JyX21ycC5jLTQ0Ny1cbm5ldC9icmlkZ2UvYnJfbXJwLmM6NDQ4Olx0YnJfbXJwX3N3aXRjaGRldl9kZWwoYnIsIG1ycCk7XG5uZXQvYnJpZGdlL2JyX21ycC5jLTQ0OS1cbi0tXG5uZXQvYnJpZGdlL2JyX21ycC5jLTQ1OC1cdFx0c3Bpbl91bmxvY2tfYmgoXHUwMDI2YnItXHUwMDNlbG9jayk7XG5uZXQvYnJpZGdlL2JyX21ycC5jOjQ1OTpcdFx0YnJfbXJwX3BvcnRfc3dpdGNoZGV2X3NldF9zdGF0ZShwLCBzdGF0ZSk7XG5uZXQvYnJpZGdlL2JyX21ycC5jLTQ2MC1cdFx0cmN1X2Fzc2lnbl9wb2ludGVyKG1ycC1cdTAwM2VwX3BvcnQsIE5VTEwpO1xuLS1cbm5ldC9icmlkZ2UvYnJfbXJwLmMtNDcwLVx0XHRzcGluX3VubG9ja19iaChcdTAwMjZici1cdTAwM2Vsb2NrKTtcbm5ldC9icmlkZ2UvYnJfbXJwLmM6NDcxOlx0XHRicl9tcnBfcG9ydF9zd2l0Y2hkZXZfc2V0X3N0YXRlKHAsIHN0YXRlKTtcbm5ldC9icmlkZ2UvYnJfbXJwLmMtNDcyLVx0XHRyY3VfYXNzaWduX3BvaW50ZXIobXJwLVx1MDAzZXNfcG9ydCwgTlVMTCk7XG4tLVxubmV0L2JyaWRnZS9icl9tcnAuYy00ODItXHRcdHNwaW5fdW5sb2NrX2JoKFx1MDAyNmJyLVx1MDAzZWxvY2spO1xubmV0L2JyaWRnZS9icl9tcnAuYzo0ODM6XHRcdGJyX21ycF9wb3J0X3N3aXRjaGRldl9zZXRfc3RhdGUocCwgc3RhdGUpO1xubmV0L2JyaWRnZS9icl9tcnAuYy00ODQtXHRcdHJjdV9hc3NpZ25fcG9pbnRlcihtcnAtXHUwMDNlaV9wb3J0LCBOVUxMKTtcbi0tXG5uZXQvYnJpZGdlL2JyX21ycC5jLTQ5Ni0gKi9cbm5ldC9icmlkZ2UvYnJfbXJwLmM6NDk3OmludCBicl9tcnBfYWRkKHN0cnVjdCBuZXRfYnJpZGdlICpiciwgc3RydWN0IGJyX21ycF9pbnN0YW5jZSAqaW5zdGFuY2UpXG5uZXQvYnJpZGdlL2JyX21ycC5jLTQ5OC17XG4tLVxubmV0L2JyaWRnZS9icl9tcnAuYy01MDUtXHQgKi9cbm5ldC9icmlkZ2UvYnJfbXJwLmM6NTA2Olx0bXJwID0gYnJfbXJwX2ZpbmRfaWQoYnIsIGluc3RhbmNlLVx1MDAzZXJpbmdfaWQpO1xubmV0L2JyaWRnZS9icl9tcnAuYy01MDctXHRpZiAobXJwKVxuLS1cbm5ldC9icmlkZ2UvYnJfbXJwLmMtNTA5LVxubmV0L2JyaWRnZS9icl9tcnAuYzo1MTA6XHRpZiAoIWJyX21ycF9nZXRfcG9ydChiciwgaW5zdGFuY2UtXHUwMDNlcF9pZmluZGV4KSB8fFxubmV0L2JyaWRnZS9icl9tcnAuYzo1MTE6XHQgICAgIWJyX21ycF9nZXRfcG9ydChiciwgaW5zdGFuY2UtXHUwMDNlc19pZmluZGV4KSlcbm5ldC9icmlkZ2UvYnJfbXJwLmMtNTEyLVx0XHRyZXR1cm4gLUVJTlZBTDtcbi0tXG5uZXQvYnJpZGdlL2JyX21ycC5jLTUxNC1cdC8qIEl0IGlzIG5vdCBwb3NzaWJsZSB0byBoYXZlIHRoZSBzYW1lIHBvcnQgcGFydCBvZiBtdWx0aXBsZSByaW5ncyAqL1xubmV0L2JyaWRnZS9icl9tcnAuYzo1MTU6XHRpZiAoIWJyX21ycF91bmlxdWVfaWZpbmRleChiciwgaW5zdGFuY2UtXHUwMDNlcF9pZmluZGV4KSB8fFxubmV0L2JyaWRnZS9icl9tcnAuYzo1MTY6XHQgICAgIWJyX21ycF91bmlxdWVfaWZpbmRleChiciwgaW5zdGFuY2UtXHUwMDNlc19pZmluZGV4KSlcbm5ldC9icmlkZ2UvYnJfbXJwLmMtNTE3LVx0XHRyZXR1cm4gLUVJTlZBTDtcbi0tXG5uZXQvYnJpZGdlL2JyX21ycC5jLTUyNS1cbm5ldC9icmlkZ2UvYnJfbXJwLmM6NTI2Olx0cCA9IGJyX21ycF9nZXRfcG9ydChiciwgaW5zdGFuY2UtXHUwMDNlcF9pZmluZGV4KTtcbm5ldC9icmlkZ2UvYnJfbXJwLmMtNTI3LVx0c3Bpbl9sb2NrX2JoKFx1MDAyNmJyLVx1MDAzZWxvY2spO1xuLS1cbm5ldC9icmlkZ2UvYnJfbXJwLmMtNTMyLVxubmV0L2JyaWRnZS9icl9tcnAuYzo1MzM6XHRwID0gYnJfbXJwX2dldF9wb3J0KGJyLCBpbnN0YW5jZS1cdTAwM2VzX2lmaW5kZXgpO1xubmV0L2JyaWRnZS9icl9tcnAuYy01MzQtXHRzcGluX2xvY2tfYmgoXHUwMDI2YnItXHUwMDNlbG9jayk7XG4tLVxubmV0L2JyaWRnZS9icl9tcnAuYy01NDItXG5uZXQvYnJpZGdlL2JyX21ycC5jOjU0MzpcdElOSVRfREVMQVlFRF9XT1JLKFx1MDAyNm1ycC1cdTAwM2V0ZXN0X3dvcmssIGJyX21ycF90ZXN0X3dvcmtfZXhwaXJlZCk7XG5uZXQvYnJpZGdlL2JyX21ycC5jOjU0NDpcdElOSVRfREVMQVlFRF9XT1JLKFx1MDAyNm1ycC1cdTAwM2Vpbl90ZXN0X3dvcmssIGJyX21ycF9pbl90ZXN0X3dvcmtfZXhwaXJlZCk7XG5uZXQvYnJpZGdlL2JyX21ycC5jLTU0NS1cdGhsaXN0X2FkZF90YWlsX3JjdShcdTAwMjZtcnAtXHUwMDNlbGlzdCwgXHUwMDI2YnItXHUwMDNlbXJwX2xpc3QpO1xubmV0L2JyaWRnZS9icl9tcnAuYy01NDYtXG5uZXQvYnJpZGdlL2JyX21ycC5jOjU0NzpcdGVyciA9IGJyX21ycF9zd2l0Y2hkZXZfYWRkKGJyLCBtcnApO1xubmV0L2JyaWRnZS9icl9tcnAuYy01NDgtXHRpZiAoZXJyKVxuLS1cbm5ldC9icmlkZ2UvYnJfbXJwLmMtNTUzLWRlbGV0ZV9tcnA6XG5uZXQvYnJpZGdlL2JyX21ycC5jOjU1NDpcdGJyX21ycF9kZWxfaW1wbChiciwgbXJwKTtcbm5ldC9icmlkZ2UvYnJfbXJwLmMtNTU1LVxuLS1cbm5ldC9icmlkZ2UvYnJfbXJwLmMtNTYxLSAqL1xubmV0L2JyaWRnZS9icl9tcnAuYzo1NjI6dm9pZCBicl9tcnBfcG9ydF9kZWwoc3RydWN0IG5ldF9icmlkZ2UgKmJyLCBzdHJ1Y3QgbmV0X2JyaWRnZV9wb3J0ICpwKVxubmV0L2JyaWRnZS9icl9tcnAuYy01NjMte1xubmV0L2JyaWRnZS9icl9tcnAuYzo1NjQ6XHRzdHJ1Y3QgYnJfbXJwICptcnAgPSBicl9tcnBfZmluZF9wb3J0KGJyLCBwKTtcbm5ldC9icmlkZ2UvYnJfbXJwLmMtNTY1LVxuLS1cbm5ldC9icmlkZ2UvYnJfbXJwLmMtNTY5LVxubmV0L2JyaWRnZS9icl9tcnAuYzo1NzA6XHRicl9tcnBfZGVsX2ltcGwoYnIsIG1ycCk7XG5uZXQvYnJpZGdlL2JyX21ycC5jLTU3MS19XG4tLVxubmV0L2JyaWRnZS9icl9tcnAuYy01NzUtICovXG5uZXQvYnJpZGdlL2JyX21ycC5jOjU3NjppbnQgYnJfbXJwX2RlbChzdHJ1Y3QgbmV0X2JyaWRnZSAqYnIsIHN0cnVjdCBicl9tcnBfaW5zdGFuY2UgKmluc3RhbmNlKVxubmV0L2JyaWRnZS9icl9tcnAuYy01Nzcte1xubmV0L2JyaWRnZS9icl9tcnAuYzo1Nzg6XHRzdHJ1Y3QgYnJfbXJwICptcnAgPSBicl9tcnBfZmluZF9pZChiciwgaW5zdGFuY2UtXHUwMDNlcmluZ19pZCk7XG5uZXQvYnJpZGdlL2JyX21ycC5jLTU3OS1cbi0tXG5uZXQvYnJpZGdlL2JyX21ycC5jLTU4Mi1cbm5ldC9icmlkZ2UvYnJfbXJwLmM6NTgzOlx0YnJfbXJwX2RlbF9pbXBsKGJyLCBtcnApO1xubmV0L2JyaWRnZS9icl9tcnAuYy01ODQtXG4tLVxubmV0L2JyaWRnZS9icl9tcnAuYy01OTAtICovXG5uZXQvYnJpZGdlL2JyX21ycC5jOjU5MTppbnQgYnJfbXJwX3NldF9wb3J0X3N0YXRlKHN0cnVjdCBuZXRfYnJpZGdlX3BvcnQgKnAsXG5uZXQvYnJpZGdlL2JyX21ycC5jOjU5MjpcdFx0XHQgIGVudW0gYnJfbXJwX3BvcnRfc3RhdGVfdHlwZSBzdGF0ZSlcbm5ldC9icmlkZ2UvYnJfbXJwLmMtNTkzLXtcbi0tXG5uZXQvYnJpZGdlL2JyX21ycC5jLTYwOC1cbm5ldC9icmlkZ2UvYnJfbXJwLmM6NjA5Olx0YnJfbXJwX3BvcnRfc3dpdGNoZGV2X3NldF9zdGF0ZShwLCBwb3J0X3N0YXRlKTtcbm5ldC9icmlkZ2UvYnJfbXJwLmMtNjEwLVxuLS1cbm5ldC9icmlkZ2UvYnJfbXJwLmMtNjE2LSAqL1xubmV0L2JyaWRnZS9icl9tcnAuYzo2MTc6aW50IGJyX21ycF9zZXRfcG9ydF9yb2xlKHN0cnVjdCBuZXRfYnJpZGdlX3BvcnQgKnAsXG5uZXQvYnJpZGdlL2JyX21ycC5jOjYxODpcdFx0XHQgZW51bSBicl9tcnBfcG9ydF9yb2xlX3R5cGUgcm9sZSlcbm5ldC9icmlkZ2UvYnJfbXJwLmMtNjE5LXtcbi0tXG5uZXQvYnJpZGdlL2JyX21ycC5jLTYyNC1cbm5ldC9icmlkZ2UvYnJfbXJwLmM6NjI1Olx0bXJwID0gYnJfbXJwX2ZpbmRfcG9ydChwLVx1MDAzZWJyLCBwKTtcbm5ldC9icmlkZ2UvYnJfbXJwLmMtNjI2LVxuLS1cbm5ldC9icmlkZ2UvYnJfbXJwLmMtNjQwLVxubmV0L2JyaWRnZS9icl9tcnAuYzo2NDE6XHRicl9tcnBfcG9ydF9zd2l0Y2hkZXZfc2V0X3JvbGUocCwgcm9sZSk7XG5uZXQvYnJpZGdlL2JyX21ycC5jLTY0Mi1cbi0tXG5uZXQvYnJpZGdlL2JyX21ycC5jLTY0OC0gKi9cbm5ldC9icmlkZ2UvYnJfbXJwLmM6NjQ5OmludCBicl9tcnBfc2V0X3Jpbmdfc3RhdGUoc3RydWN0IG5ldF9icmlkZ2UgKmJyLFxubmV0L2JyaWRnZS9icl9tcnAuYzo2NTA6XHRcdFx0ICBzdHJ1Y3QgYnJfbXJwX3Jpbmdfc3RhdGUgKnN0YXRlKVxubmV0L2JyaWRnZS9icl9tcnAuYy02NTEte1xubmV0L2JyaWRnZS9icl9tcnAuYzo2NTI6XHRzdHJ1Y3QgYnJfbXJwICptcnAgPSBicl9tcnBfZmluZF9pZChiciwgc3RhdGUtXHUwMDNlcmluZ19pZCk7XG5uZXQvYnJpZGdlL2JyX21ycC5jLTY1My1cbi0tXG5uZXQvYnJpZGdlL2JyX21ycC5jLTY2MS1cbm5ldC9icmlkZ2UvYnJfbXJwLmM6NjYyOlx0YnJfbXJwX3N3aXRjaGRldl9zZXRfcmluZ19zdGF0ZShiciwgbXJwLCBzdGF0ZS1cdTAwM2VyaW5nX3N0YXRlKTtcbm5ldC9icmlkZ2UvYnJfbXJwLmMtNjYzLVxuLS1cbm5ldC9icmlkZ2UvYnJfbXJwLmMtNjcwLSAqL1xubmV0L2JyaWRnZS9icl9tcnAuYzo2NzE6aW50IGJyX21ycF9zZXRfcmluZ19yb2xlKHN0cnVjdCBuZXRfYnJpZGdlICpicixcbm5ldC9icmlkZ2UvYnJfbXJwLmM6NjcyOlx0XHRcdCBzdHJ1Y3QgYnJfbXJwX3Jpbmdfcm9sZSAqcm9sZSlcbm5ldC9icmlkZ2UvYnJfbXJwLmMtNjczLXtcbm5ldC9icmlkZ2UvYnJfbXJwLmM6Njc0Olx0c3RydWN0IGJyX21ycCAqbXJwID0gYnJfbXJwX2ZpbmRfaWQoYnIsIHJvbGUtXHUwMDNlcmluZ19pZCk7XG5uZXQvYnJpZGdlL2JyX21ycC5jOjY3NTpcdGVudW0gYnJfbXJwX2h3X3N1cHBvcnQgc3VwcG9ydDtcbm5ldC9icmlkZ2UvYnJfbXJwLmMtNjc2LVxuLS1cbm5ldC9icmlkZ2UvYnJfbXJwLmMtNjgyLVx0LyogSWYgdGhlcmUgaXMgYW4gZXJyb3IganVzdCBiYWlsZWQgb3V0ICovXG5uZXQvYnJpZGdlL2JyX21ycC5jOjY4MzpcdHN1cHBvcnQgPSBicl9tcnBfc3dpdGNoZGV2X3NldF9yaW5nX3JvbGUoYnIsIG1ycCwgcm9sZS1cdTAwM2VyaW5nX3JvbGUpO1xubmV0L2JyaWRnZS9icl9tcnAuYy02ODQtXHRpZiAoc3VwcG9ydCA9PSBCUl9NUlBfTk9ORSlcbi0tXG5uZXQvYnJpZGdlL2JyX21ycC5jLTcwMS0gKi9cbm5ldC9icmlkZ2UvYnJfbXJwLmM6NzAyOmludCBicl9tcnBfc3RhcnRfdGVzdChzdHJ1Y3QgbmV0X2JyaWRnZSAqYnIsXG5uZXQvYnJpZGdlL2JyX21ycC5jOjcwMzpcdFx0ICAgICAgc3RydWN0IGJyX21ycF9zdGFydF90ZXN0ICp0ZXN0KVxubmV0L2JyaWRnZS9icl9tcnAuYy03MDQte1xubmV0L2JyaWRnZS9icl9tcnAuYzo3MDU6XHRzdHJ1Y3QgYnJfbXJwICptcnAgPSBicl9tcnBfZmluZF9pZChiciwgdGVzdC1cdTAwM2VyaW5nX2lkKTtcbm5ldC9icmlkZ2UvYnJfbXJwLmM6NzA2Olx0ZW51bSBicl9tcnBfaHdfc3VwcG9ydCBzdXBwb3J0O1xubmV0L2JyaWRnZS9icl9tcnAuYy03MDctXG4tLVxubmV0L2JyaWRnZS9icl9tcnAuYy03MTMtXHQgKi9cbm5ldC9icmlkZ2UvYnJfbXJwLmM6NzE0Olx0c3VwcG9ydCA9IGJyX21ycF9zd2l0Y2hkZXZfc2VuZF9yaW5nX3Rlc3QoYnIsIG1ycCwgdGVzdC1cdTAwM2VpbnRlcnZhbCxcbm5ldC9icmlkZ2UvYnJfbXJwLmMtNzE1LVx0XHRcdFx0XHRcdCAgdGVzdC1cdTAwM2VtYXhfbWlzcywgdGVzdC1cdTAwM2VwZXJpb2QsXG4tLVxubmV0L2JyaWRnZS9icl9tcnAuYy03MzYtICovXG5uZXQvYnJpZGdlL2JyX21ycC5jOjczNzppbnQgYnJfbXJwX3NldF9pbl9zdGF0ZShzdHJ1Y3QgbmV0X2JyaWRnZSAqYnIsIHN0cnVjdCBicl9tcnBfaW5fc3RhdGUgKnN0YXRlKVxubmV0L2JyaWRnZS9icl9tcnAuYy03Mzgte1xubmV0L2JyaWRnZS9icl9tcnAuYzo3Mzk6XHRzdHJ1Y3QgYnJfbXJwICptcnAgPSBicl9tcnBfZmluZF9pbl9pZChiciwgc3RhdGUtXHUwMDNlaW5faWQpO1xubmV0L2JyaWRnZS9icl9tcnAuYy03NDAtXG4tLVxubmV0L2JyaWRnZS9icl9tcnAuYy03NDgtXG5uZXQvYnJpZGdlL2JyX21ycC5jOjc0OTpcdGJyX21ycF9zd2l0Y2hkZXZfc2V0X2luX3N0YXRlKGJyLCBtcnAsIHN0YXRlLVx1MDAzZWluX3N0YXRlKTtcbm5ldC9icmlkZ2UvYnJfbXJwLmMtNzUwLVxuLS1cbm5ldC9icmlkZ2UvYnJfbXJwLmMtNzU3LSAqL1xubmV0L2JyaWRnZS9icl9tcnAuYzo3NTg6aW50IGJyX21ycF9zZXRfaW5fcm9sZShzdHJ1Y3QgbmV0X2JyaWRnZSAqYnIsIHN0cnVjdCBicl9tcnBfaW5fcm9sZSAqcm9sZSlcbm5ldC9icmlkZ2UvYnJfbXJwLmMtNzU5LXtcbm5ldC9icmlkZ2UvYnJfbXJwLmM6NzYwOlx0c3RydWN0IGJyX21ycCAqbXJwID0gYnJfbXJwX2ZpbmRfaWQoYnIsIHJvbGUtXHUwMDNlcmluZ19pZCk7XG5uZXQvYnJpZGdlL2JyX21ycC5jOjc2MTpcdGVudW0gYnJfbXJwX2h3X3N1cHBvcnQgc3VwcG9ydDtcbm5ldC9icmlkZ2UvYnJfbXJwLmMtNzYyLVx0c3RydWN0IG5ldF9icmlkZ2VfcG9ydCAqcDtcbi0tXG5uZXQvYnJpZGdlL2JyX21ycC5jLTc2Ni1cbm5ldC9icmlkZ2UvYnJfbXJwLmM6NzY3Olx0aWYgKCFicl9tcnBfZ2V0X3BvcnQoYnIsIHJvbGUtXHUwMDNlaV9pZmluZGV4KSlcbm5ldC9icmlkZ2UvYnJfbXJwLmMtNzY4LVx0XHRyZXR1cm4gLUVJTlZBTDtcbi0tXG5uZXQvYnJpZGdlL2JyX21ycC5jLTc3OS1cdFx0Y2FuY2VsX2RlbGF5ZWRfd29ya19zeW5jKFx1MDAyNm1ycC1cdTAwM2Vpbl90ZXN0X3dvcmspO1xubmV0L2JyaWRnZS9icl9tcnAuYzo3ODA6XHRcdGJyX21ycF9zd2l0Y2hkZXZfc2VuZF9pbl90ZXN0KGJyLCBtcnAsIDAsIDAsIDApO1xubmV0L2JyaWRnZS9icl9tcnAuYy03ODEtXG4tLVxubmV0L2JyaWRnZS9icl9tcnAuYy03ODgtXHRcdHNwaW5fdW5sb2NrX2JoKFx1MDAyNmJyLVx1MDAzZWxvY2spO1xubmV0L2JyaWRnZS9icl9tcnAuYzo3ODk6XHRcdGJyX21ycF9wb3J0X3N3aXRjaGRldl9zZXRfc3RhdGUocCwgc3RhdGUpO1xubmV0L2JyaWRnZS9icl9tcnAuYy03OTAtXHRcdHJjdV9hc3NpZ25fcG9pbnRlcihtcnAtXHUwMDNlaV9wb3J0LCBOVUxMKTtcbi0tXG5uZXQvYnJpZGdlL2JyX21ycC5jLTc5OC1cdC8qIEl0IGlzIG5vdCBwb3NzaWJsZSB0byBoYXZlIHRoZSBzYW1lIHBvcnQgcGFydCBvZiBtdWx0aXBsZSByaW5ncyAqL1xubmV0L2JyaWRnZS9icl9tcnAuYzo3OTk6XHRpZiAoIWJyX21ycF91bmlxdWVfaWZpbmRleChiciwgcm9sZS1cdTAwM2VpX2lmaW5kZXgpKVxubmV0L2JyaWRnZS9icl9tcnAuYy04MDAtXHRcdHJldHVybiAtRUlOVkFMO1xuLS1cbm5ldC9icmlkZ2UvYnJfbXJwLmMtODA4LVxubmV0L2JyaWRnZS9icl9tcnAuYzo4MDk6XHRwID0gYnJfbXJwX2dldF9wb3J0KGJyLCByb2xlLVx1MDAzZWlfaWZpbmRleCk7XG5uZXQvYnJpZGdlL2JyX21ycC5jLTgxMC1cdHNwaW5fbG9ja19iaChcdTAwMjZici1cdTAwM2Vsb2NrKTtcbi0tXG5uZXQvYnJpZGdlL2JyX21ycC5jLTgxOS1cdC8qIElmIHRoZXJlIGlzIGFuIGVycm9yIGp1c3QgYmFpbGVkIG91dCAqL1xubmV0L2JyaWRnZS9icl9tcnAuYzo4MjA6XHRzdXBwb3J0ID0gYnJfbXJwX3N3aXRjaGRldl9zZXRfaW5fcm9sZShiciwgbXJwLCByb2xlLVx1MDAzZWluX2lkLFxubmV0L2JyaWRnZS9icl9tcnAuYy04MjEtXHRcdFx0XHRcdCAgICAgICByb2xlLVx1MDAzZXJpbmdfaWQsIHJvbGUtXHUwMDNlaW5fcm9sZSk7XG4tLVxubmV0L2JyaWRnZS9icl9tcnAuYy04MzktICovXG5uZXQvYnJpZGdlL2JyX21ycC5jOjg0MDppbnQgYnJfbXJwX3N0YXJ0X2luX3Rlc3Qoc3RydWN0IG5ldF9icmlkZ2UgKmJyLFxubmV0L2JyaWRnZS9icl9tcnAuYzo4NDE6XHRcdFx0IHN0cnVjdCBicl9tcnBfc3RhcnRfaW5fdGVzdCAqaW5fdGVzdClcbm5ldC9icmlkZ2UvYnJfbXJwLmMtODQyLXtcbm5ldC9icmlkZ2UvYnJfbXJwLmM6ODQzOlx0c3RydWN0IGJyX21ycCAqbXJwID0gYnJfbXJwX2ZpbmRfaW5faWQoYnIsIGluX3Rlc3QtXHUwMDNlaW5faWQpO1xubmV0L2JyaWRnZS9icl9tcnAuYzo4NDQ6XHRlbnVtIGJyX21ycF9od19zdXBwb3J0IHN1cHBvcnQ7XG5uZXQvYnJpZGdlL2JyX21ycC5jLTg0NS1cbi0tXG5uZXQvYnJpZGdlL2JyX21ycC5jLTg1NC1cdCAqL1xubmV0L2JyaWRnZS9icl9tcnAuYzo4NTU6XHRzdXBwb3J0ID0gIGJyX21ycF9zd2l0Y2hkZXZfc2VuZF9pbl90ZXN0KGJyLCBtcnAsIGluX3Rlc3QtXHUwMDNlaW50ZXJ2YWwsXG5uZXQvYnJpZGdlL2JyX21ycC5jLTg1Ni1cdFx0XHRcdFx0XHQgaW5fdGVzdC1cdTAwM2VtYXhfbWlzcyxcbi0tXG5uZXQvYnJpZGdlL2JyX21ycC5jLTg3NC0vKiBEZXRlcm1pbmUgaWYgdGhlIGZyYW1lIHR5cGUgaXMgYSByaW5nIGZyYW1lICovXG5uZXQvYnJpZGdlL2JyX21ycC5jOjg3NTpzdGF0aWMgYm9vbCBicl9tcnBfcmluZ19mcmFtZShzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxubmV0L2JyaWRnZS9icl9tcnAuYy04NzYte1xubmV0L2JyaWRnZS9icl9tcnAuYzo4Nzc6XHRjb25zdCBzdHJ1Y3QgYnJfbXJwX3Rsdl9oZHIgKmhkcjtcbm5ldC9icmlkZ2UvYnJfbXJwLmM6ODc4Olx0c3RydWN0IGJyX21ycF90bHZfaGRyIF9oZHI7XG5uZXQvYnJpZGdlL2JyX21ycC5jLTg3OS1cbi0tXG5uZXQvYnJpZGdlL2JyX21ycC5jLTg5NC0vKiBEZXRlcm1pbmUgaWYgdGhlIGZyYW1lIHR5cGUgaXMgYW4gaW50ZXJjb25uZWN0IGZyYW1lICovXG5uZXQvYnJpZGdlL2JyX21ycC5jOjg5NTpzdGF0aWMgYm9vbCBicl9tcnBfaW5fZnJhbWUoc3RydWN0IHNrX2J1ZmYgKnNrYilcbm5ldC9icmlkZ2UvYnJfbXJwLmMtODk2LXtcbm5ldC9icmlkZ2UvYnJfbXJwLmM6ODk3Olx0Y29uc3Qgc3RydWN0IGJyX21ycF90bHZfaGRyICpoZHI7XG5uZXQvYnJpZGdlL2JyX21ycC5jOjg5ODpcdHN0cnVjdCBicl9tcnBfdGx2X2hkciBfaGRyO1xubmV0L2JyaWRnZS9icl9tcnAuYy04OTktXG4tLVxubmV0L2JyaWRnZS9icl9tcnAuYy05MTctICovXG5uZXQvYnJpZGdlL2JyX21ycC5jOjkxODpzdGF0aWMgdm9pZCBicl9tcnBfbXJtX3Byb2Nlc3Moc3RydWN0IGJyX21ycCAqbXJwLCBzdHJ1Y3QgbmV0X2JyaWRnZV9wb3J0ICpwb3J0LFxubmV0L2JyaWRnZS9icl9tcnAuYy05MTktXHRcdFx0ICAgICAgIHN0cnVjdCBza19idWZmICpza2IpXG5uZXQvYnJpZGdlL2JyX21ycC5jLTkyMC17XG5uZXQvYnJpZGdlL2JyX21ycC5jOjkyMTpcdGNvbnN0IHN0cnVjdCBicl9tcnBfdGx2X2hkciAqaGRyO1xubmV0L2JyaWRnZS9icl9tcnAuYzo5MjI6XHRzdHJ1Y3QgYnJfbXJwX3Rsdl9oZHIgX2hkcjtcbm5ldC9icmlkZ2UvYnJfbXJwLmMtOTIzLVxuLS1cbm5ldC9icmlkZ2UvYnJfbXJwLmMtOTM5LVx0aWYgKG1ycC1cdTAwM2VyaW5nX3N0YXRlICE9IEJSX01SUF9SSU5HX1NUQVRFX0NMT1NFRClcbm5ldC9icmlkZ2UvYnJfbXJwLmM6OTQwOlx0XHRicl9tcnBfcmluZ19wb3J0X29wZW4ocG9ydC1cdTAwM2VkZXYsIGZhbHNlKTtcbm5ldC9icmlkZ2UvYnJfbXJwLmMtOTQxLX1cbi0tXG5uZXQvYnJpZGdlL2JyX21ycC5jLTk0My0vKiBEZXRlcm1pbmUgaWYgdGhlIHRlc3QgaGRyIGhhcyBhIGJldHRlciBwcmlvcml0eSB0aGFuIHRoZSBub2RlICovXG5uZXQvYnJpZGdlL2JyX21ycC5jOjk0NDpzdGF0aWMgYm9vbCBicl9tcnBfdGVzdF9iZXR0ZXJfdGhhbl9vd24oc3RydWN0IGJyX21ycCAqbXJwLFxubmV0L2JyaWRnZS9icl9tcnAuYy05NDUtXHRcdFx0XHRcdHN0cnVjdCBuZXRfYnJpZGdlICpicixcbm5ldC9icmlkZ2UvYnJfbXJwLmM6OTQ2Olx0XHRcdFx0XHRjb25zdCBzdHJ1Y3QgYnJfbXJwX3JpbmdfdGVzdF9oZHIgKmhkcilcbm5ldC9icmlkZ2UvYnJfbXJwLmMtOTQ3LXtcbi0tXG5uZXQvYnJpZGdlL2JyX21ycC5jLTk2MS0gKi9cbm5ldC9icmlkZ2UvYnJfbXJwLmM6OTYyOnN0YXRpYyB2b2lkIGJyX21ycF9tcmFfcHJvY2VzcyhzdHJ1Y3QgYnJfbXJwICptcnAsIHN0cnVjdCBuZXRfYnJpZGdlICpicixcbm5ldC9icmlkZ2UvYnJfbXJwLmMtOTYzLVx0XHRcdCAgICAgICBzdHJ1Y3QgbmV0X2JyaWRnZV9wb3J0ICpwb3J0LFxuLS1cbm5ldC9icmlkZ2UvYnJfbXJwLmMtOTY1LXtcbm5ldC9icmlkZ2UvYnJfbXJwLmM6OTY2Olx0Y29uc3Qgc3RydWN0IGJyX21ycF9yaW5nX3Rlc3RfaGRyICp0ZXN0X2hkcjtcbm5ldC9icmlkZ2UvYnJfbXJwLmM6OTY3Olx0c3RydWN0IGJyX21ycF9yaW5nX3Rlc3RfaGRyIF90ZXN0X2hkcjtcbm5ldC9icmlkZ2UvYnJfbXJwLmM6OTY4Olx0Y29uc3Qgc3RydWN0IGJyX21ycF90bHZfaGRyICpoZHI7XG5uZXQvYnJpZGdlL2JyX21ycC5jOjk2OTpcdHN0cnVjdCBicl9tcnBfdGx2X2hkciBfaGRyO1xubmV0L2JyaWRnZS9icl9tcnAuYy05NzAtXG4tLVxubmV0L2JyaWRnZS9icl9tcnAuYy05ODktXHQgKi9cbm5ldC9icmlkZ2UvYnJfbXJwLmM6OTkwOlx0aWYgKGJyX21ycF90ZXN0X2JldHRlcl90aGFuX293bihtcnAsIGJyLCB0ZXN0X2hkcikpXG5uZXQvYnJpZGdlL2JyX21ycC5jLTk5MS1cdFx0bXJwLVx1MDAzZXRlc3RfY291bnRfbWlzcyA9IDA7XG4tLVxubmV0L2JyaWRnZS9icl9tcnAuYy05OTctICovXG5uZXQvYnJpZGdlL2JyX21ycC5jOjk5ODpzdGF0aWMgYm9vbCBicl9tcnBfbWltX3Byb2Nlc3Moc3RydWN0IGJyX21ycCAqbXJwLCBzdHJ1Y3QgbmV0X2JyaWRnZV9wb3J0ICpwb3J0LFxubmV0L2JyaWRnZS9icl9tcnAuYy05OTktXHRcdFx0ICAgICAgIHN0cnVjdCBza19idWZmICpza2IpXG5uZXQvYnJpZGdlL2JyX21ycC5jLTEwMDAte1xubmV0L2JyaWRnZS9icl9tcnAuYzoxMDAxOlx0Y29uc3Qgc3RydWN0IGJyX21ycF9pbl90ZXN0X2hkciAqaW5faGRyO1xubmV0L2JyaWRnZS9icl9tcnAuYzoxMDAyOlx0c3RydWN0IGJyX21ycF9pbl90ZXN0X2hkciBfaW5faGRyO1xubmV0L2JyaWRnZS9icl9tcnAuYzoxMDAzOlx0Y29uc3Qgc3RydWN0IGJyX21ycF90bHZfaGRyICpoZHI7XG5uZXQvYnJpZGdlL2JyX21ycC5jOjEwMDQ6XHRzdHJ1Y3QgYnJfbXJwX3Rsdl9oZHIgX2hkcjtcbm5ldC9icmlkZ2UvYnJfbXJwLmMtMTAwNS1cbi0tXG5uZXQvYnJpZGdlL2JyX21ycC5jLTEwMjgtXHRpZiAobXJwLVx1MDAzZWluX3N0YXRlICE9IEJSX01SUF9JTl9TVEFURV9DTE9TRUQpXG5uZXQvYnJpZGdlL2JyX21ycC5jOjEwMjk6XHRcdGJyX21ycF9pbl9wb3J0X29wZW4ocG9ydC1cdTAwM2VkZXYsIGZhbHNlKTtcbm5ldC9icmlkZ2UvYnJfbXJwLmMtMTAzMC1cbi0tXG5uZXQvYnJpZGdlL2JyX21ycC5jLTEwMzYtICovXG5uZXQvYnJpZGdlL2JyX21ycC5jOjEwMzc6c3RhdGljIHU4IGJyX21ycF9nZXRfZnJhbWVfdHlwZShzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxubmV0L2JyaWRnZS9icl9tcnAuYy0xMDM4LXtcbm5ldC9icmlkZ2UvYnJfbXJwLmM6MTAzOTpcdGNvbnN0IHN0cnVjdCBicl9tcnBfdGx2X2hkciAqaGRyO1xubmV0L2JyaWRnZS9icl9tcnAuYzoxMDQwOlx0c3RydWN0IGJyX21ycF90bHZfaGRyIF9oZHI7XG5uZXQvYnJpZGdlL2JyX21ycC5jLTEwNDEtXG4tLVxubmV0L2JyaWRnZS9icl9tcnAuYy0xMDUxLVxubmV0L2JyaWRnZS9icl9tcnAuYzoxMDUyOnN0YXRpYyBib29sIGJyX21ycF9tcm1fYmVoYXZpb3VyKHN0cnVjdCBicl9tcnAgKm1ycClcbm5ldC9icmlkZ2UvYnJfbXJwLmMtMTA1My17XG4tLVxubmV0L2JyaWRnZS9icl9tcnAuYy0xMDYwLVxubmV0L2JyaWRnZS9icl9tcnAuYzoxMDYxOnN0YXRpYyBib29sIGJyX21ycF9tcmNfYmVoYXZpb3VyKHN0cnVjdCBicl9tcnAgKm1ycClcbm5ldC9icmlkZ2UvYnJfbXJwLmMtMTA2Mi17XG4tLVxubmV0L2JyaWRnZS9icl9tcnAuYy0xMDczLSAqL1xubmV0L2JyaWRnZS9icl9tcnAuYzoxMDc0OnN0YXRpYyBpbnQgYnJfbXJwX3JjdihzdHJ1Y3QgbmV0X2JyaWRnZV9wb3J0ICpwLFxubmV0L2JyaWRnZS9icl9tcnAuYy0xMDc1LVx0XHQgICAgICBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuLS1cbm5ldC9icmlkZ2UvYnJfbXJwLmMtMTA4Ni1cdGJyID0gcC1cdTAwM2Vicjtcbm5ldC9icmlkZ2UvYnJfbXJwLmM6MTA4NzpcdG1ycCA9ICBicl9tcnBfZmluZF9wb3J0KGJyLCBwKTtcbm5ldC9icmlkZ2UvYnJfbXJwLmMtMTA4OC1cdGlmICh1bmxpa2VseSghbXJwKSlcbi0tXG5uZXQvYnJpZGdlL2JyX21ycC5jLTExMDMtXHQgKi9cbm5ldC9icmlkZ2UvYnJfbXJwLmM6MTEwNDpcdGlmIChicl9tcnBfcmluZ19mcmFtZShza2IpKSB7XG5uZXQvYnJpZGdlL2JyX21ycC5jLTExMDUtXHRcdC8qIElmIHRoZSByb2xlIGlzIE1STSB0aGVuIGRvbiYjMzk7dCBmb3J3YXJkIHRoZSBmcmFtZXMgKi9cbm5ldC9icmlkZ2UvYnJfbXJwLmMtMTEwNi1cdFx0aWYgKG1ycC1cdTAwM2VyaW5nX3JvbGUgPT0gQlJfTVJQX1JJTkdfUk9MRV9NUk0pIHtcbm5ldC9icmlkZ2UvYnJfbXJwLmM6MTEwNzpcdFx0XHRicl9tcnBfbXJtX3Byb2Nlc3MobXJwLCBwLCBza2IpO1xubmV0L2JyaWRnZS9icl9tcnAuYy0xMTA4LVx0XHRcdGdvdG8gbm9fZm9yd2FyZDtcbi0tXG5uZXQvYnJpZGdlL2JyX21ycC5jLTExMTUtXHRcdFx0aWYgKCFtcnAtXHUwMDNldGVzdF9tb25pdG9yKSB7XG5uZXQvYnJpZGdlL2JyX21ycC5jOjExMTY6XHRcdFx0XHRicl9tcnBfbXJtX3Byb2Nlc3MobXJwLCBwLCBza2IpO1xubmV0L2JyaWRnZS9icl9tcnAuYy0xMTE3LVx0XHRcdFx0Z290byBub19mb3J3YXJkO1xuLS1cbm5ldC9icmlkZ2UvYnJfbXJwLmMtMTExOS1cbm5ldC9icmlkZ2UvYnJfbXJwLmM6MTEyMDpcdFx0XHRicl9tcnBfbXJhX3Byb2Nlc3MobXJwLCBiciwgcCwgc2tiKTtcbm5ldC9icmlkZ2UvYnJfbXJwLmMtMTEyMS1cdFx0fVxuLS1cbm5ldC9icmlkZ2UvYnJfbXJwLmMtMTEyNS1cbm5ldC9icmlkZ2UvYnJfbXJwLmM6MTEyNjpcdGlmIChicl9tcnBfaW5fZnJhbWUoc2tiKSkge1xubmV0L2JyaWRnZS9icl9tcnAuYzoxMTI3Olx0XHR1OCBpbl90eXBlID0gYnJfbXJwX2dldF9mcmFtZV90eXBlKHNrYik7XG5uZXQvYnJpZGdlL2JyX21ycC5jLTExMjgtXG4tLVxubmV0L2JyaWRnZS9icl9tcnAuYy0xMTM0LVx0XHQgKi9cbm5ldC9icmlkZ2UvYnJfbXJwLmM6MTEzNTpcdFx0aWYgKGJyX21ycF9pc19yaW5nX3BvcnQocF9wb3J0LCBzX3BvcnQsIHApIFx1MDAyNlx1MDAyNlxubmV0L2JyaWRnZS9icl9tcnAuYy0xMTM2LVx0XHQgICAgcC1cdTAwM2VzdGF0ZSA9PSBCUl9TVEFURV9CTE9DS0lORyBcdTAwMjZcdTAwMjZcbi0tXG5uZXQvYnJpZGdlL2JyX21ycC5jLTExNDMtXHRcdCAqL1xubmV0L2JyaWRnZS9icl9tcnAuYzoxMTQ0Olx0XHRpZiAoYnJfbXJwX21ybV9iZWhhdmlvdXIobXJwKSBcdTAwMjZcdTAwMjZcbm5ldC9icmlkZ2UvYnJfbXJwLmM6MTE0NTpcdFx0ICAgIGJyX21ycF9pc19yaW5nX3BvcnQocF9wb3J0LCBzX3BvcnQsIHApIFx1MDAyNlx1MDAyNlxubmV0L2JyaWRnZS9icl9tcnAuYy0xMTQ2LVx0XHQgICAgKHNfcG9ydC1cdTAwM2VzdGF0ZSAhPSBCUl9TVEFURV9GT1JXQVJESU5HIHx8XG4tLVxubmV0L2JyaWRnZS9icl9tcnAuYy0xMTU1LVx0XHQgKi9cbm5ldC9icmlkZ2UvYnJfbXJwLmM6MTE1NjpcdFx0aWYgKGJyX21ycF9tcmNfYmVoYXZpb3VyKG1ycCkgXHUwMDI2XHUwMDI2XG5uZXQvYnJpZGdlL2JyX21ycC5jLTExNTctXHRcdCAgICBtcnAtXHUwMDNlaW5fcm9sZSA9PSBCUl9NUlBfSU5fUk9MRV9ESVNBQkxFRClcbi0tXG5uZXQvYnJpZGdlL2JyX21ycC5jLTExNjQtXHRcdFx0XHQgKi9cbm5ldC9icmlkZ2UvYnJfbXJwLmM6MTE2NTpcdFx0XHRcdGlmIChicl9tcnBfbWltX3Byb2Nlc3MobXJwLCBwLCBza2IpKSB7XG5uZXQvYnJpZGdlL2JyX21ycC5jLTExNjYtXHRcdFx0XHRcdGdvdG8gbm9fZm9yd2FyZDtcbm5ldC9icmlkZ2UvYnJfbXJwLmMtMTE2Ny1cdFx0XHRcdH0gZWxzZSB7XG5uZXQvYnJpZGdlL2JyX21ycC5jOjExNjg6XHRcdFx0XHRcdGlmIChicl9tcnBfaXNfcmluZ19wb3J0KHBfcG9ydCwgc19wb3J0LFxubmV0L2JyaWRnZS9icl9tcnAuYy0xMTY5LVx0XHRcdFx0XHRcdFx0XHRwKSlcbi0tXG5uZXQvYnJpZGdlL2JyX21ycC5jLTExNzEtXG5uZXQvYnJpZGdlL2JyX21ycC5jOjExNzI6XHRcdFx0XHRcdGlmIChicl9tcnBfaXNfaW5fcG9ydChpX3BvcnQsIHApKVxubmV0L2JyaWRnZS9icl9tcnAuYy0xMTczLVx0XHRcdFx0XHRcdGdvdG8gbm9fZm9yd2FyZDtcbi0tXG5uZXQvYnJpZGdlL2JyX21ycC5jLTExODEtXHRcdFx0XHQgKi9cbm5ldC9icmlkZ2UvYnJfbXJwLmM6MTE4MjpcdFx0XHRcdGlmIChicl9tcnBfaXNfcmluZ19wb3J0KHBfcG9ydCwgc19wb3J0LCBwKSlcbm5ldC9icmlkZ2UvYnJfbXJwLmMtMTE4My1cdFx0XHRcdFx0aV9kc3QgPSBOVUxMO1xubmV0L2JyaWRnZS9icl9tcnAuYy0xMTg0LVxubmV0L2JyaWRnZS9icl9tcnAuYzoxMTg1Olx0XHRcdFx0aWYgKGJyX21ycF9pc19pbl9wb3J0KGlfcG9ydCwgcCkpXG5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMDg6NTk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTU3MjgKCQkJCQkJCW91dHB1dDogMzIKCQkJCQkJCXRob3VnaHRzOiAxNjMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBNUlAgTmV0bGluayBJbnRlcmZhY2UqKgoKT2theSwgc28gSSYjMzk7bSBkaXZpbmcgaW50byB0aGlzIE1SUCBpbXBsZW1lbnRhdGlvbiwgYW5kIGl0IGxvb2tzIGxpa2UgdGhlIGtleSBlbnRyeSBwb2ludHMgZm9yIE5ldGxpbmsgaW50ZXJhY3Rpb25zIGFyZSB0aGVzZSBmdW5jdGlvbnM6IGBicl9tcnBfYWRkYCwgYGJyX21ycF9kZWxgLCBgYnJfbXJwX3NldF9wb3J0X3N0YXRlYCwgYGJyX21ycF9zZXRfcG9ydF9yb2xlYCwgYGJyX21ycF9zZXRfcmluZ19zdGF0ZWAsIGBicl9tcnBfc2V0X3Jpbmdfcm9sZWAsIGBicl9tcnBfc3RhcnRfdGVzdGAsIGBicl9tcnBfc2V0X2luX3N0YXRlYCwgYGJyX21ycF9zZXRfaW5fcm9sZWAsIGFuZCBgYnJfbXJwX3N0YXJ0X2luX3Rlc3RgLiBPYnZpb3VzbHksIHRoZXNlIGFyZSB0cmlnZ2VyZWQgYnkgTmV0bGluayBtZXNzYWdlcywgd2hpY2ggaXMgc3RhbmRhcmQuCgpUbyBnZXQgYSBiZXR0ZXIgaGFuZGxlIG9uIHRoZSBhcmNoaXRlY3R1cmUsIG15IG5leHQgc3RlcCBpcyB0byBmaWd1cmUgb3V0IGV4YWN0bHkgaG93IHRoZXNlIGZ1bmN0aW9ucyBhcmUgaW52b2tlZC4gSSYjMzk7bSBnb2luZyB0byBkaWcgaW50byB0aGUgTmV0bGluayBjb2RlIHRvIHNlZSB0aGUgbWVzc2FnZSBoYW5kbGVycy4gSSBleHBlY3QgdG8gZmluZCB0aGUgcmVsZXZhbnQgY29kZSBpbiBlaXRoZXIgYG5ldC9icmlkZ2UvYnJfbmV0bGluay5jYCBvciwgbW9yZSBsaWtlbHkgZ2l2ZW4gdGhlIG5hbWluZywgYG5ldC9icmlkZ2UvYnJfbXJwX25ldGxpbmsuY2AuIFRoYXQgc2hvdWxkIHByb3ZpZGUgdGhlIG5lY2Vzc2FyeSBjb250ZXh0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAwODo1OTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDticl9tcnBfc3RhcnRfdGVzdCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9icmlkZ2UvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9icmlkZ2UvYnJfbXJwLmM9NjcxPWludCBicl9tcnBfc2V0X3Jpbmdfcm9sZShzdHJ1Y3QgbmV0X2JyaWRnZSAqYnIsXG4tLVxubmV0L2JyaWRnZS9icl9tcnAuYy03MDEtICovXG5uZXQvYnJpZGdlL2JyX21ycC5jOjcwMjppbnQgYnJfbXJwX3N0YXJ0X3Rlc3Qoc3RydWN0IG5ldF9icmlkZ2UgKmJyLFxubmV0L2JyaWRnZS9icl9tcnAuYzo3MDM6XHRcdCAgICAgIHN0cnVjdCBicl9tcnBfc3RhcnRfdGVzdCAqdGVzdClcbm5ldC9icmlkZ2UvYnJfbXJwLmMtNzA0LXtcbi0tXG5uZXQvYnJpZGdlL2JyX21ycF9uZXRsaW5rLmM9MTk1PXN0YXRpYyBjb25zdCBzdHJ1Y3QgbmxhX3BvbGljeVxubmV0L2JyaWRnZS9icl9tcnBfbmV0bGluay5jOjE5Njpicl9tcnBfc3RhcnRfdGVzdF9wb2xpY3lbSUZMQV9CUklER0VfTVJQX1NUQVJUX1RFU1RfTUFYICYjNDM7IDFdID0ge1xubmV0L2JyaWRnZS9icl9tcnBfbmV0bGluay5jLTE5Ny1cdFtJRkxBX0JSSURHRV9NUlBfU1RBUlRfVEVTVF9VTlNQRUNdXHQ9IHsgLnR5cGUgPSBOTEFfUkVKRUNUIH0sXG4tLVxubmV0L2JyaWRnZS9icl9tcnBfbmV0bGluay5jLTIwNC1cbm5ldC9icmlkZ2UvYnJfbXJwX25ldGxpbmsuYzoyMDU6c3RhdGljIGludCBicl9tcnBfc3RhcnRfdGVzdF9wYXJzZShzdHJ1Y3QgbmV0X2JyaWRnZSAqYnIsIHN0cnVjdCBubGF0dHIgKmF0dHIsXG5uZXQvYnJpZGdlL2JyX21ycF9uZXRsaW5rLmMtMjA2LVx0XHRcdFx0ICAgc3RydWN0IG5ldGxpbmtfZXh0X2FjayAqZXh0YWNrKVxuLS1cbm5ldC9icmlkZ2UvYnJfbXJwX25ldGxpbmsuYy0yMDgtXHRzdHJ1Y3QgbmxhdHRyICp0YltJRkxBX0JSSURHRV9NUlBfU1RBUlRfVEVTVF9NQVggJiM0MzsgMV07XG5uZXQvYnJpZGdlL2JyX21ycF9uZXRsaW5rLmM6MjA5Olx0c3RydWN0IGJyX21ycF9zdGFydF90ZXN0IHRlc3Q7XG5uZXQvYnJpZGdlL2JyX21ycF9uZXRsaW5rLmMtMjEwLVx0aW50IGVycjtcbi0tXG5uZXQvYnJpZGdlL2JyX21ycF9uZXRsaW5rLmMtMjEyLVx0ZXJyID0gbmxhX3BhcnNlX25lc3RlZCh0YiwgSUZMQV9CUklER0VfTVJQX1NUQVJUX1RFU1RfTUFYLCBhdHRyLFxubmV0L2JyaWRnZS9icl9tcnBfbmV0bGluay5jOjIxMzpcdFx0XHQgICAgICAgYnJfbXJwX3N0YXJ0X3Rlc3RfcG9saWN5LCBleHRhY2spO1xubmV0L2JyaWRnZS9icl9tcnBfbmV0bGluay5jLTIxNC1cdGlmIChlcnIpXG4tLVxubmV0L2JyaWRnZS9icl9tcnBfbmV0bGluay5jLTIzNy1cbm5ldC9icmlkZ2UvYnJfbXJwX25ldGxpbmsuYzoyMzg6XHRyZXR1cm4gYnJfbXJwX3N0YXJ0X3Rlc3QoYnIsIFx1MDAyNnRlc3QpO1xubmV0L2JyaWRnZS9icl9tcnBfbmV0bGluay5jLTIzOS19XG4tLVxubmV0L2JyaWRnZS9icl9tcnBfbmV0bGluay5jPTM1Nj1pbnQgYnJfbXJwX3BhcnNlKHN0cnVjdCBuZXRfYnJpZGdlICpiciwgc3RydWN0IG5ldF9icmlkZ2VfcG9ydCAqcCxcbi0tXG5uZXQvYnJpZGdlL2JyX21ycF9uZXRsaW5rLmMtNDE0LVx0aWYgKHRiW0lGTEFfQlJJREdFX01SUF9TVEFSVF9URVNUXSkge1xubmV0L2JyaWRnZS9icl9tcnBfbmV0bGluay5jOjQxNTpcdFx0ZXJyID0gYnJfbXJwX3N0YXJ0X3Rlc3RfcGFyc2UoYnIsXG5uZXQvYnJpZGdlL2JyX21ycF9uZXRsaW5rLmMtNDE2LVx0XHRcdFx0XHQgICAgICB0YltJRkxBX0JSSURHRV9NUlBfU1RBUlRfVEVTVF0sXG4tLVxubmV0L2JyaWRnZS9icl9wcml2YXRlX21ycC5oPTc0PWludCBicl9tcnBfc2V0X3Jpbmdfcm9sZShzdHJ1Y3QgbmV0X2JyaWRnZSAqYnIsIHN0cnVjdCBicl9tcnBfcmluZ19yb2xlICpyb2xlKTtcbm5ldC9icmlkZ2UvYnJfcHJpdmF0ZV9tcnAuaDo3NTppbnQgYnJfbXJwX3N0YXJ0X3Rlc3Qoc3RydWN0IG5ldF9icmlkZ2UgKmJyLCBzdHJ1Y3QgYnJfbXJwX3N0YXJ0X3Rlc3QgKnRlc3QpO1xubmV0L2JyaWRnZS9icl9wcml2YXRlX21ycC5oLTc2LWludCBicl9tcnBfc2V0X2luX3N0YXRlKHN0cnVjdCBuZXRfYnJpZGdlICpiciwgc3RydWN0IGJyX21ycF9pbl9zdGF0ZSAqc3RhdGUpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAwODo1OTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNzEyMQoJCQkJCQkJb3V0cHV0OiAzMQoJCQkJCQkJdGhvdWdodHM6IDEzMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIE5ldGxpbmsgTWVzc2FnZSBQYXRoIGFuZCBTdHJ1Y3R1cmUgRml4KioKCk9rYXksIHNvIHRoZSBjb2RlIGRlZmluaXRlbHkgdXNlcyBuZXRsaW5rIG1lc3NhZ2VzIHRvIHJlYWNoIHRoZXNlIGZ1bmN0aW9ucyDigJMgdGhhdCYjMzk7cyB0aGUgZXN0YWJsaXNoZWQgbWVjaGFuaXNtLiBOb3csIHRoaXMgcGF0Y2ggYWRkcmVzc2VzIGEgc3BlY2lmaWMgaXNzdWUgd2l0aGluIGBicl9tcnBfYWxsb2NfdGVzdF9za2JgLiBJdCBsb29rcyBsaWtlIHRoZSBwcm9ibGVtIGxpZXMgaW4gYW4gaW5jb3JyZWN0IHVzZSBvZiBgc2l6ZW9mKG91aSlgIGluc3RlYWQgb2YgdGhlIGNvcnJlY3QgYHNpemVvZigqb3VpKWAuIFJpZ2h0LCBgb3VpYCBpcyBhIHBvaW50ZXIgdG8gYSBgc3RydWN0IGJyX21ycF9vdWlfaGRyYC4gVXNpbmcgYHNpemVvZihvdWkpYCBnaXZlcyBtZSB0aGUgc2l6ZSBvZiB0aGUgKnBvaW50ZXIqIGl0c2VsZiAoOCBieXRlcyBvbiBhIDY0LWJpdCBzeXN0ZW0pLCBidXQgSSBuZWVkIHRoZSBhY3R1YWwgc2l6ZSBvZiB0aGUgc3RydWN0IGl0IHBvaW50cyB0by4gVGhhdCB3b3VsZCBiZSBgc2l6ZW9mKCpvdWkpYC4KCkxldCBtZSBqdXN0IGNvbmZpcm0gdGhlIHN0cnVjdCYjMzk7cyBsYXlvdXQuIEFoLCB0aGUgZGVmaW5pdGlvbiBvZiBgc3RydWN0IGJyX21ycF9vdWlfaGRyYCBpcyBpbiBgaW5jbHVkZS91YXBpL2xpbnV4L21ycF9icmlkZ2UuaGAuIEkmIzM5O2xsIHBvcCBvcGVuIHRoYXQgaGVhZGVyIGZpbGUgdG8gdmVyaWZ5IHRoZSBmaWVsZCBkZWZpbml0aW9ucyBhbmQgdG90YWwgc2l6ZS4gSW1wb3J0YW50IHRvIGtub3cgZm9yIHRoaXMgYWxsb2NhdGlvbiEKCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMDg6NTk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtzdHJ1Y3QgYnJfbXJwX291aV9oZHImIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtpbmNsdWRlLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDA4OjU5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE3NTIxCgkJCQkJCQlvdXRwdXQ6IDI4CgkJCQkJCQl0aG91Z2h0czogMTUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipJbnZlc3RpZ2F0aW5nIGBicl9tcnBfb3VpX2hkcmAqKgoKQWxyaWdodCwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGlzLiBUaGUgaW5pdGlhbCBpbXB1bHNlIGhlcmUgaXMgdG8gdW5kZXJzdGFuZCB0aGUgY29udGV4dCBhbmQgaW1wbGljYXRpb25zIG9mIGBicl9tcnBfb3VpX2hkcmAuIEl0JiMzOTtzIGEgcmF0aGVyIHNwZWNpZmljIGlkZW50aWZpZXIsIGFuZCBteSBleHBlcmllbmNlIHRlbGxzIG1lIHRoaXMgaXMgbGlrZWx5IHJlbGF0ZWQgdG8gc29tZSBmb3JtIG9mIEJyaWRnZSBNdWx0aWNhc3QgUmVnaXN0cmF0aW9uIFByb3RvY29sIChCTVJQKSBvciBhIHJlbGF0ZWQgT1VJIChPcmdhbml6YXRpb25hbGx5IFVuaXF1ZSBJZGVudGlmaWVyKSBoZWFkZXIuIEdpdmVuIHRoZSBuYW1lLCBJJiMzOTtkIGFudGljaXBhdGUgdGhpcyBiZWluZyBhIHN0cnVjdHVyYWwgY29tcG9uZW50IG9yIGEga2V5IGRhdGEgZmllbGQgd2l0aGluIGEgcGFydGljdWxhciBwcm90b2NvbCBtZXNzYWdlLCBxdWl0ZSBwb3NzaWJseSBhIGhlYWRlciBzdHJ1Y3R1cmUuCgpJbW1lZGlhdGVseSwgSSYjMzk7bSB0aGlua2luZyBhYm91dCB0aGUgc3RhbmRhcmQgc3BlY2lmaWNhdGlvbnMgYXNzb2NpYXRlZCB3aXRoIEJNUlAgKGlmIGl0IGlzIEJNUlApLCBpdHMgcmVsYXRpb24gdG8gdmFyaW91cyBWTEFOIGNvbmZpZ3VyYXRpb25zLCBhbmQgcG9zc2libHkgbXVsdGljYXN0IGdyb3VwIG1hbmFnZW1lbnQuIFRoZSBPVUkgYXNwZWN0IHNwYXJrcyBjdXJpb3NpdHk7IGl0IHBvaW50cyB0byBhIGxldmVsIG9mIHZlbmRvci1zcGVjaWZpYyBjdXN0b21pemF0aW9uIG9yIGFuIGV4dGVuZGVkIGZlYXR1cmUgc2V0IGJleW9uZCB0aGUgYmFzZSBwcm90b2NvbCBkZWZpbml0aW9ucy4gSXMgdGhpcyBhIGN1c3RvbSBpbXBsZW1lbnRhdGlvbiwgb3IgZG9lcyBpdCBhZGhlcmUgdG8gZXN0YWJsaXNoZWQgc3RhbmRhcmRzIGJ1dCBpbmNvcnBvcmF0ZXMgYW4gT1VJIGZvciBkaXN0aW5ndWlzaGluZyBpdD8KCk15IG1lbnRhbCBjaGVja2xpc3QgaXMgYWxyZWFkeSBydW5uaW5nIHRocm91Z2ggcG90ZW50aWFsIGFyZWFzIHRvIGV4YW1pbmU6IGtlcm5lbCBoZWFkZXJzLCBuZXR3b3JrIHByb3RvY29sIGRlZmluaXRpb25zLCByZWxldmFudCBSRkNzLCBhbmQgYW55IHZlbmRvci1zcGVjaWZpYyBkb2N1bWVudGF0aW9uIHJlbGF0ZWQgdG8gYnJpZGdlIG9yIG11bHRpY2FzdCBjb25maWd1cmF0aW9ucy4gVGhpcyBuYW1lIHN1Z2dlc3RzIGEgbG93LWxldmVsIGRhdGEgc3RydWN0dXJlLiBJJiMzOTtsbCBuZWVkIHRvIHNjcnV0aW5pemUgdGhlIGNvZGUgb3IgZG9jdW1lbnRhdGlvbiBhc3NvY2lhdGVkIHdpdGggaXRzIHVzZSwgc3BlY2lmaWNhbGx5IGxvb2tpbmcgZm9yIGhvdyB0aGlzIGhlYWRlciBpcyBwYXJzZWQsIGNyZWF0ZWQsIGFuZCBtYW5pcHVsYXRlZC4gSXMgaXQgYSBjcml0aWNhbCBmaWVsZCBmb3IgZnJhbWUgZm9yd2FyZGluZyBkZWNpc2lvbnMsIHNlY3VyaXR5IGNoZWNrcywgb3IgcmVzb3VyY2UgYWxsb2NhdGlvbiB3aXRoaW4gYSBuZXR3b3JrIGJyaWRnZSBlbnZpcm9ubWVudD8gVGhhdCYjMzk7cyB3aGF0IEkmIzM5O2xsIG5lZWQgdG8gZmlndXJlIG91dC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMDg6NTk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7YnJfbXJwX291aV9oZHImIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDsmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L2JyaWRnZS9icl9tcnAuYz0xODI9c3RhdGljIHN0cnVjdCBza19idWZmICpicl9tcnBfYWxsb2NfdGVzdF9za2Ioc3RydWN0IGJyX21ycCAqbXJwLFxuLS1cbm5ldC9icmlkZ2UvYnJfbXJwLmMtMjE0LVx0XHRzdHJ1Y3QgYnJfbXJwX3Rsdl9oZHIgKnN1Yl90bHYgPSBOVUxMO1xubmV0L2JyaWRnZS9icl9tcnAuYzoyMTU6XHRcdHN0cnVjdCBicl9tcnBfb3VpX2hkciAqb3VpID0gTlVMTDtcbm5ldC9icmlkZ2UvYnJfbXJwLmMtMjE2LVx0XHR1OCBsZW5ndGg7XG4tLVxubmV0L2JyaWRnZS9icl9wcml2YXRlX21ycC5oPTEzMD1zdHJ1Y3QgYnJfbXJwX2luX3Rlc3RfaGRyIHtcbi0tXG5uZXQvYnJpZGdlL2JyX3ByaXZhdGVfbXJwLmgtMTM4LVxubmV0L2JyaWRnZS9icl9wcml2YXRlX21ycC5oOjEzOTpzdHJ1Y3QgYnJfbXJwX291aV9oZHIge1xubmV0L2JyaWRnZS9icl9wcml2YXRlX21ycC5oLTE0MC1cdF9fdTggb3VpW01SUF9PVUlfTEVOR1RIXTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMDg6NTk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTgxNTMKCQkJCQkJCW91dHB1dDogNDAKCQkJCQkJCXRob3VnaHRzOiAyMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkRpdmluZyBpbnRvIGBicl9wcml2YXRlX21ycC5oYCAtIExpbmUgMTM5KioKCk9rYXksIGxldCYjMzk7cyB6ZXJvIGluIG9uIGBicl9wcml2YXRlX21ycC5oYC4gSSYjMzk7bSBnb2luZyB0byBqdW1wIHN0cmFpZ2h0IHRvIGFyb3VuZCBsaW5lIDEzOS4gSSYjMzk7bSBwcm9iYWJseSBsb29raW5nIGZvciBhIHNwZWNpZmljIGRhdGEgc3RydWN0dXJlIGRlZmluaXRpb24sIHBlcmhhcHMgYSBmdW5jdGlvbiBwcm90b3R5cGUsIG9yIG1heWJlIGEgbWFjcm8gZGVmaW5pdGlvbiByZWxhdGVkIHRvIE1SUCBoYW5kbGluZy4gR2l2ZW4gdGhlIGZpbGUgbmFtZSwgaXQmIzM5O3MgbGlrZWx5IHNvbWV0aGluZyBsb3ctbGV2ZWwgYW5kIHByaXZhdGUgdG8gdGhlIE1SUCBpbXBsZW1lbnRhdGlvbi4gSSYjMzk7bSBleHBlY3RpbmcgdG8gc2VlIHNvbWV0aGluZyB0aGF0IGludGVyZmFjZXMgd2l0aCB0aGUgYmFzZWJhbmQsIHRoZSByYWRpbywgb3IgbmV0d29yayBwcm90b2NvbHMsIGdpdmVuIHRoaXMgaXMgcHJpdmF0ZSBoZWFkZXIuIFRoZSBsaW5lIG51bWJlciBzdWdnZXN0cyBpdCYjMzk7cyBhIG5vbnRyaXZpYWwgYW1vdW50IG9mIGNvZGUsIHNvIEkmIzM5O20gaG9waW5nIHRvIHF1aWNrbHkgaWRlbnRpZnkgdGhlIGNydWNpYWwgY29tcG9uZW50IG9yIHBvaW50IG9mIGludGVyZXN0IHJhdGhlciB0aGFuIGdldHRpbmcgYm9nZ2VkIGRvd24gaW4gdGhlIG1pbnV0aWFlLiBNeSBndXQgdGVsbHMgbWUgaXQmIzM5O2xsIGJlIHJlbGF0ZWQgdG8gYnVmZmVyaW5nLCBzY2hlZHVsaW5nLCBvciBwb3NzaWJseSBlcnJvciBoYW5kbGluZyB3aXRoaW4gdGhlIE1SUCBmcmFtZXdvcmsuIExldCYjMzk7cyBzZWUgaWYgdGhlIGNvZGUgY29uZmlybXMgbXkgaW5pdGlhbCBhc3N1bXB0aW9ucy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMDg6NTk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtuZXQvYnJpZGdlL2JyX3ByaXZhdGVfbXJwLmgmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxMzAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDEzMDpcdHN0cnVjdCBicl9tcnBfaW5fdGVzdF9oZHIge1xuIDEzMTpcdFx0X19iZTE2IGlkO1xuIDEzMjpcdFx0X191OCBzYVtFVEhfQUxFTl07XG4gMTMzOlx0XHRfX2JlMTYgcG9ydF9yb2xlO1xuIDEzNDpcdFx0X19iZTE2IHN0YXRlO1xuIDEzNTpcdFx0X19iZTE2IHRyYW5zaXRpb25zO1xuIDEzNjpcdFx0X19iZTMyIHRpbWVzdGFtcDtcbiAxMzc6XHR9IF9fYXR0cmlidXRlX18oKF9fcGFja2VkX18pKTtcbiAxMzg6XHRcbiAxMzk6XHRzdHJ1Y3QgYnJfbXJwX291aV9oZHIge1xuIDE0MDpcdFx0X191OCBvdWlbTVJQX09VSV9MRU5HVEhdO1xuIDE0MTpcdH07XG4gMTQyOlx0XG4gMTQzOlx0c3RydWN0IGJyX21ycF9zdWJfb3B0aW9uMV9oZHIge1xuIDE0NDpcdFx0X191OCB0eXBlO1xuIDE0NTpcdFx0X191OCBkYXRhW01SUF9NQU5VRkFDVFVSRV9EQVRBX0xFTkdUSF07XG4gMTQ2Olx0fTtcbiAxNDc6XHRcbiAxNDg6XHQjZW5kaWYgLyogX0JSX1BSSVZBVEVfTVJQX0ggKi9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMDg6NTk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTg3MTQKCQkJCQkJCW91dHB1dDogMzYKCQkJCQkJCXRob3VnaHRzOiAxMzYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBNUlAgSW1wbGVtZW50YXRpb24qKgoKT2theSwgc28gSSYjMzk7dmUgYmVlbiBsb29raW5nIGF0IHRoaXMgY29kZSBhbmQgSSYjMzk7dmUgemVyb2VkIGluIG9uIHdoYXQmIzM5O3MgbGlrZWx5IHRoZSByb290IGNhdXNlLiBNeSBndXQgZmVlbGluZyBpcyB0aGF0IGBNUlBfT1VJX0xFTkdUSGAgaXMgMywgd2hpY2ggaXMgcHJldHR5IHN0YW5kYXJkIGZvciBPVUkgbGVuZ3RocywgYnV0IHRoZSBjcnVjaWFsIHRoaW5nIGhlcmUgaXMgaG93IHRoYXQgdHJhbnNsYXRlcyB0byBtZW1vcnkgYWxsb2NhdGlvbi4gSXQgbG9va3MgbGlrZSBgc2l6ZW9mKCpvdWkpYCBpcyBjb3JyZWN0bHkgY2FsY3VsYXRpbmcgdGhlIHNpemUgb2YgYSBzaW5nbGUgT1VJIGVsZW1lbnQgYXMgMywgYnV0IHRoZW4gYHNpemVvZihvdWkpYCB3YXMgcmV0dXJuaW5nIDguIEl0IHdvdWxkIGFwcGVhciB0aGlzIGRpZmZlcmVuY2UgaXMgbGVhZGluZyB0byBhbiBpbmNvcnJlY3QgbGVuZ3RoIGNhbGN1bGF0aW9uLCBhbmQgdGhhdCYjMzk7cyB0aGUgdnVsbmVyYWJpbGl0eS4KClRoaXMgcGF0Y2ggc2hvdWxkIGZpeCB0aGF0IGxlbmd0aCBjYWxjdWxhdGlvbiBpc3N1ZSwgd2hpY2ggd2lsbCBpbXBhY3QgdGhlIGFjdHVhbCBNUlAgcHJvdG9jb2wgaW1wbGVtZW50YXRpb24gYW5kIGl0cyBmdW5jdGlvbmFsaXR5LCBub3QganVzdCB0aGUgY29kZSBpdHNlbGYuIEdpdmVuIHRoYXQgdGhpcyBpcyBhIGNoYW5nZSB0byB0aGUgZnVuZGFtZW50YWwgcHJvdG9jb2wgaGFuZGxpbmcsIGl0JiMzOTtzIGRlZmluaXRlbHkgc29tZXRoaW5nIHdlIG5lZWQgdG8gZnV6eiBleHRlbnNpdmVseS4gV2UgY2FuJiMzOTt0IGxldCBhbnkgc3VidGxlIGVycm9ycyBpbiB0aGUgbGVuZ3RoIGNhbGN1bGF0aW9uIHNsaXAgdGhyb3VnaC4KClRvIG1ha2Ugc3VyZSB3ZSYjMzk7cmUgdGhvcm91Z2ggaW4gb3VyIHRlc3RpbmcsIEkgbmVlZCB0byBlbmFibGUgdGhlIGBCUklER0VfTVJQYCBjb25maWd1cmF0aW9uIG9wdGlvbi4gTm93LCB0byBtYWtlIHRoZSBmdXp6aW5nIGVmZmVjdGl2ZSwgSSBuZWVkIHRvIGZvY3VzIHRoZSBmdXp6ZXIgb24gdGhlIHJlbGV2YW50IGVudHJ5IHBvaW50cy4gSSYjMzk7bSB0aGlua2luZyB0aGUgbmV0bGluayBlbnRyeSBwb2ludHMgZm9yIE1SUCBhcmUgd2hlcmUgdGhlIGFjdGlvbiBoYXBwZW5zLiBMZXQgbWUgZ28gdGhyb3VnaCBteSBtZW50YWwgY2hlY2tsaXN0OiBJIHNob3VsZCBmb2N1cyBvbiBmdW5jdGlvbnMgbGlrZSBgYnJfbXJwX3N0YXJ0X3Rlc3RgLCBgYnJfbXJwX2FkZGAsIGBicl9tcnBfc2V0X3Jpbmdfcm9sZWAsIGFuZCBhbnl0aGluZyBlbHNlIGluIHRoYXQgdmVpbi4gR290dGEgZmluZCB0aGUgZnVsbCBsaXN0IHRvIHVzZSB3aXRoIHRoZSBmdXp6aW5nLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAwODo1OTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtpbnQgYnJfbXJwXyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9icmlkZ2UvYnJfbXJwLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L2JyaWRnZS9icl9tcnAuYz03PXN0YXRpYyBjb25zdCB1OCBtcnBfaW5fdGVzdF9kbWFjW0VUSF9BTEVOXSA9IHsgMHgxLCAweDE1LCAweDRlLCAweDAsIDB4MCwgMHgzIH07XG5uZXQvYnJpZGdlL2JyX21ycC5jLTgtXG5uZXQvYnJpZGdlL2JyX21ycC5jOjk6c3RhdGljIGludCBicl9tcnBfcHJvY2VzcyhzdHJ1Y3QgbmV0X2JyaWRnZV9wb3J0ICpwLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKTtcbm5ldC9icmlkZ2UvYnJfbXJwLmMtMTAtXG4tLVxubmV0L2JyaWRnZS9icl9tcnAuYz0xMDg9c3RhdGljIHN0cnVjdCBicl9tcnAgKmJyX21ycF9maW5kX3BvcnQoc3RydWN0IG5ldF9icmlkZ2UgKmJyLFxuLS1cbm5ldC9icmlkZ2UvYnJfbXJwLmMtMTI2LVxubmV0L2JyaWRnZS9icl9tcnAuYzoxMjc6c3RhdGljIGludCBicl9tcnBfbmV4dF9zZXEoc3RydWN0IGJyX21ycCAqbXJwKVxubmV0L2JyaWRnZS9icl9tcnAuYy0xMjgte1xuLS1cbm5ldC9icmlkZ2UvYnJfbXJwLmM9NDI4PXN0YXRpYyB2b2lkIGJyX21ycF9kZWxfaW1wbChzdHJ1Y3QgbmV0X2JyaWRnZSAqYnIsIHN0cnVjdCBicl9tcnAgKm1ycClcbi0tXG5uZXQvYnJpZGdlL2JyX21ycC5jLTQ5Ni0gKi9cbm5ldC9icmlkZ2UvYnJfbXJwLmM6NDk3OmludCBicl9tcnBfYWRkKHN0cnVjdCBuZXRfYnJpZGdlICpiciwgc3RydWN0IGJyX21ycF9pbnN0YW5jZSAqaW5zdGFuY2UpXG5uZXQvYnJpZGdlL2JyX21ycC5jLTQ5OC17XG4tLVxubmV0L2JyaWRnZS9icl9tcnAuYz01NjI9dm9pZCBicl9tcnBfcG9ydF9kZWwoc3RydWN0IG5ldF9icmlkZ2UgKmJyLCBzdHJ1Y3QgbmV0X2JyaWRnZV9wb3J0ICpwKVxuLS1cbm5ldC9icmlkZ2UvYnJfbXJwLmMtNTc1LSAqL1xubmV0L2JyaWRnZS9icl9tcnAuYzo1NzY6aW50IGJyX21ycF9kZWwoc3RydWN0IG5ldF9icmlkZ2UgKmJyLCBzdHJ1Y3QgYnJfbXJwX2luc3RhbmNlICppbnN0YW5jZSlcbm5ldC9icmlkZ2UvYnJfbXJwLmMtNTc3LXtcbi0tXG5uZXQvYnJpZGdlL2JyX21ycC5jLTU5MC0gKi9cbm5ldC9icmlkZ2UvYnJfbXJwLmM6NTkxOmludCBicl9tcnBfc2V0X3BvcnRfc3RhdGUoc3RydWN0IG5ldF9icmlkZ2VfcG9ydCAqcCxcbm5ldC9icmlkZ2UvYnJfbXJwLmMtNTkyLVx0XHRcdCAgZW51bSBicl9tcnBfcG9ydF9zdGF0ZV90eXBlIHN0YXRlKVxuLS1cbm5ldC9icmlkZ2UvYnJfbXJwLmMtNjE2LSAqL1xubmV0L2JyaWRnZS9icl9tcnAuYzo2MTc6aW50IGJyX21ycF9zZXRfcG9ydF9yb2xlKHN0cnVjdCBuZXRfYnJpZGdlX3BvcnQgKnAsXG5uZXQvYnJpZGdlL2JyX21ycC5jLTYxOC1cdFx0XHQgZW51bSBicl9tcnBfcG9ydF9yb2xlX3R5cGUgcm9sZSlcbi0tXG5uZXQvYnJpZGdlL2JyX21ycC5jLTY0OC0gKi9cbm5ldC9icmlkZ2UvYnJfbXJwLmM6NjQ5OmludCBicl9tcnBfc2V0X3Jpbmdfc3RhdGUoc3RydWN0IG5ldF9icmlkZ2UgKmJyLFxubmV0L2JyaWRnZS9icl9tcnAuYy02NTAtXHRcdFx0ICBzdHJ1Y3QgYnJfbXJwX3Jpbmdfc3RhdGUgKnN0YXRlKVxuLS1cbm5ldC9icmlkZ2UvYnJfbXJwLmMtNjcwLSAqL1xubmV0L2JyaWRnZS9icl9tcnAuYzo2NzE6aW50IGJyX21ycF9zZXRfcmluZ19yb2xlKHN0cnVjdCBuZXRfYnJpZGdlICpicixcbm5ldC9icmlkZ2UvYnJfbXJwLmMtNjcyLVx0XHRcdCBzdHJ1Y3QgYnJfbXJwX3Jpbmdfcm9sZSAqcm9sZSlcbi0tXG5uZXQvYnJpZGdlL2JyX21ycC5jLTcwMS0gKi9cbm5ldC9icmlkZ2UvYnJfbXJwLmM6NzAyOmludCBicl9tcnBfc3RhcnRfdGVzdChzdHJ1Y3QgbmV0X2JyaWRnZSAqYnIsXG5uZXQvYnJpZGdlL2JyX21ycC5jLTcwMy1cdFx0ICAgICAgc3RydWN0IGJyX21ycF9zdGFydF90ZXN0ICp0ZXN0KVxuLS1cbm5ldC9icmlkZ2UvYnJfbXJwLmMtNzM2LSAqL1xubmV0L2JyaWRnZS9icl9tcnAuYzo3Mzc6aW50IGJyX21ycF9zZXRfaW5fc3RhdGUoc3RydWN0IG5ldF9icmlkZ2UgKmJyLCBzdHJ1Y3QgYnJfbXJwX2luX3N0YXRlICpzdGF0ZSlcbm5ldC9icmlkZ2UvYnJfbXJwLmMtNzM4LXtcbi0tXG5uZXQvYnJpZGdlL2JyX21ycC5jLTc1Ny0gKi9cbm5ldC9icmlkZ2UvYnJfbXJwLmM6NzU4OmludCBicl9tcnBfc2V0X2luX3JvbGUoc3RydWN0IG5ldF9icmlkZ2UgKmJyLCBzdHJ1Y3QgYnJfbXJwX2luX3JvbGUgKnJvbGUpXG5uZXQvYnJpZGdlL2JyX21ycC5jLTc1OS17XG4tLVxubmV0L2JyaWRnZS9icl9tcnAuYy04MzktICovXG5uZXQvYnJpZGdlL2JyX21ycC5jOjg0MDppbnQgYnJfbXJwX3N0YXJ0X2luX3Rlc3Qoc3RydWN0IG5ldF9icmlkZ2UgKmJyLFxubmV0L2JyaWRnZS9icl9tcnAuYy04NDEtXHRcdFx0IHN0cnVjdCBicl9tcnBfc3RhcnRfaW5fdGVzdCAqaW5fdGVzdClcbi0tXG5uZXQvYnJpZGdlL2JyX21ycC5jPTEwNjE9c3RhdGljIGJvb2wgYnJfbXJwX21yY19iZWhhdmlvdXIoc3RydWN0IGJyX21ycCAqbXJwKVxuLS1cbm5ldC9icmlkZ2UvYnJfbXJwLmMtMTA3My0gKi9cbm5ldC9icmlkZ2UvYnJfbXJwLmM6MTA3NDpzdGF0aWMgaW50IGJyX21ycF9yY3Yoc3RydWN0IG5ldF9icmlkZ2VfcG9ydCAqcCxcbm5ldC9icmlkZ2UvYnJfbXJwLmMtMTA3NS1cdFx0ICAgICAgc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbi0tXG5uZXQvYnJpZGdlL2JyX21ycC5jLTEyNDUtICovXG5uZXQvYnJpZGdlL2JyX21ycC5jOjEyNDY6c3RhdGljIGludCBicl9tcnBfcHJvY2VzcyhzdHJ1Y3QgbmV0X2JyaWRnZV9wb3J0ICpwLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxubmV0L2JyaWRnZS9icl9tcnAuYy0xMjQ3LXtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMDg6NTk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjA1OTIKCQkJCQkJCW91dHB1dDogMzMKCQkJCQkJCXRob3VnaHRzOiAyOTYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBNUlAgVGVzdCBQcm9jZWR1cmUqKgoKT2theSwgc28gSSYjMzk7bSBmb2N1c2luZyBpbiBvbiB0aGUgTVJQIHRlc3QgZnVuY3Rpb25hbGl0eSBoZXJlLiBNeSBpbml0aWFsIHRob3VnaHQgcHJvY2VzcyBpcyB0byBjYXRlZ29yaXplIHRoZSBrZXkgc3ltYm9scyByZWxhdGVkIHRvIGl0OiBgYnJfbXJwX2FkZGAsIGBicl9tcnBfZGVsYCwgYGJyX21ycF9zZXRfcG9ydF9zdGF0ZWAsIGBicl9tcnBfc2V0X3BvcnRfcm9sZWAsIGBicl9tcnBfc2V0X3Jpbmdfc3RhdGVgLCBgYnJfbXJwX3NldF9yaW5nX3JvbGVgLCBgYnJfbXJwX3N0YXJ0X3Rlc3RgLCBgYnJfbXJwX3NldF9pbl9zdGF0ZWAsIGBicl9tcnBfc2V0X2luX3JvbGVgLCBgYnJfbXJwX3N0YXJ0X2luX3Rlc3RgLCBgYnJfbXJwX3JjdmAsIGFuZCBgYnJfbXJwX3Byb2Nlc3NgLiBCdXQgKnNwZWNpZmljYWxseSosIEkmIzM5O20gaG9uaW5nIGluIG9uIGhvdyB0aGUgdGVzdCBpdHNlbGYgaW5pdGlhdGVzLgoKYGJyX21ycF9zdGFydF90ZXN0YCBpcyB0aGUga2V5LCB0aGUgdHJpZ2dlci4gVGhhdCYjMzk7cyB0aGUgZnVuY3Rpb24gdGhhdCB1bHRpbWF0ZWx5IHN0YXJ0cyB0aGUgdGVzdCBleGVjdXRpb24sIGFuZCAqdGhhdCogY2FsbHMgYGJyX21ycF9hbGxvY190ZXN0X3NrYmAuIFJpZ2h0LCBzbyBgYnJfbXJwX2FsbG9jX3Rlc3Rfc2tiYCBpcyB3aGVyZSB0aGUgdGVzdCBwYWNrZXRzIGFyZSBhY3R1YWxseSBhbGxvY2F0ZWQuCgpOb3csIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoZXJlIGVsc2UgYGJyX21ycF9hbGxvY190ZXN0X3NrYmAgaXMgYmVpbmcgY2FsbGVkIGZyb20uIEkmIzM5O20gY2hlY2tpbmcgZm9yIGRlcGVuZGVuY2llcy4gQWgsIGl0JiMzOTtzIGFsc28gY2FsbGVkIGJ5IGBicl9tcnBfdGVzdF93b3JrX2V4cGlyZWRgLiBJbnRlcmVzdGluZy4gU28gdGhhdCYjMzk7cyB0aGUgY2xlYW51cCBhZnRlciB0aGUgdGVzdCBleHBpcmVzLiBgYnJfbXJwX3Rlc3Rfd29ya19leHBpcmVkYCBpcyBzY2hlZHVsZWQgYnkgYGJyX21ycF9zdGFydF90ZXN0YCwgYnV0IGl0JiMzOTtzICppbml0aWFsaXplZCogaW4gYGJyX21ycF9hZGRgLiBTbyB0aGUgdGVzdCB3b3JrIGlzIHNjaGVkdWxlZCB3aGVuIHdlIHN0YXJ0IHRoZSB0ZXN0LCBidXQgdGhlIHdvcmsgaXMgaW5pdGlhbGl6ZWQgd2hlbiB3ZSBhZGQgdGhlIGJyaWRnZS4gVGhhdCYjMzk7cyBnb29kIHRvIGtub3csIGFuZCBpdCYjMzk7cyBhIGRldGFpbCBJIG5lZWQgdG8ga2VlcCBpbiBtaW5kLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAwOTowMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt0ZXN0X3dvcmsmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvYnJpZGdlL2JyX21ycC5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9icmlkZ2UvYnJfbXJwLmM9MjM5PXN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqYnJfbXJwX2FsbG9jX2luX3Rlc3Rfc2tiKHN0cnVjdCBicl9tcnAgKm1ycCxcbi0tXG5uZXQvYnJpZGdlL2JyX21ycC5jLTI3OC0gKi9cbm5ldC9icmlkZ2UvYnJfbXJwLmM6Mjc5OnN0YXRpYyB2b2lkIGJyX21ycF90ZXN0X3dvcmtfZXhwaXJlZChzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXG5uZXQvYnJpZGdlL2JyX21ycC5jLTI4MC17XG5uZXQvYnJpZGdlL2JyX21ycC5jLTI4MS1cdHN0cnVjdCBkZWxheWVkX3dvcmsgKmRlbF93b3JrID0gdG9fZGVsYXllZF93b3JrKHdvcmspO1xubmV0L2JyaWRnZS9icl9tcnAuYzoyODI6XHRzdHJ1Y3QgYnJfbXJwICptcnAgPSBjb250YWluZXJfb2YoZGVsX3dvcmssIHN0cnVjdCBicl9tcnAsIHRlc3Rfd29yayk7XG5uZXQvYnJpZGdlL2JyX21ycC5jLTI4My1cdHN0cnVjdCBuZXRfYnJpZGdlX3BvcnQgKnA7XG4tLVxubmV0L2JyaWRnZS9icl9tcnAuYy0zNDMtXG5uZXQvYnJpZGdlL2JyX21ycC5jOjM0NDpcdHF1ZXVlX2RlbGF5ZWRfd29yayhzeXN0ZW1fcGVyY3B1X3dxLCBcdTAwMjZtcnAtXHUwMDNldGVzdF93b3JrLFxubmV0L2JyaWRnZS9icl9tcnAuYy0zNDUtXHRcdFx0ICAgdXNlY3NfdG9famlmZmllcyhtcnAtXHUwMDNldGVzdF9pbnRlcnZhbCkpO1xuLS1cbm5ldC9icmlkZ2UvYnJfbXJwLmMtMzUxLSAqL1xubmV0L2JyaWRnZS9icl9tcnAuYzozNTI6c3RhdGljIHZvaWQgYnJfbXJwX2luX3Rlc3Rfd29ya19leHBpcmVkKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcbm5ldC9icmlkZ2UvYnJfbXJwLmMtMzUzLXtcbm5ldC9icmlkZ2UvYnJfbXJwLmMtMzU0LVx0c3RydWN0IGRlbGF5ZWRfd29yayAqZGVsX3dvcmsgPSB0b19kZWxheWVkX3dvcmsod29yayk7XG5uZXQvYnJpZGdlL2JyX21ycC5jOjM1NTpcdHN0cnVjdCBicl9tcnAgKm1ycCA9IGNvbnRhaW5lcl9vZihkZWxfd29yaywgc3RydWN0IGJyX21ycCwgaW5fdGVzdF93b3JrKTtcbm5ldC9icmlkZ2UvYnJfbXJwLmMtMzU2LVx0c3RydWN0IG5ldF9icmlkZ2VfcG9ydCAqcDtcbi0tXG5uZXQvYnJpZGdlL2JyX21ycC5jLTQyMC1cbm5ldC9icmlkZ2UvYnJfbXJwLmM6NDIxOlx0cXVldWVfZGVsYXllZF93b3JrKHN5c3RlbV9wZXJjcHVfd3EsIFx1MDAyNm1ycC1cdTAwM2Vpbl90ZXN0X3dvcmssXG5uZXQvYnJpZGdlL2JyX21ycC5jLTQyMi1cdFx0XHQgICB1c2Vjc190b19qaWZmaWVzKG1ycC1cdTAwM2Vpbl90ZXN0X2ludGVydmFsKSk7XG4tLVxubmV0L2JyaWRnZS9icl9tcnAuYz00Mjg9c3RhdGljIHZvaWQgYnJfbXJwX2RlbF9pbXBsKHN0cnVjdCBuZXRfYnJpZGdlICpiciwgc3RydWN0IGJyX21ycCAqbXJwKVxuLS1cbm5ldC9icmlkZ2UvYnJfbXJwLmMtNDMzLVx0LyogU3RvcCBzZW5kaW5nIE1SUF9UZXN0IGZyYW1lcyAqL1xubmV0L2JyaWRnZS9icl9tcnAuYzo0MzQ6XHRjYW5jZWxfZGVsYXllZF93b3JrX3N5bmMoXHUwMDI2bXJwLVx1MDAzZXRlc3Rfd29yayk7XG5uZXQvYnJpZGdlL2JyX21ycC5jLTQzNS1cdGJyX21ycF9zd2l0Y2hkZXZfc2VuZF9yaW5nX3Rlc3QoYnIsIG1ycCwgMCwgMCwgMCwgMCk7XG4tLVxubmV0L2JyaWRnZS9icl9tcnAuYy00MzctXHQvKiBTdG9wIHNlbmRpbmcgTVJQX0luVGVzdCBmcmFtZXMgaWYgaGFzIGFuIGludGVyY29ubmVjdCByb2xlICovXG5uZXQvYnJpZGdlL2JyX21ycC5jOjQzODpcdGNhbmNlbF9kZWxheWVkX3dvcmtfc3luYyhcdTAwMjZtcnAtXHUwMDNlaW5fdGVzdF93b3JrKTtcbm5ldC9icmlkZ2UvYnJfbXJwLmMtNDM5LVx0YnJfbXJwX3N3aXRjaGRldl9zZW5kX2luX3Rlc3QoYnIsIG1ycCwgMCwgMCwgMCk7XG4tLVxubmV0L2JyaWRnZS9icl9tcnAuYz00OTc9aW50IGJyX21ycF9hZGQoc3RydWN0IG5ldF9icmlkZ2UgKmJyLCBzdHJ1Y3QgYnJfbXJwX2luc3RhbmNlICppbnN0YW5jZSlcbi0tXG5uZXQvYnJpZGdlL2JyX21ycC5jLTU0Mi1cbm5ldC9icmlkZ2UvYnJfbXJwLmM6NTQzOlx0SU5JVF9ERUxBWUVEX1dPUksoXHUwMDI2bXJwLVx1MDAzZXRlc3Rfd29yaywgYnJfbXJwX3Rlc3Rfd29ya19leHBpcmVkKTtcbm5ldC9icmlkZ2UvYnJfbXJwLmM6NTQ0Olx0SU5JVF9ERUxBWUVEX1dPUksoXHUwMDI2bXJwLVx1MDAzZWluX3Rlc3Rfd29yaywgYnJfbXJwX2luX3Rlc3Rfd29ya19leHBpcmVkKTtcbm5ldC9icmlkZ2UvYnJfbXJwLmMtNTQ1LVx0aGxpc3RfYWRkX3RhaWxfcmN1KFx1MDAyNm1ycC1cdTAwM2VsaXN0LCBcdTAwMjZici1cdTAwM2VtcnBfbGlzdCk7XG4tLVxubmV0L2JyaWRnZS9icl9tcnAuYz03MDI9aW50IGJyX21ycF9zdGFydF90ZXN0KHN0cnVjdCBuZXRfYnJpZGdlICpicixcbi0tXG5uZXQvYnJpZGdlL2JyX21ycC5jLTcyNy1cdG1ycC1cdTAwM2V0ZXN0X2NvdW50X21pc3MgPSAwO1xubmV0L2JyaWRnZS9icl9tcnAuYzo3Mjg6XHRxdWV1ZV9kZWxheWVkX3dvcmsoc3lzdGVtX3BlcmNwdV93cSwgXHUwMDI2bXJwLVx1MDAzZXRlc3Rfd29yayxcbm5ldC9icmlkZ2UvYnJfbXJwLmMtNzI5LVx0XHRcdCAgIHVzZWNzX3RvX2ppZmZpZXModGVzdC1cdTAwM2VpbnRlcnZhbCkpO1xuLS1cbm5ldC9icmlkZ2UvYnJfbXJwLmM9NzU4PWludCBicl9tcnBfc2V0X2luX3JvbGUoc3RydWN0IG5ldF9icmlkZ2UgKmJyLCBzdHJ1Y3QgYnJfbXJwX2luX3JvbGUgKnJvbGUpXG4tLVxubmV0L2JyaWRnZS9icl9tcnAuYy03NzgtXHRcdC8qIFN0b3AgdGhlIGdlbmVyYXRpbmcgTVJQX0luVGVzdCBmcmFtZXMgKi9cbm5ldC9icmlkZ2UvYnJfbXJwLmM6Nzc5Olx0XHRjYW5jZWxfZGVsYXllZF93b3JrX3N5bmMoXHUwMDI2bXJwLVx1MDAzZWluX3Rlc3Rfd29yayk7XG5uZXQvYnJpZGdlL2JyX21ycC5jLTc4MC1cdFx0YnJfbXJwX3N3aXRjaGRldl9zZW5kX2luX3Rlc3QoYnIsIG1ycCwgMCwgMCwgMCk7XG4tLVxubmV0L2JyaWRnZS9icl9tcnAuYz04NDA9aW50IGJyX21ycF9zdGFydF9pbl90ZXN0KHN0cnVjdCBuZXRfYnJpZGdlICpicixcbi0tXG5uZXQvYnJpZGdlL2JyX21ycC5jLTg2Ny1cdG1ycC1cdTAwM2Vpbl90ZXN0X2NvdW50X21pc3MgPSAwO1xubmV0L2JyaWRnZS9icl9tcnAuYzo4Njg6XHRxdWV1ZV9kZWxheWVkX3dvcmsoc3lzdGVtX3BlcmNwdV93cSwgXHUwMDI2bXJwLVx1MDAzZWluX3Rlc3Rfd29yayxcbm5ldC9icmlkZ2UvYnJfbXJwLmMtODY5LVx0XHRcdCAgIHVzZWNzX3RvX2ppZmZpZXMoaW5fdGVzdC1cdTAwM2VpbnRlcnZhbCkpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAwOTowMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMjgxMAoJCQkJCQkJb3V0cHV0OiA0MQoJCQkJCQkJdGhvdWdodHM6IDIzNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBbmFseXNpcyBvZiB0aGUgTVJQIFF1ZXVlaW5nIGFuZCBDb25maWd1cmF0aW9uKioKCk9rYXksIHNvIEkmIzM5O3ZlIGNvbmZpcm1lZCB0aGF0IGBicl9tcnBfc3RhcnRfdGVzdGAgaXMgZGVmaW5pdGVseSB0aGUgZnVuY3Rpb24gdGhhdCBraWNrcyBvZmYgdGhlIHF1ZXVpbmcgcHJvY2Vzcy4gTm93LCBJIG5lZWQgdG8gbWFrZSBhIGxpc3Qgb2YgdGhlIGNydWNpYWwgZm9jdXMgc3ltYm9scyDigJMgdGhlIGZ1bmN0aW9ucyBkaXJlY3RseSBpbnZvbHZlZCBpbiB0aGlzIE1SUCB0ZXN0IHNjZW5hcmlvLiBJIGhhdmUgYSBnb29kIGdyYXNwIG9mIHRoZSBjb2RlIG5vdyBzbyBJJiMzOTtsbCBnbyB0aHJvdWdoIHRoZSBzeW1ib2xzIHRvIGNvbmZpcm0gdGhhdCB0aGUgbGlzdCBJIGhhdmUgaXMgcmlnaHQ6IGBicl9tcnBfc3RhcnRfdGVzdGAsIGBicl9tcnBfYWRkYCwgYGJyX21ycF9zZXRfcmluZ19yb2xlYCwgYGJyX21ycF9zZXRfcmluZ19zdGF0ZWAsIGBicl9tcnBfc3RhcnRfaW5fdGVzdGAsIGBicl9tcnBfc2V0X2luX3JvbGVgLCBgYnJfbXJwX3NldF9pbl9zdGF0ZWAsIGBicl9tcnBfc2V0X3BvcnRfc3RhdGVgLCBgYnJfbXJwX3NldF9wb3J0X3JvbGVgLCBhbmQgYGJyX21ycF9kZWxgLiBUaG9zZSBsb29rIHJpZ2h0LgoKQW5kLCBvZiBjb3Vyc2UsIHRvIGZ1bGx5IGNhcHR1cmUgdGhlIE1SUCBmcmFtZSBwcm9jZXNzaW5nLCBJIGNhbiYjMzk7dCBmb3JnZXQgYGJyX21ycF9yY3ZgIGFuZCBgYnJfbXJwX3Byb2Nlc3NgIGZvciByZWNlaXZpbmcgYW5kIGhhbmRsaW5nIHRob3NlIGZyYW1lcy4KCk5vdywgbGV0JiMzOTtzIG5haWwgZG93biB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zIGludm9sdmVkLiBUaGUgcHJpbWFyeSBjb25maWd1cmF0aW9uIHNlZW1zIHRvIGJlIGBCUklER0VfTVJQYC4gSG93ZXZlciwgbGV0IG1lIGRvdWJsZSBjaGVjayB0aGF0IHRoZXJlIGFyZW4mIzM5O3QgYW55IGhpZGRlbiBkZXBlbmRlbmNpZXMuIEFoYSwgeWVzISBgQlJJREdFX01SUGAgZGVwZW5kcyBvbiBgQlJJREdFYC4gVGhhdCBtYWtlcyBzZW5zZS4KClRoZXJlZm9yZSwgdGhlIHJlbGV2YW50IGNvbmZpZ3VyYXRpb25zIGhlcmUgYXJlIGBCUklER0VgIGFuZCBgQlJJREdFX01SUGAuIEkgc2hvdWxkIHJldHVybiBgQlJJREdFX01SUGAgYXMgdGhhdCYjMzk7cyB0aGUgbW9yZSBzcGVjaWZpYyBhbmQgcmVsZXZhbnQgb3B0aW9uLgoKQWxyaWdodCwgSSYjMzk7bGwgdGFrZSBhbm90aGVyIGxvb2sgYXQgdGhlIGBicl9tcnBfYWxsb2NfdGVzdF9za2JgIGZ1bmN0aW9uIHRvIG1ha2Ugc3VyZSB0aGF0IEkgdW5kZXJzdGFuZCBpdHMgcm9sZSBpbiB0aGlzIHByb2Nlc3MuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDA5OjAwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2JyX21ycF9hbGxvY190ZXN0X3NrYiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9icmlkZ2UvYnJfbXJwLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L2JyaWRnZS9icl9tcnAuYz0xNzE9c3RhdGljIHZvaWQgYnJfbXJwX3NrYl9jb21tb24oc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGJyX21ycCAqbXJwKVxuLS1cbm5ldC9icmlkZ2UvYnJfbXJwLmMtMTgxLVxubmV0L2JyaWRnZS9icl9tcnAuYzoxODI6c3RhdGljIHN0cnVjdCBza19idWZmICpicl9tcnBfYWxsb2NfdGVzdF9za2Ioc3RydWN0IGJyX21ycCAqbXJwLFxubmV0L2JyaWRnZS9icl9tcnAuYy0xODMtXHRcdFx0XHRcdCAgICAgc3RydWN0IG5ldF9icmlkZ2VfcG9ydCAqcCxcbi0tXG5uZXQvYnJpZGdlL2JyX21ycC5jPTI3OT1zdGF0aWMgdm9pZCBicl9tcnBfdGVzdF93b3JrX2V4cGlyZWQoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxuLS1cbm5ldC9icmlkZ2UvYnJfbXJwLmMtMzExLVx0XHRpZiAoIW1ycC1cdTAwM2V0ZXN0X21vbml0b3IpIHtcbm5ldC9icmlkZ2UvYnJfbXJwLmM6MzEyOlx0XHRcdHNrYiA9IGJyX21ycF9hbGxvY190ZXN0X3NrYihtcnAsIHAsXG5uZXQvYnJpZGdlL2JyX21ycC5jLTMxMy1cdFx0XHRcdFx0XHQgICAgQlJfTVJQX1BPUlRfUk9MRV9QUklNQVJZKTtcbi0tXG5uZXQvYnJpZGdlL2JyX21ycC5jLTMyNy1cdFx0aWYgKCFtcnAtXHUwMDNldGVzdF9tb25pdG9yKSB7XG5uZXQvYnJpZGdlL2JyX21ycC5jOjMyODpcdFx0XHRza2IgPSBicl9tcnBfYWxsb2NfdGVzdF9za2IobXJwLCBwLFxubmV0L2JyaWRnZS9icl9tcnAuYy0zMjktXHRcdFx0XHRcdFx0ICAgIEJSX01SUF9QT1JUX1JPTEVfU0VDT05EQVJZKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMDk6MDA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjM4MzkKCQkJCQkJCW91dHB1dDogMjU5CgkJCQkJCQl0aG91Z2h0czogMzIwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgdGhlIE1SUCBCdWcgRml4KioKCk9rYXksIHNvIEkmIzM5O3ZlIGxvb2tlZCBvdmVyIHRoaXMgcGF0Y2gsIGFuZCBoZXJlJiMzOTtzIG15IHRha2U6IHRoZSBrZXkgaXNzdWUgaXMgYSByYXRoZXIgY2xhc3NpYyBvZmYtYnktb25lIGVycm9yIGluIHRoZSBgYnJfbXJwX2FsbG9jX3Rlc3Rfc2tiYCBmdW5jdGlvbi4gVGhleSYjMzk7cmUgdXNpbmcgYHNpemVvZihvdWkpYCBpbnN0ZWFkIG9mIGBzaXplb2YoKm91aSlgLiAgSSYjMzk7bSBhc3N1bWluZyBgb3VpYCBpcyBhIHBvaW50ZXIgdG8gc29tZSBzb3J0IG9mIHN0cnVjdHVyZSByZWxhdGVkIHRvIHRoZSBvcmdhbml6YXRpb25hbGx5IHVuaXF1ZSBpZGVudGlmaWVyLCB3aGljaCBtYWtlcyBwZXJmZWN0IHNlbnNlIGluIHRoaXMgY29udGV4dC4gVXNpbmcgdGhlIHNpemUgb2YgdGhlICpwb2ludGVyKiByYXRoZXIgdGhhbiB0aGUgKnN0cnVjdHVyZSBpdCBwb2ludHMgdG8qIHdvdWxkIGxlYWQgdG8gYW4gaW5jb3JyZWN0IGxlbmd0aCBjYWxjdWxhdGlvbiB3aGVuIGJ1aWxkaW5nIHRlc3QgcGFja2V0cyB3aXRoaW4gdGhlIE1SUCBmcmFtZXdvcmsuICBUaGlzIGlzIGEgY3JpdGljYWwgZXJyb3Igc2luY2UgaXQgZGlyZWN0bHkgaW1wYWN0cyB0aGUgU2l6ZSBvZiB0aGUgVHlwZSBMZW5ndGggVmFsdWUgKFRMVikgZmllbGQgaW4gdGhlIE1SUCBwYWNrZXQsIHdoaWNoIG1lYW5zIG1hbGZvcm1lZCBwYWNrZXRzIG9yIGV2ZW4gb3V0LW9mLWJvdW5kcyByZWFkcyBvciB3cml0ZXMgY291bGQgYmUgdHJpZ2dlcmVkLgoKRnVuY3Rpb25hbGx5LCB0aGlzIGlzIGEgY2hhbmdlIHRvIHRoZSBuZXR3b3JrIGJyaWRnZSBNUlAgcHJvdG9jb2wgaW1wbGVtZW50YXRpb24sIGFuZCB0aGVyZWZvcmUgd2FycmFudHMgY2FyZWZ1bCB0ZXN0aW5nLiBJJiMzOTtkIGJlIGxvb2tpbmcgYXQgYSBmdXp6aW5nIGNhbXBhaWduIHRvIGVuc3VyZSB0aGVyZSBhcmVuJiMzOTt0IGRvd25zdHJlYW0gY29uc2VxdWVuY2VzIHRvIHRoaXMgY2hhbmdlLiBNeSBpbml0aWFsIGxpc3Qgb2YgJiMzNDtmb2N1cyBzeW1ib2xzJiMzNDsgbG9vayBnb29kIGZvciBhIHRob3JvdWdoIGV2YWx1YXRpb24gb2YgdGhlIGVmZmVjdHMgb2YgdGhpcyBjaGFuZ2U6IHNwZWNpZmljYWxseSBsb29raW5nIGF0IHRoZSBzdGFydCwgYWRkLCBzZXQsIGFuZCBkZWxldGUgb3BlcmF0aW9ucyBvZiB0aGUgTVJQIHByb3RvY29sLiBJIHdpbGwgYWxzbyBtYWtlIHN1cmUgdG8gY2hlY2sgdGhlIHJlY2VpdmUgYW5kIHByb2Nlc3MgbWV0aG9kcy4gSSB3b3VsZCBhbHNvIHJlY29tbWVuZCB0aGF0IHRoZSBNUlAgZnVuY3Rpb25hbGl0eSBiZSByZS10ZXN0ZWQgd2l0aCBgQlJJREdFX01SUGAgZW5hYmxlZC4gVGhlIGltcGFjdCBjb3VsZCBiZSBzdWJ0bGUsIG9yIG11Y2ggd29yc2UsIGRlcGVuZGluZyBvbiBob3cgdGhpcyBpbmNvcnJlY3Qgc2l6ZSB3YXMgYmVpbmcgdXNlZC4gVGhpcyBjb3VsZCBiZSBhIHByZXR0eSBzaWduaWZpY2FudCB2dWxuZXJhYmlsaXR5LCBkZXBlbmRpbmcgb24gdGhlIGltcGxlbWVudGF0aW9uIGRldGFpbHMuIEkmIzM5O2xsIG5lZWQgdG8gZGlnIGludG8gdGhlIGRldGFpbHMgdG8gdW5kZXJzdGFuZCB0aGUgcG90ZW50aWFsIGZvciBleHBsb2l0YXRpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDA5OjAwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtCUklER0VfTVJQJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7YnJfbXJwX3N0YXJ0X3Rlc3QmIzM0OywKICAgICYjMzQ7YnJfbXJwX2FkZCYjMzQ7LAogICAgJiMzNDticl9tcnBfc2V0X3Jpbmdfcm9sZSYjMzQ7LAogICAgJiMzNDticl9tcnBfc2V0X3Jpbmdfc3RhdGUmIzM0OywKICAgICYjMzQ7YnJfbXJwX3N0YXJ0X2luX3Rlc3QmIzM0OywKICAgICYjMzQ7YnJfbXJwX3NldF9pbl9yb2xlJiMzNDssCiAgICAmIzM0O2JyX21ycF9zZXRfaW5fc3RhdGUmIzM0OywKICAgICYjMzQ7YnJfbXJwX3NldF9wb3J0X3N0YXRlJiMzNDssCiAgICAmIzM0O2JyX21ycF9zZXRfcG9ydF9yb2xlJiMzNDssCiAgICAmIzM0O2JyX21ycF9kZWwmIzM0OywKICAgICYjMzQ7YnJfbXJwX3JjdiYjMzQ7LAogICAgJiMzNDticl9tcnBfcHJvY2VzcyYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhbiBpbmNvcnJlY3Qgc2l6ZSBjYWxjdWxhdGlvbiBpbiBgYnJfbXJwX2FsbG9jX3Rlc3Rfc2tiYCB3aGVyZSBgc2l6ZW9mKG91aSlgIChwb2ludGVyIHNpemUpIHdhcyB1c2VkIGluc3RlYWQgb2YgYHNpemVvZigqb3VpKWAgKHN0cnVjdCBzaXplKS4gVGhpcyBhZmZlY3RzIHRoZSBsZW5ndGggb2YgdGhlIGFsbG9jYXRlZC9wb3B1bGF0ZWQgVExWIGluIE1SUCB0ZXN0IHBhY2tldHMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgYnJpZGdlIE1SUCBwcm90b2NvbCBpbXBsZW1lbnRhdGlvbiBhbmQgc2hvdWxkIGJlIGZ1enplZCB0byBlbnN1cmUgY29ycmVjdCBwYWNrZXQgY29uc3RydWN0aW9uIGFuZCBoYW5kbGluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7QlJJREdFX01SUCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2JyX21ycF9zdGFydF90ZXN0JiMzNDssCiAgICAmIzM0O2JyX21ycF9hZGQmIzM0OywKICAgICYjMzQ7YnJfbXJwX3NldF9yaW5nX3JvbGUmIzM0OywKICAgICYjMzQ7YnJfbXJwX3NldF9yaW5nX3N0YXRlJiMzNDssCiAgICAmIzM0O2JyX21ycF9zdGFydF9pbl90ZXN0JiMzNDssCiAgICAmIzM0O2JyX21ycF9zZXRfaW5fcm9sZSYjMzQ7LAogICAgJiMzNDticl9tcnBfc2V0X2luX3N0YXRlJiMzNDssCiAgICAmIzM0O2JyX21ycF9zZXRfcG9ydF9zdGF0ZSYjMzQ7LAogICAgJiMzNDticl9tcnBfc2V0X3BvcnRfcm9sZSYjMzQ7LAogICAgJiMzNDticl9tcnBfZGVsJiMzNDssCiAgICAmIzM0O2JyX21ycF9yY3YmIzM0OywKICAgICYjMzQ7YnJfbXJwX3Byb2Nlc3MmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYW4gaW5jb3JyZWN0IHNpemUgY2FsY3VsYXRpb24gaW4gYGJyX21ycF9hbGxvY190ZXN0X3NrYmAgd2hlcmUgYHNpemVvZihvdWkpYCAocG9pbnRlciBzaXplKSB3YXMgdXNlZCBpbnN0ZWFkIG9mIGBzaXplb2YoKm91aSlgIChzdHJ1Y3Qgc2l6ZSkuIFRoaXMgYWZmZWN0cyB0aGUgbGVuZ3RoIG9mIHRoZSBhbGxvY2F0ZWQvcG9wdWxhdGVkIFRMViBpbiBNUlAgdGVzdCBwYWNrZXRzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGJyaWRnZSBNUlAgcHJvdG9jb2wgaW1wbGVtZW50YXRpb24gYW5kIHNob3VsZCBiZSBmdXp6ZWQgdG8gZW5zdXJlIGNvcnJlY3QgcGFja2V0IGNvbnN0cnVjdGlvbiBhbmQgaGFuZGxpbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNy0yNVQwODo1OToxMy45Nzk5MTIyMTFaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2MDgyOTU5MTE1NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJCUklER0VfTVJQXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiYnJfbXJwX3N0YXJ0X3Rlc3RcIixcbiAgICBcImJyX21ycF9hZGRcIixcbiAgICBcImJyX21ycF9zZXRfcmluZ19yb2xlXCIsXG4gICAgXCJicl9tcnBfc2V0X3Jpbmdfc3RhdGVcIixcbiAgICBcImJyX21ycF9zdGFydF9pbl90ZXN0XCIsXG4gICAgXCJicl9tcnBfc2V0X2luX3JvbGVcIixcbiAgICBcImJyX21ycF9zZXRfaW5fc3RhdGVcIixcbiAgICBcImJyX21ycF9zZXRfcG9ydF9zdGF0ZVwiLFxuICAgIFwiYnJfbXJwX3NldF9wb3J0X3JvbGVcIixcbiAgICBcImJyX21ycF9kZWxcIixcbiAgICBcImJyX21ycF9yY3ZcIixcbiAgICBcImJyX21ycF9wcm9jZXNzXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYW4gaW5jb3JyZWN0IHNpemUgY2FsY3VsYXRpb24gaW4gYGJyX21ycF9hbGxvY190ZXN0X3NrYmAgd2hlcmUgYHNpemVvZihvdWkpYCAocG9pbnRlciBzaXplKSB3YXMgdXNlZCBpbnN0ZWFkIG9mIGBzaXplb2YoKm91aSlgIChzdHJ1Y3Qgc2l6ZSkuIFRoaXMgYWZmZWN0cyB0aGUgbGVuZ3RoIG9mIHRoZSBhbGxvY2F0ZWQvcG9wdWxhdGVkIFRMViBpbiBNUlAgdGVzdCBwYWNrZXRzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGJyaWRnZSBNUlAgcHJvdG9jb2wgaW1wbGVtZW50YXRpb24gYW5kIHNob3VsZCBiZSBmdXp6ZWQgdG8gZW5zdXJlIGNvcnJlY3QgcGFja2V0IGNvbnN0cnVjdGlvbiBhbmQgaGFuZGxpbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDA4OjU5OjEzLjk3OTkyMDcyMVoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTI3NTk0NzA1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgYzFiMDVlZDIzNDM2N2QxN2E2ZTIzMjA1ODNiZjA3ODhlM2EwNzEwOVxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgU2F0IEp1bCAyNSAwODo1OToxMiAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9uZXQvYnJpZGdlL2JyX21ycC5jIGIvbmV0L2JyaWRnZS9icl9tcnAuY1xcbmluZGV4IDNmNzEyNmE3ZDcyMDAzLi4xNzlkMjQ3MGI3MjQ4OCAxMDA2NDRcXG4tLS0gYS9uZXQvYnJpZGdlL2JyX21ycC5jXFxuKysrIGIvbmV0L2JyaWRnZS9icl9tcnAuY1xcbkBAIC0yMTUsNyArMjE1LDcgQEAgc3RhdGljIHN0cnVjdCBza19idWZmICpicl9tcnBfYWxsb2NfdGVzdF9za2Ioc3RydWN0IGJyX21ycCAqbXJwLFxcbiBcXHRcXHRzdHJ1Y3QgYnJfbXJwX291aV9oZHIgKm91aSA9IE5VTEw7XFxuIFxcdFxcdHU4IGxlbmd0aDtcXG4gXFxuLVxcdFxcdGxlbmd0aCA9IHNpemVvZigqc3ViX29wdCkgKyBzaXplb2YoKnN1Yl90bHYpICsgc2l6ZW9mKG91aSkgK1xcbitcXHRcXHRsZW5ndGggPSBzaXplb2YoKnN1Yl9vcHQpICsgc2l6ZW9mKCpzdWJfdGx2KSArIHNpemVvZigqb3VpKSArXFxuIFxcdFxcdFxcdE1SUF9PUFRfUEFERElORztcXG4gXFx0XFx0YnJfbXJwX3NrYl90bHYoc2tiLCBCUl9NUlBfVExWX0hFQURFUl9PUFRJT04sIGxlbmd0aCk7XFxuIFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNVQwODo1OToxNC41MDgzNzE4MjVaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjo2MDMwMTExODQxMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJCUklER0VfTVJQXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiYnJfbXJwX3N0YXJ0X3Rlc3RcIixcbiAgICBcImJyX21ycF9hZGRcIixcbiAgICBcImJyX21ycF9zZXRfcmluZ19yb2xlXCIsXG4gICAgXCJicl9tcnBfc2V0X3Jpbmdfc3RhdGVcIixcbiAgICBcImJyX21ycF9zdGFydF9pbl90ZXN0XCIsXG4gICAgXCJicl9tcnBfc2V0X2luX3JvbGVcIixcbiAgICBcImJyX21ycF9zZXRfaW5fc3RhdGVcIixcbiAgICBcImJyX21ycF9zZXRfcG9ydF9zdGF0ZVwiLFxuICAgIFwiYnJfbXJwX3NldF9wb3J0X3JvbGVcIixcbiAgICBcImJyX21ycF9kZWxcIixcbiAgICBcImJyX21ycF9yY3ZcIixcbiAgICBcImJyX21ycF9wcm9jZXNzXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYW4gaW5jb3JyZWN0IHNpemUgY2FsY3VsYXRpb24gaW4gYGJyX21ycF9hbGxvY190ZXN0X3NrYmAgd2hlcmUgYHNpemVvZihvdWkpYCAocG9pbnRlciBzaXplKSB3YXMgdXNlZCBpbnN0ZWFkIG9mIGBzaXplb2YoKm91aSlgIChzdHJ1Y3Qgc2l6ZSkuIFRoaXMgYWZmZWN0cyB0aGUgbGVuZ3RoIG9mIHRoZSBhbGxvY2F0ZWQvcG9wdWxhdGVkIFRMViBpbiBNUlAgdGVzdCBwYWNrZXRzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGJyaWRnZSBNUlAgcHJvdG9jb2wgaW1wbGVtZW50YXRpb24gYW5kIHNob3VsZCBiZSBmdXp6ZWQgdG8gZW5zdXJlIGNvcnJlY3QgcGFja2V0IGNvbnN0cnVjdGlvbiBhbmQgaGFuZGxpbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpXG4gIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zXG4gICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgQWxzbyBjaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3NcbiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlnc1xuICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IGMxYjA1ZWQyMzQzNjdkMTdhNmUyMzIwNTgzYmYwNzg4ZTNhMDcxMDlcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgU2F0IEp1bCAyNSAwODo1OToxMiAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL25ldC9icmlkZ2UvYnJfbXJwLmMgYi9uZXQvYnJpZGdlL2JyX21ycC5jXG5pbmRleCAzZjcxMjZhN2Q3MjAwMy4uMTc5ZDI0NzBiNzI0ODggMTAwNjQ0XG4tLS0gYS9uZXQvYnJpZGdlL2JyX21ycC5jXG4rKysgYi9uZXQvYnJpZGdlL2JyX21ycC5jXG5AQCAtMjE1LDcgKzIxNSw3IEBAIHN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqYnJfbXJwX2FsbG9jX3Rlc3Rfc2tiKHN0cnVjdCBicl9tcnAgKm1ycCxcbiBcdFx0c3RydWN0IGJyX21ycF9vdWlfaGRyICpvdWkgPSBOVUxMO1xuIFx0XHR1OCBsZW5ndGg7XG4gXG4tXHRcdGxlbmd0aCA9IHNpemVvZigqc3ViX29wdCkgKyBzaXplb2YoKnN1Yl90bHYpICsgc2l6ZW9mKG91aSkgK1xuK1x0XHRsZW5ndGggPSBzaXplb2YoKnN1Yl9vcHQpICsgc2l6ZW9mKCpzdWJfdGx2KSArIHNpemVvZigqb3VpKSArXG4gXHRcdFx0TVJQX09QVF9QQURESU5HO1xuIFx0XHRicl9tcnBfc2tiX3Rsdihza2IsIEJSX01SUF9UTFZfSEVBREVSX09QVElPTiwgbGVuZ3RoKTtcbiBcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDA4OjU5OjE0LjUwODM3MzYzNloiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM1OTYwOTc0MDIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgQnJpZGdlIE1SUCBQYXRjaCoqXG5cbk9rYXksIHNvIEkndmUgZ290IHRoaXMgcGF0Y2ggYWZmZWN0aW5nIGBuZXQvYnJpZGdlL2JyX21ycC5jYCwgYW5kIGl0IGxvb2tzIGxpa2UgYSBzaXplIGNhbGN1bGF0aW9uIGFkanVzdG1lbnQgaXMgdGhlIGtleSBoZXJlLiBTcGVjaWZpY2FsbHksIHRoZSBjaGFuZ2UgaW4gYGJyX21ycF9hbGxvY190ZXN0X3NrYmAgZnJvbSBgc2l6ZW9mKG91aSlgIHRvIGBzaXplb2YoKm91aSlgIGltbWVkaWF0ZWx5IGZsYWdzIG15IGF0dGVudGlvbi4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlLCBkZWZpbml0ZWx5IGltcGFjdGluZyB0aGUgbGVuZ3RoIG9mIGFsbG9jYXRlZCBvciBjYWxjdWxhdGVkIGJ1ZmZlcnMsIHNvIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBpbXBsaWNhdGlvbnMgdGhvcm91Z2hseS5cblxuTXkgbmV4dCBzdGVwIGlzIGNsZWFyOiBJIG5lZWQgdG8gZGlnIGludG8gdGhlIHJlbGV2YW50IGZ1bmN0aW9ucyB3aXRoaW4gYG5ldC9icmlkZ2UvYnJfbXJwLmNgLiBJJ2xsIGJlIG1ldGljdWxvdXNseSBleGFtaW5pbmcgYGJyX21ycF9hbGxvY190ZXN0X3NrYmAgYW5kIGBicl9tcnBfc2tiX3RsdmAsIGFzIHRob3NlIGFyZSB0aGUgY29yZSBhcmVhcyB3aGVyZSB0aGlzIHNpemUgbW9kaWZpY2F0aW9uIHdpbGwgbWFuaWZlc3QgYW5kIHBvdGVudGlhbGx5IGltcGFjdCBiZWhhdmlvci4gR290dGEgaWRlbnRpZnkgKndoeSogdGhpcyBjaGFuZ2Ugd2FzIG1hZGUgYW5kIHdoYXQgY29uc2VxdWVuY2VzIGl0IGJyaW5ncy4gVW5kZXJzdGFuZGluZyBob3cgdGhlIGJ1ZmZlciBzaXplIGltcGFjdHMgZGF0YSBzdHJ1Y3R1cmVzIGFuZCBwcm9jZXNzaW5nIGlzIHBhcmFtb3VudCwgZXNwZWNpYWxseSB3aGVuIGRlYWxpbmcgd2l0aCBicmlkZ2luZyBwcm90b2NvbHMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIwOTQsIk91dHB1dFRva2VucyI6NDEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMDgsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNVQwODo1OToxOC4xMDQ0NzMzMjdaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTA1OTE5MTAxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImJyX21ycF9hbGxvY190ZXN0X3NrYlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvYnJpZGdlL2JyX21ycC5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9icmlkZ2UvYnJfbXJwLmM9MTcxPXN0YXRpYyB2b2lkIGJyX21ycF9za2JfY29tbW9uKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBicl9tcnAgKm1ycClcXG4tLVxcbm5ldC9icmlkZ2UvYnJfbXJwLmMtMTgxLVxcbm5ldC9icmlkZ2UvYnJfbXJwLmM6MTgyOnN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqYnJfbXJwX2FsbG9jX3Rlc3Rfc2tiKHN0cnVjdCBicl9tcnAgKm1ycCxcXG5uZXQvYnJpZGdlL2JyX21ycC5jLTE4My1cXHRcXHRcXHRcXHRcXHQgICAgIHN0cnVjdCBuZXRfYnJpZGdlX3BvcnQgKnAsXFxuLS1cXG5uZXQvYnJpZGdlL2JyX21ycC5jPTI3OT1zdGF0aWMgdm9pZCBicl9tcnBfdGVzdF93b3JrX2V4cGlyZWQoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxcbi0tXFxubmV0L2JyaWRnZS9icl9tcnAuYy0zMTEtXFx0XFx0aWYgKCFtcnAtXFx1MDAzZXRlc3RfbW9uaXRvcikge1xcbm5ldC9icmlkZ2UvYnJfbXJwLmM6MzEyOlxcdFxcdFxcdHNrYiA9IGJyX21ycF9hbGxvY190ZXN0X3NrYihtcnAsIHAsXFxubmV0L2JyaWRnZS9icl9tcnAuYy0zMTMtXFx0XFx0XFx0XFx0XFx0XFx0ICAgIEJSX01SUF9QT1JUX1JPTEVfUFJJTUFSWSk7XFxuLS1cXG5uZXQvYnJpZGdlL2JyX21ycC5jLTMyNy1cXHRcXHRpZiAoIW1ycC1cXHUwMDNldGVzdF9tb25pdG9yKSB7XFxubmV0L2JyaWRnZS9icl9tcnAuYzozMjg6XFx0XFx0XFx0c2tiID0gYnJfbXJwX2FsbG9jX3Rlc3Rfc2tiKG1ycCwgcCxcXG5uZXQvYnJpZGdlL2JyX21ycC5jLTMyOS1cXHRcXHRcXHRcXHRcXHRcXHQgICAgQlJfTVJQX1BPUlRfUk9MRV9TRUNPTkRBUlkpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNVQwODo1OToxOC4yMTAzOTc2ODdaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyNjU4MjgzMzgyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgTVJQIEFsbG9jYXRpb24gVGVzdCoqXG5cbk9rYXksIHNvIGBicl9tcnBfYWxsb2NfdGVzdF9za2JgIGlzIHRyaWdnZXJlZCBieSBgYnJfbXJwX3Rlc3Rfd29ya19leHBpcmVkYC4gVGhhdCdzIHBhcnQgb2YgdGhlIE1lZGlhIFJlZHVuZGFuY3kgUHJvdG9jb2wgYnJpZGdlIGltcGxlbWVudGF0aW9uLiBNYWtlcyBzZW5zZS4gQmVmb3JlIEkgZGlnIHRvbyBkZWVwIGludG8gdGhlIGNvZGUgaXRzZWxmLCBJJ20gZ29pbmcgdG8gdGFrZSBhIHF1aWNrIGxvb2sgYXQgdGhlIEtjb25maWcgZmlsZS4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBNUlAgaXMgYWN0dWFsbHkgZW5hYmxlZCwgYW5kIGNoZWNrIGFueSBjb25maWd1cmF0aW9uIG9wdGlvbnMgcmVsYXRlZCB0byBpdC4gVW5kZXJzdGFuZGluZyB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zIHdpbGwgZ2l2ZSBtZSBhIGJldHRlciBvdmVydmlldyBvZiB3aGF0IHRvIGxvb2sgZm9yIGluIHRoZSBhbGxvY2F0ZWQgY29kZS4gSXQnbGwgZ2l2ZSBtZSBhIGZyYW1ld29yayB0byB1bmRlcnN0YW5kIHdoYXQgdGhlIGNvZGUgaXMgbWVhbnQgdG8gYWNjb21wbGlzaC4gTGV0IG1lIHF1aWNrbHkgc2NhbiB0aGF0IEtjb25maWcuLi5cblxuXG4iLCJJbnB1dFRva2VucyI6MjgzMCwiT3V0cHV0VG9rZW5zIjozMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjU4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDA4OjU5OjIwLjg2ODY4MzYyOVoiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0MTQ2MjYyNTUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIEJSSURHRV9NUlBcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L2JyaWRnZS9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9icmlkZ2UvS2NvbmZpZz01MD1jb25maWcgQlJJREdFX1ZMQU5fRklMVEVSSU5HXFxuLS1cXG5uZXQvYnJpZGdlL0tjb25maWctNjMtXFxubmV0L2JyaWRnZS9LY29uZmlnOjY0OmNvbmZpZyBCUklER0VfTVJQXFxubmV0L2JyaWRnZS9LY29uZmlnLTY1LVxcdGJvb2wgXFxcIk1SUCBwcm90b2NvbFxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMDg6NTk6MjEuMjgzMzE2MDY0WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mjk0MzYwOTk2NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipBbmFseXppbmcgRGVwZW5kZW5jaWVzIGZvciBCUklER0VfTVJQKipcblxuT2theSwgc28gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGFyY2hpdGVjdHVyZSBhcm91bmQgYEJSSURHRV9NUlBgLiBJIGltbWVkaWF0ZWx5IHN0YXJ0IHRoaW5raW5nIGFib3V0IGl0cyBkZXBlbmRlbmNpZXMuIFdoYXQgb3RoZXIgbW9kdWxlcywgc2VydmljZXMsIGRhdGEgc3RydWN0dXJlcywgb3IgZXZlbiBleHRlcm5hbCBzeXN0ZW1zIGRvZXMgdGhpcyBwYXJ0aWN1bGFyIHBpZWNlIG9mIGNvZGUgcmVseSB1cG9uPyBJJ20gZXNzZW50aWFsbHkgdHJhY2luZyB0aGUgY2FsbCBncmFwaCwgYnV0IGZyb20gdGhlIHBlcnNwZWN0aXZlIG9mIGhvdyBNUlAgKE1hdGVyaWFsIFJlcXVpcmVtZW50cyBQbGFubmluZykgaXMgc3BlY2lmaWNhbGx5IGJlaW5nIGhhbmRsZWQgd2l0aGluIHRoZSBicmlkZ2UuIElzIGl0IGEgY29yZSBjYWxjdWxhdGlvbiBlbmdpbmUsIGEgZGF0YSBhZGFwdGVyLCBhbiBpbnRlZ3JhdGlvbiBsYXllciwgb3Igc29tZXRoaW5nIGVsc2UgZW50aXJlbHk/IEtub3dpbmcgdGhlIGRlcGVuZGVuY2llcyB3aWxsIGhlbHAgbWUgaW1tZWRpYXRlbHkgZ3Jhc3AgaXRzIGltcGFjdCBhbmQgcGlucG9pbnQgcG90ZW50aWFsIGFyZWFzIGZvciBvcHRpbWl6YXRpb24sIGRlYnVnZ2luZywgb3IgZnV0dXJlIGludGVncmF0aW9uIGVmZm9ydHMuIFRoaXMgaXMgdGhlIGZpcnN0IHF1ZXN0aW9uIEkgbmVlZCB0byBhbnN3ZXIuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMxNDAsIk91dHB1dFRva2VucyI6MjksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNVQwODo1OToyNC4yMjY5MjgwMTFaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjY1ODIzNzQsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiQlJJREdFX01SUFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvYnJpZGdlL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L2JyaWRnZS9LY29uZmlnPTUwPWNvbmZpZyBCUklER0VfVkxBTl9GSUxURVJJTkdcXG4tLVxcbm5ldC9icmlkZ2UvS2NvbmZpZy02My1cXG5uZXQvYnJpZGdlL0tjb25maWc6NjQ6Y29uZmlnIEJSSURHRV9NUlBcXG5uZXQvYnJpZGdlL0tjb25maWctNjUtXFx0Ym9vbCBcXFwiTVJQIHByb3RvY29sXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNVQwODo1OToyNC4yOTM1MTY3NzVaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyODE1Nzc0MjY5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgYSBzdW1tYXJ5IG9mIG15IHRob3VnaHQgcHJvY2VzcywgYXMgcmVxdWVzdGVkOlxuXG4qKk5hdmlnYXRpbmcgdGhlIEtlcm5lbCdzIE5ldHdvcmsgQnJpZGdlIENvbmZpZ3VyYXRpb24qKlxuXG5Pa2F5LCBzbyBJJ20gZGlnZ2luZyBpbnRvIHRoZSBuZXR3b3JrIGJyaWRnZSBjb25maWd1cmF0aW9uLCBzcGVjaWZpY2FsbHkgd2l0aGluIHRoZSBrZXJuZWwuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byB6ZXJvIGluIG9uIGBuZXQvYnJpZGdlL0tjb25maWdgLiBUaGF0J3Mgd2hlcmUgSSdkIGV4cGVjdCB0byBmaW5kIHRoZSBjb3JlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyByZWxhdGVkIHRvIGJyaWRnaW5nLiBHaXZlbiBteSBmYW1pbGlhcml0eSB3aXRoIHRoZSBrZXJuZWwncyBzdHJ1Y3R1cmUsIEkgaW5zdGluY3RpdmVseSBnbyBzdHJhaWdodCB0byB0aGUgY29uZmlndXJhdGlvbiBmaWxlcy4gQW5kIHRvIHN0YXJ0LCBsZXQncyBsb29rIGFyb3VuZCBsaW5lIDY0IC0gdGhhdCBzZWVtcyBsaWtlIGEgcmVhc29uYWJsZSBwbGFjZSB0byBzdGFydCwgYXMgb2Z0ZW4gaW1wb3J0YW50IGFuZCBmdW5kYW1lbnRhbCBjb25maWcgb3B0aW9ucyBhcmUgaW4gdGhhdCBhcmVhIG9mIGEgZmlsZS4gVGhpcydsbCBsaWtlbHkgY29udGFpbiB0aGUgbWFpbiBgY29uZmlnYCBvcHRpb25zIGFuZCBwb3NzaWJseSBkZXBlbmRlbmNpZXMgZm9yIGJyaWRnZSBmdW5jdGlvbmFsaXR5LCBhbmQgdGhhdCdzIGV4YWN0bHkgd2hhdCBJIG5lZWQgdG8gdW5kZXJzdGFuZC4gTGV0J3Mgc2VlIHdoYXQncyB0aGVyZS4uLlxuXG5cbiIsIklucHV0VG9rZW5zIjozNDE0LCJPdXRwdXRUb2tlbnMiOjMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMDg6NTk6MjcuMTA5Mjk0NTgzWiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjY5NzQwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcIm5ldC9icmlkZ2UvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiA1MCxcbiAgXCJMaW5lQ291bnRcIjogMzBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICA1MDpcXHRjb25maWcgQlJJREdFX1ZMQU5fRklMVEVSSU5HXFxuICA1MTpcXHRcXHRib29sIFxcXCJWTEFOIGZpbHRlcmluZ1xcXCJcXG4gIDUyOlxcdFxcdGRlcGVuZHMgb24gQlJJREdFXFxuICA1MzpcXHRcXHRkZXBlbmRzIG9uIFZMQU5fODAyMVFcXG4gIDU0OlxcdFxcdGRlZmF1bHQgblxcbiAgNTU6XFx0XFx0aGVscFxcbiAgNTY6XFx0XFx0ICBJZiB5b3Ugc2F5IFkgaGVyZSwgdGhlbiB0aGUgRXRoZXJuZXQgYnJpZGdlIHdpbGwgYmUgYWJsZSBzZWxlY3RpdmVseVxcbiAgNTc6XFx0XFx0ICByZWNlaXZlIGFuZCBmb3J3YXJkIHRyYWZmaWMgYmFzZWQgb24gVkxBTiBpbmZvcm1hdGlvbiBpbiB0aGUgcGFja2V0XFxuICA1ODpcXHRcXHQgIGFueSBWTEFOIGluZm9ybWF0aW9uIGNvbmZpZ3VyZWQgb24gdGhlIGJyaWRnZSBwb3J0IG9yIGJyaWRnZSBkZXZpY2UuXFxuICA1OTpcXHRcXG4gIDYwOlxcdFxcdCAgU2F5IE4gdG8gZXhjbHVkZSB0aGlzIHN1cHBvcnQgYW5kIHJlZHVjZSB0aGUgYmluYXJ5IHNpemUuXFxuICA2MTpcXHRcXG4gIDYyOlxcdFxcdCAgSWYgdW5zdXJlLCBzYXkgWS5cXG4gIDYzOlxcdFxcbiAgNjQ6XFx0Y29uZmlnIEJSSURHRV9NUlBcXG4gIDY1OlxcdFxcdGJvb2wgXFxcIk1SUCBwcm90b2NvbFxcXCJcXG4gIDY2OlxcdFxcdGRlcGVuZHMgb24gQlJJREdFXFxuICA2NzpcXHRcXHRkZWZhdWx0IG5cXG4gIDY4OlxcdFxcdGhlbHBcXG4gIDY5OlxcdFxcdCAgSWYgeW91IHNheSBZIGhlcmUsIHRoZW4gdGhlIEV0aGVybmV0IGJyaWRnZSB3aWxsIGJlIGFibGUgdG8gcnVuIE1SUFxcbiAgNzA6XFx0XFx0ICBwcm90b2NvbCB0byBkZXRlY3QgbG9vcHNcXG4gIDcxOlxcdFxcbiAgNzI6XFx0XFx0ICBTYXkgTiB0byBleGNsdWRlIHRoaXMgc3VwcG9ydCBhbmQgcmVkdWNlIHRoZSBiaW5hcnkgc2l6ZS5cXG4gIDczOlxcdFxcbiAgNzQ6XFx0XFx0ICBJZiB1bnN1cmUsIHNheSBOLlxcbiAgNzU6XFx0XFxuICA3NjpcXHRjb25maWcgQlJJREdFX0NGTVxcbiAgNzc6XFx0XFx0Ym9vbCBcXFwiQ0ZNIHByb3RvY29sXFxcIlxcbiAgNzg6XFx0XFx0ZGVwZW5kcyBvbiBCUklER0VcXG4gIDc5OlxcdFxcdGhlbHBcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMDg6NTk6MjcuMTA5MzY2NzAzWiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ1Nzc2ODAwNzYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi5cblxuKipEZWNvZGluZyB0aGUgTVJQIENvbmZpZ3VyYXRpb24gRGVwZW5kZW5jeSoqXG5cblJpZ2h0LCBzbyB0aGUgY29uZmlndXJhdGlvbiBpbiBxdWVzdGlvbiBpcyBgQlJJREdFX01SUGAuIFRoYXQgaW1tZWRpYXRlbHkgdGVsbHMgbWUgaXQncyByZWxhdGVkIHRvIHRoZSBicmlkZ2UgZnVuY3Rpb25hbGl0eSwgc3BlY2lmaWNhbGx5IHRoZSBNUlAgYXNwZWN0cy4gIEl0IGV4cGxpY2l0bHkgc3RhdGVzIGEgZGVwZW5kZW5jeSBvbiBgQlJJREdFYC4gVGhhdCdzIG5vdCBzdXJwcmlzaW5nOyBNUlAgbGlrZWx5IHJlcXVpcmVzIHRoZSBjb3JlIGJyaWRnaW5nIGNvZGUgdG8gYmUgZnVuY3Rpb25hbCBmaXJzdC4gTm8gc3VycHJpc2VzIHRoZXJlLlxuXG5OZXh0LCBJIG5lZWQgdG8gZmlndXJlIG91dCB3aGVyZSB0aGUgTVJQIGNvZGUgaXMga2lja2luZyBpbi4gVGhlIG1lbnRpb24gb2YgdGhlIGZ1bmN0aW9uIGBicl9tcnBfYWxsb2NfdGVzdF9za2JgIGJlaW5nIGBzdGF0aWNgIGlzIGEgdXNlZnVsIGNsdWUuIEJlY2F1c2UgaXQncyBzdGF0aWMsIGl0J3Mgc2NvcGVkIHRvIGl0cyBjb21waWxhdGlvbiB1bml0IGFuZCB3b24ndCBiZSBkaXJlY3RseSBleHBvc2VkIGFzIGEgc3ltYm9sIGluIHRoZSBzdGFuZGFyZCBzeW1ib2wgdGFibGUuICBUaGF0IG1lYW5zIEkgY2FuJ3QgcmVseSBvbiBgbm1gIG9yIHNpbWlsYXIgdG9vbHMgdG8gZmluZCB0aGUgZnVuY3Rpb24sIHNpbmNlIGl0IGhhcyBsaW1pdGVkIHZpc2liaWxpdHkgb3V0c2lkZSB0aGUgZmlsZS4gSXQgYWxzbyBtZWFucyBpdCBtYXkgYmUgaW5saW5lZC5cblxuVGhlcmVmb3JlLCBJIG5lZWQgdG8gdGhpbmsgYWJvdXQgdGhlIG1vcmUgbGlrZWx5IGVudHJ5IHBvaW50cyBmb3IgdGhpcyB3aG9sZSBNUlAgc3Vic3lzdGVtLiBJIG5lZWQgdG8gZm9jdXMgb24gd2hlcmUgdGhlIE1SUCBmdW5jdGlvbmFsaXR5IGlzICphY3R1YWxseSogaW52b2tlZC4gIEkgc2hvdWxkIHN0YXJ0IGxvb2tpbmcgZm9yIHRoaW5ncyBsaWtlIG5ldGxpbmsgaW50ZXJmYWNlIGhhbmRsZXJzLCBtb2R1bGUgaW5pdGlhbGl6YXRpb24gZnVuY3Rpb25zLCBvciBjYWxsYmFjayByb3V0aW5lcyByZWdpc3RlcmVkIHdpdGggdGhlIGJyaWRnZS4gSSdsbCBuZWVkIHRvIGxvb2sgZm9yIGZ1bmN0aW9ucyB0aGF0IGFyZSBub3Qgc3RhdGljLCB0aGF0IGluaXRpYWxpemUgdGhlIE1SUC4gIE9yLCBtb3JlIHNwZWNpZmljYWxseSwgSSBuZWVkIHRvIGZpbmQgdGhlIGVudHJ5IHBvaW50cyAqaW50byogdGhlIE1SUCBjb2RlLlxuXG5cbiIsIklucHV0VG9rZW5zIjozOTkzLCJPdXRwdXRUb2tlbnMiOjM1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTYsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNVQwODo1OTozMS42ODcwNTAyOFoiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTA1OTI3OTUxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImJyX21ycF9cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L2JyaWRnZS9icl9tcnAuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJcXG5GdWxsIG91dHB1dCBpcyB0b28gbG9uZywgc2hvd2luZyA1MDAgb3V0IG9mIDUyMSBsaW5lcy5cXG5Vc2UgbW9yZSBwcmVjaXNlIGV4cHJlc3Npb24gaWYgcG9zc2libGUuXFxuXFxubmV0L2JyaWRnZS9icl9tcnAuYz03PXN0YXRpYyBjb25zdCB1OCBtcnBfaW5fdGVzdF9kbWFjW0VUSF9BTEVOXSA9IHsgMHgxLCAweDE1LCAweDRlLCAweDAsIDB4MCwgMHgzIH07XFxubmV0L2JyaWRnZS9icl9tcnAuYy04LVxcbm5ldC9icmlkZ2UvYnJfbXJwLmM6OTpzdGF0aWMgaW50IGJyX21ycF9wcm9jZXNzKHN0cnVjdCBuZXRfYnJpZGdlX3BvcnQgKnAsIHN0cnVjdCBza19idWZmICpza2IpO1xcbm5ldC9icmlkZ2UvYnJfbXJwLmMtMTAtXFxubmV0L2JyaWRnZS9icl9tcnAuYz0xMT1zdGF0aWMgc3RydWN0IGJyX2ZyYW1lX3R5cGUgbXJwX2ZyYW1lX3R5cGUgX19yZWFkX21vc3RseSA9IHtcXG5uZXQvYnJpZGdlL2JyX21ycC5jLTEyLVxcdC50eXBlID0gY3B1X3RvX2JlMTYoRVRIX1BfTVJQKSxcXG5uZXQvYnJpZGdlL2JyX21ycC5jOjEzOlxcdC5mcmFtZV9oYW5kbGVyID0gYnJfbXJwX3Byb2Nlc3MsXFxubmV0L2JyaWRnZS9icl9tcnAuYy0xNC19O1xcbm5ldC9icmlkZ2UvYnJfbXJwLmMtMTUtXFxubmV0L2JyaWRnZS9icl9tcnAuYzoxNjpzdGF0aWMgYm9vbCBicl9tcnBfaXNfcmluZ19wb3J0KHN0cnVjdCBuZXRfYnJpZGdlX3BvcnQgKnBfcG9ydCxcXG5uZXQvYnJpZGdlL2JyX21ycC5jLTE3LVxcdFxcdFxcdFxcdHN0cnVjdCBuZXRfYnJpZGdlX3BvcnQgKnNfcG9ydCxcXG4tLVxcbm5ldC9icmlkZ2UvYnJfbXJwLmMtMjYtXFxubmV0L2JyaWRnZS9icl9tcnAuYzoyNzpzdGF0aWMgYm9vbCBicl9tcnBfaXNfaW5fcG9ydChzdHJ1Y3QgbmV0X2JyaWRnZV9wb3J0ICppX3BvcnQsXFxubmV0L2JyaWRnZS9icl9tcnAuYy0yOC1cXHRcXHRcXHQgICAgICBzdHJ1Y3QgbmV0X2JyaWRnZV9wb3J0ICpwb3J0KVxcbi0tXFxubmV0L2JyaWRnZS9icl9tcnAuYy0zNS1cXG5uZXQvYnJpZGdlL2JyX21ycC5jOjM2OnN0YXRpYyBzdHJ1Y3QgbmV0X2JyaWRnZV9wb3J0ICpicl9tcnBfZ2V0X3BvcnQoc3RydWN0IG5ldF9icmlkZ2UgKmJyLFxcbm5ldC9icmlkZ2UvYnJfbXJwLmMtMzctXFx0XFx0XFx0XFx0XFx0ICAgICAgIHUzMiBpZmluZGV4KVxcbi0tXFxubmV0L2JyaWRnZS9icl9tcnAuYy01MS1cXG5uZXQvYnJpZGdlL2JyX21ycC5jOjUyOnN0YXRpYyBzdHJ1Y3QgYnJfbXJwICpicl9tcnBfZmluZF9pZChzdHJ1Y3QgbmV0X2JyaWRnZSAqYnIsIHUzMiByaW5nX2lkKVxcbm5ldC9icmlkZ2UvYnJfbXJwLmMtNTMte1xcbi0tXFxubmV0L2JyaWRnZS9icl9tcnAuYy02Ny1cXG5uZXQvYnJpZGdlL2JyX21ycC5jOjY4OnN0YXRpYyBzdHJ1Y3QgYnJfbXJwICpicl9tcnBfZmluZF9pbl9pZChzdHJ1Y3QgbmV0X2JyaWRnZSAqYnIsIHUzMiBpbl9pZClcXG5uZXQvYnJpZGdlL2JyX21ycC5jLTY5LXtcXG4tLVxcbm5ldC9icmlkZ2UvYnJfbXJwLmMtODMtXFxubmV0L2JyaWRnZS9icl9tcnAuYzo4NDpzdGF0aWMgYm9vbCBicl9tcnBfdW5pcXVlX2lmaW5kZXgoc3RydWN0IG5ldF9icmlkZ2UgKmJyLCB1MzIgaWZpbmRleClcXG5uZXQvYnJpZGdlL2JyX21ycC5jLTg1LXtcXG4tLVxcbm5ldC9icmlkZ2UvYnJfbXJwLmMtMTA3LVxcbm5ldC9icmlkZ2UvYnJfbXJwLmM6MTA4OnN0YXRpYyBzdHJ1Y3QgYnJfbXJwICpicl9tcnBfZmluZF9wb3J0KHN0cnVjdCBuZXRfYnJpZGdlICpicixcXG5uZXQvYnJpZGdlL2JyX21ycC5jLTEwOS1cXHRcXHRcXHRcXHQgICAgICAgc3RydWN0IG5ldF9icmlkZ2VfcG9ydCAqcClcXG4tLVxcbm5ldC9icmlkZ2UvYnJfbXJwLmMtMTI2LVxcbm5ldC9icmlkZ2UvYnJfbXJwLmM6MTI3OnN0YXRpYyBpbnQgYnJfbXJwX25leHRfc2VxKHN0cnVjdCBicl9tcnAgKm1ycClcXG5uZXQvYnJpZGdlL2JyX21ycC5jLTEyOC17XFxuLS1cXG5uZXQvYnJpZGdlL2JyX21ycC5jLTEzMi1cXG5uZXQvYnJpZGdlL2JyX21ycC5jOjEzMzpzdGF0aWMgc3RydWN0IHNrX2J1ZmYgKmJyX21ycF9za2JfYWxsb2Moc3RydWN0IG5ldF9icmlkZ2VfcG9ydCAqcCxcXG5uZXQvYnJpZGdlL2JyX21ycC5jLTEzNC1cXHRcXHRcXHRcXHRcXHRjb25zdCB1OCAqc3JjLCBjb25zdCB1OCAqZHN0KVxcbi0tXFxubmV0L2JyaWRnZS9icl9tcnAuYy0xNTktXFxubmV0L2JyaWRnZS9icl9tcnAuYzoxNjA6c3RhdGljIHZvaWQgYnJfbXJwX3NrYl90bHYoc3RydWN0IHNrX2J1ZmYgKnNrYixcXG5uZXQvYnJpZGdlL2JyX21ycC5jOjE2MTpcXHRcXHRcXHQgICBlbnVtIGJyX21ycF90bHZfaGVhZGVyX3R5cGUgdHlwZSxcXG5uZXQvYnJpZGdlL2JyX21ycC5jLTE2Mi1cXHRcXHRcXHQgICB1OCBsZW5ndGgpXFxubmV0L2JyaWRnZS9icl9tcnAuYy0xNjMte1xcbm5ldC9icmlkZ2UvYnJfbXJwLmM6MTY0OlxcdHN0cnVjdCBicl9tcnBfdGx2X2hkciAqaGRyO1xcbm5ldC9icmlkZ2UvYnJfbXJwLmMtMTY1LVxcbi0tXFxubmV0L2JyaWRnZS9icl9tcnAuYy0xNzAtXFxubmV0L2JyaWRnZS9icl9tcnAuYzoxNzE6c3RhdGljIHZvaWQgYnJfbXJwX3NrYl9jb21tb24oc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGJyX21ycCAqbXJwKVxcbm5ldC9icmlkZ2UvYnJfbXJwLmMtMTcyLXtcXG5uZXQvYnJpZGdlL2JyX21ycC5jOjE3MzpcXHRzdHJ1Y3QgYnJfbXJwX2NvbW1vbl9oZHIgKmhkcjtcXG5uZXQvYnJpZGdlL2JyX21ycC5jLTE3NC1cXG5uZXQvYnJpZGdlL2JyX21ycC5jOjE3NTpcXHRicl9tcnBfc2tiX3Rsdihza2IsIEJSX01SUF9UTFZfSEVBREVSX0NPTU1PTiwgc2l6ZW9mKCpoZHIpKTtcXG5uZXQvYnJpZGdlL2JyX21ycC5jLTE3Ni1cXG5uZXQvYnJpZGdlL2JyX21ycC5jLTE3Ny1cXHRoZHIgPSBza2JfcHV0KHNrYiwgc2l6ZW9mKCpoZHIpKTtcXG5uZXQvYnJpZGdlL2JyX21ycC5jOjE3ODpcXHRoZHItXFx1MDAzZXNlcV9pZCA9IGNwdV90b19iZTE2KGJyX21ycF9uZXh0X3NlcShtcnApKTtcXG5uZXQvYnJpZGdlL2JyX21ycC5jLTE3OS1cXHRtZW1zZXQoaGRyLVxcdTAwM2Vkb21haW4sIDB4ZmYsIE1SUF9ET01BSU5fVVVJRF9MRU5HVEgpO1xcbi0tXFxubmV0L2JyaWRnZS9icl9tcnAuYy0xODEtXFxubmV0L2JyaWRnZS9icl9tcnAuYzoxODI6c3RhdGljIHN0cnVjdCBza19idWZmICpicl9tcnBfYWxsb2NfdGVzdF9za2Ioc3RydWN0IGJyX21ycCAqbXJwLFxcbm5ldC9icmlkZ2UvYnJfbXJwLmMtMTgzLVxcdFxcdFxcdFxcdFxcdCAgICAgc3RydWN0IG5ldF9icmlkZ2VfcG9ydCAqcCxcXG5uZXQvYnJpZGdlL2JyX21ycC5jOjE4NDpcXHRcXHRcXHRcXHRcXHQgICAgIGVudW0gYnJfbXJwX3BvcnRfcm9sZV90eXBlIHBvcnRfcm9sZSlcXG5uZXQvYnJpZGdlL2JyX21ycC5jLTE4NS17XFxubmV0L2JyaWRnZS9icl9tcnAuYzoxODY6XFx0c3RydWN0IGJyX21ycF9yaW5nX3Rlc3RfaGRyICpoZHIgPSBOVUxMO1xcbm5ldC9icmlkZ2UvYnJfbXJwLmMtMTg3LVxcdHN0cnVjdCBza19idWZmICpza2IgPSBOVUxMO1xcbi0tXFxubmV0L2JyaWRnZS9icl9tcnAuYy0xOTEtXFxubmV0L2JyaWRnZS9icl9tcnAuYzoxOTI6XFx0c2tiID0gYnJfbXJwX3NrYl9hbGxvYyhwLCBwLVxcdTAwM2VkZXYtXFx1MDAzZWRldl9hZGRyLCBtcnBfdGVzdF9kbWFjKTtcXG5uZXQvYnJpZGdlL2JyX21ycC5jLTE5My1cXHRpZiAoIXNrYilcXG4tLVxcbm5ldC9icmlkZ2UvYnJfbXJwLmMtMTk1LVxcbm5ldC9icmlkZ2UvYnJfbXJwLmM6MTk2OlxcdGJyX21ycF9za2JfdGx2KHNrYiwgQlJfTVJQX1RMVl9IRUFERVJfUklOR19URVNULCBzaXplb2YoKmhkcikpO1xcbm5ldC9icmlkZ2UvYnJfbXJwLmMtMTk3LVxcdGhkciA9IHNrYl9wdXQoc2tiLCBzaXplb2YoKmhkcikpO1xcbi0tXFxubmV0L2JyaWRnZS9icl9tcnAuYy0yMDUtXFxubmV0L2JyaWRnZS9icl9tcnAuYzoyMDY6XFx0YnJfbXJwX3NrYl9jb21tb24oc2tiLCBtcnApO1xcbm5ldC9icmlkZ2UvYnJfbXJwLmMtMjA3LVxcbi0tXFxubmV0L2JyaWRnZS9icl9tcnAuYy0yMTItXFx0aWYgKG1ycC1cXHUwMDNlcmluZ19yb2xlID09IEJSX01SUF9SSU5HX1JPTEVfTVJBKSB7XFxubmV0L2JyaWRnZS9icl9tcnAuYzoyMTM6XFx0XFx0c3RydWN0IGJyX21ycF9zdWJfb3B0aW9uMV9oZHIgKnN1Yl9vcHQgPSBOVUxMO1xcbm5ldC9icmlkZ2UvYnJfbXJwLmM6MjE0OlxcdFxcdHN0cnVjdCBicl9tcnBfdGx2X2hkciAqc3ViX3RsdiA9IE5VTEw7XFxubmV0L2JyaWRnZS9icl9tcnAuYzoyMTU6XFx0XFx0c3RydWN0IGJyX21ycF9vdWlfaGRyICpvdWkgPSBOVUxMO1xcbm5ldC9icmlkZ2UvYnJfbXJwLmMtMjE2LVxcdFxcdHU4IGxlbmd0aDtcXG4tLVxcbm5ldC9icmlkZ2UvYnJfbXJwLmMtMjE5LVxcdFxcdFxcdE1SUF9PUFRfUEFERElORztcXG5uZXQvYnJpZGdlL2JyX21ycC5jOjIyMDpcXHRcXHRicl9tcnBfc2tiX3Rsdihza2IsIEJSX01SUF9UTFZfSEVBREVSX09QVElPTiwgbGVuZ3RoKTtcXG5uZXQvYnJpZGdlL2JyX21ycC5jLTIyMS1cXG4tLVxcbm5ldC9icmlkZ2UvYnJfbXJwLmMtMjMzLVxcbm5ldC9icmlkZ2UvYnJfbXJwLmM6MjM0OlxcdGJyX21ycF9za2JfdGx2KHNrYiwgQlJfTVJQX1RMVl9IRUFERVJfRU5ELCAweDApO1xcbm5ldC9icmlkZ2UvYnJfbXJwLmMtMjM1LVxcbi0tXFxubmV0L2JyaWRnZS9icl9tcnAuYy0yMzgtXFxubmV0L2JyaWRnZS9icl9tcnAuYzoyMzk6c3RhdGljIHN0cnVjdCBza19idWZmICpicl9tcnBfYWxsb2NfaW5fdGVzdF9za2Ioc3RydWN0IGJyX21ycCAqbXJwLFxcbm5ldC9icmlkZ2UvYnJfbXJwLmMtMjQwLVxcdFxcdFxcdFxcdFxcdFxcdHN0cnVjdCBuZXRfYnJpZGdlX3BvcnQgKnAsXFxubmV0L2JyaWRnZS9icl9tcnAuYzoyNDE6XFx0XFx0XFx0XFx0XFx0XFx0ZW51bSBicl9tcnBfcG9ydF9yb2xlX3R5cGUgcG9ydF9yb2xlKVxcbm5ldC9icmlkZ2UvYnJfbXJwLmMtMjQyLXtcXG5uZXQvYnJpZGdlL2JyX21ycC5jOjI0MzpcXHRzdHJ1Y3QgYnJfbXJwX2luX3Rlc3RfaGRyICpoZHIgPSBOVUxMO1xcbm5ldC9icmlkZ2UvYnJfbXJwLmMtMjQ0LVxcdHN0cnVjdCBza19idWZmICpza2IgPSBOVUxMO1xcbi0tXFxubmV0L2JyaWRnZS9icl9tcnAuYy0yNDgtXFxubmV0L2JyaWRnZS9icl9tcnAuYzoyNDk6XFx0c2tiID0gYnJfbXJwX3NrYl9hbGxvYyhwLCBwLVxcdTAwM2VkZXYtXFx1MDAzZWRldl9hZGRyLCBtcnBfaW5fdGVzdF9kbWFjKTtcXG5uZXQvYnJpZGdlL2JyX21ycC5jLTI1MC1cXHRpZiAoIXNrYilcXG4tLVxcbm5ldC9icmlkZ2UvYnJfbXJwLmMtMjUyLVxcbm5ldC9icmlkZ2UvYnJfbXJwLmM6MjUzOlxcdGJyX21ycF9za2JfdGx2KHNrYiwgQlJfTVJQX1RMVl9IRUFERVJfSU5fVEVTVCwgc2l6ZW9mKCpoZHIpKTtcXG5uZXQvYnJpZGdlL2JyX21ycC5jLTI1NC1cXHRoZHIgPSBza2JfcHV0KHNrYiwgc2l6ZW9mKCpoZHIpKTtcXG4tLVxcbm5ldC9icmlkZ2UvYnJfbXJwLmMtMjYyLVxcbm5ldC9icmlkZ2UvYnJfbXJwLmM6MjYzOlxcdGJyX21ycF9za2JfY29tbW9uKHNrYiwgbXJwKTtcXG5uZXQvYnJpZGdlL2JyX21ycC5jOjI2NDpcXHRicl9tcnBfc2tiX3Rsdihza2IsIEJSX01SUF9UTFZfSEVBREVSX0VORCwgMHgwKTtcXG5uZXQvYnJpZGdlL2JyX21ycC5jLTI2NS1cXG4tLVxcbm5ldC9icmlkZ2UvYnJfbXJwLmMtMjc4LSAqL1xcbm5ldC9icmlkZ2UvYnJfbXJwLmM6Mjc5OnN0YXRpYyB2b2lkIGJyX21ycF90ZXN0X3dvcmtfZXhwaXJlZChzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXFxubmV0L2JyaWRnZS9icl9tcnAuYy0yODAte1xcbi0tXFxubmV0L2JyaWRnZS9icl9tcnAuYy0zMTEtXFx0XFx0aWYgKCFtcnAtXFx1MDAzZXRlc3RfbW9uaXRvcikge1xcbm5ldC9icmlkZ2UvYnJfbXJwLmM6MzEyOlxcdFxcdFxcdHNrYiA9IGJyX21ycF9hbGxvY190ZXN0X3NrYihtcnAsIHAsXFxubmV0L2JyaWRnZS9icl9tcnAuYy0zMTMtXFx0XFx0XFx0XFx0XFx0XFx0ICAgIEJSX01SUF9QT1JUX1JPTEVfUFJJTUFSWSk7XFxuLS1cXG5uZXQvYnJpZGdlL2JyX21ycC5jLTMyMS1cXHRcXHRpZiAobm90aWZ5X29wZW4gXFx1MDAyNlxcdTAwMjYgIW1ycC1cXHUwMDNlcmluZ19yb2xlX29mZmxvYWRlZClcXG5uZXQvYnJpZGdlL2JyX21ycC5jOjMyMjpcXHRcXHRcXHRicl9tcnBfcmluZ19wb3J0X29wZW4ocC1cXHUwMDNlZGV2LCB0cnVlKTtcXG5uZXQvYnJpZGdlL2JyX21ycC5jLTMyMy1cXHR9XFxuLS1cXG5uZXQvYnJpZGdlL2JyX21ycC5jLTMyNy1cXHRcXHRpZiAoIW1ycC1cXHUwMDNldGVzdF9tb25pdG9yKSB7XFxubmV0L2JyaWRnZS9icl9tcnAuYzozMjg6XFx0XFx0XFx0c2tiID0gYnJfbXJwX2FsbG9jX3Rlc3Rfc2tiKG1ycCwgcCxcXG5uZXQvYnJpZGdlL2JyX21ycC5jLTMyOS1cXHRcXHRcXHRcXHRcXHRcXHQgICAgQlJfTVJQX1BPUlRfUk9MRV9TRUNPTkRBUlkpO1xcbi0tXFxubmV0L2JyaWRnZS9icl9tcnAuYy0zMzctXFx0XFx0aWYgKG5vdGlmeV9vcGVuIFxcdTAwMjZcXHUwMDI2ICFtcnAtXFx1MDAzZXJpbmdfcm9sZV9vZmZsb2FkZWQpXFxubmV0L2JyaWRnZS9icl9tcnAuYzozMzg6XFx0XFx0XFx0YnJfbXJwX3JpbmdfcG9ydF9vcGVuKHAtXFx1MDAzZWRldiwgdHJ1ZSk7XFxubmV0L2JyaWRnZS9icl9tcnAuYy0zMzktXFx0fVxcbi0tXFxubmV0L2JyaWRnZS9icl9tcnAuYy0zNTEtICovXFxubmV0L2JyaWRnZS9icl9tcnAuYzozNTI6c3RhdGljIHZvaWQgYnJfbXJwX2luX3Rlc3Rfd29ya19leHBpcmVkKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcXG5uZXQvYnJpZGdlL2JyX21ycC5jLTM1My17XFxuLS1cXG5uZXQvYnJpZGdlL2JyX21ycC5jLTM3Ny1cXHRpZiAocCkge1xcbm5ldC9icmlkZ2UvYnJfbXJwLmM6Mzc4OlxcdFxcdHNrYiA9IGJyX21ycF9hbGxvY19pbl90ZXN0X3NrYihtcnAsIHAsXFxubmV0L2JyaWRnZS9icl9tcnAuYy0zNzktXFx0XFx0XFx0XFx0XFx0ICAgICAgIEJSX01SUF9QT1JUX1JPTEVfUFJJTUFSWSk7XFxuLS1cXG5uZXQvYnJpZGdlL2JyX21ycC5jLTM4Ni1cXHRcXHRpZiAobm90aWZ5X29wZW4gXFx1MDAyNlxcdTAwMjYgIW1ycC1cXHUwMDNlaW5fcm9sZV9vZmZsb2FkZWQpXFxubmV0L2JyaWRnZS9icl9tcnAuYzozODc6XFx0XFx0XFx0YnJfbXJwX2luX3BvcnRfb3BlbihwLVxcdTAwM2VkZXYsIHRydWUpO1xcbm5ldC9icmlkZ2UvYnJfbXJwLmMtMzg4LVxcdH1cXG4tLVxcbm5ldC9icmlkZ2UvYnJfbXJwLmMtMzkxLVxcdGlmIChwKSB7XFxubmV0L2JyaWRnZS9icl9tcnAuYzozOTI6XFx0XFx0c2tiID0gYnJfbXJwX2FsbG9jX2luX3Rlc3Rfc2tiKG1ycCwgcCxcXG5uZXQvYnJpZGdlL2JyX21ycC5jLTM5My1cXHRcXHRcXHRcXHRcXHQgICAgICAgQlJfTVJQX1BPUlRfUk9MRV9TRUNPTkRBUlkpO1xcbi0tXFxubmV0L2JyaWRnZS9icl9tcnAuYy00MDAtXFx0XFx0aWYgKG5vdGlmeV9vcGVuIFxcdTAwMjZcXHUwMDI2ICFtcnAtXFx1MDAzZWluX3JvbGVfb2ZmbG9hZGVkKVxcbm5ldC9icmlkZ2UvYnJfbXJwLmM6NDAxOlxcdFxcdFxcdGJyX21ycF9pbl9wb3J0X29wZW4ocC1cXHUwMDNlZGV2LCB0cnVlKTtcXG5uZXQvYnJpZGdlL2JyX21ycC5jLTQwMi1cXHR9XFxuLS1cXG5uZXQvYnJpZGdlL2JyX21ycC5jLTQwNS1cXHRpZiAocCkge1xcbm5ldC9icmlkZ2UvYnJfbXJwLmM6NDA2OlxcdFxcdHNrYiA9IGJyX21ycF9hbGxvY19pbl90ZXN0X3NrYihtcnAsIHAsXFxubmV0L2JyaWRnZS9icl9tcnAuYy00MDctXFx0XFx0XFx0XFx0XFx0ICAgICAgIEJSX01SUF9QT1JUX1JPTEVfSU5URVIpO1xcbi0tXFxubmV0L2JyaWRnZS9icl9tcnAuYy00MTQtXFx0XFx0aWYgKG5vdGlmeV9vcGVuIFxcdTAwMjZcXHUwMDI2ICFtcnAtXFx1MDAzZWluX3JvbGVfb2ZmbG9hZGVkKVxcbm5ldC9icmlkZ2UvYnJfbXJwLmM6NDE1OlxcdFxcdFxcdGJyX21ycF9pbl9wb3J0X29wZW4ocC1cXHUwMDNlZGV2LCB0cnVlKTtcXG5uZXQvYnJpZGdlL2JyX21ycC5jLTQxNi1cXHR9XFxuLS1cXG5uZXQvYnJpZGdlL2JyX21ycC5jLTQyNy0gKi9cXG5uZXQvYnJpZGdlL2JyX21ycC5jOjQyODpzdGF0aWMgdm9pZCBicl9tcnBfZGVsX2ltcGwoc3RydWN0IG5ldF9icmlkZ2UgKmJyLCBzdHJ1Y3QgYnJfbXJwICptcnApXFxubmV0L2JyaWRnZS9icl9tcnAuYy00Mjkte1xcbi0tXFxubmV0L2JyaWRnZS9icl9tcnAuYy00MzQtXFx0Y2FuY2VsX2RlbGF5ZWRfd29ya19zeW5jKFxcdTAwMjZtcnAtXFx1MDAzZXRlc3Rfd29yayk7XFxubmV0L2JyaWRnZS9icl9tcnAuYzo0MzU6XFx0YnJfbXJwX3N3aXRjaGRldl9zZW5kX3JpbmdfdGVzdChiciwgbXJwLCAwLCAwLCAwLCAwKTtcXG5uZXQvYnJpZGdlL2JyX21ycC5jLTQzNi1cXG4tLVxcbm5ldC9icmlkZ2UvYnJfbXJwLmMtNDM4LVxcdGNhbmNlbF9kZWxheWVkX3dvcmtfc3luYyhcXHUwMDI2bXJwLVxcdTAwM2Vpbl90ZXN0X3dvcmspO1xcbm5ldC9icmlkZ2UvYnJfbXJwLmM6NDM5OlxcdGJyX21ycF9zd2l0Y2hkZXZfc2VuZF9pbl90ZXN0KGJyLCBtcnAsIDAsIDAsIDApO1xcbm5ldC9icmlkZ2UvYnJfbXJwLmMtNDQwLVxcbm5ldC9icmlkZ2UvYnJfbXJwLmMtNDQxLVxcdC8qIERpc2FibGUgdGhlIHJvbGVzICovXFxubmV0L2JyaWRnZS9icl9tcnAuYzo0NDI6XFx0YnJfbXJwX3N3aXRjaGRldl9zZXRfcmluZ19yb2xlKGJyLCBtcnAsIEJSX01SUF9SSU5HX1JPTEVfRElTQUJMRUQpO1xcbm5ldC9icmlkZ2UvYnJfbXJwLmMtNDQzLVxcdHAgPSBydG5sX2RlcmVmZXJlbmNlKG1ycC1cXHUwMDNlaV9wb3J0KTtcXG5uZXQvYnJpZGdlL2JyX21ycC5jLTQ0NC1cXHRpZiAocClcXG5uZXQvYnJpZGdlL2JyX21ycC5jOjQ0NTpcXHRcXHRicl9tcnBfc3dpdGNoZGV2X3NldF9pbl9yb2xlKGJyLCBtcnAsIG1ycC1cXHUwMDNlaW5faWQsIG1ycC1cXHUwMDNlcmluZ19pZCxcXG5uZXQvYnJpZGdlL2JyX21ycC5jLTQ0Ni1cXHRcXHRcXHRcXHRcXHQgICAgIEJSX01SUF9JTl9ST0xFX0RJU0FCTEVEKTtcXG5uZXQvYnJpZGdlL2JyX21ycC5jLTQ0Ny1cXG5uZXQvYnJpZGdlL2JyX21ycC5jOjQ0ODpcXHRicl9tcnBfc3dpdGNoZGV2X2RlbChiciwgbXJwKTtcXG5uZXQvYnJpZGdlL2JyX21ycC5jLTQ0OS1cXG4tLVxcbm5ldC9icmlkZ2UvYnJfbXJwLmMtNDU4LVxcdFxcdHNwaW5fdW5sb2NrX2JoKFxcdTAwMjZici1cXHUwMDNlbG9jayk7XFxubmV0L2JyaWRnZS9icl9tcnAuYzo0NTk6XFx0XFx0YnJfbXJwX3BvcnRfc3dpdGNoZGV2X3NldF9zdGF0ZShwLCBzdGF0ZSk7XFxubmV0L2JyaWRnZS9icl9tcnAuYy00NjAtXFx0XFx0cmN1X2Fzc2lnbl9wb2ludGVyKG1ycC1cXHUwMDNlcF9wb3J0LCBOVUxMKTtcXG4tLVxcbm5ldC9icmlkZ2UvYnJfbXJwLmMtNDcwLVxcdFxcdHNwaW5fdW5sb2NrX2JoKFxcdTAwMjZici1cXHUwMDNlbG9jayk7XFxubmV0L2JyaWRnZS9icl9tcnAuYzo0NzE6XFx0XFx0YnJfbXJwX3BvcnRfc3dpdGNoZGV2X3NldF9zdGF0ZShwLCBzdGF0ZSk7XFxubmV0L2JyaWRnZS9icl9tcnAuYy00NzItXFx0XFx0cmN1X2Fzc2lnbl9wb2ludGVyKG1ycC1cXHUwMDNlc19wb3J0LCBOVUxMKTtcXG4tLVxcbm5ldC9icmlkZ2UvYnJfbXJwLmMtNDgyLVxcdFxcdHNwaW5fdW5sb2NrX2JoKFxcdTAwMjZici1cXHUwMDNlbG9jayk7XFxubmV0L2JyaWRnZS9icl9tcnAuYzo0ODM6XFx0XFx0YnJfbXJwX3BvcnRfc3dpdGNoZGV2X3NldF9zdGF0ZShwLCBzdGF0ZSk7XFxubmV0L2JyaWRnZS9icl9tcnAuYy00ODQtXFx0XFx0cmN1X2Fzc2lnbl9wb2ludGVyKG1ycC1cXHUwMDNlaV9wb3J0LCBOVUxMKTtcXG4tLVxcbm5ldC9icmlkZ2UvYnJfbXJwLmMtNDk2LSAqL1xcbm5ldC9icmlkZ2UvYnJfbXJwLmM6NDk3OmludCBicl9tcnBfYWRkKHN0cnVjdCBuZXRfYnJpZGdlICpiciwgc3RydWN0IGJyX21ycF9pbnN0YW5jZSAqaW5zdGFuY2UpXFxubmV0L2JyaWRnZS9icl9tcnAuYy00OTgte1xcbi0tXFxubmV0L2JyaWRnZS9icl9tcnAuYy01MDUtXFx0ICovXFxubmV0L2JyaWRnZS9icl9tcnAuYzo1MDY6XFx0bXJwID0gYnJfbXJwX2ZpbmRfaWQoYnIsIGluc3RhbmNlLVxcdTAwM2VyaW5nX2lkKTtcXG5uZXQvYnJpZGdlL2JyX21ycC5jLTUwNy1cXHRpZiAobXJwKVxcbi0tXFxubmV0L2JyaWRnZS9icl9tcnAuYy01MDktXFxubmV0L2JyaWRnZS9icl9tcnAuYzo1MTA6XFx0aWYgKCFicl9tcnBfZ2V0X3BvcnQoYnIsIGluc3RhbmNlLVxcdTAwM2VwX2lmaW5kZXgpIHx8XFxubmV0L2JyaWRnZS9icl9tcnAuYzo1MTE6XFx0ICAgICFicl9tcnBfZ2V0X3BvcnQoYnIsIGluc3RhbmNlLVxcdTAwM2VzX2lmaW5kZXgpKVxcbm5ldC9icmlkZ2UvYnJfbXJwLmMtNTEyLVxcdFxcdHJldHVybiAtRUlOVkFMO1xcbi0tXFxubmV0L2JyaWRnZS9icl9tcnAuYy01MTQtXFx0LyogSXQgaXMgbm90IHBvc3NpYmxlIHRvIGhhdmUgdGhlIHNhbWUgcG9ydCBwYXJ0IG9mIG11bHRpcGxlIHJpbmdzICovXFxubmV0L2JyaWRnZS9icl9tcnAuYzo1MTU6XFx0aWYgKCFicl9tcnBfdW5pcXVlX2lmaW5kZXgoYnIsIGluc3RhbmNlLVxcdTAwM2VwX2lmaW5kZXgpIHx8XFxubmV0L2JyaWRnZS9icl9tcnAuYzo1MTY6XFx0ICAgICFicl9tcnBfdW5pcXVlX2lmaW5kZXgoYnIsIGluc3RhbmNlLVxcdTAwM2VzX2lmaW5kZXgpKVxcbm5ldC9icmlkZ2UvYnJfbXJwLmMtNTE3LVxcdFxcdHJldHVybiAtRUlOVkFMO1xcbi0tXFxubmV0L2JyaWRnZS9icl9tcnAuYy01MjUtXFxubmV0L2JyaWRnZS9icl9tcnAuYzo1MjY6XFx0cCA9IGJyX21ycF9nZXRfcG9ydChiciwgaW5zdGFuY2UtXFx1MDAzZXBfaWZpbmRleCk7XFxubmV0L2JyaWRnZS9icl9tcnAuYy01MjctXFx0c3Bpbl9sb2NrX2JoKFxcdTAwMjZici1cXHUwMDNlbG9jayk7XFxuLS1cXG5uZXQvYnJpZGdlL2JyX21ycC5jLTUzMi1cXG5uZXQvYnJpZGdlL2JyX21ycC5jOjUzMzpcXHRwID0gYnJfbXJwX2dldF9wb3J0KGJyLCBpbnN0YW5jZS1cXHUwMDNlc19pZmluZGV4KTtcXG5uZXQvYnJpZGdlL2JyX21ycC5jLTUzNC1cXHRzcGluX2xvY2tfYmgoXFx1MDAyNmJyLVxcdTAwM2Vsb2NrKTtcXG4tLVxcbm5ldC9icmlkZ2UvYnJfbXJwLmMtNTQyLVxcbm5ldC9icmlkZ2UvYnJfbXJwLmM6NTQzOlxcdElOSVRfREVMQVlFRF9XT1JLKFxcdTAwMjZtcnAtXFx1MDAzZXRlc3Rfd29yaywgYnJfbXJwX3Rlc3Rfd29ya19leHBpcmVkKTtcXG5uZXQvYnJpZGdlL2JyX21ycC5jOjU0NDpcXHRJTklUX0RFTEFZRURfV09SSyhcXHUwMDI2bXJwLVxcdTAwM2Vpbl90ZXN0X3dvcmssIGJyX21ycF9pbl90ZXN0X3dvcmtfZXhwaXJlZCk7XFxubmV0L2JyaWRnZS9icl9tcnAuYy01NDUtXFx0aGxpc3RfYWRkX3RhaWxfcmN1KFxcdTAwMjZtcnAtXFx1MDAzZWxpc3QsIFxcdTAwMjZici1cXHUwMDNlbXJwX2xpc3QpO1xcbm5ldC9icmlkZ2UvYnJfbXJwLmMtNTQ2LVxcbm5ldC9icmlkZ2UvYnJfbXJwLmM6NTQ3OlxcdGVyciA9IGJyX21ycF9zd2l0Y2hkZXZfYWRkKGJyLCBtcnApO1xcbm5ldC9icmlkZ2UvYnJfbXJwLmMtNTQ4LVxcdGlmIChlcnIpXFxuLS1cXG5uZXQvYnJpZGdlL2JyX21ycC5jLTU1My1kZWxldGVfbXJwOlxcbm5ldC9icmlkZ2UvYnJfbXJwLmM6NTU0OlxcdGJyX21ycF9kZWxfaW1wbChiciwgbXJwKTtcXG5uZXQvYnJpZGdlL2JyX21ycC5jLTU1NS1cXG4tLVxcbm5ldC9icmlkZ2UvYnJfbXJwLmMtNTYxLSAqL1xcbm5ldC9icmlkZ2UvYnJfbXJwLmM6NTYyOnZvaWQgYnJfbXJwX3BvcnRfZGVsKHN0cnVjdCBuZXRfYnJpZGdlICpiciwgc3RydWN0IG5ldF9icmlkZ2VfcG9ydCAqcClcXG5uZXQvYnJpZGdlL2JyX21ycC5jLTU2My17XFxubmV0L2JyaWRnZS9icl9tcnAuYzo1NjQ6XFx0c3RydWN0IGJyX21ycCAqbXJwID0gYnJfbXJwX2ZpbmRfcG9ydChiciwgcCk7XFxubmV0L2JyaWRnZS9icl9tcnAuYy01NjUtXFxuLS1cXG5uZXQvYnJpZGdlL2JyX21ycC5jLTU2OS1cXG5uZXQvYnJpZGdlL2JyX21ycC5jOjU3MDpcXHRicl9tcnBfZGVsX2ltcGwoYnIsIG1ycCk7XFxubmV0L2JyaWRnZS9icl9tcnAuYy01NzEtfVxcbi0tXFxubmV0L2JyaWRnZS9icl9tcnAuYy01NzUtICovXFxubmV0L2JyaWRnZS9icl9tcnAuYzo1NzY6aW50IGJyX21ycF9kZWwoc3RydWN0IG5ldF9icmlkZ2UgKmJyLCBzdHJ1Y3QgYnJfbXJwX2luc3RhbmNlICppbnN0YW5jZSlcXG5uZXQvYnJpZGdlL2JyX21ycC5jLTU3Ny17XFxubmV0L2JyaWRnZS9icl9tcnAuYzo1Nzg6XFx0c3RydWN0IGJyX21ycCAqbXJwID0gYnJfbXJwX2ZpbmRfaWQoYnIsIGluc3RhbmNlLVxcdTAwM2VyaW5nX2lkKTtcXG5uZXQvYnJpZGdlL2JyX21ycC5jLTU3OS1cXG4tLVxcbm5ldC9icmlkZ2UvYnJfbXJwLmMtNTgyLVxcbm5ldC9icmlkZ2UvYnJfbXJwLmM6NTgzOlxcdGJyX21ycF9kZWxfaW1wbChiciwgbXJwKTtcXG5uZXQvYnJpZGdlL2JyX21ycC5jLTU4NC1cXG4tLVxcbm5ldC9icmlkZ2UvYnJfbXJwLmMtNTkwLSAqL1xcbm5ldC9icmlkZ2UvYnJfbXJwLmM6NTkxOmludCBicl9tcnBfc2V0X3BvcnRfc3RhdGUoc3RydWN0IG5ldF9icmlkZ2VfcG9ydCAqcCxcXG5uZXQvYnJpZGdlL2JyX21ycC5jOjU5MjpcXHRcXHRcXHQgIGVudW0gYnJfbXJwX3BvcnRfc3RhdGVfdHlwZSBzdGF0ZSlcXG5uZXQvYnJpZGdlL2JyX21ycC5jLTU5My17XFxuLS1cXG5uZXQvYnJpZGdlL2JyX21ycC5jLTYwOC1cXG5uZXQvYnJpZGdlL2JyX21ycC5jOjYwOTpcXHRicl9tcnBfcG9ydF9zd2l0Y2hkZXZfc2V0X3N0YXRlKHAsIHBvcnRfc3RhdGUpO1xcbm5ldC9icmlkZ2UvYnJfbXJwLmMtNjEwLVxcbi0tXFxubmV0L2JyaWRnZS9icl9tcnAuYy02MTYtICovXFxubmV0L2JyaWRnZS9icl9tcnAuYzo2MTc6aW50IGJyX21ycF9zZXRfcG9ydF9yb2xlKHN0cnVjdCBuZXRfYnJpZGdlX3BvcnQgKnAsXFxubmV0L2JyaWRnZS9icl9tcnAuYzo2MTg6XFx0XFx0XFx0IGVudW0gYnJfbXJwX3BvcnRfcm9sZV90eXBlIHJvbGUpXFxubmV0L2JyaWRnZS9icl9tcnAuYy02MTkte1xcbi0tXFxubmV0L2JyaWRnZS9icl9tcnAuYy02MjQtXFxubmV0L2JyaWRnZS9icl9tcnAuYzo2MjU6XFx0bXJwID0gYnJfbXJwX2ZpbmRfcG9ydChwLVxcdTAwM2ViciwgcCk7XFxubmV0L2JyaWRnZS9icl9tcnAuYy02MjYtXFxuLS1cXG5uZXQvYnJpZGdlL2JyX21ycC5jLTY0MC1cXG5uZXQvYnJpZGdlL2JyX21ycC5jOjY0MTpcXHRicl9tcnBfcG9ydF9zd2l0Y2hkZXZfc2V0X3JvbGUocCwgcm9sZSk7XFxubmV0L2JyaWRnZS9icl9tcnAuYy02NDItXFxuLS1cXG5uZXQvYnJpZGdlL2JyX21ycC5jLTY0OC0gKi9cXG5uZXQvYnJpZGdlL2JyX21ycC5jOjY0OTppbnQgYnJfbXJwX3NldF9yaW5nX3N0YXRlKHN0cnVjdCBuZXRfYnJpZGdlICpicixcXG5uZXQvYnJpZGdlL2JyX21ycC5jOjY1MDpcXHRcXHRcXHQgIHN0cnVjdCBicl9tcnBfcmluZ19zdGF0ZSAqc3RhdGUpXFxubmV0L2JyaWRnZS9icl9tcnAuYy02NTEte1xcbm5ldC9icmlkZ2UvYnJfbXJwLmM6NjUyOlxcdHN0cnVjdCBicl9tcnAgKm1ycCA9IGJyX21ycF9maW5kX2lkKGJyLCBzdGF0ZS1cXHUwMDNlcmluZ19pZCk7XFxubmV0L2JyaWRnZS9icl9tcnAuYy02NTMtXFxuLS1cXG5uZXQvYnJpZGdlL2JyX21ycC5jLTY2MS1cXG5uZXQvYnJpZGdlL2JyX21ycC5jOjY2MjpcXHRicl9tcnBfc3dpdGNoZGV2X3NldF9yaW5nX3N0YXRlKGJyLCBtcnAsIHN0YXRlLVxcdTAwM2VyaW5nX3N0YXRlKTtcXG5uZXQvYnJpZGdlL2JyX21ycC5jLTY2My1cXG4tLVxcbm5ldC9icmlkZ2UvYnJfbXJwLmMtNjcwLSAqL1xcbm5ldC9icmlkZ2UvYnJfbXJwLmM6NjcxOmludCBicl9tcnBfc2V0X3Jpbmdfcm9sZShzdHJ1Y3QgbmV0X2JyaWRnZSAqYnIsXFxubmV0L2JyaWRnZS9icl9tcnAuYzo2NzI6XFx0XFx0XFx0IHN0cnVjdCBicl9tcnBfcmluZ19yb2xlICpyb2xlKVxcbm5ldC9icmlkZ2UvYnJfbXJwLmMtNjczLXtcXG5uZXQvYnJpZGdlL2JyX21ycC5jOjY3NDpcXHRzdHJ1Y3QgYnJfbXJwICptcnAgPSBicl9tcnBfZmluZF9pZChiciwgcm9sZS1cXHUwMDNlcmluZ19pZCk7XFxubmV0L2JyaWRnZS9icl9tcnAuYzo2NzU6XFx0ZW51bSBicl9tcnBfaHdfc3VwcG9ydCBzdXBwb3J0O1xcbm5ldC9icmlkZ2UvYnJfbXJwLmMtNjc2LVxcbi0tXFxubmV0L2JyaWRnZS9icl9tcnAuYy02ODItXFx0LyogSWYgdGhlcmUgaXMgYW4gZXJyb3IganVzdCBiYWlsZWQgb3V0ICovXFxubmV0L2JyaWRnZS9icl9tcnAuYzo2ODM6XFx0c3VwcG9ydCA9IGJyX21ycF9zd2l0Y2hkZXZfc2V0X3Jpbmdfcm9sZShiciwgbXJwLCByb2xlLVxcdTAwM2VyaW5nX3JvbGUpO1xcbm5ldC9icmlkZ2UvYnJfbXJwLmMtNjg0LVxcdGlmIChzdXBwb3J0ID09IEJSX01SUF9OT05FKVxcbi0tXFxubmV0L2JyaWRnZS9icl9tcnAuYy03MDEtICovXFxubmV0L2JyaWRnZS9icl9tcnAuYzo3MDI6aW50IGJyX21ycF9zdGFydF90ZXN0KHN0cnVjdCBuZXRfYnJpZGdlICpicixcXG5uZXQvYnJpZGdlL2JyX21ycC5jOjcwMzpcXHRcXHQgICAgICBzdHJ1Y3QgYnJfbXJwX3N0YXJ0X3Rlc3QgKnRlc3QpXFxubmV0L2JyaWRnZS9icl9tcnAuYy03MDQte1xcbm5ldC9icmlkZ2UvYnJfbXJwLmM6NzA1OlxcdHN0cnVjdCBicl9tcnAgKm1ycCA9IGJyX21ycF9maW5kX2lkKGJyLCB0ZXN0LVxcdTAwM2VyaW5nX2lkKTtcXG5uZXQvYnJpZGdlL2JyX21ycC5jOjcwNjpcXHRlbnVtIGJyX21ycF9od19zdXBwb3J0IHN1cHBvcnQ7XFxubmV0L2JyaWRnZS9icl9tcnAuYy03MDctXFxuLS1cXG5uZXQvYnJpZGdlL2JyX21ycC5jLTcxMy1cXHQgKi9cXG5uZXQvYnJpZGdlL2JyX21ycC5jOjcxNDpcXHRzdXBwb3J0ID0gYnJfbXJwX3N3aXRjaGRldl9zZW5kX3JpbmdfdGVzdChiciwgbXJwLCB0ZXN0LVxcdTAwM2VpbnRlcnZhbCxcXG5uZXQvYnJpZGdlL2JyX21ycC5jLTcxNS1cXHRcXHRcXHRcXHRcXHRcXHQgIHRlc3QtXFx1MDAzZW1heF9taXNzLCB0ZXN0LVxcdTAwM2VwZXJpb2QsXFxuLS1cXG5uZXQvYnJpZGdlL2JyX21ycC5jLTczNi0gKi9cXG5uZXQvYnJpZGdlL2JyX21ycC5jOjczNzppbnQgYnJfbXJwX3NldF9pbl9zdGF0ZShzdHJ1Y3QgbmV0X2JyaWRnZSAqYnIsIHN0cnVjdCBicl9tcnBfaW5fc3RhdGUgKnN0YXRlKVxcbm5ldC9icmlkZ2UvYnJfbXJwLmMtNzM4LXtcXG5uZXQvYnJpZGdlL2JyX21ycC5jOjczOTpcXHRzdHJ1Y3QgYnJfbXJwICptcnAgPSBicl9tcnBfZmluZF9pbl9pZChiciwgc3RhdGUtXFx1MDAzZWluX2lkKTtcXG5uZXQvYnJpZGdlL2JyX21ycC5jLTc0MC1cXG4tLVxcbm5ldC9icmlkZ2UvYnJfbXJwLmMtNzQ4LVxcbm5ldC9icmlkZ2UvYnJfbXJwLmM6NzQ5OlxcdGJyX21ycF9zd2l0Y2hkZXZfc2V0X2luX3N0YXRlKGJyLCBtcnAsIHN0YXRlLVxcdTAwM2Vpbl9zdGF0ZSk7XFxubmV0L2JyaWRnZS9icl9tcnAuYy03NTAtXFxuLS1cXG5uZXQvYnJpZGdlL2JyX21ycC5jLTc1Ny0gKi9cXG5uZXQvYnJpZGdlL2JyX21ycC5jOjc1ODppbnQgYnJfbXJwX3NldF9pbl9yb2xlKHN0cnVjdCBuZXRfYnJpZGdlICpiciwgc3RydWN0IGJyX21ycF9pbl9yb2xlICpyb2xlKVxcbm5ldC9icmlkZ2UvYnJfbXJwLmMtNzU5LXtcXG5uZXQvYnJpZGdlL2JyX21ycC5jOjc2MDpcXHRzdHJ1Y3QgYnJfbXJwICptcnAgPSBicl9tcnBfZmluZF9pZChiciwgcm9sZS1cXHUwMDNlcmluZ19pZCk7XFxubmV0L2JyaWRnZS9icl9tcnAuYzo3NjE6XFx0ZW51bSBicl9tcnBfaHdfc3VwcG9ydCBzdXBwb3J0O1xcbm5ldC9icmlkZ2UvYnJfbXJwLmMtNzYyLVxcdHN0cnVjdCBuZXRfYnJpZGdlX3BvcnQgKnA7XFxuLS1cXG5uZXQvYnJpZGdlL2JyX21ycC5jLTc2Ni1cXG5uZXQvYnJpZGdlL2JyX21ycC5jOjc2NzpcXHRpZiAoIWJyX21ycF9nZXRfcG9ydChiciwgcm9sZS1cXHUwMDNlaV9pZmluZGV4KSlcXG5uZXQvYnJpZGdlL2JyX21ycC5jLTc2OC1cXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4tLVxcbm5ldC9icmlkZ2UvYnJfbXJwLmMtNzc5LVxcdFxcdGNhbmNlbF9kZWxheWVkX3dvcmtfc3luYyhcXHUwMDI2bXJwLVxcdTAwM2Vpbl90ZXN0X3dvcmspO1xcbm5ldC9icmlkZ2UvYnJfbXJwLmM6NzgwOlxcdFxcdGJyX21ycF9zd2l0Y2hkZXZfc2VuZF9pbl90ZXN0KGJyLCBtcnAsIDAsIDAsIDApO1xcbm5ldC9icmlkZ2UvYnJfbXJwLmMtNzgxLVxcbi0tXFxubmV0L2JyaWRnZS9icl9tcnAuYy03ODgtXFx0XFx0c3Bpbl91bmxvY2tfYmgoXFx1MDAyNmJyLVxcdTAwM2Vsb2NrKTtcXG5uZXQvYnJpZGdlL2JyX21ycC5jOjc4OTpcXHRcXHRicl9tcnBfcG9ydF9zd2l0Y2hkZXZfc2V0X3N0YXRlKHAsIHN0YXRlKTtcXG5uZXQvYnJpZGdlL2JyX21ycC5jLTc5MC1cXHRcXHRyY3VfYXNzaWduX3BvaW50ZXIobXJwLVxcdTAwM2VpX3BvcnQsIE5VTEwpO1xcbi0tXFxubmV0L2JyaWRnZS9icl9tcnAuYy03OTgtXFx0LyogSXQgaXMgbm90IHBvc3NpYmxlIHRvIGhhdmUgdGhlIHNhbWUgcG9ydCBwYXJ0IG9mIG11bHRpcGxlIHJpbmdzICovXFxubmV0L2JyaWRnZS9icl9tcnAuYzo3OTk6XFx0aWYgKCFicl9tcnBfdW5pcXVlX2lmaW5kZXgoYnIsIHJvbGUtXFx1MDAzZWlfaWZpbmRleCkpXFxubmV0L2JyaWRnZS9icl9tcnAuYy04MDAtXFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuLS1cXG5uZXQvYnJpZGdlL2JyX21ycC5jLTgwOC1cXG5uZXQvYnJpZGdlL2JyX21ycC5jOjgwOTpcXHRwID0gYnJfbXJwX2dldF9wb3J0KGJyLCByb2xlLVxcdTAwM2VpX2lmaW5kZXgpO1xcbm5ldC9icmlkZ2UvYnJfbXJwLmMtODEwLVxcdHNwaW5fbG9ja19iaChcXHUwMDI2YnItXFx1MDAzZWxvY2spO1xcbi0tXFxubmV0L2JyaWRnZS9icl9tcnAuYy04MTktXFx0LyogSWYgdGhlcmUgaXMgYW4gZXJyb3IganVzdCBiYWlsZWQgb3V0ICovXFxubmV0L2JyaWRnZS9icl9tcnAuYzo4MjA6XFx0c3VwcG9ydCA9IGJyX21ycF9zd2l0Y2hkZXZfc2V0X2luX3JvbGUoYnIsIG1ycCwgcm9sZS1cXHUwMDNlaW5faWQsXFxubmV0L2JyaWRnZS9icl9tcnAuYy04MjEtXFx0XFx0XFx0XFx0XFx0ICAgICAgIHJvbGUtXFx1MDAzZXJpbmdfaWQsIHJvbGUtXFx1MDAzZWluX3JvbGUpO1xcbi0tXFxubmV0L2JyaWRnZS9icl9tcnAuYy04MzktICovXFxubmV0L2JyaWRnZS9icl9tcnAuYzo4NDA6aW50IGJyX21ycF9zdGFydF9pbl90ZXN0KHN0cnVjdCBuZXRfYnJpZGdlICpicixcXG5uZXQvYnJpZGdlL2JyX21ycC5jOjg0MTpcXHRcXHRcXHQgc3RydWN0IGJyX21ycF9zdGFydF9pbl90ZXN0ICppbl90ZXN0KVxcbm5ldC9icmlkZ2UvYnJfbXJwLmMtODQyLXtcXG5uZXQvYnJpZGdlL2JyX21ycC5jOjg0MzpcXHRzdHJ1Y3QgYnJfbXJwICptcnAgPSBicl9tcnBfZmluZF9pbl9pZChiciwgaW5fdGVzdC1cXHUwMDNlaW5faWQpO1xcbm5ldC9icmlkZ2UvYnJfbXJwLmM6ODQ0OlxcdGVudW0gYnJfbXJwX2h3X3N1cHBvcnQgc3VwcG9ydDtcXG5uZXQvYnJpZGdlL2JyX21ycC5jLTg0NS1cXG4tLVxcbm5ldC9icmlkZ2UvYnJfbXJwLmMtODU0LVxcdCAqL1xcbm5ldC9icmlkZ2UvYnJfbXJwLmM6ODU1OlxcdHN1cHBvcnQgPSAgYnJfbXJwX3N3aXRjaGRldl9zZW5kX2luX3Rlc3QoYnIsIG1ycCwgaW5fdGVzdC1cXHUwMDNlaW50ZXJ2YWwsXFxubmV0L2JyaWRnZS9icl9tcnAuYy04NTYtXFx0XFx0XFx0XFx0XFx0XFx0IGluX3Rlc3QtXFx1MDAzZW1heF9taXNzLFxcbi0tXFxubmV0L2JyaWRnZS9icl9tcnAuYy04NzQtLyogRGV0ZXJtaW5lIGlmIHRoZSBmcmFtZSB0eXBlIGlzIGEgcmluZyBmcmFtZSAqL1xcbm5ldC9icmlkZ2UvYnJfbXJwLmM6ODc1OnN0YXRpYyBib29sIGJyX21ycF9yaW5nX2ZyYW1lKHN0cnVjdCBza19idWZmICpza2IpXFxubmV0L2JyaWRnZS9icl9tcnAuYy04NzYte1xcbm5ldC9icmlkZ2UvYnJfbXJwLmM6ODc3OlxcdGNvbnN0IHN0cnVjdCBicl9tcnBfdGx2X2hkciAqaGRyO1xcbm5ldC9icmlkZ2UvYnJfbXJwLmM6ODc4OlxcdHN0cnVjdCBicl9tcnBfdGx2X2hkciBfaGRyO1xcbm5ldC9icmlkZ2UvYnJfbXJwLmMtODc5LVxcbi0tXFxubmV0L2JyaWRnZS9icl9tcnAuYy04OTQtLyogRGV0ZXJtaW5lIGlmIHRoZSBmcmFtZSB0eXBlIGlzIGFuIGludGVyY29ubmVjdCBmcmFtZSAqL1xcbm5ldC9icmlkZ2UvYnJfbXJwLmM6ODk1OnN0YXRpYyBib29sIGJyX21ycF9pbl9mcmFtZShzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbm5ldC9icmlkZ2UvYnJfbXJwLmMtODk2LXtcXG5uZXQvYnJpZGdlL2JyX21ycC5jOjg5NzpcXHRjb25zdCBzdHJ1Y3QgYnJfbXJwX3Rsdl9oZHIgKmhkcjtcXG5uZXQvYnJpZGdlL2JyX21ycC5jOjg5ODpcXHRzdHJ1Y3QgYnJfbXJwX3Rsdl9oZHIgX2hkcjtcXG5uZXQvYnJpZGdlL2JyX21ycC5jLTg5OS1cXG4tLVxcbm5ldC9icmlkZ2UvYnJfbXJwLmMtOTE3LSAqL1xcbm5ldC9icmlkZ2UvYnJfbXJwLmM6OTE4OnN0YXRpYyB2b2lkIGJyX21ycF9tcm1fcHJvY2VzcyhzdHJ1Y3QgYnJfbXJwICptcnAsIHN0cnVjdCBuZXRfYnJpZGdlX3BvcnQgKnBvcnQsXFxubmV0L2JyaWRnZS9icl9tcnAuYy05MTktXFx0XFx0XFx0ICAgICAgIHN0cnVjdCBza19idWZmICpza2IpXFxubmV0L2JyaWRnZS9icl9tcnAuYy05MjAte1xcbm5ldC9icmlkZ2UvYnJfbXJwLmM6OTIxOlxcdGNvbnN0IHN0cnVjdCBicl9tcnBfdGx2X2hkciAqaGRyO1xcbm5ldC9icmlkZ2UvYnJfbXJwLmM6OTIyOlxcdHN0cnVjdCBicl9tcnBfdGx2X2hkciBfaGRyO1xcbm5ldC9icmlkZ2UvYnJfbXJwLmMtOTIzLVxcbi0tXFxubmV0L2JyaWRnZS9icl9tcnAuYy05MzktXFx0aWYgKG1ycC1cXHUwMDNlcmluZ19zdGF0ZSAhPSBCUl9NUlBfUklOR19TVEFURV9DTE9TRUQpXFxubmV0L2JyaWRnZS9icl9tcnAuYzo5NDA6XFx0XFx0YnJfbXJwX3JpbmdfcG9ydF9vcGVuKHBvcnQtXFx1MDAzZWRldiwgZmFsc2UpO1xcbm5ldC9icmlkZ2UvYnJfbXJwLmMtOTQxLX1cXG4tLVxcbm5ldC9icmlkZ2UvYnJfbXJwLmMtOTQzLS8qIERldGVybWluZSBpZiB0aGUgdGVzdCBoZHIgaGFzIGEgYmV0dGVyIHByaW9yaXR5IHRoYW4gdGhlIG5vZGUgKi9cXG5uZXQvYnJpZGdlL2JyX21ycC5jOjk0NDpzdGF0aWMgYm9vbCBicl9tcnBfdGVzdF9iZXR0ZXJfdGhhbl9vd24oc3RydWN0IGJyX21ycCAqbXJwLFxcbm5ldC9icmlkZ2UvYnJfbXJwLmMtOTQ1LVxcdFxcdFxcdFxcdFxcdHN0cnVjdCBuZXRfYnJpZGdlICpicixcXG5uZXQvYnJpZGdlL2JyX21ycC5jOjk0NjpcXHRcXHRcXHRcXHRcXHRjb25zdCBzdHJ1Y3QgYnJfbXJwX3JpbmdfdGVzdF9oZHIgKmhkcilcXG5uZXQvYnJpZGdlL2JyX21ycC5jLTk0Ny17XFxuLS1cXG5uZXQvYnJpZGdlL2JyX21ycC5jLTk2MS0gKi9cXG5uZXQvYnJpZGdlL2JyX21ycC5jOjk2MjpzdGF0aWMgdm9pZCBicl9tcnBfbXJhX3Byb2Nlc3Moc3RydWN0IGJyX21ycCAqbXJwLCBzdHJ1Y3QgbmV0X2JyaWRnZSAqYnIsXFxubmV0L2JyaWRnZS9icl9tcnAuYy05NjMtXFx0XFx0XFx0ICAgICAgIHN0cnVjdCBuZXRfYnJpZGdlX3BvcnQgKnBvcnQsXFxuLS1cXG5uZXQvYnJpZGdlL2JyX21ycC5jLTk2NS17XFxubmV0L2JyaWRnZS9icl9tcnAuYzo5NjY6XFx0Y29uc3Qgc3RydWN0IGJyX21ycF9yaW5nX3Rlc3RfaGRyICp0ZXN0X2hkcjtcXG5uZXQvYnJpZGdlL2JyX21ycC5jOjk2NzpcXHRzdHJ1Y3QgYnJfbXJwX3JpbmdfdGVzdF9oZHIgX3Rlc3RfaGRyO1xcbm5ldC9icmlkZ2UvYnJfbXJwLmM6OTY4OlxcdGNvbnN0IHN0cnVjdCBicl9tcnBfdGx2X2hkciAqaGRyO1xcbm5ldC9icmlkZ2UvYnJfbXJwLmM6OTY5OlxcdHN0cnVjdCBicl9tcnBfdGx2X2hkciBfaGRyO1xcbm5ldC9icmlkZ2UvYnJfbXJwLmMtOTcwLVxcbi0tXFxubmV0L2JyaWRnZS9icl9tcnAuYy05ODktXFx0ICovXFxubmV0L2JyaWRnZS9icl9tcnAuYzo5OTA6XFx0aWYgKGJyX21ycF90ZXN0X2JldHRlcl90aGFuX293bihtcnAsIGJyLCB0ZXN0X2hkcikpXFxubmV0L2JyaWRnZS9icl9tcnAuYy05OTEtXFx0XFx0bXJwLVxcdTAwM2V0ZXN0X2NvdW50X21pc3MgPSAwO1xcbi0tXFxubmV0L2JyaWRnZS9icl9tcnAuYy05OTctICovXFxubmV0L2JyaWRnZS9icl9tcnAuYzo5OTg6c3RhdGljIGJvb2wgYnJfbXJwX21pbV9wcm9jZXNzKHN0cnVjdCBicl9tcnAgKm1ycCwgc3RydWN0IG5ldF9icmlkZ2VfcG9ydCAqcG9ydCxcXG5uZXQvYnJpZGdlL2JyX21ycC5jLTk5OS1cXHRcXHRcXHQgICAgICAgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG5uZXQvYnJpZGdlL2JyX21ycC5jLTEwMDAte1xcbm5ldC9icmlkZ2UvYnJfbXJwLmM6MTAwMTpcXHRjb25zdCBzdHJ1Y3QgYnJfbXJwX2luX3Rlc3RfaGRyICppbl9oZHI7XFxubmV0L2JyaWRnZS9icl9tcnAuYzoxMDAyOlxcdHN0cnVjdCBicl9tcnBfaW5fdGVzdF9oZHIgX2luX2hkcjtcXG5uZXQvYnJpZGdlL2JyX21ycC5jOjEwMDM6XFx0Y29uc3Qgc3RydWN0IGJyX21ycF90bHZfaGRyICpoZHI7XFxubmV0L2JyaWRnZS9icl9tcnAuYzoxMDA0OlxcdHN0cnVjdCBicl9tcnBfdGx2X2hkciBfaGRyO1xcbm5ldC9icmlkZ2UvYnJfbXJwLmMtMTAwNS1cXG4tLVxcbm5ldC9icmlkZ2UvYnJfbXJwLmMtMTAyOC1cXHRpZiAobXJwLVxcdTAwM2Vpbl9zdGF0ZSAhPSBCUl9NUlBfSU5fU1RBVEVfQ0xPU0VEKVxcbm5ldC9icmlkZ2UvYnJfbXJwLmM6MTAyOTpcXHRcXHRicl9tcnBfaW5fcG9ydF9vcGVuKHBvcnQtXFx1MDAzZWRldiwgZmFsc2UpO1xcbm5ldC9icmlkZ2UvYnJfbXJwLmMtMTAzMC1cXG4tLVxcbm5ldC9icmlkZ2UvYnJfbXJwLmMtMTAzNi0gKi9cXG5uZXQvYnJpZGdlL2JyX21ycC5jOjEwMzc6c3RhdGljIHU4IGJyX21ycF9nZXRfZnJhbWVfdHlwZShzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbm5ldC9icmlkZ2UvYnJfbXJwLmMtMTAzOC17XFxubmV0L2JyaWRnZS9icl9tcnAuYzoxMDM5OlxcdGNvbnN0IHN0cnVjdCBicl9tcnBfdGx2X2hkciAqaGRyO1xcbm5ldC9icmlkZ2UvYnJfbXJwLmM6MTA0MDpcXHRzdHJ1Y3QgYnJfbXJwX3Rsdl9oZHIgX2hkcjtcXG5uZXQvYnJpZGdlL2JyX21ycC5jLTEwNDEtXFxuLS1cXG5uZXQvYnJpZGdlL2JyX21ycC5jLTEwNTEtXFxubmV0L2JyaWRnZS9icl9tcnAuYzoxMDUyOnN0YXRpYyBib29sIGJyX21ycF9tcm1fYmVoYXZpb3VyKHN0cnVjdCBicl9tcnAgKm1ycClcXG5uZXQvYnJpZGdlL2JyX21ycC5jLTEwNTMte1xcbi0tXFxubmV0L2JyaWRnZS9icl9tcnAuYy0xMDYwLVxcbm5ldC9icmlkZ2UvYnJfbXJwLmM6MTA2MTpzdGF0aWMgYm9vbCBicl9tcnBfbXJjX2JlaGF2aW91cihzdHJ1Y3QgYnJfbXJwICptcnApXFxubmV0L2JyaWRnZS9icl9tcnAuYy0xMDYyLXtcXG4tLVxcbm5ldC9icmlkZ2UvYnJfbXJwLmMtMTA3My0gKi9cXG5uZXQvYnJpZGdlL2JyX21ycC5jOjEwNzQ6c3RhdGljIGludCBicl9tcnBfcmN2KHN0cnVjdCBuZXRfYnJpZGdlX3BvcnQgKnAsXFxubmV0L2JyaWRnZS9icl9tcnAuYy0xMDc1LVxcdFxcdCAgICAgIHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxuLS1cXG5uZXQvYnJpZGdlL2JyX21ycC5jLTEwODYtXFx0YnIgPSBwLVxcdTAwM2VicjtcXG5uZXQvYnJpZGdlL2JyX21ycC5jOjEwODc6XFx0bXJwID0gIGJyX21ycF9maW5kX3BvcnQoYnIsIHApO1xcbm5ldC9icmlkZ2UvYnJfbXJwLmMtMTA4OC1cXHRpZiAodW5saWtlbHkoIW1ycCkpXFxuLS1cXG5uZXQvYnJpZGdlL2JyX21ycC5jLTExMDMtXFx0ICovXFxubmV0L2JyaWRnZS9icl9tcnAuYzoxMTA0OlxcdGlmIChicl9tcnBfcmluZ19mcmFtZShza2IpKSB7XFxubmV0L2JyaWRnZS9icl9tcnAuYy0xMTA1LVxcdFxcdC8qIElmIHRoZSByb2xlIGlzIE1STSB0aGVuIGRvbid0IGZvcndhcmQgdGhlIGZyYW1lcyAqL1xcbm5ldC9icmlkZ2UvYnJfbXJwLmMtMTEwNi1cXHRcXHRpZiAobXJwLVxcdTAwM2VyaW5nX3JvbGUgPT0gQlJfTVJQX1JJTkdfUk9MRV9NUk0pIHtcXG5uZXQvYnJpZGdlL2JyX21ycC5jOjExMDc6XFx0XFx0XFx0YnJfbXJwX21ybV9wcm9jZXNzKG1ycCwgcCwgc2tiKTtcXG5uZXQvYnJpZGdlL2JyX21ycC5jLTExMDgtXFx0XFx0XFx0Z290byBub19mb3J3YXJkO1xcbi0tXFxubmV0L2JyaWRnZS9icl9tcnAuYy0xMTE1LVxcdFxcdFxcdGlmICghbXJwLVxcdTAwM2V0ZXN0X21vbml0b3IpIHtcXG5uZXQvYnJpZGdlL2JyX21ycC5jOjExMTY6XFx0XFx0XFx0XFx0YnJfbXJwX21ybV9wcm9jZXNzKG1ycCwgcCwgc2tiKTtcXG5uZXQvYnJpZGdlL2JyX21ycC5jLTExMTctXFx0XFx0XFx0XFx0Z290byBub19mb3J3YXJkO1xcbi0tXFxubmV0L2JyaWRnZS9icl9tcnAuYy0xMTE5LVxcbm5ldC9icmlkZ2UvYnJfbXJwLmM6MTEyMDpcXHRcXHRcXHRicl9tcnBfbXJhX3Byb2Nlc3MobXJwLCBiciwgcCwgc2tiKTtcXG5uZXQvYnJpZGdlL2JyX21ycC5jLTExMjEtXFx0XFx0fVxcbi0tXFxubmV0L2JyaWRnZS9icl9tcnAuYy0xMTI1LVxcbm5ldC9icmlkZ2UvYnJfbXJwLmM6MTEyNjpcXHRpZiAoYnJfbXJwX2luX2ZyYW1lKHNrYikpIHtcXG5uZXQvYnJpZGdlL2JyX21ycC5jOjExMjc6XFx0XFx0dTggaW5fdHlwZSA9IGJyX21ycF9nZXRfZnJhbWVfdHlwZShza2IpO1xcbm5ldC9icmlkZ2UvYnJfbXJwLmMtMTEyOC1cXG4tLVxcbm5ldC9icmlkZ2UvYnJfbXJwLmMtMTEzNC1cXHRcXHQgKi9cXG5uZXQvYnJpZGdlL2JyX21ycC5jOjExMzU6XFx0XFx0aWYgKGJyX21ycF9pc19yaW5nX3BvcnQocF9wb3J0LCBzX3BvcnQsIHApIFxcdTAwMjZcXHUwMDI2XFxubmV0L2JyaWRnZS9icl9tcnAuYy0xMTM2LVxcdFxcdCAgICBwLVxcdTAwM2VzdGF0ZSA9PSBCUl9TVEFURV9CTE9DS0lORyBcXHUwMDI2XFx1MDAyNlxcbi0tXFxubmV0L2JyaWRnZS9icl9tcnAuYy0xMTQzLVxcdFxcdCAqL1xcbm5ldC9icmlkZ2UvYnJfbXJwLmM6MTE0NDpcXHRcXHRpZiAoYnJfbXJwX21ybV9iZWhhdmlvdXIobXJwKSBcXHUwMDI2XFx1MDAyNlxcbm5ldC9icmlkZ2UvYnJfbXJwLmM6MTE0NTpcXHRcXHQgICAgYnJfbXJwX2lzX3JpbmdfcG9ydChwX3BvcnQsIHNfcG9ydCwgcCkgXFx1MDAyNlxcdTAwMjZcXG5uZXQvYnJpZGdlL2JyX21ycC5jLTExNDYtXFx0XFx0ICAgIChzX3BvcnQtXFx1MDAzZXN0YXRlICE9IEJSX1NUQVRFX0ZPUldBUkRJTkcgfHxcXG4tLVxcbm5ldC9icmlkZ2UvYnJfbXJwLmMtMTE1NS1cXHRcXHQgKi9cXG5uZXQvYnJpZGdlL2JyX21ycC5jOjExNTY6XFx0XFx0aWYgKGJyX21ycF9tcmNfYmVoYXZpb3VyKG1ycCkgXFx1MDAyNlxcdTAwMjZcXG5uZXQvYnJpZGdlL2JyX21ycC5jLTExNTctXFx0XFx0ICAgIG1ycC1cXHUwMDNlaW5fcm9sZSA9PSBCUl9NUlBfSU5fUk9MRV9ESVNBQkxFRClcXG4tLVxcbm5ldC9icmlkZ2UvYnJfbXJwLmMtMTE2NC1cXHRcXHRcXHRcXHQgKi9cXG5uZXQvYnJpZGdlL2JyX21ycC5jOjExNjU6XFx0XFx0XFx0XFx0aWYgKGJyX21ycF9taW1fcHJvY2VzcyhtcnAsIHAsIHNrYikpIHtcXG5uZXQvYnJpZGdlL2JyX21ycC5jLTExNjYtXFx0XFx0XFx0XFx0XFx0Z290byBub19mb3J3YXJkO1xcbm5ldC9icmlkZ2UvYnJfbXJwLmMtMTE2Ny1cXHRcXHRcXHRcXHR9IGVsc2Uge1xcbm5ldC9icmlkZ2UvYnJfbXJwLmM6MTE2ODpcXHRcXHRcXHRcXHRcXHRpZiAoYnJfbXJwX2lzX3JpbmdfcG9ydChwX3BvcnQsIHNfcG9ydCxcXG5uZXQvYnJpZGdlL2JyX21ycC5jLTExNjktXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0cCkpXFxuLS1cXG5uZXQvYnJpZGdlL2JyX21ycC5jLTExNzEtXFxubmV0L2JyaWRnZS9icl9tcnAuYzoxMTcyOlxcdFxcdFxcdFxcdFxcdGlmIChicl9tcnBfaXNfaW5fcG9ydChpX3BvcnQsIHApKVxcbm5ldC9icmlkZ2UvYnJfbXJwLmMtMTE3My1cXHRcXHRcXHRcXHRcXHRcXHRnb3RvIG5vX2ZvcndhcmQ7XFxuLS1cXG5uZXQvYnJpZGdlL2JyX21ycC5jLTExODEtXFx0XFx0XFx0XFx0ICovXFxubmV0L2JyaWRnZS9icl9tcnAuYzoxMTgyOlxcdFxcdFxcdFxcdGlmIChicl9tcnBfaXNfcmluZ19wb3J0KHBfcG9ydCwgc19wb3J0LCBwKSlcXG5uZXQvYnJpZGdlL2JyX21ycC5jLTExODMtXFx0XFx0XFx0XFx0XFx0aV9kc3QgPSBOVUxMO1xcbm5ldC9icmlkZ2UvYnJfbXJwLmMtMTE4NC1cXG5uZXQvYnJpZGdlL2JyX21ycC5jOjExODU6XFx0XFx0XFx0XFx0aWYgKGJyX21ycF9pc19pbl9wb3J0KGlfcG9ydCwgcCkpXFxuXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDA4OjU5OjMxLjc5Mjk4NDEwMVoiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MTc2NzAyMTUyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgTVJQIE5ldGxpbmsgSW50ZXJmYWNlKipcblxuT2theSwgc28gSSdtIGRpdmluZyBpbnRvIHRoaXMgTVJQIGltcGxlbWVudGF0aW9uLCBhbmQgaXQgbG9va3MgbGlrZSB0aGUga2V5IGVudHJ5IHBvaW50cyBmb3IgTmV0bGluayBpbnRlcmFjdGlvbnMgYXJlIHRoZXNlIGZ1bmN0aW9uczogYGJyX21ycF9hZGRgLCBgYnJfbXJwX2RlbGAsIGBicl9tcnBfc2V0X3BvcnRfc3RhdGVgLCBgYnJfbXJwX3NldF9wb3J0X3JvbGVgLCBgYnJfbXJwX3NldF9yaW5nX3N0YXRlYCwgYGJyX21ycF9zZXRfcmluZ19yb2xlYCwgYGJyX21ycF9zdGFydF90ZXN0YCwgYGJyX21ycF9zZXRfaW5fc3RhdGVgLCBgYnJfbXJwX3NldF9pbl9yb2xlYCwgYW5kIGBicl9tcnBfc3RhcnRfaW5fdGVzdGAuIE9idmlvdXNseSwgdGhlc2UgYXJlIHRyaWdnZXJlZCBieSBOZXRsaW5rIG1lc3NhZ2VzLCB3aGljaCBpcyBzdGFuZGFyZC5cblxuVG8gZ2V0IGEgYmV0dGVyIGhhbmRsZSBvbiB0aGUgYXJjaGl0ZWN0dXJlLCBteSBuZXh0IHN0ZXAgaXMgdG8gZmlndXJlIG91dCBleGFjdGx5IGhvdyB0aGVzZSBmdW5jdGlvbnMgYXJlIGludm9rZWQuIEknbSBnb2luZyB0byBkaWcgaW50byB0aGUgTmV0bGluayBjb2RlIHRvIHNlZSB0aGUgbWVzc2FnZSBoYW5kbGVycy4gSSBleHBlY3QgdG8gZmluZCB0aGUgcmVsZXZhbnQgY29kZSBpbiBlaXRoZXIgYG5ldC9icmlkZ2UvYnJfbmV0bGluay5jYCBvciwgbW9yZSBsaWtlbHkgZ2l2ZW4gdGhlIG5hbWluZywgYG5ldC9icmlkZ2UvYnJfbXJwX25ldGxpbmsuY2AuIFRoYXQgc2hvdWxkIHByb3ZpZGUgdGhlIG5lY2Vzc2FyeSBjb250ZXh0LlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNTcyOCwiT3V0cHV0VG9rZW5zIjozMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE2MywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNVQwODo1OTozNS45Njk2OTA2MjNaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQwMzMxNDE3NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJicl9tcnBfc3RhcnRfdGVzdFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvYnJpZGdlL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvYnJpZGdlL2JyX21ycC5jPTY3MT1pbnQgYnJfbXJwX3NldF9yaW5nX3JvbGUoc3RydWN0IG5ldF9icmlkZ2UgKmJyLFxcbi0tXFxubmV0L2JyaWRnZS9icl9tcnAuYy03MDEtICovXFxubmV0L2JyaWRnZS9icl9tcnAuYzo3MDI6aW50IGJyX21ycF9zdGFydF90ZXN0KHN0cnVjdCBuZXRfYnJpZGdlICpicixcXG5uZXQvYnJpZGdlL2JyX21ycC5jOjcwMzpcXHRcXHQgICAgICBzdHJ1Y3QgYnJfbXJwX3N0YXJ0X3Rlc3QgKnRlc3QpXFxubmV0L2JyaWRnZS9icl9tcnAuYy03MDQte1xcbi0tXFxubmV0L2JyaWRnZS9icl9tcnBfbmV0bGluay5jPTE5NT1zdGF0aWMgY29uc3Qgc3RydWN0IG5sYV9wb2xpY3lcXG5uZXQvYnJpZGdlL2JyX21ycF9uZXRsaW5rLmM6MTk2OmJyX21ycF9zdGFydF90ZXN0X3BvbGljeVtJRkxBX0JSSURHRV9NUlBfU1RBUlRfVEVTVF9NQVggKyAxXSA9IHtcXG5uZXQvYnJpZGdlL2JyX21ycF9uZXRsaW5rLmMtMTk3LVxcdFtJRkxBX0JSSURHRV9NUlBfU1RBUlRfVEVTVF9VTlNQRUNdXFx0PSB7IC50eXBlID0gTkxBX1JFSkVDVCB9LFxcbi0tXFxubmV0L2JyaWRnZS9icl9tcnBfbmV0bGluay5jLTIwNC1cXG5uZXQvYnJpZGdlL2JyX21ycF9uZXRsaW5rLmM6MjA1OnN0YXRpYyBpbnQgYnJfbXJwX3N0YXJ0X3Rlc3RfcGFyc2Uoc3RydWN0IG5ldF9icmlkZ2UgKmJyLCBzdHJ1Y3QgbmxhdHRyICphdHRyLFxcbm5ldC9icmlkZ2UvYnJfbXJwX25ldGxpbmsuYy0yMDYtXFx0XFx0XFx0XFx0ICAgc3RydWN0IG5ldGxpbmtfZXh0X2FjayAqZXh0YWNrKVxcbi0tXFxubmV0L2JyaWRnZS9icl9tcnBfbmV0bGluay5jLTIwOC1cXHRzdHJ1Y3QgbmxhdHRyICp0YltJRkxBX0JSSURHRV9NUlBfU1RBUlRfVEVTVF9NQVggKyAxXTtcXG5uZXQvYnJpZGdlL2JyX21ycF9uZXRsaW5rLmM6MjA5OlxcdHN0cnVjdCBicl9tcnBfc3RhcnRfdGVzdCB0ZXN0O1xcbm5ldC9icmlkZ2UvYnJfbXJwX25ldGxpbmsuYy0yMTAtXFx0aW50IGVycjtcXG4tLVxcbm5ldC9icmlkZ2UvYnJfbXJwX25ldGxpbmsuYy0yMTItXFx0ZXJyID0gbmxhX3BhcnNlX25lc3RlZCh0YiwgSUZMQV9CUklER0VfTVJQX1NUQVJUX1RFU1RfTUFYLCBhdHRyLFxcbm5ldC9icmlkZ2UvYnJfbXJwX25ldGxpbmsuYzoyMTM6XFx0XFx0XFx0ICAgICAgIGJyX21ycF9zdGFydF90ZXN0X3BvbGljeSwgZXh0YWNrKTtcXG5uZXQvYnJpZGdlL2JyX21ycF9uZXRsaW5rLmMtMjE0LVxcdGlmIChlcnIpXFxuLS1cXG5uZXQvYnJpZGdlL2JyX21ycF9uZXRsaW5rLmMtMjM3LVxcbm5ldC9icmlkZ2UvYnJfbXJwX25ldGxpbmsuYzoyMzg6XFx0cmV0dXJuIGJyX21ycF9zdGFydF90ZXN0KGJyLCBcXHUwMDI2dGVzdCk7XFxubmV0L2JyaWRnZS9icl9tcnBfbmV0bGluay5jLTIzOS19XFxuLS1cXG5uZXQvYnJpZGdlL2JyX21ycF9uZXRsaW5rLmM9MzU2PWludCBicl9tcnBfcGFyc2Uoc3RydWN0IG5ldF9icmlkZ2UgKmJyLCBzdHJ1Y3QgbmV0X2JyaWRnZV9wb3J0ICpwLFxcbi0tXFxubmV0L2JyaWRnZS9icl9tcnBfbmV0bGluay5jLTQxNC1cXHRpZiAodGJbSUZMQV9CUklER0VfTVJQX1NUQVJUX1RFU1RdKSB7XFxubmV0L2JyaWRnZS9icl9tcnBfbmV0bGluay5jOjQxNTpcXHRcXHRlcnIgPSBicl9tcnBfc3RhcnRfdGVzdF9wYXJzZShicixcXG5uZXQvYnJpZGdlL2JyX21ycF9uZXRsaW5rLmMtNDE2LVxcdFxcdFxcdFxcdFxcdCAgICAgIHRiW0lGTEFfQlJJREdFX01SUF9TVEFSVF9URVNUXSxcXG4tLVxcbm5ldC9icmlkZ2UvYnJfcHJpdmF0ZV9tcnAuaD03ND1pbnQgYnJfbXJwX3NldF9yaW5nX3JvbGUoc3RydWN0IG5ldF9icmlkZ2UgKmJyLCBzdHJ1Y3QgYnJfbXJwX3Jpbmdfcm9sZSAqcm9sZSk7XFxubmV0L2JyaWRnZS9icl9wcml2YXRlX21ycC5oOjc1OmludCBicl9tcnBfc3RhcnRfdGVzdChzdHJ1Y3QgbmV0X2JyaWRnZSAqYnIsIHN0cnVjdCBicl9tcnBfc3RhcnRfdGVzdCAqdGVzdCk7XFxubmV0L2JyaWRnZS9icl9wcml2YXRlX21ycC5oLTc2LWludCBicl9tcnBfc2V0X2luX3N0YXRlKHN0cnVjdCBuZXRfYnJpZGdlICpiciwgc3RydWN0IGJyX21ycF9pbl9zdGF0ZSAqc3RhdGUpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNVQwODo1OTozNi4zNzMwMDkwOThaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDMyOTIxODg2OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIE5ldGxpbmsgTWVzc2FnZSBQYXRoIGFuZCBTdHJ1Y3R1cmUgRml4KipcblxuT2theSwgc28gdGhlIGNvZGUgZGVmaW5pdGVseSB1c2VzIG5ldGxpbmsgbWVzc2FnZXMgdG8gcmVhY2ggdGhlc2UgZnVuY3Rpb25zIOKAkyB0aGF0J3MgdGhlIGVzdGFibGlzaGVkIG1lY2hhbmlzbS4gTm93LCB0aGlzIHBhdGNoIGFkZHJlc3NlcyBhIHNwZWNpZmljIGlzc3VlIHdpdGhpbiBgYnJfbXJwX2FsbG9jX3Rlc3Rfc2tiYC4gSXQgbG9va3MgbGlrZSB0aGUgcHJvYmxlbSBsaWVzIGluIGFuIGluY29ycmVjdCB1c2Ugb2YgYHNpemVvZihvdWkpYCBpbnN0ZWFkIG9mIHRoZSBjb3JyZWN0IGBzaXplb2YoKm91aSlgLiBSaWdodCwgYG91aWAgaXMgYSBwb2ludGVyIHRvIGEgYHN0cnVjdCBicl9tcnBfb3VpX2hkcmAuIFVzaW5nIGBzaXplb2Yob3VpKWAgZ2l2ZXMgbWUgdGhlIHNpemUgb2YgdGhlICpwb2ludGVyKiBpdHNlbGYgKDggYnl0ZXMgb24gYSA2NC1iaXQgc3lzdGVtKSwgYnV0IEkgbmVlZCB0aGUgYWN0dWFsIHNpemUgb2YgdGhlIHN0cnVjdCBpdCBwb2ludHMgdG8uIFRoYXQgd291bGQgYmUgYHNpemVvZigqb3VpKWAuXG5cbkxldCBtZSBqdXN0IGNvbmZpcm0gdGhlIHN0cnVjdCdzIGxheW91dC4gQWgsIHRoZSBkZWZpbml0aW9uIG9mIGBzdHJ1Y3QgYnJfbXJwX291aV9oZHJgIGlzIGluIGBpbmNsdWRlL3VhcGkvbGludXgvbXJwX2JyaWRnZS5oYC4gSSdsbCBwb3Agb3BlbiB0aGF0IGhlYWRlciBmaWxlIHRvIHZlcmlmeSB0aGUgZmllbGQgZGVmaW5pdGlvbnMgYW5kIHRvdGFsIHNpemUuIEltcG9ydGFudCB0byBrbm93IGZvciB0aGlzIGFsbG9jYXRpb24hXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE3MTIxLCJPdXRwdXRUb2tlbnMiOjMxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTMzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDA4OjU5OjQwLjcwMjIzMjAzNloiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTQ0MzI2NDQ4LCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJzdHJ1Y3QgYnJfbXJwX291aV9oZHJcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiaW5jbHVkZS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDA4OjU5OjQwLjg0NjU2OTg0NFoiLCJTZXEiOjE3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozODg4Mzg4OTk2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkludmVzdGlnYXRpbmcgYGJyX21ycF9vdWlfaGRyYCoqXG5cbkFscmlnaHQsIGxldCdzIGRpdmUgaW50byB0aGlzLiBUaGUgaW5pdGlhbCBpbXB1bHNlIGhlcmUgaXMgdG8gdW5kZXJzdGFuZCB0aGUgY29udGV4dCBhbmQgaW1wbGljYXRpb25zIG9mIGBicl9tcnBfb3VpX2hkcmAuIEl0J3MgYSByYXRoZXIgc3BlY2lmaWMgaWRlbnRpZmllciwgYW5kIG15IGV4cGVyaWVuY2UgdGVsbHMgbWUgdGhpcyBpcyBsaWtlbHkgcmVsYXRlZCB0byBzb21lIGZvcm0gb2YgQnJpZGdlIE11bHRpY2FzdCBSZWdpc3RyYXRpb24gUHJvdG9jb2wgKEJNUlApIG9yIGEgcmVsYXRlZCBPVUkgKE9yZ2FuaXphdGlvbmFsbHkgVW5pcXVlIElkZW50aWZpZXIpIGhlYWRlci4gR2l2ZW4gdGhlIG5hbWUsIEknZCBhbnRpY2lwYXRlIHRoaXMgYmVpbmcgYSBzdHJ1Y3R1cmFsIGNvbXBvbmVudCBvciBhIGtleSBkYXRhIGZpZWxkIHdpdGhpbiBhIHBhcnRpY3VsYXIgcHJvdG9jb2wgbWVzc2FnZSwgcXVpdGUgcG9zc2libHkgYSBoZWFkZXIgc3RydWN0dXJlLlxuXG5JbW1lZGlhdGVseSwgSSdtIHRoaW5raW5nIGFib3V0IHRoZSBzdGFuZGFyZCBzcGVjaWZpY2F0aW9ucyBhc3NvY2lhdGVkIHdpdGggQk1SUCAoaWYgaXQgaXMgQk1SUCksIGl0cyByZWxhdGlvbiB0byB2YXJpb3VzIFZMQU4gY29uZmlndXJhdGlvbnMsIGFuZCBwb3NzaWJseSBtdWx0aWNhc3QgZ3JvdXAgbWFuYWdlbWVudC4gVGhlIE9VSSBhc3BlY3Qgc3BhcmtzIGN1cmlvc2l0eTsgaXQgcG9pbnRzIHRvIGEgbGV2ZWwgb2YgdmVuZG9yLXNwZWNpZmljIGN1c3RvbWl6YXRpb24gb3IgYW4gZXh0ZW5kZWQgZmVhdHVyZSBzZXQgYmV5b25kIHRoZSBiYXNlIHByb3RvY29sIGRlZmluaXRpb25zLiBJcyB0aGlzIGEgY3VzdG9tIGltcGxlbWVudGF0aW9uLCBvciBkb2VzIGl0IGFkaGVyZSB0byBlc3RhYmxpc2hlZCBzdGFuZGFyZHMgYnV0IGluY29ycG9yYXRlcyBhbiBPVUkgZm9yIGRpc3Rpbmd1aXNoaW5nIGl0P1xuXG5NeSBtZW50YWwgY2hlY2tsaXN0IGlzIGFscmVhZHkgcnVubmluZyB0aHJvdWdoIHBvdGVudGlhbCBhcmVhcyB0byBleGFtaW5lOiBrZXJuZWwgaGVhZGVycywgbmV0d29yayBwcm90b2NvbCBkZWZpbml0aW9ucywgcmVsZXZhbnQgUkZDcywgYW5kIGFueSB2ZW5kb3Itc3BlY2lmaWMgZG9jdW1lbnRhdGlvbiByZWxhdGVkIHRvIGJyaWRnZSBvciBtdWx0aWNhc3QgY29uZmlndXJhdGlvbnMuIFRoaXMgbmFtZSBzdWdnZXN0cyBhIGxvdy1sZXZlbCBkYXRhIHN0cnVjdHVyZS4gSSdsbCBuZWVkIHRvIHNjcnV0aW5pemUgdGhlIGNvZGUgb3IgZG9jdW1lbnRhdGlvbiBhc3NvY2lhdGVkIHdpdGggaXRzIHVzZSwgc3BlY2lmaWNhbGx5IGxvb2tpbmcgZm9yIGhvdyB0aGlzIGhlYWRlciBpcyBwYXJzZWQsIGNyZWF0ZWQsIGFuZCBtYW5pcHVsYXRlZC4gSXMgaXQgYSBjcml0aWNhbCBmaWVsZCBmb3IgZnJhbWUgZm9yd2FyZGluZyBkZWNpc2lvbnMsIHNlY3VyaXR5IGNoZWNrcywgb3IgcmVzb3VyY2UgYWxsb2NhdGlvbiB3aXRoaW4gYSBuZXR3b3JrIGJyaWRnZSBlbnZpcm9ubWVudD8gVGhhdCdzIHdoYXQgSSdsbCBuZWVkIHRvIGZpZ3VyZSBvdXQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE3NTIxLCJPdXRwdXRUb2tlbnMiOjI4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMDg6NTk6NDQuNzM0OTYyMloiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTkzMzU2MTYxNCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJicl9tcnBfb3VpX2hkclwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L2JyaWRnZS9icl9tcnAuYz0xODI9c3RhdGljIHN0cnVjdCBza19idWZmICpicl9tcnBfYWxsb2NfdGVzdF9za2Ioc3RydWN0IGJyX21ycCAqbXJwLFxcbi0tXFxubmV0L2JyaWRnZS9icl9tcnAuYy0yMTQtXFx0XFx0c3RydWN0IGJyX21ycF90bHZfaGRyICpzdWJfdGx2ID0gTlVMTDtcXG5uZXQvYnJpZGdlL2JyX21ycC5jOjIxNTpcXHRcXHRzdHJ1Y3QgYnJfbXJwX291aV9oZHIgKm91aSA9IE5VTEw7XFxubmV0L2JyaWRnZS9icl9tcnAuYy0yMTYtXFx0XFx0dTggbGVuZ3RoO1xcbi0tXFxubmV0L2JyaWRnZS9icl9wcml2YXRlX21ycC5oPTEzMD1zdHJ1Y3QgYnJfbXJwX2luX3Rlc3RfaGRyIHtcXG4tLVxcbm5ldC9icmlkZ2UvYnJfcHJpdmF0ZV9tcnAuaC0xMzgtXFxubmV0L2JyaWRnZS9icl9wcml2YXRlX21ycC5oOjEzOTpzdHJ1Y3QgYnJfbXJwX291aV9oZHIge1xcbm5ldC9icmlkZ2UvYnJfcHJpdmF0ZV9tcnAuaC0xNDAtXFx0X191OCBvdWlbTVJQX09VSV9MRU5HVEhdO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNVQwODo1OTo0Ni42Njg1MzEyOTRaIiwiU2VxIjoxOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mzg4NzI4NjE1NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipEaXZpbmcgaW50byBgYnJfcHJpdmF0ZV9tcnAuaGAgLSBMaW5lIDEzOSoqXG5cbk9rYXksIGxldCdzIHplcm8gaW4gb24gYGJyX3ByaXZhdGVfbXJwLmhgLiBJJ20gZ29pbmcgdG8ganVtcCBzdHJhaWdodCB0byBhcm91bmQgbGluZSAxMzkuIEknbSBwcm9iYWJseSBsb29raW5nIGZvciBhIHNwZWNpZmljIGRhdGEgc3RydWN0dXJlIGRlZmluaXRpb24sIHBlcmhhcHMgYSBmdW5jdGlvbiBwcm90b3R5cGUsIG9yIG1heWJlIGEgbWFjcm8gZGVmaW5pdGlvbiByZWxhdGVkIHRvIE1SUCBoYW5kbGluZy4gR2l2ZW4gdGhlIGZpbGUgbmFtZSwgaXQncyBsaWtlbHkgc29tZXRoaW5nIGxvdy1sZXZlbCBhbmQgcHJpdmF0ZSB0byB0aGUgTVJQIGltcGxlbWVudGF0aW9uLiBJJ20gZXhwZWN0aW5nIHRvIHNlZSBzb21ldGhpbmcgdGhhdCBpbnRlcmZhY2VzIHdpdGggdGhlIGJhc2ViYW5kLCB0aGUgcmFkaW8sIG9yIG5ldHdvcmsgcHJvdG9jb2xzLCBnaXZlbiB0aGlzIGlzIHByaXZhdGUgaGVhZGVyLiBUaGUgbGluZSBudW1iZXIgc3VnZ2VzdHMgaXQncyBhIG5vbnRyaXZpYWwgYW1vdW50IG9mIGNvZGUsIHNvIEknbSBob3BpbmcgdG8gcXVpY2tseSBpZGVudGlmeSB0aGUgY3J1Y2lhbCBjb21wb25lbnQgb3IgcG9pbnQgb2YgaW50ZXJlc3QgcmF0aGVyIHRoYW4gZ2V0dGluZyBib2dnZWQgZG93biBpbiB0aGUgbWludXRpYWUuIE15IGd1dCB0ZWxscyBtZSBpdCdsbCBiZSByZWxhdGVkIHRvIGJ1ZmZlcmluZywgc2NoZWR1bGluZywgb3IgcG9zc2libHkgZXJyb3IgaGFuZGxpbmcgd2l0aGluIHRoZSBNUlAgZnJhbWV3b3JrLiBMZXQncyBzZWUgaWYgdGhlIGNvZGUgY29uZmlybXMgbXkgaW5pdGlhbCBhc3N1bXB0aW9ucy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTgxNTMsIk91dHB1dFRva2VucyI6NDAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNVQwODo1OTo1MC41NTU4MjAzMVoiLCJTZXEiOjIwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDM0OTEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwibmV0L2JyaWRnZS9icl9wcml2YXRlX21ycC5oXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEzMCxcbiAgXCJMaW5lQ291bnRcIjogMjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDEzMDpcXHRzdHJ1Y3QgYnJfbXJwX2luX3Rlc3RfaGRyIHtcXG4gMTMxOlxcdFxcdF9fYmUxNiBpZDtcXG4gMTMyOlxcdFxcdF9fdTggc2FbRVRIX0FMRU5dO1xcbiAxMzM6XFx0XFx0X19iZTE2IHBvcnRfcm9sZTtcXG4gMTM0OlxcdFxcdF9fYmUxNiBzdGF0ZTtcXG4gMTM1OlxcdFxcdF9fYmUxNiB0cmFuc2l0aW9ucztcXG4gMTM2OlxcdFxcdF9fYmUzMiB0aW1lc3RhbXA7XFxuIDEzNzpcXHR9IF9fYXR0cmlidXRlX18oKF9fcGFja2VkX18pKTtcXG4gMTM4OlxcdFxcbiAxMzk6XFx0c3RydWN0IGJyX21ycF9vdWlfaGRyIHtcXG4gMTQwOlxcdFxcdF9fdTggb3VpW01SUF9PVUlfTEVOR1RIXTtcXG4gMTQxOlxcdH07XFxuIDE0MjpcXHRcXG4gMTQzOlxcdHN0cnVjdCBicl9tcnBfc3ViX29wdGlvbjFfaGRyIHtcXG4gMTQ0OlxcdFxcdF9fdTggdHlwZTtcXG4gMTQ1OlxcdFxcdF9fdTggZGF0YVtNUlBfTUFOVUZBQ1RVUkVfREFUQV9MRU5HVEhdO1xcbiAxNDY6XFx0fTtcXG4gMTQ3OlxcdFxcbiAxNDg6XFx0I2VuZGlmIC8qIF9CUl9QUklWQVRFX01SUF9IICovXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDA4OjU5OjUwLjU1NTkyNTQzWiIsIlNlcSI6MjEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjUwNTg0MjQzODUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBNUlAgSW1wbGVtZW50YXRpb24qKlxuXG5Pa2F5LCBzbyBJJ3ZlIGJlZW4gbG9va2luZyBhdCB0aGlzIGNvZGUgYW5kIEkndmUgemVyb2VkIGluIG9uIHdoYXQncyBsaWtlbHkgdGhlIHJvb3QgY2F1c2UuIE15IGd1dCBmZWVsaW5nIGlzIHRoYXQgYE1SUF9PVUlfTEVOR1RIYCBpcyAzLCB3aGljaCBpcyBwcmV0dHkgc3RhbmRhcmQgZm9yIE9VSSBsZW5ndGhzLCBidXQgdGhlIGNydWNpYWwgdGhpbmcgaGVyZSBpcyBob3cgdGhhdCB0cmFuc2xhdGVzIHRvIG1lbW9yeSBhbGxvY2F0aW9uLiBJdCBsb29rcyBsaWtlIGBzaXplb2YoKm91aSlgIGlzIGNvcnJlY3RseSBjYWxjdWxhdGluZyB0aGUgc2l6ZSBvZiBhIHNpbmdsZSBPVUkgZWxlbWVudCBhcyAzLCBidXQgdGhlbiBgc2l6ZW9mKG91aSlgIHdhcyByZXR1cm5pbmcgOC4gSXQgd291bGQgYXBwZWFyIHRoaXMgZGlmZmVyZW5jZSBpcyBsZWFkaW5nIHRvIGFuIGluY29ycmVjdCBsZW5ndGggY2FsY3VsYXRpb24sIGFuZCB0aGF0J3MgdGhlIHZ1bG5lcmFiaWxpdHkuXG5cblRoaXMgcGF0Y2ggc2hvdWxkIGZpeCB0aGF0IGxlbmd0aCBjYWxjdWxhdGlvbiBpc3N1ZSwgd2hpY2ggd2lsbCBpbXBhY3QgdGhlIGFjdHVhbCBNUlAgcHJvdG9jb2wgaW1wbGVtZW50YXRpb24gYW5kIGl0cyBmdW5jdGlvbmFsaXR5LCBub3QganVzdCB0aGUgY29kZSBpdHNlbGYuIEdpdmVuIHRoYXQgdGhpcyBpcyBhIGNoYW5nZSB0byB0aGUgZnVuZGFtZW50YWwgcHJvdG9jb2wgaGFuZGxpbmcsIGl0J3MgZGVmaW5pdGVseSBzb21ldGhpbmcgd2UgbmVlZCB0byBmdXp6IGV4dGVuc2l2ZWx5LiBXZSBjYW4ndCBsZXQgYW55IHN1YnRsZSBlcnJvcnMgaW4gdGhlIGxlbmd0aCBjYWxjdWxhdGlvbiBzbGlwIHRocm91Z2guXG5cblRvIG1ha2Ugc3VyZSB3ZSdyZSB0aG9yb3VnaCBpbiBvdXIgdGVzdGluZywgSSBuZWVkIHRvIGVuYWJsZSB0aGUgYEJSSURHRV9NUlBgIGNvbmZpZ3VyYXRpb24gb3B0aW9uLiBOb3csIHRvIG1ha2UgdGhlIGZ1enppbmcgZWZmZWN0aXZlLCBJIG5lZWQgdG8gZm9jdXMgdGhlIGZ1enplciBvbiB0aGUgcmVsZXZhbnQgZW50cnkgcG9pbnRzLiBJJ20gdGhpbmtpbmcgdGhlIG5ldGxpbmsgZW50cnkgcG9pbnRzIGZvciBNUlAgYXJlIHdoZXJlIHRoZSBhY3Rpb24gaGFwcGVucy4gTGV0IG1lIGdvIHRocm91Z2ggbXkgbWVudGFsIGNoZWNrbGlzdDogSSBzaG91bGQgZm9jdXMgb24gZnVuY3Rpb25zIGxpa2UgYGJyX21ycF9zdGFydF90ZXN0YCwgYGJyX21ycF9hZGRgLCBgYnJfbXJwX3NldF9yaW5nX3JvbGVgLCBhbmQgYW55dGhpbmcgZWxzZSBpbiB0aGF0IHZlaW4uIEdvdHRhIGZpbmQgdGhlIGZ1bGwgbGlzdCB0byB1c2Ugd2l0aCB0aGUgZnV6emluZy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTg3MTQsIk91dHB1dFRva2VucyI6MzYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMzYsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNVQwODo1OTo1NS42MTQzNTIzMTZaIiwiU2VxIjoyMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjYyMTU2OTc1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImludCBicl9tcnBfXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9icmlkZ2UvYnJfbXJwLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L2JyaWRnZS9icl9tcnAuYz03PXN0YXRpYyBjb25zdCB1OCBtcnBfaW5fdGVzdF9kbWFjW0VUSF9BTEVOXSA9IHsgMHgxLCAweDE1LCAweDRlLCAweDAsIDB4MCwgMHgzIH07XFxubmV0L2JyaWRnZS9icl9tcnAuYy04LVxcbm5ldC9icmlkZ2UvYnJfbXJwLmM6OTpzdGF0aWMgaW50IGJyX21ycF9wcm9jZXNzKHN0cnVjdCBuZXRfYnJpZGdlX3BvcnQgKnAsIHN0cnVjdCBza19idWZmICpza2IpO1xcbm5ldC9icmlkZ2UvYnJfbXJwLmMtMTAtXFxuLS1cXG5uZXQvYnJpZGdlL2JyX21ycC5jPTEwOD1zdGF0aWMgc3RydWN0IGJyX21ycCAqYnJfbXJwX2ZpbmRfcG9ydChzdHJ1Y3QgbmV0X2JyaWRnZSAqYnIsXFxuLS1cXG5uZXQvYnJpZGdlL2JyX21ycC5jLTEyNi1cXG5uZXQvYnJpZGdlL2JyX21ycC5jOjEyNzpzdGF0aWMgaW50IGJyX21ycF9uZXh0X3NlcShzdHJ1Y3QgYnJfbXJwICptcnApXFxubmV0L2JyaWRnZS9icl9tcnAuYy0xMjgte1xcbi0tXFxubmV0L2JyaWRnZS9icl9tcnAuYz00Mjg9c3RhdGljIHZvaWQgYnJfbXJwX2RlbF9pbXBsKHN0cnVjdCBuZXRfYnJpZGdlICpiciwgc3RydWN0IGJyX21ycCAqbXJwKVxcbi0tXFxubmV0L2JyaWRnZS9icl9tcnAuYy00OTYtICovXFxubmV0L2JyaWRnZS9icl9tcnAuYzo0OTc6aW50IGJyX21ycF9hZGQoc3RydWN0IG5ldF9icmlkZ2UgKmJyLCBzdHJ1Y3QgYnJfbXJwX2luc3RhbmNlICppbnN0YW5jZSlcXG5uZXQvYnJpZGdlL2JyX21ycC5jLTQ5OC17XFxuLS1cXG5uZXQvYnJpZGdlL2JyX21ycC5jPTU2Mj12b2lkIGJyX21ycF9wb3J0X2RlbChzdHJ1Y3QgbmV0X2JyaWRnZSAqYnIsIHN0cnVjdCBuZXRfYnJpZGdlX3BvcnQgKnApXFxuLS1cXG5uZXQvYnJpZGdlL2JyX21ycC5jLTU3NS0gKi9cXG5uZXQvYnJpZGdlL2JyX21ycC5jOjU3NjppbnQgYnJfbXJwX2RlbChzdHJ1Y3QgbmV0X2JyaWRnZSAqYnIsIHN0cnVjdCBicl9tcnBfaW5zdGFuY2UgKmluc3RhbmNlKVxcbm5ldC9icmlkZ2UvYnJfbXJwLmMtNTc3LXtcXG4tLVxcbm5ldC9icmlkZ2UvYnJfbXJwLmMtNTkwLSAqL1xcbm5ldC9icmlkZ2UvYnJfbXJwLmM6NTkxOmludCBicl9tcnBfc2V0X3BvcnRfc3RhdGUoc3RydWN0IG5ldF9icmlkZ2VfcG9ydCAqcCxcXG5uZXQvYnJpZGdlL2JyX21ycC5jLTU5Mi1cXHRcXHRcXHQgIGVudW0gYnJfbXJwX3BvcnRfc3RhdGVfdHlwZSBzdGF0ZSlcXG4tLVxcbm5ldC9icmlkZ2UvYnJfbXJwLmMtNjE2LSAqL1xcbm5ldC9icmlkZ2UvYnJfbXJwLmM6NjE3OmludCBicl9tcnBfc2V0X3BvcnRfcm9sZShzdHJ1Y3QgbmV0X2JyaWRnZV9wb3J0ICpwLFxcbm5ldC9icmlkZ2UvYnJfbXJwLmMtNjE4LVxcdFxcdFxcdCBlbnVtIGJyX21ycF9wb3J0X3JvbGVfdHlwZSByb2xlKVxcbi0tXFxubmV0L2JyaWRnZS9icl9tcnAuYy02NDgtICovXFxubmV0L2JyaWRnZS9icl9tcnAuYzo2NDk6aW50IGJyX21ycF9zZXRfcmluZ19zdGF0ZShzdHJ1Y3QgbmV0X2JyaWRnZSAqYnIsXFxubmV0L2JyaWRnZS9icl9tcnAuYy02NTAtXFx0XFx0XFx0ICBzdHJ1Y3QgYnJfbXJwX3Jpbmdfc3RhdGUgKnN0YXRlKVxcbi0tXFxubmV0L2JyaWRnZS9icl9tcnAuYy02NzAtICovXFxubmV0L2JyaWRnZS9icl9tcnAuYzo2NzE6aW50IGJyX21ycF9zZXRfcmluZ19yb2xlKHN0cnVjdCBuZXRfYnJpZGdlICpicixcXG5uZXQvYnJpZGdlL2JyX21ycC5jLTY3Mi1cXHRcXHRcXHQgc3RydWN0IGJyX21ycF9yaW5nX3JvbGUgKnJvbGUpXFxuLS1cXG5uZXQvYnJpZGdlL2JyX21ycC5jLTcwMS0gKi9cXG5uZXQvYnJpZGdlL2JyX21ycC5jOjcwMjppbnQgYnJfbXJwX3N0YXJ0X3Rlc3Qoc3RydWN0IG5ldF9icmlkZ2UgKmJyLFxcbm5ldC9icmlkZ2UvYnJfbXJwLmMtNzAzLVxcdFxcdCAgICAgIHN0cnVjdCBicl9tcnBfc3RhcnRfdGVzdCAqdGVzdClcXG4tLVxcbm5ldC9icmlkZ2UvYnJfbXJwLmMtNzM2LSAqL1xcbm5ldC9icmlkZ2UvYnJfbXJwLmM6NzM3OmludCBicl9tcnBfc2V0X2luX3N0YXRlKHN0cnVjdCBuZXRfYnJpZGdlICpiciwgc3RydWN0IGJyX21ycF9pbl9zdGF0ZSAqc3RhdGUpXFxubmV0L2JyaWRnZS9icl9tcnAuYy03Mzgte1xcbi0tXFxubmV0L2JyaWRnZS9icl9tcnAuYy03NTctICovXFxubmV0L2JyaWRnZS9icl9tcnAuYzo3NTg6aW50IGJyX21ycF9zZXRfaW5fcm9sZShzdHJ1Y3QgbmV0X2JyaWRnZSAqYnIsIHN0cnVjdCBicl9tcnBfaW5fcm9sZSAqcm9sZSlcXG5uZXQvYnJpZGdlL2JyX21ycC5jLTc1OS17XFxuLS1cXG5uZXQvYnJpZGdlL2JyX21ycC5jLTgzOS0gKi9cXG5uZXQvYnJpZGdlL2JyX21ycC5jOjg0MDppbnQgYnJfbXJwX3N0YXJ0X2luX3Rlc3Qoc3RydWN0IG5ldF9icmlkZ2UgKmJyLFxcbm5ldC9icmlkZ2UvYnJfbXJwLmMtODQxLVxcdFxcdFxcdCBzdHJ1Y3QgYnJfbXJwX3N0YXJ0X2luX3Rlc3QgKmluX3Rlc3QpXFxuLS1cXG5uZXQvYnJpZGdlL2JyX21ycC5jPTEwNjE9c3RhdGljIGJvb2wgYnJfbXJwX21yY19iZWhhdmlvdXIoc3RydWN0IGJyX21ycCAqbXJwKVxcbi0tXFxubmV0L2JyaWRnZS9icl9tcnAuYy0xMDczLSAqL1xcbm5ldC9icmlkZ2UvYnJfbXJwLmM6MTA3NDpzdGF0aWMgaW50IGJyX21ycF9yY3Yoc3RydWN0IG5ldF9icmlkZ2VfcG9ydCAqcCxcXG5uZXQvYnJpZGdlL2JyX21ycC5jLTEwNzUtXFx0XFx0ICAgICAgc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG4tLVxcbm5ldC9icmlkZ2UvYnJfbXJwLmMtMTI0NS0gKi9cXG5uZXQvYnJpZGdlL2JyX21ycC5jOjEyNDY6c3RhdGljIGludCBicl9tcnBfcHJvY2VzcyhzdHJ1Y3QgbmV0X2JyaWRnZV9wb3J0ICpwLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbm5ldC9icmlkZ2UvYnJfbXJwLmMtMTI0Ny17XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDA4OjU5OjU1LjY3NjUxNTAxMVoiLCJTZXEiOjIzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1ODIwNTQyMDMwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgTVJQIFRlc3QgUHJvY2VkdXJlKipcblxuT2theSwgc28gSSdtIGZvY3VzaW5nIGluIG9uIHRoZSBNUlAgdGVzdCBmdW5jdGlvbmFsaXR5IGhlcmUuIE15IGluaXRpYWwgdGhvdWdodCBwcm9jZXNzIGlzIHRvIGNhdGVnb3JpemUgdGhlIGtleSBzeW1ib2xzIHJlbGF0ZWQgdG8gaXQ6IGBicl9tcnBfYWRkYCwgYGJyX21ycF9kZWxgLCBgYnJfbXJwX3NldF9wb3J0X3N0YXRlYCwgYGJyX21ycF9zZXRfcG9ydF9yb2xlYCwgYGJyX21ycF9zZXRfcmluZ19zdGF0ZWAsIGBicl9tcnBfc2V0X3Jpbmdfcm9sZWAsIGBicl9tcnBfc3RhcnRfdGVzdGAsIGBicl9tcnBfc2V0X2luX3N0YXRlYCwgYGJyX21ycF9zZXRfaW5fcm9sZWAsIGBicl9tcnBfc3RhcnRfaW5fdGVzdGAsIGBicl9tcnBfcmN2YCwgYW5kIGBicl9tcnBfcHJvY2Vzc2AuIEJ1dCAqc3BlY2lmaWNhbGx5KiwgSSdtIGhvbmluZyBpbiBvbiBob3cgdGhlIHRlc3QgaXRzZWxmIGluaXRpYXRlcy5cblxuYGJyX21ycF9zdGFydF90ZXN0YCBpcyB0aGUga2V5LCB0aGUgdHJpZ2dlci4gVGhhdCdzIHRoZSBmdW5jdGlvbiB0aGF0IHVsdGltYXRlbHkgc3RhcnRzIHRoZSB0ZXN0IGV4ZWN1dGlvbiwgYW5kICp0aGF0KiBjYWxscyBgYnJfbXJwX2FsbG9jX3Rlc3Rfc2tiYC4gUmlnaHQsIHNvIGBicl9tcnBfYWxsb2NfdGVzdF9za2JgIGlzIHdoZXJlIHRoZSB0ZXN0IHBhY2tldHMgYXJlIGFjdHVhbGx5IGFsbG9jYXRlZC5cblxuTm93LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGVyZSBlbHNlIGBicl9tcnBfYWxsb2NfdGVzdF9za2JgIGlzIGJlaW5nIGNhbGxlZCBmcm9tLiBJJ20gY2hlY2tpbmcgZm9yIGRlcGVuZGVuY2llcy4gQWgsIGl0J3MgYWxzbyBjYWxsZWQgYnkgYGJyX21ycF90ZXN0X3dvcmtfZXhwaXJlZGAuIEludGVyZXN0aW5nLiBTbyB0aGF0J3MgdGhlIGNsZWFudXAgYWZ0ZXIgdGhlIHRlc3QgZXhwaXJlcy4gYGJyX21ycF90ZXN0X3dvcmtfZXhwaXJlZGAgaXMgc2NoZWR1bGVkIGJ5IGBicl9tcnBfc3RhcnRfdGVzdGAsIGJ1dCBpdCdzICppbml0aWFsaXplZCogaW4gYGJyX21ycF9hZGRgLiBTbyB0aGUgdGVzdCB3b3JrIGlzIHNjaGVkdWxlZCB3aGVuIHdlIHN0YXJ0IHRoZSB0ZXN0LCBidXQgdGhlIHdvcmsgaXMgaW5pdGlhbGl6ZWQgd2hlbiB3ZSBhZGQgdGhlIGJyaWRnZS4gVGhhdCdzIGdvb2QgdG8ga25vdywgYW5kIGl0J3MgYSBkZXRhaWwgSSBuZWVkIHRvIGtlZXAgaW4gbWluZC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjA1OTIsIk91dHB1dFRva2VucyI6MzMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyOTYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMDk6MDA6MDEuNDk3MDU5OTcxWiIsIlNlcSI6MjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0Njk2NzQxMTksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwidGVzdF93b3JrXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9icmlkZ2UvYnJfbXJwLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L2JyaWRnZS9icl9tcnAuYz0yMzk9c3RhdGljIHN0cnVjdCBza19idWZmICpicl9tcnBfYWxsb2NfaW5fdGVzdF9za2Ioc3RydWN0IGJyX21ycCAqbXJwLFxcbi0tXFxubmV0L2JyaWRnZS9icl9tcnAuYy0yNzgtICovXFxubmV0L2JyaWRnZS9icl9tcnAuYzoyNzk6c3RhdGljIHZvaWQgYnJfbXJwX3Rlc3Rfd29ya19leHBpcmVkKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcXG5uZXQvYnJpZGdlL2JyX21ycC5jLTI4MC17XFxubmV0L2JyaWRnZS9icl9tcnAuYy0yODEtXFx0c3RydWN0IGRlbGF5ZWRfd29yayAqZGVsX3dvcmsgPSB0b19kZWxheWVkX3dvcmsod29yayk7XFxubmV0L2JyaWRnZS9icl9tcnAuYzoyODI6XFx0c3RydWN0IGJyX21ycCAqbXJwID0gY29udGFpbmVyX29mKGRlbF93b3JrLCBzdHJ1Y3QgYnJfbXJwLCB0ZXN0X3dvcmspO1xcbm5ldC9icmlkZ2UvYnJfbXJwLmMtMjgzLVxcdHN0cnVjdCBuZXRfYnJpZGdlX3BvcnQgKnA7XFxuLS1cXG5uZXQvYnJpZGdlL2JyX21ycC5jLTM0My1cXG5uZXQvYnJpZGdlL2JyX21ycC5jOjM0NDpcXHRxdWV1ZV9kZWxheWVkX3dvcmsoc3lzdGVtX3BlcmNwdV93cSwgXFx1MDAyNm1ycC1cXHUwMDNldGVzdF93b3JrLFxcbm5ldC9icmlkZ2UvYnJfbXJwLmMtMzQ1LVxcdFxcdFxcdCAgIHVzZWNzX3RvX2ppZmZpZXMobXJwLVxcdTAwM2V0ZXN0X2ludGVydmFsKSk7XFxuLS1cXG5uZXQvYnJpZGdlL2JyX21ycC5jLTM1MS0gKi9cXG5uZXQvYnJpZGdlL2JyX21ycC5jOjM1MjpzdGF0aWMgdm9pZCBicl9tcnBfaW5fdGVzdF93b3JrX2V4cGlyZWQoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxcbm5ldC9icmlkZ2UvYnJfbXJwLmMtMzUzLXtcXG5uZXQvYnJpZGdlL2JyX21ycC5jLTM1NC1cXHRzdHJ1Y3QgZGVsYXllZF93b3JrICpkZWxfd29yayA9IHRvX2RlbGF5ZWRfd29yayh3b3JrKTtcXG5uZXQvYnJpZGdlL2JyX21ycC5jOjM1NTpcXHRzdHJ1Y3QgYnJfbXJwICptcnAgPSBjb250YWluZXJfb2YoZGVsX3dvcmssIHN0cnVjdCBicl9tcnAsIGluX3Rlc3Rfd29yayk7XFxubmV0L2JyaWRnZS9icl9tcnAuYy0zNTYtXFx0c3RydWN0IG5ldF9icmlkZ2VfcG9ydCAqcDtcXG4tLVxcbm5ldC9icmlkZ2UvYnJfbXJwLmMtNDIwLVxcbm5ldC9icmlkZ2UvYnJfbXJwLmM6NDIxOlxcdHF1ZXVlX2RlbGF5ZWRfd29yayhzeXN0ZW1fcGVyY3B1X3dxLCBcXHUwMDI2bXJwLVxcdTAwM2Vpbl90ZXN0X3dvcmssXFxubmV0L2JyaWRnZS9icl9tcnAuYy00MjItXFx0XFx0XFx0ICAgdXNlY3NfdG9famlmZmllcyhtcnAtXFx1MDAzZWluX3Rlc3RfaW50ZXJ2YWwpKTtcXG4tLVxcbm5ldC9icmlkZ2UvYnJfbXJwLmM9NDI4PXN0YXRpYyB2b2lkIGJyX21ycF9kZWxfaW1wbChzdHJ1Y3QgbmV0X2JyaWRnZSAqYnIsIHN0cnVjdCBicl9tcnAgKm1ycClcXG4tLVxcbm5ldC9icmlkZ2UvYnJfbXJwLmMtNDMzLVxcdC8qIFN0b3Agc2VuZGluZyBNUlBfVGVzdCBmcmFtZXMgKi9cXG5uZXQvYnJpZGdlL2JyX21ycC5jOjQzNDpcXHRjYW5jZWxfZGVsYXllZF93b3JrX3N5bmMoXFx1MDAyNm1ycC1cXHUwMDNldGVzdF93b3JrKTtcXG5uZXQvYnJpZGdlL2JyX21ycC5jLTQzNS1cXHRicl9tcnBfc3dpdGNoZGV2X3NlbmRfcmluZ190ZXN0KGJyLCBtcnAsIDAsIDAsIDAsIDApO1xcbi0tXFxubmV0L2JyaWRnZS9icl9tcnAuYy00MzctXFx0LyogU3RvcCBzZW5kaW5nIE1SUF9JblRlc3QgZnJhbWVzIGlmIGhhcyBhbiBpbnRlcmNvbm5lY3Qgcm9sZSAqL1xcbm5ldC9icmlkZ2UvYnJfbXJwLmM6NDM4OlxcdGNhbmNlbF9kZWxheWVkX3dvcmtfc3luYyhcXHUwMDI2bXJwLVxcdTAwM2Vpbl90ZXN0X3dvcmspO1xcbm5ldC9icmlkZ2UvYnJfbXJwLmMtNDM5LVxcdGJyX21ycF9zd2l0Y2hkZXZfc2VuZF9pbl90ZXN0KGJyLCBtcnAsIDAsIDAsIDApO1xcbi0tXFxubmV0L2JyaWRnZS9icl9tcnAuYz00OTc9aW50IGJyX21ycF9hZGQoc3RydWN0IG5ldF9icmlkZ2UgKmJyLCBzdHJ1Y3QgYnJfbXJwX2luc3RhbmNlICppbnN0YW5jZSlcXG4tLVxcbm5ldC9icmlkZ2UvYnJfbXJwLmMtNTQyLVxcbm5ldC9icmlkZ2UvYnJfbXJwLmM6NTQzOlxcdElOSVRfREVMQVlFRF9XT1JLKFxcdTAwMjZtcnAtXFx1MDAzZXRlc3Rfd29yaywgYnJfbXJwX3Rlc3Rfd29ya19leHBpcmVkKTtcXG5uZXQvYnJpZGdlL2JyX21ycC5jOjU0NDpcXHRJTklUX0RFTEFZRURfV09SSyhcXHUwMDI2bXJwLVxcdTAwM2Vpbl90ZXN0X3dvcmssIGJyX21ycF9pbl90ZXN0X3dvcmtfZXhwaXJlZCk7XFxubmV0L2JyaWRnZS9icl9tcnAuYy01NDUtXFx0aGxpc3RfYWRkX3RhaWxfcmN1KFxcdTAwMjZtcnAtXFx1MDAzZWxpc3QsIFxcdTAwMjZici1cXHUwMDNlbXJwX2xpc3QpO1xcbi0tXFxubmV0L2JyaWRnZS9icl9tcnAuYz03MDI9aW50IGJyX21ycF9zdGFydF90ZXN0KHN0cnVjdCBuZXRfYnJpZGdlICpicixcXG4tLVxcbm5ldC9icmlkZ2UvYnJfbXJwLmMtNzI3LVxcdG1ycC1cXHUwMDNldGVzdF9jb3VudF9taXNzID0gMDtcXG5uZXQvYnJpZGdlL2JyX21ycC5jOjcyODpcXHRxdWV1ZV9kZWxheWVkX3dvcmsoc3lzdGVtX3BlcmNwdV93cSwgXFx1MDAyNm1ycC1cXHUwMDNldGVzdF93b3JrLFxcbm5ldC9icmlkZ2UvYnJfbXJwLmMtNzI5LVxcdFxcdFxcdCAgIHVzZWNzX3RvX2ppZmZpZXModGVzdC1cXHUwMDNlaW50ZXJ2YWwpKTtcXG4tLVxcbm5ldC9icmlkZ2UvYnJfbXJwLmM9NzU4PWludCBicl9tcnBfc2V0X2luX3JvbGUoc3RydWN0IG5ldF9icmlkZ2UgKmJyLCBzdHJ1Y3QgYnJfbXJwX2luX3JvbGUgKnJvbGUpXFxuLS1cXG5uZXQvYnJpZGdlL2JyX21ycC5jLTc3OC1cXHRcXHQvKiBTdG9wIHRoZSBnZW5lcmF0aW5nIE1SUF9JblRlc3QgZnJhbWVzICovXFxubmV0L2JyaWRnZS9icl9tcnAuYzo3Nzk6XFx0XFx0Y2FuY2VsX2RlbGF5ZWRfd29ya19zeW5jKFxcdTAwMjZtcnAtXFx1MDAzZWluX3Rlc3Rfd29yayk7XFxubmV0L2JyaWRnZS9icl9tcnAuYy03ODAtXFx0XFx0YnJfbXJwX3N3aXRjaGRldl9zZW5kX2luX3Rlc3QoYnIsIG1ycCwgMCwgMCwgMCk7XFxuLS1cXG5uZXQvYnJpZGdlL2JyX21ycC5jPTg0MD1pbnQgYnJfbXJwX3N0YXJ0X2luX3Rlc3Qoc3RydWN0IG5ldF9icmlkZ2UgKmJyLFxcbi0tXFxubmV0L2JyaWRnZS9icl9tcnAuYy04NjctXFx0bXJwLVxcdTAwM2Vpbl90ZXN0X2NvdW50X21pc3MgPSAwO1xcbm5ldC9icmlkZ2UvYnJfbXJwLmM6ODY4OlxcdHF1ZXVlX2RlbGF5ZWRfd29yayhzeXN0ZW1fcGVyY3B1X3dxLCBcXHUwMDI2bXJwLVxcdTAwM2Vpbl90ZXN0X3dvcmssXFxubmV0L2JyaWRnZS9icl9tcnAuYy04NjktXFx0XFx0XFx0ICAgdXNlY3NfdG9famlmZmllcyhpbl90ZXN0LVxcdTAwM2VpbnRlcnZhbCkpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNVQwOTowMDowMS45NjY3NDQzNDFaIiwiU2VxIjoyNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTUyMzgzMDk0NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBbmFseXNpcyBvZiB0aGUgTVJQIFF1ZXVlaW5nIGFuZCBDb25maWd1cmF0aW9uKipcblxuT2theSwgc28gSSd2ZSBjb25maXJtZWQgdGhhdCBgYnJfbXJwX3N0YXJ0X3Rlc3RgIGlzIGRlZmluaXRlbHkgdGhlIGZ1bmN0aW9uIHRoYXQga2lja3Mgb2ZmIHRoZSBxdWV1aW5nIHByb2Nlc3MuIE5vdywgSSBuZWVkIHRvIG1ha2UgYSBsaXN0IG9mIHRoZSBjcnVjaWFsIGZvY3VzIHN5bWJvbHMg4oCTIHRoZSBmdW5jdGlvbnMgZGlyZWN0bHkgaW52b2x2ZWQgaW4gdGhpcyBNUlAgdGVzdCBzY2VuYXJpby4gSSBoYXZlIGEgZ29vZCBncmFzcCBvZiB0aGUgY29kZSBub3cgc28gSSdsbCBnbyB0aHJvdWdoIHRoZSBzeW1ib2xzIHRvIGNvbmZpcm0gdGhhdCB0aGUgbGlzdCBJIGhhdmUgaXMgcmlnaHQ6IGBicl9tcnBfc3RhcnRfdGVzdGAsIGBicl9tcnBfYWRkYCwgYGJyX21ycF9zZXRfcmluZ19yb2xlYCwgYGJyX21ycF9zZXRfcmluZ19zdGF0ZWAsIGBicl9tcnBfc3RhcnRfaW5fdGVzdGAsIGBicl9tcnBfc2V0X2luX3JvbGVgLCBgYnJfbXJwX3NldF9pbl9zdGF0ZWAsIGBicl9tcnBfc2V0X3BvcnRfc3RhdGVgLCBgYnJfbXJwX3NldF9wb3J0X3JvbGVgLCBhbmQgYGJyX21ycF9kZWxgLiBUaG9zZSBsb29rIHJpZ2h0LlxuXG5BbmQsIG9mIGNvdXJzZSwgdG8gZnVsbHkgY2FwdHVyZSB0aGUgTVJQIGZyYW1lIHByb2Nlc3NpbmcsIEkgY2FuJ3QgZm9yZ2V0IGBicl9tcnBfcmN2YCBhbmQgYGJyX21ycF9wcm9jZXNzYCBmb3IgcmVjZWl2aW5nIGFuZCBoYW5kbGluZyB0aG9zZSBmcmFtZXMuXG5cbk5vdywgbGV0J3MgbmFpbCBkb3duIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgaW52b2x2ZWQuIFRoZSBwcmltYXJ5IGNvbmZpZ3VyYXRpb24gc2VlbXMgdG8gYmUgYEJSSURHRV9NUlBgLiBIb3dldmVyLCBsZXQgbWUgZG91YmxlIGNoZWNrIHRoYXQgdGhlcmUgYXJlbid0IGFueSBoaWRkZW4gZGVwZW5kZW5jaWVzLiBBaGEsIHllcyEgYEJSSURHRV9NUlBgIGRlcGVuZHMgb24gYEJSSURHRWAuIFRoYXQgbWFrZXMgc2Vuc2UuXG5cblRoZXJlZm9yZSwgdGhlIHJlbGV2YW50IGNvbmZpZ3VyYXRpb25zIGhlcmUgYXJlIGBCUklER0VgIGFuZCBgQlJJREdFX01SUGAuIEkgc2hvdWxkIHJldHVybiBgQlJJREdFX01SUGAgYXMgdGhhdCdzIHRoZSBtb3JlIHNwZWNpZmljIGFuZCByZWxldmFudCBvcHRpb24uXG5cbkFscmlnaHQsIEknbGwgdGFrZSBhbm90aGVyIGxvb2sgYXQgdGhlIGBicl9tcnBfYWxsb2NfdGVzdF9za2JgIGZ1bmN0aW9uIHRvIG1ha2Ugc3VyZSB0aGF0IEkgdW5kZXJzdGFuZCBpdHMgcm9sZSBpbiB0aGlzIHByb2Nlc3MuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIyODEwLCJPdXRwdXRUb2tlbnMiOjQxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjM1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDA5OjAwOjA3LjQ5MDU3OTA0NloiLCJTZXEiOjI2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzY1MTk1NDQsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiYnJfbXJwX2FsbG9jX3Rlc3Rfc2tiXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9icmlkZ2UvYnJfbXJwLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L2JyaWRnZS9icl9tcnAuYz0xNzE9c3RhdGljIHZvaWQgYnJfbXJwX3NrYl9jb21tb24oc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGJyX21ycCAqbXJwKVxcbi0tXFxubmV0L2JyaWRnZS9icl9tcnAuYy0xODEtXFxubmV0L2JyaWRnZS9icl9tcnAuYzoxODI6c3RhdGljIHN0cnVjdCBza19idWZmICpicl9tcnBfYWxsb2NfdGVzdF9za2Ioc3RydWN0IGJyX21ycCAqbXJwLFxcbm5ldC9icmlkZ2UvYnJfbXJwLmMtMTgzLVxcdFxcdFxcdFxcdFxcdCAgICAgc3RydWN0IG5ldF9icmlkZ2VfcG9ydCAqcCxcXG4tLVxcbm5ldC9icmlkZ2UvYnJfbXJwLmM9Mjc5PXN0YXRpYyB2b2lkIGJyX21ycF90ZXN0X3dvcmtfZXhwaXJlZChzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXFxuLS1cXG5uZXQvYnJpZGdlL2JyX21ycC5jLTMxMS1cXHRcXHRpZiAoIW1ycC1cXHUwMDNldGVzdF9tb25pdG9yKSB7XFxubmV0L2JyaWRnZS9icl9tcnAuYzozMTI6XFx0XFx0XFx0c2tiID0gYnJfbXJwX2FsbG9jX3Rlc3Rfc2tiKG1ycCwgcCxcXG5uZXQvYnJpZGdlL2JyX21ycC5jLTMxMy1cXHRcXHRcXHRcXHRcXHRcXHQgICAgQlJfTVJQX1BPUlRfUk9MRV9QUklNQVJZKTtcXG4tLVxcbm5ldC9icmlkZ2UvYnJfbXJwLmMtMzI3LVxcdFxcdGlmICghbXJwLVxcdTAwM2V0ZXN0X21vbml0b3IpIHtcXG5uZXQvYnJpZGdlL2JyX21ycC5jOjMyODpcXHRcXHRcXHRza2IgPSBicl9tcnBfYWxsb2NfdGVzdF9za2IobXJwLCBwLFxcbm5ldC9icmlkZ2UvYnJfbXJwLmMtMzI5LVxcdFxcdFxcdFxcdFxcdFxcdCAgICBCUl9NUlBfUE9SVF9ST0xFX1NFQ09OREFSWSk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDA5OjAwOjA3LjU2NzEwNjA5WiIsIlNlcSI6MjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjcxNTgyODExMTUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudCBvZiB0aGUgTVJQIEJ1ZyBGaXgqKlxuXG5Pa2F5LCBzbyBJJ3ZlIGxvb2tlZCBvdmVyIHRoaXMgcGF0Y2gsIGFuZCBoZXJlJ3MgbXkgdGFrZTogdGhlIGtleSBpc3N1ZSBpcyBhIHJhdGhlciBjbGFzc2ljIG9mZi1ieS1vbmUgZXJyb3IgaW4gdGhlIGBicl9tcnBfYWxsb2NfdGVzdF9za2JgIGZ1bmN0aW9uLiBUaGV5J3JlIHVzaW5nIGBzaXplb2Yob3VpKWAgaW5zdGVhZCBvZiBgc2l6ZW9mKCpvdWkpYC4gIEknbSBhc3N1bWluZyBgb3VpYCBpcyBhIHBvaW50ZXIgdG8gc29tZSBzb3J0IG9mIHN0cnVjdHVyZSByZWxhdGVkIHRvIHRoZSBvcmdhbml6YXRpb25hbGx5IHVuaXF1ZSBpZGVudGlmaWVyLCB3aGljaCBtYWtlcyBwZXJmZWN0IHNlbnNlIGluIHRoaXMgY29udGV4dC4gVXNpbmcgdGhlIHNpemUgb2YgdGhlICpwb2ludGVyKiByYXRoZXIgdGhhbiB0aGUgKnN0cnVjdHVyZSBpdCBwb2ludHMgdG8qIHdvdWxkIGxlYWQgdG8gYW4gaW5jb3JyZWN0IGxlbmd0aCBjYWxjdWxhdGlvbiB3aGVuIGJ1aWxkaW5nIHRlc3QgcGFja2V0cyB3aXRoaW4gdGhlIE1SUCBmcmFtZXdvcmsuICBUaGlzIGlzIGEgY3JpdGljYWwgZXJyb3Igc2luY2UgaXQgZGlyZWN0bHkgaW1wYWN0cyB0aGUgU2l6ZSBvZiB0aGUgVHlwZSBMZW5ndGggVmFsdWUgKFRMVikgZmllbGQgaW4gdGhlIE1SUCBwYWNrZXQsIHdoaWNoIG1lYW5zIG1hbGZvcm1lZCBwYWNrZXRzIG9yIGV2ZW4gb3V0LW9mLWJvdW5kcyByZWFkcyBvciB3cml0ZXMgY291bGQgYmUgdHJpZ2dlcmVkLlxuXG5GdW5jdGlvbmFsbHksIHRoaXMgaXMgYSBjaGFuZ2UgdG8gdGhlIG5ldHdvcmsgYnJpZGdlIE1SUCBwcm90b2NvbCBpbXBsZW1lbnRhdGlvbiwgYW5kIHRoZXJlZm9yZSB3YXJyYW50cyBjYXJlZnVsIHRlc3RpbmcuIEknZCBiZSBsb29raW5nIGF0IGEgZnV6emluZyBjYW1wYWlnbiB0byBlbnN1cmUgdGhlcmUgYXJlbid0IGRvd25zdHJlYW0gY29uc2VxdWVuY2VzIHRvIHRoaXMgY2hhbmdlLiBNeSBpbml0aWFsIGxpc3Qgb2YgXCJmb2N1cyBzeW1ib2xzXCIgbG9vayBnb29kIGZvciBhIHRob3JvdWdoIGV2YWx1YXRpb24gb2YgdGhlIGVmZmVjdHMgb2YgdGhpcyBjaGFuZ2U6IHNwZWNpZmljYWxseSBsb29raW5nIGF0IHRoZSBzdGFydCwgYWRkLCBzZXQsIGFuZCBkZWxldGUgb3BlcmF0aW9ucyBvZiB0aGUgTVJQIHByb3RvY29sLiBJIHdpbGwgYWxzbyBtYWtlIHN1cmUgdG8gY2hlY2sgdGhlIHJlY2VpdmUgYW5kIHByb2Nlc3MgbWV0aG9kcy4gSSB3b3VsZCBhbHNvIHJlY29tbWVuZCB0aGF0IHRoZSBNUlAgZnVuY3Rpb25hbGl0eSBiZSByZS10ZXN0ZWQgd2l0aCBgQlJJREdFX01SUGAgZW5hYmxlZC4gVGhlIGltcGFjdCBjb3VsZCBiZSBzdWJ0bGUsIG9yIG11Y2ggd29yc2UsIGRlcGVuZGluZyBvbiBob3cgdGhpcyBpbmNvcnJlY3Qgc2l6ZSB3YXMgYmVpbmcgdXNlZC4gVGhpcyBjb3VsZCBiZSBhIHByZXR0eSBzaWduaWZpY2FudCB2dWxuZXJhYmlsaXR5LCBkZXBlbmRpbmcgb24gdGhlIGltcGxlbWVudGF0aW9uIGRldGFpbHMuIEknbGwgbmVlZCB0byBkaWcgaW50byB0aGUgZGV0YWlscyB0byB1bmRlcnN0YW5kIHRoZSBwb3RlbnRpYWwgZm9yIGV4cGxvaXRhdGlvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6MjM4MzksIk91dHB1dFRva2VucyI6MjU5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzIwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDA5OjAwOjE0LjcyNTM5MjM3NVoiLCJTZXEiOjI4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjg0MDkzOTUzLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJCUklER0VfTVJQXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiYnJfbXJwX3N0YXJ0X3Rlc3RcIixcbiAgICBcImJyX21ycF9hZGRcIixcbiAgICBcImJyX21ycF9zZXRfcmluZ19yb2xlXCIsXG4gICAgXCJicl9tcnBfc2V0X3Jpbmdfc3RhdGVcIixcbiAgICBcImJyX21ycF9zdGFydF9pbl90ZXN0XCIsXG4gICAgXCJicl9tcnBfc2V0X2luX3JvbGVcIixcbiAgICBcImJyX21ycF9zZXRfaW5fc3RhdGVcIixcbiAgICBcImJyX21ycF9zZXRfcG9ydF9zdGF0ZVwiLFxuICAgIFwiYnJfbXJwX3NldF9wb3J0X3JvbGVcIixcbiAgICBcImJyX21ycF9kZWxcIixcbiAgICBcImJyX21ycF9yY3ZcIixcbiAgICBcImJyX21ycF9wcm9jZXNzXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYW4gaW5jb3JyZWN0IHNpemUgY2FsY3VsYXRpb24gaW4gYGJyX21ycF9hbGxvY190ZXN0X3NrYmAgd2hlcmUgYHNpemVvZihvdWkpYCAocG9pbnRlciBzaXplKSB3YXMgdXNlZCBpbnN0ZWFkIG9mIGBzaXplb2YoKm91aSlgIChzdHJ1Y3Qgc2l6ZSkuIFRoaXMgYWZmZWN0cyB0aGUgbGVuZ3RoIG9mIHRoZSBhbGxvY2F0ZWQvcG9wdWxhdGVkIFRMViBpbiBNUlAgdGVzdCBwYWNrZXRzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGJyaWRnZSBNUlAgcHJvdG9jb2wgaW1wbGVtZW50YXRpb24gYW5kIHNob3VsZCBiZSBmdXp6ZWQgdG8gZW5zdXJlIGNvcnJlY3QgcGFja2V0IGNvbnN0cnVjdGlvbiBhbmQgaGFuZGxpbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQlJJREdFX01SUFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImJyX21ycF9zdGFydF90ZXN0XCIsXG4gICAgXCJicl9tcnBfYWRkXCIsXG4gICAgXCJicl9tcnBfc2V0X3Jpbmdfcm9sZVwiLFxuICAgIFwiYnJfbXJwX3NldF9yaW5nX3N0YXRlXCIsXG4gICAgXCJicl9tcnBfc3RhcnRfaW5fdGVzdFwiLFxuICAgIFwiYnJfbXJwX3NldF9pbl9yb2xlXCIsXG4gICAgXCJicl9tcnBfc2V0X2luX3N0YXRlXCIsXG4gICAgXCJicl9tcnBfc2V0X3BvcnRfc3RhdGVcIixcbiAgICBcImJyX21ycF9zZXRfcG9ydF9yb2xlXCIsXG4gICAgXCJicl9tcnBfZGVsXCIsXG4gICAgXCJicl9tcnBfcmN2XCIsXG4gICAgXCJicl9tcnBfcHJvY2Vzc1wiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGFuIGluY29ycmVjdCBzaXplIGNhbGN1bGF0aW9uIGluIGBicl9tcnBfYWxsb2NfdGVzdF9za2JgIHdoZXJlIGBzaXplb2Yob3VpKWAgKHBvaW50ZXIgc2l6ZSkgd2FzIHVzZWQgaW5zdGVhZCBvZiBgc2l6ZW9mKCpvdWkpYCAoc3RydWN0IHNpemUpLiBUaGlzIGFmZmVjdHMgdGhlIGxlbmd0aCBvZiB0aGUgYWxsb2NhdGVkL3BvcHVsYXRlZCBUTFYgaW4gTVJQIHRlc3QgcGFja2V0cy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBicmlkZ2UgTVJQIHByb3RvY29sIGltcGxlbWVudGF0aW9uIGFuZCBzaG91bGQgYmUgZnV6emVkIHRvIGVuc3VyZSBjb3JyZWN0IHBhY2tldCBjb25zdHJ1Y3Rpb24gYW5kIGhhbmRsaW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+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-workflowvtj7l[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-25 08:35:03 +0000 UTC FinishedAt: 2026-07-25 09:00:16 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git", "commit_hash": "04026c998c24ac47eb76886b9790c5710b603eb4", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BRIDGE_MRP" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git", "commit_hash": "04026c998c24ac47eb76886b9790c5710b603eb4", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BRIDGE_MRP" ], "series_id": "32962ccc-95a9-4841-8ff7-1294892e86a5" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "br_mrp_start_test", "br_mrp_add", "br_mrp_set_ring_role", "br_mrp_set_ring_state", "br_mrp_start_in_test", "br_mrp_set_in_role", "br_mrp_set_in_state", "br_mrp_set_port_state", "br_mrp_set_port_role", "br_mrp_del", "br_mrp_rcv", "br_mrp_process" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDA4OjU5PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JSSURHRV9NUlAmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDticl9tcnBfc3RhcnRfdGVzdCYjMzQ7LAogICAgJiMzNDticl9tcnBfYWRkJiMzNDssCiAgICAmIzM0O2JyX21ycF9zZXRfcmluZ19yb2xlJiMzNDssCiAgICAmIzM0O2JyX21ycF9zZXRfcmluZ19zdGF0ZSYjMzQ7LAogICAgJiMzNDticl9tcnBfc3RhcnRfaW5fdGVzdCYjMzQ7LAogICAgJiMzNDticl9tcnBfc2V0X2luX3JvbGUmIzM0OywKICAgICYjMzQ7YnJfbXJwX3NldF9pbl9zdGF0ZSYjMzQ7LAogICAgJiMzNDticl9tcnBfc2V0X3BvcnRfc3RhdGUmIzM0OywKICAgICYjMzQ7YnJfbXJwX3NldF9wb3J0X3JvbGUmIzM0OywKICAgICYjMzQ7YnJfbXJwX2RlbCYjMzQ7LAogICAgJiMzNDticl9tcnBfcmN2JiMzNDssCiAgICAmIzM0O2JyX21ycF9wcm9jZXNzJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGFuIGluY29ycmVjdCBzaXplIGNhbGN1bGF0aW9uIGluIGBicl9tcnBfYWxsb2NfdGVzdF9za2JgIHdoZXJlIGBzaXplb2Yob3VpKWAgKHBvaW50ZXIgc2l6ZSkgd2FzIHVzZWQgaW5zdGVhZCBvZiBgc2l6ZW9mKCpvdWkpYCAoc3RydWN0IHNpemUpLiBUaGlzIGFmZmVjdHMgdGhlIGxlbmd0aCBvZiB0aGUgYWxsb2NhdGVkL3BvcHVsYXRlZCBUTFYgaW4gTVJQIHRlc3QgcGFja2V0cy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBicmlkZ2UgTVJQIHByb3RvY29sIGltcGxlbWVudGF0aW9uIGFuZCBzaG91bGQgYmUgZnV6emVkIHRvIGVuc3VyZSBjb3JyZWN0IHBhY2tldCBjb25zdHJ1Y3Rpb24gYW5kIGhhbmRsaW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDA4OjU5PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgYzFiMDVlZDIzNDM2N2QxN2E2ZTIzMjA1ODNiZjA3ODhlM2EwNzEwOVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBTYXQgSnVsIDI1IDA4OjU5OjEyIDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL25ldC9icmlkZ2UvYnJfbXJwLmMgYi9uZXQvYnJpZGdlL2JyX21ycC5jXG5pbmRleCAzZjcxMjZhN2Q3MjAwMy4uMTc5ZDI0NzBiNzI0ODggMTAwNjQ0XG4tLS0gYS9uZXQvYnJpZGdlL2JyX21ycC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvYnJpZGdlL2JyX21ycC5jXG5AQCAtMjE1LDcgJiM0MzsyMTUsNyBAQCBzdGF0aWMgc3RydWN0IHNrX2J1ZmYgKmJyX21ycF9hbGxvY190ZXN0X3NrYihzdHJ1Y3QgYnJfbXJwICptcnAsXG4gXHRcdHN0cnVjdCBicl9tcnBfb3VpX2hkciAqb3VpID0gTlVMTDtcbiBcdFx0dTggbGVuZ3RoO1xuIFxuLVx0XHRsZW5ndGggPSBzaXplb2YoKnN1Yl9vcHQpICYjNDM7IHNpemVvZigqc3ViX3RsdikgJiM0Mzsgc2l6ZW9mKG91aSkgJiM0MztcbiYjNDM7XHRcdGxlbmd0aCA9IHNpemVvZigqc3ViX29wdCkgJiM0Mzsgc2l6ZW9mKCpzdWJfdGx2KSAmIzQzOyBzaXplb2YoKm91aSkgJiM0MztcbiBcdFx0XHRNUlBfT1BUX1BBRERJTkc7XG4gXHRcdGJyX21ycF9za2JfdGx2KHNrYiwgQlJfTVJQX1RMVl9IRUFERVJfT1BUSU9OLCBsZW5ndGgpO1xuIFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDA4OjU5PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjFtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtCUklER0VfTVJQJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7YnJfbXJwX3N0YXJ0X3Rlc3QmIzM0OywKICAgICYjMzQ7YnJfbXJwX2FkZCYjMzQ7LAogICAgJiMzNDticl9tcnBfc2V0X3Jpbmdfcm9sZSYjMzQ7LAogICAgJiMzNDticl9tcnBfc2V0X3Jpbmdfc3RhdGUmIzM0OywKICAgICYjMzQ7YnJfbXJwX3N0YXJ0X2luX3Rlc3QmIzM0OywKICAgICYjMzQ7YnJfbXJwX3NldF9pbl9yb2xlJiMzNDssCiAgICAmIzM0O2JyX21ycF9zZXRfaW5fc3RhdGUmIzM0OywKICAgICYjMzQ7YnJfbXJwX3NldF9wb3J0X3N0YXRlJiMzNDssCiAgICAmIzM0O2JyX21ycF9zZXRfcG9ydF9yb2xlJiMzNDssCiAgICAmIzM0O2JyX21ycF9kZWwmIzM0OywKICAgICYjMzQ7YnJfbXJwX3JjdiYjMzQ7LAogICAgJiMzNDticl9tcnBfcHJvY2VzcyYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhbiBpbmNvcnJlY3Qgc2l6ZSBjYWxjdWxhdGlvbiBpbiBgYnJfbXJwX2FsbG9jX3Rlc3Rfc2tiYCB3aGVyZSBgc2l6ZW9mKG91aSlgIChwb2ludGVyIHNpemUpIHdhcyB1c2VkIGluc3RlYWQgb2YgYHNpemVvZigqb3VpKWAgKHN0cnVjdCBzaXplKS4gVGhpcyBhZmZlY3RzIHRoZSBsZW5ndGggb2YgdGhlIGFsbG9jYXRlZC9wb3B1bGF0ZWQgVExWIGluIE1SUCB0ZXN0IHBhY2tldHMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgYnJpZGdlIE1SUCBwcm90b2NvbCBpbXBsZW1lbnRhdGlvbiBhbmQgc2hvdWxkIGJlIGZ1enplZCB0byBlbnN1cmUgY29ycmVjdCBwYWNrZXQgY29uc3RydWN0aW9uIGFuZCBoYW5kbGluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IGMxYjA1ZWQyMzQzNjdkMTdhNmUyMzIwNTgzYmYwNzg4ZTNhMDcxMDkKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgU2F0IEp1bCAyNSAwODo1OToxMiAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL25ldC9icmlkZ2UvYnJfbXJwLmMgYi9uZXQvYnJpZGdlL2JyX21ycC5jCmluZGV4IDNmNzEyNmE3ZDcyMDAzLi4xNzlkMjQ3MGI3MjQ4OCAxMDA2NDQKLS0tIGEvbmV0L2JyaWRnZS9icl9tcnAuYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvYnJpZGdlL2JyX21ycC5jCkBAIC0yMTUsNyAmIzQzOzIxNSw3IEBAIHN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqYnJfbXJwX2FsbG9jX3Rlc3Rfc2tiKHN0cnVjdCBicl9tcnAgKm1ycCwKIAkJc3RydWN0IGJyX21ycF9vdWlfaGRyICpvdWkgPSBOVUxMOwogCQl1OCBsZW5ndGg7CiAKLQkJbGVuZ3RoID0gc2l6ZW9mKCpzdWJfb3B0KSAmIzQzOyBzaXplb2YoKnN1Yl90bHYpICYjNDM7IHNpemVvZihvdWkpICYjNDM7CiYjNDM7CQlsZW5ndGggPSBzaXplb2YoKnN1Yl9vcHQpICYjNDM7IHNpemVvZigqc3ViX3RsdikgJiM0Mzsgc2l6ZW9mKCpvdWkpICYjNDM7CiAJCQlNUlBfT1BUX1BBRERJTkc7CiAJCWJyX21ycF9za2JfdGx2KHNrYiwgQlJfTVJQX1RMVl9IRUFERVJfT1BUSU9OLCBsZW5ndGgpOwogCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDA4OjU5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIwOTQKCQkJCQkJCW91dHB1dDogNDEKCQkJCQkJCXRob3VnaHRzOiAxMDgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgQnJpZGdlIE1SUCBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTt2ZSBnb3QgdGhpcyBwYXRjaCBhZmZlY3RpbmcgYG5ldC9icmlkZ2UvYnJfbXJwLmNgLCBhbmQgaXQgbG9va3MgbGlrZSBhIHNpemUgY2FsY3VsYXRpb24gYWRqdXN0bWVudCBpcyB0aGUga2V5IGhlcmUuIFNwZWNpZmljYWxseSwgdGhlIGNoYW5nZSBpbiBgYnJfbXJwX2FsbG9jX3Rlc3Rfc2tiYCBmcm9tIGBzaXplb2Yob3VpKWAgdG8gYHNpemVvZigqb3VpKWAgaW1tZWRpYXRlbHkgZmxhZ3MgbXkgYXR0ZW50aW9uLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UsIGRlZmluaXRlbHkgaW1wYWN0aW5nIHRoZSBsZW5ndGggb2YgYWxsb2NhdGVkIG9yIGNhbGN1bGF0ZWQgYnVmZmVycywgc28gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGltcGxpY2F0aW9ucyB0aG9yb3VnaGx5LgoKTXkgbmV4dCBzdGVwIGlzIGNsZWFyOiBJIG5lZWQgdG8gZGlnIGludG8gdGhlIHJlbGV2YW50IGZ1bmN0aW9ucyB3aXRoaW4gYG5ldC9icmlkZ2UvYnJfbXJwLmNgLiBJJiMzOTtsbCBiZSBtZXRpY3Vsb3VzbHkgZXhhbWluaW5nIGBicl9tcnBfYWxsb2NfdGVzdF9za2JgIGFuZCBgYnJfbXJwX3NrYl90bHZgLCBhcyB0aG9zZSBhcmUgdGhlIGNvcmUgYXJlYXMgd2hlcmUgdGhpcyBzaXplIG1vZGlmaWNhdGlvbiB3aWxsIG1hbmlmZXN0IGFuZCBwb3RlbnRpYWxseSBpbXBhY3QgYmVoYXZpb3IuIEdvdHRhIGlkZW50aWZ5ICp3aHkqIHRoaXMgY2hhbmdlIHdhcyBtYWRlIGFuZCB3aGF0IGNvbnNlcXVlbmNlcyBpdCBicmluZ3MuIFVuZGVyc3RhbmRpbmcgaG93IHRoZSBidWZmZXIgc2l6ZSBpbXBhY3RzIGRhdGEgc3RydWN0dXJlcyBhbmQgcHJvY2Vzc2luZyBpcyBwYXJhbW91bnQsIGVzcGVjaWFsbHkgd2hlbiBkZWFsaW5nIHdpdGggYnJpZGdpbmcgcHJvdG9jb2xzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDA4OjU5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2JyX21ycF9hbGxvY190ZXN0X3NrYiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9icmlkZ2UvYnJfbXJwLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L2JyaWRnZS9icl9tcnAuYz0xNzE9c3RhdGljIHZvaWQgYnJfbXJwX3NrYl9jb21tb24oc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGJyX21ycCAqbXJwKVxuLS1cbm5ldC9icmlkZ2UvYnJfbXJwLmMtMTgxLVxubmV0L2JyaWRnZS9icl9tcnAuYzoxODI6c3RhdGljIHN0cnVjdCBza19idWZmICpicl9tcnBfYWxsb2NfdGVzdF9za2Ioc3RydWN0IGJyX21ycCAqbXJwLFxubmV0L2JyaWRnZS9icl9tcnAuYy0xODMtXHRcdFx0XHRcdCAgICAgc3RydWN0IG5ldF9icmlkZ2VfcG9ydCAqcCxcbi0tXG5uZXQvYnJpZGdlL2JyX21ycC5jPTI3OT1zdGF0aWMgdm9pZCBicl9tcnBfdGVzdF93b3JrX2V4cGlyZWQoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxuLS1cbm5ldC9icmlkZ2UvYnJfbXJwLmMtMzExLVx0XHRpZiAoIW1ycC1cdTAwM2V0ZXN0X21vbml0b3IpIHtcbm5ldC9icmlkZ2UvYnJfbXJwLmM6MzEyOlx0XHRcdHNrYiA9IGJyX21ycF9hbGxvY190ZXN0X3NrYihtcnAsIHAsXG5uZXQvYnJpZGdlL2JyX21ycC5jLTMxMy1cdFx0XHRcdFx0XHQgICAgQlJfTVJQX1BPUlRfUk9MRV9QUklNQVJZKTtcbi0tXG5uZXQvYnJpZGdlL2JyX21ycC5jLTMyNy1cdFx0aWYgKCFtcnAtXHUwMDNldGVzdF9tb25pdG9yKSB7XG5uZXQvYnJpZGdlL2JyX21ycC5jOjMyODpcdFx0XHRza2IgPSBicl9tcnBfYWxsb2NfdGVzdF9za2IobXJwLCBwLFxubmV0L2JyaWRnZS9icl9tcnAuYy0zMjktXHRcdFx0XHRcdFx0ICAgIEJSX01SUF9QT1JUX1JPTEVfU0VDT05EQVJZKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAwODo1OTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyODMwCgkJCQkJCQlvdXRwdXQ6IDMwCgkJCQkJCQl0aG91Z2h0czogNTgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBNUlAgQWxsb2NhdGlvbiBUZXN0KioKCk9rYXksIHNvIGBicl9tcnBfYWxsb2NfdGVzdF9za2JgIGlzIHRyaWdnZXJlZCBieSBgYnJfbXJwX3Rlc3Rfd29ya19leHBpcmVkYC4gVGhhdCYjMzk7cyBwYXJ0IG9mIHRoZSBNZWRpYSBSZWR1bmRhbmN5IFByb3RvY29sIGJyaWRnZSBpbXBsZW1lbnRhdGlvbi4gTWFrZXMgc2Vuc2UuIEJlZm9yZSBJIGRpZyB0b28gZGVlcCBpbnRvIHRoZSBjb2RlIGl0c2VsZiwgSSYjMzk7bSBnb2luZyB0byB0YWtlIGEgcXVpY2sgbG9vayBhdCB0aGUgS2NvbmZpZyBmaWxlLiBJIG5lZWQgdG8gbWFrZSBzdXJlIE1SUCBpcyBhY3R1YWxseSBlbmFibGVkLCBhbmQgY2hlY2sgYW55IGNvbmZpZ3VyYXRpb24gb3B0aW9ucyByZWxhdGVkIHRvIGl0LiBVbmRlcnN0YW5kaW5nIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgd2lsbCBnaXZlIG1lIGEgYmV0dGVyIG92ZXJ2aWV3IG9mIHdoYXQgdG8gbG9vayBmb3IgaW4gdGhlIGFsbG9jYXRlZCBjb2RlLiBJdCYjMzk7bGwgZ2l2ZSBtZSBhIGZyYW1ld29yayB0byB1bmRlcnN0YW5kIHdoYXQgdGhlIGNvZGUgaXMgbWVhbnQgdG8gYWNjb21wbGlzaC4gTGV0IG1lIHF1aWNrbHkgc2NhbiB0aGF0IEtjb25maWcuLi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAwODo1OTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgQlJJREdFX01SUCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9icmlkZ2UvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvYnJpZGdlL0tjb25maWc9NTA9Y29uZmlnIEJSSURHRV9WTEFOX0ZJTFRFUklOR1xuLS1cbm5ldC9icmlkZ2UvS2NvbmZpZy02My1cbm5ldC9icmlkZ2UvS2NvbmZpZzo2NDpjb25maWcgQlJJREdFX01SUFxubmV0L2JyaWRnZS9LY29uZmlnLTY1LVx0Ym9vbCBcJiMzNDtNUlAgcHJvdG9jb2xcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAwODo1OTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMTQwCgkJCQkJCQlvdXRwdXQ6IDI5CgkJCQkJCQl0aG91Z2h0czogMTMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipBbmFseXppbmcgRGVwZW5kZW5jaWVzIGZvciBCUklER0VfTVJQKioKCk9rYXksIHNvIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBhcmNoaXRlY3R1cmUgYXJvdW5kIGBCUklER0VfTVJQYC4gSSBpbW1lZGlhdGVseSBzdGFydCB0aGlua2luZyBhYm91dCBpdHMgZGVwZW5kZW5jaWVzLiBXaGF0IG90aGVyIG1vZHVsZXMsIHNlcnZpY2VzLCBkYXRhIHN0cnVjdHVyZXMsIG9yIGV2ZW4gZXh0ZXJuYWwgc3lzdGVtcyBkb2VzIHRoaXMgcGFydGljdWxhciBwaWVjZSBvZiBjb2RlIHJlbHkgdXBvbj8gSSYjMzk7bSBlc3NlbnRpYWxseSB0cmFjaW5nIHRoZSBjYWxsIGdyYXBoLCBidXQgZnJvbSB0aGUgcGVyc3BlY3RpdmUgb2YgaG93IE1SUCAoTWF0ZXJpYWwgUmVxdWlyZW1lbnRzIFBsYW5uaW5nKSBpcyBzcGVjaWZpY2FsbHkgYmVpbmcgaGFuZGxlZCB3aXRoaW4gdGhlIGJyaWRnZS4gSXMgaXQgYSBjb3JlIGNhbGN1bGF0aW9uIGVuZ2luZSwgYSBkYXRhIGFkYXB0ZXIsIGFuIGludGVncmF0aW9uIGxheWVyLCBvciBzb21ldGhpbmcgZWxzZSBlbnRpcmVseT8gS25vd2luZyB0aGUgZGVwZW5kZW5jaWVzIHdpbGwgaGVscCBtZSBpbW1lZGlhdGVseSBncmFzcCBpdHMgaW1wYWN0IGFuZCBwaW5wb2ludCBwb3RlbnRpYWwgYXJlYXMgZm9yIG9wdGltaXphdGlvbiwgZGVidWdnaW5nLCBvciBmdXR1cmUgaW50ZWdyYXRpb24gZWZmb3J0cy4gVGhpcyBpcyB0aGUgZmlyc3QgcXVlc3Rpb24gSSBuZWVkIHRvIGFuc3dlci4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAwODo1OTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtCUklER0VfTVJQJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L2JyaWRnZS9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9icmlkZ2UvS2NvbmZpZz01MD1jb25maWcgQlJJREdFX1ZMQU5fRklMVEVSSU5HXG4tLVxubmV0L2JyaWRnZS9LY29uZmlnLTYzLVxubmV0L2JyaWRnZS9LY29uZmlnOjY0OmNvbmZpZyBCUklER0VfTVJQXG5uZXQvYnJpZGdlL0tjb25maWctNjUtXHRib29sIFwmIzM0O01SUCBwcm90b2NvbFwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDA4OjU5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM0MTQKCQkJCQkJCW91dHB1dDogMzMKCQkJCQkJCXRob3VnaHRzOiAxOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBhIHN1bW1hcnkgb2YgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyByZXF1ZXN0ZWQ6CgoqKk5hdmlnYXRpbmcgdGhlIEtlcm5lbCYjMzk7cyBOZXR3b3JrIEJyaWRnZSBDb25maWd1cmF0aW9uKioKCk9rYXksIHNvIEkmIzM5O20gZGlnZ2luZyBpbnRvIHRoZSBuZXR3b3JrIGJyaWRnZSBjb25maWd1cmF0aW9uLCBzcGVjaWZpY2FsbHkgd2l0aGluIHRoZSBrZXJuZWwuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byB6ZXJvIGluIG9uIGBuZXQvYnJpZGdlL0tjb25maWdgLiBUaGF0JiMzOTtzIHdoZXJlIEkmIzM5O2QgZXhwZWN0IHRvIGZpbmQgdGhlIGNvcmUgY29uZmlndXJhdGlvbiBvcHRpb25zIHJlbGF0ZWQgdG8gYnJpZGdpbmcuIEdpdmVuIG15IGZhbWlsaWFyaXR5IHdpdGggdGhlIGtlcm5lbCYjMzk7cyBzdHJ1Y3R1cmUsIEkgaW5zdGluY3RpdmVseSBnbyBzdHJhaWdodCB0byB0aGUgY29uZmlndXJhdGlvbiBmaWxlcy4gQW5kIHRvIHN0YXJ0LCBsZXQmIzM5O3MgbG9vayBhcm91bmQgbGluZSA2NCAtIHRoYXQgc2VlbXMgbGlrZSBhIHJlYXNvbmFibGUgcGxhY2UgdG8gc3RhcnQsIGFzIG9mdGVuIGltcG9ydGFudCBhbmQgZnVuZGFtZW50YWwgY29uZmlnIG9wdGlvbnMgYXJlIGluIHRoYXQgYXJlYSBvZiBhIGZpbGUuIFRoaXMmIzM5O2xsIGxpa2VseSBjb250YWluIHRoZSBtYWluIGBjb25maWdgIG9wdGlvbnMgYW5kIHBvc3NpYmx5IGRlcGVuZGVuY2llcyBmb3IgYnJpZGdlIGZ1bmN0aW9uYWxpdHksIGFuZCB0aGF0JiMzOTtzIGV4YWN0bHkgd2hhdCBJIG5lZWQgdG8gdW5kZXJzdGFuZC4gTGV0JiMzOTtzIHNlZSB3aGF0JiMzOTtzIHRoZXJlLi4uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDA4OjU5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7bmV0L2JyaWRnZS9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogNTAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMzAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICA1MDpcdGNvbmZpZyBCUklER0VfVkxBTl9GSUxURVJJTkdcbiAgNTE6XHRcdGJvb2wgXCYjMzQ7VkxBTiBmaWx0ZXJpbmdcJiMzNDtcbiAgNTI6XHRcdGRlcGVuZHMgb24gQlJJREdFXG4gIDUzOlx0XHRkZXBlbmRzIG9uIFZMQU5fODAyMVFcbiAgNTQ6XHRcdGRlZmF1bHQgblxuICA1NTpcdFx0aGVscFxuICA1NjpcdFx0ICBJZiB5b3Ugc2F5IFkgaGVyZSwgdGhlbiB0aGUgRXRoZXJuZXQgYnJpZGdlIHdpbGwgYmUgYWJsZSBzZWxlY3RpdmVseVxuICA1NzpcdFx0ICByZWNlaXZlIGFuZCBmb3J3YXJkIHRyYWZmaWMgYmFzZWQgb24gVkxBTiBpbmZvcm1hdGlvbiBpbiB0aGUgcGFja2V0XG4gIDU4Olx0XHQgIGFueSBWTEFOIGluZm9ybWF0aW9uIGNvbmZpZ3VyZWQgb24gdGhlIGJyaWRnZSBwb3J0IG9yIGJyaWRnZSBkZXZpY2UuXG4gIDU5Olx0XG4gIDYwOlx0XHQgIFNheSBOIHRvIGV4Y2x1ZGUgdGhpcyBzdXBwb3J0IGFuZCByZWR1Y2UgdGhlIGJpbmFyeSBzaXplLlxuICA2MTpcdFxuICA2MjpcdFx0ICBJZiB1bnN1cmUsIHNheSBZLlxuICA2MzpcdFxuICA2NDpcdGNvbmZpZyBCUklER0VfTVJQXG4gIDY1Olx0XHRib29sIFwmIzM0O01SUCBwcm90b2NvbFwmIzM0O1xuICA2NjpcdFx0ZGVwZW5kcyBvbiBCUklER0VcbiAgNjc6XHRcdGRlZmF1bHQgblxuICA2ODpcdFx0aGVscFxuICA2OTpcdFx0ICBJZiB5b3Ugc2F5IFkgaGVyZSwgdGhlbiB0aGUgRXRoZXJuZXQgYnJpZGdlIHdpbGwgYmUgYWJsZSB0byBydW4gTVJQXG4gIDcwOlx0XHQgIHByb3RvY29sIHRvIGRldGVjdCBsb29wc1xuICA3MTpcdFxuICA3MjpcdFx0ICBTYXkgTiB0byBleGNsdWRlIHRoaXMgc3VwcG9ydCBhbmQgcmVkdWNlIHRoZSBiaW5hcnkgc2l6ZS5cbiAgNzM6XHRcbiAgNzQ6XHRcdCAgSWYgdW5zdXJlLCBzYXkgTi5cbiAgNzU6XHRcbiAgNzY6XHRjb25maWcgQlJJREdFX0NGTVxuICA3NzpcdFx0Ym9vbCBcJiMzNDtDRk0gcHJvdG9jb2xcJiMzNDtcbiAgNzg6XHRcdGRlcGVuZHMgb24gQlJJREdFXG4gIDc5Olx0XHRoZWxwXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDA4OjU5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM5OTMKCQkJCQkJCW91dHB1dDogMzUKCQkJCQkJCXRob3VnaHRzOiA1NgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4KCioqRGVjb2RpbmcgdGhlIE1SUCBDb25maWd1cmF0aW9uIERlcGVuZGVuY3kqKgoKUmlnaHQsIHNvIHRoZSBjb25maWd1cmF0aW9uIGluIHF1ZXN0aW9uIGlzIGBCUklER0VfTVJQYC4gVGhhdCBpbW1lZGlhdGVseSB0ZWxscyBtZSBpdCYjMzk7cyByZWxhdGVkIHRvIHRoZSBicmlkZ2UgZnVuY3Rpb25hbGl0eSwgc3BlY2lmaWNhbGx5IHRoZSBNUlAgYXNwZWN0cy4gIEl0IGV4cGxpY2l0bHkgc3RhdGVzIGEgZGVwZW5kZW5jeSBvbiBgQlJJREdFYC4gVGhhdCYjMzk7cyBub3Qgc3VycHJpc2luZzsgTVJQIGxpa2VseSByZXF1aXJlcyB0aGUgY29yZSBicmlkZ2luZyBjb2RlIHRvIGJlIGZ1bmN0aW9uYWwgZmlyc3QuIE5vIHN1cnByaXNlcyB0aGVyZS4KCk5leHQsIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoZXJlIHRoZSBNUlAgY29kZSBpcyBraWNraW5nIGluLiBUaGUgbWVudGlvbiBvZiB0aGUgZnVuY3Rpb24gYGJyX21ycF9hbGxvY190ZXN0X3NrYmAgYmVpbmcgYHN0YXRpY2AgaXMgYSB1c2VmdWwgY2x1ZS4gQmVjYXVzZSBpdCYjMzk7cyBzdGF0aWMsIGl0JiMzOTtzIHNjb3BlZCB0byBpdHMgY29tcGlsYXRpb24gdW5pdCBhbmQgd29uJiMzOTt0IGJlIGRpcmVjdGx5IGV4cG9zZWQgYXMgYSBzeW1ib2wgaW4gdGhlIHN0YW5kYXJkIHN5bWJvbCB0YWJsZS4gIFRoYXQgbWVhbnMgSSBjYW4mIzM5O3QgcmVseSBvbiBgbm1gIG9yIHNpbWlsYXIgdG9vbHMgdG8gZmluZCB0aGUgZnVuY3Rpb24sIHNpbmNlIGl0IGhhcyBsaW1pdGVkIHZpc2liaWxpdHkgb3V0c2lkZSB0aGUgZmlsZS4gSXQgYWxzbyBtZWFucyBpdCBtYXkgYmUgaW5saW5lZC4KClRoZXJlZm9yZSwgSSBuZWVkIHRvIHRoaW5rIGFib3V0IHRoZSBtb3JlIGxpa2VseSBlbnRyeSBwb2ludHMgZm9yIHRoaXMgd2hvbGUgTVJQIHN1YnN5c3RlbS4gSSBuZWVkIHRvIGZvY3VzIG9uIHdoZXJlIHRoZSBNUlAgZnVuY3Rpb25hbGl0eSBpcyAqYWN0dWFsbHkqIGludm9rZWQuICBJIHNob3VsZCBzdGFydCBsb29raW5nIGZvciB0aGluZ3MgbGlrZSBuZXRsaW5rIGludGVyZmFjZSBoYW5kbGVycywgbW9kdWxlIGluaXRpYWxpemF0aW9uIGZ1bmN0aW9ucywgb3IgY2FsbGJhY2sgcm91dGluZXMgcmVnaXN0ZXJlZCB3aXRoIHRoZSBicmlkZ2UuIEkmIzM5O2xsIG5lZWQgdG8gbG9vayBmb3IgZnVuY3Rpb25zIHRoYXQgYXJlIG5vdCBzdGF0aWMsIHRoYXQgaW5pdGlhbGl6ZSB0aGUgTVJQLiAgT3IsIG1vcmUgc3BlY2lmaWNhbGx5LCBJIG5lZWQgdG8gZmluZCB0aGUgZW50cnkgcG9pbnRzICppbnRvKiB0aGUgTVJQIGNvZGUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDA4OjU5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2JyX21ycF8mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvYnJpZGdlL2JyX21ycC5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O1xuRnVsbCBvdXRwdXQgaXMgdG9vIGxvbmcsIHNob3dpbmcgNTAwIG91dCBvZiA1MjEgbGluZXMuXG5Vc2UgbW9yZSBwcmVjaXNlIGV4cHJlc3Npb24gaWYgcG9zc2libGUuXG5cbm5ldC9icmlkZ2UvYnJfbXJwLmM9Nz1zdGF0aWMgY29uc3QgdTggbXJwX2luX3Rlc3RfZG1hY1tFVEhfQUxFTl0gPSB7IDB4MSwgMHgxNSwgMHg0ZSwgMHgwLCAweDAsIDB4MyB9O1xubmV0L2JyaWRnZS9icl9tcnAuYy04LVxubmV0L2JyaWRnZS9icl9tcnAuYzo5OnN0YXRpYyBpbnQgYnJfbXJwX3Byb2Nlc3Moc3RydWN0IG5ldF9icmlkZ2VfcG9ydCAqcCwgc3RydWN0IHNrX2J1ZmYgKnNrYik7XG5uZXQvYnJpZGdlL2JyX21ycC5jLTEwLVxubmV0L2JyaWRnZS9icl9tcnAuYz0xMT1zdGF0aWMgc3RydWN0IGJyX2ZyYW1lX3R5cGUgbXJwX2ZyYW1lX3R5cGUgX19yZWFkX21vc3RseSA9IHtcbm5ldC9icmlkZ2UvYnJfbXJwLmMtMTItXHQudHlwZSA9IGNwdV90b19iZTE2KEVUSF9QX01SUCksXG5uZXQvYnJpZGdlL2JyX21ycC5jOjEzOlx0LmZyYW1lX2hhbmRsZXIgPSBicl9tcnBfcHJvY2Vzcyxcbm5ldC9icmlkZ2UvYnJfbXJwLmMtMTQtfTtcbm5ldC9icmlkZ2UvYnJfbXJwLmMtMTUtXG5uZXQvYnJpZGdlL2JyX21ycC5jOjE2OnN0YXRpYyBib29sIGJyX21ycF9pc19yaW5nX3BvcnQoc3RydWN0IG5ldF9icmlkZ2VfcG9ydCAqcF9wb3J0LFxubmV0L2JyaWRnZS9icl9tcnAuYy0xNy1cdFx0XHRcdHN0cnVjdCBuZXRfYnJpZGdlX3BvcnQgKnNfcG9ydCxcbi0tXG5uZXQvYnJpZGdlL2JyX21ycC5jLTI2LVxubmV0L2JyaWRnZS9icl9tcnAuYzoyNzpzdGF0aWMgYm9vbCBicl9tcnBfaXNfaW5fcG9ydChzdHJ1Y3QgbmV0X2JyaWRnZV9wb3J0ICppX3BvcnQsXG5uZXQvYnJpZGdlL2JyX21ycC5jLTI4LVx0XHRcdCAgICAgIHN0cnVjdCBuZXRfYnJpZGdlX3BvcnQgKnBvcnQpXG4tLVxubmV0L2JyaWRnZS9icl9tcnAuYy0zNS1cbm5ldC9icmlkZ2UvYnJfbXJwLmM6MzY6c3RhdGljIHN0cnVjdCBuZXRfYnJpZGdlX3BvcnQgKmJyX21ycF9nZXRfcG9ydChzdHJ1Y3QgbmV0X2JyaWRnZSAqYnIsXG5uZXQvYnJpZGdlL2JyX21ycC5jLTM3LVx0XHRcdFx0XHQgICAgICAgdTMyIGlmaW5kZXgpXG4tLVxubmV0L2JyaWRnZS9icl9tcnAuYy01MS1cbm5ldC9icmlkZ2UvYnJfbXJwLmM6NTI6c3RhdGljIHN0cnVjdCBicl9tcnAgKmJyX21ycF9maW5kX2lkKHN0cnVjdCBuZXRfYnJpZGdlICpiciwgdTMyIHJpbmdfaWQpXG5uZXQvYnJpZGdlL2JyX21ycC5jLTUzLXtcbi0tXG5uZXQvYnJpZGdlL2JyX21ycC5jLTY3LVxubmV0L2JyaWRnZS9icl9tcnAuYzo2ODpzdGF0aWMgc3RydWN0IGJyX21ycCAqYnJfbXJwX2ZpbmRfaW5faWQoc3RydWN0IG5ldF9icmlkZ2UgKmJyLCB1MzIgaW5faWQpXG5uZXQvYnJpZGdlL2JyX21ycC5jLTY5LXtcbi0tXG5uZXQvYnJpZGdlL2JyX21ycC5jLTgzLVxubmV0L2JyaWRnZS9icl9tcnAuYzo4NDpzdGF0aWMgYm9vbCBicl9tcnBfdW5pcXVlX2lmaW5kZXgoc3RydWN0IG5ldF9icmlkZ2UgKmJyLCB1MzIgaWZpbmRleClcbm5ldC9icmlkZ2UvYnJfbXJwLmMtODUte1xuLS1cbm5ldC9icmlkZ2UvYnJfbXJwLmMtMTA3LVxubmV0L2JyaWRnZS9icl9tcnAuYzoxMDg6c3RhdGljIHN0cnVjdCBicl9tcnAgKmJyX21ycF9maW5kX3BvcnQoc3RydWN0IG5ldF9icmlkZ2UgKmJyLFxubmV0L2JyaWRnZS9icl9tcnAuYy0xMDktXHRcdFx0XHQgICAgICAgc3RydWN0IG5ldF9icmlkZ2VfcG9ydCAqcClcbi0tXG5uZXQvYnJpZGdlL2JyX21ycC5jLTEyNi1cbm5ldC9icmlkZ2UvYnJfbXJwLmM6MTI3OnN0YXRpYyBpbnQgYnJfbXJwX25leHRfc2VxKHN0cnVjdCBicl9tcnAgKm1ycClcbm5ldC9icmlkZ2UvYnJfbXJwLmMtMTI4LXtcbi0tXG5uZXQvYnJpZGdlL2JyX21ycC5jLTEzMi1cbm5ldC9icmlkZ2UvYnJfbXJwLmM6MTMzOnN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqYnJfbXJwX3NrYl9hbGxvYyhzdHJ1Y3QgbmV0X2JyaWRnZV9wb3J0ICpwLFxubmV0L2JyaWRnZS9icl9tcnAuYy0xMzQtXHRcdFx0XHRcdGNvbnN0IHU4ICpzcmMsIGNvbnN0IHU4ICpkc3QpXG4tLVxubmV0L2JyaWRnZS9icl9tcnAuYy0xNTktXG5uZXQvYnJpZGdlL2JyX21ycC5jOjE2MDpzdGF0aWMgdm9pZCBicl9tcnBfc2tiX3RsdihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxubmV0L2JyaWRnZS9icl9tcnAuYzoxNjE6XHRcdFx0ICAgZW51bSBicl9tcnBfdGx2X2hlYWRlcl90eXBlIHR5cGUsXG5uZXQvYnJpZGdlL2JyX21ycC5jLTE2Mi1cdFx0XHQgICB1OCBsZW5ndGgpXG5uZXQvYnJpZGdlL2JyX21ycC5jLTE2My17XG5uZXQvYnJpZGdlL2JyX21ycC5jOjE2NDpcdHN0cnVjdCBicl9tcnBfdGx2X2hkciAqaGRyO1xubmV0L2JyaWRnZS9icl9tcnAuYy0xNjUtXG4tLVxubmV0L2JyaWRnZS9icl9tcnAuYy0xNzAtXG5uZXQvYnJpZGdlL2JyX21ycC5jOjE3MTpzdGF0aWMgdm9pZCBicl9tcnBfc2tiX2NvbW1vbihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgYnJfbXJwICptcnApXG5uZXQvYnJpZGdlL2JyX21ycC5jLTE3Mi17XG5uZXQvYnJpZGdlL2JyX21ycC5jOjE3MzpcdHN0cnVjdCBicl9tcnBfY29tbW9uX2hkciAqaGRyO1xubmV0L2JyaWRnZS9icl9tcnAuYy0xNzQtXG5uZXQvYnJpZGdlL2JyX21ycC5jOjE3NTpcdGJyX21ycF9za2JfdGx2KHNrYiwgQlJfTVJQX1RMVl9IRUFERVJfQ09NTU9OLCBzaXplb2YoKmhkcikpO1xubmV0L2JyaWRnZS9icl9tcnAuYy0xNzYtXG5uZXQvYnJpZGdlL2JyX21ycC5jLTE3Ny1cdGhkciA9IHNrYl9wdXQoc2tiLCBzaXplb2YoKmhkcikpO1xubmV0L2JyaWRnZS9icl9tcnAuYzoxNzg6XHRoZHItXHUwMDNlc2VxX2lkID0gY3B1X3RvX2JlMTYoYnJfbXJwX25leHRfc2VxKG1ycCkpO1xubmV0L2JyaWRnZS9icl9tcnAuYy0xNzktXHRtZW1zZXQoaGRyLVx1MDAzZWRvbWFpbiwgMHhmZiwgTVJQX0RPTUFJTl9VVUlEX0xFTkdUSCk7XG4tLVxubmV0L2JyaWRnZS9icl9tcnAuYy0xODEtXG5uZXQvYnJpZGdlL2JyX21ycC5jOjE4MjpzdGF0aWMgc3RydWN0IHNrX2J1ZmYgKmJyX21ycF9hbGxvY190ZXN0X3NrYihzdHJ1Y3QgYnJfbXJwICptcnAsXG5uZXQvYnJpZGdlL2JyX21ycC5jLTE4My1cdFx0XHRcdFx0ICAgICBzdHJ1Y3QgbmV0X2JyaWRnZV9wb3J0ICpwLFxubmV0L2JyaWRnZS9icl9tcnAuYzoxODQ6XHRcdFx0XHRcdCAgICAgZW51bSBicl9tcnBfcG9ydF9yb2xlX3R5cGUgcG9ydF9yb2xlKVxubmV0L2JyaWRnZS9icl9tcnAuYy0xODUte1xubmV0L2JyaWRnZS9icl9tcnAuYzoxODY6XHRzdHJ1Y3QgYnJfbXJwX3JpbmdfdGVzdF9oZHIgKmhkciA9IE5VTEw7XG5uZXQvYnJpZGdlL2JyX21ycC5jLTE4Ny1cdHN0cnVjdCBza19idWZmICpza2IgPSBOVUxMO1xuLS1cbm5ldC9icmlkZ2UvYnJfbXJwLmMtMTkxLVxubmV0L2JyaWRnZS9icl9tcnAuYzoxOTI6XHRza2IgPSBicl9tcnBfc2tiX2FsbG9jKHAsIHAtXHUwMDNlZGV2LVx1MDAzZWRldl9hZGRyLCBtcnBfdGVzdF9kbWFjKTtcbm5ldC9icmlkZ2UvYnJfbXJwLmMtMTkzLVx0aWYgKCFza2IpXG4tLVxubmV0L2JyaWRnZS9icl9tcnAuYy0xOTUtXG5uZXQvYnJpZGdlL2JyX21ycC5jOjE5NjpcdGJyX21ycF9za2JfdGx2KHNrYiwgQlJfTVJQX1RMVl9IRUFERVJfUklOR19URVNULCBzaXplb2YoKmhkcikpO1xubmV0L2JyaWRnZS9icl9tcnAuYy0xOTctXHRoZHIgPSBza2JfcHV0KHNrYiwgc2l6ZW9mKCpoZHIpKTtcbi0tXG5uZXQvYnJpZGdlL2JyX21ycC5jLTIwNS1cbm5ldC9icmlkZ2UvYnJfbXJwLmM6MjA2Olx0YnJfbXJwX3NrYl9jb21tb24oc2tiLCBtcnApO1xubmV0L2JyaWRnZS9icl9tcnAuYy0yMDctXG4tLVxubmV0L2JyaWRnZS9icl9tcnAuYy0yMTItXHRpZiAobXJwLVx1MDAzZXJpbmdfcm9sZSA9PSBCUl9NUlBfUklOR19ST0xFX01SQSkge1xubmV0L2JyaWRnZS9icl9tcnAuYzoyMTM6XHRcdHN0cnVjdCBicl9tcnBfc3ViX29wdGlvbjFfaGRyICpzdWJfb3B0ID0gTlVMTDtcbm5ldC9icmlkZ2UvYnJfbXJwLmM6MjE0Olx0XHRzdHJ1Y3QgYnJfbXJwX3Rsdl9oZHIgKnN1Yl90bHYgPSBOVUxMO1xubmV0L2JyaWRnZS9icl9tcnAuYzoyMTU6XHRcdHN0cnVjdCBicl9tcnBfb3VpX2hkciAqb3VpID0gTlVMTDtcbm5ldC9icmlkZ2UvYnJfbXJwLmMtMjE2LVx0XHR1OCBsZW5ndGg7XG4tLVxubmV0L2JyaWRnZS9icl9tcnAuYy0yMTktXHRcdFx0TVJQX09QVF9QQURESU5HO1xubmV0L2JyaWRnZS9icl9tcnAuYzoyMjA6XHRcdGJyX21ycF9za2JfdGx2KHNrYiwgQlJfTVJQX1RMVl9IRUFERVJfT1BUSU9OLCBsZW5ndGgpO1xubmV0L2JyaWRnZS9icl9tcnAuYy0yMjEtXG4tLVxubmV0L2JyaWRnZS9icl9tcnAuYy0yMzMtXG5uZXQvYnJpZGdlL2JyX21ycC5jOjIzNDpcdGJyX21ycF9za2JfdGx2KHNrYiwgQlJfTVJQX1RMVl9IRUFERVJfRU5ELCAweDApO1xubmV0L2JyaWRnZS9icl9tcnAuYy0yMzUtXG4tLVxubmV0L2JyaWRnZS9icl9tcnAuYy0yMzgtXG5uZXQvYnJpZGdlL2JyX21ycC5jOjIzOTpzdGF0aWMgc3RydWN0IHNrX2J1ZmYgKmJyX21ycF9hbGxvY19pbl90ZXN0X3NrYihzdHJ1Y3QgYnJfbXJwICptcnAsXG5uZXQvYnJpZGdlL2JyX21ycC5jLTI0MC1cdFx0XHRcdFx0XHRzdHJ1Y3QgbmV0X2JyaWRnZV9wb3J0ICpwLFxubmV0L2JyaWRnZS9icl9tcnAuYzoyNDE6XHRcdFx0XHRcdFx0ZW51bSBicl9tcnBfcG9ydF9yb2xlX3R5cGUgcG9ydF9yb2xlKVxubmV0L2JyaWRnZS9icl9tcnAuYy0yNDIte1xubmV0L2JyaWRnZS9icl9tcnAuYzoyNDM6XHRzdHJ1Y3QgYnJfbXJwX2luX3Rlc3RfaGRyICpoZHIgPSBOVUxMO1xubmV0L2JyaWRnZS9icl9tcnAuYy0yNDQtXHRzdHJ1Y3Qgc2tfYnVmZiAqc2tiID0gTlVMTDtcbi0tXG5uZXQvYnJpZGdlL2JyX21ycC5jLTI0OC1cbm5ldC9icmlkZ2UvYnJfbXJwLmM6MjQ5Olx0c2tiID0gYnJfbXJwX3NrYl9hbGxvYyhwLCBwLVx1MDAzZWRldi1cdTAwM2VkZXZfYWRkciwgbXJwX2luX3Rlc3RfZG1hYyk7XG5uZXQvYnJpZGdlL2JyX21ycC5jLTI1MC1cdGlmICghc2tiKVxuLS1cbm5ldC9icmlkZ2UvYnJfbXJwLmMtMjUyLVxubmV0L2JyaWRnZS9icl9tcnAuYzoyNTM6XHRicl9tcnBfc2tiX3Rsdihza2IsIEJSX01SUF9UTFZfSEVBREVSX0lOX1RFU1QsIHNpemVvZigqaGRyKSk7XG5uZXQvYnJpZGdlL2JyX21ycC5jLTI1NC1cdGhkciA9IHNrYl9wdXQoc2tiLCBzaXplb2YoKmhkcikpO1xuLS1cbm5ldC9icmlkZ2UvYnJfbXJwLmMtMjYyLVxubmV0L2JyaWRnZS9icl9tcnAuYzoyNjM6XHRicl9tcnBfc2tiX2NvbW1vbihza2IsIG1ycCk7XG5uZXQvYnJpZGdlL2JyX21ycC5jOjI2NDpcdGJyX21ycF9za2JfdGx2KHNrYiwgQlJfTVJQX1RMVl9IRUFERVJfRU5ELCAweDApO1xubmV0L2JyaWRnZS9icl9tcnAuYy0yNjUtXG4tLVxubmV0L2JyaWRnZS9icl9tcnAuYy0yNzgtICovXG5uZXQvYnJpZGdlL2JyX21ycC5jOjI3OTpzdGF0aWMgdm9pZCBicl9tcnBfdGVzdF93b3JrX2V4cGlyZWQoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxubmV0L2JyaWRnZS9icl9tcnAuYy0yODAte1xuLS1cbm5ldC9icmlkZ2UvYnJfbXJwLmMtMzExLVx0XHRpZiAoIW1ycC1cdTAwM2V0ZXN0X21vbml0b3IpIHtcbm5ldC9icmlkZ2UvYnJfbXJwLmM6MzEyOlx0XHRcdHNrYiA9IGJyX21ycF9hbGxvY190ZXN0X3NrYihtcnAsIHAsXG5uZXQvYnJpZGdlL2JyX21ycC5jLTMxMy1cdFx0XHRcdFx0XHQgICAgQlJfTVJQX1BPUlRfUk9MRV9QUklNQVJZKTtcbi0tXG5uZXQvYnJpZGdlL2JyX21ycC5jLTMyMS1cdFx0aWYgKG5vdGlmeV9vcGVuIFx1MDAyNlx1MDAyNiAhbXJwLVx1MDAzZXJpbmdfcm9sZV9vZmZsb2FkZWQpXG5uZXQvYnJpZGdlL2JyX21ycC5jOjMyMjpcdFx0XHRicl9tcnBfcmluZ19wb3J0X29wZW4ocC1cdTAwM2VkZXYsIHRydWUpO1xubmV0L2JyaWRnZS9icl9tcnAuYy0zMjMtXHR9XG4tLVxubmV0L2JyaWRnZS9icl9tcnAuYy0zMjctXHRcdGlmICghbXJwLVx1MDAzZXRlc3RfbW9uaXRvcikge1xubmV0L2JyaWRnZS9icl9tcnAuYzozMjg6XHRcdFx0c2tiID0gYnJfbXJwX2FsbG9jX3Rlc3Rfc2tiKG1ycCwgcCxcbm5ldC9icmlkZ2UvYnJfbXJwLmMtMzI5LVx0XHRcdFx0XHRcdCAgICBCUl9NUlBfUE9SVF9ST0xFX1NFQ09OREFSWSk7XG4tLVxubmV0L2JyaWRnZS9icl9tcnAuYy0zMzctXHRcdGlmIChub3RpZnlfb3BlbiBcdTAwMjZcdTAwMjYgIW1ycC1cdTAwM2VyaW5nX3JvbGVfb2ZmbG9hZGVkKVxubmV0L2JyaWRnZS9icl9tcnAuYzozMzg6XHRcdFx0YnJfbXJwX3JpbmdfcG9ydF9vcGVuKHAtXHUwMDNlZGV2LCB0cnVlKTtcbm5ldC9icmlkZ2UvYnJfbXJwLmMtMzM5LVx0fVxuLS1cbm5ldC9icmlkZ2UvYnJfbXJwLmMtMzUxLSAqL1xubmV0L2JyaWRnZS9icl9tcnAuYzozNTI6c3RhdGljIHZvaWQgYnJfbXJwX2luX3Rlc3Rfd29ya19leHBpcmVkKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcbm5ldC9icmlkZ2UvYnJfbXJwLmMtMzUzLXtcbi0tXG5uZXQvYnJpZGdlL2JyX21ycC5jLTM3Ny1cdGlmIChwKSB7XG5uZXQvYnJpZGdlL2JyX21ycC5jOjM3ODpcdFx0c2tiID0gYnJfbXJwX2FsbG9jX2luX3Rlc3Rfc2tiKG1ycCwgcCxcbm5ldC9icmlkZ2UvYnJfbXJwLmMtMzc5LVx0XHRcdFx0XHQgICAgICAgQlJfTVJQX1BPUlRfUk9MRV9QUklNQVJZKTtcbi0tXG5uZXQvYnJpZGdlL2JyX21ycC5jLTM4Ni1cdFx0aWYgKG5vdGlmeV9vcGVuIFx1MDAyNlx1MDAyNiAhbXJwLVx1MDAzZWluX3JvbGVfb2ZmbG9hZGVkKVxubmV0L2JyaWRnZS9icl9tcnAuYzozODc6XHRcdFx0YnJfbXJwX2luX3BvcnRfb3BlbihwLVx1MDAzZWRldiwgdHJ1ZSk7XG5uZXQvYnJpZGdlL2JyX21ycC5jLTM4OC1cdH1cbi0tXG5uZXQvYnJpZGdlL2JyX21ycC5jLTM5MS1cdGlmIChwKSB7XG5uZXQvYnJpZGdlL2JyX21ycC5jOjM5MjpcdFx0c2tiID0gYnJfbXJwX2FsbG9jX2luX3Rlc3Rfc2tiKG1ycCwgcCxcbm5ldC9icmlkZ2UvYnJfbXJwLmMtMzkzLVx0XHRcdFx0XHQgICAgICAgQlJfTVJQX1BPUlRfUk9MRV9TRUNPTkRBUlkpO1xuLS1cbm5ldC9icmlkZ2UvYnJfbXJwLmMtNDAwLVx0XHRpZiAobm90aWZ5X29wZW4gXHUwMDI2XHUwMDI2ICFtcnAtXHUwMDNlaW5fcm9sZV9vZmZsb2FkZWQpXG5uZXQvYnJpZGdlL2JyX21ycC5jOjQwMTpcdFx0XHRicl9tcnBfaW5fcG9ydF9vcGVuKHAtXHUwMDNlZGV2LCB0cnVlKTtcbm5ldC9icmlkZ2UvYnJfbXJwLmMtNDAyLVx0fVxuLS1cbm5ldC9icmlkZ2UvYnJfbXJwLmMtNDA1LVx0aWYgKHApIHtcbm5ldC9icmlkZ2UvYnJfbXJwLmM6NDA2Olx0XHRza2IgPSBicl9tcnBfYWxsb2NfaW5fdGVzdF9za2IobXJwLCBwLFxubmV0L2JyaWRnZS9icl9tcnAuYy00MDctXHRcdFx0XHRcdCAgICAgICBCUl9NUlBfUE9SVF9ST0xFX0lOVEVSKTtcbi0tXG5uZXQvYnJpZGdlL2JyX21ycC5jLTQxNC1cdFx0aWYgKG5vdGlmeV9vcGVuIFx1MDAyNlx1MDAyNiAhbXJwLVx1MDAzZWluX3JvbGVfb2ZmbG9hZGVkKVxubmV0L2JyaWRnZS9icl9tcnAuYzo0MTU6XHRcdFx0YnJfbXJwX2luX3BvcnRfb3BlbihwLVx1MDAzZWRldiwgdHJ1ZSk7XG5uZXQvYnJpZGdlL2JyX21ycC5jLTQxNi1cdH1cbi0tXG5uZXQvYnJpZGdlL2JyX21ycC5jLTQyNy0gKi9cbm5ldC9icmlkZ2UvYnJfbXJwLmM6NDI4OnN0YXRpYyB2b2lkIGJyX21ycF9kZWxfaW1wbChzdHJ1Y3QgbmV0X2JyaWRnZSAqYnIsIHN0cnVjdCBicl9tcnAgKm1ycClcbm5ldC9icmlkZ2UvYnJfbXJwLmMtNDI5LXtcbi0tXG5uZXQvYnJpZGdlL2JyX21ycC5jLTQzNC1cdGNhbmNlbF9kZWxheWVkX3dvcmtfc3luYyhcdTAwMjZtcnAtXHUwMDNldGVzdF93b3JrKTtcbm5ldC9icmlkZ2UvYnJfbXJwLmM6NDM1Olx0YnJfbXJwX3N3aXRjaGRldl9zZW5kX3JpbmdfdGVzdChiciwgbXJwLCAwLCAwLCAwLCAwKTtcbm5ldC9icmlkZ2UvYnJfbXJwLmMtNDM2LVxuLS1cbm5ldC9icmlkZ2UvYnJfbXJwLmMtNDM4LVx0Y2FuY2VsX2RlbGF5ZWRfd29ya19zeW5jKFx1MDAyNm1ycC1cdTAwM2Vpbl90ZXN0X3dvcmspO1xubmV0L2JyaWRnZS9icl9tcnAuYzo0Mzk6XHRicl9tcnBfc3dpdGNoZGV2X3NlbmRfaW5fdGVzdChiciwgbXJwLCAwLCAwLCAwKTtcbm5ldC9icmlkZ2UvYnJfbXJwLmMtNDQwLVxubmV0L2JyaWRnZS9icl9tcnAuYy00NDEtXHQvKiBEaXNhYmxlIHRoZSByb2xlcyAqL1xubmV0L2JyaWRnZS9icl9tcnAuYzo0NDI6XHRicl9tcnBfc3dpdGNoZGV2X3NldF9yaW5nX3JvbGUoYnIsIG1ycCwgQlJfTVJQX1JJTkdfUk9MRV9ESVNBQkxFRCk7XG5uZXQvYnJpZGdlL2JyX21ycC5jLTQ0My1cdHAgPSBydG5sX2RlcmVmZXJlbmNlKG1ycC1cdTAwM2VpX3BvcnQpO1xubmV0L2JyaWRnZS9icl9tcnAuYy00NDQtXHRpZiAocClcbm5ldC9icmlkZ2UvYnJfbXJwLmM6NDQ1Olx0XHRicl9tcnBfc3dpdGNoZGV2X3NldF9pbl9yb2xlKGJyLCBtcnAsIG1ycC1cdTAwM2Vpbl9pZCwgbXJwLVx1MDAzZXJpbmdfaWQsXG5uZXQvYnJpZGdlL2JyX21ycC5jLTQ0Ni1cdFx0XHRcdFx0ICAgICBCUl9NUlBfSU5fUk9MRV9ESVNBQkxFRCk7XG5uZXQvYnJpZGdlL2JyX21ycC5jLTQ0Ny1cbm5ldC9icmlkZ2UvYnJfbXJwLmM6NDQ4Olx0YnJfbXJwX3N3aXRjaGRldl9kZWwoYnIsIG1ycCk7XG5uZXQvYnJpZGdlL2JyX21ycC5jLTQ0OS1cbi0tXG5uZXQvYnJpZGdlL2JyX21ycC5jLTQ1OC1cdFx0c3Bpbl91bmxvY2tfYmgoXHUwMDI2YnItXHUwMDNlbG9jayk7XG5uZXQvYnJpZGdlL2JyX21ycC5jOjQ1OTpcdFx0YnJfbXJwX3BvcnRfc3dpdGNoZGV2X3NldF9zdGF0ZShwLCBzdGF0ZSk7XG5uZXQvYnJpZGdlL2JyX21ycC5jLTQ2MC1cdFx0cmN1X2Fzc2lnbl9wb2ludGVyKG1ycC1cdTAwM2VwX3BvcnQsIE5VTEwpO1xuLS1cbm5ldC9icmlkZ2UvYnJfbXJwLmMtNDcwLVx0XHRzcGluX3VubG9ja19iaChcdTAwMjZici1cdTAwM2Vsb2NrKTtcbm5ldC9icmlkZ2UvYnJfbXJwLmM6NDcxOlx0XHRicl9tcnBfcG9ydF9zd2l0Y2hkZXZfc2V0X3N0YXRlKHAsIHN0YXRlKTtcbm5ldC9icmlkZ2UvYnJfbXJwLmMtNDcyLVx0XHRyY3VfYXNzaWduX3BvaW50ZXIobXJwLVx1MDAzZXNfcG9ydCwgTlVMTCk7XG4tLVxubmV0L2JyaWRnZS9icl9tcnAuYy00ODItXHRcdHNwaW5fdW5sb2NrX2JoKFx1MDAyNmJyLVx1MDAzZWxvY2spO1xubmV0L2JyaWRnZS9icl9tcnAuYzo0ODM6XHRcdGJyX21ycF9wb3J0X3N3aXRjaGRldl9zZXRfc3RhdGUocCwgc3RhdGUpO1xubmV0L2JyaWRnZS9icl9tcnAuYy00ODQtXHRcdHJjdV9hc3NpZ25fcG9pbnRlcihtcnAtXHUwMDNlaV9wb3J0LCBOVUxMKTtcbi0tXG5uZXQvYnJpZGdlL2JyX21ycC5jLTQ5Ni0gKi9cbm5ldC9icmlkZ2UvYnJfbXJwLmM6NDk3OmludCBicl9tcnBfYWRkKHN0cnVjdCBuZXRfYnJpZGdlICpiciwgc3RydWN0IGJyX21ycF9pbnN0YW5jZSAqaW5zdGFuY2UpXG5uZXQvYnJpZGdlL2JyX21ycC5jLTQ5OC17XG4tLVxubmV0L2JyaWRnZS9icl9tcnAuYy01MDUtXHQgKi9cbm5ldC9icmlkZ2UvYnJfbXJwLmM6NTA2Olx0bXJwID0gYnJfbXJwX2ZpbmRfaWQoYnIsIGluc3RhbmNlLVx1MDAzZXJpbmdfaWQpO1xubmV0L2JyaWRnZS9icl9tcnAuYy01MDctXHRpZiAobXJwKVxuLS1cbm5ldC9icmlkZ2UvYnJfbXJwLmMtNTA5LVxubmV0L2JyaWRnZS9icl9tcnAuYzo1MTA6XHRpZiAoIWJyX21ycF9nZXRfcG9ydChiciwgaW5zdGFuY2UtXHUwMDNlcF9pZmluZGV4KSB8fFxubmV0L2JyaWRnZS9icl9tcnAuYzo1MTE6XHQgICAgIWJyX21ycF9nZXRfcG9ydChiciwgaW5zdGFuY2UtXHUwMDNlc19pZmluZGV4KSlcbm5ldC9icmlkZ2UvYnJfbXJwLmMtNTEyLVx0XHRyZXR1cm4gLUVJTlZBTDtcbi0tXG5uZXQvYnJpZGdlL2JyX21ycC5jLTUxNC1cdC8qIEl0IGlzIG5vdCBwb3NzaWJsZSB0byBoYXZlIHRoZSBzYW1lIHBvcnQgcGFydCBvZiBtdWx0aXBsZSByaW5ncyAqL1xubmV0L2JyaWRnZS9icl9tcnAuYzo1MTU6XHRpZiAoIWJyX21ycF91bmlxdWVfaWZpbmRleChiciwgaW5zdGFuY2UtXHUwMDNlcF9pZmluZGV4KSB8fFxubmV0L2JyaWRnZS9icl9tcnAuYzo1MTY6XHQgICAgIWJyX21ycF91bmlxdWVfaWZpbmRleChiciwgaW5zdGFuY2UtXHUwMDNlc19pZmluZGV4KSlcbm5ldC9icmlkZ2UvYnJfbXJwLmMtNTE3LVx0XHRyZXR1cm4gLUVJTlZBTDtcbi0tXG5uZXQvYnJpZGdlL2JyX21ycC5jLTUyNS1cbm5ldC9icmlkZ2UvYnJfbXJwLmM6NTI2Olx0cCA9IGJyX21ycF9nZXRfcG9ydChiciwgaW5zdGFuY2UtXHUwMDNlcF9pZmluZGV4KTtcbm5ldC9icmlkZ2UvYnJfbXJwLmMtNTI3LVx0c3Bpbl9sb2NrX2JoKFx1MDAyNmJyLVx1MDAzZWxvY2spO1xuLS1cbm5ldC9icmlkZ2UvYnJfbXJwLmMtNTMyLVxubmV0L2JyaWRnZS9icl9tcnAuYzo1MzM6XHRwID0gYnJfbXJwX2dldF9wb3J0KGJyLCBpbnN0YW5jZS1cdTAwM2VzX2lmaW5kZXgpO1xubmV0L2JyaWRnZS9icl9tcnAuYy01MzQtXHRzcGluX2xvY2tfYmgoXHUwMDI2YnItXHUwMDNlbG9jayk7XG4tLVxubmV0L2JyaWRnZS9icl9tcnAuYy01NDItXG5uZXQvYnJpZGdlL2JyX21ycC5jOjU0MzpcdElOSVRfREVMQVlFRF9XT1JLKFx1MDAyNm1ycC1cdTAwM2V0ZXN0X3dvcmssIGJyX21ycF90ZXN0X3dvcmtfZXhwaXJlZCk7XG5uZXQvYnJpZGdlL2JyX21ycC5jOjU0NDpcdElOSVRfREVMQVlFRF9XT1JLKFx1MDAyNm1ycC1cdTAwM2Vpbl90ZXN0X3dvcmssIGJyX21ycF9pbl90ZXN0X3dvcmtfZXhwaXJlZCk7XG5uZXQvYnJpZGdlL2JyX21ycC5jLTU0NS1cdGhsaXN0X2FkZF90YWlsX3JjdShcdTAwMjZtcnAtXHUwMDNlbGlzdCwgXHUwMDI2YnItXHUwMDNlbXJwX2xpc3QpO1xubmV0L2JyaWRnZS9icl9tcnAuYy01NDYtXG5uZXQvYnJpZGdlL2JyX21ycC5jOjU0NzpcdGVyciA9IGJyX21ycF9zd2l0Y2hkZXZfYWRkKGJyLCBtcnApO1xubmV0L2JyaWRnZS9icl9tcnAuYy01NDgtXHRpZiAoZXJyKVxuLS1cbm5ldC9icmlkZ2UvYnJfbXJwLmMtNTUzLWRlbGV0ZV9tcnA6XG5uZXQvYnJpZGdlL2JyX21ycC5jOjU1NDpcdGJyX21ycF9kZWxfaW1wbChiciwgbXJwKTtcbm5ldC9icmlkZ2UvYnJfbXJwLmMtNTU1LVxuLS1cbm5ldC9icmlkZ2UvYnJfbXJwLmMtNTYxLSAqL1xubmV0L2JyaWRnZS9icl9tcnAuYzo1NjI6dm9pZCBicl9tcnBfcG9ydF9kZWwoc3RydWN0IG5ldF9icmlkZ2UgKmJyLCBzdHJ1Y3QgbmV0X2JyaWRnZV9wb3J0ICpwKVxubmV0L2JyaWRnZS9icl9tcnAuYy01NjMte1xubmV0L2JyaWRnZS9icl9tcnAuYzo1NjQ6XHRzdHJ1Y3QgYnJfbXJwICptcnAgPSBicl9tcnBfZmluZF9wb3J0KGJyLCBwKTtcbm5ldC9icmlkZ2UvYnJfbXJwLmMtNTY1LVxuLS1cbm5ldC9icmlkZ2UvYnJfbXJwLmMtNTY5LVxubmV0L2JyaWRnZS9icl9tcnAuYzo1NzA6XHRicl9tcnBfZGVsX2ltcGwoYnIsIG1ycCk7XG5uZXQvYnJpZGdlL2JyX21ycC5jLTU3MS19XG4tLVxubmV0L2JyaWRnZS9icl9tcnAuYy01NzUtICovXG5uZXQvYnJpZGdlL2JyX21ycC5jOjU3NjppbnQgYnJfbXJwX2RlbChzdHJ1Y3QgbmV0X2JyaWRnZSAqYnIsIHN0cnVjdCBicl9tcnBfaW5zdGFuY2UgKmluc3RhbmNlKVxubmV0L2JyaWRnZS9icl9tcnAuYy01Nzcte1xubmV0L2JyaWRnZS9icl9tcnAuYzo1Nzg6XHRzdHJ1Y3QgYnJfbXJwICptcnAgPSBicl9tcnBfZmluZF9pZChiciwgaW5zdGFuY2UtXHUwMDNlcmluZ19pZCk7XG5uZXQvYnJpZGdlL2JyX21ycC5jLTU3OS1cbi0tXG5uZXQvYnJpZGdlL2JyX21ycC5jLTU4Mi1cbm5ldC9icmlkZ2UvYnJfbXJwLmM6NTgzOlx0YnJfbXJwX2RlbF9pbXBsKGJyLCBtcnApO1xubmV0L2JyaWRnZS9icl9tcnAuYy01ODQtXG4tLVxubmV0L2JyaWRnZS9icl9tcnAuYy01OTAtICovXG5uZXQvYnJpZGdlL2JyX21ycC5jOjU5MTppbnQgYnJfbXJwX3NldF9wb3J0X3N0YXRlKHN0cnVjdCBuZXRfYnJpZGdlX3BvcnQgKnAsXG5uZXQvYnJpZGdlL2JyX21ycC5jOjU5MjpcdFx0XHQgIGVudW0gYnJfbXJwX3BvcnRfc3RhdGVfdHlwZSBzdGF0ZSlcbm5ldC9icmlkZ2UvYnJfbXJwLmMtNTkzLXtcbi0tXG5uZXQvYnJpZGdlL2JyX21ycC5jLTYwOC1cbm5ldC9icmlkZ2UvYnJfbXJwLmM6NjA5Olx0YnJfbXJwX3BvcnRfc3dpdGNoZGV2X3NldF9zdGF0ZShwLCBwb3J0X3N0YXRlKTtcbm5ldC9icmlkZ2UvYnJfbXJwLmMtNjEwLVxuLS1cbm5ldC9icmlkZ2UvYnJfbXJwLmMtNjE2LSAqL1xubmV0L2JyaWRnZS9icl9tcnAuYzo2MTc6aW50IGJyX21ycF9zZXRfcG9ydF9yb2xlKHN0cnVjdCBuZXRfYnJpZGdlX3BvcnQgKnAsXG5uZXQvYnJpZGdlL2JyX21ycC5jOjYxODpcdFx0XHQgZW51bSBicl9tcnBfcG9ydF9yb2xlX3R5cGUgcm9sZSlcbm5ldC9icmlkZ2UvYnJfbXJwLmMtNjE5LXtcbi0tXG5uZXQvYnJpZGdlL2JyX21ycC5jLTYyNC1cbm5ldC9icmlkZ2UvYnJfbXJwLmM6NjI1Olx0bXJwID0gYnJfbXJwX2ZpbmRfcG9ydChwLVx1MDAzZWJyLCBwKTtcbm5ldC9icmlkZ2UvYnJfbXJwLmMtNjI2LVxuLS1cbm5ldC9icmlkZ2UvYnJfbXJwLmMtNjQwLVxubmV0L2JyaWRnZS9icl9tcnAuYzo2NDE6XHRicl9tcnBfcG9ydF9zd2l0Y2hkZXZfc2V0X3JvbGUocCwgcm9sZSk7XG5uZXQvYnJpZGdlL2JyX21ycC5jLTY0Mi1cbi0tXG5uZXQvYnJpZGdlL2JyX21ycC5jLTY0OC0gKi9cbm5ldC9icmlkZ2UvYnJfbXJwLmM6NjQ5OmludCBicl9tcnBfc2V0X3Jpbmdfc3RhdGUoc3RydWN0IG5ldF9icmlkZ2UgKmJyLFxubmV0L2JyaWRnZS9icl9tcnAuYzo2NTA6XHRcdFx0ICBzdHJ1Y3QgYnJfbXJwX3Jpbmdfc3RhdGUgKnN0YXRlKVxubmV0L2JyaWRnZS9icl9tcnAuYy02NTEte1xubmV0L2JyaWRnZS9icl9tcnAuYzo2NTI6XHRzdHJ1Y3QgYnJfbXJwICptcnAgPSBicl9tcnBfZmluZF9pZChiciwgc3RhdGUtXHUwMDNlcmluZ19pZCk7XG5uZXQvYnJpZGdlL2JyX21ycC5jLTY1My1cbi0tXG5uZXQvYnJpZGdlL2JyX21ycC5jLTY2MS1cbm5ldC9icmlkZ2UvYnJfbXJwLmM6NjYyOlx0YnJfbXJwX3N3aXRjaGRldl9zZXRfcmluZ19zdGF0ZShiciwgbXJwLCBzdGF0ZS1cdTAwM2VyaW5nX3N0YXRlKTtcbm5ldC9icmlkZ2UvYnJfbXJwLmMtNjYzLVxuLS1cbm5ldC9icmlkZ2UvYnJfbXJwLmMtNjcwLSAqL1xubmV0L2JyaWRnZS9icl9tcnAuYzo2NzE6aW50IGJyX21ycF9zZXRfcmluZ19yb2xlKHN0cnVjdCBuZXRfYnJpZGdlICpicixcbm5ldC9icmlkZ2UvYnJfbXJwLmM6NjcyOlx0XHRcdCBzdHJ1Y3QgYnJfbXJwX3Jpbmdfcm9sZSAqcm9sZSlcbm5ldC9icmlkZ2UvYnJfbXJwLmMtNjczLXtcbm5ldC9icmlkZ2UvYnJfbXJwLmM6Njc0Olx0c3RydWN0IGJyX21ycCAqbXJwID0gYnJfbXJwX2ZpbmRfaWQoYnIsIHJvbGUtXHUwMDNlcmluZ19pZCk7XG5uZXQvYnJpZGdlL2JyX21ycC5jOjY3NTpcdGVudW0gYnJfbXJwX2h3X3N1cHBvcnQgc3VwcG9ydDtcbm5ldC9icmlkZ2UvYnJfbXJwLmMtNjc2LVxuLS1cbm5ldC9icmlkZ2UvYnJfbXJwLmMtNjgyLVx0LyogSWYgdGhlcmUgaXMgYW4gZXJyb3IganVzdCBiYWlsZWQgb3V0ICovXG5uZXQvYnJpZGdlL2JyX21ycC5jOjY4MzpcdHN1cHBvcnQgPSBicl9tcnBfc3dpdGNoZGV2X3NldF9yaW5nX3JvbGUoYnIsIG1ycCwgcm9sZS1cdTAwM2VyaW5nX3JvbGUpO1xubmV0L2JyaWRnZS9icl9tcnAuYy02ODQtXHRpZiAoc3VwcG9ydCA9PSBCUl9NUlBfTk9ORSlcbi0tXG5uZXQvYnJpZGdlL2JyX21ycC5jLTcwMS0gKi9cbm5ldC9icmlkZ2UvYnJfbXJwLmM6NzAyOmludCBicl9tcnBfc3RhcnRfdGVzdChzdHJ1Y3QgbmV0X2JyaWRnZSAqYnIsXG5uZXQvYnJpZGdlL2JyX21ycC5jOjcwMzpcdFx0ICAgICAgc3RydWN0IGJyX21ycF9zdGFydF90ZXN0ICp0ZXN0KVxubmV0L2JyaWRnZS9icl9tcnAuYy03MDQte1xubmV0L2JyaWRnZS9icl9tcnAuYzo3MDU6XHRzdHJ1Y3QgYnJfbXJwICptcnAgPSBicl9tcnBfZmluZF9pZChiciwgdGVzdC1cdTAwM2VyaW5nX2lkKTtcbm5ldC9icmlkZ2UvYnJfbXJwLmM6NzA2Olx0ZW51bSBicl9tcnBfaHdfc3VwcG9ydCBzdXBwb3J0O1xubmV0L2JyaWRnZS9icl9tcnAuYy03MDctXG4tLVxubmV0L2JyaWRnZS9icl9tcnAuYy03MTMtXHQgKi9cbm5ldC9icmlkZ2UvYnJfbXJwLmM6NzE0Olx0c3VwcG9ydCA9IGJyX21ycF9zd2l0Y2hkZXZfc2VuZF9yaW5nX3Rlc3QoYnIsIG1ycCwgdGVzdC1cdTAwM2VpbnRlcnZhbCxcbm5ldC9icmlkZ2UvYnJfbXJwLmMtNzE1LVx0XHRcdFx0XHRcdCAgdGVzdC1cdTAwM2VtYXhfbWlzcywgdGVzdC1cdTAwM2VwZXJpb2QsXG4tLVxubmV0L2JyaWRnZS9icl9tcnAuYy03MzYtICovXG5uZXQvYnJpZGdlL2JyX21ycC5jOjczNzppbnQgYnJfbXJwX3NldF9pbl9zdGF0ZShzdHJ1Y3QgbmV0X2JyaWRnZSAqYnIsIHN0cnVjdCBicl9tcnBfaW5fc3RhdGUgKnN0YXRlKVxubmV0L2JyaWRnZS9icl9tcnAuYy03Mzgte1xubmV0L2JyaWRnZS9icl9tcnAuYzo3Mzk6XHRzdHJ1Y3QgYnJfbXJwICptcnAgPSBicl9tcnBfZmluZF9pbl9pZChiciwgc3RhdGUtXHUwMDNlaW5faWQpO1xubmV0L2JyaWRnZS9icl9tcnAuYy03NDAtXG4tLVxubmV0L2JyaWRnZS9icl9tcnAuYy03NDgtXG5uZXQvYnJpZGdlL2JyX21ycC5jOjc0OTpcdGJyX21ycF9zd2l0Y2hkZXZfc2V0X2luX3N0YXRlKGJyLCBtcnAsIHN0YXRlLVx1MDAzZWluX3N0YXRlKTtcbm5ldC9icmlkZ2UvYnJfbXJwLmMtNzUwLVxuLS1cbm5ldC9icmlkZ2UvYnJfbXJwLmMtNzU3LSAqL1xubmV0L2JyaWRnZS9icl9tcnAuYzo3NTg6aW50IGJyX21ycF9zZXRfaW5fcm9sZShzdHJ1Y3QgbmV0X2JyaWRnZSAqYnIsIHN0cnVjdCBicl9tcnBfaW5fcm9sZSAqcm9sZSlcbm5ldC9icmlkZ2UvYnJfbXJwLmMtNzU5LXtcbm5ldC9icmlkZ2UvYnJfbXJwLmM6NzYwOlx0c3RydWN0IGJyX21ycCAqbXJwID0gYnJfbXJwX2ZpbmRfaWQoYnIsIHJvbGUtXHUwMDNlcmluZ19pZCk7XG5uZXQvYnJpZGdlL2JyX21ycC5jOjc2MTpcdGVudW0gYnJfbXJwX2h3X3N1cHBvcnQgc3VwcG9ydDtcbm5ldC9icmlkZ2UvYnJfbXJwLmMtNzYyLVx0c3RydWN0IG5ldF9icmlkZ2VfcG9ydCAqcDtcbi0tXG5uZXQvYnJpZGdlL2JyX21ycC5jLTc2Ni1cbm5ldC9icmlkZ2UvYnJfbXJwLmM6NzY3Olx0aWYgKCFicl9tcnBfZ2V0X3BvcnQoYnIsIHJvbGUtXHUwMDNlaV9pZmluZGV4KSlcbm5ldC9icmlkZ2UvYnJfbXJwLmMtNzY4LVx0XHRyZXR1cm4gLUVJTlZBTDtcbi0tXG5uZXQvYnJpZGdlL2JyX21ycC5jLTc3OS1cdFx0Y2FuY2VsX2RlbGF5ZWRfd29ya19zeW5jKFx1MDAyNm1ycC1cdTAwM2Vpbl90ZXN0X3dvcmspO1xubmV0L2JyaWRnZS9icl9tcnAuYzo3ODA6XHRcdGJyX21ycF9zd2l0Y2hkZXZfc2VuZF9pbl90ZXN0KGJyLCBtcnAsIDAsIDAsIDApO1xubmV0L2JyaWRnZS9icl9tcnAuYy03ODEtXG4tLVxubmV0L2JyaWRnZS9icl9tcnAuYy03ODgtXHRcdHNwaW5fdW5sb2NrX2JoKFx1MDAyNmJyLVx1MDAzZWxvY2spO1xubmV0L2JyaWRnZS9icl9tcnAuYzo3ODk6XHRcdGJyX21ycF9wb3J0X3N3aXRjaGRldl9zZXRfc3RhdGUocCwgc3RhdGUpO1xubmV0L2JyaWRnZS9icl9tcnAuYy03OTAtXHRcdHJjdV9hc3NpZ25fcG9pbnRlcihtcnAtXHUwMDNlaV9wb3J0LCBOVUxMKTtcbi0tXG5uZXQvYnJpZGdlL2JyX21ycC5jLTc5OC1cdC8qIEl0IGlzIG5vdCBwb3NzaWJsZSB0byBoYXZlIHRoZSBzYW1lIHBvcnQgcGFydCBvZiBtdWx0aXBsZSByaW5ncyAqL1xubmV0L2JyaWRnZS9icl9tcnAuYzo3OTk6XHRpZiAoIWJyX21ycF91bmlxdWVfaWZpbmRleChiciwgcm9sZS1cdTAwM2VpX2lmaW5kZXgpKVxubmV0L2JyaWRnZS9icl9tcnAuYy04MDAtXHRcdHJldHVybiAtRUlOVkFMO1xuLS1cbm5ldC9icmlkZ2UvYnJfbXJwLmMtODA4LVxubmV0L2JyaWRnZS9icl9tcnAuYzo4MDk6XHRwID0gYnJfbXJwX2dldF9wb3J0KGJyLCByb2xlLVx1MDAzZWlfaWZpbmRleCk7XG5uZXQvYnJpZGdlL2JyX21ycC5jLTgxMC1cdHNwaW5fbG9ja19iaChcdTAwMjZici1cdTAwM2Vsb2NrKTtcbi0tXG5uZXQvYnJpZGdlL2JyX21ycC5jLTgxOS1cdC8qIElmIHRoZXJlIGlzIGFuIGVycm9yIGp1c3QgYmFpbGVkIG91dCAqL1xubmV0L2JyaWRnZS9icl9tcnAuYzo4MjA6XHRzdXBwb3J0ID0gYnJfbXJwX3N3aXRjaGRldl9zZXRfaW5fcm9sZShiciwgbXJwLCByb2xlLVx1MDAzZWluX2lkLFxubmV0L2JyaWRnZS9icl9tcnAuYy04MjEtXHRcdFx0XHRcdCAgICAgICByb2xlLVx1MDAzZXJpbmdfaWQsIHJvbGUtXHUwMDNlaW5fcm9sZSk7XG4tLVxubmV0L2JyaWRnZS9icl9tcnAuYy04MzktICovXG5uZXQvYnJpZGdlL2JyX21ycC5jOjg0MDppbnQgYnJfbXJwX3N0YXJ0X2luX3Rlc3Qoc3RydWN0IG5ldF9icmlkZ2UgKmJyLFxubmV0L2JyaWRnZS9icl9tcnAuYzo4NDE6XHRcdFx0IHN0cnVjdCBicl9tcnBfc3RhcnRfaW5fdGVzdCAqaW5fdGVzdClcbm5ldC9icmlkZ2UvYnJfbXJwLmMtODQyLXtcbm5ldC9icmlkZ2UvYnJfbXJwLmM6ODQzOlx0c3RydWN0IGJyX21ycCAqbXJwID0gYnJfbXJwX2ZpbmRfaW5faWQoYnIsIGluX3Rlc3QtXHUwMDNlaW5faWQpO1xubmV0L2JyaWRnZS9icl9tcnAuYzo4NDQ6XHRlbnVtIGJyX21ycF9od19zdXBwb3J0IHN1cHBvcnQ7XG5uZXQvYnJpZGdlL2JyX21ycC5jLTg0NS1cbi0tXG5uZXQvYnJpZGdlL2JyX21ycC5jLTg1NC1cdCAqL1xubmV0L2JyaWRnZS9icl9tcnAuYzo4NTU6XHRzdXBwb3J0ID0gIGJyX21ycF9zd2l0Y2hkZXZfc2VuZF9pbl90ZXN0KGJyLCBtcnAsIGluX3Rlc3QtXHUwMDNlaW50ZXJ2YWwsXG5uZXQvYnJpZGdlL2JyX21ycC5jLTg1Ni1cdFx0XHRcdFx0XHQgaW5fdGVzdC1cdTAwM2VtYXhfbWlzcyxcbi0tXG5uZXQvYnJpZGdlL2JyX21ycC5jLTg3NC0vKiBEZXRlcm1pbmUgaWYgdGhlIGZyYW1lIHR5cGUgaXMgYSByaW5nIGZyYW1lICovXG5uZXQvYnJpZGdlL2JyX21ycC5jOjg3NTpzdGF0aWMgYm9vbCBicl9tcnBfcmluZ19mcmFtZShzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxubmV0L2JyaWRnZS9icl9tcnAuYy04NzYte1xubmV0L2JyaWRnZS9icl9tcnAuYzo4Nzc6XHRjb25zdCBzdHJ1Y3QgYnJfbXJwX3Rsdl9oZHIgKmhkcjtcbm5ldC9icmlkZ2UvYnJfbXJwLmM6ODc4Olx0c3RydWN0IGJyX21ycF90bHZfaGRyIF9oZHI7XG5uZXQvYnJpZGdlL2JyX21ycC5jLTg3OS1cbi0tXG5uZXQvYnJpZGdlL2JyX21ycC5jLTg5NC0vKiBEZXRlcm1pbmUgaWYgdGhlIGZyYW1lIHR5cGUgaXMgYW4gaW50ZXJjb25uZWN0IGZyYW1lICovXG5uZXQvYnJpZGdlL2JyX21ycC5jOjg5NTpzdGF0aWMgYm9vbCBicl9tcnBfaW5fZnJhbWUoc3RydWN0IHNrX2J1ZmYgKnNrYilcbm5ldC9icmlkZ2UvYnJfbXJwLmMtODk2LXtcbm5ldC9icmlkZ2UvYnJfbXJwLmM6ODk3Olx0Y29uc3Qgc3RydWN0IGJyX21ycF90bHZfaGRyICpoZHI7XG5uZXQvYnJpZGdlL2JyX21ycC5jOjg5ODpcdHN0cnVjdCBicl9tcnBfdGx2X2hkciBfaGRyO1xubmV0L2JyaWRnZS9icl9tcnAuYy04OTktXG4tLVxubmV0L2JyaWRnZS9icl9tcnAuYy05MTctICovXG5uZXQvYnJpZGdlL2JyX21ycC5jOjkxODpzdGF0aWMgdm9pZCBicl9tcnBfbXJtX3Byb2Nlc3Moc3RydWN0IGJyX21ycCAqbXJwLCBzdHJ1Y3QgbmV0X2JyaWRnZV9wb3J0ICpwb3J0LFxubmV0L2JyaWRnZS9icl9tcnAuYy05MTktXHRcdFx0ICAgICAgIHN0cnVjdCBza19idWZmICpza2IpXG5uZXQvYnJpZGdlL2JyX21ycC5jLTkyMC17XG5uZXQvYnJpZGdlL2JyX21ycC5jOjkyMTpcdGNvbnN0IHN0cnVjdCBicl9tcnBfdGx2X2hkciAqaGRyO1xubmV0L2JyaWRnZS9icl9tcnAuYzo5MjI6XHRzdHJ1Y3QgYnJfbXJwX3Rsdl9oZHIgX2hkcjtcbm5ldC9icmlkZ2UvYnJfbXJwLmMtOTIzLVxuLS1cbm5ldC9icmlkZ2UvYnJfbXJwLmMtOTM5LVx0aWYgKG1ycC1cdTAwM2VyaW5nX3N0YXRlICE9IEJSX01SUF9SSU5HX1NUQVRFX0NMT1NFRClcbm5ldC9icmlkZ2UvYnJfbXJwLmM6OTQwOlx0XHRicl9tcnBfcmluZ19wb3J0X29wZW4ocG9ydC1cdTAwM2VkZXYsIGZhbHNlKTtcbm5ldC9icmlkZ2UvYnJfbXJwLmMtOTQxLX1cbi0tXG5uZXQvYnJpZGdlL2JyX21ycC5jLTk0My0vKiBEZXRlcm1pbmUgaWYgdGhlIHRlc3QgaGRyIGhhcyBhIGJldHRlciBwcmlvcml0eSB0aGFuIHRoZSBub2RlICovXG5uZXQvYnJpZGdlL2JyX21ycC5jOjk0NDpzdGF0aWMgYm9vbCBicl9tcnBfdGVzdF9iZXR0ZXJfdGhhbl9vd24oc3RydWN0IGJyX21ycCAqbXJwLFxubmV0L2JyaWRnZS9icl9tcnAuYy05NDUtXHRcdFx0XHRcdHN0cnVjdCBuZXRfYnJpZGdlICpicixcbm5ldC9icmlkZ2UvYnJfbXJwLmM6OTQ2Olx0XHRcdFx0XHRjb25zdCBzdHJ1Y3QgYnJfbXJwX3JpbmdfdGVzdF9oZHIgKmhkcilcbm5ldC9icmlkZ2UvYnJfbXJwLmMtOTQ3LXtcbi0tXG5uZXQvYnJpZGdlL2JyX21ycC5jLTk2MS0gKi9cbm5ldC9icmlkZ2UvYnJfbXJwLmM6OTYyOnN0YXRpYyB2b2lkIGJyX21ycF9tcmFfcHJvY2VzcyhzdHJ1Y3QgYnJfbXJwICptcnAsIHN0cnVjdCBuZXRfYnJpZGdlICpicixcbm5ldC9icmlkZ2UvYnJfbXJwLmMtOTYzLVx0XHRcdCAgICAgICBzdHJ1Y3QgbmV0X2JyaWRnZV9wb3J0ICpwb3J0LFxuLS1cbm5ldC9icmlkZ2UvYnJfbXJwLmMtOTY1LXtcbm5ldC9icmlkZ2UvYnJfbXJwLmM6OTY2Olx0Y29uc3Qgc3RydWN0IGJyX21ycF9yaW5nX3Rlc3RfaGRyICp0ZXN0X2hkcjtcbm5ldC9icmlkZ2UvYnJfbXJwLmM6OTY3Olx0c3RydWN0IGJyX21ycF9yaW5nX3Rlc3RfaGRyIF90ZXN0X2hkcjtcbm5ldC9icmlkZ2UvYnJfbXJwLmM6OTY4Olx0Y29uc3Qgc3RydWN0IGJyX21ycF90bHZfaGRyICpoZHI7XG5uZXQvYnJpZGdlL2JyX21ycC5jOjk2OTpcdHN0cnVjdCBicl9tcnBfdGx2X2hkciBfaGRyO1xubmV0L2JyaWRnZS9icl9tcnAuYy05NzAtXG4tLVxubmV0L2JyaWRnZS9icl9tcnAuYy05ODktXHQgKi9cbm5ldC9icmlkZ2UvYnJfbXJwLmM6OTkwOlx0aWYgKGJyX21ycF90ZXN0X2JldHRlcl90aGFuX293bihtcnAsIGJyLCB0ZXN0X2hkcikpXG5uZXQvYnJpZGdlL2JyX21ycC5jLTk5MS1cdFx0bXJwLVx1MDAzZXRlc3RfY291bnRfbWlzcyA9IDA7XG4tLVxubmV0L2JyaWRnZS9icl9tcnAuYy05OTctICovXG5uZXQvYnJpZGdlL2JyX21ycC5jOjk5ODpzdGF0aWMgYm9vbCBicl9tcnBfbWltX3Byb2Nlc3Moc3RydWN0IGJyX21ycCAqbXJwLCBzdHJ1Y3QgbmV0X2JyaWRnZV9wb3J0ICpwb3J0LFxubmV0L2JyaWRnZS9icl9tcnAuYy05OTktXHRcdFx0ICAgICAgIHN0cnVjdCBza19idWZmICpza2IpXG5uZXQvYnJpZGdlL2JyX21ycC5jLTEwMDAte1xubmV0L2JyaWRnZS9icl9tcnAuYzoxMDAxOlx0Y29uc3Qgc3RydWN0IGJyX21ycF9pbl90ZXN0X2hkciAqaW5faGRyO1xubmV0L2JyaWRnZS9icl9tcnAuYzoxMDAyOlx0c3RydWN0IGJyX21ycF9pbl90ZXN0X2hkciBfaW5faGRyO1xubmV0L2JyaWRnZS9icl9tcnAuYzoxMDAzOlx0Y29uc3Qgc3RydWN0IGJyX21ycF90bHZfaGRyICpoZHI7XG5uZXQvYnJpZGdlL2JyX21ycC5jOjEwMDQ6XHRzdHJ1Y3QgYnJfbXJwX3Rsdl9oZHIgX2hkcjtcbm5ldC9icmlkZ2UvYnJfbXJwLmMtMTAwNS1cbi0tXG5uZXQvYnJpZGdlL2JyX21ycC5jLTEwMjgtXHRpZiAobXJwLVx1MDAzZWluX3N0YXRlICE9IEJSX01SUF9JTl9TVEFURV9DTE9TRUQpXG5uZXQvYnJpZGdlL2JyX21ycC5jOjEwMjk6XHRcdGJyX21ycF9pbl9wb3J0X29wZW4ocG9ydC1cdTAwM2VkZXYsIGZhbHNlKTtcbm5ldC9icmlkZ2UvYnJfbXJwLmMtMTAzMC1cbi0tXG5uZXQvYnJpZGdlL2JyX21ycC5jLTEwMzYtICovXG5uZXQvYnJpZGdlL2JyX21ycC5jOjEwMzc6c3RhdGljIHU4IGJyX21ycF9nZXRfZnJhbWVfdHlwZShzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxubmV0L2JyaWRnZS9icl9tcnAuYy0xMDM4LXtcbm5ldC9icmlkZ2UvYnJfbXJwLmM6MTAzOTpcdGNvbnN0IHN0cnVjdCBicl9tcnBfdGx2X2hkciAqaGRyO1xubmV0L2JyaWRnZS9icl9tcnAuYzoxMDQwOlx0c3RydWN0IGJyX21ycF90bHZfaGRyIF9oZHI7XG5uZXQvYnJpZGdlL2JyX21ycC5jLTEwNDEtXG4tLVxubmV0L2JyaWRnZS9icl9tcnAuYy0xMDUxLVxubmV0L2JyaWRnZS9icl9tcnAuYzoxMDUyOnN0YXRpYyBib29sIGJyX21ycF9tcm1fYmVoYXZpb3VyKHN0cnVjdCBicl9tcnAgKm1ycClcbm5ldC9icmlkZ2UvYnJfbXJwLmMtMTA1My17XG4tLVxubmV0L2JyaWRnZS9icl9tcnAuYy0xMDYwLVxubmV0L2JyaWRnZS9icl9tcnAuYzoxMDYxOnN0YXRpYyBib29sIGJyX21ycF9tcmNfYmVoYXZpb3VyKHN0cnVjdCBicl9tcnAgKm1ycClcbm5ldC9icmlkZ2UvYnJfbXJwLmMtMTA2Mi17XG4tLVxubmV0L2JyaWRnZS9icl9tcnAuYy0xMDczLSAqL1xubmV0L2JyaWRnZS9icl9tcnAuYzoxMDc0OnN0YXRpYyBpbnQgYnJfbXJwX3JjdihzdHJ1Y3QgbmV0X2JyaWRnZV9wb3J0ICpwLFxubmV0L2JyaWRnZS9icl9tcnAuYy0xMDc1LVx0XHQgICAgICBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuLS1cbm5ldC9icmlkZ2UvYnJfbXJwLmMtMTA4Ni1cdGJyID0gcC1cdTAwM2Vicjtcbm5ldC9icmlkZ2UvYnJfbXJwLmM6MTA4NzpcdG1ycCA9ICBicl9tcnBfZmluZF9wb3J0KGJyLCBwKTtcbm5ldC9icmlkZ2UvYnJfbXJwLmMtMTA4OC1cdGlmICh1bmxpa2VseSghbXJwKSlcbi0tXG5uZXQvYnJpZGdlL2JyX21ycC5jLTExMDMtXHQgKi9cbm5ldC9icmlkZ2UvYnJfbXJwLmM6MTEwNDpcdGlmIChicl9tcnBfcmluZ19mcmFtZShza2IpKSB7XG5uZXQvYnJpZGdlL2JyX21ycC5jLTExMDUtXHRcdC8qIElmIHRoZSByb2xlIGlzIE1STSB0aGVuIGRvbiYjMzk7dCBmb3J3YXJkIHRoZSBmcmFtZXMgKi9cbm5ldC9icmlkZ2UvYnJfbXJwLmMtMTEwNi1cdFx0aWYgKG1ycC1cdTAwM2VyaW5nX3JvbGUgPT0gQlJfTVJQX1JJTkdfUk9MRV9NUk0pIHtcbm5ldC9icmlkZ2UvYnJfbXJwLmM6MTEwNzpcdFx0XHRicl9tcnBfbXJtX3Byb2Nlc3MobXJwLCBwLCBza2IpO1xubmV0L2JyaWRnZS9icl9tcnAuYy0xMTA4LVx0XHRcdGdvdG8gbm9fZm9yd2FyZDtcbi0tXG5uZXQvYnJpZGdlL2JyX21ycC5jLTExMTUtXHRcdFx0aWYgKCFtcnAtXHUwMDNldGVzdF9tb25pdG9yKSB7XG5uZXQvYnJpZGdlL2JyX21ycC5jOjExMTY6XHRcdFx0XHRicl9tcnBfbXJtX3Byb2Nlc3MobXJwLCBwLCBza2IpO1xubmV0L2JyaWRnZS9icl9tcnAuYy0xMTE3LVx0XHRcdFx0Z290byBub19mb3J3YXJkO1xuLS1cbm5ldC9icmlkZ2UvYnJfbXJwLmMtMTExOS1cbm5ldC9icmlkZ2UvYnJfbXJwLmM6MTEyMDpcdFx0XHRicl9tcnBfbXJhX3Byb2Nlc3MobXJwLCBiciwgcCwgc2tiKTtcbm5ldC9icmlkZ2UvYnJfbXJwLmMtMTEyMS1cdFx0fVxuLS1cbm5ldC9icmlkZ2UvYnJfbXJwLmMtMTEyNS1cbm5ldC9icmlkZ2UvYnJfbXJwLmM6MTEyNjpcdGlmIChicl9tcnBfaW5fZnJhbWUoc2tiKSkge1xubmV0L2JyaWRnZS9icl9tcnAuYzoxMTI3Olx0XHR1OCBpbl90eXBlID0gYnJfbXJwX2dldF9mcmFtZV90eXBlKHNrYik7XG5uZXQvYnJpZGdlL2JyX21ycC5jLTExMjgtXG4tLVxubmV0L2JyaWRnZS9icl9tcnAuYy0xMTM0LVx0XHQgKi9cbm5ldC9icmlkZ2UvYnJfbXJwLmM6MTEzNTpcdFx0aWYgKGJyX21ycF9pc19yaW5nX3BvcnQocF9wb3J0LCBzX3BvcnQsIHApIFx1MDAyNlx1MDAyNlxubmV0L2JyaWRnZS9icl9tcnAuYy0xMTM2LVx0XHQgICAgcC1cdTAwM2VzdGF0ZSA9PSBCUl9TVEFURV9CTE9DS0lORyBcdTAwMjZcdTAwMjZcbi0tXG5uZXQvYnJpZGdlL2JyX21ycC5jLTExNDMtXHRcdCAqL1xubmV0L2JyaWRnZS9icl9tcnAuYzoxMTQ0Olx0XHRpZiAoYnJfbXJwX21ybV9iZWhhdmlvdXIobXJwKSBcdTAwMjZcdTAwMjZcbm5ldC9icmlkZ2UvYnJfbXJwLmM6MTE0NTpcdFx0ICAgIGJyX21ycF9pc19yaW5nX3BvcnQocF9wb3J0LCBzX3BvcnQsIHApIFx1MDAyNlx1MDAyNlxubmV0L2JyaWRnZS9icl9tcnAuYy0xMTQ2LVx0XHQgICAgKHNfcG9ydC1cdTAwM2VzdGF0ZSAhPSBCUl9TVEFURV9GT1JXQVJESU5HIHx8XG4tLVxubmV0L2JyaWRnZS9icl9tcnAuYy0xMTU1LVx0XHQgKi9cbm5ldC9icmlkZ2UvYnJfbXJwLmM6MTE1NjpcdFx0aWYgKGJyX21ycF9tcmNfYmVoYXZpb3VyKG1ycCkgXHUwMDI2XHUwMDI2XG5uZXQvYnJpZGdlL2JyX21ycC5jLTExNTctXHRcdCAgICBtcnAtXHUwMDNlaW5fcm9sZSA9PSBCUl9NUlBfSU5fUk9MRV9ESVNBQkxFRClcbi0tXG5uZXQvYnJpZGdlL2JyX21ycC5jLTExNjQtXHRcdFx0XHQgKi9cbm5ldC9icmlkZ2UvYnJfbXJwLmM6MTE2NTpcdFx0XHRcdGlmIChicl9tcnBfbWltX3Byb2Nlc3MobXJwLCBwLCBza2IpKSB7XG5uZXQvYnJpZGdlL2JyX21ycC5jLTExNjYtXHRcdFx0XHRcdGdvdG8gbm9fZm9yd2FyZDtcbm5ldC9icmlkZ2UvYnJfbXJwLmMtMTE2Ny1cdFx0XHRcdH0gZWxzZSB7XG5uZXQvYnJpZGdlL2JyX21ycC5jOjExNjg6XHRcdFx0XHRcdGlmIChicl9tcnBfaXNfcmluZ19wb3J0KHBfcG9ydCwgc19wb3J0LFxubmV0L2JyaWRnZS9icl9tcnAuYy0xMTY5LVx0XHRcdFx0XHRcdFx0XHRwKSlcbi0tXG5uZXQvYnJpZGdlL2JyX21ycC5jLTExNzEtXG5uZXQvYnJpZGdlL2JyX21ycC5jOjExNzI6XHRcdFx0XHRcdGlmIChicl9tcnBfaXNfaW5fcG9ydChpX3BvcnQsIHApKVxubmV0L2JyaWRnZS9icl9tcnAuYy0xMTczLVx0XHRcdFx0XHRcdGdvdG8gbm9fZm9yd2FyZDtcbi0tXG5uZXQvYnJpZGdlL2JyX21ycC5jLTExODEtXHRcdFx0XHQgKi9cbm5ldC9icmlkZ2UvYnJfbXJwLmM6MTE4MjpcdFx0XHRcdGlmIChicl9tcnBfaXNfcmluZ19wb3J0KHBfcG9ydCwgc19wb3J0LCBwKSlcbm5ldC9icmlkZ2UvYnJfbXJwLmMtMTE4My1cdFx0XHRcdFx0aV9kc3QgPSBOVUxMO1xubmV0L2JyaWRnZS9icl9tcnAuYy0xMTg0LVxubmV0L2JyaWRnZS9icl9tcnAuYzoxMTg1Olx0XHRcdFx0aWYgKGJyX21ycF9pc19pbl9wb3J0KGlfcG9ydCwgcCkpXG5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMDg6NTk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTU3MjgKCQkJCQkJCW91dHB1dDogMzIKCQkJCQkJCXRob3VnaHRzOiAxNjMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBNUlAgTmV0bGluayBJbnRlcmZhY2UqKgoKT2theSwgc28gSSYjMzk7bSBkaXZpbmcgaW50byB0aGlzIE1SUCBpbXBsZW1lbnRhdGlvbiwgYW5kIGl0IGxvb2tzIGxpa2UgdGhlIGtleSBlbnRyeSBwb2ludHMgZm9yIE5ldGxpbmsgaW50ZXJhY3Rpb25zIGFyZSB0aGVzZSBmdW5jdGlvbnM6IGBicl9tcnBfYWRkYCwgYGJyX21ycF9kZWxgLCBgYnJfbXJwX3NldF9wb3J0X3N0YXRlYCwgYGJyX21ycF9zZXRfcG9ydF9yb2xlYCwgYGJyX21ycF9zZXRfcmluZ19zdGF0ZWAsIGBicl9tcnBfc2V0X3Jpbmdfcm9sZWAsIGBicl9tcnBfc3RhcnRfdGVzdGAsIGBicl9tcnBfc2V0X2luX3N0YXRlYCwgYGJyX21ycF9zZXRfaW5fcm9sZWAsIGFuZCBgYnJfbXJwX3N0YXJ0X2luX3Rlc3RgLiBPYnZpb3VzbHksIHRoZXNlIGFyZSB0cmlnZ2VyZWQgYnkgTmV0bGluayBtZXNzYWdlcywgd2hpY2ggaXMgc3RhbmRhcmQuCgpUbyBnZXQgYSBiZXR0ZXIgaGFuZGxlIG9uIHRoZSBhcmNoaXRlY3R1cmUsIG15IG5leHQgc3RlcCBpcyB0byBmaWd1cmUgb3V0IGV4YWN0bHkgaG93IHRoZXNlIGZ1bmN0aW9ucyBhcmUgaW52b2tlZC4gSSYjMzk7bSBnb2luZyB0byBkaWcgaW50byB0aGUgTmV0bGluayBjb2RlIHRvIHNlZSB0aGUgbWVzc2FnZSBoYW5kbGVycy4gSSBleHBlY3QgdG8gZmluZCB0aGUgcmVsZXZhbnQgY29kZSBpbiBlaXRoZXIgYG5ldC9icmlkZ2UvYnJfbmV0bGluay5jYCBvciwgbW9yZSBsaWtlbHkgZ2l2ZW4gdGhlIG5hbWluZywgYG5ldC9icmlkZ2UvYnJfbXJwX25ldGxpbmsuY2AuIFRoYXQgc2hvdWxkIHByb3ZpZGUgdGhlIG5lY2Vzc2FyeSBjb250ZXh0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAwODo1OTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDticl9tcnBfc3RhcnRfdGVzdCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9icmlkZ2UvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9icmlkZ2UvYnJfbXJwLmM9NjcxPWludCBicl9tcnBfc2V0X3Jpbmdfcm9sZShzdHJ1Y3QgbmV0X2JyaWRnZSAqYnIsXG4tLVxubmV0L2JyaWRnZS9icl9tcnAuYy03MDEtICovXG5uZXQvYnJpZGdlL2JyX21ycC5jOjcwMjppbnQgYnJfbXJwX3N0YXJ0X3Rlc3Qoc3RydWN0IG5ldF9icmlkZ2UgKmJyLFxubmV0L2JyaWRnZS9icl9tcnAuYzo3MDM6XHRcdCAgICAgIHN0cnVjdCBicl9tcnBfc3RhcnRfdGVzdCAqdGVzdClcbm5ldC9icmlkZ2UvYnJfbXJwLmMtNzA0LXtcbi0tXG5uZXQvYnJpZGdlL2JyX21ycF9uZXRsaW5rLmM9MTk1PXN0YXRpYyBjb25zdCBzdHJ1Y3QgbmxhX3BvbGljeVxubmV0L2JyaWRnZS9icl9tcnBfbmV0bGluay5jOjE5Njpicl9tcnBfc3RhcnRfdGVzdF9wb2xpY3lbSUZMQV9CUklER0VfTVJQX1NUQVJUX1RFU1RfTUFYICYjNDM7IDFdID0ge1xubmV0L2JyaWRnZS9icl9tcnBfbmV0bGluay5jLTE5Ny1cdFtJRkxBX0JSSURHRV9NUlBfU1RBUlRfVEVTVF9VTlNQRUNdXHQ9IHsgLnR5cGUgPSBOTEFfUkVKRUNUIH0sXG4tLVxubmV0L2JyaWRnZS9icl9tcnBfbmV0bGluay5jLTIwNC1cbm5ldC9icmlkZ2UvYnJfbXJwX25ldGxpbmsuYzoyMDU6c3RhdGljIGludCBicl9tcnBfc3RhcnRfdGVzdF9wYXJzZShzdHJ1Y3QgbmV0X2JyaWRnZSAqYnIsIHN0cnVjdCBubGF0dHIgKmF0dHIsXG5uZXQvYnJpZGdlL2JyX21ycF9uZXRsaW5rLmMtMjA2LVx0XHRcdFx0ICAgc3RydWN0IG5ldGxpbmtfZXh0X2FjayAqZXh0YWNrKVxuLS1cbm5ldC9icmlkZ2UvYnJfbXJwX25ldGxpbmsuYy0yMDgtXHRzdHJ1Y3QgbmxhdHRyICp0YltJRkxBX0JSSURHRV9NUlBfU1RBUlRfVEVTVF9NQVggJiM0MzsgMV07XG5uZXQvYnJpZGdlL2JyX21ycF9uZXRsaW5rLmM6MjA5Olx0c3RydWN0IGJyX21ycF9zdGFydF90ZXN0IHRlc3Q7XG5uZXQvYnJpZGdlL2JyX21ycF9uZXRsaW5rLmMtMjEwLVx0aW50IGVycjtcbi0tXG5uZXQvYnJpZGdlL2JyX21ycF9uZXRsaW5rLmMtMjEyLVx0ZXJyID0gbmxhX3BhcnNlX25lc3RlZCh0YiwgSUZMQV9CUklER0VfTVJQX1NUQVJUX1RFU1RfTUFYLCBhdHRyLFxubmV0L2JyaWRnZS9icl9tcnBfbmV0bGluay5jOjIxMzpcdFx0XHQgICAgICAgYnJfbXJwX3N0YXJ0X3Rlc3RfcG9saWN5LCBleHRhY2spO1xubmV0L2JyaWRnZS9icl9tcnBfbmV0bGluay5jLTIxNC1cdGlmIChlcnIpXG4tLVxubmV0L2JyaWRnZS9icl9tcnBfbmV0bGluay5jLTIzNy1cbm5ldC9icmlkZ2UvYnJfbXJwX25ldGxpbmsuYzoyMzg6XHRyZXR1cm4gYnJfbXJwX3N0YXJ0X3Rlc3QoYnIsIFx1MDAyNnRlc3QpO1xubmV0L2JyaWRnZS9icl9tcnBfbmV0bGluay5jLTIzOS19XG4tLVxubmV0L2JyaWRnZS9icl9tcnBfbmV0bGluay5jPTM1Nj1pbnQgYnJfbXJwX3BhcnNlKHN0cnVjdCBuZXRfYnJpZGdlICpiciwgc3RydWN0IG5ldF9icmlkZ2VfcG9ydCAqcCxcbi0tXG5uZXQvYnJpZGdlL2JyX21ycF9uZXRsaW5rLmMtNDE0LVx0aWYgKHRiW0lGTEFfQlJJREdFX01SUF9TVEFSVF9URVNUXSkge1xubmV0L2JyaWRnZS9icl9tcnBfbmV0bGluay5jOjQxNTpcdFx0ZXJyID0gYnJfbXJwX3N0YXJ0X3Rlc3RfcGFyc2UoYnIsXG5uZXQvYnJpZGdlL2JyX21ycF9uZXRsaW5rLmMtNDE2LVx0XHRcdFx0XHQgICAgICB0YltJRkxBX0JSSURHRV9NUlBfU1RBUlRfVEVTVF0sXG4tLVxubmV0L2JyaWRnZS9icl9wcml2YXRlX21ycC5oPTc0PWludCBicl9tcnBfc2V0X3Jpbmdfcm9sZShzdHJ1Y3QgbmV0X2JyaWRnZSAqYnIsIHN0cnVjdCBicl9tcnBfcmluZ19yb2xlICpyb2xlKTtcbm5ldC9icmlkZ2UvYnJfcHJpdmF0ZV9tcnAuaDo3NTppbnQgYnJfbXJwX3N0YXJ0X3Rlc3Qoc3RydWN0IG5ldF9icmlkZ2UgKmJyLCBzdHJ1Y3QgYnJfbXJwX3N0YXJ0X3Rlc3QgKnRlc3QpO1xubmV0L2JyaWRnZS9icl9wcml2YXRlX21ycC5oLTc2LWludCBicl9tcnBfc2V0X2luX3N0YXRlKHN0cnVjdCBuZXRfYnJpZGdlICpiciwgc3RydWN0IGJyX21ycF9pbl9zdGF0ZSAqc3RhdGUpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAwODo1OTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNzEyMQoJCQkJCQkJb3V0cHV0OiAzMQoJCQkJCQkJdGhvdWdodHM6IDEzMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIE5ldGxpbmsgTWVzc2FnZSBQYXRoIGFuZCBTdHJ1Y3R1cmUgRml4KioKCk9rYXksIHNvIHRoZSBjb2RlIGRlZmluaXRlbHkgdXNlcyBuZXRsaW5rIG1lc3NhZ2VzIHRvIHJlYWNoIHRoZXNlIGZ1bmN0aW9ucyDigJMgdGhhdCYjMzk7cyB0aGUgZXN0YWJsaXNoZWQgbWVjaGFuaXNtLiBOb3csIHRoaXMgcGF0Y2ggYWRkcmVzc2VzIGEgc3BlY2lmaWMgaXNzdWUgd2l0aGluIGBicl9tcnBfYWxsb2NfdGVzdF9za2JgLiBJdCBsb29rcyBsaWtlIHRoZSBwcm9ibGVtIGxpZXMgaW4gYW4gaW5jb3JyZWN0IHVzZSBvZiBgc2l6ZW9mKG91aSlgIGluc3RlYWQgb2YgdGhlIGNvcnJlY3QgYHNpemVvZigqb3VpKWAuIFJpZ2h0LCBgb3VpYCBpcyBhIHBvaW50ZXIgdG8gYSBgc3RydWN0IGJyX21ycF9vdWlfaGRyYC4gVXNpbmcgYHNpemVvZihvdWkpYCBnaXZlcyBtZSB0aGUgc2l6ZSBvZiB0aGUgKnBvaW50ZXIqIGl0c2VsZiAoOCBieXRlcyBvbiBhIDY0LWJpdCBzeXN0ZW0pLCBidXQgSSBuZWVkIHRoZSBhY3R1YWwgc2l6ZSBvZiB0aGUgc3RydWN0IGl0IHBvaW50cyB0by4gVGhhdCB3b3VsZCBiZSBgc2l6ZW9mKCpvdWkpYC4KCkxldCBtZSBqdXN0IGNvbmZpcm0gdGhlIHN0cnVjdCYjMzk7cyBsYXlvdXQuIEFoLCB0aGUgZGVmaW5pdGlvbiBvZiBgc3RydWN0IGJyX21ycF9vdWlfaGRyYCBpcyBpbiBgaW5jbHVkZS91YXBpL2xpbnV4L21ycF9icmlkZ2UuaGAuIEkmIzM5O2xsIHBvcCBvcGVuIHRoYXQgaGVhZGVyIGZpbGUgdG8gdmVyaWZ5IHRoZSBmaWVsZCBkZWZpbml0aW9ucyBhbmQgdG90YWwgc2l6ZS4gSW1wb3J0YW50IHRvIGtub3cgZm9yIHRoaXMgYWxsb2NhdGlvbiEKCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMDg6NTk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtzdHJ1Y3QgYnJfbXJwX291aV9oZHImIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtpbmNsdWRlLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDA4OjU5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE3NTIxCgkJCQkJCQlvdXRwdXQ6IDI4CgkJCQkJCQl0aG91Z2h0czogMTUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipJbnZlc3RpZ2F0aW5nIGBicl9tcnBfb3VpX2hkcmAqKgoKQWxyaWdodCwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGlzLiBUaGUgaW5pdGlhbCBpbXB1bHNlIGhlcmUgaXMgdG8gdW5kZXJzdGFuZCB0aGUgY29udGV4dCBhbmQgaW1wbGljYXRpb25zIG9mIGBicl9tcnBfb3VpX2hkcmAuIEl0JiMzOTtzIGEgcmF0aGVyIHNwZWNpZmljIGlkZW50aWZpZXIsIGFuZCBteSBleHBlcmllbmNlIHRlbGxzIG1lIHRoaXMgaXMgbGlrZWx5IHJlbGF0ZWQgdG8gc29tZSBmb3JtIG9mIEJyaWRnZSBNdWx0aWNhc3QgUmVnaXN0cmF0aW9uIFByb3RvY29sIChCTVJQKSBvciBhIHJlbGF0ZWQgT1VJIChPcmdhbml6YXRpb25hbGx5IFVuaXF1ZSBJZGVudGlmaWVyKSBoZWFkZXIuIEdpdmVuIHRoZSBuYW1lLCBJJiMzOTtkIGFudGljaXBhdGUgdGhpcyBiZWluZyBhIHN0cnVjdHVyYWwgY29tcG9uZW50IG9yIGEga2V5IGRhdGEgZmllbGQgd2l0aGluIGEgcGFydGljdWxhciBwcm90b2NvbCBtZXNzYWdlLCBxdWl0ZSBwb3NzaWJseSBhIGhlYWRlciBzdHJ1Y3R1cmUuCgpJbW1lZGlhdGVseSwgSSYjMzk7bSB0aGlua2luZyBhYm91dCB0aGUgc3RhbmRhcmQgc3BlY2lmaWNhdGlvbnMgYXNzb2NpYXRlZCB3aXRoIEJNUlAgKGlmIGl0IGlzIEJNUlApLCBpdHMgcmVsYXRpb24gdG8gdmFyaW91cyBWTEFOIGNvbmZpZ3VyYXRpb25zLCBhbmQgcG9zc2libHkgbXVsdGljYXN0IGdyb3VwIG1hbmFnZW1lbnQuIFRoZSBPVUkgYXNwZWN0IHNwYXJrcyBjdXJpb3NpdHk7IGl0IHBvaW50cyB0byBhIGxldmVsIG9mIHZlbmRvci1zcGVjaWZpYyBjdXN0b21pemF0aW9uIG9yIGFuIGV4dGVuZGVkIGZlYXR1cmUgc2V0IGJleW9uZCB0aGUgYmFzZSBwcm90b2NvbCBkZWZpbml0aW9ucy4gSXMgdGhpcyBhIGN1c3RvbSBpbXBsZW1lbnRhdGlvbiwgb3IgZG9lcyBpdCBhZGhlcmUgdG8gZXN0YWJsaXNoZWQgc3RhbmRhcmRzIGJ1dCBpbmNvcnBvcmF0ZXMgYW4gT1VJIGZvciBkaXN0aW5ndWlzaGluZyBpdD8KCk15IG1lbnRhbCBjaGVja2xpc3QgaXMgYWxyZWFkeSBydW5uaW5nIHRocm91Z2ggcG90ZW50aWFsIGFyZWFzIHRvIGV4YW1pbmU6IGtlcm5lbCBoZWFkZXJzLCBuZXR3b3JrIHByb3RvY29sIGRlZmluaXRpb25zLCByZWxldmFudCBSRkNzLCBhbmQgYW55IHZlbmRvci1zcGVjaWZpYyBkb2N1bWVudGF0aW9uIHJlbGF0ZWQgdG8gYnJpZGdlIG9yIG11bHRpY2FzdCBjb25maWd1cmF0aW9ucy4gVGhpcyBuYW1lIHN1Z2dlc3RzIGEgbG93LWxldmVsIGRhdGEgc3RydWN0dXJlLiBJJiMzOTtsbCBuZWVkIHRvIHNjcnV0aW5pemUgdGhlIGNvZGUgb3IgZG9jdW1lbnRhdGlvbiBhc3NvY2lhdGVkIHdpdGggaXRzIHVzZSwgc3BlY2lmaWNhbGx5IGxvb2tpbmcgZm9yIGhvdyB0aGlzIGhlYWRlciBpcyBwYXJzZWQsIGNyZWF0ZWQsIGFuZCBtYW5pcHVsYXRlZC4gSXMgaXQgYSBjcml0aWNhbCBmaWVsZCBmb3IgZnJhbWUgZm9yd2FyZGluZyBkZWNpc2lvbnMsIHNlY3VyaXR5IGNoZWNrcywgb3IgcmVzb3VyY2UgYWxsb2NhdGlvbiB3aXRoaW4gYSBuZXR3b3JrIGJyaWRnZSBlbnZpcm9ubWVudD8gVGhhdCYjMzk7cyB3aGF0IEkmIzM5O2xsIG5lZWQgdG8gZmlndXJlIG91dC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMDg6NTk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7YnJfbXJwX291aV9oZHImIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDsmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L2JyaWRnZS9icl9tcnAuYz0xODI9c3RhdGljIHN0cnVjdCBza19idWZmICpicl9tcnBfYWxsb2NfdGVzdF9za2Ioc3RydWN0IGJyX21ycCAqbXJwLFxuLS1cbm5ldC9icmlkZ2UvYnJfbXJwLmMtMjE0LVx0XHRzdHJ1Y3QgYnJfbXJwX3Rsdl9oZHIgKnN1Yl90bHYgPSBOVUxMO1xubmV0L2JyaWRnZS9icl9tcnAuYzoyMTU6XHRcdHN0cnVjdCBicl9tcnBfb3VpX2hkciAqb3VpID0gTlVMTDtcbm5ldC9icmlkZ2UvYnJfbXJwLmMtMjE2LVx0XHR1OCBsZW5ndGg7XG4tLVxubmV0L2JyaWRnZS9icl9wcml2YXRlX21ycC5oPTEzMD1zdHJ1Y3QgYnJfbXJwX2luX3Rlc3RfaGRyIHtcbi0tXG5uZXQvYnJpZGdlL2JyX3ByaXZhdGVfbXJwLmgtMTM4LVxubmV0L2JyaWRnZS9icl9wcml2YXRlX21ycC5oOjEzOTpzdHJ1Y3QgYnJfbXJwX291aV9oZHIge1xubmV0L2JyaWRnZS9icl9wcml2YXRlX21ycC5oLTE0MC1cdF9fdTggb3VpW01SUF9PVUlfTEVOR1RIXTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMDg6NTk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTgxNTMKCQkJCQkJCW91dHB1dDogNDAKCQkJCQkJCXRob3VnaHRzOiAyMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkRpdmluZyBpbnRvIGBicl9wcml2YXRlX21ycC5oYCAtIExpbmUgMTM5KioKCk9rYXksIGxldCYjMzk7cyB6ZXJvIGluIG9uIGBicl9wcml2YXRlX21ycC5oYC4gSSYjMzk7bSBnb2luZyB0byBqdW1wIHN0cmFpZ2h0IHRvIGFyb3VuZCBsaW5lIDEzOS4gSSYjMzk7bSBwcm9iYWJseSBsb29raW5nIGZvciBhIHNwZWNpZmljIGRhdGEgc3RydWN0dXJlIGRlZmluaXRpb24sIHBlcmhhcHMgYSBmdW5jdGlvbiBwcm90b3R5cGUsIG9yIG1heWJlIGEgbWFjcm8gZGVmaW5pdGlvbiByZWxhdGVkIHRvIE1SUCBoYW5kbGluZy4gR2l2ZW4gdGhlIGZpbGUgbmFtZSwgaXQmIzM5O3MgbGlrZWx5IHNvbWV0aGluZyBsb3ctbGV2ZWwgYW5kIHByaXZhdGUgdG8gdGhlIE1SUCBpbXBsZW1lbnRhdGlvbi4gSSYjMzk7bSBleHBlY3RpbmcgdG8gc2VlIHNvbWV0aGluZyB0aGF0IGludGVyZmFjZXMgd2l0aCB0aGUgYmFzZWJhbmQsIHRoZSByYWRpbywgb3IgbmV0d29yayBwcm90b2NvbHMsIGdpdmVuIHRoaXMgaXMgcHJpdmF0ZSBoZWFkZXIuIFRoZSBsaW5lIG51bWJlciBzdWdnZXN0cyBpdCYjMzk7cyBhIG5vbnRyaXZpYWwgYW1vdW50IG9mIGNvZGUsIHNvIEkmIzM5O20gaG9waW5nIHRvIHF1aWNrbHkgaWRlbnRpZnkgdGhlIGNydWNpYWwgY29tcG9uZW50IG9yIHBvaW50IG9mIGludGVyZXN0IHJhdGhlciB0aGFuIGdldHRpbmcgYm9nZ2VkIGRvd24gaW4gdGhlIG1pbnV0aWFlLiBNeSBndXQgdGVsbHMgbWUgaXQmIzM5O2xsIGJlIHJlbGF0ZWQgdG8gYnVmZmVyaW5nLCBzY2hlZHVsaW5nLCBvciBwb3NzaWJseSBlcnJvciBoYW5kbGluZyB3aXRoaW4gdGhlIE1SUCBmcmFtZXdvcmsuIExldCYjMzk7cyBzZWUgaWYgdGhlIGNvZGUgY29uZmlybXMgbXkgaW5pdGlhbCBhc3N1bXB0aW9ucy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMDg6NTk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtuZXQvYnJpZGdlL2JyX3ByaXZhdGVfbXJwLmgmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxMzAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDEzMDpcdHN0cnVjdCBicl9tcnBfaW5fdGVzdF9oZHIge1xuIDEzMTpcdFx0X19iZTE2IGlkO1xuIDEzMjpcdFx0X191OCBzYVtFVEhfQUxFTl07XG4gMTMzOlx0XHRfX2JlMTYgcG9ydF9yb2xlO1xuIDEzNDpcdFx0X19iZTE2IHN0YXRlO1xuIDEzNTpcdFx0X19iZTE2IHRyYW5zaXRpb25zO1xuIDEzNjpcdFx0X19iZTMyIHRpbWVzdGFtcDtcbiAxMzc6XHR9IF9fYXR0cmlidXRlX18oKF9fcGFja2VkX18pKTtcbiAxMzg6XHRcbiAxMzk6XHRzdHJ1Y3QgYnJfbXJwX291aV9oZHIge1xuIDE0MDpcdFx0X191OCBvdWlbTVJQX09VSV9MRU5HVEhdO1xuIDE0MTpcdH07XG4gMTQyOlx0XG4gMTQzOlx0c3RydWN0IGJyX21ycF9zdWJfb3B0aW9uMV9oZHIge1xuIDE0NDpcdFx0X191OCB0eXBlO1xuIDE0NTpcdFx0X191OCBkYXRhW01SUF9NQU5VRkFDVFVSRV9EQVRBX0xFTkdUSF07XG4gMTQ2Olx0fTtcbiAxNDc6XHRcbiAxNDg6XHQjZW5kaWYgLyogX0JSX1BSSVZBVEVfTVJQX0ggKi9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMDg6NTk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTg3MTQKCQkJCQkJCW91dHB1dDogMzYKCQkJCQkJCXRob3VnaHRzOiAxMzYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBNUlAgSW1wbGVtZW50YXRpb24qKgoKT2theSwgc28gSSYjMzk7dmUgYmVlbiBsb29raW5nIGF0IHRoaXMgY29kZSBhbmQgSSYjMzk7dmUgemVyb2VkIGluIG9uIHdoYXQmIzM5O3MgbGlrZWx5IHRoZSByb290IGNhdXNlLiBNeSBndXQgZmVlbGluZyBpcyB0aGF0IGBNUlBfT1VJX0xFTkdUSGAgaXMgMywgd2hpY2ggaXMgcHJldHR5IHN0YW5kYXJkIGZvciBPVUkgbGVuZ3RocywgYnV0IHRoZSBjcnVjaWFsIHRoaW5nIGhlcmUgaXMgaG93IHRoYXQgdHJhbnNsYXRlcyB0byBtZW1vcnkgYWxsb2NhdGlvbi4gSXQgbG9va3MgbGlrZSBgc2l6ZW9mKCpvdWkpYCBpcyBjb3JyZWN0bHkgY2FsY3VsYXRpbmcgdGhlIHNpemUgb2YgYSBzaW5nbGUgT1VJIGVsZW1lbnQgYXMgMywgYnV0IHRoZW4gYHNpemVvZihvdWkpYCB3YXMgcmV0dXJuaW5nIDguIEl0IHdvdWxkIGFwcGVhciB0aGlzIGRpZmZlcmVuY2UgaXMgbGVhZGluZyB0byBhbiBpbmNvcnJlY3QgbGVuZ3RoIGNhbGN1bGF0aW9uLCBhbmQgdGhhdCYjMzk7cyB0aGUgdnVsbmVyYWJpbGl0eS4KClRoaXMgcGF0Y2ggc2hvdWxkIGZpeCB0aGF0IGxlbmd0aCBjYWxjdWxhdGlvbiBpc3N1ZSwgd2hpY2ggd2lsbCBpbXBhY3QgdGhlIGFjdHVhbCBNUlAgcHJvdG9jb2wgaW1wbGVtZW50YXRpb24gYW5kIGl0cyBmdW5jdGlvbmFsaXR5LCBub3QganVzdCB0aGUgY29kZSBpdHNlbGYuIEdpdmVuIHRoYXQgdGhpcyBpcyBhIGNoYW5nZSB0byB0aGUgZnVuZGFtZW50YWwgcHJvdG9jb2wgaGFuZGxpbmcsIGl0JiMzOTtzIGRlZmluaXRlbHkgc29tZXRoaW5nIHdlIG5lZWQgdG8gZnV6eiBleHRlbnNpdmVseS4gV2UgY2FuJiMzOTt0IGxldCBhbnkgc3VidGxlIGVycm9ycyBpbiB0aGUgbGVuZ3RoIGNhbGN1bGF0aW9uIHNsaXAgdGhyb3VnaC4KClRvIG1ha2Ugc3VyZSB3ZSYjMzk7cmUgdGhvcm91Z2ggaW4gb3VyIHRlc3RpbmcsIEkgbmVlZCB0byBlbmFibGUgdGhlIGBCUklER0VfTVJQYCBjb25maWd1cmF0aW9uIG9wdGlvbi4gTm93LCB0byBtYWtlIHRoZSBmdXp6aW5nIGVmZmVjdGl2ZSwgSSBuZWVkIHRvIGZvY3VzIHRoZSBmdXp6ZXIgb24gdGhlIHJlbGV2YW50IGVudHJ5IHBvaW50cy4gSSYjMzk7bSB0aGlua2luZyB0aGUgbmV0bGluayBlbnRyeSBwb2ludHMgZm9yIE1SUCBhcmUgd2hlcmUgdGhlIGFjdGlvbiBoYXBwZW5zLiBMZXQgbWUgZ28gdGhyb3VnaCBteSBtZW50YWwgY2hlY2tsaXN0OiBJIHNob3VsZCBmb2N1cyBvbiBmdW5jdGlvbnMgbGlrZSBgYnJfbXJwX3N0YXJ0X3Rlc3RgLCBgYnJfbXJwX2FkZGAsIGBicl9tcnBfc2V0X3Jpbmdfcm9sZWAsIGFuZCBhbnl0aGluZyBlbHNlIGluIHRoYXQgdmVpbi4gR290dGEgZmluZCB0aGUgZnVsbCBsaXN0IHRvIHVzZSB3aXRoIHRoZSBmdXp6aW5nLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAwODo1OTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtpbnQgYnJfbXJwXyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9icmlkZ2UvYnJfbXJwLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L2JyaWRnZS9icl9tcnAuYz03PXN0YXRpYyBjb25zdCB1OCBtcnBfaW5fdGVzdF9kbWFjW0VUSF9BTEVOXSA9IHsgMHgxLCAweDE1LCAweDRlLCAweDAsIDB4MCwgMHgzIH07XG5uZXQvYnJpZGdlL2JyX21ycC5jLTgtXG5uZXQvYnJpZGdlL2JyX21ycC5jOjk6c3RhdGljIGludCBicl9tcnBfcHJvY2VzcyhzdHJ1Y3QgbmV0X2JyaWRnZV9wb3J0ICpwLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKTtcbm5ldC9icmlkZ2UvYnJfbXJwLmMtMTAtXG4tLVxubmV0L2JyaWRnZS9icl9tcnAuYz0xMDg9c3RhdGljIHN0cnVjdCBicl9tcnAgKmJyX21ycF9maW5kX3BvcnQoc3RydWN0IG5ldF9icmlkZ2UgKmJyLFxuLS1cbm5ldC9icmlkZ2UvYnJfbXJwLmMtMTI2LVxubmV0L2JyaWRnZS9icl9tcnAuYzoxMjc6c3RhdGljIGludCBicl9tcnBfbmV4dF9zZXEoc3RydWN0IGJyX21ycCAqbXJwKVxubmV0L2JyaWRnZS9icl9tcnAuYy0xMjgte1xuLS1cbm5ldC9icmlkZ2UvYnJfbXJwLmM9NDI4PXN0YXRpYyB2b2lkIGJyX21ycF9kZWxfaW1wbChzdHJ1Y3QgbmV0X2JyaWRnZSAqYnIsIHN0cnVjdCBicl9tcnAgKm1ycClcbi0tXG5uZXQvYnJpZGdlL2JyX21ycC5jLTQ5Ni0gKi9cbm5ldC9icmlkZ2UvYnJfbXJwLmM6NDk3OmludCBicl9tcnBfYWRkKHN0cnVjdCBuZXRfYnJpZGdlICpiciwgc3RydWN0IGJyX21ycF9pbnN0YW5jZSAqaW5zdGFuY2UpXG5uZXQvYnJpZGdlL2JyX21ycC5jLTQ5OC17XG4tLVxubmV0L2JyaWRnZS9icl9tcnAuYz01NjI9dm9pZCBicl9tcnBfcG9ydF9kZWwoc3RydWN0IG5ldF9icmlkZ2UgKmJyLCBzdHJ1Y3QgbmV0X2JyaWRnZV9wb3J0ICpwKVxuLS1cbm5ldC9icmlkZ2UvYnJfbXJwLmMtNTc1LSAqL1xubmV0L2JyaWRnZS9icl9tcnAuYzo1NzY6aW50IGJyX21ycF9kZWwoc3RydWN0IG5ldF9icmlkZ2UgKmJyLCBzdHJ1Y3QgYnJfbXJwX2luc3RhbmNlICppbnN0YW5jZSlcbm5ldC9icmlkZ2UvYnJfbXJwLmMtNTc3LXtcbi0tXG5uZXQvYnJpZGdlL2JyX21ycC5jLTU5MC0gKi9cbm5ldC9icmlkZ2UvYnJfbXJwLmM6NTkxOmludCBicl9tcnBfc2V0X3BvcnRfc3RhdGUoc3RydWN0IG5ldF9icmlkZ2VfcG9ydCAqcCxcbm5ldC9icmlkZ2UvYnJfbXJwLmMtNTkyLVx0XHRcdCAgZW51bSBicl9tcnBfcG9ydF9zdGF0ZV90eXBlIHN0YXRlKVxuLS1cbm5ldC9icmlkZ2UvYnJfbXJwLmMtNjE2LSAqL1xubmV0L2JyaWRnZS9icl9tcnAuYzo2MTc6aW50IGJyX21ycF9zZXRfcG9ydF9yb2xlKHN0cnVjdCBuZXRfYnJpZGdlX3BvcnQgKnAsXG5uZXQvYnJpZGdlL2JyX21ycC5jLTYxOC1cdFx0XHQgZW51bSBicl9tcnBfcG9ydF9yb2xlX3R5cGUgcm9sZSlcbi0tXG5uZXQvYnJpZGdlL2JyX21ycC5jLTY0OC0gKi9cbm5ldC9icmlkZ2UvYnJfbXJwLmM6NjQ5OmludCBicl9tcnBfc2V0X3Jpbmdfc3RhdGUoc3RydWN0IG5ldF9icmlkZ2UgKmJyLFxubmV0L2JyaWRnZS9icl9tcnAuYy02NTAtXHRcdFx0ICBzdHJ1Y3QgYnJfbXJwX3Jpbmdfc3RhdGUgKnN0YXRlKVxuLS1cbm5ldC9icmlkZ2UvYnJfbXJwLmMtNjcwLSAqL1xubmV0L2JyaWRnZS9icl9tcnAuYzo2NzE6aW50IGJyX21ycF9zZXRfcmluZ19yb2xlKHN0cnVjdCBuZXRfYnJpZGdlICpicixcbm5ldC9icmlkZ2UvYnJfbXJwLmMtNjcyLVx0XHRcdCBzdHJ1Y3QgYnJfbXJwX3Jpbmdfcm9sZSAqcm9sZSlcbi0tXG5uZXQvYnJpZGdlL2JyX21ycC5jLTcwMS0gKi9cbm5ldC9icmlkZ2UvYnJfbXJwLmM6NzAyOmludCBicl9tcnBfc3RhcnRfdGVzdChzdHJ1Y3QgbmV0X2JyaWRnZSAqYnIsXG5uZXQvYnJpZGdlL2JyX21ycC5jLTcwMy1cdFx0ICAgICAgc3RydWN0IGJyX21ycF9zdGFydF90ZXN0ICp0ZXN0KVxuLS1cbm5ldC9icmlkZ2UvYnJfbXJwLmMtNzM2LSAqL1xubmV0L2JyaWRnZS9icl9tcnAuYzo3Mzc6aW50IGJyX21ycF9zZXRfaW5fc3RhdGUoc3RydWN0IG5ldF9icmlkZ2UgKmJyLCBzdHJ1Y3QgYnJfbXJwX2luX3N0YXRlICpzdGF0ZSlcbm5ldC9icmlkZ2UvYnJfbXJwLmMtNzM4LXtcbi0tXG5uZXQvYnJpZGdlL2JyX21ycC5jLTc1Ny0gKi9cbm5ldC9icmlkZ2UvYnJfbXJwLmM6NzU4OmludCBicl9tcnBfc2V0X2luX3JvbGUoc3RydWN0IG5ldF9icmlkZ2UgKmJyLCBzdHJ1Y3QgYnJfbXJwX2luX3JvbGUgKnJvbGUpXG5uZXQvYnJpZGdlL2JyX21ycC5jLTc1OS17XG4tLVxubmV0L2JyaWRnZS9icl9tcnAuYy04MzktICovXG5uZXQvYnJpZGdlL2JyX21ycC5jOjg0MDppbnQgYnJfbXJwX3N0YXJ0X2luX3Rlc3Qoc3RydWN0IG5ldF9icmlkZ2UgKmJyLFxubmV0L2JyaWRnZS9icl9tcnAuYy04NDEtXHRcdFx0IHN0cnVjdCBicl9tcnBfc3RhcnRfaW5fdGVzdCAqaW5fdGVzdClcbi0tXG5uZXQvYnJpZGdlL2JyX21ycC5jPTEwNjE9c3RhdGljIGJvb2wgYnJfbXJwX21yY19iZWhhdmlvdXIoc3RydWN0IGJyX21ycCAqbXJwKVxuLS1cbm5ldC9icmlkZ2UvYnJfbXJwLmMtMTA3My0gKi9cbm5ldC9icmlkZ2UvYnJfbXJwLmM6MTA3NDpzdGF0aWMgaW50IGJyX21ycF9yY3Yoc3RydWN0IG5ldF9icmlkZ2VfcG9ydCAqcCxcbm5ldC9icmlkZ2UvYnJfbXJwLmMtMTA3NS1cdFx0ICAgICAgc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbi0tXG5uZXQvYnJpZGdlL2JyX21ycC5jLTEyNDUtICovXG5uZXQvYnJpZGdlL2JyX21ycC5jOjEyNDY6c3RhdGljIGludCBicl9tcnBfcHJvY2VzcyhzdHJ1Y3QgbmV0X2JyaWRnZV9wb3J0ICpwLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxubmV0L2JyaWRnZS9icl9tcnAuYy0xMjQ3LXtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMDg6NTk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjA1OTIKCQkJCQkJCW91dHB1dDogMzMKCQkJCQkJCXRob3VnaHRzOiAyOTYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBNUlAgVGVzdCBQcm9jZWR1cmUqKgoKT2theSwgc28gSSYjMzk7bSBmb2N1c2luZyBpbiBvbiB0aGUgTVJQIHRlc3QgZnVuY3Rpb25hbGl0eSBoZXJlLiBNeSBpbml0aWFsIHRob3VnaHQgcHJvY2VzcyBpcyB0byBjYXRlZ29yaXplIHRoZSBrZXkgc3ltYm9scyByZWxhdGVkIHRvIGl0OiBgYnJfbXJwX2FkZGAsIGBicl9tcnBfZGVsYCwgYGJyX21ycF9zZXRfcG9ydF9zdGF0ZWAsIGBicl9tcnBfc2V0X3BvcnRfcm9sZWAsIGBicl9tcnBfc2V0X3Jpbmdfc3RhdGVgLCBgYnJfbXJwX3NldF9yaW5nX3JvbGVgLCBgYnJfbXJwX3N0YXJ0X3Rlc3RgLCBgYnJfbXJwX3NldF9pbl9zdGF0ZWAsIGBicl9tcnBfc2V0X2luX3JvbGVgLCBgYnJfbXJwX3N0YXJ0X2luX3Rlc3RgLCBgYnJfbXJwX3JjdmAsIGFuZCBgYnJfbXJwX3Byb2Nlc3NgLiBCdXQgKnNwZWNpZmljYWxseSosIEkmIzM5O20gaG9uaW5nIGluIG9uIGhvdyB0aGUgdGVzdCBpdHNlbGYgaW5pdGlhdGVzLgoKYGJyX21ycF9zdGFydF90ZXN0YCBpcyB0aGUga2V5LCB0aGUgdHJpZ2dlci4gVGhhdCYjMzk7cyB0aGUgZnVuY3Rpb24gdGhhdCB1bHRpbWF0ZWx5IHN0YXJ0cyB0aGUgdGVzdCBleGVjdXRpb24sIGFuZCAqdGhhdCogY2FsbHMgYGJyX21ycF9hbGxvY190ZXN0X3NrYmAuIFJpZ2h0LCBzbyBgYnJfbXJwX2FsbG9jX3Rlc3Rfc2tiYCBpcyB3aGVyZSB0aGUgdGVzdCBwYWNrZXRzIGFyZSBhY3R1YWxseSBhbGxvY2F0ZWQuCgpOb3csIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoZXJlIGVsc2UgYGJyX21ycF9hbGxvY190ZXN0X3NrYmAgaXMgYmVpbmcgY2FsbGVkIGZyb20uIEkmIzM5O20gY2hlY2tpbmcgZm9yIGRlcGVuZGVuY2llcy4gQWgsIGl0JiMzOTtzIGFsc28gY2FsbGVkIGJ5IGBicl9tcnBfdGVzdF93b3JrX2V4cGlyZWRgLiBJbnRlcmVzdGluZy4gU28gdGhhdCYjMzk7cyB0aGUgY2xlYW51cCBhZnRlciB0aGUgdGVzdCBleHBpcmVzLiBgYnJfbXJwX3Rlc3Rfd29ya19leHBpcmVkYCBpcyBzY2hlZHVsZWQgYnkgYGJyX21ycF9zdGFydF90ZXN0YCwgYnV0IGl0JiMzOTtzICppbml0aWFsaXplZCogaW4gYGJyX21ycF9hZGRgLiBTbyB0aGUgdGVzdCB3b3JrIGlzIHNjaGVkdWxlZCB3aGVuIHdlIHN0YXJ0IHRoZSB0ZXN0LCBidXQgdGhlIHdvcmsgaXMgaW5pdGlhbGl6ZWQgd2hlbiB3ZSBhZGQgdGhlIGJyaWRnZS4gVGhhdCYjMzk7cyBnb29kIHRvIGtub3csIGFuZCBpdCYjMzk7cyBhIGRldGFpbCBJIG5lZWQgdG8ga2VlcCBpbiBtaW5kLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAwOTowMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt0ZXN0X3dvcmsmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvYnJpZGdlL2JyX21ycC5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9icmlkZ2UvYnJfbXJwLmM9MjM5PXN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqYnJfbXJwX2FsbG9jX2luX3Rlc3Rfc2tiKHN0cnVjdCBicl9tcnAgKm1ycCxcbi0tXG5uZXQvYnJpZGdlL2JyX21ycC5jLTI3OC0gKi9cbm5ldC9icmlkZ2UvYnJfbXJwLmM6Mjc5OnN0YXRpYyB2b2lkIGJyX21ycF90ZXN0X3dvcmtfZXhwaXJlZChzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXG5uZXQvYnJpZGdlL2JyX21ycC5jLTI4MC17XG5uZXQvYnJpZGdlL2JyX21ycC5jLTI4MS1cdHN0cnVjdCBkZWxheWVkX3dvcmsgKmRlbF93b3JrID0gdG9fZGVsYXllZF93b3JrKHdvcmspO1xubmV0L2JyaWRnZS9icl9tcnAuYzoyODI6XHRzdHJ1Y3QgYnJfbXJwICptcnAgPSBjb250YWluZXJfb2YoZGVsX3dvcmssIHN0cnVjdCBicl9tcnAsIHRlc3Rfd29yayk7XG5uZXQvYnJpZGdlL2JyX21ycC5jLTI4My1cdHN0cnVjdCBuZXRfYnJpZGdlX3BvcnQgKnA7XG4tLVxubmV0L2JyaWRnZS9icl9tcnAuYy0zNDMtXG5uZXQvYnJpZGdlL2JyX21ycC5jOjM0NDpcdHF1ZXVlX2RlbGF5ZWRfd29yayhzeXN0ZW1fcGVyY3B1X3dxLCBcdTAwMjZtcnAtXHUwMDNldGVzdF93b3JrLFxubmV0L2JyaWRnZS9icl9tcnAuYy0zNDUtXHRcdFx0ICAgdXNlY3NfdG9famlmZmllcyhtcnAtXHUwMDNldGVzdF9pbnRlcnZhbCkpO1xuLS1cbm5ldC9icmlkZ2UvYnJfbXJwLmMtMzUxLSAqL1xubmV0L2JyaWRnZS9icl9tcnAuYzozNTI6c3RhdGljIHZvaWQgYnJfbXJwX2luX3Rlc3Rfd29ya19leHBpcmVkKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcbm5ldC9icmlkZ2UvYnJfbXJwLmMtMzUzLXtcbm5ldC9icmlkZ2UvYnJfbXJwLmMtMzU0LVx0c3RydWN0IGRlbGF5ZWRfd29yayAqZGVsX3dvcmsgPSB0b19kZWxheWVkX3dvcmsod29yayk7XG5uZXQvYnJpZGdlL2JyX21ycC5jOjM1NTpcdHN0cnVjdCBicl9tcnAgKm1ycCA9IGNvbnRhaW5lcl9vZihkZWxfd29yaywgc3RydWN0IGJyX21ycCwgaW5fdGVzdF93b3JrKTtcbm5ldC9icmlkZ2UvYnJfbXJwLmMtMzU2LVx0c3RydWN0IG5ldF9icmlkZ2VfcG9ydCAqcDtcbi0tXG5uZXQvYnJpZGdlL2JyX21ycC5jLTQyMC1cbm5ldC9icmlkZ2UvYnJfbXJwLmM6NDIxOlx0cXVldWVfZGVsYXllZF93b3JrKHN5c3RlbV9wZXJjcHVfd3EsIFx1MDAyNm1ycC1cdTAwM2Vpbl90ZXN0X3dvcmssXG5uZXQvYnJpZGdlL2JyX21ycC5jLTQyMi1cdFx0XHQgICB1c2Vjc190b19qaWZmaWVzKG1ycC1cdTAwM2Vpbl90ZXN0X2ludGVydmFsKSk7XG4tLVxubmV0L2JyaWRnZS9icl9tcnAuYz00Mjg9c3RhdGljIHZvaWQgYnJfbXJwX2RlbF9pbXBsKHN0cnVjdCBuZXRfYnJpZGdlICpiciwgc3RydWN0IGJyX21ycCAqbXJwKVxuLS1cbm5ldC9icmlkZ2UvYnJfbXJwLmMtNDMzLVx0LyogU3RvcCBzZW5kaW5nIE1SUF9UZXN0IGZyYW1lcyAqL1xubmV0L2JyaWRnZS9icl9tcnAuYzo0MzQ6XHRjYW5jZWxfZGVsYXllZF93b3JrX3N5bmMoXHUwMDI2bXJwLVx1MDAzZXRlc3Rfd29yayk7XG5uZXQvYnJpZGdlL2JyX21ycC5jLTQzNS1cdGJyX21ycF9zd2l0Y2hkZXZfc2VuZF9yaW5nX3Rlc3QoYnIsIG1ycCwgMCwgMCwgMCwgMCk7XG4tLVxubmV0L2JyaWRnZS9icl9tcnAuYy00MzctXHQvKiBTdG9wIHNlbmRpbmcgTVJQX0luVGVzdCBmcmFtZXMgaWYgaGFzIGFuIGludGVyY29ubmVjdCByb2xlICovXG5uZXQvYnJpZGdlL2JyX21ycC5jOjQzODpcdGNhbmNlbF9kZWxheWVkX3dvcmtfc3luYyhcdTAwMjZtcnAtXHUwMDNlaW5fdGVzdF93b3JrKTtcbm5ldC9icmlkZ2UvYnJfbXJwLmMtNDM5LVx0YnJfbXJwX3N3aXRjaGRldl9zZW5kX2luX3Rlc3QoYnIsIG1ycCwgMCwgMCwgMCk7XG4tLVxubmV0L2JyaWRnZS9icl9tcnAuYz00OTc9aW50IGJyX21ycF9hZGQoc3RydWN0IG5ldF9icmlkZ2UgKmJyLCBzdHJ1Y3QgYnJfbXJwX2luc3RhbmNlICppbnN0YW5jZSlcbi0tXG5uZXQvYnJpZGdlL2JyX21ycC5jLTU0Mi1cbm5ldC9icmlkZ2UvYnJfbXJwLmM6NTQzOlx0SU5JVF9ERUxBWUVEX1dPUksoXHUwMDI2bXJwLVx1MDAzZXRlc3Rfd29yaywgYnJfbXJwX3Rlc3Rfd29ya19leHBpcmVkKTtcbm5ldC9icmlkZ2UvYnJfbXJwLmM6NTQ0Olx0SU5JVF9ERUxBWUVEX1dPUksoXHUwMDI2bXJwLVx1MDAzZWluX3Rlc3Rfd29yaywgYnJfbXJwX2luX3Rlc3Rfd29ya19leHBpcmVkKTtcbm5ldC9icmlkZ2UvYnJfbXJwLmMtNTQ1LVx0aGxpc3RfYWRkX3RhaWxfcmN1KFx1MDAyNm1ycC1cdTAwM2VsaXN0LCBcdTAwMjZici1cdTAwM2VtcnBfbGlzdCk7XG4tLVxubmV0L2JyaWRnZS9icl9tcnAuYz03MDI9aW50IGJyX21ycF9zdGFydF90ZXN0KHN0cnVjdCBuZXRfYnJpZGdlICpicixcbi0tXG5uZXQvYnJpZGdlL2JyX21ycC5jLTcyNy1cdG1ycC1cdTAwM2V0ZXN0X2NvdW50X21pc3MgPSAwO1xubmV0L2JyaWRnZS9icl9tcnAuYzo3Mjg6XHRxdWV1ZV9kZWxheWVkX3dvcmsoc3lzdGVtX3BlcmNwdV93cSwgXHUwMDI2bXJwLVx1MDAzZXRlc3Rfd29yayxcbm5ldC9icmlkZ2UvYnJfbXJwLmMtNzI5LVx0XHRcdCAgIHVzZWNzX3RvX2ppZmZpZXModGVzdC1cdTAwM2VpbnRlcnZhbCkpO1xuLS1cbm5ldC9icmlkZ2UvYnJfbXJwLmM9NzU4PWludCBicl9tcnBfc2V0X2luX3JvbGUoc3RydWN0IG5ldF9icmlkZ2UgKmJyLCBzdHJ1Y3QgYnJfbXJwX2luX3JvbGUgKnJvbGUpXG4tLVxubmV0L2JyaWRnZS9icl9tcnAuYy03NzgtXHRcdC8qIFN0b3AgdGhlIGdlbmVyYXRpbmcgTVJQX0luVGVzdCBmcmFtZXMgKi9cbm5ldC9icmlkZ2UvYnJfbXJwLmM6Nzc5Olx0XHRjYW5jZWxfZGVsYXllZF93b3JrX3N5bmMoXHUwMDI2bXJwLVx1MDAzZWluX3Rlc3Rfd29yayk7XG5uZXQvYnJpZGdlL2JyX21ycC5jLTc4MC1cdFx0YnJfbXJwX3N3aXRjaGRldl9zZW5kX2luX3Rlc3QoYnIsIG1ycCwgMCwgMCwgMCk7XG4tLVxubmV0L2JyaWRnZS9icl9tcnAuYz04NDA9aW50IGJyX21ycF9zdGFydF9pbl90ZXN0KHN0cnVjdCBuZXRfYnJpZGdlICpicixcbi0tXG5uZXQvYnJpZGdlL2JyX21ycC5jLTg2Ny1cdG1ycC1cdTAwM2Vpbl90ZXN0X2NvdW50X21pc3MgPSAwO1xubmV0L2JyaWRnZS9icl9tcnAuYzo4Njg6XHRxdWV1ZV9kZWxheWVkX3dvcmsoc3lzdGVtX3BlcmNwdV93cSwgXHUwMDI2bXJwLVx1MDAzZWluX3Rlc3Rfd29yayxcbm5ldC9icmlkZ2UvYnJfbXJwLmMtODY5LVx0XHRcdCAgIHVzZWNzX3RvX2ppZmZpZXMoaW5fdGVzdC1cdTAwM2VpbnRlcnZhbCkpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAwOTowMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMjgxMAoJCQkJCQkJb3V0cHV0OiA0MQoJCQkJCQkJdGhvdWdodHM6IDIzNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBbmFseXNpcyBvZiB0aGUgTVJQIFF1ZXVlaW5nIGFuZCBDb25maWd1cmF0aW9uKioKCk9rYXksIHNvIEkmIzM5O3ZlIGNvbmZpcm1lZCB0aGF0IGBicl9tcnBfc3RhcnRfdGVzdGAgaXMgZGVmaW5pdGVseSB0aGUgZnVuY3Rpb24gdGhhdCBraWNrcyBvZmYgdGhlIHF1ZXVpbmcgcHJvY2Vzcy4gTm93LCBJIG5lZWQgdG8gbWFrZSBhIGxpc3Qgb2YgdGhlIGNydWNpYWwgZm9jdXMgc3ltYm9scyDigJMgdGhlIGZ1bmN0aW9ucyBkaXJlY3RseSBpbnZvbHZlZCBpbiB0aGlzIE1SUCB0ZXN0IHNjZW5hcmlvLiBJIGhhdmUgYSBnb29kIGdyYXNwIG9mIHRoZSBjb2RlIG5vdyBzbyBJJiMzOTtsbCBnbyB0aHJvdWdoIHRoZSBzeW1ib2xzIHRvIGNvbmZpcm0gdGhhdCB0aGUgbGlzdCBJIGhhdmUgaXMgcmlnaHQ6IGBicl9tcnBfc3RhcnRfdGVzdGAsIGBicl9tcnBfYWRkYCwgYGJyX21ycF9zZXRfcmluZ19yb2xlYCwgYGJyX21ycF9zZXRfcmluZ19zdGF0ZWAsIGBicl9tcnBfc3RhcnRfaW5fdGVzdGAsIGBicl9tcnBfc2V0X2luX3JvbGVgLCBgYnJfbXJwX3NldF9pbl9zdGF0ZWAsIGBicl9tcnBfc2V0X3BvcnRfc3RhdGVgLCBgYnJfbXJwX3NldF9wb3J0X3JvbGVgLCBhbmQgYGJyX21ycF9kZWxgLiBUaG9zZSBsb29rIHJpZ2h0LgoKQW5kLCBvZiBjb3Vyc2UsIHRvIGZ1bGx5IGNhcHR1cmUgdGhlIE1SUCBmcmFtZSBwcm9jZXNzaW5nLCBJIGNhbiYjMzk7dCBmb3JnZXQgYGJyX21ycF9yY3ZgIGFuZCBgYnJfbXJwX3Byb2Nlc3NgIGZvciByZWNlaXZpbmcgYW5kIGhhbmRsaW5nIHRob3NlIGZyYW1lcy4KCk5vdywgbGV0JiMzOTtzIG5haWwgZG93biB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zIGludm9sdmVkLiBUaGUgcHJpbWFyeSBjb25maWd1cmF0aW9uIHNlZW1zIHRvIGJlIGBCUklER0VfTVJQYC4gSG93ZXZlciwgbGV0IG1lIGRvdWJsZSBjaGVjayB0aGF0IHRoZXJlIGFyZW4mIzM5O3QgYW55IGhpZGRlbiBkZXBlbmRlbmNpZXMuIEFoYSwgeWVzISBgQlJJREdFX01SUGAgZGVwZW5kcyBvbiBgQlJJREdFYC4gVGhhdCBtYWtlcyBzZW5zZS4KClRoZXJlZm9yZSwgdGhlIHJlbGV2YW50IGNvbmZpZ3VyYXRpb25zIGhlcmUgYXJlIGBCUklER0VgIGFuZCBgQlJJREdFX01SUGAuIEkgc2hvdWxkIHJldHVybiBgQlJJREdFX01SUGAgYXMgdGhhdCYjMzk7cyB0aGUgbW9yZSBzcGVjaWZpYyBhbmQgcmVsZXZhbnQgb3B0aW9uLgoKQWxyaWdodCwgSSYjMzk7bGwgdGFrZSBhbm90aGVyIGxvb2sgYXQgdGhlIGBicl9tcnBfYWxsb2NfdGVzdF9za2JgIGZ1bmN0aW9uIHRvIG1ha2Ugc3VyZSB0aGF0IEkgdW5kZXJzdGFuZCBpdHMgcm9sZSBpbiB0aGlzIHByb2Nlc3MuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDA5OjAwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2JyX21ycF9hbGxvY190ZXN0X3NrYiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9icmlkZ2UvYnJfbXJwLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L2JyaWRnZS9icl9tcnAuYz0xNzE9c3RhdGljIHZvaWQgYnJfbXJwX3NrYl9jb21tb24oc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGJyX21ycCAqbXJwKVxuLS1cbm5ldC9icmlkZ2UvYnJfbXJwLmMtMTgxLVxubmV0L2JyaWRnZS9icl9tcnAuYzoxODI6c3RhdGljIHN0cnVjdCBza19idWZmICpicl9tcnBfYWxsb2NfdGVzdF9za2Ioc3RydWN0IGJyX21ycCAqbXJwLFxubmV0L2JyaWRnZS9icl9tcnAuYy0xODMtXHRcdFx0XHRcdCAgICAgc3RydWN0IG5ldF9icmlkZ2VfcG9ydCAqcCxcbi0tXG5uZXQvYnJpZGdlL2JyX21ycC5jPTI3OT1zdGF0aWMgdm9pZCBicl9tcnBfdGVzdF93b3JrX2V4cGlyZWQoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxuLS1cbm5ldC9icmlkZ2UvYnJfbXJwLmMtMzExLVx0XHRpZiAoIW1ycC1cdTAwM2V0ZXN0X21vbml0b3IpIHtcbm5ldC9icmlkZ2UvYnJfbXJwLmM6MzEyOlx0XHRcdHNrYiA9IGJyX21ycF9hbGxvY190ZXN0X3NrYihtcnAsIHAsXG5uZXQvYnJpZGdlL2JyX21ycC5jLTMxMy1cdFx0XHRcdFx0XHQgICAgQlJfTVJQX1BPUlRfUk9MRV9QUklNQVJZKTtcbi0tXG5uZXQvYnJpZGdlL2JyX21ycC5jLTMyNy1cdFx0aWYgKCFtcnAtXHUwMDNldGVzdF9tb25pdG9yKSB7XG5uZXQvYnJpZGdlL2JyX21ycC5jOjMyODpcdFx0XHRza2IgPSBicl9tcnBfYWxsb2NfdGVzdF9za2IobXJwLCBwLFxubmV0L2JyaWRnZS9icl9tcnAuYy0zMjktXHRcdFx0XHRcdFx0ICAgIEJSX01SUF9QT1JUX1JPTEVfU0VDT05EQVJZKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMDk6MDA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjM4MzkKCQkJCQkJCW91dHB1dDogMjU5CgkJCQkJCQl0aG91Z2h0czogMzIwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgdGhlIE1SUCBCdWcgRml4KioKCk9rYXksIHNvIEkmIzM5O3ZlIGxvb2tlZCBvdmVyIHRoaXMgcGF0Y2gsIGFuZCBoZXJlJiMzOTtzIG15IHRha2U6IHRoZSBrZXkgaXNzdWUgaXMgYSByYXRoZXIgY2xhc3NpYyBvZmYtYnktb25lIGVycm9yIGluIHRoZSBgYnJfbXJwX2FsbG9jX3Rlc3Rfc2tiYCBmdW5jdGlvbi4gVGhleSYjMzk7cmUgdXNpbmcgYHNpemVvZihvdWkpYCBpbnN0ZWFkIG9mIGBzaXplb2YoKm91aSlgLiAgSSYjMzk7bSBhc3N1bWluZyBgb3VpYCBpcyBhIHBvaW50ZXIgdG8gc29tZSBzb3J0IG9mIHN0cnVjdHVyZSByZWxhdGVkIHRvIHRoZSBvcmdhbml6YXRpb25hbGx5IHVuaXF1ZSBpZGVudGlmaWVyLCB3aGljaCBtYWtlcyBwZXJmZWN0IHNlbnNlIGluIHRoaXMgY29udGV4dC4gVXNpbmcgdGhlIHNpemUgb2YgdGhlICpwb2ludGVyKiByYXRoZXIgdGhhbiB0aGUgKnN0cnVjdHVyZSBpdCBwb2ludHMgdG8qIHdvdWxkIGxlYWQgdG8gYW4gaW5jb3JyZWN0IGxlbmd0aCBjYWxjdWxhdGlvbiB3aGVuIGJ1aWxkaW5nIHRlc3QgcGFja2V0cyB3aXRoaW4gdGhlIE1SUCBmcmFtZXdvcmsuICBUaGlzIGlzIGEgY3JpdGljYWwgZXJyb3Igc2luY2UgaXQgZGlyZWN0bHkgaW1wYWN0cyB0aGUgU2l6ZSBvZiB0aGUgVHlwZSBMZW5ndGggVmFsdWUgKFRMVikgZmllbGQgaW4gdGhlIE1SUCBwYWNrZXQsIHdoaWNoIG1lYW5zIG1hbGZvcm1lZCBwYWNrZXRzIG9yIGV2ZW4gb3V0LW9mLWJvdW5kcyByZWFkcyBvciB3cml0ZXMgY291bGQgYmUgdHJpZ2dlcmVkLgoKRnVuY3Rpb25hbGx5LCB0aGlzIGlzIGEgY2hhbmdlIHRvIHRoZSBuZXR3b3JrIGJyaWRnZSBNUlAgcHJvdG9jb2wgaW1wbGVtZW50YXRpb24sIGFuZCB0aGVyZWZvcmUgd2FycmFudHMgY2FyZWZ1bCB0ZXN0aW5nLiBJJiMzOTtkIGJlIGxvb2tpbmcgYXQgYSBmdXp6aW5nIGNhbXBhaWduIHRvIGVuc3VyZSB0aGVyZSBhcmVuJiMzOTt0IGRvd25zdHJlYW0gY29uc2VxdWVuY2VzIHRvIHRoaXMgY2hhbmdlLiBNeSBpbml0aWFsIGxpc3Qgb2YgJiMzNDtmb2N1cyBzeW1ib2xzJiMzNDsgbG9vayBnb29kIGZvciBhIHRob3JvdWdoIGV2YWx1YXRpb24gb2YgdGhlIGVmZmVjdHMgb2YgdGhpcyBjaGFuZ2U6IHNwZWNpZmljYWxseSBsb29raW5nIGF0IHRoZSBzdGFydCwgYWRkLCBzZXQsIGFuZCBkZWxldGUgb3BlcmF0aW9ucyBvZiB0aGUgTVJQIHByb3RvY29sLiBJIHdpbGwgYWxzbyBtYWtlIHN1cmUgdG8gY2hlY2sgdGhlIHJlY2VpdmUgYW5kIHByb2Nlc3MgbWV0aG9kcy4gSSB3b3VsZCBhbHNvIHJlY29tbWVuZCB0aGF0IHRoZSBNUlAgZnVuY3Rpb25hbGl0eSBiZSByZS10ZXN0ZWQgd2l0aCBgQlJJREdFX01SUGAgZW5hYmxlZC4gVGhlIGltcGFjdCBjb3VsZCBiZSBzdWJ0bGUsIG9yIG11Y2ggd29yc2UsIGRlcGVuZGluZyBvbiBob3cgdGhpcyBpbmNvcnJlY3Qgc2l6ZSB3YXMgYmVpbmcgdXNlZC4gVGhpcyBjb3VsZCBiZSBhIHByZXR0eSBzaWduaWZpY2FudCB2dWxuZXJhYmlsaXR5LCBkZXBlbmRpbmcgb24gdGhlIGltcGxlbWVudGF0aW9uIGRldGFpbHMuIEkmIzM5O2xsIG5lZWQgdG8gZGlnIGludG8gdGhlIGRldGFpbHMgdG8gdW5kZXJzdGFuZCB0aGUgcG90ZW50aWFsIGZvciBleHBsb2l0YXRpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDA5OjAwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtCUklER0VfTVJQJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7YnJfbXJwX3N0YXJ0X3Rlc3QmIzM0OywKICAgICYjMzQ7YnJfbXJwX2FkZCYjMzQ7LAogICAgJiMzNDticl9tcnBfc2V0X3Jpbmdfcm9sZSYjMzQ7LAogICAgJiMzNDticl9tcnBfc2V0X3Jpbmdfc3RhdGUmIzM0OywKICAgICYjMzQ7YnJfbXJwX3N0YXJ0X2luX3Rlc3QmIzM0OywKICAgICYjMzQ7YnJfbXJwX3NldF9pbl9yb2xlJiMzNDssCiAgICAmIzM0O2JyX21ycF9zZXRfaW5fc3RhdGUmIzM0OywKICAgICYjMzQ7YnJfbXJwX3NldF9wb3J0X3N0YXRlJiMzNDssCiAgICAmIzM0O2JyX21ycF9zZXRfcG9ydF9yb2xlJiMzNDssCiAgICAmIzM0O2JyX21ycF9kZWwmIzM0OywKICAgICYjMzQ7YnJfbXJwX3JjdiYjMzQ7LAogICAgJiMzNDticl9tcnBfcHJvY2VzcyYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhbiBpbmNvcnJlY3Qgc2l6ZSBjYWxjdWxhdGlvbiBpbiBgYnJfbXJwX2FsbG9jX3Rlc3Rfc2tiYCB3aGVyZSBgc2l6ZW9mKG91aSlgIChwb2ludGVyIHNpemUpIHdhcyB1c2VkIGluc3RlYWQgb2YgYHNpemVvZigqb3VpKWAgKHN0cnVjdCBzaXplKS4gVGhpcyBhZmZlY3RzIHRoZSBsZW5ndGggb2YgdGhlIGFsbG9jYXRlZC9wb3B1bGF0ZWQgVExWIGluIE1SUCB0ZXN0IHBhY2tldHMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgYnJpZGdlIE1SUCBwcm90b2NvbCBpbXBsZW1lbnRhdGlvbiBhbmQgc2hvdWxkIGJlIGZ1enplZCB0byBlbnN1cmUgY29ycmVjdCBwYWNrZXQgY29uc3RydWN0aW9uIGFuZCBoYW5kbGluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7QlJJREdFX01SUCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2JyX21ycF9zdGFydF90ZXN0JiMzNDssCiAgICAmIzM0O2JyX21ycF9hZGQmIzM0OywKICAgICYjMzQ7YnJfbXJwX3NldF9yaW5nX3JvbGUmIzM0OywKICAgICYjMzQ7YnJfbXJwX3NldF9yaW5nX3N0YXRlJiMzNDssCiAgICAmIzM0O2JyX21ycF9zdGFydF9pbl90ZXN0JiMzNDssCiAgICAmIzM0O2JyX21ycF9zZXRfaW5fcm9sZSYjMzQ7LAogICAgJiMzNDticl9tcnBfc2V0X2luX3N0YXRlJiMzNDssCiAgICAmIzM0O2JyX21ycF9zZXRfcG9ydF9zdGF0ZSYjMzQ7LAogICAgJiMzNDticl9tcnBfc2V0X3BvcnRfcm9sZSYjMzQ7LAogICAgJiMzNDticl9tcnBfZGVsJiMzNDssCiAgICAmIzM0O2JyX21ycF9yY3YmIzM0OywKICAgICYjMzQ7YnJfbXJwX3Byb2Nlc3MmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYW4gaW5jb3JyZWN0IHNpemUgY2FsY3VsYXRpb24gaW4gYGJyX21ycF9hbGxvY190ZXN0X3NrYmAgd2hlcmUgYHNpemVvZihvdWkpYCAocG9pbnRlciBzaXplKSB3YXMgdXNlZCBpbnN0ZWFkIG9mIGBzaXplb2YoKm91aSlgIChzdHJ1Y3Qgc2l6ZSkuIFRoaXMgYWZmZWN0cyB0aGUgbGVuZ3RoIG9mIHRoZSBhbGxvY2F0ZWQvcG9wdWxhdGVkIFRMViBpbiBNUlAgdGVzdCBwYWNrZXRzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGJyaWRnZSBNUlAgcHJvdG9jb2wgaW1wbGVtZW50YXRpb24gYW5kIHNob3VsZCBiZSBmdXp6ZWQgdG8gZW5zdXJlIGNvcnJlY3QgcGFja2V0IGNvbnN0cnVjdGlvbiBhbmQgaGFuZGxpbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNy0yNVQwODo1OToxMy45Nzk5MTIyMTFaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2MDgyOTU5MTE1NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJCUklER0VfTVJQXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiYnJfbXJwX3N0YXJ0X3Rlc3RcIixcbiAgICBcImJyX21ycF9hZGRcIixcbiAgICBcImJyX21ycF9zZXRfcmluZ19yb2xlXCIsXG4gICAgXCJicl9tcnBfc2V0X3Jpbmdfc3RhdGVcIixcbiAgICBcImJyX21ycF9zdGFydF9pbl90ZXN0XCIsXG4gICAgXCJicl9tcnBfc2V0X2luX3JvbGVcIixcbiAgICBcImJyX21ycF9zZXRfaW5fc3RhdGVcIixcbiAgICBcImJyX21ycF9zZXRfcG9ydF9zdGF0ZVwiLFxuICAgIFwiYnJfbXJwX3NldF9wb3J0X3JvbGVcIixcbiAgICBcImJyX21ycF9kZWxcIixcbiAgICBcImJyX21ycF9yY3ZcIixcbiAgICBcImJyX21ycF9wcm9jZXNzXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYW4gaW5jb3JyZWN0IHNpemUgY2FsY3VsYXRpb24gaW4gYGJyX21ycF9hbGxvY190ZXN0X3NrYmAgd2hlcmUgYHNpemVvZihvdWkpYCAocG9pbnRlciBzaXplKSB3YXMgdXNlZCBpbnN0ZWFkIG9mIGBzaXplb2YoKm91aSlgIChzdHJ1Y3Qgc2l6ZSkuIFRoaXMgYWZmZWN0cyB0aGUgbGVuZ3RoIG9mIHRoZSBhbGxvY2F0ZWQvcG9wdWxhdGVkIFRMViBpbiBNUlAgdGVzdCBwYWNrZXRzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGJyaWRnZSBNUlAgcHJvdG9jb2wgaW1wbGVtZW50YXRpb24gYW5kIHNob3VsZCBiZSBmdXp6ZWQgdG8gZW5zdXJlIGNvcnJlY3QgcGFja2V0IGNvbnN0cnVjdGlvbiBhbmQgaGFuZGxpbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDA4OjU5OjEzLjk3OTkyMDcyMVoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTI3NTk0NzA1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgYzFiMDVlZDIzNDM2N2QxN2E2ZTIzMjA1ODNiZjA3ODhlM2EwNzEwOVxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgU2F0IEp1bCAyNSAwODo1OToxMiAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9uZXQvYnJpZGdlL2JyX21ycC5jIGIvbmV0L2JyaWRnZS9icl9tcnAuY1xcbmluZGV4IDNmNzEyNmE3ZDcyMDAzLi4xNzlkMjQ3MGI3MjQ4OCAxMDA2NDRcXG4tLS0gYS9uZXQvYnJpZGdlL2JyX21ycC5jXFxuKysrIGIvbmV0L2JyaWRnZS9icl9tcnAuY1xcbkBAIC0yMTUsNyArMjE1LDcgQEAgc3RhdGljIHN0cnVjdCBza19idWZmICpicl9tcnBfYWxsb2NfdGVzdF9za2Ioc3RydWN0IGJyX21ycCAqbXJwLFxcbiBcXHRcXHRzdHJ1Y3QgYnJfbXJwX291aV9oZHIgKm91aSA9IE5VTEw7XFxuIFxcdFxcdHU4IGxlbmd0aDtcXG4gXFxuLVxcdFxcdGxlbmd0aCA9IHNpemVvZigqc3ViX29wdCkgKyBzaXplb2YoKnN1Yl90bHYpICsgc2l6ZW9mKG91aSkgK1xcbitcXHRcXHRsZW5ndGggPSBzaXplb2YoKnN1Yl9vcHQpICsgc2l6ZW9mKCpzdWJfdGx2KSArIHNpemVvZigqb3VpKSArXFxuIFxcdFxcdFxcdE1SUF9PUFRfUEFERElORztcXG4gXFx0XFx0YnJfbXJwX3NrYl90bHYoc2tiLCBCUl9NUlBfVExWX0hFQURFUl9PUFRJT04sIGxlbmd0aCk7XFxuIFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNVQwODo1OToxNC41MDgzNzE4MjVaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjo2MDMwMTExODQxMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJCUklER0VfTVJQXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiYnJfbXJwX3N0YXJ0X3Rlc3RcIixcbiAgICBcImJyX21ycF9hZGRcIixcbiAgICBcImJyX21ycF9zZXRfcmluZ19yb2xlXCIsXG4gICAgXCJicl9tcnBfc2V0X3Jpbmdfc3RhdGVcIixcbiAgICBcImJyX21ycF9zdGFydF9pbl90ZXN0XCIsXG4gICAgXCJicl9tcnBfc2V0X2luX3JvbGVcIixcbiAgICBcImJyX21ycF9zZXRfaW5fc3RhdGVcIixcbiAgICBcImJyX21ycF9zZXRfcG9ydF9zdGF0ZVwiLFxuICAgIFwiYnJfbXJwX3NldF9wb3J0X3JvbGVcIixcbiAgICBcImJyX21ycF9kZWxcIixcbiAgICBcImJyX21ycF9yY3ZcIixcbiAgICBcImJyX21ycF9wcm9jZXNzXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYW4gaW5jb3JyZWN0IHNpemUgY2FsY3VsYXRpb24gaW4gYGJyX21ycF9hbGxvY190ZXN0X3NrYmAgd2hlcmUgYHNpemVvZihvdWkpYCAocG9pbnRlciBzaXplKSB3YXMgdXNlZCBpbnN0ZWFkIG9mIGBzaXplb2YoKm91aSlgIChzdHJ1Y3Qgc2l6ZSkuIFRoaXMgYWZmZWN0cyB0aGUgbGVuZ3RoIG9mIHRoZSBhbGxvY2F0ZWQvcG9wdWxhdGVkIFRMViBpbiBNUlAgdGVzdCBwYWNrZXRzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGJyaWRnZSBNUlAgcHJvdG9jb2wgaW1wbGVtZW50YXRpb24gYW5kIHNob3VsZCBiZSBmdXp6ZWQgdG8gZW5zdXJlIGNvcnJlY3QgcGFja2V0IGNvbnN0cnVjdGlvbiBhbmQgaGFuZGxpbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpXG4gIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zXG4gICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgQWxzbyBjaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3NcbiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlnc1xuICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IGMxYjA1ZWQyMzQzNjdkMTdhNmUyMzIwNTgzYmYwNzg4ZTNhMDcxMDlcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgU2F0IEp1bCAyNSAwODo1OToxMiAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL25ldC9icmlkZ2UvYnJfbXJwLmMgYi9uZXQvYnJpZGdlL2JyX21ycC5jXG5pbmRleCAzZjcxMjZhN2Q3MjAwMy4uMTc5ZDI0NzBiNzI0ODggMTAwNjQ0XG4tLS0gYS9uZXQvYnJpZGdlL2JyX21ycC5jXG4rKysgYi9uZXQvYnJpZGdlL2JyX21ycC5jXG5AQCAtMjE1LDcgKzIxNSw3IEBAIHN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqYnJfbXJwX2FsbG9jX3Rlc3Rfc2tiKHN0cnVjdCBicl9tcnAgKm1ycCxcbiBcdFx0c3RydWN0IGJyX21ycF9vdWlfaGRyICpvdWkgPSBOVUxMO1xuIFx0XHR1OCBsZW5ndGg7XG4gXG4tXHRcdGxlbmd0aCA9IHNpemVvZigqc3ViX29wdCkgKyBzaXplb2YoKnN1Yl90bHYpICsgc2l6ZW9mKG91aSkgK1xuK1x0XHRsZW5ndGggPSBzaXplb2YoKnN1Yl9vcHQpICsgc2l6ZW9mKCpzdWJfdGx2KSArIHNpemVvZigqb3VpKSArXG4gXHRcdFx0TVJQX09QVF9QQURESU5HO1xuIFx0XHRicl9tcnBfc2tiX3Rsdihza2IsIEJSX01SUF9UTFZfSEVBREVSX09QVElPTiwgbGVuZ3RoKTtcbiBcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDA4OjU5OjE0LjUwODM3MzYzNloiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM1OTYwOTc0MDIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgQnJpZGdlIE1SUCBQYXRjaCoqXG5cbk9rYXksIHNvIEkndmUgZ290IHRoaXMgcGF0Y2ggYWZmZWN0aW5nIGBuZXQvYnJpZGdlL2JyX21ycC5jYCwgYW5kIGl0IGxvb2tzIGxpa2UgYSBzaXplIGNhbGN1bGF0aW9uIGFkanVzdG1lbnQgaXMgdGhlIGtleSBoZXJlLiBTcGVjaWZpY2FsbHksIHRoZSBjaGFuZ2UgaW4gYGJyX21ycF9hbGxvY190ZXN0X3NrYmAgZnJvbSBgc2l6ZW9mKG91aSlgIHRvIGBzaXplb2YoKm91aSlgIGltbWVkaWF0ZWx5IGZsYWdzIG15IGF0dGVudGlvbi4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlLCBkZWZpbml0ZWx5IGltcGFjdGluZyB0aGUgbGVuZ3RoIG9mIGFsbG9jYXRlZCBvciBjYWxjdWxhdGVkIGJ1ZmZlcnMsIHNvIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBpbXBsaWNhdGlvbnMgdGhvcm91Z2hseS5cblxuTXkgbmV4dCBzdGVwIGlzIGNsZWFyOiBJIG5lZWQgdG8gZGlnIGludG8gdGhlIHJlbGV2YW50IGZ1bmN0aW9ucyB3aXRoaW4gYG5ldC9icmlkZ2UvYnJfbXJwLmNgLiBJJ2xsIGJlIG1ldGljdWxvdXNseSBleGFtaW5pbmcgYGJyX21ycF9hbGxvY190ZXN0X3NrYmAgYW5kIGBicl9tcnBfc2tiX3RsdmAsIGFzIHRob3NlIGFyZSB0aGUgY29yZSBhcmVhcyB3aGVyZSB0aGlzIHNpemUgbW9kaWZpY2F0aW9uIHdpbGwgbWFuaWZlc3QgYW5kIHBvdGVudGlhbGx5IGltcGFjdCBiZWhhdmlvci4gR290dGEgaWRlbnRpZnkgKndoeSogdGhpcyBjaGFuZ2Ugd2FzIG1hZGUgYW5kIHdoYXQgY29uc2VxdWVuY2VzIGl0IGJyaW5ncy4gVW5kZXJzdGFuZGluZyBob3cgdGhlIGJ1ZmZlciBzaXplIGltcGFjdHMgZGF0YSBzdHJ1Y3R1cmVzIGFuZCBwcm9jZXNzaW5nIGlzIHBhcmFtb3VudCwgZXNwZWNpYWxseSB3aGVuIGRlYWxpbmcgd2l0aCBicmlkZ2luZyBwcm90b2NvbHMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIwOTQsIk91dHB1dFRva2VucyI6NDEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMDgsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNVQwODo1OToxOC4xMDQ0NzMzMjdaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTA1OTE5MTAxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImJyX21ycF9hbGxvY190ZXN0X3NrYlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvYnJpZGdlL2JyX21ycC5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9icmlkZ2UvYnJfbXJwLmM9MTcxPXN0YXRpYyB2b2lkIGJyX21ycF9za2JfY29tbW9uKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBicl9tcnAgKm1ycClcXG4tLVxcbm5ldC9icmlkZ2UvYnJfbXJwLmMtMTgxLVxcbm5ldC9icmlkZ2UvYnJfbXJwLmM6MTgyOnN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqYnJfbXJwX2FsbG9jX3Rlc3Rfc2tiKHN0cnVjdCBicl9tcnAgKm1ycCxcXG5uZXQvYnJpZGdlL2JyX21ycC5jLTE4My1cXHRcXHRcXHRcXHRcXHQgICAgIHN0cnVjdCBuZXRfYnJpZGdlX3BvcnQgKnAsXFxuLS1cXG5uZXQvYnJpZGdlL2JyX21ycC5jPTI3OT1zdGF0aWMgdm9pZCBicl9tcnBfdGVzdF93b3JrX2V4cGlyZWQoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxcbi0tXFxubmV0L2JyaWRnZS9icl9tcnAuYy0zMTEtXFx0XFx0aWYgKCFtcnAtXFx1MDAzZXRlc3RfbW9uaXRvcikge1xcbm5ldC9icmlkZ2UvYnJfbXJwLmM6MzEyOlxcdFxcdFxcdHNrYiA9IGJyX21ycF9hbGxvY190ZXN0X3NrYihtcnAsIHAsXFxubmV0L2JyaWRnZS9icl9tcnAuYy0zMTMtXFx0XFx0XFx0XFx0XFx0XFx0ICAgIEJSX01SUF9QT1JUX1JPTEVfUFJJTUFSWSk7XFxuLS1cXG5uZXQvYnJpZGdlL2JyX21ycC5jLTMyNy1cXHRcXHRpZiAoIW1ycC1cXHUwMDNldGVzdF9tb25pdG9yKSB7XFxubmV0L2JyaWRnZS9icl9tcnAuYzozMjg6XFx0XFx0XFx0c2tiID0gYnJfbXJwX2FsbG9jX3Rlc3Rfc2tiKG1ycCwgcCxcXG5uZXQvYnJpZGdlL2JyX21ycC5jLTMyOS1cXHRcXHRcXHRcXHRcXHRcXHQgICAgQlJfTVJQX1BPUlRfUk9MRV9TRUNPTkRBUlkpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNVQwODo1OToxOC4yMTAzOTc2ODdaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyNjU4MjgzMzgyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgTVJQIEFsbG9jYXRpb24gVGVzdCoqXG5cbk9rYXksIHNvIGBicl9tcnBfYWxsb2NfdGVzdF9za2JgIGlzIHRyaWdnZXJlZCBieSBgYnJfbXJwX3Rlc3Rfd29ya19leHBpcmVkYC4gVGhhdCdzIHBhcnQgb2YgdGhlIE1lZGlhIFJlZHVuZGFuY3kgUHJvdG9jb2wgYnJpZGdlIGltcGxlbWVudGF0aW9uLiBNYWtlcyBzZW5zZS4gQmVmb3JlIEkgZGlnIHRvbyBkZWVwIGludG8gdGhlIGNvZGUgaXRzZWxmLCBJJ20gZ29pbmcgdG8gdGFrZSBhIHF1aWNrIGxvb2sgYXQgdGhlIEtjb25maWcgZmlsZS4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBNUlAgaXMgYWN0dWFsbHkgZW5hYmxlZCwgYW5kIGNoZWNrIGFueSBjb25maWd1cmF0aW9uIG9wdGlvbnMgcmVsYXRlZCB0byBpdC4gVW5kZXJzdGFuZGluZyB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zIHdpbGwgZ2l2ZSBtZSBhIGJldHRlciBvdmVydmlldyBvZiB3aGF0IHRvIGxvb2sgZm9yIGluIHRoZSBhbGxvY2F0ZWQgY29kZS4gSXQnbGwgZ2l2ZSBtZSBhIGZyYW1ld29yayB0byB1bmRlcnN0YW5kIHdoYXQgdGhlIGNvZGUgaXMgbWVhbnQgdG8gYWNjb21wbGlzaC4gTGV0IG1lIHF1aWNrbHkgc2NhbiB0aGF0IEtjb25maWcuLi5cblxuXG4iLCJJbnB1dFRva2VucyI6MjgzMCwiT3V0cHV0VG9rZW5zIjozMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjU4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDA4OjU5OjIwLjg2ODY4MzYyOVoiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0MTQ2MjYyNTUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIEJSSURHRV9NUlBcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L2JyaWRnZS9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9icmlkZ2UvS2NvbmZpZz01MD1jb25maWcgQlJJREdFX1ZMQU5fRklMVEVSSU5HXFxuLS1cXG5uZXQvYnJpZGdlL0tjb25maWctNjMtXFxubmV0L2JyaWRnZS9LY29uZmlnOjY0OmNvbmZpZyBCUklER0VfTVJQXFxubmV0L2JyaWRnZS9LY29uZmlnLTY1LVxcdGJvb2wgXFxcIk1SUCBwcm90b2NvbFxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMDg6NTk6MjEuMjgzMzE2MDY0WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mjk0MzYwOTk2NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipBbmFseXppbmcgRGVwZW5kZW5jaWVzIGZvciBCUklER0VfTVJQKipcblxuT2theSwgc28gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGFyY2hpdGVjdHVyZSBhcm91bmQgYEJSSURHRV9NUlBgLiBJIGltbWVkaWF0ZWx5IHN0YXJ0IHRoaW5raW5nIGFib3V0IGl0cyBkZXBlbmRlbmNpZXMuIFdoYXQgb3RoZXIgbW9kdWxlcywgc2VydmljZXMsIGRhdGEgc3RydWN0dXJlcywgb3IgZXZlbiBleHRlcm5hbCBzeXN0ZW1zIGRvZXMgdGhpcyBwYXJ0aWN1bGFyIHBpZWNlIG9mIGNvZGUgcmVseSB1cG9uPyBJJ20gZXNzZW50aWFsbHkgdHJhY2luZyB0aGUgY2FsbCBncmFwaCwgYnV0IGZyb20gdGhlIHBlcnNwZWN0aXZlIG9mIGhvdyBNUlAgKE1hdGVyaWFsIFJlcXVpcmVtZW50cyBQbGFubmluZykgaXMgc3BlY2lmaWNhbGx5IGJlaW5nIGhhbmRsZWQgd2l0aGluIHRoZSBicmlkZ2UuIElzIGl0IGEgY29yZSBjYWxjdWxhdGlvbiBlbmdpbmUsIGEgZGF0YSBhZGFwdGVyLCBhbiBpbnRlZ3JhdGlvbiBsYXllciwgb3Igc29tZXRoaW5nIGVsc2UgZW50aXJlbHk/IEtub3dpbmcgdGhlIGRlcGVuZGVuY2llcyB3aWxsIGhlbHAgbWUgaW1tZWRpYXRlbHkgZ3Jhc3AgaXRzIGltcGFjdCBhbmQgcGlucG9pbnQgcG90ZW50aWFsIGFyZWFzIGZvciBvcHRpbWl6YXRpb24sIGRlYnVnZ2luZywgb3IgZnV0dXJlIGludGVncmF0aW9uIGVmZm9ydHMuIFRoaXMgaXMgdGhlIGZpcnN0IHF1ZXN0aW9uIEkgbmVlZCB0byBhbnN3ZXIuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMxNDAsIk91dHB1dFRva2VucyI6MjksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNVQwODo1OToyNC4yMjY5MjgwMTFaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjY1ODIzNzQsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiQlJJREdFX01SUFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvYnJpZGdlL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L2JyaWRnZS9LY29uZmlnPTUwPWNvbmZpZyBCUklER0VfVkxBTl9GSUxURVJJTkdcXG4tLVxcbm5ldC9icmlkZ2UvS2NvbmZpZy02My1cXG5uZXQvYnJpZGdlL0tjb25maWc6NjQ6Y29uZmlnIEJSSURHRV9NUlBcXG5uZXQvYnJpZGdlL0tjb25maWctNjUtXFx0Ym9vbCBcXFwiTVJQIHByb3RvY29sXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNVQwODo1OToyNC4yOTM1MTY3NzVaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyODE1Nzc0MjY5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgYSBzdW1tYXJ5IG9mIG15IHRob3VnaHQgcHJvY2VzcywgYXMgcmVxdWVzdGVkOlxuXG4qKk5hdmlnYXRpbmcgdGhlIEtlcm5lbCdzIE5ldHdvcmsgQnJpZGdlIENvbmZpZ3VyYXRpb24qKlxuXG5Pa2F5LCBzbyBJJ20gZGlnZ2luZyBpbnRvIHRoZSBuZXR3b3JrIGJyaWRnZSBjb25maWd1cmF0aW9uLCBzcGVjaWZpY2FsbHkgd2l0aGluIHRoZSBrZXJuZWwuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byB6ZXJvIGluIG9uIGBuZXQvYnJpZGdlL0tjb25maWdgLiBUaGF0J3Mgd2hlcmUgSSdkIGV4cGVjdCB0byBmaW5kIHRoZSBjb3JlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyByZWxhdGVkIHRvIGJyaWRnaW5nLiBHaXZlbiBteSBmYW1pbGlhcml0eSB3aXRoIHRoZSBrZXJuZWwncyBzdHJ1Y3R1cmUsIEkgaW5zdGluY3RpdmVseSBnbyBzdHJhaWdodCB0byB0aGUgY29uZmlndXJhdGlvbiBmaWxlcy4gQW5kIHRvIHN0YXJ0LCBsZXQncyBsb29rIGFyb3VuZCBsaW5lIDY0IC0gdGhhdCBzZWVtcyBsaWtlIGEgcmVhc29uYWJsZSBwbGFjZSB0byBzdGFydCwgYXMgb2Z0ZW4gaW1wb3J0YW50IGFuZCBmdW5kYW1lbnRhbCBjb25maWcgb3B0aW9ucyBhcmUgaW4gdGhhdCBhcmVhIG9mIGEgZmlsZS4gVGhpcydsbCBsaWtlbHkgY29udGFpbiB0aGUgbWFpbiBgY29uZmlnYCBvcHRpb25zIGFuZCBwb3NzaWJseSBkZXBlbmRlbmNpZXMgZm9yIGJyaWRnZSBmdW5jdGlvbmFsaXR5LCBhbmQgdGhhdCdzIGV4YWN0bHkgd2hhdCBJIG5lZWQgdG8gdW5kZXJzdGFuZC4gTGV0J3Mgc2VlIHdoYXQncyB0aGVyZS4uLlxuXG5cbiIsIklucHV0VG9rZW5zIjozNDE0LCJPdXRwdXRUb2tlbnMiOjMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMDg6NTk6MjcuMTA5Mjk0NTgzWiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjY5NzQwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcIm5ldC9icmlkZ2UvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiA1MCxcbiAgXCJMaW5lQ291bnRcIjogMzBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICA1MDpcXHRjb25maWcgQlJJREdFX1ZMQU5fRklMVEVSSU5HXFxuICA1MTpcXHRcXHRib29sIFxcXCJWTEFOIGZpbHRlcmluZ1xcXCJcXG4gIDUyOlxcdFxcdGRlcGVuZHMgb24gQlJJREdFXFxuICA1MzpcXHRcXHRkZXBlbmRzIG9uIFZMQU5fODAyMVFcXG4gIDU0OlxcdFxcdGRlZmF1bHQgblxcbiAgNTU6XFx0XFx0aGVscFxcbiAgNTY6XFx0XFx0ICBJZiB5b3Ugc2F5IFkgaGVyZSwgdGhlbiB0aGUgRXRoZXJuZXQgYnJpZGdlIHdpbGwgYmUgYWJsZSBzZWxlY3RpdmVseVxcbiAgNTc6XFx0XFx0ICByZWNlaXZlIGFuZCBmb3J3YXJkIHRyYWZmaWMgYmFzZWQgb24gVkxBTiBpbmZvcm1hdGlvbiBpbiB0aGUgcGFja2V0XFxuICA1ODpcXHRcXHQgIGFueSBWTEFOIGluZm9ybWF0aW9uIGNvbmZpZ3VyZWQgb24gdGhlIGJyaWRnZSBwb3J0IG9yIGJyaWRnZSBkZXZpY2UuXFxuICA1OTpcXHRcXG4gIDYwOlxcdFxcdCAgU2F5IE4gdG8gZXhjbHVkZSB0aGlzIHN1cHBvcnQgYW5kIHJlZHVjZSB0aGUgYmluYXJ5IHNpemUuXFxuICA2MTpcXHRcXG4gIDYyOlxcdFxcdCAgSWYgdW5zdXJlLCBzYXkgWS5cXG4gIDYzOlxcdFxcbiAgNjQ6XFx0Y29uZmlnIEJSSURHRV9NUlBcXG4gIDY1OlxcdFxcdGJvb2wgXFxcIk1SUCBwcm90b2NvbFxcXCJcXG4gIDY2OlxcdFxcdGRlcGVuZHMgb24gQlJJREdFXFxuICA2NzpcXHRcXHRkZWZhdWx0IG5cXG4gIDY4OlxcdFxcdGhlbHBcXG4gIDY5OlxcdFxcdCAgSWYgeW91IHNheSBZIGhlcmUsIHRoZW4gdGhlIEV0aGVybmV0IGJyaWRnZSB3aWxsIGJlIGFibGUgdG8gcnVuIE1SUFxcbiAgNzA6XFx0XFx0ICBwcm90b2NvbCB0byBkZXRlY3QgbG9vcHNcXG4gIDcxOlxcdFxcbiAgNzI6XFx0XFx0ICBTYXkgTiB0byBleGNsdWRlIHRoaXMgc3VwcG9ydCBhbmQgcmVkdWNlIHRoZSBiaW5hcnkgc2l6ZS5cXG4gIDczOlxcdFxcbiAgNzQ6XFx0XFx0ICBJZiB1bnN1cmUsIHNheSBOLlxcbiAgNzU6XFx0XFxuICA3NjpcXHRjb25maWcgQlJJREdFX0NGTVxcbiAgNzc6XFx0XFx0Ym9vbCBcXFwiQ0ZNIHByb3RvY29sXFxcIlxcbiAgNzg6XFx0XFx0ZGVwZW5kcyBvbiBCUklER0VcXG4gIDc5OlxcdFxcdGhlbHBcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMDg6NTk6MjcuMTA5MzY2NzAzWiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ1Nzc2ODAwNzYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi5cblxuKipEZWNvZGluZyB0aGUgTVJQIENvbmZpZ3VyYXRpb24gRGVwZW5kZW5jeSoqXG5cblJpZ2h0LCBzbyB0aGUgY29uZmlndXJhdGlvbiBpbiBxdWVzdGlvbiBpcyBgQlJJREdFX01SUGAuIFRoYXQgaW1tZWRpYXRlbHkgdGVsbHMgbWUgaXQncyByZWxhdGVkIHRvIHRoZSBicmlkZ2UgZnVuY3Rpb25hbGl0eSwgc3BlY2lmaWNhbGx5IHRoZSBNUlAgYXNwZWN0cy4gIEl0IGV4cGxpY2l0bHkgc3RhdGVzIGEgZGVwZW5kZW5jeSBvbiBgQlJJREdFYC4gVGhhdCdzIG5vdCBzdXJwcmlzaW5nOyBNUlAgbGlrZWx5IHJlcXVpcmVzIHRoZSBjb3JlIGJyaWRnaW5nIGNvZGUgdG8gYmUgZnVuY3Rpb25hbCBmaXJzdC4gTm8gc3VycHJpc2VzIHRoZXJlLlxuXG5OZXh0LCBJIG5lZWQgdG8gZmlndXJlIG91dCB3aGVyZSB0aGUgTVJQIGNvZGUgaXMga2lja2luZyBpbi4gVGhlIG1lbnRpb24gb2YgdGhlIGZ1bmN0aW9uIGBicl9tcnBfYWxsb2NfdGVzdF9za2JgIGJlaW5nIGBzdGF0aWNgIGlzIGEgdXNlZnVsIGNsdWUuIEJlY2F1c2UgaXQncyBzdGF0aWMsIGl0J3Mgc2NvcGVkIHRvIGl0cyBjb21waWxhdGlvbiB1bml0IGFuZCB3b24ndCBiZSBkaXJlY3RseSBleHBvc2VkIGFzIGEgc3ltYm9sIGluIHRoZSBzdGFuZGFyZCBzeW1ib2wgdGFibGUuICBUaGF0IG1lYW5zIEkgY2FuJ3QgcmVseSBvbiBgbm1gIG9yIHNpbWlsYXIgdG9vbHMgdG8gZmluZCB0aGUgZnVuY3Rpb24sIHNpbmNlIGl0IGhhcyBsaW1pdGVkIHZpc2liaWxpdHkgb3V0c2lkZSB0aGUgZmlsZS4gSXQgYWxzbyBtZWFucyBpdCBtYXkgYmUgaW5saW5lZC5cblxuVGhlcmVmb3JlLCBJIG5lZWQgdG8gdGhpbmsgYWJvdXQgdGhlIG1vcmUgbGlrZWx5IGVudHJ5IHBvaW50cyBmb3IgdGhpcyB3aG9sZSBNUlAgc3Vic3lzdGVtLiBJIG5lZWQgdG8gZm9jdXMgb24gd2hlcmUgdGhlIE1SUCBmdW5jdGlvbmFsaXR5IGlzICphY3R1YWxseSogaW52b2tlZC4gIEkgc2hvdWxkIHN0YXJ0IGxvb2tpbmcgZm9yIHRoaW5ncyBsaWtlIG5ldGxpbmsgaW50ZXJmYWNlIGhhbmRsZXJzLCBtb2R1bGUgaW5pdGlhbGl6YXRpb24gZnVuY3Rpb25zLCBvciBjYWxsYmFjayByb3V0aW5lcyByZWdpc3RlcmVkIHdpdGggdGhlIGJyaWRnZS4gSSdsbCBuZWVkIHRvIGxvb2sgZm9yIGZ1bmN0aW9ucyB0aGF0IGFyZSBub3Qgc3RhdGljLCB0aGF0IGluaXRpYWxpemUgdGhlIE1SUC4gIE9yLCBtb3JlIHNwZWNpZmljYWxseSwgSSBuZWVkIHRvIGZpbmQgdGhlIGVudHJ5IHBvaW50cyAqaW50byogdGhlIE1SUCBjb2RlLlxuXG5cbiIsIklucHV0VG9rZW5zIjozOTkzLCJPdXRwdXRUb2tlbnMiOjM1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTYsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNVQwODo1OTozMS42ODcwNTAyOFoiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTA1OTI3OTUxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImJyX21ycF9cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L2JyaWRnZS9icl9tcnAuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJcXG5GdWxsIG91dHB1dCBpcyB0b28gbG9uZywgc2hvd2luZyA1MDAgb3V0IG9mIDUyMSBsaW5lcy5cXG5Vc2UgbW9yZSBwcmVjaXNlIGV4cHJlc3Npb24gaWYgcG9zc2libGUuXFxuXFxubmV0L2JyaWRnZS9icl9tcnAuYz03PXN0YXRpYyBjb25zdCB1OCBtcnBfaW5fdGVzdF9kbWFjW0VUSF9BTEVOXSA9IHsgMHgxLCAweDE1LCAweDRlLCAweDAsIDB4MCwgMHgzIH07XFxubmV0L2JyaWRnZS9icl9tcnAuYy04LVxcbm5ldC9icmlkZ2UvYnJfbXJwLmM6OTpzdGF0aWMgaW50IGJyX21ycF9wcm9jZXNzKHN0cnVjdCBuZXRfYnJpZGdlX3BvcnQgKnAsIHN0cnVjdCBza19idWZmICpza2IpO1xcbm5ldC9icmlkZ2UvYnJfbXJwLmMtMTAtXFxubmV0L2JyaWRnZS9icl9tcnAuYz0xMT1zdGF0aWMgc3RydWN0IGJyX2ZyYW1lX3R5cGUgbXJwX2ZyYW1lX3R5cGUgX19yZWFkX21vc3RseSA9IHtcXG5uZXQvYnJpZGdlL2JyX21ycC5jLTEyLVxcdC50eXBlID0gY3B1X3RvX2JlMTYoRVRIX1BfTVJQKSxcXG5uZXQvYnJpZGdlL2JyX21ycC5jOjEzOlxcdC5mcmFtZV9oYW5kbGVyID0gYnJfbXJwX3Byb2Nlc3MsXFxubmV0L2JyaWRnZS9icl9tcnAuYy0xNC19O1xcbm5ldC9icmlkZ2UvYnJfbXJwLmMtMTUtXFxubmV0L2JyaWRnZS9icl9tcnAuYzoxNjpzdGF0aWMgYm9vbCBicl9tcnBfaXNfcmluZ19wb3J0KHN0cnVjdCBuZXRfYnJpZGdlX3BvcnQgKnBfcG9ydCxcXG5uZXQvYnJpZGdlL2JyX21ycC5jLTE3LVxcdFxcdFxcdFxcdHN0cnVjdCBuZXRfYnJpZGdlX3BvcnQgKnNfcG9ydCxcXG4tLVxcbm5ldC9icmlkZ2UvYnJfbXJwLmMtMjYtXFxubmV0L2JyaWRnZS9icl9tcnAuYzoyNzpzdGF0aWMgYm9vbCBicl9tcnBfaXNfaW5fcG9ydChzdHJ1Y3QgbmV0X2JyaWRnZV9wb3J0ICppX3BvcnQsXFxubmV0L2JyaWRnZS9icl9tcnAuYy0yOC1cXHRcXHRcXHQgICAgICBzdHJ1Y3QgbmV0X2JyaWRnZV9wb3J0ICpwb3J0KVxcbi0tXFxubmV0L2JyaWRnZS9icl9tcnAuYy0zNS1cXG5uZXQvYnJpZGdlL2JyX21ycC5jOjM2OnN0YXRpYyBzdHJ1Y3QgbmV0X2JyaWRnZV9wb3J0ICpicl9tcnBfZ2V0X3BvcnQoc3RydWN0IG5ldF9icmlkZ2UgKmJyLFxcbm5ldC9icmlkZ2UvYnJfbXJwLmMtMzctXFx0XFx0XFx0XFx0XFx0ICAgICAgIHUzMiBpZmluZGV4KVxcbi0tXFxubmV0L2JyaWRnZS9icl9tcnAuYy01MS1cXG5uZXQvYnJpZGdlL2JyX21ycC5jOjUyOnN0YXRpYyBzdHJ1Y3QgYnJfbXJwICpicl9tcnBfZmluZF9pZChzdHJ1Y3QgbmV0X2JyaWRnZSAqYnIsIHUzMiByaW5nX2lkKVxcbm5ldC9icmlkZ2UvYnJfbXJwLmMtNTMte1xcbi0tXFxubmV0L2JyaWRnZS9icl9tcnAuYy02Ny1cXG5uZXQvYnJpZGdlL2JyX21ycC5jOjY4OnN0YXRpYyBzdHJ1Y3QgYnJfbXJwICpicl9tcnBfZmluZF9pbl9pZChzdHJ1Y3QgbmV0X2JyaWRnZSAqYnIsIHUzMiBpbl9pZClcXG5uZXQvYnJpZGdlL2JyX21ycC5jLTY5LXtcXG4tLVxcbm5ldC9icmlkZ2UvYnJfbXJwLmMtODMtXFxubmV0L2JyaWRnZS9icl9tcnAuYzo4NDpzdGF0aWMgYm9vbCBicl9tcnBfdW5pcXVlX2lmaW5kZXgoc3RydWN0IG5ldF9icmlkZ2UgKmJyLCB1MzIgaWZpbmRleClcXG5uZXQvYnJpZGdlL2JyX21ycC5jLTg1LXtcXG4tLVxcbm5ldC9icmlkZ2UvYnJfbXJwLmMtMTA3LVxcbm5ldC9icmlkZ2UvYnJfbXJwLmM6MTA4OnN0YXRpYyBzdHJ1Y3QgYnJfbXJwICpicl9tcnBfZmluZF9wb3J0KHN0cnVjdCBuZXRfYnJpZGdlICpicixcXG5uZXQvYnJpZGdlL2JyX21ycC5jLTEwOS1cXHRcXHRcXHRcXHQgICAgICAgc3RydWN0IG5ldF9icmlkZ2VfcG9ydCAqcClcXG4tLVxcbm5ldC9icmlkZ2UvYnJfbXJwLmMtMTI2LVxcbm5ldC9icmlkZ2UvYnJfbXJwLmM6MTI3OnN0YXRpYyBpbnQgYnJfbXJwX25leHRfc2VxKHN0cnVjdCBicl9tcnAgKm1ycClcXG5uZXQvYnJpZGdlL2JyX21ycC5jLTEyOC17XFxuLS1cXG5uZXQvYnJpZGdlL2JyX21ycC5jLTEzMi1cXG5uZXQvYnJpZGdlL2JyX21ycC5jOjEzMzpzdGF0aWMgc3RydWN0IHNrX2J1ZmYgKmJyX21ycF9za2JfYWxsb2Moc3RydWN0IG5ldF9icmlkZ2VfcG9ydCAqcCxcXG5uZXQvYnJpZGdlL2JyX21ycC5jLTEzNC1cXHRcXHRcXHRcXHRcXHRjb25zdCB1OCAqc3JjLCBjb25zdCB1OCAqZHN0KVxcbi0tXFxubmV0L2JyaWRnZS9icl9tcnAuYy0xNTktXFxubmV0L2JyaWRnZS9icl9tcnAuYzoxNjA6c3RhdGljIHZvaWQgYnJfbXJwX3NrYl90bHYoc3RydWN0IHNrX2J1ZmYgKnNrYixcXG5uZXQvYnJpZGdlL2JyX21ycC5jOjE2MTpcXHRcXHRcXHQgICBlbnVtIGJyX21ycF90bHZfaGVhZGVyX3R5cGUgdHlwZSxcXG5uZXQvYnJpZGdlL2JyX21ycC5jLTE2Mi1cXHRcXHRcXHQgICB1OCBsZW5ndGgpXFxubmV0L2JyaWRnZS9icl9tcnAuYy0xNjMte1xcbm5ldC9icmlkZ2UvYnJfbXJwLmM6MTY0OlxcdHN0cnVjdCBicl9tcnBfdGx2X2hkciAqaGRyO1xcbm5ldC9icmlkZ2UvYnJfbXJwLmMtMTY1LVxcbi0tXFxubmV0L2JyaWRnZS9icl9tcnAuYy0xNzAtXFxubmV0L2JyaWRnZS9icl9tcnAuYzoxNzE6c3RhdGljIHZvaWQgYnJfbXJwX3NrYl9jb21tb24oc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGJyX21ycCAqbXJwKVxcbm5ldC9icmlkZ2UvYnJfbXJwLmMtMTcyLXtcXG5uZXQvYnJpZGdlL2JyX21ycC5jOjE3MzpcXHRzdHJ1Y3QgYnJfbXJwX2NvbW1vbl9oZHIgKmhkcjtcXG5uZXQvYnJpZGdlL2JyX21ycC5jLTE3NC1cXG5uZXQvYnJpZGdlL2JyX21ycC5jOjE3NTpcXHRicl9tcnBfc2tiX3Rsdihza2IsIEJSX01SUF9UTFZfSEVBREVSX0NPTU1PTiwgc2l6ZW9mKCpoZHIpKTtcXG5uZXQvYnJpZGdlL2JyX21ycC5jLTE3Ni1cXG5uZXQvYnJpZGdlL2JyX21ycC5jLTE3Ny1cXHRoZHIgPSBza2JfcHV0KHNrYiwgc2l6ZW9mKCpoZHIpKTtcXG5uZXQvYnJpZGdlL2JyX21ycC5jOjE3ODpcXHRoZHItXFx1MDAzZXNlcV9pZCA9IGNwdV90b19iZTE2KGJyX21ycF9uZXh0X3NlcShtcnApKTtcXG5uZXQvYnJpZGdlL2JyX21ycC5jLTE3OS1cXHRtZW1zZXQoaGRyLVxcdTAwM2Vkb21haW4sIDB4ZmYsIE1SUF9ET01BSU5fVVVJRF9MRU5HVEgpO1xcbi0tXFxubmV0L2JyaWRnZS9icl9tcnAuYy0xODEtXFxubmV0L2JyaWRnZS9icl9tcnAuYzoxODI6c3RhdGljIHN0cnVjdCBza19idWZmICpicl9tcnBfYWxsb2NfdGVzdF9za2Ioc3RydWN0IGJyX21ycCAqbXJwLFxcbm5ldC9icmlkZ2UvYnJfbXJwLmMtMTgzLVxcdFxcdFxcdFxcdFxcdCAgICAgc3RydWN0IG5ldF9icmlkZ2VfcG9ydCAqcCxcXG5uZXQvYnJpZGdlL2JyX21ycC5jOjE4NDpcXHRcXHRcXHRcXHRcXHQgICAgIGVudW0gYnJfbXJwX3BvcnRfcm9sZV90eXBlIHBvcnRfcm9sZSlcXG5uZXQvYnJpZGdlL2JyX21ycC5jLTE4NS17XFxubmV0L2JyaWRnZS9icl9tcnAuYzoxODY6XFx0c3RydWN0IGJyX21ycF9yaW5nX3Rlc3RfaGRyICpoZHIgPSBOVUxMO1xcbm5ldC9icmlkZ2UvYnJfbXJwLmMtMTg3LVxcdHN0cnVjdCBza19idWZmICpza2IgPSBOVUxMO1xcbi0tXFxubmV0L2JyaWRnZS9icl9tcnAuYy0xOTEtXFxubmV0L2JyaWRnZS9icl9tcnAuYzoxOTI6XFx0c2tiID0gYnJfbXJwX3NrYl9hbGxvYyhwLCBwLVxcdTAwM2VkZXYtXFx1MDAzZWRldl9hZGRyLCBtcnBfdGVzdF9kbWFjKTtcXG5uZXQvYnJpZGdlL2JyX21ycC5jLTE5My1cXHRpZiAoIXNrYilcXG4tLVxcbm5ldC9icmlkZ2UvYnJfbXJwLmMtMTk1LVxcbm5ldC9icmlkZ2UvYnJfbXJwLmM6MTk2OlxcdGJyX21ycF9za2JfdGx2KHNrYiwgQlJfTVJQX1RMVl9IRUFERVJfUklOR19URVNULCBzaXplb2YoKmhkcikpO1xcbm5ldC9icmlkZ2UvYnJfbXJwLmMtMTk3LVxcdGhkciA9IHNrYl9wdXQoc2tiLCBzaXplb2YoKmhkcikpO1xcbi0tXFxubmV0L2JyaWRnZS9icl9tcnAuYy0yMDUtXFxubmV0L2JyaWRnZS9icl9tcnAuYzoyMDY6XFx0YnJfbXJwX3NrYl9jb21tb24oc2tiLCBtcnApO1xcbm5ldC9icmlkZ2UvYnJfbXJwLmMtMjA3LVxcbi0tXFxubmV0L2JyaWRnZS9icl9tcnAuYy0yMTItXFx0aWYgKG1ycC1cXHUwMDNlcmluZ19yb2xlID09IEJSX01SUF9SSU5HX1JPTEVfTVJBKSB7XFxubmV0L2JyaWRnZS9icl9tcnAuYzoyMTM6XFx0XFx0c3RydWN0IGJyX21ycF9zdWJfb3B0aW9uMV9oZHIgKnN1Yl9vcHQgPSBOVUxMO1xcbm5ldC9icmlkZ2UvYnJfbXJwLmM6MjE0OlxcdFxcdHN0cnVjdCBicl9tcnBfdGx2X2hkciAqc3ViX3RsdiA9IE5VTEw7XFxubmV0L2JyaWRnZS9icl9tcnAuYzoyMTU6XFx0XFx0c3RydWN0IGJyX21ycF9vdWlfaGRyICpvdWkgPSBOVUxMO1xcbm5ldC9icmlkZ2UvYnJfbXJwLmMtMjE2LVxcdFxcdHU4IGxlbmd0aDtcXG4tLVxcbm5ldC9icmlkZ2UvYnJfbXJwLmMtMjE5LVxcdFxcdFxcdE1SUF9PUFRfUEFERElORztcXG5uZXQvYnJpZGdlL2JyX21ycC5jOjIyMDpcXHRcXHRicl9tcnBfc2tiX3Rsdihza2IsIEJSX01SUF9UTFZfSEVBREVSX09QVElPTiwgbGVuZ3RoKTtcXG5uZXQvYnJpZGdlL2JyX21ycC5jLTIyMS1cXG4tLVxcbm5ldC9icmlkZ2UvYnJfbXJwLmMtMjMzLVxcbm5ldC9icmlkZ2UvYnJfbXJwLmM6MjM0OlxcdGJyX21ycF9za2JfdGx2KHNrYiwgQlJfTVJQX1RMVl9IRUFERVJfRU5ELCAweDApO1xcbm5ldC9icmlkZ2UvYnJfbXJwLmMtMjM1LVxcbi0tXFxubmV0L2JyaWRnZS9icl9tcnAuYy0yMzgtXFxubmV0L2JyaWRnZS9icl9tcnAuYzoyMzk6c3RhdGljIHN0cnVjdCBza19idWZmICpicl9tcnBfYWxsb2NfaW5fdGVzdF9za2Ioc3RydWN0IGJyX21ycCAqbXJwLFxcbm5ldC9icmlkZ2UvYnJfbXJwLmMtMjQwLVxcdFxcdFxcdFxcdFxcdFxcdHN0cnVjdCBuZXRfYnJpZGdlX3BvcnQgKnAsXFxubmV0L2JyaWRnZS9icl9tcnAuYzoyNDE6XFx0XFx0XFx0XFx0XFx0XFx0ZW51bSBicl9tcnBfcG9ydF9yb2xlX3R5cGUgcG9ydF9yb2xlKVxcbm5ldC9icmlkZ2UvYnJfbXJwLmMtMjQyLXtcXG5uZXQvYnJpZGdlL2JyX21ycC5jOjI0MzpcXHRzdHJ1Y3QgYnJfbXJwX2luX3Rlc3RfaGRyICpoZHIgPSBOVUxMO1xcbm5ldC9icmlkZ2UvYnJfbXJwLmMtMjQ0LVxcdHN0cnVjdCBza19idWZmICpza2IgPSBOVUxMO1xcbi0tXFxubmV0L2JyaWRnZS9icl9tcnAuYy0yNDgtXFxubmV0L2JyaWRnZS9icl9tcnAuYzoyNDk6XFx0c2tiID0gYnJfbXJwX3NrYl9hbGxvYyhwLCBwLVxcdTAwM2VkZXYtXFx1MDAzZWRldl9hZGRyLCBtcnBfaW5fdGVzdF9kbWFjKTtcXG5uZXQvYnJpZGdlL2JyX21ycC5jLTI1MC1cXHRpZiAoIXNrYilcXG4tLVxcbm5ldC9icmlkZ2UvYnJfbXJwLmMtMjUyLVxcbm5ldC9icmlkZ2UvYnJfbXJwLmM6MjUzOlxcdGJyX21ycF9za2JfdGx2KHNrYiwgQlJfTVJQX1RMVl9IRUFERVJfSU5fVEVTVCwgc2l6ZW9mKCpoZHIpKTtcXG5uZXQvYnJpZGdlL2JyX21ycC5jLTI1NC1cXHRoZHIgPSBza2JfcHV0KHNrYiwgc2l6ZW9mKCpoZHIpKTtcXG4tLVxcbm5ldC9icmlkZ2UvYnJfbXJwLmMtMjYyLVxcbm5ldC9icmlkZ2UvYnJfbXJwLmM6MjYzOlxcdGJyX21ycF9za2JfY29tbW9uKHNrYiwgbXJwKTtcXG5uZXQvYnJpZGdlL2JyX21ycC5jOjI2NDpcXHRicl9tcnBfc2tiX3Rsdihza2IsIEJSX01SUF9UTFZfSEVBREVSX0VORCwgMHgwKTtcXG5uZXQvYnJpZGdlL2JyX21ycC5jLTI2NS1cXG4tLVxcbm5ldC9icmlkZ2UvYnJfbXJwLmMtMjc4LSAqL1xcbm5ldC9icmlkZ2UvYnJfbXJwLmM6Mjc5OnN0YXRpYyB2b2lkIGJyX21ycF90ZXN0X3dvcmtfZXhwaXJlZChzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXFxubmV0L2JyaWRnZS9icl9tcnAuYy0yODAte1xcbi0tXFxubmV0L2JyaWRnZS9icl9tcnAuYy0zMTEtXFx0XFx0aWYgKCFtcnAtXFx1MDAzZXRlc3RfbW9uaXRvcikge1xcbm5ldC9icmlkZ2UvYnJfbXJwLmM6MzEyOlxcdFxcdFxcdHNrYiA9IGJyX21ycF9hbGxvY190ZXN0X3NrYihtcnAsIHAsXFxubmV0L2JyaWRnZS9icl9tcnAuYy0zMTMtXFx0XFx0XFx0XFx0XFx0XFx0ICAgIEJSX01SUF9QT1JUX1JPTEVfUFJJTUFSWSk7XFxuLS1cXG5uZXQvYnJpZGdlL2JyX21ycC5jLTMyMS1cXHRcXHRpZiAobm90aWZ5X29wZW4gXFx1MDAyNlxcdTAwMjYgIW1ycC1cXHUwMDNlcmluZ19yb2xlX29mZmxvYWRlZClcXG5uZXQvYnJpZGdlL2JyX21ycC5jOjMyMjpcXHRcXHRcXHRicl9tcnBfcmluZ19wb3J0X29wZW4ocC1cXHUwMDNlZGV2LCB0cnVlKTtcXG5uZXQvYnJpZGdlL2JyX21ycC5jLTMyMy1cXHR9XFxuLS1cXG5uZXQvYnJpZGdlL2JyX21ycC5jLTMyNy1cXHRcXHRpZiAoIW1ycC1cXHUwMDNldGVzdF9tb25pdG9yKSB7XFxubmV0L2JyaWRnZS9icl9tcnAuYzozMjg6XFx0XFx0XFx0c2tiID0gYnJfbXJwX2FsbG9jX3Rlc3Rfc2tiKG1ycCwgcCxcXG5uZXQvYnJpZGdlL2JyX21ycC5jLTMyOS1cXHRcXHRcXHRcXHRcXHRcXHQgICAgQlJfTVJQX1BPUlRfUk9MRV9TRUNPTkRBUlkpO1xcbi0tXFxubmV0L2JyaWRnZS9icl9tcnAuYy0zMzctXFx0XFx0aWYgKG5vdGlmeV9vcGVuIFxcdTAwMjZcXHUwMDI2ICFtcnAtXFx1MDAzZXJpbmdfcm9sZV9vZmZsb2FkZWQpXFxubmV0L2JyaWRnZS9icl9tcnAuYzozMzg6XFx0XFx0XFx0YnJfbXJwX3JpbmdfcG9ydF9vcGVuKHAtXFx1MDAzZWRldiwgdHJ1ZSk7XFxubmV0L2JyaWRnZS9icl9tcnAuYy0zMzktXFx0fVxcbi0tXFxubmV0L2JyaWRnZS9icl9tcnAuYy0zNTEtICovXFxubmV0L2JyaWRnZS9icl9tcnAuYzozNTI6c3RhdGljIHZvaWQgYnJfbXJwX2luX3Rlc3Rfd29ya19leHBpcmVkKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcXG5uZXQvYnJpZGdlL2JyX21ycC5jLTM1My17XFxuLS1cXG5uZXQvYnJpZGdlL2JyX21ycC5jLTM3Ny1cXHRpZiAocCkge1xcbm5ldC9icmlkZ2UvYnJfbXJwLmM6Mzc4OlxcdFxcdHNrYiA9IGJyX21ycF9hbGxvY19pbl90ZXN0X3NrYihtcnAsIHAsXFxubmV0L2JyaWRnZS9icl9tcnAuYy0zNzktXFx0XFx0XFx0XFx0XFx0ICAgICAgIEJSX01SUF9QT1JUX1JPTEVfUFJJTUFSWSk7XFxuLS1cXG5uZXQvYnJpZGdlL2JyX21ycC5jLTM4Ni1cXHRcXHRpZiAobm90aWZ5X29wZW4gXFx1MDAyNlxcdTAwMjYgIW1ycC1cXHUwMDNlaW5fcm9sZV9vZmZsb2FkZWQpXFxubmV0L2JyaWRnZS9icl9tcnAuYzozODc6XFx0XFx0XFx0YnJfbXJwX2luX3BvcnRfb3BlbihwLVxcdTAwM2VkZXYsIHRydWUpO1xcbm5ldC9icmlkZ2UvYnJfbXJwLmMtMzg4LVxcdH1cXG4tLVxcbm5ldC9icmlkZ2UvYnJfbXJwLmMtMzkxLVxcdGlmIChwKSB7XFxubmV0L2JyaWRnZS9icl9tcnAuYzozOTI6XFx0XFx0c2tiID0gYnJfbXJwX2FsbG9jX2luX3Rlc3Rfc2tiKG1ycCwgcCxcXG5uZXQvYnJpZGdlL2JyX21ycC5jLTM5My1cXHRcXHRcXHRcXHRcXHQgICAgICAgQlJfTVJQX1BPUlRfUk9MRV9TRUNPTkRBUlkpO1xcbi0tXFxubmV0L2JyaWRnZS9icl9tcnAuYy00MDAtXFx0XFx0aWYgKG5vdGlmeV9vcGVuIFxcdTAwMjZcXHUwMDI2ICFtcnAtXFx1MDAzZWluX3JvbGVfb2ZmbG9hZGVkKVxcbm5ldC9icmlkZ2UvYnJfbXJwLmM6NDAxOlxcdFxcdFxcdGJyX21ycF9pbl9wb3J0X29wZW4ocC1cXHUwMDNlZGV2LCB0cnVlKTtcXG5uZXQvYnJpZGdlL2JyX21ycC5jLTQwMi1cXHR9XFxuLS1cXG5uZXQvYnJpZGdlL2JyX21ycC5jLTQwNS1cXHRpZiAocCkge1xcbm5ldC9icmlkZ2UvYnJfbXJwLmM6NDA2OlxcdFxcdHNrYiA9IGJyX21ycF9hbGxvY19pbl90ZXN0X3NrYihtcnAsIHAsXFxubmV0L2JyaWRnZS9icl9tcnAuYy00MDctXFx0XFx0XFx0XFx0XFx0ICAgICAgIEJSX01SUF9QT1JUX1JPTEVfSU5URVIpO1xcbi0tXFxubmV0L2JyaWRnZS9icl9tcnAuYy00MTQtXFx0XFx0aWYgKG5vdGlmeV9vcGVuIFxcdTAwMjZcXHUwMDI2ICFtcnAtXFx1MDAzZWluX3JvbGVfb2ZmbG9hZGVkKVxcbm5ldC9icmlkZ2UvYnJfbXJwLmM6NDE1OlxcdFxcdFxcdGJyX21ycF9pbl9wb3J0X29wZW4ocC1cXHUwMDNlZGV2LCB0cnVlKTtcXG5uZXQvYnJpZGdlL2JyX21ycC5jLTQxNi1cXHR9XFxuLS1cXG5uZXQvYnJpZGdlL2JyX21ycC5jLTQyNy0gKi9cXG5uZXQvYnJpZGdlL2JyX21ycC5jOjQyODpzdGF0aWMgdm9pZCBicl9tcnBfZGVsX2ltcGwoc3RydWN0IG5ldF9icmlkZ2UgKmJyLCBzdHJ1Y3QgYnJfbXJwICptcnApXFxubmV0L2JyaWRnZS9icl9tcnAuYy00Mjkte1xcbi0tXFxubmV0L2JyaWRnZS9icl9tcnAuYy00MzQtXFx0Y2FuY2VsX2RlbGF5ZWRfd29ya19zeW5jKFxcdTAwMjZtcnAtXFx1MDAzZXRlc3Rfd29yayk7XFxubmV0L2JyaWRnZS9icl9tcnAuYzo0MzU6XFx0YnJfbXJwX3N3aXRjaGRldl9zZW5kX3JpbmdfdGVzdChiciwgbXJwLCAwLCAwLCAwLCAwKTtcXG5uZXQvYnJpZGdlL2JyX21ycC5jLTQzNi1cXG4tLVxcbm5ldC9icmlkZ2UvYnJfbXJwLmMtNDM4LVxcdGNhbmNlbF9kZWxheWVkX3dvcmtfc3luYyhcXHUwMDI2bXJwLVxcdTAwM2Vpbl90ZXN0X3dvcmspO1xcbm5ldC9icmlkZ2UvYnJfbXJwLmM6NDM5OlxcdGJyX21ycF9zd2l0Y2hkZXZfc2VuZF9pbl90ZXN0KGJyLCBtcnAsIDAsIDAsIDApO1xcbm5ldC9icmlkZ2UvYnJfbXJwLmMtNDQwLVxcbm5ldC9icmlkZ2UvYnJfbXJwLmMtNDQxLVxcdC8qIERpc2FibGUgdGhlIHJvbGVzICovXFxubmV0L2JyaWRnZS9icl9tcnAuYzo0NDI6XFx0YnJfbXJwX3N3aXRjaGRldl9zZXRfcmluZ19yb2xlKGJyLCBtcnAsIEJSX01SUF9SSU5HX1JPTEVfRElTQUJMRUQpO1xcbm5ldC9icmlkZ2UvYnJfbXJwLmMtNDQzLVxcdHAgPSBydG5sX2RlcmVmZXJlbmNlKG1ycC1cXHUwMDNlaV9wb3J0KTtcXG5uZXQvYnJpZGdlL2JyX21ycC5jLTQ0NC1cXHRpZiAocClcXG5uZXQvYnJpZGdlL2JyX21ycC5jOjQ0NTpcXHRcXHRicl9tcnBfc3dpdGNoZGV2X3NldF9pbl9yb2xlKGJyLCBtcnAsIG1ycC1cXHUwMDNlaW5faWQsIG1ycC1cXHUwMDNlcmluZ19pZCxcXG5uZXQvYnJpZGdlL2JyX21ycC5jLTQ0Ni1cXHRcXHRcXHRcXHRcXHQgICAgIEJSX01SUF9JTl9ST0xFX0RJU0FCTEVEKTtcXG5uZXQvYnJpZGdlL2JyX21ycC5jLTQ0Ny1cXG5uZXQvYnJpZGdlL2JyX21ycC5jOjQ0ODpcXHRicl9tcnBfc3dpdGNoZGV2X2RlbChiciwgbXJwKTtcXG5uZXQvYnJpZGdlL2JyX21ycC5jLTQ0OS1cXG4tLVxcbm5ldC9icmlkZ2UvYnJfbXJwLmMtNDU4LVxcdFxcdHNwaW5fdW5sb2NrX2JoKFxcdTAwMjZici1cXHUwMDNlbG9jayk7XFxubmV0L2JyaWRnZS9icl9tcnAuYzo0NTk6XFx0XFx0YnJfbXJwX3BvcnRfc3dpdGNoZGV2X3NldF9zdGF0ZShwLCBzdGF0ZSk7XFxubmV0L2JyaWRnZS9icl9tcnAuYy00NjAtXFx0XFx0cmN1X2Fzc2lnbl9wb2ludGVyKG1ycC1cXHUwMDNlcF9wb3J0LCBOVUxMKTtcXG4tLVxcbm5ldC9icmlkZ2UvYnJfbXJwLmMtNDcwLVxcdFxcdHNwaW5fdW5sb2NrX2JoKFxcdTAwMjZici1cXHUwMDNlbG9jayk7XFxubmV0L2JyaWRnZS9icl9tcnAuYzo0NzE6XFx0XFx0YnJfbXJwX3BvcnRfc3dpdGNoZGV2X3NldF9zdGF0ZShwLCBzdGF0ZSk7XFxubmV0L2JyaWRnZS9icl9tcnAuYy00NzItXFx0XFx0cmN1X2Fzc2lnbl9wb2ludGVyKG1ycC1cXHUwMDNlc19wb3J0LCBOVUxMKTtcXG4tLVxcbm5ldC9icmlkZ2UvYnJfbXJwLmMtNDgyLVxcdFxcdHNwaW5fdW5sb2NrX2JoKFxcdTAwMjZici1cXHUwMDNlbG9jayk7XFxubmV0L2JyaWRnZS9icl9tcnAuYzo0ODM6XFx0XFx0YnJfbXJwX3BvcnRfc3dpdGNoZGV2X3NldF9zdGF0ZShwLCBzdGF0ZSk7XFxubmV0L2JyaWRnZS9icl9tcnAuYy00ODQtXFx0XFx0cmN1X2Fzc2lnbl9wb2ludGVyKG1ycC1cXHUwMDNlaV9wb3J0LCBOVUxMKTtcXG4tLVxcbm5ldC9icmlkZ2UvYnJfbXJwLmMtNDk2LSAqL1xcbm5ldC9icmlkZ2UvYnJfbXJwLmM6NDk3OmludCBicl9tcnBfYWRkKHN0cnVjdCBuZXRfYnJpZGdlICpiciwgc3RydWN0IGJyX21ycF9pbnN0YW5jZSAqaW5zdGFuY2UpXFxubmV0L2JyaWRnZS9icl9tcnAuYy00OTgte1xcbi0tXFxubmV0L2JyaWRnZS9icl9tcnAuYy01MDUtXFx0ICovXFxubmV0L2JyaWRnZS9icl9tcnAuYzo1MDY6XFx0bXJwID0gYnJfbXJwX2ZpbmRfaWQoYnIsIGluc3RhbmNlLVxcdTAwM2VyaW5nX2lkKTtcXG5uZXQvYnJpZGdlL2JyX21ycC5jLTUwNy1cXHRpZiAobXJwKVxcbi0tXFxubmV0L2JyaWRnZS9icl9tcnAuYy01MDktXFxubmV0L2JyaWRnZS9icl9tcnAuYzo1MTA6XFx0aWYgKCFicl9tcnBfZ2V0X3BvcnQoYnIsIGluc3RhbmNlLVxcdTAwM2VwX2lmaW5kZXgpIHx8XFxubmV0L2JyaWRnZS9icl9tcnAuYzo1MTE6XFx0ICAgICFicl9tcnBfZ2V0X3BvcnQoYnIsIGluc3RhbmNlLVxcdTAwM2VzX2lmaW5kZXgpKVxcbm5ldC9icmlkZ2UvYnJfbXJwLmMtNTEyLVxcdFxcdHJldHVybiAtRUlOVkFMO1xcbi0tXFxubmV0L2JyaWRnZS9icl9tcnAuYy01MTQtXFx0LyogSXQgaXMgbm90IHBvc3NpYmxlIHRvIGhhdmUgdGhlIHNhbWUgcG9ydCBwYXJ0IG9mIG11bHRpcGxlIHJpbmdzICovXFxubmV0L2JyaWRnZS9icl9tcnAuYzo1MTU6XFx0aWYgKCFicl9tcnBfdW5pcXVlX2lmaW5kZXgoYnIsIGluc3RhbmNlLVxcdTAwM2VwX2lmaW5kZXgpIHx8XFxubmV0L2JyaWRnZS9icl9tcnAuYzo1MTY6XFx0ICAgICFicl9tcnBfdW5pcXVlX2lmaW5kZXgoYnIsIGluc3RhbmNlLVxcdTAwM2VzX2lmaW5kZXgpKVxcbm5ldC9icmlkZ2UvYnJfbXJwLmMtNTE3LVxcdFxcdHJldHVybiAtRUlOVkFMO1xcbi0tXFxubmV0L2JyaWRnZS9icl9tcnAuYy01MjUtXFxubmV0L2JyaWRnZS9icl9tcnAuYzo1MjY6XFx0cCA9IGJyX21ycF9nZXRfcG9ydChiciwgaW5zdGFuY2UtXFx1MDAzZXBfaWZpbmRleCk7XFxubmV0L2JyaWRnZS9icl9tcnAuYy01MjctXFx0c3Bpbl9sb2NrX2JoKFxcdTAwMjZici1cXHUwMDNlbG9jayk7XFxuLS1cXG5uZXQvYnJpZGdlL2JyX21ycC5jLTUzMi1cXG5uZXQvYnJpZGdlL2JyX21ycC5jOjUzMzpcXHRwID0gYnJfbXJwX2dldF9wb3J0KGJyLCBpbnN0YW5jZS1cXHUwMDNlc19pZmluZGV4KTtcXG5uZXQvYnJpZGdlL2JyX21ycC5jLTUzNC1cXHRzcGluX2xvY2tfYmgoXFx1MDAyNmJyLVxcdTAwM2Vsb2NrKTtcXG4tLVxcbm5ldC9icmlkZ2UvYnJfbXJwLmMtNTQyLVxcbm5ldC9icmlkZ2UvYnJfbXJwLmM6NTQzOlxcdElOSVRfREVMQVlFRF9XT1JLKFxcdTAwMjZtcnAtXFx1MDAzZXRlc3Rfd29yaywgYnJfbXJwX3Rlc3Rfd29ya19leHBpcmVkKTtcXG5uZXQvYnJpZGdlL2JyX21ycC5jOjU0NDpcXHRJTklUX0RFTEFZRURfV09SSyhcXHUwMDI2bXJwLVxcdTAwM2Vpbl90ZXN0X3dvcmssIGJyX21ycF9pbl90ZXN0X3dvcmtfZXhwaXJlZCk7XFxubmV0L2JyaWRnZS9icl9tcnAuYy01NDUtXFx0aGxpc3RfYWRkX3RhaWxfcmN1KFxcdTAwMjZtcnAtXFx1MDAzZWxpc3QsIFxcdTAwMjZici1cXHUwMDNlbXJwX2xpc3QpO1xcbm5ldC9icmlkZ2UvYnJfbXJwLmMtNTQ2LVxcbm5ldC9icmlkZ2UvYnJfbXJwLmM6NTQ3OlxcdGVyciA9IGJyX21ycF9zd2l0Y2hkZXZfYWRkKGJyLCBtcnApO1xcbm5ldC9icmlkZ2UvYnJfbXJwLmMtNTQ4LVxcdGlmIChlcnIpXFxuLS1cXG5uZXQvYnJpZGdlL2JyX21ycC5jLTU1My1kZWxldGVfbXJwOlxcbm5ldC9icmlkZ2UvYnJfbXJwLmM6NTU0OlxcdGJyX21ycF9kZWxfaW1wbChiciwgbXJwKTtcXG5uZXQvYnJpZGdlL2JyX21ycC5jLTU1NS1cXG4tLVxcbm5ldC9icmlkZ2UvYnJfbXJwLmMtNTYxLSAqL1xcbm5ldC9icmlkZ2UvYnJfbXJwLmM6NTYyOnZvaWQgYnJfbXJwX3BvcnRfZGVsKHN0cnVjdCBuZXRfYnJpZGdlICpiciwgc3RydWN0IG5ldF9icmlkZ2VfcG9ydCAqcClcXG5uZXQvYnJpZGdlL2JyX21ycC5jLTU2My17XFxubmV0L2JyaWRnZS9icl9tcnAuYzo1NjQ6XFx0c3RydWN0IGJyX21ycCAqbXJwID0gYnJfbXJwX2ZpbmRfcG9ydChiciwgcCk7XFxubmV0L2JyaWRnZS9icl9tcnAuYy01NjUtXFxuLS1cXG5uZXQvYnJpZGdlL2JyX21ycC5jLTU2OS1cXG5uZXQvYnJpZGdlL2JyX21ycC5jOjU3MDpcXHRicl9tcnBfZGVsX2ltcGwoYnIsIG1ycCk7XFxubmV0L2JyaWRnZS9icl9tcnAuYy01NzEtfVxcbi0tXFxubmV0L2JyaWRnZS9icl9tcnAuYy01NzUtICovXFxubmV0L2JyaWRnZS9icl9tcnAuYzo1NzY6aW50IGJyX21ycF9kZWwoc3RydWN0IG5ldF9icmlkZ2UgKmJyLCBzdHJ1Y3QgYnJfbXJwX2luc3RhbmNlICppbnN0YW5jZSlcXG5uZXQvYnJpZGdlL2JyX21ycC5jLTU3Ny17XFxubmV0L2JyaWRnZS9icl9tcnAuYzo1Nzg6XFx0c3RydWN0IGJyX21ycCAqbXJwID0gYnJfbXJwX2ZpbmRfaWQoYnIsIGluc3RhbmNlLVxcdTAwM2VyaW5nX2lkKTtcXG5uZXQvYnJpZGdlL2JyX21ycC5jLTU3OS1cXG4tLVxcbm5ldC9icmlkZ2UvYnJfbXJwLmMtNTgyLVxcbm5ldC9icmlkZ2UvYnJfbXJwLmM6NTgzOlxcdGJyX21ycF9kZWxfaW1wbChiciwgbXJwKTtcXG5uZXQvYnJpZGdlL2JyX21ycC5jLTU4NC1cXG4tLVxcbm5ldC9icmlkZ2UvYnJfbXJwLmMtNTkwLSAqL1xcbm5ldC9icmlkZ2UvYnJfbXJwLmM6NTkxOmludCBicl9tcnBfc2V0X3BvcnRfc3RhdGUoc3RydWN0IG5ldF9icmlkZ2VfcG9ydCAqcCxcXG5uZXQvYnJpZGdlL2JyX21ycC5jOjU5MjpcXHRcXHRcXHQgIGVudW0gYnJfbXJwX3BvcnRfc3RhdGVfdHlwZSBzdGF0ZSlcXG5uZXQvYnJpZGdlL2JyX21ycC5jLTU5My17XFxuLS1cXG5uZXQvYnJpZGdlL2JyX21ycC5jLTYwOC1cXG5uZXQvYnJpZGdlL2JyX21ycC5jOjYwOTpcXHRicl9tcnBfcG9ydF9zd2l0Y2hkZXZfc2V0X3N0YXRlKHAsIHBvcnRfc3RhdGUpO1xcbm5ldC9icmlkZ2UvYnJfbXJwLmMtNjEwLVxcbi0tXFxubmV0L2JyaWRnZS9icl9tcnAuYy02MTYtICovXFxubmV0L2JyaWRnZS9icl9tcnAuYzo2MTc6aW50IGJyX21ycF9zZXRfcG9ydF9yb2xlKHN0cnVjdCBuZXRfYnJpZGdlX3BvcnQgKnAsXFxubmV0L2JyaWRnZS9icl9tcnAuYzo2MTg6XFx0XFx0XFx0IGVudW0gYnJfbXJwX3BvcnRfcm9sZV90eXBlIHJvbGUpXFxubmV0L2JyaWRnZS9icl9tcnAuYy02MTkte1xcbi0tXFxubmV0L2JyaWRnZS9icl9tcnAuYy02MjQtXFxubmV0L2JyaWRnZS9icl9tcnAuYzo2MjU6XFx0bXJwID0gYnJfbXJwX2ZpbmRfcG9ydChwLVxcdTAwM2ViciwgcCk7XFxubmV0L2JyaWRnZS9icl9tcnAuYy02MjYtXFxuLS1cXG5uZXQvYnJpZGdlL2JyX21ycC5jLTY0MC1cXG5uZXQvYnJpZGdlL2JyX21ycC5jOjY0MTpcXHRicl9tcnBfcG9ydF9zd2l0Y2hkZXZfc2V0X3JvbGUocCwgcm9sZSk7XFxubmV0L2JyaWRnZS9icl9tcnAuYy02NDItXFxuLS1cXG5uZXQvYnJpZGdlL2JyX21ycC5jLTY0OC0gKi9cXG5uZXQvYnJpZGdlL2JyX21ycC5jOjY0OTppbnQgYnJfbXJwX3NldF9yaW5nX3N0YXRlKHN0cnVjdCBuZXRfYnJpZGdlICpicixcXG5uZXQvYnJpZGdlL2JyX21ycC5jOjY1MDpcXHRcXHRcXHQgIHN0cnVjdCBicl9tcnBfcmluZ19zdGF0ZSAqc3RhdGUpXFxubmV0L2JyaWRnZS9icl9tcnAuYy02NTEte1xcbm5ldC9icmlkZ2UvYnJfbXJwLmM6NjUyOlxcdHN0cnVjdCBicl9tcnAgKm1ycCA9IGJyX21ycF9maW5kX2lkKGJyLCBzdGF0ZS1cXHUwMDNlcmluZ19pZCk7XFxubmV0L2JyaWRnZS9icl9tcnAuYy02NTMtXFxuLS1cXG5uZXQvYnJpZGdlL2JyX21ycC5jLTY2MS1cXG5uZXQvYnJpZGdlL2JyX21ycC5jOjY2MjpcXHRicl9tcnBfc3dpdGNoZGV2X3NldF9yaW5nX3N0YXRlKGJyLCBtcnAsIHN0YXRlLVxcdTAwM2VyaW5nX3N0YXRlKTtcXG5uZXQvYnJpZGdlL2JyX21ycC5jLTY2My1cXG4tLVxcbm5ldC9icmlkZ2UvYnJfbXJwLmMtNjcwLSAqL1xcbm5ldC9icmlkZ2UvYnJfbXJwLmM6NjcxOmludCBicl9tcnBfc2V0X3Jpbmdfcm9sZShzdHJ1Y3QgbmV0X2JyaWRnZSAqYnIsXFxubmV0L2JyaWRnZS9icl9tcnAuYzo2NzI6XFx0XFx0XFx0IHN0cnVjdCBicl9tcnBfcmluZ19yb2xlICpyb2xlKVxcbm5ldC9icmlkZ2UvYnJfbXJwLmMtNjczLXtcXG5uZXQvYnJpZGdlL2JyX21ycC5jOjY3NDpcXHRzdHJ1Y3QgYnJfbXJwICptcnAgPSBicl9tcnBfZmluZF9pZChiciwgcm9sZS1cXHUwMDNlcmluZ19pZCk7XFxubmV0L2JyaWRnZS9icl9tcnAuYzo2NzU6XFx0ZW51bSBicl9tcnBfaHdfc3VwcG9ydCBzdXBwb3J0O1xcbm5ldC9icmlkZ2UvYnJfbXJwLmMtNjc2LVxcbi0tXFxubmV0L2JyaWRnZS9icl9tcnAuYy02ODItXFx0LyogSWYgdGhlcmUgaXMgYW4gZXJyb3IganVzdCBiYWlsZWQgb3V0ICovXFxubmV0L2JyaWRnZS9icl9tcnAuYzo2ODM6XFx0c3VwcG9ydCA9IGJyX21ycF9zd2l0Y2hkZXZfc2V0X3Jpbmdfcm9sZShiciwgbXJwLCByb2xlLVxcdTAwM2VyaW5nX3JvbGUpO1xcbm5ldC9icmlkZ2UvYnJfbXJwLmMtNjg0LVxcdGlmIChzdXBwb3J0ID09IEJSX01SUF9OT05FKVxcbi0tXFxubmV0L2JyaWRnZS9icl9tcnAuYy03MDEtICovXFxubmV0L2JyaWRnZS9icl9tcnAuYzo3MDI6aW50IGJyX21ycF9zdGFydF90ZXN0KHN0cnVjdCBuZXRfYnJpZGdlICpicixcXG5uZXQvYnJpZGdlL2JyX21ycC5jOjcwMzpcXHRcXHQgICAgICBzdHJ1Y3QgYnJfbXJwX3N0YXJ0X3Rlc3QgKnRlc3QpXFxubmV0L2JyaWRnZS9icl9tcnAuYy03MDQte1xcbm5ldC9icmlkZ2UvYnJfbXJwLmM6NzA1OlxcdHN0cnVjdCBicl9tcnAgKm1ycCA9IGJyX21ycF9maW5kX2lkKGJyLCB0ZXN0LVxcdTAwM2VyaW5nX2lkKTtcXG5uZXQvYnJpZGdlL2JyX21ycC5jOjcwNjpcXHRlbnVtIGJyX21ycF9od19zdXBwb3J0IHN1cHBvcnQ7XFxubmV0L2JyaWRnZS9icl9tcnAuYy03MDctXFxuLS1cXG5uZXQvYnJpZGdlL2JyX21ycC5jLTcxMy1cXHQgKi9cXG5uZXQvYnJpZGdlL2JyX21ycC5jOjcxNDpcXHRzdXBwb3J0ID0gYnJfbXJwX3N3aXRjaGRldl9zZW5kX3JpbmdfdGVzdChiciwgbXJwLCB0ZXN0LVxcdTAwM2VpbnRlcnZhbCxcXG5uZXQvYnJpZGdlL2JyX21ycC5jLTcxNS1cXHRcXHRcXHRcXHRcXHRcXHQgIHRlc3QtXFx1MDAzZW1heF9taXNzLCB0ZXN0LVxcdTAwM2VwZXJpb2QsXFxuLS1cXG5uZXQvYnJpZGdlL2JyX21ycC5jLTczNi0gKi9cXG5uZXQvYnJpZGdlL2JyX21ycC5jOjczNzppbnQgYnJfbXJwX3NldF9pbl9zdGF0ZShzdHJ1Y3QgbmV0X2JyaWRnZSAqYnIsIHN0cnVjdCBicl9tcnBfaW5fc3RhdGUgKnN0YXRlKVxcbm5ldC9icmlkZ2UvYnJfbXJwLmMtNzM4LXtcXG5uZXQvYnJpZGdlL2JyX21ycC5jOjczOTpcXHRzdHJ1Y3QgYnJfbXJwICptcnAgPSBicl9tcnBfZmluZF9pbl9pZChiciwgc3RhdGUtXFx1MDAzZWluX2lkKTtcXG5uZXQvYnJpZGdlL2JyX21ycC5jLTc0MC1cXG4tLVxcbm5ldC9icmlkZ2UvYnJfbXJwLmMtNzQ4LVxcbm5ldC9icmlkZ2UvYnJfbXJwLmM6NzQ5OlxcdGJyX21ycF9zd2l0Y2hkZXZfc2V0X2luX3N0YXRlKGJyLCBtcnAsIHN0YXRlLVxcdTAwM2Vpbl9zdGF0ZSk7XFxubmV0L2JyaWRnZS9icl9tcnAuYy03NTAtXFxuLS1cXG5uZXQvYnJpZGdlL2JyX21ycC5jLTc1Ny0gKi9cXG5uZXQvYnJpZGdlL2JyX21ycC5jOjc1ODppbnQgYnJfbXJwX3NldF9pbl9yb2xlKHN0cnVjdCBuZXRfYnJpZGdlICpiciwgc3RydWN0IGJyX21ycF9pbl9yb2xlICpyb2xlKVxcbm5ldC9icmlkZ2UvYnJfbXJwLmMtNzU5LXtcXG5uZXQvYnJpZGdlL2JyX21ycC5jOjc2MDpcXHRzdHJ1Y3QgYnJfbXJwICptcnAgPSBicl9tcnBfZmluZF9pZChiciwgcm9sZS1cXHUwMDNlcmluZ19pZCk7XFxubmV0L2JyaWRnZS9icl9tcnAuYzo3NjE6XFx0ZW51bSBicl9tcnBfaHdfc3VwcG9ydCBzdXBwb3J0O1xcbm5ldC9icmlkZ2UvYnJfbXJwLmMtNzYyLVxcdHN0cnVjdCBuZXRfYnJpZGdlX3BvcnQgKnA7XFxuLS1cXG5uZXQvYnJpZGdlL2JyX21ycC5jLTc2Ni1cXG5uZXQvYnJpZGdlL2JyX21ycC5jOjc2NzpcXHRpZiAoIWJyX21ycF9nZXRfcG9ydChiciwgcm9sZS1cXHUwMDNlaV9pZmluZGV4KSlcXG5uZXQvYnJpZGdlL2JyX21ycC5jLTc2OC1cXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4tLVxcbm5ldC9icmlkZ2UvYnJfbXJwLmMtNzc5LVxcdFxcdGNhbmNlbF9kZWxheWVkX3dvcmtfc3luYyhcXHUwMDI2bXJwLVxcdTAwM2Vpbl90ZXN0X3dvcmspO1xcbm5ldC9icmlkZ2UvYnJfbXJwLmM6NzgwOlxcdFxcdGJyX21ycF9zd2l0Y2hkZXZfc2VuZF9pbl90ZXN0KGJyLCBtcnAsIDAsIDAsIDApO1xcbm5ldC9icmlkZ2UvYnJfbXJwLmMtNzgxLVxcbi0tXFxubmV0L2JyaWRnZS9icl9tcnAuYy03ODgtXFx0XFx0c3Bpbl91bmxvY2tfYmgoXFx1MDAyNmJyLVxcdTAwM2Vsb2NrKTtcXG5uZXQvYnJpZGdlL2JyX21ycC5jOjc4OTpcXHRcXHRicl9tcnBfcG9ydF9zd2l0Y2hkZXZfc2V0X3N0YXRlKHAsIHN0YXRlKTtcXG5uZXQvYnJpZGdlL2JyX21ycC5jLTc5MC1cXHRcXHRyY3VfYXNzaWduX3BvaW50ZXIobXJwLVxcdTAwM2VpX3BvcnQsIE5VTEwpO1xcbi0tXFxubmV0L2JyaWRnZS9icl9tcnAuYy03OTgtXFx0LyogSXQgaXMgbm90IHBvc3NpYmxlIHRvIGhhdmUgdGhlIHNhbWUgcG9ydCBwYXJ0IG9mIG11bHRpcGxlIHJpbmdzICovXFxubmV0L2JyaWRnZS9icl9tcnAuYzo3OTk6XFx0aWYgKCFicl9tcnBfdW5pcXVlX2lmaW5kZXgoYnIsIHJvbGUtXFx1MDAzZWlfaWZpbmRleCkpXFxubmV0L2JyaWRnZS9icl9tcnAuYy04MDAtXFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuLS1cXG5uZXQvYnJpZGdlL2JyX21ycC5jLTgwOC1cXG5uZXQvYnJpZGdlL2JyX21ycC5jOjgwOTpcXHRwID0gYnJfbXJwX2dldF9wb3J0KGJyLCByb2xlLVxcdTAwM2VpX2lmaW5kZXgpO1xcbm5ldC9icmlkZ2UvYnJfbXJwLmMtODEwLVxcdHNwaW5fbG9ja19iaChcXHUwMDI2YnItXFx1MDAzZWxvY2spO1xcbi0tXFxubmV0L2JyaWRnZS9icl9tcnAuYy04MTktXFx0LyogSWYgdGhlcmUgaXMgYW4gZXJyb3IganVzdCBiYWlsZWQgb3V0ICovXFxubmV0L2JyaWRnZS9icl9tcnAuYzo4MjA6XFx0c3VwcG9ydCA9IGJyX21ycF9zd2l0Y2hkZXZfc2V0X2luX3JvbGUoYnIsIG1ycCwgcm9sZS1cXHUwMDNlaW5faWQsXFxubmV0L2JyaWRnZS9icl9tcnAuYy04MjEtXFx0XFx0XFx0XFx0XFx0ICAgICAgIHJvbGUtXFx1MDAzZXJpbmdfaWQsIHJvbGUtXFx1MDAzZWluX3JvbGUpO1xcbi0tXFxubmV0L2JyaWRnZS9icl9tcnAuYy04MzktICovXFxubmV0L2JyaWRnZS9icl9tcnAuYzo4NDA6aW50IGJyX21ycF9zdGFydF9pbl90ZXN0KHN0cnVjdCBuZXRfYnJpZGdlICpicixcXG5uZXQvYnJpZGdlL2JyX21ycC5jOjg0MTpcXHRcXHRcXHQgc3RydWN0IGJyX21ycF9zdGFydF9pbl90ZXN0ICppbl90ZXN0KVxcbm5ldC9icmlkZ2UvYnJfbXJwLmMtODQyLXtcXG5uZXQvYnJpZGdlL2JyX21ycC5jOjg0MzpcXHRzdHJ1Y3QgYnJfbXJwICptcnAgPSBicl9tcnBfZmluZF9pbl9pZChiciwgaW5fdGVzdC1cXHUwMDNlaW5faWQpO1xcbm5ldC9icmlkZ2UvYnJfbXJwLmM6ODQ0OlxcdGVudW0gYnJfbXJwX2h3X3N1cHBvcnQgc3VwcG9ydDtcXG5uZXQvYnJpZGdlL2JyX21ycC5jLTg0NS1cXG4tLVxcbm5ldC9icmlkZ2UvYnJfbXJwLmMtODU0LVxcdCAqL1xcbm5ldC9icmlkZ2UvYnJfbXJwLmM6ODU1OlxcdHN1cHBvcnQgPSAgYnJfbXJwX3N3aXRjaGRldl9zZW5kX2luX3Rlc3QoYnIsIG1ycCwgaW5fdGVzdC1cXHUwMDNlaW50ZXJ2YWwsXFxubmV0L2JyaWRnZS9icl9tcnAuYy04NTYtXFx0XFx0XFx0XFx0XFx0XFx0IGluX3Rlc3QtXFx1MDAzZW1heF9taXNzLFxcbi0tXFxubmV0L2JyaWRnZS9icl9tcnAuYy04NzQtLyogRGV0ZXJtaW5lIGlmIHRoZSBmcmFtZSB0eXBlIGlzIGEgcmluZyBmcmFtZSAqL1xcbm5ldC9icmlkZ2UvYnJfbXJwLmM6ODc1OnN0YXRpYyBib29sIGJyX21ycF9yaW5nX2ZyYW1lKHN0cnVjdCBza19idWZmICpza2IpXFxubmV0L2JyaWRnZS9icl9tcnAuYy04NzYte1xcbm5ldC9icmlkZ2UvYnJfbXJwLmM6ODc3OlxcdGNvbnN0IHN0cnVjdCBicl9tcnBfdGx2X2hkciAqaGRyO1xcbm5ldC9icmlkZ2UvYnJfbXJwLmM6ODc4OlxcdHN0cnVjdCBicl9tcnBfdGx2X2hkciBfaGRyO1xcbm5ldC9icmlkZ2UvYnJfbXJwLmMtODc5LVxcbi0tXFxubmV0L2JyaWRnZS9icl9tcnAuYy04OTQtLyogRGV0ZXJtaW5lIGlmIHRoZSBmcmFtZSB0eXBlIGlzIGFuIGludGVyY29ubmVjdCBmcmFtZSAqL1xcbm5ldC9icmlkZ2UvYnJfbXJwLmM6ODk1OnN0YXRpYyBib29sIGJyX21ycF9pbl9mcmFtZShzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbm5ldC9icmlkZ2UvYnJfbXJwLmMtODk2LXtcXG5uZXQvYnJpZGdlL2JyX21ycC5jOjg5NzpcXHRjb25zdCBzdHJ1Y3QgYnJfbXJwX3Rsdl9oZHIgKmhkcjtcXG5uZXQvYnJpZGdlL2JyX21ycC5jOjg5ODpcXHRzdHJ1Y3QgYnJfbXJwX3Rsdl9oZHIgX2hkcjtcXG5uZXQvYnJpZGdlL2JyX21ycC5jLTg5OS1cXG4tLVxcbm5ldC9icmlkZ2UvYnJfbXJwLmMtOTE3LSAqL1xcbm5ldC9icmlkZ2UvYnJfbXJwLmM6OTE4OnN0YXRpYyB2b2lkIGJyX21ycF9tcm1fcHJvY2VzcyhzdHJ1Y3QgYnJfbXJwICptcnAsIHN0cnVjdCBuZXRfYnJpZGdlX3BvcnQgKnBvcnQsXFxubmV0L2JyaWRnZS9icl9tcnAuYy05MTktXFx0XFx0XFx0ICAgICAgIHN0cnVjdCBza19idWZmICpza2IpXFxubmV0L2JyaWRnZS9icl9tcnAuYy05MjAte1xcbm5ldC9icmlkZ2UvYnJfbXJwLmM6OTIxOlxcdGNvbnN0IHN0cnVjdCBicl9tcnBfdGx2X2hkciAqaGRyO1xcbm5ldC9icmlkZ2UvYnJfbXJwLmM6OTIyOlxcdHN0cnVjdCBicl9tcnBfdGx2X2hkciBfaGRyO1xcbm5ldC9icmlkZ2UvYnJfbXJwLmMtOTIzLVxcbi0tXFxubmV0L2JyaWRnZS9icl9tcnAuYy05MzktXFx0aWYgKG1ycC1cXHUwMDNlcmluZ19zdGF0ZSAhPSBCUl9NUlBfUklOR19TVEFURV9DTE9TRUQpXFxubmV0L2JyaWRnZS9icl9tcnAuYzo5NDA6XFx0XFx0YnJfbXJwX3JpbmdfcG9ydF9vcGVuKHBvcnQtXFx1MDAzZWRldiwgZmFsc2UpO1xcbm5ldC9icmlkZ2UvYnJfbXJwLmMtOTQxLX1cXG4tLVxcbm5ldC9icmlkZ2UvYnJfbXJwLmMtOTQzLS8qIERldGVybWluZSBpZiB0aGUgdGVzdCBoZHIgaGFzIGEgYmV0dGVyIHByaW9yaXR5IHRoYW4gdGhlIG5vZGUgKi9cXG5uZXQvYnJpZGdlL2JyX21ycC5jOjk0NDpzdGF0aWMgYm9vbCBicl9tcnBfdGVzdF9iZXR0ZXJfdGhhbl9vd24oc3RydWN0IGJyX21ycCAqbXJwLFxcbm5ldC9icmlkZ2UvYnJfbXJwLmMtOTQ1LVxcdFxcdFxcdFxcdFxcdHN0cnVjdCBuZXRfYnJpZGdlICpicixcXG5uZXQvYnJpZGdlL2JyX21ycC5jOjk0NjpcXHRcXHRcXHRcXHRcXHRjb25zdCBzdHJ1Y3QgYnJfbXJwX3JpbmdfdGVzdF9oZHIgKmhkcilcXG5uZXQvYnJpZGdlL2JyX21ycC5jLTk0Ny17XFxuLS1cXG5uZXQvYnJpZGdlL2JyX21ycC5jLTk2MS0gKi9cXG5uZXQvYnJpZGdlL2JyX21ycC5jOjk2MjpzdGF0aWMgdm9pZCBicl9tcnBfbXJhX3Byb2Nlc3Moc3RydWN0IGJyX21ycCAqbXJwLCBzdHJ1Y3QgbmV0X2JyaWRnZSAqYnIsXFxubmV0L2JyaWRnZS9icl9tcnAuYy05NjMtXFx0XFx0XFx0ICAgICAgIHN0cnVjdCBuZXRfYnJpZGdlX3BvcnQgKnBvcnQsXFxuLS1cXG5uZXQvYnJpZGdlL2JyX21ycC5jLTk2NS17XFxubmV0L2JyaWRnZS9icl9tcnAuYzo5NjY6XFx0Y29uc3Qgc3RydWN0IGJyX21ycF9yaW5nX3Rlc3RfaGRyICp0ZXN0X2hkcjtcXG5uZXQvYnJpZGdlL2JyX21ycC5jOjk2NzpcXHRzdHJ1Y3QgYnJfbXJwX3JpbmdfdGVzdF9oZHIgX3Rlc3RfaGRyO1xcbm5ldC9icmlkZ2UvYnJfbXJwLmM6OTY4OlxcdGNvbnN0IHN0cnVjdCBicl9tcnBfdGx2X2hkciAqaGRyO1xcbm5ldC9icmlkZ2UvYnJfbXJwLmM6OTY5OlxcdHN0cnVjdCBicl9tcnBfdGx2X2hkciBfaGRyO1xcbm5ldC9icmlkZ2UvYnJfbXJwLmMtOTcwLVxcbi0tXFxubmV0L2JyaWRnZS9icl9tcnAuYy05ODktXFx0ICovXFxubmV0L2JyaWRnZS9icl9tcnAuYzo5OTA6XFx0aWYgKGJyX21ycF90ZXN0X2JldHRlcl90aGFuX293bihtcnAsIGJyLCB0ZXN0X2hkcikpXFxubmV0L2JyaWRnZS9icl9tcnAuYy05OTEtXFx0XFx0bXJwLVxcdTAwM2V0ZXN0X2NvdW50X21pc3MgPSAwO1xcbi0tXFxubmV0L2JyaWRnZS9icl9tcnAuYy05OTctICovXFxubmV0L2JyaWRnZS9icl9tcnAuYzo5OTg6c3RhdGljIGJvb2wgYnJfbXJwX21pbV9wcm9jZXNzKHN0cnVjdCBicl9tcnAgKm1ycCwgc3RydWN0IG5ldF9icmlkZ2VfcG9ydCAqcG9ydCxcXG5uZXQvYnJpZGdlL2JyX21ycC5jLTk5OS1cXHRcXHRcXHQgICAgICAgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG5uZXQvYnJpZGdlL2JyX21ycC5jLTEwMDAte1xcbm5ldC9icmlkZ2UvYnJfbXJwLmM6MTAwMTpcXHRjb25zdCBzdHJ1Y3QgYnJfbXJwX2luX3Rlc3RfaGRyICppbl9oZHI7XFxubmV0L2JyaWRnZS9icl9tcnAuYzoxMDAyOlxcdHN0cnVjdCBicl9tcnBfaW5fdGVzdF9oZHIgX2luX2hkcjtcXG5uZXQvYnJpZGdlL2JyX21ycC5jOjEwMDM6XFx0Y29uc3Qgc3RydWN0IGJyX21ycF90bHZfaGRyICpoZHI7XFxubmV0L2JyaWRnZS9icl9tcnAuYzoxMDA0OlxcdHN0cnVjdCBicl9tcnBfdGx2X2hkciBfaGRyO1xcbm5ldC9icmlkZ2UvYnJfbXJwLmMtMTAwNS1cXG4tLVxcbm5ldC9icmlkZ2UvYnJfbXJwLmMtMTAyOC1cXHRpZiAobXJwLVxcdTAwM2Vpbl9zdGF0ZSAhPSBCUl9NUlBfSU5fU1RBVEVfQ0xPU0VEKVxcbm5ldC9icmlkZ2UvYnJfbXJwLmM6MTAyOTpcXHRcXHRicl9tcnBfaW5fcG9ydF9vcGVuKHBvcnQtXFx1MDAzZWRldiwgZmFsc2UpO1xcbm5ldC9icmlkZ2UvYnJfbXJwLmMtMTAzMC1cXG4tLVxcbm5ldC9icmlkZ2UvYnJfbXJwLmMtMTAzNi0gKi9cXG5uZXQvYnJpZGdlL2JyX21ycC5jOjEwMzc6c3RhdGljIHU4IGJyX21ycF9nZXRfZnJhbWVfdHlwZShzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbm5ldC9icmlkZ2UvYnJfbXJwLmMtMTAzOC17XFxubmV0L2JyaWRnZS9icl9tcnAuYzoxMDM5OlxcdGNvbnN0IHN0cnVjdCBicl9tcnBfdGx2X2hkciAqaGRyO1xcbm5ldC9icmlkZ2UvYnJfbXJwLmM6MTA0MDpcXHRzdHJ1Y3QgYnJfbXJwX3Rsdl9oZHIgX2hkcjtcXG5uZXQvYnJpZGdlL2JyX21ycC5jLTEwNDEtXFxuLS1cXG5uZXQvYnJpZGdlL2JyX21ycC5jLTEwNTEtXFxubmV0L2JyaWRnZS9icl9tcnAuYzoxMDUyOnN0YXRpYyBib29sIGJyX21ycF9tcm1fYmVoYXZpb3VyKHN0cnVjdCBicl9tcnAgKm1ycClcXG5uZXQvYnJpZGdlL2JyX21ycC5jLTEwNTMte1xcbi0tXFxubmV0L2JyaWRnZS9icl9tcnAuYy0xMDYwLVxcbm5ldC9icmlkZ2UvYnJfbXJwLmM6MTA2MTpzdGF0aWMgYm9vbCBicl9tcnBfbXJjX2JlaGF2aW91cihzdHJ1Y3QgYnJfbXJwICptcnApXFxubmV0L2JyaWRnZS9icl9tcnAuYy0xMDYyLXtcXG4tLVxcbm5ldC9icmlkZ2UvYnJfbXJwLmMtMTA3My0gKi9cXG5uZXQvYnJpZGdlL2JyX21ycC5jOjEwNzQ6c3RhdGljIGludCBicl9tcnBfcmN2KHN0cnVjdCBuZXRfYnJpZGdlX3BvcnQgKnAsXFxubmV0L2JyaWRnZS9icl9tcnAuYy0xMDc1LVxcdFxcdCAgICAgIHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxuLS1cXG5uZXQvYnJpZGdlL2JyX21ycC5jLTEwODYtXFx0YnIgPSBwLVxcdTAwM2VicjtcXG5uZXQvYnJpZGdlL2JyX21ycC5jOjEwODc6XFx0bXJwID0gIGJyX21ycF9maW5kX3BvcnQoYnIsIHApO1xcbm5ldC9icmlkZ2UvYnJfbXJwLmMtMTA4OC1cXHRpZiAodW5saWtlbHkoIW1ycCkpXFxuLS1cXG5uZXQvYnJpZGdlL2JyX21ycC5jLTExMDMtXFx0ICovXFxubmV0L2JyaWRnZS9icl9tcnAuYzoxMTA0OlxcdGlmIChicl9tcnBfcmluZ19mcmFtZShza2IpKSB7XFxubmV0L2JyaWRnZS9icl9tcnAuYy0xMTA1LVxcdFxcdC8qIElmIHRoZSByb2xlIGlzIE1STSB0aGVuIGRvbid0IGZvcndhcmQgdGhlIGZyYW1lcyAqL1xcbm5ldC9icmlkZ2UvYnJfbXJwLmMtMTEwNi1cXHRcXHRpZiAobXJwLVxcdTAwM2VyaW5nX3JvbGUgPT0gQlJfTVJQX1JJTkdfUk9MRV9NUk0pIHtcXG5uZXQvYnJpZGdlL2JyX21ycC5jOjExMDc6XFx0XFx0XFx0YnJfbXJwX21ybV9wcm9jZXNzKG1ycCwgcCwgc2tiKTtcXG5uZXQvYnJpZGdlL2JyX21ycC5jLTExMDgtXFx0XFx0XFx0Z290byBub19mb3J3YXJkO1xcbi0tXFxubmV0L2JyaWRnZS9icl9tcnAuYy0xMTE1LVxcdFxcdFxcdGlmICghbXJwLVxcdTAwM2V0ZXN0X21vbml0b3IpIHtcXG5uZXQvYnJpZGdlL2JyX21ycC5jOjExMTY6XFx0XFx0XFx0XFx0YnJfbXJwX21ybV9wcm9jZXNzKG1ycCwgcCwgc2tiKTtcXG5uZXQvYnJpZGdlL2JyX21ycC5jLTExMTctXFx0XFx0XFx0XFx0Z290byBub19mb3J3YXJkO1xcbi0tXFxubmV0L2JyaWRnZS9icl9tcnAuYy0xMTE5LVxcbm5ldC9icmlkZ2UvYnJfbXJwLmM6MTEyMDpcXHRcXHRcXHRicl9tcnBfbXJhX3Byb2Nlc3MobXJwLCBiciwgcCwgc2tiKTtcXG5uZXQvYnJpZGdlL2JyX21ycC5jLTExMjEtXFx0XFx0fVxcbi0tXFxubmV0L2JyaWRnZS9icl9tcnAuYy0xMTI1LVxcbm5ldC9icmlkZ2UvYnJfbXJwLmM6MTEyNjpcXHRpZiAoYnJfbXJwX2luX2ZyYW1lKHNrYikpIHtcXG5uZXQvYnJpZGdlL2JyX21ycC5jOjExMjc6XFx0XFx0dTggaW5fdHlwZSA9IGJyX21ycF9nZXRfZnJhbWVfdHlwZShza2IpO1xcbm5ldC9icmlkZ2UvYnJfbXJwLmMtMTEyOC1cXG4tLVxcbm5ldC9icmlkZ2UvYnJfbXJwLmMtMTEzNC1cXHRcXHQgKi9cXG5uZXQvYnJpZGdlL2JyX21ycC5jOjExMzU6XFx0XFx0aWYgKGJyX21ycF9pc19yaW5nX3BvcnQocF9wb3J0LCBzX3BvcnQsIHApIFxcdTAwMjZcXHUwMDI2XFxubmV0L2JyaWRnZS9icl9tcnAuYy0xMTM2LVxcdFxcdCAgICBwLVxcdTAwM2VzdGF0ZSA9PSBCUl9TVEFURV9CTE9DS0lORyBcXHUwMDI2XFx1MDAyNlxcbi0tXFxubmV0L2JyaWRnZS9icl9tcnAuYy0xMTQzLVxcdFxcdCAqL1xcbm5ldC9icmlkZ2UvYnJfbXJwLmM6MTE0NDpcXHRcXHRpZiAoYnJfbXJwX21ybV9iZWhhdmlvdXIobXJwKSBcXHUwMDI2XFx1MDAyNlxcbm5ldC9icmlkZ2UvYnJfbXJwLmM6MTE0NTpcXHRcXHQgICAgYnJfbXJwX2lzX3JpbmdfcG9ydChwX3BvcnQsIHNfcG9ydCwgcCkgXFx1MDAyNlxcdTAwMjZcXG5uZXQvYnJpZGdlL2JyX21ycC5jLTExNDYtXFx0XFx0ICAgIChzX3BvcnQtXFx1MDAzZXN0YXRlICE9IEJSX1NUQVRFX0ZPUldBUkRJTkcgfHxcXG4tLVxcbm5ldC9icmlkZ2UvYnJfbXJwLmMtMTE1NS1cXHRcXHQgKi9cXG5uZXQvYnJpZGdlL2JyX21ycC5jOjExNTY6XFx0XFx0aWYgKGJyX21ycF9tcmNfYmVoYXZpb3VyKG1ycCkgXFx1MDAyNlxcdTAwMjZcXG5uZXQvYnJpZGdlL2JyX21ycC5jLTExNTctXFx0XFx0ICAgIG1ycC1cXHUwMDNlaW5fcm9sZSA9PSBCUl9NUlBfSU5fUk9MRV9ESVNBQkxFRClcXG4tLVxcbm5ldC9icmlkZ2UvYnJfbXJwLmMtMTE2NC1cXHRcXHRcXHRcXHQgKi9cXG5uZXQvYnJpZGdlL2JyX21ycC5jOjExNjU6XFx0XFx0XFx0XFx0aWYgKGJyX21ycF9taW1fcHJvY2VzcyhtcnAsIHAsIHNrYikpIHtcXG5uZXQvYnJpZGdlL2JyX21ycC5jLTExNjYtXFx0XFx0XFx0XFx0XFx0Z290byBub19mb3J3YXJkO1xcbm5ldC9icmlkZ2UvYnJfbXJwLmMtMTE2Ny1cXHRcXHRcXHRcXHR9IGVsc2Uge1xcbm5ldC9icmlkZ2UvYnJfbXJwLmM6MTE2ODpcXHRcXHRcXHRcXHRcXHRpZiAoYnJfbXJwX2lzX3JpbmdfcG9ydChwX3BvcnQsIHNfcG9ydCxcXG5uZXQvYnJpZGdlL2JyX21ycC5jLTExNjktXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0cCkpXFxuLS1cXG5uZXQvYnJpZGdlL2JyX21ycC5jLTExNzEtXFxubmV0L2JyaWRnZS9icl9tcnAuYzoxMTcyOlxcdFxcdFxcdFxcdFxcdGlmIChicl9tcnBfaXNfaW5fcG9ydChpX3BvcnQsIHApKVxcbm5ldC9icmlkZ2UvYnJfbXJwLmMtMTE3My1cXHRcXHRcXHRcXHRcXHRcXHRnb3RvIG5vX2ZvcndhcmQ7XFxuLS1cXG5uZXQvYnJpZGdlL2JyX21ycC5jLTExODEtXFx0XFx0XFx0XFx0ICovXFxubmV0L2JyaWRnZS9icl9tcnAuYzoxMTgyOlxcdFxcdFxcdFxcdGlmIChicl9tcnBfaXNfcmluZ19wb3J0KHBfcG9ydCwgc19wb3J0LCBwKSlcXG5uZXQvYnJpZGdlL2JyX21ycC5jLTExODMtXFx0XFx0XFx0XFx0XFx0aV9kc3QgPSBOVUxMO1xcbm5ldC9icmlkZ2UvYnJfbXJwLmMtMTE4NC1cXG5uZXQvYnJpZGdlL2JyX21ycC5jOjExODU6XFx0XFx0XFx0XFx0aWYgKGJyX21ycF9pc19pbl9wb3J0KGlfcG9ydCwgcCkpXFxuXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDA4OjU5OjMxLjc5Mjk4NDEwMVoiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MTc2NzAyMTUyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgTVJQIE5ldGxpbmsgSW50ZXJmYWNlKipcblxuT2theSwgc28gSSdtIGRpdmluZyBpbnRvIHRoaXMgTVJQIGltcGxlbWVudGF0aW9uLCBhbmQgaXQgbG9va3MgbGlrZSB0aGUga2V5IGVudHJ5IHBvaW50cyBmb3IgTmV0bGluayBpbnRlcmFjdGlvbnMgYXJlIHRoZXNlIGZ1bmN0aW9uczogYGJyX21ycF9hZGRgLCBgYnJfbXJwX2RlbGAsIGBicl9tcnBfc2V0X3BvcnRfc3RhdGVgLCBgYnJfbXJwX3NldF9wb3J0X3JvbGVgLCBgYnJfbXJwX3NldF9yaW5nX3N0YXRlYCwgYGJyX21ycF9zZXRfcmluZ19yb2xlYCwgYGJyX21ycF9zdGFydF90ZXN0YCwgYGJyX21ycF9zZXRfaW5fc3RhdGVgLCBgYnJfbXJwX3NldF9pbl9yb2xlYCwgYW5kIGBicl9tcnBfc3RhcnRfaW5fdGVzdGAuIE9idmlvdXNseSwgdGhlc2UgYXJlIHRyaWdnZXJlZCBieSBOZXRsaW5rIG1lc3NhZ2VzLCB3aGljaCBpcyBzdGFuZGFyZC5cblxuVG8gZ2V0IGEgYmV0dGVyIGhhbmRsZSBvbiB0aGUgYXJjaGl0ZWN0dXJlLCBteSBuZXh0IHN0ZXAgaXMgdG8gZmlndXJlIG91dCBleGFjdGx5IGhvdyB0aGVzZSBmdW5jdGlvbnMgYXJlIGludm9rZWQuIEknbSBnb2luZyB0byBkaWcgaW50byB0aGUgTmV0bGluayBjb2RlIHRvIHNlZSB0aGUgbWVzc2FnZSBoYW5kbGVycy4gSSBleHBlY3QgdG8gZmluZCB0aGUgcmVsZXZhbnQgY29kZSBpbiBlaXRoZXIgYG5ldC9icmlkZ2UvYnJfbmV0bGluay5jYCBvciwgbW9yZSBsaWtlbHkgZ2l2ZW4gdGhlIG5hbWluZywgYG5ldC9icmlkZ2UvYnJfbXJwX25ldGxpbmsuY2AuIFRoYXQgc2hvdWxkIHByb3ZpZGUgdGhlIG5lY2Vzc2FyeSBjb250ZXh0LlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNTcyOCwiT3V0cHV0VG9rZW5zIjozMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE2MywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNVQwODo1OTozNS45Njk2OTA2MjNaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQwMzMxNDE3NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJicl9tcnBfc3RhcnRfdGVzdFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvYnJpZGdlL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvYnJpZGdlL2JyX21ycC5jPTY3MT1pbnQgYnJfbXJwX3NldF9yaW5nX3JvbGUoc3RydWN0IG5ldF9icmlkZ2UgKmJyLFxcbi0tXFxubmV0L2JyaWRnZS9icl9tcnAuYy03MDEtICovXFxubmV0L2JyaWRnZS9icl9tcnAuYzo3MDI6aW50IGJyX21ycF9zdGFydF90ZXN0KHN0cnVjdCBuZXRfYnJpZGdlICpicixcXG5uZXQvYnJpZGdlL2JyX21ycC5jOjcwMzpcXHRcXHQgICAgICBzdHJ1Y3QgYnJfbXJwX3N0YXJ0X3Rlc3QgKnRlc3QpXFxubmV0L2JyaWRnZS9icl9tcnAuYy03MDQte1xcbi0tXFxubmV0L2JyaWRnZS9icl9tcnBfbmV0bGluay5jPTE5NT1zdGF0aWMgY29uc3Qgc3RydWN0IG5sYV9wb2xpY3lcXG5uZXQvYnJpZGdlL2JyX21ycF9uZXRsaW5rLmM6MTk2OmJyX21ycF9zdGFydF90ZXN0X3BvbGljeVtJRkxBX0JSSURHRV9NUlBfU1RBUlRfVEVTVF9NQVggKyAxXSA9IHtcXG5uZXQvYnJpZGdlL2JyX21ycF9uZXRsaW5rLmMtMTk3LVxcdFtJRkxBX0JSSURHRV9NUlBfU1RBUlRfVEVTVF9VTlNQRUNdXFx0PSB7IC50eXBlID0gTkxBX1JFSkVDVCB9LFxcbi0tXFxubmV0L2JyaWRnZS9icl9tcnBfbmV0bGluay5jLTIwNC1cXG5uZXQvYnJpZGdlL2JyX21ycF9uZXRsaW5rLmM6MjA1OnN0YXRpYyBpbnQgYnJfbXJwX3N0YXJ0X3Rlc3RfcGFyc2Uoc3RydWN0IG5ldF9icmlkZ2UgKmJyLCBzdHJ1Y3QgbmxhdHRyICphdHRyLFxcbm5ldC9icmlkZ2UvYnJfbXJwX25ldGxpbmsuYy0yMDYtXFx0XFx0XFx0XFx0ICAgc3RydWN0IG5ldGxpbmtfZXh0X2FjayAqZXh0YWNrKVxcbi0tXFxubmV0L2JyaWRnZS9icl9tcnBfbmV0bGluay5jLTIwOC1cXHRzdHJ1Y3QgbmxhdHRyICp0YltJRkxBX0JSSURHRV9NUlBfU1RBUlRfVEVTVF9NQVggKyAxXTtcXG5uZXQvYnJpZGdlL2JyX21ycF9uZXRsaW5rLmM6MjA5OlxcdHN0cnVjdCBicl9tcnBfc3RhcnRfdGVzdCB0ZXN0O1xcbm5ldC9icmlkZ2UvYnJfbXJwX25ldGxpbmsuYy0yMTAtXFx0aW50IGVycjtcXG4tLVxcbm5ldC9icmlkZ2UvYnJfbXJwX25ldGxpbmsuYy0yMTItXFx0ZXJyID0gbmxhX3BhcnNlX25lc3RlZCh0YiwgSUZMQV9CUklER0VfTVJQX1NUQVJUX1RFU1RfTUFYLCBhdHRyLFxcbm5ldC9icmlkZ2UvYnJfbXJwX25ldGxpbmsuYzoyMTM6XFx0XFx0XFx0ICAgICAgIGJyX21ycF9zdGFydF90ZXN0X3BvbGljeSwgZXh0YWNrKTtcXG5uZXQvYnJpZGdlL2JyX21ycF9uZXRsaW5rLmMtMjE0LVxcdGlmIChlcnIpXFxuLS1cXG5uZXQvYnJpZGdlL2JyX21ycF9uZXRsaW5rLmMtMjM3LVxcbm5ldC9icmlkZ2UvYnJfbXJwX25ldGxpbmsuYzoyMzg6XFx0cmV0dXJuIGJyX21ycF9zdGFydF90ZXN0KGJyLCBcXHUwMDI2dGVzdCk7XFxubmV0L2JyaWRnZS9icl9tcnBfbmV0bGluay5jLTIzOS19XFxuLS1cXG5uZXQvYnJpZGdlL2JyX21ycF9uZXRsaW5rLmM9MzU2PWludCBicl9tcnBfcGFyc2Uoc3RydWN0IG5ldF9icmlkZ2UgKmJyLCBzdHJ1Y3QgbmV0X2JyaWRnZV9wb3J0ICpwLFxcbi0tXFxubmV0L2JyaWRnZS9icl9tcnBfbmV0bGluay5jLTQxNC1cXHRpZiAodGJbSUZMQV9CUklER0VfTVJQX1NUQVJUX1RFU1RdKSB7XFxubmV0L2JyaWRnZS9icl9tcnBfbmV0bGluay5jOjQxNTpcXHRcXHRlcnIgPSBicl9tcnBfc3RhcnRfdGVzdF9wYXJzZShicixcXG5uZXQvYnJpZGdlL2JyX21ycF9uZXRsaW5rLmMtNDE2LVxcdFxcdFxcdFxcdFxcdCAgICAgIHRiW0lGTEFfQlJJREdFX01SUF9TVEFSVF9URVNUXSxcXG4tLVxcbm5ldC9icmlkZ2UvYnJfcHJpdmF0ZV9tcnAuaD03ND1pbnQgYnJfbXJwX3NldF9yaW5nX3JvbGUoc3RydWN0IG5ldF9icmlkZ2UgKmJyLCBzdHJ1Y3QgYnJfbXJwX3Jpbmdfcm9sZSAqcm9sZSk7XFxubmV0L2JyaWRnZS9icl9wcml2YXRlX21ycC5oOjc1OmludCBicl9tcnBfc3RhcnRfdGVzdChzdHJ1Y3QgbmV0X2JyaWRnZSAqYnIsIHN0cnVjdCBicl9tcnBfc3RhcnRfdGVzdCAqdGVzdCk7XFxubmV0L2JyaWRnZS9icl9wcml2YXRlX21ycC5oLTc2LWludCBicl9tcnBfc2V0X2luX3N0YXRlKHN0cnVjdCBuZXRfYnJpZGdlICpiciwgc3RydWN0IGJyX21ycF9pbl9zdGF0ZSAqc3RhdGUpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNVQwODo1OTozNi4zNzMwMDkwOThaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDMyOTIxODg2OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIE5ldGxpbmsgTWVzc2FnZSBQYXRoIGFuZCBTdHJ1Y3R1cmUgRml4KipcblxuT2theSwgc28gdGhlIGNvZGUgZGVmaW5pdGVseSB1c2VzIG5ldGxpbmsgbWVzc2FnZXMgdG8gcmVhY2ggdGhlc2UgZnVuY3Rpb25zIOKAkyB0aGF0J3MgdGhlIGVzdGFibGlzaGVkIG1lY2hhbmlzbS4gTm93LCB0aGlzIHBhdGNoIGFkZHJlc3NlcyBhIHNwZWNpZmljIGlzc3VlIHdpdGhpbiBgYnJfbXJwX2FsbG9jX3Rlc3Rfc2tiYC4gSXQgbG9va3MgbGlrZSB0aGUgcHJvYmxlbSBsaWVzIGluIGFuIGluY29ycmVjdCB1c2Ugb2YgYHNpemVvZihvdWkpYCBpbnN0ZWFkIG9mIHRoZSBjb3JyZWN0IGBzaXplb2YoKm91aSlgLiBSaWdodCwgYG91aWAgaXMgYSBwb2ludGVyIHRvIGEgYHN0cnVjdCBicl9tcnBfb3VpX2hkcmAuIFVzaW5nIGBzaXplb2Yob3VpKWAgZ2l2ZXMgbWUgdGhlIHNpemUgb2YgdGhlICpwb2ludGVyKiBpdHNlbGYgKDggYnl0ZXMgb24gYSA2NC1iaXQgc3lzdGVtKSwgYnV0IEkgbmVlZCB0aGUgYWN0dWFsIHNpemUgb2YgdGhlIHN0cnVjdCBpdCBwb2ludHMgdG8uIFRoYXQgd291bGQgYmUgYHNpemVvZigqb3VpKWAuXG5cbkxldCBtZSBqdXN0IGNvbmZpcm0gdGhlIHN0cnVjdCdzIGxheW91dC4gQWgsIHRoZSBkZWZpbml0aW9uIG9mIGBzdHJ1Y3QgYnJfbXJwX291aV9oZHJgIGlzIGluIGBpbmNsdWRlL3VhcGkvbGludXgvbXJwX2JyaWRnZS5oYC4gSSdsbCBwb3Agb3BlbiB0aGF0IGhlYWRlciBmaWxlIHRvIHZlcmlmeSB0aGUgZmllbGQgZGVmaW5pdGlvbnMgYW5kIHRvdGFsIHNpemUuIEltcG9ydGFudCB0byBrbm93IGZvciB0aGlzIGFsbG9jYXRpb24hXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE3MTIxLCJPdXRwdXRUb2tlbnMiOjMxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTMzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDA4OjU5OjQwLjcwMjIzMjAzNloiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTQ0MzI2NDQ4LCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJzdHJ1Y3QgYnJfbXJwX291aV9oZHJcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiaW5jbHVkZS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDA4OjU5OjQwLjg0NjU2OTg0NFoiLCJTZXEiOjE3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozODg4Mzg4OTk2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkludmVzdGlnYXRpbmcgYGJyX21ycF9vdWlfaGRyYCoqXG5cbkFscmlnaHQsIGxldCdzIGRpdmUgaW50byB0aGlzLiBUaGUgaW5pdGlhbCBpbXB1bHNlIGhlcmUgaXMgdG8gdW5kZXJzdGFuZCB0aGUgY29udGV4dCBhbmQgaW1wbGljYXRpb25zIG9mIGBicl9tcnBfb3VpX2hkcmAuIEl0J3MgYSByYXRoZXIgc3BlY2lmaWMgaWRlbnRpZmllciwgYW5kIG15IGV4cGVyaWVuY2UgdGVsbHMgbWUgdGhpcyBpcyBsaWtlbHkgcmVsYXRlZCB0byBzb21lIGZvcm0gb2YgQnJpZGdlIE11bHRpY2FzdCBSZWdpc3RyYXRpb24gUHJvdG9jb2wgKEJNUlApIG9yIGEgcmVsYXRlZCBPVUkgKE9yZ2FuaXphdGlvbmFsbHkgVW5pcXVlIElkZW50aWZpZXIpIGhlYWRlci4gR2l2ZW4gdGhlIG5hbWUsIEknZCBhbnRpY2lwYXRlIHRoaXMgYmVpbmcgYSBzdHJ1Y3R1cmFsIGNvbXBvbmVudCBvciBhIGtleSBkYXRhIGZpZWxkIHdpdGhpbiBhIHBhcnRpY3VsYXIgcHJvdG9jb2wgbWVzc2FnZSwgcXVpdGUgcG9zc2libHkgYSBoZWFkZXIgc3RydWN0dXJlLlxuXG5JbW1lZGlhdGVseSwgSSdtIHRoaW5raW5nIGFib3V0IHRoZSBzdGFuZGFyZCBzcGVjaWZpY2F0aW9ucyBhc3NvY2lhdGVkIHdpdGggQk1SUCAoaWYgaXQgaXMgQk1SUCksIGl0cyByZWxhdGlvbiB0byB2YXJpb3VzIFZMQU4gY29uZmlndXJhdGlvbnMsIGFuZCBwb3NzaWJseSBtdWx0aWNhc3QgZ3JvdXAgbWFuYWdlbWVudC4gVGhlIE9VSSBhc3BlY3Qgc3BhcmtzIGN1cmlvc2l0eTsgaXQgcG9pbnRzIHRvIGEgbGV2ZWwgb2YgdmVuZG9yLXNwZWNpZmljIGN1c3RvbWl6YXRpb24gb3IgYW4gZXh0ZW5kZWQgZmVhdHVyZSBzZXQgYmV5b25kIHRoZSBiYXNlIHByb3RvY29sIGRlZmluaXRpb25zLiBJcyB0aGlzIGEgY3VzdG9tIGltcGxlbWVudGF0aW9uLCBvciBkb2VzIGl0IGFkaGVyZSB0byBlc3RhYmxpc2hlZCBzdGFuZGFyZHMgYnV0IGluY29ycG9yYXRlcyBhbiBPVUkgZm9yIGRpc3Rpbmd1aXNoaW5nIGl0P1xuXG5NeSBtZW50YWwgY2hlY2tsaXN0IGlzIGFscmVhZHkgcnVubmluZyB0aHJvdWdoIHBvdGVudGlhbCBhcmVhcyB0byBleGFtaW5lOiBrZXJuZWwgaGVhZGVycywgbmV0d29yayBwcm90b2NvbCBkZWZpbml0aW9ucywgcmVsZXZhbnQgUkZDcywgYW5kIGFueSB2ZW5kb3Itc3BlY2lmaWMgZG9jdW1lbnRhdGlvbiByZWxhdGVkIHRvIGJyaWRnZSBvciBtdWx0aWNhc3QgY29uZmlndXJhdGlvbnMuIFRoaXMgbmFtZSBzdWdnZXN0cyBhIGxvdy1sZXZlbCBkYXRhIHN0cnVjdHVyZS4gSSdsbCBuZWVkIHRvIHNjcnV0aW5pemUgdGhlIGNvZGUgb3IgZG9jdW1lbnRhdGlvbiBhc3NvY2lhdGVkIHdpdGggaXRzIHVzZSwgc3BlY2lmaWNhbGx5IGxvb2tpbmcgZm9yIGhvdyB0aGlzIGhlYWRlciBpcyBwYXJzZWQsIGNyZWF0ZWQsIGFuZCBtYW5pcHVsYXRlZC4gSXMgaXQgYSBjcml0aWNhbCBmaWVsZCBmb3IgZnJhbWUgZm9yd2FyZGluZyBkZWNpc2lvbnMsIHNlY3VyaXR5IGNoZWNrcywgb3IgcmVzb3VyY2UgYWxsb2NhdGlvbiB3aXRoaW4gYSBuZXR3b3JrIGJyaWRnZSBlbnZpcm9ubWVudD8gVGhhdCdzIHdoYXQgSSdsbCBuZWVkIHRvIGZpZ3VyZSBvdXQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE3NTIxLCJPdXRwdXRUb2tlbnMiOjI4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMDg6NTk6NDQuNzM0OTYyMloiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTkzMzU2MTYxNCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJicl9tcnBfb3VpX2hkclwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L2JyaWRnZS9icl9tcnAuYz0xODI9c3RhdGljIHN0cnVjdCBza19idWZmICpicl9tcnBfYWxsb2NfdGVzdF9za2Ioc3RydWN0IGJyX21ycCAqbXJwLFxcbi0tXFxubmV0L2JyaWRnZS9icl9tcnAuYy0yMTQtXFx0XFx0c3RydWN0IGJyX21ycF90bHZfaGRyICpzdWJfdGx2ID0gTlVMTDtcXG5uZXQvYnJpZGdlL2JyX21ycC5jOjIxNTpcXHRcXHRzdHJ1Y3QgYnJfbXJwX291aV9oZHIgKm91aSA9IE5VTEw7XFxubmV0L2JyaWRnZS9icl9tcnAuYy0yMTYtXFx0XFx0dTggbGVuZ3RoO1xcbi0tXFxubmV0L2JyaWRnZS9icl9wcml2YXRlX21ycC5oPTEzMD1zdHJ1Y3QgYnJfbXJwX2luX3Rlc3RfaGRyIHtcXG4tLVxcbm5ldC9icmlkZ2UvYnJfcHJpdmF0ZV9tcnAuaC0xMzgtXFxubmV0L2JyaWRnZS9icl9wcml2YXRlX21ycC5oOjEzOTpzdHJ1Y3QgYnJfbXJwX291aV9oZHIge1xcbm5ldC9icmlkZ2UvYnJfcHJpdmF0ZV9tcnAuaC0xNDAtXFx0X191OCBvdWlbTVJQX09VSV9MRU5HVEhdO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNVQwODo1OTo0Ni42Njg1MzEyOTRaIiwiU2VxIjoxOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mzg4NzI4NjE1NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipEaXZpbmcgaW50byBgYnJfcHJpdmF0ZV9tcnAuaGAgLSBMaW5lIDEzOSoqXG5cbk9rYXksIGxldCdzIHplcm8gaW4gb24gYGJyX3ByaXZhdGVfbXJwLmhgLiBJJ20gZ29pbmcgdG8ganVtcCBzdHJhaWdodCB0byBhcm91bmQgbGluZSAxMzkuIEknbSBwcm9iYWJseSBsb29raW5nIGZvciBhIHNwZWNpZmljIGRhdGEgc3RydWN0dXJlIGRlZmluaXRpb24sIHBlcmhhcHMgYSBmdW5jdGlvbiBwcm90b3R5cGUsIG9yIG1heWJlIGEgbWFjcm8gZGVmaW5pdGlvbiByZWxhdGVkIHRvIE1SUCBoYW5kbGluZy4gR2l2ZW4gdGhlIGZpbGUgbmFtZSwgaXQncyBsaWtlbHkgc29tZXRoaW5nIGxvdy1sZXZlbCBhbmQgcHJpdmF0ZSB0byB0aGUgTVJQIGltcGxlbWVudGF0aW9uLiBJJ20gZXhwZWN0aW5nIHRvIHNlZSBzb21ldGhpbmcgdGhhdCBpbnRlcmZhY2VzIHdpdGggdGhlIGJhc2ViYW5kLCB0aGUgcmFkaW8sIG9yIG5ldHdvcmsgcHJvdG9jb2xzLCBnaXZlbiB0aGlzIGlzIHByaXZhdGUgaGVhZGVyLiBUaGUgbGluZSBudW1iZXIgc3VnZ2VzdHMgaXQncyBhIG5vbnRyaXZpYWwgYW1vdW50IG9mIGNvZGUsIHNvIEknbSBob3BpbmcgdG8gcXVpY2tseSBpZGVudGlmeSB0aGUgY3J1Y2lhbCBjb21wb25lbnQgb3IgcG9pbnQgb2YgaW50ZXJlc3QgcmF0aGVyIHRoYW4gZ2V0dGluZyBib2dnZWQgZG93biBpbiB0aGUgbWludXRpYWUuIE15IGd1dCB0ZWxscyBtZSBpdCdsbCBiZSByZWxhdGVkIHRvIGJ1ZmZlcmluZywgc2NoZWR1bGluZywgb3IgcG9zc2libHkgZXJyb3IgaGFuZGxpbmcgd2l0aGluIHRoZSBNUlAgZnJhbWV3b3JrLiBMZXQncyBzZWUgaWYgdGhlIGNvZGUgY29uZmlybXMgbXkgaW5pdGlhbCBhc3N1bXB0aW9ucy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTgxNTMsIk91dHB1dFRva2VucyI6NDAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNVQwODo1OTo1MC41NTU4MjAzMVoiLCJTZXEiOjIwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDM0OTEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwibmV0L2JyaWRnZS9icl9wcml2YXRlX21ycC5oXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEzMCxcbiAgXCJMaW5lQ291bnRcIjogMjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDEzMDpcXHRzdHJ1Y3QgYnJfbXJwX2luX3Rlc3RfaGRyIHtcXG4gMTMxOlxcdFxcdF9fYmUxNiBpZDtcXG4gMTMyOlxcdFxcdF9fdTggc2FbRVRIX0FMRU5dO1xcbiAxMzM6XFx0XFx0X19iZTE2IHBvcnRfcm9sZTtcXG4gMTM0OlxcdFxcdF9fYmUxNiBzdGF0ZTtcXG4gMTM1OlxcdFxcdF9fYmUxNiB0cmFuc2l0aW9ucztcXG4gMTM2OlxcdFxcdF9fYmUzMiB0aW1lc3RhbXA7XFxuIDEzNzpcXHR9IF9fYXR0cmlidXRlX18oKF9fcGFja2VkX18pKTtcXG4gMTM4OlxcdFxcbiAxMzk6XFx0c3RydWN0IGJyX21ycF9vdWlfaGRyIHtcXG4gMTQwOlxcdFxcdF9fdTggb3VpW01SUF9PVUlfTEVOR1RIXTtcXG4gMTQxOlxcdH07XFxuIDE0MjpcXHRcXG4gMTQzOlxcdHN0cnVjdCBicl9tcnBfc3ViX29wdGlvbjFfaGRyIHtcXG4gMTQ0OlxcdFxcdF9fdTggdHlwZTtcXG4gMTQ1OlxcdFxcdF9fdTggZGF0YVtNUlBfTUFOVUZBQ1RVUkVfREFUQV9MRU5HVEhdO1xcbiAxNDY6XFx0fTtcXG4gMTQ3OlxcdFxcbiAxNDg6XFx0I2VuZGlmIC8qIF9CUl9QUklWQVRFX01SUF9IICovXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDA4OjU5OjUwLjU1NTkyNTQzWiIsIlNlcSI6MjEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjUwNTg0MjQzODUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBNUlAgSW1wbGVtZW50YXRpb24qKlxuXG5Pa2F5LCBzbyBJJ3ZlIGJlZW4gbG9va2luZyBhdCB0aGlzIGNvZGUgYW5kIEkndmUgemVyb2VkIGluIG9uIHdoYXQncyBsaWtlbHkgdGhlIHJvb3QgY2F1c2UuIE15IGd1dCBmZWVsaW5nIGlzIHRoYXQgYE1SUF9PVUlfTEVOR1RIYCBpcyAzLCB3aGljaCBpcyBwcmV0dHkgc3RhbmRhcmQgZm9yIE9VSSBsZW5ndGhzLCBidXQgdGhlIGNydWNpYWwgdGhpbmcgaGVyZSBpcyBob3cgdGhhdCB0cmFuc2xhdGVzIHRvIG1lbW9yeSBhbGxvY2F0aW9uLiBJdCBsb29rcyBsaWtlIGBzaXplb2YoKm91aSlgIGlzIGNvcnJlY3RseSBjYWxjdWxhdGluZyB0aGUgc2l6ZSBvZiBhIHNpbmdsZSBPVUkgZWxlbWVudCBhcyAzLCBidXQgdGhlbiBgc2l6ZW9mKG91aSlgIHdhcyByZXR1cm5pbmcgOC4gSXQgd291bGQgYXBwZWFyIHRoaXMgZGlmZmVyZW5jZSBpcyBsZWFkaW5nIHRvIGFuIGluY29ycmVjdCBsZW5ndGggY2FsY3VsYXRpb24sIGFuZCB0aGF0J3MgdGhlIHZ1bG5lcmFiaWxpdHkuXG5cblRoaXMgcGF0Y2ggc2hvdWxkIGZpeCB0aGF0IGxlbmd0aCBjYWxjdWxhdGlvbiBpc3N1ZSwgd2hpY2ggd2lsbCBpbXBhY3QgdGhlIGFjdHVhbCBNUlAgcHJvdG9jb2wgaW1wbGVtZW50YXRpb24gYW5kIGl0cyBmdW5jdGlvbmFsaXR5LCBub3QganVzdCB0aGUgY29kZSBpdHNlbGYuIEdpdmVuIHRoYXQgdGhpcyBpcyBhIGNoYW5nZSB0byB0aGUgZnVuZGFtZW50YWwgcHJvdG9jb2wgaGFuZGxpbmcsIGl0J3MgZGVmaW5pdGVseSBzb21ldGhpbmcgd2UgbmVlZCB0byBmdXp6IGV4dGVuc2l2ZWx5LiBXZSBjYW4ndCBsZXQgYW55IHN1YnRsZSBlcnJvcnMgaW4gdGhlIGxlbmd0aCBjYWxjdWxhdGlvbiBzbGlwIHRocm91Z2guXG5cblRvIG1ha2Ugc3VyZSB3ZSdyZSB0aG9yb3VnaCBpbiBvdXIgdGVzdGluZywgSSBuZWVkIHRvIGVuYWJsZSB0aGUgYEJSSURHRV9NUlBgIGNvbmZpZ3VyYXRpb24gb3B0aW9uLiBOb3csIHRvIG1ha2UgdGhlIGZ1enppbmcgZWZmZWN0aXZlLCBJIG5lZWQgdG8gZm9jdXMgdGhlIGZ1enplciBvbiB0aGUgcmVsZXZhbnQgZW50cnkgcG9pbnRzLiBJJ20gdGhpbmtpbmcgdGhlIG5ldGxpbmsgZW50cnkgcG9pbnRzIGZvciBNUlAgYXJlIHdoZXJlIHRoZSBhY3Rpb24gaGFwcGVucy4gTGV0IG1lIGdvIHRocm91Z2ggbXkgbWVudGFsIGNoZWNrbGlzdDogSSBzaG91bGQgZm9jdXMgb24gZnVuY3Rpb25zIGxpa2UgYGJyX21ycF9zdGFydF90ZXN0YCwgYGJyX21ycF9hZGRgLCBgYnJfbXJwX3NldF9yaW5nX3JvbGVgLCBhbmQgYW55dGhpbmcgZWxzZSBpbiB0aGF0IHZlaW4uIEdvdHRhIGZpbmQgdGhlIGZ1bGwgbGlzdCB0byB1c2Ugd2l0aCB0aGUgZnV6emluZy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTg3MTQsIk91dHB1dFRva2VucyI6MzYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMzYsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNVQwODo1OTo1NS42MTQzNTIzMTZaIiwiU2VxIjoyMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjYyMTU2OTc1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImludCBicl9tcnBfXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9icmlkZ2UvYnJfbXJwLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L2JyaWRnZS9icl9tcnAuYz03PXN0YXRpYyBjb25zdCB1OCBtcnBfaW5fdGVzdF9kbWFjW0VUSF9BTEVOXSA9IHsgMHgxLCAweDE1LCAweDRlLCAweDAsIDB4MCwgMHgzIH07XFxubmV0L2JyaWRnZS9icl9tcnAuYy04LVxcbm5ldC9icmlkZ2UvYnJfbXJwLmM6OTpzdGF0aWMgaW50IGJyX21ycF9wcm9jZXNzKHN0cnVjdCBuZXRfYnJpZGdlX3BvcnQgKnAsIHN0cnVjdCBza19idWZmICpza2IpO1xcbm5ldC9icmlkZ2UvYnJfbXJwLmMtMTAtXFxuLS1cXG5uZXQvYnJpZGdlL2JyX21ycC5jPTEwOD1zdGF0aWMgc3RydWN0IGJyX21ycCAqYnJfbXJwX2ZpbmRfcG9ydChzdHJ1Y3QgbmV0X2JyaWRnZSAqYnIsXFxuLS1cXG5uZXQvYnJpZGdlL2JyX21ycC5jLTEyNi1cXG5uZXQvYnJpZGdlL2JyX21ycC5jOjEyNzpzdGF0aWMgaW50IGJyX21ycF9uZXh0X3NlcShzdHJ1Y3QgYnJfbXJwICptcnApXFxubmV0L2JyaWRnZS9icl9tcnAuYy0xMjgte1xcbi0tXFxubmV0L2JyaWRnZS9icl9tcnAuYz00Mjg9c3RhdGljIHZvaWQgYnJfbXJwX2RlbF9pbXBsKHN0cnVjdCBuZXRfYnJpZGdlICpiciwgc3RydWN0IGJyX21ycCAqbXJwKVxcbi0tXFxubmV0L2JyaWRnZS9icl9tcnAuYy00OTYtICovXFxubmV0L2JyaWRnZS9icl9tcnAuYzo0OTc6aW50IGJyX21ycF9hZGQoc3RydWN0IG5ldF9icmlkZ2UgKmJyLCBzdHJ1Y3QgYnJfbXJwX2luc3RhbmNlICppbnN0YW5jZSlcXG5uZXQvYnJpZGdlL2JyX21ycC5jLTQ5OC17XFxuLS1cXG5uZXQvYnJpZGdlL2JyX21ycC5jPTU2Mj12b2lkIGJyX21ycF9wb3J0X2RlbChzdHJ1Y3QgbmV0X2JyaWRnZSAqYnIsIHN0cnVjdCBuZXRfYnJpZGdlX3BvcnQgKnApXFxuLS1cXG5uZXQvYnJpZGdlL2JyX21ycC5jLTU3NS0gKi9cXG5uZXQvYnJpZGdlL2JyX21ycC5jOjU3NjppbnQgYnJfbXJwX2RlbChzdHJ1Y3QgbmV0X2JyaWRnZSAqYnIsIHN0cnVjdCBicl9tcnBfaW5zdGFuY2UgKmluc3RhbmNlKVxcbm5ldC9icmlkZ2UvYnJfbXJwLmMtNTc3LXtcXG4tLVxcbm5ldC9icmlkZ2UvYnJfbXJwLmMtNTkwLSAqL1xcbm5ldC9icmlkZ2UvYnJfbXJwLmM6NTkxOmludCBicl9tcnBfc2V0X3BvcnRfc3RhdGUoc3RydWN0IG5ldF9icmlkZ2VfcG9ydCAqcCxcXG5uZXQvYnJpZGdlL2JyX21ycC5jLTU5Mi1cXHRcXHRcXHQgIGVudW0gYnJfbXJwX3BvcnRfc3RhdGVfdHlwZSBzdGF0ZSlcXG4tLVxcbm5ldC9icmlkZ2UvYnJfbXJwLmMtNjE2LSAqL1xcbm5ldC9icmlkZ2UvYnJfbXJwLmM6NjE3OmludCBicl9tcnBfc2V0X3BvcnRfcm9sZShzdHJ1Y3QgbmV0X2JyaWRnZV9wb3J0ICpwLFxcbm5ldC9icmlkZ2UvYnJfbXJwLmMtNjE4LVxcdFxcdFxcdCBlbnVtIGJyX21ycF9wb3J0X3JvbGVfdHlwZSByb2xlKVxcbi0tXFxubmV0L2JyaWRnZS9icl9tcnAuYy02NDgtICovXFxubmV0L2JyaWRnZS9icl9tcnAuYzo2NDk6aW50IGJyX21ycF9zZXRfcmluZ19zdGF0ZShzdHJ1Y3QgbmV0X2JyaWRnZSAqYnIsXFxubmV0L2JyaWRnZS9icl9tcnAuYy02NTAtXFx0XFx0XFx0ICBzdHJ1Y3QgYnJfbXJwX3Jpbmdfc3RhdGUgKnN0YXRlKVxcbi0tXFxubmV0L2JyaWRnZS9icl9tcnAuYy02NzAtICovXFxubmV0L2JyaWRnZS9icl9tcnAuYzo2NzE6aW50IGJyX21ycF9zZXRfcmluZ19yb2xlKHN0cnVjdCBuZXRfYnJpZGdlICpicixcXG5uZXQvYnJpZGdlL2JyX21ycC5jLTY3Mi1cXHRcXHRcXHQgc3RydWN0IGJyX21ycF9yaW5nX3JvbGUgKnJvbGUpXFxuLS1cXG5uZXQvYnJpZGdlL2JyX21ycC5jLTcwMS0gKi9cXG5uZXQvYnJpZGdlL2JyX21ycC5jOjcwMjppbnQgYnJfbXJwX3N0YXJ0X3Rlc3Qoc3RydWN0IG5ldF9icmlkZ2UgKmJyLFxcbm5ldC9icmlkZ2UvYnJfbXJwLmMtNzAzLVxcdFxcdCAgICAgIHN0cnVjdCBicl9tcnBfc3RhcnRfdGVzdCAqdGVzdClcXG4tLVxcbm5ldC9icmlkZ2UvYnJfbXJwLmMtNzM2LSAqL1xcbm5ldC9icmlkZ2UvYnJfbXJwLmM6NzM3OmludCBicl9tcnBfc2V0X2luX3N0YXRlKHN0cnVjdCBuZXRfYnJpZGdlICpiciwgc3RydWN0IGJyX21ycF9pbl9zdGF0ZSAqc3RhdGUpXFxubmV0L2JyaWRnZS9icl9tcnAuYy03Mzgte1xcbi0tXFxubmV0L2JyaWRnZS9icl9tcnAuYy03NTctICovXFxubmV0L2JyaWRnZS9icl9tcnAuYzo3NTg6aW50IGJyX21ycF9zZXRfaW5fcm9sZShzdHJ1Y3QgbmV0X2JyaWRnZSAqYnIsIHN0cnVjdCBicl9tcnBfaW5fcm9sZSAqcm9sZSlcXG5uZXQvYnJpZGdlL2JyX21ycC5jLTc1OS17XFxuLS1cXG5uZXQvYnJpZGdlL2JyX21ycC5jLTgzOS0gKi9cXG5uZXQvYnJpZGdlL2JyX21ycC5jOjg0MDppbnQgYnJfbXJwX3N0YXJ0X2luX3Rlc3Qoc3RydWN0IG5ldF9icmlkZ2UgKmJyLFxcbm5ldC9icmlkZ2UvYnJfbXJwLmMtODQxLVxcdFxcdFxcdCBzdHJ1Y3QgYnJfbXJwX3N0YXJ0X2luX3Rlc3QgKmluX3Rlc3QpXFxuLS1cXG5uZXQvYnJpZGdlL2JyX21ycC5jPTEwNjE9c3RhdGljIGJvb2wgYnJfbXJwX21yY19iZWhhdmlvdXIoc3RydWN0IGJyX21ycCAqbXJwKVxcbi0tXFxubmV0L2JyaWRnZS9icl9tcnAuYy0xMDczLSAqL1xcbm5ldC9icmlkZ2UvYnJfbXJwLmM6MTA3NDpzdGF0aWMgaW50IGJyX21ycF9yY3Yoc3RydWN0IG5ldF9icmlkZ2VfcG9ydCAqcCxcXG5uZXQvYnJpZGdlL2JyX21ycC5jLTEwNzUtXFx0XFx0ICAgICAgc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG4tLVxcbm5ldC9icmlkZ2UvYnJfbXJwLmMtMTI0NS0gKi9cXG5uZXQvYnJpZGdlL2JyX21ycC5jOjEyNDY6c3RhdGljIGludCBicl9tcnBfcHJvY2VzcyhzdHJ1Y3QgbmV0X2JyaWRnZV9wb3J0ICpwLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbm5ldC9icmlkZ2UvYnJfbXJwLmMtMTI0Ny17XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDA4OjU5OjU1LjY3NjUxNTAxMVoiLCJTZXEiOjIzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1ODIwNTQyMDMwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgTVJQIFRlc3QgUHJvY2VkdXJlKipcblxuT2theSwgc28gSSdtIGZvY3VzaW5nIGluIG9uIHRoZSBNUlAgdGVzdCBmdW5jdGlvbmFsaXR5IGhlcmUuIE15IGluaXRpYWwgdGhvdWdodCBwcm9jZXNzIGlzIHRvIGNhdGVnb3JpemUgdGhlIGtleSBzeW1ib2xzIHJlbGF0ZWQgdG8gaXQ6IGBicl9tcnBfYWRkYCwgYGJyX21ycF9kZWxgLCBgYnJfbXJwX3NldF9wb3J0X3N0YXRlYCwgYGJyX21ycF9zZXRfcG9ydF9yb2xlYCwgYGJyX21ycF9zZXRfcmluZ19zdGF0ZWAsIGBicl9tcnBfc2V0X3Jpbmdfcm9sZWAsIGBicl9tcnBfc3RhcnRfdGVzdGAsIGBicl9tcnBfc2V0X2luX3N0YXRlYCwgYGJyX21ycF9zZXRfaW5fcm9sZWAsIGBicl9tcnBfc3RhcnRfaW5fdGVzdGAsIGBicl9tcnBfcmN2YCwgYW5kIGBicl9tcnBfcHJvY2Vzc2AuIEJ1dCAqc3BlY2lmaWNhbGx5KiwgSSdtIGhvbmluZyBpbiBvbiBob3cgdGhlIHRlc3QgaXRzZWxmIGluaXRpYXRlcy5cblxuYGJyX21ycF9zdGFydF90ZXN0YCBpcyB0aGUga2V5LCB0aGUgdHJpZ2dlci4gVGhhdCdzIHRoZSBmdW5jdGlvbiB0aGF0IHVsdGltYXRlbHkgc3RhcnRzIHRoZSB0ZXN0IGV4ZWN1dGlvbiwgYW5kICp0aGF0KiBjYWxscyBgYnJfbXJwX2FsbG9jX3Rlc3Rfc2tiYC4gUmlnaHQsIHNvIGBicl9tcnBfYWxsb2NfdGVzdF9za2JgIGlzIHdoZXJlIHRoZSB0ZXN0IHBhY2tldHMgYXJlIGFjdHVhbGx5IGFsbG9jYXRlZC5cblxuTm93LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGVyZSBlbHNlIGBicl9tcnBfYWxsb2NfdGVzdF9za2JgIGlzIGJlaW5nIGNhbGxlZCBmcm9tLiBJJ20gY2hlY2tpbmcgZm9yIGRlcGVuZGVuY2llcy4gQWgsIGl0J3MgYWxzbyBjYWxsZWQgYnkgYGJyX21ycF90ZXN0X3dvcmtfZXhwaXJlZGAuIEludGVyZXN0aW5nLiBTbyB0aGF0J3MgdGhlIGNsZWFudXAgYWZ0ZXIgdGhlIHRlc3QgZXhwaXJlcy4gYGJyX21ycF90ZXN0X3dvcmtfZXhwaXJlZGAgaXMgc2NoZWR1bGVkIGJ5IGBicl9tcnBfc3RhcnRfdGVzdGAsIGJ1dCBpdCdzICppbml0aWFsaXplZCogaW4gYGJyX21ycF9hZGRgLiBTbyB0aGUgdGVzdCB3b3JrIGlzIHNjaGVkdWxlZCB3aGVuIHdlIHN0YXJ0IHRoZSB0ZXN0LCBidXQgdGhlIHdvcmsgaXMgaW5pdGlhbGl6ZWQgd2hlbiB3ZSBhZGQgdGhlIGJyaWRnZS4gVGhhdCdzIGdvb2QgdG8ga25vdywgYW5kIGl0J3MgYSBkZXRhaWwgSSBuZWVkIHRvIGtlZXAgaW4gbWluZC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjA1OTIsIk91dHB1dFRva2VucyI6MzMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyOTYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMDk6MDA6MDEuNDk3MDU5OTcxWiIsIlNlcSI6MjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0Njk2NzQxMTksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwidGVzdF93b3JrXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9icmlkZ2UvYnJfbXJwLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L2JyaWRnZS9icl9tcnAuYz0yMzk9c3RhdGljIHN0cnVjdCBza19idWZmICpicl9tcnBfYWxsb2NfaW5fdGVzdF9za2Ioc3RydWN0IGJyX21ycCAqbXJwLFxcbi0tXFxubmV0L2JyaWRnZS9icl9tcnAuYy0yNzgtICovXFxubmV0L2JyaWRnZS9icl9tcnAuYzoyNzk6c3RhdGljIHZvaWQgYnJfbXJwX3Rlc3Rfd29ya19leHBpcmVkKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcXG5uZXQvYnJpZGdlL2JyX21ycC5jLTI4MC17XFxubmV0L2JyaWRnZS9icl9tcnAuYy0yODEtXFx0c3RydWN0IGRlbGF5ZWRfd29yayAqZGVsX3dvcmsgPSB0b19kZWxheWVkX3dvcmsod29yayk7XFxubmV0L2JyaWRnZS9icl9tcnAuYzoyODI6XFx0c3RydWN0IGJyX21ycCAqbXJwID0gY29udGFpbmVyX29mKGRlbF93b3JrLCBzdHJ1Y3QgYnJfbXJwLCB0ZXN0X3dvcmspO1xcbm5ldC9icmlkZ2UvYnJfbXJwLmMtMjgzLVxcdHN0cnVjdCBuZXRfYnJpZGdlX3BvcnQgKnA7XFxuLS1cXG5uZXQvYnJpZGdlL2JyX21ycC5jLTM0My1cXG5uZXQvYnJpZGdlL2JyX21ycC5jOjM0NDpcXHRxdWV1ZV9kZWxheWVkX3dvcmsoc3lzdGVtX3BlcmNwdV93cSwgXFx1MDAyNm1ycC1cXHUwMDNldGVzdF93b3JrLFxcbm5ldC9icmlkZ2UvYnJfbXJwLmMtMzQ1LVxcdFxcdFxcdCAgIHVzZWNzX3RvX2ppZmZpZXMobXJwLVxcdTAwM2V0ZXN0X2ludGVydmFsKSk7XFxuLS1cXG5uZXQvYnJpZGdlL2JyX21ycC5jLTM1MS0gKi9cXG5uZXQvYnJpZGdlL2JyX21ycC5jOjM1MjpzdGF0aWMgdm9pZCBicl9tcnBfaW5fdGVzdF93b3JrX2V4cGlyZWQoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxcbm5ldC9icmlkZ2UvYnJfbXJwLmMtMzUzLXtcXG5uZXQvYnJpZGdlL2JyX21ycC5jLTM1NC1cXHRzdHJ1Y3QgZGVsYXllZF93b3JrICpkZWxfd29yayA9IHRvX2RlbGF5ZWRfd29yayh3b3JrKTtcXG5uZXQvYnJpZGdlL2JyX21ycC5jOjM1NTpcXHRzdHJ1Y3QgYnJfbXJwICptcnAgPSBjb250YWluZXJfb2YoZGVsX3dvcmssIHN0cnVjdCBicl9tcnAsIGluX3Rlc3Rfd29yayk7XFxubmV0L2JyaWRnZS9icl9tcnAuYy0zNTYtXFx0c3RydWN0IG5ldF9icmlkZ2VfcG9ydCAqcDtcXG4tLVxcbm5ldC9icmlkZ2UvYnJfbXJwLmMtNDIwLVxcbm5ldC9icmlkZ2UvYnJfbXJwLmM6NDIxOlxcdHF1ZXVlX2RlbGF5ZWRfd29yayhzeXN0ZW1fcGVyY3B1X3dxLCBcXHUwMDI2bXJwLVxcdTAwM2Vpbl90ZXN0X3dvcmssXFxubmV0L2JyaWRnZS9icl9tcnAuYy00MjItXFx0XFx0XFx0ICAgdXNlY3NfdG9famlmZmllcyhtcnAtXFx1MDAzZWluX3Rlc3RfaW50ZXJ2YWwpKTtcXG4tLVxcbm5ldC9icmlkZ2UvYnJfbXJwLmM9NDI4PXN0YXRpYyB2b2lkIGJyX21ycF9kZWxfaW1wbChzdHJ1Y3QgbmV0X2JyaWRnZSAqYnIsIHN0cnVjdCBicl9tcnAgKm1ycClcXG4tLVxcbm5ldC9icmlkZ2UvYnJfbXJwLmMtNDMzLVxcdC8qIFN0b3Agc2VuZGluZyBNUlBfVGVzdCBmcmFtZXMgKi9cXG5uZXQvYnJpZGdlL2JyX21ycC5jOjQzNDpcXHRjYW5jZWxfZGVsYXllZF93b3JrX3N5bmMoXFx1MDAyNm1ycC1cXHUwMDNldGVzdF93b3JrKTtcXG5uZXQvYnJpZGdlL2JyX21ycC5jLTQzNS1cXHRicl9tcnBfc3dpdGNoZGV2X3NlbmRfcmluZ190ZXN0KGJyLCBtcnAsIDAsIDAsIDAsIDApO1xcbi0tXFxubmV0L2JyaWRnZS9icl9tcnAuYy00MzctXFx0LyogU3RvcCBzZW5kaW5nIE1SUF9JblRlc3QgZnJhbWVzIGlmIGhhcyBhbiBpbnRlcmNvbm5lY3Qgcm9sZSAqL1xcbm5ldC9icmlkZ2UvYnJfbXJwLmM6NDM4OlxcdGNhbmNlbF9kZWxheWVkX3dvcmtfc3luYyhcXHUwMDI2bXJwLVxcdTAwM2Vpbl90ZXN0X3dvcmspO1xcbm5ldC9icmlkZ2UvYnJfbXJwLmMtNDM5LVxcdGJyX21ycF9zd2l0Y2hkZXZfc2VuZF9pbl90ZXN0KGJyLCBtcnAsIDAsIDAsIDApO1xcbi0tXFxubmV0L2JyaWRnZS9icl9tcnAuYz00OTc9aW50IGJyX21ycF9hZGQoc3RydWN0IG5ldF9icmlkZ2UgKmJyLCBzdHJ1Y3QgYnJfbXJwX2luc3RhbmNlICppbnN0YW5jZSlcXG4tLVxcbm5ldC9icmlkZ2UvYnJfbXJwLmMtNTQyLVxcbm5ldC9icmlkZ2UvYnJfbXJwLmM6NTQzOlxcdElOSVRfREVMQVlFRF9XT1JLKFxcdTAwMjZtcnAtXFx1MDAzZXRlc3Rfd29yaywgYnJfbXJwX3Rlc3Rfd29ya19leHBpcmVkKTtcXG5uZXQvYnJpZGdlL2JyX21ycC5jOjU0NDpcXHRJTklUX0RFTEFZRURfV09SSyhcXHUwMDI2bXJwLVxcdTAwM2Vpbl90ZXN0X3dvcmssIGJyX21ycF9pbl90ZXN0X3dvcmtfZXhwaXJlZCk7XFxubmV0L2JyaWRnZS9icl9tcnAuYy01NDUtXFx0aGxpc3RfYWRkX3RhaWxfcmN1KFxcdTAwMjZtcnAtXFx1MDAzZWxpc3QsIFxcdTAwMjZici1cXHUwMDNlbXJwX2xpc3QpO1xcbi0tXFxubmV0L2JyaWRnZS9icl9tcnAuYz03MDI9aW50IGJyX21ycF9zdGFydF90ZXN0KHN0cnVjdCBuZXRfYnJpZGdlICpicixcXG4tLVxcbm5ldC9icmlkZ2UvYnJfbXJwLmMtNzI3LVxcdG1ycC1cXHUwMDNldGVzdF9jb3VudF9taXNzID0gMDtcXG5uZXQvYnJpZGdlL2JyX21ycC5jOjcyODpcXHRxdWV1ZV9kZWxheWVkX3dvcmsoc3lzdGVtX3BlcmNwdV93cSwgXFx1MDAyNm1ycC1cXHUwMDNldGVzdF93b3JrLFxcbm5ldC9icmlkZ2UvYnJfbXJwLmMtNzI5LVxcdFxcdFxcdCAgIHVzZWNzX3RvX2ppZmZpZXModGVzdC1cXHUwMDNlaW50ZXJ2YWwpKTtcXG4tLVxcbm5ldC9icmlkZ2UvYnJfbXJwLmM9NzU4PWludCBicl9tcnBfc2V0X2luX3JvbGUoc3RydWN0IG5ldF9icmlkZ2UgKmJyLCBzdHJ1Y3QgYnJfbXJwX2luX3JvbGUgKnJvbGUpXFxuLS1cXG5uZXQvYnJpZGdlL2JyX21ycC5jLTc3OC1cXHRcXHQvKiBTdG9wIHRoZSBnZW5lcmF0aW5nIE1SUF9JblRlc3QgZnJhbWVzICovXFxubmV0L2JyaWRnZS9icl9tcnAuYzo3Nzk6XFx0XFx0Y2FuY2VsX2RlbGF5ZWRfd29ya19zeW5jKFxcdTAwMjZtcnAtXFx1MDAzZWluX3Rlc3Rfd29yayk7XFxubmV0L2JyaWRnZS9icl9tcnAuYy03ODAtXFx0XFx0YnJfbXJwX3N3aXRjaGRldl9zZW5kX2luX3Rlc3QoYnIsIG1ycCwgMCwgMCwgMCk7XFxuLS1cXG5uZXQvYnJpZGdlL2JyX21ycC5jPTg0MD1pbnQgYnJfbXJwX3N0YXJ0X2luX3Rlc3Qoc3RydWN0IG5ldF9icmlkZ2UgKmJyLFxcbi0tXFxubmV0L2JyaWRnZS9icl9tcnAuYy04NjctXFx0bXJwLVxcdTAwM2Vpbl90ZXN0X2NvdW50X21pc3MgPSAwO1xcbm5ldC9icmlkZ2UvYnJfbXJwLmM6ODY4OlxcdHF1ZXVlX2RlbGF5ZWRfd29yayhzeXN0ZW1fcGVyY3B1X3dxLCBcXHUwMDI2bXJwLVxcdTAwM2Vpbl90ZXN0X3dvcmssXFxubmV0L2JyaWRnZS9icl9tcnAuYy04NjktXFx0XFx0XFx0ICAgdXNlY3NfdG9famlmZmllcyhpbl90ZXN0LVxcdTAwM2VpbnRlcnZhbCkpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNVQwOTowMDowMS45NjY3NDQzNDFaIiwiU2VxIjoyNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTUyMzgzMDk0NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBbmFseXNpcyBvZiB0aGUgTVJQIFF1ZXVlaW5nIGFuZCBDb25maWd1cmF0aW9uKipcblxuT2theSwgc28gSSd2ZSBjb25maXJtZWQgdGhhdCBgYnJfbXJwX3N0YXJ0X3Rlc3RgIGlzIGRlZmluaXRlbHkgdGhlIGZ1bmN0aW9uIHRoYXQga2lja3Mgb2ZmIHRoZSBxdWV1aW5nIHByb2Nlc3MuIE5vdywgSSBuZWVkIHRvIG1ha2UgYSBsaXN0IG9mIHRoZSBjcnVjaWFsIGZvY3VzIHN5bWJvbHMg4oCTIHRoZSBmdW5jdGlvbnMgZGlyZWN0bHkgaW52b2x2ZWQgaW4gdGhpcyBNUlAgdGVzdCBzY2VuYXJpby4gSSBoYXZlIGEgZ29vZCBncmFzcCBvZiB0aGUgY29kZSBub3cgc28gSSdsbCBnbyB0aHJvdWdoIHRoZSBzeW1ib2xzIHRvIGNvbmZpcm0gdGhhdCB0aGUgbGlzdCBJIGhhdmUgaXMgcmlnaHQ6IGBicl9tcnBfc3RhcnRfdGVzdGAsIGBicl9tcnBfYWRkYCwgYGJyX21ycF9zZXRfcmluZ19yb2xlYCwgYGJyX21ycF9zZXRfcmluZ19zdGF0ZWAsIGBicl9tcnBfc3RhcnRfaW5fdGVzdGAsIGBicl9tcnBfc2V0X2luX3JvbGVgLCBgYnJfbXJwX3NldF9pbl9zdGF0ZWAsIGBicl9tcnBfc2V0X3BvcnRfc3RhdGVgLCBgYnJfbXJwX3NldF9wb3J0X3JvbGVgLCBhbmQgYGJyX21ycF9kZWxgLiBUaG9zZSBsb29rIHJpZ2h0LlxuXG5BbmQsIG9mIGNvdXJzZSwgdG8gZnVsbHkgY2FwdHVyZSB0aGUgTVJQIGZyYW1lIHByb2Nlc3NpbmcsIEkgY2FuJ3QgZm9yZ2V0IGBicl9tcnBfcmN2YCBhbmQgYGJyX21ycF9wcm9jZXNzYCBmb3IgcmVjZWl2aW5nIGFuZCBoYW5kbGluZyB0aG9zZSBmcmFtZXMuXG5cbk5vdywgbGV0J3MgbmFpbCBkb3duIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgaW52b2x2ZWQuIFRoZSBwcmltYXJ5IGNvbmZpZ3VyYXRpb24gc2VlbXMgdG8gYmUgYEJSSURHRV9NUlBgLiBIb3dldmVyLCBsZXQgbWUgZG91YmxlIGNoZWNrIHRoYXQgdGhlcmUgYXJlbid0IGFueSBoaWRkZW4gZGVwZW5kZW5jaWVzLiBBaGEsIHllcyEgYEJSSURHRV9NUlBgIGRlcGVuZHMgb24gYEJSSURHRWAuIFRoYXQgbWFrZXMgc2Vuc2UuXG5cblRoZXJlZm9yZSwgdGhlIHJlbGV2YW50IGNvbmZpZ3VyYXRpb25zIGhlcmUgYXJlIGBCUklER0VgIGFuZCBgQlJJREdFX01SUGAuIEkgc2hvdWxkIHJldHVybiBgQlJJREdFX01SUGAgYXMgdGhhdCdzIHRoZSBtb3JlIHNwZWNpZmljIGFuZCByZWxldmFudCBvcHRpb24uXG5cbkFscmlnaHQsIEknbGwgdGFrZSBhbm90aGVyIGxvb2sgYXQgdGhlIGBicl9tcnBfYWxsb2NfdGVzdF9za2JgIGZ1bmN0aW9uIHRvIG1ha2Ugc3VyZSB0aGF0IEkgdW5kZXJzdGFuZCBpdHMgcm9sZSBpbiB0aGlzIHByb2Nlc3MuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIyODEwLCJPdXRwdXRUb2tlbnMiOjQxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjM1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDA5OjAwOjA3LjQ5MDU3OTA0NloiLCJTZXEiOjI2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzY1MTk1NDQsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiYnJfbXJwX2FsbG9jX3Rlc3Rfc2tiXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9icmlkZ2UvYnJfbXJwLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L2JyaWRnZS9icl9tcnAuYz0xNzE9c3RhdGljIHZvaWQgYnJfbXJwX3NrYl9jb21tb24oc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGJyX21ycCAqbXJwKVxcbi0tXFxubmV0L2JyaWRnZS9icl9tcnAuYy0xODEtXFxubmV0L2JyaWRnZS9icl9tcnAuYzoxODI6c3RhdGljIHN0cnVjdCBza19idWZmICpicl9tcnBfYWxsb2NfdGVzdF9za2Ioc3RydWN0IGJyX21ycCAqbXJwLFxcbm5ldC9icmlkZ2UvYnJfbXJwLmMtMTgzLVxcdFxcdFxcdFxcdFxcdCAgICAgc3RydWN0IG5ldF9icmlkZ2VfcG9ydCAqcCxcXG4tLVxcbm5ldC9icmlkZ2UvYnJfbXJwLmM9Mjc5PXN0YXRpYyB2b2lkIGJyX21ycF90ZXN0X3dvcmtfZXhwaXJlZChzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXFxuLS1cXG5uZXQvYnJpZGdlL2JyX21ycC5jLTMxMS1cXHRcXHRpZiAoIW1ycC1cXHUwMDNldGVzdF9tb25pdG9yKSB7XFxubmV0L2JyaWRnZS9icl9tcnAuYzozMTI6XFx0XFx0XFx0c2tiID0gYnJfbXJwX2FsbG9jX3Rlc3Rfc2tiKG1ycCwgcCxcXG5uZXQvYnJpZGdlL2JyX21ycC5jLTMxMy1cXHRcXHRcXHRcXHRcXHRcXHQgICAgQlJfTVJQX1BPUlRfUk9MRV9QUklNQVJZKTtcXG4tLVxcbm5ldC9icmlkZ2UvYnJfbXJwLmMtMzI3LVxcdFxcdGlmICghbXJwLVxcdTAwM2V0ZXN0X21vbml0b3IpIHtcXG5uZXQvYnJpZGdlL2JyX21ycC5jOjMyODpcXHRcXHRcXHRza2IgPSBicl9tcnBfYWxsb2NfdGVzdF9za2IobXJwLCBwLFxcbm5ldC9icmlkZ2UvYnJfbXJwLmMtMzI5LVxcdFxcdFxcdFxcdFxcdFxcdCAgICBCUl9NUlBfUE9SVF9ST0xFX1NFQ09OREFSWSk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDA5OjAwOjA3LjU2NzEwNjA5WiIsIlNlcSI6MjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjcxNTgyODExMTUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudCBvZiB0aGUgTVJQIEJ1ZyBGaXgqKlxuXG5Pa2F5LCBzbyBJJ3ZlIGxvb2tlZCBvdmVyIHRoaXMgcGF0Y2gsIGFuZCBoZXJlJ3MgbXkgdGFrZTogdGhlIGtleSBpc3N1ZSBpcyBhIHJhdGhlciBjbGFzc2ljIG9mZi1ieS1vbmUgZXJyb3IgaW4gdGhlIGBicl9tcnBfYWxsb2NfdGVzdF9za2JgIGZ1bmN0aW9uLiBUaGV5J3JlIHVzaW5nIGBzaXplb2Yob3VpKWAgaW5zdGVhZCBvZiBgc2l6ZW9mKCpvdWkpYC4gIEknbSBhc3N1bWluZyBgb3VpYCBpcyBhIHBvaW50ZXIgdG8gc29tZSBzb3J0IG9mIHN0cnVjdHVyZSByZWxhdGVkIHRvIHRoZSBvcmdhbml6YXRpb25hbGx5IHVuaXF1ZSBpZGVudGlmaWVyLCB3aGljaCBtYWtlcyBwZXJmZWN0IHNlbnNlIGluIHRoaXMgY29udGV4dC4gVXNpbmcgdGhlIHNpemUgb2YgdGhlICpwb2ludGVyKiByYXRoZXIgdGhhbiB0aGUgKnN0cnVjdHVyZSBpdCBwb2ludHMgdG8qIHdvdWxkIGxlYWQgdG8gYW4gaW5jb3JyZWN0IGxlbmd0aCBjYWxjdWxhdGlvbiB3aGVuIGJ1aWxkaW5nIHRlc3QgcGFja2V0cyB3aXRoaW4gdGhlIE1SUCBmcmFtZXdvcmsuICBUaGlzIGlzIGEgY3JpdGljYWwgZXJyb3Igc2luY2UgaXQgZGlyZWN0bHkgaW1wYWN0cyB0aGUgU2l6ZSBvZiB0aGUgVHlwZSBMZW5ndGggVmFsdWUgKFRMVikgZmllbGQgaW4gdGhlIE1SUCBwYWNrZXQsIHdoaWNoIG1lYW5zIG1hbGZvcm1lZCBwYWNrZXRzIG9yIGV2ZW4gb3V0LW9mLWJvdW5kcyByZWFkcyBvciB3cml0ZXMgY291bGQgYmUgdHJpZ2dlcmVkLlxuXG5GdW5jdGlvbmFsbHksIHRoaXMgaXMgYSBjaGFuZ2UgdG8gdGhlIG5ldHdvcmsgYnJpZGdlIE1SUCBwcm90b2NvbCBpbXBsZW1lbnRhdGlvbiwgYW5kIHRoZXJlZm9yZSB3YXJyYW50cyBjYXJlZnVsIHRlc3RpbmcuIEknZCBiZSBsb29raW5nIGF0IGEgZnV6emluZyBjYW1wYWlnbiB0byBlbnN1cmUgdGhlcmUgYXJlbid0IGRvd25zdHJlYW0gY29uc2VxdWVuY2VzIHRvIHRoaXMgY2hhbmdlLiBNeSBpbml0aWFsIGxpc3Qgb2YgXCJmb2N1cyBzeW1ib2xzXCIgbG9vayBnb29kIGZvciBhIHRob3JvdWdoIGV2YWx1YXRpb24gb2YgdGhlIGVmZmVjdHMgb2YgdGhpcyBjaGFuZ2U6IHNwZWNpZmljYWxseSBsb29raW5nIGF0IHRoZSBzdGFydCwgYWRkLCBzZXQsIGFuZCBkZWxldGUgb3BlcmF0aW9ucyBvZiB0aGUgTVJQIHByb3RvY29sLiBJIHdpbGwgYWxzbyBtYWtlIHN1cmUgdG8gY2hlY2sgdGhlIHJlY2VpdmUgYW5kIHByb2Nlc3MgbWV0aG9kcy4gSSB3b3VsZCBhbHNvIHJlY29tbWVuZCB0aGF0IHRoZSBNUlAgZnVuY3Rpb25hbGl0eSBiZSByZS10ZXN0ZWQgd2l0aCBgQlJJREdFX01SUGAgZW5hYmxlZC4gVGhlIGltcGFjdCBjb3VsZCBiZSBzdWJ0bGUsIG9yIG11Y2ggd29yc2UsIGRlcGVuZGluZyBvbiBob3cgdGhpcyBpbmNvcnJlY3Qgc2l6ZSB3YXMgYmVpbmcgdXNlZC4gVGhpcyBjb3VsZCBiZSBhIHByZXR0eSBzaWduaWZpY2FudCB2dWxuZXJhYmlsaXR5LCBkZXBlbmRpbmcgb24gdGhlIGltcGxlbWVudGF0aW9uIGRldGFpbHMuIEknbGwgbmVlZCB0byBkaWcgaW50byB0aGUgZGV0YWlscyB0byB1bmRlcnN0YW5kIHRoZSBwb3RlbnRpYWwgZm9yIGV4cGxvaXRhdGlvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6MjM4MzksIk91dHB1dFRva2VucyI6MjU5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzIwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDA5OjAwOjE0LjcyNTM5MjM3NVoiLCJTZXEiOjI4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjg0MDkzOTUzLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJCUklER0VfTVJQXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiYnJfbXJwX3N0YXJ0X3Rlc3RcIixcbiAgICBcImJyX21ycF9hZGRcIixcbiAgICBcImJyX21ycF9zZXRfcmluZ19yb2xlXCIsXG4gICAgXCJicl9tcnBfc2V0X3Jpbmdfc3RhdGVcIixcbiAgICBcImJyX21ycF9zdGFydF9pbl90ZXN0XCIsXG4gICAgXCJicl9tcnBfc2V0X2luX3JvbGVcIixcbiAgICBcImJyX21ycF9zZXRfaW5fc3RhdGVcIixcbiAgICBcImJyX21ycF9zZXRfcG9ydF9zdGF0ZVwiLFxuICAgIFwiYnJfbXJwX3NldF9wb3J0X3JvbGVcIixcbiAgICBcImJyX21ycF9kZWxcIixcbiAgICBcImJyX21ycF9yY3ZcIixcbiAgICBcImJyX21ycF9wcm9jZXNzXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYW4gaW5jb3JyZWN0IHNpemUgY2FsY3VsYXRpb24gaW4gYGJyX21ycF9hbGxvY190ZXN0X3NrYmAgd2hlcmUgYHNpemVvZihvdWkpYCAocG9pbnRlciBzaXplKSB3YXMgdXNlZCBpbnN0ZWFkIG9mIGBzaXplb2YoKm91aSlgIChzdHJ1Y3Qgc2l6ZSkuIFRoaXMgYWZmZWN0cyB0aGUgbGVuZ3RoIG9mIHRoZSBhbGxvY2F0ZWQvcG9wdWxhdGVkIFRMViBpbiBNUlAgdGVzdCBwYWNrZXRzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGJyaWRnZSBNUlAgcHJvdG9jb2wgaW1wbGVtZW50YXRpb24gYW5kIHNob3VsZCBiZSBmdXp6ZWQgdG8gZW5zdXJlIGNvcnJlY3QgcGFja2V0IGNvbnN0cnVjdGlvbiBhbmQgaGFuZGxpbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQlJJREdFX01SUFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImJyX21ycF9zdGFydF90ZXN0XCIsXG4gICAgXCJicl9tcnBfYWRkXCIsXG4gICAgXCJicl9tcnBfc2V0X3Jpbmdfcm9sZVwiLFxuICAgIFwiYnJfbXJwX3NldF9yaW5nX3N0YXRlXCIsXG4gICAgXCJicl9tcnBfc3RhcnRfaW5fdGVzdFwiLFxuICAgIFwiYnJfbXJwX3NldF9pbl9yb2xlXCIsXG4gICAgXCJicl9tcnBfc2V0X2luX3N0YXRlXCIsXG4gICAgXCJicl9tcnBfc2V0X3BvcnRfc3RhdGVcIixcbiAgICBcImJyX21ycF9zZXRfcG9ydF9yb2xlXCIsXG4gICAgXCJicl9tcnBfZGVsXCIsXG4gICAgXCJicl9tcnBfcmN2XCIsXG4gICAgXCJicl9tcnBfcHJvY2Vzc1wiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGFuIGluY29ycmVjdCBzaXplIGNhbGN1bGF0aW9uIGluIGBicl9tcnBfYWxsb2NfdGVzdF9za2JgIHdoZXJlIGBzaXplb2Yob3VpKWAgKHBvaW50ZXIgc2l6ZSkgd2FzIHVzZWQgaW5zdGVhZCBvZiBgc2l6ZW9mKCpvdWkpYCAoc3RydWN0IHNpemUpLiBUaGlzIGFmZmVjdHMgdGhlIGxlbmd0aCBvZiB0aGUgYWxsb2NhdGVkL3BvcHVsYXRlZCBUTFYgaW4gTVJQIHRlc3QgcGFja2V0cy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBicmlkZ2UgTVJQIHByb3RvY29sIGltcGxlbWVudGF0aW9uIGFuZCBzaG91bGQgYmUgZnV6emVkIHRvIGVuc3VyZSBjb3JyZWN0IHBhY2tldCBjb25zdHJ1Y3Rpb24gYW5kIGhhbmRsaW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+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-workflowvtj7l[1] Phase: Succeeded StartedAt: 2026-07-25 09:00:26 +0000 UTC FinishedAt: 2026-07-25 09:00:26 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvtj7l[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-07-25 09:00:26 +0000 UTC FinishedAt: 2026-07-25 09:00:26 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvtj7l[2] Phase: Succeeded StartedAt: 2026-07-25 09:00:26 +0000 UTC FinishedAt: 2026-07-25 13:38:30 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvtj7l[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"04026c998c24ac47eb76886b9790c5710b603eb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE_MRP"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-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":["br_mrp_start_test","br_mrp_add","br_mrp_set_ring_role","br_mrp_set_ring_state","br_mrp_start_in_test","br_mrp_set_in_role","br_mrp_set_in_state","br_mrp_set_port_state","br_mrp_set_port_role","br_mrp_del","br_mrp_rcv","br_mrp_process"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"04026c998c24ac47eb76886b9790c5710b603eb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE_MRP"],"series_id":"32962ccc-95a9-4841-8ff7-1294892e86a5","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-07-25 09:00:26 +0000 UTC FinishedAt: 2026-07-25 13:38:30 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"04026c998c24ac47eb76886b9790c5710b603eb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE_MRP"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-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":["br_mrp_start_test","br_mrp_add","br_mrp_set_ring_role","br_mrp_set_ring_state","br_mrp_start_in_test","br_mrp_set_in_role","br_mrp_set_in_state","br_mrp_set_port_state","br_mrp_set_port_role","br_mrp_del","br_mrp_rcv","br_mrp_process"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"04026c998c24ac47eb76886b9790c5710b603eb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE_MRP"],"series_id":"32962ccc-95a9-4841-8ff7-1294892e86a5","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowvtj7l[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"04026c998c24ac47eb76886b9790c5710b603eb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE_MRP"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-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":["br_mrp_start_test","br_mrp_add","br_mrp_set_ring_role","br_mrp_set_ring_state","br_mrp_start_in_test","br_mrp_set_in_role","br_mrp_set_in_state","br_mrp_set_port_state","br_mrp_set_port_role","br_mrp_del","br_mrp_rcv","br_mrp_process"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"04026c998c24ac47eb76886b9790c5710b603eb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE_MRP"],"series_id":"32962ccc-95a9-4841-8ff7-1294892e86a5","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-07-25 09:00:26 +0000 UTC FinishedAt: 2026-07-25 09:00:36 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvtj7l[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"04026c998c24ac47eb76886b9790c5710b603eb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE_MRP"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-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":["br_mrp_start_test","br_mrp_add","br_mrp_set_ring_role","br_mrp_set_ring_state","br_mrp_start_in_test","br_mrp_set_in_role","br_mrp_set_in_state","br_mrp_set_port_state","br_mrp_set_port_role","br_mrp_del","br_mrp_rcv","br_mrp_process"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"04026c998c24ac47eb76886b9790c5710b603eb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE_MRP"],"series_id":"32962ccc-95a9-4841-8ff7-1294892e86a5","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-07-25 09:00:26 +0000 UTC FinishedAt: 2026-07-25 09:00:33 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"04026c998c24ac47eb76886b9790c5710b603eb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE_MRP"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-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-workflowvtj7l/series-workflowvtj7l-convert-artifact-3566240162/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowvtj7l[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"04026c998c24ac47eb76886b9790c5710b603eb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE_MRP"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-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":["br_mrp_start_test","br_mrp_add","br_mrp_set_ring_role","br_mrp_set_ring_state","br_mrp_start_in_test","br_mrp_set_in_role","br_mrp_set_in_state","br_mrp_set_port_state","br_mrp_set_port_role","br_mrp_del","br_mrp_rcv","br_mrp_process"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"04026c998c24ac47eb76886b9790c5710b603eb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE_MRP"],"series_id":"32962ccc-95a9-4841-8ff7-1294892e86a5","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-07-25 09:00:36 +0000 UTC FinishedAt: 2026-07-25 09:59:51 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvtj7l[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"04026c998c24ac47eb76886b9790c5710b603eb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE_MRP"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-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":["br_mrp_start_test","br_mrp_add","br_mrp_set_ring_role","br_mrp_set_ring_state","br_mrp_start_in_test","br_mrp_set_in_role","br_mrp_set_in_state","br_mrp_set_port_state","br_mrp_set_port_role","br_mrp_del","br_mrp_rcv","br_mrp_process"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"04026c998c24ac47eb76886b9790c5710b603eb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE_MRP"],"series_id":"32962ccc-95a9-4841-8ff7-1294892e86a5","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-07-25 09:00:36 +0000 UTC FinishedAt: 2026-07-25 09:59:51 +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:*bde649b4-bebe-4a74-b614-71cbe9a637ba,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-workflowvtj7l/series-workflowvtj7l-convert-artifact-3566240162/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": "35313046-320b-4a4d-b25b-7fa72feef77c", "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-workflowvtj7l/series-workflowvtj7l-build-action-2156790624/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowvtj7l[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"04026c998c24ac47eb76886b9790c5710b603eb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE_MRP"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-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":["br_mrp_start_test","br_mrp_add","br_mrp_set_ring_role","br_mrp_set_ring_state","br_mrp_start_in_test","br_mrp_set_in_role","br_mrp_set_in_state","br_mrp_set_port_state","br_mrp_set_port_role","br_mrp_del","br_mrp_rcv","br_mrp_process"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"04026c998c24ac47eb76886b9790c5710b603eb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE_MRP"],"series_id":"32962ccc-95a9-4841-8ff7-1294892e86a5","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-07-25 09:00:36 +0000 UTC FinishedAt: 2026-07-25 09:59:41 +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:*bde649b4-bebe-4a74-b614-71cbe9a637ba,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-workflowvtj7l/series-workflowvtj7l-convert-artifact-3566240162/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": "35313046-320b-4a4d-b25b-7fa72feef77c", "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-workflowvtj7l/series-workflowvtj7l-build-action-2156790624/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowvtj7l[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"04026c998c24ac47eb76886b9790c5710b603eb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE_MRP"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-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":["br_mrp_start_test","br_mrp_add","br_mrp_set_ring_role","br_mrp_set_ring_state","br_mrp_start_in_test","br_mrp_set_in_role","br_mrp_set_in_state","br_mrp_set_port_state","br_mrp_set_port_role","br_mrp_del","br_mrp_rcv","br_mrp_process"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"04026c998c24ac47eb76886b9790c5710b603eb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE_MRP"],"series_id":"32962ccc-95a9-4841-8ff7-1294892e86a5","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-07-25 09:59:51 +0000 UTC FinishedAt: 2026-07-25 09:59:51 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvtj7l[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"04026c998c24ac47eb76886b9790c5710b603eb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE_MRP"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-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":["br_mrp_start_test","br_mrp_add","br_mrp_set_ring_role","br_mrp_set_ring_state","br_mrp_start_in_test","br_mrp_set_in_role","br_mrp_set_in_state","br_mrp_set_port_state","br_mrp_set_port_role","br_mrp_del","br_mrp_rcv","br_mrp_process"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"04026c998c24ac47eb76886b9790c5710b603eb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE_MRP"],"series_id":"32962ccc-95a9-4841-8ff7-1294892e86a5","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-07-25 09:59:51 +0000 UTC FinishedAt: 2026-07-25 09:59:51 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvtj7l[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"04026c998c24ac47eb76886b9790c5710b603eb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE_MRP"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-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":["br_mrp_start_test","br_mrp_add","br_mrp_set_ring_role","br_mrp_set_ring_state","br_mrp_start_in_test","br_mrp_set_in_role","br_mrp_set_in_state","br_mrp_set_port_state","br_mrp_set_port_role","br_mrp_del","br_mrp_rcv","br_mrp_process"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"04026c998c24ac47eb76886b9790c5710b603eb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE_MRP"],"series_id":"32962ccc-95a9-4841-8ff7-1294892e86a5","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-07-25 09:59:51 +0000 UTC FinishedAt: 2026-07-25 10:00:12 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvtj7l[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"04026c998c24ac47eb76886b9790c5710b603eb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE_MRP"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-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":["br_mrp_start_test","br_mrp_add","br_mrp_set_ring_role","br_mrp_set_ring_state","br_mrp_start_in_test","br_mrp_set_in_role","br_mrp_set_in_state","br_mrp_set_port_state","br_mrp_set_port_role","br_mrp_del","br_mrp_rcv","br_mrp_process"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"04026c998c24ac47eb76886b9790c5710b603eb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE_MRP"],"series_id":"32962ccc-95a9-4841-8ff7-1294892e86a5","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-07-25 09:59:51 +0000 UTC FinishedAt: 2026-07-25 10:00:02 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"04026c998c24ac47eb76886b9790c5710b603eb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE_MRP"],"series_id":"32962ccc-95a9-4841-8ff7-1294892e86a5","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-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-workflowvtj7l/series-workflowvtj7l-convert-artifact-351066877/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowvtj7l[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"04026c998c24ac47eb76886b9790c5710b603eb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE_MRP"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-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":["br_mrp_start_test","br_mrp_add","br_mrp_set_ring_role","br_mrp_set_ring_state","br_mrp_start_in_test","br_mrp_set_in_role","br_mrp_set_in_state","br_mrp_set_port_state","br_mrp_set_port_role","br_mrp_del","br_mrp_rcv","br_mrp_process"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"04026c998c24ac47eb76886b9790c5710b603eb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE_MRP"],"series_id":"32962ccc-95a9-4841-8ff7-1294892e86a5","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-07-25 10:00:12 +0000 UTC FinishedAt: 2026-07-25 10:02:06 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvtj7l[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"04026c998c24ac47eb76886b9790c5710b603eb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE_MRP"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-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":["br_mrp_start_test","br_mrp_add","br_mrp_set_ring_role","br_mrp_set_ring_state","br_mrp_start_in_test","br_mrp_set_in_role","br_mrp_set_in_state","br_mrp_set_port_state","br_mrp_set_port_role","br_mrp_del","br_mrp_rcv","br_mrp_process"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"04026c998c24ac47eb76886b9790c5710b603eb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE_MRP"],"series_id":"32962ccc-95a9-4841-8ff7-1294892e86a5","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-07-25 10:00:12 +0000 UTC FinishedAt: 2026-07-25 10:01:56 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*35313046-320b-4a4d-b25b-7fa72feef77c,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-workflowvtj7l/series-workflowvtj7l-build-action-2156790624/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-workflowvtj7l[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"04026c998c24ac47eb76886b9790c5710b603eb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE_MRP"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-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":["br_mrp_start_test","br_mrp_add","br_mrp_set_ring_role","br_mrp_set_ring_state","br_mrp_start_in_test","br_mrp_set_in_role","br_mrp_set_in_state","br_mrp_set_port_state","br_mrp_set_port_role","br_mrp_del","br_mrp_rcv","br_mrp_process"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"04026c998c24ac47eb76886b9790c5710b603eb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE_MRP"],"series_id":"32962ccc-95a9-4841-8ff7-1294892e86a5","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-07-25 10:02:06 +0000 UTC FinishedAt: 2026-07-25 10:02:06 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvtj7l[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"04026c998c24ac47eb76886b9790c5710b603eb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE_MRP"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-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":["br_mrp_start_test","br_mrp_add","br_mrp_set_ring_role","br_mrp_set_ring_state","br_mrp_start_in_test","br_mrp_set_in_role","br_mrp_set_in_state","br_mrp_set_port_state","br_mrp_set_port_role","br_mrp_del","br_mrp_rcv","br_mrp_process"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"04026c998c24ac47eb76886b9790c5710b603eb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE_MRP"],"series_id":"32962ccc-95a9-4841-8ff7-1294892e86a5","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-07-25 10:02:06 +0000 UTC FinishedAt: 2026-07-25 10:02:06 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvtj7l[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"04026c998c24ac47eb76886b9790c5710b603eb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE_MRP"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-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":["br_mrp_start_test","br_mrp_add","br_mrp_set_ring_role","br_mrp_set_ring_state","br_mrp_start_in_test","br_mrp_set_in_role","br_mrp_set_in_state","br_mrp_set_port_state","br_mrp_set_port_role","br_mrp_del","br_mrp_rcv","br_mrp_process"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"04026c998c24ac47eb76886b9790c5710b603eb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE_MRP"],"series_id":"32962ccc-95a9-4841-8ff7-1294892e86a5","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-07-25 10:02:06 +0000 UTC FinishedAt: 2026-07-25 10:35:03 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvtj7l[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"04026c998c24ac47eb76886b9790c5710b603eb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE_MRP"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-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":["br_mrp_start_test","br_mrp_add","br_mrp_set_ring_role","br_mrp_set_ring_state","br_mrp_start_in_test","br_mrp_set_in_role","br_mrp_set_in_state","br_mrp_set_port_state","br_mrp_set_port_role","br_mrp_del","br_mrp_rcv","br_mrp_process"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"04026c998c24ac47eb76886b9790c5710b603eb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE_MRP"],"series_id":"32962ccc-95a9-4841-8ff7-1294892e86a5","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-07-25 10:02:06 +0000 UTC FinishedAt: 2026-07-25 10:35: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:*bde649b4-bebe-4a74-b614-71cbe9a637ba,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-workflowvtj7l/series-workflowvtj7l-convert-artifact-351066877/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": "1a1a7599-c575-45a2-a2e3-fb642b2484e8", "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-workflowvtj7l/series-workflowvtj7l-build-action-1567398745/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowvtj7l[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"04026c998c24ac47eb76886b9790c5710b603eb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE_MRP"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-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":["br_mrp_start_test","br_mrp_add","br_mrp_set_ring_role","br_mrp_set_ring_state","br_mrp_start_in_test","br_mrp_set_in_role","br_mrp_set_in_state","br_mrp_set_port_state","br_mrp_set_port_role","br_mrp_del","br_mrp_rcv","br_mrp_process"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"04026c998c24ac47eb76886b9790c5710b603eb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE_MRP"],"series_id":"32962ccc-95a9-4841-8ff7-1294892e86a5","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-07-25 10:02:06 +0000 UTC FinishedAt: 2026-07-25 10:34:53 +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:*bde649b4-bebe-4a74-b614-71cbe9a637ba,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-workflowvtj7l/series-workflowvtj7l-convert-artifact-351066877/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": "1a1a7599-c575-45a2-a2e3-fb642b2484e8", "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-workflowvtj7l/series-workflowvtj7l-build-action-1567398745/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowvtj7l[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"04026c998c24ac47eb76886b9790c5710b603eb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE_MRP"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-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":["br_mrp_start_test","br_mrp_add","br_mrp_set_ring_role","br_mrp_set_ring_state","br_mrp_start_in_test","br_mrp_set_in_role","br_mrp_set_in_state","br_mrp_set_port_state","br_mrp_set_port_role","br_mrp_del","br_mrp_rcv","br_mrp_process"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"04026c998c24ac47eb76886b9790c5710b603eb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE_MRP"],"series_id":"32962ccc-95a9-4841-8ff7-1294892e86a5","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-07-25 10:35:03 +0000 UTC FinishedAt: 2026-07-25 10:35:03 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvtj7l[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"04026c998c24ac47eb76886b9790c5710b603eb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE_MRP"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-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":["br_mrp_start_test","br_mrp_add","br_mrp_set_ring_role","br_mrp_set_ring_state","br_mrp_start_in_test","br_mrp_set_in_role","br_mrp_set_in_state","br_mrp_set_port_state","br_mrp_set_port_role","br_mrp_del","br_mrp_rcv","br_mrp_process"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"04026c998c24ac47eb76886b9790c5710b603eb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE_MRP"],"series_id":"32962ccc-95a9-4841-8ff7-1294892e86a5","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-07-25 10:35:03 +0000 UTC FinishedAt: 2026-07-25 10:35:03 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvtj7l[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"04026c998c24ac47eb76886b9790c5710b603eb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE_MRP"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-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":["br_mrp_start_test","br_mrp_add","br_mrp_set_ring_role","br_mrp_set_ring_state","br_mrp_start_in_test","br_mrp_set_in_role","br_mrp_set_in_state","br_mrp_set_port_state","br_mrp_set_port_role","br_mrp_del","br_mrp_rcv","br_mrp_process"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"04026c998c24ac47eb76886b9790c5710b603eb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE_MRP"],"series_id":"32962ccc-95a9-4841-8ff7-1294892e86a5","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-07-25 10:35:03 +0000 UTC FinishedAt: 2026-07-25 10:37:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvtj7l[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"04026c998c24ac47eb76886b9790c5710b603eb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE_MRP"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-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":["br_mrp_start_test","br_mrp_add","br_mrp_set_ring_role","br_mrp_set_ring_state","br_mrp_start_in_test","br_mrp_set_in_role","br_mrp_set_in_state","br_mrp_set_port_state","br_mrp_set_port_role","br_mrp_del","br_mrp_rcv","br_mrp_process"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"04026c998c24ac47eb76886b9790c5710b603eb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE_MRP"],"series_id":"32962ccc-95a9-4841-8ff7-1294892e86a5","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-07-25 10:35:03 +0000 UTC FinishedAt: 2026-07-25 10:36:50 +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:*1a1a7599-c575-45a2-a2e3-fb642b2484e8,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-workflowvtj7l/series-workflowvtj7l-build-action-1567398745/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-workflowvtj7l[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"04026c998c24ac47eb76886b9790c5710b603eb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE_MRP"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-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":["br_mrp_start_test","br_mrp_add","br_mrp_set_ring_role","br_mrp_set_ring_state","br_mrp_start_in_test","br_mrp_set_in_role","br_mrp_set_in_state","br_mrp_set_port_state","br_mrp_set_port_role","br_mrp_del","br_mrp_rcv","br_mrp_process"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"04026c998c24ac47eb76886b9790c5710b603eb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE_MRP"],"series_id":"32962ccc-95a9-4841-8ff7-1294892e86a5","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-07-25 10:37:00 +0000 UTC FinishedAt: 2026-07-25 13:38:30 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvtj7l[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"04026c998c24ac47eb76886b9790c5710b603eb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE_MRP"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-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":["br_mrp_start_test","br_mrp_add","br_mrp_set_ring_role","br_mrp_set_ring_state","br_mrp_start_in_test","br_mrp_set_in_role","br_mrp_set_in_state","br_mrp_set_port_state","br_mrp_set_port_role","br_mrp_del","br_mrp_rcv","br_mrp_process"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"04026c998c24ac47eb76886b9790c5710b603eb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE_MRP"],"series_id":"32962ccc-95a9-4841-8ff7-1294892e86a5","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-07-25 10:37:00 +0000 UTC FinishedAt: 2026-07-25 13:38:30 +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":["br_mrp_start_test","br_mrp_add","br_mrp_set_ring_role","br_mrp_set_ring_state","br_mrp_start_in_test","br_mrp_set_in_role","br_mrp_set_in_state","br_mrp_set_port_state","br_mrp_set_port_role","br_mrp_del","br_mrp_rcv","br_mrp_process"],"skip_cover_check":false},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:track,Default:nil,Value:*KASAN,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:base-build-id,Default:nil,Value:*35313046-320b-4a4d-b25b-7fa72feef77c,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*1a1a7599-c575-45a2-a2e3-fb642b2484e8,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-workflowvtj7l/series-workflowvtj7l-build-action-2156790624/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-workflowvtj7l/series-workflowvtj7l-build-action-1567398745/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowvtj7l[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"04026c998c24ac47eb76886b9790c5710b603eb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE_MRP"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-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":["br_mrp_start_test","br_mrp_add","br_mrp_set_ring_role","br_mrp_set_ring_state","br_mrp_start_in_test","br_mrp_set_in_role","br_mrp_set_in_state","br_mrp_set_port_state","br_mrp_set_port_role","br_mrp_del","br_mrp_rcv","br_mrp_process"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"04026c998c24ac47eb76886b9790c5710b603eb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE_MRP"],"series_id":"32962ccc-95a9-4841-8ff7-1294892e86a5","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-07-25 10:37:00 +0000 UTC FinishedAt: 2026-07-25 10:37:10 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvtj7l[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"04026c998c24ac47eb76886b9790c5710b603eb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE_MRP"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-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":["br_mrp_start_test","br_mrp_add","br_mrp_set_ring_role","br_mrp_set_ring_state","br_mrp_start_in_test","br_mrp_set_in_role","br_mrp_set_in_state","br_mrp_set_port_state","br_mrp_set_port_role","br_mrp_del","br_mrp_rcv","br_mrp_process"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"04026c998c24ac47eb76886b9790c5710b603eb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE_MRP"],"series_id":"32962ccc-95a9-4841-8ff7-1294892e86a5","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-07-25 10:37:00 +0000 UTC FinishedAt: 2026-07-25 10:37:07 +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":["br_mrp_start_test","br_mrp_add","br_mrp_set_ring_role","br_mrp_set_ring_state","br_mrp_start_in_test","br_mrp_set_in_role","br_mrp_set_in_state","br_mrp_set_port_state","br_mrp_set_port_role","br_mrp_del","br_mrp_rcv","br_mrp_process"],"skip_cover_check":false},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowvtj7l/series-workflowvtj7l-convert-artifact-1546425218/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowvtj7l[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"04026c998c24ac47eb76886b9790c5710b603eb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE_MRP"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-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":["br_mrp_start_test","br_mrp_add","br_mrp_set_ring_role","br_mrp_set_ring_state","br_mrp_start_in_test","br_mrp_set_in_role","br_mrp_set_in_state","br_mrp_set_port_state","br_mrp_set_port_role","br_mrp_del","br_mrp_rcv","br_mrp_process"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"04026c998c24ac47eb76886b9790c5710b603eb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE_MRP"],"series_id":"32962ccc-95a9-4841-8ff7-1294892e86a5","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-07-25 10:37:00 +0000 UTC FinishedAt: 2026-07-25 10:37:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvtj7l[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"04026c998c24ac47eb76886b9790c5710b603eb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE_MRP"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-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":["br_mrp_start_test","br_mrp_add","br_mrp_set_ring_role","br_mrp_set_ring_state","br_mrp_start_in_test","br_mrp_set_in_role","br_mrp_set_in_state","br_mrp_set_port_state","br_mrp_set_port_role","br_mrp_del","br_mrp_rcv","br_mrp_process"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"04026c998c24ac47eb76886b9790c5710b603eb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE_MRP"],"series_id":"32962ccc-95a9-4841-8ff7-1294892e86a5","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-07-25 10:37:00 +0000 UTC FinishedAt: 2026-07-25 10:37:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvtj7l[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"04026c998c24ac47eb76886b9790c5710b603eb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE_MRP"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-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":["br_mrp_start_test","br_mrp_add","br_mrp_set_ring_role","br_mrp_set_ring_state","br_mrp_start_in_test","br_mrp_set_in_role","br_mrp_set_in_state","br_mrp_set_port_state","br_mrp_set_port_role","br_mrp_del","br_mrp_rcv","br_mrp_process"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"04026c998c24ac47eb76886b9790c5710b603eb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE_MRP"],"series_id":"32962ccc-95a9-4841-8ff7-1294892e86a5","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-07-25 10:37:00 +0000 UTC FinishedAt: 2026-07-25 10:37:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvtj7l[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"04026c998c24ac47eb76886b9790c5710b603eb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE_MRP"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-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":["br_mrp_start_test","br_mrp_add","br_mrp_set_ring_role","br_mrp_set_ring_state","br_mrp_start_in_test","br_mrp_set_in_role","br_mrp_set_in_state","br_mrp_set_port_state","br_mrp_set_port_role","br_mrp_del","br_mrp_rcv","br_mrp_process"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"04026c998c24ac47eb76886b9790c5710b603eb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE_MRP"],"series_id":"32962ccc-95a9-4841-8ff7-1294892e86a5","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-07-25 10:37:10 +0000 UTC FinishedAt: 2026-07-25 13:38:30 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvtj7l[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"04026c998c24ac47eb76886b9790c5710b603eb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE_MRP"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-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":["br_mrp_start_test","br_mrp_add","br_mrp_set_ring_role","br_mrp_set_ring_state","br_mrp_start_in_test","br_mrp_set_in_role","br_mrp_set_in_state","br_mrp_set_port_state","br_mrp_set_port_role","br_mrp_del","br_mrp_rcv","br_mrp_process"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"04026c998c24ac47eb76886b9790c5710b603eb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE_MRP"],"series_id":"32962ccc-95a9-4841-8ff7-1294892e86a5","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-07-25 10:37:10 +0000 UTC FinishedAt: 2026-07-25 13:38:20 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*35313046-320b-4a4d-b25b-7fa72feef77c,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*1a1a7599-c575-45a2-a2e3-fb642b2484e8,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-workflowvtj7l/series-workflowvtj7l-build-action-2156790624/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-workflowvtj7l/series-workflowvtj7l-build-action-1567398745/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-workflowvtj7l/series-workflowvtj7l-convert-artifact-1546425218/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,}