Name: series-workflowqgpsp Phase: Succeeded StartedAt: 2026-07-02 16:23:53 +0000 UTC FinishedAt: 2026-07-02 20:58:33 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqgpsp[0] Phase: Succeeded StartedAt: 2026-07-02 16:23:53 +0000 UTC FinishedAt: 2026-07-02 16:38:02 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqgpsp[0].run-triage Phase: Succeeded StartedAt: 2026-07-02 16:23:53 +0000 UTC FinishedAt: 2026-07-02 16:38:02 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "d8e8b85a85fe21954d303db68034aac4639df88d", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BPF_SYSCALL", "BPF_STREAM_PARSER" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "d8e8b85a85fe21954d303db68034aac4639df88d", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BPF_SYSCALL", "BPF_STREAM_PARSER" ], "series_id": "4e234b9e-b54c-4e54-ab82-b8e9daa38275" }, "track": "KASAN", "fuzz": { "focus": [ "bpf", "net" ], "focus_symbols": [ "tcp_eat_skb", "sk_psock_verdict_apply", "sk_psock_verdict_recv" ], "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+CgkJCTx0ZD4yMDI2LzA3LzAyIDE2OjM2PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JQRl9TWVNDQUxMJiMzNDssCiAgICAmIzM0O0JQRl9TVFJFQU1fUEFSU0VSJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7dGNwX2VhdF9za2ImIzM0OywKICAgICYjMzQ7c2tfcHNvY2tfdmVyZGljdF9hcHBseSYjMzQ7LAogICAgJiMzNDtza19wc29ja192ZXJkaWN0X3JlY3YmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgY29yZSBCUEYgc29ja21hcCBsb2dpYyBpbiB0Y3BfZWF0X3NrYiwgY2hhbmdpbmcgaG93IFRDUCBjb3BpZWRfc2VxIGlzIHVwZGF0ZWQgd2hlbiBwYWNrZXRzIGFyZSBkcm9wcGVkIG9yIHJlZGlyZWN0ZWQuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBuZXR3b3JrIHByb2Nlc3NpbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDIgMTY6MzY8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCBlNGJiZTE5MGU5NjM3YWQ3NGJhOTA4Y2JhMzk1Njk1MWVhM2YwZmYzXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFRodSBKdWwgMiAxNjozNjoyMiAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9uZXQvaXB2NC90Y3BfYnBmLmMgYi9uZXQvaXB2NC90Y3BfYnBmLmNcbmluZGV4IGNjMGJkNzNmMzZiNmQ2Li5kNjQwZjhlMDY1Mjk3OCAxMDA2NDRcbi0tLSBhL25ldC9pcHY0L3RjcF9icGYuY1xuJiM0MzsmIzQzOyYjNDM7IGIvbmV0L2lwdjQvdGNwX2JwZi5jXG5AQCAtMTUsNyAmIzQzOzE1LDcgQEBcbiB2b2lkIHRjcF9lYXRfc2tiKHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX2J1ZmYgKnNrYilcbiB7XG4gXHRzdHJ1Y3QgdGNwX3NvY2sgKnRjcDtcbi1cdGludCBjb3BpZWQ7XG4mIzQzO1x0dTMyIGVuZF9zZXEsIGRlbHRhO1xuIFxuIFx0aWYgKCFza2IgfHwgIXNrYi1cdTAwM2VsZW4gfHwgIXNrX2lzX3RjcChzaykpXG4gXHRcdHJldHVybjtcbkBAIC0yNCwxMCAmIzQzOzI0LDExIEBAIHZvaWQgdGNwX2VhdF9za2Ioc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuIFx0XHRyZXR1cm47XG4gXG4gXHR0Y3AgPSB0Y3Bfc2soc2spO1xuLVx0Y29waWVkID0gdGNwLVx1MDAzZWNvcGllZF9zZXEgJiM0Mzsgc2tiLVx1MDAzZWxlbjtcbi1cdFdSSVRFX09OQ0UodGNwLVx1MDAzZWNvcGllZF9zZXEsIGNvcGllZCk7XG4mIzQzO1x0ZW5kX3NlcSA9IFRDUF9TS0JfQ0Ioc2tiKS1cdTAwM2VlbmRfc2VxO1xuJiM0MztcdGRlbHRhID0gZW5kX3NlcSAtIHRjcC1cdTAwM2Vjb3BpZWRfc2VxO1xuJiM0MztcdFdSSVRFX09OQ0UodGNwLVx1MDAzZWNvcGllZF9zZXEsIGVuZF9zZXEpO1xuIFx0dGNwX3Jjdl9zcGFjZV9hZGp1c3Qoc2spO1xuLVx0X190Y3BfY2xlYW51cF9yYnVmKHNrLCBza2ItXHUwMDNlbGVuKTtcbiYjNDM7XHRfX3RjcF9jbGVhbnVwX3JidWYoc2ssIGRlbHRhKTtcbiB9XG4gXG4gc3RhdGljIGludCBicGZfdGNwX2luZ3Jlc3Moc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3Qgc2tfcHNvY2sgKnBzb2NrLFxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3NvY2ttYXBfYmFzaWMuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3NvY2ttYXBfYmFzaWMuY1xuaW5kZXggY2IzMjI5NzExZjkzYTMuLjEwNmRkMDNjZGU4NGVmIDEwMDY0NFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvc29ja21hcF9iYXNpYy5jXG4mIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9zb2NrbWFwX2Jhc2ljLmNcbkBAIC0xMjc1LDYgJiM0MzsxMjc1LDc3IEBAIHN0YXRpYyB2b2lkIHRlc3Rfc29ja21hcF9jb3BpZWRfc2VxKGJvb2wgc3RycClcbiBcdHRlc3Rfc29ja21hcF9wYXNzX3Byb2dfX2Rlc3Ryb3koc2tlbCk7XG4gfVxuIFxuJiM0MztzdGF0aWMgdm9pZCB0ZXN0X3NvY2ttYXBfZHJvcF9hZnRlcl9wYXJ0aWFsX3JlYWQodm9pZClcbiYjNDM7e1xuJiM0MztcdGludCBtYXAsIGVyciwgc2VudCwgcmVjdmQsIHplcm8gPSAwLCBvbiA9IDE7XG4mIzQzO1x0c3RydWN0IHRlc3Rfc29ja21hcF9kcm9wX3Byb2cgKnNrZWw7XG4mIzQzO1x0aW50IGMwID0gLTEsIHAwID0gLTEsIGMxID0gLTEsIHAxID0gLTE7XG4mIzQzO1x0c3RydWN0IHRjcF96ZXJvY29weV9yZWNlaXZlIHpjID0ge307XG4mIzQzO1x0c29ja2xlbl90IHpjX2xlbiA9IHNpemVvZih6Yyk7XG4mIzQzO1x0Y2hhciBidWZbMjAwXSA9IHt9LCByY3ZbNTBdLCBhZGRyWzEwMF07XG4mIzQzO1x0c3RydWN0IGJwZl9wcm9ncmFtICpwcm9nO1xuJiM0MztcbiYjNDM7XHRza2VsID0gdGVzdF9zb2NrbWFwX2Ryb3BfcHJvZ19fb3Blbl9hbmRfbG9hZCgpO1xuJiM0MztcdGlmICghQVNTRVJUX09LX1BUUihza2VsLCBcJiMzNDtvcGVuX2FuZF9sb2FkXCYjMzQ7KSlcbiYjNDM7XHRcdHJldHVybjtcbiYjNDM7XG4mIzQzO1x0aWYgKGNyZWF0ZV9zb2NrZXRfcGFpcnMoQUZfSU5FVCwgU09DS19TVFJFQU0sIFx1MDAyNmMwLCBcdTAwMjZjMSwgXHUwMDI2cDAsIFx1MDAyNnAxKSlcbiYjNDM7XHRcdGdvdG8gZW5kO1xuJiM0MztcbiYjNDM7XHRzZW50ID0geHNlbmQoYzAsIGJ1Ziwgc2l6ZW9mKGJ1ZiksIDApO1xuJiM0MztcdGlmICghQVNTRVJUX0VRKHNlbnQsIHNpemVvZihidWYpLCBcJiMzNDt4c2VuZChuYXRpdmUpXCYjMzQ7KSlcbiYjNDM7XHRcdGdvdG8gZW5kO1xuJiM0MztcbiYjNDM7XHRyZWN2ZCA9IHJlY3ZfdGltZW91dChwMCwgcmN2LCBzaXplb2YocmN2KSwgTVNHX0RPTlRXQUlULCAxKTtcbiYjNDM7XHRpZiAoIUFTU0VSVF9FUShyZWN2ZCwgc2l6ZW9mKHJjdiksIFwmIzM0O3JlY3ZfdGltZW91dChwYXJ0aWFsKVwmIzM0OykpXG4mIzQzO1x0XHRnb3RvIGVuZDtcbiYjNDM7XG4mIzQzO1x0cHJvZyA9IHNrZWwtXHUwMDNlcHJvZ3MucHJvZ19za2JfdmVyZGljdDtcbiYjNDM7XHRtYXAgPSBicGZfbWFwX19mZChza2VsLVx1MDAzZW1hcHMuc29ja19tYXBfcngpO1xuJiM0MztcdGVyciA9IGJwZl9wcm9nX2F0dGFjaChicGZfcHJvZ3JhbV9fZmQocHJvZyksIG1hcCxcbiYjNDM7XHRcdFx0ICAgICAgQlBGX1NLX1NLQl9TVFJFQU1fVkVSRElDVCwgMCk7XG4mIzQzO1x0aWYgKCFBU1NFUlRfT0soZXJyLCBcJiMzNDticGZfcHJvZ19hdHRhY2hcJiMzNDspKVxuJiM0MztcdFx0Z290byBlbmQ7XG4mIzQzO1xuJiM0MztcdGVyciA9IGJwZl9tYXBfdXBkYXRlX2VsZW0obWFwLCBcdTAwMjZ6ZXJvLCBcdTAwMjZwMCwgQlBGX05PRVhJU1QpO1xuJiM0MztcdGlmICghQVNTRVJUX09LKGVyciwgXCYjMzQ7YnBmX21hcF91cGRhdGVfZWxlbVwmIzM0OykpXG4mIzQzO1x0XHRnb3RvIGVuZDtcbiYjNDM7XG4mIzQzO1x0c2VudCA9IHhzZW5kKGMwLCBidWYsIDEsIDApO1xuJiM0MztcdGlmICghQVNTRVJUX0VRKHNlbnQsIDEsIFwmIzM0O3hzZW5kKGRyb3ApXCYjMzQ7KSlcbiYjNDM7XHRcdGdvdG8gZW5kO1xuJiM0MztcbiYjNDM7XHRlcnIgPSBicGZfbWFwX2RlbGV0ZV9lbGVtKG1hcCwgXHUwMDI2emVybyk7XG4mIzQzO1x0aWYgKCFBU1NFUlRfT0soZXJyLCBcJiMzNDticGZfbWFwX2RlbGV0ZV9lbGVtXCYjMzQ7KSlcbiYjNDM7XHRcdGdvdG8gZW5kO1xuJiM0MztcbiYjNDM7XHRzZW50ID0geHNlbmQoYzAsIGJ1ZiwgMSwgMCk7XG4mIzQzO1x0aWYgKCFBU1NFUlRfRVEoc2VudCwgMSwgXCYjMzQ7eHNlbmQobmF0aXZlIGFnYWluKVwmIzM0OykpXG4mIzQzO1x0XHRnb3RvIGVuZDtcbiYjNDM7XG4mIzQzO1x0ZXJyID0gc2V0c29ja29wdChwMCwgU09MX1NPQ0tFVCwgU09fWkVST0NPUFksIFx1MDAyNm9uLCBzaXplb2Yob24pKTtcbiYjNDM7XHRpZiAoIUFTU0VSVF9PSyhlcnIsIFwmIzM0O3NldHNvY2tvcHQoU09fWkVST0NPUFkpXCYjMzQ7KSlcbiYjNDM7XHRcdGdvdG8gZW5kO1xuJiM0MztcbiYjNDM7XHR6Yy5jb3B5YnVmX2FkZHJlc3MgPSAoX191NjQpKHVuc2lnbmVkIGxvbmcpYWRkcjtcbiYjNDM7XHR6Yy5jb3B5YnVmX2xlbiA9IHNpemVvZihhZGRyKTtcbiYjNDM7XHRlcnIgPSBnZXRzb2Nrb3B0KHAwLCBJUFBST1RPX1RDUCwgVENQX1pFUk9DT1BZX1JFQ0VJVkUsIFx1MDAyNnpjLCBcdTAwMjZ6Y19sZW4pO1xuJiM0MztcdGlmICghQVNTRVJUX09LKGVyciwgXCYjMzQ7Z2V0c29ja29wdChUQ1BfWkVST0NPUFlfUkVDRUlWRSlcJiMzNDspKVxuJiM0MztcdFx0Z290byBlbmQ7XG4mIzQzO1xuJiM0MztcdEFTU0VSVF9FUSh6Yy5jb3B5YnVmX2xlbiwgMSwgXCYjMzQ7VENQX1pFUk9DT1BZX1JFQ0VJVkUgY29waWVkXCYjMzQ7KTtcbiYjNDM7ZW5kOlxuJiM0MztcdGlmIChjMCBcdTAwM2U9IDApXG4mIzQzO1x0XHRjbG9zZShjMCk7XG4mIzQzO1x0aWYgKHAwIFx1MDAzZT0gMClcbiYjNDM7XHRcdGNsb3NlKHAwKTtcbiYjNDM7XHRpZiAoYzEgXHUwMDNlPSAwKVxuJiM0MztcdFx0Y2xvc2UoYzEpO1xuJiM0MztcdGlmIChwMSBcdTAwM2U9IDApXG4mIzQzO1x0XHRjbG9zZShwMSk7XG4mIzQzO1x0dGVzdF9zb2NrbWFwX2Ryb3BfcHJvZ19fZGVzdHJveShza2VsKTtcbiYjNDM7fVxuJiM0MztcbiAvKiBXYWl0IHVudGlsIEZJT05SRUFEIHJldHVybnMgdGhlIGV4cGVjdGVkIHZhbHVlIG9yIHRpbWVvdXQgKi9cbiBzdGF0aWMgaW50IHdhaXRfZm9yX2Zpb25yZWFkKGludCBmZCwgaW50IGV4cGVjdGVkLCB1bnNpZ25lZCBpbnQgdGltZW91dF9tcylcbiB7XG5AQCAtMTQ0Nyw2ICYjNDM7MTUxOCw4IEBAIHZvaWQgdGVzdF9zb2NrbWFwX2Jhc2ljKHZvaWQpXG4gXHRcdHRlc3Rfc29ja21hcF9jb3BpZWRfc2VxKGZhbHNlKTtcbiBcdGlmICh0ZXN0X19zdGFydF9zdWJ0ZXN0KFwmIzM0O3NvY2ttYXAgcmVjb3ZlciB3aXRoIHN0cnBcJiMzNDspKVxuIFx0XHR0ZXN0X3NvY2ttYXBfY29waWVkX3NlcSh0cnVlKTtcbiYjNDM7XHRpZiAodGVzdF9fc3RhcnRfc3VidGVzdChcJiMzNDtzb2NrbWFwIGRyb3AgYWZ0ZXIgcGFydGlhbCByZWFkXCYjMzQ7KSlcbiYjNDM7XHRcdHRlc3Rfc29ja21hcF9kcm9wX2FmdGVyX3BhcnRpYWxfcmVhZCgpO1xuIFx0aWYgKHRlc3RfX3N0YXJ0X3N1YnRlc3QoXCYjMzQ7c29ja21hcCB0Y3AgbXVsdGkgY2hhbm5lbHNcJiMzNDspKVxuIFx0XHR0ZXN0X3NvY2ttYXBfbXVsdGlfY2hhbm5lbHMoU09DS19TVFJFQU0pO1xuIFx0aWYgKHRlc3RfX3N0YXJ0X3N1YnRlc3QoXCYjMzQ7c29ja21hcCB1ZHAgbXVsdGkgY2hhbm5lbHNcJiMzNDspKVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAyIDE2OjM2PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JQRl9TWVNDQUxMJiMzNDssCiAgICAmIzM0O0JQRl9TVFJFQU1fUEFSU0VSJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7dGNwX2VhdF9za2ImIzM0OywKICAgICYjMzQ7c2tfcHNvY2tfdmVyZGljdF9hcHBseSYjMzQ7LAogICAgJiMzNDtza19wc29ja192ZXJkaWN0X3JlY3YmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgY29yZSBCUEYgc29ja21hcCBsb2dpYyBpbiB0Y3BfZWF0X3NrYiwgY2hhbmdpbmcgaG93IFRDUCBjb3BpZWRfc2VxIGlzIHVwZGF0ZWQgd2hlbiBwYWNrZXRzIGFyZSBkcm9wcGVkIG9yIHJlZGlyZWN0ZWQuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBuZXR3b3JrIHByb2Nlc3NpbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0CiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSwKICAgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IGU0YmJlMTkwZTk2MzdhZDc0YmE5MDhjYmEzOTU2OTUxZWEzZjBmZjMKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgVGh1IEp1bCAyIDE2OjM2OjIyIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvbmV0L2lwdjQvdGNwX2JwZi5jIGIvbmV0L2lwdjQvdGNwX2JwZi5jCmluZGV4IGNjMGJkNzNmMzZiNmQ2Li5kNjQwZjhlMDY1Mjk3OCAxMDA2NDQKLS0tIGEvbmV0L2lwdjQvdGNwX2JwZi5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC9pcHY0L3RjcF9icGYuYwpAQCAtMTUsNyAmIzQzOzE1LDcgQEAKIHZvaWQgdGNwX2VhdF9za2Ioc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKQogewogCXN0cnVjdCB0Y3Bfc29jayAqdGNwOwotCWludCBjb3BpZWQ7CiYjNDM7CXUzMiBlbmRfc2VxLCBkZWx0YTsKIAogCWlmICghc2tiIHx8ICFza2ItJmd0O2xlbiB8fCAhc2tfaXNfdGNwKHNrKSkKIAkJcmV0dXJuOwpAQCAtMjQsMTAgJiM0MzsyNCwxMSBAQCB2b2lkIHRjcF9lYXRfc2tiKHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX2J1ZmYgKnNrYikKIAkJcmV0dXJuOwogCiAJdGNwID0gdGNwX3NrKHNrKTsKLQljb3BpZWQgPSB0Y3AtJmd0O2NvcGllZF9zZXEgJiM0Mzsgc2tiLSZndDtsZW47Ci0JV1JJVEVfT05DRSh0Y3AtJmd0O2NvcGllZF9zZXEsIGNvcGllZCk7CiYjNDM7CWVuZF9zZXEgPSBUQ1BfU0tCX0NCKHNrYiktJmd0O2VuZF9zZXE7CiYjNDM7CWRlbHRhID0gZW5kX3NlcSAtIHRjcC0mZ3Q7Y29waWVkX3NlcTsKJiM0MzsJV1JJVEVfT05DRSh0Y3AtJmd0O2NvcGllZF9zZXEsIGVuZF9zZXEpOwogCXRjcF9yY3Zfc3BhY2VfYWRqdXN0KHNrKTsKLQlfX3RjcF9jbGVhbnVwX3JidWYoc2ssIHNrYi0mZ3Q7bGVuKTsKJiM0MzsJX190Y3BfY2xlYW51cF9yYnVmKHNrLCBkZWx0YSk7CiB9CiAKIHN0YXRpYyBpbnQgYnBmX3RjcF9pbmdyZXNzKHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX3Bzb2NrICpwc29jaywKZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3NvY2ttYXBfYmFzaWMuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3NvY2ttYXBfYmFzaWMuYwppbmRleCBjYjMyMjk3MTFmOTNhMy4uMTA2ZGQwM2NkZTg0ZWYgMTAwNjQ0Ci0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3NvY2ttYXBfYmFzaWMuYwomIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9zb2NrbWFwX2Jhc2ljLmMKQEAgLTEyNzUsNiAmIzQzOzEyNzUsNzcgQEAgc3RhdGljIHZvaWQgdGVzdF9zb2NrbWFwX2NvcGllZF9zZXEoYm9vbCBzdHJwKQogCXRlc3Rfc29ja21hcF9wYXNzX3Byb2dfX2Rlc3Ryb3koc2tlbCk7CiB9CiAKJiM0MztzdGF0aWMgdm9pZCB0ZXN0X3NvY2ttYXBfZHJvcF9hZnRlcl9wYXJ0aWFsX3JlYWQodm9pZCkKJiM0Mzt7CiYjNDM7CWludCBtYXAsIGVyciwgc2VudCwgcmVjdmQsIHplcm8gPSAwLCBvbiA9IDE7CiYjNDM7CXN0cnVjdCB0ZXN0X3NvY2ttYXBfZHJvcF9wcm9nICpza2VsOwomIzQzOwlpbnQgYzAgPSAtMSwgcDAgPSAtMSwgYzEgPSAtMSwgcDEgPSAtMTsKJiM0MzsJc3RydWN0IHRjcF96ZXJvY29weV9yZWNlaXZlIHpjID0ge307CiYjNDM7CXNvY2tsZW5fdCB6Y19sZW4gPSBzaXplb2YoemMpOwomIzQzOwljaGFyIGJ1ZlsyMDBdID0ge30sIHJjdls1MF0sIGFkZHJbMTAwXTsKJiM0MzsJc3RydWN0IGJwZl9wcm9ncmFtICpwcm9nOwomIzQzOwomIzQzOwlza2VsID0gdGVzdF9zb2NrbWFwX2Ryb3BfcHJvZ19fb3Blbl9hbmRfbG9hZCgpOwomIzQzOwlpZiAoIUFTU0VSVF9PS19QVFIoc2tlbCwgJiMzNDtvcGVuX2FuZF9sb2FkJiMzNDspKQomIzQzOwkJcmV0dXJuOwomIzQzOwomIzQzOwlpZiAoY3JlYXRlX3NvY2tldF9wYWlycyhBRl9JTkVULCBTT0NLX1NUUkVBTSwgJmFtcDtjMCwgJmFtcDtjMSwgJmFtcDtwMCwgJmFtcDtwMSkpCiYjNDM7CQlnb3RvIGVuZDsKJiM0MzsKJiM0MzsJc2VudCA9IHhzZW5kKGMwLCBidWYsIHNpemVvZihidWYpLCAwKTsKJiM0MzsJaWYgKCFBU1NFUlRfRVEoc2VudCwgc2l6ZW9mKGJ1ZiksICYjMzQ7eHNlbmQobmF0aXZlKSYjMzQ7KSkKJiM0MzsJCWdvdG8gZW5kOwomIzQzOwomIzQzOwlyZWN2ZCA9IHJlY3ZfdGltZW91dChwMCwgcmN2LCBzaXplb2YocmN2KSwgTVNHX0RPTlRXQUlULCAxKTsKJiM0MzsJaWYgKCFBU1NFUlRfRVEocmVjdmQsIHNpemVvZihyY3YpLCAmIzM0O3JlY3ZfdGltZW91dChwYXJ0aWFsKSYjMzQ7KSkKJiM0MzsJCWdvdG8gZW5kOwomIzQzOwomIzQzOwlwcm9nID0gc2tlbC0mZ3Q7cHJvZ3MucHJvZ19za2JfdmVyZGljdDsKJiM0MzsJbWFwID0gYnBmX21hcF9fZmQoc2tlbC0mZ3Q7bWFwcy5zb2NrX21hcF9yeCk7CiYjNDM7CWVyciA9IGJwZl9wcm9nX2F0dGFjaChicGZfcHJvZ3JhbV9fZmQocHJvZyksIG1hcCwKJiM0MzsJCQkgICAgICBCUEZfU0tfU0tCX1NUUkVBTV9WRVJESUNULCAwKTsKJiM0MzsJaWYgKCFBU1NFUlRfT0soZXJyLCAmIzM0O2JwZl9wcm9nX2F0dGFjaCYjMzQ7KSkKJiM0MzsJCWdvdG8gZW5kOwomIzQzOwomIzQzOwllcnIgPSBicGZfbWFwX3VwZGF0ZV9lbGVtKG1hcCwgJmFtcDt6ZXJvLCAmYW1wO3AwLCBCUEZfTk9FWElTVCk7CiYjNDM7CWlmICghQVNTRVJUX09LKGVyciwgJiMzNDticGZfbWFwX3VwZGF0ZV9lbGVtJiMzNDspKQomIzQzOwkJZ290byBlbmQ7CiYjNDM7CiYjNDM7CXNlbnQgPSB4c2VuZChjMCwgYnVmLCAxLCAwKTsKJiM0MzsJaWYgKCFBU1NFUlRfRVEoc2VudCwgMSwgJiMzNDt4c2VuZChkcm9wKSYjMzQ7KSkKJiM0MzsJCWdvdG8gZW5kOwomIzQzOwomIzQzOwllcnIgPSBicGZfbWFwX2RlbGV0ZV9lbGVtKG1hcCwgJmFtcDt6ZXJvKTsKJiM0MzsJaWYgKCFBU1NFUlRfT0soZXJyLCAmIzM0O2JwZl9tYXBfZGVsZXRlX2VsZW0mIzM0OykpCiYjNDM7CQlnb3RvIGVuZDsKJiM0MzsKJiM0MzsJc2VudCA9IHhzZW5kKGMwLCBidWYsIDEsIDApOwomIzQzOwlpZiAoIUFTU0VSVF9FUShzZW50LCAxLCAmIzM0O3hzZW5kKG5hdGl2ZSBhZ2FpbikmIzM0OykpCiYjNDM7CQlnb3RvIGVuZDsKJiM0MzsKJiM0MzsJZXJyID0gc2V0c29ja29wdChwMCwgU09MX1NPQ0tFVCwgU09fWkVST0NPUFksICZhbXA7b24sIHNpemVvZihvbikpOwomIzQzOwlpZiAoIUFTU0VSVF9PSyhlcnIsICYjMzQ7c2V0c29ja29wdChTT19aRVJPQ09QWSkmIzM0OykpCiYjNDM7CQlnb3RvIGVuZDsKJiM0MzsKJiM0MzsJemMuY29weWJ1Zl9hZGRyZXNzID0gKF9fdTY0KSh1bnNpZ25lZCBsb25nKWFkZHI7CiYjNDM7CXpjLmNvcHlidWZfbGVuID0gc2l6ZW9mKGFkZHIpOwomIzQzOwllcnIgPSBnZXRzb2Nrb3B0KHAwLCBJUFBST1RPX1RDUCwgVENQX1pFUk9DT1BZX1JFQ0VJVkUsICZhbXA7emMsICZhbXA7emNfbGVuKTsKJiM0MzsJaWYgKCFBU1NFUlRfT0soZXJyLCAmIzM0O2dldHNvY2tvcHQoVENQX1pFUk9DT1BZX1JFQ0VJVkUpJiMzNDspKQomIzQzOwkJZ290byBlbmQ7CiYjNDM7CiYjNDM7CUFTU0VSVF9FUSh6Yy5jb3B5YnVmX2xlbiwgMSwgJiMzNDtUQ1BfWkVST0NPUFlfUkVDRUlWRSBjb3BpZWQmIzM0Oyk7CiYjNDM7ZW5kOgomIzQzOwlpZiAoYzAgJmd0Oz0gMCkKJiM0MzsJCWNsb3NlKGMwKTsKJiM0MzsJaWYgKHAwICZndDs9IDApCiYjNDM7CQljbG9zZShwMCk7CiYjNDM7CWlmIChjMSAmZ3Q7PSAwKQomIzQzOwkJY2xvc2UoYzEpOwomIzQzOwlpZiAocDEgJmd0Oz0gMCkKJiM0MzsJCWNsb3NlKHAxKTsKJiM0MzsJdGVzdF9zb2NrbWFwX2Ryb3BfcHJvZ19fZGVzdHJveShza2VsKTsKJiM0Mzt9CiYjNDM7CiAvKiBXYWl0IHVudGlsIEZJT05SRUFEIHJldHVybnMgdGhlIGV4cGVjdGVkIHZhbHVlIG9yIHRpbWVvdXQgKi8KIHN0YXRpYyBpbnQgd2FpdF9mb3JfZmlvbnJlYWQoaW50IGZkLCBpbnQgZXhwZWN0ZWQsIHVuc2lnbmVkIGludCB0aW1lb3V0X21zKQogewpAQCAtMTQ0Nyw2ICYjNDM7MTUxOCw4IEBAIHZvaWQgdGVzdF9zb2NrbWFwX2Jhc2ljKHZvaWQpCiAJCXRlc3Rfc29ja21hcF9jb3BpZWRfc2VxKGZhbHNlKTsKIAlpZiAodGVzdF9fc3RhcnRfc3VidGVzdCgmIzM0O3NvY2ttYXAgcmVjb3ZlciB3aXRoIHN0cnAmIzM0OykpCiAJCXRlc3Rfc29ja21hcF9jb3BpZWRfc2VxKHRydWUpOwomIzQzOwlpZiAodGVzdF9fc3RhcnRfc3VidGVzdCgmIzM0O3NvY2ttYXAgZHJvcCBhZnRlciBwYXJ0aWFsIHJlYWQmIzM0OykpCiYjNDM7CQl0ZXN0X3NvY2ttYXBfZHJvcF9hZnRlcl9wYXJ0aWFsX3JlYWQoKTsKIAlpZiAodGVzdF9fc3RhcnRfc3VidGVzdCgmIzM0O3NvY2ttYXAgdGNwIG11bHRpIGNoYW5uZWxzJiMzNDspKQogCQl0ZXN0X3NvY2ttYXBfbXVsdGlfY2hhbm5lbHMoU09DS19TVFJFQU0pOwogCWlmICh0ZXN0X19zdGFydF9zdWJ0ZXN0KCYjMzQ7c29ja21hcCB1ZHAgbXVsdGkgY2hhbm5lbHMmIzM0OykpCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAyIDE2OjM2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMzNjYKCQkJCQkJCW91dHB1dDogMzEKCQkJCQkJCXRob3VnaHRzOiAxOTEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBUQ1AgQlBGIE1vZGlmaWNhdGlvbioqCgpPa2F5LCBzbyB0aGlzIHBhdGNoIGlzIHRvdWNoaW5nIGBuZXQvaXB2NC90Y3BfYnBmLmNgIGFuZCBhZGRpbmcgYSBuZXcgdGVzdCBmb3IgaXQgaW4gYHNvY2ttYXBfYmFzaWMuY2AsIGludGVyZXN0aW5nLiBJJiMzOTtsbCBuZWVkIHRvIGRpZyBpbnRvIHdoYXQgdGhleSYjMzk7cmUgdHJ5aW5nIHRvIGFjaGlldmUgd2l0aCB0aGlzLiBUaGUgY29yZSBvZiB0aGUgY2hhbmdlIHNlZW1zIHRvIGJlIHdpdGhpbiB0aGUgYHRjcF9lYXRfc2tiYCBmdW5jdGlvbiwgc3BlY2lmaWNhbGx5IGhvdyB0aGUgYHRjcC0mZ3Q7Y29waWVkX3NlcWAgYW5kIGBfX3RjcF9jbGVhbnVwX3JidWZgIGFyZSBiZWluZyBoYW5kbGVkLgoKVGhlIG9sZCB3YXksIGBjb3BpZWQgPSB0Y3AtJmd0O2NvcGllZF9zZXEgJiM0Mzsgc2tiLSZndDtsZW5gLCBpcyBiZWluZyByZXBsYWNlZCB3aXRoIGEgY2FsY3VsYXRpb24gaW52b2x2aW5nIGBlbmRfc2VxYCwgY2FsY3VsYXRpbmcgYSBgZGVsdGFgLCBhbmQgdGhlbiB1c2luZyBgV1JJVEVfT05DRWAgdG8gdXBkYXRlIGB0Y3AtJmd0O2NvcGllZF9zZXFgLCBhbmQgZmluYWxseSBjYWxsaW5nIGBfX3RjcF9jbGVhbnVwX3JidWZgIHdpdGggdGhlIGBkZWx0YWAuIENsZWFybHksIHRoaXMgaXMgbW9yZSBudWFuY2VkLCBidXQgd2hhdCBpcyB0aGUgcmVhc29uaW5nPyBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aHkgdGhleSYjMzk7cmUgaW50cm9kdWNpbmcgYGVuZF9zZXFgIGFuZCBjYWxjdWxhdGluZyBhIGRlbHRhIHRoaXMgd2F5LiBJIHdvbmRlciBpZiB0aGlzIGhhcyBzb21ldGhpbmcgdG8gZG8gd2l0aCBtb3JlIGFkdmFuY2VkIHNvY2tldCBtYXAgdXNlIGNhc2VzLgoKTXkgaW1tZWRpYXRlIG5leHQgc3RlcCBpcyB0byBmaW5kIG91dCB0aGUgbmVjZXNzYXJ5IGNvbmZpZ3VyYXRpb25zIGZvciBgdGNwX2JwZi5jYCBiZWNhdXNlIHRoaXMgcGF0Y2ggbG9va3MgcHJldHR5IGxvdy1sZXZlbC4gSSYjMzk7bGwgbmVlZCB0byBtYWtlIHN1cmUgSSB1bmRlcnN0YW5kIHRoZSBkZXBlbmRlbmNpZXMgYmVmb3JlIEkgZGl2ZSBmdXJ0aGVyIGludG8gdGhlIGZ1bmN0aW9uYWwgZGV0YWlscyBvZiB0aGUgY2hhbmdlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAyIDE2OjM2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3RjcF9icGZcXC5vJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L2lwdjQvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9pcHY0L01ha2VmaWxlPTYyPW9iai0kKENPTkZJR19UQ1BfQ09OR19JTExJTk9JUykgJiM0Mzs9IHRjcF9pbGxpbm9pcy5vXG5uZXQvaXB2NC9NYWtlZmlsZTo2MzpvYmotJChDT05GSUdfTkVUX1NPQ0tfTVNHKSAmIzQzOz0gdGNwX2JwZi5vXG5uZXQvaXB2NC9NYWtlZmlsZS02NC1vYmotJChDT05GSUdfQlBGX1NZU0NBTEwpICYjNDM7PSB1ZHBfYnBmLm9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMiAxNjozNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzOTcxCgkJCQkJCQlvdXRwdXQ6IDI4CgkJCQkJCQl0aG91Z2h0czogNDQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGFuIGV4cGVydCYjMzk7cyBpbnRlcm5hbCBtb25vbG9ndWU6CgoqKkludmVzdGlnYXRpbmcgYENPTkZJR19ORVRfU09DS19NU0dgIERlcGVuZGVuY3kqKgoKUmlnaHQsIHNvIGBDT05GSUdfTkVUX1NPQ0tfTVNHYCBpcyBmbGFnZ2VkIGFzIGJlaW5nIGEgcmVxdWlyZWQgY29uZmlndXJhdGlvbiBvcHRpb24sIHdoaWNoIGlzIGFuIGludGVyZXN0aW5nIHN0YXJ0aW5nIHBvaW50LiBNeSBpbml0aWFsIHRob3VnaHQgcHJvY2VzcyBpcyB0byB1bmRlcnN0YW5kIGl0cyBvcmlnaW4uIElzIHRoaXMgc29tZXRoaW5nIHRoZSB1c2VyIGV4cGxpY2l0bHkgY29uZmlndXJlcywgb3IgaXMgaXQgcHVsbGVkIGluIGFzIGEgZGVwZW5kZW5jeSBieSBhbm90aGVyLCBtb3JlIGZ1bmRhbWVudGFsIHNldHRpbmc/IFVuZGVyc3RhbmRpbmcgaXRzIHNlbGVjdGlvbiBtZWNoYW5pc20gaXMgY3JpdGljYWwgZm9yIHByb3BlciBjb25maWd1cmF0aW9uIGFuZCB0cm91Ymxlc2hvb3RpbmcgZnVydGhlciBkb3duIHRoZSBsaW5lLiBJIG5lZWQgdG8gZGV0ZXJtaW5lIGlmIGl0JiMzOTtzIHVzZXItZHJpdmVuLCBvciBpZiBpdCBpcyBhIGJ5cHJvZHVjdCBvZiBhbm90aGVyIHNldHRpbmcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDIgMTY6MzY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIE5FVF9TT0NLX01TRyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L0tjb25maWc9NDc1PWNvbmZpZyBORVRfU0VMRlRFU1RTXG4tLVxubmV0L0tjb25maWctNDc4LVxubmV0L0tjb25maWc6NDc5OmNvbmZpZyBORVRfU09DS19NU0dcbm5ldC9LY29uZmlnLTQ4MC1cdGJvb2xcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMiAxNjozNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0MjQ4CgkJCQkJCQlvdXRwdXQ6IDI2CgkJCQkJCQl0aG91Z2h0czogMjYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIGFzc3VtaW5nIEkmIzM5O20gYW4gZXhwZXJ0IGluIHRoaXMgZmllbGQ6CgoqKkRlYnVnZ2luZyBhIEJvb2xlYW46IFRyYWNpbmcgdGhlIFNvdXJjZSoqCgpBbHJpZ2h0LCBhIGJvb2xlYW4mIzM5O3MgYmVlbiBmbGlwcGVkLCBidXQgdGhlcmUmIzM5O3Mgbm8gZGlyZWN0IHByb21wdCBvciBleHBsaWNpdCBzZXR0aW5nIGFmZmVjdGluZyBpdC4gVGhhdCBpbW1lZGlhdGVseSB0ZWxscyBtZSB0aGlzIHZhbHVlIGlzIGJlaW5nIGRyaXZlbiBieSBzb21ldGhpbmcgZWxzZSwgc29tZSBleHRlcm5hbCBjb25kaXRpb24gb3IgbG9naWMgZmxvdy4gTXkgbmV4dCBzdGVwIGlzIGNsZWFyOiBJIG5lZWQgdG8gaWRlbnRpZnkgdGhlICpzb3VyY2UqIG9mIHRoaXMgc2VsZWN0aW9uLiBJIGhhdmUgdG8gdHJhY2UgYmFjayB0aHJvdWdoIHRoZSBjb2RlLCBvciBleGFtaW5lIHRoZSBkYXRhIGZsb3csIHRvIGZpZ3VyZSBvdXQgd2hhdCYjMzk7cyBpbmZsdWVuY2luZyB0aGlzIHBhcnRpY3VsYXIgYm9vbGVhbi4gV2hhdCBwcm9jZXNzLCB3aGF0IGZ1bmN0aW9uLCB3aGF0IG90aGVyIHZhcmlhYmxlIGlzIG1ha2luZyB0aGUgY2FsbD8gVGhpcyBpc24mIzM5O3QgYSBzaW1wbGUgY2FzZSBvZiBhIGRpcmVjdCBhc3NpZ25tZW50OyBpdCYjMzk7cyBhIGNvbmRpdGlvbmFsIGNoYW5nZSwgYW5kIGZpbmRpbmcgdGhhdCBjb25kaXRpb24gaXMga2V5LiBUaGlzIGlzIGEgY2xhc3NpYyBkZWJ1Z2dpbmcgc2NlbmFyaW8uIExldCYjMzk7cyBkaWcgaW4uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDIgMTY6MzY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c2VsZWN0IE5FVF9TT0NLX01TRyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0OyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtrZXJuZWwvYnBmL0tjb25maWc9Mjc9Y29uZmlnIEJQRl9TWVNDQUxMXG4tLVxua2VybmVsL2JwZi9LY29uZmlnLTMzLVx0c2VsZWN0IEJJTkFSWV9QUklOVEZcbmtlcm5lbC9icGYvS2NvbmZpZzozNDpcdHNlbGVjdCBORVRfU09DS19NU0cgaWYgTkVUXG5rZXJuZWwvYnBmL0tjb25maWctMzUtXHRzZWxlY3QgTkVUX1hHUkVTUyBpZiBORVRcbi0tXG5uZXQvS2NvbmZpZz0zNjE9Y29uZmlnIEJQRl9TVFJFQU1fUEFSU0VSXG4tLVxubmV0L0tjb25maWctMzY2LVx0c2VsZWN0IFNUUkVBTV9QQVJTRVJcbm5ldC9LY29uZmlnOjM2NzpcdHNlbGVjdCBORVRfU09DS19NU0dcbm5ldC9LY29uZmlnLTM2OC1cdGhlbHBcbi0tXG5uZXQvaXB2NC9LY29uZmlnPTM4Mj1jb25maWcgSU5FVF9FU1BJTlRDUFxuLS1cbm5ldC9pcHY0L0tjb25maWctMzg1LVx0c2VsZWN0IFNUUkVBTV9QQVJTRVJcbm5ldC9pcHY0L0tjb25maWc6Mzg2Olx0c2VsZWN0IE5FVF9TT0NLX01TR1xubmV0L2lwdjQvS2NvbmZpZy0zODctXHRzZWxlY3QgWEZSTV9FU1BJTlRDUFxuLS1cbm5ldC9pcHY2L0tjb25maWc9OTA9Y29uZmlnIElORVQ2X0VTUElOVENQXG4tLVxubmV0L2lwdjYvS2NvbmZpZy05My1cdHNlbGVjdCBTVFJFQU1fUEFSU0VSXG5uZXQvaXB2Ni9LY29uZmlnOjk0Olx0c2VsZWN0IE5FVF9TT0NLX01TR1xubmV0L2lwdjYvS2NvbmZpZy05NS1cdHNlbGVjdCBYRlJNX0VTUElOVENQXG4tLVxubmV0L3Rscy9LY29uZmlnPTU9Y29uZmlnIFRMU1xuLS1cbm5ldC90bHMvS2NvbmZpZy0xMC1cdHNlbGVjdCBDUllQVE9fR0NNXG5uZXQvdGxzL0tjb25maWc6MTE6XHRzZWxlY3QgTkVUX1NPQ0tfTVNHXG5uZXQvdGxzL0tjb25maWctMTItXHRkZWZhdWx0IG5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMiAxNjozNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0ODY3CgkJCQkJCQlvdXRwdXQ6IDM3CgkJCQkJCQl0aG91Z2h0czogMTEzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBCUEYgYW5kIFNvY2tldCBGaWx0ZXJpbmcgZm9yIEVuaGFuY2VkIE5ldHdvcmsgUGVyZm9ybWFuY2UqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gRnJvbSB3aGF0IEkmIzM5O20gc2VlaW5nLCBgQlBGX1NZU0NBTExgIGlzIHRoZSBjcnVjaWFsIGVsZW1lbnQgaGVyZSwgcGFydGljdWxhcmx5IHdoZW4gYE5FVGAgaXMgaW52b2x2ZWQsIGJlY2F1c2UgdGhhdCYjMzk7cyB3aGF0IHRyaWdnZXJzIGBORVRfU09DS19NU0dgLiBUaGF0IG1ha2VzIGBCUEZfU1lTQ0FMTGAgdGhlIHByaW1hcnkgZm9jdXMsIHRoZSBjb3JlLiBUaGVuIHdlIGhhdmUgcmVsYXRlZCBmZWF0dXJlcyBsaWtlIGBUTFNgLCBgSU5FVF9FU1BJTlRDUGAsIGBJTkVUNl9FU1BJTlRDUGAsIGFuZCBgQlBGX1NUUkVBTV9QQVJTRVJgLCBidXQgYEJQRl9TWVNDQUxMYCBzZWVtcyB0byBiZSB0aGUgb25lIHB1bGxpbmcgdGhlIG1vc3Qgd2VpZ2h0LCBiZWNhdXNlIHRoZSBzb2NrbWFwIGNvbnRleHQgbWVhbnMgaXQgd2lsbCBiZSB0aGUgZHJpdmVyLiBTbywgbXkgaW5zdGluY3QgaXMgdG8gbGVhbiBoZWF2aWx5IG9uIGBCUEZfU1lTQ0FMTGAgYXMgdGhlIGtleSB0byB1bmRlcnN0YW5kaW5nIHRoaXMuCgpHaXZlbiB0aGlzIEJQRiBzb2NrbWFwIGNvbnRleHQsIEkgbmVlZCB0byBjaGVjayBvdXQgd2hhdCYjMzk7cyBoYXBwZW5pbmcgd2l0aCBgdGNwX2VhdF9za2JgIHdpdGhpbiBgbmV0L2lwdjQvdGNwX2JwZi5jYC4gVGhhdCBzaG91bGQgcHJvdmlkZSB0aGUgbmVjZXNzYXJ5IGRldGFpbC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDIgMTY6MzY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7dGNwX2VhdF9za2ImIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvaXB2NC90Y3BfYnBmLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L2lwdjQvdGNwX2JwZi5jLTE0LVxubmV0L2lwdjQvdGNwX2JwZi5jOjE1OnZvaWQgdGNwX2VhdF9za2Ioc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxubmV0L2lwdjQvdGNwX2JwZi5jLTE2LXtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDIgMTY6MzY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTMxNwoJCQkJCQkJb3V0cHV0OiAyNgoJCQkJCQkJdGhvdWdodHM6IDE0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHN1bW1hcnksIHRhaWxvcmVkIGFzIGlmIEkmIzM5O20gYW4gZXhwZXJ0IGluIHRoZSBmaWVsZCB0aGlua2luZyB0aHJvdWdoIHRoaXM6CgoqKkludmVzdGlnYXRpbmcgdGhlIFNjb3BlIG9mIGB0Y3BfZWF0X3NrYmAqKgoKQWxyaWdodCwgbGV0JiMzOTtzIHNlZS4uLiB0aGUgcXVlc3Rpb24gaXMgd2hldGhlciBgdGNwX2VhdF9za2JgIGlzIGEgZnVuY3Rpb24gdGhhdCYjMzk7cyBleHBvc2VkIGZvciB1c2Ugb3V0c2lkZSBvZiBpdHMgaW1tZWRpYXRlLCBwcmVzdW1hYmx5IFRDUC1zdGFjay1zcGVjaWZpYywgY29udGV4dC4gSXMgaXQgKmV4cG9ydGVkKiBpbiBzb21lIHdheT8gT3IgaXMgaXQgdXNlZCBiZXlvbmQgdGhlIG1vZHVsZXMgb3IgZmlsZXMgd2hlcmUgaXQmIzM5O3MgY3VycmVudGx5IGRlZmluZWQ/IFRoYXQmIzM5O3Mgd2hhdCBJIG5lZWQgdG8gZmlndXJlIG91dC4gVW5kZXJzdGFuZGluZyBpdHMgc2NvcGUgaXMgY3J1Y2lhbC4gSWYgaXQmIzM5O3MgaW50ZXJuYWwgdG8gYSBwYXJ0aWN1bGFyIG1vZHVsZSwgdGhlbiBhbnkgcmVmYWN0b3Jpbmcgb3IgY2hhbmdlcyB3aXRoaW4gdGhhdCBtb2R1bGUgc2hvdWxkbiYjMzk7dCBoYXZlIHdpZGVzcHJlYWQgcmVwZXJjdXNzaW9ucy4gQnV0IGlmIG90aGVyIHBhcnRzIG9mIHRoZSBzeXN0ZW0gYXJlIHJlbHlpbmcgb24gaXQsIHRoZW4gYSBtb3JlIGNhcmVmdWwgYXBwcm9hY2ggaXMgcmVxdWlyZWQuIEkgbmVlZCB0byBrbm93IHdoZXJlIGl0JiMzOTtzIGJlaW5nICpjYWxsZWQqIGZyb20sIGFuZCBpZiB0aG9zZSBjYWxsIHNpdGVzIGFyZSB3aXRoaW4gdGhlIGludGVuZGVkIGJvdW5kYXJpZXMuIFRpbWUgdG8gZGVsdmUgaW50byB0aGUgY29kZSBhbmQgZGV0ZXJtaW5lIHRoZSB0cnVlIHZpc2liaWxpdHkgYW5kIHVzYWdlIHBhdHRlcm5zIG9mIGB0Y3BfZWF0X3NrYmAuIFRoaXMgaXMgYWxsIGFib3V0IGFzc2Vzc2luZyB0aGUgcG90ZW50aWFsIGltcGFjdCBvZiBhbnkgY2hhbmdlcyByZWxhdGVkIHRvIHRoaXMgZnVuY3Rpb24uIEkmIzM5O2xsIHN0YXJ0IHdpdGggYSBxdWljayBzZWFyY2ggb2YgdGhlIGNvZGViYXNlIHRvIHNlZSB3aGVyZSBpdCYjMzk7cyBiZWluZyB1c2VkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMiAxNjozNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt0Y3BfZWF0X3NrYiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0OyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtpbmNsdWRlL25ldC90Y3AuaD0yODQzPWludCB0Y3BfYnBmX3N0cnBfcmVhZF9zb2NrKHN0cnVjdCBzdHJwYXJzZXIgKnN0cnAsIHJlYWRfZGVzY3JpcHRvcl90ICpkZXNjLFxuLS1cbmluY2x1ZGUvbmV0L3RjcC5oLTI4NDgtI2lmZGVmIENPTkZJR19JTkVUXG5pbmNsdWRlL25ldC90Y3AuaDoyODQ5OnZvaWQgdGNwX2VhdF9za2Ioc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKTtcbmluY2x1ZGUvbmV0L3RjcC5oLTI4NTAtI2Vsc2VcbmluY2x1ZGUvbmV0L3RjcC5oOjI4NTE6c3RhdGljIGlubGluZSB2b2lkIHRjcF9lYXRfc2tiKHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX2J1ZmYgKnNrYilcbmluY2x1ZGUvbmV0L3RjcC5oLTI4NTIte1xuLS1cbm5ldC9jb3JlL3NrbXNnLmM9OTk2PXN0YXRpYyBpbnQgc2tfcHNvY2tfdmVyZGljdF9hcHBseShzdHJ1Y3Qgc2tfcHNvY2sgKnBzb2NrLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuLS1cbm5ldC9jb3JlL3NrbXNnLmMtMTA0Mi1cdGNhc2UgX19TS19SRURJUkVDVDpcbm5ldC9jb3JlL3NrbXNnLmM6MTA0MzpcdFx0dGNwX2VhdF9za2IocHNvY2stXHUwMDNlc2ssIHNrYik7XG5uZXQvY29yZS9za21zZy5jLTEwNDQtXHRcdGVyciA9IHNrX3Bzb2NrX3NrYl9yZWRpcmVjdChwc29jaywgc2tiKTtcbi0tXG5uZXQvY29yZS9za21zZy5jLTEwNDktXHRcdHNrYl9icGZfcmVkaXJlY3RfY2xlYXIoc2tiKTtcbm5ldC9jb3JlL3NrbXNnLmM6MTA1MDpcdFx0dGNwX2VhdF9za2IocHNvY2stXHUwMDNlc2ssIHNrYik7XG5uZXQvY29yZS9za21zZy5jLTEwNTEtXHRcdHNvY2tfZHJvcChwc29jay1cdTAwM2Vzaywgc2tiKTtcbi0tXG5uZXQvY29yZS9za21zZy5jPTExOTg9c3RhdGljIGludCBza19wc29ja192ZXJkaWN0X3JlY3Yoc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuLS1cbm5ldC9jb3JlL3NrbXNnLmMtMTIwOC1cdFx0bGVuID0gMDtcbm5ldC9jb3JlL3NrbXNnLmM6MTIwOTpcdFx0dGNwX2VhdF9za2Ioc2ssIHNrYik7XG5uZXQvY29yZS9za21zZy5jLTEyMTAtXHRcdHNvY2tfZHJvcChzaywgc2tiKTtcbi0tXG5uZXQvaXB2NC90Y3BfYnBmLmMtMTQtXG5uZXQvaXB2NC90Y3BfYnBmLmM6MTU6dm9pZCB0Y3BfZWF0X3NrYihzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBza19idWZmICpza2IpXG5uZXQvaXB2NC90Y3BfYnBmLmMtMTYte1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMiAxNjozNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2MTk5CgkJCQkJCQlvdXRwdXQ6IDI4CgkJCQkJCQl0aG91Z2h0czogMTc2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgU2NvcGUgb2YgdGhpcyBOZXR3b3JraW5nIFBhdGNoKioKCk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgdG91Y2hpbmcgYG5ldC9jb3JlL3NrbXNnLmNgLCB3aGljaCBtZWFucyBpdCYjMzk7cyBwcmV0dHkgbG93LWxldmVsIGNvcmUgbmV0d29ya2luZyBzdHVmZi4gRnVuY3Rpb25hbGx5LCBpdCYjMzk7cyBtb2RpZnlpbmcgY29yZSBuZXR3b3JraW5nIGFuZCBCUEYgbG9naWMuIE15IGluaXRpYWwgZm9jdXMgaGFzIHRvIGJlIG9uIHRob3NlIGtleSBzeW1ib2xzIG1lbnRpb25lZDogYHRjcF9lYXRfc2tiYCwgYHNrX3Bzb2NrX3ZlcmRpY3RfYXBwbHlgLCBhbmQgYHNrX3Bzb2NrX3ZlcmRpY3RfcmVjdmAuIFRob3NlIGFyZSB0aGUgZW50cnkgcG9pbnRzLgoKTm93LCBsZXQmIzM5O3MgZ2V0IGludG8gdGhlIGNvbmZpZ3VyYXRpb24gYXNwZWN0LiBJdCByZWxpZXMgb24gYEJQRl9TWVNDQUxMYCBhbmQgYE5FVF9TT0NLX01TR2AuIFdoaWxlIGBORVRfU09DS19NU0dgIGlzbiYjMzk7dCBhIHVzZXItc2VsZWN0YWJsZSBjb25maWcsIGBCUEZfU1lTQ0FMTGAgaXMsIHdoaWNoIGlzIGltcG9ydGFudCBmb3IgdW5kZXJzdGFuZGluZyB0aGUgZGVwZW5kZW5jaWVzIGFuZCBwb3RlbnRpYWwgYnVpbGQgb3B0aW9ucyBoZXJlLgoKVGhlIG9idmlvdXMgcXVlc3Rpb24gaXMgd2hldGhlciBgQlBGX1NZU0NBTExgIGlzIHN1ZmZpY2llbnQgZm9yIGVuYWJsaW5nIHRoaXMgZnVuY3Rpb25hbGl0eS4gSG1tLCBsZXQgbWUgY29uZmlybS4uLiBZZXMsIGBCUEZfU1lTQ0FMTGAgZG9lcyBzZWxlY3QgYE5FVF9TT0NLX01TR2AgaWYgdGhlIGBORVRgIG9wdGlvbiBpcyBhY3RpdmUuIFRoYXQmIzM5O3MgZ29vZCB0byBrbm93LCBzaW1wbGlmaWVzIHRoaW5ncyBzb21ld2hhdC4KCk5leHQsIEkgbmVlZCB0byBsb29rIGZvciBhbnkgb3RoZXIgY29uZmlnIG9wdGlvbnMgdGhhdCBtYXkgaW50ZXJhY3QuIFRoZSB0ZXN0IG1lbnRpb25zICYjMzk7c3RycCwmIzM5OyBhbmQgdGhhdCBpbW1lZGlhdGVseSBtYWtlcyBtZSB0aGluayBvZiBgQlBGX1NUUkVBTV9QQVJTRVJgLiBJJiMzOTtsbCB3YW50IHRvIGRpZyBpbnRvIHRoYXQgcmVsYXRpb25zaGlwIGFuZCBob3cgdGhpcyBwYXRjaCBpbnRlcmFjdHMgd2l0aCBzdHJlYW0gcGFyc2luZyB0byBiZSBzdXJlIEkgdW5kZXJzdGFuZCB0aGUgZnVsbCBjb25maWd1cmF0aW9uIGltcGFjdC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDIgMTY6MzY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIEJQRl9TVFJFQU1fUEFSU0VSJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9LY29uZmlnPTM1ND1jb25maWcgQlFMXG4tLVxubmV0L0tjb25maWctMzYwLVxubmV0L0tjb25maWc6MzYxOmNvbmZpZyBCUEZfU1RSRUFNX1BBUlNFUlxubmV0L0tjb25maWctMzYyLVx0Ym9vbCBcJiMzNDtlbmFibGUgQlBGIFNUUkVBTV9QQVJTRVJcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDIgMTY6Mzc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjc4NgoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDI3MgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBc3Nlc3NtZW50IG9mIHRoZSBCUEYgU3RyZWFtIFBhcnNlciBhbmQgUmVsYXRlZCBGdW5jdGlvbnMqKgoKT2theSwgc28gd2UmIzM5O3JlIGxvb2tpbmcgYXQgYSB1c2VyLWNvbmZpZ3VyYWJsZSBmZWF0dXJlLCBgQlBGX1NUUkVBTV9QQVJTRVJgLiBNYWtlcyBzZW5zZSB0byBhZGQgYm90aCBgQlBGX1NZU0NBTExgIGFuZCBgQlBGX1NUUkVBTV9QQVJTRVJgIHRvIGBFbmFibGVDb25maWdzYCB0byBrZWVwIHRoaW5ncyBjb25zaXN0ZW50LiBXZSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGUgc3RyZWFtIHBhcnNlciBjYW4gYmUgZW5hYmxlZCBhbG9uZ3NpZGUgdGhlIHN5c2NhbGxzLgoKTm93LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoZSBgdGNwX2VhdF9za2JgIGZ1bmN0aW9uLiBJIHJlbWVtYmVyIHRoaXMgb25lLiBJdCYjMzk7cyB1c2VkIHdoZW4gYSBwYWNrZXQgaXMgZHJvcHBlZCBvciByZWRpcmVjdGVkIHdpdGhpbiB0aGUgQlBGIHNvY2ttYXAgZnJhbWV3b3JrLCByaWdodD8gTG9va3MgbGlrZSB3ZSYjMzk7dmUgZ290IGEgYnVnIGZpeCBoZXJlLCB3aGljaCBpcyBnb29kLiBUaGUgcGF0Y2ggaXMgYWRkcmVzc2luZyBhbiBpbmNyZW1lbnQgaXNzdWUgd2l0aCBgdGNwLSZndDtjb3BpZWRfc2VxYC4gVGhlIHByZXZpb3VzIGxvZ2ljIHdhcyBjbGVhcmx5IGluY29ycmVjdCwgdXNpbmcgYHNrYi0mZ3Q7bGVuYCB3aGVuIGl0IHNob3VsZCBoYXZlIHVzZWQgdGhlIGNvcnJlY3Qgc2VxdWVuY2UgbnVtYmVyIGFyaXRobWV0aWMgYmFzZWQgb24gdGhlIGBlbmRfc2VxYC4gVGhpcyBpcyBhIGNsZWFyIGltcHJvdmVtZW50IGFuZCBkZWZpbml0ZWx5IHdhcnJhbnRzIHNvbWUgZnV6emluZy4gVGhlIHVwZGF0ZWQgbG9naWMgbWFrZXMgYSBsb3QgbW9yZSBzZW5zZS4KCktleSBzeW1ib2xzIHRvIHBheSBhdHRlbnRpb24gdG8gYXJlIGB0Y3BfZWF0X3NrYmAsIGBza19wc29ja192ZXJkaWN0X2FwcGx5YCwgYW5kIGBza19wc29ja192ZXJkaWN0X3JlY3ZgLgoKTGV0JiMzOTtzIHF1aWNrbHkgZXZhbHVhdGUgaWYgYHRjcF9lYXRfc2tiYCBpcyBhIGhvdCBwYXRoLiBTaW5jZSBpdCYjMzk7cyBvbmx5IGNhbGxlZCBvbiBkcm9wcyBhbmQgcmVkaXJlY3RzIHdpdGhpbiBzb2NrbWFwLCBpdCYjMzk7cyBub3QgYSBnZW5lcmFsIHBlcmZvcm1hbmNlIGJvdHRsZW5lY2sgdW5sZXNzIHRoZXJlJiMzOTtzIGFjdGl2ZSBzb2NrbWFwIHVzYWdlLiBJdCBzZWVtcyBwcmV0dHkgdGFyZ2V0ZWQuIE5vdywgbGV0JiMzOTtzIHNwZW5kIHNvbWUgdGltZSByZXZpZXdpbmcgYHNrX3Bzb2NrX3ZlcmRpY3RfYXBwbHlgIGFuZCBgc2tfcHNvY2tfdmVyZGljdF9yZWN2YCwgZGlnZ2luZyBpbnRvIHRoZSBjb250cm9sIGZsb3cgYW5kIHBvdGVudGlhbCBpc3N1ZXMgd2l0aCB0aGUgc3RyZWFtIHBhcnNlciYjMzk7cyBpbnRlZ3JhdGlvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDIgMTY6Mzc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c2tfcHNvY2tfdmVyZGljdF9hcHBseSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9jb3JlL3NrbXNnLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L2NvcmUvc2ttc2cuYz05NTg9c3RhdGljIGludCBza19wc29ja19za2JfcmVkaXJlY3Qoc3RydWN0IHNrX3Bzb2NrICpmcm9tLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuLS1cbm5ldC9jb3JlL3NrbXNnLmMtOTk1LVxubmV0L2NvcmUvc2ttc2cuYzo5OTY6c3RhdGljIGludCBza19wc29ja192ZXJkaWN0X2FwcGx5KHN0cnVjdCBza19wc29jayAqcHNvY2ssIHN0cnVjdCBza19idWZmICpza2IsXG5uZXQvY29yZS9za21zZy5jLTk5Ny1cdFx0XHRcdCAgaW50IHZlcmRpY3QpXG4tLVxubmV0L2NvcmUvc2ttc2cuYz0xMDc1PXN0YXRpYyB2b2lkIHNrX3Bzb2NrX3N0cnBfcmVhZChzdHJ1Y3Qgc3RycGFyc2VyICpzdHJwLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuLS1cbm5ldC9jb3JlL3NrbXNnLmMtMTA5OC1cdH1cbm5ldC9jb3JlL3NrbXNnLmM6MTA5OTpcdHNrX3Bzb2NrX3ZlcmRpY3RfYXBwbHkocHNvY2ssIHNrYiwgcmV0KTtcbm5ldC9jb3JlL3NrbXNnLmMtMTEwMC1vdXQ6XG4tLVxubmV0L2NvcmUvc2ttc2cuYz0xMTk4PXN0YXRpYyBpbnQgc2tfcHNvY2tfdmVyZGljdF9yZWN2KHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX2J1ZmYgKnNrYilcbi0tXG5uZXQvY29yZS9za21zZy5jLTEyMjEtXHR9XG5uZXQvY29yZS9za21zZy5jOjEyMjI6XHRyZXQgPSBza19wc29ja192ZXJkaWN0X2FwcGx5KHBzb2NrLCBza2IsIHJldCk7XG5uZXQvY29yZS9za21zZy5jLTEyMjMtXHRpZiAocmV0IFx1MDAzYyAwKVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMiAxNjozNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3ODE5CgkJCQkJCQlvdXRwdXQ6IDEyMgoJCQkJCQkJdGhvdWdodHM6IDEyMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFBhdGNoJiMzOTtzIEZvY3VzKioKCk9rYXksIHRoZXNlIGxpc3RlZCBpdGVtcyBhcmUgZGVmaW5pdGVseSBzb2xpZCBpbmRpY2F0b3JzIG9mIHRoZSBwYXRjaCYjMzk7cyBjZW50cmFsIGFyZWEgb2YgY29uY2Vybi4gTGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93biBzeXN0ZW1hdGljYWxseS4KCkl0IGxvb2tzIGxpa2UgdGhlIHBhdGNoIGlzIGZsYWdnZWQgYXMgYmVpbmcgJiMzNDtXb3J0aEZ1enppbmcsJiMzNDsgd2hpY2ggaW1tZWRpYXRlbHkgc3VnZ2VzdHMgYSBwb3RlbnRpYWwgZm9yIGVkZ2UgY2FzZXMgb3IgdW5leHBlY3RlZCBiZWhhdmlvcnMuIFRoZSAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7IGFyZSBwYXJ0aWN1bGFybHkgdGVsbGluZy4gV2UmIzM5O3ZlIGdvdCAmIzM0O3RjcF9lYXRfc2tiLCYjMzQ7IHdoaWNoIGlzIGEgZnVuZGFtZW50YWwgZnVuY3Rpb24gaW4gVENQIGhhbmRsaW5nLCBkZWFsaW5nIGRpcmVjdGx5IHdpdGggaW5jb21pbmcgZGF0YSwgYW5kIHRoZW4gd2UgaGF2ZSAmIzM0O3NrX3Bzb2NrX3ZlcmRpY3RfYXBwbHkmIzM0OyBhbmQgJiMzNDtza19wc29ja192ZXJkaWN0X3JlY3YmIzM0OyByZWxhdGVkIHRvIHZlcmRpY3QgYXBwbGljYXRpb24gYW5kIHJlY2VpcHQgd2l0aGluIHRoZSBzb2NrbWFwIGZyYW1ld29yay4gVGhhdCYjMzk7cyBhIGRpcmVjdCBjb25uZWN0aW9uIHRvIGhvdyB3ZSBoYW5kbGUgc29ja2V0IHZlcmRpY3RzIHVzaW5nIEJQRiwgaW5kaWNhdGluZyBhIGZvY3VzZWQgZWZmb3J0IG9uIHRoZSBjb3JlIGludGVyYWN0aW9uIGJldHdlZW4gQlBGIGFuZCBuZXR3b3JrIGRhdGEuCgpUaGUgJiMzNDtFbmFibGVDb25maWdzJiMzNDsgYXJlIGVxdWFsbHkgaWxsdW1pbmF0aW5nOiAmIzM0O0JQRl9TWVNDQUxMJiMzNDsgYW5kICYjMzQ7QlBGX1NUUkVBTV9QQVJTRVIuJiMzNDsgU28sIHdlIGFyZSBsaWtlbHkgZGVhbGluZyB3aXRoIEJQRiBpbnRlcmFjdGluZyB3aXRoIHN5c2NhbGxzIGFuZCBhIHN0cmVhbSBwYXJzZXIuCgpTeW50aGVzaXppbmcgYWxsIG9mIHRoaXMsIHRoZSAmIzM0O1JlYXNvbmluZyYjMzQ7IHN0YXRlbWVudCBjb25maXJtcyBpdDogdGhpcyBwYXRjaCBpcyBmdW5kYW1lbnRhbGx5IGFsdGVyaW5nIHRoZSBjb3JlIEJQRiBzb2NrbWFwIGxvZ2ljLiBTcGVjaWZpY2FsbHksIGl0JiMzOTtzIG1vZGlmeWluZyB0aGUgcHJvY2VzcyB3aXRoaW4gYHRjcF9lYXRfc2tiYCDigJMgKnZlcnkqIGltcG9ydGFudCDigJMgaG93IFRDUCYjMzk7cyBgY29waWVkX3NlcWAgaXMgaGFuZGxlZCB3aGVuIHBhY2tldHMgYXJlIGRyb3BwZWQgb3IgcmVkaXJlY3RlZC4gVGhhdCBpcywgd2UmIzM5O3JlIHRhbGtpbmcgYWJvdXQgYSBmdW5jdGlvbmFsIGNoYW5nZSB0byBob3cgdGhlIGtlcm5lbCAqcHJvY2Vzc2VzIG5ldHdvcmsgdHJhZmZpYyouIFRoaXMgaGFzIGltcGxpY2F0aW9ucyBmb3IgcGVyZm9ybWFuY2UsIHNlY3VyaXR5LCBhbmQgc3RhYmlsaXR5IGlmIGl0IGlzbiYjMzk7dCBjb3JyZWN0LiBJIG5lZWQgdG8gZGlnIGRlZXBlciBpbnRvIHRoZSBzcGVjaWZpYyBtb2RpZmljYXRpb25zIHRvIHVuZGVyc3RhbmQgdGhlIHByZWNpc2UgaW1wYWN0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMiAxNjozNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7QlBGX1NZU0NBTEwmIzM0OywKICAgICYjMzQ7QlBGX1NUUkVBTV9QQVJTRVImIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDt0Y3BfZWF0X3NrYiYjMzQ7LAogICAgJiMzNDtza19wc29ja192ZXJkaWN0X2FwcGx5JiMzNDssCiAgICAmIzM0O3NrX3Bzb2NrX3ZlcmRpY3RfcmVjdiYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBjb3JlIEJQRiBzb2NrbWFwIGxvZ2ljIGluIHRjcF9lYXRfc2tiLCBjaGFuZ2luZyBob3cgVENQIGNvcGllZF9zZXEgaXMgdXBkYXRlZCB3aGVuIHBhY2tldHMgYXJlIGRyb3BwZWQgb3IgcmVkaXJlY3RlZC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIG5ldHdvcmsgcHJvY2Vzc2luZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7QlBGX1NZU0NBTEwmIzM0OywKICAgICYjMzQ7QlBGX1NUUkVBTV9QQVJTRVImIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDt0Y3BfZWF0X3NrYiYjMzQ7LAogICAgJiMzNDtza19wc29ja192ZXJkaWN0X2FwcGx5JiMzNDssCiAgICAmIzM0O3NrX3Bzb2NrX3ZlcmRpY3RfcmVjdiYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBjb3JlIEJQRiBzb2NrbWFwIGxvZ2ljIGluIHRjcF9lYXRfc2tiLCBjaGFuZ2luZyBob3cgVENQIGNvcGllZF9zZXEgaXMgdXBkYXRlZCB3aGVuIHBhY2tldHMgYXJlIGRyb3BwZWQgb3IgcmVkaXJlY3RlZC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIG5ldHdvcmsgcHJvY2Vzc2luZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAyVDE2OjM2OjIzLjk1OTMyMjQ0N1oiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ3NzQ2NTU0MjkyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkJQRl9TWVNDQUxMXCIsXG4gICAgXCJCUEZfU1RSRUFNX1BBUlNFUlwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInRjcF9lYXRfc2tiXCIsXG4gICAgXCJza19wc29ja192ZXJkaWN0X2FwcGx5XCIsXG4gICAgXCJza19wc29ja192ZXJkaWN0X3JlY3ZcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBjb3JlIEJQRiBzb2NrbWFwIGxvZ2ljIGluIHRjcF9lYXRfc2tiLCBjaGFuZ2luZyBob3cgVENQIGNvcGllZF9zZXEgaXMgdXBkYXRlZCB3aGVuIHBhY2tldHMgYXJlIGRyb3BwZWQgb3IgcmVkaXJlY3RlZC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIG5ldHdvcmsgcHJvY2Vzc2luZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDJUMTY6MzY6MjMuOTU5MzI4NTU3WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1MzgxOTYzNTAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCBlNGJiZTE5MGU5NjM3YWQ3NGJhOTA4Y2JhMzk1Njk1MWVhM2YwZmYzXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBUaHUgSnVsIDIgMTY6MzY6MjIgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvbmV0L2lwdjQvdGNwX2JwZi5jIGIvbmV0L2lwdjQvdGNwX2JwZi5jXFxuaW5kZXggY2MwYmQ3M2YzNmI2ZDYuLmQ2NDBmOGUwNjUyOTc4IDEwMDY0NFxcbi0tLSBhL25ldC9pcHY0L3RjcF9icGYuY1xcbisrKyBiL25ldC9pcHY0L3RjcF9icGYuY1xcbkBAIC0xNSw3ICsxNSw3IEBAXFxuIHZvaWQgdGNwX2VhdF9za2Ioc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbiB7XFxuIFxcdHN0cnVjdCB0Y3Bfc29jayAqdGNwO1xcbi1cXHRpbnQgY29waWVkO1xcbitcXHR1MzIgZW5kX3NlcSwgZGVsdGE7XFxuIFxcbiBcXHRpZiAoIXNrYiB8fCAhc2tiLVxcdTAwM2VsZW4gfHwgIXNrX2lzX3RjcChzaykpXFxuIFxcdFxcdHJldHVybjtcXG5AQCAtMjQsMTAgKzI0LDExIEBAIHZvaWQgdGNwX2VhdF9za2Ioc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbiBcXHRcXHRyZXR1cm47XFxuIFxcbiBcXHR0Y3AgPSB0Y3Bfc2soc2spO1xcbi1cXHRjb3BpZWQgPSB0Y3AtXFx1MDAzZWNvcGllZF9zZXEgKyBza2ItXFx1MDAzZWxlbjtcXG4tXFx0V1JJVEVfT05DRSh0Y3AtXFx1MDAzZWNvcGllZF9zZXEsIGNvcGllZCk7XFxuK1xcdGVuZF9zZXEgPSBUQ1BfU0tCX0NCKHNrYiktXFx1MDAzZWVuZF9zZXE7XFxuK1xcdGRlbHRhID0gZW5kX3NlcSAtIHRjcC1cXHUwMDNlY29waWVkX3NlcTtcXG4rXFx0V1JJVEVfT05DRSh0Y3AtXFx1MDAzZWNvcGllZF9zZXEsIGVuZF9zZXEpO1xcbiBcXHR0Y3BfcmN2X3NwYWNlX2FkanVzdChzayk7XFxuLVxcdF9fdGNwX2NsZWFudXBfcmJ1Zihzaywgc2tiLVxcdTAwM2VsZW4pO1xcbitcXHRfX3RjcF9jbGVhbnVwX3JidWYoc2ssIGRlbHRhKTtcXG4gfVxcbiBcXG4gc3RhdGljIGludCBicGZfdGNwX2luZ3Jlc3Moc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3Qgc2tfcHNvY2sgKnBzb2NrLFxcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9zb2NrbWFwX2Jhc2ljLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9zb2NrbWFwX2Jhc2ljLmNcXG5pbmRleCBjYjMyMjk3MTFmOTNhMy4uMTA2ZGQwM2NkZTg0ZWYgMTAwNjQ0XFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvc29ja21hcF9iYXNpYy5jXFxuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvc29ja21hcF9iYXNpYy5jXFxuQEAgLTEyNzUsNiArMTI3NSw3NyBAQCBzdGF0aWMgdm9pZCB0ZXN0X3NvY2ttYXBfY29waWVkX3NlcShib29sIHN0cnApXFxuIFxcdHRlc3Rfc29ja21hcF9wYXNzX3Byb2dfX2Rlc3Ryb3koc2tlbCk7XFxuIH1cXG4gXFxuK3N0YXRpYyB2b2lkIHRlc3Rfc29ja21hcF9kcm9wX2FmdGVyX3BhcnRpYWxfcmVhZCh2b2lkKVxcbit7XFxuK1xcdGludCBtYXAsIGVyciwgc2VudCwgcmVjdmQsIHplcm8gPSAwLCBvbiA9IDE7XFxuK1xcdHN0cnVjdCB0ZXN0X3NvY2ttYXBfZHJvcF9wcm9nICpza2VsO1xcbitcXHRpbnQgYzAgPSAtMSwgcDAgPSAtMSwgYzEgPSAtMSwgcDEgPSAtMTtcXG4rXFx0c3RydWN0IHRjcF96ZXJvY29weV9yZWNlaXZlIHpjID0ge307XFxuK1xcdHNvY2tsZW5fdCB6Y19sZW4gPSBzaXplb2YoemMpO1xcbitcXHRjaGFyIGJ1ZlsyMDBdID0ge30sIHJjdls1MF0sIGFkZHJbMTAwXTtcXG4rXFx0c3RydWN0IGJwZl9wcm9ncmFtICpwcm9nO1xcbitcXG4rXFx0c2tlbCA9IHRlc3Rfc29ja21hcF9kcm9wX3Byb2dfX29wZW5fYW5kX2xvYWQoKTtcXG4rXFx0aWYgKCFBU1NFUlRfT0tfUFRSKHNrZWwsIFxcXCJvcGVuX2FuZF9sb2FkXFxcIikpXFxuK1xcdFxcdHJldHVybjtcXG4rXFxuK1xcdGlmIChjcmVhdGVfc29ja2V0X3BhaXJzKEFGX0lORVQsIFNPQ0tfU1RSRUFNLCBcXHUwMDI2YzAsIFxcdTAwMjZjMSwgXFx1MDAyNnAwLCBcXHUwMDI2cDEpKVxcbitcXHRcXHRnb3RvIGVuZDtcXG4rXFxuK1xcdHNlbnQgPSB4c2VuZChjMCwgYnVmLCBzaXplb2YoYnVmKSwgMCk7XFxuK1xcdGlmICghQVNTRVJUX0VRKHNlbnQsIHNpemVvZihidWYpLCBcXFwieHNlbmQobmF0aXZlKVxcXCIpKVxcbitcXHRcXHRnb3RvIGVuZDtcXG4rXFxuK1xcdHJlY3ZkID0gcmVjdl90aW1lb3V0KHAwLCByY3YsIHNpemVvZihyY3YpLCBNU0dfRE9OVFdBSVQsIDEpO1xcbitcXHRpZiAoIUFTU0VSVF9FUShyZWN2ZCwgc2l6ZW9mKHJjdiksIFxcXCJyZWN2X3RpbWVvdXQocGFydGlhbClcXFwiKSlcXG4rXFx0XFx0Z290byBlbmQ7XFxuK1xcbitcXHRwcm9nID0gc2tlbC1cXHUwMDNlcHJvZ3MucHJvZ19za2JfdmVyZGljdDtcXG4rXFx0bWFwID0gYnBmX21hcF9fZmQoc2tlbC1cXHUwMDNlbWFwcy5zb2NrX21hcF9yeCk7XFxuK1xcdGVyciA9IGJwZl9wcm9nX2F0dGFjaChicGZfcHJvZ3JhbV9fZmQocHJvZyksIG1hcCxcXG4rXFx0XFx0XFx0ICAgICAgQlBGX1NLX1NLQl9TVFJFQU1fVkVSRElDVCwgMCk7XFxuK1xcdGlmICghQVNTRVJUX09LKGVyciwgXFxcImJwZl9wcm9nX2F0dGFjaFxcXCIpKVxcbitcXHRcXHRnb3RvIGVuZDtcXG4rXFxuK1xcdGVyciA9IGJwZl9tYXBfdXBkYXRlX2VsZW0obWFwLCBcXHUwMDI2emVybywgXFx1MDAyNnAwLCBCUEZfTk9FWElTVCk7XFxuK1xcdGlmICghQVNTRVJUX09LKGVyciwgXFxcImJwZl9tYXBfdXBkYXRlX2VsZW1cXFwiKSlcXG4rXFx0XFx0Z290byBlbmQ7XFxuK1xcbitcXHRzZW50ID0geHNlbmQoYzAsIGJ1ZiwgMSwgMCk7XFxuK1xcdGlmICghQVNTRVJUX0VRKHNlbnQsIDEsIFxcXCJ4c2VuZChkcm9wKVxcXCIpKVxcbitcXHRcXHRnb3RvIGVuZDtcXG4rXFxuK1xcdGVyciA9IGJwZl9tYXBfZGVsZXRlX2VsZW0obWFwLCBcXHUwMDI2emVybyk7XFxuK1xcdGlmICghQVNTRVJUX09LKGVyciwgXFxcImJwZl9tYXBfZGVsZXRlX2VsZW1cXFwiKSlcXG4rXFx0XFx0Z290byBlbmQ7XFxuK1xcbitcXHRzZW50ID0geHNlbmQoYzAsIGJ1ZiwgMSwgMCk7XFxuK1xcdGlmICghQVNTRVJUX0VRKHNlbnQsIDEsIFxcXCJ4c2VuZChuYXRpdmUgYWdhaW4pXFxcIikpXFxuK1xcdFxcdGdvdG8gZW5kO1xcbitcXG4rXFx0ZXJyID0gc2V0c29ja29wdChwMCwgU09MX1NPQ0tFVCwgU09fWkVST0NPUFksIFxcdTAwMjZvbiwgc2l6ZW9mKG9uKSk7XFxuK1xcdGlmICghQVNTRVJUX09LKGVyciwgXFxcInNldHNvY2tvcHQoU09fWkVST0NPUFkpXFxcIikpXFxuK1xcdFxcdGdvdG8gZW5kO1xcbitcXG4rXFx0emMuY29weWJ1Zl9hZGRyZXNzID0gKF9fdTY0KSh1bnNpZ25lZCBsb25nKWFkZHI7XFxuK1xcdHpjLmNvcHlidWZfbGVuID0gc2l6ZW9mKGFkZHIpO1xcbitcXHRlcnIgPSBnZXRzb2Nrb3B0KHAwLCBJUFBST1RPX1RDUCwgVENQX1pFUk9DT1BZX1JFQ0VJVkUsIFxcdTAwMjZ6YywgXFx1MDAyNnpjX2xlbik7XFxuK1xcdGlmICghQVNTRVJUX09LKGVyciwgXFxcImdldHNvY2tvcHQoVENQX1pFUk9DT1BZX1JFQ0VJVkUpXFxcIikpXFxuK1xcdFxcdGdvdG8gZW5kO1xcbitcXG4rXFx0QVNTRVJUX0VRKHpjLmNvcHlidWZfbGVuLCAxLCBcXFwiVENQX1pFUk9DT1BZX1JFQ0VJVkUgY29waWVkXFxcIik7XFxuK2VuZDpcXG4rXFx0aWYgKGMwIFxcdTAwM2U9IDApXFxuK1xcdFxcdGNsb3NlKGMwKTtcXG4rXFx0aWYgKHAwIFxcdTAwM2U9IDApXFxuK1xcdFxcdGNsb3NlKHAwKTtcXG4rXFx0aWYgKGMxIFxcdTAwM2U9IDApXFxuK1xcdFxcdGNsb3NlKGMxKTtcXG4rXFx0aWYgKHAxIFxcdTAwM2U9IDApXFxuK1xcdFxcdGNsb3NlKHAxKTtcXG4rXFx0dGVzdF9zb2NrbWFwX2Ryb3BfcHJvZ19fZGVzdHJveShza2VsKTtcXG4rfVxcbitcXG4gLyogV2FpdCB1bnRpbCBGSU9OUkVBRCByZXR1cm5zIHRoZSBleHBlY3RlZCB2YWx1ZSBvciB0aW1lb3V0ICovXFxuIHN0YXRpYyBpbnQgd2FpdF9mb3JfZmlvbnJlYWQoaW50IGZkLCBpbnQgZXhwZWN0ZWQsIHVuc2lnbmVkIGludCB0aW1lb3V0X21zKVxcbiB7XFxuQEAgLTE0NDcsNiArMTUxOCw4IEBAIHZvaWQgdGVzdF9zb2NrbWFwX2Jhc2ljKHZvaWQpXFxuIFxcdFxcdHRlc3Rfc29ja21hcF9jb3BpZWRfc2VxKGZhbHNlKTtcXG4gXFx0aWYgKHRlc3RfX3N0YXJ0X3N1YnRlc3QoXFxcInNvY2ttYXAgcmVjb3ZlciB3aXRoIHN0cnBcXFwiKSlcXG4gXFx0XFx0dGVzdF9zb2NrbWFwX2NvcGllZF9zZXEodHJ1ZSk7XFxuK1xcdGlmICh0ZXN0X19zdGFydF9zdWJ0ZXN0KFxcXCJzb2NrbWFwIGRyb3AgYWZ0ZXIgcGFydGlhbCByZWFkXFxcIikpXFxuK1xcdFxcdHRlc3Rfc29ja21hcF9kcm9wX2FmdGVyX3BhcnRpYWxfcmVhZCgpO1xcbiBcXHRpZiAodGVzdF9fc3RhcnRfc3VidGVzdChcXFwic29ja21hcCB0Y3AgbXVsdGkgY2hhbm5lbHNcXFwiKSlcXG4gXFx0XFx0dGVzdF9zb2NrbWFwX211bHRpX2NoYW5uZWxzKFNPQ0tfU1RSRUFNKTtcXG4gXFx0aWYgKHRlc3RfX3N0YXJ0X3N1YnRlc3QoXFxcInNvY2ttYXAgdWRwIG11bHRpIGNoYW5uZWxzXFxcIikpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAyVDE2OjM2OjI0LjQ5ODA0NDEzN1oiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDcyMDc4MjQ2OTIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQlBGX1NZU0NBTExcIixcbiAgICBcIkJQRl9TVFJFQU1fUEFSU0VSXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwidGNwX2VhdF9za2JcIixcbiAgICBcInNrX3Bzb2NrX3ZlcmRpY3RfYXBwbHlcIixcbiAgICBcInNrX3Bzb2NrX3ZlcmRpY3RfcmVjdlwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIGNvcmUgQlBGIHNvY2ttYXAgbG9naWMgaW4gdGNwX2VhdF9za2IsIGNoYW5naW5nIGhvdyBUQ1AgY29waWVkX3NlcSBpcyB1cGRhdGVkIHdoZW4gcGFja2V0cyBhcmUgZHJvcHBlZCBvciByZWRpcmVjdGVkLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gbmV0d29yayBwcm9jZXNzaW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG5ldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0XG4gICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksXG4gICBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IGU0YmJlMTkwZTk2MzdhZDc0YmE5MDhjYmEzOTU2OTUxZWEzZjBmZjNcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVGh1IEp1bCAyIDE2OjM2OjIyIDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbmV0L2lwdjQvdGNwX2JwZi5jIGIvbmV0L2lwdjQvdGNwX2JwZi5jXG5pbmRleCBjYzBiZDczZjM2YjZkNi4uZDY0MGY4ZTA2NTI5NzggMTAwNjQ0XG4tLS0gYS9uZXQvaXB2NC90Y3BfYnBmLmNcbisrKyBiL25ldC9pcHY0L3RjcF9icGYuY1xuQEAgLTE1LDcgKzE1LDcgQEBcbiB2b2lkIHRjcF9lYXRfc2tiKHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX2J1ZmYgKnNrYilcbiB7XG4gXHRzdHJ1Y3QgdGNwX3NvY2sgKnRjcDtcbi1cdGludCBjb3BpZWQ7XG4rXHR1MzIgZW5kX3NlcSwgZGVsdGE7XG4gXG4gXHRpZiAoIXNrYiB8fCAhc2tiLVx1MDAzZWxlbiB8fCAhc2tfaXNfdGNwKHNrKSlcbiBcdFx0cmV0dXJuO1xuQEAgLTI0LDEwICsyNCwxMSBAQCB2b2lkIHRjcF9lYXRfc2tiKHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX2J1ZmYgKnNrYilcbiBcdFx0cmV0dXJuO1xuIFxuIFx0dGNwID0gdGNwX3NrKHNrKTtcbi1cdGNvcGllZCA9IHRjcC1cdTAwM2Vjb3BpZWRfc2VxICsgc2tiLVx1MDAzZWxlbjtcbi1cdFdSSVRFX09OQ0UodGNwLVx1MDAzZWNvcGllZF9zZXEsIGNvcGllZCk7XG4rXHRlbmRfc2VxID0gVENQX1NLQl9DQihza2IpLVx1MDAzZWVuZF9zZXE7XG4rXHRkZWx0YSA9IGVuZF9zZXEgLSB0Y3AtXHUwMDNlY29waWVkX3NlcTtcbitcdFdSSVRFX09OQ0UodGNwLVx1MDAzZWNvcGllZF9zZXEsIGVuZF9zZXEpO1xuIFx0dGNwX3Jjdl9zcGFjZV9hZGp1c3Qoc2spO1xuLVx0X190Y3BfY2xlYW51cF9yYnVmKHNrLCBza2ItXHUwMDNlbGVuKTtcbitcdF9fdGNwX2NsZWFudXBfcmJ1ZihzaywgZGVsdGEpO1xuIH1cbiBcbiBzdGF0aWMgaW50IGJwZl90Y3BfaW5ncmVzcyhzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBza19wc29jayAqcHNvY2ssXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvc29ja21hcF9iYXNpYy5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvc29ja21hcF9iYXNpYy5jXG5pbmRleCBjYjMyMjk3MTFmOTNhMy4uMTA2ZGQwM2NkZTg0ZWYgMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9zb2NrbWFwX2Jhc2ljLmNcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3NvY2ttYXBfYmFzaWMuY1xuQEAgLTEyNzUsNiArMTI3NSw3NyBAQCBzdGF0aWMgdm9pZCB0ZXN0X3NvY2ttYXBfY29waWVkX3NlcShib29sIHN0cnApXG4gXHR0ZXN0X3NvY2ttYXBfcGFzc19wcm9nX19kZXN0cm95KHNrZWwpO1xuIH1cbiBcbitzdGF0aWMgdm9pZCB0ZXN0X3NvY2ttYXBfZHJvcF9hZnRlcl9wYXJ0aWFsX3JlYWQodm9pZClcbit7XG4rXHRpbnQgbWFwLCBlcnIsIHNlbnQsIHJlY3ZkLCB6ZXJvID0gMCwgb24gPSAxO1xuK1x0c3RydWN0IHRlc3Rfc29ja21hcF9kcm9wX3Byb2cgKnNrZWw7XG4rXHRpbnQgYzAgPSAtMSwgcDAgPSAtMSwgYzEgPSAtMSwgcDEgPSAtMTtcbitcdHN0cnVjdCB0Y3BfemVyb2NvcHlfcmVjZWl2ZSB6YyA9IHt9O1xuK1x0c29ja2xlbl90IHpjX2xlbiA9IHNpemVvZih6Yyk7XG4rXHRjaGFyIGJ1ZlsyMDBdID0ge30sIHJjdls1MF0sIGFkZHJbMTAwXTtcbitcdHN0cnVjdCBicGZfcHJvZ3JhbSAqcHJvZztcbitcbitcdHNrZWwgPSB0ZXN0X3NvY2ttYXBfZHJvcF9wcm9nX19vcGVuX2FuZF9sb2FkKCk7XG4rXHRpZiAoIUFTU0VSVF9PS19QVFIoc2tlbCwgXCJvcGVuX2FuZF9sb2FkXCIpKVxuK1x0XHRyZXR1cm47XG4rXG4rXHRpZiAoY3JlYXRlX3NvY2tldF9wYWlycyhBRl9JTkVULCBTT0NLX1NUUkVBTSwgXHUwMDI2YzAsIFx1MDAyNmMxLCBcdTAwMjZwMCwgXHUwMDI2cDEpKVxuK1x0XHRnb3RvIGVuZDtcbitcbitcdHNlbnQgPSB4c2VuZChjMCwgYnVmLCBzaXplb2YoYnVmKSwgMCk7XG4rXHRpZiAoIUFTU0VSVF9FUShzZW50LCBzaXplb2YoYnVmKSwgXCJ4c2VuZChuYXRpdmUpXCIpKVxuK1x0XHRnb3RvIGVuZDtcbitcbitcdHJlY3ZkID0gcmVjdl90aW1lb3V0KHAwLCByY3YsIHNpemVvZihyY3YpLCBNU0dfRE9OVFdBSVQsIDEpO1xuK1x0aWYgKCFBU1NFUlRfRVEocmVjdmQsIHNpemVvZihyY3YpLCBcInJlY3ZfdGltZW91dChwYXJ0aWFsKVwiKSlcbitcdFx0Z290byBlbmQ7XG4rXG4rXHRwcm9nID0gc2tlbC1cdTAwM2Vwcm9ncy5wcm9nX3NrYl92ZXJkaWN0O1xuK1x0bWFwID0gYnBmX21hcF9fZmQoc2tlbC1cdTAwM2VtYXBzLnNvY2tfbWFwX3J4KTtcbitcdGVyciA9IGJwZl9wcm9nX2F0dGFjaChicGZfcHJvZ3JhbV9fZmQocHJvZyksIG1hcCxcbitcdFx0XHQgICAgICBCUEZfU0tfU0tCX1NUUkVBTV9WRVJESUNULCAwKTtcbitcdGlmICghQVNTRVJUX09LKGVyciwgXCJicGZfcHJvZ19hdHRhY2hcIikpXG4rXHRcdGdvdG8gZW5kO1xuK1xuK1x0ZXJyID0gYnBmX21hcF91cGRhdGVfZWxlbShtYXAsIFx1MDAyNnplcm8sIFx1MDAyNnAwLCBCUEZfTk9FWElTVCk7XG4rXHRpZiAoIUFTU0VSVF9PSyhlcnIsIFwiYnBmX21hcF91cGRhdGVfZWxlbVwiKSlcbitcdFx0Z290byBlbmQ7XG4rXG4rXHRzZW50ID0geHNlbmQoYzAsIGJ1ZiwgMSwgMCk7XG4rXHRpZiAoIUFTU0VSVF9FUShzZW50LCAxLCBcInhzZW5kKGRyb3ApXCIpKVxuK1x0XHRnb3RvIGVuZDtcbitcbitcdGVyciA9IGJwZl9tYXBfZGVsZXRlX2VsZW0obWFwLCBcdTAwMjZ6ZXJvKTtcbitcdGlmICghQVNTRVJUX09LKGVyciwgXCJicGZfbWFwX2RlbGV0ZV9lbGVtXCIpKVxuK1x0XHRnb3RvIGVuZDtcbitcbitcdHNlbnQgPSB4c2VuZChjMCwgYnVmLCAxLCAwKTtcbitcdGlmICghQVNTRVJUX0VRKHNlbnQsIDEsIFwieHNlbmQobmF0aXZlIGFnYWluKVwiKSlcbitcdFx0Z290byBlbmQ7XG4rXG4rXHRlcnIgPSBzZXRzb2Nrb3B0KHAwLCBTT0xfU09DS0VULCBTT19aRVJPQ09QWSwgXHUwMDI2b24sIHNpemVvZihvbikpO1xuK1x0aWYgKCFBU1NFUlRfT0soZXJyLCBcInNldHNvY2tvcHQoU09fWkVST0NPUFkpXCIpKVxuK1x0XHRnb3RvIGVuZDtcbitcbitcdHpjLmNvcHlidWZfYWRkcmVzcyA9IChfX3U2NCkodW5zaWduZWQgbG9uZylhZGRyO1xuK1x0emMuY29weWJ1Zl9sZW4gPSBzaXplb2YoYWRkcik7XG4rXHRlcnIgPSBnZXRzb2Nrb3B0KHAwLCBJUFBST1RPX1RDUCwgVENQX1pFUk9DT1BZX1JFQ0VJVkUsIFx1MDAyNnpjLCBcdTAwMjZ6Y19sZW4pO1xuK1x0aWYgKCFBU1NFUlRfT0soZXJyLCBcImdldHNvY2tvcHQoVENQX1pFUk9DT1BZX1JFQ0VJVkUpXCIpKVxuK1x0XHRnb3RvIGVuZDtcbitcbitcdEFTU0VSVF9FUSh6Yy5jb3B5YnVmX2xlbiwgMSwgXCJUQ1BfWkVST0NPUFlfUkVDRUlWRSBjb3BpZWRcIik7XG4rZW5kOlxuK1x0aWYgKGMwIFx1MDAzZT0gMClcbitcdFx0Y2xvc2UoYzApO1xuK1x0aWYgKHAwIFx1MDAzZT0gMClcbitcdFx0Y2xvc2UocDApO1xuK1x0aWYgKGMxIFx1MDAzZT0gMClcbitcdFx0Y2xvc2UoYzEpO1xuK1x0aWYgKHAxIFx1MDAzZT0gMClcbitcdFx0Y2xvc2UocDEpO1xuK1x0dGVzdF9zb2NrbWFwX2Ryb3BfcHJvZ19fZGVzdHJveShza2VsKTtcbit9XG4rXG4gLyogV2FpdCB1bnRpbCBGSU9OUkVBRCByZXR1cm5zIHRoZSBleHBlY3RlZCB2YWx1ZSBvciB0aW1lb3V0ICovXG4gc3RhdGljIGludCB3YWl0X2Zvcl9maW9ucmVhZChpbnQgZmQsIGludCBleHBlY3RlZCwgdW5zaWduZWQgaW50IHRpbWVvdXRfbXMpXG4ge1xuQEAgLTE0NDcsNiArMTUxOCw4IEBAIHZvaWQgdGVzdF9zb2NrbWFwX2Jhc2ljKHZvaWQpXG4gXHRcdHRlc3Rfc29ja21hcF9jb3BpZWRfc2VxKGZhbHNlKTtcbiBcdGlmICh0ZXN0X19zdGFydF9zdWJ0ZXN0KFwic29ja21hcCByZWNvdmVyIHdpdGggc3RycFwiKSlcbiBcdFx0dGVzdF9zb2NrbWFwX2NvcGllZF9zZXEodHJ1ZSk7XG4rXHRpZiAodGVzdF9fc3RhcnRfc3VidGVzdChcInNvY2ttYXAgZHJvcCBhZnRlciBwYXJ0aWFsIHJlYWRcIikpXG4rXHRcdHRlc3Rfc29ja21hcF9kcm9wX2FmdGVyX3BhcnRpYWxfcmVhZCgpO1xuIFx0aWYgKHRlc3RfX3N0YXJ0X3N1YnRlc3QoXCJzb2NrbWFwIHRjcCBtdWx0aSBjaGFubmVsc1wiKSlcbiBcdFx0dGVzdF9zb2NrbWFwX211bHRpX2NoYW5uZWxzKFNPQ0tfU1RSRUFNKTtcbiBcdGlmICh0ZXN0X19zdGFydF9zdWJ0ZXN0KFwic29ja21hcCB1ZHAgbXVsdGkgY2hhbm5lbHNcIikpXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wMlQxNjozNjoyNC40OTgwNDU0MzdaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NjkzNzY4Nzg1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgVENQIEJQRiBNb2RpZmljYXRpb24qKlxuXG5Pa2F5LCBzbyB0aGlzIHBhdGNoIGlzIHRvdWNoaW5nIGBuZXQvaXB2NC90Y3BfYnBmLmNgIGFuZCBhZGRpbmcgYSBuZXcgdGVzdCBmb3IgaXQgaW4gYHNvY2ttYXBfYmFzaWMuY2AsIGludGVyZXN0aW5nLiBJJ2xsIG5lZWQgdG8gZGlnIGludG8gd2hhdCB0aGV5J3JlIHRyeWluZyB0byBhY2hpZXZlIHdpdGggdGhpcy4gVGhlIGNvcmUgb2YgdGhlIGNoYW5nZSBzZWVtcyB0byBiZSB3aXRoaW4gdGhlIGB0Y3BfZWF0X3NrYmAgZnVuY3Rpb24sIHNwZWNpZmljYWxseSBob3cgdGhlIGB0Y3AtXHUwMDNlY29waWVkX3NlcWAgYW5kIGBfX3RjcF9jbGVhbnVwX3JidWZgIGFyZSBiZWluZyBoYW5kbGVkLlxuXG5UaGUgb2xkIHdheSwgYGNvcGllZCA9IHRjcC1cdTAwM2Vjb3BpZWRfc2VxICsgc2tiLVx1MDAzZWxlbmAsIGlzIGJlaW5nIHJlcGxhY2VkIHdpdGggYSBjYWxjdWxhdGlvbiBpbnZvbHZpbmcgYGVuZF9zZXFgLCBjYWxjdWxhdGluZyBhIGBkZWx0YWAsIGFuZCB0aGVuIHVzaW5nIGBXUklURV9PTkNFYCB0byB1cGRhdGUgYHRjcC1cdTAwM2Vjb3BpZWRfc2VxYCwgYW5kIGZpbmFsbHkgY2FsbGluZyBgX190Y3BfY2xlYW51cF9yYnVmYCB3aXRoIHRoZSBgZGVsdGFgLiBDbGVhcmx5LCB0aGlzIGlzIG1vcmUgbnVhbmNlZCwgYnV0IHdoYXQgaXMgdGhlIHJlYXNvbmluZz8gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2h5IHRoZXkncmUgaW50cm9kdWNpbmcgYGVuZF9zZXFgIGFuZCBjYWxjdWxhdGluZyBhIGRlbHRhIHRoaXMgd2F5LiBJIHdvbmRlciBpZiB0aGlzIGhhcyBzb21ldGhpbmcgdG8gZG8gd2l0aCBtb3JlIGFkdmFuY2VkIHNvY2tldCBtYXAgdXNlIGNhc2VzLlxuXG5NeSBpbW1lZGlhdGUgbmV4dCBzdGVwIGlzIHRvIGZpbmQgb3V0IHRoZSBuZWNlc3NhcnkgY29uZmlndXJhdGlvbnMgZm9yIGB0Y3BfYnBmLmNgIGJlY2F1c2UgdGhpcyBwYXRjaCBsb29rcyBwcmV0dHkgbG93LWxldmVsLiBJJ2xsIG5lZWQgdG8gbWFrZSBzdXJlIEkgdW5kZXJzdGFuZCB0aGUgZGVwZW5kZW5jaWVzIGJlZm9yZSBJIGRpdmUgZnVydGhlciBpbnRvIHRoZSBmdW5jdGlvbmFsIGRldGFpbHMgb2YgdGhlIGNoYW5nZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MzM2NiwiT3V0cHV0VG9rZW5zIjozMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE5MSwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAyVDE2OjM2OjI5LjE5MTgxNzY3MloiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozODQ3NzM3MDYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwidGNwX2JwZlxcXFwub1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvaXB2NC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L2lwdjQvTWFrZWZpbGU9NjI9b2JqLSQoQ09ORklHX1RDUF9DT05HX0lMTElOT0lTKSArPSB0Y3BfaWxsaW5vaXMub1xcbm5ldC9pcHY0L01ha2VmaWxlOjYzOm9iai0kKENPTkZJR19ORVRfU09DS19NU0cpICs9IHRjcF9icGYub1xcbm5ldC9pcHY0L01ha2VmaWxlLTY0LW9iai0kKENPTkZJR19CUEZfU1lTQ0FMTCkgKz0gdWRwX2JwZi5vXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAyVDE2OjM2OjI5LjU3NjU5Nzg5OFoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI5MjM1MDE4MzEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0J3MgaW50ZXJuYWwgbW9ub2xvZ3VlOlxuXG4qKkludmVzdGlnYXRpbmcgYENPTkZJR19ORVRfU09DS19NU0dgIERlcGVuZGVuY3kqKlxuXG5SaWdodCwgc28gYENPTkZJR19ORVRfU09DS19NU0dgIGlzIGZsYWdnZWQgYXMgYmVpbmcgYSByZXF1aXJlZCBjb25maWd1cmF0aW9uIG9wdGlvbiwgd2hpY2ggaXMgYW4gaW50ZXJlc3Rpbmcgc3RhcnRpbmcgcG9pbnQuIE15IGluaXRpYWwgdGhvdWdodCBwcm9jZXNzIGlzIHRvIHVuZGVyc3RhbmQgaXRzIG9yaWdpbi4gSXMgdGhpcyBzb21ldGhpbmcgdGhlIHVzZXIgZXhwbGljaXRseSBjb25maWd1cmVzLCBvciBpcyBpdCBwdWxsZWQgaW4gYXMgYSBkZXBlbmRlbmN5IGJ5IGFub3RoZXIsIG1vcmUgZnVuZGFtZW50YWwgc2V0dGluZz8gVW5kZXJzdGFuZGluZyBpdHMgc2VsZWN0aW9uIG1lY2hhbmlzbSBpcyBjcml0aWNhbCBmb3IgcHJvcGVyIGNvbmZpZ3VyYXRpb24gYW5kIHRyb3VibGVzaG9vdGluZyBmdXJ0aGVyIGRvd24gdGhlIGxpbmUuIEkgbmVlZCB0byBkZXRlcm1pbmUgaWYgaXQncyB1c2VyLWRyaXZlbiwgb3IgaWYgaXQgaXMgYSBieXByb2R1Y3Qgb2YgYW5vdGhlciBzZXR0aW5nLlxuXG5cbiIsIklucHV0VG9rZW5zIjozOTcxLCJPdXRwdXRUb2tlbnMiOjI4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDJUMTY6MzY6MzIuNTAwMTAxNjY5WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjMwNzgxNDM5OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgTkVUX1NPQ0tfTVNHXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L0tjb25maWc9NDc1PWNvbmZpZyBORVRfU0VMRlRFU1RTXFxuLS1cXG5uZXQvS2NvbmZpZy00NzgtXFxubmV0L0tjb25maWc6NDc5OmNvbmZpZyBORVRfU09DS19NU0dcXG5uZXQvS2NvbmZpZy00ODAtXFx0Ym9vbFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wMlQxNjozNjozMi44MDc5MjE3NDhaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMDA4NTYyNTc4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIGFzc3VtaW5nIEknbSBhbiBleHBlcnQgaW4gdGhpcyBmaWVsZDpcblxuKipEZWJ1Z2dpbmcgYSBCb29sZWFuOiBUcmFjaW5nIHRoZSBTb3VyY2UqKlxuXG5BbHJpZ2h0LCBhIGJvb2xlYW4ncyBiZWVuIGZsaXBwZWQsIGJ1dCB0aGVyZSdzIG5vIGRpcmVjdCBwcm9tcHQgb3IgZXhwbGljaXQgc2V0dGluZyBhZmZlY3RpbmcgaXQuIFRoYXQgaW1tZWRpYXRlbHkgdGVsbHMgbWUgdGhpcyB2YWx1ZSBpcyBiZWluZyBkcml2ZW4gYnkgc29tZXRoaW5nIGVsc2UsIHNvbWUgZXh0ZXJuYWwgY29uZGl0aW9uIG9yIGxvZ2ljIGZsb3cuIE15IG5leHQgc3RlcCBpcyBjbGVhcjogSSBuZWVkIHRvIGlkZW50aWZ5IHRoZSAqc291cmNlKiBvZiB0aGlzIHNlbGVjdGlvbi4gSSBoYXZlIHRvIHRyYWNlIGJhY2sgdGhyb3VnaCB0aGUgY29kZSwgb3IgZXhhbWluZSB0aGUgZGF0YSBmbG93LCB0byBmaWd1cmUgb3V0IHdoYXQncyBpbmZsdWVuY2luZyB0aGlzIHBhcnRpY3VsYXIgYm9vbGVhbi4gV2hhdCBwcm9jZXNzLCB3aGF0IGZ1bmN0aW9uLCB3aGF0IG90aGVyIHZhcmlhYmxlIGlzIG1ha2luZyB0aGUgY2FsbD8gVGhpcyBpc24ndCBhIHNpbXBsZSBjYXNlIG9mIGEgZGlyZWN0IGFzc2lnbm1lbnQ7IGl0J3MgYSBjb25kaXRpb25hbCBjaGFuZ2UsIGFuZCBmaW5kaW5nIHRoYXQgY29uZGl0aW9uIGlzIGtleS4gVGhpcyBpcyBhIGNsYXNzaWMgZGVidWdnaW5nIHNjZW5hcmlvLiBMZXQncyBkaWcgaW4uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQyNDgsIk91dHB1dFRva2VucyI6MjYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wMlQxNjozNjozNS44MTY0ODY3MjZaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzQ4NDU0OTQ0MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJzZWxlY3QgTkVUX1NPQ0tfTVNHXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIlwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJrZXJuZWwvYnBmL0tjb25maWc9Mjc9Y29uZmlnIEJQRl9TWVNDQUxMXFxuLS1cXG5rZXJuZWwvYnBmL0tjb25maWctMzMtXFx0c2VsZWN0IEJJTkFSWV9QUklOVEZcXG5rZXJuZWwvYnBmL0tjb25maWc6MzQ6XFx0c2VsZWN0IE5FVF9TT0NLX01TRyBpZiBORVRcXG5rZXJuZWwvYnBmL0tjb25maWctMzUtXFx0c2VsZWN0IE5FVF9YR1JFU1MgaWYgTkVUXFxuLS1cXG5uZXQvS2NvbmZpZz0zNjE9Y29uZmlnIEJQRl9TVFJFQU1fUEFSU0VSXFxuLS1cXG5uZXQvS2NvbmZpZy0zNjYtXFx0c2VsZWN0IFNUUkVBTV9QQVJTRVJcXG5uZXQvS2NvbmZpZzozNjc6XFx0c2VsZWN0IE5FVF9TT0NLX01TR1xcbm5ldC9LY29uZmlnLTM2OC1cXHRoZWxwXFxuLS1cXG5uZXQvaXB2NC9LY29uZmlnPTM4Mj1jb25maWcgSU5FVF9FU1BJTlRDUFxcbi0tXFxubmV0L2lwdjQvS2NvbmZpZy0zODUtXFx0c2VsZWN0IFNUUkVBTV9QQVJTRVJcXG5uZXQvaXB2NC9LY29uZmlnOjM4NjpcXHRzZWxlY3QgTkVUX1NPQ0tfTVNHXFxubmV0L2lwdjQvS2NvbmZpZy0zODctXFx0c2VsZWN0IFhGUk1fRVNQSU5UQ1BcXG4tLVxcbm5ldC9pcHY2L0tjb25maWc9OTA9Y29uZmlnIElORVQ2X0VTUElOVENQXFxuLS1cXG5uZXQvaXB2Ni9LY29uZmlnLTkzLVxcdHNlbGVjdCBTVFJFQU1fUEFSU0VSXFxubmV0L2lwdjYvS2NvbmZpZzo5NDpcXHRzZWxlY3QgTkVUX1NPQ0tfTVNHXFxubmV0L2lwdjYvS2NvbmZpZy05NS1cXHRzZWxlY3QgWEZSTV9FU1BJTlRDUFxcbi0tXFxubmV0L3Rscy9LY29uZmlnPTU9Y29uZmlnIFRMU1xcbi0tXFxubmV0L3Rscy9LY29uZmlnLTEwLVxcdHNlbGVjdCBDUllQVE9fR0NNXFxubmV0L3Rscy9LY29uZmlnOjExOlxcdHNlbGVjdCBORVRfU09DS19NU0dcXG5uZXQvdGxzL0tjb25maWctMTItXFx0ZGVmYXVsdCBuXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAyVDE2OjM2OjM5LjMwMTA0MTM2NloiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjgwNzUwODE0MTksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIEJQRiBhbmQgU29ja2V0IEZpbHRlcmluZyBmb3IgRW5oYW5jZWQgTmV0d29yayBQZXJmb3JtYW5jZSoqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gRnJvbSB3aGF0IEknbSBzZWVpbmcsIGBCUEZfU1lTQ0FMTGAgaXMgdGhlIGNydWNpYWwgZWxlbWVudCBoZXJlLCBwYXJ0aWN1bGFybHkgd2hlbiBgTkVUYCBpcyBpbnZvbHZlZCwgYmVjYXVzZSB0aGF0J3Mgd2hhdCB0cmlnZ2VycyBgTkVUX1NPQ0tfTVNHYC4gVGhhdCBtYWtlcyBgQlBGX1NZU0NBTExgIHRoZSBwcmltYXJ5IGZvY3VzLCB0aGUgY29yZS4gVGhlbiB3ZSBoYXZlIHJlbGF0ZWQgZmVhdHVyZXMgbGlrZSBgVExTYCwgYElORVRfRVNQSU5UQ1BgLCBgSU5FVDZfRVNQSU5UQ1BgLCBhbmQgYEJQRl9TVFJFQU1fUEFSU0VSYCwgYnV0IGBCUEZfU1lTQ0FMTGAgc2VlbXMgdG8gYmUgdGhlIG9uZSBwdWxsaW5nIHRoZSBtb3N0IHdlaWdodCwgYmVjYXVzZSB0aGUgc29ja21hcCBjb250ZXh0IG1lYW5zIGl0IHdpbGwgYmUgdGhlIGRyaXZlci4gU28sIG15IGluc3RpbmN0IGlzIHRvIGxlYW4gaGVhdmlseSBvbiBgQlBGX1NZU0NBTExgIGFzIHRoZSBrZXkgdG8gdW5kZXJzdGFuZGluZyB0aGlzLlxuXG5HaXZlbiB0aGlzIEJQRiBzb2NrbWFwIGNvbnRleHQsIEkgbmVlZCB0byBjaGVjayBvdXQgd2hhdCdzIGhhcHBlbmluZyB3aXRoIGB0Y3BfZWF0X3NrYmAgd2l0aGluIGBuZXQvaXB2NC90Y3BfYnBmLmNgLiBUaGF0IHNob3VsZCBwcm92aWRlIHRoZSBuZWNlc3NhcnkgZGV0YWlsLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0ODY3LCJPdXRwdXRUb2tlbnMiOjM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTEzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAyVDE2OjM2OjQ3LjM3NjEyNTY1NVoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzQzNTYyMTg3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInRjcF9lYXRfc2tiXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9pcHY0L3RjcF9icGYuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvaXB2NC90Y3BfYnBmLmMtMTQtXFxubmV0L2lwdjQvdGNwX2JwZi5jOjE1OnZvaWQgdGNwX2VhdF9za2Ioc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbm5ldC9pcHY0L3RjcF9icGYuYy0xNi17XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAyVDE2OjM2OjQ3LjcxOTY5NDM2MloiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMzE5MTcyMjc3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgc3VtbWFyeSwgdGFpbG9yZWQgYXMgaWYgSSdtIGFuIGV4cGVydCBpbiB0aGUgZmllbGQgdGhpbmtpbmcgdGhyb3VnaCB0aGlzOlxuXG4qKkludmVzdGlnYXRpbmcgdGhlIFNjb3BlIG9mIGB0Y3BfZWF0X3NrYmAqKlxuXG5BbHJpZ2h0LCBsZXQncyBzZWUuLi4gdGhlIHF1ZXN0aW9uIGlzIHdoZXRoZXIgYHRjcF9lYXRfc2tiYCBpcyBhIGZ1bmN0aW9uIHRoYXQncyBleHBvc2VkIGZvciB1c2Ugb3V0c2lkZSBvZiBpdHMgaW1tZWRpYXRlLCBwcmVzdW1hYmx5IFRDUC1zdGFjay1zcGVjaWZpYywgY29udGV4dC4gSXMgaXQgKmV4cG9ydGVkKiBpbiBzb21lIHdheT8gT3IgaXMgaXQgdXNlZCBiZXlvbmQgdGhlIG1vZHVsZXMgb3IgZmlsZXMgd2hlcmUgaXQncyBjdXJyZW50bHkgZGVmaW5lZD8gVGhhdCdzIHdoYXQgSSBuZWVkIHRvIGZpZ3VyZSBvdXQuIFVuZGVyc3RhbmRpbmcgaXRzIHNjb3BlIGlzIGNydWNpYWwuIElmIGl0J3MgaW50ZXJuYWwgdG8gYSBwYXJ0aWN1bGFyIG1vZHVsZSwgdGhlbiBhbnkgcmVmYWN0b3Jpbmcgb3IgY2hhbmdlcyB3aXRoaW4gdGhhdCBtb2R1bGUgc2hvdWxkbid0IGhhdmUgd2lkZXNwcmVhZCByZXBlcmN1c3Npb25zLiBCdXQgaWYgb3RoZXIgcGFydHMgb2YgdGhlIHN5c3RlbSBhcmUgcmVseWluZyBvbiBpdCwgdGhlbiBhIG1vcmUgY2FyZWZ1bCBhcHByb2FjaCBpcyByZXF1aXJlZC4gSSBuZWVkIHRvIGtub3cgd2hlcmUgaXQncyBiZWluZyAqY2FsbGVkKiBmcm9tLCBhbmQgaWYgdGhvc2UgY2FsbCBzaXRlcyBhcmUgd2l0aGluIHRoZSBpbnRlbmRlZCBib3VuZGFyaWVzLiBUaW1lIHRvIGRlbHZlIGludG8gdGhlIGNvZGUgYW5kIGRldGVybWluZSB0aGUgdHJ1ZSB2aXNpYmlsaXR5IGFuZCB1c2FnZSBwYXR0ZXJucyBvZiBgdGNwX2VhdF9za2JgLiBUaGlzIGlzIGFsbCBhYm91dCBhc3Nlc3NpbmcgdGhlIHBvdGVudGlhbCBpbXBhY3Qgb2YgYW55IGNoYW5nZXMgcmVsYXRlZCB0byB0aGlzIGZ1bmN0aW9uLiBJJ2xsIHN0YXJ0IHdpdGggYSBxdWljayBzZWFyY2ggb2YgdGhlIGNvZGViYXNlIHRvIHNlZSB3aGVyZSBpdCdzIGJlaW5nIHVzZWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjUzMTcsIk91dHB1dFRva2VucyI6MjYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wMlQxNjozNjo1MS4wMzg4NjkwOTlaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIyODk3MDc5NzQsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwidGNwX2VhdF9za2JcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImluY2x1ZGUvbmV0L3RjcC5oPTI4NDM9aW50IHRjcF9icGZfc3RycF9yZWFkX3NvY2soc3RydWN0IHN0cnBhcnNlciAqc3RycCwgcmVhZF9kZXNjcmlwdG9yX3QgKmRlc2MsXFxuLS1cXG5pbmNsdWRlL25ldC90Y3AuaC0yODQ4LSNpZmRlZiBDT05GSUdfSU5FVFxcbmluY2x1ZGUvbmV0L3RjcC5oOjI4NDk6dm9pZCB0Y3BfZWF0X3NrYihzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBza19idWZmICpza2IpO1xcbmluY2x1ZGUvbmV0L3RjcC5oLTI4NTAtI2Vsc2VcXG5pbmNsdWRlL25ldC90Y3AuaDoyODUxOnN0YXRpYyBpbmxpbmUgdm9pZCB0Y3BfZWF0X3NrYihzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBza19idWZmICpza2IpXFxuaW5jbHVkZS9uZXQvdGNwLmgtMjg1Mi17XFxuLS1cXG5uZXQvY29yZS9za21zZy5jPTk5Nj1zdGF0aWMgaW50IHNrX3Bzb2NrX3ZlcmRpY3RfYXBwbHkoc3RydWN0IHNrX3Bzb2NrICpwc29jaywgc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4tLVxcbm5ldC9jb3JlL3NrbXNnLmMtMTA0Mi1cXHRjYXNlIF9fU0tfUkVESVJFQ1Q6XFxubmV0L2NvcmUvc2ttc2cuYzoxMDQzOlxcdFxcdHRjcF9lYXRfc2tiKHBzb2NrLVxcdTAwM2Vzaywgc2tiKTtcXG5uZXQvY29yZS9za21zZy5jLTEwNDQtXFx0XFx0ZXJyID0gc2tfcHNvY2tfc2tiX3JlZGlyZWN0KHBzb2NrLCBza2IpO1xcbi0tXFxubmV0L2NvcmUvc2ttc2cuYy0xMDQ5LVxcdFxcdHNrYl9icGZfcmVkaXJlY3RfY2xlYXIoc2tiKTtcXG5uZXQvY29yZS9za21zZy5jOjEwNTA6XFx0XFx0dGNwX2VhdF9za2IocHNvY2stXFx1MDAzZXNrLCBza2IpO1xcbm5ldC9jb3JlL3NrbXNnLmMtMTA1MS1cXHRcXHRzb2NrX2Ryb3AocHNvY2stXFx1MDAzZXNrLCBza2IpO1xcbi0tXFxubmV0L2NvcmUvc2ttc2cuYz0xMTk4PXN0YXRpYyBpbnQgc2tfcHNvY2tfdmVyZGljdF9yZWN2KHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG4tLVxcbm5ldC9jb3JlL3NrbXNnLmMtMTIwOC1cXHRcXHRsZW4gPSAwO1xcbm5ldC9jb3JlL3NrbXNnLmM6MTIwOTpcXHRcXHR0Y3BfZWF0X3NrYihzaywgc2tiKTtcXG5uZXQvY29yZS9za21zZy5jLTEyMTAtXFx0XFx0c29ja19kcm9wKHNrLCBza2IpO1xcbi0tXFxubmV0L2lwdjQvdGNwX2JwZi5jLTE0LVxcbm5ldC9pcHY0L3RjcF9icGYuYzoxNTp2b2lkIHRjcF9lYXRfc2tiKHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG5uZXQvaXB2NC90Y3BfYnBmLmMtMTYte1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wMlQxNjozNjo1My4zMjg1ODI0MTNaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDY3OTAyMDYxNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFNjb3BlIG9mIHRoaXMgTmV0d29ya2luZyBQYXRjaCoqXG5cbk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgdG91Y2hpbmcgYG5ldC9jb3JlL3NrbXNnLmNgLCB3aGljaCBtZWFucyBpdCdzIHByZXR0eSBsb3ctbGV2ZWwgY29yZSBuZXR3b3JraW5nIHN0dWZmLiBGdW5jdGlvbmFsbHksIGl0J3MgbW9kaWZ5aW5nIGNvcmUgbmV0d29ya2luZyBhbmQgQlBGIGxvZ2ljLiBNeSBpbml0aWFsIGZvY3VzIGhhcyB0byBiZSBvbiB0aG9zZSBrZXkgc3ltYm9scyBtZW50aW9uZWQ6IGB0Y3BfZWF0X3NrYmAsIGBza19wc29ja192ZXJkaWN0X2FwcGx5YCwgYW5kIGBza19wc29ja192ZXJkaWN0X3JlY3ZgLiBUaG9zZSBhcmUgdGhlIGVudHJ5IHBvaW50cy5cblxuTm93LCBsZXQncyBnZXQgaW50byB0aGUgY29uZmlndXJhdGlvbiBhc3BlY3QuIEl0IHJlbGllcyBvbiBgQlBGX1NZU0NBTExgIGFuZCBgTkVUX1NPQ0tfTVNHYC4gV2hpbGUgYE5FVF9TT0NLX01TR2AgaXNuJ3QgYSB1c2VyLXNlbGVjdGFibGUgY29uZmlnLCBgQlBGX1NZU0NBTExgIGlzLCB3aGljaCBpcyBpbXBvcnRhbnQgZm9yIHVuZGVyc3RhbmRpbmcgdGhlIGRlcGVuZGVuY2llcyBhbmQgcG90ZW50aWFsIGJ1aWxkIG9wdGlvbnMgaGVyZS5cblxuVGhlIG9idmlvdXMgcXVlc3Rpb24gaXMgd2hldGhlciBgQlBGX1NZU0NBTExgIGlzIHN1ZmZpY2llbnQgZm9yIGVuYWJsaW5nIHRoaXMgZnVuY3Rpb25hbGl0eS4gSG1tLCBsZXQgbWUgY29uZmlybS4uLiBZZXMsIGBCUEZfU1lTQ0FMTGAgZG9lcyBzZWxlY3QgYE5FVF9TT0NLX01TR2AgaWYgdGhlIGBORVRgIG9wdGlvbiBpcyBhY3RpdmUuIFRoYXQncyBnb29kIHRvIGtub3csIHNpbXBsaWZpZXMgdGhpbmdzIHNvbWV3aGF0LlxuXG5OZXh0LCBJIG5lZWQgdG8gbG9vayBmb3IgYW55IG90aGVyIGNvbmZpZyBvcHRpb25zIHRoYXQgbWF5IGludGVyYWN0LiBUaGUgdGVzdCBtZW50aW9ucyAnc3RycCwnIGFuZCB0aGF0IGltbWVkaWF0ZWx5IG1ha2VzIG1lIHRoaW5rIG9mIGBCUEZfU1RSRUFNX1BBUlNFUmAuIEknbGwgd2FudCB0byBkaWcgaW50byB0aGF0IHJlbGF0aW9uc2hpcCBhbmQgaG93IHRoaXMgcGF0Y2ggaW50ZXJhY3RzIHdpdGggc3RyZWFtIHBhcnNpbmcgdG8gYmUgc3VyZSBJIHVuZGVyc3RhbmQgdGhlIGZ1bGwgY29uZmlndXJhdGlvbiBpbXBhY3QuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjYxOTksIk91dHB1dFRva2VucyI6MjgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNzYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDJUMTY6MzY6NTguMDA3NjA1OTE5WiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNzAzNDUxMzY5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBCUEZfU1RSRUFNX1BBUlNFUlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L0tjb25maWc9MzU0PWNvbmZpZyBCUUxcXG4tLVxcbm5ldC9LY29uZmlnLTM2MC1cXG5uZXQvS2NvbmZpZzozNjE6Y29uZmlnIEJQRl9TVFJFQU1fUEFSU0VSXFxubmV0L0tjb25maWctMzYyLVxcdGJvb2wgXFxcImVuYWJsZSBCUEYgU1RSRUFNX1BBUlNFUlxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDJUMTY6Mzc6MDAuNzExMDYyMzU4WiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU1MjA3NDQwMzUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudCBvZiB0aGUgQlBGIFN0cmVhbSBQYXJzZXIgYW5kIFJlbGF0ZWQgRnVuY3Rpb25zKipcblxuT2theSwgc28gd2UncmUgbG9va2luZyBhdCBhIHVzZXItY29uZmlndXJhYmxlIGZlYXR1cmUsIGBCUEZfU1RSRUFNX1BBUlNFUmAuIE1ha2VzIHNlbnNlIHRvIGFkZCBib3RoIGBCUEZfU1lTQ0FMTGAgYW5kIGBCUEZfU1RSRUFNX1BBUlNFUmAgdG8gYEVuYWJsZUNvbmZpZ3NgIHRvIGtlZXAgdGhpbmdzIGNvbnNpc3RlbnQuIFdlIG5lZWQgdG8gbWFrZSBzdXJlIHRoZSBzdHJlYW0gcGFyc2VyIGNhbiBiZSBlbmFibGVkIGFsb25nc2lkZSB0aGUgc3lzY2FsbHMuXG5cbk5vdywgbGV0J3MgZGl2ZSBpbnRvIHRoZSBgdGNwX2VhdF9za2JgIGZ1bmN0aW9uLiBJIHJlbWVtYmVyIHRoaXMgb25lLiBJdCdzIHVzZWQgd2hlbiBhIHBhY2tldCBpcyBkcm9wcGVkIG9yIHJlZGlyZWN0ZWQgd2l0aGluIHRoZSBCUEYgc29ja21hcCBmcmFtZXdvcmssIHJpZ2h0PyBMb29rcyBsaWtlIHdlJ3ZlIGdvdCBhIGJ1ZyBmaXggaGVyZSwgd2hpY2ggaXMgZ29vZC4gVGhlIHBhdGNoIGlzIGFkZHJlc3NpbmcgYW4gaW5jcmVtZW50IGlzc3VlIHdpdGggYHRjcC1cdTAwM2Vjb3BpZWRfc2VxYC4gVGhlIHByZXZpb3VzIGxvZ2ljIHdhcyBjbGVhcmx5IGluY29ycmVjdCwgdXNpbmcgYHNrYi1cdTAwM2VsZW5gIHdoZW4gaXQgc2hvdWxkIGhhdmUgdXNlZCB0aGUgY29ycmVjdCBzZXF1ZW5jZSBudW1iZXIgYXJpdGhtZXRpYyBiYXNlZCBvbiB0aGUgYGVuZF9zZXFgLiBUaGlzIGlzIGEgY2xlYXIgaW1wcm92ZW1lbnQgYW5kIGRlZmluaXRlbHkgd2FycmFudHMgc29tZSBmdXp6aW5nLiBUaGUgdXBkYXRlZCBsb2dpYyBtYWtlcyBhIGxvdCBtb3JlIHNlbnNlLlxuXG5LZXkgc3ltYm9scyB0byBwYXkgYXR0ZW50aW9uIHRvIGFyZSBgdGNwX2VhdF9za2JgLCBgc2tfcHNvY2tfdmVyZGljdF9hcHBseWAsIGFuZCBgc2tfcHNvY2tfdmVyZGljdF9yZWN2YC5cblxuTGV0J3MgcXVpY2tseSBldmFsdWF0ZSBpZiBgdGNwX2VhdF9za2JgIGlzIGEgaG90IHBhdGguIFNpbmNlIGl0J3Mgb25seSBjYWxsZWQgb24gZHJvcHMgYW5kIHJlZGlyZWN0cyB3aXRoaW4gc29ja21hcCwgaXQncyBub3QgYSBnZW5lcmFsIHBlcmZvcm1hbmNlIGJvdHRsZW5lY2sgdW5sZXNzIHRoZXJlJ3MgYWN0aXZlIHNvY2ttYXAgdXNhZ2UuIEl0IHNlZW1zIHByZXR0eSB0YXJnZXRlZC4gTm93LCBsZXQncyBzcGVuZCBzb21lIHRpbWUgcmV2aWV3aW5nIGBza19wc29ja192ZXJkaWN0X2FwcGx5YCBhbmQgYHNrX3Bzb2NrX3ZlcmRpY3RfcmVjdmAsIGRpZ2dpbmcgaW50byB0aGUgY29udHJvbCBmbG93IGFuZCBwb3RlbnRpYWwgaXNzdWVzIHdpdGggdGhlIHN0cmVhbSBwYXJzZXIncyBpbnRlZ3JhdGlvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6Njc4NiwiT3V0cHV0VG9rZW5zIjozNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI3MiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wMlQxNjozNzowNi4yMzE4MDkzMzNaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE2Njk1MDI4MywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJza19wc29ja192ZXJkaWN0X2FwcGx5XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9jb3JlL3NrbXNnLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L2NvcmUvc2ttc2cuYz05NTg9c3RhdGljIGludCBza19wc29ja19za2JfcmVkaXJlY3Qoc3RydWN0IHNrX3Bzb2NrICpmcm9tLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbi0tXFxubmV0L2NvcmUvc2ttc2cuYy05OTUtXFxubmV0L2NvcmUvc2ttc2cuYzo5OTY6c3RhdGljIGludCBza19wc29ja192ZXJkaWN0X2FwcGx5KHN0cnVjdCBza19wc29jayAqcHNvY2ssIHN0cnVjdCBza19idWZmICpza2IsXFxubmV0L2NvcmUvc2ttc2cuYy05OTctXFx0XFx0XFx0XFx0ICBpbnQgdmVyZGljdClcXG4tLVxcbm5ldC9jb3JlL3NrbXNnLmM9MTA3NT1zdGF0aWMgdm9pZCBza19wc29ja19zdHJwX3JlYWQoc3RydWN0IHN0cnBhcnNlciAqc3RycCwgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG4tLVxcbm5ldC9jb3JlL3NrbXNnLmMtMTA5OC1cXHR9XFxubmV0L2NvcmUvc2ttc2cuYzoxMDk5OlxcdHNrX3Bzb2NrX3ZlcmRpY3RfYXBwbHkocHNvY2ssIHNrYiwgcmV0KTtcXG5uZXQvY29yZS9za21zZy5jLTExMDAtb3V0Olxcbi0tXFxubmV0L2NvcmUvc2ttc2cuYz0xMTk4PXN0YXRpYyBpbnQgc2tfcHNvY2tfdmVyZGljdF9yZWN2KHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG4tLVxcbm5ldC9jb3JlL3NrbXNnLmMtMTIyMS1cXHR9XFxubmV0L2NvcmUvc2ttc2cuYzoxMjIyOlxcdHJldCA9IHNrX3Bzb2NrX3ZlcmRpY3RfYXBwbHkocHNvY2ssIHNrYiwgcmV0KTtcXG5uZXQvY29yZS9za21zZy5jLTEyMjMtXFx0aWYgKHJldCBcXHUwMDNjIDApXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAyVDE2OjM3OjA2LjM5ODc2NDI5N1oiLCJTZXEiOjE3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1MTM1MzcyMTc5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgUGF0Y2gncyBGb2N1cyoqXG5cbk9rYXksIHRoZXNlIGxpc3RlZCBpdGVtcyBhcmUgZGVmaW5pdGVseSBzb2xpZCBpbmRpY2F0b3JzIG9mIHRoZSBwYXRjaCdzIGNlbnRyYWwgYXJlYSBvZiBjb25jZXJuLiBMZXQncyBicmVhayB0aGlzIGRvd24gc3lzdGVtYXRpY2FsbHkuXG5cbkl0IGxvb2tzIGxpa2UgdGhlIHBhdGNoIGlzIGZsYWdnZWQgYXMgYmVpbmcgXCJXb3J0aEZ1enppbmcsXCIgd2hpY2ggaW1tZWRpYXRlbHkgc3VnZ2VzdHMgYSBwb3RlbnRpYWwgZm9yIGVkZ2UgY2FzZXMgb3IgdW5leHBlY3RlZCBiZWhhdmlvcnMuIFRoZSBcIkZvY3VzU3ltYm9sc1wiIGFyZSBwYXJ0aWN1bGFybHkgdGVsbGluZy4gV2UndmUgZ290IFwidGNwX2VhdF9za2IsXCIgd2hpY2ggaXMgYSBmdW5kYW1lbnRhbCBmdW5jdGlvbiBpbiBUQ1AgaGFuZGxpbmcsIGRlYWxpbmcgZGlyZWN0bHkgd2l0aCBpbmNvbWluZyBkYXRhLCBhbmQgdGhlbiB3ZSBoYXZlIFwic2tfcHNvY2tfdmVyZGljdF9hcHBseVwiIGFuZCBcInNrX3Bzb2NrX3ZlcmRpY3RfcmVjdlwiIHJlbGF0ZWQgdG8gdmVyZGljdCBhcHBsaWNhdGlvbiBhbmQgcmVjZWlwdCB3aXRoaW4gdGhlIHNvY2ttYXAgZnJhbWV3b3JrLiBUaGF0J3MgYSBkaXJlY3QgY29ubmVjdGlvbiB0byBob3cgd2UgaGFuZGxlIHNvY2tldCB2ZXJkaWN0cyB1c2luZyBCUEYsIGluZGljYXRpbmcgYSBmb2N1c2VkIGVmZm9ydCBvbiB0aGUgY29yZSBpbnRlcmFjdGlvbiBiZXR3ZWVuIEJQRiBhbmQgbmV0d29yayBkYXRhLlxuXG5UaGUgXCJFbmFibGVDb25maWdzXCIgYXJlIGVxdWFsbHkgaWxsdW1pbmF0aW5nOiBcIkJQRl9TWVNDQUxMXCIgYW5kIFwiQlBGX1NUUkVBTV9QQVJTRVIuXCIgU28sIHdlIGFyZSBsaWtlbHkgZGVhbGluZyB3aXRoIEJQRiBpbnRlcmFjdGluZyB3aXRoIHN5c2NhbGxzIGFuZCBhIHN0cmVhbSBwYXJzZXIuXG5cblN5bnRoZXNpemluZyBhbGwgb2YgdGhpcywgdGhlIFwiUmVhc29uaW5nXCIgc3RhdGVtZW50IGNvbmZpcm1zIGl0OiB0aGlzIHBhdGNoIGlzIGZ1bmRhbWVudGFsbHkgYWx0ZXJpbmcgdGhlIGNvcmUgQlBGIHNvY2ttYXAgbG9naWMuIFNwZWNpZmljYWxseSwgaXQncyBtb2RpZnlpbmcgdGhlIHByb2Nlc3Mgd2l0aGluIGB0Y3BfZWF0X3NrYmAg4oCTICp2ZXJ5KiBpbXBvcnRhbnQg4oCTIGhvdyBUQ1AncyBgY29waWVkX3NlcWAgaXMgaGFuZGxlZCB3aGVuIHBhY2tldHMgYXJlIGRyb3BwZWQgb3IgcmVkaXJlY3RlZC4gVGhhdCBpcywgd2UncmUgdGFsa2luZyBhYm91dCBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRvIGhvdyB0aGUga2VybmVsICpwcm9jZXNzZXMgbmV0d29yayB0cmFmZmljKi4gVGhpcyBoYXMgaW1wbGljYXRpb25zIGZvciBwZXJmb3JtYW5jZSwgc2VjdXJpdHksIGFuZCBzdGFiaWxpdHkgaWYgaXQgaXNuJ3QgY29ycmVjdC4gSSBuZWVkIHRvIGRpZyBkZWVwZXIgaW50byB0aGUgc3BlY2lmaWMgbW9kaWZpY2F0aW9ucyB0byB1bmRlcnN0YW5kIHRoZSBwcmVjaXNlIGltcGFjdC5cblxuXG4iLCJJbnB1dFRva2VucyI6NzgxOSwiT3V0cHV0VG9rZW5zIjoxMjIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMjAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDJUMTY6Mzc6MTEuNTM0MTM4NzE1WiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTcxNzIyNDY0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJCUEZfU1lTQ0FMTFwiLFxuICAgIFwiQlBGX1NUUkVBTV9QQVJTRVJcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJ0Y3BfZWF0X3NrYlwiLFxuICAgIFwic2tfcHNvY2tfdmVyZGljdF9hcHBseVwiLFxuICAgIFwic2tfcHNvY2tfdmVyZGljdF9yZWN2XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgY29yZSBCUEYgc29ja21hcCBsb2dpYyBpbiB0Y3BfZWF0X3NrYiwgY2hhbmdpbmcgaG93IFRDUCBjb3BpZWRfc2VxIGlzIHVwZGF0ZWQgd2hlbiBwYWNrZXRzIGFyZSBkcm9wcGVkIG9yIHJlZGlyZWN0ZWQuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBuZXR3b3JrIHByb2Nlc3NpbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQlBGX1NZU0NBTExcIixcbiAgICBcIkJQRl9TVFJFQU1fUEFSU0VSXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwidGNwX2VhdF9za2JcIixcbiAgICBcInNrX3Bzb2NrX3ZlcmRpY3RfYXBwbHlcIixcbiAgICBcInNrX3Bzb2NrX3ZlcmRpY3RfcmVjdlwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIGNvcmUgQlBGIHNvY2ttYXAgbG9naWMgaW4gdGNwX2VhdF9za2IsIGNoYW5naW5nIGhvdyBUQ1AgY29waWVkX3NlcSBpcyB1cGRhdGVkIHdoZW4gcGFja2V0cyBhcmUgZHJvcHBlZCBvciByZWRpcmVjdGVkLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gbmV0d29yayBwcm9jZXNzaW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+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-workflowqgpsp[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-02 16:23:53 +0000 UTC FinishedAt: 2026-07-02 16:37:12 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "d8e8b85a85fe21954d303db68034aac4639df88d", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BPF_SYSCALL", "BPF_STREAM_PARSER" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "d8e8b85a85fe21954d303db68034aac4639df88d", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BPF_SYSCALL", "BPF_STREAM_PARSER" ], "series_id": "4e234b9e-b54c-4e54-ab82-b8e9daa38275" }, "track": "KASAN", "fuzz": { "focus": [ "bpf", "net" ], "focus_symbols": [ "tcp_eat_skb", "sk_psock_verdict_apply", "sk_psock_verdict_recv" ], "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+CgkJCTx0ZD4yMDI2LzA3LzAyIDE2OjM2PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JQRl9TWVNDQUxMJiMzNDssCiAgICAmIzM0O0JQRl9TVFJFQU1fUEFSU0VSJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7dGNwX2VhdF9za2ImIzM0OywKICAgICYjMzQ7c2tfcHNvY2tfdmVyZGljdF9hcHBseSYjMzQ7LAogICAgJiMzNDtza19wc29ja192ZXJkaWN0X3JlY3YmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgY29yZSBCUEYgc29ja21hcCBsb2dpYyBpbiB0Y3BfZWF0X3NrYiwgY2hhbmdpbmcgaG93IFRDUCBjb3BpZWRfc2VxIGlzIHVwZGF0ZWQgd2hlbiBwYWNrZXRzIGFyZSBkcm9wcGVkIG9yIHJlZGlyZWN0ZWQuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBuZXR3b3JrIHByb2Nlc3NpbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDIgMTY6MzY8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCBlNGJiZTE5MGU5NjM3YWQ3NGJhOTA4Y2JhMzk1Njk1MWVhM2YwZmYzXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFRodSBKdWwgMiAxNjozNjoyMiAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9uZXQvaXB2NC90Y3BfYnBmLmMgYi9uZXQvaXB2NC90Y3BfYnBmLmNcbmluZGV4IGNjMGJkNzNmMzZiNmQ2Li5kNjQwZjhlMDY1Mjk3OCAxMDA2NDRcbi0tLSBhL25ldC9pcHY0L3RjcF9icGYuY1xuJiM0MzsmIzQzOyYjNDM7IGIvbmV0L2lwdjQvdGNwX2JwZi5jXG5AQCAtMTUsNyAmIzQzOzE1LDcgQEBcbiB2b2lkIHRjcF9lYXRfc2tiKHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX2J1ZmYgKnNrYilcbiB7XG4gXHRzdHJ1Y3QgdGNwX3NvY2sgKnRjcDtcbi1cdGludCBjb3BpZWQ7XG4mIzQzO1x0dTMyIGVuZF9zZXEsIGRlbHRhO1xuIFxuIFx0aWYgKCFza2IgfHwgIXNrYi1cdTAwM2VsZW4gfHwgIXNrX2lzX3RjcChzaykpXG4gXHRcdHJldHVybjtcbkBAIC0yNCwxMCAmIzQzOzI0LDExIEBAIHZvaWQgdGNwX2VhdF9za2Ioc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuIFx0XHRyZXR1cm47XG4gXG4gXHR0Y3AgPSB0Y3Bfc2soc2spO1xuLVx0Y29waWVkID0gdGNwLVx1MDAzZWNvcGllZF9zZXEgJiM0Mzsgc2tiLVx1MDAzZWxlbjtcbi1cdFdSSVRFX09OQ0UodGNwLVx1MDAzZWNvcGllZF9zZXEsIGNvcGllZCk7XG4mIzQzO1x0ZW5kX3NlcSA9IFRDUF9TS0JfQ0Ioc2tiKS1cdTAwM2VlbmRfc2VxO1xuJiM0MztcdGRlbHRhID0gZW5kX3NlcSAtIHRjcC1cdTAwM2Vjb3BpZWRfc2VxO1xuJiM0MztcdFdSSVRFX09OQ0UodGNwLVx1MDAzZWNvcGllZF9zZXEsIGVuZF9zZXEpO1xuIFx0dGNwX3Jjdl9zcGFjZV9hZGp1c3Qoc2spO1xuLVx0X190Y3BfY2xlYW51cF9yYnVmKHNrLCBza2ItXHUwMDNlbGVuKTtcbiYjNDM7XHRfX3RjcF9jbGVhbnVwX3JidWYoc2ssIGRlbHRhKTtcbiB9XG4gXG4gc3RhdGljIGludCBicGZfdGNwX2luZ3Jlc3Moc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3Qgc2tfcHNvY2sgKnBzb2NrLFxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3NvY2ttYXBfYmFzaWMuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3NvY2ttYXBfYmFzaWMuY1xuaW5kZXggY2IzMjI5NzExZjkzYTMuLjEwNmRkMDNjZGU4NGVmIDEwMDY0NFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvc29ja21hcF9iYXNpYy5jXG4mIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9zb2NrbWFwX2Jhc2ljLmNcbkBAIC0xMjc1LDYgJiM0MzsxMjc1LDc3IEBAIHN0YXRpYyB2b2lkIHRlc3Rfc29ja21hcF9jb3BpZWRfc2VxKGJvb2wgc3RycClcbiBcdHRlc3Rfc29ja21hcF9wYXNzX3Byb2dfX2Rlc3Ryb3koc2tlbCk7XG4gfVxuIFxuJiM0MztzdGF0aWMgdm9pZCB0ZXN0X3NvY2ttYXBfZHJvcF9hZnRlcl9wYXJ0aWFsX3JlYWQodm9pZClcbiYjNDM7e1xuJiM0MztcdGludCBtYXAsIGVyciwgc2VudCwgcmVjdmQsIHplcm8gPSAwLCBvbiA9IDE7XG4mIzQzO1x0c3RydWN0IHRlc3Rfc29ja21hcF9kcm9wX3Byb2cgKnNrZWw7XG4mIzQzO1x0aW50IGMwID0gLTEsIHAwID0gLTEsIGMxID0gLTEsIHAxID0gLTE7XG4mIzQzO1x0c3RydWN0IHRjcF96ZXJvY29weV9yZWNlaXZlIHpjID0ge307XG4mIzQzO1x0c29ja2xlbl90IHpjX2xlbiA9IHNpemVvZih6Yyk7XG4mIzQzO1x0Y2hhciBidWZbMjAwXSA9IHt9LCByY3ZbNTBdLCBhZGRyWzEwMF07XG4mIzQzO1x0c3RydWN0IGJwZl9wcm9ncmFtICpwcm9nO1xuJiM0MztcbiYjNDM7XHRza2VsID0gdGVzdF9zb2NrbWFwX2Ryb3BfcHJvZ19fb3Blbl9hbmRfbG9hZCgpO1xuJiM0MztcdGlmICghQVNTRVJUX09LX1BUUihza2VsLCBcJiMzNDtvcGVuX2FuZF9sb2FkXCYjMzQ7KSlcbiYjNDM7XHRcdHJldHVybjtcbiYjNDM7XG4mIzQzO1x0aWYgKGNyZWF0ZV9zb2NrZXRfcGFpcnMoQUZfSU5FVCwgU09DS19TVFJFQU0sIFx1MDAyNmMwLCBcdTAwMjZjMSwgXHUwMDI2cDAsIFx1MDAyNnAxKSlcbiYjNDM7XHRcdGdvdG8gZW5kO1xuJiM0MztcbiYjNDM7XHRzZW50ID0geHNlbmQoYzAsIGJ1Ziwgc2l6ZW9mKGJ1ZiksIDApO1xuJiM0MztcdGlmICghQVNTRVJUX0VRKHNlbnQsIHNpemVvZihidWYpLCBcJiMzNDt4c2VuZChuYXRpdmUpXCYjMzQ7KSlcbiYjNDM7XHRcdGdvdG8gZW5kO1xuJiM0MztcbiYjNDM7XHRyZWN2ZCA9IHJlY3ZfdGltZW91dChwMCwgcmN2LCBzaXplb2YocmN2KSwgTVNHX0RPTlRXQUlULCAxKTtcbiYjNDM7XHRpZiAoIUFTU0VSVF9FUShyZWN2ZCwgc2l6ZW9mKHJjdiksIFwmIzM0O3JlY3ZfdGltZW91dChwYXJ0aWFsKVwmIzM0OykpXG4mIzQzO1x0XHRnb3RvIGVuZDtcbiYjNDM7XG4mIzQzO1x0cHJvZyA9IHNrZWwtXHUwMDNlcHJvZ3MucHJvZ19za2JfdmVyZGljdDtcbiYjNDM7XHRtYXAgPSBicGZfbWFwX19mZChza2VsLVx1MDAzZW1hcHMuc29ja19tYXBfcngpO1xuJiM0MztcdGVyciA9IGJwZl9wcm9nX2F0dGFjaChicGZfcHJvZ3JhbV9fZmQocHJvZyksIG1hcCxcbiYjNDM7XHRcdFx0ICAgICAgQlBGX1NLX1NLQl9TVFJFQU1fVkVSRElDVCwgMCk7XG4mIzQzO1x0aWYgKCFBU1NFUlRfT0soZXJyLCBcJiMzNDticGZfcHJvZ19hdHRhY2hcJiMzNDspKVxuJiM0MztcdFx0Z290byBlbmQ7XG4mIzQzO1xuJiM0MztcdGVyciA9IGJwZl9tYXBfdXBkYXRlX2VsZW0obWFwLCBcdTAwMjZ6ZXJvLCBcdTAwMjZwMCwgQlBGX05PRVhJU1QpO1xuJiM0MztcdGlmICghQVNTRVJUX09LKGVyciwgXCYjMzQ7YnBmX21hcF91cGRhdGVfZWxlbVwmIzM0OykpXG4mIzQzO1x0XHRnb3RvIGVuZDtcbiYjNDM7XG4mIzQzO1x0c2VudCA9IHhzZW5kKGMwLCBidWYsIDEsIDApO1xuJiM0MztcdGlmICghQVNTRVJUX0VRKHNlbnQsIDEsIFwmIzM0O3hzZW5kKGRyb3ApXCYjMzQ7KSlcbiYjNDM7XHRcdGdvdG8gZW5kO1xuJiM0MztcbiYjNDM7XHRlcnIgPSBicGZfbWFwX2RlbGV0ZV9lbGVtKG1hcCwgXHUwMDI2emVybyk7XG4mIzQzO1x0aWYgKCFBU1NFUlRfT0soZXJyLCBcJiMzNDticGZfbWFwX2RlbGV0ZV9lbGVtXCYjMzQ7KSlcbiYjNDM7XHRcdGdvdG8gZW5kO1xuJiM0MztcbiYjNDM7XHRzZW50ID0geHNlbmQoYzAsIGJ1ZiwgMSwgMCk7XG4mIzQzO1x0aWYgKCFBU1NFUlRfRVEoc2VudCwgMSwgXCYjMzQ7eHNlbmQobmF0aXZlIGFnYWluKVwmIzM0OykpXG4mIzQzO1x0XHRnb3RvIGVuZDtcbiYjNDM7XG4mIzQzO1x0ZXJyID0gc2V0c29ja29wdChwMCwgU09MX1NPQ0tFVCwgU09fWkVST0NPUFksIFx1MDAyNm9uLCBzaXplb2Yob24pKTtcbiYjNDM7XHRpZiAoIUFTU0VSVF9PSyhlcnIsIFwmIzM0O3NldHNvY2tvcHQoU09fWkVST0NPUFkpXCYjMzQ7KSlcbiYjNDM7XHRcdGdvdG8gZW5kO1xuJiM0MztcbiYjNDM7XHR6Yy5jb3B5YnVmX2FkZHJlc3MgPSAoX191NjQpKHVuc2lnbmVkIGxvbmcpYWRkcjtcbiYjNDM7XHR6Yy5jb3B5YnVmX2xlbiA9IHNpemVvZihhZGRyKTtcbiYjNDM7XHRlcnIgPSBnZXRzb2Nrb3B0KHAwLCBJUFBST1RPX1RDUCwgVENQX1pFUk9DT1BZX1JFQ0VJVkUsIFx1MDAyNnpjLCBcdTAwMjZ6Y19sZW4pO1xuJiM0MztcdGlmICghQVNTRVJUX09LKGVyciwgXCYjMzQ7Z2V0c29ja29wdChUQ1BfWkVST0NPUFlfUkVDRUlWRSlcJiMzNDspKVxuJiM0MztcdFx0Z290byBlbmQ7XG4mIzQzO1xuJiM0MztcdEFTU0VSVF9FUSh6Yy5jb3B5YnVmX2xlbiwgMSwgXCYjMzQ7VENQX1pFUk9DT1BZX1JFQ0VJVkUgY29waWVkXCYjMzQ7KTtcbiYjNDM7ZW5kOlxuJiM0MztcdGlmIChjMCBcdTAwM2U9IDApXG4mIzQzO1x0XHRjbG9zZShjMCk7XG4mIzQzO1x0aWYgKHAwIFx1MDAzZT0gMClcbiYjNDM7XHRcdGNsb3NlKHAwKTtcbiYjNDM7XHRpZiAoYzEgXHUwMDNlPSAwKVxuJiM0MztcdFx0Y2xvc2UoYzEpO1xuJiM0MztcdGlmIChwMSBcdTAwM2U9IDApXG4mIzQzO1x0XHRjbG9zZShwMSk7XG4mIzQzO1x0dGVzdF9zb2NrbWFwX2Ryb3BfcHJvZ19fZGVzdHJveShza2VsKTtcbiYjNDM7fVxuJiM0MztcbiAvKiBXYWl0IHVudGlsIEZJT05SRUFEIHJldHVybnMgdGhlIGV4cGVjdGVkIHZhbHVlIG9yIHRpbWVvdXQgKi9cbiBzdGF0aWMgaW50IHdhaXRfZm9yX2Zpb25yZWFkKGludCBmZCwgaW50IGV4cGVjdGVkLCB1bnNpZ25lZCBpbnQgdGltZW91dF9tcylcbiB7XG5AQCAtMTQ0Nyw2ICYjNDM7MTUxOCw4IEBAIHZvaWQgdGVzdF9zb2NrbWFwX2Jhc2ljKHZvaWQpXG4gXHRcdHRlc3Rfc29ja21hcF9jb3BpZWRfc2VxKGZhbHNlKTtcbiBcdGlmICh0ZXN0X19zdGFydF9zdWJ0ZXN0KFwmIzM0O3NvY2ttYXAgcmVjb3ZlciB3aXRoIHN0cnBcJiMzNDspKVxuIFx0XHR0ZXN0X3NvY2ttYXBfY29waWVkX3NlcSh0cnVlKTtcbiYjNDM7XHRpZiAodGVzdF9fc3RhcnRfc3VidGVzdChcJiMzNDtzb2NrbWFwIGRyb3AgYWZ0ZXIgcGFydGlhbCByZWFkXCYjMzQ7KSlcbiYjNDM7XHRcdHRlc3Rfc29ja21hcF9kcm9wX2FmdGVyX3BhcnRpYWxfcmVhZCgpO1xuIFx0aWYgKHRlc3RfX3N0YXJ0X3N1YnRlc3QoXCYjMzQ7c29ja21hcCB0Y3AgbXVsdGkgY2hhbm5lbHNcJiMzNDspKVxuIFx0XHR0ZXN0X3NvY2ttYXBfbXVsdGlfY2hhbm5lbHMoU09DS19TVFJFQU0pO1xuIFx0aWYgKHRlc3RfX3N0YXJ0X3N1YnRlc3QoXCYjMzQ7c29ja21hcCB1ZHAgbXVsdGkgY2hhbm5lbHNcJiMzNDspKVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAyIDE2OjM2PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JQRl9TWVNDQUxMJiMzNDssCiAgICAmIzM0O0JQRl9TVFJFQU1fUEFSU0VSJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7dGNwX2VhdF9za2ImIzM0OywKICAgICYjMzQ7c2tfcHNvY2tfdmVyZGljdF9hcHBseSYjMzQ7LAogICAgJiMzNDtza19wc29ja192ZXJkaWN0X3JlY3YmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgY29yZSBCUEYgc29ja21hcCBsb2dpYyBpbiB0Y3BfZWF0X3NrYiwgY2hhbmdpbmcgaG93IFRDUCBjb3BpZWRfc2VxIGlzIHVwZGF0ZWQgd2hlbiBwYWNrZXRzIGFyZSBkcm9wcGVkIG9yIHJlZGlyZWN0ZWQuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBuZXR3b3JrIHByb2Nlc3NpbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0CiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSwKICAgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IGU0YmJlMTkwZTk2MzdhZDc0YmE5MDhjYmEzOTU2OTUxZWEzZjBmZjMKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgVGh1IEp1bCAyIDE2OjM2OjIyIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvbmV0L2lwdjQvdGNwX2JwZi5jIGIvbmV0L2lwdjQvdGNwX2JwZi5jCmluZGV4IGNjMGJkNzNmMzZiNmQ2Li5kNjQwZjhlMDY1Mjk3OCAxMDA2NDQKLS0tIGEvbmV0L2lwdjQvdGNwX2JwZi5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC9pcHY0L3RjcF9icGYuYwpAQCAtMTUsNyAmIzQzOzE1LDcgQEAKIHZvaWQgdGNwX2VhdF9za2Ioc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKQogewogCXN0cnVjdCB0Y3Bfc29jayAqdGNwOwotCWludCBjb3BpZWQ7CiYjNDM7CXUzMiBlbmRfc2VxLCBkZWx0YTsKIAogCWlmICghc2tiIHx8ICFza2ItJmd0O2xlbiB8fCAhc2tfaXNfdGNwKHNrKSkKIAkJcmV0dXJuOwpAQCAtMjQsMTAgJiM0MzsyNCwxMSBAQCB2b2lkIHRjcF9lYXRfc2tiKHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX2J1ZmYgKnNrYikKIAkJcmV0dXJuOwogCiAJdGNwID0gdGNwX3NrKHNrKTsKLQljb3BpZWQgPSB0Y3AtJmd0O2NvcGllZF9zZXEgJiM0Mzsgc2tiLSZndDtsZW47Ci0JV1JJVEVfT05DRSh0Y3AtJmd0O2NvcGllZF9zZXEsIGNvcGllZCk7CiYjNDM7CWVuZF9zZXEgPSBUQ1BfU0tCX0NCKHNrYiktJmd0O2VuZF9zZXE7CiYjNDM7CWRlbHRhID0gZW5kX3NlcSAtIHRjcC0mZ3Q7Y29waWVkX3NlcTsKJiM0MzsJV1JJVEVfT05DRSh0Y3AtJmd0O2NvcGllZF9zZXEsIGVuZF9zZXEpOwogCXRjcF9yY3Zfc3BhY2VfYWRqdXN0KHNrKTsKLQlfX3RjcF9jbGVhbnVwX3JidWYoc2ssIHNrYi0mZ3Q7bGVuKTsKJiM0MzsJX190Y3BfY2xlYW51cF9yYnVmKHNrLCBkZWx0YSk7CiB9CiAKIHN0YXRpYyBpbnQgYnBmX3RjcF9pbmdyZXNzKHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX3Bzb2NrICpwc29jaywKZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3NvY2ttYXBfYmFzaWMuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3NvY2ttYXBfYmFzaWMuYwppbmRleCBjYjMyMjk3MTFmOTNhMy4uMTA2ZGQwM2NkZTg0ZWYgMTAwNjQ0Ci0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3NvY2ttYXBfYmFzaWMuYwomIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9zb2NrbWFwX2Jhc2ljLmMKQEAgLTEyNzUsNiAmIzQzOzEyNzUsNzcgQEAgc3RhdGljIHZvaWQgdGVzdF9zb2NrbWFwX2NvcGllZF9zZXEoYm9vbCBzdHJwKQogCXRlc3Rfc29ja21hcF9wYXNzX3Byb2dfX2Rlc3Ryb3koc2tlbCk7CiB9CiAKJiM0MztzdGF0aWMgdm9pZCB0ZXN0X3NvY2ttYXBfZHJvcF9hZnRlcl9wYXJ0aWFsX3JlYWQodm9pZCkKJiM0Mzt7CiYjNDM7CWludCBtYXAsIGVyciwgc2VudCwgcmVjdmQsIHplcm8gPSAwLCBvbiA9IDE7CiYjNDM7CXN0cnVjdCB0ZXN0X3NvY2ttYXBfZHJvcF9wcm9nICpza2VsOwomIzQzOwlpbnQgYzAgPSAtMSwgcDAgPSAtMSwgYzEgPSAtMSwgcDEgPSAtMTsKJiM0MzsJc3RydWN0IHRjcF96ZXJvY29weV9yZWNlaXZlIHpjID0ge307CiYjNDM7CXNvY2tsZW5fdCB6Y19sZW4gPSBzaXplb2YoemMpOwomIzQzOwljaGFyIGJ1ZlsyMDBdID0ge30sIHJjdls1MF0sIGFkZHJbMTAwXTsKJiM0MzsJc3RydWN0IGJwZl9wcm9ncmFtICpwcm9nOwomIzQzOwomIzQzOwlza2VsID0gdGVzdF9zb2NrbWFwX2Ryb3BfcHJvZ19fb3Blbl9hbmRfbG9hZCgpOwomIzQzOwlpZiAoIUFTU0VSVF9PS19QVFIoc2tlbCwgJiMzNDtvcGVuX2FuZF9sb2FkJiMzNDspKQomIzQzOwkJcmV0dXJuOwomIzQzOwomIzQzOwlpZiAoY3JlYXRlX3NvY2tldF9wYWlycyhBRl9JTkVULCBTT0NLX1NUUkVBTSwgJmFtcDtjMCwgJmFtcDtjMSwgJmFtcDtwMCwgJmFtcDtwMSkpCiYjNDM7CQlnb3RvIGVuZDsKJiM0MzsKJiM0MzsJc2VudCA9IHhzZW5kKGMwLCBidWYsIHNpemVvZihidWYpLCAwKTsKJiM0MzsJaWYgKCFBU1NFUlRfRVEoc2VudCwgc2l6ZW9mKGJ1ZiksICYjMzQ7eHNlbmQobmF0aXZlKSYjMzQ7KSkKJiM0MzsJCWdvdG8gZW5kOwomIzQzOwomIzQzOwlyZWN2ZCA9IHJlY3ZfdGltZW91dChwMCwgcmN2LCBzaXplb2YocmN2KSwgTVNHX0RPTlRXQUlULCAxKTsKJiM0MzsJaWYgKCFBU1NFUlRfRVEocmVjdmQsIHNpemVvZihyY3YpLCAmIzM0O3JlY3ZfdGltZW91dChwYXJ0aWFsKSYjMzQ7KSkKJiM0MzsJCWdvdG8gZW5kOwomIzQzOwomIzQzOwlwcm9nID0gc2tlbC0mZ3Q7cHJvZ3MucHJvZ19za2JfdmVyZGljdDsKJiM0MzsJbWFwID0gYnBmX21hcF9fZmQoc2tlbC0mZ3Q7bWFwcy5zb2NrX21hcF9yeCk7CiYjNDM7CWVyciA9IGJwZl9wcm9nX2F0dGFjaChicGZfcHJvZ3JhbV9fZmQocHJvZyksIG1hcCwKJiM0MzsJCQkgICAgICBCUEZfU0tfU0tCX1NUUkVBTV9WRVJESUNULCAwKTsKJiM0MzsJaWYgKCFBU1NFUlRfT0soZXJyLCAmIzM0O2JwZl9wcm9nX2F0dGFjaCYjMzQ7KSkKJiM0MzsJCWdvdG8gZW5kOwomIzQzOwomIzQzOwllcnIgPSBicGZfbWFwX3VwZGF0ZV9lbGVtKG1hcCwgJmFtcDt6ZXJvLCAmYW1wO3AwLCBCUEZfTk9FWElTVCk7CiYjNDM7CWlmICghQVNTRVJUX09LKGVyciwgJiMzNDticGZfbWFwX3VwZGF0ZV9lbGVtJiMzNDspKQomIzQzOwkJZ290byBlbmQ7CiYjNDM7CiYjNDM7CXNlbnQgPSB4c2VuZChjMCwgYnVmLCAxLCAwKTsKJiM0MzsJaWYgKCFBU1NFUlRfRVEoc2VudCwgMSwgJiMzNDt4c2VuZChkcm9wKSYjMzQ7KSkKJiM0MzsJCWdvdG8gZW5kOwomIzQzOwomIzQzOwllcnIgPSBicGZfbWFwX2RlbGV0ZV9lbGVtKG1hcCwgJmFtcDt6ZXJvKTsKJiM0MzsJaWYgKCFBU1NFUlRfT0soZXJyLCAmIzM0O2JwZl9tYXBfZGVsZXRlX2VsZW0mIzM0OykpCiYjNDM7CQlnb3RvIGVuZDsKJiM0MzsKJiM0MzsJc2VudCA9IHhzZW5kKGMwLCBidWYsIDEsIDApOwomIzQzOwlpZiAoIUFTU0VSVF9FUShzZW50LCAxLCAmIzM0O3hzZW5kKG5hdGl2ZSBhZ2FpbikmIzM0OykpCiYjNDM7CQlnb3RvIGVuZDsKJiM0MzsKJiM0MzsJZXJyID0gc2V0c29ja29wdChwMCwgU09MX1NPQ0tFVCwgU09fWkVST0NPUFksICZhbXA7b24sIHNpemVvZihvbikpOwomIzQzOwlpZiAoIUFTU0VSVF9PSyhlcnIsICYjMzQ7c2V0c29ja29wdChTT19aRVJPQ09QWSkmIzM0OykpCiYjNDM7CQlnb3RvIGVuZDsKJiM0MzsKJiM0MzsJemMuY29weWJ1Zl9hZGRyZXNzID0gKF9fdTY0KSh1bnNpZ25lZCBsb25nKWFkZHI7CiYjNDM7CXpjLmNvcHlidWZfbGVuID0gc2l6ZW9mKGFkZHIpOwomIzQzOwllcnIgPSBnZXRzb2Nrb3B0KHAwLCBJUFBST1RPX1RDUCwgVENQX1pFUk9DT1BZX1JFQ0VJVkUsICZhbXA7emMsICZhbXA7emNfbGVuKTsKJiM0MzsJaWYgKCFBU1NFUlRfT0soZXJyLCAmIzM0O2dldHNvY2tvcHQoVENQX1pFUk9DT1BZX1JFQ0VJVkUpJiMzNDspKQomIzQzOwkJZ290byBlbmQ7CiYjNDM7CiYjNDM7CUFTU0VSVF9FUSh6Yy5jb3B5YnVmX2xlbiwgMSwgJiMzNDtUQ1BfWkVST0NPUFlfUkVDRUlWRSBjb3BpZWQmIzM0Oyk7CiYjNDM7ZW5kOgomIzQzOwlpZiAoYzAgJmd0Oz0gMCkKJiM0MzsJCWNsb3NlKGMwKTsKJiM0MzsJaWYgKHAwICZndDs9IDApCiYjNDM7CQljbG9zZShwMCk7CiYjNDM7CWlmIChjMSAmZ3Q7PSAwKQomIzQzOwkJY2xvc2UoYzEpOwomIzQzOwlpZiAocDEgJmd0Oz0gMCkKJiM0MzsJCWNsb3NlKHAxKTsKJiM0MzsJdGVzdF9zb2NrbWFwX2Ryb3BfcHJvZ19fZGVzdHJveShza2VsKTsKJiM0Mzt9CiYjNDM7CiAvKiBXYWl0IHVudGlsIEZJT05SRUFEIHJldHVybnMgdGhlIGV4cGVjdGVkIHZhbHVlIG9yIHRpbWVvdXQgKi8KIHN0YXRpYyBpbnQgd2FpdF9mb3JfZmlvbnJlYWQoaW50IGZkLCBpbnQgZXhwZWN0ZWQsIHVuc2lnbmVkIGludCB0aW1lb3V0X21zKQogewpAQCAtMTQ0Nyw2ICYjNDM7MTUxOCw4IEBAIHZvaWQgdGVzdF9zb2NrbWFwX2Jhc2ljKHZvaWQpCiAJCXRlc3Rfc29ja21hcF9jb3BpZWRfc2VxKGZhbHNlKTsKIAlpZiAodGVzdF9fc3RhcnRfc3VidGVzdCgmIzM0O3NvY2ttYXAgcmVjb3ZlciB3aXRoIHN0cnAmIzM0OykpCiAJCXRlc3Rfc29ja21hcF9jb3BpZWRfc2VxKHRydWUpOwomIzQzOwlpZiAodGVzdF9fc3RhcnRfc3VidGVzdCgmIzM0O3NvY2ttYXAgZHJvcCBhZnRlciBwYXJ0aWFsIHJlYWQmIzM0OykpCiYjNDM7CQl0ZXN0X3NvY2ttYXBfZHJvcF9hZnRlcl9wYXJ0aWFsX3JlYWQoKTsKIAlpZiAodGVzdF9fc3RhcnRfc3VidGVzdCgmIzM0O3NvY2ttYXAgdGNwIG11bHRpIGNoYW5uZWxzJiMzNDspKQogCQl0ZXN0X3NvY2ttYXBfbXVsdGlfY2hhbm5lbHMoU09DS19TVFJFQU0pOwogCWlmICh0ZXN0X19zdGFydF9zdWJ0ZXN0KCYjMzQ7c29ja21hcCB1ZHAgbXVsdGkgY2hhbm5lbHMmIzM0OykpCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAyIDE2OjM2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMzNjYKCQkJCQkJCW91dHB1dDogMzEKCQkJCQkJCXRob3VnaHRzOiAxOTEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBUQ1AgQlBGIE1vZGlmaWNhdGlvbioqCgpPa2F5LCBzbyB0aGlzIHBhdGNoIGlzIHRvdWNoaW5nIGBuZXQvaXB2NC90Y3BfYnBmLmNgIGFuZCBhZGRpbmcgYSBuZXcgdGVzdCBmb3IgaXQgaW4gYHNvY2ttYXBfYmFzaWMuY2AsIGludGVyZXN0aW5nLiBJJiMzOTtsbCBuZWVkIHRvIGRpZyBpbnRvIHdoYXQgdGhleSYjMzk7cmUgdHJ5aW5nIHRvIGFjaGlldmUgd2l0aCB0aGlzLiBUaGUgY29yZSBvZiB0aGUgY2hhbmdlIHNlZW1zIHRvIGJlIHdpdGhpbiB0aGUgYHRjcF9lYXRfc2tiYCBmdW5jdGlvbiwgc3BlY2lmaWNhbGx5IGhvdyB0aGUgYHRjcC0mZ3Q7Y29waWVkX3NlcWAgYW5kIGBfX3RjcF9jbGVhbnVwX3JidWZgIGFyZSBiZWluZyBoYW5kbGVkLgoKVGhlIG9sZCB3YXksIGBjb3BpZWQgPSB0Y3AtJmd0O2NvcGllZF9zZXEgJiM0Mzsgc2tiLSZndDtsZW5gLCBpcyBiZWluZyByZXBsYWNlZCB3aXRoIGEgY2FsY3VsYXRpb24gaW52b2x2aW5nIGBlbmRfc2VxYCwgY2FsY3VsYXRpbmcgYSBgZGVsdGFgLCBhbmQgdGhlbiB1c2luZyBgV1JJVEVfT05DRWAgdG8gdXBkYXRlIGB0Y3AtJmd0O2NvcGllZF9zZXFgLCBhbmQgZmluYWxseSBjYWxsaW5nIGBfX3RjcF9jbGVhbnVwX3JidWZgIHdpdGggdGhlIGBkZWx0YWAuIENsZWFybHksIHRoaXMgaXMgbW9yZSBudWFuY2VkLCBidXQgd2hhdCBpcyB0aGUgcmVhc29uaW5nPyBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aHkgdGhleSYjMzk7cmUgaW50cm9kdWNpbmcgYGVuZF9zZXFgIGFuZCBjYWxjdWxhdGluZyBhIGRlbHRhIHRoaXMgd2F5LiBJIHdvbmRlciBpZiB0aGlzIGhhcyBzb21ldGhpbmcgdG8gZG8gd2l0aCBtb3JlIGFkdmFuY2VkIHNvY2tldCBtYXAgdXNlIGNhc2VzLgoKTXkgaW1tZWRpYXRlIG5leHQgc3RlcCBpcyB0byBmaW5kIG91dCB0aGUgbmVjZXNzYXJ5IGNvbmZpZ3VyYXRpb25zIGZvciBgdGNwX2JwZi5jYCBiZWNhdXNlIHRoaXMgcGF0Y2ggbG9va3MgcHJldHR5IGxvdy1sZXZlbC4gSSYjMzk7bGwgbmVlZCB0byBtYWtlIHN1cmUgSSB1bmRlcnN0YW5kIHRoZSBkZXBlbmRlbmNpZXMgYmVmb3JlIEkgZGl2ZSBmdXJ0aGVyIGludG8gdGhlIGZ1bmN0aW9uYWwgZGV0YWlscyBvZiB0aGUgY2hhbmdlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAyIDE2OjM2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3RjcF9icGZcXC5vJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L2lwdjQvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9pcHY0L01ha2VmaWxlPTYyPW9iai0kKENPTkZJR19UQ1BfQ09OR19JTExJTk9JUykgJiM0Mzs9IHRjcF9pbGxpbm9pcy5vXG5uZXQvaXB2NC9NYWtlZmlsZTo2MzpvYmotJChDT05GSUdfTkVUX1NPQ0tfTVNHKSAmIzQzOz0gdGNwX2JwZi5vXG5uZXQvaXB2NC9NYWtlZmlsZS02NC1vYmotJChDT05GSUdfQlBGX1NZU0NBTEwpICYjNDM7PSB1ZHBfYnBmLm9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMiAxNjozNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzOTcxCgkJCQkJCQlvdXRwdXQ6IDI4CgkJCQkJCQl0aG91Z2h0czogNDQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGFuIGV4cGVydCYjMzk7cyBpbnRlcm5hbCBtb25vbG9ndWU6CgoqKkludmVzdGlnYXRpbmcgYENPTkZJR19ORVRfU09DS19NU0dgIERlcGVuZGVuY3kqKgoKUmlnaHQsIHNvIGBDT05GSUdfTkVUX1NPQ0tfTVNHYCBpcyBmbGFnZ2VkIGFzIGJlaW5nIGEgcmVxdWlyZWQgY29uZmlndXJhdGlvbiBvcHRpb24sIHdoaWNoIGlzIGFuIGludGVyZXN0aW5nIHN0YXJ0aW5nIHBvaW50LiBNeSBpbml0aWFsIHRob3VnaHQgcHJvY2VzcyBpcyB0byB1bmRlcnN0YW5kIGl0cyBvcmlnaW4uIElzIHRoaXMgc29tZXRoaW5nIHRoZSB1c2VyIGV4cGxpY2l0bHkgY29uZmlndXJlcywgb3IgaXMgaXQgcHVsbGVkIGluIGFzIGEgZGVwZW5kZW5jeSBieSBhbm90aGVyLCBtb3JlIGZ1bmRhbWVudGFsIHNldHRpbmc/IFVuZGVyc3RhbmRpbmcgaXRzIHNlbGVjdGlvbiBtZWNoYW5pc20gaXMgY3JpdGljYWwgZm9yIHByb3BlciBjb25maWd1cmF0aW9uIGFuZCB0cm91Ymxlc2hvb3RpbmcgZnVydGhlciBkb3duIHRoZSBsaW5lLiBJIG5lZWQgdG8gZGV0ZXJtaW5lIGlmIGl0JiMzOTtzIHVzZXItZHJpdmVuLCBvciBpZiBpdCBpcyBhIGJ5cHJvZHVjdCBvZiBhbm90aGVyIHNldHRpbmcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDIgMTY6MzY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIE5FVF9TT0NLX01TRyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L0tjb25maWc9NDc1PWNvbmZpZyBORVRfU0VMRlRFU1RTXG4tLVxubmV0L0tjb25maWctNDc4LVxubmV0L0tjb25maWc6NDc5OmNvbmZpZyBORVRfU09DS19NU0dcbm5ldC9LY29uZmlnLTQ4MC1cdGJvb2xcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMiAxNjozNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0MjQ4CgkJCQkJCQlvdXRwdXQ6IDI2CgkJCQkJCQl0aG91Z2h0czogMjYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIGFzc3VtaW5nIEkmIzM5O20gYW4gZXhwZXJ0IGluIHRoaXMgZmllbGQ6CgoqKkRlYnVnZ2luZyBhIEJvb2xlYW46IFRyYWNpbmcgdGhlIFNvdXJjZSoqCgpBbHJpZ2h0LCBhIGJvb2xlYW4mIzM5O3MgYmVlbiBmbGlwcGVkLCBidXQgdGhlcmUmIzM5O3Mgbm8gZGlyZWN0IHByb21wdCBvciBleHBsaWNpdCBzZXR0aW5nIGFmZmVjdGluZyBpdC4gVGhhdCBpbW1lZGlhdGVseSB0ZWxscyBtZSB0aGlzIHZhbHVlIGlzIGJlaW5nIGRyaXZlbiBieSBzb21ldGhpbmcgZWxzZSwgc29tZSBleHRlcm5hbCBjb25kaXRpb24gb3IgbG9naWMgZmxvdy4gTXkgbmV4dCBzdGVwIGlzIGNsZWFyOiBJIG5lZWQgdG8gaWRlbnRpZnkgdGhlICpzb3VyY2UqIG9mIHRoaXMgc2VsZWN0aW9uLiBJIGhhdmUgdG8gdHJhY2UgYmFjayB0aHJvdWdoIHRoZSBjb2RlLCBvciBleGFtaW5lIHRoZSBkYXRhIGZsb3csIHRvIGZpZ3VyZSBvdXQgd2hhdCYjMzk7cyBpbmZsdWVuY2luZyB0aGlzIHBhcnRpY3VsYXIgYm9vbGVhbi4gV2hhdCBwcm9jZXNzLCB3aGF0IGZ1bmN0aW9uLCB3aGF0IG90aGVyIHZhcmlhYmxlIGlzIG1ha2luZyB0aGUgY2FsbD8gVGhpcyBpc24mIzM5O3QgYSBzaW1wbGUgY2FzZSBvZiBhIGRpcmVjdCBhc3NpZ25tZW50OyBpdCYjMzk7cyBhIGNvbmRpdGlvbmFsIGNoYW5nZSwgYW5kIGZpbmRpbmcgdGhhdCBjb25kaXRpb24gaXMga2V5LiBUaGlzIGlzIGEgY2xhc3NpYyBkZWJ1Z2dpbmcgc2NlbmFyaW8uIExldCYjMzk7cyBkaWcgaW4uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDIgMTY6MzY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c2VsZWN0IE5FVF9TT0NLX01TRyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0OyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtrZXJuZWwvYnBmL0tjb25maWc9Mjc9Y29uZmlnIEJQRl9TWVNDQUxMXG4tLVxua2VybmVsL2JwZi9LY29uZmlnLTMzLVx0c2VsZWN0IEJJTkFSWV9QUklOVEZcbmtlcm5lbC9icGYvS2NvbmZpZzozNDpcdHNlbGVjdCBORVRfU09DS19NU0cgaWYgTkVUXG5rZXJuZWwvYnBmL0tjb25maWctMzUtXHRzZWxlY3QgTkVUX1hHUkVTUyBpZiBORVRcbi0tXG5uZXQvS2NvbmZpZz0zNjE9Y29uZmlnIEJQRl9TVFJFQU1fUEFSU0VSXG4tLVxubmV0L0tjb25maWctMzY2LVx0c2VsZWN0IFNUUkVBTV9QQVJTRVJcbm5ldC9LY29uZmlnOjM2NzpcdHNlbGVjdCBORVRfU09DS19NU0dcbm5ldC9LY29uZmlnLTM2OC1cdGhlbHBcbi0tXG5uZXQvaXB2NC9LY29uZmlnPTM4Mj1jb25maWcgSU5FVF9FU1BJTlRDUFxuLS1cbm5ldC9pcHY0L0tjb25maWctMzg1LVx0c2VsZWN0IFNUUkVBTV9QQVJTRVJcbm5ldC9pcHY0L0tjb25maWc6Mzg2Olx0c2VsZWN0IE5FVF9TT0NLX01TR1xubmV0L2lwdjQvS2NvbmZpZy0zODctXHRzZWxlY3QgWEZSTV9FU1BJTlRDUFxuLS1cbm5ldC9pcHY2L0tjb25maWc9OTA9Y29uZmlnIElORVQ2X0VTUElOVENQXG4tLVxubmV0L2lwdjYvS2NvbmZpZy05My1cdHNlbGVjdCBTVFJFQU1fUEFSU0VSXG5uZXQvaXB2Ni9LY29uZmlnOjk0Olx0c2VsZWN0IE5FVF9TT0NLX01TR1xubmV0L2lwdjYvS2NvbmZpZy05NS1cdHNlbGVjdCBYRlJNX0VTUElOVENQXG4tLVxubmV0L3Rscy9LY29uZmlnPTU9Y29uZmlnIFRMU1xuLS1cbm5ldC90bHMvS2NvbmZpZy0xMC1cdHNlbGVjdCBDUllQVE9fR0NNXG5uZXQvdGxzL0tjb25maWc6MTE6XHRzZWxlY3QgTkVUX1NPQ0tfTVNHXG5uZXQvdGxzL0tjb25maWctMTItXHRkZWZhdWx0IG5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMiAxNjozNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0ODY3CgkJCQkJCQlvdXRwdXQ6IDM3CgkJCQkJCQl0aG91Z2h0czogMTEzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBCUEYgYW5kIFNvY2tldCBGaWx0ZXJpbmcgZm9yIEVuaGFuY2VkIE5ldHdvcmsgUGVyZm9ybWFuY2UqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gRnJvbSB3aGF0IEkmIzM5O20gc2VlaW5nLCBgQlBGX1NZU0NBTExgIGlzIHRoZSBjcnVjaWFsIGVsZW1lbnQgaGVyZSwgcGFydGljdWxhcmx5IHdoZW4gYE5FVGAgaXMgaW52b2x2ZWQsIGJlY2F1c2UgdGhhdCYjMzk7cyB3aGF0IHRyaWdnZXJzIGBORVRfU09DS19NU0dgLiBUaGF0IG1ha2VzIGBCUEZfU1lTQ0FMTGAgdGhlIHByaW1hcnkgZm9jdXMsIHRoZSBjb3JlLiBUaGVuIHdlIGhhdmUgcmVsYXRlZCBmZWF0dXJlcyBsaWtlIGBUTFNgLCBgSU5FVF9FU1BJTlRDUGAsIGBJTkVUNl9FU1BJTlRDUGAsIGFuZCBgQlBGX1NUUkVBTV9QQVJTRVJgLCBidXQgYEJQRl9TWVNDQUxMYCBzZWVtcyB0byBiZSB0aGUgb25lIHB1bGxpbmcgdGhlIG1vc3Qgd2VpZ2h0LCBiZWNhdXNlIHRoZSBzb2NrbWFwIGNvbnRleHQgbWVhbnMgaXQgd2lsbCBiZSB0aGUgZHJpdmVyLiBTbywgbXkgaW5zdGluY3QgaXMgdG8gbGVhbiBoZWF2aWx5IG9uIGBCUEZfU1lTQ0FMTGAgYXMgdGhlIGtleSB0byB1bmRlcnN0YW5kaW5nIHRoaXMuCgpHaXZlbiB0aGlzIEJQRiBzb2NrbWFwIGNvbnRleHQsIEkgbmVlZCB0byBjaGVjayBvdXQgd2hhdCYjMzk7cyBoYXBwZW5pbmcgd2l0aCBgdGNwX2VhdF9za2JgIHdpdGhpbiBgbmV0L2lwdjQvdGNwX2JwZi5jYC4gVGhhdCBzaG91bGQgcHJvdmlkZSB0aGUgbmVjZXNzYXJ5IGRldGFpbC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDIgMTY6MzY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7dGNwX2VhdF9za2ImIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvaXB2NC90Y3BfYnBmLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L2lwdjQvdGNwX2JwZi5jLTE0LVxubmV0L2lwdjQvdGNwX2JwZi5jOjE1OnZvaWQgdGNwX2VhdF9za2Ioc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxubmV0L2lwdjQvdGNwX2JwZi5jLTE2LXtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDIgMTY6MzY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTMxNwoJCQkJCQkJb3V0cHV0OiAyNgoJCQkJCQkJdGhvdWdodHM6IDE0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHN1bW1hcnksIHRhaWxvcmVkIGFzIGlmIEkmIzM5O20gYW4gZXhwZXJ0IGluIHRoZSBmaWVsZCB0aGlua2luZyB0aHJvdWdoIHRoaXM6CgoqKkludmVzdGlnYXRpbmcgdGhlIFNjb3BlIG9mIGB0Y3BfZWF0X3NrYmAqKgoKQWxyaWdodCwgbGV0JiMzOTtzIHNlZS4uLiB0aGUgcXVlc3Rpb24gaXMgd2hldGhlciBgdGNwX2VhdF9za2JgIGlzIGEgZnVuY3Rpb24gdGhhdCYjMzk7cyBleHBvc2VkIGZvciB1c2Ugb3V0c2lkZSBvZiBpdHMgaW1tZWRpYXRlLCBwcmVzdW1hYmx5IFRDUC1zdGFjay1zcGVjaWZpYywgY29udGV4dC4gSXMgaXQgKmV4cG9ydGVkKiBpbiBzb21lIHdheT8gT3IgaXMgaXQgdXNlZCBiZXlvbmQgdGhlIG1vZHVsZXMgb3IgZmlsZXMgd2hlcmUgaXQmIzM5O3MgY3VycmVudGx5IGRlZmluZWQ/IFRoYXQmIzM5O3Mgd2hhdCBJIG5lZWQgdG8gZmlndXJlIG91dC4gVW5kZXJzdGFuZGluZyBpdHMgc2NvcGUgaXMgY3J1Y2lhbC4gSWYgaXQmIzM5O3MgaW50ZXJuYWwgdG8gYSBwYXJ0aWN1bGFyIG1vZHVsZSwgdGhlbiBhbnkgcmVmYWN0b3Jpbmcgb3IgY2hhbmdlcyB3aXRoaW4gdGhhdCBtb2R1bGUgc2hvdWxkbiYjMzk7dCBoYXZlIHdpZGVzcHJlYWQgcmVwZXJjdXNzaW9ucy4gQnV0IGlmIG90aGVyIHBhcnRzIG9mIHRoZSBzeXN0ZW0gYXJlIHJlbHlpbmcgb24gaXQsIHRoZW4gYSBtb3JlIGNhcmVmdWwgYXBwcm9hY2ggaXMgcmVxdWlyZWQuIEkgbmVlZCB0byBrbm93IHdoZXJlIGl0JiMzOTtzIGJlaW5nICpjYWxsZWQqIGZyb20sIGFuZCBpZiB0aG9zZSBjYWxsIHNpdGVzIGFyZSB3aXRoaW4gdGhlIGludGVuZGVkIGJvdW5kYXJpZXMuIFRpbWUgdG8gZGVsdmUgaW50byB0aGUgY29kZSBhbmQgZGV0ZXJtaW5lIHRoZSB0cnVlIHZpc2liaWxpdHkgYW5kIHVzYWdlIHBhdHRlcm5zIG9mIGB0Y3BfZWF0X3NrYmAuIFRoaXMgaXMgYWxsIGFib3V0IGFzc2Vzc2luZyB0aGUgcG90ZW50aWFsIGltcGFjdCBvZiBhbnkgY2hhbmdlcyByZWxhdGVkIHRvIHRoaXMgZnVuY3Rpb24uIEkmIzM5O2xsIHN0YXJ0IHdpdGggYSBxdWljayBzZWFyY2ggb2YgdGhlIGNvZGViYXNlIHRvIHNlZSB3aGVyZSBpdCYjMzk7cyBiZWluZyB1c2VkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMiAxNjozNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt0Y3BfZWF0X3NrYiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0OyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtpbmNsdWRlL25ldC90Y3AuaD0yODQzPWludCB0Y3BfYnBmX3N0cnBfcmVhZF9zb2NrKHN0cnVjdCBzdHJwYXJzZXIgKnN0cnAsIHJlYWRfZGVzY3JpcHRvcl90ICpkZXNjLFxuLS1cbmluY2x1ZGUvbmV0L3RjcC5oLTI4NDgtI2lmZGVmIENPTkZJR19JTkVUXG5pbmNsdWRlL25ldC90Y3AuaDoyODQ5OnZvaWQgdGNwX2VhdF9za2Ioc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKTtcbmluY2x1ZGUvbmV0L3RjcC5oLTI4NTAtI2Vsc2VcbmluY2x1ZGUvbmV0L3RjcC5oOjI4NTE6c3RhdGljIGlubGluZSB2b2lkIHRjcF9lYXRfc2tiKHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX2J1ZmYgKnNrYilcbmluY2x1ZGUvbmV0L3RjcC5oLTI4NTIte1xuLS1cbm5ldC9jb3JlL3NrbXNnLmM9OTk2PXN0YXRpYyBpbnQgc2tfcHNvY2tfdmVyZGljdF9hcHBseShzdHJ1Y3Qgc2tfcHNvY2sgKnBzb2NrLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuLS1cbm5ldC9jb3JlL3NrbXNnLmMtMTA0Mi1cdGNhc2UgX19TS19SRURJUkVDVDpcbm5ldC9jb3JlL3NrbXNnLmM6MTA0MzpcdFx0dGNwX2VhdF9za2IocHNvY2stXHUwMDNlc2ssIHNrYik7XG5uZXQvY29yZS9za21zZy5jLTEwNDQtXHRcdGVyciA9IHNrX3Bzb2NrX3NrYl9yZWRpcmVjdChwc29jaywgc2tiKTtcbi0tXG5uZXQvY29yZS9za21zZy5jLTEwNDktXHRcdHNrYl9icGZfcmVkaXJlY3RfY2xlYXIoc2tiKTtcbm5ldC9jb3JlL3NrbXNnLmM6MTA1MDpcdFx0dGNwX2VhdF9za2IocHNvY2stXHUwMDNlc2ssIHNrYik7XG5uZXQvY29yZS9za21zZy5jLTEwNTEtXHRcdHNvY2tfZHJvcChwc29jay1cdTAwM2Vzaywgc2tiKTtcbi0tXG5uZXQvY29yZS9za21zZy5jPTExOTg9c3RhdGljIGludCBza19wc29ja192ZXJkaWN0X3JlY3Yoc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuLS1cbm5ldC9jb3JlL3NrbXNnLmMtMTIwOC1cdFx0bGVuID0gMDtcbm5ldC9jb3JlL3NrbXNnLmM6MTIwOTpcdFx0dGNwX2VhdF9za2Ioc2ssIHNrYik7XG5uZXQvY29yZS9za21zZy5jLTEyMTAtXHRcdHNvY2tfZHJvcChzaywgc2tiKTtcbi0tXG5uZXQvaXB2NC90Y3BfYnBmLmMtMTQtXG5uZXQvaXB2NC90Y3BfYnBmLmM6MTU6dm9pZCB0Y3BfZWF0X3NrYihzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBza19idWZmICpza2IpXG5uZXQvaXB2NC90Y3BfYnBmLmMtMTYte1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMiAxNjozNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2MTk5CgkJCQkJCQlvdXRwdXQ6IDI4CgkJCQkJCQl0aG91Z2h0czogMTc2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgU2NvcGUgb2YgdGhpcyBOZXR3b3JraW5nIFBhdGNoKioKCk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgdG91Y2hpbmcgYG5ldC9jb3JlL3NrbXNnLmNgLCB3aGljaCBtZWFucyBpdCYjMzk7cyBwcmV0dHkgbG93LWxldmVsIGNvcmUgbmV0d29ya2luZyBzdHVmZi4gRnVuY3Rpb25hbGx5LCBpdCYjMzk7cyBtb2RpZnlpbmcgY29yZSBuZXR3b3JraW5nIGFuZCBCUEYgbG9naWMuIE15IGluaXRpYWwgZm9jdXMgaGFzIHRvIGJlIG9uIHRob3NlIGtleSBzeW1ib2xzIG1lbnRpb25lZDogYHRjcF9lYXRfc2tiYCwgYHNrX3Bzb2NrX3ZlcmRpY3RfYXBwbHlgLCBhbmQgYHNrX3Bzb2NrX3ZlcmRpY3RfcmVjdmAuIFRob3NlIGFyZSB0aGUgZW50cnkgcG9pbnRzLgoKTm93LCBsZXQmIzM5O3MgZ2V0IGludG8gdGhlIGNvbmZpZ3VyYXRpb24gYXNwZWN0LiBJdCByZWxpZXMgb24gYEJQRl9TWVNDQUxMYCBhbmQgYE5FVF9TT0NLX01TR2AuIFdoaWxlIGBORVRfU09DS19NU0dgIGlzbiYjMzk7dCBhIHVzZXItc2VsZWN0YWJsZSBjb25maWcsIGBCUEZfU1lTQ0FMTGAgaXMsIHdoaWNoIGlzIGltcG9ydGFudCBmb3IgdW5kZXJzdGFuZGluZyB0aGUgZGVwZW5kZW5jaWVzIGFuZCBwb3RlbnRpYWwgYnVpbGQgb3B0aW9ucyBoZXJlLgoKVGhlIG9idmlvdXMgcXVlc3Rpb24gaXMgd2hldGhlciBgQlBGX1NZU0NBTExgIGlzIHN1ZmZpY2llbnQgZm9yIGVuYWJsaW5nIHRoaXMgZnVuY3Rpb25hbGl0eS4gSG1tLCBsZXQgbWUgY29uZmlybS4uLiBZZXMsIGBCUEZfU1lTQ0FMTGAgZG9lcyBzZWxlY3QgYE5FVF9TT0NLX01TR2AgaWYgdGhlIGBORVRgIG9wdGlvbiBpcyBhY3RpdmUuIFRoYXQmIzM5O3MgZ29vZCB0byBrbm93LCBzaW1wbGlmaWVzIHRoaW5ncyBzb21ld2hhdC4KCk5leHQsIEkgbmVlZCB0byBsb29rIGZvciBhbnkgb3RoZXIgY29uZmlnIG9wdGlvbnMgdGhhdCBtYXkgaW50ZXJhY3QuIFRoZSB0ZXN0IG1lbnRpb25zICYjMzk7c3RycCwmIzM5OyBhbmQgdGhhdCBpbW1lZGlhdGVseSBtYWtlcyBtZSB0aGluayBvZiBgQlBGX1NUUkVBTV9QQVJTRVJgLiBJJiMzOTtsbCB3YW50IHRvIGRpZyBpbnRvIHRoYXQgcmVsYXRpb25zaGlwIGFuZCBob3cgdGhpcyBwYXRjaCBpbnRlcmFjdHMgd2l0aCBzdHJlYW0gcGFyc2luZyB0byBiZSBzdXJlIEkgdW5kZXJzdGFuZCB0aGUgZnVsbCBjb25maWd1cmF0aW9uIGltcGFjdC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDIgMTY6MzY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIEJQRl9TVFJFQU1fUEFSU0VSJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9LY29uZmlnPTM1ND1jb25maWcgQlFMXG4tLVxubmV0L0tjb25maWctMzYwLVxubmV0L0tjb25maWc6MzYxOmNvbmZpZyBCUEZfU1RSRUFNX1BBUlNFUlxubmV0L0tjb25maWctMzYyLVx0Ym9vbCBcJiMzNDtlbmFibGUgQlBGIFNUUkVBTV9QQVJTRVJcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDIgMTY6Mzc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjc4NgoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDI3MgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBc3Nlc3NtZW50IG9mIHRoZSBCUEYgU3RyZWFtIFBhcnNlciBhbmQgUmVsYXRlZCBGdW5jdGlvbnMqKgoKT2theSwgc28gd2UmIzM5O3JlIGxvb2tpbmcgYXQgYSB1c2VyLWNvbmZpZ3VyYWJsZSBmZWF0dXJlLCBgQlBGX1NUUkVBTV9QQVJTRVJgLiBNYWtlcyBzZW5zZSB0byBhZGQgYm90aCBgQlBGX1NZU0NBTExgIGFuZCBgQlBGX1NUUkVBTV9QQVJTRVJgIHRvIGBFbmFibGVDb25maWdzYCB0byBrZWVwIHRoaW5ncyBjb25zaXN0ZW50LiBXZSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGUgc3RyZWFtIHBhcnNlciBjYW4gYmUgZW5hYmxlZCBhbG9uZ3NpZGUgdGhlIHN5c2NhbGxzLgoKTm93LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoZSBgdGNwX2VhdF9za2JgIGZ1bmN0aW9uLiBJIHJlbWVtYmVyIHRoaXMgb25lLiBJdCYjMzk7cyB1c2VkIHdoZW4gYSBwYWNrZXQgaXMgZHJvcHBlZCBvciByZWRpcmVjdGVkIHdpdGhpbiB0aGUgQlBGIHNvY2ttYXAgZnJhbWV3b3JrLCByaWdodD8gTG9va3MgbGlrZSB3ZSYjMzk7dmUgZ290IGEgYnVnIGZpeCBoZXJlLCB3aGljaCBpcyBnb29kLiBUaGUgcGF0Y2ggaXMgYWRkcmVzc2luZyBhbiBpbmNyZW1lbnQgaXNzdWUgd2l0aCBgdGNwLSZndDtjb3BpZWRfc2VxYC4gVGhlIHByZXZpb3VzIGxvZ2ljIHdhcyBjbGVhcmx5IGluY29ycmVjdCwgdXNpbmcgYHNrYi0mZ3Q7bGVuYCB3aGVuIGl0IHNob3VsZCBoYXZlIHVzZWQgdGhlIGNvcnJlY3Qgc2VxdWVuY2UgbnVtYmVyIGFyaXRobWV0aWMgYmFzZWQgb24gdGhlIGBlbmRfc2VxYC4gVGhpcyBpcyBhIGNsZWFyIGltcHJvdmVtZW50IGFuZCBkZWZpbml0ZWx5IHdhcnJhbnRzIHNvbWUgZnV6emluZy4gVGhlIHVwZGF0ZWQgbG9naWMgbWFrZXMgYSBsb3QgbW9yZSBzZW5zZS4KCktleSBzeW1ib2xzIHRvIHBheSBhdHRlbnRpb24gdG8gYXJlIGB0Y3BfZWF0X3NrYmAsIGBza19wc29ja192ZXJkaWN0X2FwcGx5YCwgYW5kIGBza19wc29ja192ZXJkaWN0X3JlY3ZgLgoKTGV0JiMzOTtzIHF1aWNrbHkgZXZhbHVhdGUgaWYgYHRjcF9lYXRfc2tiYCBpcyBhIGhvdCBwYXRoLiBTaW5jZSBpdCYjMzk7cyBvbmx5IGNhbGxlZCBvbiBkcm9wcyBhbmQgcmVkaXJlY3RzIHdpdGhpbiBzb2NrbWFwLCBpdCYjMzk7cyBub3QgYSBnZW5lcmFsIHBlcmZvcm1hbmNlIGJvdHRsZW5lY2sgdW5sZXNzIHRoZXJlJiMzOTtzIGFjdGl2ZSBzb2NrbWFwIHVzYWdlLiBJdCBzZWVtcyBwcmV0dHkgdGFyZ2V0ZWQuIE5vdywgbGV0JiMzOTtzIHNwZW5kIHNvbWUgdGltZSByZXZpZXdpbmcgYHNrX3Bzb2NrX3ZlcmRpY3RfYXBwbHlgIGFuZCBgc2tfcHNvY2tfdmVyZGljdF9yZWN2YCwgZGlnZ2luZyBpbnRvIHRoZSBjb250cm9sIGZsb3cgYW5kIHBvdGVudGlhbCBpc3N1ZXMgd2l0aCB0aGUgc3RyZWFtIHBhcnNlciYjMzk7cyBpbnRlZ3JhdGlvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDIgMTY6Mzc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c2tfcHNvY2tfdmVyZGljdF9hcHBseSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9jb3JlL3NrbXNnLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L2NvcmUvc2ttc2cuYz05NTg9c3RhdGljIGludCBza19wc29ja19za2JfcmVkaXJlY3Qoc3RydWN0IHNrX3Bzb2NrICpmcm9tLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuLS1cbm5ldC9jb3JlL3NrbXNnLmMtOTk1LVxubmV0L2NvcmUvc2ttc2cuYzo5OTY6c3RhdGljIGludCBza19wc29ja192ZXJkaWN0X2FwcGx5KHN0cnVjdCBza19wc29jayAqcHNvY2ssIHN0cnVjdCBza19idWZmICpza2IsXG5uZXQvY29yZS9za21zZy5jLTk5Ny1cdFx0XHRcdCAgaW50IHZlcmRpY3QpXG4tLVxubmV0L2NvcmUvc2ttc2cuYz0xMDc1PXN0YXRpYyB2b2lkIHNrX3Bzb2NrX3N0cnBfcmVhZChzdHJ1Y3Qgc3RycGFyc2VyICpzdHJwLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuLS1cbm5ldC9jb3JlL3NrbXNnLmMtMTA5OC1cdH1cbm5ldC9jb3JlL3NrbXNnLmM6MTA5OTpcdHNrX3Bzb2NrX3ZlcmRpY3RfYXBwbHkocHNvY2ssIHNrYiwgcmV0KTtcbm5ldC9jb3JlL3NrbXNnLmMtMTEwMC1vdXQ6XG4tLVxubmV0L2NvcmUvc2ttc2cuYz0xMTk4PXN0YXRpYyBpbnQgc2tfcHNvY2tfdmVyZGljdF9yZWN2KHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX2J1ZmYgKnNrYilcbi0tXG5uZXQvY29yZS9za21zZy5jLTEyMjEtXHR9XG5uZXQvY29yZS9za21zZy5jOjEyMjI6XHRyZXQgPSBza19wc29ja192ZXJkaWN0X2FwcGx5KHBzb2NrLCBza2IsIHJldCk7XG5uZXQvY29yZS9za21zZy5jLTEyMjMtXHRpZiAocmV0IFx1MDAzYyAwKVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMiAxNjozNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3ODE5CgkJCQkJCQlvdXRwdXQ6IDEyMgoJCQkJCQkJdGhvdWdodHM6IDEyMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFBhdGNoJiMzOTtzIEZvY3VzKioKCk9rYXksIHRoZXNlIGxpc3RlZCBpdGVtcyBhcmUgZGVmaW5pdGVseSBzb2xpZCBpbmRpY2F0b3JzIG9mIHRoZSBwYXRjaCYjMzk7cyBjZW50cmFsIGFyZWEgb2YgY29uY2Vybi4gTGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93biBzeXN0ZW1hdGljYWxseS4KCkl0IGxvb2tzIGxpa2UgdGhlIHBhdGNoIGlzIGZsYWdnZWQgYXMgYmVpbmcgJiMzNDtXb3J0aEZ1enppbmcsJiMzNDsgd2hpY2ggaW1tZWRpYXRlbHkgc3VnZ2VzdHMgYSBwb3RlbnRpYWwgZm9yIGVkZ2UgY2FzZXMgb3IgdW5leHBlY3RlZCBiZWhhdmlvcnMuIFRoZSAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7IGFyZSBwYXJ0aWN1bGFybHkgdGVsbGluZy4gV2UmIzM5O3ZlIGdvdCAmIzM0O3RjcF9lYXRfc2tiLCYjMzQ7IHdoaWNoIGlzIGEgZnVuZGFtZW50YWwgZnVuY3Rpb24gaW4gVENQIGhhbmRsaW5nLCBkZWFsaW5nIGRpcmVjdGx5IHdpdGggaW5jb21pbmcgZGF0YSwgYW5kIHRoZW4gd2UgaGF2ZSAmIzM0O3NrX3Bzb2NrX3ZlcmRpY3RfYXBwbHkmIzM0OyBhbmQgJiMzNDtza19wc29ja192ZXJkaWN0X3JlY3YmIzM0OyByZWxhdGVkIHRvIHZlcmRpY3QgYXBwbGljYXRpb24gYW5kIHJlY2VpcHQgd2l0aGluIHRoZSBzb2NrbWFwIGZyYW1ld29yay4gVGhhdCYjMzk7cyBhIGRpcmVjdCBjb25uZWN0aW9uIHRvIGhvdyB3ZSBoYW5kbGUgc29ja2V0IHZlcmRpY3RzIHVzaW5nIEJQRiwgaW5kaWNhdGluZyBhIGZvY3VzZWQgZWZmb3J0IG9uIHRoZSBjb3JlIGludGVyYWN0aW9uIGJldHdlZW4gQlBGIGFuZCBuZXR3b3JrIGRhdGEuCgpUaGUgJiMzNDtFbmFibGVDb25maWdzJiMzNDsgYXJlIGVxdWFsbHkgaWxsdW1pbmF0aW5nOiAmIzM0O0JQRl9TWVNDQUxMJiMzNDsgYW5kICYjMzQ7QlBGX1NUUkVBTV9QQVJTRVIuJiMzNDsgU28sIHdlIGFyZSBsaWtlbHkgZGVhbGluZyB3aXRoIEJQRiBpbnRlcmFjdGluZyB3aXRoIHN5c2NhbGxzIGFuZCBhIHN0cmVhbSBwYXJzZXIuCgpTeW50aGVzaXppbmcgYWxsIG9mIHRoaXMsIHRoZSAmIzM0O1JlYXNvbmluZyYjMzQ7IHN0YXRlbWVudCBjb25maXJtcyBpdDogdGhpcyBwYXRjaCBpcyBmdW5kYW1lbnRhbGx5IGFsdGVyaW5nIHRoZSBjb3JlIEJQRiBzb2NrbWFwIGxvZ2ljLiBTcGVjaWZpY2FsbHksIGl0JiMzOTtzIG1vZGlmeWluZyB0aGUgcHJvY2VzcyB3aXRoaW4gYHRjcF9lYXRfc2tiYCDigJMgKnZlcnkqIGltcG9ydGFudCDigJMgaG93IFRDUCYjMzk7cyBgY29waWVkX3NlcWAgaXMgaGFuZGxlZCB3aGVuIHBhY2tldHMgYXJlIGRyb3BwZWQgb3IgcmVkaXJlY3RlZC4gVGhhdCBpcywgd2UmIzM5O3JlIHRhbGtpbmcgYWJvdXQgYSBmdW5jdGlvbmFsIGNoYW5nZSB0byBob3cgdGhlIGtlcm5lbCAqcHJvY2Vzc2VzIG5ldHdvcmsgdHJhZmZpYyouIFRoaXMgaGFzIGltcGxpY2F0aW9ucyBmb3IgcGVyZm9ybWFuY2UsIHNlY3VyaXR5LCBhbmQgc3RhYmlsaXR5IGlmIGl0IGlzbiYjMzk7dCBjb3JyZWN0LiBJIG5lZWQgdG8gZGlnIGRlZXBlciBpbnRvIHRoZSBzcGVjaWZpYyBtb2RpZmljYXRpb25zIHRvIHVuZGVyc3RhbmQgdGhlIHByZWNpc2UgaW1wYWN0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMiAxNjozNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7QlBGX1NZU0NBTEwmIzM0OywKICAgICYjMzQ7QlBGX1NUUkVBTV9QQVJTRVImIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDt0Y3BfZWF0X3NrYiYjMzQ7LAogICAgJiMzNDtza19wc29ja192ZXJkaWN0X2FwcGx5JiMzNDssCiAgICAmIzM0O3NrX3Bzb2NrX3ZlcmRpY3RfcmVjdiYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBjb3JlIEJQRiBzb2NrbWFwIGxvZ2ljIGluIHRjcF9lYXRfc2tiLCBjaGFuZ2luZyBob3cgVENQIGNvcGllZF9zZXEgaXMgdXBkYXRlZCB3aGVuIHBhY2tldHMgYXJlIGRyb3BwZWQgb3IgcmVkaXJlY3RlZC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIG5ldHdvcmsgcHJvY2Vzc2luZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7QlBGX1NZU0NBTEwmIzM0OywKICAgICYjMzQ7QlBGX1NUUkVBTV9QQVJTRVImIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDt0Y3BfZWF0X3NrYiYjMzQ7LAogICAgJiMzNDtza19wc29ja192ZXJkaWN0X2FwcGx5JiMzNDssCiAgICAmIzM0O3NrX3Bzb2NrX3ZlcmRpY3RfcmVjdiYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBjb3JlIEJQRiBzb2NrbWFwIGxvZ2ljIGluIHRjcF9lYXRfc2tiLCBjaGFuZ2luZyBob3cgVENQIGNvcGllZF9zZXEgaXMgdXBkYXRlZCB3aGVuIHBhY2tldHMgYXJlIGRyb3BwZWQgb3IgcmVkaXJlY3RlZC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIG5ldHdvcmsgcHJvY2Vzc2luZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAyVDE2OjM2OjIzLjk1OTMyMjQ0N1oiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ3NzQ2NTU0MjkyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkJQRl9TWVNDQUxMXCIsXG4gICAgXCJCUEZfU1RSRUFNX1BBUlNFUlwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInRjcF9lYXRfc2tiXCIsXG4gICAgXCJza19wc29ja192ZXJkaWN0X2FwcGx5XCIsXG4gICAgXCJza19wc29ja192ZXJkaWN0X3JlY3ZcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBjb3JlIEJQRiBzb2NrbWFwIGxvZ2ljIGluIHRjcF9lYXRfc2tiLCBjaGFuZ2luZyBob3cgVENQIGNvcGllZF9zZXEgaXMgdXBkYXRlZCB3aGVuIHBhY2tldHMgYXJlIGRyb3BwZWQgb3IgcmVkaXJlY3RlZC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIG5ldHdvcmsgcHJvY2Vzc2luZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDJUMTY6MzY6MjMuOTU5MzI4NTU3WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1MzgxOTYzNTAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCBlNGJiZTE5MGU5NjM3YWQ3NGJhOTA4Y2JhMzk1Njk1MWVhM2YwZmYzXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBUaHUgSnVsIDIgMTY6MzY6MjIgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvbmV0L2lwdjQvdGNwX2JwZi5jIGIvbmV0L2lwdjQvdGNwX2JwZi5jXFxuaW5kZXggY2MwYmQ3M2YzNmI2ZDYuLmQ2NDBmOGUwNjUyOTc4IDEwMDY0NFxcbi0tLSBhL25ldC9pcHY0L3RjcF9icGYuY1xcbisrKyBiL25ldC9pcHY0L3RjcF9icGYuY1xcbkBAIC0xNSw3ICsxNSw3IEBAXFxuIHZvaWQgdGNwX2VhdF9za2Ioc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbiB7XFxuIFxcdHN0cnVjdCB0Y3Bfc29jayAqdGNwO1xcbi1cXHRpbnQgY29waWVkO1xcbitcXHR1MzIgZW5kX3NlcSwgZGVsdGE7XFxuIFxcbiBcXHRpZiAoIXNrYiB8fCAhc2tiLVxcdTAwM2VsZW4gfHwgIXNrX2lzX3RjcChzaykpXFxuIFxcdFxcdHJldHVybjtcXG5AQCAtMjQsMTAgKzI0LDExIEBAIHZvaWQgdGNwX2VhdF9za2Ioc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbiBcXHRcXHRyZXR1cm47XFxuIFxcbiBcXHR0Y3AgPSB0Y3Bfc2soc2spO1xcbi1cXHRjb3BpZWQgPSB0Y3AtXFx1MDAzZWNvcGllZF9zZXEgKyBza2ItXFx1MDAzZWxlbjtcXG4tXFx0V1JJVEVfT05DRSh0Y3AtXFx1MDAzZWNvcGllZF9zZXEsIGNvcGllZCk7XFxuK1xcdGVuZF9zZXEgPSBUQ1BfU0tCX0NCKHNrYiktXFx1MDAzZWVuZF9zZXE7XFxuK1xcdGRlbHRhID0gZW5kX3NlcSAtIHRjcC1cXHUwMDNlY29waWVkX3NlcTtcXG4rXFx0V1JJVEVfT05DRSh0Y3AtXFx1MDAzZWNvcGllZF9zZXEsIGVuZF9zZXEpO1xcbiBcXHR0Y3BfcmN2X3NwYWNlX2FkanVzdChzayk7XFxuLVxcdF9fdGNwX2NsZWFudXBfcmJ1Zihzaywgc2tiLVxcdTAwM2VsZW4pO1xcbitcXHRfX3RjcF9jbGVhbnVwX3JidWYoc2ssIGRlbHRhKTtcXG4gfVxcbiBcXG4gc3RhdGljIGludCBicGZfdGNwX2luZ3Jlc3Moc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3Qgc2tfcHNvY2sgKnBzb2NrLFxcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9zb2NrbWFwX2Jhc2ljLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9zb2NrbWFwX2Jhc2ljLmNcXG5pbmRleCBjYjMyMjk3MTFmOTNhMy4uMTA2ZGQwM2NkZTg0ZWYgMTAwNjQ0XFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvc29ja21hcF9iYXNpYy5jXFxuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvc29ja21hcF9iYXNpYy5jXFxuQEAgLTEyNzUsNiArMTI3NSw3NyBAQCBzdGF0aWMgdm9pZCB0ZXN0X3NvY2ttYXBfY29waWVkX3NlcShib29sIHN0cnApXFxuIFxcdHRlc3Rfc29ja21hcF9wYXNzX3Byb2dfX2Rlc3Ryb3koc2tlbCk7XFxuIH1cXG4gXFxuK3N0YXRpYyB2b2lkIHRlc3Rfc29ja21hcF9kcm9wX2FmdGVyX3BhcnRpYWxfcmVhZCh2b2lkKVxcbit7XFxuK1xcdGludCBtYXAsIGVyciwgc2VudCwgcmVjdmQsIHplcm8gPSAwLCBvbiA9IDE7XFxuK1xcdHN0cnVjdCB0ZXN0X3NvY2ttYXBfZHJvcF9wcm9nICpza2VsO1xcbitcXHRpbnQgYzAgPSAtMSwgcDAgPSAtMSwgYzEgPSAtMSwgcDEgPSAtMTtcXG4rXFx0c3RydWN0IHRjcF96ZXJvY29weV9yZWNlaXZlIHpjID0ge307XFxuK1xcdHNvY2tsZW5fdCB6Y19sZW4gPSBzaXplb2YoemMpO1xcbitcXHRjaGFyIGJ1ZlsyMDBdID0ge30sIHJjdls1MF0sIGFkZHJbMTAwXTtcXG4rXFx0c3RydWN0IGJwZl9wcm9ncmFtICpwcm9nO1xcbitcXG4rXFx0c2tlbCA9IHRlc3Rfc29ja21hcF9kcm9wX3Byb2dfX29wZW5fYW5kX2xvYWQoKTtcXG4rXFx0aWYgKCFBU1NFUlRfT0tfUFRSKHNrZWwsIFxcXCJvcGVuX2FuZF9sb2FkXFxcIikpXFxuK1xcdFxcdHJldHVybjtcXG4rXFxuK1xcdGlmIChjcmVhdGVfc29ja2V0X3BhaXJzKEFGX0lORVQsIFNPQ0tfU1RSRUFNLCBcXHUwMDI2YzAsIFxcdTAwMjZjMSwgXFx1MDAyNnAwLCBcXHUwMDI2cDEpKVxcbitcXHRcXHRnb3RvIGVuZDtcXG4rXFxuK1xcdHNlbnQgPSB4c2VuZChjMCwgYnVmLCBzaXplb2YoYnVmKSwgMCk7XFxuK1xcdGlmICghQVNTRVJUX0VRKHNlbnQsIHNpemVvZihidWYpLCBcXFwieHNlbmQobmF0aXZlKVxcXCIpKVxcbitcXHRcXHRnb3RvIGVuZDtcXG4rXFxuK1xcdHJlY3ZkID0gcmVjdl90aW1lb3V0KHAwLCByY3YsIHNpemVvZihyY3YpLCBNU0dfRE9OVFdBSVQsIDEpO1xcbitcXHRpZiAoIUFTU0VSVF9FUShyZWN2ZCwgc2l6ZW9mKHJjdiksIFxcXCJyZWN2X3RpbWVvdXQocGFydGlhbClcXFwiKSlcXG4rXFx0XFx0Z290byBlbmQ7XFxuK1xcbitcXHRwcm9nID0gc2tlbC1cXHUwMDNlcHJvZ3MucHJvZ19za2JfdmVyZGljdDtcXG4rXFx0bWFwID0gYnBmX21hcF9fZmQoc2tlbC1cXHUwMDNlbWFwcy5zb2NrX21hcF9yeCk7XFxuK1xcdGVyciA9IGJwZl9wcm9nX2F0dGFjaChicGZfcHJvZ3JhbV9fZmQocHJvZyksIG1hcCxcXG4rXFx0XFx0XFx0ICAgICAgQlBGX1NLX1NLQl9TVFJFQU1fVkVSRElDVCwgMCk7XFxuK1xcdGlmICghQVNTRVJUX09LKGVyciwgXFxcImJwZl9wcm9nX2F0dGFjaFxcXCIpKVxcbitcXHRcXHRnb3RvIGVuZDtcXG4rXFxuK1xcdGVyciA9IGJwZl9tYXBfdXBkYXRlX2VsZW0obWFwLCBcXHUwMDI2emVybywgXFx1MDAyNnAwLCBCUEZfTk9FWElTVCk7XFxuK1xcdGlmICghQVNTRVJUX09LKGVyciwgXFxcImJwZl9tYXBfdXBkYXRlX2VsZW1cXFwiKSlcXG4rXFx0XFx0Z290byBlbmQ7XFxuK1xcbitcXHRzZW50ID0geHNlbmQoYzAsIGJ1ZiwgMSwgMCk7XFxuK1xcdGlmICghQVNTRVJUX0VRKHNlbnQsIDEsIFxcXCJ4c2VuZChkcm9wKVxcXCIpKVxcbitcXHRcXHRnb3RvIGVuZDtcXG4rXFxuK1xcdGVyciA9IGJwZl9tYXBfZGVsZXRlX2VsZW0obWFwLCBcXHUwMDI2emVybyk7XFxuK1xcdGlmICghQVNTRVJUX09LKGVyciwgXFxcImJwZl9tYXBfZGVsZXRlX2VsZW1cXFwiKSlcXG4rXFx0XFx0Z290byBlbmQ7XFxuK1xcbitcXHRzZW50ID0geHNlbmQoYzAsIGJ1ZiwgMSwgMCk7XFxuK1xcdGlmICghQVNTRVJUX0VRKHNlbnQsIDEsIFxcXCJ4c2VuZChuYXRpdmUgYWdhaW4pXFxcIikpXFxuK1xcdFxcdGdvdG8gZW5kO1xcbitcXG4rXFx0ZXJyID0gc2V0c29ja29wdChwMCwgU09MX1NPQ0tFVCwgU09fWkVST0NPUFksIFxcdTAwMjZvbiwgc2l6ZW9mKG9uKSk7XFxuK1xcdGlmICghQVNTRVJUX09LKGVyciwgXFxcInNldHNvY2tvcHQoU09fWkVST0NPUFkpXFxcIikpXFxuK1xcdFxcdGdvdG8gZW5kO1xcbitcXG4rXFx0emMuY29weWJ1Zl9hZGRyZXNzID0gKF9fdTY0KSh1bnNpZ25lZCBsb25nKWFkZHI7XFxuK1xcdHpjLmNvcHlidWZfbGVuID0gc2l6ZW9mKGFkZHIpO1xcbitcXHRlcnIgPSBnZXRzb2Nrb3B0KHAwLCBJUFBST1RPX1RDUCwgVENQX1pFUk9DT1BZX1JFQ0VJVkUsIFxcdTAwMjZ6YywgXFx1MDAyNnpjX2xlbik7XFxuK1xcdGlmICghQVNTRVJUX09LKGVyciwgXFxcImdldHNvY2tvcHQoVENQX1pFUk9DT1BZX1JFQ0VJVkUpXFxcIikpXFxuK1xcdFxcdGdvdG8gZW5kO1xcbitcXG4rXFx0QVNTRVJUX0VRKHpjLmNvcHlidWZfbGVuLCAxLCBcXFwiVENQX1pFUk9DT1BZX1JFQ0VJVkUgY29waWVkXFxcIik7XFxuK2VuZDpcXG4rXFx0aWYgKGMwIFxcdTAwM2U9IDApXFxuK1xcdFxcdGNsb3NlKGMwKTtcXG4rXFx0aWYgKHAwIFxcdTAwM2U9IDApXFxuK1xcdFxcdGNsb3NlKHAwKTtcXG4rXFx0aWYgKGMxIFxcdTAwM2U9IDApXFxuK1xcdFxcdGNsb3NlKGMxKTtcXG4rXFx0aWYgKHAxIFxcdTAwM2U9IDApXFxuK1xcdFxcdGNsb3NlKHAxKTtcXG4rXFx0dGVzdF9zb2NrbWFwX2Ryb3BfcHJvZ19fZGVzdHJveShza2VsKTtcXG4rfVxcbitcXG4gLyogV2FpdCB1bnRpbCBGSU9OUkVBRCByZXR1cm5zIHRoZSBleHBlY3RlZCB2YWx1ZSBvciB0aW1lb3V0ICovXFxuIHN0YXRpYyBpbnQgd2FpdF9mb3JfZmlvbnJlYWQoaW50IGZkLCBpbnQgZXhwZWN0ZWQsIHVuc2lnbmVkIGludCB0aW1lb3V0X21zKVxcbiB7XFxuQEAgLTE0NDcsNiArMTUxOCw4IEBAIHZvaWQgdGVzdF9zb2NrbWFwX2Jhc2ljKHZvaWQpXFxuIFxcdFxcdHRlc3Rfc29ja21hcF9jb3BpZWRfc2VxKGZhbHNlKTtcXG4gXFx0aWYgKHRlc3RfX3N0YXJ0X3N1YnRlc3QoXFxcInNvY2ttYXAgcmVjb3ZlciB3aXRoIHN0cnBcXFwiKSlcXG4gXFx0XFx0dGVzdF9zb2NrbWFwX2NvcGllZF9zZXEodHJ1ZSk7XFxuK1xcdGlmICh0ZXN0X19zdGFydF9zdWJ0ZXN0KFxcXCJzb2NrbWFwIGRyb3AgYWZ0ZXIgcGFydGlhbCByZWFkXFxcIikpXFxuK1xcdFxcdHRlc3Rfc29ja21hcF9kcm9wX2FmdGVyX3BhcnRpYWxfcmVhZCgpO1xcbiBcXHRpZiAodGVzdF9fc3RhcnRfc3VidGVzdChcXFwic29ja21hcCB0Y3AgbXVsdGkgY2hhbm5lbHNcXFwiKSlcXG4gXFx0XFx0dGVzdF9zb2NrbWFwX211bHRpX2NoYW5uZWxzKFNPQ0tfU1RSRUFNKTtcXG4gXFx0aWYgKHRlc3RfX3N0YXJ0X3N1YnRlc3QoXFxcInNvY2ttYXAgdWRwIG11bHRpIGNoYW5uZWxzXFxcIikpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAyVDE2OjM2OjI0LjQ5ODA0NDEzN1oiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDcyMDc4MjQ2OTIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQlBGX1NZU0NBTExcIixcbiAgICBcIkJQRl9TVFJFQU1fUEFSU0VSXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwidGNwX2VhdF9za2JcIixcbiAgICBcInNrX3Bzb2NrX3ZlcmRpY3RfYXBwbHlcIixcbiAgICBcInNrX3Bzb2NrX3ZlcmRpY3RfcmVjdlwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIGNvcmUgQlBGIHNvY2ttYXAgbG9naWMgaW4gdGNwX2VhdF9za2IsIGNoYW5naW5nIGhvdyBUQ1AgY29waWVkX3NlcSBpcyB1cGRhdGVkIHdoZW4gcGFja2V0cyBhcmUgZHJvcHBlZCBvciByZWRpcmVjdGVkLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gbmV0d29yayBwcm9jZXNzaW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG5ldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0XG4gICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksXG4gICBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IGU0YmJlMTkwZTk2MzdhZDc0YmE5MDhjYmEzOTU2OTUxZWEzZjBmZjNcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVGh1IEp1bCAyIDE2OjM2OjIyIDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbmV0L2lwdjQvdGNwX2JwZi5jIGIvbmV0L2lwdjQvdGNwX2JwZi5jXG5pbmRleCBjYzBiZDczZjM2YjZkNi4uZDY0MGY4ZTA2NTI5NzggMTAwNjQ0XG4tLS0gYS9uZXQvaXB2NC90Y3BfYnBmLmNcbisrKyBiL25ldC9pcHY0L3RjcF9icGYuY1xuQEAgLTE1LDcgKzE1LDcgQEBcbiB2b2lkIHRjcF9lYXRfc2tiKHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX2J1ZmYgKnNrYilcbiB7XG4gXHRzdHJ1Y3QgdGNwX3NvY2sgKnRjcDtcbi1cdGludCBjb3BpZWQ7XG4rXHR1MzIgZW5kX3NlcSwgZGVsdGE7XG4gXG4gXHRpZiAoIXNrYiB8fCAhc2tiLVx1MDAzZWxlbiB8fCAhc2tfaXNfdGNwKHNrKSlcbiBcdFx0cmV0dXJuO1xuQEAgLTI0LDEwICsyNCwxMSBAQCB2b2lkIHRjcF9lYXRfc2tiKHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX2J1ZmYgKnNrYilcbiBcdFx0cmV0dXJuO1xuIFxuIFx0dGNwID0gdGNwX3NrKHNrKTtcbi1cdGNvcGllZCA9IHRjcC1cdTAwM2Vjb3BpZWRfc2VxICsgc2tiLVx1MDAzZWxlbjtcbi1cdFdSSVRFX09OQ0UodGNwLVx1MDAzZWNvcGllZF9zZXEsIGNvcGllZCk7XG4rXHRlbmRfc2VxID0gVENQX1NLQl9DQihza2IpLVx1MDAzZWVuZF9zZXE7XG4rXHRkZWx0YSA9IGVuZF9zZXEgLSB0Y3AtXHUwMDNlY29waWVkX3NlcTtcbitcdFdSSVRFX09OQ0UodGNwLVx1MDAzZWNvcGllZF9zZXEsIGVuZF9zZXEpO1xuIFx0dGNwX3Jjdl9zcGFjZV9hZGp1c3Qoc2spO1xuLVx0X190Y3BfY2xlYW51cF9yYnVmKHNrLCBza2ItXHUwMDNlbGVuKTtcbitcdF9fdGNwX2NsZWFudXBfcmJ1ZihzaywgZGVsdGEpO1xuIH1cbiBcbiBzdGF0aWMgaW50IGJwZl90Y3BfaW5ncmVzcyhzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBza19wc29jayAqcHNvY2ssXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvc29ja21hcF9iYXNpYy5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvc29ja21hcF9iYXNpYy5jXG5pbmRleCBjYjMyMjk3MTFmOTNhMy4uMTA2ZGQwM2NkZTg0ZWYgMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9zb2NrbWFwX2Jhc2ljLmNcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3NvY2ttYXBfYmFzaWMuY1xuQEAgLTEyNzUsNiArMTI3NSw3NyBAQCBzdGF0aWMgdm9pZCB0ZXN0X3NvY2ttYXBfY29waWVkX3NlcShib29sIHN0cnApXG4gXHR0ZXN0X3NvY2ttYXBfcGFzc19wcm9nX19kZXN0cm95KHNrZWwpO1xuIH1cbiBcbitzdGF0aWMgdm9pZCB0ZXN0X3NvY2ttYXBfZHJvcF9hZnRlcl9wYXJ0aWFsX3JlYWQodm9pZClcbit7XG4rXHRpbnQgbWFwLCBlcnIsIHNlbnQsIHJlY3ZkLCB6ZXJvID0gMCwgb24gPSAxO1xuK1x0c3RydWN0IHRlc3Rfc29ja21hcF9kcm9wX3Byb2cgKnNrZWw7XG4rXHRpbnQgYzAgPSAtMSwgcDAgPSAtMSwgYzEgPSAtMSwgcDEgPSAtMTtcbitcdHN0cnVjdCB0Y3BfemVyb2NvcHlfcmVjZWl2ZSB6YyA9IHt9O1xuK1x0c29ja2xlbl90IHpjX2xlbiA9IHNpemVvZih6Yyk7XG4rXHRjaGFyIGJ1ZlsyMDBdID0ge30sIHJjdls1MF0sIGFkZHJbMTAwXTtcbitcdHN0cnVjdCBicGZfcHJvZ3JhbSAqcHJvZztcbitcbitcdHNrZWwgPSB0ZXN0X3NvY2ttYXBfZHJvcF9wcm9nX19vcGVuX2FuZF9sb2FkKCk7XG4rXHRpZiAoIUFTU0VSVF9PS19QVFIoc2tlbCwgXCJvcGVuX2FuZF9sb2FkXCIpKVxuK1x0XHRyZXR1cm47XG4rXG4rXHRpZiAoY3JlYXRlX3NvY2tldF9wYWlycyhBRl9JTkVULCBTT0NLX1NUUkVBTSwgXHUwMDI2YzAsIFx1MDAyNmMxLCBcdTAwMjZwMCwgXHUwMDI2cDEpKVxuK1x0XHRnb3RvIGVuZDtcbitcbitcdHNlbnQgPSB4c2VuZChjMCwgYnVmLCBzaXplb2YoYnVmKSwgMCk7XG4rXHRpZiAoIUFTU0VSVF9FUShzZW50LCBzaXplb2YoYnVmKSwgXCJ4c2VuZChuYXRpdmUpXCIpKVxuK1x0XHRnb3RvIGVuZDtcbitcbitcdHJlY3ZkID0gcmVjdl90aW1lb3V0KHAwLCByY3YsIHNpemVvZihyY3YpLCBNU0dfRE9OVFdBSVQsIDEpO1xuK1x0aWYgKCFBU1NFUlRfRVEocmVjdmQsIHNpemVvZihyY3YpLCBcInJlY3ZfdGltZW91dChwYXJ0aWFsKVwiKSlcbitcdFx0Z290byBlbmQ7XG4rXG4rXHRwcm9nID0gc2tlbC1cdTAwM2Vwcm9ncy5wcm9nX3NrYl92ZXJkaWN0O1xuK1x0bWFwID0gYnBmX21hcF9fZmQoc2tlbC1cdTAwM2VtYXBzLnNvY2tfbWFwX3J4KTtcbitcdGVyciA9IGJwZl9wcm9nX2F0dGFjaChicGZfcHJvZ3JhbV9fZmQocHJvZyksIG1hcCxcbitcdFx0XHQgICAgICBCUEZfU0tfU0tCX1NUUkVBTV9WRVJESUNULCAwKTtcbitcdGlmICghQVNTRVJUX09LKGVyciwgXCJicGZfcHJvZ19hdHRhY2hcIikpXG4rXHRcdGdvdG8gZW5kO1xuK1xuK1x0ZXJyID0gYnBmX21hcF91cGRhdGVfZWxlbShtYXAsIFx1MDAyNnplcm8sIFx1MDAyNnAwLCBCUEZfTk9FWElTVCk7XG4rXHRpZiAoIUFTU0VSVF9PSyhlcnIsIFwiYnBmX21hcF91cGRhdGVfZWxlbVwiKSlcbitcdFx0Z290byBlbmQ7XG4rXG4rXHRzZW50ID0geHNlbmQoYzAsIGJ1ZiwgMSwgMCk7XG4rXHRpZiAoIUFTU0VSVF9FUShzZW50LCAxLCBcInhzZW5kKGRyb3ApXCIpKVxuK1x0XHRnb3RvIGVuZDtcbitcbitcdGVyciA9IGJwZl9tYXBfZGVsZXRlX2VsZW0obWFwLCBcdTAwMjZ6ZXJvKTtcbitcdGlmICghQVNTRVJUX09LKGVyciwgXCJicGZfbWFwX2RlbGV0ZV9lbGVtXCIpKVxuK1x0XHRnb3RvIGVuZDtcbitcbitcdHNlbnQgPSB4c2VuZChjMCwgYnVmLCAxLCAwKTtcbitcdGlmICghQVNTRVJUX0VRKHNlbnQsIDEsIFwieHNlbmQobmF0aXZlIGFnYWluKVwiKSlcbitcdFx0Z290byBlbmQ7XG4rXG4rXHRlcnIgPSBzZXRzb2Nrb3B0KHAwLCBTT0xfU09DS0VULCBTT19aRVJPQ09QWSwgXHUwMDI2b24sIHNpemVvZihvbikpO1xuK1x0aWYgKCFBU1NFUlRfT0soZXJyLCBcInNldHNvY2tvcHQoU09fWkVST0NPUFkpXCIpKVxuK1x0XHRnb3RvIGVuZDtcbitcbitcdHpjLmNvcHlidWZfYWRkcmVzcyA9IChfX3U2NCkodW5zaWduZWQgbG9uZylhZGRyO1xuK1x0emMuY29weWJ1Zl9sZW4gPSBzaXplb2YoYWRkcik7XG4rXHRlcnIgPSBnZXRzb2Nrb3B0KHAwLCBJUFBST1RPX1RDUCwgVENQX1pFUk9DT1BZX1JFQ0VJVkUsIFx1MDAyNnpjLCBcdTAwMjZ6Y19sZW4pO1xuK1x0aWYgKCFBU1NFUlRfT0soZXJyLCBcImdldHNvY2tvcHQoVENQX1pFUk9DT1BZX1JFQ0VJVkUpXCIpKVxuK1x0XHRnb3RvIGVuZDtcbitcbitcdEFTU0VSVF9FUSh6Yy5jb3B5YnVmX2xlbiwgMSwgXCJUQ1BfWkVST0NPUFlfUkVDRUlWRSBjb3BpZWRcIik7XG4rZW5kOlxuK1x0aWYgKGMwIFx1MDAzZT0gMClcbitcdFx0Y2xvc2UoYzApO1xuK1x0aWYgKHAwIFx1MDAzZT0gMClcbitcdFx0Y2xvc2UocDApO1xuK1x0aWYgKGMxIFx1MDAzZT0gMClcbitcdFx0Y2xvc2UoYzEpO1xuK1x0aWYgKHAxIFx1MDAzZT0gMClcbitcdFx0Y2xvc2UocDEpO1xuK1x0dGVzdF9zb2NrbWFwX2Ryb3BfcHJvZ19fZGVzdHJveShza2VsKTtcbit9XG4rXG4gLyogV2FpdCB1bnRpbCBGSU9OUkVBRCByZXR1cm5zIHRoZSBleHBlY3RlZCB2YWx1ZSBvciB0aW1lb3V0ICovXG4gc3RhdGljIGludCB3YWl0X2Zvcl9maW9ucmVhZChpbnQgZmQsIGludCBleHBlY3RlZCwgdW5zaWduZWQgaW50IHRpbWVvdXRfbXMpXG4ge1xuQEAgLTE0NDcsNiArMTUxOCw4IEBAIHZvaWQgdGVzdF9zb2NrbWFwX2Jhc2ljKHZvaWQpXG4gXHRcdHRlc3Rfc29ja21hcF9jb3BpZWRfc2VxKGZhbHNlKTtcbiBcdGlmICh0ZXN0X19zdGFydF9zdWJ0ZXN0KFwic29ja21hcCByZWNvdmVyIHdpdGggc3RycFwiKSlcbiBcdFx0dGVzdF9zb2NrbWFwX2NvcGllZF9zZXEodHJ1ZSk7XG4rXHRpZiAodGVzdF9fc3RhcnRfc3VidGVzdChcInNvY2ttYXAgZHJvcCBhZnRlciBwYXJ0aWFsIHJlYWRcIikpXG4rXHRcdHRlc3Rfc29ja21hcF9kcm9wX2FmdGVyX3BhcnRpYWxfcmVhZCgpO1xuIFx0aWYgKHRlc3RfX3N0YXJ0X3N1YnRlc3QoXCJzb2NrbWFwIHRjcCBtdWx0aSBjaGFubmVsc1wiKSlcbiBcdFx0dGVzdF9zb2NrbWFwX211bHRpX2NoYW5uZWxzKFNPQ0tfU1RSRUFNKTtcbiBcdGlmICh0ZXN0X19zdGFydF9zdWJ0ZXN0KFwic29ja21hcCB1ZHAgbXVsdGkgY2hhbm5lbHNcIikpXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wMlQxNjozNjoyNC40OTgwNDU0MzdaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NjkzNzY4Nzg1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgVENQIEJQRiBNb2RpZmljYXRpb24qKlxuXG5Pa2F5LCBzbyB0aGlzIHBhdGNoIGlzIHRvdWNoaW5nIGBuZXQvaXB2NC90Y3BfYnBmLmNgIGFuZCBhZGRpbmcgYSBuZXcgdGVzdCBmb3IgaXQgaW4gYHNvY2ttYXBfYmFzaWMuY2AsIGludGVyZXN0aW5nLiBJJ2xsIG5lZWQgdG8gZGlnIGludG8gd2hhdCB0aGV5J3JlIHRyeWluZyB0byBhY2hpZXZlIHdpdGggdGhpcy4gVGhlIGNvcmUgb2YgdGhlIGNoYW5nZSBzZWVtcyB0byBiZSB3aXRoaW4gdGhlIGB0Y3BfZWF0X3NrYmAgZnVuY3Rpb24sIHNwZWNpZmljYWxseSBob3cgdGhlIGB0Y3AtXHUwMDNlY29waWVkX3NlcWAgYW5kIGBfX3RjcF9jbGVhbnVwX3JidWZgIGFyZSBiZWluZyBoYW5kbGVkLlxuXG5UaGUgb2xkIHdheSwgYGNvcGllZCA9IHRjcC1cdTAwM2Vjb3BpZWRfc2VxICsgc2tiLVx1MDAzZWxlbmAsIGlzIGJlaW5nIHJlcGxhY2VkIHdpdGggYSBjYWxjdWxhdGlvbiBpbnZvbHZpbmcgYGVuZF9zZXFgLCBjYWxjdWxhdGluZyBhIGBkZWx0YWAsIGFuZCB0aGVuIHVzaW5nIGBXUklURV9PTkNFYCB0byB1cGRhdGUgYHRjcC1cdTAwM2Vjb3BpZWRfc2VxYCwgYW5kIGZpbmFsbHkgY2FsbGluZyBgX190Y3BfY2xlYW51cF9yYnVmYCB3aXRoIHRoZSBgZGVsdGFgLiBDbGVhcmx5LCB0aGlzIGlzIG1vcmUgbnVhbmNlZCwgYnV0IHdoYXQgaXMgdGhlIHJlYXNvbmluZz8gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2h5IHRoZXkncmUgaW50cm9kdWNpbmcgYGVuZF9zZXFgIGFuZCBjYWxjdWxhdGluZyBhIGRlbHRhIHRoaXMgd2F5LiBJIHdvbmRlciBpZiB0aGlzIGhhcyBzb21ldGhpbmcgdG8gZG8gd2l0aCBtb3JlIGFkdmFuY2VkIHNvY2tldCBtYXAgdXNlIGNhc2VzLlxuXG5NeSBpbW1lZGlhdGUgbmV4dCBzdGVwIGlzIHRvIGZpbmQgb3V0IHRoZSBuZWNlc3NhcnkgY29uZmlndXJhdGlvbnMgZm9yIGB0Y3BfYnBmLmNgIGJlY2F1c2UgdGhpcyBwYXRjaCBsb29rcyBwcmV0dHkgbG93LWxldmVsLiBJJ2xsIG5lZWQgdG8gbWFrZSBzdXJlIEkgdW5kZXJzdGFuZCB0aGUgZGVwZW5kZW5jaWVzIGJlZm9yZSBJIGRpdmUgZnVydGhlciBpbnRvIHRoZSBmdW5jdGlvbmFsIGRldGFpbHMgb2YgdGhlIGNoYW5nZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MzM2NiwiT3V0cHV0VG9rZW5zIjozMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE5MSwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAyVDE2OjM2OjI5LjE5MTgxNzY3MloiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozODQ3NzM3MDYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwidGNwX2JwZlxcXFwub1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvaXB2NC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L2lwdjQvTWFrZWZpbGU9NjI9b2JqLSQoQ09ORklHX1RDUF9DT05HX0lMTElOT0lTKSArPSB0Y3BfaWxsaW5vaXMub1xcbm5ldC9pcHY0L01ha2VmaWxlOjYzOm9iai0kKENPTkZJR19ORVRfU09DS19NU0cpICs9IHRjcF9icGYub1xcbm5ldC9pcHY0L01ha2VmaWxlLTY0LW9iai0kKENPTkZJR19CUEZfU1lTQ0FMTCkgKz0gdWRwX2JwZi5vXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAyVDE2OjM2OjI5LjU3NjU5Nzg5OFoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI5MjM1MDE4MzEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0J3MgaW50ZXJuYWwgbW9ub2xvZ3VlOlxuXG4qKkludmVzdGlnYXRpbmcgYENPTkZJR19ORVRfU09DS19NU0dgIERlcGVuZGVuY3kqKlxuXG5SaWdodCwgc28gYENPTkZJR19ORVRfU09DS19NU0dgIGlzIGZsYWdnZWQgYXMgYmVpbmcgYSByZXF1aXJlZCBjb25maWd1cmF0aW9uIG9wdGlvbiwgd2hpY2ggaXMgYW4gaW50ZXJlc3Rpbmcgc3RhcnRpbmcgcG9pbnQuIE15IGluaXRpYWwgdGhvdWdodCBwcm9jZXNzIGlzIHRvIHVuZGVyc3RhbmQgaXRzIG9yaWdpbi4gSXMgdGhpcyBzb21ldGhpbmcgdGhlIHVzZXIgZXhwbGljaXRseSBjb25maWd1cmVzLCBvciBpcyBpdCBwdWxsZWQgaW4gYXMgYSBkZXBlbmRlbmN5IGJ5IGFub3RoZXIsIG1vcmUgZnVuZGFtZW50YWwgc2V0dGluZz8gVW5kZXJzdGFuZGluZyBpdHMgc2VsZWN0aW9uIG1lY2hhbmlzbSBpcyBjcml0aWNhbCBmb3IgcHJvcGVyIGNvbmZpZ3VyYXRpb24gYW5kIHRyb3VibGVzaG9vdGluZyBmdXJ0aGVyIGRvd24gdGhlIGxpbmUuIEkgbmVlZCB0byBkZXRlcm1pbmUgaWYgaXQncyB1c2VyLWRyaXZlbiwgb3IgaWYgaXQgaXMgYSBieXByb2R1Y3Qgb2YgYW5vdGhlciBzZXR0aW5nLlxuXG5cbiIsIklucHV0VG9rZW5zIjozOTcxLCJPdXRwdXRUb2tlbnMiOjI4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDJUMTY6MzY6MzIuNTAwMTAxNjY5WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjMwNzgxNDM5OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgTkVUX1NPQ0tfTVNHXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L0tjb25maWc9NDc1PWNvbmZpZyBORVRfU0VMRlRFU1RTXFxuLS1cXG5uZXQvS2NvbmZpZy00NzgtXFxubmV0L0tjb25maWc6NDc5OmNvbmZpZyBORVRfU09DS19NU0dcXG5uZXQvS2NvbmZpZy00ODAtXFx0Ym9vbFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wMlQxNjozNjozMi44MDc5MjE3NDhaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMDA4NTYyNTc4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIGFzc3VtaW5nIEknbSBhbiBleHBlcnQgaW4gdGhpcyBmaWVsZDpcblxuKipEZWJ1Z2dpbmcgYSBCb29sZWFuOiBUcmFjaW5nIHRoZSBTb3VyY2UqKlxuXG5BbHJpZ2h0LCBhIGJvb2xlYW4ncyBiZWVuIGZsaXBwZWQsIGJ1dCB0aGVyZSdzIG5vIGRpcmVjdCBwcm9tcHQgb3IgZXhwbGljaXQgc2V0dGluZyBhZmZlY3RpbmcgaXQuIFRoYXQgaW1tZWRpYXRlbHkgdGVsbHMgbWUgdGhpcyB2YWx1ZSBpcyBiZWluZyBkcml2ZW4gYnkgc29tZXRoaW5nIGVsc2UsIHNvbWUgZXh0ZXJuYWwgY29uZGl0aW9uIG9yIGxvZ2ljIGZsb3cuIE15IG5leHQgc3RlcCBpcyBjbGVhcjogSSBuZWVkIHRvIGlkZW50aWZ5IHRoZSAqc291cmNlKiBvZiB0aGlzIHNlbGVjdGlvbi4gSSBoYXZlIHRvIHRyYWNlIGJhY2sgdGhyb3VnaCB0aGUgY29kZSwgb3IgZXhhbWluZSB0aGUgZGF0YSBmbG93LCB0byBmaWd1cmUgb3V0IHdoYXQncyBpbmZsdWVuY2luZyB0aGlzIHBhcnRpY3VsYXIgYm9vbGVhbi4gV2hhdCBwcm9jZXNzLCB3aGF0IGZ1bmN0aW9uLCB3aGF0IG90aGVyIHZhcmlhYmxlIGlzIG1ha2luZyB0aGUgY2FsbD8gVGhpcyBpc24ndCBhIHNpbXBsZSBjYXNlIG9mIGEgZGlyZWN0IGFzc2lnbm1lbnQ7IGl0J3MgYSBjb25kaXRpb25hbCBjaGFuZ2UsIGFuZCBmaW5kaW5nIHRoYXQgY29uZGl0aW9uIGlzIGtleS4gVGhpcyBpcyBhIGNsYXNzaWMgZGVidWdnaW5nIHNjZW5hcmlvLiBMZXQncyBkaWcgaW4uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQyNDgsIk91dHB1dFRva2VucyI6MjYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wMlQxNjozNjozNS44MTY0ODY3MjZaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzQ4NDU0OTQ0MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJzZWxlY3QgTkVUX1NPQ0tfTVNHXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIlwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJrZXJuZWwvYnBmL0tjb25maWc9Mjc9Y29uZmlnIEJQRl9TWVNDQUxMXFxuLS1cXG5rZXJuZWwvYnBmL0tjb25maWctMzMtXFx0c2VsZWN0IEJJTkFSWV9QUklOVEZcXG5rZXJuZWwvYnBmL0tjb25maWc6MzQ6XFx0c2VsZWN0IE5FVF9TT0NLX01TRyBpZiBORVRcXG5rZXJuZWwvYnBmL0tjb25maWctMzUtXFx0c2VsZWN0IE5FVF9YR1JFU1MgaWYgTkVUXFxuLS1cXG5uZXQvS2NvbmZpZz0zNjE9Y29uZmlnIEJQRl9TVFJFQU1fUEFSU0VSXFxuLS1cXG5uZXQvS2NvbmZpZy0zNjYtXFx0c2VsZWN0IFNUUkVBTV9QQVJTRVJcXG5uZXQvS2NvbmZpZzozNjc6XFx0c2VsZWN0IE5FVF9TT0NLX01TR1xcbm5ldC9LY29uZmlnLTM2OC1cXHRoZWxwXFxuLS1cXG5uZXQvaXB2NC9LY29uZmlnPTM4Mj1jb25maWcgSU5FVF9FU1BJTlRDUFxcbi0tXFxubmV0L2lwdjQvS2NvbmZpZy0zODUtXFx0c2VsZWN0IFNUUkVBTV9QQVJTRVJcXG5uZXQvaXB2NC9LY29uZmlnOjM4NjpcXHRzZWxlY3QgTkVUX1NPQ0tfTVNHXFxubmV0L2lwdjQvS2NvbmZpZy0zODctXFx0c2VsZWN0IFhGUk1fRVNQSU5UQ1BcXG4tLVxcbm5ldC9pcHY2L0tjb25maWc9OTA9Y29uZmlnIElORVQ2X0VTUElOVENQXFxuLS1cXG5uZXQvaXB2Ni9LY29uZmlnLTkzLVxcdHNlbGVjdCBTVFJFQU1fUEFSU0VSXFxubmV0L2lwdjYvS2NvbmZpZzo5NDpcXHRzZWxlY3QgTkVUX1NPQ0tfTVNHXFxubmV0L2lwdjYvS2NvbmZpZy05NS1cXHRzZWxlY3QgWEZSTV9FU1BJTlRDUFxcbi0tXFxubmV0L3Rscy9LY29uZmlnPTU9Y29uZmlnIFRMU1xcbi0tXFxubmV0L3Rscy9LY29uZmlnLTEwLVxcdHNlbGVjdCBDUllQVE9fR0NNXFxubmV0L3Rscy9LY29uZmlnOjExOlxcdHNlbGVjdCBORVRfU09DS19NU0dcXG5uZXQvdGxzL0tjb25maWctMTItXFx0ZGVmYXVsdCBuXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAyVDE2OjM2OjM5LjMwMTA0MTM2NloiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjgwNzUwODE0MTksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIEJQRiBhbmQgU29ja2V0IEZpbHRlcmluZyBmb3IgRW5oYW5jZWQgTmV0d29yayBQZXJmb3JtYW5jZSoqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gRnJvbSB3aGF0IEknbSBzZWVpbmcsIGBCUEZfU1lTQ0FMTGAgaXMgdGhlIGNydWNpYWwgZWxlbWVudCBoZXJlLCBwYXJ0aWN1bGFybHkgd2hlbiBgTkVUYCBpcyBpbnZvbHZlZCwgYmVjYXVzZSB0aGF0J3Mgd2hhdCB0cmlnZ2VycyBgTkVUX1NPQ0tfTVNHYC4gVGhhdCBtYWtlcyBgQlBGX1NZU0NBTExgIHRoZSBwcmltYXJ5IGZvY3VzLCB0aGUgY29yZS4gVGhlbiB3ZSBoYXZlIHJlbGF0ZWQgZmVhdHVyZXMgbGlrZSBgVExTYCwgYElORVRfRVNQSU5UQ1BgLCBgSU5FVDZfRVNQSU5UQ1BgLCBhbmQgYEJQRl9TVFJFQU1fUEFSU0VSYCwgYnV0IGBCUEZfU1lTQ0FMTGAgc2VlbXMgdG8gYmUgdGhlIG9uZSBwdWxsaW5nIHRoZSBtb3N0IHdlaWdodCwgYmVjYXVzZSB0aGUgc29ja21hcCBjb250ZXh0IG1lYW5zIGl0IHdpbGwgYmUgdGhlIGRyaXZlci4gU28sIG15IGluc3RpbmN0IGlzIHRvIGxlYW4gaGVhdmlseSBvbiBgQlBGX1NZU0NBTExgIGFzIHRoZSBrZXkgdG8gdW5kZXJzdGFuZGluZyB0aGlzLlxuXG5HaXZlbiB0aGlzIEJQRiBzb2NrbWFwIGNvbnRleHQsIEkgbmVlZCB0byBjaGVjayBvdXQgd2hhdCdzIGhhcHBlbmluZyB3aXRoIGB0Y3BfZWF0X3NrYmAgd2l0aGluIGBuZXQvaXB2NC90Y3BfYnBmLmNgLiBUaGF0IHNob3VsZCBwcm92aWRlIHRoZSBuZWNlc3NhcnkgZGV0YWlsLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0ODY3LCJPdXRwdXRUb2tlbnMiOjM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTEzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAyVDE2OjM2OjQ3LjM3NjEyNTY1NVoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzQzNTYyMTg3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInRjcF9lYXRfc2tiXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9pcHY0L3RjcF9icGYuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvaXB2NC90Y3BfYnBmLmMtMTQtXFxubmV0L2lwdjQvdGNwX2JwZi5jOjE1OnZvaWQgdGNwX2VhdF9za2Ioc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbm5ldC9pcHY0L3RjcF9icGYuYy0xNi17XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAyVDE2OjM2OjQ3LjcxOTY5NDM2MloiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMzE5MTcyMjc3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgc3VtbWFyeSwgdGFpbG9yZWQgYXMgaWYgSSdtIGFuIGV4cGVydCBpbiB0aGUgZmllbGQgdGhpbmtpbmcgdGhyb3VnaCB0aGlzOlxuXG4qKkludmVzdGlnYXRpbmcgdGhlIFNjb3BlIG9mIGB0Y3BfZWF0X3NrYmAqKlxuXG5BbHJpZ2h0LCBsZXQncyBzZWUuLi4gdGhlIHF1ZXN0aW9uIGlzIHdoZXRoZXIgYHRjcF9lYXRfc2tiYCBpcyBhIGZ1bmN0aW9uIHRoYXQncyBleHBvc2VkIGZvciB1c2Ugb3V0c2lkZSBvZiBpdHMgaW1tZWRpYXRlLCBwcmVzdW1hYmx5IFRDUC1zdGFjay1zcGVjaWZpYywgY29udGV4dC4gSXMgaXQgKmV4cG9ydGVkKiBpbiBzb21lIHdheT8gT3IgaXMgaXQgdXNlZCBiZXlvbmQgdGhlIG1vZHVsZXMgb3IgZmlsZXMgd2hlcmUgaXQncyBjdXJyZW50bHkgZGVmaW5lZD8gVGhhdCdzIHdoYXQgSSBuZWVkIHRvIGZpZ3VyZSBvdXQuIFVuZGVyc3RhbmRpbmcgaXRzIHNjb3BlIGlzIGNydWNpYWwuIElmIGl0J3MgaW50ZXJuYWwgdG8gYSBwYXJ0aWN1bGFyIG1vZHVsZSwgdGhlbiBhbnkgcmVmYWN0b3Jpbmcgb3IgY2hhbmdlcyB3aXRoaW4gdGhhdCBtb2R1bGUgc2hvdWxkbid0IGhhdmUgd2lkZXNwcmVhZCByZXBlcmN1c3Npb25zLiBCdXQgaWYgb3RoZXIgcGFydHMgb2YgdGhlIHN5c3RlbSBhcmUgcmVseWluZyBvbiBpdCwgdGhlbiBhIG1vcmUgY2FyZWZ1bCBhcHByb2FjaCBpcyByZXF1aXJlZC4gSSBuZWVkIHRvIGtub3cgd2hlcmUgaXQncyBiZWluZyAqY2FsbGVkKiBmcm9tLCBhbmQgaWYgdGhvc2UgY2FsbCBzaXRlcyBhcmUgd2l0aGluIHRoZSBpbnRlbmRlZCBib3VuZGFyaWVzLiBUaW1lIHRvIGRlbHZlIGludG8gdGhlIGNvZGUgYW5kIGRldGVybWluZSB0aGUgdHJ1ZSB2aXNpYmlsaXR5IGFuZCB1c2FnZSBwYXR0ZXJucyBvZiBgdGNwX2VhdF9za2JgLiBUaGlzIGlzIGFsbCBhYm91dCBhc3Nlc3NpbmcgdGhlIHBvdGVudGlhbCBpbXBhY3Qgb2YgYW55IGNoYW5nZXMgcmVsYXRlZCB0byB0aGlzIGZ1bmN0aW9uLiBJJ2xsIHN0YXJ0IHdpdGggYSBxdWljayBzZWFyY2ggb2YgdGhlIGNvZGViYXNlIHRvIHNlZSB3aGVyZSBpdCdzIGJlaW5nIHVzZWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjUzMTcsIk91dHB1dFRva2VucyI6MjYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wMlQxNjozNjo1MS4wMzg4NjkwOTlaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIyODk3MDc5NzQsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwidGNwX2VhdF9za2JcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImluY2x1ZGUvbmV0L3RjcC5oPTI4NDM9aW50IHRjcF9icGZfc3RycF9yZWFkX3NvY2soc3RydWN0IHN0cnBhcnNlciAqc3RycCwgcmVhZF9kZXNjcmlwdG9yX3QgKmRlc2MsXFxuLS1cXG5pbmNsdWRlL25ldC90Y3AuaC0yODQ4LSNpZmRlZiBDT05GSUdfSU5FVFxcbmluY2x1ZGUvbmV0L3RjcC5oOjI4NDk6dm9pZCB0Y3BfZWF0X3NrYihzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBza19idWZmICpza2IpO1xcbmluY2x1ZGUvbmV0L3RjcC5oLTI4NTAtI2Vsc2VcXG5pbmNsdWRlL25ldC90Y3AuaDoyODUxOnN0YXRpYyBpbmxpbmUgdm9pZCB0Y3BfZWF0X3NrYihzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBza19idWZmICpza2IpXFxuaW5jbHVkZS9uZXQvdGNwLmgtMjg1Mi17XFxuLS1cXG5uZXQvY29yZS9za21zZy5jPTk5Nj1zdGF0aWMgaW50IHNrX3Bzb2NrX3ZlcmRpY3RfYXBwbHkoc3RydWN0IHNrX3Bzb2NrICpwc29jaywgc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4tLVxcbm5ldC9jb3JlL3NrbXNnLmMtMTA0Mi1cXHRjYXNlIF9fU0tfUkVESVJFQ1Q6XFxubmV0L2NvcmUvc2ttc2cuYzoxMDQzOlxcdFxcdHRjcF9lYXRfc2tiKHBzb2NrLVxcdTAwM2Vzaywgc2tiKTtcXG5uZXQvY29yZS9za21zZy5jLTEwNDQtXFx0XFx0ZXJyID0gc2tfcHNvY2tfc2tiX3JlZGlyZWN0KHBzb2NrLCBza2IpO1xcbi0tXFxubmV0L2NvcmUvc2ttc2cuYy0xMDQ5LVxcdFxcdHNrYl9icGZfcmVkaXJlY3RfY2xlYXIoc2tiKTtcXG5uZXQvY29yZS9za21zZy5jOjEwNTA6XFx0XFx0dGNwX2VhdF9za2IocHNvY2stXFx1MDAzZXNrLCBza2IpO1xcbm5ldC9jb3JlL3NrbXNnLmMtMTA1MS1cXHRcXHRzb2NrX2Ryb3AocHNvY2stXFx1MDAzZXNrLCBza2IpO1xcbi0tXFxubmV0L2NvcmUvc2ttc2cuYz0xMTk4PXN0YXRpYyBpbnQgc2tfcHNvY2tfdmVyZGljdF9yZWN2KHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG4tLVxcbm5ldC9jb3JlL3NrbXNnLmMtMTIwOC1cXHRcXHRsZW4gPSAwO1xcbm5ldC9jb3JlL3NrbXNnLmM6MTIwOTpcXHRcXHR0Y3BfZWF0X3NrYihzaywgc2tiKTtcXG5uZXQvY29yZS9za21zZy5jLTEyMTAtXFx0XFx0c29ja19kcm9wKHNrLCBza2IpO1xcbi0tXFxubmV0L2lwdjQvdGNwX2JwZi5jLTE0LVxcbm5ldC9pcHY0L3RjcF9icGYuYzoxNTp2b2lkIHRjcF9lYXRfc2tiKHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG5uZXQvaXB2NC90Y3BfYnBmLmMtMTYte1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wMlQxNjozNjo1My4zMjg1ODI0MTNaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDY3OTAyMDYxNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFNjb3BlIG9mIHRoaXMgTmV0d29ya2luZyBQYXRjaCoqXG5cbk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgdG91Y2hpbmcgYG5ldC9jb3JlL3NrbXNnLmNgLCB3aGljaCBtZWFucyBpdCdzIHByZXR0eSBsb3ctbGV2ZWwgY29yZSBuZXR3b3JraW5nIHN0dWZmLiBGdW5jdGlvbmFsbHksIGl0J3MgbW9kaWZ5aW5nIGNvcmUgbmV0d29ya2luZyBhbmQgQlBGIGxvZ2ljLiBNeSBpbml0aWFsIGZvY3VzIGhhcyB0byBiZSBvbiB0aG9zZSBrZXkgc3ltYm9scyBtZW50aW9uZWQ6IGB0Y3BfZWF0X3NrYmAsIGBza19wc29ja192ZXJkaWN0X2FwcGx5YCwgYW5kIGBza19wc29ja192ZXJkaWN0X3JlY3ZgLiBUaG9zZSBhcmUgdGhlIGVudHJ5IHBvaW50cy5cblxuTm93LCBsZXQncyBnZXQgaW50byB0aGUgY29uZmlndXJhdGlvbiBhc3BlY3QuIEl0IHJlbGllcyBvbiBgQlBGX1NZU0NBTExgIGFuZCBgTkVUX1NPQ0tfTVNHYC4gV2hpbGUgYE5FVF9TT0NLX01TR2AgaXNuJ3QgYSB1c2VyLXNlbGVjdGFibGUgY29uZmlnLCBgQlBGX1NZU0NBTExgIGlzLCB3aGljaCBpcyBpbXBvcnRhbnQgZm9yIHVuZGVyc3RhbmRpbmcgdGhlIGRlcGVuZGVuY2llcyBhbmQgcG90ZW50aWFsIGJ1aWxkIG9wdGlvbnMgaGVyZS5cblxuVGhlIG9idmlvdXMgcXVlc3Rpb24gaXMgd2hldGhlciBgQlBGX1NZU0NBTExgIGlzIHN1ZmZpY2llbnQgZm9yIGVuYWJsaW5nIHRoaXMgZnVuY3Rpb25hbGl0eS4gSG1tLCBsZXQgbWUgY29uZmlybS4uLiBZZXMsIGBCUEZfU1lTQ0FMTGAgZG9lcyBzZWxlY3QgYE5FVF9TT0NLX01TR2AgaWYgdGhlIGBORVRgIG9wdGlvbiBpcyBhY3RpdmUuIFRoYXQncyBnb29kIHRvIGtub3csIHNpbXBsaWZpZXMgdGhpbmdzIHNvbWV3aGF0LlxuXG5OZXh0LCBJIG5lZWQgdG8gbG9vayBmb3IgYW55IG90aGVyIGNvbmZpZyBvcHRpb25zIHRoYXQgbWF5IGludGVyYWN0LiBUaGUgdGVzdCBtZW50aW9ucyAnc3RycCwnIGFuZCB0aGF0IGltbWVkaWF0ZWx5IG1ha2VzIG1lIHRoaW5rIG9mIGBCUEZfU1RSRUFNX1BBUlNFUmAuIEknbGwgd2FudCB0byBkaWcgaW50byB0aGF0IHJlbGF0aW9uc2hpcCBhbmQgaG93IHRoaXMgcGF0Y2ggaW50ZXJhY3RzIHdpdGggc3RyZWFtIHBhcnNpbmcgdG8gYmUgc3VyZSBJIHVuZGVyc3RhbmQgdGhlIGZ1bGwgY29uZmlndXJhdGlvbiBpbXBhY3QuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjYxOTksIk91dHB1dFRva2VucyI6MjgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNzYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDJUMTY6MzY6NTguMDA3NjA1OTE5WiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNzAzNDUxMzY5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBCUEZfU1RSRUFNX1BBUlNFUlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L0tjb25maWc9MzU0PWNvbmZpZyBCUUxcXG4tLVxcbm5ldC9LY29uZmlnLTM2MC1cXG5uZXQvS2NvbmZpZzozNjE6Y29uZmlnIEJQRl9TVFJFQU1fUEFSU0VSXFxubmV0L0tjb25maWctMzYyLVxcdGJvb2wgXFxcImVuYWJsZSBCUEYgU1RSRUFNX1BBUlNFUlxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDJUMTY6Mzc6MDAuNzExMDYyMzU4WiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU1MjA3NDQwMzUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudCBvZiB0aGUgQlBGIFN0cmVhbSBQYXJzZXIgYW5kIFJlbGF0ZWQgRnVuY3Rpb25zKipcblxuT2theSwgc28gd2UncmUgbG9va2luZyBhdCBhIHVzZXItY29uZmlndXJhYmxlIGZlYXR1cmUsIGBCUEZfU1RSRUFNX1BBUlNFUmAuIE1ha2VzIHNlbnNlIHRvIGFkZCBib3RoIGBCUEZfU1lTQ0FMTGAgYW5kIGBCUEZfU1RSRUFNX1BBUlNFUmAgdG8gYEVuYWJsZUNvbmZpZ3NgIHRvIGtlZXAgdGhpbmdzIGNvbnNpc3RlbnQuIFdlIG5lZWQgdG8gbWFrZSBzdXJlIHRoZSBzdHJlYW0gcGFyc2VyIGNhbiBiZSBlbmFibGVkIGFsb25nc2lkZSB0aGUgc3lzY2FsbHMuXG5cbk5vdywgbGV0J3MgZGl2ZSBpbnRvIHRoZSBgdGNwX2VhdF9za2JgIGZ1bmN0aW9uLiBJIHJlbWVtYmVyIHRoaXMgb25lLiBJdCdzIHVzZWQgd2hlbiBhIHBhY2tldCBpcyBkcm9wcGVkIG9yIHJlZGlyZWN0ZWQgd2l0aGluIHRoZSBCUEYgc29ja21hcCBmcmFtZXdvcmssIHJpZ2h0PyBMb29rcyBsaWtlIHdlJ3ZlIGdvdCBhIGJ1ZyBmaXggaGVyZSwgd2hpY2ggaXMgZ29vZC4gVGhlIHBhdGNoIGlzIGFkZHJlc3NpbmcgYW4gaW5jcmVtZW50IGlzc3VlIHdpdGggYHRjcC1cdTAwM2Vjb3BpZWRfc2VxYC4gVGhlIHByZXZpb3VzIGxvZ2ljIHdhcyBjbGVhcmx5IGluY29ycmVjdCwgdXNpbmcgYHNrYi1cdTAwM2VsZW5gIHdoZW4gaXQgc2hvdWxkIGhhdmUgdXNlZCB0aGUgY29ycmVjdCBzZXF1ZW5jZSBudW1iZXIgYXJpdGhtZXRpYyBiYXNlZCBvbiB0aGUgYGVuZF9zZXFgLiBUaGlzIGlzIGEgY2xlYXIgaW1wcm92ZW1lbnQgYW5kIGRlZmluaXRlbHkgd2FycmFudHMgc29tZSBmdXp6aW5nLiBUaGUgdXBkYXRlZCBsb2dpYyBtYWtlcyBhIGxvdCBtb3JlIHNlbnNlLlxuXG5LZXkgc3ltYm9scyB0byBwYXkgYXR0ZW50aW9uIHRvIGFyZSBgdGNwX2VhdF9za2JgLCBgc2tfcHNvY2tfdmVyZGljdF9hcHBseWAsIGFuZCBgc2tfcHNvY2tfdmVyZGljdF9yZWN2YC5cblxuTGV0J3MgcXVpY2tseSBldmFsdWF0ZSBpZiBgdGNwX2VhdF9za2JgIGlzIGEgaG90IHBhdGguIFNpbmNlIGl0J3Mgb25seSBjYWxsZWQgb24gZHJvcHMgYW5kIHJlZGlyZWN0cyB3aXRoaW4gc29ja21hcCwgaXQncyBub3QgYSBnZW5lcmFsIHBlcmZvcm1hbmNlIGJvdHRsZW5lY2sgdW5sZXNzIHRoZXJlJ3MgYWN0aXZlIHNvY2ttYXAgdXNhZ2UuIEl0IHNlZW1zIHByZXR0eSB0YXJnZXRlZC4gTm93LCBsZXQncyBzcGVuZCBzb21lIHRpbWUgcmV2aWV3aW5nIGBza19wc29ja192ZXJkaWN0X2FwcGx5YCBhbmQgYHNrX3Bzb2NrX3ZlcmRpY3RfcmVjdmAsIGRpZ2dpbmcgaW50byB0aGUgY29udHJvbCBmbG93IGFuZCBwb3RlbnRpYWwgaXNzdWVzIHdpdGggdGhlIHN0cmVhbSBwYXJzZXIncyBpbnRlZ3JhdGlvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6Njc4NiwiT3V0cHV0VG9rZW5zIjozNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI3MiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wMlQxNjozNzowNi4yMzE4MDkzMzNaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE2Njk1MDI4MywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJza19wc29ja192ZXJkaWN0X2FwcGx5XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9jb3JlL3NrbXNnLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L2NvcmUvc2ttc2cuYz05NTg9c3RhdGljIGludCBza19wc29ja19za2JfcmVkaXJlY3Qoc3RydWN0IHNrX3Bzb2NrICpmcm9tLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbi0tXFxubmV0L2NvcmUvc2ttc2cuYy05OTUtXFxubmV0L2NvcmUvc2ttc2cuYzo5OTY6c3RhdGljIGludCBza19wc29ja192ZXJkaWN0X2FwcGx5KHN0cnVjdCBza19wc29jayAqcHNvY2ssIHN0cnVjdCBza19idWZmICpza2IsXFxubmV0L2NvcmUvc2ttc2cuYy05OTctXFx0XFx0XFx0XFx0ICBpbnQgdmVyZGljdClcXG4tLVxcbm5ldC9jb3JlL3NrbXNnLmM9MTA3NT1zdGF0aWMgdm9pZCBza19wc29ja19zdHJwX3JlYWQoc3RydWN0IHN0cnBhcnNlciAqc3RycCwgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG4tLVxcbm5ldC9jb3JlL3NrbXNnLmMtMTA5OC1cXHR9XFxubmV0L2NvcmUvc2ttc2cuYzoxMDk5OlxcdHNrX3Bzb2NrX3ZlcmRpY3RfYXBwbHkocHNvY2ssIHNrYiwgcmV0KTtcXG5uZXQvY29yZS9za21zZy5jLTExMDAtb3V0Olxcbi0tXFxubmV0L2NvcmUvc2ttc2cuYz0xMTk4PXN0YXRpYyBpbnQgc2tfcHNvY2tfdmVyZGljdF9yZWN2KHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG4tLVxcbm5ldC9jb3JlL3NrbXNnLmMtMTIyMS1cXHR9XFxubmV0L2NvcmUvc2ttc2cuYzoxMjIyOlxcdHJldCA9IHNrX3Bzb2NrX3ZlcmRpY3RfYXBwbHkocHNvY2ssIHNrYiwgcmV0KTtcXG5uZXQvY29yZS9za21zZy5jLTEyMjMtXFx0aWYgKHJldCBcXHUwMDNjIDApXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAyVDE2OjM3OjA2LjM5ODc2NDI5N1oiLCJTZXEiOjE3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1MTM1MzcyMTc5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgUGF0Y2gncyBGb2N1cyoqXG5cbk9rYXksIHRoZXNlIGxpc3RlZCBpdGVtcyBhcmUgZGVmaW5pdGVseSBzb2xpZCBpbmRpY2F0b3JzIG9mIHRoZSBwYXRjaCdzIGNlbnRyYWwgYXJlYSBvZiBjb25jZXJuLiBMZXQncyBicmVhayB0aGlzIGRvd24gc3lzdGVtYXRpY2FsbHkuXG5cbkl0IGxvb2tzIGxpa2UgdGhlIHBhdGNoIGlzIGZsYWdnZWQgYXMgYmVpbmcgXCJXb3J0aEZ1enppbmcsXCIgd2hpY2ggaW1tZWRpYXRlbHkgc3VnZ2VzdHMgYSBwb3RlbnRpYWwgZm9yIGVkZ2UgY2FzZXMgb3IgdW5leHBlY3RlZCBiZWhhdmlvcnMuIFRoZSBcIkZvY3VzU3ltYm9sc1wiIGFyZSBwYXJ0aWN1bGFybHkgdGVsbGluZy4gV2UndmUgZ290IFwidGNwX2VhdF9za2IsXCIgd2hpY2ggaXMgYSBmdW5kYW1lbnRhbCBmdW5jdGlvbiBpbiBUQ1AgaGFuZGxpbmcsIGRlYWxpbmcgZGlyZWN0bHkgd2l0aCBpbmNvbWluZyBkYXRhLCBhbmQgdGhlbiB3ZSBoYXZlIFwic2tfcHNvY2tfdmVyZGljdF9hcHBseVwiIGFuZCBcInNrX3Bzb2NrX3ZlcmRpY3RfcmVjdlwiIHJlbGF0ZWQgdG8gdmVyZGljdCBhcHBsaWNhdGlvbiBhbmQgcmVjZWlwdCB3aXRoaW4gdGhlIHNvY2ttYXAgZnJhbWV3b3JrLiBUaGF0J3MgYSBkaXJlY3QgY29ubmVjdGlvbiB0byBob3cgd2UgaGFuZGxlIHNvY2tldCB2ZXJkaWN0cyB1c2luZyBCUEYsIGluZGljYXRpbmcgYSBmb2N1c2VkIGVmZm9ydCBvbiB0aGUgY29yZSBpbnRlcmFjdGlvbiBiZXR3ZWVuIEJQRiBhbmQgbmV0d29yayBkYXRhLlxuXG5UaGUgXCJFbmFibGVDb25maWdzXCIgYXJlIGVxdWFsbHkgaWxsdW1pbmF0aW5nOiBcIkJQRl9TWVNDQUxMXCIgYW5kIFwiQlBGX1NUUkVBTV9QQVJTRVIuXCIgU28sIHdlIGFyZSBsaWtlbHkgZGVhbGluZyB3aXRoIEJQRiBpbnRlcmFjdGluZyB3aXRoIHN5c2NhbGxzIGFuZCBhIHN0cmVhbSBwYXJzZXIuXG5cblN5bnRoZXNpemluZyBhbGwgb2YgdGhpcywgdGhlIFwiUmVhc29uaW5nXCIgc3RhdGVtZW50IGNvbmZpcm1zIGl0OiB0aGlzIHBhdGNoIGlzIGZ1bmRhbWVudGFsbHkgYWx0ZXJpbmcgdGhlIGNvcmUgQlBGIHNvY2ttYXAgbG9naWMuIFNwZWNpZmljYWxseSwgaXQncyBtb2RpZnlpbmcgdGhlIHByb2Nlc3Mgd2l0aGluIGB0Y3BfZWF0X3NrYmAg4oCTICp2ZXJ5KiBpbXBvcnRhbnQg4oCTIGhvdyBUQ1AncyBgY29waWVkX3NlcWAgaXMgaGFuZGxlZCB3aGVuIHBhY2tldHMgYXJlIGRyb3BwZWQgb3IgcmVkaXJlY3RlZC4gVGhhdCBpcywgd2UncmUgdGFsa2luZyBhYm91dCBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRvIGhvdyB0aGUga2VybmVsICpwcm9jZXNzZXMgbmV0d29yayB0cmFmZmljKi4gVGhpcyBoYXMgaW1wbGljYXRpb25zIGZvciBwZXJmb3JtYW5jZSwgc2VjdXJpdHksIGFuZCBzdGFiaWxpdHkgaWYgaXQgaXNuJ3QgY29ycmVjdC4gSSBuZWVkIHRvIGRpZyBkZWVwZXIgaW50byB0aGUgc3BlY2lmaWMgbW9kaWZpY2F0aW9ucyB0byB1bmRlcnN0YW5kIHRoZSBwcmVjaXNlIGltcGFjdC5cblxuXG4iLCJJbnB1dFRva2VucyI6NzgxOSwiT3V0cHV0VG9rZW5zIjoxMjIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMjAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDJUMTY6Mzc6MTEuNTM0MTM4NzE1WiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTcxNzIyNDY0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJCUEZfU1lTQ0FMTFwiLFxuICAgIFwiQlBGX1NUUkVBTV9QQVJTRVJcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJ0Y3BfZWF0X3NrYlwiLFxuICAgIFwic2tfcHNvY2tfdmVyZGljdF9hcHBseVwiLFxuICAgIFwic2tfcHNvY2tfdmVyZGljdF9yZWN2XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgY29yZSBCUEYgc29ja21hcCBsb2dpYyBpbiB0Y3BfZWF0X3NrYiwgY2hhbmdpbmcgaG93IFRDUCBjb3BpZWRfc2VxIGlzIHVwZGF0ZWQgd2hlbiBwYWNrZXRzIGFyZSBkcm9wcGVkIG9yIHJlZGlyZWN0ZWQuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBuZXR3b3JrIHByb2Nlc3NpbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQlBGX1NZU0NBTExcIixcbiAgICBcIkJQRl9TVFJFQU1fUEFSU0VSXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwidGNwX2VhdF9za2JcIixcbiAgICBcInNrX3Bzb2NrX3ZlcmRpY3RfYXBwbHlcIixcbiAgICBcInNrX3Bzb2NrX3ZlcmRpY3RfcmVjdlwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIGNvcmUgQlBGIHNvY2ttYXAgbG9naWMgaW4gdGNwX2VhdF9za2IsIGNoYW5naW5nIGhvdyBUQ1AgY29waWVkX3NlcSBpcyB1cGRhdGVkIHdoZW4gcGFja2V0cyBhcmUgZHJvcHBlZCBvciByZWRpcmVjdGVkLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gbmV0d29yayBwcm9jZXNzaW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+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-workflowqgpsp[1] Phase: Succeeded StartedAt: 2026-07-02 16:38:02 +0000 UTC FinishedAt: 2026-07-02 16:38:02 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqgpsp[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-07-02 16:38:02 +0000 UTC FinishedAt: 2026-07-02 16:38:02 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqgpsp[2] Phase: Succeeded StartedAt: 2026-07-02 16:38:02 +0000 UTC FinishedAt: 2026-07-02 20:58:33 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqgpsp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d8e8b85a85fe21954d303db68034aac4639df88d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_STREAM_PARSER"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["tcp_eat_skb","sk_psock_verdict_apply","sk_psock_verdict_recv"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d8e8b85a85fe21954d303db68034aac4639df88d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_STREAM_PARSER"],"series_id":"4e234b9e-b54c-4e54-ab82-b8e9daa38275","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-07-02 16:38:03 +0000 UTC FinishedAt: 2026-07-02 20:58:33 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"d8e8b85a85fe21954d303db68034aac4639df88d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_STREAM_PARSER"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["tcp_eat_skb","sk_psock_verdict_apply","sk_psock_verdict_recv"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"d8e8b85a85fe21954d303db68034aac4639df88d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_STREAM_PARSER"],"series_id":"4e234b9e-b54c-4e54-ab82-b8e9daa38275","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowqgpsp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d8e8b85a85fe21954d303db68034aac4639df88d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_STREAM_PARSER"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["tcp_eat_skb","sk_psock_verdict_apply","sk_psock_verdict_recv"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d8e8b85a85fe21954d303db68034aac4639df88d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_STREAM_PARSER"],"series_id":"4e234b9e-b54c-4e54-ab82-b8e9daa38275","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-07-02 16:38:03 +0000 UTC FinishedAt: 2026-07-02 16:39:31 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqgpsp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d8e8b85a85fe21954d303db68034aac4639df88d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_STREAM_PARSER"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["tcp_eat_skb","sk_psock_verdict_apply","sk_psock_verdict_recv"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d8e8b85a85fe21954d303db68034aac4639df88d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_STREAM_PARSER"],"series_id":"4e234b9e-b54c-4e54-ab82-b8e9daa38275","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-07-02 16:38:03 +0000 UTC FinishedAt: 2026-07-02 16:39:17 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"d8e8b85a85fe21954d303db68034aac4639df88d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_STREAM_PARSER"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowqgpsp/series-workflowqgpsp-convert-artifact-3471170363/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowqgpsp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d8e8b85a85fe21954d303db68034aac4639df88d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_STREAM_PARSER"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["tcp_eat_skb","sk_psock_verdict_apply","sk_psock_verdict_recv"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d8e8b85a85fe21954d303db68034aac4639df88d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_STREAM_PARSER"],"series_id":"4e234b9e-b54c-4e54-ab82-b8e9daa38275","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-07-02 16:39:31 +0000 UTC FinishedAt: 2026-07-02 17:03:52 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqgpsp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d8e8b85a85fe21954d303db68034aac4639df88d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_STREAM_PARSER"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["tcp_eat_skb","sk_psock_verdict_apply","sk_psock_verdict_recv"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d8e8b85a85fe21954d303db68034aac4639df88d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_STREAM_PARSER"],"series_id":"4e234b9e-b54c-4e54-ab82-b8e9daa38275","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-07-02 16:39:31 +0000 UTC FinishedAt: 2026-07-02 17:03:52 +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:*6d828d1e-1b69-4d47-8bce-2bea048d53cb,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-workflowqgpsp/series-workflowqgpsp-convert-artifact-3471170363/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": "cadff6d9-9411-4164-8c8a-850237b34c52", "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-workflowqgpsp/series-workflowqgpsp-build-action-2663049593/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowqgpsp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d8e8b85a85fe21954d303db68034aac4639df88d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_STREAM_PARSER"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["tcp_eat_skb","sk_psock_verdict_apply","sk_psock_verdict_recv"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d8e8b85a85fe21954d303db68034aac4639df88d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_STREAM_PARSER"],"series_id":"4e234b9e-b54c-4e54-ab82-b8e9daa38275","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-07-02 16:39:31 +0000 UTC FinishedAt: 2026-07-02 17:03:42 +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:*6d828d1e-1b69-4d47-8bce-2bea048d53cb,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-workflowqgpsp/series-workflowqgpsp-convert-artifact-3471170363/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": "cadff6d9-9411-4164-8c8a-850237b34c52", "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-workflowqgpsp/series-workflowqgpsp-build-action-2663049593/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowqgpsp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d8e8b85a85fe21954d303db68034aac4639df88d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_STREAM_PARSER"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["tcp_eat_skb","sk_psock_verdict_apply","sk_psock_verdict_recv"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d8e8b85a85fe21954d303db68034aac4639df88d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_STREAM_PARSER"],"series_id":"4e234b9e-b54c-4e54-ab82-b8e9daa38275","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-07-02 17:03:52 +0000 UTC FinishedAt: 2026-07-02 17:03:52 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqgpsp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d8e8b85a85fe21954d303db68034aac4639df88d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_STREAM_PARSER"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["tcp_eat_skb","sk_psock_verdict_apply","sk_psock_verdict_recv"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d8e8b85a85fe21954d303db68034aac4639df88d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_STREAM_PARSER"],"series_id":"4e234b9e-b54c-4e54-ab82-b8e9daa38275","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-07-02 17:03:52 +0000 UTC FinishedAt: 2026-07-02 17:03:52 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqgpsp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d8e8b85a85fe21954d303db68034aac4639df88d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_STREAM_PARSER"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["tcp_eat_skb","sk_psock_verdict_apply","sk_psock_verdict_recv"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d8e8b85a85fe21954d303db68034aac4639df88d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_STREAM_PARSER"],"series_id":"4e234b9e-b54c-4e54-ab82-b8e9daa38275","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-07-02 17:03:52 +0000 UTC FinishedAt: 2026-07-02 17:04:02 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqgpsp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d8e8b85a85fe21954d303db68034aac4639df88d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_STREAM_PARSER"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["tcp_eat_skb","sk_psock_verdict_apply","sk_psock_verdict_recv"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d8e8b85a85fe21954d303db68034aac4639df88d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_STREAM_PARSER"],"series_id":"4e234b9e-b54c-4e54-ab82-b8e9daa38275","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-07-02 17:03:52 +0000 UTC FinishedAt: 2026-07-02 17:03:59 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"d8e8b85a85fe21954d303db68034aac4639df88d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_STREAM_PARSER"],"series_id":"4e234b9e-b54c-4e54-ab82-b8e9daa38275","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowqgpsp/series-workflowqgpsp-convert-artifact-3014759826/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowqgpsp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d8e8b85a85fe21954d303db68034aac4639df88d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_STREAM_PARSER"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["tcp_eat_skb","sk_psock_verdict_apply","sk_psock_verdict_recv"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d8e8b85a85fe21954d303db68034aac4639df88d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_STREAM_PARSER"],"series_id":"4e234b9e-b54c-4e54-ab82-b8e9daa38275","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-07-02 17:04:02 +0000 UTC FinishedAt: 2026-07-02 17:06:35 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqgpsp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d8e8b85a85fe21954d303db68034aac4639df88d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_STREAM_PARSER"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["tcp_eat_skb","sk_psock_verdict_apply","sk_psock_verdict_recv"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d8e8b85a85fe21954d303db68034aac4639df88d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_STREAM_PARSER"],"series_id":"4e234b9e-b54c-4e54-ab82-b8e9daa38275","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-07-02 17:04:02 +0000 UTC FinishedAt: 2026-07-02 17:06:25 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*cadff6d9-9411-4164-8c8a-850237b34c52,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-workflowqgpsp/series-workflowqgpsp-build-action-2663049593/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-workflowqgpsp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d8e8b85a85fe21954d303db68034aac4639df88d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_STREAM_PARSER"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["tcp_eat_skb","sk_psock_verdict_apply","sk_psock_verdict_recv"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d8e8b85a85fe21954d303db68034aac4639df88d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_STREAM_PARSER"],"series_id":"4e234b9e-b54c-4e54-ab82-b8e9daa38275","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-07-02 17:06:35 +0000 UTC FinishedAt: 2026-07-02 17:06:35 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqgpsp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d8e8b85a85fe21954d303db68034aac4639df88d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_STREAM_PARSER"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["tcp_eat_skb","sk_psock_verdict_apply","sk_psock_verdict_recv"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d8e8b85a85fe21954d303db68034aac4639df88d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_STREAM_PARSER"],"series_id":"4e234b9e-b54c-4e54-ab82-b8e9daa38275","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-07-02 17:06:35 +0000 UTC FinishedAt: 2026-07-02 17:06:35 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqgpsp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d8e8b85a85fe21954d303db68034aac4639df88d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_STREAM_PARSER"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["tcp_eat_skb","sk_psock_verdict_apply","sk_psock_verdict_recv"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d8e8b85a85fe21954d303db68034aac4639df88d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_STREAM_PARSER"],"series_id":"4e234b9e-b54c-4e54-ab82-b8e9daa38275","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-07-02 17:06:35 +0000 UTC FinishedAt: 2026-07-02 17:54:09 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqgpsp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d8e8b85a85fe21954d303db68034aac4639df88d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_STREAM_PARSER"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["tcp_eat_skb","sk_psock_verdict_apply","sk_psock_verdict_recv"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d8e8b85a85fe21954d303db68034aac4639df88d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_STREAM_PARSER"],"series_id":"4e234b9e-b54c-4e54-ab82-b8e9daa38275","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-07-02 17:06:35 +0000 UTC FinishedAt: 2026-07-02 17:54:09 +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:*6d828d1e-1b69-4d47-8bce-2bea048d53cb,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-workflowqgpsp/series-workflowqgpsp-convert-artifact-3014759826/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": "21b2b27f-65c2-4afb-af64-1eaf5d754161", "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-workflowqgpsp/series-workflowqgpsp-build-action-1191842342/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowqgpsp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d8e8b85a85fe21954d303db68034aac4639df88d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_STREAM_PARSER"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["tcp_eat_skb","sk_psock_verdict_apply","sk_psock_verdict_recv"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d8e8b85a85fe21954d303db68034aac4639df88d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_STREAM_PARSER"],"series_id":"4e234b9e-b54c-4e54-ab82-b8e9daa38275","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-07-02 17:06:35 +0000 UTC FinishedAt: 2026-07-02 17:53:36 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*true,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Patched,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*6d828d1e-1b69-4d47-8bce-2bea048d53cb,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-workflowqgpsp/series-workflowqgpsp-convert-artifact-3014759826/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": "21b2b27f-65c2-4afb-af64-1eaf5d754161", "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-workflowqgpsp/series-workflowqgpsp-build-action-1191842342/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowqgpsp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d8e8b85a85fe21954d303db68034aac4639df88d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_STREAM_PARSER"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["tcp_eat_skb","sk_psock_verdict_apply","sk_psock_verdict_recv"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d8e8b85a85fe21954d303db68034aac4639df88d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_STREAM_PARSER"],"series_id":"4e234b9e-b54c-4e54-ab82-b8e9daa38275","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-07-02 17:54:09 +0000 UTC FinishedAt: 2026-07-02 17:54:09 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqgpsp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d8e8b85a85fe21954d303db68034aac4639df88d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_STREAM_PARSER"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["tcp_eat_skb","sk_psock_verdict_apply","sk_psock_verdict_recv"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d8e8b85a85fe21954d303db68034aac4639df88d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_STREAM_PARSER"],"series_id":"4e234b9e-b54c-4e54-ab82-b8e9daa38275","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-07-02 17:54:09 +0000 UTC FinishedAt: 2026-07-02 17:54:09 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqgpsp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d8e8b85a85fe21954d303db68034aac4639df88d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_STREAM_PARSER"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["tcp_eat_skb","sk_psock_verdict_apply","sk_psock_verdict_recv"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d8e8b85a85fe21954d303db68034aac4639df88d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_STREAM_PARSER"],"series_id":"4e234b9e-b54c-4e54-ab82-b8e9daa38275","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-07-02 17:54:09 +0000 UTC FinishedAt: 2026-07-02 17:56:20 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqgpsp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d8e8b85a85fe21954d303db68034aac4639df88d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_STREAM_PARSER"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["tcp_eat_skb","sk_psock_verdict_apply","sk_psock_verdict_recv"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d8e8b85a85fe21954d303db68034aac4639df88d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_STREAM_PARSER"],"series_id":"4e234b9e-b54c-4e54-ab82-b8e9daa38275","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-07-02 17:54:09 +0000 UTC FinishedAt: 2026-07-02 17:56:10 +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:*21b2b27f-65c2-4afb-af64-1eaf5d754161,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-workflowqgpsp/series-workflowqgpsp-build-action-1191842342/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-workflowqgpsp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d8e8b85a85fe21954d303db68034aac4639df88d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_STREAM_PARSER"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["tcp_eat_skb","sk_psock_verdict_apply","sk_psock_verdict_recv"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d8e8b85a85fe21954d303db68034aac4639df88d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_STREAM_PARSER"],"series_id":"4e234b9e-b54c-4e54-ab82-b8e9daa38275","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-07-02 17:56:20 +0000 UTC FinishedAt: 2026-07-02 20:58:33 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqgpsp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d8e8b85a85fe21954d303db68034aac4639df88d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_STREAM_PARSER"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["tcp_eat_skb","sk_psock_verdict_apply","sk_psock_verdict_recv"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d8e8b85a85fe21954d303db68034aac4639df88d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_STREAM_PARSER"],"series_id":"4e234b9e-b54c-4e54-ab82-b8e9daa38275","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-07-02 17:56:20 +0000 UTC FinishedAt: 2026-07-02 20:58:33 +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_eat_skb","sk_psock_verdict_apply","sk_psock_verdict_recv"],"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:*cadff6d9-9411-4164-8c8a-850237b34c52,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*21b2b27f-65c2-4afb-af64-1eaf5d754161,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-workflowqgpsp/series-workflowqgpsp-build-action-2663049593/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-workflowqgpsp/series-workflowqgpsp-build-action-1191842342/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowqgpsp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d8e8b85a85fe21954d303db68034aac4639df88d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_STREAM_PARSER"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["tcp_eat_skb","sk_psock_verdict_apply","sk_psock_verdict_recv"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d8e8b85a85fe21954d303db68034aac4639df88d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_STREAM_PARSER"],"series_id":"4e234b9e-b54c-4e54-ab82-b8e9daa38275","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-07-02 17:56:20 +0000 UTC FinishedAt: 2026-07-02 17:56:58 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqgpsp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d8e8b85a85fe21954d303db68034aac4639df88d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_STREAM_PARSER"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["tcp_eat_skb","sk_psock_verdict_apply","sk_psock_verdict_recv"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d8e8b85a85fe21954d303db68034aac4639df88d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_STREAM_PARSER"],"series_id":"4e234b9e-b54c-4e54-ab82-b8e9daa38275","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-07-02 17:56:20 +0000 UTC FinishedAt: 2026-07-02 17:56:51 +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_eat_skb","sk_psock_verdict_apply","sk_psock_verdict_recv"],"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-workflowqgpsp/series-workflowqgpsp-convert-artifact-893240807/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowqgpsp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d8e8b85a85fe21954d303db68034aac4639df88d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_STREAM_PARSER"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["tcp_eat_skb","sk_psock_verdict_apply","sk_psock_verdict_recv"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d8e8b85a85fe21954d303db68034aac4639df88d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_STREAM_PARSER"],"series_id":"4e234b9e-b54c-4e54-ab82-b8e9daa38275","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-07-02 17:56:20 +0000 UTC FinishedAt: 2026-07-02 17:56:20 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqgpsp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d8e8b85a85fe21954d303db68034aac4639df88d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_STREAM_PARSER"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["tcp_eat_skb","sk_psock_verdict_apply","sk_psock_verdict_recv"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d8e8b85a85fe21954d303db68034aac4639df88d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_STREAM_PARSER"],"series_id":"4e234b9e-b54c-4e54-ab82-b8e9daa38275","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-07-02 17:56:20 +0000 UTC FinishedAt: 2026-07-02 17:56:20 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqgpsp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d8e8b85a85fe21954d303db68034aac4639df88d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_STREAM_PARSER"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["tcp_eat_skb","sk_psock_verdict_apply","sk_psock_verdict_recv"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d8e8b85a85fe21954d303db68034aac4639df88d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_STREAM_PARSER"],"series_id":"4e234b9e-b54c-4e54-ab82-b8e9daa38275","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-07-02 17:56:20 +0000 UTC FinishedAt: 2026-07-02 17:56:20 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqgpsp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d8e8b85a85fe21954d303db68034aac4639df88d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_STREAM_PARSER"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["tcp_eat_skb","sk_psock_verdict_apply","sk_psock_verdict_recv"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d8e8b85a85fe21954d303db68034aac4639df88d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_STREAM_PARSER"],"series_id":"4e234b9e-b54c-4e54-ab82-b8e9daa38275","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-07-02 17:56:58 +0000 UTC FinishedAt: 2026-07-02 20:58:33 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqgpsp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d8e8b85a85fe21954d303db68034aac4639df88d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_STREAM_PARSER"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["tcp_eat_skb","sk_psock_verdict_apply","sk_psock_verdict_recv"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d8e8b85a85fe21954d303db68034aac4639df88d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_STREAM_PARSER"],"series_id":"4e234b9e-b54c-4e54-ab82-b8e9daa38275","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-07-02 17:56:58 +0000 UTC FinishedAt: 2026-07-02 20:58:23 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*cadff6d9-9411-4164-8c8a-850237b34c52,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*21b2b27f-65c2-4afb-af64-1eaf5d754161,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-workflowqgpsp/series-workflowqgpsp-build-action-2663049593/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-workflowqgpsp/series-workflowqgpsp-build-action-1191842342/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-workflowqgpsp/series-workflowqgpsp-convert-artifact-893240807/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,}