Name: series-workflowncz59 Phase: Succeeded StartedAt: 2026-07-13 01:26:01 +0000 UTC FinishedAt: 2026-07-13 06:25:27 +0000 UTC Input: nil Output: nil --------- Name: series-workflowncz59[0] Phase: Succeeded StartedAt: 2026-07-13 01:26:01 +0000 UTC FinishedAt: 2026-07-13 02:05:31 +0000 UTC Input: nil Output: nil --------- Name: series-workflowncz59[0].run-triage Phase: Succeeded StartedAt: 2026-07-13 01:26:01 +0000 UTC FinishedAt: 2026-07-13 02:05:31 +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": "3f1f755366687d051174739fb99f7d560202f60b", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NFC" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "3f1f755366687d051174739fb99f7d560202f60b", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NFC" ], "series_id": "812f38be-a2de-4eb9-84f4-888f8f5832b2" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "llcp_raw_sock_bind" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEzIDAyOjA0PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05GQyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2xsY3BfcmF3X3NvY2tfYmluZCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIHBvdGVudGlhbCBtZW1vcnkgbGVhayBvciB1c2UtYWZ0ZXItZnJlZSBpbiB0aGUgYGxsY3BfcmF3X3NvY2tfYmluZGAgZnVuY3Rpb24gYnkgcHJvcGVybHkgcmVsZWFzaW5nIHRoZSBvbGQgYGxvY2FsYCByZWZlcmVuY2UgYmVmb3JlIGFzc2lnbmluZyBhIG5ldyBvbmUuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiByZWFjaGFibGUgY29yZSBuZXR3b3JraW5nIGNvZGUuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTMgMDI6MDQ8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCBjNGFiYjY4ZGQ1NGE5NWNmZGIwMGY5MTA3MzdhNDZmZDUwZmFkNmFiXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIE1vbiBKdWwgMTMgMDI6MDQ6NDkgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbmV0L25mYy9sbGNwX3NvY2suYyBiL25ldC9uZmMvbGxjcF9zb2NrLmNcbmluZGV4IGZlYWIyOWZjNjJmNDRiLi4wYzAwY2RhYWJiYzYxMSAxMDA2NDRcbi0tLSBhL25ldC9uZmMvbGxjcF9zb2NrLmNcbiYjNDM7JiM0MzsmIzQzOyBiL25ldC9uZmMvbGxjcF9zb2NrLmNcbkBAIC0xNTIsNiAmIzQzOzE1Miw3IEBAIHN0YXRpYyBpbnQgbGxjcF9yYXdfc29ja19iaW5kKHN0cnVjdCBzb2NrZXQgKnNvY2ssIHN0cnVjdCBzb2NrYWRkcl91bnNpemVkICphZGRyXG4gXHRzdHJ1Y3Qgc29jayAqc2sgPSBzb2NrLVx1MDAzZXNrO1xuIFx0c3RydWN0IG5mY19sbGNwX3NvY2sgKmxsY3Bfc29jayA9IG5mY19sbGNwX3NvY2soc2spO1xuIFx0c3RydWN0IG5mY19sbGNwX2xvY2FsICpsb2NhbDtcbiYjNDM7XHRzdHJ1Y3QgbmZjX2xsY3BfbG9jYWwgKm9sZF9sb2NhbDtcbiBcdHN0cnVjdCBuZmNfZGV2ICpkZXY7XG4gXHRzdHJ1Y3Qgc29ja2FkZHJfbmZjX2xsY3AgbGxjcF9hZGRyO1xuIFx0aW50IGxlbiwgcmV0ID0gMDtcbkBAIC0xODUsNiAmIzQzOzE4NiwxMSBAQCBzdGF0aWMgaW50IGxsY3BfcmF3X3NvY2tfYmluZChzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBzdHJ1Y3Qgc29ja2FkZHJfdW5zaXplZCAqYWRkclxuIFx0XHRnb3RvIHB1dF9kZXY7XG4gXHR9XG4gXG4mIzQzO1x0b2xkX2xvY2FsID0gbGxjcF9zb2NrLVx1MDAzZWxvY2FsO1xuJiM0MztcdGxsY3Bfc29jay1cdTAwM2Vsb2NhbCA9IE5VTEw7XG4mIzQzO1x0bGxjcF9zb2NrLVx1MDAzZWRldiA9IE5VTEw7XG4mIzQzO1x0bmZjX2xsY3BfbG9jYWxfcHV0KG9sZF9sb2NhbCk7XG4mIzQzO1xuIFx0bGxjcF9zb2NrLVx1MDAzZWRldiA9IGRldjtcbiBcdGxsY3Bfc29jay1cdTAwM2Vsb2NhbCA9IGxvY2FsO1xuIFx0bGxjcF9zb2NrLVx1MDAzZW5mY19wcm90b2NvbCA9IGxsY3BfYWRkci5uZmNfcHJvdG9jb2w7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTMgMDI6MDQ8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7TkZDJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7bGxjcF9yYXdfc29ja19iaW5kJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgcG90ZW50aWFsIG1lbW9yeSBsZWFrIG9yIHVzZS1hZnRlci1mcmVlIGluIHRoZSBgbGxjcF9yYXdfc29ja19iaW5kYCBmdW5jdGlvbiBieSBwcm9wZXJseSByZWxlYXNpbmcgdGhlIG9sZCBgbG9jYWxgIHJlZmVyZW5jZSBiZWZvcmUgYXNzaWduaW5nIGEgbmV3IG9uZS4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHJlYWNoYWJsZSBjb3JlIG5ldHdvcmtpbmcgY29kZS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLApldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXQKICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LAogICBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgYzRhYmI2OGRkNTRhOTVjZmRiMDBmOTEwNzM3YTQ2ZmQ1MGZhZDZhYgpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBNb24gSnVsIDEzIDAyOjA0OjQ5IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvbmV0L25mYy9sbGNwX3NvY2suYyBiL25ldC9uZmMvbGxjcF9zb2NrLmMKaW5kZXggZmVhYjI5ZmM2MmY0NGIuLjBjMDBjZGFhYmJjNjExIDEwMDY0NAotLS0gYS9uZXQvbmZjL2xsY3Bfc29jay5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC9uZmMvbGxjcF9zb2NrLmMKQEAgLTE1Miw2ICYjNDM7MTUyLDcgQEAgc3RhdGljIGludCBsbGNwX3Jhd19zb2NrX2JpbmQoc3RydWN0IHNvY2tldCAqc29jaywgc3RydWN0IHNvY2thZGRyX3Vuc2l6ZWQgKmFkZHIKIAlzdHJ1Y3Qgc29jayAqc2sgPSBzb2NrLSZndDtzazsKIAlzdHJ1Y3QgbmZjX2xsY3Bfc29jayAqbGxjcF9zb2NrID0gbmZjX2xsY3Bfc29jayhzayk7CiAJc3RydWN0IG5mY19sbGNwX2xvY2FsICpsb2NhbDsKJiM0MzsJc3RydWN0IG5mY19sbGNwX2xvY2FsICpvbGRfbG9jYWw7CiAJc3RydWN0IG5mY19kZXYgKmRldjsKIAlzdHJ1Y3Qgc29ja2FkZHJfbmZjX2xsY3AgbGxjcF9hZGRyOwogCWludCBsZW4sIHJldCA9IDA7CkBAIC0xODUsNiAmIzQzOzE4NiwxMSBAQCBzdGF0aWMgaW50IGxsY3BfcmF3X3NvY2tfYmluZChzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBzdHJ1Y3Qgc29ja2FkZHJfdW5zaXplZCAqYWRkcgogCQlnb3RvIHB1dF9kZXY7CiAJfQogCiYjNDM7CW9sZF9sb2NhbCA9IGxsY3Bfc29jay0mZ3Q7bG9jYWw7CiYjNDM7CWxsY3Bfc29jay0mZ3Q7bG9jYWwgPSBOVUxMOwomIzQzOwlsbGNwX3NvY2stJmd0O2RldiA9IE5VTEw7CiYjNDM7CW5mY19sbGNwX2xvY2FsX3B1dChvbGRfbG9jYWwpOwomIzQzOwogCWxsY3Bfc29jay0mZ3Q7ZGV2ID0gZGV2OwogCWxsY3Bfc29jay0mZ3Q7bG9jYWwgPSBsb2NhbDsKIAlsbGNwX3NvY2stJmd0O25mY19wcm90b2NvbCA9IGxsY3BfYWRkci5uZmNfcHJvdG9jb2w7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEzIDAyOjA0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIwMTIKCQkJCQkJCW91dHB1dDogMzkKCQkJCQkJCXRob3VnaHRzOiAxOTEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgTkZDIExMQ1AgU29ja2V0IFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O3ZlIGdvdCB0aGlzIHBhdGNoIGhlcmUgdGhhdCYjMzk7cyB0b3VjaGluZyBgbmV0L25mYy9sbGNwX3NvY2suY2AuIFNlZW1zIGxpa2UgdGhlIGNoYW5nZSBpcyBpbiB0aGUgYGxsY3BfcmF3X3NvY2tfYmluZGAgZnVuY3Rpb24uIFJlYWRpbmcgdGhlIGNvZGUsIGl0IGxvb2tzIGxpa2UgdGhleSYjMzk7cmUgYWRkaW5nIGEgZmV3IGxpbmVzOgoKYGBgYwoJb2xkX2xvY2FsID0gbGxjcF9zb2NrLSZndDtsb2NhbDsKCWxsY3Bfc29jay0mZ3Q7bG9jYWwgPSBOVUxMOwoJbGxjcF9zb2NrLSZndDtkZXYgPSBOVUxMOwoJbmZjX2xsY3BfbG9jYWxfcHV0KG9sZF9sb2NhbCk7CmBgYAoKUmlnaHQsIHRoaXMgaXMgYSBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkIGZ1bmN0aW9uYWwgY2hhbmdlLiBJbW1lZGlhdGVseSwgSSBzZWUgdGhlIHB1cnBvc2U6IHRoZXkmIzM5O3JlIGNsZWFuaW5nIHVwIHRoZSBvbGQgYGxsY3Bfc29jay0mZ3Q7bG9jYWxgIGJlZm9yZSBhc3NpZ25pbmcgYSBuZXcgb25lLiBUaGlzIGlzIGdvb2Q7IGl0JiMzOTtzIHByZXZlbnRpbmcgYSBwb3RlbnRpYWwgbWVtb3J5IGxlYWsgb3IgYSB1c2UtYWZ0ZXItZnJlZSBzY2VuYXJpby4gVGhpcyBpcyBhIGNvbW1vbiBhbmQgb2Z0ZW4gb3Zlcmxvb2tlZCBpc3N1ZSwgZXNwZWNpYWxseSBpbiBuZXR3b3JraW5nIGNvZGUgd2l0aCBjb21wbGV4IG9iamVjdCBtYW5hZ2VtZW50LgoKTm93LCBsZXQmIzM5O3MganVzdCBtYWtlIHN1cmUgaXQmIzM5O3MgY29ycmVjdC4gSSB3YW50IHRvIHRha2UgYSBjbG9zZXIgbG9vayBhdCB0aGUgc3Vycm91bmRpbmcgY29kZSBpbiBgbGxjcF9yYXdfc29ja19iaW5kYCBpdHNlbGYgYW5kIHRoZSByZWxhdGVkIGZ1bmN0aW9ucy4gSSYjMzk7bGwgdXNlIGBncmVwcGVyYCB0byBxdWlja2x5IGxvY2F0ZSB0aGUgZnVuY3Rpb24gd2l0aGluIHRoZSBgbmV0L25mYy9sbGNwX3NvY2suY2AgZmlsZSBhbmQgdW5kZXJzdGFuZCB0aGUgY29udGV4dCBiZXR0ZXIuIEkgd2FudCB0byBtYWtlIHN1cmUgdGhpcyBjaGFuZ2UgZG9lc24mIzM5O3QgaW50cm9kdWNlIGFueSByZWdyZXNzaW9ucyBvciB1bmludGVuZGVkIGNvbnNlcXVlbmNlcyBpbiB0aGUgYmluZGluZyBwcm9jZXNzLiBJJiMzOTtsbCBuZWVkIHRvIGNoZWNrIGhvdyBgbGxjcF9zb2NrLSZndDtsb2NhbGAgYW5kIGBsbGNwX3NvY2stJmd0O2RldmAgYXJlIHVzZWQgYWZ0ZXIgdGhlIGBiaW5kYCB0byBlbnN1cmUgdGhlIGNsZWFuIHVwIGRvZXNuJiMzOTt0IGJyZWFrIGFueXRoaW5nLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEzIDAyOjA0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2xsY3BfcmF3X3NvY2tfYmluZCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9uZmMvbGxjcF9zb2NrLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L25mYy9sbGNwX3NvY2suYz01OT1zdGF0aWMgaW50IGxsY3Bfc29ja19iaW5kKHN0cnVjdCBzb2NrZXQgKnNvY2ssIHN0cnVjdCBzb2NrYWRkcl91bnNpemVkICphZGRyLCBpbnQgYWxlbilcbi0tXG5uZXQvbmZjL2xsY3Bfc29jay5jLTE0OC1cbm5ldC9uZmMvbGxjcF9zb2NrLmM6MTQ5OnN0YXRpYyBpbnQgbGxjcF9yYXdfc29ja19iaW5kKHN0cnVjdCBzb2NrZXQgKnNvY2ssIHN0cnVjdCBzb2NrYWRkcl91bnNpemVkICphZGRyLFxubmV0L25mYy9sbGNwX3NvY2suYy0xNTAtXHRcdFx0ICAgICAgaW50IGFsZW4pXG4tLVxubmV0L25mYy9sbGNwX3NvY2suYz05NDU9c3RhdGljIGNvbnN0IHN0cnVjdCBwcm90b19vcHMgbGxjcF9yYXdzb2NrX29wcyA9IHtcbi0tXG5uZXQvbmZjL2xsY3Bfc29jay5jLTk0Ny1cdC5vd25lciAgICAgICAgICA9IFRISVNfTU9EVUxFLFxubmV0L25mYy9sbGNwX3NvY2suYzo5NDg6XHQuYmluZCAgICAgICAgICAgPSBsbGNwX3Jhd19zb2NrX2JpbmQsXG5uZXQvbmZjL2xsY3Bfc29jay5jLTk0OS1cdC5jb25uZWN0ICAgICAgICA9IHNvY2tfbm9fY29ubmVjdCxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMyAwMjowNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyODQ0CgkJCQkJCQlvdXRwdXQ6IDMwCgkJCQkJCQl0aG91Z2h0czogNjEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBMTENQIFJhdyBTb2NrZXQgQmluZGluZyoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgYGxsY3BfcmF3X3NvY2tfYmluZGAgYW5kIGl0JiMzOTtzIHByZXR0eSBjbGVhciB0aGlzIGlzIHRoZSBgYmluZGAgZnVuY3Rpb24gZm9yIHRoZSBgbGxjcF9yYXdzb2NrX29wc2Agc3RydWN0dXJlLiBNYWtlcyBwZXJmZWN0IHNlbnNlLiBUaGlzIG1lYW5zLCBhcyBJIHN1c3BlY3RlZCwgdGhpcyBmdW5jdGlvbiBpcyB0aGUgZW50cnkgcG9pbnQgZm9yIGhhbmRsaW5nIHRoZSBgYmluZCgpYCBzeXN0ZW0gY2FsbCB3aGVuIGEgdXNlci1zcGFjZSBhcHBsaWNhdGlvbiBhdHRlbXB0cyB0byBiaW5kIGEgcmF3IE5GQyBMTENQIHNvY2tldC4gU2VlbXMgc3RyYWlnaHRmb3J3YXJkIHNvIGZhci4gTm93LCBqdXN0IHRvIGJlIGFic29sdXRlbHkgc3VyZSwgSSBzaG91bGQgZG91YmxlIGNoZWNrIHRoZSByZWxldmFudCBLY29uZmlnIG9wdGlvbnMgZm9yIE5GQyBMTENQIHN1cHBvcnQgdG8gY29uZmlybSB0aGF0IHRoaXMgcGF0aCBpcyBhY3R1YWxseSBlbmFibGVkIGFuZCByZWFjaGFibGUgaW4gdGhlIGtlcm5lbCYjMzk7cyBjb25maWd1cmF0aW9uLiBHb3R0YSBiZSBtZXRpY3Vsb3VzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEzIDAyOjA1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIE5GQ19MTENQJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L25mYy8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEzIDAyOjA1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMwOTMKCQkJCQkJCW91dHB1dDogMjcKCQkJCQkJCXRob3VnaHRzOiA5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkludmVzdGlnYXRpbmcgTkZDIENvbmZpZ3VyYXRpb24qKgoKQWxyaWdodCwgdGltZSB0byBnZXQgZG93biB0byBicmFzcyB0YWNrcy4gSSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGUgTkZDIHN1cHBvcnQgaXMgY29uZmlndXJlZCBjb3JyZWN0bHksIG9yIGF0IGxlYXN0IHVuZGVyc3RhbmQgd2hhdCBvcHRpb25zIGFyZSBhdmFpbGFibGUgYW5kIGhvdyB0aGV5JiMzOTtyZSBzZXQgdXAuIE15IGltbWVkaWF0ZSBpbnN0aW5jdCBpcyB0byBkaXZlIGludG8gdGhlIEtjb25maWcgZmlsZXMuIFRoaXMgaXMgd2hlcmUgdGhlIGNvcmUgY29uZmlndXJhdGlvbiBkZWNpc2lvbnMgYXJlIG1hZGUsIGFuZCBpdCYjMzk7cyB3aGVyZSBJJiMzOTtsbCBmaW5kIHRoZSBkZXBlbmRlbmNpZXMsIGRlZmF1bHRzLCBhbmQgcG90ZW50aWFsIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyByZWxhdGVkIHRvIE5GQy4gSSYjMzk7bGwgbmVlZCB0byByZW1lbWJlciB0aGUgdHlwaWNhbCBuYW1pbmcgY29udmVudGlvbnMgYW5kIGhvdyB0aGUgcHJvamVjdCBzdHJ1Y3R1cmVzIGl0cyBjb25maWcgZmlsZXMgc28gSSBjYW4gcXVpY2tseSBpZGVudGlmeSB0aGUgcmVsZXZhbnQgc2VjdGlvbi4gSSYjMzk7bGwgYmUgbG9va2luZyBmb3IgdGhpbmdzIGxpa2UgZGV2aWNlIGRyaXZlcnMsIHByb3RvY29sIHN1cHBvcnQsIGFuZCBhbnkgcGxhdGZvcm0tc3BlY2lmaWMgY29uZmlndXJhdGlvbnMgcmVsYXRlZCB0byBORkMgY29udHJvbGxlcnMgb3Igc2VjdXJlIGVsZW1lbnRzLiBLbm93aW5nIHRoaXMsIEkgY2FuIHN0YXJ0IHRvIHVuZGVyc3RhbmQgdGhlIGNvbXBsZXRlIHBpY3R1cmUgb2YgaG93IE5GQyBpcyBjb25maWd1cmVkIHdpdGhpbiB0aGUgZXhpc3Rpbmcgc3lzdGVtLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEzIDAyOjA1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBORkMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbmZjLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbmZjL0tjb25maWctNS1cbm5ldC9uZmMvS2NvbmZpZzo2Om1lbnVjb25maWcgTkZDXG5uZXQvbmZjL0tjb25maWctNy1cdGRlcGVuZHMgb24gUkZLSUxMIHx8ICFSRktJTExcbi0tXG5uZXQvbmZjL0tjb25maWctMTYtXG5uZXQvbmZjL0tjb25maWc6MTc6Y29uZmlnIE5GQ19ESUdJVEFMXG5uZXQvbmZjL0tjb25maWctMTgtXHRkZXBlbmRzIG9uIE5GQ1xuLS1cbm5ldC9uZmMvaGNpL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbm5ldC9uZmMvaGNpL0tjb25maWc6Mjpjb25maWcgTkZDX0hDSVxubmV0L25mYy9oY2kvS2NvbmZpZy0zLVx0ZGVwZW5kcyBvbiBORkNcbi0tXG5uZXQvbmZjL2hjaS9LY29uZmlnLTEwLVxubmV0L25mYy9oY2kvS2NvbmZpZzoxMTpjb25maWcgTkZDX1NIRExDXG5uZXQvbmZjL2hjaS9LY29uZmlnLTEyLVx0ZGVwZW5kcyBvbiBORkNfSENJXG4tLVxubmV0L25mYy9uY2kvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxubmV0L25mYy9uY2kvS2NvbmZpZzoyOmNvbmZpZyBORkNfTkNJXG5uZXQvbmZjL25jaS9LY29uZmlnLTMtXHRkZXBlbmRzIG9uIE5GQ1xuLS1cbm5ldC9uZmMvbmNpL0tjb25maWctMTItXG5uZXQvbmZjL25jaS9LY29uZmlnOjEzOmNvbmZpZyBORkNfTkNJX1NQSVxubmV0L25mYy9uY2kvS2NvbmZpZy0xNC1cdGRlcGVuZHMgb24gTkZDX05DSSBcdTAwMjZcdTAwMjYgU1BJXG4tLVxubmV0L25mYy9uY2kvS2NvbmZpZy0yMy1cbm5ldC9uZmMvbmNpL0tjb25maWc6MjQ6Y29uZmlnIE5GQ19OQ0lfVUFSVFxubmV0L25mYy9uY2kvS2NvbmZpZy0yNS1cdGRlcGVuZHMgb24gTkZDX05DSSBcdTAwMjZcdTAwMjYgVFRZXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTMgMDI6MDU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzczMAoJCQkJCQkJb3V0cHV0OiAzMQoJCQkJCQkJdGhvdWdodHM6IDMzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCBwcmVzZW50ZWQgYXMgYSBmaXJzdC1wZXJzb24gZXhwZXJ0IHN1bW1hcnk6CgoqKkFuYWx5emluZyBORkMgQ29uZmlndXJhdGlvbiBSZXF1aXJlbWVudHMqKgoKQWxyaWdodCwgdGhlIGNvcmUgY29uZmlndXJhdGlvbiBpbiBxdWVzdGlvbiBpcyBgTkZDYC4gTXkgaW5pdGlhbCBmb2N1cyBpcyBvbiBgbmV0L25mYy9sbGNwX3NvY2suY2AuIEkgbmVlZCB0byBxdWlja2x5IGRldGVybWluZSBpZiBgTkZDYCBpcyAqYWxsKiB0aGF0JiMzOTtzIHJlcXVpcmVkIGZvciB0aGlzIHBhcnRpY3VsYXIgbW9kdWxlLCBvciBpZiB0aGVyZSBhcmUgYW55IG90aGVyIHN1cHBvcnRpbmcgY29uZmlndXJhdGlvbnMgb3IgZGVwZW5kZW5jaWVzIEkgbmVlZCB0byBiZSBhd2FyZSBvZiB3aXRoaW4gdGhlIGN1cnJlbnQgYnVpbGQgZW52aXJvbm1lbnQuIEkgbmVlZCB0byBlbnN1cmUgYSBjb21wbGV0ZSBhbmQgY29ycmVjdCBidWlsZC4gSXQmIzM5O3MgYWJvdXQgZWZmaWNpZW5jeTsgSSBjYW4mIzM5O3QgYWZmb3JkIHRvIHdhc3RlIHRpbWUgY2hhc2luZyBkb3duIGJ1aWxkIGVycm9ycyBsYXRlciBkdWUgdG8gYSBtaXNzaW5nIG9yIG1pc2NvbmZpZ3VyZWQgb3B0aW9uLiBNeSBkZWVwIHVuZGVyc3RhbmRpbmcgb2YgdGhpcyBuZXR3b3JraW5nIHN1YnN5c3RlbSBpbmZvcm1zIHRoZSBuZWNlc3NpdHkgdG8gY2FyZWZ1bGx5IGV4YW1pbmUgdGhpcyBgbGxjcF9zb2NrLmNgIHNwZWNpZmljYWxseS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTMgMDI6MDU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bGxjcF9zb2NrLm8mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbmZjLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbmZjL01ha2VmaWxlPTExPW5mYy1vYmpzIDo9IGNvcmUubyBuZXRsaW5rLm8gYWZfbmZjLm8gcmF3c29jay5vIGxsY3BfY29yZS5vIGxsY3BfY29tbWFuZHMubyBcXFxubmV0L25mYy9NYWtlZmlsZToxMjpcdFx0bGxjcF9zb2NrLm9cbm5ldC9uZmMvTWFrZWZpbGUtMTMtXG4tLVxubmV0L25mYy9sbGNwX3NvY2suYz04MzY9c3RhdGljIGludCBsbGNwX3NvY2tfcmVjdm1zZyhzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBzdHJ1Y3QgbXNnaGRyICptc2csXG4tLVxubmV0L25mYy9sbGNwX3NvY2suYy05MjQtXG5uZXQvbmZjL2xsY3Bfc29jay5jOjkyNTpzdGF0aWMgY29uc3Qgc3RydWN0IHByb3RvX29wcyBsbGNwX3NvY2tfb3BzID0ge1xubmV0L25mYy9sbGNwX3NvY2suYy05MjYtXHQuZmFtaWx5ICAgICAgICAgPSBQRl9ORkMsXG4tLVxubmV0L25mYy9sbGNwX3NvY2suYz0xMDMyPXN0YXRpYyBpbnQgbGxjcF9zb2NrX2NyZWF0ZShzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBzb2NrZXQgKnNvY2ssXG4tLVxubmV0L25mYy9sbGNwX3NvY2suYy0xMDQ4LVx0fSBlbHNlIHtcbm5ldC9uZmMvbGxjcF9zb2NrLmM6MTA0OTpcdFx0c29jay1cdTAwM2VvcHMgPSBcdTAwMjZsbGNwX3NvY2tfb3BzO1xubmV0L25mYy9sbGNwX3NvY2suYy0xMDUwLVx0fVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMyAwMjowNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0MjgwCgkJCQkJCQlvdXRwdXQ6IDMyCgkJCQkJCQl0aG91Z2h0czogNDEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIHByZXNlbnRlZCBhcyBhIHBlcnNvbmFsIHRob3VnaHQgcHJvY2VzcywgYXMgcmVxdWVzdGVkOgoKKipORkMgT2JqZWN0IENvbXBpbGF0aW9uIFBhdGgqKgoKQWxyaWdodCwgc28gdGhlIHF1ZXN0aW9uIGlzICp3aGVuKiBpcyB0aGUgb2JqZWN0IGZvciB0aGlzIE5GQyBmdW5jdGlvbmFsaXR5IGNvbXBpbGVkPyBBaCwgcmlnaHQsIGl0IGxvb2tzIGxpa2UgaXQgZ2V0cyBidWlsdCB3aXRoIHRoZSBgbmZjLW9ianNgLiBUaGF0JiMzOTtzIHRoZSBrZXkuIFNvLCB0aGUgaW1wbGljYXRpb24gaGVyZSBpcyB0aGF0IGBuZmMtb2Jqc2AmIzM5OyBjb21waWxhdGlvbiBpcyB0aGUgdHJpZ2dlcmluZyBldmVudC4gQnV0IHdoZW4gaXMgKnRoYXQqIGNvbXBpbGVkPyBBaCwgdGhhdCYjMzk7cyB3aGVuIGBDT05GSUdfTkZDYCBpcyBkZWZpbmVkLiBPa2F5LCBnb29kLiBUaGF0IG1ha2VzIHNlbnNlIGZyb20gYSBjb25kaXRpb25hbCBjb21waWxhdGlvbiBzdGFuZHBvaW50LiBJ4oCZbSBwcmV0dHkgY29uZmlkZW50IHRoYXQgaXMgY29ycmVjdCwgYnV0IGhvbGQgb24gYSBtb21lbnTigKYgbGV0IG1lIGp1c3QgZG91YmxlLWNoZWNrIHRoYXQgYnkgdGFraW5nIGEgcXVpY2sgbG9vayBhdCB0aGUgYG5ldC9uZmMvTWFrZWZpbGVgIHRvIGJlIGFic29sdXRlbHkgY2VydGFpbi4gSnVzdCBhIHF1aWNrIHNhbml0eSBjaGVjayB0byBhdm9pZCBhbnkgYXNzdW1wdGlvbnMuIEdvb2QsIGdvb2QsIGJldHRlciBzYWZlIHRoYW4gc29ycnkuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEzIDAyOjA1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7bmV0L25mYy9NYWtlZmlsZSYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAgMTpcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcbiAgIDI6XHQjXG4gICAzOlx0IyBNYWtlZmlsZSBmb3IgdGhlIExpbnV4IE5GQyBzdWJzeXN0ZW0uXG4gICA0Olx0I1xuICAgNTpcdFxuICAgNjpcdG9iai0kKENPTkZJR19ORkMpICYjNDM7PSBuZmMub1xuICAgNzpcdG9iai0kKENPTkZJR19ORkNfTkNJKSAmIzQzOz0gbmNpL1xuICAgODpcdG9iai0kKENPTkZJR19ORkNfSENJKSAmIzQzOz0gaGNpL1xuICAgOTpcdG9iai0kKENPTkZJR19ORkNfRElHSVRBTCkgJiM0Mzs9IG5mY19kaWdpdGFsLm9cbiAgMTA6XHRcbiAgMTE6XHRuZmMtb2JqcyA6PSBjb3JlLm8gbmV0bGluay5vIGFmX25mYy5vIHJhd3NvY2subyBsbGNwX2NvcmUubyBsbGNwX2NvbW1hbmRzLm8gXFxcbiAgMTI6XHRcdFx0bGxjcF9zb2NrLm9cbiAgMTM6XHRcbiAgMTQ6XHRuZmNfZGlnaXRhbC1vYmpzIDo9IGRpZ2l0YWxfY29yZS5vIGRpZ2l0YWxfdGVjaG5vbG9neS5vIGRpZ2l0YWxfZGVwLm9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTMgMDI6MDU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDc3NwoJCQkJCQkJb3V0cHV0OiAzOQoJCQkJCQkJdGhvdWdodHM6IDk0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGJyZWFrZG93biBvZiB0aGlzLgoKKipGb2N1c2luZyBvbiB0aGUgTkZDIENvbmZpZ3VyYXRpb24gYW5kIEJpbmRpbmcgRnVuY3Rpb24qKgoKUmlnaHQsIHNvIGl0IGxvb2tzIGxpa2UgYENPTkZJR19ORkNgIGlzIHRoZSBzb2xlIGNvbmZpZ3VyYXRpb24gaXRlbSBvZiBpbnRlcmVzdCBoZXJlLiBUaGF0IHNpbXBsaWZpZXMgdGhpbmdzIGltbWVuc2VseTsgYXQgbGVhc3Qgd2UgZG9uJiMzOTt0IG5lZWQgdG8gY2hhc2UgZG93biBhIG5lc3Qgb2YgcmVsYXRlZCBjb25maWdzLiBOb3csIHdoZXJlJiMzOTtzIHRoZSByZWFsIGFjdGlvbj8gQWgsIGl0IGFwcGVhcnMgd2UmIzM5O3JlIHplcm9pbmcgaW4gb24gYGxsY3BfcmF3X3NvY2tfYmluZGAuIFRoYXQmIzM5O3MgdGhlIGZ1bmN0aW9uIHRoZSBwYXRjaCBpcyB0YXJnZXRpbmcsIGFuZCB0aGF0JiMzOTtzIHByZWNpc2VseSB3aGVyZSBJIG5lZWQgdG8gZm9jdXMgbXkgYXR0ZW50aW9uLgoKSSBzdXBwb3NlIEkgc2hvdWxkIGdsYW5jZSBhcm91bmQgZm9yIGEgbWludXRlIHRvIGVuc3VyZSB0aGF0IG5vdGhpbmcgZWxzZSBtaWdodCBuZWVkIGF0dGVudGlvbi4gVGhlcmUgaXMgYGxsY3Bfc29ja19iaW5kYCB0b28sIGJ1dCB0aGUgY29tbWl0IG1lc3NhZ2UgKmV4cGxpY2l0bHkqIG1lbnRpb25zIGNoYW5nZXMgdG8gYGxsY3BfcmF3X3NvY2tfYmluZGAsIHNvIHRoYXQmIzM5O3MgdGhlIHByaW1hcnkgdGFyZ2V0LgoKVGltZSB0byBkaXZlIGludG8gdGhlIGNvZGUuIEkmIzM5O2xsIG5lZWQgdG8gY2hlY2sgdGhlIGRlZmluaXRpb24gb2YgYGxsY3BfcmF3X3NvY2tfYmluZGAsIHdoaWNoLCBhcyBJIHJlY2FsbCwgc2hvdWxkIGJlIGxvY2F0ZWQgaW4gYG5ldC9uZmMvbGxjcF9zb2NrLmNgLiBMZXQmIzM5O3Mgc2VlIHdoYXQmIzM5O3MgY2hhbmdlZCBhbmQgZmlndXJlIG91dCB0aGUgaW1wbGljYXRpb25zLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMyAwMjowNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O25ldC9uZmMvbGxjcF9zb2NrLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxNDgsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNTAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDE0ODpcdFxuIDE0OTpcdHN0YXRpYyBpbnQgbGxjcF9yYXdfc29ja19iaW5kKHN0cnVjdCBzb2NrZXQgKnNvY2ssIHN0cnVjdCBzb2NrYWRkcl91bnNpemVkICphZGRyLFxuIDE1MDpcdFx0XHRcdCAgICAgIGludCBhbGVuKVxuIDE1MTpcdHtcbiAxNTI6XHRcdHN0cnVjdCBzb2NrICpzayA9IHNvY2stXHUwMDNlc2s7XG4gMTUzOlx0XHRzdHJ1Y3QgbmZjX2xsY3Bfc29jayAqbGxjcF9zb2NrID0gbmZjX2xsY3Bfc29jayhzayk7XG4gMTU0Olx0XHRzdHJ1Y3QgbmZjX2xsY3BfbG9jYWwgKmxvY2FsO1xuIDE1NTpcdFx0c3RydWN0IG5mY19sbGNwX2xvY2FsICpvbGRfbG9jYWw7XG4gMTU2Olx0XHRzdHJ1Y3QgbmZjX2RldiAqZGV2O1xuIDE1NzpcdFx0c3RydWN0IHNvY2thZGRyX25mY19sbGNwIGxsY3BfYWRkcjtcbiAxNTg6XHRcdGludCBsZW4sIHJldCA9IDA7XG4gMTU5Olx0XG4gMTYwOlx0XHRpZiAoIWFkZHIgfHwgYWxlbiBcdTAwM2Mgb2Zmc2V0b2ZlbmQoc3RydWN0IHNvY2thZGRyLCBzYV9mYW1pbHkpIHx8XG4gMTYxOlx0XHQgICAgYWRkci1cdTAwM2VzYV9mYW1pbHkgIT0gQUZfTkZDKVxuIDE2MjpcdFx0XHRyZXR1cm4gLUVJTlZBTDtcbiAxNjM6XHRcbiAxNjQ6XHRcdHByX2RlYnVnKFwmIzM0O3NrICVwIGFkZHIgJXAgZmFtaWx5ICVkXFxuXCYjMzQ7LCBzaywgYWRkciwgYWRkci1cdTAwM2VzYV9mYW1pbHkpO1xuIDE2NTpcdFxuIDE2NjpcdFx0bWVtc2V0KFx1MDAyNmxsY3BfYWRkciwgMCwgc2l6ZW9mKGxsY3BfYWRkcikpO1xuIDE2NzpcdFx0bGVuID0gbWluX3QodW5zaWduZWQgaW50LCBzaXplb2YobGxjcF9hZGRyKSwgYWxlbik7XG4gMTY4Olx0XHRtZW1jcHkoXHUwMDI2bGxjcF9hZGRyLCBhZGRyLCBsZW4pO1xuIDE2OTpcdFxuIDE3MDpcdFx0bG9ja19zb2NrKHNrKTtcbiAxNzE6XHRcbiAxNzI6XHRcdGlmIChzay1cdTAwM2Vza19zdGF0ZSAhPSBMTENQX0NMT1NFRCkge1xuIDE3MzpcdFx0XHRyZXQgPSAtRUJBREZEO1xuIDE3NDpcdFx0XHRnb3RvIGVycm9yO1xuIDE3NTpcdFx0fVxuIDE3NjpcdFxuIDE3NzpcdFx0ZGV2ID0gbmZjX2dldF9kZXZpY2UobGxjcF9hZGRyLmRldl9pZHgpO1xuIDE3ODpcdFx0aWYgKGRldiA9PSBOVUxMKSB7XG4gMTc5Olx0XHRcdHJldCA9IC1FTk9ERVY7XG4gMTgwOlx0XHRcdGdvdG8gZXJyb3I7XG4gMTgxOlx0XHR9XG4gMTgyOlx0XG4gMTgzOlx0XHRsb2NhbCA9IG5mY19sbGNwX2ZpbmRfbG9jYWwoZGV2KTtcbiAxODQ6XHRcdGlmIChsb2NhbCA9PSBOVUxMKSB7XG4gMTg1Olx0XHRcdHJldCA9IC1FTk9ERVY7XG4gMTg2Olx0XHRcdGdvdG8gcHV0X2RldjtcbiAxODc6XHRcdH1cbiAxODg6XHRcbiAxODk6XHRcdG9sZF9sb2NhbCA9IGxsY3Bfc29jay1cdTAwM2Vsb2NhbDtcbiAxOTA6XHRcdGxsY3Bfc29jay1cdTAwM2Vsb2NhbCA9IE5VTEw7XG4gMTkxOlx0XHRsbGNwX3NvY2stXHUwMDNlZGV2ID0gTlVMTDtcbiAxOTI6XHRcdG5mY19sbGNwX2xvY2FsX3B1dChvbGRfbG9jYWwpO1xuIDE5MzpcdFxuIDE5NDpcdFx0bGxjcF9zb2NrLVx1MDAzZWRldiA9IGRldjtcbiAxOTU6XHRcdGxsY3Bfc29jay1cdTAwM2Vsb2NhbCA9IGxvY2FsO1xuIDE5NjpcdFx0bGxjcF9zb2NrLVx1MDAzZW5mY19wcm90b2NvbCA9IGxsY3BfYWRkci5uZmNfcHJvdG9jb2w7XG4gMTk3Olx0XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEzIDAyOjA1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDU5MjAKCQkJCQkJCW91dHB1dDogOTcKCQkJCQkJCXRob3VnaHRzOiAxMTIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgS2V5IE5ldHdvcmsgUGF0Y2gqKgoKT2theSwgc28gdGhpcyBwYXRjaCBpcyBpbnRlcmVzdGluZy4gSXQgbG9va3MgbGlrZSB3ZSYjMzk7dmUgZ290IGEgZml4IHRoYXQgYWRkcmVzc2VzIGEgcG90ZW50aWFsIG1lbW9yeSBsZWFrIG9yIGEgdXNlLWFmdGVyLWZyZWUgdnVsbmVyYWJpbGl0eSB3aXRoaW4gdGhlIGBsbGNwX3Jhd19zb2NrX2JpbmRgIGZ1bmN0aW9uLiBTcGVjaWZpY2FsbHksIGl0IHNlZW1zIHRoZSBpc3N1ZSBzdGVtcyBmcm9tIGhvdyB0aGUgYG9sZF9sb2NhbGAgcmVmZXJlbmNlIHdhcyBoYW5kbGVkLiBCeSBwcm9wZXJseSByZWxlYXNpbmcgdGhhdCBvbGQgcmVmZXJlbmNlIGJlZm9yZSBhc3NpZ25pbmcgYSBuZXcgb25lLCB0aGlzIHBhdGNoIGlzIHRpZ2h0ZW5pbmcgdXAgbWVtb3J5IG1hbmFnZW1lbnQuCgpGdW5jdGlvbmFsbHksIHRoaXMgaXMgYSBkZWZpbml0ZSBjaGFuZ2UsIHdoaWNoIG1lYW5zIHdlIG5lZWQgdG8gdHJlYXQgaXQgd2l0aCBkdWUgZGlsaWdlbmNlLiBHaXZlbiB0aGF0IHRoaXMgY29kZSBpcyBpbiBjb3JlIG5ldHdvcmtpbmcsIGFuZCBzZWVtcyByZWFjaGFibGUsIGl0IHdhcnJhbnRzIGEgY2xvc2UgbG9vay4gSXQmIzM5O3MgdGltZSB0byBmaXJlIHVwIHRoZSBmdXp6aW5nIHRvb2xzIGFuZCByZWFsbHkgaGFtbWVyIGF0IHRoaXMgYXJlYS4gV2UgbmVlZCB0byBmb2N1cyB0aG9zZSBmdXp6aW5nIGVmZm9ydHMgc3BlY2lmaWNhbGx5IG9uIGBsbGNwX3Jhd19zb2NrX2JpbmRgLCB0aGF0JiMzOTtzIHRoZSBrZXkgc3ltYm9sIGhlcmUuIEdpdmVuIHRoYXQgdGhpcyBpcyBwb3RlbnRpYWxseSByZWxhdGVkIHRvIE5GQyBmdW5jdGlvbmFsaXR5LCBJIHNob3VsZCBwcm9iYWJseSBtYWtlIHN1cmUgdGhlIGBORkNgIGNvbmZpZyBpcyBlbmFibGVkIGR1cmluZyB0ZXN0aW5nIHRvIGdldCBtYXhpbXVtIGNvdmVyYWdlLiBMZXQmIzM5O3Mgc2VlIGlmIHdlIGNhbiBmaW5kIGFueSByZWdyZXNzaW9uIGJ1Z3MgaGVyZSwgZ2l2ZW4gdGhhdCB0aGlzIGxvb2tzIGxpa2UgYSBmdW5jdGlvbmFsIGltcHJvdmVtZW50LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMyAwMjowNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7TkZDJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7bGxjcF9yYXdfc29ja19iaW5kJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgcG90ZW50aWFsIG1lbW9yeSBsZWFrIG9yIHVzZS1hZnRlci1mcmVlIGluIHRoZSBgbGxjcF9yYXdfc29ja19iaW5kYCBmdW5jdGlvbiBieSBwcm9wZXJseSByZWxlYXNpbmcgdGhlIG9sZCBgbG9jYWxgIHJlZmVyZW5jZSBiZWZvcmUgYXNzaWduaW5nIGEgbmV3IG9uZS4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHJlYWNoYWJsZSBjb3JlIG5ldHdvcmtpbmcgY29kZS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7TkZDJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7bGxjcF9yYXdfc29ja19iaW5kJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgcG90ZW50aWFsIG1lbW9yeSBsZWFrIG9yIHVzZS1hZnRlci1mcmVlIGluIHRoZSBgbGxjcF9yYXdfc29ja19iaW5kYCBmdW5jdGlvbiBieSBwcm9wZXJseSByZWxlYXNpbmcgdGhlIG9sZCBgbG9jYWxgIHJlZmVyZW5jZSBiZWZvcmUgYXNzaWduaW5nIGEgbmV3IG9uZS4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHJlYWNoYWJsZSBjb3JlIG5ldHdvcmtpbmcgY29kZS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEzVDAyOjA0OjUxLjY3ODc2MTc0OFoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI3OTgyMzI3MDIwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk5GQ1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImxsY3BfcmF3X3NvY2tfYmluZFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgcG90ZW50aWFsIG1lbW9yeSBsZWFrIG9yIHVzZS1hZnRlci1mcmVlIGluIHRoZSBgbGxjcF9yYXdfc29ja19iaW5kYCBmdW5jdGlvbiBieSBwcm9wZXJseSByZWxlYXNpbmcgdGhlIG9sZCBgbG9jYWxgIHJlZmVyZW5jZSBiZWZvcmUgYXNzaWduaW5nIGEgbmV3IG9uZS4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHJlYWNoYWJsZSBjb3JlIG5ldHdvcmtpbmcgY29kZS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTNUMDI6MDQ6NTEuNjc4NzY4MzY4WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1OTM3NjkzMjgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCBjNGFiYjY4ZGQ1NGE5NWNmZGIwMGY5MTA3MzdhNDZmZDUwZmFkNmFiXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBNb24gSnVsIDEzIDAyOjA0OjQ5IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL25ldC9uZmMvbGxjcF9zb2NrLmMgYi9uZXQvbmZjL2xsY3Bfc29jay5jXFxuaW5kZXggZmVhYjI5ZmM2MmY0NGIuLjBjMDBjZGFhYmJjNjExIDEwMDY0NFxcbi0tLSBhL25ldC9uZmMvbGxjcF9zb2NrLmNcXG4rKysgYi9uZXQvbmZjL2xsY3Bfc29jay5jXFxuQEAgLTE1Miw2ICsxNTIsNyBAQCBzdGF0aWMgaW50IGxsY3BfcmF3X3NvY2tfYmluZChzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBzdHJ1Y3Qgc29ja2FkZHJfdW5zaXplZCAqYWRkclxcbiBcXHRzdHJ1Y3Qgc29jayAqc2sgPSBzb2NrLVxcdTAwM2VzaztcXG4gXFx0c3RydWN0IG5mY19sbGNwX3NvY2sgKmxsY3Bfc29jayA9IG5mY19sbGNwX3NvY2soc2spO1xcbiBcXHRzdHJ1Y3QgbmZjX2xsY3BfbG9jYWwgKmxvY2FsO1xcbitcXHRzdHJ1Y3QgbmZjX2xsY3BfbG9jYWwgKm9sZF9sb2NhbDtcXG4gXFx0c3RydWN0IG5mY19kZXYgKmRldjtcXG4gXFx0c3RydWN0IHNvY2thZGRyX25mY19sbGNwIGxsY3BfYWRkcjtcXG4gXFx0aW50IGxlbiwgcmV0ID0gMDtcXG5AQCAtMTg1LDYgKzE4NiwxMSBAQCBzdGF0aWMgaW50IGxsY3BfcmF3X3NvY2tfYmluZChzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBzdHJ1Y3Qgc29ja2FkZHJfdW5zaXplZCAqYWRkclxcbiBcXHRcXHRnb3RvIHB1dF9kZXY7XFxuIFxcdH1cXG4gXFxuK1xcdG9sZF9sb2NhbCA9IGxsY3Bfc29jay1cXHUwMDNlbG9jYWw7XFxuK1xcdGxsY3Bfc29jay1cXHUwMDNlbG9jYWwgPSBOVUxMO1xcbitcXHRsbGNwX3NvY2stXFx1MDAzZWRldiA9IE5VTEw7XFxuK1xcdG5mY19sbGNwX2xvY2FsX3B1dChvbGRfbG9jYWwpO1xcbitcXG4gXFx0bGxjcF9zb2NrLVxcdTAwM2VkZXYgPSBkZXY7XFxuIFxcdGxsY3Bfc29jay1cXHUwMDNlbG9jYWwgPSBsb2NhbDtcXG4gXFx0bGxjcF9zb2NrLVxcdTAwM2VuZmNfcHJvdG9jb2wgPSBsbGNwX2FkZHIubmZjX3Byb3RvY29sO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xM1QwMjowNDo1Mi4yNzU3NTA4OTRaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI3Mzg1MzI0NzYzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk5GQ1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImxsY3BfcmF3X3NvY2tfYmluZFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgcG90ZW50aWFsIG1lbW9yeSBsZWFrIG9yIHVzZS1hZnRlci1mcmVlIGluIHRoZSBgbGxjcF9yYXdfc29ja19iaW5kYCBmdW5jdGlvbiBieSBwcm9wZXJseSByZWxlYXNpbmcgdGhlIG9sZCBgbG9jYWxgIHJlZmVyZW5jZSBiZWZvcmUgYXNzaWduaW5nIGEgbmV3IG9uZS4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHJlYWNoYWJsZSBjb3JlIG5ldHdvcmtpbmcgY29kZS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdFxuICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LFxuICAgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCBjNGFiYjY4ZGQ1NGE5NWNmZGIwMGY5MTA3MzdhNDZmZDUwZmFkNmFiXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIE1vbiBKdWwgMTMgMDI6MDQ6NDkgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9uZXQvbmZjL2xsY3Bfc29jay5jIGIvbmV0L25mYy9sbGNwX3NvY2suY1xuaW5kZXggZmVhYjI5ZmM2MmY0NGIuLjBjMDBjZGFhYmJjNjExIDEwMDY0NFxuLS0tIGEvbmV0L25mYy9sbGNwX3NvY2suY1xuKysrIGIvbmV0L25mYy9sbGNwX3NvY2suY1xuQEAgLTE1Miw2ICsxNTIsNyBAQCBzdGF0aWMgaW50IGxsY3BfcmF3X3NvY2tfYmluZChzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBzdHJ1Y3Qgc29ja2FkZHJfdW5zaXplZCAqYWRkclxuIFx0c3RydWN0IHNvY2sgKnNrID0gc29jay1cdTAwM2VzaztcbiBcdHN0cnVjdCBuZmNfbGxjcF9zb2NrICpsbGNwX3NvY2sgPSBuZmNfbGxjcF9zb2NrKHNrKTtcbiBcdHN0cnVjdCBuZmNfbGxjcF9sb2NhbCAqbG9jYWw7XG4rXHRzdHJ1Y3QgbmZjX2xsY3BfbG9jYWwgKm9sZF9sb2NhbDtcbiBcdHN0cnVjdCBuZmNfZGV2ICpkZXY7XG4gXHRzdHJ1Y3Qgc29ja2FkZHJfbmZjX2xsY3AgbGxjcF9hZGRyO1xuIFx0aW50IGxlbiwgcmV0ID0gMDtcbkBAIC0xODUsNiArMTg2LDExIEBAIHN0YXRpYyBpbnQgbGxjcF9yYXdfc29ja19iaW5kKHN0cnVjdCBzb2NrZXQgKnNvY2ssIHN0cnVjdCBzb2NrYWRkcl91bnNpemVkICphZGRyXG4gXHRcdGdvdG8gcHV0X2RldjtcbiBcdH1cbiBcbitcdG9sZF9sb2NhbCA9IGxsY3Bfc29jay1cdTAwM2Vsb2NhbDtcbitcdGxsY3Bfc29jay1cdTAwM2Vsb2NhbCA9IE5VTEw7XG4rXHRsbGNwX3NvY2stXHUwMDNlZGV2ID0gTlVMTDtcbitcdG5mY19sbGNwX2xvY2FsX3B1dChvbGRfbG9jYWwpO1xuK1xuIFx0bGxjcF9zb2NrLVx1MDAzZWRldiA9IGRldjtcbiBcdGxsY3Bfc29jay1cdTAwM2Vsb2NhbCA9IGxvY2FsO1xuIFx0bGxjcF9zb2NrLVx1MDAzZW5mY19wcm90b2NvbCA9IGxsY3BfYWRkci5uZmNfcHJvdG9jb2w7XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xM1QwMjowNDo1Mi4yNzU3NTMwNTRaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2MjAyOTU1NzYyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIE5GQyBMTENQIFNvY2tldCBQYXRjaCoqXG5cbk9rYXksIHNvIEkndmUgZ290IHRoaXMgcGF0Y2ggaGVyZSB0aGF0J3MgdG91Y2hpbmcgYG5ldC9uZmMvbGxjcF9zb2NrLmNgLiBTZWVtcyBsaWtlIHRoZSBjaGFuZ2UgaXMgaW4gdGhlIGBsbGNwX3Jhd19zb2NrX2JpbmRgIGZ1bmN0aW9uLiBSZWFkaW5nIHRoZSBjb2RlLCBpdCBsb29rcyBsaWtlIHRoZXkncmUgYWRkaW5nIGEgZmV3IGxpbmVzOlxuXG5gYGBjXG5cdG9sZF9sb2NhbCA9IGxsY3Bfc29jay1cdTAwM2Vsb2NhbDtcblx0bGxjcF9zb2NrLVx1MDAzZWxvY2FsID0gTlVMTDtcblx0bGxjcF9zb2NrLVx1MDAzZWRldiA9IE5VTEw7XG5cdG5mY19sbGNwX2xvY2FsX3B1dChvbGRfbG9jYWwpO1xuYGBgXG5cblJpZ2h0LCB0aGlzIGlzIGEgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZCBmdW5jdGlvbmFsIGNoYW5nZS4gSW1tZWRpYXRlbHksIEkgc2VlIHRoZSBwdXJwb3NlOiB0aGV5J3JlIGNsZWFuaW5nIHVwIHRoZSBvbGQgYGxsY3Bfc29jay1cdTAwM2Vsb2NhbGAgYmVmb3JlIGFzc2lnbmluZyBhIG5ldyBvbmUuIFRoaXMgaXMgZ29vZDsgaXQncyBwcmV2ZW50aW5nIGEgcG90ZW50aWFsIG1lbW9yeSBsZWFrIG9yIGEgdXNlLWFmdGVyLWZyZWUgc2NlbmFyaW8uIFRoaXMgaXMgYSBjb21tb24gYW5kIG9mdGVuIG92ZXJsb29rZWQgaXNzdWUsIGVzcGVjaWFsbHkgaW4gbmV0d29ya2luZyBjb2RlIHdpdGggY29tcGxleCBvYmplY3QgbWFuYWdlbWVudC5cblxuTm93LCBsZXQncyBqdXN0IG1ha2Ugc3VyZSBpdCdzIGNvcnJlY3QuIEkgd2FudCB0byB0YWtlIGEgY2xvc2VyIGxvb2sgYXQgdGhlIHN1cnJvdW5kaW5nIGNvZGUgaW4gYGxsY3BfcmF3X3NvY2tfYmluZGAgaXRzZWxmIGFuZCB0aGUgcmVsYXRlZCBmdW5jdGlvbnMuIEknbGwgdXNlIGBncmVwcGVyYCB0byBxdWlja2x5IGxvY2F0ZSB0aGUgZnVuY3Rpb24gd2l0aGluIHRoZSBgbmV0L25mYy9sbGNwX3NvY2suY2AgZmlsZSBhbmQgdW5kZXJzdGFuZCB0aGUgY29udGV4dCBiZXR0ZXIuIEkgd2FudCB0byBtYWtlIHN1cmUgdGhpcyBjaGFuZ2UgZG9lc24ndCBpbnRyb2R1Y2UgYW55IHJlZ3Jlc3Npb25zIG9yIHVuaW50ZW5kZWQgY29uc2VxdWVuY2VzIGluIHRoZSBiaW5kaW5nIHByb2Nlc3MuIEknbGwgbmVlZCB0byBjaGVjayBob3cgYGxsY3Bfc29jay1cdTAwM2Vsb2NhbGAgYW5kIGBsbGNwX3NvY2stXHUwMDNlZGV2YCBhcmUgdXNlZCBhZnRlciB0aGUgYGJpbmRgIHRvIGVuc3VyZSB0aGUgY2xlYW4gdXAgZG9lc24ndCBicmVhayBhbnl0aGluZy5cblxuXG4iLCJJbnB1dFRva2VucyI6MjAxMiwiT3V0cHV0VG9rZW5zIjozOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE5MSwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEzVDAyOjA0OjU4LjQ3ODcxMDc3N1oiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNjE4MzAyOTgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibGxjcF9yYXdfc29ja19iaW5kXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9uZmMvbGxjcF9zb2NrLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L25mYy9sbGNwX3NvY2suYz01OT1zdGF0aWMgaW50IGxsY3Bfc29ja19iaW5kKHN0cnVjdCBzb2NrZXQgKnNvY2ssIHN0cnVjdCBzb2NrYWRkcl91bnNpemVkICphZGRyLCBpbnQgYWxlbilcXG4tLVxcbm5ldC9uZmMvbGxjcF9zb2NrLmMtMTQ4LVxcbm5ldC9uZmMvbGxjcF9zb2NrLmM6MTQ5OnN0YXRpYyBpbnQgbGxjcF9yYXdfc29ja19iaW5kKHN0cnVjdCBzb2NrZXQgKnNvY2ssIHN0cnVjdCBzb2NrYWRkcl91bnNpemVkICphZGRyLFxcbm5ldC9uZmMvbGxjcF9zb2NrLmMtMTUwLVxcdFxcdFxcdCAgICAgIGludCBhbGVuKVxcbi0tXFxubmV0L25mYy9sbGNwX3NvY2suYz05NDU9c3RhdGljIGNvbnN0IHN0cnVjdCBwcm90b19vcHMgbGxjcF9yYXdzb2NrX29wcyA9IHtcXG4tLVxcbm5ldC9uZmMvbGxjcF9zb2NrLmMtOTQ3LVxcdC5vd25lciAgICAgICAgICA9IFRISVNfTU9EVUxFLFxcbm5ldC9uZmMvbGxjcF9zb2NrLmM6OTQ4OlxcdC5iaW5kICAgICAgICAgICA9IGxsY3BfcmF3X3NvY2tfYmluZCxcXG5uZXQvbmZjL2xsY3Bfc29jay5jLTk0OS1cXHQuY29ubmVjdCAgICAgICAgPSBzb2NrX25vX2Nvbm5lY3QsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEzVDAyOjA0OjU4LjY0MDU0NzIwNVoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMxMDc1NTQ0NjYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBMTENQIFJhdyBTb2NrZXQgQmluZGluZyoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IGBsbGNwX3Jhd19zb2NrX2JpbmRgIGFuZCBpdCdzIHByZXR0eSBjbGVhciB0aGlzIGlzIHRoZSBgYmluZGAgZnVuY3Rpb24gZm9yIHRoZSBgbGxjcF9yYXdzb2NrX29wc2Agc3RydWN0dXJlLiBNYWtlcyBwZXJmZWN0IHNlbnNlLiBUaGlzIG1lYW5zLCBhcyBJIHN1c3BlY3RlZCwgdGhpcyBmdW5jdGlvbiBpcyB0aGUgZW50cnkgcG9pbnQgZm9yIGhhbmRsaW5nIHRoZSBgYmluZCgpYCBzeXN0ZW0gY2FsbCB3aGVuIGEgdXNlci1zcGFjZSBhcHBsaWNhdGlvbiBhdHRlbXB0cyB0byBiaW5kIGEgcmF3IE5GQyBMTENQIHNvY2tldC4gU2VlbXMgc3RyYWlnaHRmb3J3YXJkIHNvIGZhci4gTm93LCBqdXN0IHRvIGJlIGFic29sdXRlbHkgc3VyZSwgSSBzaG91bGQgZG91YmxlIGNoZWNrIHRoZSByZWxldmFudCBLY29uZmlnIG9wdGlvbnMgZm9yIE5GQyBMTENQIHN1cHBvcnQgdG8gY29uZmlybSB0aGF0IHRoaXMgcGF0aCBpcyBhY3R1YWxseSBlbmFibGVkIGFuZCByZWFjaGFibGUgaW4gdGhlIGtlcm5lbCdzIGNvbmZpZ3VyYXRpb24uIEdvdHRhIGJlIG1ldGljdWxvdXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI4NDQsIk91dHB1dFRva2VucyI6MzAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2MSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xM1QwMjowNTowMS43NDgxMDM4N1oiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyODIzMjA0NjksIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBORkNfTExDUFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvbmZjL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTNUMDI6MDU6MDIuMDMwNDMzNDlaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyNjc5MzE2MDQ3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipJbnZlc3RpZ2F0aW5nIE5GQyBDb25maWd1cmF0aW9uKipcblxuQWxyaWdodCwgdGltZSB0byBnZXQgZG93biB0byBicmFzcyB0YWNrcy4gSSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGUgTkZDIHN1cHBvcnQgaXMgY29uZmlndXJlZCBjb3JyZWN0bHksIG9yIGF0IGxlYXN0IHVuZGVyc3RhbmQgd2hhdCBvcHRpb25zIGFyZSBhdmFpbGFibGUgYW5kIGhvdyB0aGV5J3JlIHNldCB1cC4gTXkgaW1tZWRpYXRlIGluc3RpbmN0IGlzIHRvIGRpdmUgaW50byB0aGUgS2NvbmZpZyBmaWxlcy4gVGhpcyBpcyB3aGVyZSB0aGUgY29yZSBjb25maWd1cmF0aW9uIGRlY2lzaW9ucyBhcmUgbWFkZSwgYW5kIGl0J3Mgd2hlcmUgSSdsbCBmaW5kIHRoZSBkZXBlbmRlbmNpZXMsIGRlZmF1bHRzLCBhbmQgcG90ZW50aWFsIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyByZWxhdGVkIHRvIE5GQy4gSSdsbCBuZWVkIHRvIHJlbWVtYmVyIHRoZSB0eXBpY2FsIG5hbWluZyBjb252ZW50aW9ucyBhbmQgaG93IHRoZSBwcm9qZWN0IHN0cnVjdHVyZXMgaXRzIGNvbmZpZyBmaWxlcyBzbyBJIGNhbiBxdWlja2x5IGlkZW50aWZ5IHRoZSByZWxldmFudCBzZWN0aW9uLiBJJ2xsIGJlIGxvb2tpbmcgZm9yIHRoaW5ncyBsaWtlIGRldmljZSBkcml2ZXJzLCBwcm90b2NvbCBzdXBwb3J0LCBhbmQgYW55IHBsYXRmb3JtLXNwZWNpZmljIGNvbmZpZ3VyYXRpb25zIHJlbGF0ZWQgdG8gTkZDIGNvbnRyb2xsZXJzIG9yIHNlY3VyZSBlbGVtZW50cy4gS25vd2luZyB0aGlzLCBJIGNhbiBzdGFydCB0byB1bmRlcnN0YW5kIHRoZSBjb21wbGV0ZSBwaWN0dXJlIG9mIGhvdyBORkMgaXMgY29uZmlndXJlZCB3aXRoaW4gdGhlIGV4aXN0aW5nIHN5c3RlbS5cblxuXG4iLCJJbnB1dFRva2VucyI6MzA5MywiT3V0cHV0VG9rZW5zIjoyNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTNUMDI6MDU6MDQuNzA5NzUxNDA3WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIxOTM2NzY1NCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgTkZDXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9uZmMvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9uZmMvS2NvbmZpZy01LVxcbm5ldC9uZmMvS2NvbmZpZzo2Om1lbnVjb25maWcgTkZDXFxubmV0L25mYy9LY29uZmlnLTctXFx0ZGVwZW5kcyBvbiBSRktJTEwgfHwgIVJGS0lMTFxcbi0tXFxubmV0L25mYy9LY29uZmlnLTE2LVxcbm5ldC9uZmMvS2NvbmZpZzoxNzpjb25maWcgTkZDX0RJR0lUQUxcXG5uZXQvbmZjL0tjb25maWctMTgtXFx0ZGVwZW5kcyBvbiBORkNcXG4tLVxcbm5ldC9uZmMvaGNpL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG5uZXQvbmZjL2hjaS9LY29uZmlnOjI6Y29uZmlnIE5GQ19IQ0lcXG5uZXQvbmZjL2hjaS9LY29uZmlnLTMtXFx0ZGVwZW5kcyBvbiBORkNcXG4tLVxcbm5ldC9uZmMvaGNpL0tjb25maWctMTAtXFxubmV0L25mYy9oY2kvS2NvbmZpZzoxMTpjb25maWcgTkZDX1NIRExDXFxubmV0L25mYy9oY2kvS2NvbmZpZy0xMi1cXHRkZXBlbmRzIG9uIE5GQ19IQ0lcXG4tLVxcbm5ldC9uZmMvbmNpL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG5uZXQvbmZjL25jaS9LY29uZmlnOjI6Y29uZmlnIE5GQ19OQ0lcXG5uZXQvbmZjL25jaS9LY29uZmlnLTMtXFx0ZGVwZW5kcyBvbiBORkNcXG4tLVxcbm5ldC9uZmMvbmNpL0tjb25maWctMTItXFxubmV0L25mYy9uY2kvS2NvbmZpZzoxMzpjb25maWcgTkZDX05DSV9TUElcXG5uZXQvbmZjL25jaS9LY29uZmlnLTE0LVxcdGRlcGVuZHMgb24gTkZDX05DSSBcXHUwMDI2XFx1MDAyNiBTUElcXG4tLVxcbm5ldC9uZmMvbmNpL0tjb25maWctMjMtXFxubmV0L25mYy9uY2kvS2NvbmZpZzoyNDpjb25maWcgTkZDX05DSV9VQVJUXFxubmV0L25mYy9uY2kvS2NvbmZpZy0yNS1cXHRkZXBlbmRzIG9uIE5GQ19OQ0kgXFx1MDAyNlxcdTAwMjYgVFRZXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEzVDAyOjA1OjA0LjkyOTEyNTA0MVoiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMxNjA1MDI5MjIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgcHJlc2VudGVkIGFzIGEgZmlyc3QtcGVyc29uIGV4cGVydCBzdW1tYXJ5OlxuXG4qKkFuYWx5emluZyBORkMgQ29uZmlndXJhdGlvbiBSZXF1aXJlbWVudHMqKlxuXG5BbHJpZ2h0LCB0aGUgY29yZSBjb25maWd1cmF0aW9uIGluIHF1ZXN0aW9uIGlzIGBORkNgLiBNeSBpbml0aWFsIGZvY3VzIGlzIG9uIGBuZXQvbmZjL2xsY3Bfc29jay5jYC4gSSBuZWVkIHRvIHF1aWNrbHkgZGV0ZXJtaW5lIGlmIGBORkNgIGlzICphbGwqIHRoYXQncyByZXF1aXJlZCBmb3IgdGhpcyBwYXJ0aWN1bGFyIG1vZHVsZSwgb3IgaWYgdGhlcmUgYXJlIGFueSBvdGhlciBzdXBwb3J0aW5nIGNvbmZpZ3VyYXRpb25zIG9yIGRlcGVuZGVuY2llcyBJIG5lZWQgdG8gYmUgYXdhcmUgb2Ygd2l0aGluIHRoZSBjdXJyZW50IGJ1aWxkIGVudmlyb25tZW50LiBJIG5lZWQgdG8gZW5zdXJlIGEgY29tcGxldGUgYW5kIGNvcnJlY3QgYnVpbGQuIEl0J3MgYWJvdXQgZWZmaWNpZW5jeTsgSSBjYW4ndCBhZmZvcmQgdG8gd2FzdGUgdGltZSBjaGFzaW5nIGRvd24gYnVpbGQgZXJyb3JzIGxhdGVyIGR1ZSB0byBhIG1pc3Npbmcgb3IgbWlzY29uZmlndXJlZCBvcHRpb24uIE15IGRlZXAgdW5kZXJzdGFuZGluZyBvZiB0aGlzIG5ldHdvcmtpbmcgc3Vic3lzdGVtIGluZm9ybXMgdGhlIG5lY2Vzc2l0eSB0byBjYXJlZnVsbHkgZXhhbWluZSB0aGlzIGBsbGNwX3NvY2suY2Agc3BlY2lmaWNhbGx5LlxuXG5cbiIsIklucHV0VG9rZW5zIjozNzMwLCJPdXRwdXRUb2tlbnMiOjMxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTNUMDI6MDU6MDguMDg5NjMwNzYzWiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozMTY3MTc3ODcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibGxjcF9zb2NrLm9cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L25mYy9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L25mYy9NYWtlZmlsZT0xMT1uZmMtb2JqcyA6PSBjb3JlLm8gbmV0bGluay5vIGFmX25mYy5vIHJhd3NvY2subyBsbGNwX2NvcmUubyBsbGNwX2NvbW1hbmRzLm8gXFxcXFxcbm5ldC9uZmMvTWFrZWZpbGU6MTI6XFx0XFx0bGxjcF9zb2NrLm9cXG5uZXQvbmZjL01ha2VmaWxlLTEzLVxcbi0tXFxubmV0L25mYy9sbGNwX3NvY2suYz04MzY9c3RhdGljIGludCBsbGNwX3NvY2tfcmVjdm1zZyhzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBzdHJ1Y3QgbXNnaGRyICptc2csXFxuLS1cXG5uZXQvbmZjL2xsY3Bfc29jay5jLTkyNC1cXG5uZXQvbmZjL2xsY3Bfc29jay5jOjkyNTpzdGF0aWMgY29uc3Qgc3RydWN0IHByb3RvX29wcyBsbGNwX3NvY2tfb3BzID0ge1xcbm5ldC9uZmMvbGxjcF9zb2NrLmMtOTI2LVxcdC5mYW1pbHkgICAgICAgICA9IFBGX05GQyxcXG4tLVxcbm5ldC9uZmMvbGxjcF9zb2NrLmM9MTAzMj1zdGF0aWMgaW50IGxsY3Bfc29ja19jcmVhdGUoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3Qgc29ja2V0ICpzb2NrLFxcbi0tXFxubmV0L25mYy9sbGNwX3NvY2suYy0xMDQ4LVxcdH0gZWxzZSB7XFxubmV0L25mYy9sbGNwX3NvY2suYzoxMDQ5OlxcdFxcdHNvY2stXFx1MDAzZW9wcyA9IFxcdTAwMjZsbGNwX3NvY2tfb3BzO1xcbm5ldC9uZmMvbGxjcF9zb2NrLmMtMTA1MC1cXHR9XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEzVDAyOjA1OjA4LjQwNjM1NTU2WiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMwMzUzNzYyMDEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgcHJlc2VudGVkIGFzIGEgcGVyc29uYWwgdGhvdWdodCBwcm9jZXNzLCBhcyByZXF1ZXN0ZWQ6XG5cbioqTkZDIE9iamVjdCBDb21waWxhdGlvbiBQYXRoKipcblxuQWxyaWdodCwgc28gdGhlIHF1ZXN0aW9uIGlzICp3aGVuKiBpcyB0aGUgb2JqZWN0IGZvciB0aGlzIE5GQyBmdW5jdGlvbmFsaXR5IGNvbXBpbGVkPyBBaCwgcmlnaHQsIGl0IGxvb2tzIGxpa2UgaXQgZ2V0cyBidWlsdCB3aXRoIHRoZSBgbmZjLW9ianNgLiBUaGF0J3MgdGhlIGtleS4gU28sIHRoZSBpbXBsaWNhdGlvbiBoZXJlIGlzIHRoYXQgYG5mYy1vYmpzYCcgY29tcGlsYXRpb24gaXMgdGhlIHRyaWdnZXJpbmcgZXZlbnQuIEJ1dCB3aGVuIGlzICp0aGF0KiBjb21waWxlZD8gQWgsIHRoYXQncyB3aGVuIGBDT05GSUdfTkZDYCBpcyBkZWZpbmVkLiBPa2F5LCBnb29kLiBUaGF0IG1ha2VzIHNlbnNlIGZyb20gYSBjb25kaXRpb25hbCBjb21waWxhdGlvbiBzdGFuZHBvaW50LiBJ4oCZbSBwcmV0dHkgY29uZmlkZW50IHRoYXQgaXMgY29ycmVjdCwgYnV0IGhvbGQgb24gYSBtb21lbnTigKYgbGV0IG1lIGp1c3QgZG91YmxlLWNoZWNrIHRoYXQgYnkgdGFraW5nIGEgcXVpY2sgbG9vayBhdCB0aGUgYG5ldC9uZmMvTWFrZWZpbGVgIHRvIGJlIGFic29sdXRlbHkgY2VydGFpbi4gSnVzdCBhIHF1aWNrIHNhbml0eSBjaGVjayB0byBhdm9pZCBhbnkgYXNzdW1wdGlvbnMuIEdvb2QsIGdvb2QsIGJldHRlciBzYWZlIHRoYW4gc29ycnkuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQyODAsIk91dHB1dFRva2VucyI6MzIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0MSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xM1QwMjowNToxMS40NDE3MzY4MzFaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTE4MDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwibmV0L25mYy9NYWtlZmlsZVwiLFxuICBcIkZpcnN0TGluZVwiOiAxLFxuICBcIkxpbmVDb3VudFwiOiAyMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgICAxOlxcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcXG4gICAyOlxcdCNcXG4gICAzOlxcdCMgTWFrZWZpbGUgZm9yIHRoZSBMaW51eCBORkMgc3Vic3lzdGVtLlxcbiAgIDQ6XFx0I1xcbiAgIDU6XFx0XFxuICAgNjpcXHRvYmotJChDT05GSUdfTkZDKSArPSBuZmMub1xcbiAgIDc6XFx0b2JqLSQoQ09ORklHX05GQ19OQ0kpICs9IG5jaS9cXG4gICA4OlxcdG9iai0kKENPTkZJR19ORkNfSENJKSArPSBoY2kvXFxuICAgOTpcXHRvYmotJChDT05GSUdfTkZDX0RJR0lUQUwpICs9IG5mY19kaWdpdGFsLm9cXG4gIDEwOlxcdFxcbiAgMTE6XFx0bmZjLW9ianMgOj0gY29yZS5vIG5ldGxpbmsubyBhZl9uZmMubyByYXdzb2NrLm8gbGxjcF9jb3JlLm8gbGxjcF9jb21tYW5kcy5vIFxcXFxcXG4gIDEyOlxcdFxcdFxcdGxsY3Bfc29jay5vXFxuICAxMzpcXHRcXG4gIDE0OlxcdG5mY19kaWdpdGFsLW9ianMgOj0gZGlnaXRhbF9jb3JlLm8gZGlnaXRhbF90ZWNobm9sb2d5Lm8gZGlnaXRhbF9kZXAub1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xM1QwMjowNToxMS40NDE4MzQwMzFaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzcyNDcxMTU2MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGJyZWFrZG93biBvZiB0aGlzLlxuXG4qKkZvY3VzaW5nIG9uIHRoZSBORkMgQ29uZmlndXJhdGlvbiBhbmQgQmluZGluZyBGdW5jdGlvbioqXG5cblJpZ2h0LCBzbyBpdCBsb29rcyBsaWtlIGBDT05GSUdfTkZDYCBpcyB0aGUgc29sZSBjb25maWd1cmF0aW9uIGl0ZW0gb2YgaW50ZXJlc3QgaGVyZS4gVGhhdCBzaW1wbGlmaWVzIHRoaW5ncyBpbW1lbnNlbHk7IGF0IGxlYXN0IHdlIGRvbid0IG5lZWQgdG8gY2hhc2UgZG93biBhIG5lc3Qgb2YgcmVsYXRlZCBjb25maWdzLiBOb3csIHdoZXJlJ3MgdGhlIHJlYWwgYWN0aW9uPyBBaCwgaXQgYXBwZWFycyB3ZSdyZSB6ZXJvaW5nIGluIG9uIGBsbGNwX3Jhd19zb2NrX2JpbmRgLiBUaGF0J3MgdGhlIGZ1bmN0aW9uIHRoZSBwYXRjaCBpcyB0YXJnZXRpbmcsIGFuZCB0aGF0J3MgcHJlY2lzZWx5IHdoZXJlIEkgbmVlZCB0byBmb2N1cyBteSBhdHRlbnRpb24uXG5cbkkgc3VwcG9zZSBJIHNob3VsZCBnbGFuY2UgYXJvdW5kIGZvciBhIG1pbnV0ZSB0byBlbnN1cmUgdGhhdCBub3RoaW5nIGVsc2UgbWlnaHQgbmVlZCBhdHRlbnRpb24uIFRoZXJlIGlzIGBsbGNwX3NvY2tfYmluZGAgdG9vLCBidXQgdGhlIGNvbW1pdCBtZXNzYWdlICpleHBsaWNpdGx5KiBtZW50aW9ucyBjaGFuZ2VzIHRvIGBsbGNwX3Jhd19zb2NrX2JpbmRgLCBzbyB0aGF0J3MgdGhlIHByaW1hcnkgdGFyZ2V0LlxuXG5UaW1lIHRvIGRpdmUgaW50byB0aGUgY29kZS4gSSdsbCBuZWVkIHRvIGNoZWNrIHRoZSBkZWZpbml0aW9uIG9mIGBsbGNwX3Jhd19zb2NrX2JpbmRgLCB3aGljaCwgYXMgSSByZWNhbGwsIHNob3VsZCBiZSBsb2NhdGVkIGluIGBuZXQvbmZjL2xsY3Bfc29jay5jYC4gTGV0J3Mgc2VlIHdoYXQncyBjaGFuZ2VkIGFuZCBmaWd1cmUgb3V0IHRoZSBpbXBsaWNhdGlvbnMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ3NzcsIk91dHB1dFRva2VucyI6MzksIk91dHB1dFRob3VnaHRzVG9rZW5zIjo5NCwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEzVDAyOjA1OjE1LjE2NjU0ODUzMloiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMjA3NzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwibmV0L25mYy9sbGNwX3NvY2suY1wiLFxuICBcIkZpcnN0TGluZVwiOiAxNDgsXG4gIFwiTGluZUNvdW50XCI6IDUwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAxNDg6XFx0XFxuIDE0OTpcXHRzdGF0aWMgaW50IGxsY3BfcmF3X3NvY2tfYmluZChzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBzdHJ1Y3Qgc29ja2FkZHJfdW5zaXplZCAqYWRkcixcXG4gMTUwOlxcdFxcdFxcdFxcdCAgICAgIGludCBhbGVuKVxcbiAxNTE6XFx0e1xcbiAxNTI6XFx0XFx0c3RydWN0IHNvY2sgKnNrID0gc29jay1cXHUwMDNlc2s7XFxuIDE1MzpcXHRcXHRzdHJ1Y3QgbmZjX2xsY3Bfc29jayAqbGxjcF9zb2NrID0gbmZjX2xsY3Bfc29jayhzayk7XFxuIDE1NDpcXHRcXHRzdHJ1Y3QgbmZjX2xsY3BfbG9jYWwgKmxvY2FsO1xcbiAxNTU6XFx0XFx0c3RydWN0IG5mY19sbGNwX2xvY2FsICpvbGRfbG9jYWw7XFxuIDE1NjpcXHRcXHRzdHJ1Y3QgbmZjX2RldiAqZGV2O1xcbiAxNTc6XFx0XFx0c3RydWN0IHNvY2thZGRyX25mY19sbGNwIGxsY3BfYWRkcjtcXG4gMTU4OlxcdFxcdGludCBsZW4sIHJldCA9IDA7XFxuIDE1OTpcXHRcXG4gMTYwOlxcdFxcdGlmICghYWRkciB8fCBhbGVuIFxcdTAwM2Mgb2Zmc2V0b2ZlbmQoc3RydWN0IHNvY2thZGRyLCBzYV9mYW1pbHkpIHx8XFxuIDE2MTpcXHRcXHQgICAgYWRkci1cXHUwMDNlc2FfZmFtaWx5ICE9IEFGX05GQylcXG4gMTYyOlxcdFxcdFxcdHJldHVybiAtRUlOVkFMO1xcbiAxNjM6XFx0XFxuIDE2NDpcXHRcXHRwcl9kZWJ1ZyhcXFwic2sgJXAgYWRkciAlcCBmYW1pbHkgJWRcXFxcblxcXCIsIHNrLCBhZGRyLCBhZGRyLVxcdTAwM2VzYV9mYW1pbHkpO1xcbiAxNjU6XFx0XFxuIDE2NjpcXHRcXHRtZW1zZXQoXFx1MDAyNmxsY3BfYWRkciwgMCwgc2l6ZW9mKGxsY3BfYWRkcikpO1xcbiAxNjc6XFx0XFx0bGVuID0gbWluX3QodW5zaWduZWQgaW50LCBzaXplb2YobGxjcF9hZGRyKSwgYWxlbik7XFxuIDE2ODpcXHRcXHRtZW1jcHkoXFx1MDAyNmxsY3BfYWRkciwgYWRkciwgbGVuKTtcXG4gMTY5OlxcdFxcbiAxNzA6XFx0XFx0bG9ja19zb2NrKHNrKTtcXG4gMTcxOlxcdFxcbiAxNzI6XFx0XFx0aWYgKHNrLVxcdTAwM2Vza19zdGF0ZSAhPSBMTENQX0NMT1NFRCkge1xcbiAxNzM6XFx0XFx0XFx0cmV0ID0gLUVCQURGRDtcXG4gMTc0OlxcdFxcdFxcdGdvdG8gZXJyb3I7XFxuIDE3NTpcXHRcXHR9XFxuIDE3NjpcXHRcXG4gMTc3OlxcdFxcdGRldiA9IG5mY19nZXRfZGV2aWNlKGxsY3BfYWRkci5kZXZfaWR4KTtcXG4gMTc4OlxcdFxcdGlmIChkZXYgPT0gTlVMTCkge1xcbiAxNzk6XFx0XFx0XFx0cmV0ID0gLUVOT0RFVjtcXG4gMTgwOlxcdFxcdFxcdGdvdG8gZXJyb3I7XFxuIDE4MTpcXHRcXHR9XFxuIDE4MjpcXHRcXG4gMTgzOlxcdFxcdGxvY2FsID0gbmZjX2xsY3BfZmluZF9sb2NhbChkZXYpO1xcbiAxODQ6XFx0XFx0aWYgKGxvY2FsID09IE5VTEwpIHtcXG4gMTg1OlxcdFxcdFxcdHJldCA9IC1FTk9ERVY7XFxuIDE4NjpcXHRcXHRcXHRnb3RvIHB1dF9kZXY7XFxuIDE4NzpcXHRcXHR9XFxuIDE4ODpcXHRcXG4gMTg5OlxcdFxcdG9sZF9sb2NhbCA9IGxsY3Bfc29jay1cXHUwMDNlbG9jYWw7XFxuIDE5MDpcXHRcXHRsbGNwX3NvY2stXFx1MDAzZWxvY2FsID0gTlVMTDtcXG4gMTkxOlxcdFxcdGxsY3Bfc29jay1cXHUwMDNlZGV2ID0gTlVMTDtcXG4gMTkyOlxcdFxcdG5mY19sbGNwX2xvY2FsX3B1dChvbGRfbG9jYWwpO1xcbiAxOTM6XFx0XFxuIDE5NDpcXHRcXHRsbGNwX3NvY2stXFx1MDAzZWRldiA9IGRldjtcXG4gMTk1OlxcdFxcdGxsY3Bfc29jay1cXHUwMDNlbG9jYWwgPSBsb2NhbDtcXG4gMTk2OlxcdFxcdGxsY3Bfc29jay1cXHUwMDNlbmZjX3Byb3RvY29sID0gbGxjcF9hZGRyLm5mY19wcm90b2NvbDtcXG4gMTk3OlxcdFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xM1QwMjowNToxNS4xNjY3NzE3MzJaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDE5MTA1MTIyNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBLZXkgTmV0d29yayBQYXRjaCoqXG5cbk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgaW50ZXJlc3RpbmcuIEl0IGxvb2tzIGxpa2Ugd2UndmUgZ290IGEgZml4IHRoYXQgYWRkcmVzc2VzIGEgcG90ZW50aWFsIG1lbW9yeSBsZWFrIG9yIGEgdXNlLWFmdGVyLWZyZWUgdnVsbmVyYWJpbGl0eSB3aXRoaW4gdGhlIGBsbGNwX3Jhd19zb2NrX2JpbmRgIGZ1bmN0aW9uLiBTcGVjaWZpY2FsbHksIGl0IHNlZW1zIHRoZSBpc3N1ZSBzdGVtcyBmcm9tIGhvdyB0aGUgYG9sZF9sb2NhbGAgcmVmZXJlbmNlIHdhcyBoYW5kbGVkLiBCeSBwcm9wZXJseSByZWxlYXNpbmcgdGhhdCBvbGQgcmVmZXJlbmNlIGJlZm9yZSBhc3NpZ25pbmcgYSBuZXcgb25lLCB0aGlzIHBhdGNoIGlzIHRpZ2h0ZW5pbmcgdXAgbWVtb3J5IG1hbmFnZW1lbnQuXG5cbkZ1bmN0aW9uYWxseSwgdGhpcyBpcyBhIGRlZmluaXRlIGNoYW5nZSwgd2hpY2ggbWVhbnMgd2UgbmVlZCB0byB0cmVhdCBpdCB3aXRoIGR1ZSBkaWxpZ2VuY2UuIEdpdmVuIHRoYXQgdGhpcyBjb2RlIGlzIGluIGNvcmUgbmV0d29ya2luZywgYW5kIHNlZW1zIHJlYWNoYWJsZSwgaXQgd2FycmFudHMgYSBjbG9zZSBsb29rLiBJdCdzIHRpbWUgdG8gZmlyZSB1cCB0aGUgZnV6emluZyB0b29scyBhbmQgcmVhbGx5IGhhbW1lciBhdCB0aGlzIGFyZWEuIFdlIG5lZWQgdG8gZm9jdXMgdGhvc2UgZnV6emluZyBlZmZvcnRzIHNwZWNpZmljYWxseSBvbiBgbGxjcF9yYXdfc29ja19iaW5kYCwgdGhhdCdzIHRoZSBrZXkgc3ltYm9sIGhlcmUuIEdpdmVuIHRoYXQgdGhpcyBpcyBwb3RlbnRpYWxseSByZWxhdGVkIHRvIE5GQyBmdW5jdGlvbmFsaXR5LCBJIHNob3VsZCBwcm9iYWJseSBtYWtlIHN1cmUgdGhlIGBORkNgIGNvbmZpZyBpcyBlbmFibGVkIGR1cmluZyB0ZXN0aW5nIHRvIGdldCBtYXhpbXVtIGNvdmVyYWdlLiBMZXQncyBzZWUgaWYgd2UgY2FuIGZpbmQgYW55IHJlZ3Jlc3Npb24gYnVncyBoZXJlLCBnaXZlbiB0aGF0IHRoaXMgbG9va3MgbGlrZSBhIGZ1bmN0aW9uYWwgaW1wcm92ZW1lbnQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU5MjAsIk91dHB1dFRva2VucyI6OTcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMTIsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xM1QwMjowNToxOS4zNTc4MjU0NjlaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozMDMyNDIxODgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk5GQ1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImxsY3BfcmF3X3NvY2tfYmluZFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgcG90ZW50aWFsIG1lbW9yeSBsZWFrIG9yIHVzZS1hZnRlci1mcmVlIGluIHRoZSBgbGxjcF9yYXdfc29ja19iaW5kYCBmdW5jdGlvbiBieSBwcm9wZXJseSByZWxlYXNpbmcgdGhlIG9sZCBgbG9jYWxgIHJlZmVyZW5jZSBiZWZvcmUgYXNzaWduaW5nIGEgbmV3IG9uZS4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHJlYWNoYWJsZSBjb3JlIG5ldHdvcmtpbmcgY29kZS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJORkNcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJsbGNwX3Jhd19zb2NrX2JpbmRcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIHBvdGVudGlhbCBtZW1vcnkgbGVhayBvciB1c2UtYWZ0ZXItZnJlZSBpbiB0aGUgYGxsY3BfcmF3X3NvY2tfYmluZGAgZnVuY3Rpb24gYnkgcHJvcGVybHkgcmVsZWFzaW5nIHRoZSBvbGQgYGxvY2FsYCByZWZlcmVuY2UgYmVmb3JlIGFzc2lnbmluZyBhIG5ldyBvbmUuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiByZWFjaGFibGUgY29yZSBuZXR3b3JraW5nIGNvZGUuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },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-workflowncz59[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-13 01:26:01 +0000 UTC FinishedAt: 2026-07-13 02:05:21 +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": "3f1f755366687d051174739fb99f7d560202f60b", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NFC" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "3f1f755366687d051174739fb99f7d560202f60b", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NFC" ], "series_id": "812f38be-a2de-4eb9-84f4-888f8f5832b2" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "llcp_raw_sock_bind" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEzIDAyOjA0PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05GQyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2xsY3BfcmF3X3NvY2tfYmluZCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIHBvdGVudGlhbCBtZW1vcnkgbGVhayBvciB1c2UtYWZ0ZXItZnJlZSBpbiB0aGUgYGxsY3BfcmF3X3NvY2tfYmluZGAgZnVuY3Rpb24gYnkgcHJvcGVybHkgcmVsZWFzaW5nIHRoZSBvbGQgYGxvY2FsYCByZWZlcmVuY2UgYmVmb3JlIGFzc2lnbmluZyBhIG5ldyBvbmUuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiByZWFjaGFibGUgY29yZSBuZXR3b3JraW5nIGNvZGUuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTMgMDI6MDQ8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCBjNGFiYjY4ZGQ1NGE5NWNmZGIwMGY5MTA3MzdhNDZmZDUwZmFkNmFiXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIE1vbiBKdWwgMTMgMDI6MDQ6NDkgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbmV0L25mYy9sbGNwX3NvY2suYyBiL25ldC9uZmMvbGxjcF9zb2NrLmNcbmluZGV4IGZlYWIyOWZjNjJmNDRiLi4wYzAwY2RhYWJiYzYxMSAxMDA2NDRcbi0tLSBhL25ldC9uZmMvbGxjcF9zb2NrLmNcbiYjNDM7JiM0MzsmIzQzOyBiL25ldC9uZmMvbGxjcF9zb2NrLmNcbkBAIC0xNTIsNiAmIzQzOzE1Miw3IEBAIHN0YXRpYyBpbnQgbGxjcF9yYXdfc29ja19iaW5kKHN0cnVjdCBzb2NrZXQgKnNvY2ssIHN0cnVjdCBzb2NrYWRkcl91bnNpemVkICphZGRyXG4gXHRzdHJ1Y3Qgc29jayAqc2sgPSBzb2NrLVx1MDAzZXNrO1xuIFx0c3RydWN0IG5mY19sbGNwX3NvY2sgKmxsY3Bfc29jayA9IG5mY19sbGNwX3NvY2soc2spO1xuIFx0c3RydWN0IG5mY19sbGNwX2xvY2FsICpsb2NhbDtcbiYjNDM7XHRzdHJ1Y3QgbmZjX2xsY3BfbG9jYWwgKm9sZF9sb2NhbDtcbiBcdHN0cnVjdCBuZmNfZGV2ICpkZXY7XG4gXHRzdHJ1Y3Qgc29ja2FkZHJfbmZjX2xsY3AgbGxjcF9hZGRyO1xuIFx0aW50IGxlbiwgcmV0ID0gMDtcbkBAIC0xODUsNiAmIzQzOzE4NiwxMSBAQCBzdGF0aWMgaW50IGxsY3BfcmF3X3NvY2tfYmluZChzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBzdHJ1Y3Qgc29ja2FkZHJfdW5zaXplZCAqYWRkclxuIFx0XHRnb3RvIHB1dF9kZXY7XG4gXHR9XG4gXG4mIzQzO1x0b2xkX2xvY2FsID0gbGxjcF9zb2NrLVx1MDAzZWxvY2FsO1xuJiM0MztcdGxsY3Bfc29jay1cdTAwM2Vsb2NhbCA9IE5VTEw7XG4mIzQzO1x0bGxjcF9zb2NrLVx1MDAzZWRldiA9IE5VTEw7XG4mIzQzO1x0bmZjX2xsY3BfbG9jYWxfcHV0KG9sZF9sb2NhbCk7XG4mIzQzO1xuIFx0bGxjcF9zb2NrLVx1MDAzZWRldiA9IGRldjtcbiBcdGxsY3Bfc29jay1cdTAwM2Vsb2NhbCA9IGxvY2FsO1xuIFx0bGxjcF9zb2NrLVx1MDAzZW5mY19wcm90b2NvbCA9IGxsY3BfYWRkci5uZmNfcHJvdG9jb2w7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTMgMDI6MDQ8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7TkZDJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7bGxjcF9yYXdfc29ja19iaW5kJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgcG90ZW50aWFsIG1lbW9yeSBsZWFrIG9yIHVzZS1hZnRlci1mcmVlIGluIHRoZSBgbGxjcF9yYXdfc29ja19iaW5kYCBmdW5jdGlvbiBieSBwcm9wZXJseSByZWxlYXNpbmcgdGhlIG9sZCBgbG9jYWxgIHJlZmVyZW5jZSBiZWZvcmUgYXNzaWduaW5nIGEgbmV3IG9uZS4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHJlYWNoYWJsZSBjb3JlIG5ldHdvcmtpbmcgY29kZS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLApldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXQKICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LAogICBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgYzRhYmI2OGRkNTRhOTVjZmRiMDBmOTEwNzM3YTQ2ZmQ1MGZhZDZhYgpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBNb24gSnVsIDEzIDAyOjA0OjQ5IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvbmV0L25mYy9sbGNwX3NvY2suYyBiL25ldC9uZmMvbGxjcF9zb2NrLmMKaW5kZXggZmVhYjI5ZmM2MmY0NGIuLjBjMDBjZGFhYmJjNjExIDEwMDY0NAotLS0gYS9uZXQvbmZjL2xsY3Bfc29jay5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC9uZmMvbGxjcF9zb2NrLmMKQEAgLTE1Miw2ICYjNDM7MTUyLDcgQEAgc3RhdGljIGludCBsbGNwX3Jhd19zb2NrX2JpbmQoc3RydWN0IHNvY2tldCAqc29jaywgc3RydWN0IHNvY2thZGRyX3Vuc2l6ZWQgKmFkZHIKIAlzdHJ1Y3Qgc29jayAqc2sgPSBzb2NrLSZndDtzazsKIAlzdHJ1Y3QgbmZjX2xsY3Bfc29jayAqbGxjcF9zb2NrID0gbmZjX2xsY3Bfc29jayhzayk7CiAJc3RydWN0IG5mY19sbGNwX2xvY2FsICpsb2NhbDsKJiM0MzsJc3RydWN0IG5mY19sbGNwX2xvY2FsICpvbGRfbG9jYWw7CiAJc3RydWN0IG5mY19kZXYgKmRldjsKIAlzdHJ1Y3Qgc29ja2FkZHJfbmZjX2xsY3AgbGxjcF9hZGRyOwogCWludCBsZW4sIHJldCA9IDA7CkBAIC0xODUsNiAmIzQzOzE4NiwxMSBAQCBzdGF0aWMgaW50IGxsY3BfcmF3X3NvY2tfYmluZChzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBzdHJ1Y3Qgc29ja2FkZHJfdW5zaXplZCAqYWRkcgogCQlnb3RvIHB1dF9kZXY7CiAJfQogCiYjNDM7CW9sZF9sb2NhbCA9IGxsY3Bfc29jay0mZ3Q7bG9jYWw7CiYjNDM7CWxsY3Bfc29jay0mZ3Q7bG9jYWwgPSBOVUxMOwomIzQzOwlsbGNwX3NvY2stJmd0O2RldiA9IE5VTEw7CiYjNDM7CW5mY19sbGNwX2xvY2FsX3B1dChvbGRfbG9jYWwpOwomIzQzOwogCWxsY3Bfc29jay0mZ3Q7ZGV2ID0gZGV2OwogCWxsY3Bfc29jay0mZ3Q7bG9jYWwgPSBsb2NhbDsKIAlsbGNwX3NvY2stJmd0O25mY19wcm90b2NvbCA9IGxsY3BfYWRkci5uZmNfcHJvdG9jb2w7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEzIDAyOjA0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIwMTIKCQkJCQkJCW91dHB1dDogMzkKCQkJCQkJCXRob3VnaHRzOiAxOTEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgTkZDIExMQ1AgU29ja2V0IFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O3ZlIGdvdCB0aGlzIHBhdGNoIGhlcmUgdGhhdCYjMzk7cyB0b3VjaGluZyBgbmV0L25mYy9sbGNwX3NvY2suY2AuIFNlZW1zIGxpa2UgdGhlIGNoYW5nZSBpcyBpbiB0aGUgYGxsY3BfcmF3X3NvY2tfYmluZGAgZnVuY3Rpb24uIFJlYWRpbmcgdGhlIGNvZGUsIGl0IGxvb2tzIGxpa2UgdGhleSYjMzk7cmUgYWRkaW5nIGEgZmV3IGxpbmVzOgoKYGBgYwoJb2xkX2xvY2FsID0gbGxjcF9zb2NrLSZndDtsb2NhbDsKCWxsY3Bfc29jay0mZ3Q7bG9jYWwgPSBOVUxMOwoJbGxjcF9zb2NrLSZndDtkZXYgPSBOVUxMOwoJbmZjX2xsY3BfbG9jYWxfcHV0KG9sZF9sb2NhbCk7CmBgYAoKUmlnaHQsIHRoaXMgaXMgYSBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkIGZ1bmN0aW9uYWwgY2hhbmdlLiBJbW1lZGlhdGVseSwgSSBzZWUgdGhlIHB1cnBvc2U6IHRoZXkmIzM5O3JlIGNsZWFuaW5nIHVwIHRoZSBvbGQgYGxsY3Bfc29jay0mZ3Q7bG9jYWxgIGJlZm9yZSBhc3NpZ25pbmcgYSBuZXcgb25lLiBUaGlzIGlzIGdvb2Q7IGl0JiMzOTtzIHByZXZlbnRpbmcgYSBwb3RlbnRpYWwgbWVtb3J5IGxlYWsgb3IgYSB1c2UtYWZ0ZXItZnJlZSBzY2VuYXJpby4gVGhpcyBpcyBhIGNvbW1vbiBhbmQgb2Z0ZW4gb3Zlcmxvb2tlZCBpc3N1ZSwgZXNwZWNpYWxseSBpbiBuZXR3b3JraW5nIGNvZGUgd2l0aCBjb21wbGV4IG9iamVjdCBtYW5hZ2VtZW50LgoKTm93LCBsZXQmIzM5O3MganVzdCBtYWtlIHN1cmUgaXQmIzM5O3MgY29ycmVjdC4gSSB3YW50IHRvIHRha2UgYSBjbG9zZXIgbG9vayBhdCB0aGUgc3Vycm91bmRpbmcgY29kZSBpbiBgbGxjcF9yYXdfc29ja19iaW5kYCBpdHNlbGYgYW5kIHRoZSByZWxhdGVkIGZ1bmN0aW9ucy4gSSYjMzk7bGwgdXNlIGBncmVwcGVyYCB0byBxdWlja2x5IGxvY2F0ZSB0aGUgZnVuY3Rpb24gd2l0aGluIHRoZSBgbmV0L25mYy9sbGNwX3NvY2suY2AgZmlsZSBhbmQgdW5kZXJzdGFuZCB0aGUgY29udGV4dCBiZXR0ZXIuIEkgd2FudCB0byBtYWtlIHN1cmUgdGhpcyBjaGFuZ2UgZG9lc24mIzM5O3QgaW50cm9kdWNlIGFueSByZWdyZXNzaW9ucyBvciB1bmludGVuZGVkIGNvbnNlcXVlbmNlcyBpbiB0aGUgYmluZGluZyBwcm9jZXNzLiBJJiMzOTtsbCBuZWVkIHRvIGNoZWNrIGhvdyBgbGxjcF9zb2NrLSZndDtsb2NhbGAgYW5kIGBsbGNwX3NvY2stJmd0O2RldmAgYXJlIHVzZWQgYWZ0ZXIgdGhlIGBiaW5kYCB0byBlbnN1cmUgdGhlIGNsZWFuIHVwIGRvZXNuJiMzOTt0IGJyZWFrIGFueXRoaW5nLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEzIDAyOjA0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2xsY3BfcmF3X3NvY2tfYmluZCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9uZmMvbGxjcF9zb2NrLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L25mYy9sbGNwX3NvY2suYz01OT1zdGF0aWMgaW50IGxsY3Bfc29ja19iaW5kKHN0cnVjdCBzb2NrZXQgKnNvY2ssIHN0cnVjdCBzb2NrYWRkcl91bnNpemVkICphZGRyLCBpbnQgYWxlbilcbi0tXG5uZXQvbmZjL2xsY3Bfc29jay5jLTE0OC1cbm5ldC9uZmMvbGxjcF9zb2NrLmM6MTQ5OnN0YXRpYyBpbnQgbGxjcF9yYXdfc29ja19iaW5kKHN0cnVjdCBzb2NrZXQgKnNvY2ssIHN0cnVjdCBzb2NrYWRkcl91bnNpemVkICphZGRyLFxubmV0L25mYy9sbGNwX3NvY2suYy0xNTAtXHRcdFx0ICAgICAgaW50IGFsZW4pXG4tLVxubmV0L25mYy9sbGNwX3NvY2suYz05NDU9c3RhdGljIGNvbnN0IHN0cnVjdCBwcm90b19vcHMgbGxjcF9yYXdzb2NrX29wcyA9IHtcbi0tXG5uZXQvbmZjL2xsY3Bfc29jay5jLTk0Ny1cdC5vd25lciAgICAgICAgICA9IFRISVNfTU9EVUxFLFxubmV0L25mYy9sbGNwX3NvY2suYzo5NDg6XHQuYmluZCAgICAgICAgICAgPSBsbGNwX3Jhd19zb2NrX2JpbmQsXG5uZXQvbmZjL2xsY3Bfc29jay5jLTk0OS1cdC5jb25uZWN0ICAgICAgICA9IHNvY2tfbm9fY29ubmVjdCxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMyAwMjowNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyODQ0CgkJCQkJCQlvdXRwdXQ6IDMwCgkJCQkJCQl0aG91Z2h0czogNjEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBMTENQIFJhdyBTb2NrZXQgQmluZGluZyoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgYGxsY3BfcmF3X3NvY2tfYmluZGAgYW5kIGl0JiMzOTtzIHByZXR0eSBjbGVhciB0aGlzIGlzIHRoZSBgYmluZGAgZnVuY3Rpb24gZm9yIHRoZSBgbGxjcF9yYXdzb2NrX29wc2Agc3RydWN0dXJlLiBNYWtlcyBwZXJmZWN0IHNlbnNlLiBUaGlzIG1lYW5zLCBhcyBJIHN1c3BlY3RlZCwgdGhpcyBmdW5jdGlvbiBpcyB0aGUgZW50cnkgcG9pbnQgZm9yIGhhbmRsaW5nIHRoZSBgYmluZCgpYCBzeXN0ZW0gY2FsbCB3aGVuIGEgdXNlci1zcGFjZSBhcHBsaWNhdGlvbiBhdHRlbXB0cyB0byBiaW5kIGEgcmF3IE5GQyBMTENQIHNvY2tldC4gU2VlbXMgc3RyYWlnaHRmb3J3YXJkIHNvIGZhci4gTm93LCBqdXN0IHRvIGJlIGFic29sdXRlbHkgc3VyZSwgSSBzaG91bGQgZG91YmxlIGNoZWNrIHRoZSByZWxldmFudCBLY29uZmlnIG9wdGlvbnMgZm9yIE5GQyBMTENQIHN1cHBvcnQgdG8gY29uZmlybSB0aGF0IHRoaXMgcGF0aCBpcyBhY3R1YWxseSBlbmFibGVkIGFuZCByZWFjaGFibGUgaW4gdGhlIGtlcm5lbCYjMzk7cyBjb25maWd1cmF0aW9uLiBHb3R0YSBiZSBtZXRpY3Vsb3VzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEzIDAyOjA1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIE5GQ19MTENQJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L25mYy8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEzIDAyOjA1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMwOTMKCQkJCQkJCW91dHB1dDogMjcKCQkJCQkJCXRob3VnaHRzOiA5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkludmVzdGlnYXRpbmcgTkZDIENvbmZpZ3VyYXRpb24qKgoKQWxyaWdodCwgdGltZSB0byBnZXQgZG93biB0byBicmFzcyB0YWNrcy4gSSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGUgTkZDIHN1cHBvcnQgaXMgY29uZmlndXJlZCBjb3JyZWN0bHksIG9yIGF0IGxlYXN0IHVuZGVyc3RhbmQgd2hhdCBvcHRpb25zIGFyZSBhdmFpbGFibGUgYW5kIGhvdyB0aGV5JiMzOTtyZSBzZXQgdXAuIE15IGltbWVkaWF0ZSBpbnN0aW5jdCBpcyB0byBkaXZlIGludG8gdGhlIEtjb25maWcgZmlsZXMuIFRoaXMgaXMgd2hlcmUgdGhlIGNvcmUgY29uZmlndXJhdGlvbiBkZWNpc2lvbnMgYXJlIG1hZGUsIGFuZCBpdCYjMzk7cyB3aGVyZSBJJiMzOTtsbCBmaW5kIHRoZSBkZXBlbmRlbmNpZXMsIGRlZmF1bHRzLCBhbmQgcG90ZW50aWFsIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyByZWxhdGVkIHRvIE5GQy4gSSYjMzk7bGwgbmVlZCB0byByZW1lbWJlciB0aGUgdHlwaWNhbCBuYW1pbmcgY29udmVudGlvbnMgYW5kIGhvdyB0aGUgcHJvamVjdCBzdHJ1Y3R1cmVzIGl0cyBjb25maWcgZmlsZXMgc28gSSBjYW4gcXVpY2tseSBpZGVudGlmeSB0aGUgcmVsZXZhbnQgc2VjdGlvbi4gSSYjMzk7bGwgYmUgbG9va2luZyBmb3IgdGhpbmdzIGxpa2UgZGV2aWNlIGRyaXZlcnMsIHByb3RvY29sIHN1cHBvcnQsIGFuZCBhbnkgcGxhdGZvcm0tc3BlY2lmaWMgY29uZmlndXJhdGlvbnMgcmVsYXRlZCB0byBORkMgY29udHJvbGxlcnMgb3Igc2VjdXJlIGVsZW1lbnRzLiBLbm93aW5nIHRoaXMsIEkgY2FuIHN0YXJ0IHRvIHVuZGVyc3RhbmQgdGhlIGNvbXBsZXRlIHBpY3R1cmUgb2YgaG93IE5GQyBpcyBjb25maWd1cmVkIHdpdGhpbiB0aGUgZXhpc3Rpbmcgc3lzdGVtLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEzIDAyOjA1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBORkMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbmZjLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbmZjL0tjb25maWctNS1cbm5ldC9uZmMvS2NvbmZpZzo2Om1lbnVjb25maWcgTkZDXG5uZXQvbmZjL0tjb25maWctNy1cdGRlcGVuZHMgb24gUkZLSUxMIHx8ICFSRktJTExcbi0tXG5uZXQvbmZjL0tjb25maWctMTYtXG5uZXQvbmZjL0tjb25maWc6MTc6Y29uZmlnIE5GQ19ESUdJVEFMXG5uZXQvbmZjL0tjb25maWctMTgtXHRkZXBlbmRzIG9uIE5GQ1xuLS1cbm5ldC9uZmMvaGNpL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbm5ldC9uZmMvaGNpL0tjb25maWc6Mjpjb25maWcgTkZDX0hDSVxubmV0L25mYy9oY2kvS2NvbmZpZy0zLVx0ZGVwZW5kcyBvbiBORkNcbi0tXG5uZXQvbmZjL2hjaS9LY29uZmlnLTEwLVxubmV0L25mYy9oY2kvS2NvbmZpZzoxMTpjb25maWcgTkZDX1NIRExDXG5uZXQvbmZjL2hjaS9LY29uZmlnLTEyLVx0ZGVwZW5kcyBvbiBORkNfSENJXG4tLVxubmV0L25mYy9uY2kvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxubmV0L25mYy9uY2kvS2NvbmZpZzoyOmNvbmZpZyBORkNfTkNJXG5uZXQvbmZjL25jaS9LY29uZmlnLTMtXHRkZXBlbmRzIG9uIE5GQ1xuLS1cbm5ldC9uZmMvbmNpL0tjb25maWctMTItXG5uZXQvbmZjL25jaS9LY29uZmlnOjEzOmNvbmZpZyBORkNfTkNJX1NQSVxubmV0L25mYy9uY2kvS2NvbmZpZy0xNC1cdGRlcGVuZHMgb24gTkZDX05DSSBcdTAwMjZcdTAwMjYgU1BJXG4tLVxubmV0L25mYy9uY2kvS2NvbmZpZy0yMy1cbm5ldC9uZmMvbmNpL0tjb25maWc6MjQ6Y29uZmlnIE5GQ19OQ0lfVUFSVFxubmV0L25mYy9uY2kvS2NvbmZpZy0yNS1cdGRlcGVuZHMgb24gTkZDX05DSSBcdTAwMjZcdTAwMjYgVFRZXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTMgMDI6MDU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzczMAoJCQkJCQkJb3V0cHV0OiAzMQoJCQkJCQkJdGhvdWdodHM6IDMzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCBwcmVzZW50ZWQgYXMgYSBmaXJzdC1wZXJzb24gZXhwZXJ0IHN1bW1hcnk6CgoqKkFuYWx5emluZyBORkMgQ29uZmlndXJhdGlvbiBSZXF1aXJlbWVudHMqKgoKQWxyaWdodCwgdGhlIGNvcmUgY29uZmlndXJhdGlvbiBpbiBxdWVzdGlvbiBpcyBgTkZDYC4gTXkgaW5pdGlhbCBmb2N1cyBpcyBvbiBgbmV0L25mYy9sbGNwX3NvY2suY2AuIEkgbmVlZCB0byBxdWlja2x5IGRldGVybWluZSBpZiBgTkZDYCBpcyAqYWxsKiB0aGF0JiMzOTtzIHJlcXVpcmVkIGZvciB0aGlzIHBhcnRpY3VsYXIgbW9kdWxlLCBvciBpZiB0aGVyZSBhcmUgYW55IG90aGVyIHN1cHBvcnRpbmcgY29uZmlndXJhdGlvbnMgb3IgZGVwZW5kZW5jaWVzIEkgbmVlZCB0byBiZSBhd2FyZSBvZiB3aXRoaW4gdGhlIGN1cnJlbnQgYnVpbGQgZW52aXJvbm1lbnQuIEkgbmVlZCB0byBlbnN1cmUgYSBjb21wbGV0ZSBhbmQgY29ycmVjdCBidWlsZC4gSXQmIzM5O3MgYWJvdXQgZWZmaWNpZW5jeTsgSSBjYW4mIzM5O3QgYWZmb3JkIHRvIHdhc3RlIHRpbWUgY2hhc2luZyBkb3duIGJ1aWxkIGVycm9ycyBsYXRlciBkdWUgdG8gYSBtaXNzaW5nIG9yIG1pc2NvbmZpZ3VyZWQgb3B0aW9uLiBNeSBkZWVwIHVuZGVyc3RhbmRpbmcgb2YgdGhpcyBuZXR3b3JraW5nIHN1YnN5c3RlbSBpbmZvcm1zIHRoZSBuZWNlc3NpdHkgdG8gY2FyZWZ1bGx5IGV4YW1pbmUgdGhpcyBgbGxjcF9zb2NrLmNgIHNwZWNpZmljYWxseS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTMgMDI6MDU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bGxjcF9zb2NrLm8mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbmZjLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbmZjL01ha2VmaWxlPTExPW5mYy1vYmpzIDo9IGNvcmUubyBuZXRsaW5rLm8gYWZfbmZjLm8gcmF3c29jay5vIGxsY3BfY29yZS5vIGxsY3BfY29tbWFuZHMubyBcXFxubmV0L25mYy9NYWtlZmlsZToxMjpcdFx0bGxjcF9zb2NrLm9cbm5ldC9uZmMvTWFrZWZpbGUtMTMtXG4tLVxubmV0L25mYy9sbGNwX3NvY2suYz04MzY9c3RhdGljIGludCBsbGNwX3NvY2tfcmVjdm1zZyhzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBzdHJ1Y3QgbXNnaGRyICptc2csXG4tLVxubmV0L25mYy9sbGNwX3NvY2suYy05MjQtXG5uZXQvbmZjL2xsY3Bfc29jay5jOjkyNTpzdGF0aWMgY29uc3Qgc3RydWN0IHByb3RvX29wcyBsbGNwX3NvY2tfb3BzID0ge1xubmV0L25mYy9sbGNwX3NvY2suYy05MjYtXHQuZmFtaWx5ICAgICAgICAgPSBQRl9ORkMsXG4tLVxubmV0L25mYy9sbGNwX3NvY2suYz0xMDMyPXN0YXRpYyBpbnQgbGxjcF9zb2NrX2NyZWF0ZShzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBzb2NrZXQgKnNvY2ssXG4tLVxubmV0L25mYy9sbGNwX3NvY2suYy0xMDQ4LVx0fSBlbHNlIHtcbm5ldC9uZmMvbGxjcF9zb2NrLmM6MTA0OTpcdFx0c29jay1cdTAwM2VvcHMgPSBcdTAwMjZsbGNwX3NvY2tfb3BzO1xubmV0L25mYy9sbGNwX3NvY2suYy0xMDUwLVx0fVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMyAwMjowNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0MjgwCgkJCQkJCQlvdXRwdXQ6IDMyCgkJCQkJCQl0aG91Z2h0czogNDEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIHByZXNlbnRlZCBhcyBhIHBlcnNvbmFsIHRob3VnaHQgcHJvY2VzcywgYXMgcmVxdWVzdGVkOgoKKipORkMgT2JqZWN0IENvbXBpbGF0aW9uIFBhdGgqKgoKQWxyaWdodCwgc28gdGhlIHF1ZXN0aW9uIGlzICp3aGVuKiBpcyB0aGUgb2JqZWN0IGZvciB0aGlzIE5GQyBmdW5jdGlvbmFsaXR5IGNvbXBpbGVkPyBBaCwgcmlnaHQsIGl0IGxvb2tzIGxpa2UgaXQgZ2V0cyBidWlsdCB3aXRoIHRoZSBgbmZjLW9ianNgLiBUaGF0JiMzOTtzIHRoZSBrZXkuIFNvLCB0aGUgaW1wbGljYXRpb24gaGVyZSBpcyB0aGF0IGBuZmMtb2Jqc2AmIzM5OyBjb21waWxhdGlvbiBpcyB0aGUgdHJpZ2dlcmluZyBldmVudC4gQnV0IHdoZW4gaXMgKnRoYXQqIGNvbXBpbGVkPyBBaCwgdGhhdCYjMzk7cyB3aGVuIGBDT05GSUdfTkZDYCBpcyBkZWZpbmVkLiBPa2F5LCBnb29kLiBUaGF0IG1ha2VzIHNlbnNlIGZyb20gYSBjb25kaXRpb25hbCBjb21waWxhdGlvbiBzdGFuZHBvaW50LiBJ4oCZbSBwcmV0dHkgY29uZmlkZW50IHRoYXQgaXMgY29ycmVjdCwgYnV0IGhvbGQgb24gYSBtb21lbnTigKYgbGV0IG1lIGp1c3QgZG91YmxlLWNoZWNrIHRoYXQgYnkgdGFraW5nIGEgcXVpY2sgbG9vayBhdCB0aGUgYG5ldC9uZmMvTWFrZWZpbGVgIHRvIGJlIGFic29sdXRlbHkgY2VydGFpbi4gSnVzdCBhIHF1aWNrIHNhbml0eSBjaGVjayB0byBhdm9pZCBhbnkgYXNzdW1wdGlvbnMuIEdvb2QsIGdvb2QsIGJldHRlciBzYWZlIHRoYW4gc29ycnkuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEzIDAyOjA1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7bmV0L25mYy9NYWtlZmlsZSYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAgMTpcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcbiAgIDI6XHQjXG4gICAzOlx0IyBNYWtlZmlsZSBmb3IgdGhlIExpbnV4IE5GQyBzdWJzeXN0ZW0uXG4gICA0Olx0I1xuICAgNTpcdFxuICAgNjpcdG9iai0kKENPTkZJR19ORkMpICYjNDM7PSBuZmMub1xuICAgNzpcdG9iai0kKENPTkZJR19ORkNfTkNJKSAmIzQzOz0gbmNpL1xuICAgODpcdG9iai0kKENPTkZJR19ORkNfSENJKSAmIzQzOz0gaGNpL1xuICAgOTpcdG9iai0kKENPTkZJR19ORkNfRElHSVRBTCkgJiM0Mzs9IG5mY19kaWdpdGFsLm9cbiAgMTA6XHRcbiAgMTE6XHRuZmMtb2JqcyA6PSBjb3JlLm8gbmV0bGluay5vIGFmX25mYy5vIHJhd3NvY2subyBsbGNwX2NvcmUubyBsbGNwX2NvbW1hbmRzLm8gXFxcbiAgMTI6XHRcdFx0bGxjcF9zb2NrLm9cbiAgMTM6XHRcbiAgMTQ6XHRuZmNfZGlnaXRhbC1vYmpzIDo9IGRpZ2l0YWxfY29yZS5vIGRpZ2l0YWxfdGVjaG5vbG9neS5vIGRpZ2l0YWxfZGVwLm9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTMgMDI6MDU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDc3NwoJCQkJCQkJb3V0cHV0OiAzOQoJCQkJCQkJdGhvdWdodHM6IDk0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGJyZWFrZG93biBvZiB0aGlzLgoKKipGb2N1c2luZyBvbiB0aGUgTkZDIENvbmZpZ3VyYXRpb24gYW5kIEJpbmRpbmcgRnVuY3Rpb24qKgoKUmlnaHQsIHNvIGl0IGxvb2tzIGxpa2UgYENPTkZJR19ORkNgIGlzIHRoZSBzb2xlIGNvbmZpZ3VyYXRpb24gaXRlbSBvZiBpbnRlcmVzdCBoZXJlLiBUaGF0IHNpbXBsaWZpZXMgdGhpbmdzIGltbWVuc2VseTsgYXQgbGVhc3Qgd2UgZG9uJiMzOTt0IG5lZWQgdG8gY2hhc2UgZG93biBhIG5lc3Qgb2YgcmVsYXRlZCBjb25maWdzLiBOb3csIHdoZXJlJiMzOTtzIHRoZSByZWFsIGFjdGlvbj8gQWgsIGl0IGFwcGVhcnMgd2UmIzM5O3JlIHplcm9pbmcgaW4gb24gYGxsY3BfcmF3X3NvY2tfYmluZGAuIFRoYXQmIzM5O3MgdGhlIGZ1bmN0aW9uIHRoZSBwYXRjaCBpcyB0YXJnZXRpbmcsIGFuZCB0aGF0JiMzOTtzIHByZWNpc2VseSB3aGVyZSBJIG5lZWQgdG8gZm9jdXMgbXkgYXR0ZW50aW9uLgoKSSBzdXBwb3NlIEkgc2hvdWxkIGdsYW5jZSBhcm91bmQgZm9yIGEgbWludXRlIHRvIGVuc3VyZSB0aGF0IG5vdGhpbmcgZWxzZSBtaWdodCBuZWVkIGF0dGVudGlvbi4gVGhlcmUgaXMgYGxsY3Bfc29ja19iaW5kYCB0b28sIGJ1dCB0aGUgY29tbWl0IG1lc3NhZ2UgKmV4cGxpY2l0bHkqIG1lbnRpb25zIGNoYW5nZXMgdG8gYGxsY3BfcmF3X3NvY2tfYmluZGAsIHNvIHRoYXQmIzM5O3MgdGhlIHByaW1hcnkgdGFyZ2V0LgoKVGltZSB0byBkaXZlIGludG8gdGhlIGNvZGUuIEkmIzM5O2xsIG5lZWQgdG8gY2hlY2sgdGhlIGRlZmluaXRpb24gb2YgYGxsY3BfcmF3X3NvY2tfYmluZGAsIHdoaWNoLCBhcyBJIHJlY2FsbCwgc2hvdWxkIGJlIGxvY2F0ZWQgaW4gYG5ldC9uZmMvbGxjcF9zb2NrLmNgLiBMZXQmIzM5O3Mgc2VlIHdoYXQmIzM5O3MgY2hhbmdlZCBhbmQgZmlndXJlIG91dCB0aGUgaW1wbGljYXRpb25zLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMyAwMjowNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O25ldC9uZmMvbGxjcF9zb2NrLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxNDgsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNTAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDE0ODpcdFxuIDE0OTpcdHN0YXRpYyBpbnQgbGxjcF9yYXdfc29ja19iaW5kKHN0cnVjdCBzb2NrZXQgKnNvY2ssIHN0cnVjdCBzb2NrYWRkcl91bnNpemVkICphZGRyLFxuIDE1MDpcdFx0XHRcdCAgICAgIGludCBhbGVuKVxuIDE1MTpcdHtcbiAxNTI6XHRcdHN0cnVjdCBzb2NrICpzayA9IHNvY2stXHUwMDNlc2s7XG4gMTUzOlx0XHRzdHJ1Y3QgbmZjX2xsY3Bfc29jayAqbGxjcF9zb2NrID0gbmZjX2xsY3Bfc29jayhzayk7XG4gMTU0Olx0XHRzdHJ1Y3QgbmZjX2xsY3BfbG9jYWwgKmxvY2FsO1xuIDE1NTpcdFx0c3RydWN0IG5mY19sbGNwX2xvY2FsICpvbGRfbG9jYWw7XG4gMTU2Olx0XHRzdHJ1Y3QgbmZjX2RldiAqZGV2O1xuIDE1NzpcdFx0c3RydWN0IHNvY2thZGRyX25mY19sbGNwIGxsY3BfYWRkcjtcbiAxNTg6XHRcdGludCBsZW4sIHJldCA9IDA7XG4gMTU5Olx0XG4gMTYwOlx0XHRpZiAoIWFkZHIgfHwgYWxlbiBcdTAwM2Mgb2Zmc2V0b2ZlbmQoc3RydWN0IHNvY2thZGRyLCBzYV9mYW1pbHkpIHx8XG4gMTYxOlx0XHQgICAgYWRkci1cdTAwM2VzYV9mYW1pbHkgIT0gQUZfTkZDKVxuIDE2MjpcdFx0XHRyZXR1cm4gLUVJTlZBTDtcbiAxNjM6XHRcbiAxNjQ6XHRcdHByX2RlYnVnKFwmIzM0O3NrICVwIGFkZHIgJXAgZmFtaWx5ICVkXFxuXCYjMzQ7LCBzaywgYWRkciwgYWRkci1cdTAwM2VzYV9mYW1pbHkpO1xuIDE2NTpcdFxuIDE2NjpcdFx0bWVtc2V0KFx1MDAyNmxsY3BfYWRkciwgMCwgc2l6ZW9mKGxsY3BfYWRkcikpO1xuIDE2NzpcdFx0bGVuID0gbWluX3QodW5zaWduZWQgaW50LCBzaXplb2YobGxjcF9hZGRyKSwgYWxlbik7XG4gMTY4Olx0XHRtZW1jcHkoXHUwMDI2bGxjcF9hZGRyLCBhZGRyLCBsZW4pO1xuIDE2OTpcdFxuIDE3MDpcdFx0bG9ja19zb2NrKHNrKTtcbiAxNzE6XHRcbiAxNzI6XHRcdGlmIChzay1cdTAwM2Vza19zdGF0ZSAhPSBMTENQX0NMT1NFRCkge1xuIDE3MzpcdFx0XHRyZXQgPSAtRUJBREZEO1xuIDE3NDpcdFx0XHRnb3RvIGVycm9yO1xuIDE3NTpcdFx0fVxuIDE3NjpcdFxuIDE3NzpcdFx0ZGV2ID0gbmZjX2dldF9kZXZpY2UobGxjcF9hZGRyLmRldl9pZHgpO1xuIDE3ODpcdFx0aWYgKGRldiA9PSBOVUxMKSB7XG4gMTc5Olx0XHRcdHJldCA9IC1FTk9ERVY7XG4gMTgwOlx0XHRcdGdvdG8gZXJyb3I7XG4gMTgxOlx0XHR9XG4gMTgyOlx0XG4gMTgzOlx0XHRsb2NhbCA9IG5mY19sbGNwX2ZpbmRfbG9jYWwoZGV2KTtcbiAxODQ6XHRcdGlmIChsb2NhbCA9PSBOVUxMKSB7XG4gMTg1Olx0XHRcdHJldCA9IC1FTk9ERVY7XG4gMTg2Olx0XHRcdGdvdG8gcHV0X2RldjtcbiAxODc6XHRcdH1cbiAxODg6XHRcbiAxODk6XHRcdG9sZF9sb2NhbCA9IGxsY3Bfc29jay1cdTAwM2Vsb2NhbDtcbiAxOTA6XHRcdGxsY3Bfc29jay1cdTAwM2Vsb2NhbCA9IE5VTEw7XG4gMTkxOlx0XHRsbGNwX3NvY2stXHUwMDNlZGV2ID0gTlVMTDtcbiAxOTI6XHRcdG5mY19sbGNwX2xvY2FsX3B1dChvbGRfbG9jYWwpO1xuIDE5MzpcdFxuIDE5NDpcdFx0bGxjcF9zb2NrLVx1MDAzZWRldiA9IGRldjtcbiAxOTU6XHRcdGxsY3Bfc29jay1cdTAwM2Vsb2NhbCA9IGxvY2FsO1xuIDE5NjpcdFx0bGxjcF9zb2NrLVx1MDAzZW5mY19wcm90b2NvbCA9IGxsY3BfYWRkci5uZmNfcHJvdG9jb2w7XG4gMTk3Olx0XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEzIDAyOjA1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDU5MjAKCQkJCQkJCW91dHB1dDogOTcKCQkJCQkJCXRob3VnaHRzOiAxMTIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgS2V5IE5ldHdvcmsgUGF0Y2gqKgoKT2theSwgc28gdGhpcyBwYXRjaCBpcyBpbnRlcmVzdGluZy4gSXQgbG9va3MgbGlrZSB3ZSYjMzk7dmUgZ290IGEgZml4IHRoYXQgYWRkcmVzc2VzIGEgcG90ZW50aWFsIG1lbW9yeSBsZWFrIG9yIGEgdXNlLWFmdGVyLWZyZWUgdnVsbmVyYWJpbGl0eSB3aXRoaW4gdGhlIGBsbGNwX3Jhd19zb2NrX2JpbmRgIGZ1bmN0aW9uLiBTcGVjaWZpY2FsbHksIGl0IHNlZW1zIHRoZSBpc3N1ZSBzdGVtcyBmcm9tIGhvdyB0aGUgYG9sZF9sb2NhbGAgcmVmZXJlbmNlIHdhcyBoYW5kbGVkLiBCeSBwcm9wZXJseSByZWxlYXNpbmcgdGhhdCBvbGQgcmVmZXJlbmNlIGJlZm9yZSBhc3NpZ25pbmcgYSBuZXcgb25lLCB0aGlzIHBhdGNoIGlzIHRpZ2h0ZW5pbmcgdXAgbWVtb3J5IG1hbmFnZW1lbnQuCgpGdW5jdGlvbmFsbHksIHRoaXMgaXMgYSBkZWZpbml0ZSBjaGFuZ2UsIHdoaWNoIG1lYW5zIHdlIG5lZWQgdG8gdHJlYXQgaXQgd2l0aCBkdWUgZGlsaWdlbmNlLiBHaXZlbiB0aGF0IHRoaXMgY29kZSBpcyBpbiBjb3JlIG5ldHdvcmtpbmcsIGFuZCBzZWVtcyByZWFjaGFibGUsIGl0IHdhcnJhbnRzIGEgY2xvc2UgbG9vay4gSXQmIzM5O3MgdGltZSB0byBmaXJlIHVwIHRoZSBmdXp6aW5nIHRvb2xzIGFuZCByZWFsbHkgaGFtbWVyIGF0IHRoaXMgYXJlYS4gV2UgbmVlZCB0byBmb2N1cyB0aG9zZSBmdXp6aW5nIGVmZm9ydHMgc3BlY2lmaWNhbGx5IG9uIGBsbGNwX3Jhd19zb2NrX2JpbmRgLCB0aGF0JiMzOTtzIHRoZSBrZXkgc3ltYm9sIGhlcmUuIEdpdmVuIHRoYXQgdGhpcyBpcyBwb3RlbnRpYWxseSByZWxhdGVkIHRvIE5GQyBmdW5jdGlvbmFsaXR5LCBJIHNob3VsZCBwcm9iYWJseSBtYWtlIHN1cmUgdGhlIGBORkNgIGNvbmZpZyBpcyBlbmFibGVkIGR1cmluZyB0ZXN0aW5nIHRvIGdldCBtYXhpbXVtIGNvdmVyYWdlLiBMZXQmIzM5O3Mgc2VlIGlmIHdlIGNhbiBmaW5kIGFueSByZWdyZXNzaW9uIGJ1Z3MgaGVyZSwgZ2l2ZW4gdGhhdCB0aGlzIGxvb2tzIGxpa2UgYSBmdW5jdGlvbmFsIGltcHJvdmVtZW50LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMyAwMjowNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7TkZDJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7bGxjcF9yYXdfc29ja19iaW5kJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgcG90ZW50aWFsIG1lbW9yeSBsZWFrIG9yIHVzZS1hZnRlci1mcmVlIGluIHRoZSBgbGxjcF9yYXdfc29ja19iaW5kYCBmdW5jdGlvbiBieSBwcm9wZXJseSByZWxlYXNpbmcgdGhlIG9sZCBgbG9jYWxgIHJlZmVyZW5jZSBiZWZvcmUgYXNzaWduaW5nIGEgbmV3IG9uZS4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHJlYWNoYWJsZSBjb3JlIG5ldHdvcmtpbmcgY29kZS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7TkZDJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7bGxjcF9yYXdfc29ja19iaW5kJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgcG90ZW50aWFsIG1lbW9yeSBsZWFrIG9yIHVzZS1hZnRlci1mcmVlIGluIHRoZSBgbGxjcF9yYXdfc29ja19iaW5kYCBmdW5jdGlvbiBieSBwcm9wZXJseSByZWxlYXNpbmcgdGhlIG9sZCBgbG9jYWxgIHJlZmVyZW5jZSBiZWZvcmUgYXNzaWduaW5nIGEgbmV3IG9uZS4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHJlYWNoYWJsZSBjb3JlIG5ldHdvcmtpbmcgY29kZS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEzVDAyOjA0OjUxLjY3ODc2MTc0OFoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI3OTgyMzI3MDIwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk5GQ1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImxsY3BfcmF3X3NvY2tfYmluZFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgcG90ZW50aWFsIG1lbW9yeSBsZWFrIG9yIHVzZS1hZnRlci1mcmVlIGluIHRoZSBgbGxjcF9yYXdfc29ja19iaW5kYCBmdW5jdGlvbiBieSBwcm9wZXJseSByZWxlYXNpbmcgdGhlIG9sZCBgbG9jYWxgIHJlZmVyZW5jZSBiZWZvcmUgYXNzaWduaW5nIGEgbmV3IG9uZS4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHJlYWNoYWJsZSBjb3JlIG5ldHdvcmtpbmcgY29kZS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTNUMDI6MDQ6NTEuNjc4NzY4MzY4WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1OTM3NjkzMjgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCBjNGFiYjY4ZGQ1NGE5NWNmZGIwMGY5MTA3MzdhNDZmZDUwZmFkNmFiXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBNb24gSnVsIDEzIDAyOjA0OjQ5IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL25ldC9uZmMvbGxjcF9zb2NrLmMgYi9uZXQvbmZjL2xsY3Bfc29jay5jXFxuaW5kZXggZmVhYjI5ZmM2MmY0NGIuLjBjMDBjZGFhYmJjNjExIDEwMDY0NFxcbi0tLSBhL25ldC9uZmMvbGxjcF9zb2NrLmNcXG4rKysgYi9uZXQvbmZjL2xsY3Bfc29jay5jXFxuQEAgLTE1Miw2ICsxNTIsNyBAQCBzdGF0aWMgaW50IGxsY3BfcmF3X3NvY2tfYmluZChzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBzdHJ1Y3Qgc29ja2FkZHJfdW5zaXplZCAqYWRkclxcbiBcXHRzdHJ1Y3Qgc29jayAqc2sgPSBzb2NrLVxcdTAwM2VzaztcXG4gXFx0c3RydWN0IG5mY19sbGNwX3NvY2sgKmxsY3Bfc29jayA9IG5mY19sbGNwX3NvY2soc2spO1xcbiBcXHRzdHJ1Y3QgbmZjX2xsY3BfbG9jYWwgKmxvY2FsO1xcbitcXHRzdHJ1Y3QgbmZjX2xsY3BfbG9jYWwgKm9sZF9sb2NhbDtcXG4gXFx0c3RydWN0IG5mY19kZXYgKmRldjtcXG4gXFx0c3RydWN0IHNvY2thZGRyX25mY19sbGNwIGxsY3BfYWRkcjtcXG4gXFx0aW50IGxlbiwgcmV0ID0gMDtcXG5AQCAtMTg1LDYgKzE4NiwxMSBAQCBzdGF0aWMgaW50IGxsY3BfcmF3X3NvY2tfYmluZChzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBzdHJ1Y3Qgc29ja2FkZHJfdW5zaXplZCAqYWRkclxcbiBcXHRcXHRnb3RvIHB1dF9kZXY7XFxuIFxcdH1cXG4gXFxuK1xcdG9sZF9sb2NhbCA9IGxsY3Bfc29jay1cXHUwMDNlbG9jYWw7XFxuK1xcdGxsY3Bfc29jay1cXHUwMDNlbG9jYWwgPSBOVUxMO1xcbitcXHRsbGNwX3NvY2stXFx1MDAzZWRldiA9IE5VTEw7XFxuK1xcdG5mY19sbGNwX2xvY2FsX3B1dChvbGRfbG9jYWwpO1xcbitcXG4gXFx0bGxjcF9zb2NrLVxcdTAwM2VkZXYgPSBkZXY7XFxuIFxcdGxsY3Bfc29jay1cXHUwMDNlbG9jYWwgPSBsb2NhbDtcXG4gXFx0bGxjcF9zb2NrLVxcdTAwM2VuZmNfcHJvdG9jb2wgPSBsbGNwX2FkZHIubmZjX3Byb3RvY29sO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xM1QwMjowNDo1Mi4yNzU3NTA4OTRaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI3Mzg1MzI0NzYzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk5GQ1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImxsY3BfcmF3X3NvY2tfYmluZFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgcG90ZW50aWFsIG1lbW9yeSBsZWFrIG9yIHVzZS1hZnRlci1mcmVlIGluIHRoZSBgbGxjcF9yYXdfc29ja19iaW5kYCBmdW5jdGlvbiBieSBwcm9wZXJseSByZWxlYXNpbmcgdGhlIG9sZCBgbG9jYWxgIHJlZmVyZW5jZSBiZWZvcmUgYXNzaWduaW5nIGEgbmV3IG9uZS4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHJlYWNoYWJsZSBjb3JlIG5ldHdvcmtpbmcgY29kZS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdFxuICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LFxuICAgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCBjNGFiYjY4ZGQ1NGE5NWNmZGIwMGY5MTA3MzdhNDZmZDUwZmFkNmFiXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIE1vbiBKdWwgMTMgMDI6MDQ6NDkgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9uZXQvbmZjL2xsY3Bfc29jay5jIGIvbmV0L25mYy9sbGNwX3NvY2suY1xuaW5kZXggZmVhYjI5ZmM2MmY0NGIuLjBjMDBjZGFhYmJjNjExIDEwMDY0NFxuLS0tIGEvbmV0L25mYy9sbGNwX3NvY2suY1xuKysrIGIvbmV0L25mYy9sbGNwX3NvY2suY1xuQEAgLTE1Miw2ICsxNTIsNyBAQCBzdGF0aWMgaW50IGxsY3BfcmF3X3NvY2tfYmluZChzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBzdHJ1Y3Qgc29ja2FkZHJfdW5zaXplZCAqYWRkclxuIFx0c3RydWN0IHNvY2sgKnNrID0gc29jay1cdTAwM2VzaztcbiBcdHN0cnVjdCBuZmNfbGxjcF9zb2NrICpsbGNwX3NvY2sgPSBuZmNfbGxjcF9zb2NrKHNrKTtcbiBcdHN0cnVjdCBuZmNfbGxjcF9sb2NhbCAqbG9jYWw7XG4rXHRzdHJ1Y3QgbmZjX2xsY3BfbG9jYWwgKm9sZF9sb2NhbDtcbiBcdHN0cnVjdCBuZmNfZGV2ICpkZXY7XG4gXHRzdHJ1Y3Qgc29ja2FkZHJfbmZjX2xsY3AgbGxjcF9hZGRyO1xuIFx0aW50IGxlbiwgcmV0ID0gMDtcbkBAIC0xODUsNiArMTg2LDExIEBAIHN0YXRpYyBpbnQgbGxjcF9yYXdfc29ja19iaW5kKHN0cnVjdCBzb2NrZXQgKnNvY2ssIHN0cnVjdCBzb2NrYWRkcl91bnNpemVkICphZGRyXG4gXHRcdGdvdG8gcHV0X2RldjtcbiBcdH1cbiBcbitcdG9sZF9sb2NhbCA9IGxsY3Bfc29jay1cdTAwM2Vsb2NhbDtcbitcdGxsY3Bfc29jay1cdTAwM2Vsb2NhbCA9IE5VTEw7XG4rXHRsbGNwX3NvY2stXHUwMDNlZGV2ID0gTlVMTDtcbitcdG5mY19sbGNwX2xvY2FsX3B1dChvbGRfbG9jYWwpO1xuK1xuIFx0bGxjcF9zb2NrLVx1MDAzZWRldiA9IGRldjtcbiBcdGxsY3Bfc29jay1cdTAwM2Vsb2NhbCA9IGxvY2FsO1xuIFx0bGxjcF9zb2NrLVx1MDAzZW5mY19wcm90b2NvbCA9IGxsY3BfYWRkci5uZmNfcHJvdG9jb2w7XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xM1QwMjowNDo1Mi4yNzU3NTMwNTRaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2MjAyOTU1NzYyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIE5GQyBMTENQIFNvY2tldCBQYXRjaCoqXG5cbk9rYXksIHNvIEkndmUgZ290IHRoaXMgcGF0Y2ggaGVyZSB0aGF0J3MgdG91Y2hpbmcgYG5ldC9uZmMvbGxjcF9zb2NrLmNgLiBTZWVtcyBsaWtlIHRoZSBjaGFuZ2UgaXMgaW4gdGhlIGBsbGNwX3Jhd19zb2NrX2JpbmRgIGZ1bmN0aW9uLiBSZWFkaW5nIHRoZSBjb2RlLCBpdCBsb29rcyBsaWtlIHRoZXkncmUgYWRkaW5nIGEgZmV3IGxpbmVzOlxuXG5gYGBjXG5cdG9sZF9sb2NhbCA9IGxsY3Bfc29jay1cdTAwM2Vsb2NhbDtcblx0bGxjcF9zb2NrLVx1MDAzZWxvY2FsID0gTlVMTDtcblx0bGxjcF9zb2NrLVx1MDAzZWRldiA9IE5VTEw7XG5cdG5mY19sbGNwX2xvY2FsX3B1dChvbGRfbG9jYWwpO1xuYGBgXG5cblJpZ2h0LCB0aGlzIGlzIGEgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZCBmdW5jdGlvbmFsIGNoYW5nZS4gSW1tZWRpYXRlbHksIEkgc2VlIHRoZSBwdXJwb3NlOiB0aGV5J3JlIGNsZWFuaW5nIHVwIHRoZSBvbGQgYGxsY3Bfc29jay1cdTAwM2Vsb2NhbGAgYmVmb3JlIGFzc2lnbmluZyBhIG5ldyBvbmUuIFRoaXMgaXMgZ29vZDsgaXQncyBwcmV2ZW50aW5nIGEgcG90ZW50aWFsIG1lbW9yeSBsZWFrIG9yIGEgdXNlLWFmdGVyLWZyZWUgc2NlbmFyaW8uIFRoaXMgaXMgYSBjb21tb24gYW5kIG9mdGVuIG92ZXJsb29rZWQgaXNzdWUsIGVzcGVjaWFsbHkgaW4gbmV0d29ya2luZyBjb2RlIHdpdGggY29tcGxleCBvYmplY3QgbWFuYWdlbWVudC5cblxuTm93LCBsZXQncyBqdXN0IG1ha2Ugc3VyZSBpdCdzIGNvcnJlY3QuIEkgd2FudCB0byB0YWtlIGEgY2xvc2VyIGxvb2sgYXQgdGhlIHN1cnJvdW5kaW5nIGNvZGUgaW4gYGxsY3BfcmF3X3NvY2tfYmluZGAgaXRzZWxmIGFuZCB0aGUgcmVsYXRlZCBmdW5jdGlvbnMuIEknbGwgdXNlIGBncmVwcGVyYCB0byBxdWlja2x5IGxvY2F0ZSB0aGUgZnVuY3Rpb24gd2l0aGluIHRoZSBgbmV0L25mYy9sbGNwX3NvY2suY2AgZmlsZSBhbmQgdW5kZXJzdGFuZCB0aGUgY29udGV4dCBiZXR0ZXIuIEkgd2FudCB0byBtYWtlIHN1cmUgdGhpcyBjaGFuZ2UgZG9lc24ndCBpbnRyb2R1Y2UgYW55IHJlZ3Jlc3Npb25zIG9yIHVuaW50ZW5kZWQgY29uc2VxdWVuY2VzIGluIHRoZSBiaW5kaW5nIHByb2Nlc3MuIEknbGwgbmVlZCB0byBjaGVjayBob3cgYGxsY3Bfc29jay1cdTAwM2Vsb2NhbGAgYW5kIGBsbGNwX3NvY2stXHUwMDNlZGV2YCBhcmUgdXNlZCBhZnRlciB0aGUgYGJpbmRgIHRvIGVuc3VyZSB0aGUgY2xlYW4gdXAgZG9lc24ndCBicmVhayBhbnl0aGluZy5cblxuXG4iLCJJbnB1dFRva2VucyI6MjAxMiwiT3V0cHV0VG9rZW5zIjozOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE5MSwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEzVDAyOjA0OjU4LjQ3ODcxMDc3N1oiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNjE4MzAyOTgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibGxjcF9yYXdfc29ja19iaW5kXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9uZmMvbGxjcF9zb2NrLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L25mYy9sbGNwX3NvY2suYz01OT1zdGF0aWMgaW50IGxsY3Bfc29ja19iaW5kKHN0cnVjdCBzb2NrZXQgKnNvY2ssIHN0cnVjdCBzb2NrYWRkcl91bnNpemVkICphZGRyLCBpbnQgYWxlbilcXG4tLVxcbm5ldC9uZmMvbGxjcF9zb2NrLmMtMTQ4LVxcbm5ldC9uZmMvbGxjcF9zb2NrLmM6MTQ5OnN0YXRpYyBpbnQgbGxjcF9yYXdfc29ja19iaW5kKHN0cnVjdCBzb2NrZXQgKnNvY2ssIHN0cnVjdCBzb2NrYWRkcl91bnNpemVkICphZGRyLFxcbm5ldC9uZmMvbGxjcF9zb2NrLmMtMTUwLVxcdFxcdFxcdCAgICAgIGludCBhbGVuKVxcbi0tXFxubmV0L25mYy9sbGNwX3NvY2suYz05NDU9c3RhdGljIGNvbnN0IHN0cnVjdCBwcm90b19vcHMgbGxjcF9yYXdzb2NrX29wcyA9IHtcXG4tLVxcbm5ldC9uZmMvbGxjcF9zb2NrLmMtOTQ3LVxcdC5vd25lciAgICAgICAgICA9IFRISVNfTU9EVUxFLFxcbm5ldC9uZmMvbGxjcF9zb2NrLmM6OTQ4OlxcdC5iaW5kICAgICAgICAgICA9IGxsY3BfcmF3X3NvY2tfYmluZCxcXG5uZXQvbmZjL2xsY3Bfc29jay5jLTk0OS1cXHQuY29ubmVjdCAgICAgICAgPSBzb2NrX25vX2Nvbm5lY3QsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEzVDAyOjA0OjU4LjY0MDU0NzIwNVoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMxMDc1NTQ0NjYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBMTENQIFJhdyBTb2NrZXQgQmluZGluZyoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IGBsbGNwX3Jhd19zb2NrX2JpbmRgIGFuZCBpdCdzIHByZXR0eSBjbGVhciB0aGlzIGlzIHRoZSBgYmluZGAgZnVuY3Rpb24gZm9yIHRoZSBgbGxjcF9yYXdzb2NrX29wc2Agc3RydWN0dXJlLiBNYWtlcyBwZXJmZWN0IHNlbnNlLiBUaGlzIG1lYW5zLCBhcyBJIHN1c3BlY3RlZCwgdGhpcyBmdW5jdGlvbiBpcyB0aGUgZW50cnkgcG9pbnQgZm9yIGhhbmRsaW5nIHRoZSBgYmluZCgpYCBzeXN0ZW0gY2FsbCB3aGVuIGEgdXNlci1zcGFjZSBhcHBsaWNhdGlvbiBhdHRlbXB0cyB0byBiaW5kIGEgcmF3IE5GQyBMTENQIHNvY2tldC4gU2VlbXMgc3RyYWlnaHRmb3J3YXJkIHNvIGZhci4gTm93LCBqdXN0IHRvIGJlIGFic29sdXRlbHkgc3VyZSwgSSBzaG91bGQgZG91YmxlIGNoZWNrIHRoZSByZWxldmFudCBLY29uZmlnIG9wdGlvbnMgZm9yIE5GQyBMTENQIHN1cHBvcnQgdG8gY29uZmlybSB0aGF0IHRoaXMgcGF0aCBpcyBhY3R1YWxseSBlbmFibGVkIGFuZCByZWFjaGFibGUgaW4gdGhlIGtlcm5lbCdzIGNvbmZpZ3VyYXRpb24uIEdvdHRhIGJlIG1ldGljdWxvdXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI4NDQsIk91dHB1dFRva2VucyI6MzAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2MSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xM1QwMjowNTowMS43NDgxMDM4N1oiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyODIzMjA0NjksIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBORkNfTExDUFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvbmZjL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTNUMDI6MDU6MDIuMDMwNDMzNDlaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyNjc5MzE2MDQ3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipJbnZlc3RpZ2F0aW5nIE5GQyBDb25maWd1cmF0aW9uKipcblxuQWxyaWdodCwgdGltZSB0byBnZXQgZG93biB0byBicmFzcyB0YWNrcy4gSSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGUgTkZDIHN1cHBvcnQgaXMgY29uZmlndXJlZCBjb3JyZWN0bHksIG9yIGF0IGxlYXN0IHVuZGVyc3RhbmQgd2hhdCBvcHRpb25zIGFyZSBhdmFpbGFibGUgYW5kIGhvdyB0aGV5J3JlIHNldCB1cC4gTXkgaW1tZWRpYXRlIGluc3RpbmN0IGlzIHRvIGRpdmUgaW50byB0aGUgS2NvbmZpZyBmaWxlcy4gVGhpcyBpcyB3aGVyZSB0aGUgY29yZSBjb25maWd1cmF0aW9uIGRlY2lzaW9ucyBhcmUgbWFkZSwgYW5kIGl0J3Mgd2hlcmUgSSdsbCBmaW5kIHRoZSBkZXBlbmRlbmNpZXMsIGRlZmF1bHRzLCBhbmQgcG90ZW50aWFsIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyByZWxhdGVkIHRvIE5GQy4gSSdsbCBuZWVkIHRvIHJlbWVtYmVyIHRoZSB0eXBpY2FsIG5hbWluZyBjb252ZW50aW9ucyBhbmQgaG93IHRoZSBwcm9qZWN0IHN0cnVjdHVyZXMgaXRzIGNvbmZpZyBmaWxlcyBzbyBJIGNhbiBxdWlja2x5IGlkZW50aWZ5IHRoZSByZWxldmFudCBzZWN0aW9uLiBJJ2xsIGJlIGxvb2tpbmcgZm9yIHRoaW5ncyBsaWtlIGRldmljZSBkcml2ZXJzLCBwcm90b2NvbCBzdXBwb3J0LCBhbmQgYW55IHBsYXRmb3JtLXNwZWNpZmljIGNvbmZpZ3VyYXRpb25zIHJlbGF0ZWQgdG8gTkZDIGNvbnRyb2xsZXJzIG9yIHNlY3VyZSBlbGVtZW50cy4gS25vd2luZyB0aGlzLCBJIGNhbiBzdGFydCB0byB1bmRlcnN0YW5kIHRoZSBjb21wbGV0ZSBwaWN0dXJlIG9mIGhvdyBORkMgaXMgY29uZmlndXJlZCB3aXRoaW4gdGhlIGV4aXN0aW5nIHN5c3RlbS5cblxuXG4iLCJJbnB1dFRva2VucyI6MzA5MywiT3V0cHV0VG9rZW5zIjoyNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTNUMDI6MDU6MDQuNzA5NzUxNDA3WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIxOTM2NzY1NCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgTkZDXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9uZmMvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9uZmMvS2NvbmZpZy01LVxcbm5ldC9uZmMvS2NvbmZpZzo2Om1lbnVjb25maWcgTkZDXFxubmV0L25mYy9LY29uZmlnLTctXFx0ZGVwZW5kcyBvbiBSRktJTEwgfHwgIVJGS0lMTFxcbi0tXFxubmV0L25mYy9LY29uZmlnLTE2LVxcbm5ldC9uZmMvS2NvbmZpZzoxNzpjb25maWcgTkZDX0RJR0lUQUxcXG5uZXQvbmZjL0tjb25maWctMTgtXFx0ZGVwZW5kcyBvbiBORkNcXG4tLVxcbm5ldC9uZmMvaGNpL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG5uZXQvbmZjL2hjaS9LY29uZmlnOjI6Y29uZmlnIE5GQ19IQ0lcXG5uZXQvbmZjL2hjaS9LY29uZmlnLTMtXFx0ZGVwZW5kcyBvbiBORkNcXG4tLVxcbm5ldC9uZmMvaGNpL0tjb25maWctMTAtXFxubmV0L25mYy9oY2kvS2NvbmZpZzoxMTpjb25maWcgTkZDX1NIRExDXFxubmV0L25mYy9oY2kvS2NvbmZpZy0xMi1cXHRkZXBlbmRzIG9uIE5GQ19IQ0lcXG4tLVxcbm5ldC9uZmMvbmNpL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG5uZXQvbmZjL25jaS9LY29uZmlnOjI6Y29uZmlnIE5GQ19OQ0lcXG5uZXQvbmZjL25jaS9LY29uZmlnLTMtXFx0ZGVwZW5kcyBvbiBORkNcXG4tLVxcbm5ldC9uZmMvbmNpL0tjb25maWctMTItXFxubmV0L25mYy9uY2kvS2NvbmZpZzoxMzpjb25maWcgTkZDX05DSV9TUElcXG5uZXQvbmZjL25jaS9LY29uZmlnLTE0LVxcdGRlcGVuZHMgb24gTkZDX05DSSBcXHUwMDI2XFx1MDAyNiBTUElcXG4tLVxcbm5ldC9uZmMvbmNpL0tjb25maWctMjMtXFxubmV0L25mYy9uY2kvS2NvbmZpZzoyNDpjb25maWcgTkZDX05DSV9VQVJUXFxubmV0L25mYy9uY2kvS2NvbmZpZy0yNS1cXHRkZXBlbmRzIG9uIE5GQ19OQ0kgXFx1MDAyNlxcdTAwMjYgVFRZXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEzVDAyOjA1OjA0LjkyOTEyNTA0MVoiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMxNjA1MDI5MjIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgcHJlc2VudGVkIGFzIGEgZmlyc3QtcGVyc29uIGV4cGVydCBzdW1tYXJ5OlxuXG4qKkFuYWx5emluZyBORkMgQ29uZmlndXJhdGlvbiBSZXF1aXJlbWVudHMqKlxuXG5BbHJpZ2h0LCB0aGUgY29yZSBjb25maWd1cmF0aW9uIGluIHF1ZXN0aW9uIGlzIGBORkNgLiBNeSBpbml0aWFsIGZvY3VzIGlzIG9uIGBuZXQvbmZjL2xsY3Bfc29jay5jYC4gSSBuZWVkIHRvIHF1aWNrbHkgZGV0ZXJtaW5lIGlmIGBORkNgIGlzICphbGwqIHRoYXQncyByZXF1aXJlZCBmb3IgdGhpcyBwYXJ0aWN1bGFyIG1vZHVsZSwgb3IgaWYgdGhlcmUgYXJlIGFueSBvdGhlciBzdXBwb3J0aW5nIGNvbmZpZ3VyYXRpb25zIG9yIGRlcGVuZGVuY2llcyBJIG5lZWQgdG8gYmUgYXdhcmUgb2Ygd2l0aGluIHRoZSBjdXJyZW50IGJ1aWxkIGVudmlyb25tZW50LiBJIG5lZWQgdG8gZW5zdXJlIGEgY29tcGxldGUgYW5kIGNvcnJlY3QgYnVpbGQuIEl0J3MgYWJvdXQgZWZmaWNpZW5jeTsgSSBjYW4ndCBhZmZvcmQgdG8gd2FzdGUgdGltZSBjaGFzaW5nIGRvd24gYnVpbGQgZXJyb3JzIGxhdGVyIGR1ZSB0byBhIG1pc3Npbmcgb3IgbWlzY29uZmlndXJlZCBvcHRpb24uIE15IGRlZXAgdW5kZXJzdGFuZGluZyBvZiB0aGlzIG5ldHdvcmtpbmcgc3Vic3lzdGVtIGluZm9ybXMgdGhlIG5lY2Vzc2l0eSB0byBjYXJlZnVsbHkgZXhhbWluZSB0aGlzIGBsbGNwX3NvY2suY2Agc3BlY2lmaWNhbGx5LlxuXG5cbiIsIklucHV0VG9rZW5zIjozNzMwLCJPdXRwdXRUb2tlbnMiOjMxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTNUMDI6MDU6MDguMDg5NjMwNzYzWiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozMTY3MTc3ODcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibGxjcF9zb2NrLm9cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L25mYy9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L25mYy9NYWtlZmlsZT0xMT1uZmMtb2JqcyA6PSBjb3JlLm8gbmV0bGluay5vIGFmX25mYy5vIHJhd3NvY2subyBsbGNwX2NvcmUubyBsbGNwX2NvbW1hbmRzLm8gXFxcXFxcbm5ldC9uZmMvTWFrZWZpbGU6MTI6XFx0XFx0bGxjcF9zb2NrLm9cXG5uZXQvbmZjL01ha2VmaWxlLTEzLVxcbi0tXFxubmV0L25mYy9sbGNwX3NvY2suYz04MzY9c3RhdGljIGludCBsbGNwX3NvY2tfcmVjdm1zZyhzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBzdHJ1Y3QgbXNnaGRyICptc2csXFxuLS1cXG5uZXQvbmZjL2xsY3Bfc29jay5jLTkyNC1cXG5uZXQvbmZjL2xsY3Bfc29jay5jOjkyNTpzdGF0aWMgY29uc3Qgc3RydWN0IHByb3RvX29wcyBsbGNwX3NvY2tfb3BzID0ge1xcbm5ldC9uZmMvbGxjcF9zb2NrLmMtOTI2LVxcdC5mYW1pbHkgICAgICAgICA9IFBGX05GQyxcXG4tLVxcbm5ldC9uZmMvbGxjcF9zb2NrLmM9MTAzMj1zdGF0aWMgaW50IGxsY3Bfc29ja19jcmVhdGUoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3Qgc29ja2V0ICpzb2NrLFxcbi0tXFxubmV0L25mYy9sbGNwX3NvY2suYy0xMDQ4LVxcdH0gZWxzZSB7XFxubmV0L25mYy9sbGNwX3NvY2suYzoxMDQ5OlxcdFxcdHNvY2stXFx1MDAzZW9wcyA9IFxcdTAwMjZsbGNwX3NvY2tfb3BzO1xcbm5ldC9uZmMvbGxjcF9zb2NrLmMtMTA1MC1cXHR9XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEzVDAyOjA1OjA4LjQwNjM1NTU2WiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMwMzUzNzYyMDEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgcHJlc2VudGVkIGFzIGEgcGVyc29uYWwgdGhvdWdodCBwcm9jZXNzLCBhcyByZXF1ZXN0ZWQ6XG5cbioqTkZDIE9iamVjdCBDb21waWxhdGlvbiBQYXRoKipcblxuQWxyaWdodCwgc28gdGhlIHF1ZXN0aW9uIGlzICp3aGVuKiBpcyB0aGUgb2JqZWN0IGZvciB0aGlzIE5GQyBmdW5jdGlvbmFsaXR5IGNvbXBpbGVkPyBBaCwgcmlnaHQsIGl0IGxvb2tzIGxpa2UgaXQgZ2V0cyBidWlsdCB3aXRoIHRoZSBgbmZjLW9ianNgLiBUaGF0J3MgdGhlIGtleS4gU28sIHRoZSBpbXBsaWNhdGlvbiBoZXJlIGlzIHRoYXQgYG5mYy1vYmpzYCcgY29tcGlsYXRpb24gaXMgdGhlIHRyaWdnZXJpbmcgZXZlbnQuIEJ1dCB3aGVuIGlzICp0aGF0KiBjb21waWxlZD8gQWgsIHRoYXQncyB3aGVuIGBDT05GSUdfTkZDYCBpcyBkZWZpbmVkLiBPa2F5LCBnb29kLiBUaGF0IG1ha2VzIHNlbnNlIGZyb20gYSBjb25kaXRpb25hbCBjb21waWxhdGlvbiBzdGFuZHBvaW50LiBJ4oCZbSBwcmV0dHkgY29uZmlkZW50IHRoYXQgaXMgY29ycmVjdCwgYnV0IGhvbGQgb24gYSBtb21lbnTigKYgbGV0IG1lIGp1c3QgZG91YmxlLWNoZWNrIHRoYXQgYnkgdGFraW5nIGEgcXVpY2sgbG9vayBhdCB0aGUgYG5ldC9uZmMvTWFrZWZpbGVgIHRvIGJlIGFic29sdXRlbHkgY2VydGFpbi4gSnVzdCBhIHF1aWNrIHNhbml0eSBjaGVjayB0byBhdm9pZCBhbnkgYXNzdW1wdGlvbnMuIEdvb2QsIGdvb2QsIGJldHRlciBzYWZlIHRoYW4gc29ycnkuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQyODAsIk91dHB1dFRva2VucyI6MzIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0MSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xM1QwMjowNToxMS40NDE3MzY4MzFaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTE4MDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwibmV0L25mYy9NYWtlZmlsZVwiLFxuICBcIkZpcnN0TGluZVwiOiAxLFxuICBcIkxpbmVDb3VudFwiOiAyMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgICAxOlxcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcXG4gICAyOlxcdCNcXG4gICAzOlxcdCMgTWFrZWZpbGUgZm9yIHRoZSBMaW51eCBORkMgc3Vic3lzdGVtLlxcbiAgIDQ6XFx0I1xcbiAgIDU6XFx0XFxuICAgNjpcXHRvYmotJChDT05GSUdfTkZDKSArPSBuZmMub1xcbiAgIDc6XFx0b2JqLSQoQ09ORklHX05GQ19OQ0kpICs9IG5jaS9cXG4gICA4OlxcdG9iai0kKENPTkZJR19ORkNfSENJKSArPSBoY2kvXFxuICAgOTpcXHRvYmotJChDT05GSUdfTkZDX0RJR0lUQUwpICs9IG5mY19kaWdpdGFsLm9cXG4gIDEwOlxcdFxcbiAgMTE6XFx0bmZjLW9ianMgOj0gY29yZS5vIG5ldGxpbmsubyBhZl9uZmMubyByYXdzb2NrLm8gbGxjcF9jb3JlLm8gbGxjcF9jb21tYW5kcy5vIFxcXFxcXG4gIDEyOlxcdFxcdFxcdGxsY3Bfc29jay5vXFxuICAxMzpcXHRcXG4gIDE0OlxcdG5mY19kaWdpdGFsLW9ianMgOj0gZGlnaXRhbF9jb3JlLm8gZGlnaXRhbF90ZWNobm9sb2d5Lm8gZGlnaXRhbF9kZXAub1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xM1QwMjowNToxMS40NDE4MzQwMzFaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzcyNDcxMTU2MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGJyZWFrZG93biBvZiB0aGlzLlxuXG4qKkZvY3VzaW5nIG9uIHRoZSBORkMgQ29uZmlndXJhdGlvbiBhbmQgQmluZGluZyBGdW5jdGlvbioqXG5cblJpZ2h0LCBzbyBpdCBsb29rcyBsaWtlIGBDT05GSUdfTkZDYCBpcyB0aGUgc29sZSBjb25maWd1cmF0aW9uIGl0ZW0gb2YgaW50ZXJlc3QgaGVyZS4gVGhhdCBzaW1wbGlmaWVzIHRoaW5ncyBpbW1lbnNlbHk7IGF0IGxlYXN0IHdlIGRvbid0IG5lZWQgdG8gY2hhc2UgZG93biBhIG5lc3Qgb2YgcmVsYXRlZCBjb25maWdzLiBOb3csIHdoZXJlJ3MgdGhlIHJlYWwgYWN0aW9uPyBBaCwgaXQgYXBwZWFycyB3ZSdyZSB6ZXJvaW5nIGluIG9uIGBsbGNwX3Jhd19zb2NrX2JpbmRgLiBUaGF0J3MgdGhlIGZ1bmN0aW9uIHRoZSBwYXRjaCBpcyB0YXJnZXRpbmcsIGFuZCB0aGF0J3MgcHJlY2lzZWx5IHdoZXJlIEkgbmVlZCB0byBmb2N1cyBteSBhdHRlbnRpb24uXG5cbkkgc3VwcG9zZSBJIHNob3VsZCBnbGFuY2UgYXJvdW5kIGZvciBhIG1pbnV0ZSB0byBlbnN1cmUgdGhhdCBub3RoaW5nIGVsc2UgbWlnaHQgbmVlZCBhdHRlbnRpb24uIFRoZXJlIGlzIGBsbGNwX3NvY2tfYmluZGAgdG9vLCBidXQgdGhlIGNvbW1pdCBtZXNzYWdlICpleHBsaWNpdGx5KiBtZW50aW9ucyBjaGFuZ2VzIHRvIGBsbGNwX3Jhd19zb2NrX2JpbmRgLCBzbyB0aGF0J3MgdGhlIHByaW1hcnkgdGFyZ2V0LlxuXG5UaW1lIHRvIGRpdmUgaW50byB0aGUgY29kZS4gSSdsbCBuZWVkIHRvIGNoZWNrIHRoZSBkZWZpbml0aW9uIG9mIGBsbGNwX3Jhd19zb2NrX2JpbmRgLCB3aGljaCwgYXMgSSByZWNhbGwsIHNob3VsZCBiZSBsb2NhdGVkIGluIGBuZXQvbmZjL2xsY3Bfc29jay5jYC4gTGV0J3Mgc2VlIHdoYXQncyBjaGFuZ2VkIGFuZCBmaWd1cmUgb3V0IHRoZSBpbXBsaWNhdGlvbnMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ3NzcsIk91dHB1dFRva2VucyI6MzksIk91dHB1dFRob3VnaHRzVG9rZW5zIjo5NCwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEzVDAyOjA1OjE1LjE2NjU0ODUzMloiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMjA3NzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwibmV0L25mYy9sbGNwX3NvY2suY1wiLFxuICBcIkZpcnN0TGluZVwiOiAxNDgsXG4gIFwiTGluZUNvdW50XCI6IDUwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAxNDg6XFx0XFxuIDE0OTpcXHRzdGF0aWMgaW50IGxsY3BfcmF3X3NvY2tfYmluZChzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBzdHJ1Y3Qgc29ja2FkZHJfdW5zaXplZCAqYWRkcixcXG4gMTUwOlxcdFxcdFxcdFxcdCAgICAgIGludCBhbGVuKVxcbiAxNTE6XFx0e1xcbiAxNTI6XFx0XFx0c3RydWN0IHNvY2sgKnNrID0gc29jay1cXHUwMDNlc2s7XFxuIDE1MzpcXHRcXHRzdHJ1Y3QgbmZjX2xsY3Bfc29jayAqbGxjcF9zb2NrID0gbmZjX2xsY3Bfc29jayhzayk7XFxuIDE1NDpcXHRcXHRzdHJ1Y3QgbmZjX2xsY3BfbG9jYWwgKmxvY2FsO1xcbiAxNTU6XFx0XFx0c3RydWN0IG5mY19sbGNwX2xvY2FsICpvbGRfbG9jYWw7XFxuIDE1NjpcXHRcXHRzdHJ1Y3QgbmZjX2RldiAqZGV2O1xcbiAxNTc6XFx0XFx0c3RydWN0IHNvY2thZGRyX25mY19sbGNwIGxsY3BfYWRkcjtcXG4gMTU4OlxcdFxcdGludCBsZW4sIHJldCA9IDA7XFxuIDE1OTpcXHRcXG4gMTYwOlxcdFxcdGlmICghYWRkciB8fCBhbGVuIFxcdTAwM2Mgb2Zmc2V0b2ZlbmQoc3RydWN0IHNvY2thZGRyLCBzYV9mYW1pbHkpIHx8XFxuIDE2MTpcXHRcXHQgICAgYWRkci1cXHUwMDNlc2FfZmFtaWx5ICE9IEFGX05GQylcXG4gMTYyOlxcdFxcdFxcdHJldHVybiAtRUlOVkFMO1xcbiAxNjM6XFx0XFxuIDE2NDpcXHRcXHRwcl9kZWJ1ZyhcXFwic2sgJXAgYWRkciAlcCBmYW1pbHkgJWRcXFxcblxcXCIsIHNrLCBhZGRyLCBhZGRyLVxcdTAwM2VzYV9mYW1pbHkpO1xcbiAxNjU6XFx0XFxuIDE2NjpcXHRcXHRtZW1zZXQoXFx1MDAyNmxsY3BfYWRkciwgMCwgc2l6ZW9mKGxsY3BfYWRkcikpO1xcbiAxNjc6XFx0XFx0bGVuID0gbWluX3QodW5zaWduZWQgaW50LCBzaXplb2YobGxjcF9hZGRyKSwgYWxlbik7XFxuIDE2ODpcXHRcXHRtZW1jcHkoXFx1MDAyNmxsY3BfYWRkciwgYWRkciwgbGVuKTtcXG4gMTY5OlxcdFxcbiAxNzA6XFx0XFx0bG9ja19zb2NrKHNrKTtcXG4gMTcxOlxcdFxcbiAxNzI6XFx0XFx0aWYgKHNrLVxcdTAwM2Vza19zdGF0ZSAhPSBMTENQX0NMT1NFRCkge1xcbiAxNzM6XFx0XFx0XFx0cmV0ID0gLUVCQURGRDtcXG4gMTc0OlxcdFxcdFxcdGdvdG8gZXJyb3I7XFxuIDE3NTpcXHRcXHR9XFxuIDE3NjpcXHRcXG4gMTc3OlxcdFxcdGRldiA9IG5mY19nZXRfZGV2aWNlKGxsY3BfYWRkci5kZXZfaWR4KTtcXG4gMTc4OlxcdFxcdGlmIChkZXYgPT0gTlVMTCkge1xcbiAxNzk6XFx0XFx0XFx0cmV0ID0gLUVOT0RFVjtcXG4gMTgwOlxcdFxcdFxcdGdvdG8gZXJyb3I7XFxuIDE4MTpcXHRcXHR9XFxuIDE4MjpcXHRcXG4gMTgzOlxcdFxcdGxvY2FsID0gbmZjX2xsY3BfZmluZF9sb2NhbChkZXYpO1xcbiAxODQ6XFx0XFx0aWYgKGxvY2FsID09IE5VTEwpIHtcXG4gMTg1OlxcdFxcdFxcdHJldCA9IC1FTk9ERVY7XFxuIDE4NjpcXHRcXHRcXHRnb3RvIHB1dF9kZXY7XFxuIDE4NzpcXHRcXHR9XFxuIDE4ODpcXHRcXG4gMTg5OlxcdFxcdG9sZF9sb2NhbCA9IGxsY3Bfc29jay1cXHUwMDNlbG9jYWw7XFxuIDE5MDpcXHRcXHRsbGNwX3NvY2stXFx1MDAzZWxvY2FsID0gTlVMTDtcXG4gMTkxOlxcdFxcdGxsY3Bfc29jay1cXHUwMDNlZGV2ID0gTlVMTDtcXG4gMTkyOlxcdFxcdG5mY19sbGNwX2xvY2FsX3B1dChvbGRfbG9jYWwpO1xcbiAxOTM6XFx0XFxuIDE5NDpcXHRcXHRsbGNwX3NvY2stXFx1MDAzZWRldiA9IGRldjtcXG4gMTk1OlxcdFxcdGxsY3Bfc29jay1cXHUwMDNlbG9jYWwgPSBsb2NhbDtcXG4gMTk2OlxcdFxcdGxsY3Bfc29jay1cXHUwMDNlbmZjX3Byb3RvY29sID0gbGxjcF9hZGRyLm5mY19wcm90b2NvbDtcXG4gMTk3OlxcdFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xM1QwMjowNToxNS4xNjY3NzE3MzJaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDE5MTA1MTIyNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBLZXkgTmV0d29yayBQYXRjaCoqXG5cbk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgaW50ZXJlc3RpbmcuIEl0IGxvb2tzIGxpa2Ugd2UndmUgZ290IGEgZml4IHRoYXQgYWRkcmVzc2VzIGEgcG90ZW50aWFsIG1lbW9yeSBsZWFrIG9yIGEgdXNlLWFmdGVyLWZyZWUgdnVsbmVyYWJpbGl0eSB3aXRoaW4gdGhlIGBsbGNwX3Jhd19zb2NrX2JpbmRgIGZ1bmN0aW9uLiBTcGVjaWZpY2FsbHksIGl0IHNlZW1zIHRoZSBpc3N1ZSBzdGVtcyBmcm9tIGhvdyB0aGUgYG9sZF9sb2NhbGAgcmVmZXJlbmNlIHdhcyBoYW5kbGVkLiBCeSBwcm9wZXJseSByZWxlYXNpbmcgdGhhdCBvbGQgcmVmZXJlbmNlIGJlZm9yZSBhc3NpZ25pbmcgYSBuZXcgb25lLCB0aGlzIHBhdGNoIGlzIHRpZ2h0ZW5pbmcgdXAgbWVtb3J5IG1hbmFnZW1lbnQuXG5cbkZ1bmN0aW9uYWxseSwgdGhpcyBpcyBhIGRlZmluaXRlIGNoYW5nZSwgd2hpY2ggbWVhbnMgd2UgbmVlZCB0byB0cmVhdCBpdCB3aXRoIGR1ZSBkaWxpZ2VuY2UuIEdpdmVuIHRoYXQgdGhpcyBjb2RlIGlzIGluIGNvcmUgbmV0d29ya2luZywgYW5kIHNlZW1zIHJlYWNoYWJsZSwgaXQgd2FycmFudHMgYSBjbG9zZSBsb29rLiBJdCdzIHRpbWUgdG8gZmlyZSB1cCB0aGUgZnV6emluZyB0b29scyBhbmQgcmVhbGx5IGhhbW1lciBhdCB0aGlzIGFyZWEuIFdlIG5lZWQgdG8gZm9jdXMgdGhvc2UgZnV6emluZyBlZmZvcnRzIHNwZWNpZmljYWxseSBvbiBgbGxjcF9yYXdfc29ja19iaW5kYCwgdGhhdCdzIHRoZSBrZXkgc3ltYm9sIGhlcmUuIEdpdmVuIHRoYXQgdGhpcyBpcyBwb3RlbnRpYWxseSByZWxhdGVkIHRvIE5GQyBmdW5jdGlvbmFsaXR5LCBJIHNob3VsZCBwcm9iYWJseSBtYWtlIHN1cmUgdGhlIGBORkNgIGNvbmZpZyBpcyBlbmFibGVkIGR1cmluZyB0ZXN0aW5nIHRvIGdldCBtYXhpbXVtIGNvdmVyYWdlLiBMZXQncyBzZWUgaWYgd2UgY2FuIGZpbmQgYW55IHJlZ3Jlc3Npb24gYnVncyBoZXJlLCBnaXZlbiB0aGF0IHRoaXMgbG9va3MgbGlrZSBhIGZ1bmN0aW9uYWwgaW1wcm92ZW1lbnQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU5MjAsIk91dHB1dFRva2VucyI6OTcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMTIsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xM1QwMjowNToxOS4zNTc4MjU0NjlaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozMDMyNDIxODgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk5GQ1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImxsY3BfcmF3X3NvY2tfYmluZFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgcG90ZW50aWFsIG1lbW9yeSBsZWFrIG9yIHVzZS1hZnRlci1mcmVlIGluIHRoZSBgbGxjcF9yYXdfc29ja19iaW5kYCBmdW5jdGlvbiBieSBwcm9wZXJseSByZWxlYXNpbmcgdGhlIG9sZCBgbG9jYWxgIHJlZmVyZW5jZSBiZWZvcmUgYXNzaWduaW5nIGEgbmV3IG9uZS4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHJlYWNoYWJsZSBjb3JlIG5ldHdvcmtpbmcgY29kZS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJORkNcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJsbGNwX3Jhd19zb2NrX2JpbmRcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIHBvdGVudGlhbCBtZW1vcnkgbGVhayBvciB1c2UtYWZ0ZXItZnJlZSBpbiB0aGUgYGxsY3BfcmF3X3NvY2tfYmluZGAgZnVuY3Rpb24gYnkgcHJvcGVybHkgcmVsZWFzaW5nIHRoZSBvbGQgYGxvY2FsYCByZWZlcmVuY2UgYmVmb3JlIGFzc2lnbmluZyBhIG5ldyBvbmUuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiByZWFjaGFibGUgY29yZSBuZXR3b3JraW5nIGNvZGUuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },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-workflowncz59[1] Phase: Succeeded StartedAt: 2026-07-13 02:05:31 +0000 UTC FinishedAt: 2026-07-13 02:05:31 +0000 UTC Input: nil Output: nil --------- Name: series-workflowncz59[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-07-13 02:05:31 +0000 UTC FinishedAt: 2026-07-13 02:05:31 +0000 UTC Input: nil Output: nil --------- Name: series-workflowncz59[2] Phase: Succeeded StartedAt: 2026-07-13 02:05:31 +0000 UTC FinishedAt: 2026-07-13 06:25:27 +0000 UTC Input: nil Output: nil --------- Name: series-workflowncz59[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["llcp_raw_sock_bind"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC"],"series_id":"812f38be-a2de-4eb9-84f4-888f8f5832b2","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-13 02:05:31 +0000 UTC FinishedAt: 2026-07-13 06:25:27 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["llcp_raw_sock_bind"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC"],"series_id":"812f38be-a2de-4eb9-84f4-888f8f5832b2","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-workflowncz59[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["llcp_raw_sock_bind"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC"],"series_id":"812f38be-a2de-4eb9-84f4-888f8f5832b2","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-13 02:05:31 +0000 UTC FinishedAt: 2026-07-13 02:05:53 +0000 UTC Input: nil Output: nil --------- Name: series-workflowncz59[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["llcp_raw_sock_bind"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC"],"series_id":"812f38be-a2de-4eb9-84f4-888f8f5832b2","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-13 02:05:31 +0000 UTC FinishedAt: 2026-07-13 02:05:40 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC"],"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-workflowncz59/series-workflowncz59-convert-artifact-2149373794/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowncz59[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["llcp_raw_sock_bind"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC"],"series_id":"812f38be-a2de-4eb9-84f4-888f8f5832b2","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-13 02:05:53 +0000 UTC FinishedAt: 2026-07-13 02:44:44 +0000 UTC Input: nil Output: nil --------- Name: series-workflowncz59[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["llcp_raw_sock_bind"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC"],"series_id":"812f38be-a2de-4eb9-84f4-888f8f5832b2","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-13 02:05:53 +0000 UTC FinishedAt: 2026-07-13 02:44:44 +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:*841af010-2d87-461e-9e9c-0e82efa58f37,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-workflowncz59/series-workflowncz59-convert-artifact-2149373794/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": "20117bb0-521d-45f2-8d29-8d73d5ae5f66", "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-workflowncz59/series-workflowncz59-build-action-2408066848/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowncz59[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["llcp_raw_sock_bind"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC"],"series_id":"812f38be-a2de-4eb9-84f4-888f8f5832b2","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-13 02:05:53 +0000 UTC FinishedAt: 2026-07-13 02:44:34 +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:*841af010-2d87-461e-9e9c-0e82efa58f37,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-workflowncz59/series-workflowncz59-convert-artifact-2149373794/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": "20117bb0-521d-45f2-8d29-8d73d5ae5f66", "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-workflowncz59/series-workflowncz59-build-action-2408066848/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowncz59[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["llcp_raw_sock_bind"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC"],"series_id":"812f38be-a2de-4eb9-84f4-888f8f5832b2","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-13 02:44:44 +0000 UTC FinishedAt: 2026-07-13 02:44:44 +0000 UTC Input: nil Output: nil --------- Name: series-workflowncz59[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["llcp_raw_sock_bind"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC"],"series_id":"812f38be-a2de-4eb9-84f4-888f8f5832b2","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-13 02:44:44 +0000 UTC FinishedAt: 2026-07-13 02:44:44 +0000 UTC Input: nil Output: nil --------- Name: series-workflowncz59[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["llcp_raw_sock_bind"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC"],"series_id":"812f38be-a2de-4eb9-84f4-888f8f5832b2","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-13 02:44:44 +0000 UTC FinishedAt: 2026-07-13 02:44:54 +0000 UTC Input: nil Output: nil --------- Name: series-workflowncz59[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["llcp_raw_sock_bind"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC"],"series_id":"812f38be-a2de-4eb9-84f4-888f8f5832b2","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-13 02:44:44 +0000 UTC FinishedAt: 2026-07-13 02:44:52 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC"],"series_id":"812f38be-a2de-4eb9-84f4-888f8f5832b2","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-workflowncz59/series-workflowncz59-convert-artifact-2384698813/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowncz59[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["llcp_raw_sock_bind"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC"],"series_id":"812f38be-a2de-4eb9-84f4-888f8f5832b2","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-13 02:44:54 +0000 UTC FinishedAt: 2026-07-13 02:46:54 +0000 UTC Input: nil Output: nil --------- Name: series-workflowncz59[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["llcp_raw_sock_bind"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC"],"series_id":"812f38be-a2de-4eb9-84f4-888f8f5832b2","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-13 02:44:54 +0000 UTC FinishedAt: 2026-07-13 02:46:44 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*20117bb0-521d-45f2-8d29-8d73d5ae5f66,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-workflowncz59/series-workflowncz59-build-action-2408066848/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-workflowncz59[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["llcp_raw_sock_bind"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC"],"series_id":"812f38be-a2de-4eb9-84f4-888f8f5832b2","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-13 02:46:54 +0000 UTC FinishedAt: 2026-07-13 02:46:54 +0000 UTC Input: nil Output: nil --------- Name: series-workflowncz59[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["llcp_raw_sock_bind"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC"],"series_id":"812f38be-a2de-4eb9-84f4-888f8f5832b2","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-13 02:46:54 +0000 UTC FinishedAt: 2026-07-13 02:46:54 +0000 UTC Input: nil Output: nil --------- Name: series-workflowncz59[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["llcp_raw_sock_bind"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC"],"series_id":"812f38be-a2de-4eb9-84f4-888f8f5832b2","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-13 02:46:54 +0000 UTC FinishedAt: 2026-07-13 03:20:44 +0000 UTC Input: nil Output: nil --------- Name: series-workflowncz59[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["llcp_raw_sock_bind"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC"],"series_id":"812f38be-a2de-4eb9-84f4-888f8f5832b2","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-13 02:46:54 +0000 UTC FinishedAt: 2026-07-13 03:20:44 +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:*841af010-2d87-461e-9e9c-0e82efa58f37,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-workflowncz59/series-workflowncz59-convert-artifact-2384698813/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": "5ede9e9c-ab9d-4d66-8b5f-39606d1ab0e6", "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-workflowncz59/series-workflowncz59-build-action-3807526169/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowncz59[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["llcp_raw_sock_bind"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC"],"series_id":"812f38be-a2de-4eb9-84f4-888f8f5832b2","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-13 02:46:54 +0000 UTC FinishedAt: 2026-07-13 03:20:34 +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:*841af010-2d87-461e-9e9c-0e82efa58f37,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-workflowncz59/series-workflowncz59-convert-artifact-2384698813/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": "5ede9e9c-ab9d-4d66-8b5f-39606d1ab0e6", "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-workflowncz59/series-workflowncz59-build-action-3807526169/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowncz59[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["llcp_raw_sock_bind"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC"],"series_id":"812f38be-a2de-4eb9-84f4-888f8f5832b2","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-13 03:20:44 +0000 UTC FinishedAt: 2026-07-13 03:20:44 +0000 UTC Input: nil Output: nil --------- Name: series-workflowncz59[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["llcp_raw_sock_bind"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC"],"series_id":"812f38be-a2de-4eb9-84f4-888f8f5832b2","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-13 03:20:44 +0000 UTC FinishedAt: 2026-07-13 03:20:44 +0000 UTC Input: nil Output: nil --------- Name: series-workflowncz59[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["llcp_raw_sock_bind"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC"],"series_id":"812f38be-a2de-4eb9-84f4-888f8f5832b2","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-13 03:20:44 +0000 UTC FinishedAt: 2026-07-13 03:23:46 +0000 UTC Input: nil Output: nil --------- Name: series-workflowncz59[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["llcp_raw_sock_bind"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC"],"series_id":"812f38be-a2de-4eb9-84f4-888f8f5832b2","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-13 03:20:44 +0000 UTC FinishedAt: 2026-07-13 03:23:13 +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:*5ede9e9c-ab9d-4d66-8b5f-39606d1ab0e6,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-workflowncz59/series-workflowncz59-build-action-3807526169/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-workflowncz59[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["llcp_raw_sock_bind"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC"],"series_id":"812f38be-a2de-4eb9-84f4-888f8f5832b2","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-13 03:23:46 +0000 UTC FinishedAt: 2026-07-13 06:25:27 +0000 UTC Input: nil Output: nil --------- Name: series-workflowncz59[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["llcp_raw_sock_bind"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC"],"series_id":"812f38be-a2de-4eb9-84f4-888f8f5832b2","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-13 03:23:46 +0000 UTC FinishedAt: 2026-07-13 06:25:27 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:config,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["llcp_raw_sock_bind"],"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:*20117bb0-521d-45f2-8d29-8d73d5ae5f66,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*5ede9e9c-ab9d-4d66-8b5f-39606d1ab0e6,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-workflowncz59/series-workflowncz59-build-action-2408066848/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-workflowncz59/series-workflowncz59-build-action-3807526169/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowncz59[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["llcp_raw_sock_bind"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC"],"series_id":"812f38be-a2de-4eb9-84f4-888f8f5832b2","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-13 03:23:46 +0000 UTC FinishedAt: 2026-07-13 03:24:06 +0000 UTC Input: nil Output: nil --------- Name: series-workflowncz59[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["llcp_raw_sock_bind"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC"],"series_id":"812f38be-a2de-4eb9-84f4-888f8f5832b2","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-13 03:23:46 +0000 UTC FinishedAt: 2026-07-13 03:23:54 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["llcp_raw_sock_bind"],"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-workflowncz59/series-workflowncz59-convert-artifact-2456545858/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowncz59[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["llcp_raw_sock_bind"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC"],"series_id":"812f38be-a2de-4eb9-84f4-888f8f5832b2","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-13 03:23:46 +0000 UTC FinishedAt: 2026-07-13 03:23:46 +0000 UTC Input: nil Output: nil --------- Name: series-workflowncz59[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["llcp_raw_sock_bind"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC"],"series_id":"812f38be-a2de-4eb9-84f4-888f8f5832b2","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-13 03:23:46 +0000 UTC FinishedAt: 2026-07-13 03:23:46 +0000 UTC Input: nil Output: nil --------- Name: series-workflowncz59[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["llcp_raw_sock_bind"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC"],"series_id":"812f38be-a2de-4eb9-84f4-888f8f5832b2","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-13 03:23:46 +0000 UTC FinishedAt: 2026-07-13 03:23:46 +0000 UTC Input: nil Output: nil --------- Name: series-workflowncz59[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["llcp_raw_sock_bind"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC"],"series_id":"812f38be-a2de-4eb9-84f4-888f8f5832b2","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-13 03:24:06 +0000 UTC FinishedAt: 2026-07-13 06:25:27 +0000 UTC Input: nil Output: nil --------- Name: series-workflowncz59[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["llcp_raw_sock_bind"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC"],"series_id":"812f38be-a2de-4eb9-84f4-888f8f5832b2","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-13 03:24:06 +0000 UTC FinishedAt: 2026-07-13 06:25:18 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*20117bb0-521d-45f2-8d29-8d73d5ae5f66,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*5ede9e9c-ab9d-4d66-8b5f-39606d1ab0e6,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-workflowncz59/series-workflowncz59-build-action-2408066848/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-workflowncz59/series-workflowncz59-build-action-3807526169/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-workflowncz59/series-workflowncz59-convert-artifact-2456545858/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,}