Name: series-workflowpcgv2 Phase: Succeeded StartedAt: 2026-07-26 22:14:41 +0000 UTC FinishedAt: 2026-07-27 03:03:08 +0000 UTC Input: nil Output: nil --------- Name: series-workflowpcgv2[0] Phase: Succeeded StartedAt: 2026-07-26 22:14:41 +0000 UTC FinishedAt: 2026-07-26 22:30:55 +0000 UTC Input: nil Output: nil --------- Name: series-workflowpcgv2[0].run-triage Phase: Succeeded StartedAt: 2026-07-26 22:14:41 +0000 UTC FinishedAt: 2026-07-26 22:30:55 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "53658c6f3682967a5e76ed4bc7462c4bdcddaec3", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BRIDGE", "BRIDGE_MRP" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "53658c6f3682967a5e76ed4bc7462c4bdcddaec3", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BRIDGE", "BRIDGE_MRP" ], "series_id": "884c98b8-35ee-4cd3-bd28-d9274b49e5d2" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "br_mrp_start_test", "br_mrp_test_work_expired" ], "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+CgkJCTx0ZD4yMDI2LzA3LzI2IDIyOjI5PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JSSURHRSYjMzQ7LAogICAgJiMzNDtCUklER0VfTVJQJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7YnJfbXJwX3N0YXJ0X3Rlc3QmIzM0OywKICAgICYjMzQ7YnJfbXJwX3Rlc3Rfd29ya19leHBpcmVkJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgZnVuY3Rpb25hbCBidWcgaW4gdGhlIGxlbmd0aCBjYWxjdWxhdGlvbiBvZiBNUlAgdGVzdCBwYWNrZXRzIGluIHRoZSBicmlkZ2Ugc3Vic3lzdGVtLiBUaGUgY29kZSBpcyByZWFjaGFibGUgdmlhIG5ldGxpbmsgY29uZmlndXJhdGlvbiBvZiB0aGUgYnJpZGdlLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDIyOjI5PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgODk0MmZhODg3ZDIwZjQ0YzI3ZTZiYTAyMWJhNmRkYTc1YjZlMTNjMlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBTdW4gSnVsIDI2IDIyOjI5OjQ4IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL25ldC9icmlkZ2UvYnJfbXJwLmMgYi9uZXQvYnJpZGdlL2JyX21ycC5jXG5pbmRleCAzZjcxMjZhN2Q3MjAwMy4uMTc5ZDI0NzBiNzI0ODggMTAwNjQ0XG4tLS0gYS9uZXQvYnJpZGdlL2JyX21ycC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvYnJpZGdlL2JyX21ycC5jXG5AQCAtMjE1LDcgJiM0MzsyMTUsNyBAQCBzdGF0aWMgc3RydWN0IHNrX2J1ZmYgKmJyX21ycF9hbGxvY190ZXN0X3NrYihzdHJ1Y3QgYnJfbXJwICptcnAsXG4gXHRcdHN0cnVjdCBicl9tcnBfb3VpX2hkciAqb3VpID0gTlVMTDtcbiBcdFx0dTggbGVuZ3RoO1xuIFxuLVx0XHRsZW5ndGggPSBzaXplb2YoKnN1Yl9vcHQpICYjNDM7IHNpemVvZigqc3ViX3RsdikgJiM0Mzsgc2l6ZW9mKG91aSkgJiM0MztcbiYjNDM7XHRcdGxlbmd0aCA9IHNpemVvZigqc3ViX29wdCkgJiM0Mzsgc2l6ZW9mKCpzdWJfdGx2KSAmIzQzOyBzaXplb2YoKm91aSkgJiM0MztcbiBcdFx0XHRNUlBfT1BUX1BBRERJTkc7XG4gXHRcdGJyX21ycF9za2JfdGx2KHNrYiwgQlJfTVJQX1RMVl9IRUFERVJfT1BUSU9OLCBsZW5ndGgpO1xuIFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDIyOjI5PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtCUklER0UmIzM0OywKICAgICYjMzQ7QlJJREdFX01SUCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2JyX21ycF9zdGFydF90ZXN0JiMzNDssCiAgICAmIzM0O2JyX21ycF90ZXN0X3dvcmtfZXhwaXJlZCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIGZ1bmN0aW9uYWwgYnVnIGluIHRoZSBsZW5ndGggY2FsY3VsYXRpb24gb2YgTVJQIHRlc3QgcGFja2V0cyBpbiB0aGUgYnJpZGdlIHN1YnN5c3RlbS4gVGhlIGNvZGUgaXMgcmVhY2hhYmxlIHZpYSBuZXRsaW5rIGNvbmZpZ3VyYXRpb24gb2YgdGhlIGJyaWRnZS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDg5NDJmYTg4N2QyMGY0NGMyN2U2YmEwMjFiYTZkZGE3NWI2ZTEzYzIKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgU3VuIEp1bCAyNiAyMjoyOTo0OCAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL25ldC9icmlkZ2UvYnJfbXJwLmMgYi9uZXQvYnJpZGdlL2JyX21ycC5jCmluZGV4IDNmNzEyNmE3ZDcyMDAzLi4xNzlkMjQ3MGI3MjQ4OCAxMDA2NDQKLS0tIGEvbmV0L2JyaWRnZS9icl9tcnAuYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvYnJpZGdlL2JyX21ycC5jCkBAIC0yMTUsNyAmIzQzOzIxNSw3IEBAIHN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqYnJfbXJwX2FsbG9jX3Rlc3Rfc2tiKHN0cnVjdCBicl9tcnAgKm1ycCwKIAkJc3RydWN0IGJyX21ycF9vdWlfaGRyICpvdWkgPSBOVUxMOwogCQl1OCBsZW5ndGg7CiAKLQkJbGVuZ3RoID0gc2l6ZW9mKCpzdWJfb3B0KSAmIzQzOyBzaXplb2YoKnN1Yl90bHYpICYjNDM7IHNpemVvZihvdWkpICYjNDM7CiYjNDM7CQlsZW5ndGggPSBzaXplb2YoKnN1Yl9vcHQpICYjNDM7IHNpemVvZigqc3ViX3RsdikgJiM0Mzsgc2l6ZW9mKCpvdWkpICYjNDM7CiAJCQlNUlBfT1BUX1BBRERJTkc7CiAJCWJyX21ycF9za2JfdGx2KHNrYiwgQlJfTVJQX1RMVl9IRUFERVJfT1BUSU9OLCBsZW5ndGgpOwogCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDIyOjI5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIwOTIKCQkJCQkJCW91dHB1dDogNDEKCQkJCQkJCXRob3VnaHRzOiA5MwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB1bmRlcnN0YW5kaW5nLCBjb25zaWRlcmluZyBJJiMzOTttIHRoZSBvbmUgJiMzNDt0aGlua2luZyYjMzQ7IHRoaXM6CgoqKkFuYWx5emluZyBhIE5ldHdvcmsgQnJpZGdlIE1SUCBQYXRjaCoqCgpBbHJpZ2h0LCBJJiMzOTttIGxvb2tpbmcgYXQgYSBwYXRjaCB0aGF0JiMzOTtzIHRvdWNoaW5nIHRoZSBgYnJfbXJwLmNgIGZpbGUgd2l0aGluIHRoZSBgbmV0L2JyaWRnZWAgZGlyZWN0b3J5LiBTcGVjaWZpY2FsbHksIGl0JiMzOTtzIGEgbWlub3IgYnV0IHBvdGVudGlhbGx5IGltcGFjdGZ1bCBjaGFuZ2Ugd2l0aGluIHRoZSBgYnJfbXJwX2FsbG9jX3Rlc3Rfc2tiYCBmdW5jdGlvbi4gVGhlIHBhdGNoIGFkanVzdHMgYSBgc2l6ZW9mYCBjYWxjdWxhdGlvbi4gSW5zdGVhZCBvZiBjYWxjdWxhdGluZyB0aGUgc2l6ZSBvZiBgb3VpYCBkaXJlY3RseSwgaXQgbm93IHVzZXMgYHNpemVvZigqb3VpKWAuIFRoaXMgc2VlbXMgbGlrZSBhIHRleHRib29rIGZpeCBmb3IgYSBjb21tb24gQyBwaXRmYWxsLCB0aGUgY2xhc3NpYyAmIzM0O3BvaW50ZXIgdnMuIHN0cnVjdHVyZSYjMzQ7IHNpemUgZGlzY3JlcGFuY3kuIEl0IGxvb2tzIGxpa2UgdGhlIG9yaWdpbmFsIGNvZGUgd2FzIGxpa2VseSB1c2luZyB0aGUgc2l6ZSBvZiBhIHBvaW50ZXIgdG8gYG91aWAgd2hlbiBpdCBzaG91bGQgaGF2ZSBiZWVuIHVzaW5nIHRoZSBzaXplIG9mIHRoZSAqc3RydWN0dXJlKiBwb2ludGVkIHRvIGJ5IGBvdWlgLiBUaGlzIGluZGljYXRlcyBhIGJ1ZyBpbiB0aGUgbGVuZ3RoIGNhbGN1bGF0aW9uLCBhbmQgdGhhdCB0aGlzIHBhdGNoIGlzIGNvcnJlY3RpbmcgaXQgdG8gbWFrZSB0aGUgY29kZSBmdW5jdGlvbiBhcyBpbnRlbmRlZC4gTm93LCBsZXQgbWUgZGVsdmUgaW50byB0aGUgY29kZSB0byBjaGVjayBleGFjdGx5IGhvdyBgYnJfbXJwX2FsbG9jX3Rlc3Rfc2tiYCB3b3JrcywgYW5kIHdoZXJlIGl0IGdldHMgY2FsbGVkIHdpdGhpbiB0aGUgYnJvYWRlciBmcmFtZXdvcmsuIEkmIzM5O20gZXNwZWNpYWxseSBpbnRlcmVzdGVkIGluIGhvdyB0aGlzIHNpemUgY2FsY3VsYXRpb24gYWZmZWN0cyB0aGUgYWxsb2NhdGlvbiBvZiB0aGUgU29ja2V0IEJ1ZmZlciAoYHNrYmApIGFuZCB3aGF0IGtpbmQgb2YgcG90ZW50aWFsIGVycm9ycyB0aGlzIGZpeCB3b3VsZCBoYXZlIGF2ZXJ0ZWQuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBmdW5jdGlvbiYjMzk7cyByZXNwb25zaWJpbGl0eSBhbmQgaXRzIHJlbGF0aW9uc2hpcCB0byB0aGUgc3Vycm91bmRpbmcgY29kZSB0byBncmFzcCB0aGUgdHJ1ZSBpbXBsaWNhdGlvbnMgb2YgdGhpcyBmaXguCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMjI6Mjk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7YnJfbXJwX2FsbG9jX3Rlc3Rfc2tiJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L2JyaWRnZS9icl9tcnAuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvYnJpZGdlL2JyX21ycC5jPTE3MT1zdGF0aWMgdm9pZCBicl9tcnBfc2tiX2NvbW1vbihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgYnJfbXJwICptcnApXG4tLVxubmV0L2JyaWRnZS9icl9tcnAuYy0xODEtXG5uZXQvYnJpZGdlL2JyX21ycC5jOjE4MjpzdGF0aWMgc3RydWN0IHNrX2J1ZmYgKmJyX21ycF9hbGxvY190ZXN0X3NrYihzdHJ1Y3QgYnJfbXJwICptcnAsXG5uZXQvYnJpZGdlL2JyX21ycC5jLTE4My1cdFx0XHRcdFx0ICAgICBzdHJ1Y3QgbmV0X2JyaWRnZV9wb3J0ICpwLFxuLS1cbm5ldC9icmlkZ2UvYnJfbXJwLmM9Mjc5PXN0YXRpYyB2b2lkIGJyX21ycF90ZXN0X3dvcmtfZXhwaXJlZChzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXG4tLVxubmV0L2JyaWRnZS9icl9tcnAuYy0zMTEtXHRcdGlmICghbXJwLVx1MDAzZXRlc3RfbW9uaXRvcikge1xubmV0L2JyaWRnZS9icl9tcnAuYzozMTI6XHRcdFx0c2tiID0gYnJfbXJwX2FsbG9jX3Rlc3Rfc2tiKG1ycCwgcCxcbm5ldC9icmlkZ2UvYnJfbXJwLmMtMzEzLVx0XHRcdFx0XHRcdCAgICBCUl9NUlBfUE9SVF9ST0xFX1BSSU1BUlkpO1xuLS1cbm5ldC9icmlkZ2UvYnJfbXJwLmMtMzI3LVx0XHRpZiAoIW1ycC1cdTAwM2V0ZXN0X21vbml0b3IpIHtcbm5ldC9icmlkZ2UvYnJfbXJwLmM6MzI4Olx0XHRcdHNrYiA9IGJyX21ycF9hbGxvY190ZXN0X3NrYihtcnAsIHAsXG5uZXQvYnJpZGdlL2JyX21ycC5jLTMyOS1cdFx0XHRcdFx0XHQgICAgQlJfTVJQX1BPUlRfUk9MRV9TRUNPTkRBUlkpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDIyOjI5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI4OTYKCQkJCQkJCW91dHB1dDogNDAKCQkJCQkJCXRob3VnaHRzOiA1MgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhbmFseXNpcyBvZiB0aGUgcHJvdmlkZWQgY29kZSBzbmlwcGV0OgoKKipEaXZpbmcgaW50byB0aGUgTVJQIEFsbG9jYXRpb24gVGVzdGluZyoqCgpPa2F5LCBzbyBgYnJfbXJwX2FsbG9jX3Rlc3Rfc2tiYCBpcyBnZXR0aW5nIGNhbGxlZCBmcm9tIGBicl9tcnBfdGVzdF93b3JrX2V4cGlyZWRgLiBUaGF0JiMzOTtzIHRoZSBrZXkgcmVsYXRpb25zaGlwIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhlcmUuIE15IGZpcnN0IGluc3RpbmN0IGlzIHRvIHRyYWNlIGJhY2sgYW5kIGZpZ3VyZSBvdXQgdGhlIHRpbWluZyBhbmQgY29udGV4dCBvZiB0aGUgbGF0dGVyLCBzcGVjaWZpY2FsbHkgaG93IGBicl9tcnBfdGVzdF93b3JrX2V4cGlyZWRgIGlzIHNjaGVkdWxlZC4gVW5kZXJzdGFuZGluZyAqd2hlbiogYW5kICp3aHkqIHRoaXMgZXhwaXJ5IHdvcmsgaXMgcnVubmluZyBpcyBjcnVjaWFsIHRvIGdyYXNwaW5nIHdoYXQgdGhlIGBicl9tcnBfYWxsb2NfdGVzdF9za2JgIGZ1bmN0aW9uIGlzIGFjdHVhbGx5IGRvaW5nIGluIHByYWN0aWNlLiBXaGF0JiMzOTtzIHRoZSBzY2hlZHVsaW5nIG1lY2hhbmlzbT8gSXMgaXQgYSB0aW1lciwgYSB3b3JrIHF1ZXVlLCBhbiBldmVudCB0cmlnZ2VyZWQgYnkgc29tZXRoaW5nIGVsc2U/IFRoZSBzY2hlZHVsaW5nIGlzIHdoZXJlIEkmIzM5O2xsIGZpbmQgdGhlIGNvbnN0cmFpbnRzLCB0aGUgdHJpZ2dlciBhbmQgdGhlIGludGVuZGVkIGJlaGF2aW91ciBvZiB0aGlzIGV4cGlyZWQgd29yayBmdW5jdGlvbi4gVGhhdCB3aWxsIHRlbGwgbWUgd2hhdCBjb25kaXRpb25zIGhhdmUgdG8gYmUgbWV0IGZvciB0aGUgYHNrYmAgYWxsb2NhdGlvbiB0ZXN0aW5nIHRvIGJlIGludm9rZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMjI6Mjk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7YnJfbXJwX3Rlc3Rfd29ya19leHBpcmVkJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L2JyaWRnZS9icl9tcnAuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvYnJpZGdlL2JyX21ycC5jPTIzOT1zdGF0aWMgc3RydWN0IHNrX2J1ZmYgKmJyX21ycF9hbGxvY19pbl90ZXN0X3NrYihzdHJ1Y3QgYnJfbXJwICptcnAsXG4tLVxubmV0L2JyaWRnZS9icl9tcnAuYy0yNzgtICovXG5uZXQvYnJpZGdlL2JyX21ycC5jOjI3OTpzdGF0aWMgdm9pZCBicl9tcnBfdGVzdF93b3JrX2V4cGlyZWQoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxubmV0L2JyaWRnZS9icl9tcnAuYy0yODAte1xuLS1cbm5ldC9icmlkZ2UvYnJfbXJwLmM9NDk3PWludCBicl9tcnBfYWRkKHN0cnVjdCBuZXRfYnJpZGdlICpiciwgc3RydWN0IGJyX21ycF9pbnN0YW5jZSAqaW5zdGFuY2UpXG4tLVxubmV0L2JyaWRnZS9icl9tcnAuYy01NDItXG5uZXQvYnJpZGdlL2JyX21ycC5jOjU0MzpcdElOSVRfREVMQVlFRF9XT1JLKFx1MDAyNm1ycC1cdTAwM2V0ZXN0X3dvcmssIGJyX21ycF90ZXN0X3dvcmtfZXhwaXJlZCk7XG5uZXQvYnJpZGdlL2JyX21ycC5jLTU0NC1cdElOSVRfREVMQVlFRF9XT1JLKFx1MDAyNm1ycC1cdTAwM2Vpbl90ZXN0X3dvcmssIGJyX21ycF9pbl90ZXN0X3dvcmtfZXhwaXJlZCk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMjI6Mjk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzQ3NAoJCQkJCQkJb3V0cHV0OiAzMAoJCQkJCQkJdGhvdWdodHM6IDMyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQmIzM5O3MgaW50ZXJuYWwgbW9ub2xvZ3VlOgoKKipJbnZlc3RpZ2F0aW5nIHRoZSBJbml0aWFsaXphdGlvbiBQcm9jZXNzKioKCkFscmlnaHQsIHNvIGBicl9tcnBfYWRkYCBpcyB0aGUga2V5IGZ1bmN0aW9uIHRoYXQga2lja3MgdGhpbmdzIG9mZiBoZXJlLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gemVybyBpbiBvbiB0aGF0LiBJdCYjMzk7cyB0aGUgc3RhcnRpbmcgcG9pbnQsIHNvIHVuZGVyc3RhbmRpbmcgaXRzIHJvbGUgYW5kIGhvdyBpdCYjMzk7cyBpbnZva2VkIGlzIGNydWNpYWwgZm9yIGEgY29tcGxldGUgcGljdHVyZS4gTGV0JiMzOTtzIGRlbHZlIGludG8gdGhlIGZ1bmN0aW9uIGl0c2VsZiBhbmQgdHJhY2UgaXRzIGNhbGxzIHRvIGdldCBhIGdyaXAgb24gdGhlIG92ZXJhbGwgZmxvdy4gTmVlZCB0byB1bmRlcnN0YW5kIHRoZSBlbnRyeSBwb2ludCBiZWZvcmUgYW55dGhpbmcgZWxzZSwgc28gYGJyX21ycF9hZGRgIGl0IGlzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDIyOjI5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2JyX21ycF9hZGQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvYnJpZGdlLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvYnJpZGdlL2JyX21ycC5jPTQyOD1zdGF0aWMgdm9pZCBicl9tcnBfZGVsX2ltcGwoc3RydWN0IG5ldF9icmlkZ2UgKmJyLCBzdHJ1Y3QgYnJfbXJwICptcnApXG4tLVxubmV0L2JyaWRnZS9icl9tcnAuYy00OTYtICovXG5uZXQvYnJpZGdlL2JyX21ycC5jOjQ5NzppbnQgYnJfbXJwX2FkZChzdHJ1Y3QgbmV0X2JyaWRnZSAqYnIsIHN0cnVjdCBicl9tcnBfaW5zdGFuY2UgKmluc3RhbmNlKVxubmV0L2JyaWRnZS9icl9tcnAuYy00OTgte1xuLS1cbm5ldC9icmlkZ2UvYnJfbXJwX25ldGxpbmsuYz0zMT1zdGF0aWMgaW50IGJyX21ycF9pbnN0YW5jZV9wYXJzZShzdHJ1Y3QgbmV0X2JyaWRnZSAqYnIsIHN0cnVjdCBubGF0dHIgKmF0dHIsXG4tLVxubmV0L2JyaWRnZS9icl9tcnBfbmV0bGluay5jLTYxLVx0aWYgKGNtZCA9PSBSVE1fU0VUTElOSylcbm5ldC9icmlkZ2UvYnJfbXJwX25ldGxpbmsuYzo2MjpcdFx0cmV0dXJuIGJyX21ycF9hZGQoYnIsIFx1MDAyNmluc3QpO1xubmV0L2JyaWRnZS9icl9tcnBfbmV0bGluay5jLTYzLVx0ZWxzZVxuLS1cbm5ldC9icmlkZ2UvYnJfcHJpdmF0ZV9tcnAuaD01OT1lbnVtIGJyX21ycF9od19zdXBwb3J0IHtcbi0tXG5uZXQvYnJpZGdlL2JyX3ByaXZhdGVfbXJwLmgtNjUtLyogYnJfbXJwLmMgKi9cbm5ldC9icmlkZ2UvYnJfcHJpdmF0ZV9tcnAuaDo2NjppbnQgYnJfbXJwX2FkZChzdHJ1Y3QgbmV0X2JyaWRnZSAqYnIsIHN0cnVjdCBicl9tcnBfaW5zdGFuY2UgKmluc3RhbmNlKTtcbm5ldC9icmlkZ2UvYnJfcHJpdmF0ZV9tcnAuaC02Ny1pbnQgYnJfbXJwX2RlbChzdHJ1Y3QgbmV0X2JyaWRnZSAqYnIsIHN0cnVjdCBicl9tcnBfaW5zdGFuY2UgKmluc3RhbmNlKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNiAyMjoyOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0MDYyCgkJCQkJCQlvdXRwdXQ6IDMyCgkJCQkJCQl0aG91Z2h0czogNDIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqQW5hbHl6aW5nIHRoZSBNUlAgSW5zdGFuY2UgUGFyc2luZyBpbiBCcmlkZ2UgTmV0bGluayoqCgpBbHJpZ2h0LCBzbyB0aGUgYnJlYWRjcnVtYiB0cmFpbCBzdGFydHMgd2l0aCBgYnJfbXJwX2luc3RhbmNlX3BhcnNlYCBpbiBgbmV0L2JyaWRnZS9icl9tcnBfbmV0bGluay5jYC4gVGhhdCBmdW5jdGlvbiBjYWxsIGltbWVkaWF0ZWx5IHBpcXVlcyBteSBpbnRlcmVzdC4gR2l2ZW4gdGhpcyBjb250ZXh0LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlIE1SUCBpbnN0YW5jZSBpcyBjb25maWd1cmVkLiBTcGVjaWZpY2FsbHksIEkmIzM5O20gdGhpbmtpbmcgYWJvdXQgdGhlIHJlbGV2YW50IGNvbmZpZ3VyYXRpb24gb3B0aW9ucyB0aGF0IGdvdmVybiB0aGlzIHBhcnRpY3VsYXIgcGFyc2luZyByb3V0aW5lLiBJIG5lZWQgdG8gdHJhY2sgZG93biB0aGUgY29uZmlndXJhdGlvbiBrbm9icyB0aGF0IGNvbnRyb2wgdGhlIGJlaGF2aW91ciBvZiB0aGlzIHNlY3Rpb24uIEkgd2lsbCBiZSBsb29raW5nIGluIHRoZSBLY29uZmlnIGZpbGVzLCBvciBwb3RlbnRpYWxseSBhdCBydW50aW1lIHVzaW5nIHN5c2ZzLiBUaGlzIGlzIHdoZXJlIEkmIzM5O2xsIGZpbmQgbXkgYW5zd2Vycy4gTm93IEkgbmVlZCB0byBrbm93IHdoZXJlIHRoZSBjb25maWcgb3B0aW9uIGxpdmVzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNiAyMjozMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2JyX21ycF9hZGQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvYnJpZGdlL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNiAyMjozMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0MzEzCgkJCQkJCQlvdXRwdXQ6IDI3CgkJCQkJCQl0aG91Z2h0czogMTUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgc3VtbWFyeSwgcHJlc2VudGVkIGFzIGEgc3RyZWFtIG9mIHRob3VnaHQ6CgoqKkNoZWNraW5nIHRoZSBNUlAgQ29uZmlndXJhdGlvbiBpbiB0aGUgS2VybmVsKioKCkFscmlnaHQsIHRpbWUgdG8gZ2V0IHRoaXMgc29ydGVkLiBJIG5lZWQgdG8gcmVmcmVzaCBteSBtZW1vcnkgb24gdGhlIE1SUCBjb25maWd1cmF0aW9uIG9wdGlvbnMgd2l0aGluIHRoZSBrZXJuZWwuIExldCYjMzk7cyBzdGFydCBieSBsb29raW5nIGF0IHRoZSBLY29uZmlnIGZpbGUgZm9yIHRoZSBicmlkZ2Ugc3Vic3lzdGVtLiBTcGVjaWZpY2FsbHksIGBuZXQvYnJpZGdlL0tjb25maWdgIHNob3VsZCBob2xkIHRoZSByZWxldmFudCBkZWZpbml0aW9ucy4gVGhhdCYjMzk7cyB0aGUgbG9naWNhbCBwbGFjZSB0byBmaW5kIHRoZSBib29sZWFuIGNob2ljZXMsIGRlcGVuZGVuY2llcywgYW5kIGRlZmF1bHQgc2V0dGluZ3MgcmVsYXRlZCB0byBNUlAgKE11bHRpY2FzdCBSb3V0ZXIgUHJvdG9jb2wpLiBUaGlzIGZpbGUgdXN1YWxseSBwcm92aWRlcyBhIGdvb2Qgb3ZlcnZpZXcgb2Ygd2hhdCYjMzk7cyBzdXBwb3J0ZWQgYW5kIGhvdyBpdCYjMzk7cyBlbmFibGVkIGluIHRoZSBrZXJuZWwgYnVpbGQgcHJvY2Vzcy4gSSYjMzk7bGwgbmVlZCB0byBjb25maXJtIGlmIGl0JiMzOTtzIHRoZXJlLCBhbmQgdGhlbiB1bmRlcnN0YW5kIGl0cyBjdXJyZW50IHNldHRpbmdzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNiAyMjozMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtNUlAmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvYnJpZGdlL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L2JyaWRnZS9LY29uZmlnPTUwPWNvbmZpZyBCUklER0VfVkxBTl9GSUxURVJJTkdcbi0tXG5uZXQvYnJpZGdlL0tjb25maWctNjMtXG5uZXQvYnJpZGdlL0tjb25maWc6NjQ6Y29uZmlnIEJSSURHRV9NUlBcbm5ldC9icmlkZ2UvS2NvbmZpZzo2NTpcdGJvb2wgXCYjMzQ7TVJQIHByb3RvY29sXCYjMzQ7XG5uZXQvYnJpZGdlL0tjb25maWctNjYtXHRkZXBlbmRzIG9uIEJSSURHRVxuLS1cbm5ldC9icmlkZ2UvS2NvbmZpZy02OC1cdGhlbHBcbm5ldC9icmlkZ2UvS2NvbmZpZzo2OTpcdCAgSWYgeW91IHNheSBZIGhlcmUsIHRoZW4gdGhlIEV0aGVybmV0IGJyaWRnZSB3aWxsIGJlIGFibGUgdG8gcnVuIE1SUFxubmV0L2JyaWRnZS9LY29uZmlnLTcwLVx0ICBwcm90b2NvbCB0byBkZXRlY3QgbG9vcHNcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMjI6MzA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDY1OAoJCQkJCQkJb3V0cHV0OiAzMwoJCQkJCQkJdGhvdWdodHM6IDcyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGFuYWx5c2lzIG9mIHRoZSBzaXR1YXRpb246CgoqKkludmVzdGlnYXRpbmcgdGhlIE1SUCBCcmlkZ2luZyBDb25maWd1cmF0aW9uKioKCk9rYXksIHNvIHdlJiMzOTtyZSBsb29raW5nIGF0IGEgY29uZmlndXJhdGlvbiBzcGVjaWZpY2FsbHkgZGVzaWduYXRlZCBhcyBgQlJJREdFX01SUGAuIE15IGluaXRpYWwgZm9jdXMgaXMgb24gdW5kZXJzdGFuZGluZyB0aGUgdGVzdCB3b3JrIG1lY2hhbmlzbSB3aXRoaW4gdGhpcyBicmlkZ2luZyBjb250ZXh0LiBJIG5lZWQgdG8gemVybyBpbiBvbiBob3cgdGhlIE1SUCAoTXVsdGljYXN0IFJlZ2lzdHJhdGlvbiBQcm90b2NvbCkgdGVzdHMgYXJlIGluaXRpYXRlZCBhbmQgbWFuYWdlZC4KCkkgbmVlZCB0byBkaWcgaW50byB0aGUgcmVsZXZhbnQgZnVuY3Rpb25zLiBCYXNlZCBvbiB0aGUgY2x1ZXMsIEkmIzM5O2xsIGJlIGNvbmNlbnRyYXRpbmcgb24gZWl0aGVyIGBicl9tcnBfYWxsb2NfdGVzdF9za2JgLCB3aGljaCBwcm9iYWJseSBpbnZvbHZlcyBhbGxvY2F0aW5nIHRoZSB0ZXN0IHNrYiAoc29ja2V0IGJ1ZmZlcikgdGhhdCB0aGUgdGVzdCB3b3JrIHdpbGwgdXNlLCBvciBgYnJfbXJwX3Rlc3Rfd29ya19leHBpcmVkYCwgc3VnZ2VzdGluZyBzb21ldGhpbmcgYWJvdXQgaGFuZGxpbmcgdGltZW91dHMuIGBicl9tcnBfYWRkYCBpcyBhbHNvIGEgcGxheWVyLCBsaWtlbHkgcmVsYXRlZCB0byBhZGRpbmcgZW50cmllcyB0byB0aGUgTVJQLiBBbmQsIG9mIGNvdXJzZSwgdGhlIGtleSBpbml0aWF0b3IsIGBicl9tcnBfc3RhcnRfdGVzdGAsIHNlZW1zIGNyaXRpY2FsLCBpdCYjMzk7cyB0aGUgb2J2aW91cyBlbnRyeSBwb2ludCB0byB0cmFjZSwgYXMgaXQgc2hvdWxkIGJlIGtpY2tpbmcgb2ZmIHRoZSB3aG9sZSB0ZXN0aW5nIHByb2Nlc3MuIE15IGdvYWwgaXMgdG8gZmlndXJlIG91dCBleGFjdGx5ICp3aGF0KiBmdW5jdGlvbiBvciBldmVudCAqc3RhcnRzKiB0aGlzIHRlc3Qgd29yay4gVGhhdCYjMzk7cyB0aGUga2V5IHRvIHVuZGVyc3RhbmRpbmcgdGhlIGNvbnRyb2wgZmxvdyBhbmQgcG90ZW50aWFsIHByb2JsZW1zLiBJIG5lZWQgdG8gcGlucG9pbnQgdGhhdCBzdGFydGluZyBwb2ludC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMjI6MzA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7dGVzdF93b3JrJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L2JyaWRnZS9icl9tcnAuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvYnJpZGdlL2JyX21ycC5jPTIzOT1zdGF0aWMgc3RydWN0IHNrX2J1ZmYgKmJyX21ycF9hbGxvY19pbl90ZXN0X3NrYihzdHJ1Y3QgYnJfbXJwICptcnAsXG4tLVxubmV0L2JyaWRnZS9icl9tcnAuYy0yNzgtICovXG5uZXQvYnJpZGdlL2JyX21ycC5jOjI3OTpzdGF0aWMgdm9pZCBicl9tcnBfdGVzdF93b3JrX2V4cGlyZWQoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxubmV0L2JyaWRnZS9icl9tcnAuYy0yODAte1xubmV0L2JyaWRnZS9icl9tcnAuYy0yODEtXHRzdHJ1Y3QgZGVsYXllZF93b3JrICpkZWxfd29yayA9IHRvX2RlbGF5ZWRfd29yayh3b3JrKTtcbm5ldC9icmlkZ2UvYnJfbXJwLmM6MjgyOlx0c3RydWN0IGJyX21ycCAqbXJwID0gY29udGFpbmVyX29mKGRlbF93b3JrLCBzdHJ1Y3QgYnJfbXJwLCB0ZXN0X3dvcmspO1xubmV0L2JyaWRnZS9icl9tcnAuYy0yODMtXHRzdHJ1Y3QgbmV0X2JyaWRnZV9wb3J0ICpwO1xuLS1cbm5ldC9icmlkZ2UvYnJfbXJwLmMtMzQzLVxubmV0L2JyaWRnZS9icl9tcnAuYzozNDQ6XHRxdWV1ZV9kZWxheWVkX3dvcmsoc3lzdGVtX3BlcmNwdV93cSwgXHUwMDI2bXJwLVx1MDAzZXRlc3Rfd29yayxcbm5ldC9icmlkZ2UvYnJfbXJwLmMtMzQ1LVx0XHRcdCAgIHVzZWNzX3RvX2ppZmZpZXMobXJwLVx1MDAzZXRlc3RfaW50ZXJ2YWwpKTtcbi0tXG5uZXQvYnJpZGdlL2JyX21ycC5jLTM1MS0gKi9cbm5ldC9icmlkZ2UvYnJfbXJwLmM6MzUyOnN0YXRpYyB2b2lkIGJyX21ycF9pbl90ZXN0X3dvcmtfZXhwaXJlZChzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXG5uZXQvYnJpZGdlL2JyX21ycC5jLTM1My17XG5uZXQvYnJpZGdlL2JyX21ycC5jLTM1NC1cdHN0cnVjdCBkZWxheWVkX3dvcmsgKmRlbF93b3JrID0gdG9fZGVsYXllZF93b3JrKHdvcmspO1xubmV0L2JyaWRnZS9icl9tcnAuYzozNTU6XHRzdHJ1Y3QgYnJfbXJwICptcnAgPSBjb250YWluZXJfb2YoZGVsX3dvcmssIHN0cnVjdCBicl9tcnAsIGluX3Rlc3Rfd29yayk7XG5uZXQvYnJpZGdlL2JyX21ycC5jLTM1Ni1cdHN0cnVjdCBuZXRfYnJpZGdlX3BvcnQgKnA7XG4tLVxubmV0L2JyaWRnZS9icl9tcnAuYy00MjAtXG5uZXQvYnJpZGdlL2JyX21ycC5jOjQyMTpcdHF1ZXVlX2RlbGF5ZWRfd29yayhzeXN0ZW1fcGVyY3B1X3dxLCBcdTAwMjZtcnAtXHUwMDNlaW5fdGVzdF93b3JrLFxubmV0L2JyaWRnZS9icl9tcnAuYy00MjItXHRcdFx0ICAgdXNlY3NfdG9famlmZmllcyhtcnAtXHUwMDNlaW5fdGVzdF9pbnRlcnZhbCkpO1xuLS1cbm5ldC9icmlkZ2UvYnJfbXJwLmM9NDI4PXN0YXRpYyB2b2lkIGJyX21ycF9kZWxfaW1wbChzdHJ1Y3QgbmV0X2JyaWRnZSAqYnIsIHN0cnVjdCBicl9tcnAgKm1ycClcbi0tXG5uZXQvYnJpZGdlL2JyX21ycC5jLTQzMy1cdC8qIFN0b3Agc2VuZGluZyBNUlBfVGVzdCBmcmFtZXMgKi9cbm5ldC9icmlkZ2UvYnJfbXJwLmM6NDM0Olx0Y2FuY2VsX2RlbGF5ZWRfd29ya19zeW5jKFx1MDAyNm1ycC1cdTAwM2V0ZXN0X3dvcmspO1xubmV0L2JyaWRnZS9icl9tcnAuYy00MzUtXHRicl9tcnBfc3dpdGNoZGV2X3NlbmRfcmluZ190ZXN0KGJyLCBtcnAsIDAsIDAsIDAsIDApO1xuLS1cbm5ldC9icmlkZ2UvYnJfbXJwLmMtNDM3LVx0LyogU3RvcCBzZW5kaW5nIE1SUF9JblRlc3QgZnJhbWVzIGlmIGhhcyBhbiBpbnRlcmNvbm5lY3Qgcm9sZSAqL1xubmV0L2JyaWRnZS9icl9tcnAuYzo0Mzg6XHRjYW5jZWxfZGVsYXllZF93b3JrX3N5bmMoXHUwMDI2bXJwLVx1MDAzZWluX3Rlc3Rfd29yayk7XG5uZXQvYnJpZGdlL2JyX21ycC5jLTQzOS1cdGJyX21ycF9zd2l0Y2hkZXZfc2VuZF9pbl90ZXN0KGJyLCBtcnAsIDAsIDAsIDApO1xuLS1cbm5ldC9icmlkZ2UvYnJfbXJwLmM9NDk3PWludCBicl9tcnBfYWRkKHN0cnVjdCBuZXRfYnJpZGdlICpiciwgc3RydWN0IGJyX21ycF9pbnN0YW5jZSAqaW5zdGFuY2UpXG4tLVxubmV0L2JyaWRnZS9icl9tcnAuYy01NDItXG5uZXQvYnJpZGdlL2JyX21ycC5jOjU0MzpcdElOSVRfREVMQVlFRF9XT1JLKFx1MDAyNm1ycC1cdTAwM2V0ZXN0X3dvcmssIGJyX21ycF90ZXN0X3dvcmtfZXhwaXJlZCk7XG5uZXQvYnJpZGdlL2JyX21ycC5jOjU0NDpcdElOSVRfREVMQVlFRF9XT1JLKFx1MDAyNm1ycC1cdTAwM2Vpbl90ZXN0X3dvcmssIGJyX21ycF9pbl90ZXN0X3dvcmtfZXhwaXJlZCk7XG5uZXQvYnJpZGdlL2JyX21ycC5jLTU0NS1cdGhsaXN0X2FkZF90YWlsX3JjdShcdTAwMjZtcnAtXHUwMDNlbGlzdCwgXHUwMDI2YnItXHUwMDNlbXJwX2xpc3QpO1xuLS1cbm5ldC9icmlkZ2UvYnJfbXJwLmM9NzAyPWludCBicl9tcnBfc3RhcnRfdGVzdChzdHJ1Y3QgbmV0X2JyaWRnZSAqYnIsXG4tLVxubmV0L2JyaWRnZS9icl9tcnAuYy03MjctXHRtcnAtXHUwMDNldGVzdF9jb3VudF9taXNzID0gMDtcbm5ldC9icmlkZ2UvYnJfbXJwLmM6NzI4Olx0cXVldWVfZGVsYXllZF93b3JrKHN5c3RlbV9wZXJjcHVfd3EsIFx1MDAyNm1ycC1cdTAwM2V0ZXN0X3dvcmssXG5uZXQvYnJpZGdlL2JyX21ycC5jLTcyOS1cdFx0XHQgICB1c2Vjc190b19qaWZmaWVzKHRlc3QtXHUwMDNlaW50ZXJ2YWwpKTtcbi0tXG5uZXQvYnJpZGdlL2JyX21ycC5jPTc1OD1pbnQgYnJfbXJwX3NldF9pbl9yb2xlKHN0cnVjdCBuZXRfYnJpZGdlICpiciwgc3RydWN0IGJyX21ycF9pbl9yb2xlICpyb2xlKVxuLS1cbm5ldC9icmlkZ2UvYnJfbXJwLmMtNzc4LVx0XHQvKiBTdG9wIHRoZSBnZW5lcmF0aW5nIE1SUF9JblRlc3QgZnJhbWVzICovXG5uZXQvYnJpZGdlL2JyX21ycC5jOjc3OTpcdFx0Y2FuY2VsX2RlbGF5ZWRfd29ya19zeW5jKFx1MDAyNm1ycC1cdTAwM2Vpbl90ZXN0X3dvcmspO1xubmV0L2JyaWRnZS9icl9tcnAuYy03ODAtXHRcdGJyX21ycF9zd2l0Y2hkZXZfc2VuZF9pbl90ZXN0KGJyLCBtcnAsIDAsIDAsIDApO1xuLS1cbm5ldC9icmlkZ2UvYnJfbXJwLmM9ODQwPWludCBicl9tcnBfc3RhcnRfaW5fdGVzdChzdHJ1Y3QgbmV0X2JyaWRnZSAqYnIsXG4tLVxubmV0L2JyaWRnZS9icl9tcnAuYy04NjctXHRtcnAtXHUwMDNlaW5fdGVzdF9jb3VudF9taXNzID0gMDtcbm5ldC9icmlkZ2UvYnJfbXJwLmM6ODY4Olx0cXVldWVfZGVsYXllZF93b3JrKHN5c3RlbV9wZXJjcHVfd3EsIFx1MDAyNm1ycC1cdTAwM2Vpbl90ZXN0X3dvcmssXG5uZXQvYnJpZGdlL2JyX21ycC5jLTg2OS1cdFx0XHQgICB1c2Vjc190b19qaWZmaWVzKGluX3Rlc3QtXHUwMDNlaW50ZXJ2YWwpKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMjI6MzA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjUwMQoJCQkJCQkJb3V0cHV0OiAzMgoJCQkJCQkJdGhvdWdodHM6IDM0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRha2Ugb24gdGhlIHRob3VnaHQgcHJvY2VzcywgYXMgaWYgaXQgd2VyZSBteSBvd246CgoqKkluaXRpYWxpemluZyB0aGUgTVJQIFRlc3QqKgoKT2theSwgc28gd2UmIzM5O3JlIGtpY2tpbmcgdGhpbmdzIG9mZiB3aXRoIGBicl9tcnBfc3RhcnRfdGVzdGAuIFRoYXQmIzM5O3Mgb3VyIGVudHJ5IHBvaW50IGZvciB0aGlzIHRlc3QgcnVuLiBOb3csIG15IGltbWVkaWF0ZSBpbnN0aW5jdCBpcyB0byB0cmFjZSBiYWNrIGl0cyBleGVjdXRpb24uIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjYWxsaW5nIGNvbnRleHQuIExldCYjMzk7cyBzZWUgZXhhY3RseSB3aGVyZSBgYnJfbXJwX3N0YXJ0X3Rlc3RgIGlzIGludm9rZWQuIFVuZGVyc3RhbmRpbmcgdGhlIGNhbGxpbmcgZnVuY3Rpb24ocykgaXMgY3J1Y2lhbCBmb3IgdW5kZXJzdGFuZGluZyB0aGUgb3ZlcmFsbCBmbG93IGFuZCBwb3RlbnRpYWwgZGVwZW5kZW5jaWVzIG9mIHRoZSB0ZXN0LiBJIHdhbnQgdG8gc2VlICpob3cqIHRoaXMgdGVzdCBpcyBiZWluZyBpbml0aWF0ZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDIyOjMwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2JyX21ycF9zdGFydF90ZXN0JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L2JyaWRnZS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L2JyaWRnZS9icl9tcnAuYz02NzE9aW50IGJyX21ycF9zZXRfcmluZ19yb2xlKHN0cnVjdCBuZXRfYnJpZGdlICpicixcbi0tXG5uZXQvYnJpZGdlL2JyX21ycC5jLTcwMS0gKi9cbm5ldC9icmlkZ2UvYnJfbXJwLmM6NzAyOmludCBicl9tcnBfc3RhcnRfdGVzdChzdHJ1Y3QgbmV0X2JyaWRnZSAqYnIsXG5uZXQvYnJpZGdlL2JyX21ycC5jOjcwMzpcdFx0ICAgICAgc3RydWN0IGJyX21ycF9zdGFydF90ZXN0ICp0ZXN0KVxubmV0L2JyaWRnZS9icl9tcnAuYy03MDQte1xuLS1cbm5ldC9icmlkZ2UvYnJfbXJwX25ldGxpbmsuYz0xOTU9c3RhdGljIGNvbnN0IHN0cnVjdCBubGFfcG9saWN5XG5uZXQvYnJpZGdlL2JyX21ycF9uZXRsaW5rLmM6MTk2OmJyX21ycF9zdGFydF90ZXN0X3BvbGljeVtJRkxBX0JSSURHRV9NUlBfU1RBUlRfVEVTVF9NQVggJiM0MzsgMV0gPSB7XG5uZXQvYnJpZGdlL2JyX21ycF9uZXRsaW5rLmMtMTk3LVx0W0lGTEFfQlJJREdFX01SUF9TVEFSVF9URVNUX1VOU1BFQ11cdD0geyAudHlwZSA9IE5MQV9SRUpFQ1QgfSxcbi0tXG5uZXQvYnJpZGdlL2JyX21ycF9uZXRsaW5rLmMtMjA0LVxubmV0L2JyaWRnZS9icl9tcnBfbmV0bGluay5jOjIwNTpzdGF0aWMgaW50IGJyX21ycF9zdGFydF90ZXN0X3BhcnNlKHN0cnVjdCBuZXRfYnJpZGdlICpiciwgc3RydWN0IG5sYXR0ciAqYXR0cixcbm5ldC9icmlkZ2UvYnJfbXJwX25ldGxpbmsuYy0yMDYtXHRcdFx0XHQgICBzdHJ1Y3QgbmV0bGlua19leHRfYWNrICpleHRhY2spXG4tLVxubmV0L2JyaWRnZS9icl9tcnBfbmV0bGluay5jLTIwOC1cdHN0cnVjdCBubGF0dHIgKnRiW0lGTEFfQlJJREdFX01SUF9TVEFSVF9URVNUX01BWCAmIzQzOyAxXTtcbm5ldC9icmlkZ2UvYnJfbXJwX25ldGxpbmsuYzoyMDk6XHRzdHJ1Y3QgYnJfbXJwX3N0YXJ0X3Rlc3QgdGVzdDtcbm5ldC9icmlkZ2UvYnJfbXJwX25ldGxpbmsuYy0yMTAtXHRpbnQgZXJyO1xuLS1cbm5ldC9icmlkZ2UvYnJfbXJwX25ldGxpbmsuYy0yMTItXHRlcnIgPSBubGFfcGFyc2VfbmVzdGVkKHRiLCBJRkxBX0JSSURHRV9NUlBfU1RBUlRfVEVTVF9NQVgsIGF0dHIsXG5uZXQvYnJpZGdlL2JyX21ycF9uZXRsaW5rLmM6MjEzOlx0XHRcdCAgICAgICBicl9tcnBfc3RhcnRfdGVzdF9wb2xpY3ksIGV4dGFjayk7XG5uZXQvYnJpZGdlL2JyX21ycF9uZXRsaW5rLmMtMjE0LVx0aWYgKGVycilcbi0tXG5uZXQvYnJpZGdlL2JyX21ycF9uZXRsaW5rLmMtMjM3LVxubmV0L2JyaWRnZS9icl9tcnBfbmV0bGluay5jOjIzODpcdHJldHVybiBicl9tcnBfc3RhcnRfdGVzdChiciwgXHUwMDI2dGVzdCk7XG5uZXQvYnJpZGdlL2JyX21ycF9uZXRsaW5rLmMtMjM5LX1cbi0tXG5uZXQvYnJpZGdlL2JyX21ycF9uZXRsaW5rLmM9MzU2PWludCBicl9tcnBfcGFyc2Uoc3RydWN0IG5ldF9icmlkZ2UgKmJyLCBzdHJ1Y3QgbmV0X2JyaWRnZV9wb3J0ICpwLFxuLS1cbm5ldC9icmlkZ2UvYnJfbXJwX25ldGxpbmsuYy00MTQtXHRpZiAodGJbSUZMQV9CUklER0VfTVJQX1NUQVJUX1RFU1RdKSB7XG5uZXQvYnJpZGdlL2JyX21ycF9uZXRsaW5rLmM6NDE1Olx0XHRlcnIgPSBicl9tcnBfc3RhcnRfdGVzdF9wYXJzZShicixcbm5ldC9icmlkZ2UvYnJfbXJwX25ldGxpbmsuYy00MTYtXHRcdFx0XHRcdCAgICAgIHRiW0lGTEFfQlJJREdFX01SUF9TVEFSVF9URVNUXSxcbi0tXG5uZXQvYnJpZGdlL2JyX3ByaXZhdGVfbXJwLmg9NzQ9aW50IGJyX21ycF9zZXRfcmluZ19yb2xlKHN0cnVjdCBuZXRfYnJpZGdlICpiciwgc3RydWN0IGJyX21ycF9yaW5nX3JvbGUgKnJvbGUpO1xubmV0L2JyaWRnZS9icl9wcml2YXRlX21ycC5oOjc1OmludCBicl9tcnBfc3RhcnRfdGVzdChzdHJ1Y3QgbmV0X2JyaWRnZSAqYnIsIHN0cnVjdCBicl9tcnBfc3RhcnRfdGVzdCAqdGVzdCk7XG5uZXQvYnJpZGdlL2JyX3ByaXZhdGVfbXJwLmgtNzYtaW50IGJyX21ycF9zZXRfaW5fc3RhdGUoc3RydWN0IG5ldF9icmlkZ2UgKmJyLCBzdHJ1Y3QgYnJfbXJwX2luX3N0YXRlICpzdGF0ZSk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDIyOjMwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDc2NDAKCQkJCQkJCW91dHB1dDogNDEKCQkJCQkJCXRob3VnaHRzOiAxODIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBCdWcgaW4gdGhlIEJyaWRnZSBNUlAgVGVzdCBDb2RlKioKCk9rYXksIHNvIEkmIzM5O20gZGlnZ2luZyBpbnRvIHRoaXMgYnVnLiBJdCBsb29rcyBsaWtlIHRoZSBuZXRsaW5rIGVudHJ5IHBvaW50IGZvciB0aGlzIHdob2xlIE1SUCB0ZXN0IHByb2Nlc3MgaXMgYGJyX21ycF9zdGFydF90ZXN0YC4gVGhlIHJvb3Qgb2YgdGhlIHByb2JsZW0gc2VlbXMgdG8gYmUgd2l0aGluIGBicl9tcnBfYWxsb2NfdGVzdF9za2JgLiBUaGF0IGZ1bmN0aW9uIGlzIGNhbGxlZCBieSBgYnJfbXJwX3Rlc3Rfd29ya19leHBpcmVkYCwgd2hpY2gsIGluIHR1cm4sIGlzIHNjaGVkdWxlZCBieSBgYnJfbXJwX3N0YXJ0X3Rlc3RgLiBTZWVtcyBsaWtlIHRoZSBmaXggaXRzZWxmIGFkZHJlc3NlcyBhIHNpemUgY2FsY3VsYXRpb24gaXNzdWUsIHB1cmVseSBmdW5jdGlvbmFsLgoKTm93LCBhIGNydWNpYWwgcXVlc3Rpb24g4oCTIGlzIHRoaXMgY29kZSBwYXRoIGV2ZW4gKnJlYWNoYWJsZSogaW4gYSBRRU1VIGVudmlyb25tZW50PyBZZXMsIHRoYW5rZnVsbHksIGl0JiMzOTtzIHBhcnQgb2YgdGhlIGJyaWRnZSBtb2R1bGUuIFNpbmNlIHRoYXQmIzM5O3MgZW50aXJlbHkgc29mdHdhcmUtYmFzZWQsIHRoZXJlIHNob3VsZG4mIzM5O3QgYmUgYW55IGhhcmR3YXJlIGRlcGVuZGVuY2llcyBibG9ja2luZyB1cy4gSSBjYW4gZGVmaW5pdGVseSByZXByb2R1Y2UgdGhpcy4KClRoZSBjb25maWd1cmF0aW9uIG9wdGlvbiB0byBlbmFibGUgYWxsIHRoaXMgaXMgYEJSSURHRV9NUlBgLCB3aGljaCBJJiMzOTtsbCBrZWVwIGluIG1pbmQgZm9yIHNldHVwLgoKUmVnYXJkaW5nIHN5bWJvbHMsIEkgbmVlZCB0byBmb2N1cyBvbiBgYnJfbXJwX3N0YXJ0X3Rlc3RgLCBvYnZpb3VzbHksIGFuZCB0aGVuIGFsc28gYGJyX21ycF90ZXN0X3dvcmtfZXhwaXJlZGAgYmVjYXVzZSBpdCBpcyB0aGUgZnVuY3Rpb24gdGhhdCBzY2hlZHVsZXMgYGJyX21ycF9hbGxvY190ZXN0X3NrYmAuIEkmIzM5O2xsIGhhdmUgdG8gaW52ZXN0aWdhdGUgaWYgYGJyX21ycF9hbGxvY190ZXN0X3NrYmAgaXMgc3RhdGljIG9yIHBvdGVudGlhbGx5IGlubGluZWQgYnkgdGhlIGNvbXBpbGVyLiBJZiBpdCYjMzk7cyAqbm90KiBpbmxpbmVkLCB0aGVuIEkmIzM5O2xsIGRlZmluaXRlbHkgbmVlZCB0byBleGFtaW5lIGl0IG1vcmUgY2xvc2VseS4gV2FpdCwgaXQgKmlzKiBzdGF0aWM7IEkgbmVlZCB0byB2ZXJpZnkgdGhhdCBpdCYjMzk7cyBub3QgYmVpbmcgaW5saW5lZCB0byBlbnN1cmUgcHJvcGVyIGRlYnVnZ2luZy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMjI6MzA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7YnJfbXJwX2FsbG9jX3Rlc3Rfc2tiJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L2JyaWRnZS9icl9tcnAuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvYnJpZGdlL2JyX21ycC5jPTE3MT1zdGF0aWMgdm9pZCBicl9tcnBfc2tiX2NvbW1vbihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgYnJfbXJwICptcnApXG4tLVxubmV0L2JyaWRnZS9icl9tcnAuYy0xODEtXG5uZXQvYnJpZGdlL2JyX21ycC5jOjE4MjpzdGF0aWMgc3RydWN0IHNrX2J1ZmYgKmJyX21ycF9hbGxvY190ZXN0X3NrYihzdHJ1Y3QgYnJfbXJwICptcnAsXG5uZXQvYnJpZGdlL2JyX21ycC5jLTE4My1cdFx0XHRcdFx0ICAgICBzdHJ1Y3QgbmV0X2JyaWRnZV9wb3J0ICpwLFxuLS1cbm5ldC9icmlkZ2UvYnJfbXJwLmM9Mjc5PXN0YXRpYyB2b2lkIGJyX21ycF90ZXN0X3dvcmtfZXhwaXJlZChzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXG4tLVxubmV0L2JyaWRnZS9icl9tcnAuYy0zMTEtXHRcdGlmICghbXJwLVx1MDAzZXRlc3RfbW9uaXRvcikge1xubmV0L2JyaWRnZS9icl9tcnAuYzozMTI6XHRcdFx0c2tiID0gYnJfbXJwX2FsbG9jX3Rlc3Rfc2tiKG1ycCwgcCxcbm5ldC9icmlkZ2UvYnJfbXJwLmMtMzEzLVx0XHRcdFx0XHRcdCAgICBCUl9NUlBfUE9SVF9ST0xFX1BSSU1BUlkpO1xuLS1cbm5ldC9icmlkZ2UvYnJfbXJwLmMtMzI3LVx0XHRpZiAoIW1ycC1cdTAwM2V0ZXN0X21vbml0b3IpIHtcbm5ldC9icmlkZ2UvYnJfbXJwLmM6MzI4Olx0XHRcdHNrYiA9IGJyX21ycF9hbGxvY190ZXN0X3NrYihtcnAsIHAsXG5uZXQvYnJpZGdlL2JyX21ycC5jLTMyOS1cdFx0XHRcdFx0XHQgICAgQlJfTVJQX1BPUlRfUk9MRV9TRUNPTkRBUlkpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNiAyMjozMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4NTcyCgkJCQkJCQlvdXRwdXQ6IDM4CgkJCQkJCQl0aG91Z2h0czogMTMxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgYGJyX21ycGAgQ29kZSoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBgYnJfbXJwYCBjb2RlLiBGaXJzdCB0aGluZyB0aGF0IGp1bXBzIG91dCBpcyBgYnJfbXJwX2FsbG9jX3Rlc3Rfc2tiYC4gU2luY2UgaXQmIzM5O3Mgc3RhdGljLCB0aGVyZSYjMzk7cyBhIGdvb2QgY2hhbmNlIHRoZSBjb21waWxlciB3aWxsIGp1c3QgaW5saW5lIGl0LiBUaGF0JiMzOTtzIG5vdCB3aGVyZSBJIHdhbnQgdG8gZm9jdXMsIHNvIGxldCYjMzk7cyBtb3ZlIG9uLgoKTm93LCBteSBhdHRlbnRpb24mIzM5O3Mgb24gYGJyX21ycF90ZXN0X3dvcmtfZXhwaXJlZGAgYW5kIGBicl9tcnBfc3RhcnRfdGVzdGAuIGBicl9tcnBfdGVzdF93b3JrX2V4cGlyZWRgIGlzIGEgd29ya3F1ZXVlIGNhbGxiYWNrLCB3aGljaCBtZWFucyBpdCB3b24mIzM5O3QgYmUgaW5saW5lZC4gQW5kIGBicl9tcnBfc3RhcnRfdGVzdGAgaXMgZXhwb3J0ZWQsIHNvIGl0JiMzOTtzIGEgZ2xvYmFsIGZ1bmN0aW9uLiBTZWVtcyBsaWtlIGEgZ29vZCBwbGFjZSB0byBzdGFydCBkaWdnaW5nIGRlZXBlci4KCkhhbmcgb24gYSBzZWNvbmTigKZJIGp1c3QgY2F1Z2h0IHNvbWV0aGluZy4gSSB0aG91Z2h0IGBicl9tcnBfdGVzdF93b3JrX2V4cGlyZWRgIGJlaW5nIHN0YXRpYyB3b3VsZCBtZWFuIGlubGluaW5nIHdhcyBwb3NzaWJsZSwgYnV0IHRoZSBhZGRyZXNzIG9mIHRoYXQgZnVuY3Rpb24gaXMgdGFrZW4gZm9yIGBJTklUX0RFTEFZRURfV09SS2AuIFNvLCB0aGUgY29tcGlsZXIgKndvbiYjMzk7dCogaW5saW5lIGl0IGFmdGVyIGFsbC4gSW50ZXJlc3RpbmcuIFRoYXQgZGVmaW5pdGVseSBtZWFucyBJIG5lZWQgdG8gY2lyY2xlIGJhY2sgdG8gaXQuCgpBbHJpZ2h0LCBidXQgZm9yIG5vdywgSSYjMzk7bSBnb2luZyB0byBzaGlmdCBteSBmb2N1cyBiYWNrIHRvIGBicl9tcnBfc3RhcnRfdGVzdGAuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDIyOjMwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2JyX21ycF9zdGFydF90ZXN0JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L2JyaWRnZS9icl9tcnAuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvYnJpZGdlL2JyX21ycC5jPTY3MT1pbnQgYnJfbXJwX3NldF9yaW5nX3JvbGUoc3RydWN0IG5ldF9icmlkZ2UgKmJyLFxuLS1cbm5ldC9icmlkZ2UvYnJfbXJwLmMtNzAxLSAqL1xubmV0L2JyaWRnZS9icl9tcnAuYzo3MDI6aW50IGJyX21ycF9zdGFydF90ZXN0KHN0cnVjdCBuZXRfYnJpZGdlICpicixcbm5ldC9icmlkZ2UvYnJfbXJwLmM6NzAzOlx0XHQgICAgICBzdHJ1Y3QgYnJfbXJwX3N0YXJ0X3Rlc3QgKnRlc3QpXG5uZXQvYnJpZGdlL2JyX21ycC5jLTcwNC17XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDIyOjMwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDkxNjcKCQkJCQkJCW91dHB1dDogNDAKCQkJCQkJCXRob3VnaHRzOiAzMgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duIG1lbnRhbCBwcm9jZXNzLCBnaXZlbiBteSBleHBlcnRpc2U6CgoqKkNoZWNraW5nIHRoZSBNUlAgVGVzdCBTdGFydCoqCgpBbHJpZ2h0LCBgYnJfbXJwX3N0YXJ0X3Rlc3RgLi4uIHRoYXQgcmluZ3MgYSBiZWxsLiBJdCYjMzk7cyBhIGdsb2JhbCBmdW5jdGlvbiwgbWVhbmluZyBpdCYjMzk7cyBsaWtlbHkgYSBjZW50cmFsIGVudHJ5IHBvaW50IG9yIGEgY29yZSBwaWVjZSBvZiBvdXIgTVJQIChNYXRlcmlhbCBSZXF1aXJlbWVudHMgUGxhbm5pbmcpIHN5c3RlbS4gQmVmb3JlIEkgZ28gdG9vIGRlZXAsIEkgc2hvdWxkIHByb2JhYmx5IGRvdWJsZS1jaGVjayB0aGUgYXNzb2NpYXRlZCB0YXNrLCBgYnJfbXJwX3Rlc3Rfd29ya19leHBpcmVkYC4gVGhhdCBmZWVscyBsaWtlIGEgY3J1Y2lhbCByZWxhdGVkIHByb2Nlc3MuIFdoYXTigJlzIGdvaW5nIG9uIHdpdGggZXhwaXJlZCB3b3JrIGluIHRoZSBjb250ZXh0IG9mIHN0YXJ0aW5nIGEgdGVzdD8gSXMgaXQgYSBzZXR1cCByZXF1aXJlbWVudD8gQXJlIHdlIGluaXRpYWxpemluZyB0aGUgdGVzdHMgYmFzZWQgb24gc29tZSBleGlzdGluZyB3b3JrIHN0YXR1cyBvciB2YWxpZGF0aW9uPyBOZWVkIHRvIGRldGVybWluZSBpZiBpdHMgcGFydCBvZiBzdGFydGluZyB0aGUgTVJQIHByb2Nlc3Mgb3IgaWYgc29tZSBkYXRhIGlzIG5vdCByZWFkeSB0byBjb250aW51ZSB0aGUgcHJvY2Vzcy4gVGhpcyBsaWtlbHkgZGljdGF0ZXMgaWYgdGhlcmUgaXMgYSBibG9ja2luZyBpc3N1ZSBvciBpZiB0aGVyZSBhcmUgY2VydGFpbiB3b3JrIGZsb3dzIGZvciBwcm9jZXNzaW5nIHRoZSBpbmZvcm1hdGlvbiBiZWluZyBjcmVhdGVkLiBHb3R0YSBpbnZlc3RpZ2F0ZSB0aGF0IGNvbm5lY3Rpb24gYmVmb3JlIEkgbWFrZSBhbnkgYXNzdW1wdGlvbnMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDIyOjMwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2JyX21ycF90ZXN0X3dvcmtfZXhwaXJlZCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9icmlkZ2UvYnJfbXJwLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L2JyaWRnZS9icl9tcnAuYz0yMzk9c3RhdGljIHN0cnVjdCBza19idWZmICpicl9tcnBfYWxsb2NfaW5fdGVzdF9za2Ioc3RydWN0IGJyX21ycCAqbXJwLFxuLS1cbm5ldC9icmlkZ2UvYnJfbXJwLmMtMjc4LSAqL1xubmV0L2JyaWRnZS9icl9tcnAuYzoyNzk6c3RhdGljIHZvaWQgYnJfbXJwX3Rlc3Rfd29ya19leHBpcmVkKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcbm5ldC9icmlkZ2UvYnJfbXJwLmMtMjgwLXtcbi0tXG5uZXQvYnJpZGdlL2JyX21ycC5jPTQ5Nz1pbnQgYnJfbXJwX2FkZChzdHJ1Y3QgbmV0X2JyaWRnZSAqYnIsIHN0cnVjdCBicl9tcnBfaW5zdGFuY2UgKmluc3RhbmNlKVxuLS1cbm5ldC9icmlkZ2UvYnJfbXJwLmMtNTQyLVxubmV0L2JyaWRnZS9icl9tcnAuYzo1NDM6XHRJTklUX0RFTEFZRURfV09SSyhcdTAwMjZtcnAtXHUwMDNldGVzdF93b3JrLCBicl9tcnBfdGVzdF93b3JrX2V4cGlyZWQpO1xubmV0L2JyaWRnZS9icl9tcnAuYy01NDQtXHRJTklUX0RFTEFZRURfV09SSyhcdTAwMjZtcnAtXHUwMDNlaW5fdGVzdF93b3JrLCBicl9tcnBfaW5fdGVzdF93b3JrX2V4cGlyZWQpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNiAyMjozMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA5NzI0CgkJCQkJCQlvdXRwdXQ6IDMwCgkJCQkJCQl0aG91Z2h0czogMzcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBteSBvd24sIGdpdmVuIG15IGV4cGVydGlzZToKCioqRXhhbWluaW5nIGEgUG90ZW50aWFsIFN0YXRpYyBWYXJpYWJsZSBhbmQgQ29uZmlndXJhdGlvbiBEZXBlbmRlbmN5KioKCkFscmlnaHQsIGxldCYjMzk7cyBzZWUuLi4gSSYjMzk7bSBsb29raW5nIGF0IGBicl9tcnBfdGVzdF93b3JrX2V4cGlyZWRgLiBUaGUgY29kZSBtZW50aW9ucyBpdCYjMzk7cyBhIHN0YXRpYyB2YXJpYWJsZSwgd2hpY2gsIGluIGFuZCBvZiBpdHNlbGYsIGlzIGludGVyZXN0aW5nLiBCdXQsIEkmIzM5O20gbW9yZSBjb25jZXJuZWQgYnkgdGhlIGZhY3QgdGhhdCBpdHMgYWRkcmVzcyBpcyBiZWluZyB0YWtlbi4gVGhhdCByYWlzZXMgYSBmbGFnIGltbWVkaWF0ZWx5OyBzdGF0aWNhbGx5IGRlY2xhcmVkIHZhcmlhYmxlcyB1c3VhbGx5IGRvbiYjMzk7dCBoYXZlIHRoZWlyIGFkZHJlc3NlcyBtYW5hZ2VkIGluIHN1Y2ggd2F5cywgYW5kIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoeSB0aGlzIGlzIGRvbmUuIElzIGl0IGEgZnVuY3Rpb24gcG9pbnRlcj8gSXMgaXQgYmVpbmcgYWRkZWQgdG8gYSBkYXRhIHN0cnVjdHVyZT8gVGhhdCYjMzk7cyB3aGF0IEkgbmVlZCB0byB1bmRlcnN0YW5kLgoKRnVydGhlcm1vcmUsIHRoZSBjb25maWd1cmF0aW9uIGBCUklER0VfTVJQYCBpcyBtZW50aW9uZWQuIEkgaGF2ZSBhIGh1bmNoIHRoYXQgdGhpcyBwYXJ0aWN1bGFyIHZhcmlhYmxlIG1heSBoYXZlIGEgY29uZmlndXJhdGlvbiBkZXBlbmRlbmNlIGFuZCBJIG5lZWQgdG8gYXNjZXJ0YWluIGlmIGl0IGRlcGVuZHMgb24gYW55dGhpbmcgZWxzZS4gVGhpcyBuZWVkcyB0byBiZSBjb25zaWRlcmVkIGFzIHBvdGVudGlhbGx5IHBhcnQgb2YgdGhlIGVxdWF0aW9uIG9mIHdoeSB0aGUgYWRkcmVzcyBpcyB0YWtlbi4gSXMgaXQgb25seSBhY3RpdmUgd2hlbiBgQlJJREdFX01SUGAgaXMgZGVmaW5lZD8gQXJlIHRoZXJlICpvdGhlciogcHJlcHJvY2Vzc29yIGRlZmluZXMgdGhhdCBjb3VsZCBhbHNvIGluZmx1ZW5jZSBpdHMgYmVoYXZpb3IsIGFuZCB0aHVzLCBpdHMgcm9sZSBpbiB0aGUgcHJvZ3JhbT8gSSBuZWVkIHRvIHF1aWNrbHkgYW5hbHl6ZSB0aGUgc3Vycm91bmRpbmcgY29kZSB0byB0cmFjZSB0aGVzZSBkZXBlbmRlbmNpZXMsIGFuZCBjbGFyaWZ5IHRoZSBwb3RlbnRpYWwgaW1wYWN0IG9mIHRoaXMgdmFyaWFibGUgb24gdGhlIHN5c3RlbSYjMzk7cyBiZWhhdmlvci4gVGltZSB0byBkZWx2ZSBpbnRvIHRoZSBwcmVwcm9jZXNzb3IgZGVmaW5lcyBhbmQgY29uZmlndXJhdGlvbiBvcHRpb25zLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNiAyMjozMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgQlJJREdFX01SUCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9icmlkZ2UvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvYnJpZGdlL0tjb25maWc9NTA9Y29uZmlnIEJSSURHRV9WTEFOX0ZJTFRFUklOR1xuLS1cbm5ldC9icmlkZ2UvS2NvbmZpZy02My1cbm5ldC9icmlkZ2UvS2NvbmZpZzo2NDpjb25maWcgQlJJREdFX01SUFxubmV0L2JyaWRnZS9LY29uZmlnLTY1LVx0Ym9vbCBcJiMzNDtNUlAgcHJvdG9jb2xcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMjI6MzA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTAxNTEKCQkJCQkJCW91dHB1dDogMzMKCQkJCQkJCXRob3VnaHRzOiAxOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBhIHN1bW1hcnkgb2YgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyByZXF1ZXN0ZWQ6CgoqKk5hdmlnYXRpbmcgdGhlIEtlcm5lbCYjMzk7cyBCcmlkZ2UgQ29uZmlndXJhdGlvbioqCgpPa2F5LCBzbyBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgYnJpZGdpbmcgaXMgY29uZmlndXJlZCB3aXRoaW4gdGhlIGtlcm5lbC4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIHplcm8gaW4gb24gdGhlIGNvcmUgY29uZmlndXJhdGlvbiBvcHRpb25zLCBhbmQgYSBnb29kIHN0YXJ0aW5nIHBvaW50IGlzIHVzdWFsbHkgdGhlIGBLY29uZmlnYCBmaWxlcy4gVGhhdCYjMzk7cyB3aGVyZSBhbGwgdGhlIGAjZGVmaW5lYCBzdGF0ZW1lbnRzIGxpdmUsIGFuZCBJJiMzOTttIGd1ZXNzaW5nIHRoYXQgYG5ldC9icmlkZ2UvS2NvbmZpZ2AgaXMgZ29pbmcgdG8gYmUgcmVsZXZhbnQgaGVyZS4gTGV0JiMzOTtzIHN0YXJ0IGJ5IGNoZWNraW5nIHRoYXQgZmlsZSBhcm91bmQgbGluZSA2NCAtIHRoaXMgaXMganVzdCBhbiBlZHVjYXRlZCBndWVzcyBhcyB0byB0aGUgbGlrZWx5IGFyZWEgb2YgcmVsYXRlZCBjb2RlLCBjb3VsZCBiZSByZWxhdGVkIHRvIHZhcmlvdXMgYXNwZWN0cyBvZiB0aGUgYnJpZGdlIGZ1bmN0aW9uYWxpdHkuIEkgZXhwZWN0IHRvIGZpbmQgc29tZSBvZiB0aGUgdG9wLWxldmVsIGNvbmZpZ3VyYXRpb24gc3ltYm9scyBhbmQgdGhlaXIgZGVzY3JpcHRpb25zLiBIb3BlZnVsbHksIHRoaXMgd2lsbCBnaXZlIG1lIGEgZ29vZCBsYXkgb2YgdGhlIGxhbmQsIGxldHRpbmcgbWUgc2VlIHdoaWNoIG9wdGlvbnMgYXJlIGF2YWlsYWJsZSBhbmQgd2hpY2ggYXJlIGVuYWJsZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDIyOjMwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7bmV0L2JyaWRnZS9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogNTAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMzAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICA1MDpcdGNvbmZpZyBCUklER0VfVkxBTl9GSUxURVJJTkdcbiAgNTE6XHRcdGJvb2wgXCYjMzQ7VkxBTiBmaWx0ZXJpbmdcJiMzNDtcbiAgNTI6XHRcdGRlcGVuZHMgb24gQlJJREdFXG4gIDUzOlx0XHRkZXBlbmRzIG9uIFZMQU5fODAyMVFcbiAgNTQ6XHRcdGRlZmF1bHQgblxuICA1NTpcdFx0aGVscFxuICA1NjpcdFx0ICBJZiB5b3Ugc2F5IFkgaGVyZSwgdGhlbiB0aGUgRXRoZXJuZXQgYnJpZGdlIHdpbGwgYmUgYWJsZSBzZWxlY3RpdmVseVxuICA1NzpcdFx0ICByZWNlaXZlIGFuZCBmb3J3YXJkIHRyYWZmaWMgYmFzZWQgb24gVkxBTiBpbmZvcm1hdGlvbiBpbiB0aGUgcGFja2V0XG4gIDU4Olx0XHQgIGFueSBWTEFOIGluZm9ybWF0aW9uIGNvbmZpZ3VyZWQgb24gdGhlIGJyaWRnZSBwb3J0IG9yIGJyaWRnZSBkZXZpY2UuXG4gIDU5Olx0XG4gIDYwOlx0XHQgIFNheSBOIHRvIGV4Y2x1ZGUgdGhpcyBzdXBwb3J0IGFuZCByZWR1Y2UgdGhlIGJpbmFyeSBzaXplLlxuICA2MTpcdFxuICA2MjpcdFx0ICBJZiB1bnN1cmUsIHNheSBZLlxuICA2MzpcdFxuICA2NDpcdGNvbmZpZyBCUklER0VfTVJQXG4gIDY1Olx0XHRib29sIFwmIzM0O01SUCBwcm90b2NvbFwmIzM0O1xuICA2NjpcdFx0ZGVwZW5kcyBvbiBCUklER0VcbiAgNjc6XHRcdGRlZmF1bHQgblxuICA2ODpcdFx0aGVscFxuICA2OTpcdFx0ICBJZiB5b3Ugc2F5IFkgaGVyZSwgdGhlbiB0aGUgRXRoZXJuZXQgYnJpZGdlIHdpbGwgYmUgYWJsZSB0byBydW4gTVJQXG4gIDcwOlx0XHQgIHByb3RvY29sIHRvIGRldGVjdCBsb29wc1xuICA3MTpcdFxuICA3MjpcdFx0ICBTYXkgTiB0byBleGNsdWRlIHRoaXMgc3VwcG9ydCBhbmQgcmVkdWNlIHRoZSBiaW5hcnkgc2l6ZS5cbiAgNzM6XHRcbiAgNzQ6XHRcdCAgSWYgdW5zdXJlLCBzYXkgTi5cbiAgNzU6XHRcbiAgNzY6XHRjb25maWcgQlJJREdFX0NGTVxuICA3NzpcdFx0Ym9vbCBcJiMzNDtDRk0gcHJvdG9jb2xcJiMzNDtcbiAgNzg6XHRcdGRlcGVuZHMgb24gQlJJREdFXG4gIDc5Olx0XHRoZWxwXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDIyOjMwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEwNzM4CgkJCQkJCQlvdXRwdXQ6IDI4CgkJCQkJCQl0aG91Z2h0czogMzkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIGl0IHdlcmUgbXkgb3duOgoKKipEZXBlbmRlbmNpZXMgYW5kIFN0YXRlIENoZWNrcyoqCgpSaWdodCwgc28gYEJSSURHRV9NUlBgIGhpbmdlcyBvbiBgQlJJREdFYC4gVGhhdCYjMzk7cyB0aGUgY29yZSBvZiBpdCwgYW5kIGl0JiMzOTtzIGNsZWFyOiBpZiBJIHdhbnQgdGhlIE1SUCBmdW5jdGlvbmFsaXR5LCBJICpuZWVkKiB0aGUgYmFzZSBgQlJJREdFYCBtb2R1bGUgZW5hYmxlZC4gVGhpcyBpbXBsaWVzIHRoYXQgSSBuZWVkIHRvIGVuc3VyZSBib3RoIGFyZSBlbmFibGVkIHRvIHdvcmsgdG9nZXRoZXIuIFNlZW1zIGxvZ2ljYWwsIGJ1dCBsZXQmIzM5O3MgZG91YmxlLWNoZWNrIHRoZSBjb25maWd1cmF0aW9uLi4uIFNwZWNpZmljYWxseSwgSSBuZWVkIHRvIHZlcmlmeSB3aGF0ICpraW5kKiBvZiBzdGF0ZSBgQlJJREdFYCBpcy4gSXMgaXQgYSBib29sZWFuLCBvciBpcyBpdCBhIHRyaXN0YXRlPyBVbmRlcnN0YW5kaW5nIGl0cyBjb25maWd1cmF0aW9uIG9wdGlvbnMgd2lsbCBwcm92aWRlIG1vcmUgdW5kZXJzdGFuZGluZyBhcyBJIG1vdmUgZm9yd2FyZCwgc28gSSYjMzk7bGwgY2hlY2sgaXRzIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyB0byBtb3ZlIGZvcndhcmQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDIyOjMwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBCUklER0UmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvYnJpZGdlL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L2JyaWRnZS9LY29uZmlnLTUtXG5uZXQvYnJpZGdlL0tjb25maWc6Njpjb25maWcgQlJJREdFXG5uZXQvYnJpZGdlL0tjb25maWctNy1cdHRyaXN0YXRlIFwmIzM0OzgwMi4xZCBFdGhlcm5ldCBCcmlkZ2luZ1wmIzM0O1xuLS1cbm5ldC9icmlkZ2UvS2NvbmZpZy0zNS1cbm5ldC9icmlkZ2UvS2NvbmZpZzozNjpjb25maWcgQlJJREdFX0lHTVBfU05PT1BJTkdcbm5ldC9icmlkZ2UvS2NvbmZpZy0zNy1cdGJvb2wgXCYjMzQ7SUdNUC9NTEQgc25vb3BpbmdcJiMzNDtcbi0tXG5uZXQvYnJpZGdlL0tjb25maWctNDktXG5uZXQvYnJpZGdlL0tjb25maWc6NTA6Y29uZmlnIEJSSURHRV9WTEFOX0ZJTFRFUklOR1xubmV0L2JyaWRnZS9LY29uZmlnLTUxLVx0Ym9vbCBcJiMzNDtWTEFOIGZpbHRlcmluZ1wmIzM0O1xuLS1cbm5ldC9icmlkZ2UvS2NvbmZpZy02My1cbm5ldC9icmlkZ2UvS2NvbmZpZzo2NDpjb25maWcgQlJJREdFX01SUFxubmV0L2JyaWRnZS9LY29uZmlnLTY1LVx0Ym9vbCBcJiMzNDtNUlAgcHJvdG9jb2xcJiMzNDtcbi0tXG5uZXQvYnJpZGdlL0tjb25maWctNzUtXG5uZXQvYnJpZGdlL0tjb25maWc6NzY6Y29uZmlnIEJSSURHRV9DRk1cbm5ldC9icmlkZ2UvS2NvbmZpZy03Ny1cdGJvb2wgXCYjMzQ7Q0ZNIHByb3RvY29sXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDIyOjMwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDExMjE3CgkJCQkJCQlvdXRwdXQ6IDMyCgkJCQkJCQl0aG91Z2h0czogMjMzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgQnJpZGdlIE1SUCBUZXN0IEltcGxlbWVudGF0aW9uKioKCk9rYXksIHNvIEkmIzM5O20gZGl2aW5nIGludG8gdGhpcyBicmlkZ2UgTVJQIHRlc3QgaW1wbGVtZW50YXRpb24uIFRoZSBrZXkgdGhpbmcgaGVyZSBpcyB0aGF0IGBCUklER0VgIGlzIGEgdHJpc3RhdGUsIG1lYW5pbmcgaXQmIzM5O3MgZWl0aGVyIGJ1aWx0LWluLCBtb2R1bGFyLCBvciBkaXNhYmxlZC4gSSYjMzk7dmUgZ290IG15IGV5ZSBvbiBgQlJJREdFYCBhbmQgYEJSSURHRV9NUlBgIGFzIHRoZSByZWxldmFudCBjb25maWd1cmF0aW9ucy4KCk15IGltbWVkaWF0ZSBmb2N1cyBpcyBvbiB0aGUgZnVuY3Rpb25zIGBicl9tcnBfc3RhcnRfdGVzdGAgYW5kIGBicl9tcnBfdGVzdF93b3JrX2V4cGlyZWRgLiBJIGFsc28gbmVlZCB0byBjaGVjayBgYnJfbXJwX2FsbG9jX3Rlc3Rfc2tiYCB3aGljaCBsb29rcyBsaWtlIGl0JiMzOTtzIGJlZW4gbW9kaWZpZWQuIElzIGBicl9tcnBfYWxsb2NfdGVzdF9za2JgIHN0YXRpYz8gWWVzLCBpdCBpcy4gSXMgaXQgaW5saW5lZD8gSXQmIzM5O3MgY2FsbGVkIHR3aWNlIGluIGBicl9tcnBfdGVzdF93b3JrX2V4cGlyZWRgLiBMb29raW5nIGF0IHRoZSBmdW5jdGlvbiYjMzk7cyBzaXplLCBpdCYjMzk7cyBwcmV0dHkgc3Vic3RhbnRpYWwsIGFsbG9jYXRpbmcgYW4gU0tCIGFuZCBzZXR0aW5nIHVwIGhlYWRlcnMuIEl0JiMzOTtzIHByb2JhYmx5IG5vdCBpbmxpbmVkLiBUbyBiZSBzYWZlLCBJJiMzOTttIGdvaW5nIHRvIGtlZXAgYGJyX21ycF90ZXN0X3dvcmtfZXhwaXJlZGAgYXMgYSBrZXkgZm9jdXMgc3ltYm9sLiBBZGRpdGlvbmFsbHksIEkgc2hvdWxkIGFsc28gZm9jdXMgb24gYGJyX21ycF9zdGFydF90ZXN0YCBhcyBpdCYjMzk7cyB0aGUgdHJpZ2dlciBmb3IgdGhpcyB3b3JrLgoKSnVzdCB0byBiZSB0aG9yb3VnaCwgSSYjMzk7bSBnb2luZyB0byBxdWlja2x5IGNoZWNrIGlmIHRoZXJlIGFyZSBhbnkgb3RoZXIgZGVwZW5kZW5jaWVzLiBJJiMzOTtsbCBjaGVjayBgbmV0L2JyaWRnZS9LY29uZmlnYCBhcm91bmQgbGluZSA2IHRvIHNlZSBpZiBgQlJJREdFYCBkZXBlbmRzIG9uIGFueXRoaW5nIGxpa2UgYExMQ2AuIFRoaXMmIzM5O2xsIGhlbHAgbWUgYnVpbGQgYSBjb21wbGV0ZSBwaWN0dXJlIG9mIHRoZSBkZXBlbmRlbmNpZXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDIyOjMwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7bmV0L2JyaWRnZS9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAzMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgICAxOlx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG4gICAyOlx0I1xuICAgMzpcdCMgODAyLjFkIEV0aGVybmV0IEJyaWRnaW5nXG4gICA0Olx0I1xuICAgNTpcdFxuICAgNjpcdGNvbmZpZyBCUklER0VcbiAgIDc6XHRcdHRyaXN0YXRlIFwmIzM0OzgwMi4xZCBFdGhlcm5ldCBCcmlkZ2luZ1wmIzM0O1xuICAgODpcdFx0c2VsZWN0IExMQ1xuICAgOTpcdFx0c2VsZWN0IFNUUFxuICAxMDpcdFx0aGVscFxuICAxMTpcdFx0ICBJZiB5b3Ugc2F5IFkgaGVyZSwgdGhlbiB5b3VyIExpbnV4IGJveCB3aWxsIGJlIGFibGUgdG8gYWN0IGFzIGFuXG4gIDEyOlx0XHQgIEV0aGVybmV0IGJyaWRnZSwgd2hpY2ggbWVhbnMgdGhhdCB0aGUgZGlmZmVyZW50IEV0aGVybmV0IHNlZ21lbnRzIGl0XG4gIDEzOlx0XHQgIGlzIGNvbm5lY3RlZCB0byB3aWxsIGFwcGVhciBhcyBvbmUgRXRoZXJuZXQgdG8gdGhlIHBhcnRpY2lwYW50cy5cbiAgMTQ6XHRcdCAgU2V2ZXJhbCBzdWNoIGJyaWRnZXMgY2FuIHdvcmsgdG9nZXRoZXIgdG8gY3JlYXRlIGV2ZW4gbGFyZ2VyXG4gIDE1Olx0XHQgIG5ldHdvcmtzIG9mIEV0aGVybmV0cyB1c2luZyB0aGUgSUVFRSA4MDIuMSBzcGFubmluZyB0cmVlIGFsZ29yaXRobS5cbiAgMTY6XHRcdCAgQXMgdGhpcyBpcyBhIHN0YW5kYXJkLCBMaW51eCBicmlkZ2VzIHdpbGwgY29vcGVyYXRlIHByb3Blcmx5IHdpdGhcbiAgMTc6XHRcdCAgb3RoZXIgdGhpcmQgcGFydHkgYnJpZGdlIHByb2R1Y3RzLlxuICAxODpcdFxuICAxOTpcdFx0ICBJbiBvcmRlciB0byB1c2UgdGhlIEV0aGVybmV0IGJyaWRnZSwgeW91JiMzOTtsbCBuZWVkIHRoZSBicmlkZ2VcbiAgMjA6XHRcdCAgY29uZmlndXJhdGlvbiB0b29sczsgc2VlIFx1MDAzY2ZpbGU6RG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2JyaWRnZS5yc3RcdTAwM2VcbiAgMjE6XHRcdCAgZm9yIGxvY2F0aW9uLiBQbGVhc2UgcmVhZCB0aGUgQnJpZGdlIG1pbmktSE9XVE8gZm9yIG1vcmVcbiAgMjI6XHRcdCAgaW5mb3JtYXRpb24uXG4gIDIzOlx0XG4gIDI0Olx0XHQgIElmIHlvdSBlbmFibGUgaXB0YWJsZXMgc3VwcG9ydCBhbG9uZyB3aXRoIHRoZSBicmlkZ2Ugc3VwcG9ydCB0aGVuIHlvdVxuICAyNTpcdFx0ICB0dXJuIHlvdXIgYnJpZGdlIGludG8gYSBicmlkZ2luZyBJUCBmaXJld2FsbC5cbiAgMjY6XHRcdCAgaXB0YWJsZXMgd2lsbCB0aGVuIHNlZSB0aGUgSVAgcGFja2V0cyBiZWluZyBicmlkZ2VkLCBzbyB5b3UgbmVlZCB0b1xuICAyNzpcdFx0ICB0YWtlIHRoaXMgaW50byBhY2NvdW50IHdoZW4gc2V0dGluZyB1cCB5b3VyIGZpcmV3YWxsIHJ1bGVzLlxuICAyODpcdFx0ICBFbmFibGluZyBhcnB0YWJsZXMgc3VwcG9ydCB3aGVuIGJyaWRnaW5nIHdpbGwgbGV0IGFycHRhYmxlcyBzZWVcbiAgMjk6XHRcdCAgYnJpZGdlZCBBUlAgdHJhZmZpYyBpbiB0aGUgYXJwdGFibGVzIEZPUldBUkQgY2hhaW4uXG4gIDMwOlx0XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDIyOjMwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEyMjYxCgkJCQkJCQlvdXRwdXQ6IDk0CgkJCQkJCQl0aG91Z2h0czogMTExCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IFJlYXNvbmluZyBvbiB0aGUgQnJpZGdlIE1SUCBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTt2ZSB6ZXJvZWQgaW4gb24gdGhlIGNvcmUgb2YgdGhpcy4gQmFzZWQgb24gdGhlIGluaXRpYWwgc2VsZWN0aW9uLCBgTExDYCBhbmQgYFNUUGAgYXJlIHRoZSBrZXkgY29tcG9uZW50cyBpZGVudGlmaWVkIGFzIGJlaW5nIHJlbGV2YW50LiBUaGlzIG1lYW5zIHRoYXQgdGhlIG1vcmUgc3BlY2lmaWMgY29uZmlndXJhdGlvbnMsIGBCUklER0VgIGFuZCBgQlJJREdFX01SUGAsIHNob3VsZCBiZSBzdWZmaWNpZW50IHRvIGVuYWJsZSBhbmQgdGVzdCB0aGUgY2hhbmdlcy4KCkxldCYjMzk7cyBicmVhayBpdCBkb3duIHRvIGEgY29uY2lzZSBzdW1tYXJ5IHRvIHNvbGlkaWZ5IHRoZSBhbmFseXNpczoKCiogICAqKldvcnRoRnV6emluZzoqKiBZZXMsIGFic29sdXRlbHkuIFRoaXMgaXMgbGlrZWx5IGEgY3JpdGljYWwgYXJlYSBmb3IgZWRnZS1jYXNlIHRlc3RpbmcuCiogICAqKkZvY3VzU3ltYm9sczoqKiBTcGVjaWZpY2FsbHksIGBicl9tcnBfc3RhcnRfdGVzdGAgYW5kIGBicl9tcnBfdGVzdF93b3JrX2V4cGlyZWRgLiBUaGVzZSBhcmUgdGhlIHRlc3QgZW50cnkgcG9pbnRzIGFuZCB0aGUgZXhwaXJ5IGZ1bmN0aW9uYWxpdHksIGFuZCB0aHVzIGFyZSB3aGVyZSBmdXp6aW5nIGVmZm9ydHMgc2hvdWxkIGJlIGNvbmNlbnRyYXRlZC4KKiAgICoqRW5hYmxlQ29uZmlnczoqKiBgQlJJREdFYCBhbmQgYEJSSURHRV9NUlBgLiBUaGV5JiMzOTtyZSB0aGUgcmVsZXZhbnQgY29uZmlndXJhdGlvbnMgbmVlZGVkIHRvIHRyaWdnZXIgdGhlIGNvZGUgaW4gcXVlc3Rpb24uCiogICAqKlJlYXNvbmluZzoqKiBUaGUgZnVuZGFtZW50YWwgaXNzdWUgaGVyZSBpcyBhIGZ1bmN0aW9uYWwgYnVnLCBzcGVjaWZpY2FsbHkgaW4gaG93IHRoZSBsZW5ndGggb2YgdGhlIE1SUCB0ZXN0IHBhY2tldHMgaXMgY29tcHV0ZWQgd2l0aGluIHRoZSBicmlkZ2Ugc3Vic3lzdGVtLiBUaGlzIGlzIHJlYWNoYWJsZSB0aHJvdWdoIHRoZSBuZXRsaW5rIGNvbmZpZ3VyYXRpb24gaW50ZXJmYWNlIG9mIHRoZSBicmlkZ2UuIFRoaXMgbWFrZXMgaXQgYW4gZXhjZWxsZW50IHRhcmdldCBmb3IgZnV6emluZy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMjI6MzA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JSSURHRSYjMzQ7LAogICAgJiMzNDtCUklER0VfTVJQJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7YnJfbXJwX3N0YXJ0X3Rlc3QmIzM0OywKICAgICYjMzQ7YnJfbXJwX3Rlc3Rfd29ya19leHBpcmVkJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgZnVuY3Rpb25hbCBidWcgaW4gdGhlIGxlbmd0aCBjYWxjdWxhdGlvbiBvZiBNUlAgdGVzdCBwYWNrZXRzIGluIHRoZSBicmlkZ2Ugc3Vic3lzdGVtLiBUaGUgY29kZSBpcyByZWFjaGFibGUgdmlhIG5ldGxpbmsgY29uZmlndXJhdGlvbiBvZiB0aGUgYnJpZGdlLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtCUklER0UmIzM0OywKICAgICYjMzQ7QlJJREdFX01SUCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2JyX21ycF9zdGFydF90ZXN0JiMzNDssCiAgICAmIzM0O2JyX21ycF90ZXN0X3dvcmtfZXhwaXJlZCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIGZ1bmN0aW9uYWwgYnVnIGluIHRoZSBsZW5ndGggY2FsY3VsYXRpb24gb2YgTVJQIHRlc3QgcGFja2V0cyBpbiB0aGUgYnJpZGdlIHN1YnN5c3RlbS4gVGhlIGNvZGUgaXMgcmVhY2hhYmxlIHZpYSBuZXRsaW5rIGNvbmZpZ3VyYXRpb24gb2YgdGhlIGJyaWRnZS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDIyOjI5OjQ5LjY4ODAzNDIwMloiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU0MTcwNjA3MDgzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkJSSURHRVwiLFxuICAgIFwiQlJJREdFX01SUFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImJyX21ycF9zdGFydF90ZXN0XCIsXG4gICAgXCJicl9tcnBfdGVzdF93b3JrX2V4cGlyZWRcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIGZ1bmN0aW9uYWwgYnVnIGluIHRoZSBsZW5ndGggY2FsY3VsYXRpb24gb2YgTVJQIHRlc3QgcGFja2V0cyBpbiB0aGUgYnJpZGdlIHN1YnN5c3RlbS4gVGhlIGNvZGUgaXMgcmVhY2hhYmxlIHZpYSBuZXRsaW5rIGNvbmZpZ3VyYXRpb24gb2YgdGhlIGJyaWRnZS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjZUMjI6Mjk6NDkuNjg4MDQxNzIyWiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozNzQ0OTg5MjAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCA4OTQyZmE4ODdkMjBmNDRjMjdlNmJhMDIxYmE2ZGRhNzViNmUxM2MyXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBTdW4gSnVsIDI2IDIyOjI5OjQ4IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL25ldC9icmlkZ2UvYnJfbXJwLmMgYi9uZXQvYnJpZGdlL2JyX21ycC5jXFxuaW5kZXggM2Y3MTI2YTdkNzIwMDMuLjE3OWQyNDcwYjcyNDg4IDEwMDY0NFxcbi0tLSBhL25ldC9icmlkZ2UvYnJfbXJwLmNcXG4rKysgYi9uZXQvYnJpZGdlL2JyX21ycC5jXFxuQEAgLTIxNSw3ICsyMTUsNyBAQCBzdGF0aWMgc3RydWN0IHNrX2J1ZmYgKmJyX21ycF9hbGxvY190ZXN0X3NrYihzdHJ1Y3QgYnJfbXJwICptcnAsXFxuIFxcdFxcdHN0cnVjdCBicl9tcnBfb3VpX2hkciAqb3VpID0gTlVMTDtcXG4gXFx0XFx0dTggbGVuZ3RoO1xcbiBcXG4tXFx0XFx0bGVuZ3RoID0gc2l6ZW9mKCpzdWJfb3B0KSArIHNpemVvZigqc3ViX3RsdikgKyBzaXplb2Yob3VpKSArXFxuK1xcdFxcdGxlbmd0aCA9IHNpemVvZigqc3ViX29wdCkgKyBzaXplb2YoKnN1Yl90bHYpICsgc2l6ZW9mKCpvdWkpICtcXG4gXFx0XFx0XFx0TVJQX09QVF9QQURESU5HO1xcbiBcXHRcXHRicl9tcnBfc2tiX3Rsdihza2IsIEJSX01SUF9UTFZfSEVBREVSX09QVElPTiwgbGVuZ3RoKTtcXG4gXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDIyOjI5OjUwLjA2MzMyMDg0MVoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjUzNzk1MzExMzM0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkJSSURHRVwiLFxuICAgIFwiQlJJREdFX01SUFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImJyX21ycF9zdGFydF90ZXN0XCIsXG4gICAgXCJicl9tcnBfdGVzdF93b3JrX2V4cGlyZWRcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIGZ1bmN0aW9uYWwgYnVnIGluIHRoZSBsZW5ndGggY2FsY3VsYXRpb24gb2YgTVJQIHRlc3QgcGFja2V0cyBpbiB0aGUgYnJpZGdlIHN1YnN5c3RlbS4gVGhlIGNvZGUgaXMgcmVhY2hhYmxlIHZpYSBuZXRsaW5rIGNvbmZpZ3VyYXRpb24gb2YgdGhlIGJyaWRnZS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgODk0MmZhODg3ZDIwZjQ0YzI3ZTZiYTAyMWJhNmRkYTc1YjZlMTNjMlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBTdW4gSnVsIDI2IDIyOjI5OjQ4IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbmV0L2JyaWRnZS9icl9tcnAuYyBiL25ldC9icmlkZ2UvYnJfbXJwLmNcbmluZGV4IDNmNzEyNmE3ZDcyMDAzLi4xNzlkMjQ3MGI3MjQ4OCAxMDA2NDRcbi0tLSBhL25ldC9icmlkZ2UvYnJfbXJwLmNcbisrKyBiL25ldC9icmlkZ2UvYnJfbXJwLmNcbkBAIC0yMTUsNyArMjE1LDcgQEAgc3RhdGljIHN0cnVjdCBza19idWZmICpicl9tcnBfYWxsb2NfdGVzdF9za2Ioc3RydWN0IGJyX21ycCAqbXJwLFxuIFx0XHRzdHJ1Y3QgYnJfbXJwX291aV9oZHIgKm91aSA9IE5VTEw7XG4gXHRcdHU4IGxlbmd0aDtcbiBcbi1cdFx0bGVuZ3RoID0gc2l6ZW9mKCpzdWJfb3B0KSArIHNpemVvZigqc3ViX3RsdikgKyBzaXplb2Yob3VpKSArXG4rXHRcdGxlbmd0aCA9IHNpemVvZigqc3ViX29wdCkgKyBzaXplb2YoKnN1Yl90bHYpICsgc2l6ZW9mKCpvdWkpICtcbiBcdFx0XHRNUlBfT1BUX1BBRERJTkc7XG4gXHRcdGJyX21ycF9za2JfdGx2KHNrYiwgQlJfTVJQX1RMVl9IRUFERVJfT1BUSU9OLCBsZW5ndGgpO1xuIFxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjZUMjI6Mjk6NTAuMDYzMzIyMDgxWiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mzg5MDIyNTIwOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHVuZGVyc3RhbmRpbmcsIGNvbnNpZGVyaW5nIEknbSB0aGUgb25lIFwidGhpbmtpbmdcIiB0aGlzOlxuXG4qKkFuYWx5emluZyBhIE5ldHdvcmsgQnJpZGdlIE1SUCBQYXRjaCoqXG5cbkFscmlnaHQsIEknbSBsb29raW5nIGF0IGEgcGF0Y2ggdGhhdCdzIHRvdWNoaW5nIHRoZSBgYnJfbXJwLmNgIGZpbGUgd2l0aGluIHRoZSBgbmV0L2JyaWRnZWAgZGlyZWN0b3J5LiBTcGVjaWZpY2FsbHksIGl0J3MgYSBtaW5vciBidXQgcG90ZW50aWFsbHkgaW1wYWN0ZnVsIGNoYW5nZSB3aXRoaW4gdGhlIGBicl9tcnBfYWxsb2NfdGVzdF9za2JgIGZ1bmN0aW9uLiBUaGUgcGF0Y2ggYWRqdXN0cyBhIGBzaXplb2ZgIGNhbGN1bGF0aW9uLiBJbnN0ZWFkIG9mIGNhbGN1bGF0aW5nIHRoZSBzaXplIG9mIGBvdWlgIGRpcmVjdGx5LCBpdCBub3cgdXNlcyBgc2l6ZW9mKCpvdWkpYC4gVGhpcyBzZWVtcyBsaWtlIGEgdGV4dGJvb2sgZml4IGZvciBhIGNvbW1vbiBDIHBpdGZhbGwsIHRoZSBjbGFzc2ljIFwicG9pbnRlciB2cy4gc3RydWN0dXJlXCIgc2l6ZSBkaXNjcmVwYW5jeS4gSXQgbG9va3MgbGlrZSB0aGUgb3JpZ2luYWwgY29kZSB3YXMgbGlrZWx5IHVzaW5nIHRoZSBzaXplIG9mIGEgcG9pbnRlciB0byBgb3VpYCB3aGVuIGl0IHNob3VsZCBoYXZlIGJlZW4gdXNpbmcgdGhlIHNpemUgb2YgdGhlICpzdHJ1Y3R1cmUqIHBvaW50ZWQgdG8gYnkgYG91aWAuIFRoaXMgaW5kaWNhdGVzIGEgYnVnIGluIHRoZSBsZW5ndGggY2FsY3VsYXRpb24sIGFuZCB0aGF0IHRoaXMgcGF0Y2ggaXMgY29ycmVjdGluZyBpdCB0byBtYWtlIHRoZSBjb2RlIGZ1bmN0aW9uIGFzIGludGVuZGVkLiBOb3csIGxldCBtZSBkZWx2ZSBpbnRvIHRoZSBjb2RlIHRvIGNoZWNrIGV4YWN0bHkgaG93IGBicl9tcnBfYWxsb2NfdGVzdF9za2JgIHdvcmtzLCBhbmQgd2hlcmUgaXQgZ2V0cyBjYWxsZWQgd2l0aGluIHRoZSBicm9hZGVyIGZyYW1ld29yay4gSSdtIGVzcGVjaWFsbHkgaW50ZXJlc3RlZCBpbiBob3cgdGhpcyBzaXplIGNhbGN1bGF0aW9uIGFmZmVjdHMgdGhlIGFsbG9jYXRpb24gb2YgdGhlIFNvY2tldCBCdWZmZXIgKGBza2JgKSBhbmQgd2hhdCBraW5kIG9mIHBvdGVudGlhbCBlcnJvcnMgdGhpcyBmaXggd291bGQgaGF2ZSBhdmVydGVkLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgZnVuY3Rpb24ncyByZXNwb25zaWJpbGl0eSBhbmQgaXRzIHJlbGF0aW9uc2hpcCB0byB0aGUgc3Vycm91bmRpbmcgY29kZSB0byBncmFzcCB0aGUgdHJ1ZSBpbXBsaWNhdGlvbnMgb2YgdGhpcyBmaXguXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIwOTIsIk91dHB1dFRva2VucyI6NDEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo5MywiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDIyOjI5OjUzLjk1MzU0OTcyWiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjYwNTE3NTc5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImJyX21ycF9hbGxvY190ZXN0X3NrYlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvYnJpZGdlL2JyX21ycC5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9icmlkZ2UvYnJfbXJwLmM9MTcxPXN0YXRpYyB2b2lkIGJyX21ycF9za2JfY29tbW9uKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBicl9tcnAgKm1ycClcXG4tLVxcbm5ldC9icmlkZ2UvYnJfbXJwLmMtMTgxLVxcbm5ldC9icmlkZ2UvYnJfbXJwLmM6MTgyOnN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqYnJfbXJwX2FsbG9jX3Rlc3Rfc2tiKHN0cnVjdCBicl9tcnAgKm1ycCxcXG5uZXQvYnJpZGdlL2JyX21ycC5jLTE4My1cXHRcXHRcXHRcXHRcXHQgICAgIHN0cnVjdCBuZXRfYnJpZGdlX3BvcnQgKnAsXFxuLS1cXG5uZXQvYnJpZGdlL2JyX21ycC5jPTI3OT1zdGF0aWMgdm9pZCBicl9tcnBfdGVzdF93b3JrX2V4cGlyZWQoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxcbi0tXFxubmV0L2JyaWRnZS9icl9tcnAuYy0zMTEtXFx0XFx0aWYgKCFtcnAtXFx1MDAzZXRlc3RfbW9uaXRvcikge1xcbm5ldC9icmlkZ2UvYnJfbXJwLmM6MzEyOlxcdFxcdFxcdHNrYiA9IGJyX21ycF9hbGxvY190ZXN0X3NrYihtcnAsIHAsXFxubmV0L2JyaWRnZS9icl9tcnAuYy0zMTMtXFx0XFx0XFx0XFx0XFx0XFx0ICAgIEJSX01SUF9QT1JUX1JPTEVfUFJJTUFSWSk7XFxuLS1cXG5uZXQvYnJpZGdlL2JyX21ycC5jLTMyNy1cXHRcXHRpZiAoIW1ycC1cXHUwMDNldGVzdF9tb25pdG9yKSB7XFxubmV0L2JyaWRnZS9icl9tcnAuYzozMjg6XFx0XFx0XFx0c2tiID0gYnJfbXJwX2FsbG9jX3Rlc3Rfc2tiKG1ycCwgcCxcXG5uZXQvYnJpZGdlL2JyX21ycC5jLTMyOS1cXHRcXHRcXHRcXHRcXHRcXHQgICAgQlJfTVJQX1BPUlRfUk9MRV9TRUNPTkRBUlkpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQyMjoyOTo1NC4wMTQwNzE4NzhaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMTI0ODA4NjQwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYW5hbHlzaXMgb2YgdGhlIHByb3ZpZGVkIGNvZGUgc25pcHBldDpcblxuKipEaXZpbmcgaW50byB0aGUgTVJQIEFsbG9jYXRpb24gVGVzdGluZyoqXG5cbk9rYXksIHNvIGBicl9tcnBfYWxsb2NfdGVzdF9za2JgIGlzIGdldHRpbmcgY2FsbGVkIGZyb20gYGJyX21ycF90ZXN0X3dvcmtfZXhwaXJlZGAuIFRoYXQncyB0aGUga2V5IHJlbGF0aW9uc2hpcCBJIG5lZWQgdG8gdW5kZXJzdGFuZCBoZXJlLiBNeSBmaXJzdCBpbnN0aW5jdCBpcyB0byB0cmFjZSBiYWNrIGFuZCBmaWd1cmUgb3V0IHRoZSB0aW1pbmcgYW5kIGNvbnRleHQgb2YgdGhlIGxhdHRlciwgc3BlY2lmaWNhbGx5IGhvdyBgYnJfbXJwX3Rlc3Rfd29ya19leHBpcmVkYCBpcyBzY2hlZHVsZWQuIFVuZGVyc3RhbmRpbmcgKndoZW4qIGFuZCAqd2h5KiB0aGlzIGV4cGlyeSB3b3JrIGlzIHJ1bm5pbmcgaXMgY3J1Y2lhbCB0byBncmFzcGluZyB3aGF0IHRoZSBgYnJfbXJwX2FsbG9jX3Rlc3Rfc2tiYCBmdW5jdGlvbiBpcyBhY3R1YWxseSBkb2luZyBpbiBwcmFjdGljZS4gV2hhdCdzIHRoZSBzY2hlZHVsaW5nIG1lY2hhbmlzbT8gSXMgaXQgYSB0aW1lciwgYSB3b3JrIHF1ZXVlLCBhbiBldmVudCB0cmlnZ2VyZWQgYnkgc29tZXRoaW5nIGVsc2U/IFRoZSBzY2hlZHVsaW5nIGlzIHdoZXJlIEknbGwgZmluZCB0aGUgY29uc3RyYWludHMsIHRoZSB0cmlnZ2VyIGFuZCB0aGUgaW50ZW5kZWQgYmVoYXZpb3VyIG9mIHRoaXMgZXhwaXJlZCB3b3JrIGZ1bmN0aW9uLiBUaGF0IHdpbGwgdGVsbCBtZSB3aGF0IGNvbmRpdGlvbnMgaGF2ZSB0byBiZSBtZXQgZm9yIHRoZSBgc2tiYCBhbGxvY2F0aW9uIHRlc3RpbmcgdG8gYmUgaW52b2tlZC5cblxuXG4iLCJJbnB1dFRva2VucyI6Mjg5NiwiT3V0cHV0VG9rZW5zIjo0MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjUyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDIyOjI5OjU3LjEzODg4MjE5OVoiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1ODUyMjc4OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJicl9tcnBfdGVzdF93b3JrX2V4cGlyZWRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L2JyaWRnZS9icl9tcnAuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvYnJpZGdlL2JyX21ycC5jPTIzOT1zdGF0aWMgc3RydWN0IHNrX2J1ZmYgKmJyX21ycF9hbGxvY19pbl90ZXN0X3NrYihzdHJ1Y3QgYnJfbXJwICptcnAsXFxuLS1cXG5uZXQvYnJpZGdlL2JyX21ycC5jLTI3OC0gKi9cXG5uZXQvYnJpZGdlL2JyX21ycC5jOjI3OTpzdGF0aWMgdm9pZCBicl9tcnBfdGVzdF93b3JrX2V4cGlyZWQoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxcbm5ldC9icmlkZ2UvYnJfbXJwLmMtMjgwLXtcXG4tLVxcbm5ldC9icmlkZ2UvYnJfbXJwLmM9NDk3PWludCBicl9tcnBfYWRkKHN0cnVjdCBuZXRfYnJpZGdlICpiciwgc3RydWN0IGJyX21ycF9pbnN0YW5jZSAqaW5zdGFuY2UpXFxuLS1cXG5uZXQvYnJpZGdlL2JyX21ycC5jLTU0Mi1cXG5uZXQvYnJpZGdlL2JyX21ycC5jOjU0MzpcXHRJTklUX0RFTEFZRURfV09SSyhcXHUwMDI2bXJwLVxcdTAwM2V0ZXN0X3dvcmssIGJyX21ycF90ZXN0X3dvcmtfZXhwaXJlZCk7XFxubmV0L2JyaWRnZS9icl9tcnAuYy01NDQtXFx0SU5JVF9ERUxBWUVEX1dPUksoXFx1MDAyNm1ycC1cXHUwMDNlaW5fdGVzdF93b3JrLCBicl9tcnBfaW5fdGVzdF93b3JrX2V4cGlyZWQpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQyMjoyOTo1Ny4xOTc0MTAyMDdaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyNzEwMzc1MjczLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGFuIGV4cGVydCdzIGludGVybmFsIG1vbm9sb2d1ZTpcblxuKipJbnZlc3RpZ2F0aW5nIHRoZSBJbml0aWFsaXphdGlvbiBQcm9jZXNzKipcblxuQWxyaWdodCwgc28gYGJyX21ycF9hZGRgIGlzIHRoZSBrZXkgZnVuY3Rpb24gdGhhdCBraWNrcyB0aGluZ3Mgb2ZmIGhlcmUuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byB6ZXJvIGluIG9uIHRoYXQuIEl0J3MgdGhlIHN0YXJ0aW5nIHBvaW50LCBzbyB1bmRlcnN0YW5kaW5nIGl0cyByb2xlIGFuZCBob3cgaXQncyBpbnZva2VkIGlzIGNydWNpYWwgZm9yIGEgY29tcGxldGUgcGljdHVyZS4gTGV0J3MgZGVsdmUgaW50byB0aGUgZnVuY3Rpb24gaXRzZWxmIGFuZCB0cmFjZSBpdHMgY2FsbHMgdG8gZ2V0IGEgZ3JpcCBvbiB0aGUgb3ZlcmFsbCBmbG93LiBOZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGVudHJ5IHBvaW50IGJlZm9yZSBhbnl0aGluZyBlbHNlLCBzbyBgYnJfbXJwX2FkZGAgaXQgaXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM0NzQsIk91dHB1dFRva2VucyI6MzAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQyMjoyOTo1OS45MDc3ODcyNFoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1OTI5NDI4OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJicl9tcnBfYWRkXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9icmlkZ2UvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9icmlkZ2UvYnJfbXJwLmM9NDI4PXN0YXRpYyB2b2lkIGJyX21ycF9kZWxfaW1wbChzdHJ1Y3QgbmV0X2JyaWRnZSAqYnIsIHN0cnVjdCBicl9tcnAgKm1ycClcXG4tLVxcbm5ldC9icmlkZ2UvYnJfbXJwLmMtNDk2LSAqL1xcbm5ldC9icmlkZ2UvYnJfbXJwLmM6NDk3OmludCBicl9tcnBfYWRkKHN0cnVjdCBuZXRfYnJpZGdlICpiciwgc3RydWN0IGJyX21ycF9pbnN0YW5jZSAqaW5zdGFuY2UpXFxubmV0L2JyaWRnZS9icl9tcnAuYy00OTgte1xcbi0tXFxubmV0L2JyaWRnZS9icl9tcnBfbmV0bGluay5jPTMxPXN0YXRpYyBpbnQgYnJfbXJwX2luc3RhbmNlX3BhcnNlKHN0cnVjdCBuZXRfYnJpZGdlICpiciwgc3RydWN0IG5sYXR0ciAqYXR0cixcXG4tLVxcbm5ldC9icmlkZ2UvYnJfbXJwX25ldGxpbmsuYy02MS1cXHRpZiAoY21kID09IFJUTV9TRVRMSU5LKVxcbm5ldC9icmlkZ2UvYnJfbXJwX25ldGxpbmsuYzo2MjpcXHRcXHRyZXR1cm4gYnJfbXJwX2FkZChiciwgXFx1MDAyNmluc3QpO1xcbm5ldC9icmlkZ2UvYnJfbXJwX25ldGxpbmsuYy02My1cXHRlbHNlXFxuLS1cXG5uZXQvYnJpZGdlL2JyX3ByaXZhdGVfbXJwLmg9NTk9ZW51bSBicl9tcnBfaHdfc3VwcG9ydCB7XFxuLS1cXG5uZXQvYnJpZGdlL2JyX3ByaXZhdGVfbXJwLmgtNjUtLyogYnJfbXJwLmMgKi9cXG5uZXQvYnJpZGdlL2JyX3ByaXZhdGVfbXJwLmg6NjY6aW50IGJyX21ycF9hZGQoc3RydWN0IG5ldF9icmlkZ2UgKmJyLCBzdHJ1Y3QgYnJfbXJwX2luc3RhbmNlICppbnN0YW5jZSk7XFxubmV0L2JyaWRnZS9icl9wcml2YXRlX21ycC5oLTY3LWludCBicl9tcnBfZGVsKHN0cnVjdCBuZXRfYnJpZGdlICpiciwgc3RydWN0IGJyX21ycF9pbnN0YW5jZSAqaW5zdGFuY2UpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQyMjoyOTo1OS45NjcwODY3MDhaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMTA1MTQxMTcyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipBbmFseXppbmcgdGhlIE1SUCBJbnN0YW5jZSBQYXJzaW5nIGluIEJyaWRnZSBOZXRsaW5rKipcblxuQWxyaWdodCwgc28gdGhlIGJyZWFkY3J1bWIgdHJhaWwgc3RhcnRzIHdpdGggYGJyX21ycF9pbnN0YW5jZV9wYXJzZWAgaW4gYG5ldC9icmlkZ2UvYnJfbXJwX25ldGxpbmsuY2AuIFRoYXQgZnVuY3Rpb24gY2FsbCBpbW1lZGlhdGVseSBwaXF1ZXMgbXkgaW50ZXJlc3QuIEdpdmVuIHRoaXMgY29udGV4dCwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZSBNUlAgaW5zdGFuY2UgaXMgY29uZmlndXJlZC4gU3BlY2lmaWNhbGx5LCBJJ20gdGhpbmtpbmcgYWJvdXQgdGhlIHJlbGV2YW50IGNvbmZpZ3VyYXRpb24gb3B0aW9ucyB0aGF0IGdvdmVybiB0aGlzIHBhcnRpY3VsYXIgcGFyc2luZyByb3V0aW5lLiBJIG5lZWQgdG8gdHJhY2sgZG93biB0aGUgY29uZmlndXJhdGlvbiBrbm9icyB0aGF0IGNvbnRyb2wgdGhlIGJlaGF2aW91ciBvZiB0aGlzIHNlY3Rpb24uIEkgd2lsbCBiZSBsb29raW5nIGluIHRoZSBLY29uZmlnIGZpbGVzLCBvciBwb3RlbnRpYWxseSBhdCBydW50aW1lIHVzaW5nIHN5c2ZzLiBUaGlzIGlzIHdoZXJlIEknbGwgZmluZCBteSBhbnN3ZXJzLiBOb3cgSSBuZWVkIHRvIGtub3cgd2hlcmUgdGhlIGNvbmZpZyBvcHRpb24gbGl2ZXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQwNjIsIk91dHB1dFRva2VucyI6MzIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0MiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQyMjozMDowMy4wNzIyMjk3OVoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjE1MjQ4NTgsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImJyX21ycF9hZGRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L2JyaWRnZS9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQyMjozMDowMy4xMzM3NjE2NDhaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MjYyMjYxODg1NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHN1bW1hcnksIHByZXNlbnRlZCBhcyBhIHN0cmVhbSBvZiB0aG91Z2h0OlxuXG4qKkNoZWNraW5nIHRoZSBNUlAgQ29uZmlndXJhdGlvbiBpbiB0aGUgS2VybmVsKipcblxuQWxyaWdodCwgdGltZSB0byBnZXQgdGhpcyBzb3J0ZWQuIEkgbmVlZCB0byByZWZyZXNoIG15IG1lbW9yeSBvbiB0aGUgTVJQIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyB3aXRoaW4gdGhlIGtlcm5lbC4gTGV0J3Mgc3RhcnQgYnkgbG9va2luZyBhdCB0aGUgS2NvbmZpZyBmaWxlIGZvciB0aGUgYnJpZGdlIHN1YnN5c3RlbS4gU3BlY2lmaWNhbGx5LCBgbmV0L2JyaWRnZS9LY29uZmlnYCBzaG91bGQgaG9sZCB0aGUgcmVsZXZhbnQgZGVmaW5pdGlvbnMuIFRoYXQncyB0aGUgbG9naWNhbCBwbGFjZSB0byBmaW5kIHRoZSBib29sZWFuIGNob2ljZXMsIGRlcGVuZGVuY2llcywgYW5kIGRlZmF1bHQgc2V0dGluZ3MgcmVsYXRlZCB0byBNUlAgKE11bHRpY2FzdCBSb3V0ZXIgUHJvdG9jb2wpLiBUaGlzIGZpbGUgdXN1YWxseSBwcm92aWRlcyBhIGdvb2Qgb3ZlcnZpZXcgb2Ygd2hhdCdzIHN1cHBvcnRlZCBhbmQgaG93IGl0J3MgZW5hYmxlZCBpbiB0aGUga2VybmVsIGJ1aWxkIHByb2Nlc3MuIEknbGwgbmVlZCB0byBjb25maXJtIGlmIGl0J3MgdGhlcmUsIGFuZCB0aGVuIHVuZGVyc3RhbmQgaXRzIGN1cnJlbnQgc2V0dGluZ3MuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQzMTMsIk91dHB1dFRva2VucyI6MjcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQyMjozMDowNS43NTYzODI1MDNaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU4MTkyMjU4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIk1SUFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvYnJpZGdlL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L2JyaWRnZS9LY29uZmlnPTUwPWNvbmZpZyBCUklER0VfVkxBTl9GSUxURVJJTkdcXG4tLVxcbm5ldC9icmlkZ2UvS2NvbmZpZy02My1cXG5uZXQvYnJpZGdlL0tjb25maWc6NjQ6Y29uZmlnIEJSSURHRV9NUlBcXG5uZXQvYnJpZGdlL0tjb25maWc6NjU6XFx0Ym9vbCBcXFwiTVJQIHByb3RvY29sXFxcIlxcbm5ldC9icmlkZ2UvS2NvbmZpZy02Ni1cXHRkZXBlbmRzIG9uIEJSSURHRVxcbi0tXFxubmV0L2JyaWRnZS9LY29uZmlnLTY4LVxcdGhlbHBcXG5uZXQvYnJpZGdlL0tjb25maWc6Njk6XFx0ICBJZiB5b3Ugc2F5IFkgaGVyZSwgdGhlbiB0aGUgRXRoZXJuZXQgYnJpZGdlIHdpbGwgYmUgYWJsZSB0byBydW4gTVJQXFxubmV0L2JyaWRnZS9LY29uZmlnLTcwLVxcdCAgcHJvdG9jb2wgdG8gZGV0ZWN0IGxvb3BzXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDIyOjMwOjA1LjgxNDU3OTAzMloiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNjEzMTI0MzE2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYW5hbHlzaXMgb2YgdGhlIHNpdHVhdGlvbjpcblxuKipJbnZlc3RpZ2F0aW5nIHRoZSBNUlAgQnJpZGdpbmcgQ29uZmlndXJhdGlvbioqXG5cbk9rYXksIHNvIHdlJ3JlIGxvb2tpbmcgYXQgYSBjb25maWd1cmF0aW9uIHNwZWNpZmljYWxseSBkZXNpZ25hdGVkIGFzIGBCUklER0VfTVJQYC4gTXkgaW5pdGlhbCBmb2N1cyBpcyBvbiB1bmRlcnN0YW5kaW5nIHRoZSB0ZXN0IHdvcmsgbWVjaGFuaXNtIHdpdGhpbiB0aGlzIGJyaWRnaW5nIGNvbnRleHQuIEkgbmVlZCB0byB6ZXJvIGluIG9uIGhvdyB0aGUgTVJQIChNdWx0aWNhc3QgUmVnaXN0cmF0aW9uIFByb3RvY29sKSB0ZXN0cyBhcmUgaW5pdGlhdGVkIGFuZCBtYW5hZ2VkLlxuXG5JIG5lZWQgdG8gZGlnIGludG8gdGhlIHJlbGV2YW50IGZ1bmN0aW9ucy4gQmFzZWQgb24gdGhlIGNsdWVzLCBJJ2xsIGJlIGNvbmNlbnRyYXRpbmcgb24gZWl0aGVyIGBicl9tcnBfYWxsb2NfdGVzdF9za2JgLCB3aGljaCBwcm9iYWJseSBpbnZvbHZlcyBhbGxvY2F0aW5nIHRoZSB0ZXN0IHNrYiAoc29ja2V0IGJ1ZmZlcikgdGhhdCB0aGUgdGVzdCB3b3JrIHdpbGwgdXNlLCBvciBgYnJfbXJwX3Rlc3Rfd29ya19leHBpcmVkYCwgc3VnZ2VzdGluZyBzb21ldGhpbmcgYWJvdXQgaGFuZGxpbmcgdGltZW91dHMuIGBicl9tcnBfYWRkYCBpcyBhbHNvIGEgcGxheWVyLCBsaWtlbHkgcmVsYXRlZCB0byBhZGRpbmcgZW50cmllcyB0byB0aGUgTVJQLiBBbmQsIG9mIGNvdXJzZSwgdGhlIGtleSBpbml0aWF0b3IsIGBicl9tcnBfc3RhcnRfdGVzdGAsIHNlZW1zIGNyaXRpY2FsLCBpdCdzIHRoZSBvYnZpb3VzIGVudHJ5IHBvaW50IHRvIHRyYWNlLCBhcyBpdCBzaG91bGQgYmUga2lja2luZyBvZmYgdGhlIHdob2xlIHRlc3RpbmcgcHJvY2Vzcy4gTXkgZ29hbCBpcyB0byBmaWd1cmUgb3V0IGV4YWN0bHkgKndoYXQqIGZ1bmN0aW9uIG9yIGV2ZW50ICpzdGFydHMqIHRoaXMgdGVzdCB3b3JrLiBUaGF0J3MgdGhlIGtleSB0byB1bmRlcnN0YW5kaW5nIHRoZSBjb250cm9sIGZsb3cgYW5kIHBvdGVudGlhbCBwcm9ibGVtcy4gSSBuZWVkIHRvIHBpbnBvaW50IHRoYXQgc3RhcnRpbmcgcG9pbnQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ2NTgsIk91dHB1dFRva2VucyI6MzMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo3MiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQyMjozMDowOS40Mjc3MDUyMjhaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjYzMDc2NjY5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInRlc3Rfd29ya1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvYnJpZGdlL2JyX21ycC5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9icmlkZ2UvYnJfbXJwLmM9MjM5PXN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqYnJfbXJwX2FsbG9jX2luX3Rlc3Rfc2tiKHN0cnVjdCBicl9tcnAgKm1ycCxcXG4tLVxcbm5ldC9icmlkZ2UvYnJfbXJwLmMtMjc4LSAqL1xcbm5ldC9icmlkZ2UvYnJfbXJwLmM6Mjc5OnN0YXRpYyB2b2lkIGJyX21ycF90ZXN0X3dvcmtfZXhwaXJlZChzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXFxubmV0L2JyaWRnZS9icl9tcnAuYy0yODAte1xcbm5ldC9icmlkZ2UvYnJfbXJwLmMtMjgxLVxcdHN0cnVjdCBkZWxheWVkX3dvcmsgKmRlbF93b3JrID0gdG9fZGVsYXllZF93b3JrKHdvcmspO1xcbm5ldC9icmlkZ2UvYnJfbXJwLmM6MjgyOlxcdHN0cnVjdCBicl9tcnAgKm1ycCA9IGNvbnRhaW5lcl9vZihkZWxfd29yaywgc3RydWN0IGJyX21ycCwgdGVzdF93b3JrKTtcXG5uZXQvYnJpZGdlL2JyX21ycC5jLTI4My1cXHRzdHJ1Y3QgbmV0X2JyaWRnZV9wb3J0ICpwO1xcbi0tXFxubmV0L2JyaWRnZS9icl9tcnAuYy0zNDMtXFxubmV0L2JyaWRnZS9icl9tcnAuYzozNDQ6XFx0cXVldWVfZGVsYXllZF93b3JrKHN5c3RlbV9wZXJjcHVfd3EsIFxcdTAwMjZtcnAtXFx1MDAzZXRlc3Rfd29yayxcXG5uZXQvYnJpZGdlL2JyX21ycC5jLTM0NS1cXHRcXHRcXHQgICB1c2Vjc190b19qaWZmaWVzKG1ycC1cXHUwMDNldGVzdF9pbnRlcnZhbCkpO1xcbi0tXFxubmV0L2JyaWRnZS9icl9tcnAuYy0zNTEtICovXFxubmV0L2JyaWRnZS9icl9tcnAuYzozNTI6c3RhdGljIHZvaWQgYnJfbXJwX2luX3Rlc3Rfd29ya19leHBpcmVkKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcXG5uZXQvYnJpZGdlL2JyX21ycC5jLTM1My17XFxubmV0L2JyaWRnZS9icl9tcnAuYy0zNTQtXFx0c3RydWN0IGRlbGF5ZWRfd29yayAqZGVsX3dvcmsgPSB0b19kZWxheWVkX3dvcmsod29yayk7XFxubmV0L2JyaWRnZS9icl9tcnAuYzozNTU6XFx0c3RydWN0IGJyX21ycCAqbXJwID0gY29udGFpbmVyX29mKGRlbF93b3JrLCBzdHJ1Y3QgYnJfbXJwLCBpbl90ZXN0X3dvcmspO1xcbm5ldC9icmlkZ2UvYnJfbXJwLmMtMzU2LVxcdHN0cnVjdCBuZXRfYnJpZGdlX3BvcnQgKnA7XFxuLS1cXG5uZXQvYnJpZGdlL2JyX21ycC5jLTQyMC1cXG5uZXQvYnJpZGdlL2JyX21ycC5jOjQyMTpcXHRxdWV1ZV9kZWxheWVkX3dvcmsoc3lzdGVtX3BlcmNwdV93cSwgXFx1MDAyNm1ycC1cXHUwMDNlaW5fdGVzdF93b3JrLFxcbm5ldC9icmlkZ2UvYnJfbXJwLmMtNDIyLVxcdFxcdFxcdCAgIHVzZWNzX3RvX2ppZmZpZXMobXJwLVxcdTAwM2Vpbl90ZXN0X2ludGVydmFsKSk7XFxuLS1cXG5uZXQvYnJpZGdlL2JyX21ycC5jPTQyOD1zdGF0aWMgdm9pZCBicl9tcnBfZGVsX2ltcGwoc3RydWN0IG5ldF9icmlkZ2UgKmJyLCBzdHJ1Y3QgYnJfbXJwICptcnApXFxuLS1cXG5uZXQvYnJpZGdlL2JyX21ycC5jLTQzMy1cXHQvKiBTdG9wIHNlbmRpbmcgTVJQX1Rlc3QgZnJhbWVzICovXFxubmV0L2JyaWRnZS9icl9tcnAuYzo0MzQ6XFx0Y2FuY2VsX2RlbGF5ZWRfd29ya19zeW5jKFxcdTAwMjZtcnAtXFx1MDAzZXRlc3Rfd29yayk7XFxubmV0L2JyaWRnZS9icl9tcnAuYy00MzUtXFx0YnJfbXJwX3N3aXRjaGRldl9zZW5kX3JpbmdfdGVzdChiciwgbXJwLCAwLCAwLCAwLCAwKTtcXG4tLVxcbm5ldC9icmlkZ2UvYnJfbXJwLmMtNDM3LVxcdC8qIFN0b3Agc2VuZGluZyBNUlBfSW5UZXN0IGZyYW1lcyBpZiBoYXMgYW4gaW50ZXJjb25uZWN0IHJvbGUgKi9cXG5uZXQvYnJpZGdlL2JyX21ycC5jOjQzODpcXHRjYW5jZWxfZGVsYXllZF93b3JrX3N5bmMoXFx1MDAyNm1ycC1cXHUwMDNlaW5fdGVzdF93b3JrKTtcXG5uZXQvYnJpZGdlL2JyX21ycC5jLTQzOS1cXHRicl9tcnBfc3dpdGNoZGV2X3NlbmRfaW5fdGVzdChiciwgbXJwLCAwLCAwLCAwKTtcXG4tLVxcbm5ldC9icmlkZ2UvYnJfbXJwLmM9NDk3PWludCBicl9tcnBfYWRkKHN0cnVjdCBuZXRfYnJpZGdlICpiciwgc3RydWN0IGJyX21ycF9pbnN0YW5jZSAqaW5zdGFuY2UpXFxuLS1cXG5uZXQvYnJpZGdlL2JyX21ycC5jLTU0Mi1cXG5uZXQvYnJpZGdlL2JyX21ycC5jOjU0MzpcXHRJTklUX0RFTEFZRURfV09SSyhcXHUwMDI2bXJwLVxcdTAwM2V0ZXN0X3dvcmssIGJyX21ycF90ZXN0X3dvcmtfZXhwaXJlZCk7XFxubmV0L2JyaWRnZS9icl9tcnAuYzo1NDQ6XFx0SU5JVF9ERUxBWUVEX1dPUksoXFx1MDAyNm1ycC1cXHUwMDNlaW5fdGVzdF93b3JrLCBicl9tcnBfaW5fdGVzdF93b3JrX2V4cGlyZWQpO1xcbm5ldC9icmlkZ2UvYnJfbXJwLmMtNTQ1LVxcdGhsaXN0X2FkZF90YWlsX3JjdShcXHUwMDI2bXJwLVxcdTAwM2VsaXN0LCBcXHUwMDI2YnItXFx1MDAzZW1ycF9saXN0KTtcXG4tLVxcbm5ldC9icmlkZ2UvYnJfbXJwLmM9NzAyPWludCBicl9tcnBfc3RhcnRfdGVzdChzdHJ1Y3QgbmV0X2JyaWRnZSAqYnIsXFxuLS1cXG5uZXQvYnJpZGdlL2JyX21ycC5jLTcyNy1cXHRtcnAtXFx1MDAzZXRlc3RfY291bnRfbWlzcyA9IDA7XFxubmV0L2JyaWRnZS9icl9tcnAuYzo3Mjg6XFx0cXVldWVfZGVsYXllZF93b3JrKHN5c3RlbV9wZXJjcHVfd3EsIFxcdTAwMjZtcnAtXFx1MDAzZXRlc3Rfd29yayxcXG5uZXQvYnJpZGdlL2JyX21ycC5jLTcyOS1cXHRcXHRcXHQgICB1c2Vjc190b19qaWZmaWVzKHRlc3QtXFx1MDAzZWludGVydmFsKSk7XFxuLS1cXG5uZXQvYnJpZGdlL2JyX21ycC5jPTc1OD1pbnQgYnJfbXJwX3NldF9pbl9yb2xlKHN0cnVjdCBuZXRfYnJpZGdlICpiciwgc3RydWN0IGJyX21ycF9pbl9yb2xlICpyb2xlKVxcbi0tXFxubmV0L2JyaWRnZS9icl9tcnAuYy03NzgtXFx0XFx0LyogU3RvcCB0aGUgZ2VuZXJhdGluZyBNUlBfSW5UZXN0IGZyYW1lcyAqL1xcbm5ldC9icmlkZ2UvYnJfbXJwLmM6Nzc5OlxcdFxcdGNhbmNlbF9kZWxheWVkX3dvcmtfc3luYyhcXHUwMDI2bXJwLVxcdTAwM2Vpbl90ZXN0X3dvcmspO1xcbm5ldC9icmlkZ2UvYnJfbXJwLmMtNzgwLVxcdFxcdGJyX21ycF9zd2l0Y2hkZXZfc2VuZF9pbl90ZXN0KGJyLCBtcnAsIDAsIDAsIDApO1xcbi0tXFxubmV0L2JyaWRnZS9icl9tcnAuYz04NDA9aW50IGJyX21ycF9zdGFydF9pbl90ZXN0KHN0cnVjdCBuZXRfYnJpZGdlICpicixcXG4tLVxcbm5ldC9icmlkZ2UvYnJfbXJwLmMtODY3LVxcdG1ycC1cXHUwMDNlaW5fdGVzdF9jb3VudF9taXNzID0gMDtcXG5uZXQvYnJpZGdlL2JyX21ycC5jOjg2ODpcXHRxdWV1ZV9kZWxheWVkX3dvcmsoc3lzdGVtX3BlcmNwdV93cSwgXFx1MDAyNm1ycC1cXHUwMDNlaW5fdGVzdF93b3JrLFxcbm5ldC9icmlkZ2UvYnJfbXJwLmMtODY5LVxcdFxcdFxcdCAgIHVzZWNzX3RvX2ppZmZpZXMoaW5fdGVzdC1cXHUwMDNlaW50ZXJ2YWwpKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjZUMjI6MzA6MDkuNDkwNzg1NzA3WiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI4NzkwNDgwOTgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0YWtlIG9uIHRoZSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIGl0IHdlcmUgbXkgb3duOlxuXG4qKkluaXRpYWxpemluZyB0aGUgTVJQIFRlc3QqKlxuXG5Pa2F5LCBzbyB3ZSdyZSBraWNraW5nIHRoaW5ncyBvZmYgd2l0aCBgYnJfbXJwX3N0YXJ0X3Rlc3RgLiBUaGF0J3Mgb3VyIGVudHJ5IHBvaW50IGZvciB0aGlzIHRlc3QgcnVuLiBOb3csIG15IGltbWVkaWF0ZSBpbnN0aW5jdCBpcyB0byB0cmFjZSBiYWNrIGl0cyBleGVjdXRpb24uIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjYWxsaW5nIGNvbnRleHQuIExldCdzIHNlZSBleGFjdGx5IHdoZXJlIGBicl9tcnBfc3RhcnRfdGVzdGAgaXMgaW52b2tlZC4gVW5kZXJzdGFuZGluZyB0aGUgY2FsbGluZyBmdW5jdGlvbihzKSBpcyBjcnVjaWFsIGZvciB1bmRlcnN0YW5kaW5nIHRoZSBvdmVyYWxsIGZsb3cgYW5kIHBvdGVudGlhbCBkZXBlbmRlbmNpZXMgb2YgdGhlIHRlc3QuIEkgd2FudCB0byBzZWUgKmhvdyogdGhpcyB0ZXN0IGlzIGJlaW5nIGluaXRpYXRlZC5cblxuXG4iLCJJbnB1dFRva2VucyI6NjUwMSwiT3V0cHV0VG9rZW5zIjozMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDIyOjMwOjEyLjM2OTgzNTc1NFoiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjAwMDY3NTgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiYnJfbXJwX3N0YXJ0X3Rlc3RcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L2JyaWRnZS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L2JyaWRnZS9icl9tcnAuYz02NzE9aW50IGJyX21ycF9zZXRfcmluZ19yb2xlKHN0cnVjdCBuZXRfYnJpZGdlICpicixcXG4tLVxcbm5ldC9icmlkZ2UvYnJfbXJwLmMtNzAxLSAqL1xcbm5ldC9icmlkZ2UvYnJfbXJwLmM6NzAyOmludCBicl9tcnBfc3RhcnRfdGVzdChzdHJ1Y3QgbmV0X2JyaWRnZSAqYnIsXFxubmV0L2JyaWRnZS9icl9tcnAuYzo3MDM6XFx0XFx0ICAgICAgc3RydWN0IGJyX21ycF9zdGFydF90ZXN0ICp0ZXN0KVxcbm5ldC9icmlkZ2UvYnJfbXJwLmMtNzA0LXtcXG4tLVxcbm5ldC9icmlkZ2UvYnJfbXJwX25ldGxpbmsuYz0xOTU9c3RhdGljIGNvbnN0IHN0cnVjdCBubGFfcG9saWN5XFxubmV0L2JyaWRnZS9icl9tcnBfbmV0bGluay5jOjE5Njpicl9tcnBfc3RhcnRfdGVzdF9wb2xpY3lbSUZMQV9CUklER0VfTVJQX1NUQVJUX1RFU1RfTUFYICsgMV0gPSB7XFxubmV0L2JyaWRnZS9icl9tcnBfbmV0bGluay5jLTE5Ny1cXHRbSUZMQV9CUklER0VfTVJQX1NUQVJUX1RFU1RfVU5TUEVDXVxcdD0geyAudHlwZSA9IE5MQV9SRUpFQ1QgfSxcXG4tLVxcbm5ldC9icmlkZ2UvYnJfbXJwX25ldGxpbmsuYy0yMDQtXFxubmV0L2JyaWRnZS9icl9tcnBfbmV0bGluay5jOjIwNTpzdGF0aWMgaW50IGJyX21ycF9zdGFydF90ZXN0X3BhcnNlKHN0cnVjdCBuZXRfYnJpZGdlICpiciwgc3RydWN0IG5sYXR0ciAqYXR0cixcXG5uZXQvYnJpZGdlL2JyX21ycF9uZXRsaW5rLmMtMjA2LVxcdFxcdFxcdFxcdCAgIHN0cnVjdCBuZXRsaW5rX2V4dF9hY2sgKmV4dGFjaylcXG4tLVxcbm5ldC9icmlkZ2UvYnJfbXJwX25ldGxpbmsuYy0yMDgtXFx0c3RydWN0IG5sYXR0ciAqdGJbSUZMQV9CUklER0VfTVJQX1NUQVJUX1RFU1RfTUFYICsgMV07XFxubmV0L2JyaWRnZS9icl9tcnBfbmV0bGluay5jOjIwOTpcXHRzdHJ1Y3QgYnJfbXJwX3N0YXJ0X3Rlc3QgdGVzdDtcXG5uZXQvYnJpZGdlL2JyX21ycF9uZXRsaW5rLmMtMjEwLVxcdGludCBlcnI7XFxuLS1cXG5uZXQvYnJpZGdlL2JyX21ycF9uZXRsaW5rLmMtMjEyLVxcdGVyciA9IG5sYV9wYXJzZV9uZXN0ZWQodGIsIElGTEFfQlJJREdFX01SUF9TVEFSVF9URVNUX01BWCwgYXR0cixcXG5uZXQvYnJpZGdlL2JyX21ycF9uZXRsaW5rLmM6MjEzOlxcdFxcdFxcdCAgICAgICBicl9tcnBfc3RhcnRfdGVzdF9wb2xpY3ksIGV4dGFjayk7XFxubmV0L2JyaWRnZS9icl9tcnBfbmV0bGluay5jLTIxNC1cXHRpZiAoZXJyKVxcbi0tXFxubmV0L2JyaWRnZS9icl9tcnBfbmV0bGluay5jLTIzNy1cXG5uZXQvYnJpZGdlL2JyX21ycF9uZXRsaW5rLmM6MjM4OlxcdHJldHVybiBicl9tcnBfc3RhcnRfdGVzdChiciwgXFx1MDAyNnRlc3QpO1xcbm5ldC9icmlkZ2UvYnJfbXJwX25ldGxpbmsuYy0yMzktfVxcbi0tXFxubmV0L2JyaWRnZS9icl9tcnBfbmV0bGluay5jPTM1Nj1pbnQgYnJfbXJwX3BhcnNlKHN0cnVjdCBuZXRfYnJpZGdlICpiciwgc3RydWN0IG5ldF9icmlkZ2VfcG9ydCAqcCxcXG4tLVxcbm5ldC9icmlkZ2UvYnJfbXJwX25ldGxpbmsuYy00MTQtXFx0aWYgKHRiW0lGTEFfQlJJREdFX01SUF9TVEFSVF9URVNUXSkge1xcbm5ldC9icmlkZ2UvYnJfbXJwX25ldGxpbmsuYzo0MTU6XFx0XFx0ZXJyID0gYnJfbXJwX3N0YXJ0X3Rlc3RfcGFyc2UoYnIsXFxubmV0L2JyaWRnZS9icl9tcnBfbmV0bGluay5jLTQxNi1cXHRcXHRcXHRcXHRcXHQgICAgICB0YltJRkxBX0JSSURHRV9NUlBfU1RBUlRfVEVTVF0sXFxuLS1cXG5uZXQvYnJpZGdlL2JyX3ByaXZhdGVfbXJwLmg9NzQ9aW50IGJyX21ycF9zZXRfcmluZ19yb2xlKHN0cnVjdCBuZXRfYnJpZGdlICpiciwgc3RydWN0IGJyX21ycF9yaW5nX3JvbGUgKnJvbGUpO1xcbm5ldC9icmlkZ2UvYnJfcHJpdmF0ZV9tcnAuaDo3NTppbnQgYnJfbXJwX3N0YXJ0X3Rlc3Qoc3RydWN0IG5ldF9icmlkZ2UgKmJyLCBzdHJ1Y3QgYnJfbXJwX3N0YXJ0X3Rlc3QgKnRlc3QpO1xcbm5ldC9icmlkZ2UvYnJfcHJpdmF0ZV9tcnAuaC03Ni1pbnQgYnJfbXJwX3NldF9pbl9zdGF0ZShzdHJ1Y3QgbmV0X2JyaWRnZSAqYnIsIHN0cnVjdCBicl9tcnBfaW5fc3RhdGUgKnN0YXRlKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjZUMjI6MzA6MTIuNDI5ODQ3MDAzWiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ3MDI4OTE5ODUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBCdWcgaW4gdGhlIEJyaWRnZSBNUlAgVGVzdCBDb2RlKipcblxuT2theSwgc28gSSdtIGRpZ2dpbmcgaW50byB0aGlzIGJ1Zy4gSXQgbG9va3MgbGlrZSB0aGUgbmV0bGluayBlbnRyeSBwb2ludCBmb3IgdGhpcyB3aG9sZSBNUlAgdGVzdCBwcm9jZXNzIGlzIGBicl9tcnBfc3RhcnRfdGVzdGAuIFRoZSByb290IG9mIHRoZSBwcm9ibGVtIHNlZW1zIHRvIGJlIHdpdGhpbiBgYnJfbXJwX2FsbG9jX3Rlc3Rfc2tiYC4gVGhhdCBmdW5jdGlvbiBpcyBjYWxsZWQgYnkgYGJyX21ycF90ZXN0X3dvcmtfZXhwaXJlZGAsIHdoaWNoLCBpbiB0dXJuLCBpcyBzY2hlZHVsZWQgYnkgYGJyX21ycF9zdGFydF90ZXN0YC4gU2VlbXMgbGlrZSB0aGUgZml4IGl0c2VsZiBhZGRyZXNzZXMgYSBzaXplIGNhbGN1bGF0aW9uIGlzc3VlLCBwdXJlbHkgZnVuY3Rpb25hbC5cblxuTm93LCBhIGNydWNpYWwgcXVlc3Rpb24g4oCTIGlzIHRoaXMgY29kZSBwYXRoIGV2ZW4gKnJlYWNoYWJsZSogaW4gYSBRRU1VIGVudmlyb25tZW50PyBZZXMsIHRoYW5rZnVsbHksIGl0J3MgcGFydCBvZiB0aGUgYnJpZGdlIG1vZHVsZS4gU2luY2UgdGhhdCdzIGVudGlyZWx5IHNvZnR3YXJlLWJhc2VkLCB0aGVyZSBzaG91bGRuJ3QgYmUgYW55IGhhcmR3YXJlIGRlcGVuZGVuY2llcyBibG9ja2luZyB1cy4gSSBjYW4gZGVmaW5pdGVseSByZXByb2R1Y2UgdGhpcy5cblxuVGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9uIHRvIGVuYWJsZSBhbGwgdGhpcyBpcyBgQlJJREdFX01SUGAsIHdoaWNoIEknbGwga2VlcCBpbiBtaW5kIGZvciBzZXR1cC5cblxuUmVnYXJkaW5nIHN5bWJvbHMsIEkgbmVlZCB0byBmb2N1cyBvbiBgYnJfbXJwX3N0YXJ0X3Rlc3RgLCBvYnZpb3VzbHksIGFuZCB0aGVuIGFsc28gYGJyX21ycF90ZXN0X3dvcmtfZXhwaXJlZGAgYmVjYXVzZSBpdCBpcyB0aGUgZnVuY3Rpb24gdGhhdCBzY2hlZHVsZXMgYGJyX21ycF9hbGxvY190ZXN0X3NrYmAuIEknbGwgaGF2ZSB0byBpbnZlc3RpZ2F0ZSBpZiBgYnJfbXJwX2FsbG9jX3Rlc3Rfc2tiYCBpcyBzdGF0aWMgb3IgcG90ZW50aWFsbHkgaW5saW5lZCBieSB0aGUgY29tcGlsZXIuIElmIGl0J3MgKm5vdCogaW5saW5lZCwgdGhlbiBJJ2xsIGRlZmluaXRlbHkgbmVlZCB0byBleGFtaW5lIGl0IG1vcmUgY2xvc2VseS4gV2FpdCwgaXQgKmlzKiBzdGF0aWM7IEkgbmVlZCB0byB2ZXJpZnkgdGhhdCBpdCdzIG5vdCBiZWluZyBpbmxpbmVkIHRvIGVuc3VyZSBwcm9wZXIgZGVidWdnaW5nLlxuXG5cbiIsIklucHV0VG9rZW5zIjo3NjQwLCJPdXRwdXRUb2tlbnMiOjQxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTgyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDIyOjMwOjE3LjEzMjc0MTAxOFoiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjI0NTU5NjgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiYnJfbXJwX2FsbG9jX3Rlc3Rfc2tiXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9icmlkZ2UvYnJfbXJwLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L2JyaWRnZS9icl9tcnAuYz0xNzE9c3RhdGljIHZvaWQgYnJfbXJwX3NrYl9jb21tb24oc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGJyX21ycCAqbXJwKVxcbi0tXFxubmV0L2JyaWRnZS9icl9tcnAuYy0xODEtXFxubmV0L2JyaWRnZS9icl9tcnAuYzoxODI6c3RhdGljIHN0cnVjdCBza19idWZmICpicl9tcnBfYWxsb2NfdGVzdF9za2Ioc3RydWN0IGJyX21ycCAqbXJwLFxcbm5ldC9icmlkZ2UvYnJfbXJwLmMtMTgzLVxcdFxcdFxcdFxcdFxcdCAgICAgc3RydWN0IG5ldF9icmlkZ2VfcG9ydCAqcCxcXG4tLVxcbm5ldC9icmlkZ2UvYnJfbXJwLmM9Mjc5PXN0YXRpYyB2b2lkIGJyX21ycF90ZXN0X3dvcmtfZXhwaXJlZChzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXFxuLS1cXG5uZXQvYnJpZGdlL2JyX21ycC5jLTMxMS1cXHRcXHRpZiAoIW1ycC1cXHUwMDNldGVzdF9tb25pdG9yKSB7XFxubmV0L2JyaWRnZS9icl9tcnAuYzozMTI6XFx0XFx0XFx0c2tiID0gYnJfbXJwX2FsbG9jX3Rlc3Rfc2tiKG1ycCwgcCxcXG5uZXQvYnJpZGdlL2JyX21ycC5jLTMxMy1cXHRcXHRcXHRcXHRcXHRcXHQgICAgQlJfTVJQX1BPUlRfUk9MRV9QUklNQVJZKTtcXG4tLVxcbm5ldC9icmlkZ2UvYnJfbXJwLmMtMzI3LVxcdFxcdGlmICghbXJwLVxcdTAwM2V0ZXN0X21vbml0b3IpIHtcXG5uZXQvYnJpZGdlL2JyX21ycC5jOjMyODpcXHRcXHRcXHRza2IgPSBicl9tcnBfYWxsb2NfdGVzdF9za2IobXJwLCBwLFxcbm5ldC9icmlkZ2UvYnJfbXJwLmMtMzI5LVxcdFxcdFxcdFxcdFxcdFxcdCAgICBCUl9NUlBfUE9SVF9ST0xFX1NFQ09OREFSWSk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDIyOjMwOjE3LjE5NTIwMjU5NloiLCJTZXEiOjE5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MDY4MTAyNzM0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgYGJyX21ycGAgQ29kZSoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgYGJyX21ycGAgY29kZS4gRmlyc3QgdGhpbmcgdGhhdCBqdW1wcyBvdXQgaXMgYGJyX21ycF9hbGxvY190ZXN0X3NrYmAuIFNpbmNlIGl0J3Mgc3RhdGljLCB0aGVyZSdzIGEgZ29vZCBjaGFuY2UgdGhlIGNvbXBpbGVyIHdpbGwganVzdCBpbmxpbmUgaXQuIFRoYXQncyBub3Qgd2hlcmUgSSB3YW50IHRvIGZvY3VzLCBzbyBsZXQncyBtb3ZlIG9uLlxuXG5Ob3csIG15IGF0dGVudGlvbidzIG9uIGBicl9tcnBfdGVzdF93b3JrX2V4cGlyZWRgIGFuZCBgYnJfbXJwX3N0YXJ0X3Rlc3RgLiBgYnJfbXJwX3Rlc3Rfd29ya19leHBpcmVkYCBpcyBhIHdvcmtxdWV1ZSBjYWxsYmFjaywgd2hpY2ggbWVhbnMgaXQgd29uJ3QgYmUgaW5saW5lZC4gQW5kIGBicl9tcnBfc3RhcnRfdGVzdGAgaXMgZXhwb3J0ZWQsIHNvIGl0J3MgYSBnbG9iYWwgZnVuY3Rpb24uIFNlZW1zIGxpa2UgYSBnb29kIHBsYWNlIHRvIHN0YXJ0IGRpZ2dpbmcgZGVlcGVyLlxuXG5IYW5nIG9uIGEgc2Vjb25k4oCmSSBqdXN0IGNhdWdodCBzb21ldGhpbmcuIEkgdGhvdWdodCBgYnJfbXJwX3Rlc3Rfd29ya19leHBpcmVkYCBiZWluZyBzdGF0aWMgd291bGQgbWVhbiBpbmxpbmluZyB3YXMgcG9zc2libGUsIGJ1dCB0aGUgYWRkcmVzcyBvZiB0aGF0IGZ1bmN0aW9uIGlzIHRha2VuIGZvciBgSU5JVF9ERUxBWUVEX1dPUktgLiBTbywgdGhlIGNvbXBpbGVyICp3b24ndCogaW5saW5lIGl0IGFmdGVyIGFsbC4gSW50ZXJlc3RpbmcuIFRoYXQgZGVmaW5pdGVseSBtZWFucyBJIG5lZWQgdG8gY2lyY2xlIGJhY2sgdG8gaXQuXG5cbkFscmlnaHQsIGJ1dCBmb3Igbm93LCBJJ20gZ29pbmcgdG8gc2hpZnQgbXkgZm9jdXMgYmFjayB0byBgYnJfbXJwX3N0YXJ0X3Rlc3RgLlxuXG5cbiIsIklucHV0VG9rZW5zIjo4NTcyLCJPdXRwdXRUb2tlbnMiOjM4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTMxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDIyOjMwOjIxLjI2MzMwNzQ3WiIsIlNlcSI6MjAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2MDA5Njc0OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJicl9tcnBfc3RhcnRfdGVzdFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvYnJpZGdlL2JyX21ycC5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9icmlkZ2UvYnJfbXJwLmM9NjcxPWludCBicl9tcnBfc2V0X3Jpbmdfcm9sZShzdHJ1Y3QgbmV0X2JyaWRnZSAqYnIsXFxuLS1cXG5uZXQvYnJpZGdlL2JyX21ycC5jLTcwMS0gKi9cXG5uZXQvYnJpZGdlL2JyX21ycC5jOjcwMjppbnQgYnJfbXJwX3N0YXJ0X3Rlc3Qoc3RydWN0IG5ldF9icmlkZ2UgKmJyLFxcbm5ldC9icmlkZ2UvYnJfbXJwLmM6NzAzOlxcdFxcdCAgICAgIHN0cnVjdCBicl9tcnBfc3RhcnRfdGVzdCAqdGVzdClcXG5uZXQvYnJpZGdlL2JyX21ycC5jLTcwNC17XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDIyOjMwOjIxLjMyMzQwOTUyOVoiLCJTZXEiOjIxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMTc2NzAzMTA5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIG15IG93biBtZW50YWwgcHJvY2VzcywgZ2l2ZW4gbXkgZXhwZXJ0aXNlOlxuXG4qKkNoZWNraW5nIHRoZSBNUlAgVGVzdCBTdGFydCoqXG5cbkFscmlnaHQsIGBicl9tcnBfc3RhcnRfdGVzdGAuLi4gdGhhdCByaW5ncyBhIGJlbGwuIEl0J3MgYSBnbG9iYWwgZnVuY3Rpb24sIG1lYW5pbmcgaXQncyBsaWtlbHkgYSBjZW50cmFsIGVudHJ5IHBvaW50IG9yIGEgY29yZSBwaWVjZSBvZiBvdXIgTVJQIChNYXRlcmlhbCBSZXF1aXJlbWVudHMgUGxhbm5pbmcpIHN5c3RlbS4gQmVmb3JlIEkgZ28gdG9vIGRlZXAsIEkgc2hvdWxkIHByb2JhYmx5IGRvdWJsZS1jaGVjayB0aGUgYXNzb2NpYXRlZCB0YXNrLCBgYnJfbXJwX3Rlc3Rfd29ya19leHBpcmVkYC4gVGhhdCBmZWVscyBsaWtlIGEgY3J1Y2lhbCByZWxhdGVkIHByb2Nlc3MuIFdoYXTigJlzIGdvaW5nIG9uIHdpdGggZXhwaXJlZCB3b3JrIGluIHRoZSBjb250ZXh0IG9mIHN0YXJ0aW5nIGEgdGVzdD8gSXMgaXQgYSBzZXR1cCByZXF1aXJlbWVudD8gQXJlIHdlIGluaXRpYWxpemluZyB0aGUgdGVzdHMgYmFzZWQgb24gc29tZSBleGlzdGluZyB3b3JrIHN0YXR1cyBvciB2YWxpZGF0aW9uPyBOZWVkIHRvIGRldGVybWluZSBpZiBpdHMgcGFydCBvZiBzdGFydGluZyB0aGUgTVJQIHByb2Nlc3Mgb3IgaWYgc29tZSBkYXRhIGlzIG5vdCByZWFkeSB0byBjb250aW51ZSB0aGUgcHJvY2Vzcy4gVGhpcyBsaWtlbHkgZGljdGF0ZXMgaWYgdGhlcmUgaXMgYSBibG9ja2luZyBpc3N1ZSBvciBpZiB0aGVyZSBhcmUgY2VydGFpbiB3b3JrIGZsb3dzIGZvciBwcm9jZXNzaW5nIHRoZSBpbmZvcm1hdGlvbiBiZWluZyBjcmVhdGVkLiBHb3R0YSBpbnZlc3RpZ2F0ZSB0aGF0IGNvbm5lY3Rpb24gYmVmb3JlIEkgbWFrZSBhbnkgYXNzdW1wdGlvbnMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjkxNjcsIk91dHB1dFRva2VucyI6NDAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQyMjozMDoyNC41MDAxMTQ2NzhaIiwiU2VxIjoyMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU2MzYzMDY4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImJyX21ycF90ZXN0X3dvcmtfZXhwaXJlZFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvYnJpZGdlL2JyX21ycC5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9icmlkZ2UvYnJfbXJwLmM9MjM5PXN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqYnJfbXJwX2FsbG9jX2luX3Rlc3Rfc2tiKHN0cnVjdCBicl9tcnAgKm1ycCxcXG4tLVxcbm5ldC9icmlkZ2UvYnJfbXJwLmMtMjc4LSAqL1xcbm5ldC9icmlkZ2UvYnJfbXJwLmM6Mjc5OnN0YXRpYyB2b2lkIGJyX21ycF90ZXN0X3dvcmtfZXhwaXJlZChzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXFxubmV0L2JyaWRnZS9icl9tcnAuYy0yODAte1xcbi0tXFxubmV0L2JyaWRnZS9icl9tcnAuYz00OTc9aW50IGJyX21ycF9hZGQoc3RydWN0IG5ldF9icmlkZ2UgKmJyLCBzdHJ1Y3QgYnJfbXJwX2luc3RhbmNlICppbnN0YW5jZSlcXG4tLVxcbm5ldC9icmlkZ2UvYnJfbXJwLmMtNTQyLVxcbm5ldC9icmlkZ2UvYnJfbXJwLmM6NTQzOlxcdElOSVRfREVMQVlFRF9XT1JLKFxcdTAwMjZtcnAtXFx1MDAzZXRlc3Rfd29yaywgYnJfbXJwX3Rlc3Rfd29ya19leHBpcmVkKTtcXG5uZXQvYnJpZGdlL2JyX21ycC5jLTU0NC1cXHRJTklUX0RFTEFZRURfV09SSyhcXHUwMDI2bXJwLVxcdTAwM2Vpbl90ZXN0X3dvcmssIGJyX21ycF9pbl90ZXN0X3dvcmtfZXhwaXJlZCk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDIyOjMwOjI0LjU1NjQ4MjQwNloiLCJTZXEiOjIzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNDY5Mjc5NzQxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBteSBvd24sIGdpdmVuIG15IGV4cGVydGlzZTpcblxuKipFeGFtaW5pbmcgYSBQb3RlbnRpYWwgU3RhdGljIFZhcmlhYmxlIGFuZCBDb25maWd1cmF0aW9uIERlcGVuZGVuY3kqKlxuXG5BbHJpZ2h0LCBsZXQncyBzZWUuLi4gSSdtIGxvb2tpbmcgYXQgYGJyX21ycF90ZXN0X3dvcmtfZXhwaXJlZGAuIFRoZSBjb2RlIG1lbnRpb25zIGl0J3MgYSBzdGF0aWMgdmFyaWFibGUsIHdoaWNoLCBpbiBhbmQgb2YgaXRzZWxmLCBpcyBpbnRlcmVzdGluZy4gQnV0LCBJJ20gbW9yZSBjb25jZXJuZWQgYnkgdGhlIGZhY3QgdGhhdCBpdHMgYWRkcmVzcyBpcyBiZWluZyB0YWtlbi4gVGhhdCByYWlzZXMgYSBmbGFnIGltbWVkaWF0ZWx5OyBzdGF0aWNhbGx5IGRlY2xhcmVkIHZhcmlhYmxlcyB1c3VhbGx5IGRvbid0IGhhdmUgdGhlaXIgYWRkcmVzc2VzIG1hbmFnZWQgaW4gc3VjaCB3YXlzLCBhbmQgSSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2h5IHRoaXMgaXMgZG9uZS4gSXMgaXQgYSBmdW5jdGlvbiBwb2ludGVyPyBJcyBpdCBiZWluZyBhZGRlZCB0byBhIGRhdGEgc3RydWN0dXJlPyBUaGF0J3Mgd2hhdCBJIG5lZWQgdG8gdW5kZXJzdGFuZC5cblxuRnVydGhlcm1vcmUsIHRoZSBjb25maWd1cmF0aW9uIGBCUklER0VfTVJQYCBpcyBtZW50aW9uZWQuIEkgaGF2ZSBhIGh1bmNoIHRoYXQgdGhpcyBwYXJ0aWN1bGFyIHZhcmlhYmxlIG1heSBoYXZlIGEgY29uZmlndXJhdGlvbiBkZXBlbmRlbmNlIGFuZCBJIG5lZWQgdG8gYXNjZXJ0YWluIGlmIGl0IGRlcGVuZHMgb24gYW55dGhpbmcgZWxzZS4gVGhpcyBuZWVkcyB0byBiZSBjb25zaWRlcmVkIGFzIHBvdGVudGlhbGx5IHBhcnQgb2YgdGhlIGVxdWF0aW9uIG9mIHdoeSB0aGUgYWRkcmVzcyBpcyB0YWtlbi4gSXMgaXQgb25seSBhY3RpdmUgd2hlbiBgQlJJREdFX01SUGAgaXMgZGVmaW5lZD8gQXJlIHRoZXJlICpvdGhlciogcHJlcHJvY2Vzc29yIGRlZmluZXMgdGhhdCBjb3VsZCBhbHNvIGluZmx1ZW5jZSBpdHMgYmVoYXZpb3IsIGFuZCB0aHVzLCBpdHMgcm9sZSBpbiB0aGUgcHJvZ3JhbT8gSSBuZWVkIHRvIHF1aWNrbHkgYW5hbHl6ZSB0aGUgc3Vycm91bmRpbmcgY29kZSB0byB0cmFjZSB0aGVzZSBkZXBlbmRlbmNpZXMsIGFuZCBjbGFyaWZ5IHRoZSBwb3RlbnRpYWwgaW1wYWN0IG9mIHRoaXMgdmFyaWFibGUgb24gdGhlIHN5c3RlbSdzIGJlaGF2aW9yLiBUaW1lIHRvIGRlbHZlIGludG8gdGhlIHByZXByb2Nlc3NvciBkZWZpbmVzIGFuZCBjb25maWd1cmF0aW9uIG9wdGlvbnMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjk3MjQsIk91dHB1dFRva2VucyI6MzAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQyMjozMDoyOC4wMjU3NjQ3NzdaIiwiU2VxIjoyNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjYyMzk3NTk4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBCUklER0VfTVJQXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9icmlkZ2UvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvYnJpZGdlL0tjb25maWc9NTA9Y29uZmlnIEJSSURHRV9WTEFOX0ZJTFRFUklOR1xcbi0tXFxubmV0L2JyaWRnZS9LY29uZmlnLTYzLVxcbm5ldC9icmlkZ2UvS2NvbmZpZzo2NDpjb25maWcgQlJJREdFX01SUFxcbm5ldC9icmlkZ2UvS2NvbmZpZy02NS1cXHRib29sIFxcXCJNUlAgcHJvdG9jb2xcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDIyOjMwOjI4LjA4ODE2NzAzNVoiLCJTZXEiOjI1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyODc1MTU0NDQ4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgYSBzdW1tYXJ5IG9mIG15IHRob3VnaHQgcHJvY2VzcywgYXMgcmVxdWVzdGVkOlxuXG4qKk5hdmlnYXRpbmcgdGhlIEtlcm5lbCdzIEJyaWRnZSBDb25maWd1cmF0aW9uKipcblxuT2theSwgc28gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IGJyaWRnaW5nIGlzIGNvbmZpZ3VyZWQgd2l0aGluIHRoZSBrZXJuZWwuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byB6ZXJvIGluIG9uIHRoZSBjb3JlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucywgYW5kIGEgZ29vZCBzdGFydGluZyBwb2ludCBpcyB1c3VhbGx5IHRoZSBgS2NvbmZpZ2AgZmlsZXMuIFRoYXQncyB3aGVyZSBhbGwgdGhlIGAjZGVmaW5lYCBzdGF0ZW1lbnRzIGxpdmUsIGFuZCBJJ20gZ3Vlc3NpbmcgdGhhdCBgbmV0L2JyaWRnZS9LY29uZmlnYCBpcyBnb2luZyB0byBiZSByZWxldmFudCBoZXJlLiBMZXQncyBzdGFydCBieSBjaGVja2luZyB0aGF0IGZpbGUgYXJvdW5kIGxpbmUgNjQgLSB0aGlzIGlzIGp1c3QgYW4gZWR1Y2F0ZWQgZ3Vlc3MgYXMgdG8gdGhlIGxpa2VseSBhcmVhIG9mIHJlbGF0ZWQgY29kZSwgY291bGQgYmUgcmVsYXRlZCB0byB2YXJpb3VzIGFzcGVjdHMgb2YgdGhlIGJyaWRnZSBmdW5jdGlvbmFsaXR5LiBJIGV4cGVjdCB0byBmaW5kIHNvbWUgb2YgdGhlIHRvcC1sZXZlbCBjb25maWd1cmF0aW9uIHN5bWJvbHMgYW5kIHRoZWlyIGRlc2NyaXB0aW9ucy4gSG9wZWZ1bGx5LCB0aGlzIHdpbGwgZ2l2ZSBtZSBhIGdvb2QgbGF5IG9mIHRoZSBsYW5kLCBsZXR0aW5nIG1lIHNlZSB3aGljaCBvcHRpb25zIGFyZSBhdmFpbGFibGUgYW5kIHdoaWNoIGFyZSBlbmFibGVkLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMDE1MSwiT3V0cHV0VG9rZW5zIjozMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDIyOjMwOjMwLjk2MzMyMzUxM1oiLCJTZXEiOjI2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NzQ2MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJuZXQvYnJpZGdlL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogNTAsXG4gIFwiTGluZUNvdW50XCI6IDMwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgNTA6XFx0Y29uZmlnIEJSSURHRV9WTEFOX0ZJTFRFUklOR1xcbiAgNTE6XFx0XFx0Ym9vbCBcXFwiVkxBTiBmaWx0ZXJpbmdcXFwiXFxuICA1MjpcXHRcXHRkZXBlbmRzIG9uIEJSSURHRVxcbiAgNTM6XFx0XFx0ZGVwZW5kcyBvbiBWTEFOXzgwMjFRXFxuICA1NDpcXHRcXHRkZWZhdWx0IG5cXG4gIDU1OlxcdFxcdGhlbHBcXG4gIDU2OlxcdFxcdCAgSWYgeW91IHNheSBZIGhlcmUsIHRoZW4gdGhlIEV0aGVybmV0IGJyaWRnZSB3aWxsIGJlIGFibGUgc2VsZWN0aXZlbHlcXG4gIDU3OlxcdFxcdCAgcmVjZWl2ZSBhbmQgZm9yd2FyZCB0cmFmZmljIGJhc2VkIG9uIFZMQU4gaW5mb3JtYXRpb24gaW4gdGhlIHBhY2tldFxcbiAgNTg6XFx0XFx0ICBhbnkgVkxBTiBpbmZvcm1hdGlvbiBjb25maWd1cmVkIG9uIHRoZSBicmlkZ2UgcG9ydCBvciBicmlkZ2UgZGV2aWNlLlxcbiAgNTk6XFx0XFxuICA2MDpcXHRcXHQgIFNheSBOIHRvIGV4Y2x1ZGUgdGhpcyBzdXBwb3J0IGFuZCByZWR1Y2UgdGhlIGJpbmFyeSBzaXplLlxcbiAgNjE6XFx0XFxuICA2MjpcXHRcXHQgIElmIHVuc3VyZSwgc2F5IFkuXFxuICA2MzpcXHRcXG4gIDY0OlxcdGNvbmZpZyBCUklER0VfTVJQXFxuICA2NTpcXHRcXHRib29sIFxcXCJNUlAgcHJvdG9jb2xcXFwiXFxuICA2NjpcXHRcXHRkZXBlbmRzIG9uIEJSSURHRVxcbiAgNjc6XFx0XFx0ZGVmYXVsdCBuXFxuICA2ODpcXHRcXHRoZWxwXFxuICA2OTpcXHRcXHQgIElmIHlvdSBzYXkgWSBoZXJlLCB0aGVuIHRoZSBFdGhlcm5ldCBicmlkZ2Ugd2lsbCBiZSBhYmxlIHRvIHJ1biBNUlBcXG4gIDcwOlxcdFxcdCAgcHJvdG9jb2wgdG8gZGV0ZWN0IGxvb3BzXFxuICA3MTpcXHRcXG4gIDcyOlxcdFxcdCAgU2F5IE4gdG8gZXhjbHVkZSB0aGlzIHN1cHBvcnQgYW5kIHJlZHVjZSB0aGUgYmluYXJ5IHNpemUuXFxuICA3MzpcXHRcXG4gIDc0OlxcdFxcdCAgSWYgdW5zdXJlLCBzYXkgTi5cXG4gIDc1OlxcdFxcbiAgNzY6XFx0Y29uZmlnIEJSSURHRV9DRk1cXG4gIDc3OlxcdFxcdGJvb2wgXFxcIkNGTSBwcm90b2NvbFxcXCJcXG4gIDc4OlxcdFxcdGRlcGVuZHMgb24gQlJJREdFXFxuICA3OTpcXHRcXHRoZWxwXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDIyOjMwOjMwLjk2MzM4MjE3M1oiLCJTZXEiOjI3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMjU5ODQ3OTY3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIGl0IHdlcmUgbXkgb3duOlxuXG4qKkRlcGVuZGVuY2llcyBhbmQgU3RhdGUgQ2hlY2tzKipcblxuUmlnaHQsIHNvIGBCUklER0VfTVJQYCBoaW5nZXMgb24gYEJSSURHRWAuIFRoYXQncyB0aGUgY29yZSBvZiBpdCwgYW5kIGl0J3MgY2xlYXI6IGlmIEkgd2FudCB0aGUgTVJQIGZ1bmN0aW9uYWxpdHksIEkgKm5lZWQqIHRoZSBiYXNlIGBCUklER0VgIG1vZHVsZSBlbmFibGVkLiBUaGlzIGltcGxpZXMgdGhhdCBJIG5lZWQgdG8gZW5zdXJlIGJvdGggYXJlIGVuYWJsZWQgdG8gd29yayB0b2dldGhlci4gU2VlbXMgbG9naWNhbCwgYnV0IGxldCdzIGRvdWJsZS1jaGVjayB0aGUgY29uZmlndXJhdGlvbi4uLiBTcGVjaWZpY2FsbHksIEkgbmVlZCB0byB2ZXJpZnkgd2hhdCAqa2luZCogb2Ygc3RhdGUgYEJSSURHRWAgaXMuIElzIGl0IGEgYm9vbGVhbiwgb3IgaXMgaXQgYSB0cmlzdGF0ZT8gVW5kZXJzdGFuZGluZyBpdHMgY29uZmlndXJhdGlvbiBvcHRpb25zIHdpbGwgcHJvdmlkZSBtb3JlIHVuZGVyc3RhbmRpbmcgYXMgSSBtb3ZlIGZvcndhcmQsIHNvIEknbGwgY2hlY2sgaXRzIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyB0byBtb3ZlIGZvcndhcmQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEwNzM4LCJPdXRwdXRUb2tlbnMiOjI4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzksIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQyMjozMDozNC4yMjMyMzI0OVoiLCJTZXEiOjI4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjQwODYyOTgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIEJSSURHRVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvYnJpZGdlL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L2JyaWRnZS9LY29uZmlnLTUtXFxubmV0L2JyaWRnZS9LY29uZmlnOjY6Y29uZmlnIEJSSURHRVxcbm5ldC9icmlkZ2UvS2NvbmZpZy03LVxcdHRyaXN0YXRlIFxcXCI4MDIuMWQgRXRoZXJuZXQgQnJpZGdpbmdcXFwiXFxuLS1cXG5uZXQvYnJpZGdlL0tjb25maWctMzUtXFxubmV0L2JyaWRnZS9LY29uZmlnOjM2OmNvbmZpZyBCUklER0VfSUdNUF9TTk9PUElOR1xcbm5ldC9icmlkZ2UvS2NvbmZpZy0zNy1cXHRib29sIFxcXCJJR01QL01MRCBzbm9vcGluZ1xcXCJcXG4tLVxcbm5ldC9icmlkZ2UvS2NvbmZpZy00OS1cXG5uZXQvYnJpZGdlL0tjb25maWc6NTA6Y29uZmlnIEJSSURHRV9WTEFOX0ZJTFRFUklOR1xcbm5ldC9icmlkZ2UvS2NvbmZpZy01MS1cXHRib29sIFxcXCJWTEFOIGZpbHRlcmluZ1xcXCJcXG4tLVxcbm5ldC9icmlkZ2UvS2NvbmZpZy02My1cXG5uZXQvYnJpZGdlL0tjb25maWc6NjQ6Y29uZmlnIEJSSURHRV9NUlBcXG5uZXQvYnJpZGdlL0tjb25maWctNjUtXFx0Ym9vbCBcXFwiTVJQIHByb3RvY29sXFxcIlxcbi0tXFxubmV0L2JyaWRnZS9LY29uZmlnLTc1LVxcbm5ldC9icmlkZ2UvS2NvbmZpZzo3Njpjb25maWcgQlJJREdFX0NGTVxcbm5ldC9icmlkZ2UvS2NvbmZpZy03Ny1cXHRib29sIFxcXCJDRk0gcHJvdG9jb2xcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDIyOjMwOjM0LjI4NzMyMzY5OFoiLCJTZXEiOjI5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0ODYyMTgyODkxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgQnJpZGdlIE1SUCBUZXN0IEltcGxlbWVudGF0aW9uKipcblxuT2theSwgc28gSSdtIGRpdmluZyBpbnRvIHRoaXMgYnJpZGdlIE1SUCB0ZXN0IGltcGxlbWVudGF0aW9uLiBUaGUga2V5IHRoaW5nIGhlcmUgaXMgdGhhdCBgQlJJREdFYCBpcyBhIHRyaXN0YXRlLCBtZWFuaW5nIGl0J3MgZWl0aGVyIGJ1aWx0LWluLCBtb2R1bGFyLCBvciBkaXNhYmxlZC4gSSd2ZSBnb3QgbXkgZXllIG9uIGBCUklER0VgIGFuZCBgQlJJREdFX01SUGAgYXMgdGhlIHJlbGV2YW50IGNvbmZpZ3VyYXRpb25zLlxuXG5NeSBpbW1lZGlhdGUgZm9jdXMgaXMgb24gdGhlIGZ1bmN0aW9ucyBgYnJfbXJwX3N0YXJ0X3Rlc3RgIGFuZCBgYnJfbXJwX3Rlc3Rfd29ya19leHBpcmVkYC4gSSBhbHNvIG5lZWQgdG8gY2hlY2sgYGJyX21ycF9hbGxvY190ZXN0X3NrYmAgd2hpY2ggbG9va3MgbGlrZSBpdCdzIGJlZW4gbW9kaWZpZWQuIElzIGBicl9tcnBfYWxsb2NfdGVzdF9za2JgIHN0YXRpYz8gWWVzLCBpdCBpcy4gSXMgaXQgaW5saW5lZD8gSXQncyBjYWxsZWQgdHdpY2UgaW4gYGJyX21ycF90ZXN0X3dvcmtfZXhwaXJlZGAuIExvb2tpbmcgYXQgdGhlIGZ1bmN0aW9uJ3Mgc2l6ZSwgaXQncyBwcmV0dHkgc3Vic3RhbnRpYWwsIGFsbG9jYXRpbmcgYW4gU0tCIGFuZCBzZXR0aW5nIHVwIGhlYWRlcnMuIEl0J3MgcHJvYmFibHkgbm90IGlubGluZWQuIFRvIGJlIHNhZmUsIEknbSBnb2luZyB0byBrZWVwIGBicl9tcnBfdGVzdF93b3JrX2V4cGlyZWRgIGFzIGEga2V5IGZvY3VzIHN5bWJvbC4gQWRkaXRpb25hbGx5LCBJIHNob3VsZCBhbHNvIGZvY3VzIG9uIGBicl9tcnBfc3RhcnRfdGVzdGAgYXMgaXQncyB0aGUgdHJpZ2dlciBmb3IgdGhpcyB3b3JrLlxuXG5KdXN0IHRvIGJlIHRob3JvdWdoLCBJJ20gZ29pbmcgdG8gcXVpY2tseSBjaGVjayBpZiB0aGVyZSBhcmUgYW55IG90aGVyIGRlcGVuZGVuY2llcy4gSSdsbCBjaGVjayBgbmV0L2JyaWRnZS9LY29uZmlnYCBhcm91bmQgbGluZSA2IHRvIHNlZSBpZiBgQlJJREdFYCBkZXBlbmRzIG9uIGFueXRoaW5nIGxpa2UgYExMQ2AuIFRoaXMnbGwgaGVscCBtZSBidWlsZCBhIGNvbXBsZXRlIHBpY3R1cmUgb2YgdGhlIGRlcGVuZGVuY2llcy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTEyMTcsIk91dHB1dFRva2VucyI6MzIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMzMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjZUMjI6MzA6MzkuMTQ5NTA4NzY5WiIsIlNlcSI6MzAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU4NDUwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcIm5ldC9icmlkZ2UvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAxLFxuICBcIkxpbmVDb3VudFwiOiAzMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgICAxOlxcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbiAgIDI6XFx0I1xcbiAgIDM6XFx0IyA4MDIuMWQgRXRoZXJuZXQgQnJpZGdpbmdcXG4gICA0OlxcdCNcXG4gICA1OlxcdFxcbiAgIDY6XFx0Y29uZmlnIEJSSURHRVxcbiAgIDc6XFx0XFx0dHJpc3RhdGUgXFxcIjgwMi4xZCBFdGhlcm5ldCBCcmlkZ2luZ1xcXCJcXG4gICA4OlxcdFxcdHNlbGVjdCBMTENcXG4gICA5OlxcdFxcdHNlbGVjdCBTVFBcXG4gIDEwOlxcdFxcdGhlbHBcXG4gIDExOlxcdFxcdCAgSWYgeW91IHNheSBZIGhlcmUsIHRoZW4geW91ciBMaW51eCBib3ggd2lsbCBiZSBhYmxlIHRvIGFjdCBhcyBhblxcbiAgMTI6XFx0XFx0ICBFdGhlcm5ldCBicmlkZ2UsIHdoaWNoIG1lYW5zIHRoYXQgdGhlIGRpZmZlcmVudCBFdGhlcm5ldCBzZWdtZW50cyBpdFxcbiAgMTM6XFx0XFx0ICBpcyBjb25uZWN0ZWQgdG8gd2lsbCBhcHBlYXIgYXMgb25lIEV0aGVybmV0IHRvIHRoZSBwYXJ0aWNpcGFudHMuXFxuICAxNDpcXHRcXHQgIFNldmVyYWwgc3VjaCBicmlkZ2VzIGNhbiB3b3JrIHRvZ2V0aGVyIHRvIGNyZWF0ZSBldmVuIGxhcmdlclxcbiAgMTU6XFx0XFx0ICBuZXR3b3JrcyBvZiBFdGhlcm5ldHMgdXNpbmcgdGhlIElFRUUgODAyLjEgc3Bhbm5pbmcgdHJlZSBhbGdvcml0aG0uXFxuICAxNjpcXHRcXHQgIEFzIHRoaXMgaXMgYSBzdGFuZGFyZCwgTGludXggYnJpZGdlcyB3aWxsIGNvb3BlcmF0ZSBwcm9wZXJseSB3aXRoXFxuICAxNzpcXHRcXHQgIG90aGVyIHRoaXJkIHBhcnR5IGJyaWRnZSBwcm9kdWN0cy5cXG4gIDE4OlxcdFxcbiAgMTk6XFx0XFx0ICBJbiBvcmRlciB0byB1c2UgdGhlIEV0aGVybmV0IGJyaWRnZSwgeW91J2xsIG5lZWQgdGhlIGJyaWRnZVxcbiAgMjA6XFx0XFx0ICBjb25maWd1cmF0aW9uIHRvb2xzOyBzZWUgXFx1MDAzY2ZpbGU6RG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2JyaWRnZS5yc3RcXHUwMDNlXFxuICAyMTpcXHRcXHQgIGZvciBsb2NhdGlvbi4gUGxlYXNlIHJlYWQgdGhlIEJyaWRnZSBtaW5pLUhPV1RPIGZvciBtb3JlXFxuICAyMjpcXHRcXHQgIGluZm9ybWF0aW9uLlxcbiAgMjM6XFx0XFxuICAyNDpcXHRcXHQgIElmIHlvdSBlbmFibGUgaXB0YWJsZXMgc3VwcG9ydCBhbG9uZyB3aXRoIHRoZSBicmlkZ2Ugc3VwcG9ydCB0aGVuIHlvdVxcbiAgMjU6XFx0XFx0ICB0dXJuIHlvdXIgYnJpZGdlIGludG8gYSBicmlkZ2luZyBJUCBmaXJld2FsbC5cXG4gIDI2OlxcdFxcdCAgaXB0YWJsZXMgd2lsbCB0aGVuIHNlZSB0aGUgSVAgcGFja2V0cyBiZWluZyBicmlkZ2VkLCBzbyB5b3UgbmVlZCB0b1xcbiAgMjc6XFx0XFx0ICB0YWtlIHRoaXMgaW50byBhY2NvdW50IHdoZW4gc2V0dGluZyB1cCB5b3VyIGZpcmV3YWxsIHJ1bGVzLlxcbiAgMjg6XFx0XFx0ICBFbmFibGluZyBhcnB0YWJsZXMgc3VwcG9ydCB3aGVuIGJyaWRnaW5nIHdpbGwgbGV0IGFycHRhYmxlcyBzZWVcXG4gIDI5OlxcdFxcdCAgYnJpZGdlZCBBUlAgdHJhZmZpYyBpbiB0aGUgYXJwdGFibGVzIEZPUldBUkQgY2hhaW4uXFxuICAzMDpcXHRcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjZUMjI6MzA6MzkuMTQ5NTY4NDM5WiIsIlNlcSI6MzEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ2MjI2NTg1NDgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgUmVhc29uaW5nIG9uIHRoZSBCcmlkZ2UgTVJQIFBhdGNoKipcblxuT2theSwgc28gSSd2ZSB6ZXJvZWQgaW4gb24gdGhlIGNvcmUgb2YgdGhpcy4gQmFzZWQgb24gdGhlIGluaXRpYWwgc2VsZWN0aW9uLCBgTExDYCBhbmQgYFNUUGAgYXJlIHRoZSBrZXkgY29tcG9uZW50cyBpZGVudGlmaWVkIGFzIGJlaW5nIHJlbGV2YW50LiBUaGlzIG1lYW5zIHRoYXQgdGhlIG1vcmUgc3BlY2lmaWMgY29uZmlndXJhdGlvbnMsIGBCUklER0VgIGFuZCBgQlJJREdFX01SUGAsIHNob3VsZCBiZSBzdWZmaWNpZW50IHRvIGVuYWJsZSBhbmQgdGVzdCB0aGUgY2hhbmdlcy5cblxuTGV0J3MgYnJlYWsgaXQgZG93biB0byBhIGNvbmNpc2Ugc3VtbWFyeSB0byBzb2xpZGlmeSB0aGUgYW5hbHlzaXM6XG5cbiogICAqKldvcnRoRnV6emluZzoqKiBZZXMsIGFic29sdXRlbHkuIFRoaXMgaXMgbGlrZWx5IGEgY3JpdGljYWwgYXJlYSBmb3IgZWRnZS1jYXNlIHRlc3RpbmcuXG4qICAgKipGb2N1c1N5bWJvbHM6KiogU3BlY2lmaWNhbGx5LCBgYnJfbXJwX3N0YXJ0X3Rlc3RgIGFuZCBgYnJfbXJwX3Rlc3Rfd29ya19leHBpcmVkYC4gVGhlc2UgYXJlIHRoZSB0ZXN0IGVudHJ5IHBvaW50cyBhbmQgdGhlIGV4cGlyeSBmdW5jdGlvbmFsaXR5LCBhbmQgdGh1cyBhcmUgd2hlcmUgZnV6emluZyBlZmZvcnRzIHNob3VsZCBiZSBjb25jZW50cmF0ZWQuXG4qICAgKipFbmFibGVDb25maWdzOioqIGBCUklER0VgIGFuZCBgQlJJREdFX01SUGAuIFRoZXkncmUgdGhlIHJlbGV2YW50IGNvbmZpZ3VyYXRpb25zIG5lZWRlZCB0byB0cmlnZ2VyIHRoZSBjb2RlIGluIHF1ZXN0aW9uLlxuKiAgICoqUmVhc29uaW5nOioqIFRoZSBmdW5kYW1lbnRhbCBpc3N1ZSBoZXJlIGlzIGEgZnVuY3Rpb25hbCBidWcsIHNwZWNpZmljYWxseSBpbiBob3cgdGhlIGxlbmd0aCBvZiB0aGUgTVJQIHRlc3QgcGFja2V0cyBpcyBjb21wdXRlZCB3aXRoaW4gdGhlIGJyaWRnZSBzdWJzeXN0ZW0uIFRoaXMgaXMgcmVhY2hhYmxlIHRocm91Z2ggdGhlIG5ldGxpbmsgY29uZmlndXJhdGlvbiBpbnRlcmZhY2Ugb2YgdGhlIGJyaWRnZS4gVGhpcyBtYWtlcyBpdCBhbiBleGNlbGxlbnQgdGFyZ2V0IGZvciBmdXp6aW5nLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMjI2MSwiT3V0cHV0VG9rZW5zIjo5NCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjExMSwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDIyOjMwOjQzLjc3MjIyOTMwN1oiLCJTZXEiOjMyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjg2Mzk1MTU4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJCUklER0VcIixcbiAgICBcIkJSSURHRV9NUlBcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJicl9tcnBfc3RhcnRfdGVzdFwiLFxuICAgIFwiYnJfbXJwX3Rlc3Rfd29ya19leHBpcmVkXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSBmdW5jdGlvbmFsIGJ1ZyBpbiB0aGUgbGVuZ3RoIGNhbGN1bGF0aW9uIG9mIE1SUCB0ZXN0IHBhY2tldHMgaW4gdGhlIGJyaWRnZSBzdWJzeXN0ZW0uIFRoZSBjb2RlIGlzIHJlYWNoYWJsZSB2aWEgbmV0bGluayBjb25maWd1cmF0aW9uIG9mIHRoZSBicmlkZ2UuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQlJJREdFXCIsXG4gICAgXCJCUklER0VfTVJQXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiYnJfbXJwX3N0YXJ0X3Rlc3RcIixcbiAgICBcImJyX21ycF90ZXN0X3dvcmtfZXhwaXJlZFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgZnVuY3Rpb25hbCBidWcgaW4gdGhlIGxlbmd0aCBjYWxjdWxhdGlvbiBvZiBNUlAgdGVzdCBwYWNrZXRzIGluIHRoZSBicmlkZ2Ugc3Vic3lzdGVtLiBUaGUgY29kZSBpcyByZWFjaGFibGUgdmlhIG5ldGxpbmsgY29uZmlndXJhdGlvbiBvZiB0aGUgYnJpZGdlLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+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-workflowpcgv2[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-26 22:14:41 +0000 UTC FinishedAt: 2026-07-26 22:30:45 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "53658c6f3682967a5e76ed4bc7462c4bdcddaec3", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BRIDGE", "BRIDGE_MRP" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "53658c6f3682967a5e76ed4bc7462c4bdcddaec3", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BRIDGE", "BRIDGE_MRP" ], "series_id": "884c98b8-35ee-4cd3-bd28-d9274b49e5d2" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "br_mrp_start_test", "br_mrp_test_work_expired" ], "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+CgkJCTx0ZD4yMDI2LzA3LzI2IDIyOjI5PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JSSURHRSYjMzQ7LAogICAgJiMzNDtCUklER0VfTVJQJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7YnJfbXJwX3N0YXJ0X3Rlc3QmIzM0OywKICAgICYjMzQ7YnJfbXJwX3Rlc3Rfd29ya19leHBpcmVkJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgZnVuY3Rpb25hbCBidWcgaW4gdGhlIGxlbmd0aCBjYWxjdWxhdGlvbiBvZiBNUlAgdGVzdCBwYWNrZXRzIGluIHRoZSBicmlkZ2Ugc3Vic3lzdGVtLiBUaGUgY29kZSBpcyByZWFjaGFibGUgdmlhIG5ldGxpbmsgY29uZmlndXJhdGlvbiBvZiB0aGUgYnJpZGdlLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDIyOjI5PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgODk0MmZhODg3ZDIwZjQ0YzI3ZTZiYTAyMWJhNmRkYTc1YjZlMTNjMlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBTdW4gSnVsIDI2IDIyOjI5OjQ4IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL25ldC9icmlkZ2UvYnJfbXJwLmMgYi9uZXQvYnJpZGdlL2JyX21ycC5jXG5pbmRleCAzZjcxMjZhN2Q3MjAwMy4uMTc5ZDI0NzBiNzI0ODggMTAwNjQ0XG4tLS0gYS9uZXQvYnJpZGdlL2JyX21ycC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvYnJpZGdlL2JyX21ycC5jXG5AQCAtMjE1LDcgJiM0MzsyMTUsNyBAQCBzdGF0aWMgc3RydWN0IHNrX2J1ZmYgKmJyX21ycF9hbGxvY190ZXN0X3NrYihzdHJ1Y3QgYnJfbXJwICptcnAsXG4gXHRcdHN0cnVjdCBicl9tcnBfb3VpX2hkciAqb3VpID0gTlVMTDtcbiBcdFx0dTggbGVuZ3RoO1xuIFxuLVx0XHRsZW5ndGggPSBzaXplb2YoKnN1Yl9vcHQpICYjNDM7IHNpemVvZigqc3ViX3RsdikgJiM0Mzsgc2l6ZW9mKG91aSkgJiM0MztcbiYjNDM7XHRcdGxlbmd0aCA9IHNpemVvZigqc3ViX29wdCkgJiM0Mzsgc2l6ZW9mKCpzdWJfdGx2KSAmIzQzOyBzaXplb2YoKm91aSkgJiM0MztcbiBcdFx0XHRNUlBfT1BUX1BBRERJTkc7XG4gXHRcdGJyX21ycF9za2JfdGx2KHNrYiwgQlJfTVJQX1RMVl9IRUFERVJfT1BUSU9OLCBsZW5ndGgpO1xuIFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDIyOjI5PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtCUklER0UmIzM0OywKICAgICYjMzQ7QlJJREdFX01SUCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2JyX21ycF9zdGFydF90ZXN0JiMzNDssCiAgICAmIzM0O2JyX21ycF90ZXN0X3dvcmtfZXhwaXJlZCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIGZ1bmN0aW9uYWwgYnVnIGluIHRoZSBsZW5ndGggY2FsY3VsYXRpb24gb2YgTVJQIHRlc3QgcGFja2V0cyBpbiB0aGUgYnJpZGdlIHN1YnN5c3RlbS4gVGhlIGNvZGUgaXMgcmVhY2hhYmxlIHZpYSBuZXRsaW5rIGNvbmZpZ3VyYXRpb24gb2YgdGhlIGJyaWRnZS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDg5NDJmYTg4N2QyMGY0NGMyN2U2YmEwMjFiYTZkZGE3NWI2ZTEzYzIKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgU3VuIEp1bCAyNiAyMjoyOTo0OCAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL25ldC9icmlkZ2UvYnJfbXJwLmMgYi9uZXQvYnJpZGdlL2JyX21ycC5jCmluZGV4IDNmNzEyNmE3ZDcyMDAzLi4xNzlkMjQ3MGI3MjQ4OCAxMDA2NDQKLS0tIGEvbmV0L2JyaWRnZS9icl9tcnAuYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvYnJpZGdlL2JyX21ycC5jCkBAIC0yMTUsNyAmIzQzOzIxNSw3IEBAIHN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqYnJfbXJwX2FsbG9jX3Rlc3Rfc2tiKHN0cnVjdCBicl9tcnAgKm1ycCwKIAkJc3RydWN0IGJyX21ycF9vdWlfaGRyICpvdWkgPSBOVUxMOwogCQl1OCBsZW5ndGg7CiAKLQkJbGVuZ3RoID0gc2l6ZW9mKCpzdWJfb3B0KSAmIzQzOyBzaXplb2YoKnN1Yl90bHYpICYjNDM7IHNpemVvZihvdWkpICYjNDM7CiYjNDM7CQlsZW5ndGggPSBzaXplb2YoKnN1Yl9vcHQpICYjNDM7IHNpemVvZigqc3ViX3RsdikgJiM0Mzsgc2l6ZW9mKCpvdWkpICYjNDM7CiAJCQlNUlBfT1BUX1BBRERJTkc7CiAJCWJyX21ycF9za2JfdGx2KHNrYiwgQlJfTVJQX1RMVl9IRUFERVJfT1BUSU9OLCBsZW5ndGgpOwogCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDIyOjI5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIwOTIKCQkJCQkJCW91dHB1dDogNDEKCQkJCQkJCXRob3VnaHRzOiA5MwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB1bmRlcnN0YW5kaW5nLCBjb25zaWRlcmluZyBJJiMzOTttIHRoZSBvbmUgJiMzNDt0aGlua2luZyYjMzQ7IHRoaXM6CgoqKkFuYWx5emluZyBhIE5ldHdvcmsgQnJpZGdlIE1SUCBQYXRjaCoqCgpBbHJpZ2h0LCBJJiMzOTttIGxvb2tpbmcgYXQgYSBwYXRjaCB0aGF0JiMzOTtzIHRvdWNoaW5nIHRoZSBgYnJfbXJwLmNgIGZpbGUgd2l0aGluIHRoZSBgbmV0L2JyaWRnZWAgZGlyZWN0b3J5LiBTcGVjaWZpY2FsbHksIGl0JiMzOTtzIGEgbWlub3IgYnV0IHBvdGVudGlhbGx5IGltcGFjdGZ1bCBjaGFuZ2Ugd2l0aGluIHRoZSBgYnJfbXJwX2FsbG9jX3Rlc3Rfc2tiYCBmdW5jdGlvbi4gVGhlIHBhdGNoIGFkanVzdHMgYSBgc2l6ZW9mYCBjYWxjdWxhdGlvbi4gSW5zdGVhZCBvZiBjYWxjdWxhdGluZyB0aGUgc2l6ZSBvZiBgb3VpYCBkaXJlY3RseSwgaXQgbm93IHVzZXMgYHNpemVvZigqb3VpKWAuIFRoaXMgc2VlbXMgbGlrZSBhIHRleHRib29rIGZpeCBmb3IgYSBjb21tb24gQyBwaXRmYWxsLCB0aGUgY2xhc3NpYyAmIzM0O3BvaW50ZXIgdnMuIHN0cnVjdHVyZSYjMzQ7IHNpemUgZGlzY3JlcGFuY3kuIEl0IGxvb2tzIGxpa2UgdGhlIG9yaWdpbmFsIGNvZGUgd2FzIGxpa2VseSB1c2luZyB0aGUgc2l6ZSBvZiBhIHBvaW50ZXIgdG8gYG91aWAgd2hlbiBpdCBzaG91bGQgaGF2ZSBiZWVuIHVzaW5nIHRoZSBzaXplIG9mIHRoZSAqc3RydWN0dXJlKiBwb2ludGVkIHRvIGJ5IGBvdWlgLiBUaGlzIGluZGljYXRlcyBhIGJ1ZyBpbiB0aGUgbGVuZ3RoIGNhbGN1bGF0aW9uLCBhbmQgdGhhdCB0aGlzIHBhdGNoIGlzIGNvcnJlY3RpbmcgaXQgdG8gbWFrZSB0aGUgY29kZSBmdW5jdGlvbiBhcyBpbnRlbmRlZC4gTm93LCBsZXQgbWUgZGVsdmUgaW50byB0aGUgY29kZSB0byBjaGVjayBleGFjdGx5IGhvdyBgYnJfbXJwX2FsbG9jX3Rlc3Rfc2tiYCB3b3JrcywgYW5kIHdoZXJlIGl0IGdldHMgY2FsbGVkIHdpdGhpbiB0aGUgYnJvYWRlciBmcmFtZXdvcmsuIEkmIzM5O20gZXNwZWNpYWxseSBpbnRlcmVzdGVkIGluIGhvdyB0aGlzIHNpemUgY2FsY3VsYXRpb24gYWZmZWN0cyB0aGUgYWxsb2NhdGlvbiBvZiB0aGUgU29ja2V0IEJ1ZmZlciAoYHNrYmApIGFuZCB3aGF0IGtpbmQgb2YgcG90ZW50aWFsIGVycm9ycyB0aGlzIGZpeCB3b3VsZCBoYXZlIGF2ZXJ0ZWQuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBmdW5jdGlvbiYjMzk7cyByZXNwb25zaWJpbGl0eSBhbmQgaXRzIHJlbGF0aW9uc2hpcCB0byB0aGUgc3Vycm91bmRpbmcgY29kZSB0byBncmFzcCB0aGUgdHJ1ZSBpbXBsaWNhdGlvbnMgb2YgdGhpcyBmaXguCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMjI6Mjk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7YnJfbXJwX2FsbG9jX3Rlc3Rfc2tiJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L2JyaWRnZS9icl9tcnAuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvYnJpZGdlL2JyX21ycC5jPTE3MT1zdGF0aWMgdm9pZCBicl9tcnBfc2tiX2NvbW1vbihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgYnJfbXJwICptcnApXG4tLVxubmV0L2JyaWRnZS9icl9tcnAuYy0xODEtXG5uZXQvYnJpZGdlL2JyX21ycC5jOjE4MjpzdGF0aWMgc3RydWN0IHNrX2J1ZmYgKmJyX21ycF9hbGxvY190ZXN0X3NrYihzdHJ1Y3QgYnJfbXJwICptcnAsXG5uZXQvYnJpZGdlL2JyX21ycC5jLTE4My1cdFx0XHRcdFx0ICAgICBzdHJ1Y3QgbmV0X2JyaWRnZV9wb3J0ICpwLFxuLS1cbm5ldC9icmlkZ2UvYnJfbXJwLmM9Mjc5PXN0YXRpYyB2b2lkIGJyX21ycF90ZXN0X3dvcmtfZXhwaXJlZChzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXG4tLVxubmV0L2JyaWRnZS9icl9tcnAuYy0zMTEtXHRcdGlmICghbXJwLVx1MDAzZXRlc3RfbW9uaXRvcikge1xubmV0L2JyaWRnZS9icl9tcnAuYzozMTI6XHRcdFx0c2tiID0gYnJfbXJwX2FsbG9jX3Rlc3Rfc2tiKG1ycCwgcCxcbm5ldC9icmlkZ2UvYnJfbXJwLmMtMzEzLVx0XHRcdFx0XHRcdCAgICBCUl9NUlBfUE9SVF9ST0xFX1BSSU1BUlkpO1xuLS1cbm5ldC9icmlkZ2UvYnJfbXJwLmMtMzI3LVx0XHRpZiAoIW1ycC1cdTAwM2V0ZXN0X21vbml0b3IpIHtcbm5ldC9icmlkZ2UvYnJfbXJwLmM6MzI4Olx0XHRcdHNrYiA9IGJyX21ycF9hbGxvY190ZXN0X3NrYihtcnAsIHAsXG5uZXQvYnJpZGdlL2JyX21ycC5jLTMyOS1cdFx0XHRcdFx0XHQgICAgQlJfTVJQX1BPUlRfUk9MRV9TRUNPTkRBUlkpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDIyOjI5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI4OTYKCQkJCQkJCW91dHB1dDogNDAKCQkJCQkJCXRob3VnaHRzOiA1MgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhbmFseXNpcyBvZiB0aGUgcHJvdmlkZWQgY29kZSBzbmlwcGV0OgoKKipEaXZpbmcgaW50byB0aGUgTVJQIEFsbG9jYXRpb24gVGVzdGluZyoqCgpPa2F5LCBzbyBgYnJfbXJwX2FsbG9jX3Rlc3Rfc2tiYCBpcyBnZXR0aW5nIGNhbGxlZCBmcm9tIGBicl9tcnBfdGVzdF93b3JrX2V4cGlyZWRgLiBUaGF0JiMzOTtzIHRoZSBrZXkgcmVsYXRpb25zaGlwIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhlcmUuIE15IGZpcnN0IGluc3RpbmN0IGlzIHRvIHRyYWNlIGJhY2sgYW5kIGZpZ3VyZSBvdXQgdGhlIHRpbWluZyBhbmQgY29udGV4dCBvZiB0aGUgbGF0dGVyLCBzcGVjaWZpY2FsbHkgaG93IGBicl9tcnBfdGVzdF93b3JrX2V4cGlyZWRgIGlzIHNjaGVkdWxlZC4gVW5kZXJzdGFuZGluZyAqd2hlbiogYW5kICp3aHkqIHRoaXMgZXhwaXJ5IHdvcmsgaXMgcnVubmluZyBpcyBjcnVjaWFsIHRvIGdyYXNwaW5nIHdoYXQgdGhlIGBicl9tcnBfYWxsb2NfdGVzdF9za2JgIGZ1bmN0aW9uIGlzIGFjdHVhbGx5IGRvaW5nIGluIHByYWN0aWNlLiBXaGF0JiMzOTtzIHRoZSBzY2hlZHVsaW5nIG1lY2hhbmlzbT8gSXMgaXQgYSB0aW1lciwgYSB3b3JrIHF1ZXVlLCBhbiBldmVudCB0cmlnZ2VyZWQgYnkgc29tZXRoaW5nIGVsc2U/IFRoZSBzY2hlZHVsaW5nIGlzIHdoZXJlIEkmIzM5O2xsIGZpbmQgdGhlIGNvbnN0cmFpbnRzLCB0aGUgdHJpZ2dlciBhbmQgdGhlIGludGVuZGVkIGJlaGF2aW91ciBvZiB0aGlzIGV4cGlyZWQgd29yayBmdW5jdGlvbi4gVGhhdCB3aWxsIHRlbGwgbWUgd2hhdCBjb25kaXRpb25zIGhhdmUgdG8gYmUgbWV0IGZvciB0aGUgYHNrYmAgYWxsb2NhdGlvbiB0ZXN0aW5nIHRvIGJlIGludm9rZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMjI6Mjk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7YnJfbXJwX3Rlc3Rfd29ya19leHBpcmVkJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L2JyaWRnZS9icl9tcnAuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvYnJpZGdlL2JyX21ycC5jPTIzOT1zdGF0aWMgc3RydWN0IHNrX2J1ZmYgKmJyX21ycF9hbGxvY19pbl90ZXN0X3NrYihzdHJ1Y3QgYnJfbXJwICptcnAsXG4tLVxubmV0L2JyaWRnZS9icl9tcnAuYy0yNzgtICovXG5uZXQvYnJpZGdlL2JyX21ycC5jOjI3OTpzdGF0aWMgdm9pZCBicl9tcnBfdGVzdF93b3JrX2V4cGlyZWQoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxubmV0L2JyaWRnZS9icl9tcnAuYy0yODAte1xuLS1cbm5ldC9icmlkZ2UvYnJfbXJwLmM9NDk3PWludCBicl9tcnBfYWRkKHN0cnVjdCBuZXRfYnJpZGdlICpiciwgc3RydWN0IGJyX21ycF9pbnN0YW5jZSAqaW5zdGFuY2UpXG4tLVxubmV0L2JyaWRnZS9icl9tcnAuYy01NDItXG5uZXQvYnJpZGdlL2JyX21ycC5jOjU0MzpcdElOSVRfREVMQVlFRF9XT1JLKFx1MDAyNm1ycC1cdTAwM2V0ZXN0X3dvcmssIGJyX21ycF90ZXN0X3dvcmtfZXhwaXJlZCk7XG5uZXQvYnJpZGdlL2JyX21ycC5jLTU0NC1cdElOSVRfREVMQVlFRF9XT1JLKFx1MDAyNm1ycC1cdTAwM2Vpbl90ZXN0X3dvcmssIGJyX21ycF9pbl90ZXN0X3dvcmtfZXhwaXJlZCk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMjI6Mjk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzQ3NAoJCQkJCQkJb3V0cHV0OiAzMAoJCQkJCQkJdGhvdWdodHM6IDMyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQmIzM5O3MgaW50ZXJuYWwgbW9ub2xvZ3VlOgoKKipJbnZlc3RpZ2F0aW5nIHRoZSBJbml0aWFsaXphdGlvbiBQcm9jZXNzKioKCkFscmlnaHQsIHNvIGBicl9tcnBfYWRkYCBpcyB0aGUga2V5IGZ1bmN0aW9uIHRoYXQga2lja3MgdGhpbmdzIG9mZiBoZXJlLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gemVybyBpbiBvbiB0aGF0LiBJdCYjMzk7cyB0aGUgc3RhcnRpbmcgcG9pbnQsIHNvIHVuZGVyc3RhbmRpbmcgaXRzIHJvbGUgYW5kIGhvdyBpdCYjMzk7cyBpbnZva2VkIGlzIGNydWNpYWwgZm9yIGEgY29tcGxldGUgcGljdHVyZS4gTGV0JiMzOTtzIGRlbHZlIGludG8gdGhlIGZ1bmN0aW9uIGl0c2VsZiBhbmQgdHJhY2UgaXRzIGNhbGxzIHRvIGdldCBhIGdyaXAgb24gdGhlIG92ZXJhbGwgZmxvdy4gTmVlZCB0byB1bmRlcnN0YW5kIHRoZSBlbnRyeSBwb2ludCBiZWZvcmUgYW55dGhpbmcgZWxzZSwgc28gYGJyX21ycF9hZGRgIGl0IGlzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDIyOjI5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2JyX21ycF9hZGQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvYnJpZGdlLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvYnJpZGdlL2JyX21ycC5jPTQyOD1zdGF0aWMgdm9pZCBicl9tcnBfZGVsX2ltcGwoc3RydWN0IG5ldF9icmlkZ2UgKmJyLCBzdHJ1Y3QgYnJfbXJwICptcnApXG4tLVxubmV0L2JyaWRnZS9icl9tcnAuYy00OTYtICovXG5uZXQvYnJpZGdlL2JyX21ycC5jOjQ5NzppbnQgYnJfbXJwX2FkZChzdHJ1Y3QgbmV0X2JyaWRnZSAqYnIsIHN0cnVjdCBicl9tcnBfaW5zdGFuY2UgKmluc3RhbmNlKVxubmV0L2JyaWRnZS9icl9tcnAuYy00OTgte1xuLS1cbm5ldC9icmlkZ2UvYnJfbXJwX25ldGxpbmsuYz0zMT1zdGF0aWMgaW50IGJyX21ycF9pbnN0YW5jZV9wYXJzZShzdHJ1Y3QgbmV0X2JyaWRnZSAqYnIsIHN0cnVjdCBubGF0dHIgKmF0dHIsXG4tLVxubmV0L2JyaWRnZS9icl9tcnBfbmV0bGluay5jLTYxLVx0aWYgKGNtZCA9PSBSVE1fU0VUTElOSylcbm5ldC9icmlkZ2UvYnJfbXJwX25ldGxpbmsuYzo2MjpcdFx0cmV0dXJuIGJyX21ycF9hZGQoYnIsIFx1MDAyNmluc3QpO1xubmV0L2JyaWRnZS9icl9tcnBfbmV0bGluay5jLTYzLVx0ZWxzZVxuLS1cbm5ldC9icmlkZ2UvYnJfcHJpdmF0ZV9tcnAuaD01OT1lbnVtIGJyX21ycF9od19zdXBwb3J0IHtcbi0tXG5uZXQvYnJpZGdlL2JyX3ByaXZhdGVfbXJwLmgtNjUtLyogYnJfbXJwLmMgKi9cbm5ldC9icmlkZ2UvYnJfcHJpdmF0ZV9tcnAuaDo2NjppbnQgYnJfbXJwX2FkZChzdHJ1Y3QgbmV0X2JyaWRnZSAqYnIsIHN0cnVjdCBicl9tcnBfaW5zdGFuY2UgKmluc3RhbmNlKTtcbm5ldC9icmlkZ2UvYnJfcHJpdmF0ZV9tcnAuaC02Ny1pbnQgYnJfbXJwX2RlbChzdHJ1Y3QgbmV0X2JyaWRnZSAqYnIsIHN0cnVjdCBicl9tcnBfaW5zdGFuY2UgKmluc3RhbmNlKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNiAyMjoyOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0MDYyCgkJCQkJCQlvdXRwdXQ6IDMyCgkJCQkJCQl0aG91Z2h0czogNDIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqQW5hbHl6aW5nIHRoZSBNUlAgSW5zdGFuY2UgUGFyc2luZyBpbiBCcmlkZ2UgTmV0bGluayoqCgpBbHJpZ2h0LCBzbyB0aGUgYnJlYWRjcnVtYiB0cmFpbCBzdGFydHMgd2l0aCBgYnJfbXJwX2luc3RhbmNlX3BhcnNlYCBpbiBgbmV0L2JyaWRnZS9icl9tcnBfbmV0bGluay5jYC4gVGhhdCBmdW5jdGlvbiBjYWxsIGltbWVkaWF0ZWx5IHBpcXVlcyBteSBpbnRlcmVzdC4gR2l2ZW4gdGhpcyBjb250ZXh0LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlIE1SUCBpbnN0YW5jZSBpcyBjb25maWd1cmVkLiBTcGVjaWZpY2FsbHksIEkmIzM5O20gdGhpbmtpbmcgYWJvdXQgdGhlIHJlbGV2YW50IGNvbmZpZ3VyYXRpb24gb3B0aW9ucyB0aGF0IGdvdmVybiB0aGlzIHBhcnRpY3VsYXIgcGFyc2luZyByb3V0aW5lLiBJIG5lZWQgdG8gdHJhY2sgZG93biB0aGUgY29uZmlndXJhdGlvbiBrbm9icyB0aGF0IGNvbnRyb2wgdGhlIGJlaGF2aW91ciBvZiB0aGlzIHNlY3Rpb24uIEkgd2lsbCBiZSBsb29raW5nIGluIHRoZSBLY29uZmlnIGZpbGVzLCBvciBwb3RlbnRpYWxseSBhdCBydW50aW1lIHVzaW5nIHN5c2ZzLiBUaGlzIGlzIHdoZXJlIEkmIzM5O2xsIGZpbmQgbXkgYW5zd2Vycy4gTm93IEkgbmVlZCB0byBrbm93IHdoZXJlIHRoZSBjb25maWcgb3B0aW9uIGxpdmVzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNiAyMjozMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2JyX21ycF9hZGQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvYnJpZGdlL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNiAyMjozMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0MzEzCgkJCQkJCQlvdXRwdXQ6IDI3CgkJCQkJCQl0aG91Z2h0czogMTUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgc3VtbWFyeSwgcHJlc2VudGVkIGFzIGEgc3RyZWFtIG9mIHRob3VnaHQ6CgoqKkNoZWNraW5nIHRoZSBNUlAgQ29uZmlndXJhdGlvbiBpbiB0aGUgS2VybmVsKioKCkFscmlnaHQsIHRpbWUgdG8gZ2V0IHRoaXMgc29ydGVkLiBJIG5lZWQgdG8gcmVmcmVzaCBteSBtZW1vcnkgb24gdGhlIE1SUCBjb25maWd1cmF0aW9uIG9wdGlvbnMgd2l0aGluIHRoZSBrZXJuZWwuIExldCYjMzk7cyBzdGFydCBieSBsb29raW5nIGF0IHRoZSBLY29uZmlnIGZpbGUgZm9yIHRoZSBicmlkZ2Ugc3Vic3lzdGVtLiBTcGVjaWZpY2FsbHksIGBuZXQvYnJpZGdlL0tjb25maWdgIHNob3VsZCBob2xkIHRoZSByZWxldmFudCBkZWZpbml0aW9ucy4gVGhhdCYjMzk7cyB0aGUgbG9naWNhbCBwbGFjZSB0byBmaW5kIHRoZSBib29sZWFuIGNob2ljZXMsIGRlcGVuZGVuY2llcywgYW5kIGRlZmF1bHQgc2V0dGluZ3MgcmVsYXRlZCB0byBNUlAgKE11bHRpY2FzdCBSb3V0ZXIgUHJvdG9jb2wpLiBUaGlzIGZpbGUgdXN1YWxseSBwcm92aWRlcyBhIGdvb2Qgb3ZlcnZpZXcgb2Ygd2hhdCYjMzk7cyBzdXBwb3J0ZWQgYW5kIGhvdyBpdCYjMzk7cyBlbmFibGVkIGluIHRoZSBrZXJuZWwgYnVpbGQgcHJvY2Vzcy4gSSYjMzk7bGwgbmVlZCB0byBjb25maXJtIGlmIGl0JiMzOTtzIHRoZXJlLCBhbmQgdGhlbiB1bmRlcnN0YW5kIGl0cyBjdXJyZW50IHNldHRpbmdzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNiAyMjozMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtNUlAmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvYnJpZGdlL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L2JyaWRnZS9LY29uZmlnPTUwPWNvbmZpZyBCUklER0VfVkxBTl9GSUxURVJJTkdcbi0tXG5uZXQvYnJpZGdlL0tjb25maWctNjMtXG5uZXQvYnJpZGdlL0tjb25maWc6NjQ6Y29uZmlnIEJSSURHRV9NUlBcbm5ldC9icmlkZ2UvS2NvbmZpZzo2NTpcdGJvb2wgXCYjMzQ7TVJQIHByb3RvY29sXCYjMzQ7XG5uZXQvYnJpZGdlL0tjb25maWctNjYtXHRkZXBlbmRzIG9uIEJSSURHRVxuLS1cbm5ldC9icmlkZ2UvS2NvbmZpZy02OC1cdGhlbHBcbm5ldC9icmlkZ2UvS2NvbmZpZzo2OTpcdCAgSWYgeW91IHNheSBZIGhlcmUsIHRoZW4gdGhlIEV0aGVybmV0IGJyaWRnZSB3aWxsIGJlIGFibGUgdG8gcnVuIE1SUFxubmV0L2JyaWRnZS9LY29uZmlnLTcwLVx0ICBwcm90b2NvbCB0byBkZXRlY3QgbG9vcHNcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMjI6MzA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDY1OAoJCQkJCQkJb3V0cHV0OiAzMwoJCQkJCQkJdGhvdWdodHM6IDcyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGFuYWx5c2lzIG9mIHRoZSBzaXR1YXRpb246CgoqKkludmVzdGlnYXRpbmcgdGhlIE1SUCBCcmlkZ2luZyBDb25maWd1cmF0aW9uKioKCk9rYXksIHNvIHdlJiMzOTtyZSBsb29raW5nIGF0IGEgY29uZmlndXJhdGlvbiBzcGVjaWZpY2FsbHkgZGVzaWduYXRlZCBhcyBgQlJJREdFX01SUGAuIE15IGluaXRpYWwgZm9jdXMgaXMgb24gdW5kZXJzdGFuZGluZyB0aGUgdGVzdCB3b3JrIG1lY2hhbmlzbSB3aXRoaW4gdGhpcyBicmlkZ2luZyBjb250ZXh0LiBJIG5lZWQgdG8gemVybyBpbiBvbiBob3cgdGhlIE1SUCAoTXVsdGljYXN0IFJlZ2lzdHJhdGlvbiBQcm90b2NvbCkgdGVzdHMgYXJlIGluaXRpYXRlZCBhbmQgbWFuYWdlZC4KCkkgbmVlZCB0byBkaWcgaW50byB0aGUgcmVsZXZhbnQgZnVuY3Rpb25zLiBCYXNlZCBvbiB0aGUgY2x1ZXMsIEkmIzM5O2xsIGJlIGNvbmNlbnRyYXRpbmcgb24gZWl0aGVyIGBicl9tcnBfYWxsb2NfdGVzdF9za2JgLCB3aGljaCBwcm9iYWJseSBpbnZvbHZlcyBhbGxvY2F0aW5nIHRoZSB0ZXN0IHNrYiAoc29ja2V0IGJ1ZmZlcikgdGhhdCB0aGUgdGVzdCB3b3JrIHdpbGwgdXNlLCBvciBgYnJfbXJwX3Rlc3Rfd29ya19leHBpcmVkYCwgc3VnZ2VzdGluZyBzb21ldGhpbmcgYWJvdXQgaGFuZGxpbmcgdGltZW91dHMuIGBicl9tcnBfYWRkYCBpcyBhbHNvIGEgcGxheWVyLCBsaWtlbHkgcmVsYXRlZCB0byBhZGRpbmcgZW50cmllcyB0byB0aGUgTVJQLiBBbmQsIG9mIGNvdXJzZSwgdGhlIGtleSBpbml0aWF0b3IsIGBicl9tcnBfc3RhcnRfdGVzdGAsIHNlZW1zIGNyaXRpY2FsLCBpdCYjMzk7cyB0aGUgb2J2aW91cyBlbnRyeSBwb2ludCB0byB0cmFjZSwgYXMgaXQgc2hvdWxkIGJlIGtpY2tpbmcgb2ZmIHRoZSB3aG9sZSB0ZXN0aW5nIHByb2Nlc3MuIE15IGdvYWwgaXMgdG8gZmlndXJlIG91dCBleGFjdGx5ICp3aGF0KiBmdW5jdGlvbiBvciBldmVudCAqc3RhcnRzKiB0aGlzIHRlc3Qgd29yay4gVGhhdCYjMzk7cyB0aGUga2V5IHRvIHVuZGVyc3RhbmRpbmcgdGhlIGNvbnRyb2wgZmxvdyBhbmQgcG90ZW50aWFsIHByb2JsZW1zLiBJIG5lZWQgdG8gcGlucG9pbnQgdGhhdCBzdGFydGluZyBwb2ludC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMjI6MzA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7dGVzdF93b3JrJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L2JyaWRnZS9icl9tcnAuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvYnJpZGdlL2JyX21ycC5jPTIzOT1zdGF0aWMgc3RydWN0IHNrX2J1ZmYgKmJyX21ycF9hbGxvY19pbl90ZXN0X3NrYihzdHJ1Y3QgYnJfbXJwICptcnAsXG4tLVxubmV0L2JyaWRnZS9icl9tcnAuYy0yNzgtICovXG5uZXQvYnJpZGdlL2JyX21ycC5jOjI3OTpzdGF0aWMgdm9pZCBicl9tcnBfdGVzdF93b3JrX2V4cGlyZWQoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxubmV0L2JyaWRnZS9icl9tcnAuYy0yODAte1xubmV0L2JyaWRnZS9icl9tcnAuYy0yODEtXHRzdHJ1Y3QgZGVsYXllZF93b3JrICpkZWxfd29yayA9IHRvX2RlbGF5ZWRfd29yayh3b3JrKTtcbm5ldC9icmlkZ2UvYnJfbXJwLmM6MjgyOlx0c3RydWN0IGJyX21ycCAqbXJwID0gY29udGFpbmVyX29mKGRlbF93b3JrLCBzdHJ1Y3QgYnJfbXJwLCB0ZXN0X3dvcmspO1xubmV0L2JyaWRnZS9icl9tcnAuYy0yODMtXHRzdHJ1Y3QgbmV0X2JyaWRnZV9wb3J0ICpwO1xuLS1cbm5ldC9icmlkZ2UvYnJfbXJwLmMtMzQzLVxubmV0L2JyaWRnZS9icl9tcnAuYzozNDQ6XHRxdWV1ZV9kZWxheWVkX3dvcmsoc3lzdGVtX3BlcmNwdV93cSwgXHUwMDI2bXJwLVx1MDAzZXRlc3Rfd29yayxcbm5ldC9icmlkZ2UvYnJfbXJwLmMtMzQ1LVx0XHRcdCAgIHVzZWNzX3RvX2ppZmZpZXMobXJwLVx1MDAzZXRlc3RfaW50ZXJ2YWwpKTtcbi0tXG5uZXQvYnJpZGdlL2JyX21ycC5jLTM1MS0gKi9cbm5ldC9icmlkZ2UvYnJfbXJwLmM6MzUyOnN0YXRpYyB2b2lkIGJyX21ycF9pbl90ZXN0X3dvcmtfZXhwaXJlZChzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXG5uZXQvYnJpZGdlL2JyX21ycC5jLTM1My17XG5uZXQvYnJpZGdlL2JyX21ycC5jLTM1NC1cdHN0cnVjdCBkZWxheWVkX3dvcmsgKmRlbF93b3JrID0gdG9fZGVsYXllZF93b3JrKHdvcmspO1xubmV0L2JyaWRnZS9icl9tcnAuYzozNTU6XHRzdHJ1Y3QgYnJfbXJwICptcnAgPSBjb250YWluZXJfb2YoZGVsX3dvcmssIHN0cnVjdCBicl9tcnAsIGluX3Rlc3Rfd29yayk7XG5uZXQvYnJpZGdlL2JyX21ycC5jLTM1Ni1cdHN0cnVjdCBuZXRfYnJpZGdlX3BvcnQgKnA7XG4tLVxubmV0L2JyaWRnZS9icl9tcnAuYy00MjAtXG5uZXQvYnJpZGdlL2JyX21ycC5jOjQyMTpcdHF1ZXVlX2RlbGF5ZWRfd29yayhzeXN0ZW1fcGVyY3B1X3dxLCBcdTAwMjZtcnAtXHUwMDNlaW5fdGVzdF93b3JrLFxubmV0L2JyaWRnZS9icl9tcnAuYy00MjItXHRcdFx0ICAgdXNlY3NfdG9famlmZmllcyhtcnAtXHUwMDNlaW5fdGVzdF9pbnRlcnZhbCkpO1xuLS1cbm5ldC9icmlkZ2UvYnJfbXJwLmM9NDI4PXN0YXRpYyB2b2lkIGJyX21ycF9kZWxfaW1wbChzdHJ1Y3QgbmV0X2JyaWRnZSAqYnIsIHN0cnVjdCBicl9tcnAgKm1ycClcbi0tXG5uZXQvYnJpZGdlL2JyX21ycC5jLTQzMy1cdC8qIFN0b3Agc2VuZGluZyBNUlBfVGVzdCBmcmFtZXMgKi9cbm5ldC9icmlkZ2UvYnJfbXJwLmM6NDM0Olx0Y2FuY2VsX2RlbGF5ZWRfd29ya19zeW5jKFx1MDAyNm1ycC1cdTAwM2V0ZXN0X3dvcmspO1xubmV0L2JyaWRnZS9icl9tcnAuYy00MzUtXHRicl9tcnBfc3dpdGNoZGV2X3NlbmRfcmluZ190ZXN0KGJyLCBtcnAsIDAsIDAsIDAsIDApO1xuLS1cbm5ldC9icmlkZ2UvYnJfbXJwLmMtNDM3LVx0LyogU3RvcCBzZW5kaW5nIE1SUF9JblRlc3QgZnJhbWVzIGlmIGhhcyBhbiBpbnRlcmNvbm5lY3Qgcm9sZSAqL1xubmV0L2JyaWRnZS9icl9tcnAuYzo0Mzg6XHRjYW5jZWxfZGVsYXllZF93b3JrX3N5bmMoXHUwMDI2bXJwLVx1MDAzZWluX3Rlc3Rfd29yayk7XG5uZXQvYnJpZGdlL2JyX21ycC5jLTQzOS1cdGJyX21ycF9zd2l0Y2hkZXZfc2VuZF9pbl90ZXN0KGJyLCBtcnAsIDAsIDAsIDApO1xuLS1cbm5ldC9icmlkZ2UvYnJfbXJwLmM9NDk3PWludCBicl9tcnBfYWRkKHN0cnVjdCBuZXRfYnJpZGdlICpiciwgc3RydWN0IGJyX21ycF9pbnN0YW5jZSAqaW5zdGFuY2UpXG4tLVxubmV0L2JyaWRnZS9icl9tcnAuYy01NDItXG5uZXQvYnJpZGdlL2JyX21ycC5jOjU0MzpcdElOSVRfREVMQVlFRF9XT1JLKFx1MDAyNm1ycC1cdTAwM2V0ZXN0X3dvcmssIGJyX21ycF90ZXN0X3dvcmtfZXhwaXJlZCk7XG5uZXQvYnJpZGdlL2JyX21ycC5jOjU0NDpcdElOSVRfREVMQVlFRF9XT1JLKFx1MDAyNm1ycC1cdTAwM2Vpbl90ZXN0X3dvcmssIGJyX21ycF9pbl90ZXN0X3dvcmtfZXhwaXJlZCk7XG5uZXQvYnJpZGdlL2JyX21ycC5jLTU0NS1cdGhsaXN0X2FkZF90YWlsX3JjdShcdTAwMjZtcnAtXHUwMDNlbGlzdCwgXHUwMDI2YnItXHUwMDNlbXJwX2xpc3QpO1xuLS1cbm5ldC9icmlkZ2UvYnJfbXJwLmM9NzAyPWludCBicl9tcnBfc3RhcnRfdGVzdChzdHJ1Y3QgbmV0X2JyaWRnZSAqYnIsXG4tLVxubmV0L2JyaWRnZS9icl9tcnAuYy03MjctXHRtcnAtXHUwMDNldGVzdF9jb3VudF9taXNzID0gMDtcbm5ldC9icmlkZ2UvYnJfbXJwLmM6NzI4Olx0cXVldWVfZGVsYXllZF93b3JrKHN5c3RlbV9wZXJjcHVfd3EsIFx1MDAyNm1ycC1cdTAwM2V0ZXN0X3dvcmssXG5uZXQvYnJpZGdlL2JyX21ycC5jLTcyOS1cdFx0XHQgICB1c2Vjc190b19qaWZmaWVzKHRlc3QtXHUwMDNlaW50ZXJ2YWwpKTtcbi0tXG5uZXQvYnJpZGdlL2JyX21ycC5jPTc1OD1pbnQgYnJfbXJwX3NldF9pbl9yb2xlKHN0cnVjdCBuZXRfYnJpZGdlICpiciwgc3RydWN0IGJyX21ycF9pbl9yb2xlICpyb2xlKVxuLS1cbm5ldC9icmlkZ2UvYnJfbXJwLmMtNzc4LVx0XHQvKiBTdG9wIHRoZSBnZW5lcmF0aW5nIE1SUF9JblRlc3QgZnJhbWVzICovXG5uZXQvYnJpZGdlL2JyX21ycC5jOjc3OTpcdFx0Y2FuY2VsX2RlbGF5ZWRfd29ya19zeW5jKFx1MDAyNm1ycC1cdTAwM2Vpbl90ZXN0X3dvcmspO1xubmV0L2JyaWRnZS9icl9tcnAuYy03ODAtXHRcdGJyX21ycF9zd2l0Y2hkZXZfc2VuZF9pbl90ZXN0KGJyLCBtcnAsIDAsIDAsIDApO1xuLS1cbm5ldC9icmlkZ2UvYnJfbXJwLmM9ODQwPWludCBicl9tcnBfc3RhcnRfaW5fdGVzdChzdHJ1Y3QgbmV0X2JyaWRnZSAqYnIsXG4tLVxubmV0L2JyaWRnZS9icl9tcnAuYy04NjctXHRtcnAtXHUwMDNlaW5fdGVzdF9jb3VudF9taXNzID0gMDtcbm5ldC9icmlkZ2UvYnJfbXJwLmM6ODY4Olx0cXVldWVfZGVsYXllZF93b3JrKHN5c3RlbV9wZXJjcHVfd3EsIFx1MDAyNm1ycC1cdTAwM2Vpbl90ZXN0X3dvcmssXG5uZXQvYnJpZGdlL2JyX21ycC5jLTg2OS1cdFx0XHQgICB1c2Vjc190b19qaWZmaWVzKGluX3Rlc3QtXHUwMDNlaW50ZXJ2YWwpKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMjI6MzA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjUwMQoJCQkJCQkJb3V0cHV0OiAzMgoJCQkJCQkJdGhvdWdodHM6IDM0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRha2Ugb24gdGhlIHRob3VnaHQgcHJvY2VzcywgYXMgaWYgaXQgd2VyZSBteSBvd246CgoqKkluaXRpYWxpemluZyB0aGUgTVJQIFRlc3QqKgoKT2theSwgc28gd2UmIzM5O3JlIGtpY2tpbmcgdGhpbmdzIG9mZiB3aXRoIGBicl9tcnBfc3RhcnRfdGVzdGAuIFRoYXQmIzM5O3Mgb3VyIGVudHJ5IHBvaW50IGZvciB0aGlzIHRlc3QgcnVuLiBOb3csIG15IGltbWVkaWF0ZSBpbnN0aW5jdCBpcyB0byB0cmFjZSBiYWNrIGl0cyBleGVjdXRpb24uIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjYWxsaW5nIGNvbnRleHQuIExldCYjMzk7cyBzZWUgZXhhY3RseSB3aGVyZSBgYnJfbXJwX3N0YXJ0X3Rlc3RgIGlzIGludm9rZWQuIFVuZGVyc3RhbmRpbmcgdGhlIGNhbGxpbmcgZnVuY3Rpb24ocykgaXMgY3J1Y2lhbCBmb3IgdW5kZXJzdGFuZGluZyB0aGUgb3ZlcmFsbCBmbG93IGFuZCBwb3RlbnRpYWwgZGVwZW5kZW5jaWVzIG9mIHRoZSB0ZXN0LiBJIHdhbnQgdG8gc2VlICpob3cqIHRoaXMgdGVzdCBpcyBiZWluZyBpbml0aWF0ZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDIyOjMwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2JyX21ycF9zdGFydF90ZXN0JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L2JyaWRnZS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L2JyaWRnZS9icl9tcnAuYz02NzE9aW50IGJyX21ycF9zZXRfcmluZ19yb2xlKHN0cnVjdCBuZXRfYnJpZGdlICpicixcbi0tXG5uZXQvYnJpZGdlL2JyX21ycC5jLTcwMS0gKi9cbm5ldC9icmlkZ2UvYnJfbXJwLmM6NzAyOmludCBicl9tcnBfc3RhcnRfdGVzdChzdHJ1Y3QgbmV0X2JyaWRnZSAqYnIsXG5uZXQvYnJpZGdlL2JyX21ycC5jOjcwMzpcdFx0ICAgICAgc3RydWN0IGJyX21ycF9zdGFydF90ZXN0ICp0ZXN0KVxubmV0L2JyaWRnZS9icl9tcnAuYy03MDQte1xuLS1cbm5ldC9icmlkZ2UvYnJfbXJwX25ldGxpbmsuYz0xOTU9c3RhdGljIGNvbnN0IHN0cnVjdCBubGFfcG9saWN5XG5uZXQvYnJpZGdlL2JyX21ycF9uZXRsaW5rLmM6MTk2OmJyX21ycF9zdGFydF90ZXN0X3BvbGljeVtJRkxBX0JSSURHRV9NUlBfU1RBUlRfVEVTVF9NQVggJiM0MzsgMV0gPSB7XG5uZXQvYnJpZGdlL2JyX21ycF9uZXRsaW5rLmMtMTk3LVx0W0lGTEFfQlJJREdFX01SUF9TVEFSVF9URVNUX1VOU1BFQ11cdD0geyAudHlwZSA9IE5MQV9SRUpFQ1QgfSxcbi0tXG5uZXQvYnJpZGdlL2JyX21ycF9uZXRsaW5rLmMtMjA0LVxubmV0L2JyaWRnZS9icl9tcnBfbmV0bGluay5jOjIwNTpzdGF0aWMgaW50IGJyX21ycF9zdGFydF90ZXN0X3BhcnNlKHN0cnVjdCBuZXRfYnJpZGdlICpiciwgc3RydWN0IG5sYXR0ciAqYXR0cixcbm5ldC9icmlkZ2UvYnJfbXJwX25ldGxpbmsuYy0yMDYtXHRcdFx0XHQgICBzdHJ1Y3QgbmV0bGlua19leHRfYWNrICpleHRhY2spXG4tLVxubmV0L2JyaWRnZS9icl9tcnBfbmV0bGluay5jLTIwOC1cdHN0cnVjdCBubGF0dHIgKnRiW0lGTEFfQlJJREdFX01SUF9TVEFSVF9URVNUX01BWCAmIzQzOyAxXTtcbm5ldC9icmlkZ2UvYnJfbXJwX25ldGxpbmsuYzoyMDk6XHRzdHJ1Y3QgYnJfbXJwX3N0YXJ0X3Rlc3QgdGVzdDtcbm5ldC9icmlkZ2UvYnJfbXJwX25ldGxpbmsuYy0yMTAtXHRpbnQgZXJyO1xuLS1cbm5ldC9icmlkZ2UvYnJfbXJwX25ldGxpbmsuYy0yMTItXHRlcnIgPSBubGFfcGFyc2VfbmVzdGVkKHRiLCBJRkxBX0JSSURHRV9NUlBfU1RBUlRfVEVTVF9NQVgsIGF0dHIsXG5uZXQvYnJpZGdlL2JyX21ycF9uZXRsaW5rLmM6MjEzOlx0XHRcdCAgICAgICBicl9tcnBfc3RhcnRfdGVzdF9wb2xpY3ksIGV4dGFjayk7XG5uZXQvYnJpZGdlL2JyX21ycF9uZXRsaW5rLmMtMjE0LVx0aWYgKGVycilcbi0tXG5uZXQvYnJpZGdlL2JyX21ycF9uZXRsaW5rLmMtMjM3LVxubmV0L2JyaWRnZS9icl9tcnBfbmV0bGluay5jOjIzODpcdHJldHVybiBicl9tcnBfc3RhcnRfdGVzdChiciwgXHUwMDI2dGVzdCk7XG5uZXQvYnJpZGdlL2JyX21ycF9uZXRsaW5rLmMtMjM5LX1cbi0tXG5uZXQvYnJpZGdlL2JyX21ycF9uZXRsaW5rLmM9MzU2PWludCBicl9tcnBfcGFyc2Uoc3RydWN0IG5ldF9icmlkZ2UgKmJyLCBzdHJ1Y3QgbmV0X2JyaWRnZV9wb3J0ICpwLFxuLS1cbm5ldC9icmlkZ2UvYnJfbXJwX25ldGxpbmsuYy00MTQtXHRpZiAodGJbSUZMQV9CUklER0VfTVJQX1NUQVJUX1RFU1RdKSB7XG5uZXQvYnJpZGdlL2JyX21ycF9uZXRsaW5rLmM6NDE1Olx0XHRlcnIgPSBicl9tcnBfc3RhcnRfdGVzdF9wYXJzZShicixcbm5ldC9icmlkZ2UvYnJfbXJwX25ldGxpbmsuYy00MTYtXHRcdFx0XHRcdCAgICAgIHRiW0lGTEFfQlJJREdFX01SUF9TVEFSVF9URVNUXSxcbi0tXG5uZXQvYnJpZGdlL2JyX3ByaXZhdGVfbXJwLmg9NzQ9aW50IGJyX21ycF9zZXRfcmluZ19yb2xlKHN0cnVjdCBuZXRfYnJpZGdlICpiciwgc3RydWN0IGJyX21ycF9yaW5nX3JvbGUgKnJvbGUpO1xubmV0L2JyaWRnZS9icl9wcml2YXRlX21ycC5oOjc1OmludCBicl9tcnBfc3RhcnRfdGVzdChzdHJ1Y3QgbmV0X2JyaWRnZSAqYnIsIHN0cnVjdCBicl9tcnBfc3RhcnRfdGVzdCAqdGVzdCk7XG5uZXQvYnJpZGdlL2JyX3ByaXZhdGVfbXJwLmgtNzYtaW50IGJyX21ycF9zZXRfaW5fc3RhdGUoc3RydWN0IG5ldF9icmlkZ2UgKmJyLCBzdHJ1Y3QgYnJfbXJwX2luX3N0YXRlICpzdGF0ZSk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDIyOjMwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDc2NDAKCQkJCQkJCW91dHB1dDogNDEKCQkJCQkJCXRob3VnaHRzOiAxODIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBCdWcgaW4gdGhlIEJyaWRnZSBNUlAgVGVzdCBDb2RlKioKCk9rYXksIHNvIEkmIzM5O20gZGlnZ2luZyBpbnRvIHRoaXMgYnVnLiBJdCBsb29rcyBsaWtlIHRoZSBuZXRsaW5rIGVudHJ5IHBvaW50IGZvciB0aGlzIHdob2xlIE1SUCB0ZXN0IHByb2Nlc3MgaXMgYGJyX21ycF9zdGFydF90ZXN0YC4gVGhlIHJvb3Qgb2YgdGhlIHByb2JsZW0gc2VlbXMgdG8gYmUgd2l0aGluIGBicl9tcnBfYWxsb2NfdGVzdF9za2JgLiBUaGF0IGZ1bmN0aW9uIGlzIGNhbGxlZCBieSBgYnJfbXJwX3Rlc3Rfd29ya19leHBpcmVkYCwgd2hpY2gsIGluIHR1cm4sIGlzIHNjaGVkdWxlZCBieSBgYnJfbXJwX3N0YXJ0X3Rlc3RgLiBTZWVtcyBsaWtlIHRoZSBmaXggaXRzZWxmIGFkZHJlc3NlcyBhIHNpemUgY2FsY3VsYXRpb24gaXNzdWUsIHB1cmVseSBmdW5jdGlvbmFsLgoKTm93LCBhIGNydWNpYWwgcXVlc3Rpb24g4oCTIGlzIHRoaXMgY29kZSBwYXRoIGV2ZW4gKnJlYWNoYWJsZSogaW4gYSBRRU1VIGVudmlyb25tZW50PyBZZXMsIHRoYW5rZnVsbHksIGl0JiMzOTtzIHBhcnQgb2YgdGhlIGJyaWRnZSBtb2R1bGUuIFNpbmNlIHRoYXQmIzM5O3MgZW50aXJlbHkgc29mdHdhcmUtYmFzZWQsIHRoZXJlIHNob3VsZG4mIzM5O3QgYmUgYW55IGhhcmR3YXJlIGRlcGVuZGVuY2llcyBibG9ja2luZyB1cy4gSSBjYW4gZGVmaW5pdGVseSByZXByb2R1Y2UgdGhpcy4KClRoZSBjb25maWd1cmF0aW9uIG9wdGlvbiB0byBlbmFibGUgYWxsIHRoaXMgaXMgYEJSSURHRV9NUlBgLCB3aGljaCBJJiMzOTtsbCBrZWVwIGluIG1pbmQgZm9yIHNldHVwLgoKUmVnYXJkaW5nIHN5bWJvbHMsIEkgbmVlZCB0byBmb2N1cyBvbiBgYnJfbXJwX3N0YXJ0X3Rlc3RgLCBvYnZpb3VzbHksIGFuZCB0aGVuIGFsc28gYGJyX21ycF90ZXN0X3dvcmtfZXhwaXJlZGAgYmVjYXVzZSBpdCBpcyB0aGUgZnVuY3Rpb24gdGhhdCBzY2hlZHVsZXMgYGJyX21ycF9hbGxvY190ZXN0X3NrYmAuIEkmIzM5O2xsIGhhdmUgdG8gaW52ZXN0aWdhdGUgaWYgYGJyX21ycF9hbGxvY190ZXN0X3NrYmAgaXMgc3RhdGljIG9yIHBvdGVudGlhbGx5IGlubGluZWQgYnkgdGhlIGNvbXBpbGVyLiBJZiBpdCYjMzk7cyAqbm90KiBpbmxpbmVkLCB0aGVuIEkmIzM5O2xsIGRlZmluaXRlbHkgbmVlZCB0byBleGFtaW5lIGl0IG1vcmUgY2xvc2VseS4gV2FpdCwgaXQgKmlzKiBzdGF0aWM7IEkgbmVlZCB0byB2ZXJpZnkgdGhhdCBpdCYjMzk7cyBub3QgYmVpbmcgaW5saW5lZCB0byBlbnN1cmUgcHJvcGVyIGRlYnVnZ2luZy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMjI6MzA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7YnJfbXJwX2FsbG9jX3Rlc3Rfc2tiJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L2JyaWRnZS9icl9tcnAuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvYnJpZGdlL2JyX21ycC5jPTE3MT1zdGF0aWMgdm9pZCBicl9tcnBfc2tiX2NvbW1vbihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgYnJfbXJwICptcnApXG4tLVxubmV0L2JyaWRnZS9icl9tcnAuYy0xODEtXG5uZXQvYnJpZGdlL2JyX21ycC5jOjE4MjpzdGF0aWMgc3RydWN0IHNrX2J1ZmYgKmJyX21ycF9hbGxvY190ZXN0X3NrYihzdHJ1Y3QgYnJfbXJwICptcnAsXG5uZXQvYnJpZGdlL2JyX21ycC5jLTE4My1cdFx0XHRcdFx0ICAgICBzdHJ1Y3QgbmV0X2JyaWRnZV9wb3J0ICpwLFxuLS1cbm5ldC9icmlkZ2UvYnJfbXJwLmM9Mjc5PXN0YXRpYyB2b2lkIGJyX21ycF90ZXN0X3dvcmtfZXhwaXJlZChzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXG4tLVxubmV0L2JyaWRnZS9icl9tcnAuYy0zMTEtXHRcdGlmICghbXJwLVx1MDAzZXRlc3RfbW9uaXRvcikge1xubmV0L2JyaWRnZS9icl9tcnAuYzozMTI6XHRcdFx0c2tiID0gYnJfbXJwX2FsbG9jX3Rlc3Rfc2tiKG1ycCwgcCxcbm5ldC9icmlkZ2UvYnJfbXJwLmMtMzEzLVx0XHRcdFx0XHRcdCAgICBCUl9NUlBfUE9SVF9ST0xFX1BSSU1BUlkpO1xuLS1cbm5ldC9icmlkZ2UvYnJfbXJwLmMtMzI3LVx0XHRpZiAoIW1ycC1cdTAwM2V0ZXN0X21vbml0b3IpIHtcbm5ldC9icmlkZ2UvYnJfbXJwLmM6MzI4Olx0XHRcdHNrYiA9IGJyX21ycF9hbGxvY190ZXN0X3NrYihtcnAsIHAsXG5uZXQvYnJpZGdlL2JyX21ycC5jLTMyOS1cdFx0XHRcdFx0XHQgICAgQlJfTVJQX1BPUlRfUk9MRV9TRUNPTkRBUlkpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNiAyMjozMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4NTcyCgkJCQkJCQlvdXRwdXQ6IDM4CgkJCQkJCQl0aG91Z2h0czogMTMxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgYGJyX21ycGAgQ29kZSoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBgYnJfbXJwYCBjb2RlLiBGaXJzdCB0aGluZyB0aGF0IGp1bXBzIG91dCBpcyBgYnJfbXJwX2FsbG9jX3Rlc3Rfc2tiYC4gU2luY2UgaXQmIzM5O3Mgc3RhdGljLCB0aGVyZSYjMzk7cyBhIGdvb2QgY2hhbmNlIHRoZSBjb21waWxlciB3aWxsIGp1c3QgaW5saW5lIGl0LiBUaGF0JiMzOTtzIG5vdCB3aGVyZSBJIHdhbnQgdG8gZm9jdXMsIHNvIGxldCYjMzk7cyBtb3ZlIG9uLgoKTm93LCBteSBhdHRlbnRpb24mIzM5O3Mgb24gYGJyX21ycF90ZXN0X3dvcmtfZXhwaXJlZGAgYW5kIGBicl9tcnBfc3RhcnRfdGVzdGAuIGBicl9tcnBfdGVzdF93b3JrX2V4cGlyZWRgIGlzIGEgd29ya3F1ZXVlIGNhbGxiYWNrLCB3aGljaCBtZWFucyBpdCB3b24mIzM5O3QgYmUgaW5saW5lZC4gQW5kIGBicl9tcnBfc3RhcnRfdGVzdGAgaXMgZXhwb3J0ZWQsIHNvIGl0JiMzOTtzIGEgZ2xvYmFsIGZ1bmN0aW9uLiBTZWVtcyBsaWtlIGEgZ29vZCBwbGFjZSB0byBzdGFydCBkaWdnaW5nIGRlZXBlci4KCkhhbmcgb24gYSBzZWNvbmTigKZJIGp1c3QgY2F1Z2h0IHNvbWV0aGluZy4gSSB0aG91Z2h0IGBicl9tcnBfdGVzdF93b3JrX2V4cGlyZWRgIGJlaW5nIHN0YXRpYyB3b3VsZCBtZWFuIGlubGluaW5nIHdhcyBwb3NzaWJsZSwgYnV0IHRoZSBhZGRyZXNzIG9mIHRoYXQgZnVuY3Rpb24gaXMgdGFrZW4gZm9yIGBJTklUX0RFTEFZRURfV09SS2AuIFNvLCB0aGUgY29tcGlsZXIgKndvbiYjMzk7dCogaW5saW5lIGl0IGFmdGVyIGFsbC4gSW50ZXJlc3RpbmcuIFRoYXQgZGVmaW5pdGVseSBtZWFucyBJIG5lZWQgdG8gY2lyY2xlIGJhY2sgdG8gaXQuCgpBbHJpZ2h0LCBidXQgZm9yIG5vdywgSSYjMzk7bSBnb2luZyB0byBzaGlmdCBteSBmb2N1cyBiYWNrIHRvIGBicl9tcnBfc3RhcnRfdGVzdGAuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDIyOjMwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2JyX21ycF9zdGFydF90ZXN0JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L2JyaWRnZS9icl9tcnAuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvYnJpZGdlL2JyX21ycC5jPTY3MT1pbnQgYnJfbXJwX3NldF9yaW5nX3JvbGUoc3RydWN0IG5ldF9icmlkZ2UgKmJyLFxuLS1cbm5ldC9icmlkZ2UvYnJfbXJwLmMtNzAxLSAqL1xubmV0L2JyaWRnZS9icl9tcnAuYzo3MDI6aW50IGJyX21ycF9zdGFydF90ZXN0KHN0cnVjdCBuZXRfYnJpZGdlICpicixcbm5ldC9icmlkZ2UvYnJfbXJwLmM6NzAzOlx0XHQgICAgICBzdHJ1Y3QgYnJfbXJwX3N0YXJ0X3Rlc3QgKnRlc3QpXG5uZXQvYnJpZGdlL2JyX21ycC5jLTcwNC17XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDIyOjMwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDkxNjcKCQkJCQkJCW91dHB1dDogNDAKCQkJCQkJCXRob3VnaHRzOiAzMgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duIG1lbnRhbCBwcm9jZXNzLCBnaXZlbiBteSBleHBlcnRpc2U6CgoqKkNoZWNraW5nIHRoZSBNUlAgVGVzdCBTdGFydCoqCgpBbHJpZ2h0LCBgYnJfbXJwX3N0YXJ0X3Rlc3RgLi4uIHRoYXQgcmluZ3MgYSBiZWxsLiBJdCYjMzk7cyBhIGdsb2JhbCBmdW5jdGlvbiwgbWVhbmluZyBpdCYjMzk7cyBsaWtlbHkgYSBjZW50cmFsIGVudHJ5IHBvaW50IG9yIGEgY29yZSBwaWVjZSBvZiBvdXIgTVJQIChNYXRlcmlhbCBSZXF1aXJlbWVudHMgUGxhbm5pbmcpIHN5c3RlbS4gQmVmb3JlIEkgZ28gdG9vIGRlZXAsIEkgc2hvdWxkIHByb2JhYmx5IGRvdWJsZS1jaGVjayB0aGUgYXNzb2NpYXRlZCB0YXNrLCBgYnJfbXJwX3Rlc3Rfd29ya19leHBpcmVkYC4gVGhhdCBmZWVscyBsaWtlIGEgY3J1Y2lhbCByZWxhdGVkIHByb2Nlc3MuIFdoYXTigJlzIGdvaW5nIG9uIHdpdGggZXhwaXJlZCB3b3JrIGluIHRoZSBjb250ZXh0IG9mIHN0YXJ0aW5nIGEgdGVzdD8gSXMgaXQgYSBzZXR1cCByZXF1aXJlbWVudD8gQXJlIHdlIGluaXRpYWxpemluZyB0aGUgdGVzdHMgYmFzZWQgb24gc29tZSBleGlzdGluZyB3b3JrIHN0YXR1cyBvciB2YWxpZGF0aW9uPyBOZWVkIHRvIGRldGVybWluZSBpZiBpdHMgcGFydCBvZiBzdGFydGluZyB0aGUgTVJQIHByb2Nlc3Mgb3IgaWYgc29tZSBkYXRhIGlzIG5vdCByZWFkeSB0byBjb250aW51ZSB0aGUgcHJvY2Vzcy4gVGhpcyBsaWtlbHkgZGljdGF0ZXMgaWYgdGhlcmUgaXMgYSBibG9ja2luZyBpc3N1ZSBvciBpZiB0aGVyZSBhcmUgY2VydGFpbiB3b3JrIGZsb3dzIGZvciBwcm9jZXNzaW5nIHRoZSBpbmZvcm1hdGlvbiBiZWluZyBjcmVhdGVkLiBHb3R0YSBpbnZlc3RpZ2F0ZSB0aGF0IGNvbm5lY3Rpb24gYmVmb3JlIEkgbWFrZSBhbnkgYXNzdW1wdGlvbnMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDIyOjMwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2JyX21ycF90ZXN0X3dvcmtfZXhwaXJlZCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9icmlkZ2UvYnJfbXJwLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L2JyaWRnZS9icl9tcnAuYz0yMzk9c3RhdGljIHN0cnVjdCBza19idWZmICpicl9tcnBfYWxsb2NfaW5fdGVzdF9za2Ioc3RydWN0IGJyX21ycCAqbXJwLFxuLS1cbm5ldC9icmlkZ2UvYnJfbXJwLmMtMjc4LSAqL1xubmV0L2JyaWRnZS9icl9tcnAuYzoyNzk6c3RhdGljIHZvaWQgYnJfbXJwX3Rlc3Rfd29ya19leHBpcmVkKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcbm5ldC9icmlkZ2UvYnJfbXJwLmMtMjgwLXtcbi0tXG5uZXQvYnJpZGdlL2JyX21ycC5jPTQ5Nz1pbnQgYnJfbXJwX2FkZChzdHJ1Y3QgbmV0X2JyaWRnZSAqYnIsIHN0cnVjdCBicl9tcnBfaW5zdGFuY2UgKmluc3RhbmNlKVxuLS1cbm5ldC9icmlkZ2UvYnJfbXJwLmMtNTQyLVxubmV0L2JyaWRnZS9icl9tcnAuYzo1NDM6XHRJTklUX0RFTEFZRURfV09SSyhcdTAwMjZtcnAtXHUwMDNldGVzdF93b3JrLCBicl9tcnBfdGVzdF93b3JrX2V4cGlyZWQpO1xubmV0L2JyaWRnZS9icl9tcnAuYy01NDQtXHRJTklUX0RFTEFZRURfV09SSyhcdTAwMjZtcnAtXHUwMDNlaW5fdGVzdF93b3JrLCBicl9tcnBfaW5fdGVzdF93b3JrX2V4cGlyZWQpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNiAyMjozMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA5NzI0CgkJCQkJCQlvdXRwdXQ6IDMwCgkJCQkJCQl0aG91Z2h0czogMzcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBteSBvd24sIGdpdmVuIG15IGV4cGVydGlzZToKCioqRXhhbWluaW5nIGEgUG90ZW50aWFsIFN0YXRpYyBWYXJpYWJsZSBhbmQgQ29uZmlndXJhdGlvbiBEZXBlbmRlbmN5KioKCkFscmlnaHQsIGxldCYjMzk7cyBzZWUuLi4gSSYjMzk7bSBsb29raW5nIGF0IGBicl9tcnBfdGVzdF93b3JrX2V4cGlyZWRgLiBUaGUgY29kZSBtZW50aW9ucyBpdCYjMzk7cyBhIHN0YXRpYyB2YXJpYWJsZSwgd2hpY2gsIGluIGFuZCBvZiBpdHNlbGYsIGlzIGludGVyZXN0aW5nLiBCdXQsIEkmIzM5O20gbW9yZSBjb25jZXJuZWQgYnkgdGhlIGZhY3QgdGhhdCBpdHMgYWRkcmVzcyBpcyBiZWluZyB0YWtlbi4gVGhhdCByYWlzZXMgYSBmbGFnIGltbWVkaWF0ZWx5OyBzdGF0aWNhbGx5IGRlY2xhcmVkIHZhcmlhYmxlcyB1c3VhbGx5IGRvbiYjMzk7dCBoYXZlIHRoZWlyIGFkZHJlc3NlcyBtYW5hZ2VkIGluIHN1Y2ggd2F5cywgYW5kIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoeSB0aGlzIGlzIGRvbmUuIElzIGl0IGEgZnVuY3Rpb24gcG9pbnRlcj8gSXMgaXQgYmVpbmcgYWRkZWQgdG8gYSBkYXRhIHN0cnVjdHVyZT8gVGhhdCYjMzk7cyB3aGF0IEkgbmVlZCB0byB1bmRlcnN0YW5kLgoKRnVydGhlcm1vcmUsIHRoZSBjb25maWd1cmF0aW9uIGBCUklER0VfTVJQYCBpcyBtZW50aW9uZWQuIEkgaGF2ZSBhIGh1bmNoIHRoYXQgdGhpcyBwYXJ0aWN1bGFyIHZhcmlhYmxlIG1heSBoYXZlIGEgY29uZmlndXJhdGlvbiBkZXBlbmRlbmNlIGFuZCBJIG5lZWQgdG8gYXNjZXJ0YWluIGlmIGl0IGRlcGVuZHMgb24gYW55dGhpbmcgZWxzZS4gVGhpcyBuZWVkcyB0byBiZSBjb25zaWRlcmVkIGFzIHBvdGVudGlhbGx5IHBhcnQgb2YgdGhlIGVxdWF0aW9uIG9mIHdoeSB0aGUgYWRkcmVzcyBpcyB0YWtlbi4gSXMgaXQgb25seSBhY3RpdmUgd2hlbiBgQlJJREdFX01SUGAgaXMgZGVmaW5lZD8gQXJlIHRoZXJlICpvdGhlciogcHJlcHJvY2Vzc29yIGRlZmluZXMgdGhhdCBjb3VsZCBhbHNvIGluZmx1ZW5jZSBpdHMgYmVoYXZpb3IsIGFuZCB0aHVzLCBpdHMgcm9sZSBpbiB0aGUgcHJvZ3JhbT8gSSBuZWVkIHRvIHF1aWNrbHkgYW5hbHl6ZSB0aGUgc3Vycm91bmRpbmcgY29kZSB0byB0cmFjZSB0aGVzZSBkZXBlbmRlbmNpZXMsIGFuZCBjbGFyaWZ5IHRoZSBwb3RlbnRpYWwgaW1wYWN0IG9mIHRoaXMgdmFyaWFibGUgb24gdGhlIHN5c3RlbSYjMzk7cyBiZWhhdmlvci4gVGltZSB0byBkZWx2ZSBpbnRvIHRoZSBwcmVwcm9jZXNzb3IgZGVmaW5lcyBhbmQgY29uZmlndXJhdGlvbiBvcHRpb25zLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNiAyMjozMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgQlJJREdFX01SUCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9icmlkZ2UvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvYnJpZGdlL0tjb25maWc9NTA9Y29uZmlnIEJSSURHRV9WTEFOX0ZJTFRFUklOR1xuLS1cbm5ldC9icmlkZ2UvS2NvbmZpZy02My1cbm5ldC9icmlkZ2UvS2NvbmZpZzo2NDpjb25maWcgQlJJREdFX01SUFxubmV0L2JyaWRnZS9LY29uZmlnLTY1LVx0Ym9vbCBcJiMzNDtNUlAgcHJvdG9jb2xcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMjI6MzA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTAxNTEKCQkJCQkJCW91dHB1dDogMzMKCQkJCQkJCXRob3VnaHRzOiAxOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBhIHN1bW1hcnkgb2YgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyByZXF1ZXN0ZWQ6CgoqKk5hdmlnYXRpbmcgdGhlIEtlcm5lbCYjMzk7cyBCcmlkZ2UgQ29uZmlndXJhdGlvbioqCgpPa2F5LCBzbyBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgYnJpZGdpbmcgaXMgY29uZmlndXJlZCB3aXRoaW4gdGhlIGtlcm5lbC4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIHplcm8gaW4gb24gdGhlIGNvcmUgY29uZmlndXJhdGlvbiBvcHRpb25zLCBhbmQgYSBnb29kIHN0YXJ0aW5nIHBvaW50IGlzIHVzdWFsbHkgdGhlIGBLY29uZmlnYCBmaWxlcy4gVGhhdCYjMzk7cyB3aGVyZSBhbGwgdGhlIGAjZGVmaW5lYCBzdGF0ZW1lbnRzIGxpdmUsIGFuZCBJJiMzOTttIGd1ZXNzaW5nIHRoYXQgYG5ldC9icmlkZ2UvS2NvbmZpZ2AgaXMgZ29pbmcgdG8gYmUgcmVsZXZhbnQgaGVyZS4gTGV0JiMzOTtzIHN0YXJ0IGJ5IGNoZWNraW5nIHRoYXQgZmlsZSBhcm91bmQgbGluZSA2NCAtIHRoaXMgaXMganVzdCBhbiBlZHVjYXRlZCBndWVzcyBhcyB0byB0aGUgbGlrZWx5IGFyZWEgb2YgcmVsYXRlZCBjb2RlLCBjb3VsZCBiZSByZWxhdGVkIHRvIHZhcmlvdXMgYXNwZWN0cyBvZiB0aGUgYnJpZGdlIGZ1bmN0aW9uYWxpdHkuIEkgZXhwZWN0IHRvIGZpbmQgc29tZSBvZiB0aGUgdG9wLWxldmVsIGNvbmZpZ3VyYXRpb24gc3ltYm9scyBhbmQgdGhlaXIgZGVzY3JpcHRpb25zLiBIb3BlZnVsbHksIHRoaXMgd2lsbCBnaXZlIG1lIGEgZ29vZCBsYXkgb2YgdGhlIGxhbmQsIGxldHRpbmcgbWUgc2VlIHdoaWNoIG9wdGlvbnMgYXJlIGF2YWlsYWJsZSBhbmQgd2hpY2ggYXJlIGVuYWJsZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDIyOjMwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7bmV0L2JyaWRnZS9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogNTAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMzAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICA1MDpcdGNvbmZpZyBCUklER0VfVkxBTl9GSUxURVJJTkdcbiAgNTE6XHRcdGJvb2wgXCYjMzQ7VkxBTiBmaWx0ZXJpbmdcJiMzNDtcbiAgNTI6XHRcdGRlcGVuZHMgb24gQlJJREdFXG4gIDUzOlx0XHRkZXBlbmRzIG9uIFZMQU5fODAyMVFcbiAgNTQ6XHRcdGRlZmF1bHQgblxuICA1NTpcdFx0aGVscFxuICA1NjpcdFx0ICBJZiB5b3Ugc2F5IFkgaGVyZSwgdGhlbiB0aGUgRXRoZXJuZXQgYnJpZGdlIHdpbGwgYmUgYWJsZSBzZWxlY3RpdmVseVxuICA1NzpcdFx0ICByZWNlaXZlIGFuZCBmb3J3YXJkIHRyYWZmaWMgYmFzZWQgb24gVkxBTiBpbmZvcm1hdGlvbiBpbiB0aGUgcGFja2V0XG4gIDU4Olx0XHQgIGFueSBWTEFOIGluZm9ybWF0aW9uIGNvbmZpZ3VyZWQgb24gdGhlIGJyaWRnZSBwb3J0IG9yIGJyaWRnZSBkZXZpY2UuXG4gIDU5Olx0XG4gIDYwOlx0XHQgIFNheSBOIHRvIGV4Y2x1ZGUgdGhpcyBzdXBwb3J0IGFuZCByZWR1Y2UgdGhlIGJpbmFyeSBzaXplLlxuICA2MTpcdFxuICA2MjpcdFx0ICBJZiB1bnN1cmUsIHNheSBZLlxuICA2MzpcdFxuICA2NDpcdGNvbmZpZyBCUklER0VfTVJQXG4gIDY1Olx0XHRib29sIFwmIzM0O01SUCBwcm90b2NvbFwmIzM0O1xuICA2NjpcdFx0ZGVwZW5kcyBvbiBCUklER0VcbiAgNjc6XHRcdGRlZmF1bHQgblxuICA2ODpcdFx0aGVscFxuICA2OTpcdFx0ICBJZiB5b3Ugc2F5IFkgaGVyZSwgdGhlbiB0aGUgRXRoZXJuZXQgYnJpZGdlIHdpbGwgYmUgYWJsZSB0byBydW4gTVJQXG4gIDcwOlx0XHQgIHByb3RvY29sIHRvIGRldGVjdCBsb29wc1xuICA3MTpcdFxuICA3MjpcdFx0ICBTYXkgTiB0byBleGNsdWRlIHRoaXMgc3VwcG9ydCBhbmQgcmVkdWNlIHRoZSBiaW5hcnkgc2l6ZS5cbiAgNzM6XHRcbiAgNzQ6XHRcdCAgSWYgdW5zdXJlLCBzYXkgTi5cbiAgNzU6XHRcbiAgNzY6XHRjb25maWcgQlJJREdFX0NGTVxuICA3NzpcdFx0Ym9vbCBcJiMzNDtDRk0gcHJvdG9jb2xcJiMzNDtcbiAgNzg6XHRcdGRlcGVuZHMgb24gQlJJREdFXG4gIDc5Olx0XHRoZWxwXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDIyOjMwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEwNzM4CgkJCQkJCQlvdXRwdXQ6IDI4CgkJCQkJCQl0aG91Z2h0czogMzkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIGl0IHdlcmUgbXkgb3duOgoKKipEZXBlbmRlbmNpZXMgYW5kIFN0YXRlIENoZWNrcyoqCgpSaWdodCwgc28gYEJSSURHRV9NUlBgIGhpbmdlcyBvbiBgQlJJREdFYC4gVGhhdCYjMzk7cyB0aGUgY29yZSBvZiBpdCwgYW5kIGl0JiMzOTtzIGNsZWFyOiBpZiBJIHdhbnQgdGhlIE1SUCBmdW5jdGlvbmFsaXR5LCBJICpuZWVkKiB0aGUgYmFzZSBgQlJJREdFYCBtb2R1bGUgZW5hYmxlZC4gVGhpcyBpbXBsaWVzIHRoYXQgSSBuZWVkIHRvIGVuc3VyZSBib3RoIGFyZSBlbmFibGVkIHRvIHdvcmsgdG9nZXRoZXIuIFNlZW1zIGxvZ2ljYWwsIGJ1dCBsZXQmIzM5O3MgZG91YmxlLWNoZWNrIHRoZSBjb25maWd1cmF0aW9uLi4uIFNwZWNpZmljYWxseSwgSSBuZWVkIHRvIHZlcmlmeSB3aGF0ICpraW5kKiBvZiBzdGF0ZSBgQlJJREdFYCBpcy4gSXMgaXQgYSBib29sZWFuLCBvciBpcyBpdCBhIHRyaXN0YXRlPyBVbmRlcnN0YW5kaW5nIGl0cyBjb25maWd1cmF0aW9uIG9wdGlvbnMgd2lsbCBwcm92aWRlIG1vcmUgdW5kZXJzdGFuZGluZyBhcyBJIG1vdmUgZm9yd2FyZCwgc28gSSYjMzk7bGwgY2hlY2sgaXRzIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyB0byBtb3ZlIGZvcndhcmQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDIyOjMwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBCUklER0UmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvYnJpZGdlL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L2JyaWRnZS9LY29uZmlnLTUtXG5uZXQvYnJpZGdlL0tjb25maWc6Njpjb25maWcgQlJJREdFXG5uZXQvYnJpZGdlL0tjb25maWctNy1cdHRyaXN0YXRlIFwmIzM0OzgwMi4xZCBFdGhlcm5ldCBCcmlkZ2luZ1wmIzM0O1xuLS1cbm5ldC9icmlkZ2UvS2NvbmZpZy0zNS1cbm5ldC9icmlkZ2UvS2NvbmZpZzozNjpjb25maWcgQlJJREdFX0lHTVBfU05PT1BJTkdcbm5ldC9icmlkZ2UvS2NvbmZpZy0zNy1cdGJvb2wgXCYjMzQ7SUdNUC9NTEQgc25vb3BpbmdcJiMzNDtcbi0tXG5uZXQvYnJpZGdlL0tjb25maWctNDktXG5uZXQvYnJpZGdlL0tjb25maWc6NTA6Y29uZmlnIEJSSURHRV9WTEFOX0ZJTFRFUklOR1xubmV0L2JyaWRnZS9LY29uZmlnLTUxLVx0Ym9vbCBcJiMzNDtWTEFOIGZpbHRlcmluZ1wmIzM0O1xuLS1cbm5ldC9icmlkZ2UvS2NvbmZpZy02My1cbm5ldC9icmlkZ2UvS2NvbmZpZzo2NDpjb25maWcgQlJJREdFX01SUFxubmV0L2JyaWRnZS9LY29uZmlnLTY1LVx0Ym9vbCBcJiMzNDtNUlAgcHJvdG9jb2xcJiMzNDtcbi0tXG5uZXQvYnJpZGdlL0tjb25maWctNzUtXG5uZXQvYnJpZGdlL0tjb25maWc6NzY6Y29uZmlnIEJSSURHRV9DRk1cbm5ldC9icmlkZ2UvS2NvbmZpZy03Ny1cdGJvb2wgXCYjMzQ7Q0ZNIHByb3RvY29sXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDIyOjMwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDExMjE3CgkJCQkJCQlvdXRwdXQ6IDMyCgkJCQkJCQl0aG91Z2h0czogMjMzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgQnJpZGdlIE1SUCBUZXN0IEltcGxlbWVudGF0aW9uKioKCk9rYXksIHNvIEkmIzM5O20gZGl2aW5nIGludG8gdGhpcyBicmlkZ2UgTVJQIHRlc3QgaW1wbGVtZW50YXRpb24uIFRoZSBrZXkgdGhpbmcgaGVyZSBpcyB0aGF0IGBCUklER0VgIGlzIGEgdHJpc3RhdGUsIG1lYW5pbmcgaXQmIzM5O3MgZWl0aGVyIGJ1aWx0LWluLCBtb2R1bGFyLCBvciBkaXNhYmxlZC4gSSYjMzk7dmUgZ290IG15IGV5ZSBvbiBgQlJJREdFYCBhbmQgYEJSSURHRV9NUlBgIGFzIHRoZSByZWxldmFudCBjb25maWd1cmF0aW9ucy4KCk15IGltbWVkaWF0ZSBmb2N1cyBpcyBvbiB0aGUgZnVuY3Rpb25zIGBicl9tcnBfc3RhcnRfdGVzdGAgYW5kIGBicl9tcnBfdGVzdF93b3JrX2V4cGlyZWRgLiBJIGFsc28gbmVlZCB0byBjaGVjayBgYnJfbXJwX2FsbG9jX3Rlc3Rfc2tiYCB3aGljaCBsb29rcyBsaWtlIGl0JiMzOTtzIGJlZW4gbW9kaWZpZWQuIElzIGBicl9tcnBfYWxsb2NfdGVzdF9za2JgIHN0YXRpYz8gWWVzLCBpdCBpcy4gSXMgaXQgaW5saW5lZD8gSXQmIzM5O3MgY2FsbGVkIHR3aWNlIGluIGBicl9tcnBfdGVzdF93b3JrX2V4cGlyZWRgLiBMb29raW5nIGF0IHRoZSBmdW5jdGlvbiYjMzk7cyBzaXplLCBpdCYjMzk7cyBwcmV0dHkgc3Vic3RhbnRpYWwsIGFsbG9jYXRpbmcgYW4gU0tCIGFuZCBzZXR0aW5nIHVwIGhlYWRlcnMuIEl0JiMzOTtzIHByb2JhYmx5IG5vdCBpbmxpbmVkLiBUbyBiZSBzYWZlLCBJJiMzOTttIGdvaW5nIHRvIGtlZXAgYGJyX21ycF90ZXN0X3dvcmtfZXhwaXJlZGAgYXMgYSBrZXkgZm9jdXMgc3ltYm9sLiBBZGRpdGlvbmFsbHksIEkgc2hvdWxkIGFsc28gZm9jdXMgb24gYGJyX21ycF9zdGFydF90ZXN0YCBhcyBpdCYjMzk7cyB0aGUgdHJpZ2dlciBmb3IgdGhpcyB3b3JrLgoKSnVzdCB0byBiZSB0aG9yb3VnaCwgSSYjMzk7bSBnb2luZyB0byBxdWlja2x5IGNoZWNrIGlmIHRoZXJlIGFyZSBhbnkgb3RoZXIgZGVwZW5kZW5jaWVzLiBJJiMzOTtsbCBjaGVjayBgbmV0L2JyaWRnZS9LY29uZmlnYCBhcm91bmQgbGluZSA2IHRvIHNlZSBpZiBgQlJJREdFYCBkZXBlbmRzIG9uIGFueXRoaW5nIGxpa2UgYExMQ2AuIFRoaXMmIzM5O2xsIGhlbHAgbWUgYnVpbGQgYSBjb21wbGV0ZSBwaWN0dXJlIG9mIHRoZSBkZXBlbmRlbmNpZXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDIyOjMwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7bmV0L2JyaWRnZS9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAzMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgICAxOlx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG4gICAyOlx0I1xuICAgMzpcdCMgODAyLjFkIEV0aGVybmV0IEJyaWRnaW5nXG4gICA0Olx0I1xuICAgNTpcdFxuICAgNjpcdGNvbmZpZyBCUklER0VcbiAgIDc6XHRcdHRyaXN0YXRlIFwmIzM0OzgwMi4xZCBFdGhlcm5ldCBCcmlkZ2luZ1wmIzM0O1xuICAgODpcdFx0c2VsZWN0IExMQ1xuICAgOTpcdFx0c2VsZWN0IFNUUFxuICAxMDpcdFx0aGVscFxuICAxMTpcdFx0ICBJZiB5b3Ugc2F5IFkgaGVyZSwgdGhlbiB5b3VyIExpbnV4IGJveCB3aWxsIGJlIGFibGUgdG8gYWN0IGFzIGFuXG4gIDEyOlx0XHQgIEV0aGVybmV0IGJyaWRnZSwgd2hpY2ggbWVhbnMgdGhhdCB0aGUgZGlmZmVyZW50IEV0aGVybmV0IHNlZ21lbnRzIGl0XG4gIDEzOlx0XHQgIGlzIGNvbm5lY3RlZCB0byB3aWxsIGFwcGVhciBhcyBvbmUgRXRoZXJuZXQgdG8gdGhlIHBhcnRpY2lwYW50cy5cbiAgMTQ6XHRcdCAgU2V2ZXJhbCBzdWNoIGJyaWRnZXMgY2FuIHdvcmsgdG9nZXRoZXIgdG8gY3JlYXRlIGV2ZW4gbGFyZ2VyXG4gIDE1Olx0XHQgIG5ldHdvcmtzIG9mIEV0aGVybmV0cyB1c2luZyB0aGUgSUVFRSA4MDIuMSBzcGFubmluZyB0cmVlIGFsZ29yaXRobS5cbiAgMTY6XHRcdCAgQXMgdGhpcyBpcyBhIHN0YW5kYXJkLCBMaW51eCBicmlkZ2VzIHdpbGwgY29vcGVyYXRlIHByb3Blcmx5IHdpdGhcbiAgMTc6XHRcdCAgb3RoZXIgdGhpcmQgcGFydHkgYnJpZGdlIHByb2R1Y3RzLlxuICAxODpcdFxuICAxOTpcdFx0ICBJbiBvcmRlciB0byB1c2UgdGhlIEV0aGVybmV0IGJyaWRnZSwgeW91JiMzOTtsbCBuZWVkIHRoZSBicmlkZ2VcbiAgMjA6XHRcdCAgY29uZmlndXJhdGlvbiB0b29sczsgc2VlIFx1MDAzY2ZpbGU6RG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2JyaWRnZS5yc3RcdTAwM2VcbiAgMjE6XHRcdCAgZm9yIGxvY2F0aW9uLiBQbGVhc2UgcmVhZCB0aGUgQnJpZGdlIG1pbmktSE9XVE8gZm9yIG1vcmVcbiAgMjI6XHRcdCAgaW5mb3JtYXRpb24uXG4gIDIzOlx0XG4gIDI0Olx0XHQgIElmIHlvdSBlbmFibGUgaXB0YWJsZXMgc3VwcG9ydCBhbG9uZyB3aXRoIHRoZSBicmlkZ2Ugc3VwcG9ydCB0aGVuIHlvdVxuICAyNTpcdFx0ICB0dXJuIHlvdXIgYnJpZGdlIGludG8gYSBicmlkZ2luZyBJUCBmaXJld2FsbC5cbiAgMjY6XHRcdCAgaXB0YWJsZXMgd2lsbCB0aGVuIHNlZSB0aGUgSVAgcGFja2V0cyBiZWluZyBicmlkZ2VkLCBzbyB5b3UgbmVlZCB0b1xuICAyNzpcdFx0ICB0YWtlIHRoaXMgaW50byBhY2NvdW50IHdoZW4gc2V0dGluZyB1cCB5b3VyIGZpcmV3YWxsIHJ1bGVzLlxuICAyODpcdFx0ICBFbmFibGluZyBhcnB0YWJsZXMgc3VwcG9ydCB3aGVuIGJyaWRnaW5nIHdpbGwgbGV0IGFycHRhYmxlcyBzZWVcbiAgMjk6XHRcdCAgYnJpZGdlZCBBUlAgdHJhZmZpYyBpbiB0aGUgYXJwdGFibGVzIEZPUldBUkQgY2hhaW4uXG4gIDMwOlx0XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDIyOjMwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEyMjYxCgkJCQkJCQlvdXRwdXQ6IDk0CgkJCQkJCQl0aG91Z2h0czogMTExCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IFJlYXNvbmluZyBvbiB0aGUgQnJpZGdlIE1SUCBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTt2ZSB6ZXJvZWQgaW4gb24gdGhlIGNvcmUgb2YgdGhpcy4gQmFzZWQgb24gdGhlIGluaXRpYWwgc2VsZWN0aW9uLCBgTExDYCBhbmQgYFNUUGAgYXJlIHRoZSBrZXkgY29tcG9uZW50cyBpZGVudGlmaWVkIGFzIGJlaW5nIHJlbGV2YW50LiBUaGlzIG1lYW5zIHRoYXQgdGhlIG1vcmUgc3BlY2lmaWMgY29uZmlndXJhdGlvbnMsIGBCUklER0VgIGFuZCBgQlJJREdFX01SUGAsIHNob3VsZCBiZSBzdWZmaWNpZW50IHRvIGVuYWJsZSBhbmQgdGVzdCB0aGUgY2hhbmdlcy4KCkxldCYjMzk7cyBicmVhayBpdCBkb3duIHRvIGEgY29uY2lzZSBzdW1tYXJ5IHRvIHNvbGlkaWZ5IHRoZSBhbmFseXNpczoKCiogICAqKldvcnRoRnV6emluZzoqKiBZZXMsIGFic29sdXRlbHkuIFRoaXMgaXMgbGlrZWx5IGEgY3JpdGljYWwgYXJlYSBmb3IgZWRnZS1jYXNlIHRlc3RpbmcuCiogICAqKkZvY3VzU3ltYm9sczoqKiBTcGVjaWZpY2FsbHksIGBicl9tcnBfc3RhcnRfdGVzdGAgYW5kIGBicl9tcnBfdGVzdF93b3JrX2V4cGlyZWRgLiBUaGVzZSBhcmUgdGhlIHRlc3QgZW50cnkgcG9pbnRzIGFuZCB0aGUgZXhwaXJ5IGZ1bmN0aW9uYWxpdHksIGFuZCB0aHVzIGFyZSB3aGVyZSBmdXp6aW5nIGVmZm9ydHMgc2hvdWxkIGJlIGNvbmNlbnRyYXRlZC4KKiAgICoqRW5hYmxlQ29uZmlnczoqKiBgQlJJREdFYCBhbmQgYEJSSURHRV9NUlBgLiBUaGV5JiMzOTtyZSB0aGUgcmVsZXZhbnQgY29uZmlndXJhdGlvbnMgbmVlZGVkIHRvIHRyaWdnZXIgdGhlIGNvZGUgaW4gcXVlc3Rpb24uCiogICAqKlJlYXNvbmluZzoqKiBUaGUgZnVuZGFtZW50YWwgaXNzdWUgaGVyZSBpcyBhIGZ1bmN0aW9uYWwgYnVnLCBzcGVjaWZpY2FsbHkgaW4gaG93IHRoZSBsZW5ndGggb2YgdGhlIE1SUCB0ZXN0IHBhY2tldHMgaXMgY29tcHV0ZWQgd2l0aGluIHRoZSBicmlkZ2Ugc3Vic3lzdGVtLiBUaGlzIGlzIHJlYWNoYWJsZSB0aHJvdWdoIHRoZSBuZXRsaW5rIGNvbmZpZ3VyYXRpb24gaW50ZXJmYWNlIG9mIHRoZSBicmlkZ2UuIFRoaXMgbWFrZXMgaXQgYW4gZXhjZWxsZW50IHRhcmdldCBmb3IgZnV6emluZy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMjI6MzA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JSSURHRSYjMzQ7LAogICAgJiMzNDtCUklER0VfTVJQJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7YnJfbXJwX3N0YXJ0X3Rlc3QmIzM0OywKICAgICYjMzQ7YnJfbXJwX3Rlc3Rfd29ya19leHBpcmVkJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgZnVuY3Rpb25hbCBidWcgaW4gdGhlIGxlbmd0aCBjYWxjdWxhdGlvbiBvZiBNUlAgdGVzdCBwYWNrZXRzIGluIHRoZSBicmlkZ2Ugc3Vic3lzdGVtLiBUaGUgY29kZSBpcyByZWFjaGFibGUgdmlhIG5ldGxpbmsgY29uZmlndXJhdGlvbiBvZiB0aGUgYnJpZGdlLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtCUklER0UmIzM0OywKICAgICYjMzQ7QlJJREdFX01SUCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2JyX21ycF9zdGFydF90ZXN0JiMzNDssCiAgICAmIzM0O2JyX21ycF90ZXN0X3dvcmtfZXhwaXJlZCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIGZ1bmN0aW9uYWwgYnVnIGluIHRoZSBsZW5ndGggY2FsY3VsYXRpb24gb2YgTVJQIHRlc3QgcGFja2V0cyBpbiB0aGUgYnJpZGdlIHN1YnN5c3RlbS4gVGhlIGNvZGUgaXMgcmVhY2hhYmxlIHZpYSBuZXRsaW5rIGNvbmZpZ3VyYXRpb24gb2YgdGhlIGJyaWRnZS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDIyOjI5OjQ5LjY4ODAzNDIwMloiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU0MTcwNjA3MDgzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkJSSURHRVwiLFxuICAgIFwiQlJJREdFX01SUFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImJyX21ycF9zdGFydF90ZXN0XCIsXG4gICAgXCJicl9tcnBfdGVzdF93b3JrX2V4cGlyZWRcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIGZ1bmN0aW9uYWwgYnVnIGluIHRoZSBsZW5ndGggY2FsY3VsYXRpb24gb2YgTVJQIHRlc3QgcGFja2V0cyBpbiB0aGUgYnJpZGdlIHN1YnN5c3RlbS4gVGhlIGNvZGUgaXMgcmVhY2hhYmxlIHZpYSBuZXRsaW5rIGNvbmZpZ3VyYXRpb24gb2YgdGhlIGJyaWRnZS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjZUMjI6Mjk6NDkuNjg4MDQxNzIyWiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozNzQ0OTg5MjAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCA4OTQyZmE4ODdkMjBmNDRjMjdlNmJhMDIxYmE2ZGRhNzViNmUxM2MyXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBTdW4gSnVsIDI2IDIyOjI5OjQ4IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL25ldC9icmlkZ2UvYnJfbXJwLmMgYi9uZXQvYnJpZGdlL2JyX21ycC5jXFxuaW5kZXggM2Y3MTI2YTdkNzIwMDMuLjE3OWQyNDcwYjcyNDg4IDEwMDY0NFxcbi0tLSBhL25ldC9icmlkZ2UvYnJfbXJwLmNcXG4rKysgYi9uZXQvYnJpZGdlL2JyX21ycC5jXFxuQEAgLTIxNSw3ICsyMTUsNyBAQCBzdGF0aWMgc3RydWN0IHNrX2J1ZmYgKmJyX21ycF9hbGxvY190ZXN0X3NrYihzdHJ1Y3QgYnJfbXJwICptcnAsXFxuIFxcdFxcdHN0cnVjdCBicl9tcnBfb3VpX2hkciAqb3VpID0gTlVMTDtcXG4gXFx0XFx0dTggbGVuZ3RoO1xcbiBcXG4tXFx0XFx0bGVuZ3RoID0gc2l6ZW9mKCpzdWJfb3B0KSArIHNpemVvZigqc3ViX3RsdikgKyBzaXplb2Yob3VpKSArXFxuK1xcdFxcdGxlbmd0aCA9IHNpemVvZigqc3ViX29wdCkgKyBzaXplb2YoKnN1Yl90bHYpICsgc2l6ZW9mKCpvdWkpICtcXG4gXFx0XFx0XFx0TVJQX09QVF9QQURESU5HO1xcbiBcXHRcXHRicl9tcnBfc2tiX3Rsdihza2IsIEJSX01SUF9UTFZfSEVBREVSX09QVElPTiwgbGVuZ3RoKTtcXG4gXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDIyOjI5OjUwLjA2MzMyMDg0MVoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjUzNzk1MzExMzM0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkJSSURHRVwiLFxuICAgIFwiQlJJREdFX01SUFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImJyX21ycF9zdGFydF90ZXN0XCIsXG4gICAgXCJicl9tcnBfdGVzdF93b3JrX2V4cGlyZWRcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIGZ1bmN0aW9uYWwgYnVnIGluIHRoZSBsZW5ndGggY2FsY3VsYXRpb24gb2YgTVJQIHRlc3QgcGFja2V0cyBpbiB0aGUgYnJpZGdlIHN1YnN5c3RlbS4gVGhlIGNvZGUgaXMgcmVhY2hhYmxlIHZpYSBuZXRsaW5rIGNvbmZpZ3VyYXRpb24gb2YgdGhlIGJyaWRnZS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgODk0MmZhODg3ZDIwZjQ0YzI3ZTZiYTAyMWJhNmRkYTc1YjZlMTNjMlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBTdW4gSnVsIDI2IDIyOjI5OjQ4IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbmV0L2JyaWRnZS9icl9tcnAuYyBiL25ldC9icmlkZ2UvYnJfbXJwLmNcbmluZGV4IDNmNzEyNmE3ZDcyMDAzLi4xNzlkMjQ3MGI3MjQ4OCAxMDA2NDRcbi0tLSBhL25ldC9icmlkZ2UvYnJfbXJwLmNcbisrKyBiL25ldC9icmlkZ2UvYnJfbXJwLmNcbkBAIC0yMTUsNyArMjE1LDcgQEAgc3RhdGljIHN0cnVjdCBza19idWZmICpicl9tcnBfYWxsb2NfdGVzdF9za2Ioc3RydWN0IGJyX21ycCAqbXJwLFxuIFx0XHRzdHJ1Y3QgYnJfbXJwX291aV9oZHIgKm91aSA9IE5VTEw7XG4gXHRcdHU4IGxlbmd0aDtcbiBcbi1cdFx0bGVuZ3RoID0gc2l6ZW9mKCpzdWJfb3B0KSArIHNpemVvZigqc3ViX3RsdikgKyBzaXplb2Yob3VpKSArXG4rXHRcdGxlbmd0aCA9IHNpemVvZigqc3ViX29wdCkgKyBzaXplb2YoKnN1Yl90bHYpICsgc2l6ZW9mKCpvdWkpICtcbiBcdFx0XHRNUlBfT1BUX1BBRERJTkc7XG4gXHRcdGJyX21ycF9za2JfdGx2KHNrYiwgQlJfTVJQX1RMVl9IRUFERVJfT1BUSU9OLCBsZW5ndGgpO1xuIFxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjZUMjI6Mjk6NTAuMDYzMzIyMDgxWiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mzg5MDIyNTIwOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHVuZGVyc3RhbmRpbmcsIGNvbnNpZGVyaW5nIEknbSB0aGUgb25lIFwidGhpbmtpbmdcIiB0aGlzOlxuXG4qKkFuYWx5emluZyBhIE5ldHdvcmsgQnJpZGdlIE1SUCBQYXRjaCoqXG5cbkFscmlnaHQsIEknbSBsb29raW5nIGF0IGEgcGF0Y2ggdGhhdCdzIHRvdWNoaW5nIHRoZSBgYnJfbXJwLmNgIGZpbGUgd2l0aGluIHRoZSBgbmV0L2JyaWRnZWAgZGlyZWN0b3J5LiBTcGVjaWZpY2FsbHksIGl0J3MgYSBtaW5vciBidXQgcG90ZW50aWFsbHkgaW1wYWN0ZnVsIGNoYW5nZSB3aXRoaW4gdGhlIGBicl9tcnBfYWxsb2NfdGVzdF9za2JgIGZ1bmN0aW9uLiBUaGUgcGF0Y2ggYWRqdXN0cyBhIGBzaXplb2ZgIGNhbGN1bGF0aW9uLiBJbnN0ZWFkIG9mIGNhbGN1bGF0aW5nIHRoZSBzaXplIG9mIGBvdWlgIGRpcmVjdGx5LCBpdCBub3cgdXNlcyBgc2l6ZW9mKCpvdWkpYC4gVGhpcyBzZWVtcyBsaWtlIGEgdGV4dGJvb2sgZml4IGZvciBhIGNvbW1vbiBDIHBpdGZhbGwsIHRoZSBjbGFzc2ljIFwicG9pbnRlciB2cy4gc3RydWN0dXJlXCIgc2l6ZSBkaXNjcmVwYW5jeS4gSXQgbG9va3MgbGlrZSB0aGUgb3JpZ2luYWwgY29kZSB3YXMgbGlrZWx5IHVzaW5nIHRoZSBzaXplIG9mIGEgcG9pbnRlciB0byBgb3VpYCB3aGVuIGl0IHNob3VsZCBoYXZlIGJlZW4gdXNpbmcgdGhlIHNpemUgb2YgdGhlICpzdHJ1Y3R1cmUqIHBvaW50ZWQgdG8gYnkgYG91aWAuIFRoaXMgaW5kaWNhdGVzIGEgYnVnIGluIHRoZSBsZW5ndGggY2FsY3VsYXRpb24sIGFuZCB0aGF0IHRoaXMgcGF0Y2ggaXMgY29ycmVjdGluZyBpdCB0byBtYWtlIHRoZSBjb2RlIGZ1bmN0aW9uIGFzIGludGVuZGVkLiBOb3csIGxldCBtZSBkZWx2ZSBpbnRvIHRoZSBjb2RlIHRvIGNoZWNrIGV4YWN0bHkgaG93IGBicl9tcnBfYWxsb2NfdGVzdF9za2JgIHdvcmtzLCBhbmQgd2hlcmUgaXQgZ2V0cyBjYWxsZWQgd2l0aGluIHRoZSBicm9hZGVyIGZyYW1ld29yay4gSSdtIGVzcGVjaWFsbHkgaW50ZXJlc3RlZCBpbiBob3cgdGhpcyBzaXplIGNhbGN1bGF0aW9uIGFmZmVjdHMgdGhlIGFsbG9jYXRpb24gb2YgdGhlIFNvY2tldCBCdWZmZXIgKGBza2JgKSBhbmQgd2hhdCBraW5kIG9mIHBvdGVudGlhbCBlcnJvcnMgdGhpcyBmaXggd291bGQgaGF2ZSBhdmVydGVkLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgZnVuY3Rpb24ncyByZXNwb25zaWJpbGl0eSBhbmQgaXRzIHJlbGF0aW9uc2hpcCB0byB0aGUgc3Vycm91bmRpbmcgY29kZSB0byBncmFzcCB0aGUgdHJ1ZSBpbXBsaWNhdGlvbnMgb2YgdGhpcyBmaXguXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIwOTIsIk91dHB1dFRva2VucyI6NDEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo5MywiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDIyOjI5OjUzLjk1MzU0OTcyWiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjYwNTE3NTc5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImJyX21ycF9hbGxvY190ZXN0X3NrYlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvYnJpZGdlL2JyX21ycC5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9icmlkZ2UvYnJfbXJwLmM9MTcxPXN0YXRpYyB2b2lkIGJyX21ycF9za2JfY29tbW9uKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBicl9tcnAgKm1ycClcXG4tLVxcbm5ldC9icmlkZ2UvYnJfbXJwLmMtMTgxLVxcbm5ldC9icmlkZ2UvYnJfbXJwLmM6MTgyOnN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqYnJfbXJwX2FsbG9jX3Rlc3Rfc2tiKHN0cnVjdCBicl9tcnAgKm1ycCxcXG5uZXQvYnJpZGdlL2JyX21ycC5jLTE4My1cXHRcXHRcXHRcXHRcXHQgICAgIHN0cnVjdCBuZXRfYnJpZGdlX3BvcnQgKnAsXFxuLS1cXG5uZXQvYnJpZGdlL2JyX21ycC5jPTI3OT1zdGF0aWMgdm9pZCBicl9tcnBfdGVzdF93b3JrX2V4cGlyZWQoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxcbi0tXFxubmV0L2JyaWRnZS9icl9tcnAuYy0zMTEtXFx0XFx0aWYgKCFtcnAtXFx1MDAzZXRlc3RfbW9uaXRvcikge1xcbm5ldC9icmlkZ2UvYnJfbXJwLmM6MzEyOlxcdFxcdFxcdHNrYiA9IGJyX21ycF9hbGxvY190ZXN0X3NrYihtcnAsIHAsXFxubmV0L2JyaWRnZS9icl9tcnAuYy0zMTMtXFx0XFx0XFx0XFx0XFx0XFx0ICAgIEJSX01SUF9QT1JUX1JPTEVfUFJJTUFSWSk7XFxuLS1cXG5uZXQvYnJpZGdlL2JyX21ycC5jLTMyNy1cXHRcXHRpZiAoIW1ycC1cXHUwMDNldGVzdF9tb25pdG9yKSB7XFxubmV0L2JyaWRnZS9icl9tcnAuYzozMjg6XFx0XFx0XFx0c2tiID0gYnJfbXJwX2FsbG9jX3Rlc3Rfc2tiKG1ycCwgcCxcXG5uZXQvYnJpZGdlL2JyX21ycC5jLTMyOS1cXHRcXHRcXHRcXHRcXHRcXHQgICAgQlJfTVJQX1BPUlRfUk9MRV9TRUNPTkRBUlkpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQyMjoyOTo1NC4wMTQwNzE4NzhaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMTI0ODA4NjQwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYW5hbHlzaXMgb2YgdGhlIHByb3ZpZGVkIGNvZGUgc25pcHBldDpcblxuKipEaXZpbmcgaW50byB0aGUgTVJQIEFsbG9jYXRpb24gVGVzdGluZyoqXG5cbk9rYXksIHNvIGBicl9tcnBfYWxsb2NfdGVzdF9za2JgIGlzIGdldHRpbmcgY2FsbGVkIGZyb20gYGJyX21ycF90ZXN0X3dvcmtfZXhwaXJlZGAuIFRoYXQncyB0aGUga2V5IHJlbGF0aW9uc2hpcCBJIG5lZWQgdG8gdW5kZXJzdGFuZCBoZXJlLiBNeSBmaXJzdCBpbnN0aW5jdCBpcyB0byB0cmFjZSBiYWNrIGFuZCBmaWd1cmUgb3V0IHRoZSB0aW1pbmcgYW5kIGNvbnRleHQgb2YgdGhlIGxhdHRlciwgc3BlY2lmaWNhbGx5IGhvdyBgYnJfbXJwX3Rlc3Rfd29ya19leHBpcmVkYCBpcyBzY2hlZHVsZWQuIFVuZGVyc3RhbmRpbmcgKndoZW4qIGFuZCAqd2h5KiB0aGlzIGV4cGlyeSB3b3JrIGlzIHJ1bm5pbmcgaXMgY3J1Y2lhbCB0byBncmFzcGluZyB3aGF0IHRoZSBgYnJfbXJwX2FsbG9jX3Rlc3Rfc2tiYCBmdW5jdGlvbiBpcyBhY3R1YWxseSBkb2luZyBpbiBwcmFjdGljZS4gV2hhdCdzIHRoZSBzY2hlZHVsaW5nIG1lY2hhbmlzbT8gSXMgaXQgYSB0aW1lciwgYSB3b3JrIHF1ZXVlLCBhbiBldmVudCB0cmlnZ2VyZWQgYnkgc29tZXRoaW5nIGVsc2U/IFRoZSBzY2hlZHVsaW5nIGlzIHdoZXJlIEknbGwgZmluZCB0aGUgY29uc3RyYWludHMsIHRoZSB0cmlnZ2VyIGFuZCB0aGUgaW50ZW5kZWQgYmVoYXZpb3VyIG9mIHRoaXMgZXhwaXJlZCB3b3JrIGZ1bmN0aW9uLiBUaGF0IHdpbGwgdGVsbCBtZSB3aGF0IGNvbmRpdGlvbnMgaGF2ZSB0byBiZSBtZXQgZm9yIHRoZSBgc2tiYCBhbGxvY2F0aW9uIHRlc3RpbmcgdG8gYmUgaW52b2tlZC5cblxuXG4iLCJJbnB1dFRva2VucyI6Mjg5NiwiT3V0cHV0VG9rZW5zIjo0MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjUyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDIyOjI5OjU3LjEzODg4MjE5OVoiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1ODUyMjc4OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJicl9tcnBfdGVzdF93b3JrX2V4cGlyZWRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L2JyaWRnZS9icl9tcnAuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvYnJpZGdlL2JyX21ycC5jPTIzOT1zdGF0aWMgc3RydWN0IHNrX2J1ZmYgKmJyX21ycF9hbGxvY19pbl90ZXN0X3NrYihzdHJ1Y3QgYnJfbXJwICptcnAsXFxuLS1cXG5uZXQvYnJpZGdlL2JyX21ycC5jLTI3OC0gKi9cXG5uZXQvYnJpZGdlL2JyX21ycC5jOjI3OTpzdGF0aWMgdm9pZCBicl9tcnBfdGVzdF93b3JrX2V4cGlyZWQoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxcbm5ldC9icmlkZ2UvYnJfbXJwLmMtMjgwLXtcXG4tLVxcbm5ldC9icmlkZ2UvYnJfbXJwLmM9NDk3PWludCBicl9tcnBfYWRkKHN0cnVjdCBuZXRfYnJpZGdlICpiciwgc3RydWN0IGJyX21ycF9pbnN0YW5jZSAqaW5zdGFuY2UpXFxuLS1cXG5uZXQvYnJpZGdlL2JyX21ycC5jLTU0Mi1cXG5uZXQvYnJpZGdlL2JyX21ycC5jOjU0MzpcXHRJTklUX0RFTEFZRURfV09SSyhcXHUwMDI2bXJwLVxcdTAwM2V0ZXN0X3dvcmssIGJyX21ycF90ZXN0X3dvcmtfZXhwaXJlZCk7XFxubmV0L2JyaWRnZS9icl9tcnAuYy01NDQtXFx0SU5JVF9ERUxBWUVEX1dPUksoXFx1MDAyNm1ycC1cXHUwMDNlaW5fdGVzdF93b3JrLCBicl9tcnBfaW5fdGVzdF93b3JrX2V4cGlyZWQpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQyMjoyOTo1Ny4xOTc0MTAyMDdaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyNzEwMzc1MjczLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGFuIGV4cGVydCdzIGludGVybmFsIG1vbm9sb2d1ZTpcblxuKipJbnZlc3RpZ2F0aW5nIHRoZSBJbml0aWFsaXphdGlvbiBQcm9jZXNzKipcblxuQWxyaWdodCwgc28gYGJyX21ycF9hZGRgIGlzIHRoZSBrZXkgZnVuY3Rpb24gdGhhdCBraWNrcyB0aGluZ3Mgb2ZmIGhlcmUuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byB6ZXJvIGluIG9uIHRoYXQuIEl0J3MgdGhlIHN0YXJ0aW5nIHBvaW50LCBzbyB1bmRlcnN0YW5kaW5nIGl0cyByb2xlIGFuZCBob3cgaXQncyBpbnZva2VkIGlzIGNydWNpYWwgZm9yIGEgY29tcGxldGUgcGljdHVyZS4gTGV0J3MgZGVsdmUgaW50byB0aGUgZnVuY3Rpb24gaXRzZWxmIGFuZCB0cmFjZSBpdHMgY2FsbHMgdG8gZ2V0IGEgZ3JpcCBvbiB0aGUgb3ZlcmFsbCBmbG93LiBOZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGVudHJ5IHBvaW50IGJlZm9yZSBhbnl0aGluZyBlbHNlLCBzbyBgYnJfbXJwX2FkZGAgaXQgaXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM0NzQsIk91dHB1dFRva2VucyI6MzAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQyMjoyOTo1OS45MDc3ODcyNFoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1OTI5NDI4OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJicl9tcnBfYWRkXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9icmlkZ2UvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9icmlkZ2UvYnJfbXJwLmM9NDI4PXN0YXRpYyB2b2lkIGJyX21ycF9kZWxfaW1wbChzdHJ1Y3QgbmV0X2JyaWRnZSAqYnIsIHN0cnVjdCBicl9tcnAgKm1ycClcXG4tLVxcbm5ldC9icmlkZ2UvYnJfbXJwLmMtNDk2LSAqL1xcbm5ldC9icmlkZ2UvYnJfbXJwLmM6NDk3OmludCBicl9tcnBfYWRkKHN0cnVjdCBuZXRfYnJpZGdlICpiciwgc3RydWN0IGJyX21ycF9pbnN0YW5jZSAqaW5zdGFuY2UpXFxubmV0L2JyaWRnZS9icl9tcnAuYy00OTgte1xcbi0tXFxubmV0L2JyaWRnZS9icl9tcnBfbmV0bGluay5jPTMxPXN0YXRpYyBpbnQgYnJfbXJwX2luc3RhbmNlX3BhcnNlKHN0cnVjdCBuZXRfYnJpZGdlICpiciwgc3RydWN0IG5sYXR0ciAqYXR0cixcXG4tLVxcbm5ldC9icmlkZ2UvYnJfbXJwX25ldGxpbmsuYy02MS1cXHRpZiAoY21kID09IFJUTV9TRVRMSU5LKVxcbm5ldC9icmlkZ2UvYnJfbXJwX25ldGxpbmsuYzo2MjpcXHRcXHRyZXR1cm4gYnJfbXJwX2FkZChiciwgXFx1MDAyNmluc3QpO1xcbm5ldC9icmlkZ2UvYnJfbXJwX25ldGxpbmsuYy02My1cXHRlbHNlXFxuLS1cXG5uZXQvYnJpZGdlL2JyX3ByaXZhdGVfbXJwLmg9NTk9ZW51bSBicl9tcnBfaHdfc3VwcG9ydCB7XFxuLS1cXG5uZXQvYnJpZGdlL2JyX3ByaXZhdGVfbXJwLmgtNjUtLyogYnJfbXJwLmMgKi9cXG5uZXQvYnJpZGdlL2JyX3ByaXZhdGVfbXJwLmg6NjY6aW50IGJyX21ycF9hZGQoc3RydWN0IG5ldF9icmlkZ2UgKmJyLCBzdHJ1Y3QgYnJfbXJwX2luc3RhbmNlICppbnN0YW5jZSk7XFxubmV0L2JyaWRnZS9icl9wcml2YXRlX21ycC5oLTY3LWludCBicl9tcnBfZGVsKHN0cnVjdCBuZXRfYnJpZGdlICpiciwgc3RydWN0IGJyX21ycF9pbnN0YW5jZSAqaW5zdGFuY2UpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQyMjoyOTo1OS45NjcwODY3MDhaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMTA1MTQxMTcyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipBbmFseXppbmcgdGhlIE1SUCBJbnN0YW5jZSBQYXJzaW5nIGluIEJyaWRnZSBOZXRsaW5rKipcblxuQWxyaWdodCwgc28gdGhlIGJyZWFkY3J1bWIgdHJhaWwgc3RhcnRzIHdpdGggYGJyX21ycF9pbnN0YW5jZV9wYXJzZWAgaW4gYG5ldC9icmlkZ2UvYnJfbXJwX25ldGxpbmsuY2AuIFRoYXQgZnVuY3Rpb24gY2FsbCBpbW1lZGlhdGVseSBwaXF1ZXMgbXkgaW50ZXJlc3QuIEdpdmVuIHRoaXMgY29udGV4dCwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZSBNUlAgaW5zdGFuY2UgaXMgY29uZmlndXJlZC4gU3BlY2lmaWNhbGx5LCBJJ20gdGhpbmtpbmcgYWJvdXQgdGhlIHJlbGV2YW50IGNvbmZpZ3VyYXRpb24gb3B0aW9ucyB0aGF0IGdvdmVybiB0aGlzIHBhcnRpY3VsYXIgcGFyc2luZyByb3V0aW5lLiBJIG5lZWQgdG8gdHJhY2sgZG93biB0aGUgY29uZmlndXJhdGlvbiBrbm9icyB0aGF0IGNvbnRyb2wgdGhlIGJlaGF2aW91ciBvZiB0aGlzIHNlY3Rpb24uIEkgd2lsbCBiZSBsb29raW5nIGluIHRoZSBLY29uZmlnIGZpbGVzLCBvciBwb3RlbnRpYWxseSBhdCBydW50aW1lIHVzaW5nIHN5c2ZzLiBUaGlzIGlzIHdoZXJlIEknbGwgZmluZCBteSBhbnN3ZXJzLiBOb3cgSSBuZWVkIHRvIGtub3cgd2hlcmUgdGhlIGNvbmZpZyBvcHRpb24gbGl2ZXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQwNjIsIk91dHB1dFRva2VucyI6MzIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0MiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQyMjozMDowMy4wNzIyMjk3OVoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjE1MjQ4NTgsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImJyX21ycF9hZGRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L2JyaWRnZS9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQyMjozMDowMy4xMzM3NjE2NDhaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MjYyMjYxODg1NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHN1bW1hcnksIHByZXNlbnRlZCBhcyBhIHN0cmVhbSBvZiB0aG91Z2h0OlxuXG4qKkNoZWNraW5nIHRoZSBNUlAgQ29uZmlndXJhdGlvbiBpbiB0aGUgS2VybmVsKipcblxuQWxyaWdodCwgdGltZSB0byBnZXQgdGhpcyBzb3J0ZWQuIEkgbmVlZCB0byByZWZyZXNoIG15IG1lbW9yeSBvbiB0aGUgTVJQIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyB3aXRoaW4gdGhlIGtlcm5lbC4gTGV0J3Mgc3RhcnQgYnkgbG9va2luZyBhdCB0aGUgS2NvbmZpZyBmaWxlIGZvciB0aGUgYnJpZGdlIHN1YnN5c3RlbS4gU3BlY2lmaWNhbGx5LCBgbmV0L2JyaWRnZS9LY29uZmlnYCBzaG91bGQgaG9sZCB0aGUgcmVsZXZhbnQgZGVmaW5pdGlvbnMuIFRoYXQncyB0aGUgbG9naWNhbCBwbGFjZSB0byBmaW5kIHRoZSBib29sZWFuIGNob2ljZXMsIGRlcGVuZGVuY2llcywgYW5kIGRlZmF1bHQgc2V0dGluZ3MgcmVsYXRlZCB0byBNUlAgKE11bHRpY2FzdCBSb3V0ZXIgUHJvdG9jb2wpLiBUaGlzIGZpbGUgdXN1YWxseSBwcm92aWRlcyBhIGdvb2Qgb3ZlcnZpZXcgb2Ygd2hhdCdzIHN1cHBvcnRlZCBhbmQgaG93IGl0J3MgZW5hYmxlZCBpbiB0aGUga2VybmVsIGJ1aWxkIHByb2Nlc3MuIEknbGwgbmVlZCB0byBjb25maXJtIGlmIGl0J3MgdGhlcmUsIGFuZCB0aGVuIHVuZGVyc3RhbmQgaXRzIGN1cnJlbnQgc2V0dGluZ3MuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQzMTMsIk91dHB1dFRva2VucyI6MjcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQyMjozMDowNS43NTYzODI1MDNaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU4MTkyMjU4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIk1SUFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvYnJpZGdlL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L2JyaWRnZS9LY29uZmlnPTUwPWNvbmZpZyBCUklER0VfVkxBTl9GSUxURVJJTkdcXG4tLVxcbm5ldC9icmlkZ2UvS2NvbmZpZy02My1cXG5uZXQvYnJpZGdlL0tjb25maWc6NjQ6Y29uZmlnIEJSSURHRV9NUlBcXG5uZXQvYnJpZGdlL0tjb25maWc6NjU6XFx0Ym9vbCBcXFwiTVJQIHByb3RvY29sXFxcIlxcbm5ldC9icmlkZ2UvS2NvbmZpZy02Ni1cXHRkZXBlbmRzIG9uIEJSSURHRVxcbi0tXFxubmV0L2JyaWRnZS9LY29uZmlnLTY4LVxcdGhlbHBcXG5uZXQvYnJpZGdlL0tjb25maWc6Njk6XFx0ICBJZiB5b3Ugc2F5IFkgaGVyZSwgdGhlbiB0aGUgRXRoZXJuZXQgYnJpZGdlIHdpbGwgYmUgYWJsZSB0byBydW4gTVJQXFxubmV0L2JyaWRnZS9LY29uZmlnLTcwLVxcdCAgcHJvdG9jb2wgdG8gZGV0ZWN0IGxvb3BzXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDIyOjMwOjA1LjgxNDU3OTAzMloiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNjEzMTI0MzE2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYW5hbHlzaXMgb2YgdGhlIHNpdHVhdGlvbjpcblxuKipJbnZlc3RpZ2F0aW5nIHRoZSBNUlAgQnJpZGdpbmcgQ29uZmlndXJhdGlvbioqXG5cbk9rYXksIHNvIHdlJ3JlIGxvb2tpbmcgYXQgYSBjb25maWd1cmF0aW9uIHNwZWNpZmljYWxseSBkZXNpZ25hdGVkIGFzIGBCUklER0VfTVJQYC4gTXkgaW5pdGlhbCBmb2N1cyBpcyBvbiB1bmRlcnN0YW5kaW5nIHRoZSB0ZXN0IHdvcmsgbWVjaGFuaXNtIHdpdGhpbiB0aGlzIGJyaWRnaW5nIGNvbnRleHQuIEkgbmVlZCB0byB6ZXJvIGluIG9uIGhvdyB0aGUgTVJQIChNdWx0aWNhc3QgUmVnaXN0cmF0aW9uIFByb3RvY29sKSB0ZXN0cyBhcmUgaW5pdGlhdGVkIGFuZCBtYW5hZ2VkLlxuXG5JIG5lZWQgdG8gZGlnIGludG8gdGhlIHJlbGV2YW50IGZ1bmN0aW9ucy4gQmFzZWQgb24gdGhlIGNsdWVzLCBJJ2xsIGJlIGNvbmNlbnRyYXRpbmcgb24gZWl0aGVyIGBicl9tcnBfYWxsb2NfdGVzdF9za2JgLCB3aGljaCBwcm9iYWJseSBpbnZvbHZlcyBhbGxvY2F0aW5nIHRoZSB0ZXN0IHNrYiAoc29ja2V0IGJ1ZmZlcikgdGhhdCB0aGUgdGVzdCB3b3JrIHdpbGwgdXNlLCBvciBgYnJfbXJwX3Rlc3Rfd29ya19leHBpcmVkYCwgc3VnZ2VzdGluZyBzb21ldGhpbmcgYWJvdXQgaGFuZGxpbmcgdGltZW91dHMuIGBicl9tcnBfYWRkYCBpcyBhbHNvIGEgcGxheWVyLCBsaWtlbHkgcmVsYXRlZCB0byBhZGRpbmcgZW50cmllcyB0byB0aGUgTVJQLiBBbmQsIG9mIGNvdXJzZSwgdGhlIGtleSBpbml0aWF0b3IsIGBicl9tcnBfc3RhcnRfdGVzdGAsIHNlZW1zIGNyaXRpY2FsLCBpdCdzIHRoZSBvYnZpb3VzIGVudHJ5IHBvaW50IHRvIHRyYWNlLCBhcyBpdCBzaG91bGQgYmUga2lja2luZyBvZmYgdGhlIHdob2xlIHRlc3RpbmcgcHJvY2Vzcy4gTXkgZ29hbCBpcyB0byBmaWd1cmUgb3V0IGV4YWN0bHkgKndoYXQqIGZ1bmN0aW9uIG9yIGV2ZW50ICpzdGFydHMqIHRoaXMgdGVzdCB3b3JrLiBUaGF0J3MgdGhlIGtleSB0byB1bmRlcnN0YW5kaW5nIHRoZSBjb250cm9sIGZsb3cgYW5kIHBvdGVudGlhbCBwcm9ibGVtcy4gSSBuZWVkIHRvIHBpbnBvaW50IHRoYXQgc3RhcnRpbmcgcG9pbnQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ2NTgsIk91dHB1dFRva2VucyI6MzMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo3MiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQyMjozMDowOS40Mjc3MDUyMjhaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjYzMDc2NjY5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInRlc3Rfd29ya1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvYnJpZGdlL2JyX21ycC5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9icmlkZ2UvYnJfbXJwLmM9MjM5PXN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqYnJfbXJwX2FsbG9jX2luX3Rlc3Rfc2tiKHN0cnVjdCBicl9tcnAgKm1ycCxcXG4tLVxcbm5ldC9icmlkZ2UvYnJfbXJwLmMtMjc4LSAqL1xcbm5ldC9icmlkZ2UvYnJfbXJwLmM6Mjc5OnN0YXRpYyB2b2lkIGJyX21ycF90ZXN0X3dvcmtfZXhwaXJlZChzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXFxubmV0L2JyaWRnZS9icl9tcnAuYy0yODAte1xcbm5ldC9icmlkZ2UvYnJfbXJwLmMtMjgxLVxcdHN0cnVjdCBkZWxheWVkX3dvcmsgKmRlbF93b3JrID0gdG9fZGVsYXllZF93b3JrKHdvcmspO1xcbm5ldC9icmlkZ2UvYnJfbXJwLmM6MjgyOlxcdHN0cnVjdCBicl9tcnAgKm1ycCA9IGNvbnRhaW5lcl9vZihkZWxfd29yaywgc3RydWN0IGJyX21ycCwgdGVzdF93b3JrKTtcXG5uZXQvYnJpZGdlL2JyX21ycC5jLTI4My1cXHRzdHJ1Y3QgbmV0X2JyaWRnZV9wb3J0ICpwO1xcbi0tXFxubmV0L2JyaWRnZS9icl9tcnAuYy0zNDMtXFxubmV0L2JyaWRnZS9icl9tcnAuYzozNDQ6XFx0cXVldWVfZGVsYXllZF93b3JrKHN5c3RlbV9wZXJjcHVfd3EsIFxcdTAwMjZtcnAtXFx1MDAzZXRlc3Rfd29yayxcXG5uZXQvYnJpZGdlL2JyX21ycC5jLTM0NS1cXHRcXHRcXHQgICB1c2Vjc190b19qaWZmaWVzKG1ycC1cXHUwMDNldGVzdF9pbnRlcnZhbCkpO1xcbi0tXFxubmV0L2JyaWRnZS9icl9tcnAuYy0zNTEtICovXFxubmV0L2JyaWRnZS9icl9tcnAuYzozNTI6c3RhdGljIHZvaWQgYnJfbXJwX2luX3Rlc3Rfd29ya19leHBpcmVkKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcXG5uZXQvYnJpZGdlL2JyX21ycC5jLTM1My17XFxubmV0L2JyaWRnZS9icl9tcnAuYy0zNTQtXFx0c3RydWN0IGRlbGF5ZWRfd29yayAqZGVsX3dvcmsgPSB0b19kZWxheWVkX3dvcmsod29yayk7XFxubmV0L2JyaWRnZS9icl9tcnAuYzozNTU6XFx0c3RydWN0IGJyX21ycCAqbXJwID0gY29udGFpbmVyX29mKGRlbF93b3JrLCBzdHJ1Y3QgYnJfbXJwLCBpbl90ZXN0X3dvcmspO1xcbm5ldC9icmlkZ2UvYnJfbXJwLmMtMzU2LVxcdHN0cnVjdCBuZXRfYnJpZGdlX3BvcnQgKnA7XFxuLS1cXG5uZXQvYnJpZGdlL2JyX21ycC5jLTQyMC1cXG5uZXQvYnJpZGdlL2JyX21ycC5jOjQyMTpcXHRxdWV1ZV9kZWxheWVkX3dvcmsoc3lzdGVtX3BlcmNwdV93cSwgXFx1MDAyNm1ycC1cXHUwMDNlaW5fdGVzdF93b3JrLFxcbm5ldC9icmlkZ2UvYnJfbXJwLmMtNDIyLVxcdFxcdFxcdCAgIHVzZWNzX3RvX2ppZmZpZXMobXJwLVxcdTAwM2Vpbl90ZXN0X2ludGVydmFsKSk7XFxuLS1cXG5uZXQvYnJpZGdlL2JyX21ycC5jPTQyOD1zdGF0aWMgdm9pZCBicl9tcnBfZGVsX2ltcGwoc3RydWN0IG5ldF9icmlkZ2UgKmJyLCBzdHJ1Y3QgYnJfbXJwICptcnApXFxuLS1cXG5uZXQvYnJpZGdlL2JyX21ycC5jLTQzMy1cXHQvKiBTdG9wIHNlbmRpbmcgTVJQX1Rlc3QgZnJhbWVzICovXFxubmV0L2JyaWRnZS9icl9tcnAuYzo0MzQ6XFx0Y2FuY2VsX2RlbGF5ZWRfd29ya19zeW5jKFxcdTAwMjZtcnAtXFx1MDAzZXRlc3Rfd29yayk7XFxubmV0L2JyaWRnZS9icl9tcnAuYy00MzUtXFx0YnJfbXJwX3N3aXRjaGRldl9zZW5kX3JpbmdfdGVzdChiciwgbXJwLCAwLCAwLCAwLCAwKTtcXG4tLVxcbm5ldC9icmlkZ2UvYnJfbXJwLmMtNDM3LVxcdC8qIFN0b3Agc2VuZGluZyBNUlBfSW5UZXN0IGZyYW1lcyBpZiBoYXMgYW4gaW50ZXJjb25uZWN0IHJvbGUgKi9cXG5uZXQvYnJpZGdlL2JyX21ycC5jOjQzODpcXHRjYW5jZWxfZGVsYXllZF93b3JrX3N5bmMoXFx1MDAyNm1ycC1cXHUwMDNlaW5fdGVzdF93b3JrKTtcXG5uZXQvYnJpZGdlL2JyX21ycC5jLTQzOS1cXHRicl9tcnBfc3dpdGNoZGV2X3NlbmRfaW5fdGVzdChiciwgbXJwLCAwLCAwLCAwKTtcXG4tLVxcbm5ldC9icmlkZ2UvYnJfbXJwLmM9NDk3PWludCBicl9tcnBfYWRkKHN0cnVjdCBuZXRfYnJpZGdlICpiciwgc3RydWN0IGJyX21ycF9pbnN0YW5jZSAqaW5zdGFuY2UpXFxuLS1cXG5uZXQvYnJpZGdlL2JyX21ycC5jLTU0Mi1cXG5uZXQvYnJpZGdlL2JyX21ycC5jOjU0MzpcXHRJTklUX0RFTEFZRURfV09SSyhcXHUwMDI2bXJwLVxcdTAwM2V0ZXN0X3dvcmssIGJyX21ycF90ZXN0X3dvcmtfZXhwaXJlZCk7XFxubmV0L2JyaWRnZS9icl9tcnAuYzo1NDQ6XFx0SU5JVF9ERUxBWUVEX1dPUksoXFx1MDAyNm1ycC1cXHUwMDNlaW5fdGVzdF93b3JrLCBicl9tcnBfaW5fdGVzdF93b3JrX2V4cGlyZWQpO1xcbm5ldC9icmlkZ2UvYnJfbXJwLmMtNTQ1LVxcdGhsaXN0X2FkZF90YWlsX3JjdShcXHUwMDI2bXJwLVxcdTAwM2VsaXN0LCBcXHUwMDI2YnItXFx1MDAzZW1ycF9saXN0KTtcXG4tLVxcbm5ldC9icmlkZ2UvYnJfbXJwLmM9NzAyPWludCBicl9tcnBfc3RhcnRfdGVzdChzdHJ1Y3QgbmV0X2JyaWRnZSAqYnIsXFxuLS1cXG5uZXQvYnJpZGdlL2JyX21ycC5jLTcyNy1cXHRtcnAtXFx1MDAzZXRlc3RfY291bnRfbWlzcyA9IDA7XFxubmV0L2JyaWRnZS9icl9tcnAuYzo3Mjg6XFx0cXVldWVfZGVsYXllZF93b3JrKHN5c3RlbV9wZXJjcHVfd3EsIFxcdTAwMjZtcnAtXFx1MDAzZXRlc3Rfd29yayxcXG5uZXQvYnJpZGdlL2JyX21ycC5jLTcyOS1cXHRcXHRcXHQgICB1c2Vjc190b19qaWZmaWVzKHRlc3QtXFx1MDAzZWludGVydmFsKSk7XFxuLS1cXG5uZXQvYnJpZGdlL2JyX21ycC5jPTc1OD1pbnQgYnJfbXJwX3NldF9pbl9yb2xlKHN0cnVjdCBuZXRfYnJpZGdlICpiciwgc3RydWN0IGJyX21ycF9pbl9yb2xlICpyb2xlKVxcbi0tXFxubmV0L2JyaWRnZS9icl9tcnAuYy03NzgtXFx0XFx0LyogU3RvcCB0aGUgZ2VuZXJhdGluZyBNUlBfSW5UZXN0IGZyYW1lcyAqL1xcbm5ldC9icmlkZ2UvYnJfbXJwLmM6Nzc5OlxcdFxcdGNhbmNlbF9kZWxheWVkX3dvcmtfc3luYyhcXHUwMDI2bXJwLVxcdTAwM2Vpbl90ZXN0X3dvcmspO1xcbm5ldC9icmlkZ2UvYnJfbXJwLmMtNzgwLVxcdFxcdGJyX21ycF9zd2l0Y2hkZXZfc2VuZF9pbl90ZXN0KGJyLCBtcnAsIDAsIDAsIDApO1xcbi0tXFxubmV0L2JyaWRnZS9icl9tcnAuYz04NDA9aW50IGJyX21ycF9zdGFydF9pbl90ZXN0KHN0cnVjdCBuZXRfYnJpZGdlICpicixcXG4tLVxcbm5ldC9icmlkZ2UvYnJfbXJwLmMtODY3LVxcdG1ycC1cXHUwMDNlaW5fdGVzdF9jb3VudF9taXNzID0gMDtcXG5uZXQvYnJpZGdlL2JyX21ycC5jOjg2ODpcXHRxdWV1ZV9kZWxheWVkX3dvcmsoc3lzdGVtX3BlcmNwdV93cSwgXFx1MDAyNm1ycC1cXHUwMDNlaW5fdGVzdF93b3JrLFxcbm5ldC9icmlkZ2UvYnJfbXJwLmMtODY5LVxcdFxcdFxcdCAgIHVzZWNzX3RvX2ppZmZpZXMoaW5fdGVzdC1cXHUwMDNlaW50ZXJ2YWwpKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjZUMjI6MzA6MDkuNDkwNzg1NzA3WiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI4NzkwNDgwOTgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0YWtlIG9uIHRoZSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIGl0IHdlcmUgbXkgb3duOlxuXG4qKkluaXRpYWxpemluZyB0aGUgTVJQIFRlc3QqKlxuXG5Pa2F5LCBzbyB3ZSdyZSBraWNraW5nIHRoaW5ncyBvZmYgd2l0aCBgYnJfbXJwX3N0YXJ0X3Rlc3RgLiBUaGF0J3Mgb3VyIGVudHJ5IHBvaW50IGZvciB0aGlzIHRlc3QgcnVuLiBOb3csIG15IGltbWVkaWF0ZSBpbnN0aW5jdCBpcyB0byB0cmFjZSBiYWNrIGl0cyBleGVjdXRpb24uIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjYWxsaW5nIGNvbnRleHQuIExldCdzIHNlZSBleGFjdGx5IHdoZXJlIGBicl9tcnBfc3RhcnRfdGVzdGAgaXMgaW52b2tlZC4gVW5kZXJzdGFuZGluZyB0aGUgY2FsbGluZyBmdW5jdGlvbihzKSBpcyBjcnVjaWFsIGZvciB1bmRlcnN0YW5kaW5nIHRoZSBvdmVyYWxsIGZsb3cgYW5kIHBvdGVudGlhbCBkZXBlbmRlbmNpZXMgb2YgdGhlIHRlc3QuIEkgd2FudCB0byBzZWUgKmhvdyogdGhpcyB0ZXN0IGlzIGJlaW5nIGluaXRpYXRlZC5cblxuXG4iLCJJbnB1dFRva2VucyI6NjUwMSwiT3V0cHV0VG9rZW5zIjozMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDIyOjMwOjEyLjM2OTgzNTc1NFoiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjAwMDY3NTgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiYnJfbXJwX3N0YXJ0X3Rlc3RcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L2JyaWRnZS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L2JyaWRnZS9icl9tcnAuYz02NzE9aW50IGJyX21ycF9zZXRfcmluZ19yb2xlKHN0cnVjdCBuZXRfYnJpZGdlICpicixcXG4tLVxcbm5ldC9icmlkZ2UvYnJfbXJwLmMtNzAxLSAqL1xcbm5ldC9icmlkZ2UvYnJfbXJwLmM6NzAyOmludCBicl9tcnBfc3RhcnRfdGVzdChzdHJ1Y3QgbmV0X2JyaWRnZSAqYnIsXFxubmV0L2JyaWRnZS9icl9tcnAuYzo3MDM6XFx0XFx0ICAgICAgc3RydWN0IGJyX21ycF9zdGFydF90ZXN0ICp0ZXN0KVxcbm5ldC9icmlkZ2UvYnJfbXJwLmMtNzA0LXtcXG4tLVxcbm5ldC9icmlkZ2UvYnJfbXJwX25ldGxpbmsuYz0xOTU9c3RhdGljIGNvbnN0IHN0cnVjdCBubGFfcG9saWN5XFxubmV0L2JyaWRnZS9icl9tcnBfbmV0bGluay5jOjE5Njpicl9tcnBfc3RhcnRfdGVzdF9wb2xpY3lbSUZMQV9CUklER0VfTVJQX1NUQVJUX1RFU1RfTUFYICsgMV0gPSB7XFxubmV0L2JyaWRnZS9icl9tcnBfbmV0bGluay5jLTE5Ny1cXHRbSUZMQV9CUklER0VfTVJQX1NUQVJUX1RFU1RfVU5TUEVDXVxcdD0geyAudHlwZSA9IE5MQV9SRUpFQ1QgfSxcXG4tLVxcbm5ldC9icmlkZ2UvYnJfbXJwX25ldGxpbmsuYy0yMDQtXFxubmV0L2JyaWRnZS9icl9tcnBfbmV0bGluay5jOjIwNTpzdGF0aWMgaW50IGJyX21ycF9zdGFydF90ZXN0X3BhcnNlKHN0cnVjdCBuZXRfYnJpZGdlICpiciwgc3RydWN0IG5sYXR0ciAqYXR0cixcXG5uZXQvYnJpZGdlL2JyX21ycF9uZXRsaW5rLmMtMjA2LVxcdFxcdFxcdFxcdCAgIHN0cnVjdCBuZXRsaW5rX2V4dF9hY2sgKmV4dGFjaylcXG4tLVxcbm5ldC9icmlkZ2UvYnJfbXJwX25ldGxpbmsuYy0yMDgtXFx0c3RydWN0IG5sYXR0ciAqdGJbSUZMQV9CUklER0VfTVJQX1NUQVJUX1RFU1RfTUFYICsgMV07XFxubmV0L2JyaWRnZS9icl9tcnBfbmV0bGluay5jOjIwOTpcXHRzdHJ1Y3QgYnJfbXJwX3N0YXJ0X3Rlc3QgdGVzdDtcXG5uZXQvYnJpZGdlL2JyX21ycF9uZXRsaW5rLmMtMjEwLVxcdGludCBlcnI7XFxuLS1cXG5uZXQvYnJpZGdlL2JyX21ycF9uZXRsaW5rLmMtMjEyLVxcdGVyciA9IG5sYV9wYXJzZV9uZXN0ZWQodGIsIElGTEFfQlJJREdFX01SUF9TVEFSVF9URVNUX01BWCwgYXR0cixcXG5uZXQvYnJpZGdlL2JyX21ycF9uZXRsaW5rLmM6MjEzOlxcdFxcdFxcdCAgICAgICBicl9tcnBfc3RhcnRfdGVzdF9wb2xpY3ksIGV4dGFjayk7XFxubmV0L2JyaWRnZS9icl9tcnBfbmV0bGluay5jLTIxNC1cXHRpZiAoZXJyKVxcbi0tXFxubmV0L2JyaWRnZS9icl9tcnBfbmV0bGluay5jLTIzNy1cXG5uZXQvYnJpZGdlL2JyX21ycF9uZXRsaW5rLmM6MjM4OlxcdHJldHVybiBicl9tcnBfc3RhcnRfdGVzdChiciwgXFx1MDAyNnRlc3QpO1xcbm5ldC9icmlkZ2UvYnJfbXJwX25ldGxpbmsuYy0yMzktfVxcbi0tXFxubmV0L2JyaWRnZS9icl9tcnBfbmV0bGluay5jPTM1Nj1pbnQgYnJfbXJwX3BhcnNlKHN0cnVjdCBuZXRfYnJpZGdlICpiciwgc3RydWN0IG5ldF9icmlkZ2VfcG9ydCAqcCxcXG4tLVxcbm5ldC9icmlkZ2UvYnJfbXJwX25ldGxpbmsuYy00MTQtXFx0aWYgKHRiW0lGTEFfQlJJREdFX01SUF9TVEFSVF9URVNUXSkge1xcbm5ldC9icmlkZ2UvYnJfbXJwX25ldGxpbmsuYzo0MTU6XFx0XFx0ZXJyID0gYnJfbXJwX3N0YXJ0X3Rlc3RfcGFyc2UoYnIsXFxubmV0L2JyaWRnZS9icl9tcnBfbmV0bGluay5jLTQxNi1cXHRcXHRcXHRcXHRcXHQgICAgICB0YltJRkxBX0JSSURHRV9NUlBfU1RBUlRfVEVTVF0sXFxuLS1cXG5uZXQvYnJpZGdlL2JyX3ByaXZhdGVfbXJwLmg9NzQ9aW50IGJyX21ycF9zZXRfcmluZ19yb2xlKHN0cnVjdCBuZXRfYnJpZGdlICpiciwgc3RydWN0IGJyX21ycF9yaW5nX3JvbGUgKnJvbGUpO1xcbm5ldC9icmlkZ2UvYnJfcHJpdmF0ZV9tcnAuaDo3NTppbnQgYnJfbXJwX3N0YXJ0X3Rlc3Qoc3RydWN0IG5ldF9icmlkZ2UgKmJyLCBzdHJ1Y3QgYnJfbXJwX3N0YXJ0X3Rlc3QgKnRlc3QpO1xcbm5ldC9icmlkZ2UvYnJfcHJpdmF0ZV9tcnAuaC03Ni1pbnQgYnJfbXJwX3NldF9pbl9zdGF0ZShzdHJ1Y3QgbmV0X2JyaWRnZSAqYnIsIHN0cnVjdCBicl9tcnBfaW5fc3RhdGUgKnN0YXRlKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjZUMjI6MzA6MTIuNDI5ODQ3MDAzWiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ3MDI4OTE5ODUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBCdWcgaW4gdGhlIEJyaWRnZSBNUlAgVGVzdCBDb2RlKipcblxuT2theSwgc28gSSdtIGRpZ2dpbmcgaW50byB0aGlzIGJ1Zy4gSXQgbG9va3MgbGlrZSB0aGUgbmV0bGluayBlbnRyeSBwb2ludCBmb3IgdGhpcyB3aG9sZSBNUlAgdGVzdCBwcm9jZXNzIGlzIGBicl9tcnBfc3RhcnRfdGVzdGAuIFRoZSByb290IG9mIHRoZSBwcm9ibGVtIHNlZW1zIHRvIGJlIHdpdGhpbiBgYnJfbXJwX2FsbG9jX3Rlc3Rfc2tiYC4gVGhhdCBmdW5jdGlvbiBpcyBjYWxsZWQgYnkgYGJyX21ycF90ZXN0X3dvcmtfZXhwaXJlZGAsIHdoaWNoLCBpbiB0dXJuLCBpcyBzY2hlZHVsZWQgYnkgYGJyX21ycF9zdGFydF90ZXN0YC4gU2VlbXMgbGlrZSB0aGUgZml4IGl0c2VsZiBhZGRyZXNzZXMgYSBzaXplIGNhbGN1bGF0aW9uIGlzc3VlLCBwdXJlbHkgZnVuY3Rpb25hbC5cblxuTm93LCBhIGNydWNpYWwgcXVlc3Rpb24g4oCTIGlzIHRoaXMgY29kZSBwYXRoIGV2ZW4gKnJlYWNoYWJsZSogaW4gYSBRRU1VIGVudmlyb25tZW50PyBZZXMsIHRoYW5rZnVsbHksIGl0J3MgcGFydCBvZiB0aGUgYnJpZGdlIG1vZHVsZS4gU2luY2UgdGhhdCdzIGVudGlyZWx5IHNvZnR3YXJlLWJhc2VkLCB0aGVyZSBzaG91bGRuJ3QgYmUgYW55IGhhcmR3YXJlIGRlcGVuZGVuY2llcyBibG9ja2luZyB1cy4gSSBjYW4gZGVmaW5pdGVseSByZXByb2R1Y2UgdGhpcy5cblxuVGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9uIHRvIGVuYWJsZSBhbGwgdGhpcyBpcyBgQlJJREdFX01SUGAsIHdoaWNoIEknbGwga2VlcCBpbiBtaW5kIGZvciBzZXR1cC5cblxuUmVnYXJkaW5nIHN5bWJvbHMsIEkgbmVlZCB0byBmb2N1cyBvbiBgYnJfbXJwX3N0YXJ0X3Rlc3RgLCBvYnZpb3VzbHksIGFuZCB0aGVuIGFsc28gYGJyX21ycF90ZXN0X3dvcmtfZXhwaXJlZGAgYmVjYXVzZSBpdCBpcyB0aGUgZnVuY3Rpb24gdGhhdCBzY2hlZHVsZXMgYGJyX21ycF9hbGxvY190ZXN0X3NrYmAuIEknbGwgaGF2ZSB0byBpbnZlc3RpZ2F0ZSBpZiBgYnJfbXJwX2FsbG9jX3Rlc3Rfc2tiYCBpcyBzdGF0aWMgb3IgcG90ZW50aWFsbHkgaW5saW5lZCBieSB0aGUgY29tcGlsZXIuIElmIGl0J3MgKm5vdCogaW5saW5lZCwgdGhlbiBJJ2xsIGRlZmluaXRlbHkgbmVlZCB0byBleGFtaW5lIGl0IG1vcmUgY2xvc2VseS4gV2FpdCwgaXQgKmlzKiBzdGF0aWM7IEkgbmVlZCB0byB2ZXJpZnkgdGhhdCBpdCdzIG5vdCBiZWluZyBpbmxpbmVkIHRvIGVuc3VyZSBwcm9wZXIgZGVidWdnaW5nLlxuXG5cbiIsIklucHV0VG9rZW5zIjo3NjQwLCJPdXRwdXRUb2tlbnMiOjQxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTgyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDIyOjMwOjE3LjEzMjc0MTAxOFoiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjI0NTU5NjgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiYnJfbXJwX2FsbG9jX3Rlc3Rfc2tiXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9icmlkZ2UvYnJfbXJwLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L2JyaWRnZS9icl9tcnAuYz0xNzE9c3RhdGljIHZvaWQgYnJfbXJwX3NrYl9jb21tb24oc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGJyX21ycCAqbXJwKVxcbi0tXFxubmV0L2JyaWRnZS9icl9tcnAuYy0xODEtXFxubmV0L2JyaWRnZS9icl9tcnAuYzoxODI6c3RhdGljIHN0cnVjdCBza19idWZmICpicl9tcnBfYWxsb2NfdGVzdF9za2Ioc3RydWN0IGJyX21ycCAqbXJwLFxcbm5ldC9icmlkZ2UvYnJfbXJwLmMtMTgzLVxcdFxcdFxcdFxcdFxcdCAgICAgc3RydWN0IG5ldF9icmlkZ2VfcG9ydCAqcCxcXG4tLVxcbm5ldC9icmlkZ2UvYnJfbXJwLmM9Mjc5PXN0YXRpYyB2b2lkIGJyX21ycF90ZXN0X3dvcmtfZXhwaXJlZChzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXFxuLS1cXG5uZXQvYnJpZGdlL2JyX21ycC5jLTMxMS1cXHRcXHRpZiAoIW1ycC1cXHUwMDNldGVzdF9tb25pdG9yKSB7XFxubmV0L2JyaWRnZS9icl9tcnAuYzozMTI6XFx0XFx0XFx0c2tiID0gYnJfbXJwX2FsbG9jX3Rlc3Rfc2tiKG1ycCwgcCxcXG5uZXQvYnJpZGdlL2JyX21ycC5jLTMxMy1cXHRcXHRcXHRcXHRcXHRcXHQgICAgQlJfTVJQX1BPUlRfUk9MRV9QUklNQVJZKTtcXG4tLVxcbm5ldC9icmlkZ2UvYnJfbXJwLmMtMzI3LVxcdFxcdGlmICghbXJwLVxcdTAwM2V0ZXN0X21vbml0b3IpIHtcXG5uZXQvYnJpZGdlL2JyX21ycC5jOjMyODpcXHRcXHRcXHRza2IgPSBicl9tcnBfYWxsb2NfdGVzdF9za2IobXJwLCBwLFxcbm5ldC9icmlkZ2UvYnJfbXJwLmMtMzI5LVxcdFxcdFxcdFxcdFxcdFxcdCAgICBCUl9NUlBfUE9SVF9ST0xFX1NFQ09OREFSWSk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDIyOjMwOjE3LjE5NTIwMjU5NloiLCJTZXEiOjE5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MDY4MTAyNzM0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgYGJyX21ycGAgQ29kZSoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgYGJyX21ycGAgY29kZS4gRmlyc3QgdGhpbmcgdGhhdCBqdW1wcyBvdXQgaXMgYGJyX21ycF9hbGxvY190ZXN0X3NrYmAuIFNpbmNlIGl0J3Mgc3RhdGljLCB0aGVyZSdzIGEgZ29vZCBjaGFuY2UgdGhlIGNvbXBpbGVyIHdpbGwganVzdCBpbmxpbmUgaXQuIFRoYXQncyBub3Qgd2hlcmUgSSB3YW50IHRvIGZvY3VzLCBzbyBsZXQncyBtb3ZlIG9uLlxuXG5Ob3csIG15IGF0dGVudGlvbidzIG9uIGBicl9tcnBfdGVzdF93b3JrX2V4cGlyZWRgIGFuZCBgYnJfbXJwX3N0YXJ0X3Rlc3RgLiBgYnJfbXJwX3Rlc3Rfd29ya19leHBpcmVkYCBpcyBhIHdvcmtxdWV1ZSBjYWxsYmFjaywgd2hpY2ggbWVhbnMgaXQgd29uJ3QgYmUgaW5saW5lZC4gQW5kIGBicl9tcnBfc3RhcnRfdGVzdGAgaXMgZXhwb3J0ZWQsIHNvIGl0J3MgYSBnbG9iYWwgZnVuY3Rpb24uIFNlZW1zIGxpa2UgYSBnb29kIHBsYWNlIHRvIHN0YXJ0IGRpZ2dpbmcgZGVlcGVyLlxuXG5IYW5nIG9uIGEgc2Vjb25k4oCmSSBqdXN0IGNhdWdodCBzb21ldGhpbmcuIEkgdGhvdWdodCBgYnJfbXJwX3Rlc3Rfd29ya19leHBpcmVkYCBiZWluZyBzdGF0aWMgd291bGQgbWVhbiBpbmxpbmluZyB3YXMgcG9zc2libGUsIGJ1dCB0aGUgYWRkcmVzcyBvZiB0aGF0IGZ1bmN0aW9uIGlzIHRha2VuIGZvciBgSU5JVF9ERUxBWUVEX1dPUktgLiBTbywgdGhlIGNvbXBpbGVyICp3b24ndCogaW5saW5lIGl0IGFmdGVyIGFsbC4gSW50ZXJlc3RpbmcuIFRoYXQgZGVmaW5pdGVseSBtZWFucyBJIG5lZWQgdG8gY2lyY2xlIGJhY2sgdG8gaXQuXG5cbkFscmlnaHQsIGJ1dCBmb3Igbm93LCBJJ20gZ29pbmcgdG8gc2hpZnQgbXkgZm9jdXMgYmFjayB0byBgYnJfbXJwX3N0YXJ0X3Rlc3RgLlxuXG5cbiIsIklucHV0VG9rZW5zIjo4NTcyLCJPdXRwdXRUb2tlbnMiOjM4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTMxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDIyOjMwOjIxLjI2MzMwNzQ3WiIsIlNlcSI6MjAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2MDA5Njc0OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJicl9tcnBfc3RhcnRfdGVzdFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvYnJpZGdlL2JyX21ycC5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9icmlkZ2UvYnJfbXJwLmM9NjcxPWludCBicl9tcnBfc2V0X3Jpbmdfcm9sZShzdHJ1Y3QgbmV0X2JyaWRnZSAqYnIsXFxuLS1cXG5uZXQvYnJpZGdlL2JyX21ycC5jLTcwMS0gKi9cXG5uZXQvYnJpZGdlL2JyX21ycC5jOjcwMjppbnQgYnJfbXJwX3N0YXJ0X3Rlc3Qoc3RydWN0IG5ldF9icmlkZ2UgKmJyLFxcbm5ldC9icmlkZ2UvYnJfbXJwLmM6NzAzOlxcdFxcdCAgICAgIHN0cnVjdCBicl9tcnBfc3RhcnRfdGVzdCAqdGVzdClcXG5uZXQvYnJpZGdlL2JyX21ycC5jLTcwNC17XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDIyOjMwOjIxLjMyMzQwOTUyOVoiLCJTZXEiOjIxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMTc2NzAzMTA5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIG15IG93biBtZW50YWwgcHJvY2VzcywgZ2l2ZW4gbXkgZXhwZXJ0aXNlOlxuXG4qKkNoZWNraW5nIHRoZSBNUlAgVGVzdCBTdGFydCoqXG5cbkFscmlnaHQsIGBicl9tcnBfc3RhcnRfdGVzdGAuLi4gdGhhdCByaW5ncyBhIGJlbGwuIEl0J3MgYSBnbG9iYWwgZnVuY3Rpb24sIG1lYW5pbmcgaXQncyBsaWtlbHkgYSBjZW50cmFsIGVudHJ5IHBvaW50IG9yIGEgY29yZSBwaWVjZSBvZiBvdXIgTVJQIChNYXRlcmlhbCBSZXF1aXJlbWVudHMgUGxhbm5pbmcpIHN5c3RlbS4gQmVmb3JlIEkgZ28gdG9vIGRlZXAsIEkgc2hvdWxkIHByb2JhYmx5IGRvdWJsZS1jaGVjayB0aGUgYXNzb2NpYXRlZCB0YXNrLCBgYnJfbXJwX3Rlc3Rfd29ya19leHBpcmVkYC4gVGhhdCBmZWVscyBsaWtlIGEgY3J1Y2lhbCByZWxhdGVkIHByb2Nlc3MuIFdoYXTigJlzIGdvaW5nIG9uIHdpdGggZXhwaXJlZCB3b3JrIGluIHRoZSBjb250ZXh0IG9mIHN0YXJ0aW5nIGEgdGVzdD8gSXMgaXQgYSBzZXR1cCByZXF1aXJlbWVudD8gQXJlIHdlIGluaXRpYWxpemluZyB0aGUgdGVzdHMgYmFzZWQgb24gc29tZSBleGlzdGluZyB3b3JrIHN0YXR1cyBvciB2YWxpZGF0aW9uPyBOZWVkIHRvIGRldGVybWluZSBpZiBpdHMgcGFydCBvZiBzdGFydGluZyB0aGUgTVJQIHByb2Nlc3Mgb3IgaWYgc29tZSBkYXRhIGlzIG5vdCByZWFkeSB0byBjb250aW51ZSB0aGUgcHJvY2Vzcy4gVGhpcyBsaWtlbHkgZGljdGF0ZXMgaWYgdGhlcmUgaXMgYSBibG9ja2luZyBpc3N1ZSBvciBpZiB0aGVyZSBhcmUgY2VydGFpbiB3b3JrIGZsb3dzIGZvciBwcm9jZXNzaW5nIHRoZSBpbmZvcm1hdGlvbiBiZWluZyBjcmVhdGVkLiBHb3R0YSBpbnZlc3RpZ2F0ZSB0aGF0IGNvbm5lY3Rpb24gYmVmb3JlIEkgbWFrZSBhbnkgYXNzdW1wdGlvbnMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjkxNjcsIk91dHB1dFRva2VucyI6NDAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQyMjozMDoyNC41MDAxMTQ2NzhaIiwiU2VxIjoyMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU2MzYzMDY4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImJyX21ycF90ZXN0X3dvcmtfZXhwaXJlZFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvYnJpZGdlL2JyX21ycC5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9icmlkZ2UvYnJfbXJwLmM9MjM5PXN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqYnJfbXJwX2FsbG9jX2luX3Rlc3Rfc2tiKHN0cnVjdCBicl9tcnAgKm1ycCxcXG4tLVxcbm5ldC9icmlkZ2UvYnJfbXJwLmMtMjc4LSAqL1xcbm5ldC9icmlkZ2UvYnJfbXJwLmM6Mjc5OnN0YXRpYyB2b2lkIGJyX21ycF90ZXN0X3dvcmtfZXhwaXJlZChzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXFxubmV0L2JyaWRnZS9icl9tcnAuYy0yODAte1xcbi0tXFxubmV0L2JyaWRnZS9icl9tcnAuYz00OTc9aW50IGJyX21ycF9hZGQoc3RydWN0IG5ldF9icmlkZ2UgKmJyLCBzdHJ1Y3QgYnJfbXJwX2luc3RhbmNlICppbnN0YW5jZSlcXG4tLVxcbm5ldC9icmlkZ2UvYnJfbXJwLmMtNTQyLVxcbm5ldC9icmlkZ2UvYnJfbXJwLmM6NTQzOlxcdElOSVRfREVMQVlFRF9XT1JLKFxcdTAwMjZtcnAtXFx1MDAzZXRlc3Rfd29yaywgYnJfbXJwX3Rlc3Rfd29ya19leHBpcmVkKTtcXG5uZXQvYnJpZGdlL2JyX21ycC5jLTU0NC1cXHRJTklUX0RFTEFZRURfV09SSyhcXHUwMDI2bXJwLVxcdTAwM2Vpbl90ZXN0X3dvcmssIGJyX21ycF9pbl90ZXN0X3dvcmtfZXhwaXJlZCk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDIyOjMwOjI0LjU1NjQ4MjQwNloiLCJTZXEiOjIzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNDY5Mjc5NzQxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBteSBvd24sIGdpdmVuIG15IGV4cGVydGlzZTpcblxuKipFeGFtaW5pbmcgYSBQb3RlbnRpYWwgU3RhdGljIFZhcmlhYmxlIGFuZCBDb25maWd1cmF0aW9uIERlcGVuZGVuY3kqKlxuXG5BbHJpZ2h0LCBsZXQncyBzZWUuLi4gSSdtIGxvb2tpbmcgYXQgYGJyX21ycF90ZXN0X3dvcmtfZXhwaXJlZGAuIFRoZSBjb2RlIG1lbnRpb25zIGl0J3MgYSBzdGF0aWMgdmFyaWFibGUsIHdoaWNoLCBpbiBhbmQgb2YgaXRzZWxmLCBpcyBpbnRlcmVzdGluZy4gQnV0LCBJJ20gbW9yZSBjb25jZXJuZWQgYnkgdGhlIGZhY3QgdGhhdCBpdHMgYWRkcmVzcyBpcyBiZWluZyB0YWtlbi4gVGhhdCByYWlzZXMgYSBmbGFnIGltbWVkaWF0ZWx5OyBzdGF0aWNhbGx5IGRlY2xhcmVkIHZhcmlhYmxlcyB1c3VhbGx5IGRvbid0IGhhdmUgdGhlaXIgYWRkcmVzc2VzIG1hbmFnZWQgaW4gc3VjaCB3YXlzLCBhbmQgSSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2h5IHRoaXMgaXMgZG9uZS4gSXMgaXQgYSBmdW5jdGlvbiBwb2ludGVyPyBJcyBpdCBiZWluZyBhZGRlZCB0byBhIGRhdGEgc3RydWN0dXJlPyBUaGF0J3Mgd2hhdCBJIG5lZWQgdG8gdW5kZXJzdGFuZC5cblxuRnVydGhlcm1vcmUsIHRoZSBjb25maWd1cmF0aW9uIGBCUklER0VfTVJQYCBpcyBtZW50aW9uZWQuIEkgaGF2ZSBhIGh1bmNoIHRoYXQgdGhpcyBwYXJ0aWN1bGFyIHZhcmlhYmxlIG1heSBoYXZlIGEgY29uZmlndXJhdGlvbiBkZXBlbmRlbmNlIGFuZCBJIG5lZWQgdG8gYXNjZXJ0YWluIGlmIGl0IGRlcGVuZHMgb24gYW55dGhpbmcgZWxzZS4gVGhpcyBuZWVkcyB0byBiZSBjb25zaWRlcmVkIGFzIHBvdGVudGlhbGx5IHBhcnQgb2YgdGhlIGVxdWF0aW9uIG9mIHdoeSB0aGUgYWRkcmVzcyBpcyB0YWtlbi4gSXMgaXQgb25seSBhY3RpdmUgd2hlbiBgQlJJREdFX01SUGAgaXMgZGVmaW5lZD8gQXJlIHRoZXJlICpvdGhlciogcHJlcHJvY2Vzc29yIGRlZmluZXMgdGhhdCBjb3VsZCBhbHNvIGluZmx1ZW5jZSBpdHMgYmVoYXZpb3IsIGFuZCB0aHVzLCBpdHMgcm9sZSBpbiB0aGUgcHJvZ3JhbT8gSSBuZWVkIHRvIHF1aWNrbHkgYW5hbHl6ZSB0aGUgc3Vycm91bmRpbmcgY29kZSB0byB0cmFjZSB0aGVzZSBkZXBlbmRlbmNpZXMsIGFuZCBjbGFyaWZ5IHRoZSBwb3RlbnRpYWwgaW1wYWN0IG9mIHRoaXMgdmFyaWFibGUgb24gdGhlIHN5c3RlbSdzIGJlaGF2aW9yLiBUaW1lIHRvIGRlbHZlIGludG8gdGhlIHByZXByb2Nlc3NvciBkZWZpbmVzIGFuZCBjb25maWd1cmF0aW9uIG9wdGlvbnMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjk3MjQsIk91dHB1dFRva2VucyI6MzAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQyMjozMDoyOC4wMjU3NjQ3NzdaIiwiU2VxIjoyNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjYyMzk3NTk4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBCUklER0VfTVJQXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9icmlkZ2UvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvYnJpZGdlL0tjb25maWc9NTA9Y29uZmlnIEJSSURHRV9WTEFOX0ZJTFRFUklOR1xcbi0tXFxubmV0L2JyaWRnZS9LY29uZmlnLTYzLVxcbm5ldC9icmlkZ2UvS2NvbmZpZzo2NDpjb25maWcgQlJJREdFX01SUFxcbm5ldC9icmlkZ2UvS2NvbmZpZy02NS1cXHRib29sIFxcXCJNUlAgcHJvdG9jb2xcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDIyOjMwOjI4LjA4ODE2NzAzNVoiLCJTZXEiOjI1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyODc1MTU0NDQ4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgYSBzdW1tYXJ5IG9mIG15IHRob3VnaHQgcHJvY2VzcywgYXMgcmVxdWVzdGVkOlxuXG4qKk5hdmlnYXRpbmcgdGhlIEtlcm5lbCdzIEJyaWRnZSBDb25maWd1cmF0aW9uKipcblxuT2theSwgc28gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IGJyaWRnaW5nIGlzIGNvbmZpZ3VyZWQgd2l0aGluIHRoZSBrZXJuZWwuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byB6ZXJvIGluIG9uIHRoZSBjb3JlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucywgYW5kIGEgZ29vZCBzdGFydGluZyBwb2ludCBpcyB1c3VhbGx5IHRoZSBgS2NvbmZpZ2AgZmlsZXMuIFRoYXQncyB3aGVyZSBhbGwgdGhlIGAjZGVmaW5lYCBzdGF0ZW1lbnRzIGxpdmUsIGFuZCBJJ20gZ3Vlc3NpbmcgdGhhdCBgbmV0L2JyaWRnZS9LY29uZmlnYCBpcyBnb2luZyB0byBiZSByZWxldmFudCBoZXJlLiBMZXQncyBzdGFydCBieSBjaGVja2luZyB0aGF0IGZpbGUgYXJvdW5kIGxpbmUgNjQgLSB0aGlzIGlzIGp1c3QgYW4gZWR1Y2F0ZWQgZ3Vlc3MgYXMgdG8gdGhlIGxpa2VseSBhcmVhIG9mIHJlbGF0ZWQgY29kZSwgY291bGQgYmUgcmVsYXRlZCB0byB2YXJpb3VzIGFzcGVjdHMgb2YgdGhlIGJyaWRnZSBmdW5jdGlvbmFsaXR5LiBJIGV4cGVjdCB0byBmaW5kIHNvbWUgb2YgdGhlIHRvcC1sZXZlbCBjb25maWd1cmF0aW9uIHN5bWJvbHMgYW5kIHRoZWlyIGRlc2NyaXB0aW9ucy4gSG9wZWZ1bGx5LCB0aGlzIHdpbGwgZ2l2ZSBtZSBhIGdvb2QgbGF5IG9mIHRoZSBsYW5kLCBsZXR0aW5nIG1lIHNlZSB3aGljaCBvcHRpb25zIGFyZSBhdmFpbGFibGUgYW5kIHdoaWNoIGFyZSBlbmFibGVkLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMDE1MSwiT3V0cHV0VG9rZW5zIjozMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDIyOjMwOjMwLjk2MzMyMzUxM1oiLCJTZXEiOjI2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NzQ2MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJuZXQvYnJpZGdlL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogNTAsXG4gIFwiTGluZUNvdW50XCI6IDMwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgNTA6XFx0Y29uZmlnIEJSSURHRV9WTEFOX0ZJTFRFUklOR1xcbiAgNTE6XFx0XFx0Ym9vbCBcXFwiVkxBTiBmaWx0ZXJpbmdcXFwiXFxuICA1MjpcXHRcXHRkZXBlbmRzIG9uIEJSSURHRVxcbiAgNTM6XFx0XFx0ZGVwZW5kcyBvbiBWTEFOXzgwMjFRXFxuICA1NDpcXHRcXHRkZWZhdWx0IG5cXG4gIDU1OlxcdFxcdGhlbHBcXG4gIDU2OlxcdFxcdCAgSWYgeW91IHNheSBZIGhlcmUsIHRoZW4gdGhlIEV0aGVybmV0IGJyaWRnZSB3aWxsIGJlIGFibGUgc2VsZWN0aXZlbHlcXG4gIDU3OlxcdFxcdCAgcmVjZWl2ZSBhbmQgZm9yd2FyZCB0cmFmZmljIGJhc2VkIG9uIFZMQU4gaW5mb3JtYXRpb24gaW4gdGhlIHBhY2tldFxcbiAgNTg6XFx0XFx0ICBhbnkgVkxBTiBpbmZvcm1hdGlvbiBjb25maWd1cmVkIG9uIHRoZSBicmlkZ2UgcG9ydCBvciBicmlkZ2UgZGV2aWNlLlxcbiAgNTk6XFx0XFxuICA2MDpcXHRcXHQgIFNheSBOIHRvIGV4Y2x1ZGUgdGhpcyBzdXBwb3J0IGFuZCByZWR1Y2UgdGhlIGJpbmFyeSBzaXplLlxcbiAgNjE6XFx0XFxuICA2MjpcXHRcXHQgIElmIHVuc3VyZSwgc2F5IFkuXFxuICA2MzpcXHRcXG4gIDY0OlxcdGNvbmZpZyBCUklER0VfTVJQXFxuICA2NTpcXHRcXHRib29sIFxcXCJNUlAgcHJvdG9jb2xcXFwiXFxuICA2NjpcXHRcXHRkZXBlbmRzIG9uIEJSSURHRVxcbiAgNjc6XFx0XFx0ZGVmYXVsdCBuXFxuICA2ODpcXHRcXHRoZWxwXFxuICA2OTpcXHRcXHQgIElmIHlvdSBzYXkgWSBoZXJlLCB0aGVuIHRoZSBFdGhlcm5ldCBicmlkZ2Ugd2lsbCBiZSBhYmxlIHRvIHJ1biBNUlBcXG4gIDcwOlxcdFxcdCAgcHJvdG9jb2wgdG8gZGV0ZWN0IGxvb3BzXFxuICA3MTpcXHRcXG4gIDcyOlxcdFxcdCAgU2F5IE4gdG8gZXhjbHVkZSB0aGlzIHN1cHBvcnQgYW5kIHJlZHVjZSB0aGUgYmluYXJ5IHNpemUuXFxuICA3MzpcXHRcXG4gIDc0OlxcdFxcdCAgSWYgdW5zdXJlLCBzYXkgTi5cXG4gIDc1OlxcdFxcbiAgNzY6XFx0Y29uZmlnIEJSSURHRV9DRk1cXG4gIDc3OlxcdFxcdGJvb2wgXFxcIkNGTSBwcm90b2NvbFxcXCJcXG4gIDc4OlxcdFxcdGRlcGVuZHMgb24gQlJJREdFXFxuICA3OTpcXHRcXHRoZWxwXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDIyOjMwOjMwLjk2MzM4MjE3M1oiLCJTZXEiOjI3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMjU5ODQ3OTY3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIGl0IHdlcmUgbXkgb3duOlxuXG4qKkRlcGVuZGVuY2llcyBhbmQgU3RhdGUgQ2hlY2tzKipcblxuUmlnaHQsIHNvIGBCUklER0VfTVJQYCBoaW5nZXMgb24gYEJSSURHRWAuIFRoYXQncyB0aGUgY29yZSBvZiBpdCwgYW5kIGl0J3MgY2xlYXI6IGlmIEkgd2FudCB0aGUgTVJQIGZ1bmN0aW9uYWxpdHksIEkgKm5lZWQqIHRoZSBiYXNlIGBCUklER0VgIG1vZHVsZSBlbmFibGVkLiBUaGlzIGltcGxpZXMgdGhhdCBJIG5lZWQgdG8gZW5zdXJlIGJvdGggYXJlIGVuYWJsZWQgdG8gd29yayB0b2dldGhlci4gU2VlbXMgbG9naWNhbCwgYnV0IGxldCdzIGRvdWJsZS1jaGVjayB0aGUgY29uZmlndXJhdGlvbi4uLiBTcGVjaWZpY2FsbHksIEkgbmVlZCB0byB2ZXJpZnkgd2hhdCAqa2luZCogb2Ygc3RhdGUgYEJSSURHRWAgaXMuIElzIGl0IGEgYm9vbGVhbiwgb3IgaXMgaXQgYSB0cmlzdGF0ZT8gVW5kZXJzdGFuZGluZyBpdHMgY29uZmlndXJhdGlvbiBvcHRpb25zIHdpbGwgcHJvdmlkZSBtb3JlIHVuZGVyc3RhbmRpbmcgYXMgSSBtb3ZlIGZvcndhcmQsIHNvIEknbGwgY2hlY2sgaXRzIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyB0byBtb3ZlIGZvcndhcmQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEwNzM4LCJPdXRwdXRUb2tlbnMiOjI4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzksIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQyMjozMDozNC4yMjMyMzI0OVoiLCJTZXEiOjI4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjQwODYyOTgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIEJSSURHRVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvYnJpZGdlL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L2JyaWRnZS9LY29uZmlnLTUtXFxubmV0L2JyaWRnZS9LY29uZmlnOjY6Y29uZmlnIEJSSURHRVxcbm5ldC9icmlkZ2UvS2NvbmZpZy03LVxcdHRyaXN0YXRlIFxcXCI4MDIuMWQgRXRoZXJuZXQgQnJpZGdpbmdcXFwiXFxuLS1cXG5uZXQvYnJpZGdlL0tjb25maWctMzUtXFxubmV0L2JyaWRnZS9LY29uZmlnOjM2OmNvbmZpZyBCUklER0VfSUdNUF9TTk9PUElOR1xcbm5ldC9icmlkZ2UvS2NvbmZpZy0zNy1cXHRib29sIFxcXCJJR01QL01MRCBzbm9vcGluZ1xcXCJcXG4tLVxcbm5ldC9icmlkZ2UvS2NvbmZpZy00OS1cXG5uZXQvYnJpZGdlL0tjb25maWc6NTA6Y29uZmlnIEJSSURHRV9WTEFOX0ZJTFRFUklOR1xcbm5ldC9icmlkZ2UvS2NvbmZpZy01MS1cXHRib29sIFxcXCJWTEFOIGZpbHRlcmluZ1xcXCJcXG4tLVxcbm5ldC9icmlkZ2UvS2NvbmZpZy02My1cXG5uZXQvYnJpZGdlL0tjb25maWc6NjQ6Y29uZmlnIEJSSURHRV9NUlBcXG5uZXQvYnJpZGdlL0tjb25maWctNjUtXFx0Ym9vbCBcXFwiTVJQIHByb3RvY29sXFxcIlxcbi0tXFxubmV0L2JyaWRnZS9LY29uZmlnLTc1LVxcbm5ldC9icmlkZ2UvS2NvbmZpZzo3Njpjb25maWcgQlJJREdFX0NGTVxcbm5ldC9icmlkZ2UvS2NvbmZpZy03Ny1cXHRib29sIFxcXCJDRk0gcHJvdG9jb2xcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDIyOjMwOjM0LjI4NzMyMzY5OFoiLCJTZXEiOjI5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0ODYyMTgyODkxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgQnJpZGdlIE1SUCBUZXN0IEltcGxlbWVudGF0aW9uKipcblxuT2theSwgc28gSSdtIGRpdmluZyBpbnRvIHRoaXMgYnJpZGdlIE1SUCB0ZXN0IGltcGxlbWVudGF0aW9uLiBUaGUga2V5IHRoaW5nIGhlcmUgaXMgdGhhdCBgQlJJREdFYCBpcyBhIHRyaXN0YXRlLCBtZWFuaW5nIGl0J3MgZWl0aGVyIGJ1aWx0LWluLCBtb2R1bGFyLCBvciBkaXNhYmxlZC4gSSd2ZSBnb3QgbXkgZXllIG9uIGBCUklER0VgIGFuZCBgQlJJREdFX01SUGAgYXMgdGhlIHJlbGV2YW50IGNvbmZpZ3VyYXRpb25zLlxuXG5NeSBpbW1lZGlhdGUgZm9jdXMgaXMgb24gdGhlIGZ1bmN0aW9ucyBgYnJfbXJwX3N0YXJ0X3Rlc3RgIGFuZCBgYnJfbXJwX3Rlc3Rfd29ya19leHBpcmVkYC4gSSBhbHNvIG5lZWQgdG8gY2hlY2sgYGJyX21ycF9hbGxvY190ZXN0X3NrYmAgd2hpY2ggbG9va3MgbGlrZSBpdCdzIGJlZW4gbW9kaWZpZWQuIElzIGBicl9tcnBfYWxsb2NfdGVzdF9za2JgIHN0YXRpYz8gWWVzLCBpdCBpcy4gSXMgaXQgaW5saW5lZD8gSXQncyBjYWxsZWQgdHdpY2UgaW4gYGJyX21ycF90ZXN0X3dvcmtfZXhwaXJlZGAuIExvb2tpbmcgYXQgdGhlIGZ1bmN0aW9uJ3Mgc2l6ZSwgaXQncyBwcmV0dHkgc3Vic3RhbnRpYWwsIGFsbG9jYXRpbmcgYW4gU0tCIGFuZCBzZXR0aW5nIHVwIGhlYWRlcnMuIEl0J3MgcHJvYmFibHkgbm90IGlubGluZWQuIFRvIGJlIHNhZmUsIEknbSBnb2luZyB0byBrZWVwIGBicl9tcnBfdGVzdF93b3JrX2V4cGlyZWRgIGFzIGEga2V5IGZvY3VzIHN5bWJvbC4gQWRkaXRpb25hbGx5LCBJIHNob3VsZCBhbHNvIGZvY3VzIG9uIGBicl9tcnBfc3RhcnRfdGVzdGAgYXMgaXQncyB0aGUgdHJpZ2dlciBmb3IgdGhpcyB3b3JrLlxuXG5KdXN0IHRvIGJlIHRob3JvdWdoLCBJJ20gZ29pbmcgdG8gcXVpY2tseSBjaGVjayBpZiB0aGVyZSBhcmUgYW55IG90aGVyIGRlcGVuZGVuY2llcy4gSSdsbCBjaGVjayBgbmV0L2JyaWRnZS9LY29uZmlnYCBhcm91bmQgbGluZSA2IHRvIHNlZSBpZiBgQlJJREdFYCBkZXBlbmRzIG9uIGFueXRoaW5nIGxpa2UgYExMQ2AuIFRoaXMnbGwgaGVscCBtZSBidWlsZCBhIGNvbXBsZXRlIHBpY3R1cmUgb2YgdGhlIGRlcGVuZGVuY2llcy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTEyMTcsIk91dHB1dFRva2VucyI6MzIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMzMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjZUMjI6MzA6MzkuMTQ5NTA4NzY5WiIsIlNlcSI6MzAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU4NDUwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcIm5ldC9icmlkZ2UvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAxLFxuICBcIkxpbmVDb3VudFwiOiAzMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgICAxOlxcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbiAgIDI6XFx0I1xcbiAgIDM6XFx0IyA4MDIuMWQgRXRoZXJuZXQgQnJpZGdpbmdcXG4gICA0OlxcdCNcXG4gICA1OlxcdFxcbiAgIDY6XFx0Y29uZmlnIEJSSURHRVxcbiAgIDc6XFx0XFx0dHJpc3RhdGUgXFxcIjgwMi4xZCBFdGhlcm5ldCBCcmlkZ2luZ1xcXCJcXG4gICA4OlxcdFxcdHNlbGVjdCBMTENcXG4gICA5OlxcdFxcdHNlbGVjdCBTVFBcXG4gIDEwOlxcdFxcdGhlbHBcXG4gIDExOlxcdFxcdCAgSWYgeW91IHNheSBZIGhlcmUsIHRoZW4geW91ciBMaW51eCBib3ggd2lsbCBiZSBhYmxlIHRvIGFjdCBhcyBhblxcbiAgMTI6XFx0XFx0ICBFdGhlcm5ldCBicmlkZ2UsIHdoaWNoIG1lYW5zIHRoYXQgdGhlIGRpZmZlcmVudCBFdGhlcm5ldCBzZWdtZW50cyBpdFxcbiAgMTM6XFx0XFx0ICBpcyBjb25uZWN0ZWQgdG8gd2lsbCBhcHBlYXIgYXMgb25lIEV0aGVybmV0IHRvIHRoZSBwYXJ0aWNpcGFudHMuXFxuICAxNDpcXHRcXHQgIFNldmVyYWwgc3VjaCBicmlkZ2VzIGNhbiB3b3JrIHRvZ2V0aGVyIHRvIGNyZWF0ZSBldmVuIGxhcmdlclxcbiAgMTU6XFx0XFx0ICBuZXR3b3JrcyBvZiBFdGhlcm5ldHMgdXNpbmcgdGhlIElFRUUgODAyLjEgc3Bhbm5pbmcgdHJlZSBhbGdvcml0aG0uXFxuICAxNjpcXHRcXHQgIEFzIHRoaXMgaXMgYSBzdGFuZGFyZCwgTGludXggYnJpZGdlcyB3aWxsIGNvb3BlcmF0ZSBwcm9wZXJseSB3aXRoXFxuICAxNzpcXHRcXHQgIG90aGVyIHRoaXJkIHBhcnR5IGJyaWRnZSBwcm9kdWN0cy5cXG4gIDE4OlxcdFxcbiAgMTk6XFx0XFx0ICBJbiBvcmRlciB0byB1c2UgdGhlIEV0aGVybmV0IGJyaWRnZSwgeW91J2xsIG5lZWQgdGhlIGJyaWRnZVxcbiAgMjA6XFx0XFx0ICBjb25maWd1cmF0aW9uIHRvb2xzOyBzZWUgXFx1MDAzY2ZpbGU6RG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2JyaWRnZS5yc3RcXHUwMDNlXFxuICAyMTpcXHRcXHQgIGZvciBsb2NhdGlvbi4gUGxlYXNlIHJlYWQgdGhlIEJyaWRnZSBtaW5pLUhPV1RPIGZvciBtb3JlXFxuICAyMjpcXHRcXHQgIGluZm9ybWF0aW9uLlxcbiAgMjM6XFx0XFxuICAyNDpcXHRcXHQgIElmIHlvdSBlbmFibGUgaXB0YWJsZXMgc3VwcG9ydCBhbG9uZyB3aXRoIHRoZSBicmlkZ2Ugc3VwcG9ydCB0aGVuIHlvdVxcbiAgMjU6XFx0XFx0ICB0dXJuIHlvdXIgYnJpZGdlIGludG8gYSBicmlkZ2luZyBJUCBmaXJld2FsbC5cXG4gIDI2OlxcdFxcdCAgaXB0YWJsZXMgd2lsbCB0aGVuIHNlZSB0aGUgSVAgcGFja2V0cyBiZWluZyBicmlkZ2VkLCBzbyB5b3UgbmVlZCB0b1xcbiAgMjc6XFx0XFx0ICB0YWtlIHRoaXMgaW50byBhY2NvdW50IHdoZW4gc2V0dGluZyB1cCB5b3VyIGZpcmV3YWxsIHJ1bGVzLlxcbiAgMjg6XFx0XFx0ICBFbmFibGluZyBhcnB0YWJsZXMgc3VwcG9ydCB3aGVuIGJyaWRnaW5nIHdpbGwgbGV0IGFycHRhYmxlcyBzZWVcXG4gIDI5OlxcdFxcdCAgYnJpZGdlZCBBUlAgdHJhZmZpYyBpbiB0aGUgYXJwdGFibGVzIEZPUldBUkQgY2hhaW4uXFxuICAzMDpcXHRcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjZUMjI6MzA6MzkuMTQ5NTY4NDM5WiIsIlNlcSI6MzEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ2MjI2NTg1NDgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgUmVhc29uaW5nIG9uIHRoZSBCcmlkZ2UgTVJQIFBhdGNoKipcblxuT2theSwgc28gSSd2ZSB6ZXJvZWQgaW4gb24gdGhlIGNvcmUgb2YgdGhpcy4gQmFzZWQgb24gdGhlIGluaXRpYWwgc2VsZWN0aW9uLCBgTExDYCBhbmQgYFNUUGAgYXJlIHRoZSBrZXkgY29tcG9uZW50cyBpZGVudGlmaWVkIGFzIGJlaW5nIHJlbGV2YW50LiBUaGlzIG1lYW5zIHRoYXQgdGhlIG1vcmUgc3BlY2lmaWMgY29uZmlndXJhdGlvbnMsIGBCUklER0VgIGFuZCBgQlJJREdFX01SUGAsIHNob3VsZCBiZSBzdWZmaWNpZW50IHRvIGVuYWJsZSBhbmQgdGVzdCB0aGUgY2hhbmdlcy5cblxuTGV0J3MgYnJlYWsgaXQgZG93biB0byBhIGNvbmNpc2Ugc3VtbWFyeSB0byBzb2xpZGlmeSB0aGUgYW5hbHlzaXM6XG5cbiogICAqKldvcnRoRnV6emluZzoqKiBZZXMsIGFic29sdXRlbHkuIFRoaXMgaXMgbGlrZWx5IGEgY3JpdGljYWwgYXJlYSBmb3IgZWRnZS1jYXNlIHRlc3RpbmcuXG4qICAgKipGb2N1c1N5bWJvbHM6KiogU3BlY2lmaWNhbGx5LCBgYnJfbXJwX3N0YXJ0X3Rlc3RgIGFuZCBgYnJfbXJwX3Rlc3Rfd29ya19leHBpcmVkYC4gVGhlc2UgYXJlIHRoZSB0ZXN0IGVudHJ5IHBvaW50cyBhbmQgdGhlIGV4cGlyeSBmdW5jdGlvbmFsaXR5LCBhbmQgdGh1cyBhcmUgd2hlcmUgZnV6emluZyBlZmZvcnRzIHNob3VsZCBiZSBjb25jZW50cmF0ZWQuXG4qICAgKipFbmFibGVDb25maWdzOioqIGBCUklER0VgIGFuZCBgQlJJREdFX01SUGAuIFRoZXkncmUgdGhlIHJlbGV2YW50IGNvbmZpZ3VyYXRpb25zIG5lZWRlZCB0byB0cmlnZ2VyIHRoZSBjb2RlIGluIHF1ZXN0aW9uLlxuKiAgICoqUmVhc29uaW5nOioqIFRoZSBmdW5kYW1lbnRhbCBpc3N1ZSBoZXJlIGlzIGEgZnVuY3Rpb25hbCBidWcsIHNwZWNpZmljYWxseSBpbiBob3cgdGhlIGxlbmd0aCBvZiB0aGUgTVJQIHRlc3QgcGFja2V0cyBpcyBjb21wdXRlZCB3aXRoaW4gdGhlIGJyaWRnZSBzdWJzeXN0ZW0uIFRoaXMgaXMgcmVhY2hhYmxlIHRocm91Z2ggdGhlIG5ldGxpbmsgY29uZmlndXJhdGlvbiBpbnRlcmZhY2Ugb2YgdGhlIGJyaWRnZS4gVGhpcyBtYWtlcyBpdCBhbiBleGNlbGxlbnQgdGFyZ2V0IGZvciBmdXp6aW5nLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMjI2MSwiT3V0cHV0VG9rZW5zIjo5NCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjExMSwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDIyOjMwOjQzLjc3MjIyOTMwN1oiLCJTZXEiOjMyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjg2Mzk1MTU4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJCUklER0VcIixcbiAgICBcIkJSSURHRV9NUlBcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJicl9tcnBfc3RhcnRfdGVzdFwiLFxuICAgIFwiYnJfbXJwX3Rlc3Rfd29ya19leHBpcmVkXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSBmdW5jdGlvbmFsIGJ1ZyBpbiB0aGUgbGVuZ3RoIGNhbGN1bGF0aW9uIG9mIE1SUCB0ZXN0IHBhY2tldHMgaW4gdGhlIGJyaWRnZSBzdWJzeXN0ZW0uIFRoZSBjb2RlIGlzIHJlYWNoYWJsZSB2aWEgbmV0bGluayBjb25maWd1cmF0aW9uIG9mIHRoZSBicmlkZ2UuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQlJJREdFXCIsXG4gICAgXCJCUklER0VfTVJQXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiYnJfbXJwX3N0YXJ0X3Rlc3RcIixcbiAgICBcImJyX21ycF90ZXN0X3dvcmtfZXhwaXJlZFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgZnVuY3Rpb25hbCBidWcgaW4gdGhlIGxlbmd0aCBjYWxjdWxhdGlvbiBvZiBNUlAgdGVzdCBwYWNrZXRzIGluIHRoZSBicmlkZ2Ugc3Vic3lzdGVtLiBUaGUgY29kZSBpcyByZWFjaGFibGUgdmlhIG5ldGxpbmsgY29uZmlndXJhdGlvbiBvZiB0aGUgYnJpZGdlLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+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-workflowpcgv2[1] Phase: Succeeded StartedAt: 2026-07-26 22:30:55 +0000 UTC FinishedAt: 2026-07-26 22:30:55 +0000 UTC Input: nil Output: nil --------- Name: series-workflowpcgv2[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-07-26 22:30:55 +0000 UTC FinishedAt: 2026-07-26 22:30:55 +0000 UTC Input: nil Output: nil --------- Name: series-workflowpcgv2[2] Phase: Succeeded StartedAt: 2026-07-26 22:30:55 +0000 UTC FinishedAt: 2026-07-27 03:03:08 +0000 UTC Input: nil Output: nil --------- Name: series-workflowpcgv2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE","BRIDGE_MRP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.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_test_work_expired"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE","BRIDGE_MRP"],"series_id":"884c98b8-35ee-4cd3-bd28-d9274b49e5d2","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-07-26 22:30:55 +0000 UTC FinishedAt: 2026-07-27 03:03:08 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE","BRIDGE_MRP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.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_test_work_expired"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE","BRIDGE_MRP"],"series_id":"884c98b8-35ee-4cd3-bd28-d9274b49e5d2","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowpcgv2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE","BRIDGE_MRP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.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_test_work_expired"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE","BRIDGE_MRP"],"series_id":"884c98b8-35ee-4cd3-bd28-d9274b49e5d2","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-07-26 22:30:55 +0000 UTC FinishedAt: 2026-07-26 22:31:05 +0000 UTC Input: nil Output: nil --------- Name: series-workflowpcgv2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE","BRIDGE_MRP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.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_test_work_expired"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE","BRIDGE_MRP"],"series_id":"884c98b8-35ee-4cd3-bd28-d9274b49e5d2","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-07-26 22:30:55 +0000 UTC FinishedAt: 2026-07-26 22:31:02 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE","BRIDGE_MRP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.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-workflowpcgv2/series-workflowpcgv2-convert-artifact-4189144345/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowpcgv2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE","BRIDGE_MRP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.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_test_work_expired"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE","BRIDGE_MRP"],"series_id":"884c98b8-35ee-4cd3-bd28-d9274b49e5d2","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-07-26 22:31:05 +0000 UTC FinishedAt: 2026-07-26 23:20:53 +0000 UTC Input: nil Output: nil --------- Name: series-workflowpcgv2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE","BRIDGE_MRP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.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_test_work_expired"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE","BRIDGE_MRP"],"series_id":"884c98b8-35ee-4cd3-bd28-d9274b49e5d2","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-07-26 22:31:05 +0000 UTC FinishedAt: 2026-07-26 23:20:53 +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:*5595e140-938c-43b4-a8a5-203fe0553d67,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-workflowpcgv2/series-workflowpcgv2-convert-artifact-4189144345/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": "3a0e0ccd-409d-48e2-94a2-c10058b9280a", "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-workflowpcgv2/series-workflowpcgv2-build-action-4071254199/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowpcgv2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE","BRIDGE_MRP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.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_test_work_expired"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE","BRIDGE_MRP"],"series_id":"884c98b8-35ee-4cd3-bd28-d9274b49e5d2","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-07-26 22:31:05 +0000 UTC FinishedAt: 2026-07-26 23:20:43 +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:*5595e140-938c-43b4-a8a5-203fe0553d67,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-workflowpcgv2/series-workflowpcgv2-convert-artifact-4189144345/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": "3a0e0ccd-409d-48e2-94a2-c10058b9280a", "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-workflowpcgv2/series-workflowpcgv2-build-action-4071254199/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowpcgv2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE","BRIDGE_MRP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.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_test_work_expired"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE","BRIDGE_MRP"],"series_id":"884c98b8-35ee-4cd3-bd28-d9274b49e5d2","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-07-26 23:20:53 +0000 UTC FinishedAt: 2026-07-26 23:20:53 +0000 UTC Input: nil Output: nil --------- Name: series-workflowpcgv2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE","BRIDGE_MRP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.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_test_work_expired"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE","BRIDGE_MRP"],"series_id":"884c98b8-35ee-4cd3-bd28-d9274b49e5d2","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-07-26 23:20:53 +0000 UTC FinishedAt: 2026-07-26 23:20:53 +0000 UTC Input: nil Output: nil --------- Name: series-workflowpcgv2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE","BRIDGE_MRP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.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_test_work_expired"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE","BRIDGE_MRP"],"series_id":"884c98b8-35ee-4cd3-bd28-d9274b49e5d2","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-07-26 23:20:53 +0000 UTC FinishedAt: 2026-07-26 23:21:03 +0000 UTC Input: nil Output: nil --------- Name: series-workflowpcgv2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE","BRIDGE_MRP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.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_test_work_expired"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE","BRIDGE_MRP"],"series_id":"884c98b8-35ee-4cd3-bd28-d9274b49e5d2","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-07-26 23:20:53 +0000 UTC FinishedAt: 2026-07-26 23:20:58 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE","BRIDGE_MRP"],"series_id":"884c98b8-35ee-4cd3-bd28-d9274b49e5d2","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.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-workflowpcgv2/series-workflowpcgv2-convert-artifact-1878535404/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowpcgv2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE","BRIDGE_MRP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.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_test_work_expired"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE","BRIDGE_MRP"],"series_id":"884c98b8-35ee-4cd3-bd28-d9274b49e5d2","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-07-26 23:21:03 +0000 UTC FinishedAt: 2026-07-26 23:22:55 +0000 UTC Input: nil Output: nil --------- Name: series-workflowpcgv2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE","BRIDGE_MRP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.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_test_work_expired"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE","BRIDGE_MRP"],"series_id":"884c98b8-35ee-4cd3-bd28-d9274b49e5d2","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-07-26 23:21:03 +0000 UTC FinishedAt: 2026-07-26 23:22:45 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*3a0e0ccd-409d-48e2-94a2-c10058b9280a,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-workflowpcgv2/series-workflowpcgv2-build-action-4071254199/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-workflowpcgv2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE","BRIDGE_MRP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.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_test_work_expired"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE","BRIDGE_MRP"],"series_id":"884c98b8-35ee-4cd3-bd28-d9274b49e5d2","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-07-26 23:22:55 +0000 UTC FinishedAt: 2026-07-26 23:22:55 +0000 UTC Input: nil Output: nil --------- Name: series-workflowpcgv2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE","BRIDGE_MRP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.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_test_work_expired"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE","BRIDGE_MRP"],"series_id":"884c98b8-35ee-4cd3-bd28-d9274b49e5d2","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-07-26 23:22:55 +0000 UTC FinishedAt: 2026-07-26 23:22:55 +0000 UTC Input: nil Output: nil --------- Name: series-workflowpcgv2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE","BRIDGE_MRP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.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_test_work_expired"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE","BRIDGE_MRP"],"series_id":"884c98b8-35ee-4cd3-bd28-d9274b49e5d2","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-07-26 23:22:55 +0000 UTC FinishedAt: 2026-07-26 23:58:16 +0000 UTC Input: nil Output: nil --------- Name: series-workflowpcgv2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE","BRIDGE_MRP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.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_test_work_expired"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE","BRIDGE_MRP"],"series_id":"884c98b8-35ee-4cd3-bd28-d9274b49e5d2","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-07-26 23:22:55 +0000 UTC FinishedAt: 2026-07-26 23:58:16 +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:*5595e140-938c-43b4-a8a5-203fe0553d67,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-workflowpcgv2/series-workflowpcgv2-convert-artifact-1878535404/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": "0dfb5432-a671-468a-ab62-d68ac2949faa", "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-workflowpcgv2/series-workflowpcgv2-build-action-2122253192/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowpcgv2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE","BRIDGE_MRP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.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_test_work_expired"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE","BRIDGE_MRP"],"series_id":"884c98b8-35ee-4cd3-bd28-d9274b49e5d2","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-07-26 23:22:55 +0000 UTC FinishedAt: 2026-07-26 23:58:06 +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:*5595e140-938c-43b4-a8a5-203fe0553d67,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-workflowpcgv2/series-workflowpcgv2-convert-artifact-1878535404/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": "0dfb5432-a671-468a-ab62-d68ac2949faa", "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-workflowpcgv2/series-workflowpcgv2-build-action-2122253192/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowpcgv2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE","BRIDGE_MRP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.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_test_work_expired"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE","BRIDGE_MRP"],"series_id":"884c98b8-35ee-4cd3-bd28-d9274b49e5d2","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-07-26 23:58:16 +0000 UTC FinishedAt: 2026-07-26 23:58:16 +0000 UTC Input: nil Output: nil --------- Name: series-workflowpcgv2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE","BRIDGE_MRP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.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_test_work_expired"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE","BRIDGE_MRP"],"series_id":"884c98b8-35ee-4cd3-bd28-d9274b49e5d2","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-07-26 23:58:16 +0000 UTC FinishedAt: 2026-07-26 23:58:16 +0000 UTC Input: nil Output: nil --------- Name: series-workflowpcgv2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE","BRIDGE_MRP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.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_test_work_expired"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE","BRIDGE_MRP"],"series_id":"884c98b8-35ee-4cd3-bd28-d9274b49e5d2","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-07-26 23:58:16 +0000 UTC FinishedAt: 2026-07-27 00:00:18 +0000 UTC Input: nil Output: nil --------- Name: series-workflowpcgv2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE","BRIDGE_MRP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.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_test_work_expired"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE","BRIDGE_MRP"],"series_id":"884c98b8-35ee-4cd3-bd28-d9274b49e5d2","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-07-26 23:58:16 +0000 UTC FinishedAt: 2026-07-27 00:00:08 +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:*0dfb5432-a671-468a-ab62-d68ac2949faa,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-workflowpcgv2/series-workflowpcgv2-build-action-2122253192/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-workflowpcgv2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE","BRIDGE_MRP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.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_test_work_expired"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE","BRIDGE_MRP"],"series_id":"884c98b8-35ee-4cd3-bd28-d9274b49e5d2","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-07-27 00:00:18 +0000 UTC FinishedAt: 2026-07-27 03:03:08 +0000 UTC Input: nil Output: nil --------- Name: series-workflowpcgv2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE","BRIDGE_MRP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.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_test_work_expired"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE","BRIDGE_MRP"],"series_id":"884c98b8-35ee-4cd3-bd28-d9274b49e5d2","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-07-27 00:00:18 +0000 UTC FinishedAt: 2026-07-27 03:03:08 +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_test_work_expired"],"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:*3a0e0ccd-409d-48e2-94a2-c10058b9280a,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*0dfb5432-a671-468a-ab62-d68ac2949faa,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-workflowpcgv2/series-workflowpcgv2-build-action-4071254199/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-workflowpcgv2/series-workflowpcgv2-build-action-2122253192/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowpcgv2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE","BRIDGE_MRP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.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_test_work_expired"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE","BRIDGE_MRP"],"series_id":"884c98b8-35ee-4cd3-bd28-d9274b49e5d2","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-07-27 00:00:18 +0000 UTC FinishedAt: 2026-07-27 00:00:28 +0000 UTC Input: nil Output: nil --------- Name: series-workflowpcgv2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE","BRIDGE_MRP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.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_test_work_expired"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE","BRIDGE_MRP"],"series_id":"884c98b8-35ee-4cd3-bd28-d9274b49e5d2","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-07-27 00:00:18 +0000 UTC FinishedAt: 2026-07-27 00:00:25 +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_test_work_expired"],"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-workflowpcgv2/series-workflowpcgv2-convert-artifact-3388040405/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowpcgv2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE","BRIDGE_MRP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.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_test_work_expired"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE","BRIDGE_MRP"],"series_id":"884c98b8-35ee-4cd3-bd28-d9274b49e5d2","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-07-27 00:00:18 +0000 UTC FinishedAt: 2026-07-27 00:00:18 +0000 UTC Input: nil Output: nil --------- Name: series-workflowpcgv2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE","BRIDGE_MRP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.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_test_work_expired"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE","BRIDGE_MRP"],"series_id":"884c98b8-35ee-4cd3-bd28-d9274b49e5d2","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-07-27 00:00:18 +0000 UTC FinishedAt: 2026-07-27 00:00:18 +0000 UTC Input: nil Output: nil --------- Name: series-workflowpcgv2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE","BRIDGE_MRP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.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_test_work_expired"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE","BRIDGE_MRP"],"series_id":"884c98b8-35ee-4cd3-bd28-d9274b49e5d2","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-07-27 00:00:18 +0000 UTC FinishedAt: 2026-07-27 00:00:18 +0000 UTC Input: nil Output: nil --------- Name: series-workflowpcgv2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE","BRIDGE_MRP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.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_test_work_expired"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE","BRIDGE_MRP"],"series_id":"884c98b8-35ee-4cd3-bd28-d9274b49e5d2","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-07-27 00:00:28 +0000 UTC FinishedAt: 2026-07-27 03:03:08 +0000 UTC Input: nil Output: nil --------- Name: series-workflowpcgv2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE","BRIDGE_MRP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.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_test_work_expired"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE","BRIDGE_MRP"],"series_id":"884c98b8-35ee-4cd3-bd28-d9274b49e5d2","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-07-27 00:00:28 +0000 UTC FinishedAt: 2026-07-27 03:03:02 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*3a0e0ccd-409d-48e2-94a2-c10058b9280a,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*0dfb5432-a671-468a-ab62-d68ac2949faa,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-workflowpcgv2/series-workflowpcgv2-build-action-4071254199/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-workflowpcgv2/series-workflowpcgv2-build-action-2122253192/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-workflowpcgv2/series-workflowpcgv2-convert-artifact-3388040405/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,}