Name: series-workflowmcl7q Phase: Succeeded StartedAt: 2026-07-24 20:41:52 +0000 UTC FinishedAt: 2026-07-25 01:46:29 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmcl7q[0] Phase: Succeeded StartedAt: 2026-07-24 20:41:52 +0000 UTC FinishedAt: 2026-07-24 21:03:54 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmcl7q[0].run-triage Phase: Succeeded StartedAt: 2026-07-24 20:41:52 +0000 UTC FinishedAt: 2026-07-24 21:03:54 +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": "78f75d632f74b8de0f081a128588f7c37d0d1164", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "IPV6", "IPV6_MULTIPLE_TABLES" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "78f75d632f74b8de0f081a128588f7c37d0d1164", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "IPV6", "IPV6_MULTIPLE_TABLES" ], "series_id": "828fadb1-74b1-4ddc-9fc9-18da871d24ea" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "fib6_rule_suppress" ], "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+CgkJCTx0ZD4yMDI2LzA3LzI0IDIxOjAyPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0lQVjYmIzM0OywKICAgICYjMzQ7SVBWNl9NVUxUSVBMRV9UQUJMRVMmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtmaWI2X3J1bGVfc3VwcHJlc3MmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSBwb3RlbnRpYWwgdXNlLWFmdGVyLWZyZWUgb3IgZGFuZ2xpbmcgcG9pbnRlciBpc3N1ZSBpbiBJUHY2IEZJQiBydWxlcyBieSBjbGVhcmluZyByZXMtXHUwMDNlcnQ2IGFmdGVyIHB1dHRpbmcgdGhlIHJvdXRlLiBUaGlzIGlzIHJlYWNoYWJsZSBjb3JlIG5ldHdvcmtpbmcgY29kZS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNCAyMTowMjwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDA3YTY2ODViNjRhYjE0NGZhOTgxZDJkY2JlZjk1YzFiMjY5MjBkZDVcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgRnJpIEp1bCAyNCAyMTowMjozOSAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9uZXQvaXB2Ni9maWI2X3J1bGVzLmMgYi9uZXQvaXB2Ni9maWI2X3J1bGVzLmNcbmluZGV4IGUxYjJiNGZhNmUxODkwLi44OWVlM2M5NjljYTc1ZSAxMDA2NDRcbi0tLSBhL25ldC9pcHY2L2ZpYjZfcnVsZXMuY1xuJiM0MzsmIzQzOyYjNDM7IGIvbmV0L2lwdjYvZmliNl9ydWxlcy5jXG5AQCAtMzA4LDYgJiM0MzszMDgsNyBAQCBJTkRJUkVDVF9DQUxMQUJMRV9TQ09QRSBib29sIGZpYjZfcnVsZV9zdXBwcmVzcyhzdHJ1Y3QgZmliX3J1bGUgKnJ1bGUsXG4gXG4gc3VwcHJlc3Nfcm91dGU6XG4gXHRpcDZfcnRfcHV0X2ZsYWdzKHJ0LCBmbGFncyk7XG4mIzQzO1x0cmVzLVx1MDAzZXJ0NiA9IE5VTEw7XG4gXHRyZXR1cm4gdHJ1ZTtcbiB9XG4gXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjQgMjE6MDI8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0lQVjYmIzM0OywKICAgICYjMzQ7SVBWNl9NVUxUSVBMRV9UQUJMRVMmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtmaWI2X3J1bGVfc3VwcHJlc3MmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSBwb3RlbnRpYWwgdXNlLWFmdGVyLWZyZWUgb3IgZGFuZ2xpbmcgcG9pbnRlciBpc3N1ZSBpbiBJUHY2IEZJQiBydWxlcyBieSBjbGVhcmluZyByZXMtXHUwMDNlcnQ2IGFmdGVyIHB1dHRpbmcgdGhlIHJvdXRlLiBUaGlzIGlzIHJlYWNoYWJsZSBjb3JlIG5ldHdvcmtpbmcgY29kZS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDA3YTY2ODViNjRhYjE0NGZhOTgxZDJkY2JlZjk1YzFiMjY5MjBkZDUKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgRnJpIEp1bCAyNCAyMTowMjozOSAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL25ldC9pcHY2L2ZpYjZfcnVsZXMuYyBiL25ldC9pcHY2L2ZpYjZfcnVsZXMuYwppbmRleCBlMWIyYjRmYTZlMTg5MC4uODllZTNjOTY5Y2E3NWUgMTAwNjQ0Ci0tLSBhL25ldC9pcHY2L2ZpYjZfcnVsZXMuYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvaXB2Ni9maWI2X3J1bGVzLmMKQEAgLTMwOCw2ICYjNDM7MzA4LDcgQEAgSU5ESVJFQ1RfQ0FMTEFCTEVfU0NPUEUgYm9vbCBmaWI2X3J1bGVfc3VwcHJlc3Moc3RydWN0IGZpYl9ydWxlICpydWxlLAogCiBzdXBwcmVzc19yb3V0ZToKIAlpcDZfcnRfcHV0X2ZsYWdzKHJ0LCBmbGFncyk7CiYjNDM7CXJlcy0mZ3Q7cnQ2ID0gTlVMTDsKIAlyZXR1cm4gdHJ1ZTsKIH0KIAo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNCAyMTowMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMDE0CgkJCQkJCQlvdXRwdXQ6IDM4CgkJCQkJCQl0aG91Z2h0czogNjAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0czoKCioqQW5hbHl6aW5nIGEgRklCNiBSdWxlIFN1cHByZXNzaW9uIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCBhIHBhdGNoIHRoYXQmIzM5O3MgZ290IGl0cyBob29rcyBpbnRvIGBuZXQvaXB2Ni9maWI2X3J1bGVzLmNgLiBTZWVtcyBzdHJhaWdodGZvcndhcmQsIGl0JiMzOTtzIGFkZGluZyBgcmVzLSZndDtydDYgPSBOVUxMO2AgaW5zaWRlIHRoZSBgZmliNl9ydWxlX3N1cHByZXNzYCBmdW5jdGlvbiAqYmVmb3JlKiByZXR1cm5pbmcgYHRydWVgLiBNeSBpbml0aWFsIHJlYWN0aW9uIGlzIHRoYXQgdGhpcyBpcyBsaWtlbHkgcmVsYXRlZCB0byBjbGVhcmluZyBhIHJvdXRlIGVudHJ5IHVuZGVyIGNlcnRhaW4gc3VwcHJlc3Npb24gY29uZGl0aW9ucywgbWF5YmUgdG8gcHJldmVudCBhbiB1bmludGVuZGVkIHJlZmVyZW5jZSBmcm9tIHBlcnNpc3RpbmcuCgpMZXQmIzM5O3MgZGl2ZSBpbnRvIGBmaWI2X3J1bGVfc3VwcHJlc3NgIGl0c2VsZiB0byB1bmRlcnN0YW5kIHRoZSBjb250ZXh0LiBJIG5lZWQgdG8gZmlndXJlIG91dDoKCiogICBXaGF0IGByZXNgIGlzLCBhbmQgd2hhdCBmaWVsZHMgYXJlIGJlaW5nIG1hbmlwdWxhdGVkLiBTcGVjaWZpY2FsbHksIEkgbmVlZCB0byBrbm93IHdoYXQgYHJlcy0mZ3Q7cnQ2YCByZXByZXNlbnRzLiBJcyB0aGlzIHNvbWUga2luZCBvZiByb3V0ZSBjYWNoZSBvciB0ZW1wb3Jhcnkgcm91dGUgZW50cnk/CiogICBXaGF0IGNvbmRpdGlvbnMgdHJpZ2dlciB0aGlzIGB0cnVlYCByZXR1cm4gZnJvbSBgZmliNl9ydWxlX3N1cHByZXNzYD8gQXJlIHdlIHRhbGtpbmcgYWJvdXQgYSBydWxlIG1hdGNoIHRoYXQgaW5kaWNhdGVzIGEgcm91dGUgc2hvdWxkICpub3QqIGJlIHVzZWQ/IFBlcmhhcHMgaXQmIzM5O3Mgc3VwcHJlc3NpbmcgYSByb3V0ZSBsb29rdXAgZHVlIHRvIHNvbWUgc29ydCBvZiBmaWx0ZXJpbmcgb3IgcG9saWN5LgoqICAgV2h5IGlzIHRoaXMgKmltcG9ydGFudCo/IFdoeSBkb2VzIGNsZWFyaW5nIHRoZSByb3V0ZSBwb2ludGVyIGhhdmUgdG8gaGFwcGVuIGhlcmU/IElzIHRoZXJlIGEgcmlzayBvZiBtZW1vcnkgbGVha3MsIGluY29ycmVjdCByb3V0aW5nIGRlY2lzaW9ucywgb3IgdW5leHBlY3RlZCBiZWhhdmlvciBpZiBgcmVzLSZndDtydDZgIGlzbiYjMzk7dCBwcm9wZXJseSBjbGVhcmVkIHdoZW4gd2Ugc3VwcHJlc3M/IFdoYXQgcG90ZW50aWFsIHJhY2UgY29uZGl0aW9ucyBhbSBJIGRlYWxpbmcgd2l0aD8KCkkmIzM5O20gYmV0dGluZyB0aGUgYW5zd2VyIGxpZXMgd2l0aGluIHRoZSBmdW5jdGlvbiYjMzk7cyBsb2dpYyBhbmQgaXRzIGludGVyYWN0aW9uIHdpdGggb3RoZXIgcGFydHMgb2YgdGhlIEZJQjYgcnVsZXMgaW1wbGVtZW50YXRpb24uIEkmIzM5O2xsIGJlIGxvb2tpbmcgZm9yIHdoZXJlIGByZXNgIGlzIHVzZWQgYWZ0ZXIgdGhlIGBmaWI2X3J1bGVfc3VwcHJlc3NgIGNhbGwgdG8gc2VlIHdoYXQgdGhpcyBwYXRjaCBtaWdodCBiZSBjaGFuZ2luZywgYW5kIHdoYXQgaXQmIzM5O3MgcHJldmVudGluZy4gSXTigJlzIGFsc28gY3J1Y2lhbCB0byBzZWUgaWYgb3RoZXIgcGFydHMgb2YgdGhlIGtlcm5lbCBhcmUgYWxzbyByZWZlcmVuY2luZyB0aGlzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI0IDIxOjAyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2ZpYjZfcnVsZV9zdXBwcmVzcyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9pcHY2L2ZpYjZfcnVsZXMuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvaXB2Ni9maWI2X3J1bGVzLmM9MjcxPUlORElSRUNUX0NBTExBQkxFX1NDT1BFIGludCBmaWI2X3J1bGVfYWN0aW9uKHN0cnVjdCBmaWJfcnVsZSAqcnVsZSxcbi0tXG5uZXQvaXB2Ni9maWI2X3J1bGVzLmMtMjgwLVxubmV0L2lwdjYvZmliNl9ydWxlcy5jOjI4MTpJTkRJUkVDVF9DQUxMQUJMRV9TQ09QRSBib29sIGZpYjZfcnVsZV9zdXBwcmVzcyhzdHJ1Y3QgZmliX3J1bGUgKnJ1bGUsXG5uZXQvaXB2Ni9maWI2X3J1bGVzLmMtMjgyLVx0XHRcdFx0XHRcdGludCBmbGFncyxcbi0tXG5uZXQvaXB2Ni9maWI2X3J1bGVzLmM9NTk2PXN0YXRpYyBjb25zdCBzdHJ1Y3QgZmliX3J1bGVzX29wcyBfX25ldF9pbml0Y29uc3QgZmliNl9ydWxlc19vcHNfdGVtcGxhdGUgPSB7XG4tLVxubmV0L2lwdjYvZmliNl9ydWxlcy5jLTYwMS1cdC5tYXRjaFx0XHRcdD0gZmliNl9ydWxlX21hdGNoLFxubmV0L2lwdjYvZmliNl9ydWxlcy5jOjYwMjpcdC5zdXBwcmVzc1x0XHQ9IGZpYjZfcnVsZV9zdXBwcmVzcyxcbm5ldC9pcHY2L2ZpYjZfcnVsZXMuYy02MDMtXHQuY29uZmlndXJlXHRcdD0gZmliNl9ydWxlX2NvbmZpZ3VyZSxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNCAyMTowMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNzYzCgkJCQkJCQlvdXRwdXQ6IDM5CgkJCQkJCQl0aG91Z2h0czogMjcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCYjMzk7cyBkaXZlIGludG8gdGhpcy4gSGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBhcyBpZiB0aGV5JiMzOTtyZSBteSBvd246CgoqKkludmVzdGlnYXRpbmcgdGhlIGZpYjZfcnVsZV9zdXBwcmVzcyBGdW5jdGlvbioqCgpBbHJpZ2h0LCB0aW1lIHRvIGdldCBteSBoYW5kcyBkaXJ0eS4gSSBuZWVkIHRvIHRha2UgYSBsb29rIGF0IGBmaWI2X3J1bGVfc3VwcHJlc3NgIGZ1bmN0aW9uLCBzcGVjaWZpY2FsbHkgaW4gYG5ldC9pcHY2L2ZpYjZfcnVsZXMuY2AuIEkga25vdyB0aGlzIGlzIHdoZXJlIHRoZSBJUHY2IHJvdXRpbmcgcnVsZXMgbG9naWMgcmVzaWRlcywgc28gdGhhdCYjMzk7cyB0aGUgbmF0dXJhbCBwbGFjZSB0byBzdGFydCBkaWdnaW5nLiBJJiMzOTttIGtlZW4gdG8gdW5kZXJzdGFuZCB0aGUgc3VwcHJlc3Npb24gbWVjaGFuaXNtIOKAkyB3aGF0IGl0JiMzOTtzIHN1cHByZXNzaW5nLCB3aHksIGFuZCBob3cgaXQmIzM5O3MgYmVpbmcgZG9uZS4gVGhpcyBmdW5jdGlvbiBwcm9iYWJseSBjb250YWlucyB0aGUgY29yZSBsb2dpYyBmb3IgZmlsdGVyaW5nIG9yIG1vZGlmeWluZyByb3V0aW5nIGRlY2lzaW9ucyBiYXNlZCBvbiBjb25maWd1cmVkIHJ1bGVzLCBzbyB0aGF04oCZcyBnb2luZyB0byBiZSBrZXkgdG8gd2hhdGV2ZXIgSSYjMzk7bSB0cm91Ymxlc2hvb3RpbmcuIExldCYjMzk7cyBzZWUgaG93IHRoaXMgc3VwcHJlc3Npb24gd29ya3MhCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjQgMjE6MDI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtuZXQvaXB2Ni9maWI2X3J1bGVzLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAyNzAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNTAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDI3MDpcdFxuIDI3MTpcdElORElSRUNUX0NBTExBQkxFX1NDT1BFIGludCBmaWI2X3J1bGVfYWN0aW9uKHN0cnVjdCBmaWJfcnVsZSAqcnVsZSxcbiAyNzI6XHRcdFx0XHRcdFx0ICAgICBzdHJ1Y3QgZmxvd2kgKmZscCwgaW50IGZsYWdzLFxuIDI3MzpcdFx0XHRcdFx0XHQgICAgIHN0cnVjdCBmaWJfbG9va3VwX2FyZyAqYXJnKVxuIDI3NDpcdHtcbiAyNzU6XHRcdGlmIChhcmctXHUwMDNlbG9va3VwX3B0ciA9PSBmaWI2X3RhYmxlX2xvb2t1cClcbiAyNzY6XHRcdFx0cmV0dXJuIGZpYjZfcnVsZV9hY3Rpb25fYWx0KHJ1bGUsIGZscCwgZmxhZ3MsIGFyZyk7XG4gMjc3Olx0XG4gMjc4Olx0XHRyZXR1cm4gX19maWI2X3J1bGVfYWN0aW9uKHJ1bGUsIGZscCwgZmxhZ3MsIGFyZyk7XG4gMjc5Olx0fVxuIDI4MDpcdFxuIDI4MTpcdElORElSRUNUX0NBTExBQkxFX1NDT1BFIGJvb2wgZmliNl9ydWxlX3N1cHByZXNzKHN0cnVjdCBmaWJfcnVsZSAqcnVsZSxcbiAyODI6XHRcdFx0XHRcdFx0XHRpbnQgZmxhZ3MsXG4gMjgzOlx0XHRcdFx0XHRcdFx0c3RydWN0IGZpYl9sb29rdXBfYXJnICphcmcpXG4gMjg0Olx0e1xuIDI4NTpcdFx0c3RydWN0IGZpYjZfcmVzdWx0ICpyZXMgPSBhcmctXHUwMDNlcmVzdWx0O1xuIDI4NjpcdFx0c3RydWN0IHJ0Nl9pbmZvICpydCA9IHJlcy1cdTAwM2VydDY7XG4gMjg3Olx0XHRzdHJ1Y3QgbmV0X2RldmljZSAqZGV2ID0gTlVMTDtcbiAyODg6XHRcbiAyODk6XHRcdGlmICghcnQpXG4gMjkwOlx0XHRcdHJldHVybiBmYWxzZTtcbiAyOTE6XHRcbiAyOTI6XHRcdGlmIChydC1cdTAwM2VydDZpX2lkZXYpXG4gMjkzOlx0XHRcdGRldiA9IHJ0LVx1MDAzZXJ0NmlfaWRldi1cdTAwM2VkZXY7XG4gMjk0Olx0XG4gMjk1Olx0XHQvKiBkbyBub3QgYWNjZXB0IHJlc3VsdCBpZiB0aGUgcm91dGUgZG9lc1xuIDI5NjpcdFx0ICogbm90IG1lZXQgdGhlIHJlcXVpcmVkIHByZWZpeCBsZW5ndGhcbiAyOTc6XHRcdCAqL1xuIDI5ODpcdFx0aWYgKHJ0LVx1MDAzZXJ0NmlfZHN0LnBsZW4gXHUwMDNjPSBydWxlLVx1MDAzZXN1cHByZXNzX3ByZWZpeGxlbilcbiAyOTk6XHRcdFx0Z290byBzdXBwcmVzc19yb3V0ZTtcbiAzMDA6XHRcbiAzMDE6XHRcdC8qIGRvIG5vdCBhY2NlcHQgcmVzdWx0IGlmIHRoZSByb3V0ZSB1c2VzIGEgZGV2aWNlXG4gMzAyOlx0XHQgKiBiZWxvbmdpbmcgdG8gYSBmb3JiaWRkZW4gaW50ZXJmYWNlIGdyb3VwXG4gMzAzOlx0XHQgKi9cbiAzMDQ6XHRcdGlmIChydWxlLVx1MDAzZXN1cHByZXNzX2lmZ3JvdXAgIT0gLTEgXHUwMDI2XHUwMDI2IGRldiBcdTAwMjZcdTAwMjYgZGV2LVx1MDAzZWdyb3VwID09IHJ1bGUtXHUwMDNlc3VwcHJlc3NfaWZncm91cClcbiAzMDU6XHRcdFx0Z290byBzdXBwcmVzc19yb3V0ZTtcbiAzMDY6XHRcbiAzMDc6XHRcdHJldHVybiBmYWxzZTtcbiAzMDg6XHRcbiAzMDk6XHRzdXBwcmVzc19yb3V0ZTpcbiAzMTA6XHRcdGlwNl9ydF9wdXRfZmxhZ3MocnQsIGZsYWdzKTtcbiAzMTE6XHRcdHJlcy1cdTAwM2VydDYgPSBOVUxMO1xuIDMxMjpcdFx0cmV0dXJuIHRydWU7XG4gMzEzOlx0fVxuIDMxNDpcdFxuIDMxNTpcdElORElSRUNUX0NBTExBQkxFX1NDT1BFIGludCBmaWI2X3J1bGVfbWF0Y2goc3RydWN0IGZpYl9ydWxlICpydWxlLFxuIDMxNjpcdFx0XHRcdFx0XHQgICAgc3RydWN0IGZsb3dpICpmbCwgaW50IGZsYWdzKVxuIDMxNzpcdHtcbiAzMTg6XHRcdHN0cnVjdCBmaWI2X3J1bGUgKnIgPSAoc3RydWN0IGZpYjZfcnVsZSAqKSBydWxlO1xuIDMxOTpcdFx0c3RydWN0IGZsb3dpNiAqZmw2ID0gXHUwMDI2ZmwtXHUwMDNldS5pcDY7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjQgMjE6MDI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzc1NgoJCQkJCQkJb3V0cHV0OiAzMgoJCQkJCQkJdGhvdWdodHM6IDUwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkFuYWx5emluZyBhIFJvdXRlIFN1cHByZXNzaW9uIFBhdGNoKioKCkFscmlnaHQsIHNvIHRoZSBwYXRjaCBpbnRyb2R1Y2VzIGByZXMtJmd0O3J0NiA9IE5VTEw7YCB3aXRoaW4gdGhlIGBzdXBwcmVzc19yb3V0ZWAgYmxvY2suIFRoYXQmIzM5O3MgYSBkaXJlY3QsIGZ1bmN0aW9uYWwgY2hhbmdlLiBNeSBmaXJzdCB0aG91Z2h0IGlzIHRvIGRpdmUgaW50byB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zIHJlbGF0ZWQgdG8gSVB2NiBGSUIgcnVsZXMsIHNwZWNpZmljYWxseSB3aXRoaW4gYG5ldC9pcHY2L2ZpYjZfcnVsZXMuY2AuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBpbXBsaWNhdGlvbnMgb2YgbnVsbGluZyBvdXQgYHJlcy0mZ3Q7cnQ2YCBpbiB0aGlzIGNvbnRleHQuIElzIGl0IGludGVuZGVkIHRvIGV4cGxpY2l0bHkgcmVsZWFzZSBhIHJvdXRlIHJlZmVyZW5jZSwgc2lnbmFsIGFuIGVycm9yLCBvciBzb21ldGhpbmcgZWxzZSBlbnRpcmVseT8gSSBuZWVkIHRvIGtub3cgd2hhdCB0aGF0IGByZXMtJmd0O3J0NmAgcG9pbnRlciByZXByZXNlbnRzIGFuZCB0aGUgZGF0YSBpdCBwb2ludHMgdG8uIFVuZGVyc3RhbmRpbmcgdGhlIHVuZGVybHlpbmcgZGF0YSBzdHJ1Y3R1cmUgYW5kIHdoYXQgb3RoZXIgcGFydHMgb2YgdGhlIHJvdXRpbmcgY29kZSBhcmUgdG91Y2hpbmcgaXQgaXMgY3JpdGljYWwgZm9yIGZpZ3VyaW5nIG91dCBob3cgdGhpcyBwYXRjaCBiZWhhdmVzLiBJcyB0aGVyZSBhbnkgZXhpc3RpbmcgY29kZSB0aGF0IGRlcGVuZHMgb24gdGhlIGBydDZgIGZpZWxkIG5vdCBiZWluZyBOVUxMIGFmdGVyIHRoZSBgc3VwcHJlc3Nfcm91dGVgIGZ1bmN0aW9uIHJ1bnM/IEkgbmVlZCB0byBhbmFseXplIHRob3NlIGFyZWFzIHZlcnkgY2FyZWZ1bGx5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI0IDIxOjAyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2ZpYjZfcnVsZXMubyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9pcHY2L01ha2VmaWxlJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9pcHY2L01ha2VmaWxlPTIwPWlwdjYtJChDT05GSUdfTkVURklMVEVSKSAmIzQzOz0gbmV0ZmlsdGVyLm9cbm5ldC9pcHY2L01ha2VmaWxlOjIxOmlwdjYtJChDT05GSUdfSVBWNl9NVUxUSVBMRV9UQUJMRVMpICYjNDM7PSBmaWI2X3J1bGVzLm9cbm5ldC9pcHY2L01ha2VmaWxlLTIyLWlwdjYtJChDT05GSUdfUFJPQ19GUykgJiM0Mzs9IHByb2Mub1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI0IDIxOjAyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQxNDkKCQkJCQkJCW91dHB1dDogMzcKCQkJCQkJCXRob3VnaHRzOiA3MQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipFeGFtaW5pbmcgSVB2NiBDb25maWd1cmF0aW9uIFJlcXVpcmVtZW50cyoqCgpPa2F5LCBzbyB0aGUgYENPTkZJR19JUFY2X01VTFRJUExFX1RBQkxFU2Agb3B0aW9uIGlzIGEgbXVzdC1oYXZlLCB0aGF0IG11Y2ggaXMgY2xlYXIuIE15IG5leHQgc3RlcCBpcyB0byBmaWd1cmUgb3V0IHRoZSBkZXBlbmRlbmNpZXMsIHNwZWNpZmljYWxseSwgd2hldGhlciBgQ09ORklHX0lQVjZgIGl0c2VsZiBpcyBhbHNvIGEgcHJlcmVxdWlzaXRlLiBBIHF1aWNrIHBlZWsgaW50byBgbmV0L2lwdjYvTWFrZWZpbGVgIHNob3VsZCBjb25maXJtIHRoYXQsIGFuZCB5ZXAsIHRoZXJlIGl0IGlzISBOb3cgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIHJlbGF0aW9uc2hpcCBiZXR3ZWVuIHRoZXNlIHR3bywgc28gSSYjMzk7bGwgZGl2ZSBpbnRvIGBuZXQvaXB2Ni9LY29uZmlnYCB0byBzZWUgdGhlIGNvbmRpdGlvbnMgYW5kIGRlcGVuZGVuY2llcyBkZWZpbmVkIGZvciBgSVBWNl9NVUxUSVBMRV9UQUJMRVNgLiBUaGlzIHNob3VsZCBjbGFyaWZ5IGFueSBvdGhlciByZWxldmFudCBkZXBlbmRlbmNpZXMgb3IgcG90ZW50aWFsIGNvbmZsaWN0cy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjQgMjE6MDI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIElQVjZfTVVMVElQTEVfVEFCTEVTJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L2lwdjYvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvaXB2Ni9LY29uZmlnPTIzMj1jb25maWcgSVBWNl9GT1VfVFVOTkVMXG4tLVxubmV0L2lwdjYvS2NvbmZpZy0yMzYtXG5uZXQvaXB2Ni9LY29uZmlnOjIzNzpjb25maWcgSVBWNl9NVUxUSVBMRV9UQUJMRVNcbm5ldC9pcHY2L0tjb25maWctMjM4LVx0Ym9vbCBcJiMzNDtJUHY2OiBNdWx0aXBsZSBSb3V0aW5nIFRhYmxlc1wmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNCAyMTowMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0NDk0CgkJCQkJCQlvdXRwdXQ6IDM1CgkJCQkJCQl0aG91Z2h0czogMjAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipFeGFtaW5pbmcgSVB2NiBDb25maWd1cmF0aW9uIE9wdGlvbnMqKgoKT2theSwgbGV0JiMzOTtzIGRpdmUgaW4uIEkgbmVlZCB0byByZWZyZXNoIG15IG1lbW9yeSBvbiB0aGUgSVB2NiBjb25maWd1cmF0aW9uIG9wdGlvbnMgd2l0aGluIHRoZSBrZXJuZWwuIFNwZWNpZmljYWxseSwgSSYjMzk7bSBnb2luZyB0byBqdW1wIHRvIGBuZXQvaXB2Ni9LY29uZmlnYCBhcm91bmQgbGluZSAyMzcuIFRoYXQmIzM5O3MgdXN1YWxseSB3aGVyZSB0aGUgY29yZSBJUHY2IGZlYXR1cmUgc2VsZWN0aW9uIGJlZ2lucywgYW5kIEkgZXhwZWN0IHRvIHNlZSB0aGUgbWFpbiBidWlsZGluZyBibG9ja3MgZGVmaW5lZCB0aGVyZS4gSSYjMzk7bSBsb29raW5nIGZvciB0aGUga2V5IEtjb25maWcgc3ltYm9scyByZWxhdGVkIHRvIHRoZSBjb3JlIElQdjYgcHJvdG9jb2wsIGxpa2VseSBpbmNsdWRpbmcgb3B0aW9ucyBmb3IgZW5hYmxpbmcgb3IgZGlzYWJsaW5nIElQdjYgZnVuY3Rpb25hbGl0eSBhcyBhIHdob2xlLCB2YXJpb3VzIGV4dGVuc2lvbnMsIGFuZCBwZXJoYXBzIHNvbWUgaW5pdGlhbCBuZXR3b3JrIGRldmljZSBzdXBwb3J0LiBJJiMzOTttIGFudGljaXBhdGluZyBhIHdlbGwtc3RydWN0dXJlZCBzZXQgb2YgYGNvbmZpZ2Agb3B0aW9ucywgcG9zc2libHkgbmVzdGVkIHdpdGggZGVwZW5kZW5jaWVzIG9uIHVuZGVybHlpbmcgbmV0d29yayBkZXZpY2UgZHJpdmVycyBvciBvdGhlciBzdWJzeXN0ZW1zLiBNeSBwcmltYXJ5IGZvY3VzIGF0IHRoaXMgc3RhZ2UgaXMgdG8gaWRlbnRpZnkgdGhlIGNydWNpYWwga25vYnMgdGhhdCBnb3Zlcm4gSVB2NiYjMzk7cyBiZWhhdmlvci4gSSB3aWxsIGNoZWNrIHdoYXQgS2NvbmZpZyB2YXJpYWJsZXMgZW5hYmxlIGNvcmUgSVB2NiBmdW5jdGlvbmFsaXR5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNCAyMTowMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O25ldC9pcHY2L0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAyMzAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDIzMDpcdFx0ZGVmYXVsdCBORVRfRk9VIFx1MDAyNlx1MDAyNiBJUFY2XG4gMjMxOlx0XG4gMjMyOlx0Y29uZmlnIElQVjZfRk9VX1RVTk5FTFxuIDIzMzpcdFx0dHJpc3RhdGVcbiAyMzQ6XHRcdGRlZmF1bHQgTkVUX0ZPVV9JUF9UVU5ORUxTIFx1MDAyNlx1MDAyNiBJUFY2X0ZPVVxuIDIzNTpcdFx0c2VsZWN0IElQVjZfVFVOTkVMXG4gMjM2Olx0XG4gMjM3Olx0Y29uZmlnIElQVjZfTVVMVElQTEVfVEFCTEVTXG4gMjM4Olx0XHRib29sIFwmIzM0O0lQdjY6IE11bHRpcGxlIFJvdXRpbmcgVGFibGVzXCYjMzQ7XG4gMjM5Olx0XHRzZWxlY3QgRklCX1JVTEVTXG4gMjQwOlx0XHRoZWxwXG4gMjQxOlx0XHQgIFN1cHBvcnQgbXVsdGlwbGUgcm91dGluZyB0YWJsZXMuXG4gMjQyOlx0XG4gMjQzOlx0Y29uZmlnIElQVjZfU1VCVFJFRVNcbiAyNDQ6XHRcdGJvb2wgXCYjMzQ7SVB2Njogc291cmNlIGFkZHJlc3MgYmFzZWQgcm91dGluZ1wmIzM0O1xuIDI0NTpcdFx0ZGVwZW5kcyBvbiBJUFY2X01VTFRJUExFX1RBQkxFU1xuIDI0NjpcdFx0aGVscFxuIDI0NzpcdFx0ICBFbmFibGUgcm91dGluZyBieSBzb3VyY2UgYWRkcmVzcyBvciBwcmVmaXguXG4gMjQ4Olx0XG4gMjQ5Olx0XHQgIFRoZSBkZXN0aW5hdGlvbiBhZGRyZXNzIGlzIHN0aWxsIHRoZSBwcmltYXJ5IHJvdXRpbmcga2V5LCBzbyBtaXhpbmdcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjQgMjE6MDI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTAzNwoJCQkJCQkJb3V0cHV0OiAyNwoJCQkJCQkJdGhvdWdodHM6IDQxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLgoKKipJbnZlc3RpZ2F0aW5nIHRoZSBJUFY2IENvbmZpZ3VyYXRpb24gT3B0aW9ucyoqCgpBbHJpZ2h0LCBzbyBgSVBWNl9NVUxUSVBMRV9UQUJMRVNgLCB0aGF0JiMzOTtzIGEgYm9vbGVhbiBvcHRpb24sIHJpZ2h0PyBTaW1wbGUgZW5vdWdoLiBCdXQgSSBzZWUgdGhhdCBgSVBWNmAgaXMgYWxzbyBpbnZvbHZlZCBoZXJlLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGVpciByZWxhdGlvbnNoaXAgYW5kIGhvdyB0aGV5IGludGVyYWN0LiBNeSBuZXh0IHN0ZXAgaXMgY2xlYXI6IEkgbmVlZCB0byBkaWcgaW50byB0aGUgY2FsbGVycyBvZiBgZmliNl9ydWxlX3N1cHByZXNzYC4gSXQmIzM5O3MgbGlrZWx5IGludm9sdmVkIGluIHRoZSBsb2dpYyB0aGF0IGdvdmVybnMgdGhlc2Ugb3B0aW9ucy4gSSYjMzk7bGwgZm9jdXMgb24gaG93IGBmaWI2X3J1bGVfc3VwcHJlc3NgIGlzIHVzZWQsIHNwZWNpZmljYWxseSBpbiByZWxhdGlvbiB0byBgSVBWNl9NVUxUSVBMRV9UQUJMRVNgIGFuZCBgSVBWNmAsIHRvIGdldCBhIGJldHRlciBoYW5kbGUgb24gdGhlIG92ZXJhbGwgY29uZmlndXJhdGlvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjQgMjE6MDM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZmliNl9ydWxlX3N1cHByZXNzJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2luY2x1ZGUvbmV0L2ZpYl9ydWxlcy5oPTIyMD1JTkRJUkVDVF9DQUxMQUJMRV9ERUNMQVJFKGludCBmaWI0X3J1bGVfYWN0aW9uKHN0cnVjdCBmaWJfcnVsZSAqcnVsZSxcbi0tXG5pbmNsdWRlL25ldC9maWJfcnVsZXMuaC0yMjMtXG5pbmNsdWRlL25ldC9maWJfcnVsZXMuaDoyMjQ6SU5ESVJFQ1RfQ0FMTEFCTEVfREVDTEFSRShib29sIGZpYjZfcnVsZV9zdXBwcmVzcyhzdHJ1Y3QgZmliX3J1bGUgKnJ1bGUsXG5pbmNsdWRlL25ldC9maWJfcnVsZXMuaC0yMjUtXHRcdFx0XHRcdFx0aW50IGZsYWdzLFxuLS1cbm5ldC9jb3JlL2ZpYl9ydWxlcy5jPTMxMz1pbnQgZmliX3J1bGVzX2xvb2t1cChzdHJ1Y3QgZmliX3J1bGVzX29wcyAqb3BzLCBzdHJ1Y3QgZmxvd2kgKmZsLFxuLS1cbm5ldC9jb3JlL2ZpYl9ydWxlcy5jLTM0NC1cdFx0aWYgKCFlcnIgXHUwMDI2XHUwMDI2IG9wcy1cdTAwM2VzdXBwcmVzcyBcdTAwMjZcdTAwMjYgSU5ESVJFQ1RfQ0FMTF9NVChvcHMtXHUwMDNlc3VwcHJlc3MsXG5uZXQvY29yZS9maWJfcnVsZXMuYzozNDU6XHRcdFx0XHRcdFx0XHQgICAgICBmaWI2X3J1bGVfc3VwcHJlc3MsXG5uZXQvY29yZS9maWJfcnVsZXMuYy0zNDYtXHRcdFx0XHRcdFx0XHQgICAgICBmaWI0X3J1bGVfc3VwcHJlc3MsXG4tLVxubmV0L2lwdjYvZmliNl9ydWxlcy5jPTI3MT1JTkRJUkVDVF9DQUxMQUJMRV9TQ09QRSBpbnQgZmliNl9ydWxlX2FjdGlvbihzdHJ1Y3QgZmliX3J1bGUgKnJ1bGUsXG4tLVxubmV0L2lwdjYvZmliNl9ydWxlcy5jLTI4MC1cbm5ldC9pcHY2L2ZpYjZfcnVsZXMuYzoyODE6SU5ESVJFQ1RfQ0FMTEFCTEVfU0NPUEUgYm9vbCBmaWI2X3J1bGVfc3VwcHJlc3Moc3RydWN0IGZpYl9ydWxlICpydWxlLFxubmV0L2lwdjYvZmliNl9ydWxlcy5jLTI4Mi1cdFx0XHRcdFx0XHRpbnQgZmxhZ3MsXG4tLVxubmV0L2lwdjYvZmliNl9ydWxlcy5jPTU5Nj1zdGF0aWMgY29uc3Qgc3RydWN0IGZpYl9ydWxlc19vcHMgX19uZXRfaW5pdGNvbnN0IGZpYjZfcnVsZXNfb3BzX3RlbXBsYXRlID0ge1xuLS1cbm5ldC9pcHY2L2ZpYjZfcnVsZXMuYy02MDEtXHQubWF0Y2hcdFx0XHQ9IGZpYjZfcnVsZV9tYXRjaCxcbm5ldC9pcHY2L2ZpYjZfcnVsZXMuYzo2MDI6XHQuc3VwcHJlc3NcdFx0PSBmaWI2X3J1bGVfc3VwcHJlc3MsXG5uZXQvaXB2Ni9maWI2X3J1bGVzLmMtNjAzLVx0LmNvbmZpZ3VyZVx0XHQ9IGZpYjZfcnVsZV9jb25maWd1cmUsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI0IDIxOjAzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDU0OTYKCQkJCQkJCW91dHB1dDogOTIKCQkJCQkJCXRob3VnaHRzOiA4MTIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHlzaXMgb2YgdGhlIElQdjYgRklCIFJ1bGUgU3VwcHJlc3Npb24gUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7dmUgZ290IHRoaXMgcGF0Y2ggdGhhdCBJIG5lZWQgdG8gYXNzZXNzLiBJdCYjMzk7cyBpbiBgbmV0L2lwdjYvZmliNl9ydWxlcy5jYCwgc3BlY2lmaWNhbGx5IHdpdGhpbiB0aGUgYGZpYjZfcnVsZV9zdXBwcmVzc2AgZnVuY3Rpb24uIFRoZSBrZXkgY2hhbmdlIGlzIHRoZSBhZGRpdGlvbiBvZiBgcmVzLSZndDtydDYgPSBOVUxMO2AgcmlnaHQgYWZ0ZXIgYGlwNl9ydF9wdXRfZmxhZ3MocnQsIGZsYWdzKWAuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0aGF0IHRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSwgYSBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkIG9uZSBhdCB0aGF0LiBJdCBsb29rcyBsaWtlIHRoZSBpbnRlbnQgaXMgdG8gcHJldmVudCBlaXRoZXIgYSBwb3RlbnRpYWwgdXNlLWFmdGVyLWZyZWUgb3IgZG91YmxlLWZyZWUgc2NlbmFyaW8sIG9yIHRvIGVuc3VyZSB0aGUgcmVzdWx0IGlzIGNvcnJlY3RseSBjbGVhcmVkIHdoZW4gdGhlIHJvdXRlIGlzIHN1cHByZXNzZWQuIFRoYXQgbWFrZXMgc2Vuc2UsIGtlZXBzIHRoaW5ncyBjbGVhbi4KCkkga25vdyBgZmliNl9ydWxlX3N1cHByZXNzYCBpcyBjYWxsZWQgZnJvbSBgZmliX3J1bGVzX2xvb2t1cGAgaW4gYG5ldC9jb3JlL2ZpYl9ydWxlcy5jYC4gVGhpcyBpcyBpbXBvcnRhbnQgYmVjYXVzZSBgZmliX3J1bGVzX2xvb2t1cGAgaXMgY29yZSBuZXR3b3JraW5nIGNvZGUsIHdoaWNoIG1ha2VzIHRoaXMgY2hhbmdlIHBvdGVudGlhbGx5IHF1aXRlIHNpZ25pZmljYW50LiBUaGlzIG1lYW5zIGl0JiMzOTtzIGEgcGllY2Ugb2YgY29kZSB0aGF0IGNvdWxkIGJlIGhpdCBwcmV0dHkgZnJlcXVlbnRseS4KCk5vdywgSSBuZWVkIHRvIGxvb2sgYXQgdGhlIGNvbmZpZ3VyYXRpb25zLiBXZSBuZWVkIGBJUFY2YCBhbmQgYElQVjZfTVVMVElQTEVfVEFCTEVTYC4gSSBuZWVkIHRvIGNvbmZpcm0gYElQVjZfTVVMVElQTEVfVEFCTEVTYCBpcyBhIGJvb2xlYW4uIExldCBtZSBjaGVjayB0aGUgS2NvbmZpZy4gWWVwLCBpdCBpcy4gU28gdGhhdCYjMzk7cyBjbGVhci4gYElQVjZgIGlzIHJlcXVpcmVkIHRvbywgZm9yIGFueXRoaW5nIGluIGBuZXQvaXB2Ni9gLCBzbyB3ZSYjMzk7cmUgZ29vZCB0aGVyZSBhcyB3ZWxsLgoKTGV0JiMzOTtzIHF1aWNrbHkgY2hlY2sgdGhlIHNpZ25hdHVyZSBvZiBgZmliX3J1bGVzX2xvb2t1cGAuIEl0JiMzOTtzIGdlbmVyaWMsIGJ1dCB0aGUgcGF0Y2ggaXMgc3BlY2lmaWMgdG8gSVB2Niwgc28gdGhhdCYjMzk7cyBmaW5lLgoKR2l2ZW4gdGhhdCwgSSB0aGluayB0aGUgaW1wb3J0YW50IGZvY3VzIHN5bWJvbCBpcyBgZmliNl9ydWxlX3N1cHByZXNzYCwgYW5kIHRoZSBlbmFibGVtZW50IGNvbmZpZ3VyYXRpb25zIGFyZSBgSVBWNmAgYW5kIGBJUFY2X01VTFRJUExFX1RBQkxFU2AuIGBJUFY2YCBpcyBhIHRyaXN0YXRlLCBzbyBpdCYjMzk7cyBub3QgYSByZWFsIGlzc3VlLgoKSG9sZCBvbiwgbGV0IG1lIGNoZWNrIHNvbWV0aGluZyBhYm91dCBgZmliNl9ydWxlX3N1cHByZXNzYC4gSXQmIzM5O3MgZGVjbGFyZWQgYXMgYElORElSRUNUX0NBTExBQkxFX1NDT1BFIGJvb2wgZmliNl9ydWxlX3N1cHByZXNzKC4uLilgLiBJIG5lZWQgdG8gZmlndXJlIG91dCB3aGF0IHRoYXQgYElORElSRUNUX0NBTExBQkxFX1NDT1BFYCBtZWFucy4gVXN1YWxseSwgaXQmIzM5O3MgZWl0aGVyIGVtcHR5IChtZWFuaW5nIGl0JiMzOTtzIGV4cG9ydGVkKSBvciBgc3RhdGljYCwgZGVwZW5kaW5nIG9uIGBDT05GSUdfUkVUUE9MSU5FYC4gTGV0IG1lIGRvdWJsZS1jaGVjay4gT2theSwgYElORElSRUNUX0NBTExBQkxFX0RFQ0xBUkVgIGlzIHVzZWQgaW4gYGluY2x1ZGUvbmV0L2ZpYl9ydWxlcy5oYCwgc28gaXQmIzM5O3MgKm5vdCogc3RhdGljLCBzbyB3ZSYjMzk7cmUgZ29vZCB0byBnby4gVGhlIGBmaWI2X3J1bGVfc3VwcHJlc3NgIGZ1bmN0aW9uIGlzIGV4cG9zZWQuCgpOb3csIGlzIGBmaWI2X3J1bGVfc3VwcHJlc3NgIG9uIGEgaG90IHBhdGg/IEl0JiMzOTtzIGNhbGxlZCBkdXJpbmcgRklCIHJ1bGUgbG9va3Vwcywgd2hpY2ggaGFwcGVuIGR1cmluZyByb3V0ZSBsb29rdXBzLCBzbyBpdCAqY291bGQqIGJlIHNvbWV3aGF0IGhvdC4gSG93ZXZlciwgdGhlIGZ1bmN0aW9uIGl0c2VsZiBpcyBzcGVjaWZpYyBlbm91Z2gsIHNvIEkgYW0gY29tZm9ydGFibGUgZm9jdXNpbmcgb24gaXQuCgpBbHJpZ2h0LCBsZXQmIzM5O3Mgc2VlIGlmIHRoaXMgcGF0Y2ggdG91Y2hlcyBhbnkgb3RoZXIgZnVuY3Rpb25zLiBObywgdGhlIHBhdGNoIG9ubHkgY2hhbmdlcyBgZmliNl9ydWxlX3N1cHByZXNzYC4KClNvLCBoZXJlJiMzOTtzIG15IGFzc2Vzc21lbnQgZm9yIGZ1enppbmc6CgpgYGBqc29uCnsKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsmIzM0O2ZpYjZfcnVsZV9zdXBwcmVzcyYjMzQ7XSwKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWyYjMzQ7SVBWNiYjMzQ7LCAmIzM0O0lQVjZfTVVMVElQTEVfVEFCTEVTJiMzNDtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgcG90ZW50aWFsIHVzZS1hZnRlci1mcmVlIG9yIGRhbmdsaW5nIHBvaW50ZXIgaXNzdWUgaW4gSVB2NiBGSUIgcnVsZXMgYnkgY2xlYXJpbmcgcmVzLSZndDtydDYgYWZ0ZXIgcHV0dGluZyB0aGUgcm91dGUuIFRoaXMgaXMgcmVhY2hhYmxlIGNvcmUgbmV0d29ya2luZyBjb2RlLiYjMzQ7Cn0KYGBgCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI0IDIxOjAzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtJUFY2JiMzNDssCiAgICAmIzM0O0lQVjZfTVVMVElQTEVfVEFCTEVTJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7ZmliNl9ydWxlX3N1cHByZXNzJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgcG90ZW50aWFsIHVzZS1hZnRlci1mcmVlIG9yIGRhbmdsaW5nIHBvaW50ZXIgaXNzdWUgaW4gSVB2NiBGSUIgcnVsZXMgYnkgY2xlYXJpbmcgcmVzLVx1MDAzZXJ0NiBhZnRlciBwdXR0aW5nIHRoZSByb3V0ZS4gVGhpcyBpcyByZWFjaGFibGUgY29yZSBuZXR3b3JraW5nIGNvZGUuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0lQVjYmIzM0OywKICAgICYjMzQ7SVBWNl9NVUxUSVBMRV9UQUJMRVMmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtmaWI2X3J1bGVfc3VwcHJlc3MmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSBwb3RlbnRpYWwgdXNlLWFmdGVyLWZyZWUgb3IgZGFuZ2xpbmcgcG9pbnRlciBpc3N1ZSBpbiBJUHY2IEZJQiBydWxlcyBieSBjbGVhcmluZyByZXMtXHUwMDNlcnQ2IGFmdGVyIHB1dHRpbmcgdGhlIHJvdXRlLiBUaGlzIGlzIHJlYWNoYWJsZSBjb3JlIG5ldHdvcmtpbmcgY29kZS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI0VDIxOjAyOjQxLjE4OTM5NDM0MVoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM2OTI4NjIzNzcyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIklQVjZcIixcbiAgICBcIklQVjZfTVVMVElQTEVfVEFCTEVTXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiZmliNl9ydWxlX3N1cHByZXNzXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSBwb3RlbnRpYWwgdXNlLWFmdGVyLWZyZWUgb3IgZGFuZ2xpbmcgcG9pbnRlciBpc3N1ZSBpbiBJUHY2IEZJQiBydWxlcyBieSBjbGVhcmluZyByZXMtXFx1MDAzZXJ0NiBhZnRlciBwdXR0aW5nIHRoZSByb3V0ZS4gVGhpcyBpcyByZWFjaGFibGUgY29yZSBuZXR3b3JraW5nIGNvZGUuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI0VDIxOjAyOjQxLjE4OTQwMjUxMVoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTY1ODc5NDI2MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDA3YTY2ODViNjRhYjE0NGZhOTgxZDJkY2JlZjk1YzFiMjY5MjBkZDVcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIEZyaSBKdWwgMjQgMjE6MDI6MzkgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvbmV0L2lwdjYvZmliNl9ydWxlcy5jIGIvbmV0L2lwdjYvZmliNl9ydWxlcy5jXFxuaW5kZXggZTFiMmI0ZmE2ZTE4OTAuLjg5ZWUzYzk2OWNhNzVlIDEwMDY0NFxcbi0tLSBhL25ldC9pcHY2L2ZpYjZfcnVsZXMuY1xcbisrKyBiL25ldC9pcHY2L2ZpYjZfcnVsZXMuY1xcbkBAIC0zMDgsNiArMzA4LDcgQEAgSU5ESVJFQ1RfQ0FMTEFCTEVfU0NPUEUgYm9vbCBmaWI2X3J1bGVfc3VwcHJlc3Moc3RydWN0IGZpYl9ydWxlICpydWxlLFxcbiBcXG4gc3VwcHJlc3Nfcm91dGU6XFxuIFxcdGlwNl9ydF9wdXRfZmxhZ3MocnQsIGZsYWdzKTtcXG4rXFx0cmVzLVxcdTAwM2VydDYgPSBOVUxMO1xcbiBcXHRyZXR1cm4gdHJ1ZTtcXG4gfVxcbiBcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjRUMjE6MDI6NDIuODQ4NzI5NDMyWiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6MzUyNjkyNzU2OTEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiSVBWNlwiLFxuICAgIFwiSVBWNl9NVUxUSVBMRV9UQUJMRVNcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJmaWI2X3J1bGVfc3VwcHJlc3NcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIHBvdGVudGlhbCB1c2UtYWZ0ZXItZnJlZSBvciBkYW5nbGluZyBwb2ludGVyIGlzc3VlIGluIElQdjYgRklCIHJ1bGVzIGJ5IGNsZWFyaW5nIHJlcy1cXHUwMDNlcnQ2IGFmdGVyIHB1dHRpbmcgdGhlIHJvdXRlLiBUaGlzIGlzIHJlYWNoYWJsZSBjb3JlIG5ldHdvcmtpbmcgY29kZS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgMDdhNjY4NWI2NGFiMTQ0ZmE5ODFkMmRjYmVmOTVjMWIyNjkyMGRkNVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBGcmkgSnVsIDI0IDIxOjAyOjM5IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbmV0L2lwdjYvZmliNl9ydWxlcy5jIGIvbmV0L2lwdjYvZmliNl9ydWxlcy5jXG5pbmRleCBlMWIyYjRmYTZlMTg5MC4uODllZTNjOTY5Y2E3NWUgMTAwNjQ0XG4tLS0gYS9uZXQvaXB2Ni9maWI2X3J1bGVzLmNcbisrKyBiL25ldC9pcHY2L2ZpYjZfcnVsZXMuY1xuQEAgLTMwOCw2ICszMDgsNyBAQCBJTkRJUkVDVF9DQUxMQUJMRV9TQ09QRSBib29sIGZpYjZfcnVsZV9zdXBwcmVzcyhzdHJ1Y3QgZmliX3J1bGUgKnJ1bGUsXG4gXG4gc3VwcHJlc3Nfcm91dGU6XG4gXHRpcDZfcnRfcHV0X2ZsYWdzKHJ0LCBmbGFncyk7XG4rXHRyZXMtXHUwMDNlcnQ2ID0gTlVMTDtcbiBcdHJldHVybiB0cnVlO1xuIH1cbiBcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI0VDIxOjAyOjQyLjg0ODczMDc0MloiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQxMjg4NTcxNDQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzOlxuXG4qKkFuYWx5emluZyBhIEZJQjYgUnVsZSBTdXBwcmVzc2lvbiBQYXRjaCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IGEgcGF0Y2ggdGhhdCdzIGdvdCBpdHMgaG9va3MgaW50byBgbmV0L2lwdjYvZmliNl9ydWxlcy5jYC4gU2VlbXMgc3RyYWlnaHRmb3J3YXJkLCBpdCdzIGFkZGluZyBgcmVzLVx1MDAzZXJ0NiA9IE5VTEw7YCBpbnNpZGUgdGhlIGBmaWI2X3J1bGVfc3VwcHJlc3NgIGZ1bmN0aW9uICpiZWZvcmUqIHJldHVybmluZyBgdHJ1ZWAuIE15IGluaXRpYWwgcmVhY3Rpb24gaXMgdGhhdCB0aGlzIGlzIGxpa2VseSByZWxhdGVkIHRvIGNsZWFyaW5nIGEgcm91dGUgZW50cnkgdW5kZXIgY2VydGFpbiBzdXBwcmVzc2lvbiBjb25kaXRpb25zLCBtYXliZSB0byBwcmV2ZW50IGFuIHVuaW50ZW5kZWQgcmVmZXJlbmNlIGZyb20gcGVyc2lzdGluZy5cblxuTGV0J3MgZGl2ZSBpbnRvIGBmaWI2X3J1bGVfc3VwcHJlc3NgIGl0c2VsZiB0byB1bmRlcnN0YW5kIHRoZSBjb250ZXh0LiBJIG5lZWQgdG8gZmlndXJlIG91dDpcblxuKiAgIFdoYXQgYHJlc2AgaXMsIGFuZCB3aGF0IGZpZWxkcyBhcmUgYmVpbmcgbWFuaXB1bGF0ZWQuIFNwZWNpZmljYWxseSwgSSBuZWVkIHRvIGtub3cgd2hhdCBgcmVzLVx1MDAzZXJ0NmAgcmVwcmVzZW50cy4gSXMgdGhpcyBzb21lIGtpbmQgb2Ygcm91dGUgY2FjaGUgb3IgdGVtcG9yYXJ5IHJvdXRlIGVudHJ5P1xuKiAgIFdoYXQgY29uZGl0aW9ucyB0cmlnZ2VyIHRoaXMgYHRydWVgIHJldHVybiBmcm9tIGBmaWI2X3J1bGVfc3VwcHJlc3NgPyBBcmUgd2UgdGFsa2luZyBhYm91dCBhIHJ1bGUgbWF0Y2ggdGhhdCBpbmRpY2F0ZXMgYSByb3V0ZSBzaG91bGQgKm5vdCogYmUgdXNlZD8gUGVyaGFwcyBpdCdzIHN1cHByZXNzaW5nIGEgcm91dGUgbG9va3VwIGR1ZSB0byBzb21lIHNvcnQgb2YgZmlsdGVyaW5nIG9yIHBvbGljeS5cbiogICBXaHkgaXMgdGhpcyAqaW1wb3J0YW50Kj8gV2h5IGRvZXMgY2xlYXJpbmcgdGhlIHJvdXRlIHBvaW50ZXIgaGF2ZSB0byBoYXBwZW4gaGVyZT8gSXMgdGhlcmUgYSByaXNrIG9mIG1lbW9yeSBsZWFrcywgaW5jb3JyZWN0IHJvdXRpbmcgZGVjaXNpb25zLCBvciB1bmV4cGVjdGVkIGJlaGF2aW9yIGlmIGByZXMtXHUwMDNlcnQ2YCBpc24ndCBwcm9wZXJseSBjbGVhcmVkIHdoZW4gd2Ugc3VwcHJlc3M/IFdoYXQgcG90ZW50aWFsIHJhY2UgY29uZGl0aW9ucyBhbSBJIGRlYWxpbmcgd2l0aD9cblxuSSdtIGJldHRpbmcgdGhlIGFuc3dlciBsaWVzIHdpdGhpbiB0aGUgZnVuY3Rpb24ncyBsb2dpYyBhbmQgaXRzIGludGVyYWN0aW9uIHdpdGggb3RoZXIgcGFydHMgb2YgdGhlIEZJQjYgcnVsZXMgaW1wbGVtZW50YXRpb24uIEknbGwgYmUgbG9va2luZyBmb3Igd2hlcmUgYHJlc2AgaXMgdXNlZCBhZnRlciB0aGUgYGZpYjZfcnVsZV9zdXBwcmVzc2AgY2FsbCB0byBzZWUgd2hhdCB0aGlzIHBhdGNoIG1pZ2h0IGJlIGNoYW5naW5nLCBhbmQgd2hhdCBpdCdzIHByZXZlbnRpbmcuIEl04oCZcyBhbHNvIGNydWNpYWwgdG8gc2VlIGlmIG90aGVyIHBhcnRzIG9mIHRoZSBrZXJuZWwgYXJlIGFsc28gcmVmZXJlbmNpbmcgdGhpcy5cblxuXG4iLCJJbnB1dFRva2VucyI6MjAxNCwiT3V0cHV0VG9rZW5zIjozOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjYwLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjRUMjE6MDI6NDYuOTc3NTkwNjM2WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM0NzUyOTk2OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJmaWI2X3J1bGVfc3VwcHJlc3NcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L2lwdjYvZmliNl9ydWxlcy5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9pcHY2L2ZpYjZfcnVsZXMuYz0yNzE9SU5ESVJFQ1RfQ0FMTEFCTEVfU0NPUEUgaW50IGZpYjZfcnVsZV9hY3Rpb24oc3RydWN0IGZpYl9ydWxlICpydWxlLFxcbi0tXFxubmV0L2lwdjYvZmliNl9ydWxlcy5jLTI4MC1cXG5uZXQvaXB2Ni9maWI2X3J1bGVzLmM6MjgxOklORElSRUNUX0NBTExBQkxFX1NDT1BFIGJvb2wgZmliNl9ydWxlX3N1cHByZXNzKHN0cnVjdCBmaWJfcnVsZSAqcnVsZSxcXG5uZXQvaXB2Ni9maWI2X3J1bGVzLmMtMjgyLVxcdFxcdFxcdFxcdFxcdFxcdGludCBmbGFncyxcXG4tLVxcbm5ldC9pcHY2L2ZpYjZfcnVsZXMuYz01OTY9c3RhdGljIGNvbnN0IHN0cnVjdCBmaWJfcnVsZXNfb3BzIF9fbmV0X2luaXRjb25zdCBmaWI2X3J1bGVzX29wc190ZW1wbGF0ZSA9IHtcXG4tLVxcbm5ldC9pcHY2L2ZpYjZfcnVsZXMuYy02MDEtXFx0Lm1hdGNoXFx0XFx0XFx0PSBmaWI2X3J1bGVfbWF0Y2gsXFxubmV0L2lwdjYvZmliNl9ydWxlcy5jOjYwMjpcXHQuc3VwcHJlc3NcXHRcXHQ9IGZpYjZfcnVsZV9zdXBwcmVzcyxcXG5uZXQvaXB2Ni9maWI2X3J1bGVzLmMtNjAzLVxcdC5jb25maWd1cmVcXHRcXHQ9IGZpYjZfcnVsZV9jb25maWd1cmUsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI0VDIxOjAyOjQ3LjMyNTEyNDU3NFoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI3ODc2NzI0MTEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCdzIGRpdmUgaW50byB0aGlzLiBIZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgYXMgaWYgdGhleSdyZSBteSBvd246XG5cbioqSW52ZXN0aWdhdGluZyB0aGUgZmliNl9ydWxlX3N1cHByZXNzIEZ1bmN0aW9uKipcblxuQWxyaWdodCwgdGltZSB0byBnZXQgbXkgaGFuZHMgZGlydHkuIEkgbmVlZCB0byB0YWtlIGEgbG9vayBhdCBgZmliNl9ydWxlX3N1cHByZXNzYCBmdW5jdGlvbiwgc3BlY2lmaWNhbGx5IGluIGBuZXQvaXB2Ni9maWI2X3J1bGVzLmNgLiBJIGtub3cgdGhpcyBpcyB3aGVyZSB0aGUgSVB2NiByb3V0aW5nIHJ1bGVzIGxvZ2ljIHJlc2lkZXMsIHNvIHRoYXQncyB0aGUgbmF0dXJhbCBwbGFjZSB0byBzdGFydCBkaWdnaW5nLiBJJ20ga2VlbiB0byB1bmRlcnN0YW5kIHRoZSBzdXBwcmVzc2lvbiBtZWNoYW5pc20g4oCTIHdoYXQgaXQncyBzdXBwcmVzc2luZywgd2h5LCBhbmQgaG93IGl0J3MgYmVpbmcgZG9uZS4gVGhpcyBmdW5jdGlvbiBwcm9iYWJseSBjb250YWlucyB0aGUgY29yZSBsb2dpYyBmb3IgZmlsdGVyaW5nIG9yIG1vZGlmeWluZyByb3V0aW5nIGRlY2lzaW9ucyBiYXNlZCBvbiBjb25maWd1cmVkIHJ1bGVzLCBzbyB0aGF04oCZcyBnb2luZyB0byBiZSBrZXkgdG8gd2hhdGV2ZXIgSSdtIHRyb3VibGVzaG9vdGluZy4gTGV0J3Mgc2VlIGhvdyB0aGlzIHN1cHByZXNzaW9uIHdvcmtzIVxuXG5cbiIsIklucHV0VG9rZW5zIjoyNzYzLCJPdXRwdXRUb2tlbnMiOjM5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjRUMjE6MDI6NTAuMTEyNzk4ODc1WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTc1NzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwibmV0L2lwdjYvZmliNl9ydWxlcy5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDI3MCxcbiAgXCJMaW5lQ291bnRcIjogNTBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDI3MDpcXHRcXG4gMjcxOlxcdElORElSRUNUX0NBTExBQkxFX1NDT1BFIGludCBmaWI2X3J1bGVfYWN0aW9uKHN0cnVjdCBmaWJfcnVsZSAqcnVsZSxcXG4gMjcyOlxcdFxcdFxcdFxcdFxcdFxcdCAgICAgc3RydWN0IGZsb3dpICpmbHAsIGludCBmbGFncyxcXG4gMjczOlxcdFxcdFxcdFxcdFxcdFxcdCAgICAgc3RydWN0IGZpYl9sb29rdXBfYXJnICphcmcpXFxuIDI3NDpcXHR7XFxuIDI3NTpcXHRcXHRpZiAoYXJnLVxcdTAwM2Vsb29rdXBfcHRyID09IGZpYjZfdGFibGVfbG9va3VwKVxcbiAyNzY6XFx0XFx0XFx0cmV0dXJuIGZpYjZfcnVsZV9hY3Rpb25fYWx0KHJ1bGUsIGZscCwgZmxhZ3MsIGFyZyk7XFxuIDI3NzpcXHRcXG4gMjc4OlxcdFxcdHJldHVybiBfX2ZpYjZfcnVsZV9hY3Rpb24ocnVsZSwgZmxwLCBmbGFncywgYXJnKTtcXG4gMjc5OlxcdH1cXG4gMjgwOlxcdFxcbiAyODE6XFx0SU5ESVJFQ1RfQ0FMTEFCTEVfU0NPUEUgYm9vbCBmaWI2X3J1bGVfc3VwcHJlc3Moc3RydWN0IGZpYl9ydWxlICpydWxlLFxcbiAyODI6XFx0XFx0XFx0XFx0XFx0XFx0XFx0aW50IGZsYWdzLFxcbiAyODM6XFx0XFx0XFx0XFx0XFx0XFx0XFx0c3RydWN0IGZpYl9sb29rdXBfYXJnICphcmcpXFxuIDI4NDpcXHR7XFxuIDI4NTpcXHRcXHRzdHJ1Y3QgZmliNl9yZXN1bHQgKnJlcyA9IGFyZy1cXHUwMDNlcmVzdWx0O1xcbiAyODY6XFx0XFx0c3RydWN0IHJ0Nl9pbmZvICpydCA9IHJlcy1cXHUwMDNlcnQ2O1xcbiAyODc6XFx0XFx0c3RydWN0IG5ldF9kZXZpY2UgKmRldiA9IE5VTEw7XFxuIDI4ODpcXHRcXG4gMjg5OlxcdFxcdGlmICghcnQpXFxuIDI5MDpcXHRcXHRcXHRyZXR1cm4gZmFsc2U7XFxuIDI5MTpcXHRcXG4gMjkyOlxcdFxcdGlmIChydC1cXHUwMDNlcnQ2aV9pZGV2KVxcbiAyOTM6XFx0XFx0XFx0ZGV2ID0gcnQtXFx1MDAzZXJ0NmlfaWRldi1cXHUwMDNlZGV2O1xcbiAyOTQ6XFx0XFxuIDI5NTpcXHRcXHQvKiBkbyBub3QgYWNjZXB0IHJlc3VsdCBpZiB0aGUgcm91dGUgZG9lc1xcbiAyOTY6XFx0XFx0ICogbm90IG1lZXQgdGhlIHJlcXVpcmVkIHByZWZpeCBsZW5ndGhcXG4gMjk3OlxcdFxcdCAqL1xcbiAyOTg6XFx0XFx0aWYgKHJ0LVxcdTAwM2VydDZpX2RzdC5wbGVuIFxcdTAwM2M9IHJ1bGUtXFx1MDAzZXN1cHByZXNzX3ByZWZpeGxlbilcXG4gMjk5OlxcdFxcdFxcdGdvdG8gc3VwcHJlc3Nfcm91dGU7XFxuIDMwMDpcXHRcXG4gMzAxOlxcdFxcdC8qIGRvIG5vdCBhY2NlcHQgcmVzdWx0IGlmIHRoZSByb3V0ZSB1c2VzIGEgZGV2aWNlXFxuIDMwMjpcXHRcXHQgKiBiZWxvbmdpbmcgdG8gYSBmb3JiaWRkZW4gaW50ZXJmYWNlIGdyb3VwXFxuIDMwMzpcXHRcXHQgKi9cXG4gMzA0OlxcdFxcdGlmIChydWxlLVxcdTAwM2VzdXBwcmVzc19pZmdyb3VwICE9IC0xIFxcdTAwMjZcXHUwMDI2IGRldiBcXHUwMDI2XFx1MDAyNiBkZXYtXFx1MDAzZWdyb3VwID09IHJ1bGUtXFx1MDAzZXN1cHByZXNzX2lmZ3JvdXApXFxuIDMwNTpcXHRcXHRcXHRnb3RvIHN1cHByZXNzX3JvdXRlO1xcbiAzMDY6XFx0XFxuIDMwNzpcXHRcXHRyZXR1cm4gZmFsc2U7XFxuIDMwODpcXHRcXG4gMzA5OlxcdHN1cHByZXNzX3JvdXRlOlxcbiAzMTA6XFx0XFx0aXA2X3J0X3B1dF9mbGFncyhydCwgZmxhZ3MpO1xcbiAzMTE6XFx0XFx0cmVzLVxcdTAwM2VydDYgPSBOVUxMO1xcbiAzMTI6XFx0XFx0cmV0dXJuIHRydWU7XFxuIDMxMzpcXHR9XFxuIDMxNDpcXHRcXG4gMzE1OlxcdElORElSRUNUX0NBTExBQkxFX1NDT1BFIGludCBmaWI2X3J1bGVfbWF0Y2goc3RydWN0IGZpYl9ydWxlICpydWxlLFxcbiAzMTY6XFx0XFx0XFx0XFx0XFx0XFx0ICAgIHN0cnVjdCBmbG93aSAqZmwsIGludCBmbGFncylcXG4gMzE3OlxcdHtcXG4gMzE4OlxcdFxcdHN0cnVjdCBmaWI2X3J1bGUgKnIgPSAoc3RydWN0IGZpYjZfcnVsZSAqKSBydWxlO1xcbiAzMTk6XFx0XFx0c3RydWN0IGZsb3dpNiAqZmw2ID0gXFx1MDAyNmZsLVxcdTAwM2V1LmlwNjtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjRUMjE6MDI6NTAuMTEyODk4ODM1WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzE5NjUxMDQzNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqQW5hbHl6aW5nIGEgUm91dGUgU3VwcHJlc3Npb24gUGF0Y2gqKlxuXG5BbHJpZ2h0LCBzbyB0aGUgcGF0Y2ggaW50cm9kdWNlcyBgcmVzLVx1MDAzZXJ0NiA9IE5VTEw7YCB3aXRoaW4gdGhlIGBzdXBwcmVzc19yb3V0ZWAgYmxvY2suIFRoYXQncyBhIGRpcmVjdCwgZnVuY3Rpb25hbCBjaGFuZ2UuIE15IGZpcnN0IHRob3VnaHQgaXMgdG8gZGl2ZSBpbnRvIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgcmVsYXRlZCB0byBJUHY2IEZJQiBydWxlcywgc3BlY2lmaWNhbGx5IHdpdGhpbiBgbmV0L2lwdjYvZmliNl9ydWxlcy5jYC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGltcGxpY2F0aW9ucyBvZiBudWxsaW5nIG91dCBgcmVzLVx1MDAzZXJ0NmAgaW4gdGhpcyBjb250ZXh0LiBJcyBpdCBpbnRlbmRlZCB0byBleHBsaWNpdGx5IHJlbGVhc2UgYSByb3V0ZSByZWZlcmVuY2UsIHNpZ25hbCBhbiBlcnJvciwgb3Igc29tZXRoaW5nIGVsc2UgZW50aXJlbHk/IEkgbmVlZCB0byBrbm93IHdoYXQgdGhhdCBgcmVzLVx1MDAzZXJ0NmAgcG9pbnRlciByZXByZXNlbnRzIGFuZCB0aGUgZGF0YSBpdCBwb2ludHMgdG8uIFVuZGVyc3RhbmRpbmcgdGhlIHVuZGVybHlpbmcgZGF0YSBzdHJ1Y3R1cmUgYW5kIHdoYXQgb3RoZXIgcGFydHMgb2YgdGhlIHJvdXRpbmcgY29kZSBhcmUgdG91Y2hpbmcgaXQgaXMgY3JpdGljYWwgZm9yIGZpZ3VyaW5nIG91dCBob3cgdGhpcyBwYXRjaCBiZWhhdmVzLiBJcyB0aGVyZSBhbnkgZXhpc3RpbmcgY29kZSB0aGF0IGRlcGVuZHMgb24gdGhlIGBydDZgIGZpZWxkIG5vdCBiZWluZyBOVUxMIGFmdGVyIHRoZSBgc3VwcHJlc3Nfcm91dGVgIGZ1bmN0aW9uIHJ1bnM/IEkgbmVlZCB0byBhbmFseXplIHRob3NlIGFyZWFzIHZlcnkgY2FyZWZ1bGx5LlxuXG5cbiIsIklucHV0VG9rZW5zIjozNzU2LCJPdXRwdXRUb2tlbnMiOjMyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTAsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNFQyMTowMjo1My4zMDk0MTE2MzJaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzY5NjU2NDk2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImZpYjZfcnVsZXMub1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvaXB2Ni9NYWtlZmlsZVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvaXB2Ni9NYWtlZmlsZT0yMD1pcHY2LSQoQ09ORklHX05FVEZJTFRFUikgKz0gbmV0ZmlsdGVyLm9cXG5uZXQvaXB2Ni9NYWtlZmlsZToyMTppcHY2LSQoQ09ORklHX0lQVjZfTVVMVElQTEVfVEFCTEVTKSArPSBmaWI2X3J1bGVzLm9cXG5uZXQvaXB2Ni9NYWtlZmlsZS0yMi1pcHY2LSQoQ09ORklHX1BST0NfRlMpICs9IHByb2Mub1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNFQyMTowMjo1My42NzkwNzUwNThaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyODA3MjUzMjIwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkV4YW1pbmluZyBJUHY2IENvbmZpZ3VyYXRpb24gUmVxdWlyZW1lbnRzKipcblxuT2theSwgc28gdGhlIGBDT05GSUdfSVBWNl9NVUxUSVBMRV9UQUJMRVNgIG9wdGlvbiBpcyBhIG11c3QtaGF2ZSwgdGhhdCBtdWNoIGlzIGNsZWFyLiBNeSBuZXh0IHN0ZXAgaXMgdG8gZmlndXJlIG91dCB0aGUgZGVwZW5kZW5jaWVzLCBzcGVjaWZpY2FsbHksIHdoZXRoZXIgYENPTkZJR19JUFY2YCBpdHNlbGYgaXMgYWxzbyBhIHByZXJlcXVpc2l0ZS4gQSBxdWljayBwZWVrIGludG8gYG5ldC9pcHY2L01ha2VmaWxlYCBzaG91bGQgY29uZmlybSB0aGF0LCBhbmQgeWVwLCB0aGVyZSBpdCBpcyEgTm93IEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSByZWxhdGlvbnNoaXAgYmV0d2VlbiB0aGVzZSB0d28sIHNvIEknbGwgZGl2ZSBpbnRvIGBuZXQvaXB2Ni9LY29uZmlnYCB0byBzZWUgdGhlIGNvbmRpdGlvbnMgYW5kIGRlcGVuZGVuY2llcyBkZWZpbmVkIGZvciBgSVBWNl9NVUxUSVBMRV9UQUJMRVNgLiBUaGlzIHNob3VsZCBjbGFyaWZ5IGFueSBvdGhlciByZWxldmFudCBkZXBlbmRlbmNpZXMgb3IgcG90ZW50aWFsIGNvbmZsaWN0cy5cblxuXG4iLCJJbnB1dFRva2VucyI6NDE0OSwiT3V0cHV0VG9rZW5zIjozNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjcxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI0VDIxOjAyOjU2LjQ4NjMzMTIyOVoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODA3Nzg3MTcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIElQVjZfTVVMVElQTEVfVEFCTEVTXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9pcHY2L0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L2lwdjYvS2NvbmZpZz0yMzI9Y29uZmlnIElQVjZfRk9VX1RVTk5FTFxcbi0tXFxubmV0L2lwdjYvS2NvbmZpZy0yMzYtXFxubmV0L2lwdjYvS2NvbmZpZzoyMzc6Y29uZmlnIElQVjZfTVVMVElQTEVfVEFCTEVTXFxubmV0L2lwdjYvS2NvbmZpZy0yMzgtXFx0Ym9vbCBcXFwiSVB2NjogTXVsdGlwbGUgUm91dGluZyBUYWJsZXNcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI0VDIxOjAyOjU2LjU2NzExNTIyNloiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMTc2NjE3NDI4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkV4YW1pbmluZyBJUHY2IENvbmZpZ3VyYXRpb24gT3B0aW9ucyoqXG5cbk9rYXksIGxldCdzIGRpdmUgaW4uIEkgbmVlZCB0byByZWZyZXNoIG15IG1lbW9yeSBvbiB0aGUgSVB2NiBjb25maWd1cmF0aW9uIG9wdGlvbnMgd2l0aGluIHRoZSBrZXJuZWwuIFNwZWNpZmljYWxseSwgSSdtIGdvaW5nIHRvIGp1bXAgdG8gYG5ldC9pcHY2L0tjb25maWdgIGFyb3VuZCBsaW5lIDIzNy4gVGhhdCdzIHVzdWFsbHkgd2hlcmUgdGhlIGNvcmUgSVB2NiBmZWF0dXJlIHNlbGVjdGlvbiBiZWdpbnMsIGFuZCBJIGV4cGVjdCB0byBzZWUgdGhlIG1haW4gYnVpbGRpbmcgYmxvY2tzIGRlZmluZWQgdGhlcmUuIEknbSBsb29raW5nIGZvciB0aGUga2V5IEtjb25maWcgc3ltYm9scyByZWxhdGVkIHRvIHRoZSBjb3JlIElQdjYgcHJvdG9jb2wsIGxpa2VseSBpbmNsdWRpbmcgb3B0aW9ucyBmb3IgZW5hYmxpbmcgb3IgZGlzYWJsaW5nIElQdjYgZnVuY3Rpb25hbGl0eSBhcyBhIHdob2xlLCB2YXJpb3VzIGV4dGVuc2lvbnMsIGFuZCBwZXJoYXBzIHNvbWUgaW5pdGlhbCBuZXR3b3JrIGRldmljZSBzdXBwb3J0LiBJJ20gYW50aWNpcGF0aW5nIGEgd2VsbC1zdHJ1Y3R1cmVkIHNldCBvZiBgY29uZmlnYCBvcHRpb25zLCBwb3NzaWJseSBuZXN0ZWQgd2l0aCBkZXBlbmRlbmNpZXMgb24gdW5kZXJseWluZyBuZXR3b3JrIGRldmljZSBkcml2ZXJzIG9yIG90aGVyIHN1YnN5c3RlbXMuIE15IHByaW1hcnkgZm9jdXMgYXQgdGhpcyBzdGFnZSBpcyB0byBpZGVudGlmeSB0aGUgY3J1Y2lhbCBrbm9icyB0aGF0IGdvdmVybiBJUHY2J3MgYmVoYXZpb3IuIEkgd2lsbCBjaGVjayB3aGF0IEtjb25maWcgdmFyaWFibGVzIGVuYWJsZSBjb3JlIElQdjYgZnVuY3Rpb25hbGl0eS5cblxuXG4iLCJJbnB1dFRva2VucyI6NDQ5NCwiT3V0cHV0VG9rZW5zIjozNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI0VDIxOjAyOjU5Ljc0MzczNDY2NFoiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo5MDM4MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJuZXQvaXB2Ni9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDIzMCxcbiAgXCJMaW5lQ291bnRcIjogMjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDIzMDpcXHRcXHRkZWZhdWx0IE5FVF9GT1UgXFx1MDAyNlxcdTAwMjYgSVBWNlxcbiAyMzE6XFx0XFxuIDIzMjpcXHRjb25maWcgSVBWNl9GT1VfVFVOTkVMXFxuIDIzMzpcXHRcXHR0cmlzdGF0ZVxcbiAyMzQ6XFx0XFx0ZGVmYXVsdCBORVRfRk9VX0lQX1RVTk5FTFMgXFx1MDAyNlxcdTAwMjYgSVBWNl9GT1VcXG4gMjM1OlxcdFxcdHNlbGVjdCBJUFY2X1RVTk5FTFxcbiAyMzY6XFx0XFxuIDIzNzpcXHRjb25maWcgSVBWNl9NVUxUSVBMRV9UQUJMRVNcXG4gMjM4OlxcdFxcdGJvb2wgXFxcIklQdjY6IE11bHRpcGxlIFJvdXRpbmcgVGFibGVzXFxcIlxcbiAyMzk6XFx0XFx0c2VsZWN0IEZJQl9SVUxFU1xcbiAyNDA6XFx0XFx0aGVscFxcbiAyNDE6XFx0XFx0ICBTdXBwb3J0IG11bHRpcGxlIHJvdXRpbmcgdGFibGVzLlxcbiAyNDI6XFx0XFxuIDI0MzpcXHRjb25maWcgSVBWNl9TVUJUUkVFU1xcbiAyNDQ6XFx0XFx0Ym9vbCBcXFwiSVB2Njogc291cmNlIGFkZHJlc3MgYmFzZWQgcm91dGluZ1xcXCJcXG4gMjQ1OlxcdFxcdGRlcGVuZHMgb24gSVBWNl9NVUxUSVBMRV9UQUJMRVNcXG4gMjQ2OlxcdFxcdGhlbHBcXG4gMjQ3OlxcdFxcdCAgRW5hYmxlIHJvdXRpbmcgYnkgc291cmNlIGFkZHJlc3Mgb3IgcHJlZml4LlxcbiAyNDg6XFx0XFxuIDI0OTpcXHRcXHQgIFRoZSBkZXN0aW5hdGlvbiBhZGRyZXNzIGlzIHN0aWxsIHRoZSBwcmltYXJ5IHJvdXRpbmcga2V5LCBzbyBtaXhpbmdcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjRUMjE6MDI6NTkuNzQzODI2Mzg0WiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI5NTY0ODQ4MzUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi5cblxuKipJbnZlc3RpZ2F0aW5nIHRoZSBJUFY2IENvbmZpZ3VyYXRpb24gT3B0aW9ucyoqXG5cbkFscmlnaHQsIHNvIGBJUFY2X01VTFRJUExFX1RBQkxFU2AsIHRoYXQncyBhIGJvb2xlYW4gb3B0aW9uLCByaWdodD8gU2ltcGxlIGVub3VnaC4gQnV0IEkgc2VlIHRoYXQgYElQVjZgIGlzIGFsc28gaW52b2x2ZWQgaGVyZS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlaXIgcmVsYXRpb25zaGlwIGFuZCBob3cgdGhleSBpbnRlcmFjdC4gTXkgbmV4dCBzdGVwIGlzIGNsZWFyOiBJIG5lZWQgdG8gZGlnIGludG8gdGhlIGNhbGxlcnMgb2YgYGZpYjZfcnVsZV9zdXBwcmVzc2AuIEl0J3MgbGlrZWx5IGludm9sdmVkIGluIHRoZSBsb2dpYyB0aGF0IGdvdmVybnMgdGhlc2Ugb3B0aW9ucy4gSSdsbCBmb2N1cyBvbiBob3cgYGZpYjZfcnVsZV9zdXBwcmVzc2AgaXMgdXNlZCwgc3BlY2lmaWNhbGx5IGluIHJlbGF0aW9uIHRvIGBJUFY2X01VTFRJUExFX1RBQkxFU2AgYW5kIGBJUFY2YCwgdG8gZ2V0IGEgYmV0dGVyIGhhbmRsZSBvbiB0aGUgb3ZlcmFsbCBjb25maWd1cmF0aW9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1MDM3LCJPdXRwdXRUb2tlbnMiOjI3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDEsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNFQyMTowMzowMi43MDAzMTM5NzlaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE4NzgzMTMyNzQsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZmliNl9ydWxlX3N1cHByZXNzXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIlwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJpbmNsdWRlL25ldC9maWJfcnVsZXMuaD0yMjA9SU5ESVJFQ1RfQ0FMTEFCTEVfREVDTEFSRShpbnQgZmliNF9ydWxlX2FjdGlvbihzdHJ1Y3QgZmliX3J1bGUgKnJ1bGUsXFxuLS1cXG5pbmNsdWRlL25ldC9maWJfcnVsZXMuaC0yMjMtXFxuaW5jbHVkZS9uZXQvZmliX3J1bGVzLmg6MjI0OklORElSRUNUX0NBTExBQkxFX0RFQ0xBUkUoYm9vbCBmaWI2X3J1bGVfc3VwcHJlc3Moc3RydWN0IGZpYl9ydWxlICpydWxlLFxcbmluY2x1ZGUvbmV0L2ZpYl9ydWxlcy5oLTIyNS1cXHRcXHRcXHRcXHRcXHRcXHRpbnQgZmxhZ3MsXFxuLS1cXG5uZXQvY29yZS9maWJfcnVsZXMuYz0zMTM9aW50IGZpYl9ydWxlc19sb29rdXAoc3RydWN0IGZpYl9ydWxlc19vcHMgKm9wcywgc3RydWN0IGZsb3dpICpmbCxcXG4tLVxcbm5ldC9jb3JlL2ZpYl9ydWxlcy5jLTM0NC1cXHRcXHRpZiAoIWVyciBcXHUwMDI2XFx1MDAyNiBvcHMtXFx1MDAzZXN1cHByZXNzIFxcdTAwMjZcXHUwMDI2IElORElSRUNUX0NBTExfTVQob3BzLVxcdTAwM2VzdXBwcmVzcyxcXG5uZXQvY29yZS9maWJfcnVsZXMuYzozNDU6XFx0XFx0XFx0XFx0XFx0XFx0XFx0ICAgICAgZmliNl9ydWxlX3N1cHByZXNzLFxcbm5ldC9jb3JlL2ZpYl9ydWxlcy5jLTM0Ni1cXHRcXHRcXHRcXHRcXHRcXHRcXHQgICAgICBmaWI0X3J1bGVfc3VwcHJlc3MsXFxuLS1cXG5uZXQvaXB2Ni9maWI2X3J1bGVzLmM9MjcxPUlORElSRUNUX0NBTExBQkxFX1NDT1BFIGludCBmaWI2X3J1bGVfYWN0aW9uKHN0cnVjdCBmaWJfcnVsZSAqcnVsZSxcXG4tLVxcbm5ldC9pcHY2L2ZpYjZfcnVsZXMuYy0yODAtXFxubmV0L2lwdjYvZmliNl9ydWxlcy5jOjI4MTpJTkRJUkVDVF9DQUxMQUJMRV9TQ09QRSBib29sIGZpYjZfcnVsZV9zdXBwcmVzcyhzdHJ1Y3QgZmliX3J1bGUgKnJ1bGUsXFxubmV0L2lwdjYvZmliNl9ydWxlcy5jLTI4Mi1cXHRcXHRcXHRcXHRcXHRcXHRpbnQgZmxhZ3MsXFxuLS1cXG5uZXQvaXB2Ni9maWI2X3J1bGVzLmM9NTk2PXN0YXRpYyBjb25zdCBzdHJ1Y3QgZmliX3J1bGVzX29wcyBfX25ldF9pbml0Y29uc3QgZmliNl9ydWxlc19vcHNfdGVtcGxhdGUgPSB7XFxuLS1cXG5uZXQvaXB2Ni9maWI2X3J1bGVzLmMtNjAxLVxcdC5tYXRjaFxcdFxcdFxcdD0gZmliNl9ydWxlX21hdGNoLFxcbm5ldC9pcHY2L2ZpYjZfcnVsZXMuYzo2MDI6XFx0LnN1cHByZXNzXFx0XFx0PSBmaWI2X3J1bGVfc3VwcHJlc3MsXFxubmV0L2lwdjYvZmliNl9ydWxlcy5jLTYwMy1cXHQuY29uZmlndXJlXFx0XFx0PSBmaWI2X3J1bGVfY29uZmlndXJlLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNFQyMTowMzowNC41Nzg2MzE4MTNaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTM0NjA3NDI1NzMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHlzaXMgb2YgdGhlIElQdjYgRklCIFJ1bGUgU3VwcHJlc3Npb24gUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ3ZlIGdvdCB0aGlzIHBhdGNoIHRoYXQgSSBuZWVkIHRvIGFzc2Vzcy4gSXQncyBpbiBgbmV0L2lwdjYvZmliNl9ydWxlcy5jYCwgc3BlY2lmaWNhbGx5IHdpdGhpbiB0aGUgYGZpYjZfcnVsZV9zdXBwcmVzc2AgZnVuY3Rpb24uIFRoZSBrZXkgY2hhbmdlIGlzIHRoZSBhZGRpdGlvbiBvZiBgcmVzLVx1MDAzZXJ0NiA9IE5VTEw7YCByaWdodCBhZnRlciBgaXA2X3J0X3B1dF9mbGFncyhydCwgZmxhZ3MpYC4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRoYXQgdGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlLCBhIHByZXR0eSBzdHJhaWdodGZvcndhcmQgb25lIGF0IHRoYXQuIEl0IGxvb2tzIGxpa2UgdGhlIGludGVudCBpcyB0byBwcmV2ZW50IGVpdGhlciBhIHBvdGVudGlhbCB1c2UtYWZ0ZXItZnJlZSBvciBkb3VibGUtZnJlZSBzY2VuYXJpbywgb3IgdG8gZW5zdXJlIHRoZSByZXN1bHQgaXMgY29ycmVjdGx5IGNsZWFyZWQgd2hlbiB0aGUgcm91dGUgaXMgc3VwcHJlc3NlZC4gVGhhdCBtYWtlcyBzZW5zZSwga2VlcHMgdGhpbmdzIGNsZWFuLlxuXG5JIGtub3cgYGZpYjZfcnVsZV9zdXBwcmVzc2AgaXMgY2FsbGVkIGZyb20gYGZpYl9ydWxlc19sb29rdXBgIGluIGBuZXQvY29yZS9maWJfcnVsZXMuY2AuIFRoaXMgaXMgaW1wb3J0YW50IGJlY2F1c2UgYGZpYl9ydWxlc19sb29rdXBgIGlzIGNvcmUgbmV0d29ya2luZyBjb2RlLCB3aGljaCBtYWtlcyB0aGlzIGNoYW5nZSBwb3RlbnRpYWxseSBxdWl0ZSBzaWduaWZpY2FudC4gVGhpcyBtZWFucyBpdCdzIGEgcGllY2Ugb2YgY29kZSB0aGF0IGNvdWxkIGJlIGhpdCBwcmV0dHkgZnJlcXVlbnRseS5cblxuTm93LCBJIG5lZWQgdG8gbG9vayBhdCB0aGUgY29uZmlndXJhdGlvbnMuIFdlIG5lZWQgYElQVjZgIGFuZCBgSVBWNl9NVUxUSVBMRV9UQUJMRVNgLiBJIG5lZWQgdG8gY29uZmlybSBgSVBWNl9NVUxUSVBMRV9UQUJMRVNgIGlzIGEgYm9vbGVhbi4gTGV0IG1lIGNoZWNrIHRoZSBLY29uZmlnLiBZZXAsIGl0IGlzLiBTbyB0aGF0J3MgY2xlYXIuIGBJUFY2YCBpcyByZXF1aXJlZCB0b28sIGZvciBhbnl0aGluZyBpbiBgbmV0L2lwdjYvYCwgc28gd2UncmUgZ29vZCB0aGVyZSBhcyB3ZWxsLlxuXG5MZXQncyBxdWlja2x5IGNoZWNrIHRoZSBzaWduYXR1cmUgb2YgYGZpYl9ydWxlc19sb29rdXBgLiBJdCdzIGdlbmVyaWMsIGJ1dCB0aGUgcGF0Y2ggaXMgc3BlY2lmaWMgdG8gSVB2Niwgc28gdGhhdCdzIGZpbmUuXG5cbkdpdmVuIHRoYXQsIEkgdGhpbmsgdGhlIGltcG9ydGFudCBmb2N1cyBzeW1ib2wgaXMgYGZpYjZfcnVsZV9zdXBwcmVzc2AsIGFuZCB0aGUgZW5hYmxlbWVudCBjb25maWd1cmF0aW9ucyBhcmUgYElQVjZgIGFuZCBgSVBWNl9NVUxUSVBMRV9UQUJMRVNgLiBgSVBWNmAgaXMgYSB0cmlzdGF0ZSwgc28gaXQncyBub3QgYSByZWFsIGlzc3VlLlxuXG5Ib2xkIG9uLCBsZXQgbWUgY2hlY2sgc29tZXRoaW5nIGFib3V0IGBmaWI2X3J1bGVfc3VwcHJlc3NgLiBJdCdzIGRlY2xhcmVkIGFzIGBJTkRJUkVDVF9DQUxMQUJMRV9TQ09QRSBib29sIGZpYjZfcnVsZV9zdXBwcmVzcyguLi4pYC4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hhdCB0aGF0IGBJTkRJUkVDVF9DQUxMQUJMRV9TQ09QRWAgbWVhbnMuIFVzdWFsbHksIGl0J3MgZWl0aGVyIGVtcHR5IChtZWFuaW5nIGl0J3MgZXhwb3J0ZWQpIG9yIGBzdGF0aWNgLCBkZXBlbmRpbmcgb24gYENPTkZJR19SRVRQT0xJTkVgLiBMZXQgbWUgZG91YmxlLWNoZWNrLiBPa2F5LCBgSU5ESVJFQ1RfQ0FMTEFCTEVfREVDTEFSRWAgaXMgdXNlZCBpbiBgaW5jbHVkZS9uZXQvZmliX3J1bGVzLmhgLCBzbyBpdCdzICpub3QqIHN0YXRpYywgc28gd2UncmUgZ29vZCB0byBnby4gVGhlIGBmaWI2X3J1bGVfc3VwcHJlc3NgIGZ1bmN0aW9uIGlzIGV4cG9zZWQuXG5cbk5vdywgaXMgYGZpYjZfcnVsZV9zdXBwcmVzc2Agb24gYSBob3QgcGF0aD8gSXQncyBjYWxsZWQgZHVyaW5nIEZJQiBydWxlIGxvb2t1cHMsIHdoaWNoIGhhcHBlbiBkdXJpbmcgcm91dGUgbG9va3Vwcywgc28gaXQgKmNvdWxkKiBiZSBzb21ld2hhdCBob3QuIEhvd2V2ZXIsIHRoZSBmdW5jdGlvbiBpdHNlbGYgaXMgc3BlY2lmaWMgZW5vdWdoLCBzbyBJIGFtIGNvbWZvcnRhYmxlIGZvY3VzaW5nIG9uIGl0LlxuXG5BbHJpZ2h0LCBsZXQncyBzZWUgaWYgdGhpcyBwYXRjaCB0b3VjaGVzIGFueSBvdGhlciBmdW5jdGlvbnMuIE5vLCB0aGUgcGF0Y2ggb25seSBjaGFuZ2VzIGBmaWI2X3J1bGVfc3VwcHJlc3NgLlxuXG5TbywgaGVyZSdzIG15IGFzc2Vzc21lbnQgZm9yIGZ1enppbmc6XG5cbmBgYGpzb25cbntcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1wiZmliNl9ydWxlX3N1cHByZXNzXCJdLFxuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1wiSVBWNlwiLCBcIklQVjZfTVVMVElQTEVfVEFCTEVTXCJdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIHBvdGVudGlhbCB1c2UtYWZ0ZXItZnJlZSBvciBkYW5nbGluZyBwb2ludGVyIGlzc3VlIGluIElQdjYgRklCIHJ1bGVzIGJ5IGNsZWFyaW5nIHJlcy1cdTAwM2VydDYgYWZ0ZXIgcHV0dGluZyB0aGUgcm91dGUuIFRoaXMgaXMgcmVhY2hhYmxlIGNvcmUgbmV0d29ya2luZyBjb2RlLlwiXG59XG5gYGBcblxuXG4iLCJJbnB1dFRva2VucyI6NTQ5NiwiT3V0cHV0VG9rZW5zIjo5MiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjgxMiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNFQyMTowMzoxOC4wMzkzNzY2NTZaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3ODYyNDU1OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiSVBWNlwiLFxuICAgIFwiSVBWNl9NVUxUSVBMRV9UQUJMRVNcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJmaWI2X3J1bGVfc3VwcHJlc3NcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIHBvdGVudGlhbCB1c2UtYWZ0ZXItZnJlZSBvciBkYW5nbGluZyBwb2ludGVyIGlzc3VlIGluIElQdjYgRklCIHJ1bGVzIGJ5IGNsZWFyaW5nIHJlcy1cXHUwMDNlcnQ2IGFmdGVyIHB1dHRpbmcgdGhlIHJvdXRlLiBUaGlzIGlzIHJlYWNoYWJsZSBjb3JlIG5ldHdvcmtpbmcgY29kZS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJJUFY2XCIsXG4gICAgXCJJUFY2X01VTFRJUExFX1RBQkxFU1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImZpYjZfcnVsZV9zdXBwcmVzc1wiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgcG90ZW50aWFsIHVzZS1hZnRlci1mcmVlIG9yIGRhbmdsaW5nIHBvaW50ZXIgaXNzdWUgaW4gSVB2NiBGSUIgcnVsZXMgYnkgY2xlYXJpbmcgcmVzLVxcdTAwM2VydDYgYWZ0ZXIgcHV0dGluZyB0aGUgcm91dGUuIFRoaXMgaXMgcmVhY2hhYmxlIGNvcmUgbmV0d29ya2luZyBjb2RlLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowmcl7q[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-24 20:41:52 +0000 UTC FinishedAt: 2026-07-24 21:03:20 +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": "78f75d632f74b8de0f081a128588f7c37d0d1164", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "IPV6", "IPV6_MULTIPLE_TABLES" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "78f75d632f74b8de0f081a128588f7c37d0d1164", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "IPV6", "IPV6_MULTIPLE_TABLES" ], "series_id": "828fadb1-74b1-4ddc-9fc9-18da871d24ea" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "fib6_rule_suppress" ], "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+CgkJCTx0ZD4yMDI2LzA3LzI0IDIxOjAyPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0lQVjYmIzM0OywKICAgICYjMzQ7SVBWNl9NVUxUSVBMRV9UQUJMRVMmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtmaWI2X3J1bGVfc3VwcHJlc3MmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSBwb3RlbnRpYWwgdXNlLWFmdGVyLWZyZWUgb3IgZGFuZ2xpbmcgcG9pbnRlciBpc3N1ZSBpbiBJUHY2IEZJQiBydWxlcyBieSBjbGVhcmluZyByZXMtXHUwMDNlcnQ2IGFmdGVyIHB1dHRpbmcgdGhlIHJvdXRlLiBUaGlzIGlzIHJlYWNoYWJsZSBjb3JlIG5ldHdvcmtpbmcgY29kZS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNCAyMTowMjwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDA3YTY2ODViNjRhYjE0NGZhOTgxZDJkY2JlZjk1YzFiMjY5MjBkZDVcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgRnJpIEp1bCAyNCAyMTowMjozOSAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9uZXQvaXB2Ni9maWI2X3J1bGVzLmMgYi9uZXQvaXB2Ni9maWI2X3J1bGVzLmNcbmluZGV4IGUxYjJiNGZhNmUxODkwLi44OWVlM2M5NjljYTc1ZSAxMDA2NDRcbi0tLSBhL25ldC9pcHY2L2ZpYjZfcnVsZXMuY1xuJiM0MzsmIzQzOyYjNDM7IGIvbmV0L2lwdjYvZmliNl9ydWxlcy5jXG5AQCAtMzA4LDYgJiM0MzszMDgsNyBAQCBJTkRJUkVDVF9DQUxMQUJMRV9TQ09QRSBib29sIGZpYjZfcnVsZV9zdXBwcmVzcyhzdHJ1Y3QgZmliX3J1bGUgKnJ1bGUsXG4gXG4gc3VwcHJlc3Nfcm91dGU6XG4gXHRpcDZfcnRfcHV0X2ZsYWdzKHJ0LCBmbGFncyk7XG4mIzQzO1x0cmVzLVx1MDAzZXJ0NiA9IE5VTEw7XG4gXHRyZXR1cm4gdHJ1ZTtcbiB9XG4gXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjQgMjE6MDI8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0lQVjYmIzM0OywKICAgICYjMzQ7SVBWNl9NVUxUSVBMRV9UQUJMRVMmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtmaWI2X3J1bGVfc3VwcHJlc3MmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSBwb3RlbnRpYWwgdXNlLWFmdGVyLWZyZWUgb3IgZGFuZ2xpbmcgcG9pbnRlciBpc3N1ZSBpbiBJUHY2IEZJQiBydWxlcyBieSBjbGVhcmluZyByZXMtXHUwMDNlcnQ2IGFmdGVyIHB1dHRpbmcgdGhlIHJvdXRlLiBUaGlzIGlzIHJlYWNoYWJsZSBjb3JlIG5ldHdvcmtpbmcgY29kZS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDA3YTY2ODViNjRhYjE0NGZhOTgxZDJkY2JlZjk1YzFiMjY5MjBkZDUKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgRnJpIEp1bCAyNCAyMTowMjozOSAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL25ldC9pcHY2L2ZpYjZfcnVsZXMuYyBiL25ldC9pcHY2L2ZpYjZfcnVsZXMuYwppbmRleCBlMWIyYjRmYTZlMTg5MC4uODllZTNjOTY5Y2E3NWUgMTAwNjQ0Ci0tLSBhL25ldC9pcHY2L2ZpYjZfcnVsZXMuYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvaXB2Ni9maWI2X3J1bGVzLmMKQEAgLTMwOCw2ICYjNDM7MzA4LDcgQEAgSU5ESVJFQ1RfQ0FMTEFCTEVfU0NPUEUgYm9vbCBmaWI2X3J1bGVfc3VwcHJlc3Moc3RydWN0IGZpYl9ydWxlICpydWxlLAogCiBzdXBwcmVzc19yb3V0ZToKIAlpcDZfcnRfcHV0X2ZsYWdzKHJ0LCBmbGFncyk7CiYjNDM7CXJlcy0mZ3Q7cnQ2ID0gTlVMTDsKIAlyZXR1cm4gdHJ1ZTsKIH0KIAo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNCAyMTowMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMDE0CgkJCQkJCQlvdXRwdXQ6IDM4CgkJCQkJCQl0aG91Z2h0czogNjAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0czoKCioqQW5hbHl6aW5nIGEgRklCNiBSdWxlIFN1cHByZXNzaW9uIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCBhIHBhdGNoIHRoYXQmIzM5O3MgZ290IGl0cyBob29rcyBpbnRvIGBuZXQvaXB2Ni9maWI2X3J1bGVzLmNgLiBTZWVtcyBzdHJhaWdodGZvcndhcmQsIGl0JiMzOTtzIGFkZGluZyBgcmVzLSZndDtydDYgPSBOVUxMO2AgaW5zaWRlIHRoZSBgZmliNl9ydWxlX3N1cHByZXNzYCBmdW5jdGlvbiAqYmVmb3JlKiByZXR1cm5pbmcgYHRydWVgLiBNeSBpbml0aWFsIHJlYWN0aW9uIGlzIHRoYXQgdGhpcyBpcyBsaWtlbHkgcmVsYXRlZCB0byBjbGVhcmluZyBhIHJvdXRlIGVudHJ5IHVuZGVyIGNlcnRhaW4gc3VwcHJlc3Npb24gY29uZGl0aW9ucywgbWF5YmUgdG8gcHJldmVudCBhbiB1bmludGVuZGVkIHJlZmVyZW5jZSBmcm9tIHBlcnNpc3RpbmcuCgpMZXQmIzM5O3MgZGl2ZSBpbnRvIGBmaWI2X3J1bGVfc3VwcHJlc3NgIGl0c2VsZiB0byB1bmRlcnN0YW5kIHRoZSBjb250ZXh0LiBJIG5lZWQgdG8gZmlndXJlIG91dDoKCiogICBXaGF0IGByZXNgIGlzLCBhbmQgd2hhdCBmaWVsZHMgYXJlIGJlaW5nIG1hbmlwdWxhdGVkLiBTcGVjaWZpY2FsbHksIEkgbmVlZCB0byBrbm93IHdoYXQgYHJlcy0mZ3Q7cnQ2YCByZXByZXNlbnRzLiBJcyB0aGlzIHNvbWUga2luZCBvZiByb3V0ZSBjYWNoZSBvciB0ZW1wb3Jhcnkgcm91dGUgZW50cnk/CiogICBXaGF0IGNvbmRpdGlvbnMgdHJpZ2dlciB0aGlzIGB0cnVlYCByZXR1cm4gZnJvbSBgZmliNl9ydWxlX3N1cHByZXNzYD8gQXJlIHdlIHRhbGtpbmcgYWJvdXQgYSBydWxlIG1hdGNoIHRoYXQgaW5kaWNhdGVzIGEgcm91dGUgc2hvdWxkICpub3QqIGJlIHVzZWQ/IFBlcmhhcHMgaXQmIzM5O3Mgc3VwcHJlc3NpbmcgYSByb3V0ZSBsb29rdXAgZHVlIHRvIHNvbWUgc29ydCBvZiBmaWx0ZXJpbmcgb3IgcG9saWN5LgoqICAgV2h5IGlzIHRoaXMgKmltcG9ydGFudCo/IFdoeSBkb2VzIGNsZWFyaW5nIHRoZSByb3V0ZSBwb2ludGVyIGhhdmUgdG8gaGFwcGVuIGhlcmU/IElzIHRoZXJlIGEgcmlzayBvZiBtZW1vcnkgbGVha3MsIGluY29ycmVjdCByb3V0aW5nIGRlY2lzaW9ucywgb3IgdW5leHBlY3RlZCBiZWhhdmlvciBpZiBgcmVzLSZndDtydDZgIGlzbiYjMzk7dCBwcm9wZXJseSBjbGVhcmVkIHdoZW4gd2Ugc3VwcHJlc3M/IFdoYXQgcG90ZW50aWFsIHJhY2UgY29uZGl0aW9ucyBhbSBJIGRlYWxpbmcgd2l0aD8KCkkmIzM5O20gYmV0dGluZyB0aGUgYW5zd2VyIGxpZXMgd2l0aGluIHRoZSBmdW5jdGlvbiYjMzk7cyBsb2dpYyBhbmQgaXRzIGludGVyYWN0aW9uIHdpdGggb3RoZXIgcGFydHMgb2YgdGhlIEZJQjYgcnVsZXMgaW1wbGVtZW50YXRpb24uIEkmIzM5O2xsIGJlIGxvb2tpbmcgZm9yIHdoZXJlIGByZXNgIGlzIHVzZWQgYWZ0ZXIgdGhlIGBmaWI2X3J1bGVfc3VwcHJlc3NgIGNhbGwgdG8gc2VlIHdoYXQgdGhpcyBwYXRjaCBtaWdodCBiZSBjaGFuZ2luZywgYW5kIHdoYXQgaXQmIzM5O3MgcHJldmVudGluZy4gSXTigJlzIGFsc28gY3J1Y2lhbCB0byBzZWUgaWYgb3RoZXIgcGFydHMgb2YgdGhlIGtlcm5lbCBhcmUgYWxzbyByZWZlcmVuY2luZyB0aGlzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI0IDIxOjAyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2ZpYjZfcnVsZV9zdXBwcmVzcyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9pcHY2L2ZpYjZfcnVsZXMuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvaXB2Ni9maWI2X3J1bGVzLmM9MjcxPUlORElSRUNUX0NBTExBQkxFX1NDT1BFIGludCBmaWI2X3J1bGVfYWN0aW9uKHN0cnVjdCBmaWJfcnVsZSAqcnVsZSxcbi0tXG5uZXQvaXB2Ni9maWI2X3J1bGVzLmMtMjgwLVxubmV0L2lwdjYvZmliNl9ydWxlcy5jOjI4MTpJTkRJUkVDVF9DQUxMQUJMRV9TQ09QRSBib29sIGZpYjZfcnVsZV9zdXBwcmVzcyhzdHJ1Y3QgZmliX3J1bGUgKnJ1bGUsXG5uZXQvaXB2Ni9maWI2X3J1bGVzLmMtMjgyLVx0XHRcdFx0XHRcdGludCBmbGFncyxcbi0tXG5uZXQvaXB2Ni9maWI2X3J1bGVzLmM9NTk2PXN0YXRpYyBjb25zdCBzdHJ1Y3QgZmliX3J1bGVzX29wcyBfX25ldF9pbml0Y29uc3QgZmliNl9ydWxlc19vcHNfdGVtcGxhdGUgPSB7XG4tLVxubmV0L2lwdjYvZmliNl9ydWxlcy5jLTYwMS1cdC5tYXRjaFx0XHRcdD0gZmliNl9ydWxlX21hdGNoLFxubmV0L2lwdjYvZmliNl9ydWxlcy5jOjYwMjpcdC5zdXBwcmVzc1x0XHQ9IGZpYjZfcnVsZV9zdXBwcmVzcyxcbm5ldC9pcHY2L2ZpYjZfcnVsZXMuYy02MDMtXHQuY29uZmlndXJlXHRcdD0gZmliNl9ydWxlX2NvbmZpZ3VyZSxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNCAyMTowMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNzYzCgkJCQkJCQlvdXRwdXQ6IDM5CgkJCQkJCQl0aG91Z2h0czogMjcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCYjMzk7cyBkaXZlIGludG8gdGhpcy4gSGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBhcyBpZiB0aGV5JiMzOTtyZSBteSBvd246CgoqKkludmVzdGlnYXRpbmcgdGhlIGZpYjZfcnVsZV9zdXBwcmVzcyBGdW5jdGlvbioqCgpBbHJpZ2h0LCB0aW1lIHRvIGdldCBteSBoYW5kcyBkaXJ0eS4gSSBuZWVkIHRvIHRha2UgYSBsb29rIGF0IGBmaWI2X3J1bGVfc3VwcHJlc3NgIGZ1bmN0aW9uLCBzcGVjaWZpY2FsbHkgaW4gYG5ldC9pcHY2L2ZpYjZfcnVsZXMuY2AuIEkga25vdyB0aGlzIGlzIHdoZXJlIHRoZSBJUHY2IHJvdXRpbmcgcnVsZXMgbG9naWMgcmVzaWRlcywgc28gdGhhdCYjMzk7cyB0aGUgbmF0dXJhbCBwbGFjZSB0byBzdGFydCBkaWdnaW5nLiBJJiMzOTttIGtlZW4gdG8gdW5kZXJzdGFuZCB0aGUgc3VwcHJlc3Npb24gbWVjaGFuaXNtIOKAkyB3aGF0IGl0JiMzOTtzIHN1cHByZXNzaW5nLCB3aHksIGFuZCBob3cgaXQmIzM5O3MgYmVpbmcgZG9uZS4gVGhpcyBmdW5jdGlvbiBwcm9iYWJseSBjb250YWlucyB0aGUgY29yZSBsb2dpYyBmb3IgZmlsdGVyaW5nIG9yIG1vZGlmeWluZyByb3V0aW5nIGRlY2lzaW9ucyBiYXNlZCBvbiBjb25maWd1cmVkIHJ1bGVzLCBzbyB0aGF04oCZcyBnb2luZyB0byBiZSBrZXkgdG8gd2hhdGV2ZXIgSSYjMzk7bSB0cm91Ymxlc2hvb3RpbmcuIExldCYjMzk7cyBzZWUgaG93IHRoaXMgc3VwcHJlc3Npb24gd29ya3MhCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjQgMjE6MDI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtuZXQvaXB2Ni9maWI2X3J1bGVzLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAyNzAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNTAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDI3MDpcdFxuIDI3MTpcdElORElSRUNUX0NBTExBQkxFX1NDT1BFIGludCBmaWI2X3J1bGVfYWN0aW9uKHN0cnVjdCBmaWJfcnVsZSAqcnVsZSxcbiAyNzI6XHRcdFx0XHRcdFx0ICAgICBzdHJ1Y3QgZmxvd2kgKmZscCwgaW50IGZsYWdzLFxuIDI3MzpcdFx0XHRcdFx0XHQgICAgIHN0cnVjdCBmaWJfbG9va3VwX2FyZyAqYXJnKVxuIDI3NDpcdHtcbiAyNzU6XHRcdGlmIChhcmctXHUwMDNlbG9va3VwX3B0ciA9PSBmaWI2X3RhYmxlX2xvb2t1cClcbiAyNzY6XHRcdFx0cmV0dXJuIGZpYjZfcnVsZV9hY3Rpb25fYWx0KHJ1bGUsIGZscCwgZmxhZ3MsIGFyZyk7XG4gMjc3Olx0XG4gMjc4Olx0XHRyZXR1cm4gX19maWI2X3J1bGVfYWN0aW9uKHJ1bGUsIGZscCwgZmxhZ3MsIGFyZyk7XG4gMjc5Olx0fVxuIDI4MDpcdFxuIDI4MTpcdElORElSRUNUX0NBTExBQkxFX1NDT1BFIGJvb2wgZmliNl9ydWxlX3N1cHByZXNzKHN0cnVjdCBmaWJfcnVsZSAqcnVsZSxcbiAyODI6XHRcdFx0XHRcdFx0XHRpbnQgZmxhZ3MsXG4gMjgzOlx0XHRcdFx0XHRcdFx0c3RydWN0IGZpYl9sb29rdXBfYXJnICphcmcpXG4gMjg0Olx0e1xuIDI4NTpcdFx0c3RydWN0IGZpYjZfcmVzdWx0ICpyZXMgPSBhcmctXHUwMDNlcmVzdWx0O1xuIDI4NjpcdFx0c3RydWN0IHJ0Nl9pbmZvICpydCA9IHJlcy1cdTAwM2VydDY7XG4gMjg3Olx0XHRzdHJ1Y3QgbmV0X2RldmljZSAqZGV2ID0gTlVMTDtcbiAyODg6XHRcbiAyODk6XHRcdGlmICghcnQpXG4gMjkwOlx0XHRcdHJldHVybiBmYWxzZTtcbiAyOTE6XHRcbiAyOTI6XHRcdGlmIChydC1cdTAwM2VydDZpX2lkZXYpXG4gMjkzOlx0XHRcdGRldiA9IHJ0LVx1MDAzZXJ0NmlfaWRldi1cdTAwM2VkZXY7XG4gMjk0Olx0XG4gMjk1Olx0XHQvKiBkbyBub3QgYWNjZXB0IHJlc3VsdCBpZiB0aGUgcm91dGUgZG9lc1xuIDI5NjpcdFx0ICogbm90IG1lZXQgdGhlIHJlcXVpcmVkIHByZWZpeCBsZW5ndGhcbiAyOTc6XHRcdCAqL1xuIDI5ODpcdFx0aWYgKHJ0LVx1MDAzZXJ0NmlfZHN0LnBsZW4gXHUwMDNjPSBydWxlLVx1MDAzZXN1cHByZXNzX3ByZWZpeGxlbilcbiAyOTk6XHRcdFx0Z290byBzdXBwcmVzc19yb3V0ZTtcbiAzMDA6XHRcbiAzMDE6XHRcdC8qIGRvIG5vdCBhY2NlcHQgcmVzdWx0IGlmIHRoZSByb3V0ZSB1c2VzIGEgZGV2aWNlXG4gMzAyOlx0XHQgKiBiZWxvbmdpbmcgdG8gYSBmb3JiaWRkZW4gaW50ZXJmYWNlIGdyb3VwXG4gMzAzOlx0XHQgKi9cbiAzMDQ6XHRcdGlmIChydWxlLVx1MDAzZXN1cHByZXNzX2lmZ3JvdXAgIT0gLTEgXHUwMDI2XHUwMDI2IGRldiBcdTAwMjZcdTAwMjYgZGV2LVx1MDAzZWdyb3VwID09IHJ1bGUtXHUwMDNlc3VwcHJlc3NfaWZncm91cClcbiAzMDU6XHRcdFx0Z290byBzdXBwcmVzc19yb3V0ZTtcbiAzMDY6XHRcbiAzMDc6XHRcdHJldHVybiBmYWxzZTtcbiAzMDg6XHRcbiAzMDk6XHRzdXBwcmVzc19yb3V0ZTpcbiAzMTA6XHRcdGlwNl9ydF9wdXRfZmxhZ3MocnQsIGZsYWdzKTtcbiAzMTE6XHRcdHJlcy1cdTAwM2VydDYgPSBOVUxMO1xuIDMxMjpcdFx0cmV0dXJuIHRydWU7XG4gMzEzOlx0fVxuIDMxNDpcdFxuIDMxNTpcdElORElSRUNUX0NBTExBQkxFX1NDT1BFIGludCBmaWI2X3J1bGVfbWF0Y2goc3RydWN0IGZpYl9ydWxlICpydWxlLFxuIDMxNjpcdFx0XHRcdFx0XHQgICAgc3RydWN0IGZsb3dpICpmbCwgaW50IGZsYWdzKVxuIDMxNzpcdHtcbiAzMTg6XHRcdHN0cnVjdCBmaWI2X3J1bGUgKnIgPSAoc3RydWN0IGZpYjZfcnVsZSAqKSBydWxlO1xuIDMxOTpcdFx0c3RydWN0IGZsb3dpNiAqZmw2ID0gXHUwMDI2ZmwtXHUwMDNldS5pcDY7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjQgMjE6MDI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzc1NgoJCQkJCQkJb3V0cHV0OiAzMgoJCQkJCQkJdGhvdWdodHM6IDUwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkFuYWx5emluZyBhIFJvdXRlIFN1cHByZXNzaW9uIFBhdGNoKioKCkFscmlnaHQsIHNvIHRoZSBwYXRjaCBpbnRyb2R1Y2VzIGByZXMtJmd0O3J0NiA9IE5VTEw7YCB3aXRoaW4gdGhlIGBzdXBwcmVzc19yb3V0ZWAgYmxvY2suIFRoYXQmIzM5O3MgYSBkaXJlY3QsIGZ1bmN0aW9uYWwgY2hhbmdlLiBNeSBmaXJzdCB0aG91Z2h0IGlzIHRvIGRpdmUgaW50byB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zIHJlbGF0ZWQgdG8gSVB2NiBGSUIgcnVsZXMsIHNwZWNpZmljYWxseSB3aXRoaW4gYG5ldC9pcHY2L2ZpYjZfcnVsZXMuY2AuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBpbXBsaWNhdGlvbnMgb2YgbnVsbGluZyBvdXQgYHJlcy0mZ3Q7cnQ2YCBpbiB0aGlzIGNvbnRleHQuIElzIGl0IGludGVuZGVkIHRvIGV4cGxpY2l0bHkgcmVsZWFzZSBhIHJvdXRlIHJlZmVyZW5jZSwgc2lnbmFsIGFuIGVycm9yLCBvciBzb21ldGhpbmcgZWxzZSBlbnRpcmVseT8gSSBuZWVkIHRvIGtub3cgd2hhdCB0aGF0IGByZXMtJmd0O3J0NmAgcG9pbnRlciByZXByZXNlbnRzIGFuZCB0aGUgZGF0YSBpdCBwb2ludHMgdG8uIFVuZGVyc3RhbmRpbmcgdGhlIHVuZGVybHlpbmcgZGF0YSBzdHJ1Y3R1cmUgYW5kIHdoYXQgb3RoZXIgcGFydHMgb2YgdGhlIHJvdXRpbmcgY29kZSBhcmUgdG91Y2hpbmcgaXQgaXMgY3JpdGljYWwgZm9yIGZpZ3VyaW5nIG91dCBob3cgdGhpcyBwYXRjaCBiZWhhdmVzLiBJcyB0aGVyZSBhbnkgZXhpc3RpbmcgY29kZSB0aGF0IGRlcGVuZHMgb24gdGhlIGBydDZgIGZpZWxkIG5vdCBiZWluZyBOVUxMIGFmdGVyIHRoZSBgc3VwcHJlc3Nfcm91dGVgIGZ1bmN0aW9uIHJ1bnM/IEkgbmVlZCB0byBhbmFseXplIHRob3NlIGFyZWFzIHZlcnkgY2FyZWZ1bGx5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI0IDIxOjAyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2ZpYjZfcnVsZXMubyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9pcHY2L01ha2VmaWxlJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9pcHY2L01ha2VmaWxlPTIwPWlwdjYtJChDT05GSUdfTkVURklMVEVSKSAmIzQzOz0gbmV0ZmlsdGVyLm9cbm5ldC9pcHY2L01ha2VmaWxlOjIxOmlwdjYtJChDT05GSUdfSVBWNl9NVUxUSVBMRV9UQUJMRVMpICYjNDM7PSBmaWI2X3J1bGVzLm9cbm5ldC9pcHY2L01ha2VmaWxlLTIyLWlwdjYtJChDT05GSUdfUFJPQ19GUykgJiM0Mzs9IHByb2Mub1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI0IDIxOjAyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQxNDkKCQkJCQkJCW91dHB1dDogMzcKCQkJCQkJCXRob3VnaHRzOiA3MQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipFeGFtaW5pbmcgSVB2NiBDb25maWd1cmF0aW9uIFJlcXVpcmVtZW50cyoqCgpPa2F5LCBzbyB0aGUgYENPTkZJR19JUFY2X01VTFRJUExFX1RBQkxFU2Agb3B0aW9uIGlzIGEgbXVzdC1oYXZlLCB0aGF0IG11Y2ggaXMgY2xlYXIuIE15IG5leHQgc3RlcCBpcyB0byBmaWd1cmUgb3V0IHRoZSBkZXBlbmRlbmNpZXMsIHNwZWNpZmljYWxseSwgd2hldGhlciBgQ09ORklHX0lQVjZgIGl0c2VsZiBpcyBhbHNvIGEgcHJlcmVxdWlzaXRlLiBBIHF1aWNrIHBlZWsgaW50byBgbmV0L2lwdjYvTWFrZWZpbGVgIHNob3VsZCBjb25maXJtIHRoYXQsIGFuZCB5ZXAsIHRoZXJlIGl0IGlzISBOb3cgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIHJlbGF0aW9uc2hpcCBiZXR3ZWVuIHRoZXNlIHR3bywgc28gSSYjMzk7bGwgZGl2ZSBpbnRvIGBuZXQvaXB2Ni9LY29uZmlnYCB0byBzZWUgdGhlIGNvbmRpdGlvbnMgYW5kIGRlcGVuZGVuY2llcyBkZWZpbmVkIGZvciBgSVBWNl9NVUxUSVBMRV9UQUJMRVNgLiBUaGlzIHNob3VsZCBjbGFyaWZ5IGFueSBvdGhlciByZWxldmFudCBkZXBlbmRlbmNpZXMgb3IgcG90ZW50aWFsIGNvbmZsaWN0cy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjQgMjE6MDI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIElQVjZfTVVMVElQTEVfVEFCTEVTJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L2lwdjYvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvaXB2Ni9LY29uZmlnPTIzMj1jb25maWcgSVBWNl9GT1VfVFVOTkVMXG4tLVxubmV0L2lwdjYvS2NvbmZpZy0yMzYtXG5uZXQvaXB2Ni9LY29uZmlnOjIzNzpjb25maWcgSVBWNl9NVUxUSVBMRV9UQUJMRVNcbm5ldC9pcHY2L0tjb25maWctMjM4LVx0Ym9vbCBcJiMzNDtJUHY2OiBNdWx0aXBsZSBSb3V0aW5nIFRhYmxlc1wmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNCAyMTowMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0NDk0CgkJCQkJCQlvdXRwdXQ6IDM1CgkJCQkJCQl0aG91Z2h0czogMjAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipFeGFtaW5pbmcgSVB2NiBDb25maWd1cmF0aW9uIE9wdGlvbnMqKgoKT2theSwgbGV0JiMzOTtzIGRpdmUgaW4uIEkgbmVlZCB0byByZWZyZXNoIG15IG1lbW9yeSBvbiB0aGUgSVB2NiBjb25maWd1cmF0aW9uIG9wdGlvbnMgd2l0aGluIHRoZSBrZXJuZWwuIFNwZWNpZmljYWxseSwgSSYjMzk7bSBnb2luZyB0byBqdW1wIHRvIGBuZXQvaXB2Ni9LY29uZmlnYCBhcm91bmQgbGluZSAyMzcuIFRoYXQmIzM5O3MgdXN1YWxseSB3aGVyZSB0aGUgY29yZSBJUHY2IGZlYXR1cmUgc2VsZWN0aW9uIGJlZ2lucywgYW5kIEkgZXhwZWN0IHRvIHNlZSB0aGUgbWFpbiBidWlsZGluZyBibG9ja3MgZGVmaW5lZCB0aGVyZS4gSSYjMzk7bSBsb29raW5nIGZvciB0aGUga2V5IEtjb25maWcgc3ltYm9scyByZWxhdGVkIHRvIHRoZSBjb3JlIElQdjYgcHJvdG9jb2wsIGxpa2VseSBpbmNsdWRpbmcgb3B0aW9ucyBmb3IgZW5hYmxpbmcgb3IgZGlzYWJsaW5nIElQdjYgZnVuY3Rpb25hbGl0eSBhcyBhIHdob2xlLCB2YXJpb3VzIGV4dGVuc2lvbnMsIGFuZCBwZXJoYXBzIHNvbWUgaW5pdGlhbCBuZXR3b3JrIGRldmljZSBzdXBwb3J0LiBJJiMzOTttIGFudGljaXBhdGluZyBhIHdlbGwtc3RydWN0dXJlZCBzZXQgb2YgYGNvbmZpZ2Agb3B0aW9ucywgcG9zc2libHkgbmVzdGVkIHdpdGggZGVwZW5kZW5jaWVzIG9uIHVuZGVybHlpbmcgbmV0d29yayBkZXZpY2UgZHJpdmVycyBvciBvdGhlciBzdWJzeXN0ZW1zLiBNeSBwcmltYXJ5IGZvY3VzIGF0IHRoaXMgc3RhZ2UgaXMgdG8gaWRlbnRpZnkgdGhlIGNydWNpYWwga25vYnMgdGhhdCBnb3Zlcm4gSVB2NiYjMzk7cyBiZWhhdmlvci4gSSB3aWxsIGNoZWNrIHdoYXQgS2NvbmZpZyB2YXJpYWJsZXMgZW5hYmxlIGNvcmUgSVB2NiBmdW5jdGlvbmFsaXR5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNCAyMTowMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O25ldC9pcHY2L0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAyMzAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDIzMDpcdFx0ZGVmYXVsdCBORVRfRk9VIFx1MDAyNlx1MDAyNiBJUFY2XG4gMjMxOlx0XG4gMjMyOlx0Y29uZmlnIElQVjZfRk9VX1RVTk5FTFxuIDIzMzpcdFx0dHJpc3RhdGVcbiAyMzQ6XHRcdGRlZmF1bHQgTkVUX0ZPVV9JUF9UVU5ORUxTIFx1MDAyNlx1MDAyNiBJUFY2X0ZPVVxuIDIzNTpcdFx0c2VsZWN0IElQVjZfVFVOTkVMXG4gMjM2Olx0XG4gMjM3Olx0Y29uZmlnIElQVjZfTVVMVElQTEVfVEFCTEVTXG4gMjM4Olx0XHRib29sIFwmIzM0O0lQdjY6IE11bHRpcGxlIFJvdXRpbmcgVGFibGVzXCYjMzQ7XG4gMjM5Olx0XHRzZWxlY3QgRklCX1JVTEVTXG4gMjQwOlx0XHRoZWxwXG4gMjQxOlx0XHQgIFN1cHBvcnQgbXVsdGlwbGUgcm91dGluZyB0YWJsZXMuXG4gMjQyOlx0XG4gMjQzOlx0Y29uZmlnIElQVjZfU1VCVFJFRVNcbiAyNDQ6XHRcdGJvb2wgXCYjMzQ7SVB2Njogc291cmNlIGFkZHJlc3MgYmFzZWQgcm91dGluZ1wmIzM0O1xuIDI0NTpcdFx0ZGVwZW5kcyBvbiBJUFY2X01VTFRJUExFX1RBQkxFU1xuIDI0NjpcdFx0aGVscFxuIDI0NzpcdFx0ICBFbmFibGUgcm91dGluZyBieSBzb3VyY2UgYWRkcmVzcyBvciBwcmVmaXguXG4gMjQ4Olx0XG4gMjQ5Olx0XHQgIFRoZSBkZXN0aW5hdGlvbiBhZGRyZXNzIGlzIHN0aWxsIHRoZSBwcmltYXJ5IHJvdXRpbmcga2V5LCBzbyBtaXhpbmdcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjQgMjE6MDI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTAzNwoJCQkJCQkJb3V0cHV0OiAyNwoJCQkJCQkJdGhvdWdodHM6IDQxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLgoKKipJbnZlc3RpZ2F0aW5nIHRoZSBJUFY2IENvbmZpZ3VyYXRpb24gT3B0aW9ucyoqCgpBbHJpZ2h0LCBzbyBgSVBWNl9NVUxUSVBMRV9UQUJMRVNgLCB0aGF0JiMzOTtzIGEgYm9vbGVhbiBvcHRpb24sIHJpZ2h0PyBTaW1wbGUgZW5vdWdoLiBCdXQgSSBzZWUgdGhhdCBgSVBWNmAgaXMgYWxzbyBpbnZvbHZlZCBoZXJlLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGVpciByZWxhdGlvbnNoaXAgYW5kIGhvdyB0aGV5IGludGVyYWN0LiBNeSBuZXh0IHN0ZXAgaXMgY2xlYXI6IEkgbmVlZCB0byBkaWcgaW50byB0aGUgY2FsbGVycyBvZiBgZmliNl9ydWxlX3N1cHByZXNzYC4gSXQmIzM5O3MgbGlrZWx5IGludm9sdmVkIGluIHRoZSBsb2dpYyB0aGF0IGdvdmVybnMgdGhlc2Ugb3B0aW9ucy4gSSYjMzk7bGwgZm9jdXMgb24gaG93IGBmaWI2X3J1bGVfc3VwcHJlc3NgIGlzIHVzZWQsIHNwZWNpZmljYWxseSBpbiByZWxhdGlvbiB0byBgSVBWNl9NVUxUSVBMRV9UQUJMRVNgIGFuZCBgSVBWNmAsIHRvIGdldCBhIGJldHRlciBoYW5kbGUgb24gdGhlIG92ZXJhbGwgY29uZmlndXJhdGlvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjQgMjE6MDM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZmliNl9ydWxlX3N1cHByZXNzJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2luY2x1ZGUvbmV0L2ZpYl9ydWxlcy5oPTIyMD1JTkRJUkVDVF9DQUxMQUJMRV9ERUNMQVJFKGludCBmaWI0X3J1bGVfYWN0aW9uKHN0cnVjdCBmaWJfcnVsZSAqcnVsZSxcbi0tXG5pbmNsdWRlL25ldC9maWJfcnVsZXMuaC0yMjMtXG5pbmNsdWRlL25ldC9maWJfcnVsZXMuaDoyMjQ6SU5ESVJFQ1RfQ0FMTEFCTEVfREVDTEFSRShib29sIGZpYjZfcnVsZV9zdXBwcmVzcyhzdHJ1Y3QgZmliX3J1bGUgKnJ1bGUsXG5pbmNsdWRlL25ldC9maWJfcnVsZXMuaC0yMjUtXHRcdFx0XHRcdFx0aW50IGZsYWdzLFxuLS1cbm5ldC9jb3JlL2ZpYl9ydWxlcy5jPTMxMz1pbnQgZmliX3J1bGVzX2xvb2t1cChzdHJ1Y3QgZmliX3J1bGVzX29wcyAqb3BzLCBzdHJ1Y3QgZmxvd2kgKmZsLFxuLS1cbm5ldC9jb3JlL2ZpYl9ydWxlcy5jLTM0NC1cdFx0aWYgKCFlcnIgXHUwMDI2XHUwMDI2IG9wcy1cdTAwM2VzdXBwcmVzcyBcdTAwMjZcdTAwMjYgSU5ESVJFQ1RfQ0FMTF9NVChvcHMtXHUwMDNlc3VwcHJlc3MsXG5uZXQvY29yZS9maWJfcnVsZXMuYzozNDU6XHRcdFx0XHRcdFx0XHQgICAgICBmaWI2X3J1bGVfc3VwcHJlc3MsXG5uZXQvY29yZS9maWJfcnVsZXMuYy0zNDYtXHRcdFx0XHRcdFx0XHQgICAgICBmaWI0X3J1bGVfc3VwcHJlc3MsXG4tLVxubmV0L2lwdjYvZmliNl9ydWxlcy5jPTI3MT1JTkRJUkVDVF9DQUxMQUJMRV9TQ09QRSBpbnQgZmliNl9ydWxlX2FjdGlvbihzdHJ1Y3QgZmliX3J1bGUgKnJ1bGUsXG4tLVxubmV0L2lwdjYvZmliNl9ydWxlcy5jLTI4MC1cbm5ldC9pcHY2L2ZpYjZfcnVsZXMuYzoyODE6SU5ESVJFQ1RfQ0FMTEFCTEVfU0NPUEUgYm9vbCBmaWI2X3J1bGVfc3VwcHJlc3Moc3RydWN0IGZpYl9ydWxlICpydWxlLFxubmV0L2lwdjYvZmliNl9ydWxlcy5jLTI4Mi1cdFx0XHRcdFx0XHRpbnQgZmxhZ3MsXG4tLVxubmV0L2lwdjYvZmliNl9ydWxlcy5jPTU5Nj1zdGF0aWMgY29uc3Qgc3RydWN0IGZpYl9ydWxlc19vcHMgX19uZXRfaW5pdGNvbnN0IGZpYjZfcnVsZXNfb3BzX3RlbXBsYXRlID0ge1xuLS1cbm5ldC9pcHY2L2ZpYjZfcnVsZXMuYy02MDEtXHQubWF0Y2hcdFx0XHQ9IGZpYjZfcnVsZV9tYXRjaCxcbm5ldC9pcHY2L2ZpYjZfcnVsZXMuYzo2MDI6XHQuc3VwcHJlc3NcdFx0PSBmaWI2X3J1bGVfc3VwcHJlc3MsXG5uZXQvaXB2Ni9maWI2X3J1bGVzLmMtNjAzLVx0LmNvbmZpZ3VyZVx0XHQ9IGZpYjZfcnVsZV9jb25maWd1cmUsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI0IDIxOjAzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDU0OTYKCQkJCQkJCW91dHB1dDogOTIKCQkJCQkJCXRob3VnaHRzOiA4MTIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHlzaXMgb2YgdGhlIElQdjYgRklCIFJ1bGUgU3VwcHJlc3Npb24gUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7dmUgZ290IHRoaXMgcGF0Y2ggdGhhdCBJIG5lZWQgdG8gYXNzZXNzLiBJdCYjMzk7cyBpbiBgbmV0L2lwdjYvZmliNl9ydWxlcy5jYCwgc3BlY2lmaWNhbGx5IHdpdGhpbiB0aGUgYGZpYjZfcnVsZV9zdXBwcmVzc2AgZnVuY3Rpb24uIFRoZSBrZXkgY2hhbmdlIGlzIHRoZSBhZGRpdGlvbiBvZiBgcmVzLSZndDtydDYgPSBOVUxMO2AgcmlnaHQgYWZ0ZXIgYGlwNl9ydF9wdXRfZmxhZ3MocnQsIGZsYWdzKWAuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0aGF0IHRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSwgYSBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkIG9uZSBhdCB0aGF0LiBJdCBsb29rcyBsaWtlIHRoZSBpbnRlbnQgaXMgdG8gcHJldmVudCBlaXRoZXIgYSBwb3RlbnRpYWwgdXNlLWFmdGVyLWZyZWUgb3IgZG91YmxlLWZyZWUgc2NlbmFyaW8sIG9yIHRvIGVuc3VyZSB0aGUgcmVzdWx0IGlzIGNvcnJlY3RseSBjbGVhcmVkIHdoZW4gdGhlIHJvdXRlIGlzIHN1cHByZXNzZWQuIFRoYXQgbWFrZXMgc2Vuc2UsIGtlZXBzIHRoaW5ncyBjbGVhbi4KCkkga25vdyBgZmliNl9ydWxlX3N1cHByZXNzYCBpcyBjYWxsZWQgZnJvbSBgZmliX3J1bGVzX2xvb2t1cGAgaW4gYG5ldC9jb3JlL2ZpYl9ydWxlcy5jYC4gVGhpcyBpcyBpbXBvcnRhbnQgYmVjYXVzZSBgZmliX3J1bGVzX2xvb2t1cGAgaXMgY29yZSBuZXR3b3JraW5nIGNvZGUsIHdoaWNoIG1ha2VzIHRoaXMgY2hhbmdlIHBvdGVudGlhbGx5IHF1aXRlIHNpZ25pZmljYW50LiBUaGlzIG1lYW5zIGl0JiMzOTtzIGEgcGllY2Ugb2YgY29kZSB0aGF0IGNvdWxkIGJlIGhpdCBwcmV0dHkgZnJlcXVlbnRseS4KCk5vdywgSSBuZWVkIHRvIGxvb2sgYXQgdGhlIGNvbmZpZ3VyYXRpb25zLiBXZSBuZWVkIGBJUFY2YCBhbmQgYElQVjZfTVVMVElQTEVfVEFCTEVTYC4gSSBuZWVkIHRvIGNvbmZpcm0gYElQVjZfTVVMVElQTEVfVEFCTEVTYCBpcyBhIGJvb2xlYW4uIExldCBtZSBjaGVjayB0aGUgS2NvbmZpZy4gWWVwLCBpdCBpcy4gU28gdGhhdCYjMzk7cyBjbGVhci4gYElQVjZgIGlzIHJlcXVpcmVkIHRvbywgZm9yIGFueXRoaW5nIGluIGBuZXQvaXB2Ni9gLCBzbyB3ZSYjMzk7cmUgZ29vZCB0aGVyZSBhcyB3ZWxsLgoKTGV0JiMzOTtzIHF1aWNrbHkgY2hlY2sgdGhlIHNpZ25hdHVyZSBvZiBgZmliX3J1bGVzX2xvb2t1cGAuIEl0JiMzOTtzIGdlbmVyaWMsIGJ1dCB0aGUgcGF0Y2ggaXMgc3BlY2lmaWMgdG8gSVB2Niwgc28gdGhhdCYjMzk7cyBmaW5lLgoKR2l2ZW4gdGhhdCwgSSB0aGluayB0aGUgaW1wb3J0YW50IGZvY3VzIHN5bWJvbCBpcyBgZmliNl9ydWxlX3N1cHByZXNzYCwgYW5kIHRoZSBlbmFibGVtZW50IGNvbmZpZ3VyYXRpb25zIGFyZSBgSVBWNmAgYW5kIGBJUFY2X01VTFRJUExFX1RBQkxFU2AuIGBJUFY2YCBpcyBhIHRyaXN0YXRlLCBzbyBpdCYjMzk7cyBub3QgYSByZWFsIGlzc3VlLgoKSG9sZCBvbiwgbGV0IG1lIGNoZWNrIHNvbWV0aGluZyBhYm91dCBgZmliNl9ydWxlX3N1cHByZXNzYC4gSXQmIzM5O3MgZGVjbGFyZWQgYXMgYElORElSRUNUX0NBTExBQkxFX1NDT1BFIGJvb2wgZmliNl9ydWxlX3N1cHByZXNzKC4uLilgLiBJIG5lZWQgdG8gZmlndXJlIG91dCB3aGF0IHRoYXQgYElORElSRUNUX0NBTExBQkxFX1NDT1BFYCBtZWFucy4gVXN1YWxseSwgaXQmIzM5O3MgZWl0aGVyIGVtcHR5IChtZWFuaW5nIGl0JiMzOTtzIGV4cG9ydGVkKSBvciBgc3RhdGljYCwgZGVwZW5kaW5nIG9uIGBDT05GSUdfUkVUUE9MSU5FYC4gTGV0IG1lIGRvdWJsZS1jaGVjay4gT2theSwgYElORElSRUNUX0NBTExBQkxFX0RFQ0xBUkVgIGlzIHVzZWQgaW4gYGluY2x1ZGUvbmV0L2ZpYl9ydWxlcy5oYCwgc28gaXQmIzM5O3MgKm5vdCogc3RhdGljLCBzbyB3ZSYjMzk7cmUgZ29vZCB0byBnby4gVGhlIGBmaWI2X3J1bGVfc3VwcHJlc3NgIGZ1bmN0aW9uIGlzIGV4cG9zZWQuCgpOb3csIGlzIGBmaWI2X3J1bGVfc3VwcHJlc3NgIG9uIGEgaG90IHBhdGg/IEl0JiMzOTtzIGNhbGxlZCBkdXJpbmcgRklCIHJ1bGUgbG9va3Vwcywgd2hpY2ggaGFwcGVuIGR1cmluZyByb3V0ZSBsb29rdXBzLCBzbyBpdCAqY291bGQqIGJlIHNvbWV3aGF0IGhvdC4gSG93ZXZlciwgdGhlIGZ1bmN0aW9uIGl0c2VsZiBpcyBzcGVjaWZpYyBlbm91Z2gsIHNvIEkgYW0gY29tZm9ydGFibGUgZm9jdXNpbmcgb24gaXQuCgpBbHJpZ2h0LCBsZXQmIzM5O3Mgc2VlIGlmIHRoaXMgcGF0Y2ggdG91Y2hlcyBhbnkgb3RoZXIgZnVuY3Rpb25zLiBObywgdGhlIHBhdGNoIG9ubHkgY2hhbmdlcyBgZmliNl9ydWxlX3N1cHByZXNzYC4KClNvLCBoZXJlJiMzOTtzIG15IGFzc2Vzc21lbnQgZm9yIGZ1enppbmc6CgpgYGBqc29uCnsKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsmIzM0O2ZpYjZfcnVsZV9zdXBwcmVzcyYjMzQ7XSwKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWyYjMzQ7SVBWNiYjMzQ7LCAmIzM0O0lQVjZfTVVMVElQTEVfVEFCTEVTJiMzNDtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgcG90ZW50aWFsIHVzZS1hZnRlci1mcmVlIG9yIGRhbmdsaW5nIHBvaW50ZXIgaXNzdWUgaW4gSVB2NiBGSUIgcnVsZXMgYnkgY2xlYXJpbmcgcmVzLSZndDtydDYgYWZ0ZXIgcHV0dGluZyB0aGUgcm91dGUuIFRoaXMgaXMgcmVhY2hhYmxlIGNvcmUgbmV0d29ya2luZyBjb2RlLiYjMzQ7Cn0KYGBgCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI0IDIxOjAzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtJUFY2JiMzNDssCiAgICAmIzM0O0lQVjZfTVVMVElQTEVfVEFCTEVTJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7ZmliNl9ydWxlX3N1cHByZXNzJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgcG90ZW50aWFsIHVzZS1hZnRlci1mcmVlIG9yIGRhbmdsaW5nIHBvaW50ZXIgaXNzdWUgaW4gSVB2NiBGSUIgcnVsZXMgYnkgY2xlYXJpbmcgcmVzLVx1MDAzZXJ0NiBhZnRlciBwdXR0aW5nIHRoZSByb3V0ZS4gVGhpcyBpcyByZWFjaGFibGUgY29yZSBuZXR3b3JraW5nIGNvZGUuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0lQVjYmIzM0OywKICAgICYjMzQ7SVBWNl9NVUxUSVBMRV9UQUJMRVMmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtmaWI2X3J1bGVfc3VwcHJlc3MmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSBwb3RlbnRpYWwgdXNlLWFmdGVyLWZyZWUgb3IgZGFuZ2xpbmcgcG9pbnRlciBpc3N1ZSBpbiBJUHY2IEZJQiBydWxlcyBieSBjbGVhcmluZyByZXMtXHUwMDNlcnQ2IGFmdGVyIHB1dHRpbmcgdGhlIHJvdXRlLiBUaGlzIGlzIHJlYWNoYWJsZSBjb3JlIG5ldHdvcmtpbmcgY29kZS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI0VDIxOjAyOjQxLjE4OTM5NDM0MVoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM2OTI4NjIzNzcyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIklQVjZcIixcbiAgICBcIklQVjZfTVVMVElQTEVfVEFCTEVTXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiZmliNl9ydWxlX3N1cHByZXNzXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSBwb3RlbnRpYWwgdXNlLWFmdGVyLWZyZWUgb3IgZGFuZ2xpbmcgcG9pbnRlciBpc3N1ZSBpbiBJUHY2IEZJQiBydWxlcyBieSBjbGVhcmluZyByZXMtXFx1MDAzZXJ0NiBhZnRlciBwdXR0aW5nIHRoZSByb3V0ZS4gVGhpcyBpcyByZWFjaGFibGUgY29yZSBuZXR3b3JraW5nIGNvZGUuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI0VDIxOjAyOjQxLjE4OTQwMjUxMVoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTY1ODc5NDI2MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDA3YTY2ODViNjRhYjE0NGZhOTgxZDJkY2JlZjk1YzFiMjY5MjBkZDVcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIEZyaSBKdWwgMjQgMjE6MDI6MzkgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvbmV0L2lwdjYvZmliNl9ydWxlcy5jIGIvbmV0L2lwdjYvZmliNl9ydWxlcy5jXFxuaW5kZXggZTFiMmI0ZmE2ZTE4OTAuLjg5ZWUzYzk2OWNhNzVlIDEwMDY0NFxcbi0tLSBhL25ldC9pcHY2L2ZpYjZfcnVsZXMuY1xcbisrKyBiL25ldC9pcHY2L2ZpYjZfcnVsZXMuY1xcbkBAIC0zMDgsNiArMzA4LDcgQEAgSU5ESVJFQ1RfQ0FMTEFCTEVfU0NPUEUgYm9vbCBmaWI2X3J1bGVfc3VwcHJlc3Moc3RydWN0IGZpYl9ydWxlICpydWxlLFxcbiBcXG4gc3VwcHJlc3Nfcm91dGU6XFxuIFxcdGlwNl9ydF9wdXRfZmxhZ3MocnQsIGZsYWdzKTtcXG4rXFx0cmVzLVxcdTAwM2VydDYgPSBOVUxMO1xcbiBcXHRyZXR1cm4gdHJ1ZTtcXG4gfVxcbiBcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjRUMjE6MDI6NDIuODQ4NzI5NDMyWiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6MzUyNjkyNzU2OTEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiSVBWNlwiLFxuICAgIFwiSVBWNl9NVUxUSVBMRV9UQUJMRVNcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJmaWI2X3J1bGVfc3VwcHJlc3NcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIHBvdGVudGlhbCB1c2UtYWZ0ZXItZnJlZSBvciBkYW5nbGluZyBwb2ludGVyIGlzc3VlIGluIElQdjYgRklCIHJ1bGVzIGJ5IGNsZWFyaW5nIHJlcy1cXHUwMDNlcnQ2IGFmdGVyIHB1dHRpbmcgdGhlIHJvdXRlLiBUaGlzIGlzIHJlYWNoYWJsZSBjb3JlIG5ldHdvcmtpbmcgY29kZS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgMDdhNjY4NWI2NGFiMTQ0ZmE5ODFkMmRjYmVmOTVjMWIyNjkyMGRkNVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBGcmkgSnVsIDI0IDIxOjAyOjM5IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbmV0L2lwdjYvZmliNl9ydWxlcy5jIGIvbmV0L2lwdjYvZmliNl9ydWxlcy5jXG5pbmRleCBlMWIyYjRmYTZlMTg5MC4uODllZTNjOTY5Y2E3NWUgMTAwNjQ0XG4tLS0gYS9uZXQvaXB2Ni9maWI2X3J1bGVzLmNcbisrKyBiL25ldC9pcHY2L2ZpYjZfcnVsZXMuY1xuQEAgLTMwOCw2ICszMDgsNyBAQCBJTkRJUkVDVF9DQUxMQUJMRV9TQ09QRSBib29sIGZpYjZfcnVsZV9zdXBwcmVzcyhzdHJ1Y3QgZmliX3J1bGUgKnJ1bGUsXG4gXG4gc3VwcHJlc3Nfcm91dGU6XG4gXHRpcDZfcnRfcHV0X2ZsYWdzKHJ0LCBmbGFncyk7XG4rXHRyZXMtXHUwMDNlcnQ2ID0gTlVMTDtcbiBcdHJldHVybiB0cnVlO1xuIH1cbiBcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI0VDIxOjAyOjQyLjg0ODczMDc0MloiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQxMjg4NTcxNDQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzOlxuXG4qKkFuYWx5emluZyBhIEZJQjYgUnVsZSBTdXBwcmVzc2lvbiBQYXRjaCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IGEgcGF0Y2ggdGhhdCdzIGdvdCBpdHMgaG9va3MgaW50byBgbmV0L2lwdjYvZmliNl9ydWxlcy5jYC4gU2VlbXMgc3RyYWlnaHRmb3J3YXJkLCBpdCdzIGFkZGluZyBgcmVzLVx1MDAzZXJ0NiA9IE5VTEw7YCBpbnNpZGUgdGhlIGBmaWI2X3J1bGVfc3VwcHJlc3NgIGZ1bmN0aW9uICpiZWZvcmUqIHJldHVybmluZyBgdHJ1ZWAuIE15IGluaXRpYWwgcmVhY3Rpb24gaXMgdGhhdCB0aGlzIGlzIGxpa2VseSByZWxhdGVkIHRvIGNsZWFyaW5nIGEgcm91dGUgZW50cnkgdW5kZXIgY2VydGFpbiBzdXBwcmVzc2lvbiBjb25kaXRpb25zLCBtYXliZSB0byBwcmV2ZW50IGFuIHVuaW50ZW5kZWQgcmVmZXJlbmNlIGZyb20gcGVyc2lzdGluZy5cblxuTGV0J3MgZGl2ZSBpbnRvIGBmaWI2X3J1bGVfc3VwcHJlc3NgIGl0c2VsZiB0byB1bmRlcnN0YW5kIHRoZSBjb250ZXh0LiBJIG5lZWQgdG8gZmlndXJlIG91dDpcblxuKiAgIFdoYXQgYHJlc2AgaXMsIGFuZCB3aGF0IGZpZWxkcyBhcmUgYmVpbmcgbWFuaXB1bGF0ZWQuIFNwZWNpZmljYWxseSwgSSBuZWVkIHRvIGtub3cgd2hhdCBgcmVzLVx1MDAzZXJ0NmAgcmVwcmVzZW50cy4gSXMgdGhpcyBzb21lIGtpbmQgb2Ygcm91dGUgY2FjaGUgb3IgdGVtcG9yYXJ5IHJvdXRlIGVudHJ5P1xuKiAgIFdoYXQgY29uZGl0aW9ucyB0cmlnZ2VyIHRoaXMgYHRydWVgIHJldHVybiBmcm9tIGBmaWI2X3J1bGVfc3VwcHJlc3NgPyBBcmUgd2UgdGFsa2luZyBhYm91dCBhIHJ1bGUgbWF0Y2ggdGhhdCBpbmRpY2F0ZXMgYSByb3V0ZSBzaG91bGQgKm5vdCogYmUgdXNlZD8gUGVyaGFwcyBpdCdzIHN1cHByZXNzaW5nIGEgcm91dGUgbG9va3VwIGR1ZSB0byBzb21lIHNvcnQgb2YgZmlsdGVyaW5nIG9yIHBvbGljeS5cbiogICBXaHkgaXMgdGhpcyAqaW1wb3J0YW50Kj8gV2h5IGRvZXMgY2xlYXJpbmcgdGhlIHJvdXRlIHBvaW50ZXIgaGF2ZSB0byBoYXBwZW4gaGVyZT8gSXMgdGhlcmUgYSByaXNrIG9mIG1lbW9yeSBsZWFrcywgaW5jb3JyZWN0IHJvdXRpbmcgZGVjaXNpb25zLCBvciB1bmV4cGVjdGVkIGJlaGF2aW9yIGlmIGByZXMtXHUwMDNlcnQ2YCBpc24ndCBwcm9wZXJseSBjbGVhcmVkIHdoZW4gd2Ugc3VwcHJlc3M/IFdoYXQgcG90ZW50aWFsIHJhY2UgY29uZGl0aW9ucyBhbSBJIGRlYWxpbmcgd2l0aD9cblxuSSdtIGJldHRpbmcgdGhlIGFuc3dlciBsaWVzIHdpdGhpbiB0aGUgZnVuY3Rpb24ncyBsb2dpYyBhbmQgaXRzIGludGVyYWN0aW9uIHdpdGggb3RoZXIgcGFydHMgb2YgdGhlIEZJQjYgcnVsZXMgaW1wbGVtZW50YXRpb24uIEknbGwgYmUgbG9va2luZyBmb3Igd2hlcmUgYHJlc2AgaXMgdXNlZCBhZnRlciB0aGUgYGZpYjZfcnVsZV9zdXBwcmVzc2AgY2FsbCB0byBzZWUgd2hhdCB0aGlzIHBhdGNoIG1pZ2h0IGJlIGNoYW5naW5nLCBhbmQgd2hhdCBpdCdzIHByZXZlbnRpbmcuIEl04oCZcyBhbHNvIGNydWNpYWwgdG8gc2VlIGlmIG90aGVyIHBhcnRzIG9mIHRoZSBrZXJuZWwgYXJlIGFsc28gcmVmZXJlbmNpbmcgdGhpcy5cblxuXG4iLCJJbnB1dFRva2VucyI6MjAxNCwiT3V0cHV0VG9rZW5zIjozOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjYwLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjRUMjE6MDI6NDYuOTc3NTkwNjM2WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM0NzUyOTk2OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJmaWI2X3J1bGVfc3VwcHJlc3NcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L2lwdjYvZmliNl9ydWxlcy5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9pcHY2L2ZpYjZfcnVsZXMuYz0yNzE9SU5ESVJFQ1RfQ0FMTEFCTEVfU0NPUEUgaW50IGZpYjZfcnVsZV9hY3Rpb24oc3RydWN0IGZpYl9ydWxlICpydWxlLFxcbi0tXFxubmV0L2lwdjYvZmliNl9ydWxlcy5jLTI4MC1cXG5uZXQvaXB2Ni9maWI2X3J1bGVzLmM6MjgxOklORElSRUNUX0NBTExBQkxFX1NDT1BFIGJvb2wgZmliNl9ydWxlX3N1cHByZXNzKHN0cnVjdCBmaWJfcnVsZSAqcnVsZSxcXG5uZXQvaXB2Ni9maWI2X3J1bGVzLmMtMjgyLVxcdFxcdFxcdFxcdFxcdFxcdGludCBmbGFncyxcXG4tLVxcbm5ldC9pcHY2L2ZpYjZfcnVsZXMuYz01OTY9c3RhdGljIGNvbnN0IHN0cnVjdCBmaWJfcnVsZXNfb3BzIF9fbmV0X2luaXRjb25zdCBmaWI2X3J1bGVzX29wc190ZW1wbGF0ZSA9IHtcXG4tLVxcbm5ldC9pcHY2L2ZpYjZfcnVsZXMuYy02MDEtXFx0Lm1hdGNoXFx0XFx0XFx0PSBmaWI2X3J1bGVfbWF0Y2gsXFxubmV0L2lwdjYvZmliNl9ydWxlcy5jOjYwMjpcXHQuc3VwcHJlc3NcXHRcXHQ9IGZpYjZfcnVsZV9zdXBwcmVzcyxcXG5uZXQvaXB2Ni9maWI2X3J1bGVzLmMtNjAzLVxcdC5jb25maWd1cmVcXHRcXHQ9IGZpYjZfcnVsZV9jb25maWd1cmUsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI0VDIxOjAyOjQ3LjMyNTEyNDU3NFoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI3ODc2NzI0MTEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCdzIGRpdmUgaW50byB0aGlzLiBIZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgYXMgaWYgdGhleSdyZSBteSBvd246XG5cbioqSW52ZXN0aWdhdGluZyB0aGUgZmliNl9ydWxlX3N1cHByZXNzIEZ1bmN0aW9uKipcblxuQWxyaWdodCwgdGltZSB0byBnZXQgbXkgaGFuZHMgZGlydHkuIEkgbmVlZCB0byB0YWtlIGEgbG9vayBhdCBgZmliNl9ydWxlX3N1cHByZXNzYCBmdW5jdGlvbiwgc3BlY2lmaWNhbGx5IGluIGBuZXQvaXB2Ni9maWI2X3J1bGVzLmNgLiBJIGtub3cgdGhpcyBpcyB3aGVyZSB0aGUgSVB2NiByb3V0aW5nIHJ1bGVzIGxvZ2ljIHJlc2lkZXMsIHNvIHRoYXQncyB0aGUgbmF0dXJhbCBwbGFjZSB0byBzdGFydCBkaWdnaW5nLiBJJ20ga2VlbiB0byB1bmRlcnN0YW5kIHRoZSBzdXBwcmVzc2lvbiBtZWNoYW5pc20g4oCTIHdoYXQgaXQncyBzdXBwcmVzc2luZywgd2h5LCBhbmQgaG93IGl0J3MgYmVpbmcgZG9uZS4gVGhpcyBmdW5jdGlvbiBwcm9iYWJseSBjb250YWlucyB0aGUgY29yZSBsb2dpYyBmb3IgZmlsdGVyaW5nIG9yIG1vZGlmeWluZyByb3V0aW5nIGRlY2lzaW9ucyBiYXNlZCBvbiBjb25maWd1cmVkIHJ1bGVzLCBzbyB0aGF04oCZcyBnb2luZyB0byBiZSBrZXkgdG8gd2hhdGV2ZXIgSSdtIHRyb3VibGVzaG9vdGluZy4gTGV0J3Mgc2VlIGhvdyB0aGlzIHN1cHByZXNzaW9uIHdvcmtzIVxuXG5cbiIsIklucHV0VG9rZW5zIjoyNzYzLCJPdXRwdXRUb2tlbnMiOjM5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjRUMjE6MDI6NTAuMTEyNzk4ODc1WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTc1NzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwibmV0L2lwdjYvZmliNl9ydWxlcy5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDI3MCxcbiAgXCJMaW5lQ291bnRcIjogNTBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDI3MDpcXHRcXG4gMjcxOlxcdElORElSRUNUX0NBTExBQkxFX1NDT1BFIGludCBmaWI2X3J1bGVfYWN0aW9uKHN0cnVjdCBmaWJfcnVsZSAqcnVsZSxcXG4gMjcyOlxcdFxcdFxcdFxcdFxcdFxcdCAgICAgc3RydWN0IGZsb3dpICpmbHAsIGludCBmbGFncyxcXG4gMjczOlxcdFxcdFxcdFxcdFxcdFxcdCAgICAgc3RydWN0IGZpYl9sb29rdXBfYXJnICphcmcpXFxuIDI3NDpcXHR7XFxuIDI3NTpcXHRcXHRpZiAoYXJnLVxcdTAwM2Vsb29rdXBfcHRyID09IGZpYjZfdGFibGVfbG9va3VwKVxcbiAyNzY6XFx0XFx0XFx0cmV0dXJuIGZpYjZfcnVsZV9hY3Rpb25fYWx0KHJ1bGUsIGZscCwgZmxhZ3MsIGFyZyk7XFxuIDI3NzpcXHRcXG4gMjc4OlxcdFxcdHJldHVybiBfX2ZpYjZfcnVsZV9hY3Rpb24ocnVsZSwgZmxwLCBmbGFncywgYXJnKTtcXG4gMjc5OlxcdH1cXG4gMjgwOlxcdFxcbiAyODE6XFx0SU5ESVJFQ1RfQ0FMTEFCTEVfU0NPUEUgYm9vbCBmaWI2X3J1bGVfc3VwcHJlc3Moc3RydWN0IGZpYl9ydWxlICpydWxlLFxcbiAyODI6XFx0XFx0XFx0XFx0XFx0XFx0XFx0aW50IGZsYWdzLFxcbiAyODM6XFx0XFx0XFx0XFx0XFx0XFx0XFx0c3RydWN0IGZpYl9sb29rdXBfYXJnICphcmcpXFxuIDI4NDpcXHR7XFxuIDI4NTpcXHRcXHRzdHJ1Y3QgZmliNl9yZXN1bHQgKnJlcyA9IGFyZy1cXHUwMDNlcmVzdWx0O1xcbiAyODY6XFx0XFx0c3RydWN0IHJ0Nl9pbmZvICpydCA9IHJlcy1cXHUwMDNlcnQ2O1xcbiAyODc6XFx0XFx0c3RydWN0IG5ldF9kZXZpY2UgKmRldiA9IE5VTEw7XFxuIDI4ODpcXHRcXG4gMjg5OlxcdFxcdGlmICghcnQpXFxuIDI5MDpcXHRcXHRcXHRyZXR1cm4gZmFsc2U7XFxuIDI5MTpcXHRcXG4gMjkyOlxcdFxcdGlmIChydC1cXHUwMDNlcnQ2aV9pZGV2KVxcbiAyOTM6XFx0XFx0XFx0ZGV2ID0gcnQtXFx1MDAzZXJ0NmlfaWRldi1cXHUwMDNlZGV2O1xcbiAyOTQ6XFx0XFxuIDI5NTpcXHRcXHQvKiBkbyBub3QgYWNjZXB0IHJlc3VsdCBpZiB0aGUgcm91dGUgZG9lc1xcbiAyOTY6XFx0XFx0ICogbm90IG1lZXQgdGhlIHJlcXVpcmVkIHByZWZpeCBsZW5ndGhcXG4gMjk3OlxcdFxcdCAqL1xcbiAyOTg6XFx0XFx0aWYgKHJ0LVxcdTAwM2VydDZpX2RzdC5wbGVuIFxcdTAwM2M9IHJ1bGUtXFx1MDAzZXN1cHByZXNzX3ByZWZpeGxlbilcXG4gMjk5OlxcdFxcdFxcdGdvdG8gc3VwcHJlc3Nfcm91dGU7XFxuIDMwMDpcXHRcXG4gMzAxOlxcdFxcdC8qIGRvIG5vdCBhY2NlcHQgcmVzdWx0IGlmIHRoZSByb3V0ZSB1c2VzIGEgZGV2aWNlXFxuIDMwMjpcXHRcXHQgKiBiZWxvbmdpbmcgdG8gYSBmb3JiaWRkZW4gaW50ZXJmYWNlIGdyb3VwXFxuIDMwMzpcXHRcXHQgKi9cXG4gMzA0OlxcdFxcdGlmIChydWxlLVxcdTAwM2VzdXBwcmVzc19pZmdyb3VwICE9IC0xIFxcdTAwMjZcXHUwMDI2IGRldiBcXHUwMDI2XFx1MDAyNiBkZXYtXFx1MDAzZWdyb3VwID09IHJ1bGUtXFx1MDAzZXN1cHByZXNzX2lmZ3JvdXApXFxuIDMwNTpcXHRcXHRcXHRnb3RvIHN1cHByZXNzX3JvdXRlO1xcbiAzMDY6XFx0XFxuIDMwNzpcXHRcXHRyZXR1cm4gZmFsc2U7XFxuIDMwODpcXHRcXG4gMzA5OlxcdHN1cHByZXNzX3JvdXRlOlxcbiAzMTA6XFx0XFx0aXA2X3J0X3B1dF9mbGFncyhydCwgZmxhZ3MpO1xcbiAzMTE6XFx0XFx0cmVzLVxcdTAwM2VydDYgPSBOVUxMO1xcbiAzMTI6XFx0XFx0cmV0dXJuIHRydWU7XFxuIDMxMzpcXHR9XFxuIDMxNDpcXHRcXG4gMzE1OlxcdElORElSRUNUX0NBTExBQkxFX1NDT1BFIGludCBmaWI2X3J1bGVfbWF0Y2goc3RydWN0IGZpYl9ydWxlICpydWxlLFxcbiAzMTY6XFx0XFx0XFx0XFx0XFx0XFx0ICAgIHN0cnVjdCBmbG93aSAqZmwsIGludCBmbGFncylcXG4gMzE3OlxcdHtcXG4gMzE4OlxcdFxcdHN0cnVjdCBmaWI2X3J1bGUgKnIgPSAoc3RydWN0IGZpYjZfcnVsZSAqKSBydWxlO1xcbiAzMTk6XFx0XFx0c3RydWN0IGZsb3dpNiAqZmw2ID0gXFx1MDAyNmZsLVxcdTAwM2V1LmlwNjtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjRUMjE6MDI6NTAuMTEyODk4ODM1WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzE5NjUxMDQzNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqQW5hbHl6aW5nIGEgUm91dGUgU3VwcHJlc3Npb24gUGF0Y2gqKlxuXG5BbHJpZ2h0LCBzbyB0aGUgcGF0Y2ggaW50cm9kdWNlcyBgcmVzLVx1MDAzZXJ0NiA9IE5VTEw7YCB3aXRoaW4gdGhlIGBzdXBwcmVzc19yb3V0ZWAgYmxvY2suIFRoYXQncyBhIGRpcmVjdCwgZnVuY3Rpb25hbCBjaGFuZ2UuIE15IGZpcnN0IHRob3VnaHQgaXMgdG8gZGl2ZSBpbnRvIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgcmVsYXRlZCB0byBJUHY2IEZJQiBydWxlcywgc3BlY2lmaWNhbGx5IHdpdGhpbiBgbmV0L2lwdjYvZmliNl9ydWxlcy5jYC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGltcGxpY2F0aW9ucyBvZiBudWxsaW5nIG91dCBgcmVzLVx1MDAzZXJ0NmAgaW4gdGhpcyBjb250ZXh0LiBJcyBpdCBpbnRlbmRlZCB0byBleHBsaWNpdGx5IHJlbGVhc2UgYSByb3V0ZSByZWZlcmVuY2UsIHNpZ25hbCBhbiBlcnJvciwgb3Igc29tZXRoaW5nIGVsc2UgZW50aXJlbHk/IEkgbmVlZCB0byBrbm93IHdoYXQgdGhhdCBgcmVzLVx1MDAzZXJ0NmAgcG9pbnRlciByZXByZXNlbnRzIGFuZCB0aGUgZGF0YSBpdCBwb2ludHMgdG8uIFVuZGVyc3RhbmRpbmcgdGhlIHVuZGVybHlpbmcgZGF0YSBzdHJ1Y3R1cmUgYW5kIHdoYXQgb3RoZXIgcGFydHMgb2YgdGhlIHJvdXRpbmcgY29kZSBhcmUgdG91Y2hpbmcgaXQgaXMgY3JpdGljYWwgZm9yIGZpZ3VyaW5nIG91dCBob3cgdGhpcyBwYXRjaCBiZWhhdmVzLiBJcyB0aGVyZSBhbnkgZXhpc3RpbmcgY29kZSB0aGF0IGRlcGVuZHMgb24gdGhlIGBydDZgIGZpZWxkIG5vdCBiZWluZyBOVUxMIGFmdGVyIHRoZSBgc3VwcHJlc3Nfcm91dGVgIGZ1bmN0aW9uIHJ1bnM/IEkgbmVlZCB0byBhbmFseXplIHRob3NlIGFyZWFzIHZlcnkgY2FyZWZ1bGx5LlxuXG5cbiIsIklucHV0VG9rZW5zIjozNzU2LCJPdXRwdXRUb2tlbnMiOjMyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTAsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNFQyMTowMjo1My4zMDk0MTE2MzJaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzY5NjU2NDk2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImZpYjZfcnVsZXMub1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvaXB2Ni9NYWtlZmlsZVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvaXB2Ni9NYWtlZmlsZT0yMD1pcHY2LSQoQ09ORklHX05FVEZJTFRFUikgKz0gbmV0ZmlsdGVyLm9cXG5uZXQvaXB2Ni9NYWtlZmlsZToyMTppcHY2LSQoQ09ORklHX0lQVjZfTVVMVElQTEVfVEFCTEVTKSArPSBmaWI2X3J1bGVzLm9cXG5uZXQvaXB2Ni9NYWtlZmlsZS0yMi1pcHY2LSQoQ09ORklHX1BST0NfRlMpICs9IHByb2Mub1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNFQyMTowMjo1My42NzkwNzUwNThaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyODA3MjUzMjIwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkV4YW1pbmluZyBJUHY2IENvbmZpZ3VyYXRpb24gUmVxdWlyZW1lbnRzKipcblxuT2theSwgc28gdGhlIGBDT05GSUdfSVBWNl9NVUxUSVBMRV9UQUJMRVNgIG9wdGlvbiBpcyBhIG11c3QtaGF2ZSwgdGhhdCBtdWNoIGlzIGNsZWFyLiBNeSBuZXh0IHN0ZXAgaXMgdG8gZmlndXJlIG91dCB0aGUgZGVwZW5kZW5jaWVzLCBzcGVjaWZpY2FsbHksIHdoZXRoZXIgYENPTkZJR19JUFY2YCBpdHNlbGYgaXMgYWxzbyBhIHByZXJlcXVpc2l0ZS4gQSBxdWljayBwZWVrIGludG8gYG5ldC9pcHY2L01ha2VmaWxlYCBzaG91bGQgY29uZmlybSB0aGF0LCBhbmQgeWVwLCB0aGVyZSBpdCBpcyEgTm93IEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSByZWxhdGlvbnNoaXAgYmV0d2VlbiB0aGVzZSB0d28sIHNvIEknbGwgZGl2ZSBpbnRvIGBuZXQvaXB2Ni9LY29uZmlnYCB0byBzZWUgdGhlIGNvbmRpdGlvbnMgYW5kIGRlcGVuZGVuY2llcyBkZWZpbmVkIGZvciBgSVBWNl9NVUxUSVBMRV9UQUJMRVNgLiBUaGlzIHNob3VsZCBjbGFyaWZ5IGFueSBvdGhlciByZWxldmFudCBkZXBlbmRlbmNpZXMgb3IgcG90ZW50aWFsIGNvbmZsaWN0cy5cblxuXG4iLCJJbnB1dFRva2VucyI6NDE0OSwiT3V0cHV0VG9rZW5zIjozNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjcxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI0VDIxOjAyOjU2LjQ4NjMzMTIyOVoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODA3Nzg3MTcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIElQVjZfTVVMVElQTEVfVEFCTEVTXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9pcHY2L0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L2lwdjYvS2NvbmZpZz0yMzI9Y29uZmlnIElQVjZfRk9VX1RVTk5FTFxcbi0tXFxubmV0L2lwdjYvS2NvbmZpZy0yMzYtXFxubmV0L2lwdjYvS2NvbmZpZzoyMzc6Y29uZmlnIElQVjZfTVVMVElQTEVfVEFCTEVTXFxubmV0L2lwdjYvS2NvbmZpZy0yMzgtXFx0Ym9vbCBcXFwiSVB2NjogTXVsdGlwbGUgUm91dGluZyBUYWJsZXNcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI0VDIxOjAyOjU2LjU2NzExNTIyNloiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMTc2NjE3NDI4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkV4YW1pbmluZyBJUHY2IENvbmZpZ3VyYXRpb24gT3B0aW9ucyoqXG5cbk9rYXksIGxldCdzIGRpdmUgaW4uIEkgbmVlZCB0byByZWZyZXNoIG15IG1lbW9yeSBvbiB0aGUgSVB2NiBjb25maWd1cmF0aW9uIG9wdGlvbnMgd2l0aGluIHRoZSBrZXJuZWwuIFNwZWNpZmljYWxseSwgSSdtIGdvaW5nIHRvIGp1bXAgdG8gYG5ldC9pcHY2L0tjb25maWdgIGFyb3VuZCBsaW5lIDIzNy4gVGhhdCdzIHVzdWFsbHkgd2hlcmUgdGhlIGNvcmUgSVB2NiBmZWF0dXJlIHNlbGVjdGlvbiBiZWdpbnMsIGFuZCBJIGV4cGVjdCB0byBzZWUgdGhlIG1haW4gYnVpbGRpbmcgYmxvY2tzIGRlZmluZWQgdGhlcmUuIEknbSBsb29raW5nIGZvciB0aGUga2V5IEtjb25maWcgc3ltYm9scyByZWxhdGVkIHRvIHRoZSBjb3JlIElQdjYgcHJvdG9jb2wsIGxpa2VseSBpbmNsdWRpbmcgb3B0aW9ucyBmb3IgZW5hYmxpbmcgb3IgZGlzYWJsaW5nIElQdjYgZnVuY3Rpb25hbGl0eSBhcyBhIHdob2xlLCB2YXJpb3VzIGV4dGVuc2lvbnMsIGFuZCBwZXJoYXBzIHNvbWUgaW5pdGlhbCBuZXR3b3JrIGRldmljZSBzdXBwb3J0LiBJJ20gYW50aWNpcGF0aW5nIGEgd2VsbC1zdHJ1Y3R1cmVkIHNldCBvZiBgY29uZmlnYCBvcHRpb25zLCBwb3NzaWJseSBuZXN0ZWQgd2l0aCBkZXBlbmRlbmNpZXMgb24gdW5kZXJseWluZyBuZXR3b3JrIGRldmljZSBkcml2ZXJzIG9yIG90aGVyIHN1YnN5c3RlbXMuIE15IHByaW1hcnkgZm9jdXMgYXQgdGhpcyBzdGFnZSBpcyB0byBpZGVudGlmeSB0aGUgY3J1Y2lhbCBrbm9icyB0aGF0IGdvdmVybiBJUHY2J3MgYmVoYXZpb3IuIEkgd2lsbCBjaGVjayB3aGF0IEtjb25maWcgdmFyaWFibGVzIGVuYWJsZSBjb3JlIElQdjYgZnVuY3Rpb25hbGl0eS5cblxuXG4iLCJJbnB1dFRva2VucyI6NDQ5NCwiT3V0cHV0VG9rZW5zIjozNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI0VDIxOjAyOjU5Ljc0MzczNDY2NFoiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo5MDM4MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJuZXQvaXB2Ni9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDIzMCxcbiAgXCJMaW5lQ291bnRcIjogMjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDIzMDpcXHRcXHRkZWZhdWx0IE5FVF9GT1UgXFx1MDAyNlxcdTAwMjYgSVBWNlxcbiAyMzE6XFx0XFxuIDIzMjpcXHRjb25maWcgSVBWNl9GT1VfVFVOTkVMXFxuIDIzMzpcXHRcXHR0cmlzdGF0ZVxcbiAyMzQ6XFx0XFx0ZGVmYXVsdCBORVRfRk9VX0lQX1RVTk5FTFMgXFx1MDAyNlxcdTAwMjYgSVBWNl9GT1VcXG4gMjM1OlxcdFxcdHNlbGVjdCBJUFY2X1RVTk5FTFxcbiAyMzY6XFx0XFxuIDIzNzpcXHRjb25maWcgSVBWNl9NVUxUSVBMRV9UQUJMRVNcXG4gMjM4OlxcdFxcdGJvb2wgXFxcIklQdjY6IE11bHRpcGxlIFJvdXRpbmcgVGFibGVzXFxcIlxcbiAyMzk6XFx0XFx0c2VsZWN0IEZJQl9SVUxFU1xcbiAyNDA6XFx0XFx0aGVscFxcbiAyNDE6XFx0XFx0ICBTdXBwb3J0IG11bHRpcGxlIHJvdXRpbmcgdGFibGVzLlxcbiAyNDI6XFx0XFxuIDI0MzpcXHRjb25maWcgSVBWNl9TVUJUUkVFU1xcbiAyNDQ6XFx0XFx0Ym9vbCBcXFwiSVB2Njogc291cmNlIGFkZHJlc3MgYmFzZWQgcm91dGluZ1xcXCJcXG4gMjQ1OlxcdFxcdGRlcGVuZHMgb24gSVBWNl9NVUxUSVBMRV9UQUJMRVNcXG4gMjQ2OlxcdFxcdGhlbHBcXG4gMjQ3OlxcdFxcdCAgRW5hYmxlIHJvdXRpbmcgYnkgc291cmNlIGFkZHJlc3Mgb3IgcHJlZml4LlxcbiAyNDg6XFx0XFxuIDI0OTpcXHRcXHQgIFRoZSBkZXN0aW5hdGlvbiBhZGRyZXNzIGlzIHN0aWxsIHRoZSBwcmltYXJ5IHJvdXRpbmcga2V5LCBzbyBtaXhpbmdcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjRUMjE6MDI6NTkuNzQzODI2Mzg0WiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI5NTY0ODQ4MzUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi5cblxuKipJbnZlc3RpZ2F0aW5nIHRoZSBJUFY2IENvbmZpZ3VyYXRpb24gT3B0aW9ucyoqXG5cbkFscmlnaHQsIHNvIGBJUFY2X01VTFRJUExFX1RBQkxFU2AsIHRoYXQncyBhIGJvb2xlYW4gb3B0aW9uLCByaWdodD8gU2ltcGxlIGVub3VnaC4gQnV0IEkgc2VlIHRoYXQgYElQVjZgIGlzIGFsc28gaW52b2x2ZWQgaGVyZS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlaXIgcmVsYXRpb25zaGlwIGFuZCBob3cgdGhleSBpbnRlcmFjdC4gTXkgbmV4dCBzdGVwIGlzIGNsZWFyOiBJIG5lZWQgdG8gZGlnIGludG8gdGhlIGNhbGxlcnMgb2YgYGZpYjZfcnVsZV9zdXBwcmVzc2AuIEl0J3MgbGlrZWx5IGludm9sdmVkIGluIHRoZSBsb2dpYyB0aGF0IGdvdmVybnMgdGhlc2Ugb3B0aW9ucy4gSSdsbCBmb2N1cyBvbiBob3cgYGZpYjZfcnVsZV9zdXBwcmVzc2AgaXMgdXNlZCwgc3BlY2lmaWNhbGx5IGluIHJlbGF0aW9uIHRvIGBJUFY2X01VTFRJUExFX1RBQkxFU2AgYW5kIGBJUFY2YCwgdG8gZ2V0IGEgYmV0dGVyIGhhbmRsZSBvbiB0aGUgb3ZlcmFsbCBjb25maWd1cmF0aW9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1MDM3LCJPdXRwdXRUb2tlbnMiOjI3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDEsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNFQyMTowMzowMi43MDAzMTM5NzlaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE4NzgzMTMyNzQsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZmliNl9ydWxlX3N1cHByZXNzXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIlwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJpbmNsdWRlL25ldC9maWJfcnVsZXMuaD0yMjA9SU5ESVJFQ1RfQ0FMTEFCTEVfREVDTEFSRShpbnQgZmliNF9ydWxlX2FjdGlvbihzdHJ1Y3QgZmliX3J1bGUgKnJ1bGUsXFxuLS1cXG5pbmNsdWRlL25ldC9maWJfcnVsZXMuaC0yMjMtXFxuaW5jbHVkZS9uZXQvZmliX3J1bGVzLmg6MjI0OklORElSRUNUX0NBTExBQkxFX0RFQ0xBUkUoYm9vbCBmaWI2X3J1bGVfc3VwcHJlc3Moc3RydWN0IGZpYl9ydWxlICpydWxlLFxcbmluY2x1ZGUvbmV0L2ZpYl9ydWxlcy5oLTIyNS1cXHRcXHRcXHRcXHRcXHRcXHRpbnQgZmxhZ3MsXFxuLS1cXG5uZXQvY29yZS9maWJfcnVsZXMuYz0zMTM9aW50IGZpYl9ydWxlc19sb29rdXAoc3RydWN0IGZpYl9ydWxlc19vcHMgKm9wcywgc3RydWN0IGZsb3dpICpmbCxcXG4tLVxcbm5ldC9jb3JlL2ZpYl9ydWxlcy5jLTM0NC1cXHRcXHRpZiAoIWVyciBcXHUwMDI2XFx1MDAyNiBvcHMtXFx1MDAzZXN1cHByZXNzIFxcdTAwMjZcXHUwMDI2IElORElSRUNUX0NBTExfTVQob3BzLVxcdTAwM2VzdXBwcmVzcyxcXG5uZXQvY29yZS9maWJfcnVsZXMuYzozNDU6XFx0XFx0XFx0XFx0XFx0XFx0XFx0ICAgICAgZmliNl9ydWxlX3N1cHByZXNzLFxcbm5ldC9jb3JlL2ZpYl9ydWxlcy5jLTM0Ni1cXHRcXHRcXHRcXHRcXHRcXHRcXHQgICAgICBmaWI0X3J1bGVfc3VwcHJlc3MsXFxuLS1cXG5uZXQvaXB2Ni9maWI2X3J1bGVzLmM9MjcxPUlORElSRUNUX0NBTExBQkxFX1NDT1BFIGludCBmaWI2X3J1bGVfYWN0aW9uKHN0cnVjdCBmaWJfcnVsZSAqcnVsZSxcXG4tLVxcbm5ldC9pcHY2L2ZpYjZfcnVsZXMuYy0yODAtXFxubmV0L2lwdjYvZmliNl9ydWxlcy5jOjI4MTpJTkRJUkVDVF9DQUxMQUJMRV9TQ09QRSBib29sIGZpYjZfcnVsZV9zdXBwcmVzcyhzdHJ1Y3QgZmliX3J1bGUgKnJ1bGUsXFxubmV0L2lwdjYvZmliNl9ydWxlcy5jLTI4Mi1cXHRcXHRcXHRcXHRcXHRcXHRpbnQgZmxhZ3MsXFxuLS1cXG5uZXQvaXB2Ni9maWI2X3J1bGVzLmM9NTk2PXN0YXRpYyBjb25zdCBzdHJ1Y3QgZmliX3J1bGVzX29wcyBfX25ldF9pbml0Y29uc3QgZmliNl9ydWxlc19vcHNfdGVtcGxhdGUgPSB7XFxuLS1cXG5uZXQvaXB2Ni9maWI2X3J1bGVzLmMtNjAxLVxcdC5tYXRjaFxcdFxcdFxcdD0gZmliNl9ydWxlX21hdGNoLFxcbm5ldC9pcHY2L2ZpYjZfcnVsZXMuYzo2MDI6XFx0LnN1cHByZXNzXFx0XFx0PSBmaWI2X3J1bGVfc3VwcHJlc3MsXFxubmV0L2lwdjYvZmliNl9ydWxlcy5jLTYwMy1cXHQuY29uZmlndXJlXFx0XFx0PSBmaWI2X3J1bGVfY29uZmlndXJlLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNFQyMTowMzowNC41Nzg2MzE4MTNaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTM0NjA3NDI1NzMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHlzaXMgb2YgdGhlIElQdjYgRklCIFJ1bGUgU3VwcHJlc3Npb24gUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ3ZlIGdvdCB0aGlzIHBhdGNoIHRoYXQgSSBuZWVkIHRvIGFzc2Vzcy4gSXQncyBpbiBgbmV0L2lwdjYvZmliNl9ydWxlcy5jYCwgc3BlY2lmaWNhbGx5IHdpdGhpbiB0aGUgYGZpYjZfcnVsZV9zdXBwcmVzc2AgZnVuY3Rpb24uIFRoZSBrZXkgY2hhbmdlIGlzIHRoZSBhZGRpdGlvbiBvZiBgcmVzLVx1MDAzZXJ0NiA9IE5VTEw7YCByaWdodCBhZnRlciBgaXA2X3J0X3B1dF9mbGFncyhydCwgZmxhZ3MpYC4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRoYXQgdGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlLCBhIHByZXR0eSBzdHJhaWdodGZvcndhcmQgb25lIGF0IHRoYXQuIEl0IGxvb2tzIGxpa2UgdGhlIGludGVudCBpcyB0byBwcmV2ZW50IGVpdGhlciBhIHBvdGVudGlhbCB1c2UtYWZ0ZXItZnJlZSBvciBkb3VibGUtZnJlZSBzY2VuYXJpbywgb3IgdG8gZW5zdXJlIHRoZSByZXN1bHQgaXMgY29ycmVjdGx5IGNsZWFyZWQgd2hlbiB0aGUgcm91dGUgaXMgc3VwcHJlc3NlZC4gVGhhdCBtYWtlcyBzZW5zZSwga2VlcHMgdGhpbmdzIGNsZWFuLlxuXG5JIGtub3cgYGZpYjZfcnVsZV9zdXBwcmVzc2AgaXMgY2FsbGVkIGZyb20gYGZpYl9ydWxlc19sb29rdXBgIGluIGBuZXQvY29yZS9maWJfcnVsZXMuY2AuIFRoaXMgaXMgaW1wb3J0YW50IGJlY2F1c2UgYGZpYl9ydWxlc19sb29rdXBgIGlzIGNvcmUgbmV0d29ya2luZyBjb2RlLCB3aGljaCBtYWtlcyB0aGlzIGNoYW5nZSBwb3RlbnRpYWxseSBxdWl0ZSBzaWduaWZpY2FudC4gVGhpcyBtZWFucyBpdCdzIGEgcGllY2Ugb2YgY29kZSB0aGF0IGNvdWxkIGJlIGhpdCBwcmV0dHkgZnJlcXVlbnRseS5cblxuTm93LCBJIG5lZWQgdG8gbG9vayBhdCB0aGUgY29uZmlndXJhdGlvbnMuIFdlIG5lZWQgYElQVjZgIGFuZCBgSVBWNl9NVUxUSVBMRV9UQUJMRVNgLiBJIG5lZWQgdG8gY29uZmlybSBgSVBWNl9NVUxUSVBMRV9UQUJMRVNgIGlzIGEgYm9vbGVhbi4gTGV0IG1lIGNoZWNrIHRoZSBLY29uZmlnLiBZZXAsIGl0IGlzLiBTbyB0aGF0J3MgY2xlYXIuIGBJUFY2YCBpcyByZXF1aXJlZCB0b28sIGZvciBhbnl0aGluZyBpbiBgbmV0L2lwdjYvYCwgc28gd2UncmUgZ29vZCB0aGVyZSBhcyB3ZWxsLlxuXG5MZXQncyBxdWlja2x5IGNoZWNrIHRoZSBzaWduYXR1cmUgb2YgYGZpYl9ydWxlc19sb29rdXBgLiBJdCdzIGdlbmVyaWMsIGJ1dCB0aGUgcGF0Y2ggaXMgc3BlY2lmaWMgdG8gSVB2Niwgc28gdGhhdCdzIGZpbmUuXG5cbkdpdmVuIHRoYXQsIEkgdGhpbmsgdGhlIGltcG9ydGFudCBmb2N1cyBzeW1ib2wgaXMgYGZpYjZfcnVsZV9zdXBwcmVzc2AsIGFuZCB0aGUgZW5hYmxlbWVudCBjb25maWd1cmF0aW9ucyBhcmUgYElQVjZgIGFuZCBgSVBWNl9NVUxUSVBMRV9UQUJMRVNgLiBgSVBWNmAgaXMgYSB0cmlzdGF0ZSwgc28gaXQncyBub3QgYSByZWFsIGlzc3VlLlxuXG5Ib2xkIG9uLCBsZXQgbWUgY2hlY2sgc29tZXRoaW5nIGFib3V0IGBmaWI2X3J1bGVfc3VwcHJlc3NgLiBJdCdzIGRlY2xhcmVkIGFzIGBJTkRJUkVDVF9DQUxMQUJMRV9TQ09QRSBib29sIGZpYjZfcnVsZV9zdXBwcmVzcyguLi4pYC4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hhdCB0aGF0IGBJTkRJUkVDVF9DQUxMQUJMRV9TQ09QRWAgbWVhbnMuIFVzdWFsbHksIGl0J3MgZWl0aGVyIGVtcHR5IChtZWFuaW5nIGl0J3MgZXhwb3J0ZWQpIG9yIGBzdGF0aWNgLCBkZXBlbmRpbmcgb24gYENPTkZJR19SRVRQT0xJTkVgLiBMZXQgbWUgZG91YmxlLWNoZWNrLiBPa2F5LCBgSU5ESVJFQ1RfQ0FMTEFCTEVfREVDTEFSRWAgaXMgdXNlZCBpbiBgaW5jbHVkZS9uZXQvZmliX3J1bGVzLmhgLCBzbyBpdCdzICpub3QqIHN0YXRpYywgc28gd2UncmUgZ29vZCB0byBnby4gVGhlIGBmaWI2X3J1bGVfc3VwcHJlc3NgIGZ1bmN0aW9uIGlzIGV4cG9zZWQuXG5cbk5vdywgaXMgYGZpYjZfcnVsZV9zdXBwcmVzc2Agb24gYSBob3QgcGF0aD8gSXQncyBjYWxsZWQgZHVyaW5nIEZJQiBydWxlIGxvb2t1cHMsIHdoaWNoIGhhcHBlbiBkdXJpbmcgcm91dGUgbG9va3Vwcywgc28gaXQgKmNvdWxkKiBiZSBzb21ld2hhdCBob3QuIEhvd2V2ZXIsIHRoZSBmdW5jdGlvbiBpdHNlbGYgaXMgc3BlY2lmaWMgZW5vdWdoLCBzbyBJIGFtIGNvbWZvcnRhYmxlIGZvY3VzaW5nIG9uIGl0LlxuXG5BbHJpZ2h0LCBsZXQncyBzZWUgaWYgdGhpcyBwYXRjaCB0b3VjaGVzIGFueSBvdGhlciBmdW5jdGlvbnMuIE5vLCB0aGUgcGF0Y2ggb25seSBjaGFuZ2VzIGBmaWI2X3J1bGVfc3VwcHJlc3NgLlxuXG5TbywgaGVyZSdzIG15IGFzc2Vzc21lbnQgZm9yIGZ1enppbmc6XG5cbmBgYGpzb25cbntcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1wiZmliNl9ydWxlX3N1cHByZXNzXCJdLFxuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1wiSVBWNlwiLCBcIklQVjZfTVVMVElQTEVfVEFCTEVTXCJdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIHBvdGVudGlhbCB1c2UtYWZ0ZXItZnJlZSBvciBkYW5nbGluZyBwb2ludGVyIGlzc3VlIGluIElQdjYgRklCIHJ1bGVzIGJ5IGNsZWFyaW5nIHJlcy1cdTAwM2VydDYgYWZ0ZXIgcHV0dGluZyB0aGUgcm91dGUuIFRoaXMgaXMgcmVhY2hhYmxlIGNvcmUgbmV0d29ya2luZyBjb2RlLlwiXG59XG5gYGBcblxuXG4iLCJJbnB1dFRva2VucyI6NTQ5NiwiT3V0cHV0VG9rZW5zIjo5MiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjgxMiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNFQyMTowMzoxOC4wMzkzNzY2NTZaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3ODYyNDU1OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiSVBWNlwiLFxuICAgIFwiSVBWNl9NVUxUSVBMRV9UQUJMRVNcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJmaWI2X3J1bGVfc3VwcHJlc3NcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIHBvdGVudGlhbCB1c2UtYWZ0ZXItZnJlZSBvciBkYW5nbGluZyBwb2ludGVyIGlzc3VlIGluIElQdjYgRklCIHJ1bGVzIGJ5IGNsZWFyaW5nIHJlcy1cXHUwMDNlcnQ2IGFmdGVyIHB1dHRpbmcgdGhlIHJvdXRlLiBUaGlzIGlzIHJlYWNoYWJsZSBjb3JlIG5ldHdvcmtpbmcgY29kZS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJJUFY2XCIsXG4gICAgXCJJUFY2X01VTFRJUExFX1RBQkxFU1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImZpYjZfcnVsZV9zdXBwcmVzc1wiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgcG90ZW50aWFsIHVzZS1hZnRlci1mcmVlIG9yIGRhbmdsaW5nIHBvaW50ZXIgaXNzdWUgaW4gSVB2NiBGSUIgcnVsZXMgYnkgY2xlYXJpbmcgcmVzLVxcdTAwM2VydDYgYWZ0ZXIgcHV0dGluZyB0aGUgcm91dGUuIFRoaXMgaXMgcmVhY2hhYmxlIGNvcmUgbmV0d29ya2luZyBjb2RlLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowmcl7q[1] Phase: Succeeded StartedAt: 2026-07-24 21:03:54 +0000 UTC FinishedAt: 2026-07-24 21:03:54 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmcl7q[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-07-24 21:03:54 +0000 UTC FinishedAt: 2026-07-24 21:03:54 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmcl7q[2] Phase: Succeeded StartedAt: 2026-07-24 21:03:54 +0000 UTC FinishedAt: 2026-07-25 01:46:29 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmcl7q[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"78f75d632f74b8de0f081a128588f7c37d0d1164","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6","IPV6_MULTIPLE_TABLES"],"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":["fib6_rule_suppress"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"78f75d632f74b8de0f081a128588f7c37d0d1164","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6","IPV6_MULTIPLE_TABLES"],"series_id":"828fadb1-74b1-4ddc-9fc9-18da871d24ea","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-24 21:03:54 +0000 UTC FinishedAt: 2026-07-25 01:46:29 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"78f75d632f74b8de0f081a128588f7c37d0d1164","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6","IPV6_MULTIPLE_TABLES"],"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":["fib6_rule_suppress"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"78f75d632f74b8de0f081a128588f7c37d0d1164","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6","IPV6_MULTIPLE_TABLES"],"series_id":"828fadb1-74b1-4ddc-9fc9-18da871d24ea","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-workflowmcl7q[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"78f75d632f74b8de0f081a128588f7c37d0d1164","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6","IPV6_MULTIPLE_TABLES"],"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":["fib6_rule_suppress"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"78f75d632f74b8de0f081a128588f7c37d0d1164","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6","IPV6_MULTIPLE_TABLES"],"series_id":"828fadb1-74b1-4ddc-9fc9-18da871d24ea","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-24 21:03:54 +0000 UTC FinishedAt: 2026-07-24 21:04:04 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmcl7q[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"78f75d632f74b8de0f081a128588f7c37d0d1164","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6","IPV6_MULTIPLE_TABLES"],"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":["fib6_rule_suppress"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"78f75d632f74b8de0f081a128588f7c37d0d1164","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6","IPV6_MULTIPLE_TABLES"],"series_id":"828fadb1-74b1-4ddc-9fc9-18da871d24ea","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-24 21:03:54 +0000 UTC FinishedAt: 2026-07-24 21:03:59 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"78f75d632f74b8de0f081a128588f7c37d0d1164","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6","IPV6_MULTIPLE_TABLES"],"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-workflowmcl7q/series-workflowmcl7q-convert-artifact-1049556869/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowmcl7q[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"78f75d632f74b8de0f081a128588f7c37d0d1164","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6","IPV6_MULTIPLE_TABLES"],"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":["fib6_rule_suppress"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"78f75d632f74b8de0f081a128588f7c37d0d1164","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6","IPV6_MULTIPLE_TABLES"],"series_id":"828fadb1-74b1-4ddc-9fc9-18da871d24ea","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-24 21:04:04 +0000 UTC FinishedAt: 2026-07-24 21:38:56 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmcl7q[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"78f75d632f74b8de0f081a128588f7c37d0d1164","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6","IPV6_MULTIPLE_TABLES"],"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":["fib6_rule_suppress"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"78f75d632f74b8de0f081a128588f7c37d0d1164","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6","IPV6_MULTIPLE_TABLES"],"series_id":"828fadb1-74b1-4ddc-9fc9-18da871d24ea","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-24 21:04:04 +0000 UTC FinishedAt: 2026-07-24 21:38:56 +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:*49e3e42a-84a8-4e95-b1eb-3b9252f326be,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-workflowmcl7q/series-workflowmcl7q-convert-artifact-1049556869/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": "e7009036-c074-4cdc-8502-4a41e0802bd0", "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-workflowmcl7q/series-workflowmcl7q-build-action-793621291/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowmcl7q[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"78f75d632f74b8de0f081a128588f7c37d0d1164","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6","IPV6_MULTIPLE_TABLES"],"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":["fib6_rule_suppress"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"78f75d632f74b8de0f081a128588f7c37d0d1164","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6","IPV6_MULTIPLE_TABLES"],"series_id":"828fadb1-74b1-4ddc-9fc9-18da871d24ea","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-24 21:04:04 +0000 UTC FinishedAt: 2026-07-24 21:38:46 +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:*49e3e42a-84a8-4e95-b1eb-3b9252f326be,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-workflowmcl7q/series-workflowmcl7q-convert-artifact-1049556869/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": "e7009036-c074-4cdc-8502-4a41e0802bd0", "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-workflowmcl7q/series-workflowmcl7q-build-action-793621291/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowmcl7q[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"78f75d632f74b8de0f081a128588f7c37d0d1164","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6","IPV6_MULTIPLE_TABLES"],"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":["fib6_rule_suppress"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"78f75d632f74b8de0f081a128588f7c37d0d1164","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6","IPV6_MULTIPLE_TABLES"],"series_id":"828fadb1-74b1-4ddc-9fc9-18da871d24ea","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-24 21:38:56 +0000 UTC FinishedAt: 2026-07-24 21:38:56 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmcl7q[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"78f75d632f74b8de0f081a128588f7c37d0d1164","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6","IPV6_MULTIPLE_TABLES"],"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":["fib6_rule_suppress"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"78f75d632f74b8de0f081a128588f7c37d0d1164","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6","IPV6_MULTIPLE_TABLES"],"series_id":"828fadb1-74b1-4ddc-9fc9-18da871d24ea","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-24 21:38:56 +0000 UTC FinishedAt: 2026-07-24 21:38:56 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmcl7q[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"78f75d632f74b8de0f081a128588f7c37d0d1164","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6","IPV6_MULTIPLE_TABLES"],"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":["fib6_rule_suppress"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"78f75d632f74b8de0f081a128588f7c37d0d1164","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6","IPV6_MULTIPLE_TABLES"],"series_id":"828fadb1-74b1-4ddc-9fc9-18da871d24ea","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-24 21:38:56 +0000 UTC FinishedAt: 2026-07-24 21:39:06 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmcl7q[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"78f75d632f74b8de0f081a128588f7c37d0d1164","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6","IPV6_MULTIPLE_TABLES"],"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":["fib6_rule_suppress"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"78f75d632f74b8de0f081a128588f7c37d0d1164","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6","IPV6_MULTIPLE_TABLES"],"series_id":"828fadb1-74b1-4ddc-9fc9-18da871d24ea","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-24 21:38:56 +0000 UTC FinishedAt: 2026-07-24 21:39:03 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"78f75d632f74b8de0f081a128588f7c37d0d1164","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6","IPV6_MULTIPLE_TABLES"],"series_id":"828fadb1-74b1-4ddc-9fc9-18da871d24ea","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-workflowmcl7q/series-workflowmcl7q-convert-artifact-3198096480/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowmcl7q[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"78f75d632f74b8de0f081a128588f7c37d0d1164","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6","IPV6_MULTIPLE_TABLES"],"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":["fib6_rule_suppress"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"78f75d632f74b8de0f081a128588f7c37d0d1164","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6","IPV6_MULTIPLE_TABLES"],"series_id":"828fadb1-74b1-4ddc-9fc9-18da871d24ea","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-24 21:39:06 +0000 UTC FinishedAt: 2026-07-24 21:41:27 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmcl7q[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"78f75d632f74b8de0f081a128588f7c37d0d1164","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6","IPV6_MULTIPLE_TABLES"],"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":["fib6_rule_suppress"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"78f75d632f74b8de0f081a128588f7c37d0d1164","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6","IPV6_MULTIPLE_TABLES"],"series_id":"828fadb1-74b1-4ddc-9fc9-18da871d24ea","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-24 21:39:06 +0000 UTC FinishedAt: 2026-07-24 21:41:17 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*e7009036-c074-4cdc-8502-4a41e0802bd0,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-workflowmcl7q/series-workflowmcl7q-build-action-793621291/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-workflowmcl7q[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"78f75d632f74b8de0f081a128588f7c37d0d1164","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6","IPV6_MULTIPLE_TABLES"],"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":["fib6_rule_suppress"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"78f75d632f74b8de0f081a128588f7c37d0d1164","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6","IPV6_MULTIPLE_TABLES"],"series_id":"828fadb1-74b1-4ddc-9fc9-18da871d24ea","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-24 21:41:27 +0000 UTC FinishedAt: 2026-07-24 21:41:27 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmcl7q[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"78f75d632f74b8de0f081a128588f7c37d0d1164","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6","IPV6_MULTIPLE_TABLES"],"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":["fib6_rule_suppress"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"78f75d632f74b8de0f081a128588f7c37d0d1164","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6","IPV6_MULTIPLE_TABLES"],"series_id":"828fadb1-74b1-4ddc-9fc9-18da871d24ea","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-24 21:41:27 +0000 UTC FinishedAt: 2026-07-24 21:41:27 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmcl7q[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"78f75d632f74b8de0f081a128588f7c37d0d1164","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6","IPV6_MULTIPLE_TABLES"],"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":["fib6_rule_suppress"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"78f75d632f74b8de0f081a128588f7c37d0d1164","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6","IPV6_MULTIPLE_TABLES"],"series_id":"828fadb1-74b1-4ddc-9fc9-18da871d24ea","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-24 21:41:27 +0000 UTC FinishedAt: 2026-07-24 22:36:40 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmcl7q[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"78f75d632f74b8de0f081a128588f7c37d0d1164","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6","IPV6_MULTIPLE_TABLES"],"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":["fib6_rule_suppress"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"78f75d632f74b8de0f081a128588f7c37d0d1164","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6","IPV6_MULTIPLE_TABLES"],"series_id":"828fadb1-74b1-4ddc-9fc9-18da871d24ea","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-24 21:41:27 +0000 UTC FinishedAt: 2026-07-24 22:36:40 +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:*49e3e42a-84a8-4e95-b1eb-3b9252f326be,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-workflowmcl7q/series-workflowmcl7q-convert-artifact-3198096480/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": "120c6fa4-4975-4e6c-87d5-a0c6d1ebfe05", "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-workflowmcl7q/series-workflowmcl7q-build-action-420577564/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowmcl7q[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"78f75d632f74b8de0f081a128588f7c37d0d1164","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6","IPV6_MULTIPLE_TABLES"],"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":["fib6_rule_suppress"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"78f75d632f74b8de0f081a128588f7c37d0d1164","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6","IPV6_MULTIPLE_TABLES"],"series_id":"828fadb1-74b1-4ddc-9fc9-18da871d24ea","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-24 21:41:27 +0000 UTC FinishedAt: 2026-07-24 22:36:30 +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:*49e3e42a-84a8-4e95-b1eb-3b9252f326be,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-workflowmcl7q/series-workflowmcl7q-convert-artifact-3198096480/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": "120c6fa4-4975-4e6c-87d5-a0c6d1ebfe05", "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-workflowmcl7q/series-workflowmcl7q-build-action-420577564/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowmcl7q[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"78f75d632f74b8de0f081a128588f7c37d0d1164","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6","IPV6_MULTIPLE_TABLES"],"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":["fib6_rule_suppress"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"78f75d632f74b8de0f081a128588f7c37d0d1164","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6","IPV6_MULTIPLE_TABLES"],"series_id":"828fadb1-74b1-4ddc-9fc9-18da871d24ea","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-24 22:36:40 +0000 UTC FinishedAt: 2026-07-24 22:36:40 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmcl7q[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"78f75d632f74b8de0f081a128588f7c37d0d1164","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6","IPV6_MULTIPLE_TABLES"],"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":["fib6_rule_suppress"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"78f75d632f74b8de0f081a128588f7c37d0d1164","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6","IPV6_MULTIPLE_TABLES"],"series_id":"828fadb1-74b1-4ddc-9fc9-18da871d24ea","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-24 22:36:40 +0000 UTC FinishedAt: 2026-07-24 22:36:40 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmcl7q[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"78f75d632f74b8de0f081a128588f7c37d0d1164","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6","IPV6_MULTIPLE_TABLES"],"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":["fib6_rule_suppress"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"78f75d632f74b8de0f081a128588f7c37d0d1164","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6","IPV6_MULTIPLE_TABLES"],"series_id":"828fadb1-74b1-4ddc-9fc9-18da871d24ea","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-24 22:36:40 +0000 UTC FinishedAt: 2026-07-24 22:39:05 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmcl7q[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"78f75d632f74b8de0f081a128588f7c37d0d1164","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6","IPV6_MULTIPLE_TABLES"],"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":["fib6_rule_suppress"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"78f75d632f74b8de0f081a128588f7c37d0d1164","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6","IPV6_MULTIPLE_TABLES"],"series_id":"828fadb1-74b1-4ddc-9fc9-18da871d24ea","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-24 22:36:40 +0000 UTC FinishedAt: 2026-07-24 22:38:55 +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:*120c6fa4-4975-4e6c-87d5-a0c6d1ebfe05,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-workflowmcl7q/series-workflowmcl7q-build-action-420577564/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-workflowmcl7q[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"78f75d632f74b8de0f081a128588f7c37d0d1164","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6","IPV6_MULTIPLE_TABLES"],"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":["fib6_rule_suppress"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"78f75d632f74b8de0f081a128588f7c37d0d1164","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6","IPV6_MULTIPLE_TABLES"],"series_id":"828fadb1-74b1-4ddc-9fc9-18da871d24ea","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-24 22:39:05 +0000 UTC FinishedAt: 2026-07-25 01:46:29 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmcl7q[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"78f75d632f74b8de0f081a128588f7c37d0d1164","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6","IPV6_MULTIPLE_TABLES"],"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":["fib6_rule_suppress"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"78f75d632f74b8de0f081a128588f7c37d0d1164","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6","IPV6_MULTIPLE_TABLES"],"series_id":"828fadb1-74b1-4ddc-9fc9-18da871d24ea","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-24 22:39:05 +0000 UTC FinishedAt: 2026-07-25 01:46:29 +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":["fib6_rule_suppress"],"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:*e7009036-c074-4cdc-8502-4a41e0802bd0,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*120c6fa4-4975-4e6c-87d5-a0c6d1ebfe05,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-workflowmcl7q/series-workflowmcl7q-build-action-793621291/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-workflowmcl7q/series-workflowmcl7q-build-action-420577564/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowmcl7q[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"78f75d632f74b8de0f081a128588f7c37d0d1164","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6","IPV6_MULTIPLE_TABLES"],"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":["fib6_rule_suppress"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"78f75d632f74b8de0f081a128588f7c37d0d1164","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6","IPV6_MULTIPLE_TABLES"],"series_id":"828fadb1-74b1-4ddc-9fc9-18da871d24ea","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-24 22:39:05 +0000 UTC FinishedAt: 2026-07-24 22:39:15 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmcl7q[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"78f75d632f74b8de0f081a128588f7c37d0d1164","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6","IPV6_MULTIPLE_TABLES"],"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":["fib6_rule_suppress"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"78f75d632f74b8de0f081a128588f7c37d0d1164","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6","IPV6_MULTIPLE_TABLES"],"series_id":"828fadb1-74b1-4ddc-9fc9-18da871d24ea","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-24 22:39:05 +0000 UTC FinishedAt: 2026-07-24 22:39:10 +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":["fib6_rule_suppress"],"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-workflowmcl7q/series-workflowmcl7q-convert-artifact-1995784889/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowmcl7q[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"78f75d632f74b8de0f081a128588f7c37d0d1164","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6","IPV6_MULTIPLE_TABLES"],"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":["fib6_rule_suppress"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"78f75d632f74b8de0f081a128588f7c37d0d1164","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6","IPV6_MULTIPLE_TABLES"],"series_id":"828fadb1-74b1-4ddc-9fc9-18da871d24ea","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-24 22:39:05 +0000 UTC FinishedAt: 2026-07-24 22:39:05 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmcl7q[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"78f75d632f74b8de0f081a128588f7c37d0d1164","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6","IPV6_MULTIPLE_TABLES"],"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":["fib6_rule_suppress"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"78f75d632f74b8de0f081a128588f7c37d0d1164","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6","IPV6_MULTIPLE_TABLES"],"series_id":"828fadb1-74b1-4ddc-9fc9-18da871d24ea","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-24 22:39:05 +0000 UTC FinishedAt: 2026-07-24 22:39:05 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmcl7q[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"78f75d632f74b8de0f081a128588f7c37d0d1164","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6","IPV6_MULTIPLE_TABLES"],"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":["fib6_rule_suppress"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"78f75d632f74b8de0f081a128588f7c37d0d1164","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6","IPV6_MULTIPLE_TABLES"],"series_id":"828fadb1-74b1-4ddc-9fc9-18da871d24ea","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-24 22:39:05 +0000 UTC FinishedAt: 2026-07-24 22:39:05 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmcl7q[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"78f75d632f74b8de0f081a128588f7c37d0d1164","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6","IPV6_MULTIPLE_TABLES"],"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":["fib6_rule_suppress"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"78f75d632f74b8de0f081a128588f7c37d0d1164","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6","IPV6_MULTIPLE_TABLES"],"series_id":"828fadb1-74b1-4ddc-9fc9-18da871d24ea","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-24 22:39:15 +0000 UTC FinishedAt: 2026-07-25 01:46:29 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmcl7q[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"78f75d632f74b8de0f081a128588f7c37d0d1164","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6","IPV6_MULTIPLE_TABLES"],"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":["fib6_rule_suppress"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"78f75d632f74b8de0f081a128588f7c37d0d1164","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6","IPV6_MULTIPLE_TABLES"],"series_id":"828fadb1-74b1-4ddc-9fc9-18da871d24ea","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-24 22:39:15 +0000 UTC FinishedAt: 2026-07-25 01:46:19 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*e7009036-c074-4cdc-8502-4a41e0802bd0,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*120c6fa4-4975-4e6c-87d5-a0c6d1ebfe05,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-workflowmcl7q/series-workflowmcl7q-build-action-793621291/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-workflowmcl7q/series-workflowmcl7q-build-action-420577564/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-workflowmcl7q/series-workflowmcl7q-convert-artifact-1995784889/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,}