Name: series-workflowjrfc4 Phase: Succeeded StartedAt: 2026-07-09 10:39:26 +0000 UTC FinishedAt: 2026-07-09 15:13:42 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjrfc4[0] Phase: Succeeded StartedAt: 2026-07-09 10:39:26 +0000 UTC FinishedAt: 2026-07-09 10:55:45 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjrfc4[0].run-triage Phase: Succeeded StartedAt: 2026-07-09 10:39:26 +0000 UTC FinishedAt: 2026-07-09 10:55:45 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "bpf-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git", "commit_hash": "d2c9a99135da931377240942d44f3dea104cedb8", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BPF_SYSCALL" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "bpf-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git", "commit_hash": "d2c9a99135da931377240942d44f3dea104cedb8", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BPF_SYSCALL" ], "series_id": "5320af87-e9bc-400b-baae-e44f813ea9cc" }, "track": "KASAN", "fuzz": { "focus": [ "bpf", "net" ], "focus_symbols": [ "tcp_bpf_ioctl" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db", "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+CgkJCTx0ZD4yMDI2LzA3LzA5IDEwOjUyPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+M208L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JQRl9TWVNDQUxMJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7dGNwX2JwZl9pb2N0bCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBgdGNwX2JwZl9pb2N0bGAgdG8gY29ycmVjdGx5IGFjY291bnQgZm9yIGRhdGEgaW4gYHNrX3JlY2VpdmVfcXVldWVgIHdoZW4gaGFuZGxpbmcgYFNJT0NJTlFgIChGSU9OUkVBRCkgZm9yIFRDUCBzb2NrZXRzIGluIGEgc29ja21hcCB3aXRob3V0IGEgdmVyZGljdCBwcm9ncmFtLiBUaGlzIGlzIGZ1bmN0aW9uYWwgY29yZSBrZXJuZWwgbG9naWMgcmVsYXRlZCB0byBCUEYgYW5kIFRDUC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wOSAxMDo1MjwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDUyZTNlMzdiNmFmMjEyMmQxZjE2ZjdlYzRjZGUyMmYwMjIyNmY5MDlcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVGh1IEp1bCA5IDEwOjUyOjE4IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvc2ttc2cuaCBiL2luY2x1ZGUvbGludXgvc2ttc2cuaFxuaW5kZXggYTg1NTM0MDFiMWM5M2YuLmQ1ZTM1ZjI0NzM4ZDVjIDEwMDY0NFxuLS0tIGEvaW5jbHVkZS9saW51eC9za21zZy5oXG4mIzQzOyYjNDM7JiM0MzsgYi9pbmNsdWRlL2xpbnV4L3NrbXNnLmhcbkBAIC01NTEsMjAgJiM0Mzs1NTEsNiBAQCBzdGF0aWMgaW5saW5lIHZvaWQgcHNvY2tfcHJvZ3NfZHJvcChzdHJ1Y3Qgc2tfcHNvY2tfcHJvZ3MgKnByb2dzKVxuIFx0cHNvY2tfc2V0X3Byb2coXHUwMDI2cHJvZ3MtXHUwMDNlc2tiX3ZlcmRpY3QsIE5VTEwpO1xuIH1cbiBcbi0vKiBmb3IgdGNwIG9ubHksIHNrIGlzIGxvY2tlZCAqL1xuLXN0YXRpYyBpbmxpbmUgc3NpemVfdCBza19wc29ja19tc2dfaW5xKHN0cnVjdCBzb2NrICpzaylcbi17XG4tXHRzdHJ1Y3Qgc2tfcHNvY2sgKnBzb2NrO1xuLVx0c3NpemVfdCBpbnEgPSAwO1xuLVxuLVx0cHNvY2sgPSBza19wc29ja19nZXQoc2spO1xuLVx0aWYgKGxpa2VseShwc29jaykpIHtcbi1cdFx0aW5xID0gc2tfcHNvY2tfZ2V0X21zZ19sZW5fbm9sb2NrKHBzb2NrKTtcbi1cdFx0c2tfcHNvY2tfcHV0KHNrLCBwc29jayk7XG4tXHR9XG4tXHRyZXR1cm4gaW5xO1xuLX1cbi1cbiAvKiBmb3IgdWRwIG9ubHksIHNrIGlzIG5vdCBsb2NrZWQgKi9cbiBzdGF0aWMgaW5saW5lIHNzaXplX3Qgc2tfbXNnX2ZpcnN0X2xlbihzdHJ1Y3Qgc29jayAqc2spXG4ge1xuZGlmZiAtLWdpdCBhL25ldC9pcHY0L3RjcF9icGYuYyBiL25ldC9pcHY0L3RjcF9icGYuY1xuaW5kZXggY2MwYmQ3M2YzNmI2ZDYuLjhlOTA1YjUwZGVhZGJlIDEwMDY0NFxuLS0tIGEvbmV0L2lwdjQvdGNwX2JwZi5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvaXB2NC90Y3BfYnBmLmNcbkBAIC0zMzQsNiAmIzQzOzMzNCw3IEBAIHN0YXRpYyBpbnQgdGNwX2JwZl9yZWN2bXNnX3BhcnNlcihzdHJ1Y3Qgc29jayAqc2ssXG4gXG4gc3RhdGljIGludCB0Y3BfYnBmX2lvY3RsKHN0cnVjdCBzb2NrICpzaywgaW50IGNtZCwgaW50ICprYXJnKVxuIHtcbiYjNDM7XHRzdHJ1Y3Qgc2tfcHNvY2sgKnBzb2NrO1xuIFx0Ym9vbCBzbG93O1xuIFxuIFx0aWYgKGNtZCAhPSBTSU9DSU5RKVxuQEAgLTM0NCw3ICYjNDM7MzQ1LDIxIEBAIHN0YXRpYyBpbnQgdGNwX2JwZl9pb2N0bChzdHJ1Y3Qgc29jayAqc2ssIGludCBjbWQsIGludCAqa2FyZylcbiBcdFx0cmV0dXJuIC1FSU5WQUw7XG4gXG4gXHRzbG93ID0gbG9ja19zb2NrX2Zhc3Qoc2spO1xuLVx0KmthcmcgPSBza19wc29ja19tc2dfaW5xKHNrKTtcbiYjNDM7XHRwc29jayA9IHNrX3Bzb2NrX2dldChzayk7XG4mIzQzO1x0aWYgKHVubGlrZWx5KCFwc29jaykpIHtcbiYjNDM7XHRcdHVubG9ja19zb2NrX2Zhc3Qoc2ssIHNsb3cpO1xuJiM0MztcdFx0cmV0dXJuIHRjcF9pb2N0bChzaywgY21kLCBrYXJnKTtcbiYjNDM7XHR9XG4mIzQzO1x0KmthcmcgPSBza19wc29ja19nZXRfbXNnX2xlbl9ub2xvY2socHNvY2spO1xuJiM0MztcdC8qIFdpdGhvdXQgYSB2ZXJkaWN0IHByb2dyYW0sIGluZ3Jlc3MgZGF0YSBpcyBuZXZlciBkaXZlcnRlZCB0b1xuJiM0MztcdCAqIGluZ3Jlc3NfbXNnOiBpdCBzdGF5cyBpbiBza19yZWNlaXZlX3F1ZXVlIGFuZCBpcyByZWFkIHRocm91Z2hcbiYjNDM7XHQgKiB0aGUgZmFsbGJhY2sgdG8gdGNwX3JlY3Ztc2coKSwgc28gYWNjb3VudCBmb3IgaXQgbGlrZVxuJiM0MztcdCAqIHRjcF9pb2N0bCgpIGRvZXMuXG4mIzQzO1x0ICovXG4mIzQzO1x0aWYgKCFSRUFEX09OQ0UocHNvY2stXHUwMDNlcHJvZ3Muc3RyZWFtX3ZlcmRpY3QpIFx1MDAyNlx1MDAyNlxuJiM0MztcdCAgICAhUkVBRF9PTkNFKHBzb2NrLVx1MDAzZXByb2dzLnNrYl92ZXJkaWN0KSlcbiYjNDM7XHRcdCprYXJnICYjNDM7PSB0Y3BfaW5xKHNrKTtcbiYjNDM7XHRza19wc29ja19wdXQoc2ssIHBzb2NrKTtcbiBcdHVubG9ja19zb2NrX2Zhc3Qoc2ssIHNsb3cpO1xuIFxuIFx0cmV0dXJuIDA7XG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvc29ja21hcF9iYXNpYy5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvc29ja21hcF9iYXNpYy5jXG5pbmRleCBjYjMyMjk3MTFmOTNhMy4uZjBmMzY4MjAxZGRhZGIgMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9zb2NrbWFwX2Jhc2ljLmNcbiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3NvY2ttYXBfYmFzaWMuY1xuQEAgLTEzNzMsNiAmIzQzOzEzNzMsNDMgQEAgc3RhdGljIHZvaWQgdGVzdF9zb2NrbWFwX211bHRpX2NoYW5uZWxzKGludCBzb3R5cGUpXG4gXHR0ZXN0X3NvY2ttYXBfcGFzc19wcm9nX19kZXN0cm95KHNrZWwpO1xuIH1cbiBcbiYjNDM7LyogQSBzb2NrZXQgaW4gYSBzb2NrbWFwIHdpdGhvdXQgYSB2ZXJkaWN0IHByb2dyYW0ga2VlcHMgaXRzIGluZ3Jlc3MgZGF0YVxuJiM0MzsgKiBpbiBza19yZWNlaXZlX3F1ZXVlOiBGSU9OUkVBRCBtdXN0IGFjY291bnQgZm9yIGl0LlxuJiM0MzsgKi9cbiYjNDM7c3RhdGljIHZvaWQgdGVzdF9zb2NrbWFwX25vX3ZlcmRpY3RfZmlvbnJlYWQodm9pZClcbiYjNDM7e1xuJiM0MztcdGludCBlcnIsIG1hcCwgemVybyA9IDAsIHNlbnQsIGF2YWlsO1xuJiM0MztcdGludCBjMCA9IC0xLCBjMSA9IC0xLCBwMCA9IC0xLCBwMSA9IC0xO1xuJiM0MztcdHN0cnVjdCB0ZXN0X3NvY2ttYXBfcGFzc19wcm9nICpza2VsO1xuJiM0MztcdGNoYXIgYnVmWzI1Nl0gPSBcJiMzNDswMTIzNDU2Nzg5XCYjMzQ7O1xuJiM0MztcbiYjNDM7XHRza2VsID0gdGVzdF9zb2NrbWFwX3Bhc3NfcHJvZ19fb3Blbl9hbmRfbG9hZCgpO1xuJiM0MztcdGlmICghQVNTRVJUX09LX1BUUihza2VsLCBcJiMzNDtvcGVuX2FuZF9sb2FkXCYjMzQ7KSlcbiYjNDM7XHRcdHJldHVybjtcbiYjNDM7XHRtYXAgPSBicGZfbWFwX19mZChza2VsLVx1MDAzZW1hcHMuc29ja19tYXBfcngpO1xuJiM0MztcbiYjNDM7XHRlcnIgPSBjcmVhdGVfc29ja2V0X3BhaXJzKEFGX0lORVQsIFNPQ0tfU1RSRUFNLCBcdTAwMjZjMCwgXHUwMDI2YzEsIFx1MDAyNnAwLCBcdTAwMjZwMSk7XG4mIzQzO1x0aWYgKCFBU1NFUlRfT0soZXJyLCBcJiMzNDtjcmVhdGVfc29ja2V0X3BhaXJzKClcJiMzNDspKVxuJiM0MztcdFx0Z290byBvdXQ7XG4mIzQzO1xuJiM0MztcdGVyciA9IGJwZl9tYXBfdXBkYXRlX2VsZW0obWFwLCBcdTAwMjZ6ZXJvLCBcdTAwMjZjMSwgQlBGX05PRVhJU1QpO1xuJiM0MztcdGlmICghQVNTRVJUX09LKGVyciwgXCYjMzQ7YnBmX21hcF91cGRhdGVfZWxlbShjMSlcJiMzNDspKVxuJiM0MztcdFx0Z290byBvdXRfY2xvc2U7XG4mIzQzO1xuJiM0MztcdHNlbnQgPSB4c2VuZChwMSwgXHUwMDI2YnVmLCBzaXplb2YoYnVmKSwgMCk7XG4mIzQzO1x0QVNTRVJUX0VRKHNlbnQsIHNpemVvZihidWYpLCBcJiMzNDt4c2VuZChwMSlcJiMzNDspO1xuJiM0MztcdGF2YWlsID0gd2FpdF9mb3JfZmlvbnJlYWQoYzEsIHNpemVvZihidWYpLCBJT19USU1FT1VUX1NFQyk7XG4mIzQzO1x0QVNTRVJUX0VRKGF2YWlsLCBzaXplb2YoYnVmKSwgXCYjMzQ7aW9jdGwoRklPTlJFQUQpXCYjMzQ7KTtcbiYjNDM7XG4mIzQzO291dF9jbG9zZTpcbiYjNDM7XHRjbG9zZShjMCk7XG4mIzQzO1x0Y2xvc2UocDApO1xuJiM0MztcdGNsb3NlKGMxKTtcbiYjNDM7XHRjbG9zZShwMSk7XG4mIzQzO291dDpcbiYjNDM7XHR0ZXN0X3NvY2ttYXBfcGFzc19wcm9nX19kZXN0cm95KHNrZWwpO1xuJiM0Mzt9XG4mIzQzO1xuIHZvaWQgdGVzdF9zb2NrbWFwX2Jhc2ljKHZvaWQpXG4ge1xuIFx0aWYgKHRlc3RfX3N0YXJ0X3N1YnRlc3QoXCYjMzQ7c29ja21hcCBjcmVhdGVfdXBkYXRlX2ZyZWVcJiMzNDspKVxuQEAgLTE0MTUsNiAmIzQzOzE0NTIsOCBAQCB2b2lkIHRlc3Rfc29ja21hcF9iYXNpYyh2b2lkKVxuIFx0XHR0ZXN0X3NvY2ttYXBfc2tiX3ZlcmRpY3Rfc2h1dGRvd24oKTtcbiBcdGlmICh0ZXN0X19zdGFydF9zdWJ0ZXN0KFwmIzM0O3NvY2ttYXAgc2tiX3ZlcmRpY3QgZmlvbnJlYWRcJiMzNDspKVxuIFx0XHR0ZXN0X3NvY2ttYXBfc2tiX3ZlcmRpY3RfZmlvbnJlYWQodHJ1ZSk7XG4mIzQzO1x0aWYgKHRlc3RfX3N0YXJ0X3N1YnRlc3QoXCYjMzQ7c29ja21hcCBub192ZXJkaWN0IGZpb25yZWFkXCYjMzQ7KSlcbiYjNDM7XHRcdHRlc3Rfc29ja21hcF9ub192ZXJkaWN0X2Zpb25yZWFkKCk7XG4gXHRpZiAodGVzdF9fc3RhcnRfc3VidGVzdChcJiMzNDtzb2NrbWFwIHNrYl92ZXJkaWN0IGZpb25yZWFkIG9uIGRyb3BcJiMzNDspKVxuIFx0XHR0ZXN0X3NvY2ttYXBfc2tiX3ZlcmRpY3RfZmlvbnJlYWQoZmFsc2UpO1xuIFx0aWYgKHRlc3RfX3N0YXJ0X3N1YnRlc3QoXCYjMzQ7c29ja21hcCBza2JfdmVyZGljdCBjaGFuZ2UgdGFpbFwmIzM0OykpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDkgMTA6NTI8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+M208L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7QlBGX1NZU0NBTEwmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDt0Y3BfYnBmX2lvY3RsJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIGB0Y3BfYnBmX2lvY3RsYCB0byBjb3JyZWN0bHkgYWNjb3VudCBmb3IgZGF0YSBpbiBgc2tfcmVjZWl2ZV9xdWV1ZWAgd2hlbiBoYW5kbGluZyBgU0lPQ0lOUWAgKEZJT05SRUFEKSBmb3IgVENQIHNvY2tldHMgaW4gYSBzb2NrbWFwIHdpdGhvdXQgYSB2ZXJkaWN0IHByb2dyYW0uIFRoaXMgaXMgZnVuY3Rpb25hbCBjb3JlIGtlcm5lbCBsb2dpYyByZWxhdGVkIHRvIEJQRiBhbmQgVENQLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdAogICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksCiAgIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCA1MmUzZTM3YjZhZjIxMjJkMWYxNmY3ZWM0Y2RlMjJmMDIyMjZmOTA5CkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFRodSBKdWwgOSAxMDo1MjoxOCAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvc2ttc2cuaCBiL2luY2x1ZGUvbGludXgvc2ttc2cuaAppbmRleCBhODU1MzQwMWIxYzkzZi4uZDVlMzVmMjQ3MzhkNWMgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbGludXgvc2ttc2cuaAomIzQzOyYjNDM7JiM0MzsgYi9pbmNsdWRlL2xpbnV4L3NrbXNnLmgKQEAgLTU1MSwyMCAmIzQzOzU1MSw2IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBwc29ja19wcm9nc19kcm9wKHN0cnVjdCBza19wc29ja19wcm9ncyAqcHJvZ3MpCiAJcHNvY2tfc2V0X3Byb2coJmFtcDtwcm9ncy0mZ3Q7c2tiX3ZlcmRpY3QsIE5VTEwpOwogfQogCi0vKiBmb3IgdGNwIG9ubHksIHNrIGlzIGxvY2tlZCAqLwotc3RhdGljIGlubGluZSBzc2l6ZV90IHNrX3Bzb2NrX21zZ19pbnEoc3RydWN0IHNvY2sgKnNrKQotewotCXN0cnVjdCBza19wc29jayAqcHNvY2s7Ci0Jc3NpemVfdCBpbnEgPSAwOwotCi0JcHNvY2sgPSBza19wc29ja19nZXQoc2spOwotCWlmIChsaWtlbHkocHNvY2spKSB7Ci0JCWlucSA9IHNrX3Bzb2NrX2dldF9tc2dfbGVuX25vbG9jayhwc29jayk7Ci0JCXNrX3Bzb2NrX3B1dChzaywgcHNvY2spOwotCX0KLQlyZXR1cm4gaW5xOwotfQotCiAvKiBmb3IgdWRwIG9ubHksIHNrIGlzIG5vdCBsb2NrZWQgKi8KIHN0YXRpYyBpbmxpbmUgc3NpemVfdCBza19tc2dfZmlyc3RfbGVuKHN0cnVjdCBzb2NrICpzaykKIHsKZGlmZiAtLWdpdCBhL25ldC9pcHY0L3RjcF9icGYuYyBiL25ldC9pcHY0L3RjcF9icGYuYwppbmRleCBjYzBiZDczZjM2YjZkNi4uOGU5MDViNTBkZWFkYmUgMTAwNjQ0Ci0tLSBhL25ldC9pcHY0L3RjcF9icGYuYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvaXB2NC90Y3BfYnBmLmMKQEAgLTMzNCw2ICYjNDM7MzM0LDcgQEAgc3RhdGljIGludCB0Y3BfYnBmX3JlY3Ztc2dfcGFyc2VyKHN0cnVjdCBzb2NrICpzaywKIAogc3RhdGljIGludCB0Y3BfYnBmX2lvY3RsKHN0cnVjdCBzb2NrICpzaywgaW50IGNtZCwgaW50ICprYXJnKQogewomIzQzOwlzdHJ1Y3Qgc2tfcHNvY2sgKnBzb2NrOwogCWJvb2wgc2xvdzsKIAogCWlmIChjbWQgIT0gU0lPQ0lOUSkKQEAgLTM0NCw3ICYjNDM7MzQ1LDIxIEBAIHN0YXRpYyBpbnQgdGNwX2JwZl9pb2N0bChzdHJ1Y3Qgc29jayAqc2ssIGludCBjbWQsIGludCAqa2FyZykKIAkJcmV0dXJuIC1FSU5WQUw7CiAKIAlzbG93ID0gbG9ja19zb2NrX2Zhc3Qoc2spOwotCSprYXJnID0gc2tfcHNvY2tfbXNnX2lucShzayk7CiYjNDM7CXBzb2NrID0gc2tfcHNvY2tfZ2V0KHNrKTsKJiM0MzsJaWYgKHVubGlrZWx5KCFwc29jaykpIHsKJiM0MzsJCXVubG9ja19zb2NrX2Zhc3Qoc2ssIHNsb3cpOwomIzQzOwkJcmV0dXJuIHRjcF9pb2N0bChzaywgY21kLCBrYXJnKTsKJiM0MzsJfQomIzQzOwkqa2FyZyA9IHNrX3Bzb2NrX2dldF9tc2dfbGVuX25vbG9jayhwc29jayk7CiYjNDM7CS8qIFdpdGhvdXQgYSB2ZXJkaWN0IHByb2dyYW0sIGluZ3Jlc3MgZGF0YSBpcyBuZXZlciBkaXZlcnRlZCB0bwomIzQzOwkgKiBpbmdyZXNzX21zZzogaXQgc3RheXMgaW4gc2tfcmVjZWl2ZV9xdWV1ZSBhbmQgaXMgcmVhZCB0aHJvdWdoCiYjNDM7CSAqIHRoZSBmYWxsYmFjayB0byB0Y3BfcmVjdm1zZygpLCBzbyBhY2NvdW50IGZvciBpdCBsaWtlCiYjNDM7CSAqIHRjcF9pb2N0bCgpIGRvZXMuCiYjNDM7CSAqLwomIzQzOwlpZiAoIVJFQURfT05DRShwc29jay0mZ3Q7cHJvZ3Muc3RyZWFtX3ZlcmRpY3QpICZhbXA7JmFtcDsKJiM0MzsJICAgICFSRUFEX09OQ0UocHNvY2stJmd0O3Byb2dzLnNrYl92ZXJkaWN0KSkKJiM0MzsJCSprYXJnICYjNDM7PSB0Y3BfaW5xKHNrKTsKJiM0MzsJc2tfcHNvY2tfcHV0KHNrLCBwc29jayk7CiAJdW5sb2NrX3NvY2tfZmFzdChzaywgc2xvdyk7CiAKIAlyZXR1cm4gMDsKZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3NvY2ttYXBfYmFzaWMuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3NvY2ttYXBfYmFzaWMuYwppbmRleCBjYjMyMjk3MTFmOTNhMy4uZjBmMzY4MjAxZGRhZGIgMTAwNjQ0Ci0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3NvY2ttYXBfYmFzaWMuYwomIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9zb2NrbWFwX2Jhc2ljLmMKQEAgLTEzNzMsNiAmIzQzOzEzNzMsNDMgQEAgc3RhdGljIHZvaWQgdGVzdF9zb2NrbWFwX211bHRpX2NoYW5uZWxzKGludCBzb3R5cGUpCiAJdGVzdF9zb2NrbWFwX3Bhc3NfcHJvZ19fZGVzdHJveShza2VsKTsKIH0KIAomIzQzOy8qIEEgc29ja2V0IGluIGEgc29ja21hcCB3aXRob3V0IGEgdmVyZGljdCBwcm9ncmFtIGtlZXBzIGl0cyBpbmdyZXNzIGRhdGEKJiM0MzsgKiBpbiBza19yZWNlaXZlX3F1ZXVlOiBGSU9OUkVBRCBtdXN0IGFjY291bnQgZm9yIGl0LgomIzQzOyAqLwomIzQzO3N0YXRpYyB2b2lkIHRlc3Rfc29ja21hcF9ub192ZXJkaWN0X2Zpb25yZWFkKHZvaWQpCiYjNDM7ewomIzQzOwlpbnQgZXJyLCBtYXAsIHplcm8gPSAwLCBzZW50LCBhdmFpbDsKJiM0MzsJaW50IGMwID0gLTEsIGMxID0gLTEsIHAwID0gLTEsIHAxID0gLTE7CiYjNDM7CXN0cnVjdCB0ZXN0X3NvY2ttYXBfcGFzc19wcm9nICpza2VsOwomIzQzOwljaGFyIGJ1ZlsyNTZdID0gJiMzNDswMTIzNDU2Nzg5JiMzNDs7CiYjNDM7CiYjNDM7CXNrZWwgPSB0ZXN0X3NvY2ttYXBfcGFzc19wcm9nX19vcGVuX2FuZF9sb2FkKCk7CiYjNDM7CWlmICghQVNTRVJUX09LX1BUUihza2VsLCAmIzM0O29wZW5fYW5kX2xvYWQmIzM0OykpCiYjNDM7CQlyZXR1cm47CiYjNDM7CW1hcCA9IGJwZl9tYXBfX2ZkKHNrZWwtJmd0O21hcHMuc29ja19tYXBfcngpOwomIzQzOwomIzQzOwllcnIgPSBjcmVhdGVfc29ja2V0X3BhaXJzKEFGX0lORVQsIFNPQ0tfU1RSRUFNLCAmYW1wO2MwLCAmYW1wO2MxLCAmYW1wO3AwLCAmYW1wO3AxKTsKJiM0MzsJaWYgKCFBU1NFUlRfT0soZXJyLCAmIzM0O2NyZWF0ZV9zb2NrZXRfcGFpcnMoKSYjMzQ7KSkKJiM0MzsJCWdvdG8gb3V0OwomIzQzOwomIzQzOwllcnIgPSBicGZfbWFwX3VwZGF0ZV9lbGVtKG1hcCwgJmFtcDt6ZXJvLCAmYW1wO2MxLCBCUEZfTk9FWElTVCk7CiYjNDM7CWlmICghQVNTRVJUX09LKGVyciwgJiMzNDticGZfbWFwX3VwZGF0ZV9lbGVtKGMxKSYjMzQ7KSkKJiM0MzsJCWdvdG8gb3V0X2Nsb3NlOwomIzQzOwomIzQzOwlzZW50ID0geHNlbmQocDEsICZhbXA7YnVmLCBzaXplb2YoYnVmKSwgMCk7CiYjNDM7CUFTU0VSVF9FUShzZW50LCBzaXplb2YoYnVmKSwgJiMzNDt4c2VuZChwMSkmIzM0Oyk7CiYjNDM7CWF2YWlsID0gd2FpdF9mb3JfZmlvbnJlYWQoYzEsIHNpemVvZihidWYpLCBJT19USU1FT1VUX1NFQyk7CiYjNDM7CUFTU0VSVF9FUShhdmFpbCwgc2l6ZW9mKGJ1ZiksICYjMzQ7aW9jdGwoRklPTlJFQUQpJiMzNDspOwomIzQzOwomIzQzO291dF9jbG9zZToKJiM0MzsJY2xvc2UoYzApOwomIzQzOwljbG9zZShwMCk7CiYjNDM7CWNsb3NlKGMxKTsKJiM0MzsJY2xvc2UocDEpOwomIzQzO291dDoKJiM0MzsJdGVzdF9zb2NrbWFwX3Bhc3NfcHJvZ19fZGVzdHJveShza2VsKTsKJiM0Mzt9CiYjNDM7CiB2b2lkIHRlc3Rfc29ja21hcF9iYXNpYyh2b2lkKQogewogCWlmICh0ZXN0X19zdGFydF9zdWJ0ZXN0KCYjMzQ7c29ja21hcCBjcmVhdGVfdXBkYXRlX2ZyZWUmIzM0OykpCkBAIC0xNDE1LDYgJiM0MzsxNDUyLDggQEAgdm9pZCB0ZXN0X3NvY2ttYXBfYmFzaWModm9pZCkKIAkJdGVzdF9zb2NrbWFwX3NrYl92ZXJkaWN0X3NodXRkb3duKCk7CiAJaWYgKHRlc3RfX3N0YXJ0X3N1YnRlc3QoJiMzNDtzb2NrbWFwIHNrYl92ZXJkaWN0IGZpb25yZWFkJiMzNDspKQogCQl0ZXN0X3NvY2ttYXBfc2tiX3ZlcmRpY3RfZmlvbnJlYWQodHJ1ZSk7CiYjNDM7CWlmICh0ZXN0X19zdGFydF9zdWJ0ZXN0KCYjMzQ7c29ja21hcCBub192ZXJkaWN0IGZpb25yZWFkJiMzNDspKQomIzQzOwkJdGVzdF9zb2NrbWFwX25vX3ZlcmRpY3RfZmlvbnJlYWQoKTsKIAlpZiAodGVzdF9fc3RhcnRfc3VidGVzdCgmIzM0O3NvY2ttYXAgc2tiX3ZlcmRpY3QgZmlvbnJlYWQgb24gZHJvcCYjMzQ7KSkKIAkJdGVzdF9zb2NrbWFwX3NrYl92ZXJkaWN0X2Zpb25yZWFkKGZhbHNlKTsKIAlpZiAodGVzdF9fc3RhcnRfc3VidGVzdCgmIzM0O3NvY2ttYXAgc2tiX3ZlcmRpY3QgY2hhbmdlIHRhaWwmIzM0OykpCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA5IDEwOjUyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMzNjIKCQkJCQkJCW91dHB1dDogMjkKCQkJCQkJCXRob3VnaHRzOiAyMjMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBUQ1AgQlBGIElvY3RsIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGZvciBgdGNwX2JwZl9pb2N0bGAgd2l0aGluIGBuZXQvaXB2NC90Y3BfYnBmLmNgLiBJdCYjMzk7cyBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkLCBidXQgaXQgZGVhbHMgd2l0aCBhIGNyaXRpY2FsIGFyZWE6IGhvdyBgU0lPQ0lOUWAgKG9yIGBGSU9OUkVBRGAg4oCTIHN0YW5kYXJkIHN0dWZmLCByZWFsbHkpIGJlaGF2ZXMgZm9yIFRDUCBzb2NrZXRzIHRoYXQgYXJlIGFsc28gb3BlcmF0aW5nIHdpdGhpbiBhIHNvY2ttYXAgY29udGV4dCwgdXNpbmcgQlBGLiBUaGUgY29yZSBjaGFuZ2UgaXMgdGhpczogaWYgdGhlcmUgaXNuJiMzOTt0IGEgdmVyZGljdCBwcm9ncmFtIGluIHBsYXksIHRoZSBpbXBsZW1lbnRhdGlvbiBoYXMgYmVlbiB1cGRhdGVkIHRvIGFjY291bnQgZm9yIG5vdCBvbmx5IHRoZSBsZW5ndGggb2YgbWVzc2FnZXMgb24gdGhlIGBza19yZWNlaXZlX3F1ZXVlYCAoYHRjcF9pbnEoc2spYCksIGJ1dCBhbHNvIGBza19wc29ja19nZXRfbXNnX2xlbl9ub2xvY2socHNvY2spYC4gVGhpcyBzZWVtcyBsaWtlIGEgcmVhc29uYWJsZSBhZGp1c3RtZW50IHRvIGVuc3VyZSBhY2N1cmF0ZSByZXBvcnRpbmcgb2YgcXVldWVkIGRhdGEuCgpJIHNlZSB0aGF0IGBza19wc29ja19tc2dfaW5xYCBoYXMgYmVlbiByZW1vdmVkIGZyb20gYGluY2x1ZGUvbGludXgvc2ttc2cuaGAsIGFuZCB0aGUgbG9naWMgaXMgbm93IGVtYmVkZGVkIGRpcmVjdGx5IHdpdGhpbiBgdGNwX2JwZl9pb2N0bGAuIFRoaXMgaXMgZmluZTsgSSB3b3VsZG4mIzM5O3QgdXN1YWxseSBleHBlY3QgYSBkZWRpY2F0ZWQgc3ltYm9sIGZvciB0aGlzIGtpbmQgb2YgZnVuY3Rpb25hbGl0eSBpbiBhIGhlYWRlciBmaWxlLiBUaGUgcGF0Y2ggbW92ZXMgdGhlIGNvcmUgbG9naWMgaW50byBhIG1vcmUgYXBwcm9wcmlhdGUgbG9jYXRpb24gaW4gdGhlIGtlcm5lbC4KCkdpdmVuIHRoZSBpbXBvcnRhbmNlIG9mIHRoaXMgcGF0Y2gsIEkgc2hvdWxkIGNoZWNrIHRoZSByZWxldmFudCBrZXJuZWwgY29uZmlncyByZXF1aXJlZCBmb3IgYG5ldC9pcHY0L3RjcF9icGYuY2AgYW5kIG1ha2Ugc3VyZSB0aGUgbmV3IGZ1bmN0aW9uYWxpdHkgaXMgZ29pbmcgdG8gYmUgYXZhaWxhYmxlLiBXZSBkb24mIzM5O3Qgd2FudCB0byBnZXQgdGhpcyBtaXNzZWQgYnkgYSBtaXNjb25maWd1cmVkIGJ1aWxkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA5IDEwOjUyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3RjcF9icGYmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvaXB2NC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L2lwdjQvTWFrZWZpbGU9NjI9b2JqLSQoQ09ORklHX1RDUF9DT05HX0lMTElOT0lTKSAmIzQzOz0gdGNwX2lsbGlub2lzLm9cbm5ldC9pcHY0L01ha2VmaWxlOjYzOm9iai0kKENPTkZJR19ORVRfU09DS19NU0cpICYjNDM7PSB0Y3BfYnBmLm9cbm5ldC9pcHY0L01ha2VmaWxlLTY0LW9iai0kKENPTkZJR19CUEZfU1lTQ0FMTCkgJiM0Mzs9IHVkcF9icGYub1xuLS1cbm5ldC9pcHY0L3RjcC5jPTQ0ODE9aW50IGRvX3RjcF9nZXRzb2Nrb3B0KHN0cnVjdCBzb2NrICpzaywgaW50IGxldmVsLFxuLS1cbm5ldC9pcHY0L3RjcC5jLTQ4NDUtXG5uZXQvaXB2NC90Y3AuYzo0ODQ2OmJvb2wgdGNwX2JwZl9ieXBhc3NfZ2V0c29ja29wdChpbnQgbGV2ZWwsIGludCBvcHRuYW1lKVxubmV0L2lwdjQvdGNwLmMtNDg0Ny17XG4tLVxubmV0L2lwdjQvdGNwX2JwZi5jPTMzPXN0YXRpYyBpbnQgYnBmX3RjcF9pbmdyZXNzKHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX3Bzb2NrICpwc29jayxcbi0tXG5uZXQvaXB2NC90Y3BfYnBmLmMtOTAtXG5uZXQvaXB2NC90Y3BfYnBmLmM6OTE6c3RhdGljIGludCB0Y3BfYnBmX3B1c2goc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3Qgc2tfbXNnICptc2csIHUzMiBhcHBseV9ieXRlcyxcbm5ldC9pcHY0L3RjcF9icGYuYy05Mi1cdFx0XHRpbnQgZmxhZ3MsIGJvb2wgdW5jaGFyZ2UpXG4tLVxubmV0L2lwdjQvdGNwX2JwZi5jLTE1Mi1cbm5ldC9pcHY0L3RjcF9icGYuYzoxNTM6c3RhdGljIGludCB0Y3BfYnBmX3B1c2hfbG9ja2VkKHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX21zZyAqbXNnLFxubmV0L2lwdjQvdGNwX2JwZi5jLTE1NC1cdFx0XHQgICAgICAgdTMyIGFwcGx5X2J5dGVzLCBpbnQgZmxhZ3MsIGJvb2wgdW5jaGFyZ2UpXG4tLVxubmV0L2lwdjQvdGNwX2JwZi5jLTE1OC1cdGxvY2tfc29jayhzayk7XG5uZXQvaXB2NC90Y3BfYnBmLmM6MTU5Olx0cmV0ID0gdGNwX2JwZl9wdXNoKHNrLCBtc2csIGFwcGx5X2J5dGVzLCBmbGFncywgdW5jaGFyZ2UpO1xubmV0L2lwdjQvdGNwX2JwZi5jLTE2MC1cdHJlbGVhc2Vfc29jayhzayk7XG4tLVxubmV0L2lwdjQvdGNwX2JwZi5jLTE2My1cbm5ldC9pcHY0L3RjcF9icGYuYzoxNjQ6aW50IHRjcF9icGZfc2VuZG1zZ19yZWRpcihzdHJ1Y3Qgc29jayAqc2ssIGJvb2wgaW5ncmVzcyxcbm5ldC9pcHY0L3RjcF9icGYuYy0xNjUtXHRcdFx0ICBzdHJ1Y3Qgc2tfbXNnICptc2csIHUzMiBieXRlcywgaW50IGZsYWdzKVxuLS1cbm5ldC9pcHY0L3RjcF9icGYuYy0xNzMtXHRyZXQgPSBpbmdyZXNzID8gYnBmX3RjcF9pbmdyZXNzKHNrLCBwc29jaywgbXNnLCBieXRlcykgOlxubmV0L2lwdjQvdGNwX2JwZi5jOjE3NDpcdFx0XHR0Y3BfYnBmX3B1c2hfbG9ja2VkKHNrLCBtc2csIGJ5dGVzLCBmbGFncywgZmFsc2UpO1xubmV0L2lwdjQvdGNwX2JwZi5jLTE3NS1cdHNrX3Bzb2NrX3B1dChzaywgcHNvY2spO1xuLS1cbm5ldC9pcHY0L3RjcF9icGYuYy0xNzctfVxubmV0L2lwdjQvdGNwX2JwZi5jOjE3ODpFWFBPUlRfU1lNQk9MX0dQTCh0Y3BfYnBmX3NlbmRtc2dfcmVkaXIpO1xubmV0L2lwdjQvdGNwX2JwZi5jLTE3OS1cbi0tXG5uZXQvaXB2NC90Y3BfYnBmLmM9MjAzPXN0YXRpYyBib29sIGlzX25leHRfbXNnX2ZpbihzdHJ1Y3Qgc2tfcHNvY2sgKnBzb2NrKVxuLS1cbm5ldC9pcHY0L3RjcF9icGYuYy0yMjAtXG5uZXQvaXB2NC90Y3BfYnBmLmM6MjIxOnN0YXRpYyBpbnQgdGNwX2JwZl9yZWN2bXNnX3BhcnNlcihzdHJ1Y3Qgc29jayAqc2ssXG5uZXQvaXB2NC90Y3BfYnBmLmMtMjIyLVx0XHRcdFx0ICBzdHJ1Y3QgbXNnaGRyICptc2csXG4tLVxubmV0L2lwdjQvdGNwX2JwZi5jLTMzNC1cbm5ldC9pcHY0L3RjcF9icGYuYzozMzU6c3RhdGljIGludCB0Y3BfYnBmX2lvY3RsKHN0cnVjdCBzb2NrICpzaywgaW50IGNtZCwgaW50ICprYXJnKVxubmV0L2lwdjQvdGNwX2JwZi5jLTMzNi17XG4tLVxubmV0L2lwdjQvdGNwX2JwZi5jLTM2Ny1cbm5ldC9pcHY0L3RjcF9icGYuYzozNjg6c3RhdGljIGludCB0Y3BfYnBmX3JlY3Ztc2coc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3QgbXNnaGRyICptc2csIHNpemVfdCBsZW4sXG5uZXQvaXB2NC90Y3BfYnBmLmMtMzY5LVx0XHRcdCAgIGludCBmbGFncylcbi0tXG5uZXQvaXB2NC90Y3BfYnBmLmMtNDE3LVxubmV0L2lwdjQvdGNwX2JwZi5jOjQxODpzdGF0aWMgaW50IHRjcF9icGZfc2VuZF92ZXJkaWN0KHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX3Bzb2NrICpwc29jayxcbm5ldC9pcHY0L3RjcF9icGYuYy00MTktXHRcdFx0XHRzdHJ1Y3Qgc2tfbXNnICptc2csIGludCAqY29waWVkLCBpbnQgZmxhZ3MpXG4tLVxubmV0L2lwdjQvdGNwX2JwZi5jLTQ2MS1cdGNhc2UgX19TS19QQVNTOlxubmV0L2lwdjQvdGNwX2JwZi5jOjQ2MjpcdFx0cmV0ID0gdGNwX2JwZl9wdXNoKHNrLCBtc2csIHRvc2VuZCwgZmxhZ3MsIHRydWUpO1xubmV0L2lwdjQvdGNwX2JwZi5jLTQ2My1cdFx0aWYgKHVubGlrZWx5KHJldCkpIHtcbi0tXG5uZXQvaXB2NC90Y3BfYnBmLmMtNDg1LVx0XHRvcmlnc2l6ZSA9IG1zZy1cdTAwM2VzZy5zaXplO1xubmV0L2lwdjQvdGNwX2JwZi5jOjQ4NjpcdFx0cmV0ID0gdGNwX2JwZl9zZW5kbXNnX3JlZGlyKHNrX3JlZGlyLCByZWRpcl9pbmdyZXNzLFxubmV0L2lwdjQvdGNwX2JwZi5jLTQ4Ny1cdFx0XHRcdFx0ICAgIG1zZywgdG9zZW5kLCBmbGFncyk7XG4tLVxubmV0L2lwdjQvdGNwX2JwZi5jLTUzMS1cbm5ldC9pcHY0L3RjcF9icGYuYzo1MzI6c3RhdGljIGludCB0Y3BfYnBmX3NlbmRtc2coc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3QgbXNnaGRyICptc2csIHNpemVfdCBzaXplKVxubmV0L2lwdjQvdGNwX2JwZi5jLTUzMy17XG4tLVxubmV0L2lwdjQvdGNwX2JwZi5jLTU5Ny1cbm5ldC9pcHY0L3RjcF9icGYuYzo1OTg6XHRcdGVyciA9IHRjcF9icGZfc2VuZF92ZXJkaWN0KHNrLCBwc29jaywgbXNnX3R4LCBcdTAwMjZjb3BpZWQsIGZsYWdzKTtcbm5ldC9pcHY0L3RjcF9icGYuYy01OTktXHRcdGlmICh1bmxpa2VseShlcnIgXHUwMDNjIDApKVxuLS1cbm5ldC9pcHY0L3RjcF9icGYuYz02MzU9c3RhdGljIERFRklORV9TUElOTE9DSyh0Y3B2Nl9wcm90X2xvY2spO1xubmV0L2lwdjQvdGNwX2JwZi5jOjYzNjpzdGF0aWMgc3RydWN0IHByb3RvIHRjcF9icGZfcHJvdHNbVENQX0JQRl9OVU1fUFJPVFNdW1RDUF9CUEZfTlVNX0NGR1NdO1xubmV0L2lwdjQvdGNwX2JwZi5jLTYzNy1cbm5ldC9pcHY0L3RjcF9icGYuYzo2Mzg6c3RhdGljIHZvaWQgdGNwX2JwZl9yZWJ1aWxkX3Byb3RvcyhzdHJ1Y3QgcHJvdG8gcHJvdFtUQ1BfQlBGX05VTV9DRkdTXSxcbm5ldC9pcHY0L3RjcF9icGYuYy02MzktXHRcdFx0XHQgICBzdHJ1Y3QgcHJvdG8gKmJhc2UpXG4tLVxubmV0L2lwdjQvdGNwX2JwZi5jLTY0My1cdHByb3RbVENQX0JQRl9CQVNFXS5jbG9zZVx0XHQ9IHNvY2tfbWFwX2Nsb3NlO1xubmV0L2lwdjQvdGNwX2JwZi5jOjY0NDpcdHByb3RbVENQX0JQRl9CQVNFXS5yZWN2bXNnXHRcdD0gdGNwX2JwZl9yZWN2bXNnO1xubmV0L2lwdjQvdGNwX2JwZi5jLTY0NS1cdHByb3RbVENQX0JQRl9CQVNFXS5zb2NrX2lzX3JlYWRhYmxlXHQ9IHNrX21zZ19pc19yZWFkYWJsZTtcbm5ldC9pcHY0L3RjcF9icGYuYzo2NDY6XHRwcm90W1RDUF9CUEZfQkFTRV0uaW9jdGxcdFx0PSB0Y3BfYnBmX2lvY3RsO1xubmV0L2lwdjQvdGNwX2JwZi5jLTY0Ny1cbm5ldC9pcHY0L3RjcF9icGYuYy02NDgtXHRwcm90W1RDUF9CUEZfVFhdXHRcdFx0PSBwcm90W1RDUF9CUEZfQkFTRV07XG5uZXQvaXB2NC90Y3BfYnBmLmM6NjQ5Olx0cHJvdFtUQ1BfQlBGX1RYXS5zZW5kbXNnXHRcdD0gdGNwX2JwZl9zZW5kbXNnO1xubmV0L2lwdjQvdGNwX2JwZi5jLTY1MC1cbm5ldC9pcHY0L3RjcF9icGYuYy02NTEtXHRwcm90W1RDUF9CUEZfUlhdXHRcdFx0PSBwcm90W1RDUF9CUEZfQkFTRV07XG5uZXQvaXB2NC90Y3BfYnBmLmM6NjUyOlx0cHJvdFtUQ1BfQlBGX1JYXS5yZWN2bXNnXHRcdD0gdGNwX2JwZl9yZWN2bXNnX3BhcnNlcjtcbm5ldC9pcHY0L3RjcF9icGYuYy02NTMtXG5uZXQvaXB2NC90Y3BfYnBmLmMtNjU0LVx0cHJvdFtUQ1BfQlBGX1RYUlhdXHRcdFx0PSBwcm90W1RDUF9CUEZfVFhdO1xubmV0L2lwdjQvdGNwX2JwZi5jOjY1NTpcdHByb3RbVENQX0JQRl9UWFJYXS5yZWN2bXNnXHRcdD0gdGNwX2JwZl9yZWN2bXNnX3BhcnNlcjtcbm5ldC9pcHY0L3RjcF9icGYuYy02NTYtfVxubmV0L2lwdjQvdGNwX2JwZi5jLTY1Ny1cbm5ldC9pcHY0L3RjcF9icGYuYzo2NTg6c3RhdGljIHZvaWQgdGNwX2JwZl9jaGVja192Nl9uZWVkc19yZWJ1aWxkKHN0cnVjdCBwcm90byAqb3BzKVxubmV0L2lwdjQvdGNwX2JwZi5jLTY1OS17XG4tLVxubmV0L2lwdjQvdGNwX2JwZi5jLTY2Mi1cdFx0aWYgKGxpa2VseShvcHMgIT0gdGNwdjZfcHJvdF9zYXZlZCkpIHtcbm5ldC9pcHY0L3RjcF9icGYuYzo2NjM6XHRcdFx0dGNwX2JwZl9yZWJ1aWxkX3Byb3Rvcyh0Y3BfYnBmX3Byb3RzW1RDUF9CUEZfSVBWNl0sIG9wcyk7XG5uZXQvaXB2NC90Y3BfYnBmLmMtNjY0LVx0XHRcdHNtcF9zdG9yZV9yZWxlYXNlKFx1MDAyNnRjcHY2X3Byb3Rfc2F2ZWQsIG9wcyk7XG4tLVxubmV0L2lwdjQvdGNwX2JwZi5jLTY2OS1cbm5ldC9pcHY0L3RjcF9icGYuYzo2NzA6c3RhdGljIGludCBfX2luaXQgdGNwX2JwZl92NF9idWlsZF9wcm90byh2b2lkKVxubmV0L2lwdjQvdGNwX2JwZi5jLTY3MS17XG5uZXQvaXB2NC90Y3BfYnBmLmM6NjcyOlx0dGNwX2JwZl9yZWJ1aWxkX3Byb3Rvcyh0Y3BfYnBmX3Byb3RzW1RDUF9CUEZfSVBWNF0sIFx1MDAyNnRjcF9wcm90KTtcbm5ldC9pcHY0L3RjcF9icGYuYy02NzMtXHRyZXR1cm4gMDtcbm5ldC9pcHY0L3RjcF9icGYuYy02NzQtfVxubmV0L2lwdjQvdGNwX2JwZi5jOjY3NTpsYXRlX2luaXRjYWxsKHRjcF9icGZfdjRfYnVpbGRfcHJvdG8pO1xubmV0L2lwdjQvdGNwX2JwZi5jLTY3Ni1cbm5ldC9pcHY0L3RjcF9icGYuYzo2Nzc6c3RhdGljIGludCB0Y3BfYnBmX2Fzc2VydF9wcm90b19vcHMoc3RydWN0IHByb3RvICpvcHMpXG5uZXQvaXB2NC90Y3BfYnBmLmMtNjc4LXtcbi0tXG5uZXQvaXB2NC90Y3BfYnBmLmMtNjg3LSNpZiBJU19FTkFCTEVEKENPTkZJR19CUEZfU1RSRUFNX1BBUlNFUilcbm5ldC9pcHY0L3RjcF9icGYuYzo2ODg6aW50IHRjcF9icGZfc3RycF9yZWFkX3NvY2soc3RydWN0IHN0cnBhcnNlciAqc3RycCwgcmVhZF9kZXNjcmlwdG9yX3QgKmRlc2MsXG5uZXQvaXB2NC90Y3BfYnBmLmMtNjg5LVx0XHRcdCAgIHNrX3JlYWRfYWN0b3JfdCByZWN2X2FjdG9yKVxuLS1cbm5ldC9pcHY0L3RjcF9icGYuYy03MTEtXHQgKiBGb3IgU0tfUkVESVJFQ1QsIHdlIG5lZWQgdG8gYWNrIHRoZSBmcmFtZSBpbW1lZGlhdGVseSBidXQgZm9yXG5uZXQvaXB2NC90Y3BfYnBmLmM6NzEyOlx0ICogU0tfUEFTUywgd2Ugd2FudCB0byBkZWxheSB0aGUgYWNrIHVudGlsIHRjcF9icGZfcmVjdm1zZ19wYXJzZXIoKS5cbm5ldC9pcHY0L3RjcF9icGYuYy03MTMtXHQgKi9cbi0tXG5uZXQvaXB2NC90Y3BfYnBmLmMtNzIyLVxubmV0L2lwdjQvdGNwX2JwZi5jOjcyMzppbnQgdGNwX2JwZl91cGRhdGVfcHJvdG8oc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3Qgc2tfcHNvY2sgKnBzb2NrLCBib29sIHJlc3RvcmUpXG5uZXQvaXB2NC90Y3BfYnBmLmMtNzI0LXtcbi0tXG5uZXQvaXB2NC90Y3BfYnBmLmMtNzQ5LVx0aWYgKHNrLVx1MDAzZXNrX2ZhbWlseSA9PSBBRl9JTkVUNikge1xubmV0L2lwdjQvdGNwX2JwZi5jOjc1MDpcdFx0aWYgKHRjcF9icGZfYXNzZXJ0X3Byb3RvX29wcyhwc29jay1cdTAwM2Vza19wcm90bykpXG5uZXQvaXB2NC90Y3BfYnBmLmMtNzUxLVx0XHRcdHJldHVybiAtRUlOVkFMO1xubmV0L2lwdjQvdGNwX2JwZi5jLTc1Mi1cbm5ldC9pcHY0L3RjcF9icGYuYzo3NTM6XHRcdHRjcF9icGZfY2hlY2tfdjZfbmVlZHNfcmVidWlsZChwc29jay1cdTAwM2Vza19wcm90byk7XG5uZXQvaXB2NC90Y3BfYnBmLmMtNzU0LVx0fVxuLS1cbm5ldC9pcHY0L3RjcF9icGYuYy03NTYtXHQvKiBQYWlycyB3aXRoIGxvY2tsZXNzIHJlYWQgaW4gc2tfY2xvbmVfbG9jaygpICovXG5uZXQvaXB2NC90Y3BfYnBmLmM6NzU3Olx0c29ja19yZXBsYWNlX3Byb3RvKHNrLCBcdTAwMjZ0Y3BfYnBmX3Byb3RzW2ZhbWlseV1bY29uZmlnXSk7XG5uZXQvaXB2NC90Y3BfYnBmLmMtNzU4LVx0cmV0dXJuIDA7XG5uZXQvaXB2NC90Y3BfYnBmLmMtNzU5LX1cbm5ldC9pcHY0L3RjcF9icGYuYzo3NjA6RVhQT1JUX1NZTUJPTF9HUEwodGNwX2JwZl91cGRhdGVfcHJvdG8pO1xubmV0L2lwdjQvdGNwX2JwZi5jLTc2MS1cbm5ldC9pcHY0L3RjcF9icGYuYzo3NjI6LyogSWYgYSBjaGlsZCBnb3QgY2xvbmVkIGZyb20gYSBsaXN0ZW5pbmcgc29ja2V0IHRoYXQgaGFkIHRjcF9icGZcbm5ldC9pcHY0L3RjcF9icGYuYy03NjMtICogcHJvdG9jb2wgY2FsbGJhY2tzIGluc3RhbGxlZCwgd2UgbmVlZCB0byByZXN0b3JlIHRoZSBjYWxsYmFja3MgdG9cbm5ldC9pcHY0L3RjcF9icGYuYy03NjQtICogdGhlIGRlZmF1bHQgb25lcyBiZWNhdXNlIHRoZSBjaGlsZCBkb2VzIG5vdCBpbmhlcml0IHRoZSBwc29jayBzdGF0ZVxubmV0L2lwdjQvdGNwX2JwZi5jOjc2NTogKiB0aGF0IHRjcF9icGYgY2FsbGJhY2tzIGV4cGVjdC5cbm5ldC9pcHY0L3RjcF9icGYuYy03NjYtICovXG5uZXQvaXB2NC90Y3BfYnBmLmM6NzY3OnZvaWQgdGNwX2JwZl9jbG9uZShjb25zdCBzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBzb2NrICpuZXdzaylcbm5ldC9pcHY0L3RjcF9icGYuYy03Njgte1xuLS1cbm5ldC9pcHY0L3RjcF9icGYuYy03NzAtXG5uZXQvaXB2NC90Y3BfYnBmLmM6NzcxOlx0aWYgKGlzX2luc2lkZXZhcihwcm90LCB0Y3BfYnBmX3Byb3RzKSlcbm5ldC9pcHY0L3RjcF9icGYuYy03NzItXHRcdG5ld3NrLVx1MDAzZXNrX3Byb3QgPSBzay1cdTAwM2Vza19wcm90X2NyZWF0b3I7XG4tLVxubmV0L2lwdjQvdGNwX2lucHV0LmM9MTA3MD1zdGF0aWMgdm9pZCB0Y3BfcnR0X2VzdGltYXRvcihzdHJ1Y3Qgc29jayAqc2ssIGxvbmcgbXJ0dF91cylcbi0tXG5uZXQvaXB2NC90Y3BfaW5wdXQuYy0xMTIyLVxubmV0L2lwdjQvdGNwX2lucHV0LmM6MTEyMzpcdFx0XHR0Y3BfYnBmX3J0dChzaywgbXJ0dF91cywgc3J0dCk7XG5uZXQvaXB2NC90Y3BfaW5wdXQuYy0xMTI0LVx0XHR9XG4tLVxubmV0L2lwdjQvdGNwX2lucHV0LmMtMTEzMi1cbm5ldC9pcHY0L3RjcF9pbnB1dC5jOjExMzM6XHRcdHRjcF9icGZfcnR0KHNrLCBtcnR0X3VzLCBzcnR0KTtcbm5ldC9pcHY0L3RjcF9pbnB1dC5jLTExMzQtXHR9XG4tLVxubmV0L2lwdjQvdGNwX2lucHV0LmM9NzQyND1zdGF0aWMgdm9pZCB0Y3BfZWNuX2NyZWF0ZV9yZXF1ZXN0KHN0cnVjdCByZXF1ZXN0X3NvY2sgKnJlcSxcbi0tXG5uZXQvaXB2NC90Y3BfaW5wdXQuYy03NDU0LVx0ICAgIChlY25fb2tfZHN0IFx1MDAyNiBEU1RfRkVBVFVSRV9FQ05fQ0EpIHx8XG5uZXQvaXB2NC90Y3BfaW5wdXQuYzo3NDU1Olx0ICAgIHRjcF9icGZfY2FfbmVlZHNfZWNuKChzdHJ1Y3Qgc29jayAqKXJlcSkpXG5uZXQvaXB2NC90Y3BfaW5wdXQuYy03NDU2LVx0XHRpbmV0X3JzayhyZXEpLVx1MDAzZWVjbl9vayA9IDE7XG4tLVxubmV0L2lwdjQvdGNwX2lwdjQuYz0xMTU5PXN0YXRpYyBpbnQgdGNwX3Y0X3NlbmRfc3luYWNrKGNvbnN0IHN0cnVjdCBzb2NrICpzaywgc3RydWN0IGRzdF9lbnRyeSAqZHN0LFxuLS1cbm5ldC9pcHY0L3RjcF9pcHY0LmMtMTE4OC1cdFx0aWYgKCFJTkVUX0VDTl9pc19jYXBhYmxlKHRvcykgXHUwMDI2XHUwMDI2XG5uZXQvaXB2NC90Y3BfaXB2NC5jOjExODk6XHRcdCAgICB0Y3BfYnBmX2NhX25lZWRzX2Vjbigoc3RydWN0IHNvY2sgKilyZXEpKVxubmV0L2lwdjQvdGNwX2lwdjQuYy0xMTkwLVx0XHRcdHRvcyB8PSBJTkVUX0VDTl9FQ1RfMDtcbi0tXG5uZXQvaXB2NC90Y3BfaXB2NC5jPTMzMzU9c3RydWN0IHByb3RvIHRjcF9wcm90ID0ge1xuLS1cbm5ldC9pcHY0L3RjcF9pcHY0LmMtMzM0OC1cdC5nZXRzb2Nrb3B0XHRcdD0gdGNwX2dldHNvY2tvcHQsXG5uZXQvaXB2NC90Y3BfaXB2NC5jOjMzNDk6XHQuYnBmX2J5cGFzc19nZXRzb2Nrb3B0XHQ9IHRjcF9icGZfYnlwYXNzX2dldHNvY2tvcHQsXG5uZXQvaXB2NC90Y3BfaXB2NC5jLTMzNTAtXHQua2VlcGFsaXZlXHRcdD0gdGNwX3NldF9rZWVwYWxpdmUsXG4tLVxubmV0L2lwdjQvdGNwX2lwdjQuYy0zMzYwLSNpZmRlZiBDT05GSUdfQlBGX1NZU0NBTExcbm5ldC9pcHY0L3RjcF9pcHY0LmM6MzM2MTpcdC5wc29ja191cGRhdGVfc2tfcHJvdFx0PSB0Y3BfYnBmX3VwZGF0ZV9wcm90byxcbm5ldC9pcHY0L3RjcF9pcHY0LmMtMzM2Mi0jZW5kaWZcbi0tXG5uZXQvaXB2NC90Y3BfbWluaXNvY2tzLmM9NTQ2PXN0cnVjdCBzb2NrICp0Y3BfY3JlYXRlX29wZW5yZXFfY2hpbGQoY29uc3Qgc3RydWN0IHNvY2sgKnNrLFxuLS1cbm5ldC9pcHY0L3RjcF9taW5pc29ja3MuYy02NjMtXHRuZXd0cC1cdTAwM2VicGZfY2hnX2NjX2lucHJvZ3Jlc3MgPSAwO1xubmV0L2lwdjQvdGNwX21pbmlzb2Nrcy5jOjY2NDpcdHRjcF9icGZfY2xvbmUoc2ssIG5ld3NrKTtcbm5ldC9pcHY0L3RjcF9taW5pc29ja3MuYy02NjUtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDkgMTA6NTI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogODIzNQoJCQkJCQkJb3V0cHV0OiAzMAoJCQkJCQkJdGhvdWdodHM6IDM0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duOgoKKipJbnZlc3RpZ2F0aW5nIGEgTmV0d29yayBDb25maWd1cmF0aW9uIERlcGVuZGVuY3kqKgoKQWxyaWdodCwgc28gdGhlIGNvbmZpZyBvcHRpb24gSSYjMzk7bSBzZWVpbmcgaXMgYENPTkZJR19ORVRfU09DS19NU0dgLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gZmlndXJlIG91dCB3aGF0IGZ1bmN0aW9uYWxpdHkgdGhpcyBlbmFibGVzLCBzcGVjaWZpY2FsbHkgd2l0aGluIHRoZSBrZXJuZWwuIEdpdmVuIHRoYXQgdGhpcyBzZWVtcyB0byByZWxhdGUgdG8gc29ja2V0cyBhbmQgbWVzc2FnaW5nLCBteSBuZXh0IGluc3RpbmN0IGlzIHRvIGh1bnQgZG93biB0aGUgcmVsZXZhbnQgbWFrZWZpbGVzLiBJJiMzOTttIGdvaW5nIHRvIGp1bXAgaW50byBgbmV0L2lwdjQvTWFrZWZpbGVgIGltbWVkaWF0ZWx5LiBJJiMzOTttIGV4cGVjdGluZyB0aGlzIGZpbGUgdG8gcG90ZW50aWFsbHkgZGVmaW5lIGRlcGVuZGVuY2llcywgY29tcGlsYXRpb24gdGFyZ2V0cywgb3IgZXZlbiBzb3VyY2UgZmlsZXMgcmVsYXRlZCB0byB0aGlzIGZ1bmN0aW9uYWxpdHkuIEkmIzM5O20gcGFydGljdWxhcmx5IGludGVyZXN0ZWQgaW4gYW55dGhpbmcgcmVsYXRlZCB0byBgdGNwX2JwZi5vYC4gS25vd2luZyB0aGUgbmV0d29yayBjb2RlIGJhc2UsIHRoYXQgc21lbGxzIGxpa2Ugc29tZXRoaW5nIHJlbGF0ZWQgdG8gQmVya2VsZXkgUGFja2V0IEZpbHRlciAoQlBGKSB1c2FnZSBpbiB0aGUgVENQIHN0YWNrLiBUaGUgcHJlc2VuY2Ugb2YgYENPTkZJR19ORVRfU09DS19NU0dgIGFuZCBhIHJlbGF0ZWQgQlBGIG9iamVjdCB3b3VsZCBzdWdnZXN0IGEgQlBGLWJhc2VkIHNvY2tldCBtZXNzYWdpbmcgZW5oYW5jZW1lbnQuIEkmIzM5O2xsIHNlZSB3aGF0IHRoZSBNYWtlZmlsZSByZXZlYWxzLiBMZXQmIzM5O3MgZGlnIGluLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA5IDEwOjUyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3RjcF9icGYmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvaXB2NC9NYWtlZmlsZSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvaXB2NC9NYWtlZmlsZT02Mj1vYmotJChDT05GSUdfVENQX0NPTkdfSUxMSU5PSVMpICYjNDM7PSB0Y3BfaWxsaW5vaXMub1xubmV0L2lwdjQvTWFrZWZpbGU6NjM6b2JqLSQoQ09ORklHX05FVF9TT0NLX01TRykgJiM0Mzs9IHRjcF9icGYub1xubmV0L2lwdjQvTWFrZWZpbGUtNjQtb2JqLSQoQ09ORklHX0JQRl9TWVNDQUxMKSAmIzQzOz0gdWRwX2JwZi5vXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDkgMTA6NTI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogODYxNAoJCQkJCQkJb3V0cHV0OiAyNgoJCQkJCQkJdGhvdWdodHM6IDI2OQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBbmFseXNpcyBvZiB0aGUgVENQIEJQRiBQYXRjaCoqCgpPa2F5LCBzbyBJIHNlZSB0aGlzIHBhdGNoIHJlcXVpcmVzIGBDT05GSUdfTkVUX1NPQ0tfTVNHYC4gVGhhdCBtYWtlcyBzZW5zZTsgd2UmIzM5O3JlIGRlYWxpbmcgd2l0aCBzb2NrZXQgbWVzc2FnaW5nLiAgQW5kLCBvZiBjb3Vyc2UsIHRoZSBldmVyLXByZXNlbnQgYENPTkZJR19CUEZfU1lTQ0FMTGAgaXMgZXNzZW50aWFsIGZvciBhbnkgQlBGLXJlbGF0ZWQgY2hhbmdlcy4gSXQmIzM5O3MgYSBnaXZlbi4KCk5vdywgbGV0JiMzOTtzIGdldCBpbnRvIHRoZSBjb2RlLiBNeSBmb2N1cyBpcyBvbiBgdGNwX2JwZl9pb2N0bGAgYW5kIGB0Y3BfYnBmX3JlY3Ztc2dfcGFyc2VyYC4gIFRoZSBkZXNjcmlwdGlvbiBzcGVjaWZpY2FsbHkgY2FsbHMgb3V0IGEgbW9kaWZpY2F0aW9uIHRvIGB0Y3BfYnBmX2lvY3RsYCwgc28gdGhhdCYjMzk7cyB3aGVyZSBJIG5lZWQgdG8gZGlnIGluIGZpcnN0LgoKSSBuZWVkIHRvIGNvbmZpcm0gd2hldGhlciBgdGNwX2JwZl9pb2N0bGAgaXMgdGhlIG9ubHkgZnVuY3Rpb24gaW1wYWN0ZWQuIFl1cCwgYWNjb3JkaW5nIHRvIHRoaXMgYW5hbHlzaXMsIGl0IGxvb2tzIGxpa2UgYHRjcF9icGZfaW9jdGxgIGluIGBuZXQvaXB2NC90Y3BfYnBmLmNgIGlzIHRoZSBwcmltYXJ5IHRhcmdldC4gIEFuZCBJIHNlZSB0aGF0IGBza19wc29ja19tc2dfaW5xYCBoYXMgYmVlbiByZW1vdmVkIGZyb20gYGluY2x1ZGUvbGludXgvc2ttc2cuaGAuIFRoYXQgc2VlbXMgbGlrZSBhbiBvYnZpb3VzIGNvbnNlcXVlbmNlIG9mIHRoZSBjaGFuZ2VzLgoKT2theSwgbm93IGxldCYjMzk7cyBtYWtlIHN1cmUgSSB1bmRlcnN0YW5kIHRoZSByZWFjaGFiaWxpdHkgb2YgYHRjcF9icGZfaW9jdGxgLiAgQWhhLCBpdCBpcyB0aGUgYC5pb2N0bGAgaGFuZGxlciBmb3IgVENQIHNvY2tldHMgdGhhdCBoYXZlIEJQRiBhdHRhY2hlZCwgb3IgYHRjcF9icGZfcHJvdHNgLiBTbyBpdCBnZXRzIGNhbGxlZCB3aGVuIGEgdXNlciBjYWxscyBgaW9jdGwoZmQsIFNJT0NJTlEsIC4uLilgIG9uIGEgVENQIHNvY2tldCB3aXRoaW4gYSBzb2NrbWFwLiBJJiMzOTttIHNhdGlzZmllZC4KClNvIG15IGtleSBjb25maWd1cmF0aW9ucyBoZXJlIGFyZSBgTkVUX1NPQ0tfTVNHYCBhbmQgYEJQRl9TWVNDQUxMYC4gIFRoZSBjcml0aWNhbCBzeW1ib2wgaXMgc3RpbGwgYHRjcF9icGZfaW9jdGxgLgoKTGV0JiMzOTtzIGRvIGEgcXVpY2sgZG91YmxlLWNoZWNrIHRvIGNvbmZpcm0gdGhhdCBgTkVUX1NPQ0tfTVNHYCBpcyBpbmRlZWQgYSB1c2VyLXNlbGVjdGFibGUgY29uZmlndXJhdGlvbiBvcHRpb24uIEkgbmVlZCB0byBiZSBzdXJlLiBUaGF0JiMzOTtzIGEgZ29vZCBzYW5pdHkgY2hlY2suCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDkgMTA6NTM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIE5FVF9TT0NLX01TRyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0OyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvS2NvbmZpZz00NzU9Y29uZmlnIE5FVF9TRUxGVEVTVFNcbi0tXG5uZXQvS2NvbmZpZy00NzgtXG5uZXQvS2NvbmZpZzo0Nzk6Y29uZmlnIE5FVF9TT0NLX01TR1xubmV0L0tjb25maWctNDgwLVx0Ym9vbFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA5IDEwOjUzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDkzODIKCQkJCQkJCW91dHB1dDogMjYKCQkJCQkJCXRob3VnaHRzOiAzOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0JiMzOTtzIGludGVybmFsIG1vbm9sb2d1ZToKCioqSW52ZXN0aWdhdGluZyB0aGUgTkVUX1NPQ0tfTVNHIENvbmZpZ3VyYXRpb24gT3B0aW9uKioKClJpZ2h0LCBgTkVUX1NPQ0tfTVNHYC4uLiB0aGF0JiMzOTtzIGEgYml0IG9ic2N1cmUuIEl0JiMzOTtzIGEgaGlkZGVuIGNvbmZpZywgc28gaXQmIzM5O3Mgbm90IHNvbWV0aGluZyB5b3UmIzM5O2QgdHlwaWNhbGx5IHNlZSBkaXJlY3RseSBjb25maWd1cmVkLiBNeSBndWVzcywgYW5kIGl0JiMzOTtzIGp1c3QgYSBndWVzcyBiYXNlZCBvbiB0aGUgbmFtZSwgaXMgdGhhdCBpdCYjMzk7cyByZWxhdGVkIHRvIHNvY2tldCBtZXNzYWdpbmcgc29tZWhvdy4gSXQmIzM5O3MgbGlrZWx5IGFjdGl2YXRlZCBpbmRpcmVjdGx5IHRocm91Z2ggb3RoZXIsIG1vcmUgdmlzaWJsZSBvcHRpb25zLiBgQlBGX1NZU0NBTExgIG1ha2VzIHNlbnNlIGFzIGEgcG9zc2libGUgc2VsZWN0b3IsIGdpdmVuIGl0cyByb2xlIGluIGZpbHRlcmluZyBzeXNjYWxscywgYW5kIGBJTkVUYCBpcyBhbm90aGVyIHN0cm9uZyBjb250ZW5kZXIsIGdpdmVuIGl0cyByZWxhdGlvbnNoaXAgdG8gSVAgbmV0d29ya2luZy4gSSBuZWVkIHRvIHZlcmlmeSB0aGF0IHRob3VnaC4gVGltZSB0byB0cmFjZSB0aGUgZGVwZW5kZW5jaWVzIGFuZCBmaWd1cmUgb3V0IHdoYXQgYWN0dWFsbHkgZW5hYmxlcyB0aGlzIHRoaW5nLiBOZWVkIHRvIHVuZGVyc3RhbmQgZXhhY3RseSAqd2h5KiBpdCYjMzk7cyBiZWluZyB1c2VkLiBUaGVyZSYjMzk7cyBubyBwb2ludCBvZiB0aGlzIGV4aXN0aW5nIGluIHRoZSBmaXJzdCBwbGFjZSBpZiBpdCBpcyBub3Qgc2VsZWN0ZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA5IDEwOjUzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3NlbGVjdCBORVRfU09DS19NU0cmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDsmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7a2VybmVsL2JwZi9LY29uZmlnPTI3PWNvbmZpZyBCUEZfU1lTQ0FMTFxuLS1cbmtlcm5lbC9icGYvS2NvbmZpZy0zMy1cdHNlbGVjdCBCSU5BUllfUFJJTlRGXG5rZXJuZWwvYnBmL0tjb25maWc6MzQ6XHRzZWxlY3QgTkVUX1NPQ0tfTVNHIGlmIE5FVFxua2VybmVsL2JwZi9LY29uZmlnLTM1LVx0c2VsZWN0IE5FVF9YR1JFU1MgaWYgTkVUXG4tLVxubmV0L0tjb25maWc9MzYxPWNvbmZpZyBCUEZfU1RSRUFNX1BBUlNFUlxuLS1cbm5ldC9LY29uZmlnLTM2Ni1cdHNlbGVjdCBTVFJFQU1fUEFSU0VSXG5uZXQvS2NvbmZpZzozNjc6XHRzZWxlY3QgTkVUX1NPQ0tfTVNHXG5uZXQvS2NvbmZpZy0zNjgtXHRoZWxwXG4tLVxubmV0L2lwdjQvS2NvbmZpZz0zODI9Y29uZmlnIElORVRfRVNQSU5UQ1Bcbi0tXG5uZXQvaXB2NC9LY29uZmlnLTM4NS1cdHNlbGVjdCBTVFJFQU1fUEFSU0VSXG5uZXQvaXB2NC9LY29uZmlnOjM4NjpcdHNlbGVjdCBORVRfU09DS19NU0dcbm5ldC9pcHY0L0tjb25maWctMzg3LVx0c2VsZWN0IFhGUk1fRVNQSU5UQ1Bcbi0tXG5uZXQvaXB2Ni9LY29uZmlnPTkwPWNvbmZpZyBJTkVUNl9FU1BJTlRDUFxuLS1cbm5ldC9pcHY2L0tjb25maWctOTMtXHRzZWxlY3QgU1RSRUFNX1BBUlNFUlxubmV0L2lwdjYvS2NvbmZpZzo5NDpcdHNlbGVjdCBORVRfU09DS19NU0dcbm5ldC9pcHY2L0tjb25maWctOTUtXHRzZWxlY3QgWEZSTV9FU1BJTlRDUFxuLS1cbm5ldC90bHMvS2NvbmZpZz01PWNvbmZpZyBUTFNcbi0tXG5uZXQvdGxzL0tjb25maWctMTAtXHRzZWxlY3QgQ1JZUFRPX0dDTVxubmV0L3Rscy9LY29uZmlnOjExOlx0c2VsZWN0IE5FVF9TT0NLX01TR1xubmV0L3Rscy9LY29uZmlnLTEyLVx0ZGVmYXVsdCBuXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA5IDEwOjUzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4xbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEwMDQzCgkJCQkJCQlvdXRwdXQ6IDEwOQoJCQkJCQkJdGhvdWdodHM6IDE4MAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBc3Nlc3NtZW50IG9mIHRoZSBQYXRjaCYjMzk7cyBGdXp6aW5nIFBvdGVudGlhbCoqCgpPa2F5LCBzbyB0aGlzIHBhdGNoIGlzIHRyaWdnZXJlZCBieSBgQlBGX1NZU0NBTExgIGlmIHRoZSBgTkVUYCBjb25maWd1cmF0aW9uIG9wdGlvbiBpcyBhY3RpdmUuIFRoZXJlZm9yZSwgYEJQRl9TWVNDQUxMYCBpcyB0aGUgY3J1Y2lhbCBjb25maWd1cmF0aW9uIG9wdGlvbiB0byBlbmFibGUgZm9yIGZ1enppbmcgY292ZXJhZ2UuCgpJIG5lZWQgdG8gY29uZmlybSB0aGF0IGB0Y3BfYnBmX2lvY3RsYCBpcyB0aGUgc29sZSBmdW5jdGlvbiBpbXBhY3RlZC4gWWVzLCB0aGUgZGlmZiBjb25maXJtcyB0aGF0IGB0Y3BfYnBmX2lvY3RsYCBpcyBpbmRlZWQgdGhlICpvbmx5KiBmdW5jdGlvbiBtb2RpZmllZCBieSB0aGlzIHBhdGNoLgoKUmlnaHQsIEkgY2FuIG5vdyBzdWNjaW5jdGx5IHN1bW1hcml6ZSBteSBmaW5kaW5ncy4KCkJhc2VkIG9uIG15IGFuYWx5c2lzLCB0aGlzIHBhdGNoIHByZXNlbnRzIGEgd29ydGh3aGlsZSB0YXJnZXQgZm9yIGZ1enppbmcuIFRoZSBrZXkgZnVuY3Rpb24gdG8gZm9jdXMgb24gaXMgYHRjcF9icGZfaW9jdGxgLiBJIHdpbGwgYWxzbyBpbmNsdWRlIHRoZSBjb25maWd1cmF0aW9uIGBCUEZfU1lTQ0FMTGAgaW4gdGhlIGZ1enppbmcgY29uZmlndXJhdGlvbi4gVGhlIHJlYXNvbmluZyBpcyBjbGVhcjogdGhlIHBhdGNoIGlzIGZ1bmRhbWVudGFsbHkgYWx0ZXJpbmcgYHRjcF9icGZfaW9jdGxgIHRvIHByb3Blcmx5IGhhbmRsZSBgU0lPQ0lOUWAgKEZJT05SRUFEKSBmb3IgVENQIHNvY2tldHMgd2l0aGluIGEgc29ja21hcCwgc3BlY2lmaWNhbGx5IGFjY291bnRpbmcgZm9yIGRhdGEgd2l0aGluIHRoZSBgc2tfcmVjZWl2ZV9xdWV1ZWAgdW5kZXIgY2lyY3Vtc3RhbmNlcyB3aGVyZSBhIHZlcmRpY3QgcHJvZ3JhbSBpcyBhYnNlbnQuIFRoaXMgZnVuY3Rpb25hbGl0eSBpcyBjb3JlIGtlcm5lbCBsb2dpYyB0aGF0IGRpcmVjdGx5IHJlbGF0ZXMgdG8gQlBGIGFuZCBUQ1AgaW50ZXJhY3Rpb25zLCB0aHVzIHByZXNlbnRpbmcgYW4gYXJlYSBzdXNjZXB0aWJsZSB0byBwb3RlbnRpYWwgdnVsbmVyYWJpbGl0aWVzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wOSAxMDo1NTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7QlBGX1NZU0NBTEwmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDt0Y3BfYnBmX2lvY3RsJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIGB0Y3BfYnBmX2lvY3RsYCB0byBjb3JyZWN0bHkgYWNjb3VudCBmb3IgZGF0YSBpbiBgc2tfcmVjZWl2ZV9xdWV1ZWAgd2hlbiBoYW5kbGluZyBgU0lPQ0lOUWAgKEZJT05SRUFEKSBmb3IgVENQIHNvY2tldHMgaW4gYSBzb2NrbWFwIHdpdGhvdXQgYSB2ZXJkaWN0IHByb2dyYW0uIFRoaXMgaXMgZnVuY3Rpb25hbCBjb3JlIGtlcm5lbCBsb2dpYyByZWxhdGVkIHRvIEJQRiBhbmQgVENQLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtCUEZfU1lTQ0FMTCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3RjcF9icGZfaW9jdGwmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgYHRjcF9icGZfaW9jdGxgIHRvIGNvcnJlY3RseSBhY2NvdW50IGZvciBkYXRhIGluIGBza19yZWNlaXZlX3F1ZXVlYCB3aGVuIGhhbmRsaW5nIGBTSU9DSU5RYCAoRklPTlJFQUQpIGZvciBUQ1Agc29ja2V0cyBpbiBhIHNvY2ttYXAgd2l0aG91dCBhIHZlcmRpY3QgcHJvZ3JhbS4gVGhpcyBpcyBmdW5jdGlvbmFsIGNvcmUga2VybmVsIGxvZ2ljIHJlbGF0ZWQgdG8gQlBGIGFuZCBUQ1AuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNy0wOVQxMDo1MjoyMC43ODgzMjkxMDdaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxOTMwMTgxNjA5NTcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQlBGX1NZU0NBTExcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJ0Y3BfYnBmX2lvY3RsXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgYHRjcF9icGZfaW9jdGxgIHRvIGNvcnJlY3RseSBhY2NvdW50IGZvciBkYXRhIGluIGBza19yZWNlaXZlX3F1ZXVlYCB3aGVuIGhhbmRsaW5nIGBTSU9DSU5RYCAoRklPTlJFQUQpIGZvciBUQ1Agc29ja2V0cyBpbiBhIHNvY2ttYXAgd2l0aG91dCBhIHZlcmRpY3QgcHJvZ3JhbS4gVGhpcyBpcyBmdW5jdGlvbmFsIGNvcmUga2VybmVsIGxvZ2ljIHJlbGF0ZWQgdG8gQlBGIGFuZCBUQ1AuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA5VDEwOjUyOjIwLjc4ODMzNjU2N1oiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzQ1NzY5NTY3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgNTJlM2UzN2I2YWYyMTIyZDFmMTZmN2VjNGNkZTIyZjAyMjI2ZjkwOVxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgVGh1IEp1bCA5IDEwOjUyOjE4IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvc2ttc2cuaCBiL2luY2x1ZGUvbGludXgvc2ttc2cuaFxcbmluZGV4IGE4NTUzNDAxYjFjOTNmLi5kNWUzNWYyNDczOGQ1YyAxMDA2NDRcXG4tLS0gYS9pbmNsdWRlL2xpbnV4L3NrbXNnLmhcXG4rKysgYi9pbmNsdWRlL2xpbnV4L3NrbXNnLmhcXG5AQCAtNTUxLDIwICs1NTEsNiBAQCBzdGF0aWMgaW5saW5lIHZvaWQgcHNvY2tfcHJvZ3NfZHJvcChzdHJ1Y3Qgc2tfcHNvY2tfcHJvZ3MgKnByb2dzKVxcbiBcXHRwc29ja19zZXRfcHJvZyhcXHUwMDI2cHJvZ3MtXFx1MDAzZXNrYl92ZXJkaWN0LCBOVUxMKTtcXG4gfVxcbiBcXG4tLyogZm9yIHRjcCBvbmx5LCBzayBpcyBsb2NrZWQgKi9cXG4tc3RhdGljIGlubGluZSBzc2l6ZV90IHNrX3Bzb2NrX21zZ19pbnEoc3RydWN0IHNvY2sgKnNrKVxcbi17XFxuLVxcdHN0cnVjdCBza19wc29jayAqcHNvY2s7XFxuLVxcdHNzaXplX3QgaW5xID0gMDtcXG4tXFxuLVxcdHBzb2NrID0gc2tfcHNvY2tfZ2V0KHNrKTtcXG4tXFx0aWYgKGxpa2VseShwc29jaykpIHtcXG4tXFx0XFx0aW5xID0gc2tfcHNvY2tfZ2V0X21zZ19sZW5fbm9sb2NrKHBzb2NrKTtcXG4tXFx0XFx0c2tfcHNvY2tfcHV0KHNrLCBwc29jayk7XFxuLVxcdH1cXG4tXFx0cmV0dXJuIGlucTtcXG4tfVxcbi1cXG4gLyogZm9yIHVkcCBvbmx5LCBzayBpcyBub3QgbG9ja2VkICovXFxuIHN0YXRpYyBpbmxpbmUgc3NpemVfdCBza19tc2dfZmlyc3RfbGVuKHN0cnVjdCBzb2NrICpzaylcXG4ge1xcbmRpZmYgLS1naXQgYS9uZXQvaXB2NC90Y3BfYnBmLmMgYi9uZXQvaXB2NC90Y3BfYnBmLmNcXG5pbmRleCBjYzBiZDczZjM2YjZkNi4uOGU5MDViNTBkZWFkYmUgMTAwNjQ0XFxuLS0tIGEvbmV0L2lwdjQvdGNwX2JwZi5jXFxuKysrIGIvbmV0L2lwdjQvdGNwX2JwZi5jXFxuQEAgLTMzNCw2ICszMzQsNyBAQCBzdGF0aWMgaW50IHRjcF9icGZfcmVjdm1zZ19wYXJzZXIoc3RydWN0IHNvY2sgKnNrLFxcbiBcXG4gc3RhdGljIGludCB0Y3BfYnBmX2lvY3RsKHN0cnVjdCBzb2NrICpzaywgaW50IGNtZCwgaW50ICprYXJnKVxcbiB7XFxuK1xcdHN0cnVjdCBza19wc29jayAqcHNvY2s7XFxuIFxcdGJvb2wgc2xvdztcXG4gXFxuIFxcdGlmIChjbWQgIT0gU0lPQ0lOUSlcXG5AQCAtMzQ0LDcgKzM0NSwyMSBAQCBzdGF0aWMgaW50IHRjcF9icGZfaW9jdGwoc3RydWN0IHNvY2sgKnNrLCBpbnQgY21kLCBpbnQgKmthcmcpXFxuIFxcdFxcdHJldHVybiAtRUlOVkFMO1xcbiBcXG4gXFx0c2xvdyA9IGxvY2tfc29ja19mYXN0KHNrKTtcXG4tXFx0KmthcmcgPSBza19wc29ja19tc2dfaW5xKHNrKTtcXG4rXFx0cHNvY2sgPSBza19wc29ja19nZXQoc2spO1xcbitcXHRpZiAodW5saWtlbHkoIXBzb2NrKSkge1xcbitcXHRcXHR1bmxvY2tfc29ja19mYXN0KHNrLCBzbG93KTtcXG4rXFx0XFx0cmV0dXJuIHRjcF9pb2N0bChzaywgY21kLCBrYXJnKTtcXG4rXFx0fVxcbitcXHQqa2FyZyA9IHNrX3Bzb2NrX2dldF9tc2dfbGVuX25vbG9jayhwc29jayk7XFxuK1xcdC8qIFdpdGhvdXQgYSB2ZXJkaWN0IHByb2dyYW0sIGluZ3Jlc3MgZGF0YSBpcyBuZXZlciBkaXZlcnRlZCB0b1xcbitcXHQgKiBpbmdyZXNzX21zZzogaXQgc3RheXMgaW4gc2tfcmVjZWl2ZV9xdWV1ZSBhbmQgaXMgcmVhZCB0aHJvdWdoXFxuK1xcdCAqIHRoZSBmYWxsYmFjayB0byB0Y3BfcmVjdm1zZygpLCBzbyBhY2NvdW50IGZvciBpdCBsaWtlXFxuK1xcdCAqIHRjcF9pb2N0bCgpIGRvZXMuXFxuK1xcdCAqL1xcbitcXHRpZiAoIVJFQURfT05DRShwc29jay1cXHUwMDNlcHJvZ3Muc3RyZWFtX3ZlcmRpY3QpIFxcdTAwMjZcXHUwMDI2XFxuK1xcdCAgICAhUkVBRF9PTkNFKHBzb2NrLVxcdTAwM2Vwcm9ncy5za2JfdmVyZGljdCkpXFxuK1xcdFxcdCprYXJnICs9IHRjcF9pbnEoc2spO1xcbitcXHRza19wc29ja19wdXQoc2ssIHBzb2NrKTtcXG4gXFx0dW5sb2NrX3NvY2tfZmFzdChzaywgc2xvdyk7XFxuIFxcbiBcXHRyZXR1cm4gMDtcXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvc29ja21hcF9iYXNpYy5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvc29ja21hcF9iYXNpYy5jXFxuaW5kZXggY2IzMjI5NzExZjkzYTMuLmYwZjM2ODIwMWRkYWRiIDEwMDY0NFxcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3NvY2ttYXBfYmFzaWMuY1xcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3NvY2ttYXBfYmFzaWMuY1xcbkBAIC0xMzczLDYgKzEzNzMsNDMgQEAgc3RhdGljIHZvaWQgdGVzdF9zb2NrbWFwX211bHRpX2NoYW5uZWxzKGludCBzb3R5cGUpXFxuIFxcdHRlc3Rfc29ja21hcF9wYXNzX3Byb2dfX2Rlc3Ryb3koc2tlbCk7XFxuIH1cXG4gXFxuKy8qIEEgc29ja2V0IGluIGEgc29ja21hcCB3aXRob3V0IGEgdmVyZGljdCBwcm9ncmFtIGtlZXBzIGl0cyBpbmdyZXNzIGRhdGFcXG4rICogaW4gc2tfcmVjZWl2ZV9xdWV1ZTogRklPTlJFQUQgbXVzdCBhY2NvdW50IGZvciBpdC5cXG4rICovXFxuK3N0YXRpYyB2b2lkIHRlc3Rfc29ja21hcF9ub192ZXJkaWN0X2Zpb25yZWFkKHZvaWQpXFxuK3tcXG4rXFx0aW50IGVyciwgbWFwLCB6ZXJvID0gMCwgc2VudCwgYXZhaWw7XFxuK1xcdGludCBjMCA9IC0xLCBjMSA9IC0xLCBwMCA9IC0xLCBwMSA9IC0xO1xcbitcXHRzdHJ1Y3QgdGVzdF9zb2NrbWFwX3Bhc3NfcHJvZyAqc2tlbDtcXG4rXFx0Y2hhciBidWZbMjU2XSA9IFxcXCIwMTIzNDU2Nzg5XFxcIjtcXG4rXFxuK1xcdHNrZWwgPSB0ZXN0X3NvY2ttYXBfcGFzc19wcm9nX19vcGVuX2FuZF9sb2FkKCk7XFxuK1xcdGlmICghQVNTRVJUX09LX1BUUihza2VsLCBcXFwib3Blbl9hbmRfbG9hZFxcXCIpKVxcbitcXHRcXHRyZXR1cm47XFxuK1xcdG1hcCA9IGJwZl9tYXBfX2ZkKHNrZWwtXFx1MDAzZW1hcHMuc29ja19tYXBfcngpO1xcbitcXG4rXFx0ZXJyID0gY3JlYXRlX3NvY2tldF9wYWlycyhBRl9JTkVULCBTT0NLX1NUUkVBTSwgXFx1MDAyNmMwLCBcXHUwMDI2YzEsIFxcdTAwMjZwMCwgXFx1MDAyNnAxKTtcXG4rXFx0aWYgKCFBU1NFUlRfT0soZXJyLCBcXFwiY3JlYXRlX3NvY2tldF9wYWlycygpXFxcIikpXFxuK1xcdFxcdGdvdG8gb3V0O1xcbitcXG4rXFx0ZXJyID0gYnBmX21hcF91cGRhdGVfZWxlbShtYXAsIFxcdTAwMjZ6ZXJvLCBcXHUwMDI2YzEsIEJQRl9OT0VYSVNUKTtcXG4rXFx0aWYgKCFBU1NFUlRfT0soZXJyLCBcXFwiYnBmX21hcF91cGRhdGVfZWxlbShjMSlcXFwiKSlcXG4rXFx0XFx0Z290byBvdXRfY2xvc2U7XFxuK1xcbitcXHRzZW50ID0geHNlbmQocDEsIFxcdTAwMjZidWYsIHNpemVvZihidWYpLCAwKTtcXG4rXFx0QVNTRVJUX0VRKHNlbnQsIHNpemVvZihidWYpLCBcXFwieHNlbmQocDEpXFxcIik7XFxuK1xcdGF2YWlsID0gd2FpdF9mb3JfZmlvbnJlYWQoYzEsIHNpemVvZihidWYpLCBJT19USU1FT1VUX1NFQyk7XFxuK1xcdEFTU0VSVF9FUShhdmFpbCwgc2l6ZW9mKGJ1ZiksIFxcXCJpb2N0bChGSU9OUkVBRClcXFwiKTtcXG4rXFxuK291dF9jbG9zZTpcXG4rXFx0Y2xvc2UoYzApO1xcbitcXHRjbG9zZShwMCk7XFxuK1xcdGNsb3NlKGMxKTtcXG4rXFx0Y2xvc2UocDEpO1xcbitvdXQ6XFxuK1xcdHRlc3Rfc29ja21hcF9wYXNzX3Byb2dfX2Rlc3Ryb3koc2tlbCk7XFxuK31cXG4rXFxuIHZvaWQgdGVzdF9zb2NrbWFwX2Jhc2ljKHZvaWQpXFxuIHtcXG4gXFx0aWYgKHRlc3RfX3N0YXJ0X3N1YnRlc3QoXFxcInNvY2ttYXAgY3JlYXRlX3VwZGF0ZV9mcmVlXFxcIikpXFxuQEAgLTE0MTUsNiArMTQ1Miw4IEBAIHZvaWQgdGVzdF9zb2NrbWFwX2Jhc2ljKHZvaWQpXFxuIFxcdFxcdHRlc3Rfc29ja21hcF9za2JfdmVyZGljdF9zaHV0ZG93bigpO1xcbiBcXHRpZiAodGVzdF9fc3RhcnRfc3VidGVzdChcXFwic29ja21hcCBza2JfdmVyZGljdCBmaW9ucmVhZFxcXCIpKVxcbiBcXHRcXHR0ZXN0X3NvY2ttYXBfc2tiX3ZlcmRpY3RfZmlvbnJlYWQodHJ1ZSk7XFxuK1xcdGlmICh0ZXN0X19zdGFydF9zdWJ0ZXN0KFxcXCJzb2NrbWFwIG5vX3ZlcmRpY3QgZmlvbnJlYWRcXFwiKSlcXG4rXFx0XFx0dGVzdF9zb2NrbWFwX25vX3ZlcmRpY3RfZmlvbnJlYWQoKTtcXG4gXFx0aWYgKHRlc3RfX3N0YXJ0X3N1YnRlc3QoXFxcInNvY2ttYXAgc2tiX3ZlcmRpY3QgZmlvbnJlYWQgb24gZHJvcFxcXCIpKVxcbiBcXHRcXHR0ZXN0X3NvY2ttYXBfc2tiX3ZlcmRpY3RfZmlvbnJlYWQoZmFsc2UpO1xcbiBcXHRpZiAodGVzdF9fc3RhcnRfc3VidGVzdChcXFwic29ja21hcCBza2JfdmVyZGljdCBjaGFuZ2UgdGFpbFxcXCIpKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wOVQxMDo1MjoyMS41MzUwMjU2NDRaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjE5MjI3MTQ0OTQ4MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJCUEZfU1lTQ0FMTFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInRjcF9icGZfaW9jdGxcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBgdGNwX2JwZl9pb2N0bGAgdG8gY29ycmVjdGx5IGFjY291bnQgZm9yIGRhdGEgaW4gYHNrX3JlY2VpdmVfcXVldWVgIHdoZW4gaGFuZGxpbmcgYFNJT0NJTlFgIChGSU9OUkVBRCkgZm9yIFRDUCBzb2NrZXRzIGluIGEgc29ja21hcCB3aXRob3V0IGEgdmVyZGljdCBwcm9ncmFtLiBUaGlzIGlzIGZ1bmN0aW9uYWwgY29yZSBrZXJuZWwgbG9naWMgcmVsYXRlZCB0byBCUEYgYW5kIFRDUC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdFxuICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LFxuICAgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCA1MmUzZTM3YjZhZjIxMjJkMWYxNmY3ZWM0Y2RlMjJmMDIyMjZmOTA5XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFRodSBKdWwgOSAxMDo1MjoxOCAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvc2ttc2cuaCBiL2luY2x1ZGUvbGludXgvc2ttc2cuaFxuaW5kZXggYTg1NTM0MDFiMWM5M2YuLmQ1ZTM1ZjI0NzM4ZDVjIDEwMDY0NFxuLS0tIGEvaW5jbHVkZS9saW51eC9za21zZy5oXG4rKysgYi9pbmNsdWRlL2xpbnV4L3NrbXNnLmhcbkBAIC01NTEsMjAgKzU1MSw2IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBwc29ja19wcm9nc19kcm9wKHN0cnVjdCBza19wc29ja19wcm9ncyAqcHJvZ3MpXG4gXHRwc29ja19zZXRfcHJvZyhcdTAwMjZwcm9ncy1cdTAwM2Vza2JfdmVyZGljdCwgTlVMTCk7XG4gfVxuIFxuLS8qIGZvciB0Y3Agb25seSwgc2sgaXMgbG9ja2VkICovXG4tc3RhdGljIGlubGluZSBzc2l6ZV90IHNrX3Bzb2NrX21zZ19pbnEoc3RydWN0IHNvY2sgKnNrKVxuLXtcbi1cdHN0cnVjdCBza19wc29jayAqcHNvY2s7XG4tXHRzc2l6ZV90IGlucSA9IDA7XG4tXG4tXHRwc29jayA9IHNrX3Bzb2NrX2dldChzayk7XG4tXHRpZiAobGlrZWx5KHBzb2NrKSkge1xuLVx0XHRpbnEgPSBza19wc29ja19nZXRfbXNnX2xlbl9ub2xvY2socHNvY2spO1xuLVx0XHRza19wc29ja19wdXQoc2ssIHBzb2NrKTtcbi1cdH1cbi1cdHJldHVybiBpbnE7XG4tfVxuLVxuIC8qIGZvciB1ZHAgb25seSwgc2sgaXMgbm90IGxvY2tlZCAqL1xuIHN0YXRpYyBpbmxpbmUgc3NpemVfdCBza19tc2dfZmlyc3RfbGVuKHN0cnVjdCBzb2NrICpzaylcbiB7XG5kaWZmIC0tZ2l0IGEvbmV0L2lwdjQvdGNwX2JwZi5jIGIvbmV0L2lwdjQvdGNwX2JwZi5jXG5pbmRleCBjYzBiZDczZjM2YjZkNi4uOGU5MDViNTBkZWFkYmUgMTAwNjQ0XG4tLS0gYS9uZXQvaXB2NC90Y3BfYnBmLmNcbisrKyBiL25ldC9pcHY0L3RjcF9icGYuY1xuQEAgLTMzNCw2ICszMzQsNyBAQCBzdGF0aWMgaW50IHRjcF9icGZfcmVjdm1zZ19wYXJzZXIoc3RydWN0IHNvY2sgKnNrLFxuIFxuIHN0YXRpYyBpbnQgdGNwX2JwZl9pb2N0bChzdHJ1Y3Qgc29jayAqc2ssIGludCBjbWQsIGludCAqa2FyZylcbiB7XG4rXHRzdHJ1Y3Qgc2tfcHNvY2sgKnBzb2NrO1xuIFx0Ym9vbCBzbG93O1xuIFxuIFx0aWYgKGNtZCAhPSBTSU9DSU5RKVxuQEAgLTM0NCw3ICszNDUsMjEgQEAgc3RhdGljIGludCB0Y3BfYnBmX2lvY3RsKHN0cnVjdCBzb2NrICpzaywgaW50IGNtZCwgaW50ICprYXJnKVxuIFx0XHRyZXR1cm4gLUVJTlZBTDtcbiBcbiBcdHNsb3cgPSBsb2NrX3NvY2tfZmFzdChzayk7XG4tXHQqa2FyZyA9IHNrX3Bzb2NrX21zZ19pbnEoc2spO1xuK1x0cHNvY2sgPSBza19wc29ja19nZXQoc2spO1xuK1x0aWYgKHVubGlrZWx5KCFwc29jaykpIHtcbitcdFx0dW5sb2NrX3NvY2tfZmFzdChzaywgc2xvdyk7XG4rXHRcdHJldHVybiB0Y3BfaW9jdGwoc2ssIGNtZCwga2FyZyk7XG4rXHR9XG4rXHQqa2FyZyA9IHNrX3Bzb2NrX2dldF9tc2dfbGVuX25vbG9jayhwc29jayk7XG4rXHQvKiBXaXRob3V0IGEgdmVyZGljdCBwcm9ncmFtLCBpbmdyZXNzIGRhdGEgaXMgbmV2ZXIgZGl2ZXJ0ZWQgdG9cbitcdCAqIGluZ3Jlc3NfbXNnOiBpdCBzdGF5cyBpbiBza19yZWNlaXZlX3F1ZXVlIGFuZCBpcyByZWFkIHRocm91Z2hcbitcdCAqIHRoZSBmYWxsYmFjayB0byB0Y3BfcmVjdm1zZygpLCBzbyBhY2NvdW50IGZvciBpdCBsaWtlXG4rXHQgKiB0Y3BfaW9jdGwoKSBkb2VzLlxuK1x0ICovXG4rXHRpZiAoIVJFQURfT05DRShwc29jay1cdTAwM2Vwcm9ncy5zdHJlYW1fdmVyZGljdCkgXHUwMDI2XHUwMDI2XG4rXHQgICAgIVJFQURfT05DRShwc29jay1cdTAwM2Vwcm9ncy5za2JfdmVyZGljdCkpXG4rXHRcdCprYXJnICs9IHRjcF9pbnEoc2spO1xuK1x0c2tfcHNvY2tfcHV0KHNrLCBwc29jayk7XG4gXHR1bmxvY2tfc29ja19mYXN0KHNrLCBzbG93KTtcbiBcbiBcdHJldHVybiAwO1xuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3NvY2ttYXBfYmFzaWMuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3NvY2ttYXBfYmFzaWMuY1xuaW5kZXggY2IzMjI5NzExZjkzYTMuLmYwZjM2ODIwMWRkYWRiIDEwMDY0NFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvc29ja21hcF9iYXNpYy5jXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9zb2NrbWFwX2Jhc2ljLmNcbkBAIC0xMzczLDYgKzEzNzMsNDMgQEAgc3RhdGljIHZvaWQgdGVzdF9zb2NrbWFwX211bHRpX2NoYW5uZWxzKGludCBzb3R5cGUpXG4gXHR0ZXN0X3NvY2ttYXBfcGFzc19wcm9nX19kZXN0cm95KHNrZWwpO1xuIH1cbiBcbisvKiBBIHNvY2tldCBpbiBhIHNvY2ttYXAgd2l0aG91dCBhIHZlcmRpY3QgcHJvZ3JhbSBrZWVwcyBpdHMgaW5ncmVzcyBkYXRhXG4rICogaW4gc2tfcmVjZWl2ZV9xdWV1ZTogRklPTlJFQUQgbXVzdCBhY2NvdW50IGZvciBpdC5cbisgKi9cbitzdGF0aWMgdm9pZCB0ZXN0X3NvY2ttYXBfbm9fdmVyZGljdF9maW9ucmVhZCh2b2lkKVxuK3tcbitcdGludCBlcnIsIG1hcCwgemVybyA9IDAsIHNlbnQsIGF2YWlsO1xuK1x0aW50IGMwID0gLTEsIGMxID0gLTEsIHAwID0gLTEsIHAxID0gLTE7XG4rXHRzdHJ1Y3QgdGVzdF9zb2NrbWFwX3Bhc3NfcHJvZyAqc2tlbDtcbitcdGNoYXIgYnVmWzI1Nl0gPSBcIjAxMjM0NTY3ODlcIjtcbitcbitcdHNrZWwgPSB0ZXN0X3NvY2ttYXBfcGFzc19wcm9nX19vcGVuX2FuZF9sb2FkKCk7XG4rXHRpZiAoIUFTU0VSVF9PS19QVFIoc2tlbCwgXCJvcGVuX2FuZF9sb2FkXCIpKVxuK1x0XHRyZXR1cm47XG4rXHRtYXAgPSBicGZfbWFwX19mZChza2VsLVx1MDAzZW1hcHMuc29ja19tYXBfcngpO1xuK1xuK1x0ZXJyID0gY3JlYXRlX3NvY2tldF9wYWlycyhBRl9JTkVULCBTT0NLX1NUUkVBTSwgXHUwMDI2YzAsIFx1MDAyNmMxLCBcdTAwMjZwMCwgXHUwMDI2cDEpO1xuK1x0aWYgKCFBU1NFUlRfT0soZXJyLCBcImNyZWF0ZV9zb2NrZXRfcGFpcnMoKVwiKSlcbitcdFx0Z290byBvdXQ7XG4rXG4rXHRlcnIgPSBicGZfbWFwX3VwZGF0ZV9lbGVtKG1hcCwgXHUwMDI2emVybywgXHUwMDI2YzEsIEJQRl9OT0VYSVNUKTtcbitcdGlmICghQVNTRVJUX09LKGVyciwgXCJicGZfbWFwX3VwZGF0ZV9lbGVtKGMxKVwiKSlcbitcdFx0Z290byBvdXRfY2xvc2U7XG4rXG4rXHRzZW50ID0geHNlbmQocDEsIFx1MDAyNmJ1Ziwgc2l6ZW9mKGJ1ZiksIDApO1xuK1x0QVNTRVJUX0VRKHNlbnQsIHNpemVvZihidWYpLCBcInhzZW5kKHAxKVwiKTtcbitcdGF2YWlsID0gd2FpdF9mb3JfZmlvbnJlYWQoYzEsIHNpemVvZihidWYpLCBJT19USU1FT1VUX1NFQyk7XG4rXHRBU1NFUlRfRVEoYXZhaWwsIHNpemVvZihidWYpLCBcImlvY3RsKEZJT05SRUFEKVwiKTtcbitcbitvdXRfY2xvc2U6XG4rXHRjbG9zZShjMCk7XG4rXHRjbG9zZShwMCk7XG4rXHRjbG9zZShjMSk7XG4rXHRjbG9zZShwMSk7XG4rb3V0OlxuK1x0dGVzdF9zb2NrbWFwX3Bhc3NfcHJvZ19fZGVzdHJveShza2VsKTtcbit9XG4rXG4gdm9pZCB0ZXN0X3NvY2ttYXBfYmFzaWModm9pZClcbiB7XG4gXHRpZiAodGVzdF9fc3RhcnRfc3VidGVzdChcInNvY2ttYXAgY3JlYXRlX3VwZGF0ZV9mcmVlXCIpKVxuQEAgLTE0MTUsNiArMTQ1Miw4IEBAIHZvaWQgdGVzdF9zb2NrbWFwX2Jhc2ljKHZvaWQpXG4gXHRcdHRlc3Rfc29ja21hcF9za2JfdmVyZGljdF9zaHV0ZG93bigpO1xuIFx0aWYgKHRlc3RfX3N0YXJ0X3N1YnRlc3QoXCJzb2NrbWFwIHNrYl92ZXJkaWN0IGZpb25yZWFkXCIpKVxuIFx0XHR0ZXN0X3NvY2ttYXBfc2tiX3ZlcmRpY3RfZmlvbnJlYWQodHJ1ZSk7XG4rXHRpZiAodGVzdF9fc3RhcnRfc3VidGVzdChcInNvY2ttYXAgbm9fdmVyZGljdCBmaW9ucmVhZFwiKSlcbitcdFx0dGVzdF9zb2NrbWFwX25vX3ZlcmRpY3RfZmlvbnJlYWQoKTtcbiBcdGlmICh0ZXN0X19zdGFydF9zdWJ0ZXN0KFwic29ja21hcCBza2JfdmVyZGljdCBmaW9ucmVhZCBvbiBkcm9wXCIpKVxuIFx0XHR0ZXN0X3NvY2ttYXBfc2tiX3ZlcmRpY3RfZmlvbnJlYWQoZmFsc2UpO1xuIFx0aWYgKHRlc3RfX3N0YXJ0X3N1YnRlc3QoXCJzb2NrbWFwIHNrYl92ZXJkaWN0IGNoYW5nZSB0YWlsXCIpKVxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDlUMTA6NTI6MjEuNTM1MDI5MjI0WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTUyMDAxMDQzODIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBUQ1AgQlBGIElvY3RsIFBhdGNoKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBmb3IgYHRjcF9icGZfaW9jdGxgIHdpdGhpbiBgbmV0L2lwdjQvdGNwX2JwZi5jYC4gSXQncyBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkLCBidXQgaXQgZGVhbHMgd2l0aCBhIGNyaXRpY2FsIGFyZWE6IGhvdyBgU0lPQ0lOUWAgKG9yIGBGSU9OUkVBRGAg4oCTIHN0YW5kYXJkIHN0dWZmLCByZWFsbHkpIGJlaGF2ZXMgZm9yIFRDUCBzb2NrZXRzIHRoYXQgYXJlIGFsc28gb3BlcmF0aW5nIHdpdGhpbiBhIHNvY2ttYXAgY29udGV4dCwgdXNpbmcgQlBGLiBUaGUgY29yZSBjaGFuZ2UgaXMgdGhpczogaWYgdGhlcmUgaXNuJ3QgYSB2ZXJkaWN0IHByb2dyYW0gaW4gcGxheSwgdGhlIGltcGxlbWVudGF0aW9uIGhhcyBiZWVuIHVwZGF0ZWQgdG8gYWNjb3VudCBmb3Igbm90IG9ubHkgdGhlIGxlbmd0aCBvZiBtZXNzYWdlcyBvbiB0aGUgYHNrX3JlY2VpdmVfcXVldWVgIChgdGNwX2lucShzaylgKSwgYnV0IGFsc28gYHNrX3Bzb2NrX2dldF9tc2dfbGVuX25vbG9jayhwc29jaylgLiBUaGlzIHNlZW1zIGxpa2UgYSByZWFzb25hYmxlIGFkanVzdG1lbnQgdG8gZW5zdXJlIGFjY3VyYXRlIHJlcG9ydGluZyBvZiBxdWV1ZWQgZGF0YS5cblxuSSBzZWUgdGhhdCBgc2tfcHNvY2tfbXNnX2lucWAgaGFzIGJlZW4gcmVtb3ZlZCBmcm9tIGBpbmNsdWRlL2xpbnV4L3NrbXNnLmhgLCBhbmQgdGhlIGxvZ2ljIGlzIG5vdyBlbWJlZGRlZCBkaXJlY3RseSB3aXRoaW4gYHRjcF9icGZfaW9jdGxgLiBUaGlzIGlzIGZpbmU7IEkgd291bGRuJ3QgdXN1YWxseSBleHBlY3QgYSBkZWRpY2F0ZWQgc3ltYm9sIGZvciB0aGlzIGtpbmQgb2YgZnVuY3Rpb25hbGl0eSBpbiBhIGhlYWRlciBmaWxlLiBUaGUgcGF0Y2ggbW92ZXMgdGhlIGNvcmUgbG9naWMgaW50byBhIG1vcmUgYXBwcm9wcmlhdGUgbG9jYXRpb24gaW4gdGhlIGtlcm5lbC5cblxuR2l2ZW4gdGhlIGltcG9ydGFuY2Ugb2YgdGhpcyBwYXRjaCwgSSBzaG91bGQgY2hlY2sgdGhlIHJlbGV2YW50IGtlcm5lbCBjb25maWdzIHJlcXVpcmVkIGZvciBgbmV0L2lwdjQvdGNwX2JwZi5jYCBhbmQgbWFrZSBzdXJlIHRoZSBuZXcgZnVuY3Rpb25hbGl0eSBpcyBnb2luZyB0byBiZSBhdmFpbGFibGUuIFdlIGRvbid0IHdhbnQgdG8gZ2V0IHRoaXMgbWlzc2VkIGJ5IGEgbWlzY29uZmlndXJlZCBidWlsZC5cblxuXG4iLCJJbnB1dFRva2VucyI6MzM2MiwiT3V0cHV0VG9rZW5zIjoyOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIyMywiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA5VDEwOjUyOjM2LjczNTEzNjU1NloiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2ODA0Mjc3MjQsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwidGNwX2JwZlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvaXB2NC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L2lwdjQvTWFrZWZpbGU9NjI9b2JqLSQoQ09ORklHX1RDUF9DT05HX0lMTElOT0lTKSArPSB0Y3BfaWxsaW5vaXMub1xcbm5ldC9pcHY0L01ha2VmaWxlOjYzOm9iai0kKENPTkZJR19ORVRfU09DS19NU0cpICs9IHRjcF9icGYub1xcbm5ldC9pcHY0L01ha2VmaWxlLTY0LW9iai0kKENPTkZJR19CUEZfU1lTQ0FMTCkgKz0gdWRwX2JwZi5vXFxuLS1cXG5uZXQvaXB2NC90Y3AuYz00NDgxPWludCBkb190Y3BfZ2V0c29ja29wdChzdHJ1Y3Qgc29jayAqc2ssIGludCBsZXZlbCxcXG4tLVxcbm5ldC9pcHY0L3RjcC5jLTQ4NDUtXFxubmV0L2lwdjQvdGNwLmM6NDg0Njpib29sIHRjcF9icGZfYnlwYXNzX2dldHNvY2tvcHQoaW50IGxldmVsLCBpbnQgb3B0bmFtZSlcXG5uZXQvaXB2NC90Y3AuYy00ODQ3LXtcXG4tLVxcbm5ldC9pcHY0L3RjcF9icGYuYz0zMz1zdGF0aWMgaW50IGJwZl90Y3BfaW5ncmVzcyhzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBza19wc29jayAqcHNvY2ssXFxuLS1cXG5uZXQvaXB2NC90Y3BfYnBmLmMtOTAtXFxubmV0L2lwdjQvdGNwX2JwZi5jOjkxOnN0YXRpYyBpbnQgdGNwX2JwZl9wdXNoKHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX21zZyAqbXNnLCB1MzIgYXBwbHlfYnl0ZXMsXFxubmV0L2lwdjQvdGNwX2JwZi5jLTkyLVxcdFxcdFxcdGludCBmbGFncywgYm9vbCB1bmNoYXJnZSlcXG4tLVxcbm5ldC9pcHY0L3RjcF9icGYuYy0xNTItXFxubmV0L2lwdjQvdGNwX2JwZi5jOjE1MzpzdGF0aWMgaW50IHRjcF9icGZfcHVzaF9sb2NrZWQoc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3Qgc2tfbXNnICptc2csXFxubmV0L2lwdjQvdGNwX2JwZi5jLTE1NC1cXHRcXHRcXHQgICAgICAgdTMyIGFwcGx5X2J5dGVzLCBpbnQgZmxhZ3MsIGJvb2wgdW5jaGFyZ2UpXFxuLS1cXG5uZXQvaXB2NC90Y3BfYnBmLmMtMTU4LVxcdGxvY2tfc29jayhzayk7XFxubmV0L2lwdjQvdGNwX2JwZi5jOjE1OTpcXHRyZXQgPSB0Y3BfYnBmX3B1c2goc2ssIG1zZywgYXBwbHlfYnl0ZXMsIGZsYWdzLCB1bmNoYXJnZSk7XFxubmV0L2lwdjQvdGNwX2JwZi5jLTE2MC1cXHRyZWxlYXNlX3NvY2soc2spO1xcbi0tXFxubmV0L2lwdjQvdGNwX2JwZi5jLTE2My1cXG5uZXQvaXB2NC90Y3BfYnBmLmM6MTY0OmludCB0Y3BfYnBmX3NlbmRtc2dfcmVkaXIoc3RydWN0IHNvY2sgKnNrLCBib29sIGluZ3Jlc3MsXFxubmV0L2lwdjQvdGNwX2JwZi5jLTE2NS1cXHRcXHRcXHQgIHN0cnVjdCBza19tc2cgKm1zZywgdTMyIGJ5dGVzLCBpbnQgZmxhZ3MpXFxuLS1cXG5uZXQvaXB2NC90Y3BfYnBmLmMtMTczLVxcdHJldCA9IGluZ3Jlc3MgPyBicGZfdGNwX2luZ3Jlc3Moc2ssIHBzb2NrLCBtc2csIGJ5dGVzKSA6XFxubmV0L2lwdjQvdGNwX2JwZi5jOjE3NDpcXHRcXHRcXHR0Y3BfYnBmX3B1c2hfbG9ja2VkKHNrLCBtc2csIGJ5dGVzLCBmbGFncywgZmFsc2UpO1xcbm5ldC9pcHY0L3RjcF9icGYuYy0xNzUtXFx0c2tfcHNvY2tfcHV0KHNrLCBwc29jayk7XFxuLS1cXG5uZXQvaXB2NC90Y3BfYnBmLmMtMTc3LX1cXG5uZXQvaXB2NC90Y3BfYnBmLmM6MTc4OkVYUE9SVF9TWU1CT0xfR1BMKHRjcF9icGZfc2VuZG1zZ19yZWRpcik7XFxubmV0L2lwdjQvdGNwX2JwZi5jLTE3OS1cXG4tLVxcbm5ldC9pcHY0L3RjcF9icGYuYz0yMDM9c3RhdGljIGJvb2wgaXNfbmV4dF9tc2dfZmluKHN0cnVjdCBza19wc29jayAqcHNvY2spXFxuLS1cXG5uZXQvaXB2NC90Y3BfYnBmLmMtMjIwLVxcbm5ldC9pcHY0L3RjcF9icGYuYzoyMjE6c3RhdGljIGludCB0Y3BfYnBmX3JlY3Ztc2dfcGFyc2VyKHN0cnVjdCBzb2NrICpzayxcXG5uZXQvaXB2NC90Y3BfYnBmLmMtMjIyLVxcdFxcdFxcdFxcdCAgc3RydWN0IG1zZ2hkciAqbXNnLFxcbi0tXFxubmV0L2lwdjQvdGNwX2JwZi5jLTMzNC1cXG5uZXQvaXB2NC90Y3BfYnBmLmM6MzM1OnN0YXRpYyBpbnQgdGNwX2JwZl9pb2N0bChzdHJ1Y3Qgc29jayAqc2ssIGludCBjbWQsIGludCAqa2FyZylcXG5uZXQvaXB2NC90Y3BfYnBmLmMtMzM2LXtcXG4tLVxcbm5ldC9pcHY0L3RjcF9icGYuYy0zNjctXFxubmV0L2lwdjQvdGNwX2JwZi5jOjM2ODpzdGF0aWMgaW50IHRjcF9icGZfcmVjdm1zZyhzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBtc2doZHIgKm1zZywgc2l6ZV90IGxlbixcXG5uZXQvaXB2NC90Y3BfYnBmLmMtMzY5LVxcdFxcdFxcdCAgIGludCBmbGFncylcXG4tLVxcbm5ldC9pcHY0L3RjcF9icGYuYy00MTctXFxubmV0L2lwdjQvdGNwX2JwZi5jOjQxODpzdGF0aWMgaW50IHRjcF9icGZfc2VuZF92ZXJkaWN0KHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX3Bzb2NrICpwc29jayxcXG5uZXQvaXB2NC90Y3BfYnBmLmMtNDE5LVxcdFxcdFxcdFxcdHN0cnVjdCBza19tc2cgKm1zZywgaW50ICpjb3BpZWQsIGludCBmbGFncylcXG4tLVxcbm5ldC9pcHY0L3RjcF9icGYuYy00NjEtXFx0Y2FzZSBfX1NLX1BBU1M6XFxubmV0L2lwdjQvdGNwX2JwZi5jOjQ2MjpcXHRcXHRyZXQgPSB0Y3BfYnBmX3B1c2goc2ssIG1zZywgdG9zZW5kLCBmbGFncywgdHJ1ZSk7XFxubmV0L2lwdjQvdGNwX2JwZi5jLTQ2My1cXHRcXHRpZiAodW5saWtlbHkocmV0KSkge1xcbi0tXFxubmV0L2lwdjQvdGNwX2JwZi5jLTQ4NS1cXHRcXHRvcmlnc2l6ZSA9IG1zZy1cXHUwMDNlc2cuc2l6ZTtcXG5uZXQvaXB2NC90Y3BfYnBmLmM6NDg2OlxcdFxcdHJldCA9IHRjcF9icGZfc2VuZG1zZ19yZWRpcihza19yZWRpciwgcmVkaXJfaW5ncmVzcyxcXG5uZXQvaXB2NC90Y3BfYnBmLmMtNDg3LVxcdFxcdFxcdFxcdFxcdCAgICBtc2csIHRvc2VuZCwgZmxhZ3MpO1xcbi0tXFxubmV0L2lwdjQvdGNwX2JwZi5jLTUzMS1cXG5uZXQvaXB2NC90Y3BfYnBmLmM6NTMyOnN0YXRpYyBpbnQgdGNwX2JwZl9zZW5kbXNnKHN0cnVjdCBzb2NrICpzaywgc3RydWN0IG1zZ2hkciAqbXNnLCBzaXplX3Qgc2l6ZSlcXG5uZXQvaXB2NC90Y3BfYnBmLmMtNTMzLXtcXG4tLVxcbm5ldC9pcHY0L3RjcF9icGYuYy01OTctXFxubmV0L2lwdjQvdGNwX2JwZi5jOjU5ODpcXHRcXHRlcnIgPSB0Y3BfYnBmX3NlbmRfdmVyZGljdChzaywgcHNvY2ssIG1zZ190eCwgXFx1MDAyNmNvcGllZCwgZmxhZ3MpO1xcbm5ldC9pcHY0L3RjcF9icGYuYy01OTktXFx0XFx0aWYgKHVubGlrZWx5KGVyciBcXHUwMDNjIDApKVxcbi0tXFxubmV0L2lwdjQvdGNwX2JwZi5jPTYzNT1zdGF0aWMgREVGSU5FX1NQSU5MT0NLKHRjcHY2X3Byb3RfbG9jayk7XFxubmV0L2lwdjQvdGNwX2JwZi5jOjYzNjpzdGF0aWMgc3RydWN0IHByb3RvIHRjcF9icGZfcHJvdHNbVENQX0JQRl9OVU1fUFJPVFNdW1RDUF9CUEZfTlVNX0NGR1NdO1xcbm5ldC9pcHY0L3RjcF9icGYuYy02MzctXFxubmV0L2lwdjQvdGNwX2JwZi5jOjYzODpzdGF0aWMgdm9pZCB0Y3BfYnBmX3JlYnVpbGRfcHJvdG9zKHN0cnVjdCBwcm90byBwcm90W1RDUF9CUEZfTlVNX0NGR1NdLFxcbm5ldC9pcHY0L3RjcF9icGYuYy02MzktXFx0XFx0XFx0XFx0ICAgc3RydWN0IHByb3RvICpiYXNlKVxcbi0tXFxubmV0L2lwdjQvdGNwX2JwZi5jLTY0My1cXHRwcm90W1RDUF9CUEZfQkFTRV0uY2xvc2VcXHRcXHQ9IHNvY2tfbWFwX2Nsb3NlO1xcbm5ldC9pcHY0L3RjcF9icGYuYzo2NDQ6XFx0cHJvdFtUQ1BfQlBGX0JBU0VdLnJlY3Ztc2dcXHRcXHQ9IHRjcF9icGZfcmVjdm1zZztcXG5uZXQvaXB2NC90Y3BfYnBmLmMtNjQ1LVxcdHByb3RbVENQX0JQRl9CQVNFXS5zb2NrX2lzX3JlYWRhYmxlXFx0PSBza19tc2dfaXNfcmVhZGFibGU7XFxubmV0L2lwdjQvdGNwX2JwZi5jOjY0NjpcXHRwcm90W1RDUF9CUEZfQkFTRV0uaW9jdGxcXHRcXHQ9IHRjcF9icGZfaW9jdGw7XFxubmV0L2lwdjQvdGNwX2JwZi5jLTY0Ny1cXG5uZXQvaXB2NC90Y3BfYnBmLmMtNjQ4LVxcdHByb3RbVENQX0JQRl9UWF1cXHRcXHRcXHQ9IHByb3RbVENQX0JQRl9CQVNFXTtcXG5uZXQvaXB2NC90Y3BfYnBmLmM6NjQ5OlxcdHByb3RbVENQX0JQRl9UWF0uc2VuZG1zZ1xcdFxcdD0gdGNwX2JwZl9zZW5kbXNnO1xcbm5ldC9pcHY0L3RjcF9icGYuYy02NTAtXFxubmV0L2lwdjQvdGNwX2JwZi5jLTY1MS1cXHRwcm90W1RDUF9CUEZfUlhdXFx0XFx0XFx0PSBwcm90W1RDUF9CUEZfQkFTRV07XFxubmV0L2lwdjQvdGNwX2JwZi5jOjY1MjpcXHRwcm90W1RDUF9CUEZfUlhdLnJlY3Ztc2dcXHRcXHQ9IHRjcF9icGZfcmVjdm1zZ19wYXJzZXI7XFxubmV0L2lwdjQvdGNwX2JwZi5jLTY1My1cXG5uZXQvaXB2NC90Y3BfYnBmLmMtNjU0LVxcdHByb3RbVENQX0JQRl9UWFJYXVxcdFxcdFxcdD0gcHJvdFtUQ1BfQlBGX1RYXTtcXG5uZXQvaXB2NC90Y3BfYnBmLmM6NjU1OlxcdHByb3RbVENQX0JQRl9UWFJYXS5yZWN2bXNnXFx0XFx0PSB0Y3BfYnBmX3JlY3Ztc2dfcGFyc2VyO1xcbm5ldC9pcHY0L3RjcF9icGYuYy02NTYtfVxcbm5ldC9pcHY0L3RjcF9icGYuYy02NTctXFxubmV0L2lwdjQvdGNwX2JwZi5jOjY1ODpzdGF0aWMgdm9pZCB0Y3BfYnBmX2NoZWNrX3Y2X25lZWRzX3JlYnVpbGQoc3RydWN0IHByb3RvICpvcHMpXFxubmV0L2lwdjQvdGNwX2JwZi5jLTY1OS17XFxuLS1cXG5uZXQvaXB2NC90Y3BfYnBmLmMtNjYyLVxcdFxcdGlmIChsaWtlbHkob3BzICE9IHRjcHY2X3Byb3Rfc2F2ZWQpKSB7XFxubmV0L2lwdjQvdGNwX2JwZi5jOjY2MzpcXHRcXHRcXHR0Y3BfYnBmX3JlYnVpbGRfcHJvdG9zKHRjcF9icGZfcHJvdHNbVENQX0JQRl9JUFY2XSwgb3BzKTtcXG5uZXQvaXB2NC90Y3BfYnBmLmMtNjY0LVxcdFxcdFxcdHNtcF9zdG9yZV9yZWxlYXNlKFxcdTAwMjZ0Y3B2Nl9wcm90X3NhdmVkLCBvcHMpO1xcbi0tXFxubmV0L2lwdjQvdGNwX2JwZi5jLTY2OS1cXG5uZXQvaXB2NC90Y3BfYnBmLmM6NjcwOnN0YXRpYyBpbnQgX19pbml0IHRjcF9icGZfdjRfYnVpbGRfcHJvdG8odm9pZClcXG5uZXQvaXB2NC90Y3BfYnBmLmMtNjcxLXtcXG5uZXQvaXB2NC90Y3BfYnBmLmM6NjcyOlxcdHRjcF9icGZfcmVidWlsZF9wcm90b3ModGNwX2JwZl9wcm90c1tUQ1BfQlBGX0lQVjRdLCBcXHUwMDI2dGNwX3Byb3QpO1xcbm5ldC9pcHY0L3RjcF9icGYuYy02NzMtXFx0cmV0dXJuIDA7XFxubmV0L2lwdjQvdGNwX2JwZi5jLTY3NC19XFxubmV0L2lwdjQvdGNwX2JwZi5jOjY3NTpsYXRlX2luaXRjYWxsKHRjcF9icGZfdjRfYnVpbGRfcHJvdG8pO1xcbm5ldC9pcHY0L3RjcF9icGYuYy02NzYtXFxubmV0L2lwdjQvdGNwX2JwZi5jOjY3NzpzdGF0aWMgaW50IHRjcF9icGZfYXNzZXJ0X3Byb3RvX29wcyhzdHJ1Y3QgcHJvdG8gKm9wcylcXG5uZXQvaXB2NC90Y3BfYnBmLmMtNjc4LXtcXG4tLVxcbm5ldC9pcHY0L3RjcF9icGYuYy02ODctI2lmIElTX0VOQUJMRUQoQ09ORklHX0JQRl9TVFJFQU1fUEFSU0VSKVxcbm5ldC9pcHY0L3RjcF9icGYuYzo2ODg6aW50IHRjcF9icGZfc3RycF9yZWFkX3NvY2soc3RydWN0IHN0cnBhcnNlciAqc3RycCwgcmVhZF9kZXNjcmlwdG9yX3QgKmRlc2MsXFxubmV0L2lwdjQvdGNwX2JwZi5jLTY4OS1cXHRcXHRcXHQgICBza19yZWFkX2FjdG9yX3QgcmVjdl9hY3RvcilcXG4tLVxcbm5ldC9pcHY0L3RjcF9icGYuYy03MTEtXFx0ICogRm9yIFNLX1JFRElSRUNULCB3ZSBuZWVkIHRvIGFjayB0aGUgZnJhbWUgaW1tZWRpYXRlbHkgYnV0IGZvclxcbm5ldC9pcHY0L3RjcF9icGYuYzo3MTI6XFx0ICogU0tfUEFTUywgd2Ugd2FudCB0byBkZWxheSB0aGUgYWNrIHVudGlsIHRjcF9icGZfcmVjdm1zZ19wYXJzZXIoKS5cXG5uZXQvaXB2NC90Y3BfYnBmLmMtNzEzLVxcdCAqL1xcbi0tXFxubmV0L2lwdjQvdGNwX2JwZi5jLTcyMi1cXG5uZXQvaXB2NC90Y3BfYnBmLmM6NzIzOmludCB0Y3BfYnBmX3VwZGF0ZV9wcm90byhzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBza19wc29jayAqcHNvY2ssIGJvb2wgcmVzdG9yZSlcXG5uZXQvaXB2NC90Y3BfYnBmLmMtNzI0LXtcXG4tLVxcbm5ldC9pcHY0L3RjcF9icGYuYy03NDktXFx0aWYgKHNrLVxcdTAwM2Vza19mYW1pbHkgPT0gQUZfSU5FVDYpIHtcXG5uZXQvaXB2NC90Y3BfYnBmLmM6NzUwOlxcdFxcdGlmICh0Y3BfYnBmX2Fzc2VydF9wcm90b19vcHMocHNvY2stXFx1MDAzZXNrX3Byb3RvKSlcXG5uZXQvaXB2NC90Y3BfYnBmLmMtNzUxLVxcdFxcdFxcdHJldHVybiAtRUlOVkFMO1xcbm5ldC9pcHY0L3RjcF9icGYuYy03NTItXFxubmV0L2lwdjQvdGNwX2JwZi5jOjc1MzpcXHRcXHR0Y3BfYnBmX2NoZWNrX3Y2X25lZWRzX3JlYnVpbGQocHNvY2stXFx1MDAzZXNrX3Byb3RvKTtcXG5uZXQvaXB2NC90Y3BfYnBmLmMtNzU0LVxcdH1cXG4tLVxcbm5ldC9pcHY0L3RjcF9icGYuYy03NTYtXFx0LyogUGFpcnMgd2l0aCBsb2NrbGVzcyByZWFkIGluIHNrX2Nsb25lX2xvY2soKSAqL1xcbm5ldC9pcHY0L3RjcF9icGYuYzo3NTc6XFx0c29ja19yZXBsYWNlX3Byb3RvKHNrLCBcXHUwMDI2dGNwX2JwZl9wcm90c1tmYW1pbHldW2NvbmZpZ10pO1xcbm5ldC9pcHY0L3RjcF9icGYuYy03NTgtXFx0cmV0dXJuIDA7XFxubmV0L2lwdjQvdGNwX2JwZi5jLTc1OS19XFxubmV0L2lwdjQvdGNwX2JwZi5jOjc2MDpFWFBPUlRfU1lNQk9MX0dQTCh0Y3BfYnBmX3VwZGF0ZV9wcm90byk7XFxubmV0L2lwdjQvdGNwX2JwZi5jLTc2MS1cXG5uZXQvaXB2NC90Y3BfYnBmLmM6NzYyOi8qIElmIGEgY2hpbGQgZ290IGNsb25lZCBmcm9tIGEgbGlzdGVuaW5nIHNvY2tldCB0aGF0IGhhZCB0Y3BfYnBmXFxubmV0L2lwdjQvdGNwX2JwZi5jLTc2My0gKiBwcm90b2NvbCBjYWxsYmFja3MgaW5zdGFsbGVkLCB3ZSBuZWVkIHRvIHJlc3RvcmUgdGhlIGNhbGxiYWNrcyB0b1xcbm5ldC9pcHY0L3RjcF9icGYuYy03NjQtICogdGhlIGRlZmF1bHQgb25lcyBiZWNhdXNlIHRoZSBjaGlsZCBkb2VzIG5vdCBpbmhlcml0IHRoZSBwc29jayBzdGF0ZVxcbm5ldC9pcHY0L3RjcF9icGYuYzo3NjU6ICogdGhhdCB0Y3BfYnBmIGNhbGxiYWNrcyBleHBlY3QuXFxubmV0L2lwdjQvdGNwX2JwZi5jLTc2Ni0gKi9cXG5uZXQvaXB2NC90Y3BfYnBmLmM6NzY3OnZvaWQgdGNwX2JwZl9jbG9uZShjb25zdCBzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBzb2NrICpuZXdzaylcXG5uZXQvaXB2NC90Y3BfYnBmLmMtNzY4LXtcXG4tLVxcbm5ldC9pcHY0L3RjcF9icGYuYy03NzAtXFxubmV0L2lwdjQvdGNwX2JwZi5jOjc3MTpcXHRpZiAoaXNfaW5zaWRldmFyKHByb3QsIHRjcF9icGZfcHJvdHMpKVxcbm5ldC9pcHY0L3RjcF9icGYuYy03NzItXFx0XFx0bmV3c2stXFx1MDAzZXNrX3Byb3QgPSBzay1cXHUwMDNlc2tfcHJvdF9jcmVhdG9yO1xcbi0tXFxubmV0L2lwdjQvdGNwX2lucHV0LmM9MTA3MD1zdGF0aWMgdm9pZCB0Y3BfcnR0X2VzdGltYXRvcihzdHJ1Y3Qgc29jayAqc2ssIGxvbmcgbXJ0dF91cylcXG4tLVxcbm5ldC9pcHY0L3RjcF9pbnB1dC5jLTExMjItXFxubmV0L2lwdjQvdGNwX2lucHV0LmM6MTEyMzpcXHRcXHRcXHR0Y3BfYnBmX3J0dChzaywgbXJ0dF91cywgc3J0dCk7XFxubmV0L2lwdjQvdGNwX2lucHV0LmMtMTEyNC1cXHRcXHR9XFxuLS1cXG5uZXQvaXB2NC90Y3BfaW5wdXQuYy0xMTMyLVxcbm5ldC9pcHY0L3RjcF9pbnB1dC5jOjExMzM6XFx0XFx0dGNwX2JwZl9ydHQoc2ssIG1ydHRfdXMsIHNydHQpO1xcbm5ldC9pcHY0L3RjcF9pbnB1dC5jLTExMzQtXFx0fVxcbi0tXFxubmV0L2lwdjQvdGNwX2lucHV0LmM9NzQyND1zdGF0aWMgdm9pZCB0Y3BfZWNuX2NyZWF0ZV9yZXF1ZXN0KHN0cnVjdCByZXF1ZXN0X3NvY2sgKnJlcSxcXG4tLVxcbm5ldC9pcHY0L3RjcF9pbnB1dC5jLTc0NTQtXFx0ICAgIChlY25fb2tfZHN0IFxcdTAwMjYgRFNUX0ZFQVRVUkVfRUNOX0NBKSB8fFxcbm5ldC9pcHY0L3RjcF9pbnB1dC5jOjc0NTU6XFx0ICAgIHRjcF9icGZfY2FfbmVlZHNfZWNuKChzdHJ1Y3Qgc29jayAqKXJlcSkpXFxubmV0L2lwdjQvdGNwX2lucHV0LmMtNzQ1Ni1cXHRcXHRpbmV0X3JzayhyZXEpLVxcdTAwM2VlY25fb2sgPSAxO1xcbi0tXFxubmV0L2lwdjQvdGNwX2lwdjQuYz0xMTU5PXN0YXRpYyBpbnQgdGNwX3Y0X3NlbmRfc3luYWNrKGNvbnN0IHN0cnVjdCBzb2NrICpzaywgc3RydWN0IGRzdF9lbnRyeSAqZHN0LFxcbi0tXFxubmV0L2lwdjQvdGNwX2lwdjQuYy0xMTg4LVxcdFxcdGlmICghSU5FVF9FQ05faXNfY2FwYWJsZSh0b3MpIFxcdTAwMjZcXHUwMDI2XFxubmV0L2lwdjQvdGNwX2lwdjQuYzoxMTg5OlxcdFxcdCAgICB0Y3BfYnBmX2NhX25lZWRzX2Vjbigoc3RydWN0IHNvY2sgKilyZXEpKVxcbm5ldC9pcHY0L3RjcF9pcHY0LmMtMTE5MC1cXHRcXHRcXHR0b3MgfD0gSU5FVF9FQ05fRUNUXzA7XFxuLS1cXG5uZXQvaXB2NC90Y3BfaXB2NC5jPTMzMzU9c3RydWN0IHByb3RvIHRjcF9wcm90ID0ge1xcbi0tXFxubmV0L2lwdjQvdGNwX2lwdjQuYy0zMzQ4LVxcdC5nZXRzb2Nrb3B0XFx0XFx0PSB0Y3BfZ2V0c29ja29wdCxcXG5uZXQvaXB2NC90Y3BfaXB2NC5jOjMzNDk6XFx0LmJwZl9ieXBhc3NfZ2V0c29ja29wdFxcdD0gdGNwX2JwZl9ieXBhc3NfZ2V0c29ja29wdCxcXG5uZXQvaXB2NC90Y3BfaXB2NC5jLTMzNTAtXFx0LmtlZXBhbGl2ZVxcdFxcdD0gdGNwX3NldF9rZWVwYWxpdmUsXFxuLS1cXG5uZXQvaXB2NC90Y3BfaXB2NC5jLTMzNjAtI2lmZGVmIENPTkZJR19CUEZfU1lTQ0FMTFxcbm5ldC9pcHY0L3RjcF9pcHY0LmM6MzM2MTpcXHQucHNvY2tfdXBkYXRlX3NrX3Byb3RcXHQ9IHRjcF9icGZfdXBkYXRlX3Byb3RvLFxcbm5ldC9pcHY0L3RjcF9pcHY0LmMtMzM2Mi0jZW5kaWZcXG4tLVxcbm5ldC9pcHY0L3RjcF9taW5pc29ja3MuYz01NDY9c3RydWN0IHNvY2sgKnRjcF9jcmVhdGVfb3BlbnJlcV9jaGlsZChjb25zdCBzdHJ1Y3Qgc29jayAqc2ssXFxuLS1cXG5uZXQvaXB2NC90Y3BfbWluaXNvY2tzLmMtNjYzLVxcdG5ld3RwLVxcdTAwM2VicGZfY2hnX2NjX2lucHJvZ3Jlc3MgPSAwO1xcbm5ldC9pcHY0L3RjcF9taW5pc29ja3MuYzo2NjQ6XFx0dGNwX2JwZl9jbG9uZShzaywgbmV3c2spO1xcbm5ldC9pcHY0L3RjcF9taW5pc29ja3MuYy02NjUtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA5VDEwOjUyOjM3LjQxNTU3MjQ0WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MjA3NTg4NjYxMTgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIG15IG93bjpcblxuKipJbnZlc3RpZ2F0aW5nIGEgTmV0d29yayBDb25maWd1cmF0aW9uIERlcGVuZGVuY3kqKlxuXG5BbHJpZ2h0LCBzbyB0aGUgY29uZmlnIG9wdGlvbiBJJ20gc2VlaW5nIGlzIGBDT05GSUdfTkVUX1NPQ0tfTVNHYC4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIGZpZ3VyZSBvdXQgd2hhdCBmdW5jdGlvbmFsaXR5IHRoaXMgZW5hYmxlcywgc3BlY2lmaWNhbGx5IHdpdGhpbiB0aGUga2VybmVsLiBHaXZlbiB0aGF0IHRoaXMgc2VlbXMgdG8gcmVsYXRlIHRvIHNvY2tldHMgYW5kIG1lc3NhZ2luZywgbXkgbmV4dCBpbnN0aW5jdCBpcyB0byBodW50IGRvd24gdGhlIHJlbGV2YW50IG1ha2VmaWxlcy4gSSdtIGdvaW5nIHRvIGp1bXAgaW50byBgbmV0L2lwdjQvTWFrZWZpbGVgIGltbWVkaWF0ZWx5LiBJJ20gZXhwZWN0aW5nIHRoaXMgZmlsZSB0byBwb3RlbnRpYWxseSBkZWZpbmUgZGVwZW5kZW5jaWVzLCBjb21waWxhdGlvbiB0YXJnZXRzLCBvciBldmVuIHNvdXJjZSBmaWxlcyByZWxhdGVkIHRvIHRoaXMgZnVuY3Rpb25hbGl0eS4gSSdtIHBhcnRpY3VsYXJseSBpbnRlcmVzdGVkIGluIGFueXRoaW5nIHJlbGF0ZWQgdG8gYHRjcF9icGYub2AuIEtub3dpbmcgdGhlIG5ldHdvcmsgY29kZSBiYXNlLCB0aGF0IHNtZWxscyBsaWtlIHNvbWV0aGluZyByZWxhdGVkIHRvIEJlcmtlbGV5IFBhY2tldCBGaWx0ZXIgKEJQRikgdXNhZ2UgaW4gdGhlIFRDUCBzdGFjay4gVGhlIHByZXNlbmNlIG9mIGBDT05GSUdfTkVUX1NPQ0tfTVNHYCBhbmQgYSByZWxhdGVkIEJQRiBvYmplY3Qgd291bGQgc3VnZ2VzdCBhIEJQRi1iYXNlZCBzb2NrZXQgbWVzc2FnaW5nIGVuaGFuY2VtZW50LiBJJ2xsIHNlZSB3aGF0IHRoZSBNYWtlZmlsZSByZXZlYWxzLiBMZXQncyBkaWcgaW4uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjgyMzUsIk91dHB1dFRva2VucyI6MzAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wOVQxMDo1Mjo1OC4xNzQ0NDEwOThaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Mjc4NzcwMTUyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInRjcF9icGZcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L2lwdjQvTWFrZWZpbGVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L2lwdjQvTWFrZWZpbGU9NjI9b2JqLSQoQ09ORklHX1RDUF9DT05HX0lMTElOT0lTKSArPSB0Y3BfaWxsaW5vaXMub1xcbm5ldC9pcHY0L01ha2VmaWxlOjYzOm9iai0kKENPTkZJR19ORVRfU09DS19NU0cpICs9IHRjcF9icGYub1xcbm5ldC9pcHY0L01ha2VmaWxlLTY0LW9iai0kKENPTkZJR19CUEZfU1lTQ0FMTCkgKz0gdWRwX2JwZi5vXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA5VDEwOjUyOjU4LjQ1MzIxODcxWiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTk3MDYyMDU0NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBbmFseXNpcyBvZiB0aGUgVENQIEJQRiBQYXRjaCoqXG5cbk9rYXksIHNvIEkgc2VlIHRoaXMgcGF0Y2ggcmVxdWlyZXMgYENPTkZJR19ORVRfU09DS19NU0dgLiBUaGF0IG1ha2VzIHNlbnNlOyB3ZSdyZSBkZWFsaW5nIHdpdGggc29ja2V0IG1lc3NhZ2luZy4gIEFuZCwgb2YgY291cnNlLCB0aGUgZXZlci1wcmVzZW50IGBDT05GSUdfQlBGX1NZU0NBTExgIGlzIGVzc2VudGlhbCBmb3IgYW55IEJQRi1yZWxhdGVkIGNoYW5nZXMuIEl0J3MgYSBnaXZlbi5cblxuTm93LCBsZXQncyBnZXQgaW50byB0aGUgY29kZS4gTXkgZm9jdXMgaXMgb24gYHRjcF9icGZfaW9jdGxgIGFuZCBgdGNwX2JwZl9yZWN2bXNnX3BhcnNlcmAuICBUaGUgZGVzY3JpcHRpb24gc3BlY2lmaWNhbGx5IGNhbGxzIG91dCBhIG1vZGlmaWNhdGlvbiB0byBgdGNwX2JwZl9pb2N0bGAsIHNvIHRoYXQncyB3aGVyZSBJIG5lZWQgdG8gZGlnIGluIGZpcnN0LlxuXG5JIG5lZWQgdG8gY29uZmlybSB3aGV0aGVyIGB0Y3BfYnBmX2lvY3RsYCBpcyB0aGUgb25seSBmdW5jdGlvbiBpbXBhY3RlZC4gWXVwLCBhY2NvcmRpbmcgdG8gdGhpcyBhbmFseXNpcywgaXQgbG9va3MgbGlrZSBgdGNwX2JwZl9pb2N0bGAgaW4gYG5ldC9pcHY0L3RjcF9icGYuY2AgaXMgdGhlIHByaW1hcnkgdGFyZ2V0LiAgQW5kIEkgc2VlIHRoYXQgYHNrX3Bzb2NrX21zZ19pbnFgIGhhcyBiZWVuIHJlbW92ZWQgZnJvbSBgaW5jbHVkZS9saW51eC9za21zZy5oYC4gVGhhdCBzZWVtcyBsaWtlIGFuIG9idmlvdXMgY29uc2VxdWVuY2Ugb2YgdGhlIGNoYW5nZXMuXG5cbk9rYXksIG5vdyBsZXQncyBtYWtlIHN1cmUgSSB1bmRlcnN0YW5kIHRoZSByZWFjaGFiaWxpdHkgb2YgYHRjcF9icGZfaW9jdGxgLiAgQWhhLCBpdCBpcyB0aGUgYC5pb2N0bGAgaGFuZGxlciBmb3IgVENQIHNvY2tldHMgdGhhdCBoYXZlIEJQRiBhdHRhY2hlZCwgb3IgYHRjcF9icGZfcHJvdHNgLiBTbyBpdCBnZXRzIGNhbGxlZCB3aGVuIGEgdXNlciBjYWxscyBgaW9jdGwoZmQsIFNJT0NJTlEsIC4uLilgIG9uIGEgVENQIHNvY2tldCB3aXRoaW4gYSBzb2NrbWFwLiBJJ20gc2F0aXNmaWVkLlxuXG5TbyBteSBrZXkgY29uZmlndXJhdGlvbnMgaGVyZSBhcmUgYE5FVF9TT0NLX01TR2AgYW5kIGBCUEZfU1lTQ0FMTGAuICBUaGUgY3JpdGljYWwgc3ltYm9sIGlzIHN0aWxsIGB0Y3BfYnBmX2lvY3RsYC5cblxuTGV0J3MgZG8gYSBxdWljayBkb3VibGUtY2hlY2sgdG8gY29uZmlybSB0aGF0IGBORVRfU09DS19NU0dgIGlzIGluZGVlZCBhIHVzZXItc2VsZWN0YWJsZSBjb25maWd1cmF0aW9uIG9wdGlvbi4gSSBuZWVkIHRvIGJlIHN1cmUuIFRoYXQncyBhIGdvb2Qgc2FuaXR5IGNoZWNrLlxuXG5cbiIsIklucHV0VG9rZW5zIjo4NjE0LCJPdXRwdXRUb2tlbnMiOjI2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjY5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA5VDEwOjUzOjA0LjQyMzg1MjY3NloiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1Mjc5MjU0MDI0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBORVRfU09DS19NU0dcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9LY29uZmlnPTQ3NT1jb25maWcgTkVUX1NFTEZURVNUU1xcbi0tXFxubmV0L0tjb25maWctNDc4LVxcbm5ldC9LY29uZmlnOjQ3OTpjb25maWcgTkVUX1NPQ0tfTVNHXFxubmV0L0tjb25maWctNDgwLVxcdGJvb2xcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDlUMTA6NTM6MDkuNzAzMTQwMjA5WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDMwNzAyMTM2MDQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0J3MgaW50ZXJuYWwgbW9ub2xvZ3VlOlxuXG4qKkludmVzdGlnYXRpbmcgdGhlIE5FVF9TT0NLX01TRyBDb25maWd1cmF0aW9uIE9wdGlvbioqXG5cblJpZ2h0LCBgTkVUX1NPQ0tfTVNHYC4uLiB0aGF0J3MgYSBiaXQgb2JzY3VyZS4gSXQncyBhIGhpZGRlbiBjb25maWcsIHNvIGl0J3Mgbm90IHNvbWV0aGluZyB5b3UnZCB0eXBpY2FsbHkgc2VlIGRpcmVjdGx5IGNvbmZpZ3VyZWQuIE15IGd1ZXNzLCBhbmQgaXQncyBqdXN0IGEgZ3Vlc3MgYmFzZWQgb24gdGhlIG5hbWUsIGlzIHRoYXQgaXQncyByZWxhdGVkIHRvIHNvY2tldCBtZXNzYWdpbmcgc29tZWhvdy4gSXQncyBsaWtlbHkgYWN0aXZhdGVkIGluZGlyZWN0bHkgdGhyb3VnaCBvdGhlciwgbW9yZSB2aXNpYmxlIG9wdGlvbnMuIGBCUEZfU1lTQ0FMTGAgbWFrZXMgc2Vuc2UgYXMgYSBwb3NzaWJsZSBzZWxlY3RvciwgZ2l2ZW4gaXRzIHJvbGUgaW4gZmlsdGVyaW5nIHN5c2NhbGxzLCBhbmQgYElORVRgIGlzIGFub3RoZXIgc3Ryb25nIGNvbnRlbmRlciwgZ2l2ZW4gaXRzIHJlbGF0aW9uc2hpcCB0byBJUCBuZXR3b3JraW5nLiBJIG5lZWQgdG8gdmVyaWZ5IHRoYXQgdGhvdWdoLiBUaW1lIHRvIHRyYWNlIHRoZSBkZXBlbmRlbmNpZXMgYW5kIGZpZ3VyZSBvdXQgd2hhdCBhY3R1YWxseSBlbmFibGVzIHRoaXMgdGhpbmcuIE5lZWQgdG8gdW5kZXJzdGFuZCBleGFjdGx5ICp3aHkqIGl0J3MgYmVpbmcgdXNlZC4gVGhlcmUncyBubyBwb2ludCBvZiB0aGlzIGV4aXN0aW5nIGluIHRoZSBmaXJzdCBwbGFjZSBpZiBpdCBpcyBub3Qgc2VsZWN0ZWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjkzODIsIk91dHB1dFRva2VucyI6MjYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozOSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wOVQxMDo1Mzo1Mi43NzMzNTg0OTRaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjY0NTEzOTE5NDksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwic2VsZWN0IE5FVF9TT0NLX01TR1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwia2VybmVsL2JwZi9LY29uZmlnPTI3PWNvbmZpZyBCUEZfU1lTQ0FMTFxcbi0tXFxua2VybmVsL2JwZi9LY29uZmlnLTMzLVxcdHNlbGVjdCBCSU5BUllfUFJJTlRGXFxua2VybmVsL2JwZi9LY29uZmlnOjM0OlxcdHNlbGVjdCBORVRfU09DS19NU0cgaWYgTkVUXFxua2VybmVsL2JwZi9LY29uZmlnLTM1LVxcdHNlbGVjdCBORVRfWEdSRVNTIGlmIE5FVFxcbi0tXFxubmV0L0tjb25maWc9MzYxPWNvbmZpZyBCUEZfU1RSRUFNX1BBUlNFUlxcbi0tXFxubmV0L0tjb25maWctMzY2LVxcdHNlbGVjdCBTVFJFQU1fUEFSU0VSXFxubmV0L0tjb25maWc6MzY3OlxcdHNlbGVjdCBORVRfU09DS19NU0dcXG5uZXQvS2NvbmZpZy0zNjgtXFx0aGVscFxcbi0tXFxubmV0L2lwdjQvS2NvbmZpZz0zODI9Y29uZmlnIElORVRfRVNQSU5UQ1BcXG4tLVxcbm5ldC9pcHY0L0tjb25maWctMzg1LVxcdHNlbGVjdCBTVFJFQU1fUEFSU0VSXFxubmV0L2lwdjQvS2NvbmZpZzozODY6XFx0c2VsZWN0IE5FVF9TT0NLX01TR1xcbm5ldC9pcHY0L0tjb25maWctMzg3LVxcdHNlbGVjdCBYRlJNX0VTUElOVENQXFxuLS1cXG5uZXQvaXB2Ni9LY29uZmlnPTkwPWNvbmZpZyBJTkVUNl9FU1BJTlRDUFxcbi0tXFxubmV0L2lwdjYvS2NvbmZpZy05My1cXHRzZWxlY3QgU1RSRUFNX1BBUlNFUlxcbm5ldC9pcHY2L0tjb25maWc6OTQ6XFx0c2VsZWN0IE5FVF9TT0NLX01TR1xcbm5ldC9pcHY2L0tjb25maWctOTUtXFx0c2VsZWN0IFhGUk1fRVNQSU5UQ1BcXG4tLVxcbm5ldC90bHMvS2NvbmZpZz01PWNvbmZpZyBUTFNcXG4tLVxcbm5ldC90bHMvS2NvbmZpZy0xMC1cXHRzZWxlY3QgQ1JZUFRPX0dDTVxcbm5ldC90bHMvS2NvbmZpZzoxMTpcXHRzZWxlY3QgTkVUX1NPQ0tfTVNHXFxubmV0L3Rscy9LY29uZmlnLTEyLVxcdGRlZmF1bHQgblxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wOVQxMDo1Mzo1OS4yMjQ3NTk4NDJaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6OTQyOTA4OTYwMTAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudCBvZiB0aGUgUGF0Y2gncyBGdXp6aW5nIFBvdGVudGlhbCoqXG5cbk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgdHJpZ2dlcmVkIGJ5IGBCUEZfU1lTQ0FMTGAgaWYgdGhlIGBORVRgIGNvbmZpZ3VyYXRpb24gb3B0aW9uIGlzIGFjdGl2ZS4gVGhlcmVmb3JlLCBgQlBGX1NZU0NBTExgIGlzIHRoZSBjcnVjaWFsIGNvbmZpZ3VyYXRpb24gb3B0aW9uIHRvIGVuYWJsZSBmb3IgZnV6emluZyBjb3ZlcmFnZS5cblxuSSBuZWVkIHRvIGNvbmZpcm0gdGhhdCBgdGNwX2JwZl9pb2N0bGAgaXMgdGhlIHNvbGUgZnVuY3Rpb24gaW1wYWN0ZWQuIFllcywgdGhlIGRpZmYgY29uZmlybXMgdGhhdCBgdGNwX2JwZl9pb2N0bGAgaXMgaW5kZWVkIHRoZSAqb25seSogZnVuY3Rpb24gbW9kaWZpZWQgYnkgdGhpcyBwYXRjaC5cblxuUmlnaHQsIEkgY2FuIG5vdyBzdWNjaW5jdGx5IHN1bW1hcml6ZSBteSBmaW5kaW5ncy5cblxuQmFzZWQgb24gbXkgYW5hbHlzaXMsIHRoaXMgcGF0Y2ggcHJlc2VudHMgYSB3b3J0aHdoaWxlIHRhcmdldCBmb3IgZnV6emluZy4gVGhlIGtleSBmdW5jdGlvbiB0byBmb2N1cyBvbiBpcyBgdGNwX2JwZl9pb2N0bGAuIEkgd2lsbCBhbHNvIGluY2x1ZGUgdGhlIGNvbmZpZ3VyYXRpb24gYEJQRl9TWVNDQUxMYCBpbiB0aGUgZnV6emluZyBjb25maWd1cmF0aW9uLiBUaGUgcmVhc29uaW5nIGlzIGNsZWFyOiB0aGUgcGF0Y2ggaXMgZnVuZGFtZW50YWxseSBhbHRlcmluZyBgdGNwX2JwZl9pb2N0bGAgdG8gcHJvcGVybHkgaGFuZGxlIGBTSU9DSU5RYCAoRklPTlJFQUQpIGZvciBUQ1Agc29ja2V0cyB3aXRoaW4gYSBzb2NrbWFwLCBzcGVjaWZpY2FsbHkgYWNjb3VudGluZyBmb3IgZGF0YSB3aXRoaW4gdGhlIGBza19yZWNlaXZlX3F1ZXVlYCB1bmRlciBjaXJjdW1zdGFuY2VzIHdoZXJlIGEgdmVyZGljdCBwcm9ncmFtIGlzIGFic2VudC4gVGhpcyBmdW5jdGlvbmFsaXR5IGlzIGNvcmUga2VybmVsIGxvZ2ljIHRoYXQgZGlyZWN0bHkgcmVsYXRlcyB0byBCUEYgYW5kIFRDUCBpbnRlcmFjdGlvbnMsIHRodXMgcHJlc2VudGluZyBhbiBhcmVhIHN1c2NlcHRpYmxlIHRvIHBvdGVudGlhbCB2dWxuZXJhYmlsaXRpZXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEwMDQzLCJPdXRwdXRUb2tlbnMiOjEwOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE4MCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wOVQxMDo1NTozMy41MTU2NTk5NDNaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyOTA4MDcyMzEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkJQRl9TWVNDQUxMXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwidGNwX2JwZl9pb2N0bFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIGB0Y3BfYnBmX2lvY3RsYCB0byBjb3JyZWN0bHkgYWNjb3VudCBmb3IgZGF0YSBpbiBgc2tfcmVjZWl2ZV9xdWV1ZWAgd2hlbiBoYW5kbGluZyBgU0lPQ0lOUWAgKEZJT05SRUFEKSBmb3IgVENQIHNvY2tldHMgaW4gYSBzb2NrbWFwIHdpdGhvdXQgYSB2ZXJkaWN0IHByb2dyYW0uIFRoaXMgaXMgZnVuY3Rpb25hbCBjb3JlIGtlcm5lbCBsb2dpYyByZWxhdGVkIHRvIEJQRiBhbmQgVENQLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkJQRl9TWVNDQUxMXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwidGNwX2JwZl9pb2N0bFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIGB0Y3BfYnBmX2lvY3RsYCB0byBjb3JyZWN0bHkgYWNjb3VudCBmb3IgZGF0YSBpbiBgc2tfcmVjZWl2ZV9xdWV1ZWAgd2hlbiBoYW5kbGluZyBgU0lPQ0lOUWAgKEZJT05SRUFEKSBmb3IgVENQIHNvY2tldHMgaW4gYSBzb2NrbWFwIHdpdGhvdXQgYSB2ZXJkaWN0IHByb2dyYW0uIFRoaXMgaXMgZnVuY3Rpb25hbCBjb3JlIGtlcm5lbCBsb2dpYyByZWxhdGVkIHRvIEJQRiBhbmQgVENQLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+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-workflowjrfc4[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-09 10:39:26 +0000 UTC FinishedAt: 2026-07-09 10:55:34 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "bpf-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git", "commit_hash": "d2c9a99135da931377240942d44f3dea104cedb8", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BPF_SYSCALL" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "bpf-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git", "commit_hash": "d2c9a99135da931377240942d44f3dea104cedb8", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BPF_SYSCALL" ], "series_id": "5320af87-e9bc-400b-baae-e44f813ea9cc" }, "track": "KASAN", "fuzz": { "focus": [ "bpf", "net" ], "focus_symbols": [ "tcp_bpf_ioctl" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db", "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+CgkJCTx0ZD4yMDI2LzA3LzA5IDEwOjUyPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+M208L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JQRl9TWVNDQUxMJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7dGNwX2JwZl9pb2N0bCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBgdGNwX2JwZl9pb2N0bGAgdG8gY29ycmVjdGx5IGFjY291bnQgZm9yIGRhdGEgaW4gYHNrX3JlY2VpdmVfcXVldWVgIHdoZW4gaGFuZGxpbmcgYFNJT0NJTlFgIChGSU9OUkVBRCkgZm9yIFRDUCBzb2NrZXRzIGluIGEgc29ja21hcCB3aXRob3V0IGEgdmVyZGljdCBwcm9ncmFtLiBUaGlzIGlzIGZ1bmN0aW9uYWwgY29yZSBrZXJuZWwgbG9naWMgcmVsYXRlZCB0byBCUEYgYW5kIFRDUC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wOSAxMDo1MjwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDUyZTNlMzdiNmFmMjEyMmQxZjE2ZjdlYzRjZGUyMmYwMjIyNmY5MDlcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVGh1IEp1bCA5IDEwOjUyOjE4IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvc2ttc2cuaCBiL2luY2x1ZGUvbGludXgvc2ttc2cuaFxuaW5kZXggYTg1NTM0MDFiMWM5M2YuLmQ1ZTM1ZjI0NzM4ZDVjIDEwMDY0NFxuLS0tIGEvaW5jbHVkZS9saW51eC9za21zZy5oXG4mIzQzOyYjNDM7JiM0MzsgYi9pbmNsdWRlL2xpbnV4L3NrbXNnLmhcbkBAIC01NTEsMjAgJiM0Mzs1NTEsNiBAQCBzdGF0aWMgaW5saW5lIHZvaWQgcHNvY2tfcHJvZ3NfZHJvcChzdHJ1Y3Qgc2tfcHNvY2tfcHJvZ3MgKnByb2dzKVxuIFx0cHNvY2tfc2V0X3Byb2coXHUwMDI2cHJvZ3MtXHUwMDNlc2tiX3ZlcmRpY3QsIE5VTEwpO1xuIH1cbiBcbi0vKiBmb3IgdGNwIG9ubHksIHNrIGlzIGxvY2tlZCAqL1xuLXN0YXRpYyBpbmxpbmUgc3NpemVfdCBza19wc29ja19tc2dfaW5xKHN0cnVjdCBzb2NrICpzaylcbi17XG4tXHRzdHJ1Y3Qgc2tfcHNvY2sgKnBzb2NrO1xuLVx0c3NpemVfdCBpbnEgPSAwO1xuLVxuLVx0cHNvY2sgPSBza19wc29ja19nZXQoc2spO1xuLVx0aWYgKGxpa2VseShwc29jaykpIHtcbi1cdFx0aW5xID0gc2tfcHNvY2tfZ2V0X21zZ19sZW5fbm9sb2NrKHBzb2NrKTtcbi1cdFx0c2tfcHNvY2tfcHV0KHNrLCBwc29jayk7XG4tXHR9XG4tXHRyZXR1cm4gaW5xO1xuLX1cbi1cbiAvKiBmb3IgdWRwIG9ubHksIHNrIGlzIG5vdCBsb2NrZWQgKi9cbiBzdGF0aWMgaW5saW5lIHNzaXplX3Qgc2tfbXNnX2ZpcnN0X2xlbihzdHJ1Y3Qgc29jayAqc2spXG4ge1xuZGlmZiAtLWdpdCBhL25ldC9pcHY0L3RjcF9icGYuYyBiL25ldC9pcHY0L3RjcF9icGYuY1xuaW5kZXggY2MwYmQ3M2YzNmI2ZDYuLjhlOTA1YjUwZGVhZGJlIDEwMDY0NFxuLS0tIGEvbmV0L2lwdjQvdGNwX2JwZi5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvaXB2NC90Y3BfYnBmLmNcbkBAIC0zMzQsNiAmIzQzOzMzNCw3IEBAIHN0YXRpYyBpbnQgdGNwX2JwZl9yZWN2bXNnX3BhcnNlcihzdHJ1Y3Qgc29jayAqc2ssXG4gXG4gc3RhdGljIGludCB0Y3BfYnBmX2lvY3RsKHN0cnVjdCBzb2NrICpzaywgaW50IGNtZCwgaW50ICprYXJnKVxuIHtcbiYjNDM7XHRzdHJ1Y3Qgc2tfcHNvY2sgKnBzb2NrO1xuIFx0Ym9vbCBzbG93O1xuIFxuIFx0aWYgKGNtZCAhPSBTSU9DSU5RKVxuQEAgLTM0NCw3ICYjNDM7MzQ1LDIxIEBAIHN0YXRpYyBpbnQgdGNwX2JwZl9pb2N0bChzdHJ1Y3Qgc29jayAqc2ssIGludCBjbWQsIGludCAqa2FyZylcbiBcdFx0cmV0dXJuIC1FSU5WQUw7XG4gXG4gXHRzbG93ID0gbG9ja19zb2NrX2Zhc3Qoc2spO1xuLVx0KmthcmcgPSBza19wc29ja19tc2dfaW5xKHNrKTtcbiYjNDM7XHRwc29jayA9IHNrX3Bzb2NrX2dldChzayk7XG4mIzQzO1x0aWYgKHVubGlrZWx5KCFwc29jaykpIHtcbiYjNDM7XHRcdHVubG9ja19zb2NrX2Zhc3Qoc2ssIHNsb3cpO1xuJiM0MztcdFx0cmV0dXJuIHRjcF9pb2N0bChzaywgY21kLCBrYXJnKTtcbiYjNDM7XHR9XG4mIzQzO1x0KmthcmcgPSBza19wc29ja19nZXRfbXNnX2xlbl9ub2xvY2socHNvY2spO1xuJiM0MztcdC8qIFdpdGhvdXQgYSB2ZXJkaWN0IHByb2dyYW0sIGluZ3Jlc3MgZGF0YSBpcyBuZXZlciBkaXZlcnRlZCB0b1xuJiM0MztcdCAqIGluZ3Jlc3NfbXNnOiBpdCBzdGF5cyBpbiBza19yZWNlaXZlX3F1ZXVlIGFuZCBpcyByZWFkIHRocm91Z2hcbiYjNDM7XHQgKiB0aGUgZmFsbGJhY2sgdG8gdGNwX3JlY3Ztc2coKSwgc28gYWNjb3VudCBmb3IgaXQgbGlrZVxuJiM0MztcdCAqIHRjcF9pb2N0bCgpIGRvZXMuXG4mIzQzO1x0ICovXG4mIzQzO1x0aWYgKCFSRUFEX09OQ0UocHNvY2stXHUwMDNlcHJvZ3Muc3RyZWFtX3ZlcmRpY3QpIFx1MDAyNlx1MDAyNlxuJiM0MztcdCAgICAhUkVBRF9PTkNFKHBzb2NrLVx1MDAzZXByb2dzLnNrYl92ZXJkaWN0KSlcbiYjNDM7XHRcdCprYXJnICYjNDM7PSB0Y3BfaW5xKHNrKTtcbiYjNDM7XHRza19wc29ja19wdXQoc2ssIHBzb2NrKTtcbiBcdHVubG9ja19zb2NrX2Zhc3Qoc2ssIHNsb3cpO1xuIFxuIFx0cmV0dXJuIDA7XG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvc29ja21hcF9iYXNpYy5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvc29ja21hcF9iYXNpYy5jXG5pbmRleCBjYjMyMjk3MTFmOTNhMy4uZjBmMzY4MjAxZGRhZGIgMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9zb2NrbWFwX2Jhc2ljLmNcbiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3NvY2ttYXBfYmFzaWMuY1xuQEAgLTEzNzMsNiAmIzQzOzEzNzMsNDMgQEAgc3RhdGljIHZvaWQgdGVzdF9zb2NrbWFwX211bHRpX2NoYW5uZWxzKGludCBzb3R5cGUpXG4gXHR0ZXN0X3NvY2ttYXBfcGFzc19wcm9nX19kZXN0cm95KHNrZWwpO1xuIH1cbiBcbiYjNDM7LyogQSBzb2NrZXQgaW4gYSBzb2NrbWFwIHdpdGhvdXQgYSB2ZXJkaWN0IHByb2dyYW0ga2VlcHMgaXRzIGluZ3Jlc3MgZGF0YVxuJiM0MzsgKiBpbiBza19yZWNlaXZlX3F1ZXVlOiBGSU9OUkVBRCBtdXN0IGFjY291bnQgZm9yIGl0LlxuJiM0MzsgKi9cbiYjNDM7c3RhdGljIHZvaWQgdGVzdF9zb2NrbWFwX25vX3ZlcmRpY3RfZmlvbnJlYWQodm9pZClcbiYjNDM7e1xuJiM0MztcdGludCBlcnIsIG1hcCwgemVybyA9IDAsIHNlbnQsIGF2YWlsO1xuJiM0MztcdGludCBjMCA9IC0xLCBjMSA9IC0xLCBwMCA9IC0xLCBwMSA9IC0xO1xuJiM0MztcdHN0cnVjdCB0ZXN0X3NvY2ttYXBfcGFzc19wcm9nICpza2VsO1xuJiM0MztcdGNoYXIgYnVmWzI1Nl0gPSBcJiMzNDswMTIzNDU2Nzg5XCYjMzQ7O1xuJiM0MztcbiYjNDM7XHRza2VsID0gdGVzdF9zb2NrbWFwX3Bhc3NfcHJvZ19fb3Blbl9hbmRfbG9hZCgpO1xuJiM0MztcdGlmICghQVNTRVJUX09LX1BUUihza2VsLCBcJiMzNDtvcGVuX2FuZF9sb2FkXCYjMzQ7KSlcbiYjNDM7XHRcdHJldHVybjtcbiYjNDM7XHRtYXAgPSBicGZfbWFwX19mZChza2VsLVx1MDAzZW1hcHMuc29ja19tYXBfcngpO1xuJiM0MztcbiYjNDM7XHRlcnIgPSBjcmVhdGVfc29ja2V0X3BhaXJzKEFGX0lORVQsIFNPQ0tfU1RSRUFNLCBcdTAwMjZjMCwgXHUwMDI2YzEsIFx1MDAyNnAwLCBcdTAwMjZwMSk7XG4mIzQzO1x0aWYgKCFBU1NFUlRfT0soZXJyLCBcJiMzNDtjcmVhdGVfc29ja2V0X3BhaXJzKClcJiMzNDspKVxuJiM0MztcdFx0Z290byBvdXQ7XG4mIzQzO1xuJiM0MztcdGVyciA9IGJwZl9tYXBfdXBkYXRlX2VsZW0obWFwLCBcdTAwMjZ6ZXJvLCBcdTAwMjZjMSwgQlBGX05PRVhJU1QpO1xuJiM0MztcdGlmICghQVNTRVJUX09LKGVyciwgXCYjMzQ7YnBmX21hcF91cGRhdGVfZWxlbShjMSlcJiMzNDspKVxuJiM0MztcdFx0Z290byBvdXRfY2xvc2U7XG4mIzQzO1xuJiM0MztcdHNlbnQgPSB4c2VuZChwMSwgXHUwMDI2YnVmLCBzaXplb2YoYnVmKSwgMCk7XG4mIzQzO1x0QVNTRVJUX0VRKHNlbnQsIHNpemVvZihidWYpLCBcJiMzNDt4c2VuZChwMSlcJiMzNDspO1xuJiM0MztcdGF2YWlsID0gd2FpdF9mb3JfZmlvbnJlYWQoYzEsIHNpemVvZihidWYpLCBJT19USU1FT1VUX1NFQyk7XG4mIzQzO1x0QVNTRVJUX0VRKGF2YWlsLCBzaXplb2YoYnVmKSwgXCYjMzQ7aW9jdGwoRklPTlJFQUQpXCYjMzQ7KTtcbiYjNDM7XG4mIzQzO291dF9jbG9zZTpcbiYjNDM7XHRjbG9zZShjMCk7XG4mIzQzO1x0Y2xvc2UocDApO1xuJiM0MztcdGNsb3NlKGMxKTtcbiYjNDM7XHRjbG9zZShwMSk7XG4mIzQzO291dDpcbiYjNDM7XHR0ZXN0X3NvY2ttYXBfcGFzc19wcm9nX19kZXN0cm95KHNrZWwpO1xuJiM0Mzt9XG4mIzQzO1xuIHZvaWQgdGVzdF9zb2NrbWFwX2Jhc2ljKHZvaWQpXG4ge1xuIFx0aWYgKHRlc3RfX3N0YXJ0X3N1YnRlc3QoXCYjMzQ7c29ja21hcCBjcmVhdGVfdXBkYXRlX2ZyZWVcJiMzNDspKVxuQEAgLTE0MTUsNiAmIzQzOzE0NTIsOCBAQCB2b2lkIHRlc3Rfc29ja21hcF9iYXNpYyh2b2lkKVxuIFx0XHR0ZXN0X3NvY2ttYXBfc2tiX3ZlcmRpY3Rfc2h1dGRvd24oKTtcbiBcdGlmICh0ZXN0X19zdGFydF9zdWJ0ZXN0KFwmIzM0O3NvY2ttYXAgc2tiX3ZlcmRpY3QgZmlvbnJlYWRcJiMzNDspKVxuIFx0XHR0ZXN0X3NvY2ttYXBfc2tiX3ZlcmRpY3RfZmlvbnJlYWQodHJ1ZSk7XG4mIzQzO1x0aWYgKHRlc3RfX3N0YXJ0X3N1YnRlc3QoXCYjMzQ7c29ja21hcCBub192ZXJkaWN0IGZpb25yZWFkXCYjMzQ7KSlcbiYjNDM7XHRcdHRlc3Rfc29ja21hcF9ub192ZXJkaWN0X2Zpb25yZWFkKCk7XG4gXHRpZiAodGVzdF9fc3RhcnRfc3VidGVzdChcJiMzNDtzb2NrbWFwIHNrYl92ZXJkaWN0IGZpb25yZWFkIG9uIGRyb3BcJiMzNDspKVxuIFx0XHR0ZXN0X3NvY2ttYXBfc2tiX3ZlcmRpY3RfZmlvbnJlYWQoZmFsc2UpO1xuIFx0aWYgKHRlc3RfX3N0YXJ0X3N1YnRlc3QoXCYjMzQ7c29ja21hcCBza2JfdmVyZGljdCBjaGFuZ2UgdGFpbFwmIzM0OykpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDkgMTA6NTI8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+M208L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7QlBGX1NZU0NBTEwmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDt0Y3BfYnBmX2lvY3RsJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIGB0Y3BfYnBmX2lvY3RsYCB0byBjb3JyZWN0bHkgYWNjb3VudCBmb3IgZGF0YSBpbiBgc2tfcmVjZWl2ZV9xdWV1ZWAgd2hlbiBoYW5kbGluZyBgU0lPQ0lOUWAgKEZJT05SRUFEKSBmb3IgVENQIHNvY2tldHMgaW4gYSBzb2NrbWFwIHdpdGhvdXQgYSB2ZXJkaWN0IHByb2dyYW0uIFRoaXMgaXMgZnVuY3Rpb25hbCBjb3JlIGtlcm5lbCBsb2dpYyByZWxhdGVkIHRvIEJQRiBhbmQgVENQLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdAogICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksCiAgIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCA1MmUzZTM3YjZhZjIxMjJkMWYxNmY3ZWM0Y2RlMjJmMDIyMjZmOTA5CkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFRodSBKdWwgOSAxMDo1MjoxOCAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvc2ttc2cuaCBiL2luY2x1ZGUvbGludXgvc2ttc2cuaAppbmRleCBhODU1MzQwMWIxYzkzZi4uZDVlMzVmMjQ3MzhkNWMgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbGludXgvc2ttc2cuaAomIzQzOyYjNDM7JiM0MzsgYi9pbmNsdWRlL2xpbnV4L3NrbXNnLmgKQEAgLTU1MSwyMCAmIzQzOzU1MSw2IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBwc29ja19wcm9nc19kcm9wKHN0cnVjdCBza19wc29ja19wcm9ncyAqcHJvZ3MpCiAJcHNvY2tfc2V0X3Byb2coJmFtcDtwcm9ncy0mZ3Q7c2tiX3ZlcmRpY3QsIE5VTEwpOwogfQogCi0vKiBmb3IgdGNwIG9ubHksIHNrIGlzIGxvY2tlZCAqLwotc3RhdGljIGlubGluZSBzc2l6ZV90IHNrX3Bzb2NrX21zZ19pbnEoc3RydWN0IHNvY2sgKnNrKQotewotCXN0cnVjdCBza19wc29jayAqcHNvY2s7Ci0Jc3NpemVfdCBpbnEgPSAwOwotCi0JcHNvY2sgPSBza19wc29ja19nZXQoc2spOwotCWlmIChsaWtlbHkocHNvY2spKSB7Ci0JCWlucSA9IHNrX3Bzb2NrX2dldF9tc2dfbGVuX25vbG9jayhwc29jayk7Ci0JCXNrX3Bzb2NrX3B1dChzaywgcHNvY2spOwotCX0KLQlyZXR1cm4gaW5xOwotfQotCiAvKiBmb3IgdWRwIG9ubHksIHNrIGlzIG5vdCBsb2NrZWQgKi8KIHN0YXRpYyBpbmxpbmUgc3NpemVfdCBza19tc2dfZmlyc3RfbGVuKHN0cnVjdCBzb2NrICpzaykKIHsKZGlmZiAtLWdpdCBhL25ldC9pcHY0L3RjcF9icGYuYyBiL25ldC9pcHY0L3RjcF9icGYuYwppbmRleCBjYzBiZDczZjM2YjZkNi4uOGU5MDViNTBkZWFkYmUgMTAwNjQ0Ci0tLSBhL25ldC9pcHY0L3RjcF9icGYuYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvaXB2NC90Y3BfYnBmLmMKQEAgLTMzNCw2ICYjNDM7MzM0LDcgQEAgc3RhdGljIGludCB0Y3BfYnBmX3JlY3Ztc2dfcGFyc2VyKHN0cnVjdCBzb2NrICpzaywKIAogc3RhdGljIGludCB0Y3BfYnBmX2lvY3RsKHN0cnVjdCBzb2NrICpzaywgaW50IGNtZCwgaW50ICprYXJnKQogewomIzQzOwlzdHJ1Y3Qgc2tfcHNvY2sgKnBzb2NrOwogCWJvb2wgc2xvdzsKIAogCWlmIChjbWQgIT0gU0lPQ0lOUSkKQEAgLTM0NCw3ICYjNDM7MzQ1LDIxIEBAIHN0YXRpYyBpbnQgdGNwX2JwZl9pb2N0bChzdHJ1Y3Qgc29jayAqc2ssIGludCBjbWQsIGludCAqa2FyZykKIAkJcmV0dXJuIC1FSU5WQUw7CiAKIAlzbG93ID0gbG9ja19zb2NrX2Zhc3Qoc2spOwotCSprYXJnID0gc2tfcHNvY2tfbXNnX2lucShzayk7CiYjNDM7CXBzb2NrID0gc2tfcHNvY2tfZ2V0KHNrKTsKJiM0MzsJaWYgKHVubGlrZWx5KCFwc29jaykpIHsKJiM0MzsJCXVubG9ja19zb2NrX2Zhc3Qoc2ssIHNsb3cpOwomIzQzOwkJcmV0dXJuIHRjcF9pb2N0bChzaywgY21kLCBrYXJnKTsKJiM0MzsJfQomIzQzOwkqa2FyZyA9IHNrX3Bzb2NrX2dldF9tc2dfbGVuX25vbG9jayhwc29jayk7CiYjNDM7CS8qIFdpdGhvdXQgYSB2ZXJkaWN0IHByb2dyYW0sIGluZ3Jlc3MgZGF0YSBpcyBuZXZlciBkaXZlcnRlZCB0bwomIzQzOwkgKiBpbmdyZXNzX21zZzogaXQgc3RheXMgaW4gc2tfcmVjZWl2ZV9xdWV1ZSBhbmQgaXMgcmVhZCB0aHJvdWdoCiYjNDM7CSAqIHRoZSBmYWxsYmFjayB0byB0Y3BfcmVjdm1zZygpLCBzbyBhY2NvdW50IGZvciBpdCBsaWtlCiYjNDM7CSAqIHRjcF9pb2N0bCgpIGRvZXMuCiYjNDM7CSAqLwomIzQzOwlpZiAoIVJFQURfT05DRShwc29jay0mZ3Q7cHJvZ3Muc3RyZWFtX3ZlcmRpY3QpICZhbXA7JmFtcDsKJiM0MzsJICAgICFSRUFEX09OQ0UocHNvY2stJmd0O3Byb2dzLnNrYl92ZXJkaWN0KSkKJiM0MzsJCSprYXJnICYjNDM7PSB0Y3BfaW5xKHNrKTsKJiM0MzsJc2tfcHNvY2tfcHV0KHNrLCBwc29jayk7CiAJdW5sb2NrX3NvY2tfZmFzdChzaywgc2xvdyk7CiAKIAlyZXR1cm4gMDsKZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3NvY2ttYXBfYmFzaWMuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3NvY2ttYXBfYmFzaWMuYwppbmRleCBjYjMyMjk3MTFmOTNhMy4uZjBmMzY4MjAxZGRhZGIgMTAwNjQ0Ci0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3NvY2ttYXBfYmFzaWMuYwomIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9zb2NrbWFwX2Jhc2ljLmMKQEAgLTEzNzMsNiAmIzQzOzEzNzMsNDMgQEAgc3RhdGljIHZvaWQgdGVzdF9zb2NrbWFwX211bHRpX2NoYW5uZWxzKGludCBzb3R5cGUpCiAJdGVzdF9zb2NrbWFwX3Bhc3NfcHJvZ19fZGVzdHJveShza2VsKTsKIH0KIAomIzQzOy8qIEEgc29ja2V0IGluIGEgc29ja21hcCB3aXRob3V0IGEgdmVyZGljdCBwcm9ncmFtIGtlZXBzIGl0cyBpbmdyZXNzIGRhdGEKJiM0MzsgKiBpbiBza19yZWNlaXZlX3F1ZXVlOiBGSU9OUkVBRCBtdXN0IGFjY291bnQgZm9yIGl0LgomIzQzOyAqLwomIzQzO3N0YXRpYyB2b2lkIHRlc3Rfc29ja21hcF9ub192ZXJkaWN0X2Zpb25yZWFkKHZvaWQpCiYjNDM7ewomIzQzOwlpbnQgZXJyLCBtYXAsIHplcm8gPSAwLCBzZW50LCBhdmFpbDsKJiM0MzsJaW50IGMwID0gLTEsIGMxID0gLTEsIHAwID0gLTEsIHAxID0gLTE7CiYjNDM7CXN0cnVjdCB0ZXN0X3NvY2ttYXBfcGFzc19wcm9nICpza2VsOwomIzQzOwljaGFyIGJ1ZlsyNTZdID0gJiMzNDswMTIzNDU2Nzg5JiMzNDs7CiYjNDM7CiYjNDM7CXNrZWwgPSB0ZXN0X3NvY2ttYXBfcGFzc19wcm9nX19vcGVuX2FuZF9sb2FkKCk7CiYjNDM7CWlmICghQVNTRVJUX09LX1BUUihza2VsLCAmIzM0O29wZW5fYW5kX2xvYWQmIzM0OykpCiYjNDM7CQlyZXR1cm47CiYjNDM7CW1hcCA9IGJwZl9tYXBfX2ZkKHNrZWwtJmd0O21hcHMuc29ja19tYXBfcngpOwomIzQzOwomIzQzOwllcnIgPSBjcmVhdGVfc29ja2V0X3BhaXJzKEFGX0lORVQsIFNPQ0tfU1RSRUFNLCAmYW1wO2MwLCAmYW1wO2MxLCAmYW1wO3AwLCAmYW1wO3AxKTsKJiM0MzsJaWYgKCFBU1NFUlRfT0soZXJyLCAmIzM0O2NyZWF0ZV9zb2NrZXRfcGFpcnMoKSYjMzQ7KSkKJiM0MzsJCWdvdG8gb3V0OwomIzQzOwomIzQzOwllcnIgPSBicGZfbWFwX3VwZGF0ZV9lbGVtKG1hcCwgJmFtcDt6ZXJvLCAmYW1wO2MxLCBCUEZfTk9FWElTVCk7CiYjNDM7CWlmICghQVNTRVJUX09LKGVyciwgJiMzNDticGZfbWFwX3VwZGF0ZV9lbGVtKGMxKSYjMzQ7KSkKJiM0MzsJCWdvdG8gb3V0X2Nsb3NlOwomIzQzOwomIzQzOwlzZW50ID0geHNlbmQocDEsICZhbXA7YnVmLCBzaXplb2YoYnVmKSwgMCk7CiYjNDM7CUFTU0VSVF9FUShzZW50LCBzaXplb2YoYnVmKSwgJiMzNDt4c2VuZChwMSkmIzM0Oyk7CiYjNDM7CWF2YWlsID0gd2FpdF9mb3JfZmlvbnJlYWQoYzEsIHNpemVvZihidWYpLCBJT19USU1FT1VUX1NFQyk7CiYjNDM7CUFTU0VSVF9FUShhdmFpbCwgc2l6ZW9mKGJ1ZiksICYjMzQ7aW9jdGwoRklPTlJFQUQpJiMzNDspOwomIzQzOwomIzQzO291dF9jbG9zZToKJiM0MzsJY2xvc2UoYzApOwomIzQzOwljbG9zZShwMCk7CiYjNDM7CWNsb3NlKGMxKTsKJiM0MzsJY2xvc2UocDEpOwomIzQzO291dDoKJiM0MzsJdGVzdF9zb2NrbWFwX3Bhc3NfcHJvZ19fZGVzdHJveShza2VsKTsKJiM0Mzt9CiYjNDM7CiB2b2lkIHRlc3Rfc29ja21hcF9iYXNpYyh2b2lkKQogewogCWlmICh0ZXN0X19zdGFydF9zdWJ0ZXN0KCYjMzQ7c29ja21hcCBjcmVhdGVfdXBkYXRlX2ZyZWUmIzM0OykpCkBAIC0xNDE1LDYgJiM0MzsxNDUyLDggQEAgdm9pZCB0ZXN0X3NvY2ttYXBfYmFzaWModm9pZCkKIAkJdGVzdF9zb2NrbWFwX3NrYl92ZXJkaWN0X3NodXRkb3duKCk7CiAJaWYgKHRlc3RfX3N0YXJ0X3N1YnRlc3QoJiMzNDtzb2NrbWFwIHNrYl92ZXJkaWN0IGZpb25yZWFkJiMzNDspKQogCQl0ZXN0X3NvY2ttYXBfc2tiX3ZlcmRpY3RfZmlvbnJlYWQodHJ1ZSk7CiYjNDM7CWlmICh0ZXN0X19zdGFydF9zdWJ0ZXN0KCYjMzQ7c29ja21hcCBub192ZXJkaWN0IGZpb25yZWFkJiMzNDspKQomIzQzOwkJdGVzdF9zb2NrbWFwX25vX3ZlcmRpY3RfZmlvbnJlYWQoKTsKIAlpZiAodGVzdF9fc3RhcnRfc3VidGVzdCgmIzM0O3NvY2ttYXAgc2tiX3ZlcmRpY3QgZmlvbnJlYWQgb24gZHJvcCYjMzQ7KSkKIAkJdGVzdF9zb2NrbWFwX3NrYl92ZXJkaWN0X2Zpb25yZWFkKGZhbHNlKTsKIAlpZiAodGVzdF9fc3RhcnRfc3VidGVzdCgmIzM0O3NvY2ttYXAgc2tiX3ZlcmRpY3QgY2hhbmdlIHRhaWwmIzM0OykpCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA5IDEwOjUyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMzNjIKCQkJCQkJCW91dHB1dDogMjkKCQkJCQkJCXRob3VnaHRzOiAyMjMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBUQ1AgQlBGIElvY3RsIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGZvciBgdGNwX2JwZl9pb2N0bGAgd2l0aGluIGBuZXQvaXB2NC90Y3BfYnBmLmNgLiBJdCYjMzk7cyBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkLCBidXQgaXQgZGVhbHMgd2l0aCBhIGNyaXRpY2FsIGFyZWE6IGhvdyBgU0lPQ0lOUWAgKG9yIGBGSU9OUkVBRGAg4oCTIHN0YW5kYXJkIHN0dWZmLCByZWFsbHkpIGJlaGF2ZXMgZm9yIFRDUCBzb2NrZXRzIHRoYXQgYXJlIGFsc28gb3BlcmF0aW5nIHdpdGhpbiBhIHNvY2ttYXAgY29udGV4dCwgdXNpbmcgQlBGLiBUaGUgY29yZSBjaGFuZ2UgaXMgdGhpczogaWYgdGhlcmUgaXNuJiMzOTt0IGEgdmVyZGljdCBwcm9ncmFtIGluIHBsYXksIHRoZSBpbXBsZW1lbnRhdGlvbiBoYXMgYmVlbiB1cGRhdGVkIHRvIGFjY291bnQgZm9yIG5vdCBvbmx5IHRoZSBsZW5ndGggb2YgbWVzc2FnZXMgb24gdGhlIGBza19yZWNlaXZlX3F1ZXVlYCAoYHRjcF9pbnEoc2spYCksIGJ1dCBhbHNvIGBza19wc29ja19nZXRfbXNnX2xlbl9ub2xvY2socHNvY2spYC4gVGhpcyBzZWVtcyBsaWtlIGEgcmVhc29uYWJsZSBhZGp1c3RtZW50IHRvIGVuc3VyZSBhY2N1cmF0ZSByZXBvcnRpbmcgb2YgcXVldWVkIGRhdGEuCgpJIHNlZSB0aGF0IGBza19wc29ja19tc2dfaW5xYCBoYXMgYmVlbiByZW1vdmVkIGZyb20gYGluY2x1ZGUvbGludXgvc2ttc2cuaGAsIGFuZCB0aGUgbG9naWMgaXMgbm93IGVtYmVkZGVkIGRpcmVjdGx5IHdpdGhpbiBgdGNwX2JwZl9pb2N0bGAuIFRoaXMgaXMgZmluZTsgSSB3b3VsZG4mIzM5O3QgdXN1YWxseSBleHBlY3QgYSBkZWRpY2F0ZWQgc3ltYm9sIGZvciB0aGlzIGtpbmQgb2YgZnVuY3Rpb25hbGl0eSBpbiBhIGhlYWRlciBmaWxlLiBUaGUgcGF0Y2ggbW92ZXMgdGhlIGNvcmUgbG9naWMgaW50byBhIG1vcmUgYXBwcm9wcmlhdGUgbG9jYXRpb24gaW4gdGhlIGtlcm5lbC4KCkdpdmVuIHRoZSBpbXBvcnRhbmNlIG9mIHRoaXMgcGF0Y2gsIEkgc2hvdWxkIGNoZWNrIHRoZSByZWxldmFudCBrZXJuZWwgY29uZmlncyByZXF1aXJlZCBmb3IgYG5ldC9pcHY0L3RjcF9icGYuY2AgYW5kIG1ha2Ugc3VyZSB0aGUgbmV3IGZ1bmN0aW9uYWxpdHkgaXMgZ29pbmcgdG8gYmUgYXZhaWxhYmxlLiBXZSBkb24mIzM5O3Qgd2FudCB0byBnZXQgdGhpcyBtaXNzZWQgYnkgYSBtaXNjb25maWd1cmVkIGJ1aWxkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA5IDEwOjUyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3RjcF9icGYmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvaXB2NC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L2lwdjQvTWFrZWZpbGU9NjI9b2JqLSQoQ09ORklHX1RDUF9DT05HX0lMTElOT0lTKSAmIzQzOz0gdGNwX2lsbGlub2lzLm9cbm5ldC9pcHY0L01ha2VmaWxlOjYzOm9iai0kKENPTkZJR19ORVRfU09DS19NU0cpICYjNDM7PSB0Y3BfYnBmLm9cbm5ldC9pcHY0L01ha2VmaWxlLTY0LW9iai0kKENPTkZJR19CUEZfU1lTQ0FMTCkgJiM0Mzs9IHVkcF9icGYub1xuLS1cbm5ldC9pcHY0L3RjcC5jPTQ0ODE9aW50IGRvX3RjcF9nZXRzb2Nrb3B0KHN0cnVjdCBzb2NrICpzaywgaW50IGxldmVsLFxuLS1cbm5ldC9pcHY0L3RjcC5jLTQ4NDUtXG5uZXQvaXB2NC90Y3AuYzo0ODQ2OmJvb2wgdGNwX2JwZl9ieXBhc3NfZ2V0c29ja29wdChpbnQgbGV2ZWwsIGludCBvcHRuYW1lKVxubmV0L2lwdjQvdGNwLmMtNDg0Ny17XG4tLVxubmV0L2lwdjQvdGNwX2JwZi5jPTMzPXN0YXRpYyBpbnQgYnBmX3RjcF9pbmdyZXNzKHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX3Bzb2NrICpwc29jayxcbi0tXG5uZXQvaXB2NC90Y3BfYnBmLmMtOTAtXG5uZXQvaXB2NC90Y3BfYnBmLmM6OTE6c3RhdGljIGludCB0Y3BfYnBmX3B1c2goc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3Qgc2tfbXNnICptc2csIHUzMiBhcHBseV9ieXRlcyxcbm5ldC9pcHY0L3RjcF9icGYuYy05Mi1cdFx0XHRpbnQgZmxhZ3MsIGJvb2wgdW5jaGFyZ2UpXG4tLVxubmV0L2lwdjQvdGNwX2JwZi5jLTE1Mi1cbm5ldC9pcHY0L3RjcF9icGYuYzoxNTM6c3RhdGljIGludCB0Y3BfYnBmX3B1c2hfbG9ja2VkKHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX21zZyAqbXNnLFxubmV0L2lwdjQvdGNwX2JwZi5jLTE1NC1cdFx0XHQgICAgICAgdTMyIGFwcGx5X2J5dGVzLCBpbnQgZmxhZ3MsIGJvb2wgdW5jaGFyZ2UpXG4tLVxubmV0L2lwdjQvdGNwX2JwZi5jLTE1OC1cdGxvY2tfc29jayhzayk7XG5uZXQvaXB2NC90Y3BfYnBmLmM6MTU5Olx0cmV0ID0gdGNwX2JwZl9wdXNoKHNrLCBtc2csIGFwcGx5X2J5dGVzLCBmbGFncywgdW5jaGFyZ2UpO1xubmV0L2lwdjQvdGNwX2JwZi5jLTE2MC1cdHJlbGVhc2Vfc29jayhzayk7XG4tLVxubmV0L2lwdjQvdGNwX2JwZi5jLTE2My1cbm5ldC9pcHY0L3RjcF9icGYuYzoxNjQ6aW50IHRjcF9icGZfc2VuZG1zZ19yZWRpcihzdHJ1Y3Qgc29jayAqc2ssIGJvb2wgaW5ncmVzcyxcbm5ldC9pcHY0L3RjcF9icGYuYy0xNjUtXHRcdFx0ICBzdHJ1Y3Qgc2tfbXNnICptc2csIHUzMiBieXRlcywgaW50IGZsYWdzKVxuLS1cbm5ldC9pcHY0L3RjcF9icGYuYy0xNzMtXHRyZXQgPSBpbmdyZXNzID8gYnBmX3RjcF9pbmdyZXNzKHNrLCBwc29jaywgbXNnLCBieXRlcykgOlxubmV0L2lwdjQvdGNwX2JwZi5jOjE3NDpcdFx0XHR0Y3BfYnBmX3B1c2hfbG9ja2VkKHNrLCBtc2csIGJ5dGVzLCBmbGFncywgZmFsc2UpO1xubmV0L2lwdjQvdGNwX2JwZi5jLTE3NS1cdHNrX3Bzb2NrX3B1dChzaywgcHNvY2spO1xuLS1cbm5ldC9pcHY0L3RjcF9icGYuYy0xNzctfVxubmV0L2lwdjQvdGNwX2JwZi5jOjE3ODpFWFBPUlRfU1lNQk9MX0dQTCh0Y3BfYnBmX3NlbmRtc2dfcmVkaXIpO1xubmV0L2lwdjQvdGNwX2JwZi5jLTE3OS1cbi0tXG5uZXQvaXB2NC90Y3BfYnBmLmM9MjAzPXN0YXRpYyBib29sIGlzX25leHRfbXNnX2ZpbihzdHJ1Y3Qgc2tfcHNvY2sgKnBzb2NrKVxuLS1cbm5ldC9pcHY0L3RjcF9icGYuYy0yMjAtXG5uZXQvaXB2NC90Y3BfYnBmLmM6MjIxOnN0YXRpYyBpbnQgdGNwX2JwZl9yZWN2bXNnX3BhcnNlcihzdHJ1Y3Qgc29jayAqc2ssXG5uZXQvaXB2NC90Y3BfYnBmLmMtMjIyLVx0XHRcdFx0ICBzdHJ1Y3QgbXNnaGRyICptc2csXG4tLVxubmV0L2lwdjQvdGNwX2JwZi5jLTMzNC1cbm5ldC9pcHY0L3RjcF9icGYuYzozMzU6c3RhdGljIGludCB0Y3BfYnBmX2lvY3RsKHN0cnVjdCBzb2NrICpzaywgaW50IGNtZCwgaW50ICprYXJnKVxubmV0L2lwdjQvdGNwX2JwZi5jLTMzNi17XG4tLVxubmV0L2lwdjQvdGNwX2JwZi5jLTM2Ny1cbm5ldC9pcHY0L3RjcF9icGYuYzozNjg6c3RhdGljIGludCB0Y3BfYnBmX3JlY3Ztc2coc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3QgbXNnaGRyICptc2csIHNpemVfdCBsZW4sXG5uZXQvaXB2NC90Y3BfYnBmLmMtMzY5LVx0XHRcdCAgIGludCBmbGFncylcbi0tXG5uZXQvaXB2NC90Y3BfYnBmLmMtNDE3LVxubmV0L2lwdjQvdGNwX2JwZi5jOjQxODpzdGF0aWMgaW50IHRjcF9icGZfc2VuZF92ZXJkaWN0KHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX3Bzb2NrICpwc29jayxcbm5ldC9pcHY0L3RjcF9icGYuYy00MTktXHRcdFx0XHRzdHJ1Y3Qgc2tfbXNnICptc2csIGludCAqY29waWVkLCBpbnQgZmxhZ3MpXG4tLVxubmV0L2lwdjQvdGNwX2JwZi5jLTQ2MS1cdGNhc2UgX19TS19QQVNTOlxubmV0L2lwdjQvdGNwX2JwZi5jOjQ2MjpcdFx0cmV0ID0gdGNwX2JwZl9wdXNoKHNrLCBtc2csIHRvc2VuZCwgZmxhZ3MsIHRydWUpO1xubmV0L2lwdjQvdGNwX2JwZi5jLTQ2My1cdFx0aWYgKHVubGlrZWx5KHJldCkpIHtcbi0tXG5uZXQvaXB2NC90Y3BfYnBmLmMtNDg1LVx0XHRvcmlnc2l6ZSA9IG1zZy1cdTAwM2VzZy5zaXplO1xubmV0L2lwdjQvdGNwX2JwZi5jOjQ4NjpcdFx0cmV0ID0gdGNwX2JwZl9zZW5kbXNnX3JlZGlyKHNrX3JlZGlyLCByZWRpcl9pbmdyZXNzLFxubmV0L2lwdjQvdGNwX2JwZi5jLTQ4Ny1cdFx0XHRcdFx0ICAgIG1zZywgdG9zZW5kLCBmbGFncyk7XG4tLVxubmV0L2lwdjQvdGNwX2JwZi5jLTUzMS1cbm5ldC9pcHY0L3RjcF9icGYuYzo1MzI6c3RhdGljIGludCB0Y3BfYnBmX3NlbmRtc2coc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3QgbXNnaGRyICptc2csIHNpemVfdCBzaXplKVxubmV0L2lwdjQvdGNwX2JwZi5jLTUzMy17XG4tLVxubmV0L2lwdjQvdGNwX2JwZi5jLTU5Ny1cbm5ldC9pcHY0L3RjcF9icGYuYzo1OTg6XHRcdGVyciA9IHRjcF9icGZfc2VuZF92ZXJkaWN0KHNrLCBwc29jaywgbXNnX3R4LCBcdTAwMjZjb3BpZWQsIGZsYWdzKTtcbm5ldC9pcHY0L3RjcF9icGYuYy01OTktXHRcdGlmICh1bmxpa2VseShlcnIgXHUwMDNjIDApKVxuLS1cbm5ldC9pcHY0L3RjcF9icGYuYz02MzU9c3RhdGljIERFRklORV9TUElOTE9DSyh0Y3B2Nl9wcm90X2xvY2spO1xubmV0L2lwdjQvdGNwX2JwZi5jOjYzNjpzdGF0aWMgc3RydWN0IHByb3RvIHRjcF9icGZfcHJvdHNbVENQX0JQRl9OVU1fUFJPVFNdW1RDUF9CUEZfTlVNX0NGR1NdO1xubmV0L2lwdjQvdGNwX2JwZi5jLTYzNy1cbm5ldC9pcHY0L3RjcF9icGYuYzo2Mzg6c3RhdGljIHZvaWQgdGNwX2JwZl9yZWJ1aWxkX3Byb3RvcyhzdHJ1Y3QgcHJvdG8gcHJvdFtUQ1BfQlBGX05VTV9DRkdTXSxcbm5ldC9pcHY0L3RjcF9icGYuYy02MzktXHRcdFx0XHQgICBzdHJ1Y3QgcHJvdG8gKmJhc2UpXG4tLVxubmV0L2lwdjQvdGNwX2JwZi5jLTY0My1cdHByb3RbVENQX0JQRl9CQVNFXS5jbG9zZVx0XHQ9IHNvY2tfbWFwX2Nsb3NlO1xubmV0L2lwdjQvdGNwX2JwZi5jOjY0NDpcdHByb3RbVENQX0JQRl9CQVNFXS5yZWN2bXNnXHRcdD0gdGNwX2JwZl9yZWN2bXNnO1xubmV0L2lwdjQvdGNwX2JwZi5jLTY0NS1cdHByb3RbVENQX0JQRl9CQVNFXS5zb2NrX2lzX3JlYWRhYmxlXHQ9IHNrX21zZ19pc19yZWFkYWJsZTtcbm5ldC9pcHY0L3RjcF9icGYuYzo2NDY6XHRwcm90W1RDUF9CUEZfQkFTRV0uaW9jdGxcdFx0PSB0Y3BfYnBmX2lvY3RsO1xubmV0L2lwdjQvdGNwX2JwZi5jLTY0Ny1cbm5ldC9pcHY0L3RjcF9icGYuYy02NDgtXHRwcm90W1RDUF9CUEZfVFhdXHRcdFx0PSBwcm90W1RDUF9CUEZfQkFTRV07XG5uZXQvaXB2NC90Y3BfYnBmLmM6NjQ5Olx0cHJvdFtUQ1BfQlBGX1RYXS5zZW5kbXNnXHRcdD0gdGNwX2JwZl9zZW5kbXNnO1xubmV0L2lwdjQvdGNwX2JwZi5jLTY1MC1cbm5ldC9pcHY0L3RjcF9icGYuYy02NTEtXHRwcm90W1RDUF9CUEZfUlhdXHRcdFx0PSBwcm90W1RDUF9CUEZfQkFTRV07XG5uZXQvaXB2NC90Y3BfYnBmLmM6NjUyOlx0cHJvdFtUQ1BfQlBGX1JYXS5yZWN2bXNnXHRcdD0gdGNwX2JwZl9yZWN2bXNnX3BhcnNlcjtcbm5ldC9pcHY0L3RjcF9icGYuYy02NTMtXG5uZXQvaXB2NC90Y3BfYnBmLmMtNjU0LVx0cHJvdFtUQ1BfQlBGX1RYUlhdXHRcdFx0PSBwcm90W1RDUF9CUEZfVFhdO1xubmV0L2lwdjQvdGNwX2JwZi5jOjY1NTpcdHByb3RbVENQX0JQRl9UWFJYXS5yZWN2bXNnXHRcdD0gdGNwX2JwZl9yZWN2bXNnX3BhcnNlcjtcbm5ldC9pcHY0L3RjcF9icGYuYy02NTYtfVxubmV0L2lwdjQvdGNwX2JwZi5jLTY1Ny1cbm5ldC9pcHY0L3RjcF9icGYuYzo2NTg6c3RhdGljIHZvaWQgdGNwX2JwZl9jaGVja192Nl9uZWVkc19yZWJ1aWxkKHN0cnVjdCBwcm90byAqb3BzKVxubmV0L2lwdjQvdGNwX2JwZi5jLTY1OS17XG4tLVxubmV0L2lwdjQvdGNwX2JwZi5jLTY2Mi1cdFx0aWYgKGxpa2VseShvcHMgIT0gdGNwdjZfcHJvdF9zYXZlZCkpIHtcbm5ldC9pcHY0L3RjcF9icGYuYzo2NjM6XHRcdFx0dGNwX2JwZl9yZWJ1aWxkX3Byb3Rvcyh0Y3BfYnBmX3Byb3RzW1RDUF9CUEZfSVBWNl0sIG9wcyk7XG5uZXQvaXB2NC90Y3BfYnBmLmMtNjY0LVx0XHRcdHNtcF9zdG9yZV9yZWxlYXNlKFx1MDAyNnRjcHY2X3Byb3Rfc2F2ZWQsIG9wcyk7XG4tLVxubmV0L2lwdjQvdGNwX2JwZi5jLTY2OS1cbm5ldC9pcHY0L3RjcF9icGYuYzo2NzA6c3RhdGljIGludCBfX2luaXQgdGNwX2JwZl92NF9idWlsZF9wcm90byh2b2lkKVxubmV0L2lwdjQvdGNwX2JwZi5jLTY3MS17XG5uZXQvaXB2NC90Y3BfYnBmLmM6NjcyOlx0dGNwX2JwZl9yZWJ1aWxkX3Byb3Rvcyh0Y3BfYnBmX3Byb3RzW1RDUF9CUEZfSVBWNF0sIFx1MDAyNnRjcF9wcm90KTtcbm5ldC9pcHY0L3RjcF9icGYuYy02NzMtXHRyZXR1cm4gMDtcbm5ldC9pcHY0L3RjcF9icGYuYy02NzQtfVxubmV0L2lwdjQvdGNwX2JwZi5jOjY3NTpsYXRlX2luaXRjYWxsKHRjcF9icGZfdjRfYnVpbGRfcHJvdG8pO1xubmV0L2lwdjQvdGNwX2JwZi5jLTY3Ni1cbm5ldC9pcHY0L3RjcF9icGYuYzo2Nzc6c3RhdGljIGludCB0Y3BfYnBmX2Fzc2VydF9wcm90b19vcHMoc3RydWN0IHByb3RvICpvcHMpXG5uZXQvaXB2NC90Y3BfYnBmLmMtNjc4LXtcbi0tXG5uZXQvaXB2NC90Y3BfYnBmLmMtNjg3LSNpZiBJU19FTkFCTEVEKENPTkZJR19CUEZfU1RSRUFNX1BBUlNFUilcbm5ldC9pcHY0L3RjcF9icGYuYzo2ODg6aW50IHRjcF9icGZfc3RycF9yZWFkX3NvY2soc3RydWN0IHN0cnBhcnNlciAqc3RycCwgcmVhZF9kZXNjcmlwdG9yX3QgKmRlc2MsXG5uZXQvaXB2NC90Y3BfYnBmLmMtNjg5LVx0XHRcdCAgIHNrX3JlYWRfYWN0b3JfdCByZWN2X2FjdG9yKVxuLS1cbm5ldC9pcHY0L3RjcF9icGYuYy03MTEtXHQgKiBGb3IgU0tfUkVESVJFQ1QsIHdlIG5lZWQgdG8gYWNrIHRoZSBmcmFtZSBpbW1lZGlhdGVseSBidXQgZm9yXG5uZXQvaXB2NC90Y3BfYnBmLmM6NzEyOlx0ICogU0tfUEFTUywgd2Ugd2FudCB0byBkZWxheSB0aGUgYWNrIHVudGlsIHRjcF9icGZfcmVjdm1zZ19wYXJzZXIoKS5cbm5ldC9pcHY0L3RjcF9icGYuYy03MTMtXHQgKi9cbi0tXG5uZXQvaXB2NC90Y3BfYnBmLmMtNzIyLVxubmV0L2lwdjQvdGNwX2JwZi5jOjcyMzppbnQgdGNwX2JwZl91cGRhdGVfcHJvdG8oc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3Qgc2tfcHNvY2sgKnBzb2NrLCBib29sIHJlc3RvcmUpXG5uZXQvaXB2NC90Y3BfYnBmLmMtNzI0LXtcbi0tXG5uZXQvaXB2NC90Y3BfYnBmLmMtNzQ5LVx0aWYgKHNrLVx1MDAzZXNrX2ZhbWlseSA9PSBBRl9JTkVUNikge1xubmV0L2lwdjQvdGNwX2JwZi5jOjc1MDpcdFx0aWYgKHRjcF9icGZfYXNzZXJ0X3Byb3RvX29wcyhwc29jay1cdTAwM2Vza19wcm90bykpXG5uZXQvaXB2NC90Y3BfYnBmLmMtNzUxLVx0XHRcdHJldHVybiAtRUlOVkFMO1xubmV0L2lwdjQvdGNwX2JwZi5jLTc1Mi1cbm5ldC9pcHY0L3RjcF9icGYuYzo3NTM6XHRcdHRjcF9icGZfY2hlY2tfdjZfbmVlZHNfcmVidWlsZChwc29jay1cdTAwM2Vza19wcm90byk7XG5uZXQvaXB2NC90Y3BfYnBmLmMtNzU0LVx0fVxuLS1cbm5ldC9pcHY0L3RjcF9icGYuYy03NTYtXHQvKiBQYWlycyB3aXRoIGxvY2tsZXNzIHJlYWQgaW4gc2tfY2xvbmVfbG9jaygpICovXG5uZXQvaXB2NC90Y3BfYnBmLmM6NzU3Olx0c29ja19yZXBsYWNlX3Byb3RvKHNrLCBcdTAwMjZ0Y3BfYnBmX3Byb3RzW2ZhbWlseV1bY29uZmlnXSk7XG5uZXQvaXB2NC90Y3BfYnBmLmMtNzU4LVx0cmV0dXJuIDA7XG5uZXQvaXB2NC90Y3BfYnBmLmMtNzU5LX1cbm5ldC9pcHY0L3RjcF9icGYuYzo3NjA6RVhQT1JUX1NZTUJPTF9HUEwodGNwX2JwZl91cGRhdGVfcHJvdG8pO1xubmV0L2lwdjQvdGNwX2JwZi5jLTc2MS1cbm5ldC9pcHY0L3RjcF9icGYuYzo3NjI6LyogSWYgYSBjaGlsZCBnb3QgY2xvbmVkIGZyb20gYSBsaXN0ZW5pbmcgc29ja2V0IHRoYXQgaGFkIHRjcF9icGZcbm5ldC9pcHY0L3RjcF9icGYuYy03NjMtICogcHJvdG9jb2wgY2FsbGJhY2tzIGluc3RhbGxlZCwgd2UgbmVlZCB0byByZXN0b3JlIHRoZSBjYWxsYmFja3MgdG9cbm5ldC9pcHY0L3RjcF9icGYuYy03NjQtICogdGhlIGRlZmF1bHQgb25lcyBiZWNhdXNlIHRoZSBjaGlsZCBkb2VzIG5vdCBpbmhlcml0IHRoZSBwc29jayBzdGF0ZVxubmV0L2lwdjQvdGNwX2JwZi5jOjc2NTogKiB0aGF0IHRjcF9icGYgY2FsbGJhY2tzIGV4cGVjdC5cbm5ldC9pcHY0L3RjcF9icGYuYy03NjYtICovXG5uZXQvaXB2NC90Y3BfYnBmLmM6NzY3OnZvaWQgdGNwX2JwZl9jbG9uZShjb25zdCBzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBzb2NrICpuZXdzaylcbm5ldC9pcHY0L3RjcF9icGYuYy03Njgte1xuLS1cbm5ldC9pcHY0L3RjcF9icGYuYy03NzAtXG5uZXQvaXB2NC90Y3BfYnBmLmM6NzcxOlx0aWYgKGlzX2luc2lkZXZhcihwcm90LCB0Y3BfYnBmX3Byb3RzKSlcbm5ldC9pcHY0L3RjcF9icGYuYy03NzItXHRcdG5ld3NrLVx1MDAzZXNrX3Byb3QgPSBzay1cdTAwM2Vza19wcm90X2NyZWF0b3I7XG4tLVxubmV0L2lwdjQvdGNwX2lucHV0LmM9MTA3MD1zdGF0aWMgdm9pZCB0Y3BfcnR0X2VzdGltYXRvcihzdHJ1Y3Qgc29jayAqc2ssIGxvbmcgbXJ0dF91cylcbi0tXG5uZXQvaXB2NC90Y3BfaW5wdXQuYy0xMTIyLVxubmV0L2lwdjQvdGNwX2lucHV0LmM6MTEyMzpcdFx0XHR0Y3BfYnBmX3J0dChzaywgbXJ0dF91cywgc3J0dCk7XG5uZXQvaXB2NC90Y3BfaW5wdXQuYy0xMTI0LVx0XHR9XG4tLVxubmV0L2lwdjQvdGNwX2lucHV0LmMtMTEzMi1cbm5ldC9pcHY0L3RjcF9pbnB1dC5jOjExMzM6XHRcdHRjcF9icGZfcnR0KHNrLCBtcnR0X3VzLCBzcnR0KTtcbm5ldC9pcHY0L3RjcF9pbnB1dC5jLTExMzQtXHR9XG4tLVxubmV0L2lwdjQvdGNwX2lucHV0LmM9NzQyND1zdGF0aWMgdm9pZCB0Y3BfZWNuX2NyZWF0ZV9yZXF1ZXN0KHN0cnVjdCByZXF1ZXN0X3NvY2sgKnJlcSxcbi0tXG5uZXQvaXB2NC90Y3BfaW5wdXQuYy03NDU0LVx0ICAgIChlY25fb2tfZHN0IFx1MDAyNiBEU1RfRkVBVFVSRV9FQ05fQ0EpIHx8XG5uZXQvaXB2NC90Y3BfaW5wdXQuYzo3NDU1Olx0ICAgIHRjcF9icGZfY2FfbmVlZHNfZWNuKChzdHJ1Y3Qgc29jayAqKXJlcSkpXG5uZXQvaXB2NC90Y3BfaW5wdXQuYy03NDU2LVx0XHRpbmV0X3JzayhyZXEpLVx1MDAzZWVjbl9vayA9IDE7XG4tLVxubmV0L2lwdjQvdGNwX2lwdjQuYz0xMTU5PXN0YXRpYyBpbnQgdGNwX3Y0X3NlbmRfc3luYWNrKGNvbnN0IHN0cnVjdCBzb2NrICpzaywgc3RydWN0IGRzdF9lbnRyeSAqZHN0LFxuLS1cbm5ldC9pcHY0L3RjcF9pcHY0LmMtMTE4OC1cdFx0aWYgKCFJTkVUX0VDTl9pc19jYXBhYmxlKHRvcykgXHUwMDI2XHUwMDI2XG5uZXQvaXB2NC90Y3BfaXB2NC5jOjExODk6XHRcdCAgICB0Y3BfYnBmX2NhX25lZWRzX2Vjbigoc3RydWN0IHNvY2sgKilyZXEpKVxubmV0L2lwdjQvdGNwX2lwdjQuYy0xMTkwLVx0XHRcdHRvcyB8PSBJTkVUX0VDTl9FQ1RfMDtcbi0tXG5uZXQvaXB2NC90Y3BfaXB2NC5jPTMzMzU9c3RydWN0IHByb3RvIHRjcF9wcm90ID0ge1xuLS1cbm5ldC9pcHY0L3RjcF9pcHY0LmMtMzM0OC1cdC5nZXRzb2Nrb3B0XHRcdD0gdGNwX2dldHNvY2tvcHQsXG5uZXQvaXB2NC90Y3BfaXB2NC5jOjMzNDk6XHQuYnBmX2J5cGFzc19nZXRzb2Nrb3B0XHQ9IHRjcF9icGZfYnlwYXNzX2dldHNvY2tvcHQsXG5uZXQvaXB2NC90Y3BfaXB2NC5jLTMzNTAtXHQua2VlcGFsaXZlXHRcdD0gdGNwX3NldF9rZWVwYWxpdmUsXG4tLVxubmV0L2lwdjQvdGNwX2lwdjQuYy0zMzYwLSNpZmRlZiBDT05GSUdfQlBGX1NZU0NBTExcbm5ldC9pcHY0L3RjcF9pcHY0LmM6MzM2MTpcdC5wc29ja191cGRhdGVfc2tfcHJvdFx0PSB0Y3BfYnBmX3VwZGF0ZV9wcm90byxcbm5ldC9pcHY0L3RjcF9pcHY0LmMtMzM2Mi0jZW5kaWZcbi0tXG5uZXQvaXB2NC90Y3BfbWluaXNvY2tzLmM9NTQ2PXN0cnVjdCBzb2NrICp0Y3BfY3JlYXRlX29wZW5yZXFfY2hpbGQoY29uc3Qgc3RydWN0IHNvY2sgKnNrLFxuLS1cbm5ldC9pcHY0L3RjcF9taW5pc29ja3MuYy02NjMtXHRuZXd0cC1cdTAwM2VicGZfY2hnX2NjX2lucHJvZ3Jlc3MgPSAwO1xubmV0L2lwdjQvdGNwX21pbmlzb2Nrcy5jOjY2NDpcdHRjcF9icGZfY2xvbmUoc2ssIG5ld3NrKTtcbm5ldC9pcHY0L3RjcF9taW5pc29ja3MuYy02NjUtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDkgMTA6NTI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogODIzNQoJCQkJCQkJb3V0cHV0OiAzMAoJCQkJCQkJdGhvdWdodHM6IDM0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duOgoKKipJbnZlc3RpZ2F0aW5nIGEgTmV0d29yayBDb25maWd1cmF0aW9uIERlcGVuZGVuY3kqKgoKQWxyaWdodCwgc28gdGhlIGNvbmZpZyBvcHRpb24gSSYjMzk7bSBzZWVpbmcgaXMgYENPTkZJR19ORVRfU09DS19NU0dgLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gZmlndXJlIG91dCB3aGF0IGZ1bmN0aW9uYWxpdHkgdGhpcyBlbmFibGVzLCBzcGVjaWZpY2FsbHkgd2l0aGluIHRoZSBrZXJuZWwuIEdpdmVuIHRoYXQgdGhpcyBzZWVtcyB0byByZWxhdGUgdG8gc29ja2V0cyBhbmQgbWVzc2FnaW5nLCBteSBuZXh0IGluc3RpbmN0IGlzIHRvIGh1bnQgZG93biB0aGUgcmVsZXZhbnQgbWFrZWZpbGVzLiBJJiMzOTttIGdvaW5nIHRvIGp1bXAgaW50byBgbmV0L2lwdjQvTWFrZWZpbGVgIGltbWVkaWF0ZWx5LiBJJiMzOTttIGV4cGVjdGluZyB0aGlzIGZpbGUgdG8gcG90ZW50aWFsbHkgZGVmaW5lIGRlcGVuZGVuY2llcywgY29tcGlsYXRpb24gdGFyZ2V0cywgb3IgZXZlbiBzb3VyY2UgZmlsZXMgcmVsYXRlZCB0byB0aGlzIGZ1bmN0aW9uYWxpdHkuIEkmIzM5O20gcGFydGljdWxhcmx5IGludGVyZXN0ZWQgaW4gYW55dGhpbmcgcmVsYXRlZCB0byBgdGNwX2JwZi5vYC4gS25vd2luZyB0aGUgbmV0d29yayBjb2RlIGJhc2UsIHRoYXQgc21lbGxzIGxpa2Ugc29tZXRoaW5nIHJlbGF0ZWQgdG8gQmVya2VsZXkgUGFja2V0IEZpbHRlciAoQlBGKSB1c2FnZSBpbiB0aGUgVENQIHN0YWNrLiBUaGUgcHJlc2VuY2Ugb2YgYENPTkZJR19ORVRfU09DS19NU0dgIGFuZCBhIHJlbGF0ZWQgQlBGIG9iamVjdCB3b3VsZCBzdWdnZXN0IGEgQlBGLWJhc2VkIHNvY2tldCBtZXNzYWdpbmcgZW5oYW5jZW1lbnQuIEkmIzM5O2xsIHNlZSB3aGF0IHRoZSBNYWtlZmlsZSByZXZlYWxzLiBMZXQmIzM5O3MgZGlnIGluLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA5IDEwOjUyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3RjcF9icGYmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvaXB2NC9NYWtlZmlsZSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvaXB2NC9NYWtlZmlsZT02Mj1vYmotJChDT05GSUdfVENQX0NPTkdfSUxMSU5PSVMpICYjNDM7PSB0Y3BfaWxsaW5vaXMub1xubmV0L2lwdjQvTWFrZWZpbGU6NjM6b2JqLSQoQ09ORklHX05FVF9TT0NLX01TRykgJiM0Mzs9IHRjcF9icGYub1xubmV0L2lwdjQvTWFrZWZpbGUtNjQtb2JqLSQoQ09ORklHX0JQRl9TWVNDQUxMKSAmIzQzOz0gdWRwX2JwZi5vXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDkgMTA6NTI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogODYxNAoJCQkJCQkJb3V0cHV0OiAyNgoJCQkJCQkJdGhvdWdodHM6IDI2OQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBbmFseXNpcyBvZiB0aGUgVENQIEJQRiBQYXRjaCoqCgpPa2F5LCBzbyBJIHNlZSB0aGlzIHBhdGNoIHJlcXVpcmVzIGBDT05GSUdfTkVUX1NPQ0tfTVNHYC4gVGhhdCBtYWtlcyBzZW5zZTsgd2UmIzM5O3JlIGRlYWxpbmcgd2l0aCBzb2NrZXQgbWVzc2FnaW5nLiAgQW5kLCBvZiBjb3Vyc2UsIHRoZSBldmVyLXByZXNlbnQgYENPTkZJR19CUEZfU1lTQ0FMTGAgaXMgZXNzZW50aWFsIGZvciBhbnkgQlBGLXJlbGF0ZWQgY2hhbmdlcy4gSXQmIzM5O3MgYSBnaXZlbi4KCk5vdywgbGV0JiMzOTtzIGdldCBpbnRvIHRoZSBjb2RlLiBNeSBmb2N1cyBpcyBvbiBgdGNwX2JwZl9pb2N0bGAgYW5kIGB0Y3BfYnBmX3JlY3Ztc2dfcGFyc2VyYC4gIFRoZSBkZXNjcmlwdGlvbiBzcGVjaWZpY2FsbHkgY2FsbHMgb3V0IGEgbW9kaWZpY2F0aW9uIHRvIGB0Y3BfYnBmX2lvY3RsYCwgc28gdGhhdCYjMzk7cyB3aGVyZSBJIG5lZWQgdG8gZGlnIGluIGZpcnN0LgoKSSBuZWVkIHRvIGNvbmZpcm0gd2hldGhlciBgdGNwX2JwZl9pb2N0bGAgaXMgdGhlIG9ubHkgZnVuY3Rpb24gaW1wYWN0ZWQuIFl1cCwgYWNjb3JkaW5nIHRvIHRoaXMgYW5hbHlzaXMsIGl0IGxvb2tzIGxpa2UgYHRjcF9icGZfaW9jdGxgIGluIGBuZXQvaXB2NC90Y3BfYnBmLmNgIGlzIHRoZSBwcmltYXJ5IHRhcmdldC4gIEFuZCBJIHNlZSB0aGF0IGBza19wc29ja19tc2dfaW5xYCBoYXMgYmVlbiByZW1vdmVkIGZyb20gYGluY2x1ZGUvbGludXgvc2ttc2cuaGAuIFRoYXQgc2VlbXMgbGlrZSBhbiBvYnZpb3VzIGNvbnNlcXVlbmNlIG9mIHRoZSBjaGFuZ2VzLgoKT2theSwgbm93IGxldCYjMzk7cyBtYWtlIHN1cmUgSSB1bmRlcnN0YW5kIHRoZSByZWFjaGFiaWxpdHkgb2YgYHRjcF9icGZfaW9jdGxgLiAgQWhhLCBpdCBpcyB0aGUgYC5pb2N0bGAgaGFuZGxlciBmb3IgVENQIHNvY2tldHMgdGhhdCBoYXZlIEJQRiBhdHRhY2hlZCwgb3IgYHRjcF9icGZfcHJvdHNgLiBTbyBpdCBnZXRzIGNhbGxlZCB3aGVuIGEgdXNlciBjYWxscyBgaW9jdGwoZmQsIFNJT0NJTlEsIC4uLilgIG9uIGEgVENQIHNvY2tldCB3aXRoaW4gYSBzb2NrbWFwLiBJJiMzOTttIHNhdGlzZmllZC4KClNvIG15IGtleSBjb25maWd1cmF0aW9ucyBoZXJlIGFyZSBgTkVUX1NPQ0tfTVNHYCBhbmQgYEJQRl9TWVNDQUxMYC4gIFRoZSBjcml0aWNhbCBzeW1ib2wgaXMgc3RpbGwgYHRjcF9icGZfaW9jdGxgLgoKTGV0JiMzOTtzIGRvIGEgcXVpY2sgZG91YmxlLWNoZWNrIHRvIGNvbmZpcm0gdGhhdCBgTkVUX1NPQ0tfTVNHYCBpcyBpbmRlZWQgYSB1c2VyLXNlbGVjdGFibGUgY29uZmlndXJhdGlvbiBvcHRpb24uIEkgbmVlZCB0byBiZSBzdXJlLiBUaGF0JiMzOTtzIGEgZ29vZCBzYW5pdHkgY2hlY2suCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDkgMTA6NTM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIE5FVF9TT0NLX01TRyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0OyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvS2NvbmZpZz00NzU9Y29uZmlnIE5FVF9TRUxGVEVTVFNcbi0tXG5uZXQvS2NvbmZpZy00NzgtXG5uZXQvS2NvbmZpZzo0Nzk6Y29uZmlnIE5FVF9TT0NLX01TR1xubmV0L0tjb25maWctNDgwLVx0Ym9vbFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA5IDEwOjUzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDkzODIKCQkJCQkJCW91dHB1dDogMjYKCQkJCQkJCXRob3VnaHRzOiAzOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0JiMzOTtzIGludGVybmFsIG1vbm9sb2d1ZToKCioqSW52ZXN0aWdhdGluZyB0aGUgTkVUX1NPQ0tfTVNHIENvbmZpZ3VyYXRpb24gT3B0aW9uKioKClJpZ2h0LCBgTkVUX1NPQ0tfTVNHYC4uLiB0aGF0JiMzOTtzIGEgYml0IG9ic2N1cmUuIEl0JiMzOTtzIGEgaGlkZGVuIGNvbmZpZywgc28gaXQmIzM5O3Mgbm90IHNvbWV0aGluZyB5b3UmIzM5O2QgdHlwaWNhbGx5IHNlZSBkaXJlY3RseSBjb25maWd1cmVkLiBNeSBndWVzcywgYW5kIGl0JiMzOTtzIGp1c3QgYSBndWVzcyBiYXNlZCBvbiB0aGUgbmFtZSwgaXMgdGhhdCBpdCYjMzk7cyByZWxhdGVkIHRvIHNvY2tldCBtZXNzYWdpbmcgc29tZWhvdy4gSXQmIzM5O3MgbGlrZWx5IGFjdGl2YXRlZCBpbmRpcmVjdGx5IHRocm91Z2ggb3RoZXIsIG1vcmUgdmlzaWJsZSBvcHRpb25zLiBgQlBGX1NZU0NBTExgIG1ha2VzIHNlbnNlIGFzIGEgcG9zc2libGUgc2VsZWN0b3IsIGdpdmVuIGl0cyByb2xlIGluIGZpbHRlcmluZyBzeXNjYWxscywgYW5kIGBJTkVUYCBpcyBhbm90aGVyIHN0cm9uZyBjb250ZW5kZXIsIGdpdmVuIGl0cyByZWxhdGlvbnNoaXAgdG8gSVAgbmV0d29ya2luZy4gSSBuZWVkIHRvIHZlcmlmeSB0aGF0IHRob3VnaC4gVGltZSB0byB0cmFjZSB0aGUgZGVwZW5kZW5jaWVzIGFuZCBmaWd1cmUgb3V0IHdoYXQgYWN0dWFsbHkgZW5hYmxlcyB0aGlzIHRoaW5nLiBOZWVkIHRvIHVuZGVyc3RhbmQgZXhhY3RseSAqd2h5KiBpdCYjMzk7cyBiZWluZyB1c2VkLiBUaGVyZSYjMzk7cyBubyBwb2ludCBvZiB0aGlzIGV4aXN0aW5nIGluIHRoZSBmaXJzdCBwbGFjZSBpZiBpdCBpcyBub3Qgc2VsZWN0ZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA5IDEwOjUzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3NlbGVjdCBORVRfU09DS19NU0cmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDsmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7a2VybmVsL2JwZi9LY29uZmlnPTI3PWNvbmZpZyBCUEZfU1lTQ0FMTFxuLS1cbmtlcm5lbC9icGYvS2NvbmZpZy0zMy1cdHNlbGVjdCBCSU5BUllfUFJJTlRGXG5rZXJuZWwvYnBmL0tjb25maWc6MzQ6XHRzZWxlY3QgTkVUX1NPQ0tfTVNHIGlmIE5FVFxua2VybmVsL2JwZi9LY29uZmlnLTM1LVx0c2VsZWN0IE5FVF9YR1JFU1MgaWYgTkVUXG4tLVxubmV0L0tjb25maWc9MzYxPWNvbmZpZyBCUEZfU1RSRUFNX1BBUlNFUlxuLS1cbm5ldC9LY29uZmlnLTM2Ni1cdHNlbGVjdCBTVFJFQU1fUEFSU0VSXG5uZXQvS2NvbmZpZzozNjc6XHRzZWxlY3QgTkVUX1NPQ0tfTVNHXG5uZXQvS2NvbmZpZy0zNjgtXHRoZWxwXG4tLVxubmV0L2lwdjQvS2NvbmZpZz0zODI9Y29uZmlnIElORVRfRVNQSU5UQ1Bcbi0tXG5uZXQvaXB2NC9LY29uZmlnLTM4NS1cdHNlbGVjdCBTVFJFQU1fUEFSU0VSXG5uZXQvaXB2NC9LY29uZmlnOjM4NjpcdHNlbGVjdCBORVRfU09DS19NU0dcbm5ldC9pcHY0L0tjb25maWctMzg3LVx0c2VsZWN0IFhGUk1fRVNQSU5UQ1Bcbi0tXG5uZXQvaXB2Ni9LY29uZmlnPTkwPWNvbmZpZyBJTkVUNl9FU1BJTlRDUFxuLS1cbm5ldC9pcHY2L0tjb25maWctOTMtXHRzZWxlY3QgU1RSRUFNX1BBUlNFUlxubmV0L2lwdjYvS2NvbmZpZzo5NDpcdHNlbGVjdCBORVRfU09DS19NU0dcbm5ldC9pcHY2L0tjb25maWctOTUtXHRzZWxlY3QgWEZSTV9FU1BJTlRDUFxuLS1cbm5ldC90bHMvS2NvbmZpZz01PWNvbmZpZyBUTFNcbi0tXG5uZXQvdGxzL0tjb25maWctMTAtXHRzZWxlY3QgQ1JZUFRPX0dDTVxubmV0L3Rscy9LY29uZmlnOjExOlx0c2VsZWN0IE5FVF9TT0NLX01TR1xubmV0L3Rscy9LY29uZmlnLTEyLVx0ZGVmYXVsdCBuXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA5IDEwOjUzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4xbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEwMDQzCgkJCQkJCQlvdXRwdXQ6IDEwOQoJCQkJCQkJdGhvdWdodHM6IDE4MAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBc3Nlc3NtZW50IG9mIHRoZSBQYXRjaCYjMzk7cyBGdXp6aW5nIFBvdGVudGlhbCoqCgpPa2F5LCBzbyB0aGlzIHBhdGNoIGlzIHRyaWdnZXJlZCBieSBgQlBGX1NZU0NBTExgIGlmIHRoZSBgTkVUYCBjb25maWd1cmF0aW9uIG9wdGlvbiBpcyBhY3RpdmUuIFRoZXJlZm9yZSwgYEJQRl9TWVNDQUxMYCBpcyB0aGUgY3J1Y2lhbCBjb25maWd1cmF0aW9uIG9wdGlvbiB0byBlbmFibGUgZm9yIGZ1enppbmcgY292ZXJhZ2UuCgpJIG5lZWQgdG8gY29uZmlybSB0aGF0IGB0Y3BfYnBmX2lvY3RsYCBpcyB0aGUgc29sZSBmdW5jdGlvbiBpbXBhY3RlZC4gWWVzLCB0aGUgZGlmZiBjb25maXJtcyB0aGF0IGB0Y3BfYnBmX2lvY3RsYCBpcyBpbmRlZWQgdGhlICpvbmx5KiBmdW5jdGlvbiBtb2RpZmllZCBieSB0aGlzIHBhdGNoLgoKUmlnaHQsIEkgY2FuIG5vdyBzdWNjaW5jdGx5IHN1bW1hcml6ZSBteSBmaW5kaW5ncy4KCkJhc2VkIG9uIG15IGFuYWx5c2lzLCB0aGlzIHBhdGNoIHByZXNlbnRzIGEgd29ydGh3aGlsZSB0YXJnZXQgZm9yIGZ1enppbmcuIFRoZSBrZXkgZnVuY3Rpb24gdG8gZm9jdXMgb24gaXMgYHRjcF9icGZfaW9jdGxgLiBJIHdpbGwgYWxzbyBpbmNsdWRlIHRoZSBjb25maWd1cmF0aW9uIGBCUEZfU1lTQ0FMTGAgaW4gdGhlIGZ1enppbmcgY29uZmlndXJhdGlvbi4gVGhlIHJlYXNvbmluZyBpcyBjbGVhcjogdGhlIHBhdGNoIGlzIGZ1bmRhbWVudGFsbHkgYWx0ZXJpbmcgYHRjcF9icGZfaW9jdGxgIHRvIHByb3Blcmx5IGhhbmRsZSBgU0lPQ0lOUWAgKEZJT05SRUFEKSBmb3IgVENQIHNvY2tldHMgd2l0aGluIGEgc29ja21hcCwgc3BlY2lmaWNhbGx5IGFjY291bnRpbmcgZm9yIGRhdGEgd2l0aGluIHRoZSBgc2tfcmVjZWl2ZV9xdWV1ZWAgdW5kZXIgY2lyY3Vtc3RhbmNlcyB3aGVyZSBhIHZlcmRpY3QgcHJvZ3JhbSBpcyBhYnNlbnQuIFRoaXMgZnVuY3Rpb25hbGl0eSBpcyBjb3JlIGtlcm5lbCBsb2dpYyB0aGF0IGRpcmVjdGx5IHJlbGF0ZXMgdG8gQlBGIGFuZCBUQ1AgaW50ZXJhY3Rpb25zLCB0aHVzIHByZXNlbnRpbmcgYW4gYXJlYSBzdXNjZXB0aWJsZSB0byBwb3RlbnRpYWwgdnVsbmVyYWJpbGl0aWVzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wOSAxMDo1NTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7QlBGX1NZU0NBTEwmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDt0Y3BfYnBmX2lvY3RsJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIGB0Y3BfYnBmX2lvY3RsYCB0byBjb3JyZWN0bHkgYWNjb3VudCBmb3IgZGF0YSBpbiBgc2tfcmVjZWl2ZV9xdWV1ZWAgd2hlbiBoYW5kbGluZyBgU0lPQ0lOUWAgKEZJT05SRUFEKSBmb3IgVENQIHNvY2tldHMgaW4gYSBzb2NrbWFwIHdpdGhvdXQgYSB2ZXJkaWN0IHByb2dyYW0uIFRoaXMgaXMgZnVuY3Rpb25hbCBjb3JlIGtlcm5lbCBsb2dpYyByZWxhdGVkIHRvIEJQRiBhbmQgVENQLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtCUEZfU1lTQ0FMTCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3RjcF9icGZfaW9jdGwmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgYHRjcF9icGZfaW9jdGxgIHRvIGNvcnJlY3RseSBhY2NvdW50IGZvciBkYXRhIGluIGBza19yZWNlaXZlX3F1ZXVlYCB3aGVuIGhhbmRsaW5nIGBTSU9DSU5RYCAoRklPTlJFQUQpIGZvciBUQ1Agc29ja2V0cyBpbiBhIHNvY2ttYXAgd2l0aG91dCBhIHZlcmRpY3QgcHJvZ3JhbS4gVGhpcyBpcyBmdW5jdGlvbmFsIGNvcmUga2VybmVsIGxvZ2ljIHJlbGF0ZWQgdG8gQlBGIGFuZCBUQ1AuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNy0wOVQxMDo1MjoyMC43ODgzMjkxMDdaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxOTMwMTgxNjA5NTcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQlBGX1NZU0NBTExcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJ0Y3BfYnBmX2lvY3RsXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgYHRjcF9icGZfaW9jdGxgIHRvIGNvcnJlY3RseSBhY2NvdW50IGZvciBkYXRhIGluIGBza19yZWNlaXZlX3F1ZXVlYCB3aGVuIGhhbmRsaW5nIGBTSU9DSU5RYCAoRklPTlJFQUQpIGZvciBUQ1Agc29ja2V0cyBpbiBhIHNvY2ttYXAgd2l0aG91dCBhIHZlcmRpY3QgcHJvZ3JhbS4gVGhpcyBpcyBmdW5jdGlvbmFsIGNvcmUga2VybmVsIGxvZ2ljIHJlbGF0ZWQgdG8gQlBGIGFuZCBUQ1AuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA5VDEwOjUyOjIwLjc4ODMzNjU2N1oiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzQ1NzY5NTY3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgNTJlM2UzN2I2YWYyMTIyZDFmMTZmN2VjNGNkZTIyZjAyMjI2ZjkwOVxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgVGh1IEp1bCA5IDEwOjUyOjE4IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvc2ttc2cuaCBiL2luY2x1ZGUvbGludXgvc2ttc2cuaFxcbmluZGV4IGE4NTUzNDAxYjFjOTNmLi5kNWUzNWYyNDczOGQ1YyAxMDA2NDRcXG4tLS0gYS9pbmNsdWRlL2xpbnV4L3NrbXNnLmhcXG4rKysgYi9pbmNsdWRlL2xpbnV4L3NrbXNnLmhcXG5AQCAtNTUxLDIwICs1NTEsNiBAQCBzdGF0aWMgaW5saW5lIHZvaWQgcHNvY2tfcHJvZ3NfZHJvcChzdHJ1Y3Qgc2tfcHNvY2tfcHJvZ3MgKnByb2dzKVxcbiBcXHRwc29ja19zZXRfcHJvZyhcXHUwMDI2cHJvZ3MtXFx1MDAzZXNrYl92ZXJkaWN0LCBOVUxMKTtcXG4gfVxcbiBcXG4tLyogZm9yIHRjcCBvbmx5LCBzayBpcyBsb2NrZWQgKi9cXG4tc3RhdGljIGlubGluZSBzc2l6ZV90IHNrX3Bzb2NrX21zZ19pbnEoc3RydWN0IHNvY2sgKnNrKVxcbi17XFxuLVxcdHN0cnVjdCBza19wc29jayAqcHNvY2s7XFxuLVxcdHNzaXplX3QgaW5xID0gMDtcXG4tXFxuLVxcdHBzb2NrID0gc2tfcHNvY2tfZ2V0KHNrKTtcXG4tXFx0aWYgKGxpa2VseShwc29jaykpIHtcXG4tXFx0XFx0aW5xID0gc2tfcHNvY2tfZ2V0X21zZ19sZW5fbm9sb2NrKHBzb2NrKTtcXG4tXFx0XFx0c2tfcHNvY2tfcHV0KHNrLCBwc29jayk7XFxuLVxcdH1cXG4tXFx0cmV0dXJuIGlucTtcXG4tfVxcbi1cXG4gLyogZm9yIHVkcCBvbmx5LCBzayBpcyBub3QgbG9ja2VkICovXFxuIHN0YXRpYyBpbmxpbmUgc3NpemVfdCBza19tc2dfZmlyc3RfbGVuKHN0cnVjdCBzb2NrICpzaylcXG4ge1xcbmRpZmYgLS1naXQgYS9uZXQvaXB2NC90Y3BfYnBmLmMgYi9uZXQvaXB2NC90Y3BfYnBmLmNcXG5pbmRleCBjYzBiZDczZjM2YjZkNi4uOGU5MDViNTBkZWFkYmUgMTAwNjQ0XFxuLS0tIGEvbmV0L2lwdjQvdGNwX2JwZi5jXFxuKysrIGIvbmV0L2lwdjQvdGNwX2JwZi5jXFxuQEAgLTMzNCw2ICszMzQsNyBAQCBzdGF0aWMgaW50IHRjcF9icGZfcmVjdm1zZ19wYXJzZXIoc3RydWN0IHNvY2sgKnNrLFxcbiBcXG4gc3RhdGljIGludCB0Y3BfYnBmX2lvY3RsKHN0cnVjdCBzb2NrICpzaywgaW50IGNtZCwgaW50ICprYXJnKVxcbiB7XFxuK1xcdHN0cnVjdCBza19wc29jayAqcHNvY2s7XFxuIFxcdGJvb2wgc2xvdztcXG4gXFxuIFxcdGlmIChjbWQgIT0gU0lPQ0lOUSlcXG5AQCAtMzQ0LDcgKzM0NSwyMSBAQCBzdGF0aWMgaW50IHRjcF9icGZfaW9jdGwoc3RydWN0IHNvY2sgKnNrLCBpbnQgY21kLCBpbnQgKmthcmcpXFxuIFxcdFxcdHJldHVybiAtRUlOVkFMO1xcbiBcXG4gXFx0c2xvdyA9IGxvY2tfc29ja19mYXN0KHNrKTtcXG4tXFx0KmthcmcgPSBza19wc29ja19tc2dfaW5xKHNrKTtcXG4rXFx0cHNvY2sgPSBza19wc29ja19nZXQoc2spO1xcbitcXHRpZiAodW5saWtlbHkoIXBzb2NrKSkge1xcbitcXHRcXHR1bmxvY2tfc29ja19mYXN0KHNrLCBzbG93KTtcXG4rXFx0XFx0cmV0dXJuIHRjcF9pb2N0bChzaywgY21kLCBrYXJnKTtcXG4rXFx0fVxcbitcXHQqa2FyZyA9IHNrX3Bzb2NrX2dldF9tc2dfbGVuX25vbG9jayhwc29jayk7XFxuK1xcdC8qIFdpdGhvdXQgYSB2ZXJkaWN0IHByb2dyYW0sIGluZ3Jlc3MgZGF0YSBpcyBuZXZlciBkaXZlcnRlZCB0b1xcbitcXHQgKiBpbmdyZXNzX21zZzogaXQgc3RheXMgaW4gc2tfcmVjZWl2ZV9xdWV1ZSBhbmQgaXMgcmVhZCB0aHJvdWdoXFxuK1xcdCAqIHRoZSBmYWxsYmFjayB0byB0Y3BfcmVjdm1zZygpLCBzbyBhY2NvdW50IGZvciBpdCBsaWtlXFxuK1xcdCAqIHRjcF9pb2N0bCgpIGRvZXMuXFxuK1xcdCAqL1xcbitcXHRpZiAoIVJFQURfT05DRShwc29jay1cXHUwMDNlcHJvZ3Muc3RyZWFtX3ZlcmRpY3QpIFxcdTAwMjZcXHUwMDI2XFxuK1xcdCAgICAhUkVBRF9PTkNFKHBzb2NrLVxcdTAwM2Vwcm9ncy5za2JfdmVyZGljdCkpXFxuK1xcdFxcdCprYXJnICs9IHRjcF9pbnEoc2spO1xcbitcXHRza19wc29ja19wdXQoc2ssIHBzb2NrKTtcXG4gXFx0dW5sb2NrX3NvY2tfZmFzdChzaywgc2xvdyk7XFxuIFxcbiBcXHRyZXR1cm4gMDtcXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvc29ja21hcF9iYXNpYy5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvc29ja21hcF9iYXNpYy5jXFxuaW5kZXggY2IzMjI5NzExZjkzYTMuLmYwZjM2ODIwMWRkYWRiIDEwMDY0NFxcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3NvY2ttYXBfYmFzaWMuY1xcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3NvY2ttYXBfYmFzaWMuY1xcbkBAIC0xMzczLDYgKzEzNzMsNDMgQEAgc3RhdGljIHZvaWQgdGVzdF9zb2NrbWFwX211bHRpX2NoYW5uZWxzKGludCBzb3R5cGUpXFxuIFxcdHRlc3Rfc29ja21hcF9wYXNzX3Byb2dfX2Rlc3Ryb3koc2tlbCk7XFxuIH1cXG4gXFxuKy8qIEEgc29ja2V0IGluIGEgc29ja21hcCB3aXRob3V0IGEgdmVyZGljdCBwcm9ncmFtIGtlZXBzIGl0cyBpbmdyZXNzIGRhdGFcXG4rICogaW4gc2tfcmVjZWl2ZV9xdWV1ZTogRklPTlJFQUQgbXVzdCBhY2NvdW50IGZvciBpdC5cXG4rICovXFxuK3N0YXRpYyB2b2lkIHRlc3Rfc29ja21hcF9ub192ZXJkaWN0X2Zpb25yZWFkKHZvaWQpXFxuK3tcXG4rXFx0aW50IGVyciwgbWFwLCB6ZXJvID0gMCwgc2VudCwgYXZhaWw7XFxuK1xcdGludCBjMCA9IC0xLCBjMSA9IC0xLCBwMCA9IC0xLCBwMSA9IC0xO1xcbitcXHRzdHJ1Y3QgdGVzdF9zb2NrbWFwX3Bhc3NfcHJvZyAqc2tlbDtcXG4rXFx0Y2hhciBidWZbMjU2XSA9IFxcXCIwMTIzNDU2Nzg5XFxcIjtcXG4rXFxuK1xcdHNrZWwgPSB0ZXN0X3NvY2ttYXBfcGFzc19wcm9nX19vcGVuX2FuZF9sb2FkKCk7XFxuK1xcdGlmICghQVNTRVJUX09LX1BUUihza2VsLCBcXFwib3Blbl9hbmRfbG9hZFxcXCIpKVxcbitcXHRcXHRyZXR1cm47XFxuK1xcdG1hcCA9IGJwZl9tYXBfX2ZkKHNrZWwtXFx1MDAzZW1hcHMuc29ja19tYXBfcngpO1xcbitcXG4rXFx0ZXJyID0gY3JlYXRlX3NvY2tldF9wYWlycyhBRl9JTkVULCBTT0NLX1NUUkVBTSwgXFx1MDAyNmMwLCBcXHUwMDI2YzEsIFxcdTAwMjZwMCwgXFx1MDAyNnAxKTtcXG4rXFx0aWYgKCFBU1NFUlRfT0soZXJyLCBcXFwiY3JlYXRlX3NvY2tldF9wYWlycygpXFxcIikpXFxuK1xcdFxcdGdvdG8gb3V0O1xcbitcXG4rXFx0ZXJyID0gYnBmX21hcF91cGRhdGVfZWxlbShtYXAsIFxcdTAwMjZ6ZXJvLCBcXHUwMDI2YzEsIEJQRl9OT0VYSVNUKTtcXG4rXFx0aWYgKCFBU1NFUlRfT0soZXJyLCBcXFwiYnBmX21hcF91cGRhdGVfZWxlbShjMSlcXFwiKSlcXG4rXFx0XFx0Z290byBvdXRfY2xvc2U7XFxuK1xcbitcXHRzZW50ID0geHNlbmQocDEsIFxcdTAwMjZidWYsIHNpemVvZihidWYpLCAwKTtcXG4rXFx0QVNTRVJUX0VRKHNlbnQsIHNpemVvZihidWYpLCBcXFwieHNlbmQocDEpXFxcIik7XFxuK1xcdGF2YWlsID0gd2FpdF9mb3JfZmlvbnJlYWQoYzEsIHNpemVvZihidWYpLCBJT19USU1FT1VUX1NFQyk7XFxuK1xcdEFTU0VSVF9FUShhdmFpbCwgc2l6ZW9mKGJ1ZiksIFxcXCJpb2N0bChGSU9OUkVBRClcXFwiKTtcXG4rXFxuK291dF9jbG9zZTpcXG4rXFx0Y2xvc2UoYzApO1xcbitcXHRjbG9zZShwMCk7XFxuK1xcdGNsb3NlKGMxKTtcXG4rXFx0Y2xvc2UocDEpO1xcbitvdXQ6XFxuK1xcdHRlc3Rfc29ja21hcF9wYXNzX3Byb2dfX2Rlc3Ryb3koc2tlbCk7XFxuK31cXG4rXFxuIHZvaWQgdGVzdF9zb2NrbWFwX2Jhc2ljKHZvaWQpXFxuIHtcXG4gXFx0aWYgKHRlc3RfX3N0YXJ0X3N1YnRlc3QoXFxcInNvY2ttYXAgY3JlYXRlX3VwZGF0ZV9mcmVlXFxcIikpXFxuQEAgLTE0MTUsNiArMTQ1Miw4IEBAIHZvaWQgdGVzdF9zb2NrbWFwX2Jhc2ljKHZvaWQpXFxuIFxcdFxcdHRlc3Rfc29ja21hcF9za2JfdmVyZGljdF9zaHV0ZG93bigpO1xcbiBcXHRpZiAodGVzdF9fc3RhcnRfc3VidGVzdChcXFwic29ja21hcCBza2JfdmVyZGljdCBmaW9ucmVhZFxcXCIpKVxcbiBcXHRcXHR0ZXN0X3NvY2ttYXBfc2tiX3ZlcmRpY3RfZmlvbnJlYWQodHJ1ZSk7XFxuK1xcdGlmICh0ZXN0X19zdGFydF9zdWJ0ZXN0KFxcXCJzb2NrbWFwIG5vX3ZlcmRpY3QgZmlvbnJlYWRcXFwiKSlcXG4rXFx0XFx0dGVzdF9zb2NrbWFwX25vX3ZlcmRpY3RfZmlvbnJlYWQoKTtcXG4gXFx0aWYgKHRlc3RfX3N0YXJ0X3N1YnRlc3QoXFxcInNvY2ttYXAgc2tiX3ZlcmRpY3QgZmlvbnJlYWQgb24gZHJvcFxcXCIpKVxcbiBcXHRcXHR0ZXN0X3NvY2ttYXBfc2tiX3ZlcmRpY3RfZmlvbnJlYWQoZmFsc2UpO1xcbiBcXHRpZiAodGVzdF9fc3RhcnRfc3VidGVzdChcXFwic29ja21hcCBza2JfdmVyZGljdCBjaGFuZ2UgdGFpbFxcXCIpKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wOVQxMDo1MjoyMS41MzUwMjU2NDRaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjE5MjI3MTQ0OTQ4MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJCUEZfU1lTQ0FMTFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInRjcF9icGZfaW9jdGxcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBgdGNwX2JwZl9pb2N0bGAgdG8gY29ycmVjdGx5IGFjY291bnQgZm9yIGRhdGEgaW4gYHNrX3JlY2VpdmVfcXVldWVgIHdoZW4gaGFuZGxpbmcgYFNJT0NJTlFgIChGSU9OUkVBRCkgZm9yIFRDUCBzb2NrZXRzIGluIGEgc29ja21hcCB3aXRob3V0IGEgdmVyZGljdCBwcm9ncmFtLiBUaGlzIGlzIGZ1bmN0aW9uYWwgY29yZSBrZXJuZWwgbG9naWMgcmVsYXRlZCB0byBCUEYgYW5kIFRDUC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdFxuICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LFxuICAgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCA1MmUzZTM3YjZhZjIxMjJkMWYxNmY3ZWM0Y2RlMjJmMDIyMjZmOTA5XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFRodSBKdWwgOSAxMDo1MjoxOCAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvc2ttc2cuaCBiL2luY2x1ZGUvbGludXgvc2ttc2cuaFxuaW5kZXggYTg1NTM0MDFiMWM5M2YuLmQ1ZTM1ZjI0NzM4ZDVjIDEwMDY0NFxuLS0tIGEvaW5jbHVkZS9saW51eC9za21zZy5oXG4rKysgYi9pbmNsdWRlL2xpbnV4L3NrbXNnLmhcbkBAIC01NTEsMjAgKzU1MSw2IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBwc29ja19wcm9nc19kcm9wKHN0cnVjdCBza19wc29ja19wcm9ncyAqcHJvZ3MpXG4gXHRwc29ja19zZXRfcHJvZyhcdTAwMjZwcm9ncy1cdTAwM2Vza2JfdmVyZGljdCwgTlVMTCk7XG4gfVxuIFxuLS8qIGZvciB0Y3Agb25seSwgc2sgaXMgbG9ja2VkICovXG4tc3RhdGljIGlubGluZSBzc2l6ZV90IHNrX3Bzb2NrX21zZ19pbnEoc3RydWN0IHNvY2sgKnNrKVxuLXtcbi1cdHN0cnVjdCBza19wc29jayAqcHNvY2s7XG4tXHRzc2l6ZV90IGlucSA9IDA7XG4tXG4tXHRwc29jayA9IHNrX3Bzb2NrX2dldChzayk7XG4tXHRpZiAobGlrZWx5KHBzb2NrKSkge1xuLVx0XHRpbnEgPSBza19wc29ja19nZXRfbXNnX2xlbl9ub2xvY2socHNvY2spO1xuLVx0XHRza19wc29ja19wdXQoc2ssIHBzb2NrKTtcbi1cdH1cbi1cdHJldHVybiBpbnE7XG4tfVxuLVxuIC8qIGZvciB1ZHAgb25seSwgc2sgaXMgbm90IGxvY2tlZCAqL1xuIHN0YXRpYyBpbmxpbmUgc3NpemVfdCBza19tc2dfZmlyc3RfbGVuKHN0cnVjdCBzb2NrICpzaylcbiB7XG5kaWZmIC0tZ2l0IGEvbmV0L2lwdjQvdGNwX2JwZi5jIGIvbmV0L2lwdjQvdGNwX2JwZi5jXG5pbmRleCBjYzBiZDczZjM2YjZkNi4uOGU5MDViNTBkZWFkYmUgMTAwNjQ0XG4tLS0gYS9uZXQvaXB2NC90Y3BfYnBmLmNcbisrKyBiL25ldC9pcHY0L3RjcF9icGYuY1xuQEAgLTMzNCw2ICszMzQsNyBAQCBzdGF0aWMgaW50IHRjcF9icGZfcmVjdm1zZ19wYXJzZXIoc3RydWN0IHNvY2sgKnNrLFxuIFxuIHN0YXRpYyBpbnQgdGNwX2JwZl9pb2N0bChzdHJ1Y3Qgc29jayAqc2ssIGludCBjbWQsIGludCAqa2FyZylcbiB7XG4rXHRzdHJ1Y3Qgc2tfcHNvY2sgKnBzb2NrO1xuIFx0Ym9vbCBzbG93O1xuIFxuIFx0aWYgKGNtZCAhPSBTSU9DSU5RKVxuQEAgLTM0NCw3ICszNDUsMjEgQEAgc3RhdGljIGludCB0Y3BfYnBmX2lvY3RsKHN0cnVjdCBzb2NrICpzaywgaW50IGNtZCwgaW50ICprYXJnKVxuIFx0XHRyZXR1cm4gLUVJTlZBTDtcbiBcbiBcdHNsb3cgPSBsb2NrX3NvY2tfZmFzdChzayk7XG4tXHQqa2FyZyA9IHNrX3Bzb2NrX21zZ19pbnEoc2spO1xuK1x0cHNvY2sgPSBza19wc29ja19nZXQoc2spO1xuK1x0aWYgKHVubGlrZWx5KCFwc29jaykpIHtcbitcdFx0dW5sb2NrX3NvY2tfZmFzdChzaywgc2xvdyk7XG4rXHRcdHJldHVybiB0Y3BfaW9jdGwoc2ssIGNtZCwga2FyZyk7XG4rXHR9XG4rXHQqa2FyZyA9IHNrX3Bzb2NrX2dldF9tc2dfbGVuX25vbG9jayhwc29jayk7XG4rXHQvKiBXaXRob3V0IGEgdmVyZGljdCBwcm9ncmFtLCBpbmdyZXNzIGRhdGEgaXMgbmV2ZXIgZGl2ZXJ0ZWQgdG9cbitcdCAqIGluZ3Jlc3NfbXNnOiBpdCBzdGF5cyBpbiBza19yZWNlaXZlX3F1ZXVlIGFuZCBpcyByZWFkIHRocm91Z2hcbitcdCAqIHRoZSBmYWxsYmFjayB0byB0Y3BfcmVjdm1zZygpLCBzbyBhY2NvdW50IGZvciBpdCBsaWtlXG4rXHQgKiB0Y3BfaW9jdGwoKSBkb2VzLlxuK1x0ICovXG4rXHRpZiAoIVJFQURfT05DRShwc29jay1cdTAwM2Vwcm9ncy5zdHJlYW1fdmVyZGljdCkgXHUwMDI2XHUwMDI2XG4rXHQgICAgIVJFQURfT05DRShwc29jay1cdTAwM2Vwcm9ncy5za2JfdmVyZGljdCkpXG4rXHRcdCprYXJnICs9IHRjcF9pbnEoc2spO1xuK1x0c2tfcHNvY2tfcHV0KHNrLCBwc29jayk7XG4gXHR1bmxvY2tfc29ja19mYXN0KHNrLCBzbG93KTtcbiBcbiBcdHJldHVybiAwO1xuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3NvY2ttYXBfYmFzaWMuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3NvY2ttYXBfYmFzaWMuY1xuaW5kZXggY2IzMjI5NzExZjkzYTMuLmYwZjM2ODIwMWRkYWRiIDEwMDY0NFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvc29ja21hcF9iYXNpYy5jXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9zb2NrbWFwX2Jhc2ljLmNcbkBAIC0xMzczLDYgKzEzNzMsNDMgQEAgc3RhdGljIHZvaWQgdGVzdF9zb2NrbWFwX211bHRpX2NoYW5uZWxzKGludCBzb3R5cGUpXG4gXHR0ZXN0X3NvY2ttYXBfcGFzc19wcm9nX19kZXN0cm95KHNrZWwpO1xuIH1cbiBcbisvKiBBIHNvY2tldCBpbiBhIHNvY2ttYXAgd2l0aG91dCBhIHZlcmRpY3QgcHJvZ3JhbSBrZWVwcyBpdHMgaW5ncmVzcyBkYXRhXG4rICogaW4gc2tfcmVjZWl2ZV9xdWV1ZTogRklPTlJFQUQgbXVzdCBhY2NvdW50IGZvciBpdC5cbisgKi9cbitzdGF0aWMgdm9pZCB0ZXN0X3NvY2ttYXBfbm9fdmVyZGljdF9maW9ucmVhZCh2b2lkKVxuK3tcbitcdGludCBlcnIsIG1hcCwgemVybyA9IDAsIHNlbnQsIGF2YWlsO1xuK1x0aW50IGMwID0gLTEsIGMxID0gLTEsIHAwID0gLTEsIHAxID0gLTE7XG4rXHRzdHJ1Y3QgdGVzdF9zb2NrbWFwX3Bhc3NfcHJvZyAqc2tlbDtcbitcdGNoYXIgYnVmWzI1Nl0gPSBcIjAxMjM0NTY3ODlcIjtcbitcbitcdHNrZWwgPSB0ZXN0X3NvY2ttYXBfcGFzc19wcm9nX19vcGVuX2FuZF9sb2FkKCk7XG4rXHRpZiAoIUFTU0VSVF9PS19QVFIoc2tlbCwgXCJvcGVuX2FuZF9sb2FkXCIpKVxuK1x0XHRyZXR1cm47XG4rXHRtYXAgPSBicGZfbWFwX19mZChza2VsLVx1MDAzZW1hcHMuc29ja19tYXBfcngpO1xuK1xuK1x0ZXJyID0gY3JlYXRlX3NvY2tldF9wYWlycyhBRl9JTkVULCBTT0NLX1NUUkVBTSwgXHUwMDI2YzAsIFx1MDAyNmMxLCBcdTAwMjZwMCwgXHUwMDI2cDEpO1xuK1x0aWYgKCFBU1NFUlRfT0soZXJyLCBcImNyZWF0ZV9zb2NrZXRfcGFpcnMoKVwiKSlcbitcdFx0Z290byBvdXQ7XG4rXG4rXHRlcnIgPSBicGZfbWFwX3VwZGF0ZV9lbGVtKG1hcCwgXHUwMDI2emVybywgXHUwMDI2YzEsIEJQRl9OT0VYSVNUKTtcbitcdGlmICghQVNTRVJUX09LKGVyciwgXCJicGZfbWFwX3VwZGF0ZV9lbGVtKGMxKVwiKSlcbitcdFx0Z290byBvdXRfY2xvc2U7XG4rXG4rXHRzZW50ID0geHNlbmQocDEsIFx1MDAyNmJ1Ziwgc2l6ZW9mKGJ1ZiksIDApO1xuK1x0QVNTRVJUX0VRKHNlbnQsIHNpemVvZihidWYpLCBcInhzZW5kKHAxKVwiKTtcbitcdGF2YWlsID0gd2FpdF9mb3JfZmlvbnJlYWQoYzEsIHNpemVvZihidWYpLCBJT19USU1FT1VUX1NFQyk7XG4rXHRBU1NFUlRfRVEoYXZhaWwsIHNpemVvZihidWYpLCBcImlvY3RsKEZJT05SRUFEKVwiKTtcbitcbitvdXRfY2xvc2U6XG4rXHRjbG9zZShjMCk7XG4rXHRjbG9zZShwMCk7XG4rXHRjbG9zZShjMSk7XG4rXHRjbG9zZShwMSk7XG4rb3V0OlxuK1x0dGVzdF9zb2NrbWFwX3Bhc3NfcHJvZ19fZGVzdHJveShza2VsKTtcbit9XG4rXG4gdm9pZCB0ZXN0X3NvY2ttYXBfYmFzaWModm9pZClcbiB7XG4gXHRpZiAodGVzdF9fc3RhcnRfc3VidGVzdChcInNvY2ttYXAgY3JlYXRlX3VwZGF0ZV9mcmVlXCIpKVxuQEAgLTE0MTUsNiArMTQ1Miw4IEBAIHZvaWQgdGVzdF9zb2NrbWFwX2Jhc2ljKHZvaWQpXG4gXHRcdHRlc3Rfc29ja21hcF9za2JfdmVyZGljdF9zaHV0ZG93bigpO1xuIFx0aWYgKHRlc3RfX3N0YXJ0X3N1YnRlc3QoXCJzb2NrbWFwIHNrYl92ZXJkaWN0IGZpb25yZWFkXCIpKVxuIFx0XHR0ZXN0X3NvY2ttYXBfc2tiX3ZlcmRpY3RfZmlvbnJlYWQodHJ1ZSk7XG4rXHRpZiAodGVzdF9fc3RhcnRfc3VidGVzdChcInNvY2ttYXAgbm9fdmVyZGljdCBmaW9ucmVhZFwiKSlcbitcdFx0dGVzdF9zb2NrbWFwX25vX3ZlcmRpY3RfZmlvbnJlYWQoKTtcbiBcdGlmICh0ZXN0X19zdGFydF9zdWJ0ZXN0KFwic29ja21hcCBza2JfdmVyZGljdCBmaW9ucmVhZCBvbiBkcm9wXCIpKVxuIFx0XHR0ZXN0X3NvY2ttYXBfc2tiX3ZlcmRpY3RfZmlvbnJlYWQoZmFsc2UpO1xuIFx0aWYgKHRlc3RfX3N0YXJ0X3N1YnRlc3QoXCJzb2NrbWFwIHNrYl92ZXJkaWN0IGNoYW5nZSB0YWlsXCIpKVxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDlUMTA6NTI6MjEuNTM1MDI5MjI0WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTUyMDAxMDQzODIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBUQ1AgQlBGIElvY3RsIFBhdGNoKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBmb3IgYHRjcF9icGZfaW9jdGxgIHdpdGhpbiBgbmV0L2lwdjQvdGNwX2JwZi5jYC4gSXQncyBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkLCBidXQgaXQgZGVhbHMgd2l0aCBhIGNyaXRpY2FsIGFyZWE6IGhvdyBgU0lPQ0lOUWAgKG9yIGBGSU9OUkVBRGAg4oCTIHN0YW5kYXJkIHN0dWZmLCByZWFsbHkpIGJlaGF2ZXMgZm9yIFRDUCBzb2NrZXRzIHRoYXQgYXJlIGFsc28gb3BlcmF0aW5nIHdpdGhpbiBhIHNvY2ttYXAgY29udGV4dCwgdXNpbmcgQlBGLiBUaGUgY29yZSBjaGFuZ2UgaXMgdGhpczogaWYgdGhlcmUgaXNuJ3QgYSB2ZXJkaWN0IHByb2dyYW0gaW4gcGxheSwgdGhlIGltcGxlbWVudGF0aW9uIGhhcyBiZWVuIHVwZGF0ZWQgdG8gYWNjb3VudCBmb3Igbm90IG9ubHkgdGhlIGxlbmd0aCBvZiBtZXNzYWdlcyBvbiB0aGUgYHNrX3JlY2VpdmVfcXVldWVgIChgdGNwX2lucShzaylgKSwgYnV0IGFsc28gYHNrX3Bzb2NrX2dldF9tc2dfbGVuX25vbG9jayhwc29jaylgLiBUaGlzIHNlZW1zIGxpa2UgYSByZWFzb25hYmxlIGFkanVzdG1lbnQgdG8gZW5zdXJlIGFjY3VyYXRlIHJlcG9ydGluZyBvZiBxdWV1ZWQgZGF0YS5cblxuSSBzZWUgdGhhdCBgc2tfcHNvY2tfbXNnX2lucWAgaGFzIGJlZW4gcmVtb3ZlZCBmcm9tIGBpbmNsdWRlL2xpbnV4L3NrbXNnLmhgLCBhbmQgdGhlIGxvZ2ljIGlzIG5vdyBlbWJlZGRlZCBkaXJlY3RseSB3aXRoaW4gYHRjcF9icGZfaW9jdGxgLiBUaGlzIGlzIGZpbmU7IEkgd291bGRuJ3QgdXN1YWxseSBleHBlY3QgYSBkZWRpY2F0ZWQgc3ltYm9sIGZvciB0aGlzIGtpbmQgb2YgZnVuY3Rpb25hbGl0eSBpbiBhIGhlYWRlciBmaWxlLiBUaGUgcGF0Y2ggbW92ZXMgdGhlIGNvcmUgbG9naWMgaW50byBhIG1vcmUgYXBwcm9wcmlhdGUgbG9jYXRpb24gaW4gdGhlIGtlcm5lbC5cblxuR2l2ZW4gdGhlIGltcG9ydGFuY2Ugb2YgdGhpcyBwYXRjaCwgSSBzaG91bGQgY2hlY2sgdGhlIHJlbGV2YW50IGtlcm5lbCBjb25maWdzIHJlcXVpcmVkIGZvciBgbmV0L2lwdjQvdGNwX2JwZi5jYCBhbmQgbWFrZSBzdXJlIHRoZSBuZXcgZnVuY3Rpb25hbGl0eSBpcyBnb2luZyB0byBiZSBhdmFpbGFibGUuIFdlIGRvbid0IHdhbnQgdG8gZ2V0IHRoaXMgbWlzc2VkIGJ5IGEgbWlzY29uZmlndXJlZCBidWlsZC5cblxuXG4iLCJJbnB1dFRva2VucyI6MzM2MiwiT3V0cHV0VG9rZW5zIjoyOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIyMywiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA5VDEwOjUyOjM2LjczNTEzNjU1NloiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2ODA0Mjc3MjQsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwidGNwX2JwZlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvaXB2NC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L2lwdjQvTWFrZWZpbGU9NjI9b2JqLSQoQ09ORklHX1RDUF9DT05HX0lMTElOT0lTKSArPSB0Y3BfaWxsaW5vaXMub1xcbm5ldC9pcHY0L01ha2VmaWxlOjYzOm9iai0kKENPTkZJR19ORVRfU09DS19NU0cpICs9IHRjcF9icGYub1xcbm5ldC9pcHY0L01ha2VmaWxlLTY0LW9iai0kKENPTkZJR19CUEZfU1lTQ0FMTCkgKz0gdWRwX2JwZi5vXFxuLS1cXG5uZXQvaXB2NC90Y3AuYz00NDgxPWludCBkb190Y3BfZ2V0c29ja29wdChzdHJ1Y3Qgc29jayAqc2ssIGludCBsZXZlbCxcXG4tLVxcbm5ldC9pcHY0L3RjcC5jLTQ4NDUtXFxubmV0L2lwdjQvdGNwLmM6NDg0Njpib29sIHRjcF9icGZfYnlwYXNzX2dldHNvY2tvcHQoaW50IGxldmVsLCBpbnQgb3B0bmFtZSlcXG5uZXQvaXB2NC90Y3AuYy00ODQ3LXtcXG4tLVxcbm5ldC9pcHY0L3RjcF9icGYuYz0zMz1zdGF0aWMgaW50IGJwZl90Y3BfaW5ncmVzcyhzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBza19wc29jayAqcHNvY2ssXFxuLS1cXG5uZXQvaXB2NC90Y3BfYnBmLmMtOTAtXFxubmV0L2lwdjQvdGNwX2JwZi5jOjkxOnN0YXRpYyBpbnQgdGNwX2JwZl9wdXNoKHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX21zZyAqbXNnLCB1MzIgYXBwbHlfYnl0ZXMsXFxubmV0L2lwdjQvdGNwX2JwZi5jLTkyLVxcdFxcdFxcdGludCBmbGFncywgYm9vbCB1bmNoYXJnZSlcXG4tLVxcbm5ldC9pcHY0L3RjcF9icGYuYy0xNTItXFxubmV0L2lwdjQvdGNwX2JwZi5jOjE1MzpzdGF0aWMgaW50IHRjcF9icGZfcHVzaF9sb2NrZWQoc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3Qgc2tfbXNnICptc2csXFxubmV0L2lwdjQvdGNwX2JwZi5jLTE1NC1cXHRcXHRcXHQgICAgICAgdTMyIGFwcGx5X2J5dGVzLCBpbnQgZmxhZ3MsIGJvb2wgdW5jaGFyZ2UpXFxuLS1cXG5uZXQvaXB2NC90Y3BfYnBmLmMtMTU4LVxcdGxvY2tfc29jayhzayk7XFxubmV0L2lwdjQvdGNwX2JwZi5jOjE1OTpcXHRyZXQgPSB0Y3BfYnBmX3B1c2goc2ssIG1zZywgYXBwbHlfYnl0ZXMsIGZsYWdzLCB1bmNoYXJnZSk7XFxubmV0L2lwdjQvdGNwX2JwZi5jLTE2MC1cXHRyZWxlYXNlX3NvY2soc2spO1xcbi0tXFxubmV0L2lwdjQvdGNwX2JwZi5jLTE2My1cXG5uZXQvaXB2NC90Y3BfYnBmLmM6MTY0OmludCB0Y3BfYnBmX3NlbmRtc2dfcmVkaXIoc3RydWN0IHNvY2sgKnNrLCBib29sIGluZ3Jlc3MsXFxubmV0L2lwdjQvdGNwX2JwZi5jLTE2NS1cXHRcXHRcXHQgIHN0cnVjdCBza19tc2cgKm1zZywgdTMyIGJ5dGVzLCBpbnQgZmxhZ3MpXFxuLS1cXG5uZXQvaXB2NC90Y3BfYnBmLmMtMTczLVxcdHJldCA9IGluZ3Jlc3MgPyBicGZfdGNwX2luZ3Jlc3Moc2ssIHBzb2NrLCBtc2csIGJ5dGVzKSA6XFxubmV0L2lwdjQvdGNwX2JwZi5jOjE3NDpcXHRcXHRcXHR0Y3BfYnBmX3B1c2hfbG9ja2VkKHNrLCBtc2csIGJ5dGVzLCBmbGFncywgZmFsc2UpO1xcbm5ldC9pcHY0L3RjcF9icGYuYy0xNzUtXFx0c2tfcHNvY2tfcHV0KHNrLCBwc29jayk7XFxuLS1cXG5uZXQvaXB2NC90Y3BfYnBmLmMtMTc3LX1cXG5uZXQvaXB2NC90Y3BfYnBmLmM6MTc4OkVYUE9SVF9TWU1CT0xfR1BMKHRjcF9icGZfc2VuZG1zZ19yZWRpcik7XFxubmV0L2lwdjQvdGNwX2JwZi5jLTE3OS1cXG4tLVxcbm5ldC9pcHY0L3RjcF9icGYuYz0yMDM9c3RhdGljIGJvb2wgaXNfbmV4dF9tc2dfZmluKHN0cnVjdCBza19wc29jayAqcHNvY2spXFxuLS1cXG5uZXQvaXB2NC90Y3BfYnBmLmMtMjIwLVxcbm5ldC9pcHY0L3RjcF9icGYuYzoyMjE6c3RhdGljIGludCB0Y3BfYnBmX3JlY3Ztc2dfcGFyc2VyKHN0cnVjdCBzb2NrICpzayxcXG5uZXQvaXB2NC90Y3BfYnBmLmMtMjIyLVxcdFxcdFxcdFxcdCAgc3RydWN0IG1zZ2hkciAqbXNnLFxcbi0tXFxubmV0L2lwdjQvdGNwX2JwZi5jLTMzNC1cXG5uZXQvaXB2NC90Y3BfYnBmLmM6MzM1OnN0YXRpYyBpbnQgdGNwX2JwZl9pb2N0bChzdHJ1Y3Qgc29jayAqc2ssIGludCBjbWQsIGludCAqa2FyZylcXG5uZXQvaXB2NC90Y3BfYnBmLmMtMzM2LXtcXG4tLVxcbm5ldC9pcHY0L3RjcF9icGYuYy0zNjctXFxubmV0L2lwdjQvdGNwX2JwZi5jOjM2ODpzdGF0aWMgaW50IHRjcF9icGZfcmVjdm1zZyhzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBtc2doZHIgKm1zZywgc2l6ZV90IGxlbixcXG5uZXQvaXB2NC90Y3BfYnBmLmMtMzY5LVxcdFxcdFxcdCAgIGludCBmbGFncylcXG4tLVxcbm5ldC9pcHY0L3RjcF9icGYuYy00MTctXFxubmV0L2lwdjQvdGNwX2JwZi5jOjQxODpzdGF0aWMgaW50IHRjcF9icGZfc2VuZF92ZXJkaWN0KHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX3Bzb2NrICpwc29jayxcXG5uZXQvaXB2NC90Y3BfYnBmLmMtNDE5LVxcdFxcdFxcdFxcdHN0cnVjdCBza19tc2cgKm1zZywgaW50ICpjb3BpZWQsIGludCBmbGFncylcXG4tLVxcbm5ldC9pcHY0L3RjcF9icGYuYy00NjEtXFx0Y2FzZSBfX1NLX1BBU1M6XFxubmV0L2lwdjQvdGNwX2JwZi5jOjQ2MjpcXHRcXHRyZXQgPSB0Y3BfYnBmX3B1c2goc2ssIG1zZywgdG9zZW5kLCBmbGFncywgdHJ1ZSk7XFxubmV0L2lwdjQvdGNwX2JwZi5jLTQ2My1cXHRcXHRpZiAodW5saWtlbHkocmV0KSkge1xcbi0tXFxubmV0L2lwdjQvdGNwX2JwZi5jLTQ4NS1cXHRcXHRvcmlnc2l6ZSA9IG1zZy1cXHUwMDNlc2cuc2l6ZTtcXG5uZXQvaXB2NC90Y3BfYnBmLmM6NDg2OlxcdFxcdHJldCA9IHRjcF9icGZfc2VuZG1zZ19yZWRpcihza19yZWRpciwgcmVkaXJfaW5ncmVzcyxcXG5uZXQvaXB2NC90Y3BfYnBmLmMtNDg3LVxcdFxcdFxcdFxcdFxcdCAgICBtc2csIHRvc2VuZCwgZmxhZ3MpO1xcbi0tXFxubmV0L2lwdjQvdGNwX2JwZi5jLTUzMS1cXG5uZXQvaXB2NC90Y3BfYnBmLmM6NTMyOnN0YXRpYyBpbnQgdGNwX2JwZl9zZW5kbXNnKHN0cnVjdCBzb2NrICpzaywgc3RydWN0IG1zZ2hkciAqbXNnLCBzaXplX3Qgc2l6ZSlcXG5uZXQvaXB2NC90Y3BfYnBmLmMtNTMzLXtcXG4tLVxcbm5ldC9pcHY0L3RjcF9icGYuYy01OTctXFxubmV0L2lwdjQvdGNwX2JwZi5jOjU5ODpcXHRcXHRlcnIgPSB0Y3BfYnBmX3NlbmRfdmVyZGljdChzaywgcHNvY2ssIG1zZ190eCwgXFx1MDAyNmNvcGllZCwgZmxhZ3MpO1xcbm5ldC9pcHY0L3RjcF9icGYuYy01OTktXFx0XFx0aWYgKHVubGlrZWx5KGVyciBcXHUwMDNjIDApKVxcbi0tXFxubmV0L2lwdjQvdGNwX2JwZi5jPTYzNT1zdGF0aWMgREVGSU5FX1NQSU5MT0NLKHRjcHY2X3Byb3RfbG9jayk7XFxubmV0L2lwdjQvdGNwX2JwZi5jOjYzNjpzdGF0aWMgc3RydWN0IHByb3RvIHRjcF9icGZfcHJvdHNbVENQX0JQRl9OVU1fUFJPVFNdW1RDUF9CUEZfTlVNX0NGR1NdO1xcbm5ldC9pcHY0L3RjcF9icGYuYy02MzctXFxubmV0L2lwdjQvdGNwX2JwZi5jOjYzODpzdGF0aWMgdm9pZCB0Y3BfYnBmX3JlYnVpbGRfcHJvdG9zKHN0cnVjdCBwcm90byBwcm90W1RDUF9CUEZfTlVNX0NGR1NdLFxcbm5ldC9pcHY0L3RjcF9icGYuYy02MzktXFx0XFx0XFx0XFx0ICAgc3RydWN0IHByb3RvICpiYXNlKVxcbi0tXFxubmV0L2lwdjQvdGNwX2JwZi5jLTY0My1cXHRwcm90W1RDUF9CUEZfQkFTRV0uY2xvc2VcXHRcXHQ9IHNvY2tfbWFwX2Nsb3NlO1xcbm5ldC9pcHY0L3RjcF9icGYuYzo2NDQ6XFx0cHJvdFtUQ1BfQlBGX0JBU0VdLnJlY3Ztc2dcXHRcXHQ9IHRjcF9icGZfcmVjdm1zZztcXG5uZXQvaXB2NC90Y3BfYnBmLmMtNjQ1LVxcdHByb3RbVENQX0JQRl9CQVNFXS5zb2NrX2lzX3JlYWRhYmxlXFx0PSBza19tc2dfaXNfcmVhZGFibGU7XFxubmV0L2lwdjQvdGNwX2JwZi5jOjY0NjpcXHRwcm90W1RDUF9CUEZfQkFTRV0uaW9jdGxcXHRcXHQ9IHRjcF9icGZfaW9jdGw7XFxubmV0L2lwdjQvdGNwX2JwZi5jLTY0Ny1cXG5uZXQvaXB2NC90Y3BfYnBmLmMtNjQ4LVxcdHByb3RbVENQX0JQRl9UWF1cXHRcXHRcXHQ9IHByb3RbVENQX0JQRl9CQVNFXTtcXG5uZXQvaXB2NC90Y3BfYnBmLmM6NjQ5OlxcdHByb3RbVENQX0JQRl9UWF0uc2VuZG1zZ1xcdFxcdD0gdGNwX2JwZl9zZW5kbXNnO1xcbm5ldC9pcHY0L3RjcF9icGYuYy02NTAtXFxubmV0L2lwdjQvdGNwX2JwZi5jLTY1MS1cXHRwcm90W1RDUF9CUEZfUlhdXFx0XFx0XFx0PSBwcm90W1RDUF9CUEZfQkFTRV07XFxubmV0L2lwdjQvdGNwX2JwZi5jOjY1MjpcXHRwcm90W1RDUF9CUEZfUlhdLnJlY3Ztc2dcXHRcXHQ9IHRjcF9icGZfcmVjdm1zZ19wYXJzZXI7XFxubmV0L2lwdjQvdGNwX2JwZi5jLTY1My1cXG5uZXQvaXB2NC90Y3BfYnBmLmMtNjU0LVxcdHByb3RbVENQX0JQRl9UWFJYXVxcdFxcdFxcdD0gcHJvdFtUQ1BfQlBGX1RYXTtcXG5uZXQvaXB2NC90Y3BfYnBmLmM6NjU1OlxcdHByb3RbVENQX0JQRl9UWFJYXS5yZWN2bXNnXFx0XFx0PSB0Y3BfYnBmX3JlY3Ztc2dfcGFyc2VyO1xcbm5ldC9pcHY0L3RjcF9icGYuYy02NTYtfVxcbm5ldC9pcHY0L3RjcF9icGYuYy02NTctXFxubmV0L2lwdjQvdGNwX2JwZi5jOjY1ODpzdGF0aWMgdm9pZCB0Y3BfYnBmX2NoZWNrX3Y2X25lZWRzX3JlYnVpbGQoc3RydWN0IHByb3RvICpvcHMpXFxubmV0L2lwdjQvdGNwX2JwZi5jLTY1OS17XFxuLS1cXG5uZXQvaXB2NC90Y3BfYnBmLmMtNjYyLVxcdFxcdGlmIChsaWtlbHkob3BzICE9IHRjcHY2X3Byb3Rfc2F2ZWQpKSB7XFxubmV0L2lwdjQvdGNwX2JwZi5jOjY2MzpcXHRcXHRcXHR0Y3BfYnBmX3JlYnVpbGRfcHJvdG9zKHRjcF9icGZfcHJvdHNbVENQX0JQRl9JUFY2XSwgb3BzKTtcXG5uZXQvaXB2NC90Y3BfYnBmLmMtNjY0LVxcdFxcdFxcdHNtcF9zdG9yZV9yZWxlYXNlKFxcdTAwMjZ0Y3B2Nl9wcm90X3NhdmVkLCBvcHMpO1xcbi0tXFxubmV0L2lwdjQvdGNwX2JwZi5jLTY2OS1cXG5uZXQvaXB2NC90Y3BfYnBmLmM6NjcwOnN0YXRpYyBpbnQgX19pbml0IHRjcF9icGZfdjRfYnVpbGRfcHJvdG8odm9pZClcXG5uZXQvaXB2NC90Y3BfYnBmLmMtNjcxLXtcXG5uZXQvaXB2NC90Y3BfYnBmLmM6NjcyOlxcdHRjcF9icGZfcmVidWlsZF9wcm90b3ModGNwX2JwZl9wcm90c1tUQ1BfQlBGX0lQVjRdLCBcXHUwMDI2dGNwX3Byb3QpO1xcbm5ldC9pcHY0L3RjcF9icGYuYy02NzMtXFx0cmV0dXJuIDA7XFxubmV0L2lwdjQvdGNwX2JwZi5jLTY3NC19XFxubmV0L2lwdjQvdGNwX2JwZi5jOjY3NTpsYXRlX2luaXRjYWxsKHRjcF9icGZfdjRfYnVpbGRfcHJvdG8pO1xcbm5ldC9pcHY0L3RjcF9icGYuYy02NzYtXFxubmV0L2lwdjQvdGNwX2JwZi5jOjY3NzpzdGF0aWMgaW50IHRjcF9icGZfYXNzZXJ0X3Byb3RvX29wcyhzdHJ1Y3QgcHJvdG8gKm9wcylcXG5uZXQvaXB2NC90Y3BfYnBmLmMtNjc4LXtcXG4tLVxcbm5ldC9pcHY0L3RjcF9icGYuYy02ODctI2lmIElTX0VOQUJMRUQoQ09ORklHX0JQRl9TVFJFQU1fUEFSU0VSKVxcbm5ldC9pcHY0L3RjcF9icGYuYzo2ODg6aW50IHRjcF9icGZfc3RycF9yZWFkX3NvY2soc3RydWN0IHN0cnBhcnNlciAqc3RycCwgcmVhZF9kZXNjcmlwdG9yX3QgKmRlc2MsXFxubmV0L2lwdjQvdGNwX2JwZi5jLTY4OS1cXHRcXHRcXHQgICBza19yZWFkX2FjdG9yX3QgcmVjdl9hY3RvcilcXG4tLVxcbm5ldC9pcHY0L3RjcF9icGYuYy03MTEtXFx0ICogRm9yIFNLX1JFRElSRUNULCB3ZSBuZWVkIHRvIGFjayB0aGUgZnJhbWUgaW1tZWRpYXRlbHkgYnV0IGZvclxcbm5ldC9pcHY0L3RjcF9icGYuYzo3MTI6XFx0ICogU0tfUEFTUywgd2Ugd2FudCB0byBkZWxheSB0aGUgYWNrIHVudGlsIHRjcF9icGZfcmVjdm1zZ19wYXJzZXIoKS5cXG5uZXQvaXB2NC90Y3BfYnBmLmMtNzEzLVxcdCAqL1xcbi0tXFxubmV0L2lwdjQvdGNwX2JwZi5jLTcyMi1cXG5uZXQvaXB2NC90Y3BfYnBmLmM6NzIzOmludCB0Y3BfYnBmX3VwZGF0ZV9wcm90byhzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBza19wc29jayAqcHNvY2ssIGJvb2wgcmVzdG9yZSlcXG5uZXQvaXB2NC90Y3BfYnBmLmMtNzI0LXtcXG4tLVxcbm5ldC9pcHY0L3RjcF9icGYuYy03NDktXFx0aWYgKHNrLVxcdTAwM2Vza19mYW1pbHkgPT0gQUZfSU5FVDYpIHtcXG5uZXQvaXB2NC90Y3BfYnBmLmM6NzUwOlxcdFxcdGlmICh0Y3BfYnBmX2Fzc2VydF9wcm90b19vcHMocHNvY2stXFx1MDAzZXNrX3Byb3RvKSlcXG5uZXQvaXB2NC90Y3BfYnBmLmMtNzUxLVxcdFxcdFxcdHJldHVybiAtRUlOVkFMO1xcbm5ldC9pcHY0L3RjcF9icGYuYy03NTItXFxubmV0L2lwdjQvdGNwX2JwZi5jOjc1MzpcXHRcXHR0Y3BfYnBmX2NoZWNrX3Y2X25lZWRzX3JlYnVpbGQocHNvY2stXFx1MDAzZXNrX3Byb3RvKTtcXG5uZXQvaXB2NC90Y3BfYnBmLmMtNzU0LVxcdH1cXG4tLVxcbm5ldC9pcHY0L3RjcF9icGYuYy03NTYtXFx0LyogUGFpcnMgd2l0aCBsb2NrbGVzcyByZWFkIGluIHNrX2Nsb25lX2xvY2soKSAqL1xcbm5ldC9pcHY0L3RjcF9icGYuYzo3NTc6XFx0c29ja19yZXBsYWNlX3Byb3RvKHNrLCBcXHUwMDI2dGNwX2JwZl9wcm90c1tmYW1pbHldW2NvbmZpZ10pO1xcbm5ldC9pcHY0L3RjcF9icGYuYy03NTgtXFx0cmV0dXJuIDA7XFxubmV0L2lwdjQvdGNwX2JwZi5jLTc1OS19XFxubmV0L2lwdjQvdGNwX2JwZi5jOjc2MDpFWFBPUlRfU1lNQk9MX0dQTCh0Y3BfYnBmX3VwZGF0ZV9wcm90byk7XFxubmV0L2lwdjQvdGNwX2JwZi5jLTc2MS1cXG5uZXQvaXB2NC90Y3BfYnBmLmM6NzYyOi8qIElmIGEgY2hpbGQgZ290IGNsb25lZCBmcm9tIGEgbGlzdGVuaW5nIHNvY2tldCB0aGF0IGhhZCB0Y3BfYnBmXFxubmV0L2lwdjQvdGNwX2JwZi5jLTc2My0gKiBwcm90b2NvbCBjYWxsYmFja3MgaW5zdGFsbGVkLCB3ZSBuZWVkIHRvIHJlc3RvcmUgdGhlIGNhbGxiYWNrcyB0b1xcbm5ldC9pcHY0L3RjcF9icGYuYy03NjQtICogdGhlIGRlZmF1bHQgb25lcyBiZWNhdXNlIHRoZSBjaGlsZCBkb2VzIG5vdCBpbmhlcml0IHRoZSBwc29jayBzdGF0ZVxcbm5ldC9pcHY0L3RjcF9icGYuYzo3NjU6ICogdGhhdCB0Y3BfYnBmIGNhbGxiYWNrcyBleHBlY3QuXFxubmV0L2lwdjQvdGNwX2JwZi5jLTc2Ni0gKi9cXG5uZXQvaXB2NC90Y3BfYnBmLmM6NzY3OnZvaWQgdGNwX2JwZl9jbG9uZShjb25zdCBzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBzb2NrICpuZXdzaylcXG5uZXQvaXB2NC90Y3BfYnBmLmMtNzY4LXtcXG4tLVxcbm5ldC9pcHY0L3RjcF9icGYuYy03NzAtXFxubmV0L2lwdjQvdGNwX2JwZi5jOjc3MTpcXHRpZiAoaXNfaW5zaWRldmFyKHByb3QsIHRjcF9icGZfcHJvdHMpKVxcbm5ldC9pcHY0L3RjcF9icGYuYy03NzItXFx0XFx0bmV3c2stXFx1MDAzZXNrX3Byb3QgPSBzay1cXHUwMDNlc2tfcHJvdF9jcmVhdG9yO1xcbi0tXFxubmV0L2lwdjQvdGNwX2lucHV0LmM9MTA3MD1zdGF0aWMgdm9pZCB0Y3BfcnR0X2VzdGltYXRvcihzdHJ1Y3Qgc29jayAqc2ssIGxvbmcgbXJ0dF91cylcXG4tLVxcbm5ldC9pcHY0L3RjcF9pbnB1dC5jLTExMjItXFxubmV0L2lwdjQvdGNwX2lucHV0LmM6MTEyMzpcXHRcXHRcXHR0Y3BfYnBmX3J0dChzaywgbXJ0dF91cywgc3J0dCk7XFxubmV0L2lwdjQvdGNwX2lucHV0LmMtMTEyNC1cXHRcXHR9XFxuLS1cXG5uZXQvaXB2NC90Y3BfaW5wdXQuYy0xMTMyLVxcbm5ldC9pcHY0L3RjcF9pbnB1dC5jOjExMzM6XFx0XFx0dGNwX2JwZl9ydHQoc2ssIG1ydHRfdXMsIHNydHQpO1xcbm5ldC9pcHY0L3RjcF9pbnB1dC5jLTExMzQtXFx0fVxcbi0tXFxubmV0L2lwdjQvdGNwX2lucHV0LmM9NzQyND1zdGF0aWMgdm9pZCB0Y3BfZWNuX2NyZWF0ZV9yZXF1ZXN0KHN0cnVjdCByZXF1ZXN0X3NvY2sgKnJlcSxcXG4tLVxcbm5ldC9pcHY0L3RjcF9pbnB1dC5jLTc0NTQtXFx0ICAgIChlY25fb2tfZHN0IFxcdTAwMjYgRFNUX0ZFQVRVUkVfRUNOX0NBKSB8fFxcbm5ldC9pcHY0L3RjcF9pbnB1dC5jOjc0NTU6XFx0ICAgIHRjcF9icGZfY2FfbmVlZHNfZWNuKChzdHJ1Y3Qgc29jayAqKXJlcSkpXFxubmV0L2lwdjQvdGNwX2lucHV0LmMtNzQ1Ni1cXHRcXHRpbmV0X3JzayhyZXEpLVxcdTAwM2VlY25fb2sgPSAxO1xcbi0tXFxubmV0L2lwdjQvdGNwX2lwdjQuYz0xMTU5PXN0YXRpYyBpbnQgdGNwX3Y0X3NlbmRfc3luYWNrKGNvbnN0IHN0cnVjdCBzb2NrICpzaywgc3RydWN0IGRzdF9lbnRyeSAqZHN0LFxcbi0tXFxubmV0L2lwdjQvdGNwX2lwdjQuYy0xMTg4LVxcdFxcdGlmICghSU5FVF9FQ05faXNfY2FwYWJsZSh0b3MpIFxcdTAwMjZcXHUwMDI2XFxubmV0L2lwdjQvdGNwX2lwdjQuYzoxMTg5OlxcdFxcdCAgICB0Y3BfYnBmX2NhX25lZWRzX2Vjbigoc3RydWN0IHNvY2sgKilyZXEpKVxcbm5ldC9pcHY0L3RjcF9pcHY0LmMtMTE5MC1cXHRcXHRcXHR0b3MgfD0gSU5FVF9FQ05fRUNUXzA7XFxuLS1cXG5uZXQvaXB2NC90Y3BfaXB2NC5jPTMzMzU9c3RydWN0IHByb3RvIHRjcF9wcm90ID0ge1xcbi0tXFxubmV0L2lwdjQvdGNwX2lwdjQuYy0zMzQ4LVxcdC5nZXRzb2Nrb3B0XFx0XFx0PSB0Y3BfZ2V0c29ja29wdCxcXG5uZXQvaXB2NC90Y3BfaXB2NC5jOjMzNDk6XFx0LmJwZl9ieXBhc3NfZ2V0c29ja29wdFxcdD0gdGNwX2JwZl9ieXBhc3NfZ2V0c29ja29wdCxcXG5uZXQvaXB2NC90Y3BfaXB2NC5jLTMzNTAtXFx0LmtlZXBhbGl2ZVxcdFxcdD0gdGNwX3NldF9rZWVwYWxpdmUsXFxuLS1cXG5uZXQvaXB2NC90Y3BfaXB2NC5jLTMzNjAtI2lmZGVmIENPTkZJR19CUEZfU1lTQ0FMTFxcbm5ldC9pcHY0L3RjcF9pcHY0LmM6MzM2MTpcXHQucHNvY2tfdXBkYXRlX3NrX3Byb3RcXHQ9IHRjcF9icGZfdXBkYXRlX3Byb3RvLFxcbm5ldC9pcHY0L3RjcF9pcHY0LmMtMzM2Mi0jZW5kaWZcXG4tLVxcbm5ldC9pcHY0L3RjcF9taW5pc29ja3MuYz01NDY9c3RydWN0IHNvY2sgKnRjcF9jcmVhdGVfb3BlbnJlcV9jaGlsZChjb25zdCBzdHJ1Y3Qgc29jayAqc2ssXFxuLS1cXG5uZXQvaXB2NC90Y3BfbWluaXNvY2tzLmMtNjYzLVxcdG5ld3RwLVxcdTAwM2VicGZfY2hnX2NjX2lucHJvZ3Jlc3MgPSAwO1xcbm5ldC9pcHY0L3RjcF9taW5pc29ja3MuYzo2NjQ6XFx0dGNwX2JwZl9jbG9uZShzaywgbmV3c2spO1xcbm5ldC9pcHY0L3RjcF9taW5pc29ja3MuYy02NjUtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA5VDEwOjUyOjM3LjQxNTU3MjQ0WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MjA3NTg4NjYxMTgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIG15IG93bjpcblxuKipJbnZlc3RpZ2F0aW5nIGEgTmV0d29yayBDb25maWd1cmF0aW9uIERlcGVuZGVuY3kqKlxuXG5BbHJpZ2h0LCBzbyB0aGUgY29uZmlnIG9wdGlvbiBJJ20gc2VlaW5nIGlzIGBDT05GSUdfTkVUX1NPQ0tfTVNHYC4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIGZpZ3VyZSBvdXQgd2hhdCBmdW5jdGlvbmFsaXR5IHRoaXMgZW5hYmxlcywgc3BlY2lmaWNhbGx5IHdpdGhpbiB0aGUga2VybmVsLiBHaXZlbiB0aGF0IHRoaXMgc2VlbXMgdG8gcmVsYXRlIHRvIHNvY2tldHMgYW5kIG1lc3NhZ2luZywgbXkgbmV4dCBpbnN0aW5jdCBpcyB0byBodW50IGRvd24gdGhlIHJlbGV2YW50IG1ha2VmaWxlcy4gSSdtIGdvaW5nIHRvIGp1bXAgaW50byBgbmV0L2lwdjQvTWFrZWZpbGVgIGltbWVkaWF0ZWx5LiBJJ20gZXhwZWN0aW5nIHRoaXMgZmlsZSB0byBwb3RlbnRpYWxseSBkZWZpbmUgZGVwZW5kZW5jaWVzLCBjb21waWxhdGlvbiB0YXJnZXRzLCBvciBldmVuIHNvdXJjZSBmaWxlcyByZWxhdGVkIHRvIHRoaXMgZnVuY3Rpb25hbGl0eS4gSSdtIHBhcnRpY3VsYXJseSBpbnRlcmVzdGVkIGluIGFueXRoaW5nIHJlbGF0ZWQgdG8gYHRjcF9icGYub2AuIEtub3dpbmcgdGhlIG5ldHdvcmsgY29kZSBiYXNlLCB0aGF0IHNtZWxscyBsaWtlIHNvbWV0aGluZyByZWxhdGVkIHRvIEJlcmtlbGV5IFBhY2tldCBGaWx0ZXIgKEJQRikgdXNhZ2UgaW4gdGhlIFRDUCBzdGFjay4gVGhlIHByZXNlbmNlIG9mIGBDT05GSUdfTkVUX1NPQ0tfTVNHYCBhbmQgYSByZWxhdGVkIEJQRiBvYmplY3Qgd291bGQgc3VnZ2VzdCBhIEJQRi1iYXNlZCBzb2NrZXQgbWVzc2FnaW5nIGVuaGFuY2VtZW50LiBJJ2xsIHNlZSB3aGF0IHRoZSBNYWtlZmlsZSByZXZlYWxzLiBMZXQncyBkaWcgaW4uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjgyMzUsIk91dHB1dFRva2VucyI6MzAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wOVQxMDo1Mjo1OC4xNzQ0NDEwOThaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Mjc4NzcwMTUyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInRjcF9icGZcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L2lwdjQvTWFrZWZpbGVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L2lwdjQvTWFrZWZpbGU9NjI9b2JqLSQoQ09ORklHX1RDUF9DT05HX0lMTElOT0lTKSArPSB0Y3BfaWxsaW5vaXMub1xcbm5ldC9pcHY0L01ha2VmaWxlOjYzOm9iai0kKENPTkZJR19ORVRfU09DS19NU0cpICs9IHRjcF9icGYub1xcbm5ldC9pcHY0L01ha2VmaWxlLTY0LW9iai0kKENPTkZJR19CUEZfU1lTQ0FMTCkgKz0gdWRwX2JwZi5vXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA5VDEwOjUyOjU4LjQ1MzIxODcxWiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTk3MDYyMDU0NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBbmFseXNpcyBvZiB0aGUgVENQIEJQRiBQYXRjaCoqXG5cbk9rYXksIHNvIEkgc2VlIHRoaXMgcGF0Y2ggcmVxdWlyZXMgYENPTkZJR19ORVRfU09DS19NU0dgLiBUaGF0IG1ha2VzIHNlbnNlOyB3ZSdyZSBkZWFsaW5nIHdpdGggc29ja2V0IG1lc3NhZ2luZy4gIEFuZCwgb2YgY291cnNlLCB0aGUgZXZlci1wcmVzZW50IGBDT05GSUdfQlBGX1NZU0NBTExgIGlzIGVzc2VudGlhbCBmb3IgYW55IEJQRi1yZWxhdGVkIGNoYW5nZXMuIEl0J3MgYSBnaXZlbi5cblxuTm93LCBsZXQncyBnZXQgaW50byB0aGUgY29kZS4gTXkgZm9jdXMgaXMgb24gYHRjcF9icGZfaW9jdGxgIGFuZCBgdGNwX2JwZl9yZWN2bXNnX3BhcnNlcmAuICBUaGUgZGVzY3JpcHRpb24gc3BlY2lmaWNhbGx5IGNhbGxzIG91dCBhIG1vZGlmaWNhdGlvbiB0byBgdGNwX2JwZl9pb2N0bGAsIHNvIHRoYXQncyB3aGVyZSBJIG5lZWQgdG8gZGlnIGluIGZpcnN0LlxuXG5JIG5lZWQgdG8gY29uZmlybSB3aGV0aGVyIGB0Y3BfYnBmX2lvY3RsYCBpcyB0aGUgb25seSBmdW5jdGlvbiBpbXBhY3RlZC4gWXVwLCBhY2NvcmRpbmcgdG8gdGhpcyBhbmFseXNpcywgaXQgbG9va3MgbGlrZSBgdGNwX2JwZl9pb2N0bGAgaW4gYG5ldC9pcHY0L3RjcF9icGYuY2AgaXMgdGhlIHByaW1hcnkgdGFyZ2V0LiAgQW5kIEkgc2VlIHRoYXQgYHNrX3Bzb2NrX21zZ19pbnFgIGhhcyBiZWVuIHJlbW92ZWQgZnJvbSBgaW5jbHVkZS9saW51eC9za21zZy5oYC4gVGhhdCBzZWVtcyBsaWtlIGFuIG9idmlvdXMgY29uc2VxdWVuY2Ugb2YgdGhlIGNoYW5nZXMuXG5cbk9rYXksIG5vdyBsZXQncyBtYWtlIHN1cmUgSSB1bmRlcnN0YW5kIHRoZSByZWFjaGFiaWxpdHkgb2YgYHRjcF9icGZfaW9jdGxgLiAgQWhhLCBpdCBpcyB0aGUgYC5pb2N0bGAgaGFuZGxlciBmb3IgVENQIHNvY2tldHMgdGhhdCBoYXZlIEJQRiBhdHRhY2hlZCwgb3IgYHRjcF9icGZfcHJvdHNgLiBTbyBpdCBnZXRzIGNhbGxlZCB3aGVuIGEgdXNlciBjYWxscyBgaW9jdGwoZmQsIFNJT0NJTlEsIC4uLilgIG9uIGEgVENQIHNvY2tldCB3aXRoaW4gYSBzb2NrbWFwLiBJJ20gc2F0aXNmaWVkLlxuXG5TbyBteSBrZXkgY29uZmlndXJhdGlvbnMgaGVyZSBhcmUgYE5FVF9TT0NLX01TR2AgYW5kIGBCUEZfU1lTQ0FMTGAuICBUaGUgY3JpdGljYWwgc3ltYm9sIGlzIHN0aWxsIGB0Y3BfYnBmX2lvY3RsYC5cblxuTGV0J3MgZG8gYSBxdWljayBkb3VibGUtY2hlY2sgdG8gY29uZmlybSB0aGF0IGBORVRfU09DS19NU0dgIGlzIGluZGVlZCBhIHVzZXItc2VsZWN0YWJsZSBjb25maWd1cmF0aW9uIG9wdGlvbi4gSSBuZWVkIHRvIGJlIHN1cmUuIFRoYXQncyBhIGdvb2Qgc2FuaXR5IGNoZWNrLlxuXG5cbiIsIklucHV0VG9rZW5zIjo4NjE0LCJPdXRwdXRUb2tlbnMiOjI2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjY5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA5VDEwOjUzOjA0LjQyMzg1MjY3NloiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1Mjc5MjU0MDI0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBORVRfU09DS19NU0dcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9LY29uZmlnPTQ3NT1jb25maWcgTkVUX1NFTEZURVNUU1xcbi0tXFxubmV0L0tjb25maWctNDc4LVxcbm5ldC9LY29uZmlnOjQ3OTpjb25maWcgTkVUX1NPQ0tfTVNHXFxubmV0L0tjb25maWctNDgwLVxcdGJvb2xcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDlUMTA6NTM6MDkuNzAzMTQwMjA5WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDMwNzAyMTM2MDQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0J3MgaW50ZXJuYWwgbW9ub2xvZ3VlOlxuXG4qKkludmVzdGlnYXRpbmcgdGhlIE5FVF9TT0NLX01TRyBDb25maWd1cmF0aW9uIE9wdGlvbioqXG5cblJpZ2h0LCBgTkVUX1NPQ0tfTVNHYC4uLiB0aGF0J3MgYSBiaXQgb2JzY3VyZS4gSXQncyBhIGhpZGRlbiBjb25maWcsIHNvIGl0J3Mgbm90IHNvbWV0aGluZyB5b3UnZCB0eXBpY2FsbHkgc2VlIGRpcmVjdGx5IGNvbmZpZ3VyZWQuIE15IGd1ZXNzLCBhbmQgaXQncyBqdXN0IGEgZ3Vlc3MgYmFzZWQgb24gdGhlIG5hbWUsIGlzIHRoYXQgaXQncyByZWxhdGVkIHRvIHNvY2tldCBtZXNzYWdpbmcgc29tZWhvdy4gSXQncyBsaWtlbHkgYWN0aXZhdGVkIGluZGlyZWN0bHkgdGhyb3VnaCBvdGhlciwgbW9yZSB2aXNpYmxlIG9wdGlvbnMuIGBCUEZfU1lTQ0FMTGAgbWFrZXMgc2Vuc2UgYXMgYSBwb3NzaWJsZSBzZWxlY3RvciwgZ2l2ZW4gaXRzIHJvbGUgaW4gZmlsdGVyaW5nIHN5c2NhbGxzLCBhbmQgYElORVRgIGlzIGFub3RoZXIgc3Ryb25nIGNvbnRlbmRlciwgZ2l2ZW4gaXRzIHJlbGF0aW9uc2hpcCB0byBJUCBuZXR3b3JraW5nLiBJIG5lZWQgdG8gdmVyaWZ5IHRoYXQgdGhvdWdoLiBUaW1lIHRvIHRyYWNlIHRoZSBkZXBlbmRlbmNpZXMgYW5kIGZpZ3VyZSBvdXQgd2hhdCBhY3R1YWxseSBlbmFibGVzIHRoaXMgdGhpbmcuIE5lZWQgdG8gdW5kZXJzdGFuZCBleGFjdGx5ICp3aHkqIGl0J3MgYmVpbmcgdXNlZC4gVGhlcmUncyBubyBwb2ludCBvZiB0aGlzIGV4aXN0aW5nIGluIHRoZSBmaXJzdCBwbGFjZSBpZiBpdCBpcyBub3Qgc2VsZWN0ZWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjkzODIsIk91dHB1dFRva2VucyI6MjYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozOSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wOVQxMDo1Mzo1Mi43NzMzNTg0OTRaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjY0NTEzOTE5NDksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwic2VsZWN0IE5FVF9TT0NLX01TR1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwia2VybmVsL2JwZi9LY29uZmlnPTI3PWNvbmZpZyBCUEZfU1lTQ0FMTFxcbi0tXFxua2VybmVsL2JwZi9LY29uZmlnLTMzLVxcdHNlbGVjdCBCSU5BUllfUFJJTlRGXFxua2VybmVsL2JwZi9LY29uZmlnOjM0OlxcdHNlbGVjdCBORVRfU09DS19NU0cgaWYgTkVUXFxua2VybmVsL2JwZi9LY29uZmlnLTM1LVxcdHNlbGVjdCBORVRfWEdSRVNTIGlmIE5FVFxcbi0tXFxubmV0L0tjb25maWc9MzYxPWNvbmZpZyBCUEZfU1RSRUFNX1BBUlNFUlxcbi0tXFxubmV0L0tjb25maWctMzY2LVxcdHNlbGVjdCBTVFJFQU1fUEFSU0VSXFxubmV0L0tjb25maWc6MzY3OlxcdHNlbGVjdCBORVRfU09DS19NU0dcXG5uZXQvS2NvbmZpZy0zNjgtXFx0aGVscFxcbi0tXFxubmV0L2lwdjQvS2NvbmZpZz0zODI9Y29uZmlnIElORVRfRVNQSU5UQ1BcXG4tLVxcbm5ldC9pcHY0L0tjb25maWctMzg1LVxcdHNlbGVjdCBTVFJFQU1fUEFSU0VSXFxubmV0L2lwdjQvS2NvbmZpZzozODY6XFx0c2VsZWN0IE5FVF9TT0NLX01TR1xcbm5ldC9pcHY0L0tjb25maWctMzg3LVxcdHNlbGVjdCBYRlJNX0VTUElOVENQXFxuLS1cXG5uZXQvaXB2Ni9LY29uZmlnPTkwPWNvbmZpZyBJTkVUNl9FU1BJTlRDUFxcbi0tXFxubmV0L2lwdjYvS2NvbmZpZy05My1cXHRzZWxlY3QgU1RSRUFNX1BBUlNFUlxcbm5ldC9pcHY2L0tjb25maWc6OTQ6XFx0c2VsZWN0IE5FVF9TT0NLX01TR1xcbm5ldC9pcHY2L0tjb25maWctOTUtXFx0c2VsZWN0IFhGUk1fRVNQSU5UQ1BcXG4tLVxcbm5ldC90bHMvS2NvbmZpZz01PWNvbmZpZyBUTFNcXG4tLVxcbm5ldC90bHMvS2NvbmZpZy0xMC1cXHRzZWxlY3QgQ1JZUFRPX0dDTVxcbm5ldC90bHMvS2NvbmZpZzoxMTpcXHRzZWxlY3QgTkVUX1NPQ0tfTVNHXFxubmV0L3Rscy9LY29uZmlnLTEyLVxcdGRlZmF1bHQgblxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wOVQxMDo1Mzo1OS4yMjQ3NTk4NDJaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6OTQyOTA4OTYwMTAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudCBvZiB0aGUgUGF0Y2gncyBGdXp6aW5nIFBvdGVudGlhbCoqXG5cbk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgdHJpZ2dlcmVkIGJ5IGBCUEZfU1lTQ0FMTGAgaWYgdGhlIGBORVRgIGNvbmZpZ3VyYXRpb24gb3B0aW9uIGlzIGFjdGl2ZS4gVGhlcmVmb3JlLCBgQlBGX1NZU0NBTExgIGlzIHRoZSBjcnVjaWFsIGNvbmZpZ3VyYXRpb24gb3B0aW9uIHRvIGVuYWJsZSBmb3IgZnV6emluZyBjb3ZlcmFnZS5cblxuSSBuZWVkIHRvIGNvbmZpcm0gdGhhdCBgdGNwX2JwZl9pb2N0bGAgaXMgdGhlIHNvbGUgZnVuY3Rpb24gaW1wYWN0ZWQuIFllcywgdGhlIGRpZmYgY29uZmlybXMgdGhhdCBgdGNwX2JwZl9pb2N0bGAgaXMgaW5kZWVkIHRoZSAqb25seSogZnVuY3Rpb24gbW9kaWZpZWQgYnkgdGhpcyBwYXRjaC5cblxuUmlnaHQsIEkgY2FuIG5vdyBzdWNjaW5jdGx5IHN1bW1hcml6ZSBteSBmaW5kaW5ncy5cblxuQmFzZWQgb24gbXkgYW5hbHlzaXMsIHRoaXMgcGF0Y2ggcHJlc2VudHMgYSB3b3J0aHdoaWxlIHRhcmdldCBmb3IgZnV6emluZy4gVGhlIGtleSBmdW5jdGlvbiB0byBmb2N1cyBvbiBpcyBgdGNwX2JwZl9pb2N0bGAuIEkgd2lsbCBhbHNvIGluY2x1ZGUgdGhlIGNvbmZpZ3VyYXRpb24gYEJQRl9TWVNDQUxMYCBpbiB0aGUgZnV6emluZyBjb25maWd1cmF0aW9uLiBUaGUgcmVhc29uaW5nIGlzIGNsZWFyOiB0aGUgcGF0Y2ggaXMgZnVuZGFtZW50YWxseSBhbHRlcmluZyBgdGNwX2JwZl9pb2N0bGAgdG8gcHJvcGVybHkgaGFuZGxlIGBTSU9DSU5RYCAoRklPTlJFQUQpIGZvciBUQ1Agc29ja2V0cyB3aXRoaW4gYSBzb2NrbWFwLCBzcGVjaWZpY2FsbHkgYWNjb3VudGluZyBmb3IgZGF0YSB3aXRoaW4gdGhlIGBza19yZWNlaXZlX3F1ZXVlYCB1bmRlciBjaXJjdW1zdGFuY2VzIHdoZXJlIGEgdmVyZGljdCBwcm9ncmFtIGlzIGFic2VudC4gVGhpcyBmdW5jdGlvbmFsaXR5IGlzIGNvcmUga2VybmVsIGxvZ2ljIHRoYXQgZGlyZWN0bHkgcmVsYXRlcyB0byBCUEYgYW5kIFRDUCBpbnRlcmFjdGlvbnMsIHRodXMgcHJlc2VudGluZyBhbiBhcmVhIHN1c2NlcHRpYmxlIHRvIHBvdGVudGlhbCB2dWxuZXJhYmlsaXRpZXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEwMDQzLCJPdXRwdXRUb2tlbnMiOjEwOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE4MCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wOVQxMDo1NTozMy41MTU2NTk5NDNaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyOTA4MDcyMzEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkJQRl9TWVNDQUxMXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwidGNwX2JwZl9pb2N0bFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIGB0Y3BfYnBmX2lvY3RsYCB0byBjb3JyZWN0bHkgYWNjb3VudCBmb3IgZGF0YSBpbiBgc2tfcmVjZWl2ZV9xdWV1ZWAgd2hlbiBoYW5kbGluZyBgU0lPQ0lOUWAgKEZJT05SRUFEKSBmb3IgVENQIHNvY2tldHMgaW4gYSBzb2NrbWFwIHdpdGhvdXQgYSB2ZXJkaWN0IHByb2dyYW0uIFRoaXMgaXMgZnVuY3Rpb25hbCBjb3JlIGtlcm5lbCBsb2dpYyByZWxhdGVkIHRvIEJQRiBhbmQgVENQLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkJQRl9TWVNDQUxMXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwidGNwX2JwZl9pb2N0bFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIGB0Y3BfYnBmX2lvY3RsYCB0byBjb3JyZWN0bHkgYWNjb3VudCBmb3IgZGF0YSBpbiBgc2tfcmVjZWl2ZV9xdWV1ZWAgd2hlbiBoYW5kbGluZyBgU0lPQ0lOUWAgKEZJT05SRUFEKSBmb3IgVENQIHNvY2tldHMgaW4gYSBzb2NrbWFwIHdpdGhvdXQgYSB2ZXJkaWN0IHByb2dyYW0uIFRoaXMgaXMgZnVuY3Rpb25hbCBjb3JlIGtlcm5lbCBsb2dpYyByZWxhdGVkIHRvIEJQRiBhbmQgVENQLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+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-workflowjrfc4[1] Phase: Succeeded StartedAt: 2026-07-09 10:55:45 +0000 UTC FinishedAt: 2026-07-09 10:55:45 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjrfc4[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-07-09 10:55:45 +0000 UTC FinishedAt: 2026-07-09 10:55:45 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjrfc4[2] Phase: Succeeded StartedAt: 2026-07-09 10:55:45 +0000 UTC FinishedAt: 2026-07-09 15:13:42 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjrfc4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d2c9a99135da931377240942d44f3dea104cedb8","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["tcp_bpf_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d2c9a99135da931377240942d44f3dea104cedb8","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"5320af87-e9bc-400b-baae-e44f813ea9cc","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-07-09 10:55:45 +0000 UTC FinishedAt: 2026-07-09 15:13:42 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"d2c9a99135da931377240942d44f3dea104cedb8","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["tcp_bpf_ioctl"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"d2c9a99135da931377240942d44f3dea104cedb8","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"5320af87-e9bc-400b-baae-e44f813ea9cc","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowjrfc4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d2c9a99135da931377240942d44f3dea104cedb8","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["tcp_bpf_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d2c9a99135da931377240942d44f3dea104cedb8","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"5320af87-e9bc-400b-baae-e44f813ea9cc","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-07-09 10:55:45 +0000 UTC FinishedAt: 2026-07-09 10:56:31 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjrfc4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d2c9a99135da931377240942d44f3dea104cedb8","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["tcp_bpf_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d2c9a99135da931377240942d44f3dea104cedb8","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"5320af87-e9bc-400b-baae-e44f813ea9cc","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-07-09 10:55:45 +0000 UTC FinishedAt: 2026-07-09 10:56:26 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"d2c9a99135da931377240942d44f3dea104cedb8","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowjrfc4/series-workflowjrfc4-convert-artifact-4241624400/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowjrfc4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d2c9a99135da931377240942d44f3dea104cedb8","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["tcp_bpf_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d2c9a99135da931377240942d44f3dea104cedb8","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"5320af87-e9bc-400b-baae-e44f813ea9cc","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-07-09 10:56:31 +0000 UTC FinishedAt: 2026-07-09 11:29:47 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjrfc4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d2c9a99135da931377240942d44f3dea104cedb8","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["tcp_bpf_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d2c9a99135da931377240942d44f3dea104cedb8","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"5320af87-e9bc-400b-baae-e44f813ea9cc","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-07-09 10:56:31 +0000 UTC FinishedAt: 2026-07-09 11:29:47 +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:*ac202c53-8ed5-404e-af28-4c798050cd84,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-workflowjrfc4/series-workflowjrfc4-convert-artifact-4241624400/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": "6f983c61-941a-4f8b-ac85-fcbbdb35b07f", "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-workflowjrfc4/series-workflowjrfc4-build-action-1061485526/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowjrfc4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d2c9a99135da931377240942d44f3dea104cedb8","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["tcp_bpf_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d2c9a99135da931377240942d44f3dea104cedb8","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"5320af87-e9bc-400b-baae-e44f813ea9cc","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-07-09 10:56:31 +0000 UTC FinishedAt: 2026-07-09 11:29:17 +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:*ac202c53-8ed5-404e-af28-4c798050cd84,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-workflowjrfc4/series-workflowjrfc4-convert-artifact-4241624400/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": "6f983c61-941a-4f8b-ac85-fcbbdb35b07f", "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-workflowjrfc4/series-workflowjrfc4-build-action-1061485526/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowjrfc4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d2c9a99135da931377240942d44f3dea104cedb8","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["tcp_bpf_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d2c9a99135da931377240942d44f3dea104cedb8","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"5320af87-e9bc-400b-baae-e44f813ea9cc","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-07-09 11:29:47 +0000 UTC FinishedAt: 2026-07-09 11:29:47 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjrfc4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d2c9a99135da931377240942d44f3dea104cedb8","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["tcp_bpf_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d2c9a99135da931377240942d44f3dea104cedb8","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"5320af87-e9bc-400b-baae-e44f813ea9cc","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-07-09 11:29:47 +0000 UTC FinishedAt: 2026-07-09 11:29:47 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjrfc4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d2c9a99135da931377240942d44f3dea104cedb8","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["tcp_bpf_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d2c9a99135da931377240942d44f3dea104cedb8","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"5320af87-e9bc-400b-baae-e44f813ea9cc","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-07-09 11:29:47 +0000 UTC FinishedAt: 2026-07-09 11:30:14 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjrfc4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d2c9a99135da931377240942d44f3dea104cedb8","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["tcp_bpf_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d2c9a99135da931377240942d44f3dea104cedb8","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"5320af87-e9bc-400b-baae-e44f813ea9cc","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-07-09 11:29:47 +0000 UTC FinishedAt: 2026-07-09 11:30:07 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"d2c9a99135da931377240942d44f3dea104cedb8","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"5320af87-e9bc-400b-baae-e44f813ea9cc","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowjrfc4/series-workflowjrfc4-convert-artifact-4197296311/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowjrfc4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d2c9a99135da931377240942d44f3dea104cedb8","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["tcp_bpf_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d2c9a99135da931377240942d44f3dea104cedb8","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"5320af87-e9bc-400b-baae-e44f813ea9cc","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-07-09 11:30:14 +0000 UTC FinishedAt: 2026-07-09 11:32:28 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjrfc4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d2c9a99135da931377240942d44f3dea104cedb8","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["tcp_bpf_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d2c9a99135da931377240942d44f3dea104cedb8","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"5320af87-e9bc-400b-baae-e44f813ea9cc","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-07-09 11:30:14 +0000 UTC FinishedAt: 2026-07-09 11:32:19 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*6f983c61-941a-4f8b-ac85-fcbbdb35b07f,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-workflowjrfc4/series-workflowjrfc4-build-action-1061485526/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-workflowjrfc4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d2c9a99135da931377240942d44f3dea104cedb8","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["tcp_bpf_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d2c9a99135da931377240942d44f3dea104cedb8","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"5320af87-e9bc-400b-baae-e44f813ea9cc","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-07-09 11:32:28 +0000 UTC FinishedAt: 2026-07-09 11:32:28 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjrfc4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d2c9a99135da931377240942d44f3dea104cedb8","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["tcp_bpf_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d2c9a99135da931377240942d44f3dea104cedb8","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"5320af87-e9bc-400b-baae-e44f813ea9cc","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-07-09 11:32:28 +0000 UTC FinishedAt: 2026-07-09 11:32:28 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjrfc4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d2c9a99135da931377240942d44f3dea104cedb8","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["tcp_bpf_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d2c9a99135da931377240942d44f3dea104cedb8","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"5320af87-e9bc-400b-baae-e44f813ea9cc","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-07-09 11:32:28 +0000 UTC FinishedAt: 2026-07-09 12:10:20 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjrfc4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d2c9a99135da931377240942d44f3dea104cedb8","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["tcp_bpf_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d2c9a99135da931377240942d44f3dea104cedb8","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"5320af87-e9bc-400b-baae-e44f813ea9cc","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-07-09 11:32:28 +0000 UTC FinishedAt: 2026-07-09 12:10:20 +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:*ac202c53-8ed5-404e-af28-4c798050cd84,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-workflowjrfc4/series-workflowjrfc4-convert-artifact-4197296311/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": "b5d145f9-0f38-4d10-9009-48635aca4d2b", "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-workflowjrfc4/series-workflowjrfc4-build-action-1671497851/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowjrfc4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d2c9a99135da931377240942d44f3dea104cedb8","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["tcp_bpf_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d2c9a99135da931377240942d44f3dea104cedb8","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"5320af87-e9bc-400b-baae-e44f813ea9cc","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-07-09 11:32:28 +0000 UTC FinishedAt: 2026-07-09 12:10:10 +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:*ac202c53-8ed5-404e-af28-4c798050cd84,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-workflowjrfc4/series-workflowjrfc4-convert-artifact-4197296311/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": "b5d145f9-0f38-4d10-9009-48635aca4d2b", "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-workflowjrfc4/series-workflowjrfc4-build-action-1671497851/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowjrfc4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d2c9a99135da931377240942d44f3dea104cedb8","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["tcp_bpf_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d2c9a99135da931377240942d44f3dea104cedb8","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"5320af87-e9bc-400b-baae-e44f813ea9cc","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-07-09 12:10:20 +0000 UTC FinishedAt: 2026-07-09 12:10:20 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjrfc4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d2c9a99135da931377240942d44f3dea104cedb8","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["tcp_bpf_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d2c9a99135da931377240942d44f3dea104cedb8","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"5320af87-e9bc-400b-baae-e44f813ea9cc","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-07-09 12:10:20 +0000 UTC FinishedAt: 2026-07-09 12:10:20 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjrfc4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d2c9a99135da931377240942d44f3dea104cedb8","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["tcp_bpf_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d2c9a99135da931377240942d44f3dea104cedb8","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"5320af87-e9bc-400b-baae-e44f813ea9cc","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-07-09 12:10:20 +0000 UTC FinishedAt: 2026-07-09 12:12:21 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjrfc4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d2c9a99135da931377240942d44f3dea104cedb8","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["tcp_bpf_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d2c9a99135da931377240942d44f3dea104cedb8","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"5320af87-e9bc-400b-baae-e44f813ea9cc","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-07-09 12:10:20 +0000 UTC FinishedAt: 2026-07-09 12:12:11 +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:*b5d145f9-0f38-4d10-9009-48635aca4d2b,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-workflowjrfc4/series-workflowjrfc4-build-action-1671497851/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-workflowjrfc4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d2c9a99135da931377240942d44f3dea104cedb8","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["tcp_bpf_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d2c9a99135da931377240942d44f3dea104cedb8","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"5320af87-e9bc-400b-baae-e44f813ea9cc","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-07-09 12:12:21 +0000 UTC FinishedAt: 2026-07-09 15:13:42 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjrfc4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d2c9a99135da931377240942d44f3dea104cedb8","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["tcp_bpf_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d2c9a99135da931377240942d44f3dea104cedb8","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"5320af87-e9bc-400b-baae-e44f813ea9cc","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-07-09 12:12:21 +0000 UTC FinishedAt: 2026-07-09 15:13:42 +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-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["tcp_bpf_ioctl"],"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:*6f983c61-941a-4f8b-ac85-fcbbdb35b07f,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*b5d145f9-0f38-4d10-9009-48635aca4d2b,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-workflowjrfc4/series-workflowjrfc4-build-action-1061485526/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-workflowjrfc4/series-workflowjrfc4-build-action-1671497851/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowjrfc4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d2c9a99135da931377240942d44f3dea104cedb8","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["tcp_bpf_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d2c9a99135da931377240942d44f3dea104cedb8","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"5320af87-e9bc-400b-baae-e44f813ea9cc","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-07-09 12:12:21 +0000 UTC FinishedAt: 2026-07-09 12:12:32 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjrfc4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d2c9a99135da931377240942d44f3dea104cedb8","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["tcp_bpf_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d2c9a99135da931377240942d44f3dea104cedb8","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"5320af87-e9bc-400b-baae-e44f813ea9cc","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-07-09 12:12:21 +0000 UTC FinishedAt: 2026-07-09 12:12:27 +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-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["tcp_bpf_ioctl"],"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-workflowjrfc4/series-workflowjrfc4-convert-artifact-715020528/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowjrfc4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d2c9a99135da931377240942d44f3dea104cedb8","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["tcp_bpf_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d2c9a99135da931377240942d44f3dea104cedb8","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"5320af87-e9bc-400b-baae-e44f813ea9cc","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-07-09 12:12:21 +0000 UTC FinishedAt: 2026-07-09 12:12:21 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjrfc4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d2c9a99135da931377240942d44f3dea104cedb8","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["tcp_bpf_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d2c9a99135da931377240942d44f3dea104cedb8","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"5320af87-e9bc-400b-baae-e44f813ea9cc","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-07-09 12:12:21 +0000 UTC FinishedAt: 2026-07-09 12:12:21 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjrfc4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d2c9a99135da931377240942d44f3dea104cedb8","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["tcp_bpf_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d2c9a99135da931377240942d44f3dea104cedb8","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"5320af87-e9bc-400b-baae-e44f813ea9cc","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-07-09 12:12:22 +0000 UTC FinishedAt: 2026-07-09 12:12:22 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjrfc4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d2c9a99135da931377240942d44f3dea104cedb8","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["tcp_bpf_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d2c9a99135da931377240942d44f3dea104cedb8","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"5320af87-e9bc-400b-baae-e44f813ea9cc","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-07-09 12:12:32 +0000 UTC FinishedAt: 2026-07-09 15:13:42 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjrfc4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d2c9a99135da931377240942d44f3dea104cedb8","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["tcp_bpf_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d2c9a99135da931377240942d44f3dea104cedb8","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"5320af87-e9bc-400b-baae-e44f813ea9cc","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-07-09 12:12:32 +0000 UTC FinishedAt: 2026-07-09 15:13:32 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*6f983c61-941a-4f8b-ac85-fcbbdb35b07f,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*b5d145f9-0f38-4d10-9009-48635aca4d2b,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-workflowjrfc4/series-workflowjrfc4-build-action-1061485526/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-workflowjrfc4/series-workflowjrfc4-build-action-1671497851/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-workflowjrfc4/series-workflowjrfc4-convert-artifact-715020528/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,}