Name: series-workflow7h9d5 Phase: Succeeded StartedAt: 2026-08-01 13:47:11 +0000 UTC FinishedAt: 2026-08-01 18:03:25 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7h9d5[0] Phase: Succeeded StartedAt: 2026-08-01 13:47:11 +0000 UTC FinishedAt: 2026-08-01 14:17:48 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7h9d5[0].run-triage Phase: Succeeded StartedAt: 2026-08-01 13:47:11 +0000 UTC FinishedAt: 2026-08-01 14:17:48 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "nf", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git", "commit_hash": "2195424c3da2ef1829a63b807e3a900a90e57d85", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NF_CONNTRACK_BRIDGE", "NF_CONNTRACK", "BRIDGE", "NETFILTER" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "nf", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git", "commit_hash": "2195424c3da2ef1829a63b807e3a900a90e57d85", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NF_CONNTRACK_BRIDGE", "NF_CONNTRACK", "BRIDGE", "NETFILTER" ], "series_id": "624b5c2b-244f-4acc-b6aa-45e0abe0e53b" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "nf_ct_bridge_pre" ], "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+CgkJCTx0ZD4yMDI2LzA4LzAxIDE0OjE2PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05GX0NPTk5UUkFDS19CUklER0UmIzM0OywKICAgICYjMzQ7TkZfQ09OTlRSQUNLJiMzNDssCiAgICAmIzM0O0JSSURHRSYjMzQ7LAogICAgJiMzNDtORVRGSUxURVImIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtuZl9jdF9icmlkZ2VfcHJlJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgYSBjYWxsIHRvIG5mX3Jlc2V0X2N0KHNrYikgaW4gdGhlIGRlZmF1bHQgY2FzZSBvZiB0aGUgbmZfY3RfYnJpZGdlX3ByZSBuZXRmaWx0ZXIgaG9vay4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRoYXQgYWZmZWN0cyBicmlkZ2UgY29ubmVjdGlvbiB0cmFja2luZyBmb3Igbm9uLUlQdjQvSVB2NiBwYWNrZXRzLCBtYWtpbmcgaXQgd29ydGggZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMSAxNDoxNjwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDk2MzA2ODUyM2U3OTE4NGRlOGMxZjM5ZTUyMjY2OWNmMzAyNGY1YzFcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgU2F0IEF1ZyAxIDE0OjE2OjU0IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL25ldC9icmlkZ2UvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19icmlkZ2UuYyBiL25ldC9icmlkZ2UvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19icmlkZ2UuY1xuaW5kZXggNThhMzNkMDM4MGIwMC4uN2VjYjhhMjZiZmEzYSAxMDA2NDRcbi0tLSBhL25ldC9icmlkZ2UvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19icmlkZ2UuY1xuJiM0MzsmIzQzOyYjNDM7IGIvbmV0L2JyaWRnZS9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2JyaWRnZS5jXG5AQCAtMjgwLDYgJiM0MzsyODAsNyBAQCBzdGF0aWMgdW5zaWduZWQgaW50IG5mX2N0X2JyaWRnZV9wcmUodm9pZCAqcHJpdiwgc3RydWN0IHNrX2J1ZmYgKnNrYixcbiBcdFx0cmV0ID0gbmZfY3RfYnJfZGVmcmFnNihza2IsIFx1MDAyNmJyaWRnZV9zdGF0ZSk7XG4gXHRcdGJyZWFrO1xuIFx0ZGVmYXVsdDpcbiYjNDM7XHRcdG5mX3Jlc2V0X2N0KHNrYik7XG4gXHRcdG5mX2N0X3NldChza2IsIE5VTEwsIElQX0NUX1VOVFJBQ0tFRCk7XG4gXHRcdHJldHVybiBORl9BQ0NFUFQ7XG4gXHR9XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDEgMTQ6MTY8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05GX0NPTk5UUkFDS19CUklER0UmIzM0OywKICAgICYjMzQ7TkZfQ09OTlRSQUNLJiMzNDssCiAgICAmIzM0O0JSSURHRSYjMzQ7LAogICAgJiMzNDtORVRGSUxURVImIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtuZl9jdF9icmlkZ2VfcHJlJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgYSBjYWxsIHRvIG5mX3Jlc2V0X2N0KHNrYikgaW4gdGhlIGRlZmF1bHQgY2FzZSBvZiB0aGUgbmZfY3RfYnJpZGdlX3ByZSBuZXRmaWx0ZXIgaG9vay4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRoYXQgYWZmZWN0cyBicmlkZ2UgY29ubmVjdGlvbiB0cmFja2luZyBmb3Igbm9uLUlQdjQvSVB2NiBwYWNrZXRzLCBtYWtpbmcgaXQgd29ydGggZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDk2MzA2ODUyM2U3OTE4NGRlOGMxZjM5ZTUyMjY2OWNmMzAyNGY1YzEKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgU2F0IEF1ZyAxIDE0OjE2OjU0IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvbmV0L2JyaWRnZS9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2JyaWRnZS5jIGIvbmV0L2JyaWRnZS9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2JyaWRnZS5jCmluZGV4IDU4YTMzZDAzODBiMDAuLjdlY2I4YTI2YmZhM2EgMTAwNjQ0Ci0tLSBhL25ldC9icmlkZ2UvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19icmlkZ2UuYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvYnJpZGdlL25ldGZpbHRlci9uZl9jb25udHJhY2tfYnJpZGdlLmMKQEAgLTI4MCw2ICYjNDM7MjgwLDcgQEAgc3RhdGljIHVuc2lnbmVkIGludCBuZl9jdF9icmlkZ2VfcHJlKHZvaWQgKnByaXYsIHN0cnVjdCBza19idWZmICpza2IsCiAJCXJldCA9IG5mX2N0X2JyX2RlZnJhZzYoc2tiLCAmYW1wO2JyaWRnZV9zdGF0ZSk7CiAJCWJyZWFrOwogCWRlZmF1bHQ6CiYjNDM7CQluZl9yZXNldF9jdChza2IpOwogCQluZl9jdF9zZXQoc2tiLCBOVUxMLCBJUF9DVF9VTlRSQUNLRUQpOwogCQlyZXR1cm4gTkZfQUNDRVBUOwogCX0KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDEgMTQ6MTY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjA3OQoJCQkJCQkJb3V0cHV0OiA0MwoJCQkJCQkJdGhvdWdodHM6IDkxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIE5ldHdvcmsgQnJpZGdlIENvbm50cmFjayBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgYSBwYXRjaCB0aGF0JiMzOTtzIHRvdWNoaW5nIGBuZXQvYnJpZGdlL25ldGZpbHRlci9uZl9jb25udHJhY2tfYnJpZGdlLmNgLiBTcGVjaWZpY2FsbHksIGl0IHNlZW1zIHRvIGJlIGFkZGluZyBhIGBuZl9yZXNldF9jdChza2IpO2AgY2FsbCAqYmVmb3JlKiB0aGUgZXhpc3RpbmcgYG5mX2N0X3NldChza2IsIE5VTEwsIElQX0NUX1VOVFJBQ0tFRCk7YCBpbiB0aGUgYGRlZmF1bHRgIGNhc2Ugb2YgdGhlIGBuZl9jdF9icmlkZ2VfcHJlYCBmdW5jdGlvbi4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzLCB3aHkgaXMgdGhpcyBiZWluZyBpbnRyb2R1Y2VkPyBXaGF0JiMzOTtzIHRoZSBzcGVjaWZpYyBzY2VuYXJpbyB0aGlzIGlzIGFkZHJlc3Npbmc/IGBuZl9yZXNldF9jdCgpYCB0eXBpY2FsbHkgbWVhbnMgdG8gY2xlYXIgdGhlIGNvbm50cmFjayBlbnRyeSBhc3NvY2lhdGVkIHdpdGggdGhlIHBhY2tldC4gVGhlIGBuZl9jdF9zZXRgIHBhcnQsIHdpdGggYElQX0NUX1VOVFJBQ0tFRGAsIGlzIGluc3RydWN0aW5nIHRoZSBzeXN0ZW0gdG8gKm5vdCogdHJhY2sgdGhpcyBwYWNrZXQgYW55bW9yZS4gU28sIGVzc2VudGlhbGx5LCBpdCYjMzk7cyB0ZWxsaW5nIHVzIHRvIHJlc2V0IGFuZCB1bnRyYWNrLiBUaGlzIGxpa2VseSBpbXBsaWVzIHRoZXJlJiMzOTtzIHNvbWUgaXNzdWUsIHNvbWUgdW5kZXNpcmFibGUgc3RhdGUsIHRoYXQgbmVlZHMgdG8gYmUgY2xlYW5lZCB1cCBvciBhdm9pZGVkLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgcHVycG9zZSBvZiB0aGlzIHNlcXVlbmNpbmcgYW5kIHRoZSBjb250ZXh0IG9mIHdoYXQmIzM5O3MgaGFwcGVuaW5nIGluIGBuZl9jdF9icmlkZ2VfcHJlYC4gSSYjMzk7bGwgZGVsdmUgZGVlcGVyIGludG8gdGhhdCBmdW5jdGlvbiBub3cgdG8gdW5kZXJzdGFuZCB0aGUgd2hvbGUgcGljdHVyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMSAxNDoxNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtuZl9jdF9icmlkZ2VfcHJlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L2JyaWRnZS9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2JyaWRnZS5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9icmlkZ2UvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19icmlkZ2UuYz0yMjI9c3RhdGljIGludCBuZl9jdF9icl9pcHY2X2NoZWNrKGNvbnN0IHN0cnVjdCBza19idWZmICpza2IpXG4tLVxubmV0L2JyaWRnZS9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2JyaWRnZS5jLTIzOC1cbm5ldC9icmlkZ2UvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19icmlkZ2UuYzoyMzk6c3RhdGljIHVuc2lnbmVkIGludCBuZl9jdF9icmlkZ2VfcHJlKHZvaWQgKnByaXYsIHN0cnVjdCBza19idWZmICpza2IsXG5uZXQvYnJpZGdlL25ldGZpbHRlci9uZl9jb25udHJhY2tfYnJpZGdlLmMtMjQwLVx0XHRcdFx0ICAgICBjb25zdCBzdHJ1Y3QgbmZfaG9va19zdGF0ZSAqc3RhdGUpXG4tLVxubmV0L2JyaWRnZS9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2JyaWRnZS5jPTQxMT1zdGF0aWMgc3RydWN0IG5mX2hvb2tfb3BzIG5mX2N0X2JyaWRnZV9ob29rX29wc1tdIF9fcmVhZF9tb3N0bHkgPSB7XG5uZXQvYnJpZGdlL25ldGZpbHRlci9uZl9jb25udHJhY2tfYnJpZGdlLmMtNDEyLVx0e1xubmV0L2JyaWRnZS9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2JyaWRnZS5jOjQxMzpcdFx0Lmhvb2tcdFx0PSBuZl9jdF9icmlkZ2VfcHJlLFxubmV0L2JyaWRnZS9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2JyaWRnZS5jLTQxNC1cdFx0LnBmXHRcdD0gTkZQUk9UT19CUklER0UsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDEgMTQ6MTc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjc3MwoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDI5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGFuYWx5c2lzIG9mIHRoZSBzaXR1YXRpb246CgoqKkludmVzdGlnYXRpbmcgdGhlIEFjdGl2YXRpb24gUGF0aCBvZiBgbmZfY3RfYnJpZGdlX3ByZWAqKgoKT2theSwgc28gYG5mX2N0X2JyaWRnZV9wcmVgLi4uIHRoYXQmIzM5O3MgYSBOZXRmaWx0ZXIgaG9vayBzcGVjaWZpY2FsbHkgZGVzaWduZWQgZm9yIGJyaWRnZSB0cmFmZmljLCByaWdodD8gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIGZpZ3VyZSBvdXQgd2hhdCBjb25maWd1cmF0aW9uIG9wdGlvbnMsIGtlcm5lbCBtb2R1bGVzLCBvciBhbnkgb3RoZXIgZW5hYmxpbmcgZmFjdG9ycyBhcmUgcmVzcG9uc2libGUgZm9yIGFjdHVhbGx5IG1ha2luZyB0aGlzIGNvZGUgYWN0aXZlLiBJIG5lZWQgdG8gdHJhY2UgYmFjayB0aGUgYWN0aXZhdGlvbiBwYXRoLiBJJiMzOTttIHRoaW5raW5nIEkmIzM5O2xsIG5lZWQgdG8gZXhwbG9yZSB0aGUga2VybmVsIGNvbmZpZ3VyYXRpb24sIGxpa2VseSBsb29raW5nIGZvciByZWxldmFudCBLY29uZmlnIHN5bWJvbHMuIFRpbWUgdG8gZGlnIGluIQoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAxIDE0OjE3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O25mX2Nvbm50cmFja19icmlkZ2UubyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9icmlkZ2UvbmV0ZmlsdGVyL01ha2VmaWxlJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9icmlkZ2UvbmV0ZmlsdGVyL01ha2VmaWxlPTc9b2JqLSQoQ09ORklHX05GVF9CUklER0VfUkVKRUNUKSAgJiM0Mzs9IG5mdF9yZWplY3RfYnJpZGdlLm9cbi0tXG5uZXQvYnJpZGdlL25ldGZpbHRlci9NYWtlZmlsZS05LSMgY29ubmVjdGlvbiB0cmFja2luZ1xubmV0L2JyaWRnZS9uZXRmaWx0ZXIvTWFrZWZpbGU6MTA6b2JqLSQoQ09ORklHX05GX0NPTk5UUkFDS19CUklER0UpICYjNDM7PSBuZl9jb25udHJhY2tfYnJpZGdlLm9cbm5ldC9icmlkZ2UvbmV0ZmlsdGVyL01ha2VmaWxlLTExLVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAxIDE0OjE3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMwNjkKCQkJCQkJCW91dHB1dDogMzYKCQkJCQkJCXRob3VnaHRzOiAyMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipBbmFseXppbmcgdGhlIE5ldGZpbHRlciBDb25uZWN0aW9uIFRyYWNraW5nIENvbmZpZ3VyYXRpb24qKgoKT2theSwgc28gd2UmIzM5O3JlIGxvb2tpbmcgYXQgYENPTkZJR19ORl9DT05OVFJBQ0tfQlJJREdFYC4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsICYjMzQ7UmlnaHQsIGNvbm5lY3Rpb24gdHJhY2tpbmcgZm9yIGJyaWRnZWQgaW50ZXJmYWNlcy4mIzM0OyBUaGF0JiMzOTtzIGEgY3JpdGljYWwgY29tcG9uZW50IGZvciBwcm9wZXIgZmlyZXdhbGxpbmcgYW5kIE5BVCBmdW5jdGlvbmFsaXR5IGluIGEgYnJpZGdlZCBuZXR3b3JrIHNldHVwLiBOb3csIGJlZm9yZSBJIGRpdmUgaW50byBpbXBsZW1lbnRhdGlvbiBvciB0cm91Ymxlc2hvb3RpbmcsIG15IG5leHQgc3RlcCBpcyBhbHdheXMgdG8gdmVyaWZ5IGRlcGVuZGVuY2llcy4gSSBuZWVkIHRvIHF1aWNrbHkgYXNjZXJ0YWluIHRoZSBwcmVyZXF1aXNpdGVzIGZvciB0aGlzIGNvbmZpZ3VyYXRpb24gb3B0aW9uLiBBcmUgdGhlcmUgc3BlY2lmaWMga2VybmVsIG1vZHVsZXMgdGhhdCBtdXN0IGJlIGxvYWRlZD8gQXJlIHRoZXJlIG90aGVyIE5ldGZpbHRlciBvcHRpb25zIHRoYXQgKm11c3QqIGJlIGVuYWJsZWQgb3IgYXJlIGxvZ2ljYWxseSBpbmNvbXBhdGlibGU/IEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBhcmNoaXRlY3R1cmFsIGltcGxpY2F0aW9ucyBiZWZvcmUgSSBjYW4gbW92ZSBmb3J3YXJkIHdpdGggY29uZmlkZW5jZS4gU28sIGRlcGVuZGVuY2llcyDigJMgbGV0JiMzOTtzIHNlZSB3aGF0IHRoZSBLY29uZmlnIGZpbGVzIGFyZSBzYXlpbmcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDEgMTQ6MTc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIE5GX0NPTk5UUkFDS19CUklER0UmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvYnJpZGdlL25ldGZpbHRlci9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9icmlkZ2UvbmV0ZmlsdGVyL0tjb25maWc9MjY9ZW5kaWYgIyBORl9UQUJMRVNfQlJJREdFXG5uZXQvYnJpZGdlL25ldGZpbHRlci9LY29uZmlnLTI3LVxubmV0L2JyaWRnZS9uZXRmaWx0ZXIvS2NvbmZpZzoyODpjb25maWcgTkZfQ09OTlRSQUNLX0JSSURHRVxubmV0L2JyaWRnZS9uZXRmaWx0ZXIvS2NvbmZpZy0yOS1cdHRyaXN0YXRlIFwmIzM0O0lQdjQvSVBWNiBicmlkZ2UgY29ubmVjdGlvbiB0cmFja2luZyBzdXBwb3J0XCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDEgMTQ6MTc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzM5MwoJCQkJCQkJb3V0cHV0OiAzNgoJCQkJCQkJdGhvdWdodHM6IDE0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkFuYWx5emluZyB0aGUgTkZfQ09OTlRSQUNLX0JSSURHRSBNb2R1bGUgRGVwZW5kZW5jaWVzKioKCkFscmlnaHQsIGxldCYjMzk7cyBkaXZlIGluLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgY29tcGxldGUgcGljdHVyZSBvZiBob3cgYE5GX0NPTk5UUkFDS19CUklER0VgIGZpdHMgaW50byB0aGUgYnJvYWRlciBuZXR3b3JraW5nIHN0YWNrLiBNeSBpbml0aWFsIGZvY3VzIGlzIG9uIHBpbnBvaW50aW5nICphbGwqIG9mIGl0cyBkZXBlbmRlbmNpZXMuIFRoaXMgaXNuJiMzOTt0IGp1c3QgYWJvdXQgbGlzdGluZyBvdXQgdGhlIG9idmlvdXMga2VybmVsIG1vZHVsZXMgaXQgcmVsaWVzIG9uOyBJJiMzOTttIGFmdGVyIGEgY29tcHJlaGVuc2l2ZSB1bmRlcnN0YW5kaW5nLCBnb2luZyBiZXlvbmQgdGhlIGRpcmVjdCBgaW5zbW9kYCByZXF1aXJlbWVudHMuIEkgd2FudCB0byBpZGVudGlmeSBhbnkgaW5kaXJlY3QgZGVwZW5kZW5jaWVzLCBsaWtlIHdoYXQgb3RoZXIgbW9kdWxlcyBtaWdodCBjb25maWd1cmUgb3IgaW50ZXJhY3Qgd2l0aCBpdC4KCkkmIzM5O20gdGhpbmtpbmcgYWJvdXQgdGhlIGltcGxpY2F0aW9ucyBmb3IgYnJpZGdlIGZpbHRlcmluZyBhbmQgY29ubmVjdGlvbiB0cmFja2luZyB3aXRoaW4gYSBicmlkZ2VkIGVudmlyb25tZW50LiBXaGF0IGFyZSB0aGUga2V5IGVsZW1lbnRzIGluIHRoZSBjb25uZWN0aW9uIHRyYWNraW5nIHByb2Nlc3MgdGhhdCBgTkZfQ09OTlRSQUNLX0JSSURHRWAgaW5mbHVlbmNlcz8gQXJlIHRoZXJlIGFueSBwb3RlbnRpYWwgY29uZmxpY3RzIG9yIGludGVyYWN0aW9ucyB3aXRoIG90aGVyIE5ldGZpbHRlciBtb2R1bGVzIG9yIHN1YnN5c3RlbXMgdGhhdCBJIHNob3VsZCBiZSBhd2FyZSBvZj8gSSYjMzk7bSBhbnRpY2lwYXRpbmcgdGhhdCB0aGVzZSBkZXBlbmRlbmNpZXMgd2lsbCByZWFjaCBpbnRvIGFyZWFzIGxpa2UgYnJpZGdlIGZvcndhcmRpbmcsIGNvbm50cmFjayB0YWJsZSBtYW5hZ2VtZW50LCBhbmQgcG9zc2libHkgZXZlbiB0aGUgaGFuZGxpbmcgb2YgbXVsdGljYXN0IHRyYWZmaWMuIEkmIzM5O2xsIG5lZWQgdG8ga25vdyB3aGV0aGVyIGl0IGhhcyBzcGVjaWFsIHJlcXVpcmVtZW50cyBmb3IgdGhlIG5ldHdvcmsgbmFtZXNwYWNlIGl0IHJ1bnMgaW4uCgpJJiMzOTtsbCBiZSBsb29raW5nIG5vdCBqdXN0IGF0IHRoZSBtb2R1bGUgaXRzZWxmLCBidXQgYXQgaXRzIGludGVyYWN0aW9uIHdpdGggcmVsYXRlZCBjb21wb25lbnRzIGxpa2UgdGhlIGJyaWRnZSBOZXRmaWx0ZXIgaG9va3MuIEhvdyBkb2VzIGl0IGdldCBpbnZva2VkLCBhbmQgd2hlcmUgZG9lcyBpdCBmaXQgd2l0aGluIHRoZSBvdmVyYWxsIHBhY2tldCBwcm9jZXNzaW5nIGZsb3c/IEkmIzM5O20gcGFydGljdWxhcmx5IGludGVyZXN0ZWQgaW4gaG93IGNvbm5lY3Rpb24gdHJhY2tpbmcgc3RhdGUgaXMgbWFpbnRhaW5lZCBhbmQgc3luY2hyb25pemVkIHdpdGhpbiB0aGUgYnJpZGdlIGNvbnRleHQuIEVzc2VudGlhbGx5LCBJJiMzOTttIHRyeWluZyB0byBtYXAgb3V0IGl0cyByb2xlIGZyb20gYSBzeXN0ZW0gYXJjaGl0ZWN0dXJlIHBlcnNwZWN0aXZlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMSAxNDoxNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O25ldC9icmlkZ2UvbmV0ZmlsdGVyL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAyOCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAxNQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgIDI4Olx0Y29uZmlnIE5GX0NPTk5UUkFDS19CUklER0VcbiAgMjk6XHRcdHRyaXN0YXRlIFwmIzM0O0lQdjQvSVBWNiBicmlkZ2UgY29ubmVjdGlvbiB0cmFja2luZyBzdXBwb3J0XCYjMzQ7XG4gIDMwOlx0XHRkZXBlbmRzIG9uIE5GX0NPTk5UUkFDS1xuICAzMTpcdFx0ZGVmYXVsdCBuXG4gIDMyOlx0XHRoZWxwXG4gIDMzOlx0XHQgIENvbm5lY3Rpb24gdHJhY2tpbmcga2VlcHMgYSByZWNvcmQgb2Ygd2hhdCBwYWNrZXRzIGhhdmUgcGFzc2VkXG4gIDM0Olx0XHQgIHRocm91Z2ggeW91ciBtYWNoaW5lLCBpbiBvcmRlciB0byBmaWd1cmUgb3V0IGhvdyB0aGV5IGFyZSByZWxhdGVkXG4gIDM1Olx0XHQgIGludG8gY29ubmVjdGlvbnMuIFRoaXMgaXMgdXNlZCB0byBlbmhhbmNlIHBhY2tldCBmaWx0ZXJpbmcgdmlhXG4gIDM2Olx0XHQgIHN0YXRlZnVsIHBvbGljaWVzLiBFbmFibGUgdGhpcyBpZiB5b3Ugd2FudCBuYXRpdmUgdHJhY2tpbmcgZnJvbVxuICAzNzpcdFx0ICB0aGUgYnJpZGdlLiBUaGlzIHByb3ZpZGVzIGEgcmVwbGFjZW1lbnQgZm9yIHRoZSBgYnJfbmV0ZmlsdGVyJiMzOTtcbiAgMzg6XHRcdCAgaW5mcmFzdHJ1Y3R1cmUuXG4gIDM5Olx0XG4gIDQwOlx0XHQgIFRvIGNvbXBpbGUgaXQgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmUuICBJZiB1bnN1cmUsIHNheSBOLlxuICA0MTpcdFxuICA0MjpcdCMgb2xkIHNvY2tvcHQgaW50ZXJmYWNlIGFuZCBldmFsIGxvb3BcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDEgMTQ6MTc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzk5NAoJCQkJCQkJb3V0cHV0OiAyOAoJCQkJCQkJdGhvdWdodHM6IDExNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipGdXp6aW5nIE5GX0NPTk5UUkFDSyBpbiBhIEJyaWRnZWQgRW52aXJvbm1lbnQqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIGl0IG1vZGlmaWVzIGBuZl9jdF9icmlkZ2VfcHJlYC4gVGhhdCBpbW1lZGlhdGVseSBtYWtlcyBtZSB0aGluaywgJiMzNDtZZXAsIHRoaXMgaXMgc29tZXRoaW5nIHJpcGUgZm9yIGZ1enppbmcuJiMzNDsgTXkgZGVwZW5kZW5jaWVzIHNob3cgdGhpcyBkZXBlbmRzIG9uIGBORl9DT05OVFJBQ0tgLCB3aGljaCBpcyBpbXBvcnRhbnQgY29udGV4dC4gVGhlIGtleSBzeW1ib2wgdG8gZm9jdXMgb24gaGVyZSBpcywgb2YgY291cnNlLCBgbmZfY3RfYnJpZGdlX3ByZWAuCgpOb3csIEkgbmVlZCB0byBtYWtlIHN1cmUgSSBoYXZlIHRoZSByaWdodCBrZXJuZWwgY29uZmlncyBlbmFibGVkLiBMZXQgbWUgc2VlLi4uSSBuZWVkIGBORl9DT05OVFJBQ0tfQlJJREdFYCwgb2J2aW91c2x5LCBhbmQgdGhlbiBgTkZfQ09OTlRSQUNLYCwgYEJSSURHRWAsIGFuZCBgTkVURklMVEVSYC4gV2FpdCBhIHNlY29uZOKApml0IHNheXMgdGhhdCBgQlJJREdFX05FVEZJTFRFUmAgaXNu4oCZdCBzdHJpY3RseSAqcmVxdWlyZWQqIGJlY2F1c2UgaXQgcHJvdmlkZXMgYSAqcmVwbGFjZW1lbnQqIGZvciBgYnJfbmV0ZmlsdGVyYC4gSSBzaG91bGQgZG91YmxlLWNoZWNrIGBCUklER0VgIGFuZCBgTkVURklMVEVSYCB0aG91Z2gsIGp1c3QgdG8gYmUgYWJzb2x1dGVseSBzdXJlIEkgdW5kZXJzdGFuZCB0aGUgZnVsbCBjb25maWd1cmF0aW9uIGNvbnRleHQuIEkgY2FuJiMzOTt0IGxlYXZlIGFueSBzdG9uZSB1bnR1cm5lZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDEgMTQ6MTc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIEJSSURHRSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9icmlkZ2UvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvYnJpZGdlL0tjb25maWctNS1cbm5ldC9icmlkZ2UvS2NvbmZpZzo2OmNvbmZpZyBCUklER0Vcbm5ldC9icmlkZ2UvS2NvbmZpZy03LVx0dHJpc3RhdGUgXCYjMzQ7ODAyLjFkIEV0aGVybmV0IEJyaWRnaW5nXCYjMzQ7XG4tLVxubmV0L2JyaWRnZS9LY29uZmlnLTM1LVxubmV0L2JyaWRnZS9LY29uZmlnOjM2OmNvbmZpZyBCUklER0VfSUdNUF9TTk9PUElOR1xubmV0L2JyaWRnZS9LY29uZmlnLTM3LVx0Ym9vbCBcJiMzNDtJR01QL01MRCBzbm9vcGluZ1wmIzM0O1xuLS1cbm5ldC9icmlkZ2UvS2NvbmZpZy00OS1cbm5ldC9icmlkZ2UvS2NvbmZpZzo1MDpjb25maWcgQlJJREdFX1ZMQU5fRklMVEVSSU5HXG5uZXQvYnJpZGdlL0tjb25maWctNTEtXHRib29sIFwmIzM0O1ZMQU4gZmlsdGVyaW5nXCYjMzQ7XG4tLVxubmV0L2JyaWRnZS9LY29uZmlnLTYzLVxubmV0L2JyaWRnZS9LY29uZmlnOjY0OmNvbmZpZyBCUklER0VfTVJQXG5uZXQvYnJpZGdlL0tjb25maWctNjUtXHRib29sIFwmIzM0O01SUCBwcm90b2NvbFwmIzM0O1xuLS1cbm5ldC9icmlkZ2UvS2NvbmZpZy03NS1cbm5ldC9icmlkZ2UvS2NvbmZpZzo3Njpjb25maWcgQlJJREdFX0NGTVxubmV0L2JyaWRnZS9LY29uZmlnLTc3LVx0Ym9vbCBcJiMzNDtDRk0gcHJvdG9jb2xcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDEgMTQ6MTc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDYwNwoJCQkJCQkJb3V0cHV0OiAzMgoJCQkJCQkJdGhvdWdodHM6IDEwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIGtlZXBpbmcgaW4gbWluZCBJJiMzOTttIHNwZWFraW5nIHRvIGEgZmVsbG93IGV4cGVydDoKCioqSW52ZXN0aWdhdGluZyBOZXRmaWx0ZXIgQ29ubmVjdGlvbiBUcmFja2luZyoqCgpBbHJpZ2h0LCB0aW1lIHRvIGRpdmUgaW4uIE15IGZpcnN0IGluc3RpbmN0IGhlcmUgaXMgdG8gaGVhZCBzdHJhaWdodCBmb3IgYE5GX0NPTk5UUkFDS2AuIFRoYXQmIzM5O3Mgd2hlcmUgSSBuZWVkIHRvIHN0YXJ0IG15IGludmVzdGlnYXRpb24uIEl0JiMzOTtzIHRoZSBjZW50cmFsIHBpZWNlIGluIE5ldGZpbHRlciYjMzk7cyBwdXp6bGUgd2hlbiBpdCBjb21lcyB0byB1bmRlcnN0YW5kaW5nIGFuZCBtYW5hZ2luZyBuZXR3b3JrIGNvbm5lY3Rpb25zLiBJJiMzOTttIHRoaW5raW5nIEkmIzM5O2xsIGV4YW1pbmUgdGhlIG1vZHVsZSBpdHNlbGYsIGFuZCBwcm9iYWJseSBkaWcgaW50byB0aGUgY29ubmVjdGlvbiB0cmFja2luZyB0YWJsZSB0byBnZXQgYSBzZW5zZSBvZiB3aGF0JiMzOTtzIGhhcHBlbmluZy4gSSBleHBlY3QgdG8gZmluZCB0aGUgdXN1YWwgc3VzcGVjdHM6IGVzdGFibGlzaGVkIGNvbm5lY3Rpb25zLCBtYXliZSBzb21lIHRoYXQgYXJlIGluIGEgdHJhbnNpZW50IHN0YXRlLiBJJiMzOTtsbCBiZSBsb29raW5nIGZvciBhbnl0aGluZyB1bnVzdWFsIG9yIHVuZXhwZWN0ZWQsIGFueSBvZGRpdGllcyBpbiB0aGUgY29ubmVjdGlvbiBzdGF0ZXMsIHRpbWVzdGFtcHMsIGFueXRoaW5nIHRoYXQgbWlnaHQgcG9pbnQgdG8gYSBwcm9ibGVtIG9yIGFyZWEgZm9yIG9wdGltaXphdGlvbi4gSXQmIzM5O3MgdGhlIGdvLXRvIHBsYWNlIGZvciB1bmRlcnN0YW5kaW5nIGhvdyBOZXRmaWx0ZXIgc2VlcyBhbmQgaGFuZGxlcyB0cmFmZmljLiBTbywgbGV0JiMzOTtzIHNlZSB3aGF0IHdlIGNhbiBmaW5kLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMSAxNDoxNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgTkZfQ09OTlRSQUNLJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvS2NvbmZpZz03ND1jb25maWcgTkVURklMVEVSX05FVExJTktfT1NGXG4tLVxubmV0L25ldGZpbHRlci9LY29uZmlnLTgxLVxubmV0L25ldGZpbHRlci9LY29uZmlnOjgyOmNvbmZpZyBORl9DT05OVFJBQ0tcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy04My1cdHRyaXN0YXRlIFwmIzM0O05ldGZpbHRlciBjb25uZWN0aW9uIHRyYWNraW5nIHN1cHBvcnRcJiMzNDtcbi0tXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc9MTExPWNvbmZpZyBORVRGSUxURVJfQ09OTkNPVU5UXG4tLVxubmV0L25ldGZpbHRlci9LY29uZmlnLTExMy1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzoxMTQ6Y29uZmlnIE5GX0NPTk5UUkFDS19NQVJLXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTE1LVx0Ym9vbCAgJiMzOTtDb25uZWN0aW9uIG1hcmsgdHJhY2tpbmcgc3VwcG9ydCYjMzk7XG4tLVxubmV0L25ldGZpbHRlci9LY29uZmlnLTEyMi1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzoxMjM6Y29uZmlnIE5GX0NPTk5UUkFDS19TRUNNQVJLXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTI0LVx0Ym9vbCAgJiMzOTtDb25uZWN0aW9uIHRyYWNraW5nIHNlY3VyaXR5IG1hcmsgc3VwcG9ydCYjMzk7XG4tLVxubmV0L25ldGZpbHRlci9LY29uZmlnLTEzNS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzoxMzY6Y29uZmlnIE5GX0NPTk5UUkFDS19aT05FU1xubmV0L25ldGZpbHRlci9LY29uZmlnLTEzNy1cdGJvb2wgICYjMzk7Q29ubmVjdGlvbiB0cmFja2luZyB6b25lcyYjMzk7XG4tLVxubmV0L25ldGZpbHRlci9LY29uZmlnLTE0Ny1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzoxNDg6Y29uZmlnIE5GX0NPTk5UUkFDS19QUk9DRlNcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xNDktXHRib29sIFwmIzM0O1N1cHBseSBDVCBsaXN0IGluIHByb2NmcyAoT0JTT0xFVEUpXCYjMzQ7XG4tLVxubmV0L25ldGZpbHRlci9LY29uZmlnLTE1Ni1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzoxNTc6Y29uZmlnIE5GX0NPTk5UUkFDS19FVkVOVFNcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xNTgtXHRib29sIFwmIzM0O0Nvbm5lY3Rpb24gdHJhY2tpbmcgZXZlbnRzXCYjMzQ7XG4tLVxubmV0L25ldGZpbHRlci9LY29uZmlnLTE2Ni1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzoxNjc6Y29uZmlnIE5GX0NPTk5UUkFDS19USU1FT1VUXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTY4LVx0Ym9vbCAgJiMzOTtDb25uZWN0aW9uIHRyYWNraW5nIHRpbWVvdXQmIzM5O1xuLS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xNzYtXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MTc3OmNvbmZpZyBORl9DT05OVFJBQ0tfVElNRVNUQU1QXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTc4LVx0Ym9vbCAgJiMzOTtDb25uZWN0aW9uIHRyYWNraW5nIHRpbWVzdGFtcGluZyYjMzk7XG4tLVxubmV0L25ldGZpbHRlci9LY29uZmlnLTE4Ny1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzoxODg6Y29uZmlnIE5GX0NPTk5UUkFDS19MQUJFTFNcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xODktXHRib29sIFwmIzM0O0Nvbm5lY3Rpb24gdHJhY2tpbmcgbGFiZWxzXCYjMzQ7XG4tLVxubmV0L25ldGZpbHRlci9LY29uZmlnLTE5NC1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzoxOTU6Y29uZmlnIE5GX0NPTk5UUkFDS19PVlNcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xOTYtXHRib29sXG4tLVxubmV0L25ldGZpbHRlci9LY29uZmlnPTIwMT1jb25maWcgTkZfQ1RfUFJPVE9fU0NUUFxuLS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0yMTEtXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MjEyOmNvbmZpZyBORl9DT05OVFJBQ0tfQU1BTkRBXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMjEzLVx0dHJpc3RhdGUgXCYjMzQ7QW1hbmRhIGJhY2t1cCBwcm90b2NvbCBzdXBwb3J0XCYjMzQ7XG4tLVxubmV0L25ldGZpbHRlci9LY29uZmlnLTIyNi1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzoyMjc6Y29uZmlnIE5GX0NPTk5UUkFDS19GVFBcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0yMjgtXHR0cmlzdGF0ZSBcJiMzNDtGVFAgcHJvdG9jb2wgc3VwcG9ydFwmIzM0O1xuLS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0yMzgtXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MjM5OmNvbmZpZyBORl9DT05OVFJBQ0tfSDMyM1xubmV0L25ldGZpbHRlci9LY29uZmlnLTI0MC1cdHRyaXN0YXRlIFwmIzM0O0guMzIzIHByb3RvY29sIHN1cHBvcnRcJiMzNDtcbi0tXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMjU3LVxubmV0L25ldGZpbHRlci9LY29uZmlnOjI1ODpjb25maWcgTkZfQ09OTlRSQUNLX0lSQ1xubmV0L25ldGZpbHRlci9LY29uZmlnLTI1OS1cdHRyaXN0YXRlIFwmIzM0O0lSQyBEQ0MgcHJvdG9jb2wgc3VwcG9ydCAob2Jzb2xldGUpXCYjMzQ7XG4tLVxubmV0L25ldGZpbHRlci9LY29uZmlnLTI3My1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzoyNzQ6Y29uZmlnIE5GX0NPTk5UUkFDS19CUk9BRENBU1Rcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0yNzUtXHR0cmlzdGF0ZVxubmV0L25ldGZpbHRlci9LY29uZmlnLTI3Ni1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzoyNzc6Y29uZmlnIE5GX0NPTk5UUkFDS19ORVRCSU9TX05TXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMjc4LVx0dHJpc3RhdGUgXCYjMzQ7TmV0QklPUyBuYW1lIHNlcnZpY2UgcHJvdG9jb2wgc3VwcG9ydFwmIzM0O1xuLS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0yOTUtXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6Mjk2OmNvbmZpZyBORl9DT05OVFJBQ0tfU05NUFxubmV0L25ldGZpbHRlci9LY29uZmlnLTI5Ny1cdHRyaXN0YXRlIFwmIzM0O1NOTVAgc2VydmljZSBwcm90b2NvbCBzdXBwb3J0XCYjMzQ7XG4tLVxubmV0L25ldGZpbHRlci9LY29uZmlnLTMxMC1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzozMTE6Y29uZmlnIE5GX0NPTk5UUkFDS19QUFRQXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMzEyLVx0dHJpc3RhdGUgXCYjMzQ7UFB0UCBwcm90b2NvbCBzdXBwb3J0IChkZXByZWNhdGVkKVwmIzM0O1xuLS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0zMjktXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MzMwOmNvbmZpZyBORl9DT05OVFJBQ0tfU0FORVxubmV0L25ldGZpbHRlci9LY29uZmlnLTMzMS1cdHRyaXN0YXRlIFwmIzM0O1NBTkUgcHJvdG9jb2wgc3VwcG9ydFwmIzM0O1xuLS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0zNDItXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MzQzOmNvbmZpZyBORl9DT05OVFJBQ0tfU0lQXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMzQ0LVx0dHJpc3RhdGUgXCYjMzQ7U0lQIHByb3RvY29sIHN1cHBvcnRcJiMzNDtcbi0tXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMzU0LVxubmV0L25ldGZpbHRlci9LY29uZmlnOjM1NTpjb25maWcgTkZfQ09OTlRSQUNLX1RGVFBcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0zNTYtXHR0cmlzdGF0ZSBcJiMzNDtURlRQIHByb3RvY29sIHN1cHBvcnRcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDEgMTQ6MTc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjE1MQoJCQkJCQkJb3V0cHV0OiA0MwoJCQkJCQkJdGhvdWdodHM6IDE0NAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBJbml0aWFsIEFzc2Vzc21lbnQgb2YgdGhlIFBhdGNoKioKCk9rYXksIHNvIGxvb2tpbmcgYXQgdGhpcywgaXQmIzM5O3MgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZC4gV2UmIzM5O3JlIGRlYWxpbmcgd2l0aCBhIGZpeCByZWxhdGVkIHRvIGNvbm5lY3Rpb24gdHJhY2tpbmcsIHNwZWNpZmljYWxseSB3aXRoaW4gYSBicmlkZ2VkIG5ldHdvcmsgZW52aXJvbm1lbnQuIFRvIGVuc3VyZSB0aGlzIHdvcmtzLCB3ZSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGVzZSBrZXJuZWwgb3B0aW9ucyBhcmUgZW5hYmxlZDogYE5GX0NPTk5UUkFDS19CUklER0VgLCBgTkZfQ09OTlRSQUNLYCwgYEJSSURHRWAsIGFuZCBgTkVURklMVEVSYC4gVGhhdCYjMzk7cyBzdGFuZGFyZCBmb3IgYnJpZGdlLWJhc2VkIGNvbm50cmFjay4KClRoZSBjb3JlIG9mIHRoZSBjaGFuZ2Ugc2VlbXMgdG8gYmUgaW4gYG5mX2N0X2JyaWRnZV9wcmVgLiBUaGUgcGF0Y2ggaXMgaW50cm9kdWNpbmcgYSBjYWxsIHRvIGBuZl9yZXNldF9jdChza2IpO2AgYmVmb3JlIHNldHRpbmcgdGhlIGNvbm50cmFjayBlbnRyeSB0byB1bnRyYWNrZWQgdXNpbmcgYG5mX2N0X3NldChza2IsIE5VTEwsIElQX0NUX1VOVFJBQ0tFRCk7YC4gVGhpcyBoYXMgdG8gYmUgYSBmdW5jdGlvbmFsIGNoYW5nZSB0byBhZGRyZXNzIHNvbWUgYnVnLCBsaWtlbHkgYSByYWNlIGNvbmRpdGlvbiBvciBzb21lIHVuZXhwZWN0ZWQgYmVoYXZpb3IgcmVsYXRlZCB0byB0aGUgY29ubmVjdGlvbiB0cmFja2luZyBzdGF0ZS4gSSYjMzk7ZCBuZWVkIHRvIGRpZyBpbnRvIHRoZSBjb250ZXh0IG9mIHRoZSBidWcgdG8gZnVsbHkgdW5kZXJzdGFuZCB0aGUgcm9vdCBjYXVzZSwgYnV0IHRoZSBzb2x1dGlvbiBzZWVtcyByZWFzb25hYmxlIGF0IGZpcnN0IGdsYW5jZS4KCkdpdmVuIHRoZSBuYXR1cmUgb2YgY29ubnRyYWNrIGFuZCBpdHMgaW1wYWN0IG9uIG5ldHdvcmsgcGVyZm9ybWFuY2UgYW5kIHNlY3VyaXR5LCB0aGlzIGZpeCBpcyBkZWZpbml0ZWx5IHdvcnRoIGEgdGhvcm91Z2ggZnV6emluZyBjYW1wYWlnbi4gV2Ugd2FudCB0byBiZSBhYnNvbHV0ZWx5IHN1cmUgdGhpcyBkb2VzbiYjMzk7dCBpbnRyb2R1Y2UgYW55IHJlZ3Jlc3Npb25zIG9yIG5ldyB2dWxuZXJhYmlsaXRpZXMuCgpNeSBpbW1lZGlhdGUgZm9jdXMsIHRoZW4sIHdpbGwgYmUgb24gdGhlIGBuZl9jdF9icmlkZ2VfcHJlYCBmdW5jdGlvbiBpdHNlbGYuIEkmIzM5O2xsIG5lZWQgdG8gZ28gZGlyZWN0bHkgdG8gdGhlIHNvdXJjZSBjb2RlLCB3aGljaCBpcyBsb2NhdGVkIGluIGBuZXQvYnJpZGdlL25ldGZpbHRlci9uZl9jb25udHJhY2tfYnJpZGdlLmNgLCB0byBmdWxseSB1bmRlcnN0YW5kIGl0cyBsb2dpYyBhbmQgaG93IHRoaXMgbmV3IGBuZl9yZXNldF9jdCgpYCBjYWxsIGZpdHMgaW50byB0aGUgZXhpc3RpbmcgZmxvdy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDEgMTQ6MTc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bmZfY3RfYnJpZGdlX3ByZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9icmlkZ2UvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19icmlkZ2UuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvYnJpZGdlL25ldGZpbHRlci9uZl9jb25udHJhY2tfYnJpZGdlLmM9MjIyPXN0YXRpYyBpbnQgbmZfY3RfYnJfaXB2Nl9jaGVjayhjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuLS1cbm5ldC9icmlkZ2UvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19icmlkZ2UuYy0yMzgtXG5uZXQvYnJpZGdlL25ldGZpbHRlci9uZl9jb25udHJhY2tfYnJpZGdlLmM6MjM5OnN0YXRpYyB1bnNpZ25lZCBpbnQgbmZfY3RfYnJpZGdlX3ByZSh2b2lkICpwcml2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxubmV0L2JyaWRnZS9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2JyaWRnZS5jLTI0MC1cdFx0XHRcdCAgICAgY29uc3Qgc3RydWN0IG5mX2hvb2tfc3RhdGUgKnN0YXRlKVxuLS1cbm5ldC9icmlkZ2UvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19icmlkZ2UuYz00MTE9c3RhdGljIHN0cnVjdCBuZl9ob29rX29wcyBuZl9jdF9icmlkZ2VfaG9va19vcHNbXSBfX3JlYWRfbW9zdGx5ID0ge1xubmV0L2JyaWRnZS9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2JyaWRnZS5jLTQxMi1cdHtcbm5ldC9icmlkZ2UvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19icmlkZ2UuYzo0MTM6XHRcdC5ob29rXHRcdD0gbmZfY3RfYnJpZGdlX3ByZSxcbm5ldC9icmlkZ2UvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19icmlkZ2UuYy00MTQtXHRcdC5wZlx0XHQ9IE5GUFJPVE9fQlJJREdFLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMSAxNDoxNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2OTc3CgkJCQkJCQlvdXRwdXQ6IDQzCgkJCQkJCQl0aG91Z2h0czogMTI2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgTmV0ZmlsdGVyIENvbm5lY3Rpb24gVHJhY2tpbmcgQnJpZGdlIEhvb2sqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IGBuZl9jdF9icmlkZ2VfcHJlYC4gSXQmIzM5O3MgYSBzdGF0aWMgZnVuY3Rpb24sIHdoaWNoIGltbWVkaWF0ZWx5IG1ha2VzIG1lIHRoaW5rIGFib3V0IGl0cyB2aXNpYmlsaXR5IGFuZCB3aGV0aGVyIEkgY2FuIGRpcmVjdGx5IGFjY2VzcyBpdCBmcm9tIG91dHNpZGUgdGhlIG1vZHVsZS4gQnV0IGhvbGQgb24sIGl0JiMzOTtzIHVzZWQgYXMgYSAqaG9vayosIGFuIGVudHJ5IHBvaW50IGludG8gdGhlIG5ldGZpbHRlciBmbG93LiBTbywgZXZlbiB0aG91Z2ggaXQmIzM5O3Mgc3RhdGljLCBpdCYjMzk7cyBzdGlsbCByZWFjaGFibGUgYmVjYXVzZSBvZiBob3cgaXQmIzM5O3MgaW50ZWdyYXRlZCBpbnRvIHRoZSBzeXN0ZW0uIEl0JiMzOTtzIG5vdCAqZXhwb3J0ZWQqIGluIHRoZSB0cmFkaXRpb25hbCBzZW5zZSwgYnV0IGl0ICppcyogYW4gZW50cnkgcG9pbnQuCgpJJiMzOTttIHRyeWluZyB0byBzZWUgaWYgSSYjMzk7bSBtaXNzaW5nIHNvbWV0aGluZywgd29uZGVyaW5nIGlmIHRoZXJlIGFyZSBvdGhlciBmdW5jdGlvbnMgaW52b2x2ZWQgaGVyZS4gQnV0LCBubywgYG5mX2N0X2JyaWRnZV9wcmVgIHNlZW1zIHRvIGJlIHRoZSBjcnVjaWFsIHBpZWNlIG9mIHRoZSBwdXp6bGUuCgpSaWdodCwgbGV0IG1lIGRvdWJsZS1jaGVjayB0aGF0IGl0IGlzIHN0YXRpYy4gWWVzLCBhYnNvbHV0ZWx5IHN0YXRpYy4gQnV0IGl0IGlzIGNhbGxlZCB0aHJvdWdoIGEgZnVuY3Rpb24gcG9pbnRlciwgd2hpY2ggbWVhbnMgaXRzIHN0YXRpYyBuYXR1cmUgaXMgbm90IHJlYWxseSByZWxldmFudCBpbiBob3cgdGhlIHN5c3RlbSBjYW4gcmVhY2ggaXQuIEkgc3RpbGwgaGF2ZSB0byBjb25zaWRlciB3aGF0IG90aGVyIGZ1bmN0aW9ucyBtYXkgYmUgcmVsZXZhbnQgdG8gdGhlIGNvbm5lY3Rpb24gdHJhY2tpbmcgcHJvY2Vzcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDEgMTQ6MTc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bmZfY3RfYnJpZGdlX3ByZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9icmlkZ2UvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19icmlkZ2UuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvYnJpZGdlL25ldGZpbHRlci9uZl9jb25udHJhY2tfYnJpZGdlLmM9MjIyPXN0YXRpYyBpbnQgbmZfY3RfYnJfaXB2Nl9jaGVjayhjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuLS1cbm5ldC9icmlkZ2UvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19icmlkZ2UuYy0yMzgtXG5uZXQvYnJpZGdlL25ldGZpbHRlci9uZl9jb25udHJhY2tfYnJpZGdlLmM6MjM5OnN0YXRpYyB1bnNpZ25lZCBpbnQgbmZfY3RfYnJpZGdlX3ByZSh2b2lkICpwcml2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxubmV0L2JyaWRnZS9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2JyaWRnZS5jLTI0MC1cdFx0XHRcdCAgICAgY29uc3Qgc3RydWN0IG5mX2hvb2tfc3RhdGUgKnN0YXRlKVxuLS1cbm5ldC9icmlkZ2UvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19icmlkZ2UuYz00MTE9c3RhdGljIHN0cnVjdCBuZl9ob29rX29wcyBuZl9jdF9icmlkZ2VfaG9va19vcHNbXSBfX3JlYWRfbW9zdGx5ID0ge1xubmV0L2JyaWRnZS9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2JyaWRnZS5jLTQxMi1cdHtcbm5ldC9icmlkZ2UvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19icmlkZ2UuYzo0MTM6XHRcdC5ob29rXHRcdD0gbmZfY3RfYnJpZGdlX3ByZSxcbm5ldC9icmlkZ2UvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19icmlkZ2UuYy00MTQtXHRcdC5wZlx0XHQ9IE5GUFJPVE9fQlJJREdFLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMSAxNDoxNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3Njc0CgkJCQkJCQlvdXRwdXQ6IDU5CgkJCQkJCQl0aG91Z2h0czogNDMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGFuIGV4cGVydCYjMzk7cyBpbnRlcm5hbCBtb25vbG9ndWU6CgoqKkludmVzdGlnYXRpbmcgdGhlIENvbm50cmFjayBCcmlkZ2UgSG9vayoqCgpSaWdodCwgaXQmIzM5O3MgcHJldHR5IGNsZWFyIHRoYXQgdGhlIGhvb2sgcmVnaXN0cmF0aW9uIGZvciB0aGUgY29ubmVjdGlvbiB0cmFja2luZyBicmlkZ2UgaXMgZG9uZSBzdGF0aWNhbGx5LCB3aXRoaW4gYG5mX2N0X2JyaWRnZV9yZWdpc3RlcmAuIE15IGluaXRpYWwgaW5zdGluY3QgaXMgY29uZmlybWVkLiBOb3csIHRvIGdldCBhIGhhbmRsZSBvbiB0aGUgb3ZlcmFsbCBzdHJ1Y3R1cmUgYW5kIGxvb2sgZm9yIGFueSBkeW5hbWljIGFzcGVjdHMsIEkmIzM5O20gZ29pbmcgdG8gcXVpY2tseSBzY2FuIGBuZl9jb25udHJhY2tfYnJpZGdlLmNgLiBTcGVjaWZpY2FsbHksIEkgbmVlZCB0byBzZWUgaWYgdGhlcmUgYXJlICphbnkqIG5vbi1zdGF0aWMgZnVuY3Rpb25zIHdpdGhpbiB0aGF0IGZpbGUuIFRoYXQmIzM5O3Mgd2hlcmUgYW55IHBvdGVudGlhbCBmbGV4aWJpbGl0eSBvciBtb3JlIGludGVyZXN0aW5nIGJlaGF2aW9yIG1pZ2h0IGJlIGhpZGluZy4gTGV0JiMzOTtzIHNlZSB3aGF0IHdlJiMzOTt2ZSBnb3QuIEtub3dpbmcgd2hldGhlciB0aGUga2V5IGZ1bmN0aW9ucyBhcmUgc3RhdGljIG9yIG5vbi1zdGF0aWMgd291bGQgaW1tZWRpYXRlbHkgZ2l2ZSBtZSBhIGdvb2Qgc2Vuc2Ugb2YgdGhlIGxldmVsIG9mIGNvbnRyb2wgYW5kIG1vZGlmaWFiaWxpdHkgYXZhaWxhYmxlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMSAxNDoxNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O15bYS16QS1aMC05X10mIzQzOyBbYS16QS1aMC05X10mIzQzO1xcKCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9icmlkZ2UvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19icmlkZ2UuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAxIDE0OjE3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDc5NjgKCQkJCQkJCW91dHB1dDogNDQKCQkJCQkJCXRob3VnaHRzOiAyMjUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBOZXRmaWx0ZXIgQ29ubnRyYWNrIEJyaWRnZSBDb25maWd1cmF0aW9uKioKCk9rYXksIHNvIGluaXRpYWxseSBJIHdhcyB0aGlua2luZyB3ZSBjb3VsZCBqdXN0IHVzZSBgbmZfY3RfYnJpZGdlX3ByZWAuIFNpbXBsZSBlbm91Z2guIEJ1dCBob2xkIG9uLCB0aGUgaW5zdHJ1Y3Rpb25zIGFyZSBjbGVhcjogcHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50cy4gVGhlIHJhdGlvbmFsZSBpcyB0aGUgY29tcGlsZXIgb3B0aW1pemF0aW9uIHdpdGggaW5saW5pbmcgb2YgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMuIEkgbmVlZCBhIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzIGZvciB3aGF0ZXZlciB0aGUgY29ycmVjdCBlbnRyeSBwb2ludCBpcy4KCk5vdywgYG5mX2N0X2JyaWRnZV9wcmVgICppcyogc3RhdGljLCBidXQgaXQmIzM5O3MgYXNzaWduZWQgdG8gYSBmdW5jdGlvbiBwb2ludGVyIHZpYSBgLmhvb2sgPSBuZl9jdF9icmlkZ2VfcHJlYC4gVGhhdCYjMzk7cyBpbXBvcnRhbnQhIEJlY2F1c2UgaXTigJlzIGFzc2lnbmVkIHRvIHRoZSBmdW5jdGlvbiBwb2ludGVyLCB0aGUgY29tcGlsZXIgKmNhbiYjMzk7dCogaW5saW5lIGl0LCBhbmQgaXQgKndpbGwqIGhhdmUgYSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzcy4gVGhhdCBtZWFucyBpdCBsaWtlbHkgZml0cyB0aGUgY3JpdGVyaWEuCgpCZWZvcmUgY29tbWl0dGluZywgdGhvdWdoLCBJIG5lZWQgdG8gY2hlY2sgZm9yIGRlcGVuZGVuY2llcy4gSSByZWNhbGwgdGhlIGRlcGVuZGVuY3kgcmVsYXRpb25zaGlwcyBpbiB0aGlzIHBhcnQgb2YgdGhlIGtlcm5lbDogYE5GX0NPTk5UUkFDS19CUklER0VgIGRlcGVuZHMgb24gYE5GX0NPTk5UUkFDS2A7IGBORl9DT05OVFJBQ0tgIGRlcGVuZHMgb24gYE5FVEZJTFRFUmA7IGFuZCBgQlJJREdFYCBkZXBlbmRzIG9uIGBORVRgIGFuZCBgSU5FVGAuIFNvIHRoZSBhY3R1YWwgY29uZmlncyB3ZSYjMzk7cmUgZGVhbGluZyB3aXRoIGhlcmUgYXJlIGBORVRGSUxURVJgLCBgTkZfQ09OTlRSQUNLYCwgYEJSSURHRWAsIGFuZCBgTkZfQ09OTlRSQUNLX0JSSURHRWAuCgpMZXTigJlzIHF1aWNrbHkgcmV2aWV3IGBuZl9jdF9icmlkZ2VfcHJlYCBpbiBgbmV0L2JyaWRnZS9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2JyaWRnZS5jYCBqdXN0IHRvIGJlIGNlcnRhaW4gdGhlcmUgaXNuJiMzOTt0IHNvbWUgb2J2aW91cyBpc3N1ZSBJJiMzOTttIG92ZXJsb29raW5nLiBKdXN0IGEgcXVpY2sgZ2xhbmNlIG92ZXIgdGhlIGNvZGUsIGNvbmZpcm0gbXkgYXNzdW1wdGlvbnMgYW5kIG1ha2Ugc3VyZSB0aGVyZSBhcmUgbm8gb2J2aW91cyBwcm9ibGVtcyBiZWZvcmUgbW92aW5nIGZvcndhcmQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAxIDE0OjE3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7bmV0L2JyaWRnZS9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2JyaWRnZS5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMjM5LAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDUwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAyMzk6XHRzdGF0aWMgdW5zaWduZWQgaW50IG5mX2N0X2JyaWRnZV9wcmUodm9pZCAqcHJpdiwgc3RydWN0IHNrX2J1ZmYgKnNrYixcbiAyNDA6XHRcdFx0XHRcdCAgICAgY29uc3Qgc3RydWN0IG5mX2hvb2tfc3RhdGUgKnN0YXRlKVxuIDI0MTpcdHtcbiAyNDI6XHRcdHN0cnVjdCBuZl9ob29rX3N0YXRlIGJyaWRnZV9zdGF0ZSA9ICpzdGF0ZTtcbiAyNDM6XHRcdGVudW0gaXBfY29ubnRyYWNrX2luZm8gY3RpbmZvO1xuIDI0NDpcdFx0c3RydWN0IG5mX2Nvbm4gKmN0O1xuIDI0NTpcdFx0dTMyIGxlbjtcbiAyNDY6XHRcdGludCByZXQ7XG4gMjQ3Olx0XG4gMjQ4Olx0XHRjdCA9IG5mX2N0X2dldChza2IsIFx1MDAyNmN0aW5mbyk7XG4gMjQ5Olx0XHRpZiAoKGN0IFx1MDAyNlx1MDAyNiAhbmZfY3RfaXNfdGVtcGxhdGUoY3QpKSB8fFxuIDI1MDpcdFx0ICAgIGN0aW5mbyA9PSBJUF9DVF9VTlRSQUNLRUQpXG4gMjUxOlx0XHRcdHJldHVybiBORl9BQ0NFUFQ7XG4gMjUyOlx0XG4gMjUzOlx0XHRzd2l0Y2ggKHNrYi1cdTAwM2Vwcm90b2NvbCkge1xuIDI1NDpcdFx0Y2FzZSBodG9ucyhFVEhfUF9JUCk6XG4gMjU1Olx0XHRcdGlmICghcHNrYl9tYXlfcHVsbChza2IsIHNpemVvZihzdHJ1Y3QgaXBoZHIpKSlcbiAyNTY6XHRcdFx0XHRyZXR1cm4gTkZfQUNDRVBUO1xuIDI1NzpcdFxuIDI1ODpcdFx0XHRsZW4gPSBza2JfaXBfdG90bGVuKHNrYik7XG4gMjU5Olx0XHRcdGlmIChwc2tiX3RyaW1fcmNzdW0oc2tiLCBsZW4pKVxuIDI2MDpcdFx0XHRcdHJldHVybiBORl9BQ0NFUFQ7XG4gMjYxOlx0XG4gMjYyOlx0XHRcdGlmIChuZl9jdF9icl9pcF9jaGVjayhza2IpKVxuIDI2MzpcdFx0XHRcdHJldHVybiBORl9BQ0NFUFQ7XG4gMjY0Olx0XG4gMjY1Olx0XHRcdGJyaWRnZV9zdGF0ZS5wZiA9IE5GUFJPVE9fSVBWNDtcbiAyNjY6XHRcdFx0cmV0ID0gbmZfY3RfYnJfZGVmcmFnNChza2IsIFx1MDAyNmJyaWRnZV9zdGF0ZSk7XG4gMjY3Olx0XHRcdGJyZWFrO1xuIDI2ODpcdFx0Y2FzZSBodG9ucyhFVEhfUF9JUFY2KTpcbiAyNjk6XHRcdFx0aWYgKCFwc2tiX21heV9wdWxsKHNrYiwgc2l6ZW9mKHN0cnVjdCBpcHY2aGRyKSkpXG4gMjcwOlx0XHRcdFx0cmV0dXJuIE5GX0FDQ0VQVDtcbiAyNzE6XHRcbiAyNzI6XHRcdFx0bGVuID0gc2l6ZW9mKHN0cnVjdCBpcHY2aGRyKSAmIzQzOyBza2JfaXB2Nl9wYXlsb2FkX2xlbihza2IpO1xuIDI3MzpcdFx0XHRpZiAocHNrYl90cmltX3Jjc3VtKHNrYiwgbGVuKSlcbiAyNzQ6XHRcdFx0XHRyZXR1cm4gTkZfQUNDRVBUO1xuIDI3NTpcdFxuIDI3NjpcdFx0XHRpZiAobmZfY3RfYnJfaXB2Nl9jaGVjayhza2IpKVxuIDI3NzpcdFx0XHRcdHJldHVybiBORl9BQ0NFUFQ7XG4gMjc4Olx0XG4gMjc5Olx0XHRcdGJyaWRnZV9zdGF0ZS5wZiA9IE5GUFJPVE9fSVBWNjtcbiAyODA6XHRcdFx0cmV0ID0gbmZfY3RfYnJfZGVmcmFnNihza2IsIFx1MDAyNmJyaWRnZV9zdGF0ZSk7XG4gMjgxOlx0XHRcdGJyZWFrO1xuIDI4MjpcdFx0ZGVmYXVsdDpcbiAyODM6XHRcdFx0bmZfcmVzZXRfY3Qoc2tiKTtcbiAyODQ6XHRcdFx0bmZfY3Rfc2V0KHNrYiwgTlVMTCwgSVBfQ1RfVU5UUkFDS0VEKTtcbiAyODU6XHRcdFx0cmV0dXJuIE5GX0FDQ0VQVDtcbiAyODY6XHRcdH1cbiAyODc6XHRcbiAyODg6XHRcdGlmIChyZXQgIT0gTkZfQUNDRVBUKVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMSAxNDoxNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA5MzY1CgkJCQkJCQlvdXRwdXQ6IDEyMgoJCQkJCQkJdGhvdWdodHM6IDg1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBteSBvd246CgoqKkFuYWx5emluZyBhIE5ldGZpbHRlciBDb25uZWN0aW9uIFRyYWNraW5nIFBhdGNoKioKCkFscmlnaHQsIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGZvciBgbmZfY3RfYnJpZGdlX3ByZWAuIEl0JiMzOTtzIHN0cmFpZ2h0Zm9yd2FyZCwgcmVhbGx5LiBUaGUgY29yZSBvZiBpdCBzZWVtcyB0byBiZSBhZGRpbmcgYG5mX3Jlc2V0X2N0KHNrYik7YCB3aXRoaW4gdGhlIGBkZWZhdWx0YCBjYXNlIG9mIHRoZSBgbmZfY3RfYnJpZGdlX3ByZWAgZnVuY3Rpb24uIEZ1bmN0aW9uYWxseSwgdGhpcyBpcyB0aGUgY3J1eCBvZiB0aGUgY2hhbmdlLiBJdCYjMzk7cyBhIGtleSBkZXRhaWwgdG8gdW5kZXJzdGFuZC4KCkZyb20gYSBjb25maWd1cmF0aW9uIHBlcnNwZWN0aXZlLCBJJiMzOTttIG5vdGluZyB0aGUgcmVsZXZhbnQgZGVwZW5kZW5jaWVzOiBgTkZfQ09OTlRSQUNLX0JSSURHRWAsIGBORl9DT05OVFJBQ0tgLCBgQlJJREdFYCwgYW5kLCBvZiBjb3Vyc2UsIHRoZSBnZW5lcmFsIGBORVRGSUxURVJgIGNvbmZpZ3VyYXRpb24gb3B0aW9uLiBUaGVzZSBhcmUgdGhlIGJ1aWxkaW5nIGJsb2NrcyB0aGF0IGRldGVybWluZSB3aGVuIHRoaXMgY29kZSBpcyBldmVuIGNvbXBpbGVkIGludG8gdGhlIGtlcm5lbC4KClRoZSBzaWduaWZpY2FudCBzeW1ib2wgaGVyZSwgYW5kIHRoZSBmb2N1cyBvZiBteSBleGFtaW5hdGlvbiwgaXMgY2xlYXJseSBgbmZfY3RfYnJpZGdlX3ByZWAuCgpJJiMzOTtsbCBiZSBzdXJlIHRvIHN0YXJ0IGdhdGhlcmluZyBteSBhc3Nlc3NtZW50IG9mIHRoZSByZXN1bHRzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMSAxNDoxNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7TkZfQ09OTlRSQUNLX0JSSURHRSYjMzQ7LAogICAgJiMzNDtORl9DT05OVFJBQ0smIzM0OywKICAgICYjMzQ7QlJJREdFJiMzNDssCiAgICAmIzM0O05FVEZJTFRFUiYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O25mX2N0X2JyaWRnZV9wcmUmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBhIGNhbGwgdG8gbmZfcmVzZXRfY3Qoc2tiKSBpbiB0aGUgZGVmYXVsdCBjYXNlIG9mIHRoZSBuZl9jdF9icmlkZ2VfcHJlIG5ldGZpbHRlciBob29rLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdGhhdCBhZmZlY3RzIGJyaWRnZSBjb25uZWN0aW9uIHRyYWNraW5nIGZvciBub24tSVB2NC9JUHY2IHBhY2tldHMsIG1ha2luZyBpdCB3b3J0aCBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtORl9DT05OVFJBQ0tfQlJJREdFJiMzNDssCiAgICAmIzM0O05GX0NPTk5UUkFDSyYjMzQ7LAogICAgJiMzNDtCUklER0UmIzM0OywKICAgICYjMzQ7TkVURklMVEVSJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7bmZfY3RfYnJpZGdlX3ByZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIGEgY2FsbCB0byBuZl9yZXNldF9jdChza2IpIGluIHRoZSBkZWZhdWx0IGNhc2Ugb2YgdGhlIG5mX2N0X2JyaWRnZV9wcmUgbmV0ZmlsdGVyIGhvb2suIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0aGF0IGFmZmVjdHMgYnJpZGdlIGNvbm5lY3Rpb24gdHJhY2tpbmcgZm9yIG5vbi1JUHY0L0lQdjYgcGFja2V0cywgbWFraW5nIGl0IHdvcnRoIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOC0wMVQxNDoxNjo1NS43NzIwMjI2MDZaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0MjA2MjA3MzQ5NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJORl9DT05OVFJBQ0tfQlJJREdFXCIsXG4gICAgXCJORl9DT05OVFJBQ0tcIixcbiAgICBcIkJSSURHRVwiLFxuICAgIFwiTkVURklMVEVSXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwibmZfY3RfYnJpZGdlX3ByZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgYSBjYWxsIHRvIG5mX3Jlc2V0X2N0KHNrYikgaW4gdGhlIGRlZmF1bHQgY2FzZSBvZiB0aGUgbmZfY3RfYnJpZGdlX3ByZSBuZXRmaWx0ZXIgaG9vay4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRoYXQgYWZmZWN0cyBicmlkZ2UgY29ubmVjdGlvbiB0cmFja2luZyBmb3Igbm9uLUlQdjQvSVB2NiBwYWNrZXRzLCBtYWtpbmcgaXQgd29ydGggZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDFUMTQ6MTY6NTUuNzcyMDQwMzQ2WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NTMwMjk0NzMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCA5NjMwNjg1MjNlNzkxODRkZThjMWYzOWU1MjI2NjljZjMwMjRmNWMxXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBTYXQgQXVnIDEgMTQ6MTY6NTQgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvbmV0L2JyaWRnZS9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2JyaWRnZS5jIGIvbmV0L2JyaWRnZS9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2JyaWRnZS5jXFxuaW5kZXggNThhMzNkMDM4MGIwMC4uN2VjYjhhMjZiZmEzYSAxMDA2NDRcXG4tLS0gYS9uZXQvYnJpZGdlL25ldGZpbHRlci9uZl9jb25udHJhY2tfYnJpZGdlLmNcXG4rKysgYi9uZXQvYnJpZGdlL25ldGZpbHRlci9uZl9jb25udHJhY2tfYnJpZGdlLmNcXG5AQCAtMjgwLDYgKzI4MCw3IEBAIHN0YXRpYyB1bnNpZ25lZCBpbnQgbmZfY3RfYnJpZGdlX3ByZSh2b2lkICpwcml2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbiBcXHRcXHRyZXQgPSBuZl9jdF9icl9kZWZyYWc2KHNrYiwgXFx1MDAyNmJyaWRnZV9zdGF0ZSk7XFxuIFxcdFxcdGJyZWFrO1xcbiBcXHRkZWZhdWx0OlxcbitcXHRcXHRuZl9yZXNldF9jdChza2IpO1xcbiBcXHRcXHRuZl9jdF9zZXQoc2tiLCBOVUxMLCBJUF9DVF9VTlRSQUNLRUQpO1xcbiBcXHRcXHRyZXR1cm4gTkZfQUNDRVBUO1xcbiBcXHR9XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDE0OjE2OjU2LjIyNTYyNDY2OVoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjQxNjA4NDYyODQzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk5GX0NPTk5UUkFDS19CUklER0VcIixcbiAgICBcIk5GX0NPTk5UUkFDS1wiLFxuICAgIFwiQlJJREdFXCIsXG4gICAgXCJORVRGSUxURVJcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJuZl9jdF9icmlkZ2VfcHJlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBhIGNhbGwgdG8gbmZfcmVzZXRfY3Qoc2tiKSBpbiB0aGUgZGVmYXVsdCBjYXNlIG9mIHRoZSBuZl9jdF9icmlkZ2VfcHJlIG5ldGZpbHRlciBob29rLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdGhhdCBhZmZlY3RzIGJyaWRnZSBjb25uZWN0aW9uIHRyYWNraW5nIGZvciBub24tSVB2NC9JUHY2IHBhY2tldHMsIG1ha2luZyBpdCB3b3J0aCBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG4gIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cbi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKVxuICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uc1xuICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIEFsc28gY2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzXG4gICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3NcbiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCA5NjMwNjg1MjNlNzkxODRkZThjMWYzOWU1MjI2NjljZjMwMjRmNWMxXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFNhdCBBdWcgMSAxNDoxNjo1NCAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL25ldC9icmlkZ2UvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19icmlkZ2UuYyBiL25ldC9icmlkZ2UvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19icmlkZ2UuY1xuaW5kZXggNThhMzNkMDM4MGIwMC4uN2VjYjhhMjZiZmEzYSAxMDA2NDRcbi0tLSBhL25ldC9icmlkZ2UvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19icmlkZ2UuY1xuKysrIGIvbmV0L2JyaWRnZS9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2JyaWRnZS5jXG5AQCAtMjgwLDYgKzI4MCw3IEBAIHN0YXRpYyB1bnNpZ25lZCBpbnQgbmZfY3RfYnJpZGdlX3ByZSh2b2lkICpwcml2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuIFx0XHRyZXQgPSBuZl9jdF9icl9kZWZyYWc2KHNrYiwgXHUwMDI2YnJpZGdlX3N0YXRlKTtcbiBcdFx0YnJlYWs7XG4gXHRkZWZhdWx0OlxuK1x0XHRuZl9yZXNldF9jdChza2IpO1xuIFx0XHRuZl9jdF9zZXQoc2tiLCBOVUxMLCBJUF9DVF9VTlRSQUNLRUQpO1xuIFx0XHRyZXR1cm4gTkZfQUNDRVBUO1xuIFx0fVxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDFUMTQ6MTY6NTYuMjI1NjI1NzA5WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mzc3MDQyMzEzMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBOZXR3b3JrIEJyaWRnZSBDb25udHJhY2sgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCBhIHBhdGNoIHRoYXQncyB0b3VjaGluZyBgbmV0L2JyaWRnZS9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2JyaWRnZS5jYC4gU3BlY2lmaWNhbGx5LCBpdCBzZWVtcyB0byBiZSBhZGRpbmcgYSBgbmZfcmVzZXRfY3Qoc2tiKTtgIGNhbGwgKmJlZm9yZSogdGhlIGV4aXN0aW5nIGBuZl9jdF9zZXQoc2tiLCBOVUxMLCBJUF9DVF9VTlRSQUNLRUQpO2AgaW4gdGhlIGBkZWZhdWx0YCBjYXNlIG9mIHRoZSBgbmZfY3RfYnJpZGdlX3ByZWAgZnVuY3Rpb24uIE15IGluaXRpYWwgdGhvdWdodCBpcywgd2h5IGlzIHRoaXMgYmVpbmcgaW50cm9kdWNlZD8gV2hhdCdzIHRoZSBzcGVjaWZpYyBzY2VuYXJpbyB0aGlzIGlzIGFkZHJlc3Npbmc/IGBuZl9yZXNldF9jdCgpYCB0eXBpY2FsbHkgbWVhbnMgdG8gY2xlYXIgdGhlIGNvbm50cmFjayBlbnRyeSBhc3NvY2lhdGVkIHdpdGggdGhlIHBhY2tldC4gVGhlIGBuZl9jdF9zZXRgIHBhcnQsIHdpdGggYElQX0NUX1VOVFJBQ0tFRGAsIGlzIGluc3RydWN0aW5nIHRoZSBzeXN0ZW0gdG8gKm5vdCogdHJhY2sgdGhpcyBwYWNrZXQgYW55bW9yZS4gU28sIGVzc2VudGlhbGx5LCBpdCdzIHRlbGxpbmcgdXMgdG8gcmVzZXQgYW5kIHVudHJhY2suIFRoaXMgbGlrZWx5IGltcGxpZXMgdGhlcmUncyBzb21lIGlzc3VlLCBzb21lIHVuZGVzaXJhYmxlIHN0YXRlLCB0aGF0IG5lZWRzIHRvIGJlIGNsZWFuZWQgdXAgb3IgYXZvaWRlZC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIHB1cnBvc2Ugb2YgdGhpcyBzZXF1ZW5jaW5nIGFuZCB0aGUgY29udGV4dCBvZiB3aGF0J3MgaGFwcGVuaW5nIGluIGBuZl9jdF9icmlkZ2VfcHJlYC4gSSdsbCBkZWx2ZSBkZWVwZXIgaW50byB0aGF0IGZ1bmN0aW9uIG5vdyB0byB1bmRlcnN0YW5kIHRoZSB3aG9sZSBwaWN0dXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMDc5LCJPdXRwdXRUb2tlbnMiOjQzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6OTEsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMVQxNDoxNjo1OS45OTYwNTIxODFaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTc1NTM2NTksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibmZfY3RfYnJpZGdlX3ByZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvYnJpZGdlL25ldGZpbHRlci9uZl9jb25udHJhY2tfYnJpZGdlLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L2JyaWRnZS9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2JyaWRnZS5jPTIyMj1zdGF0aWMgaW50IG5mX2N0X2JyX2lwdjZfY2hlY2soY29uc3Qgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG4tLVxcbm5ldC9icmlkZ2UvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19icmlkZ2UuYy0yMzgtXFxubmV0L2JyaWRnZS9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2JyaWRnZS5jOjIzOTpzdGF0aWMgdW5zaWduZWQgaW50IG5mX2N0X2JyaWRnZV9wcmUodm9pZCAqcHJpdiwgc3RydWN0IHNrX2J1ZmYgKnNrYixcXG5uZXQvYnJpZGdlL25ldGZpbHRlci9uZl9jb25udHJhY2tfYnJpZGdlLmMtMjQwLVxcdFxcdFxcdFxcdCAgICAgY29uc3Qgc3RydWN0IG5mX2hvb2tfc3RhdGUgKnN0YXRlKVxcbi0tXFxubmV0L2JyaWRnZS9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2JyaWRnZS5jPTQxMT1zdGF0aWMgc3RydWN0IG5mX2hvb2tfb3BzIG5mX2N0X2JyaWRnZV9ob29rX29wc1tdIF9fcmVhZF9tb3N0bHkgPSB7XFxubmV0L2JyaWRnZS9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2JyaWRnZS5jLTQxMi1cXHR7XFxubmV0L2JyaWRnZS9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2JyaWRnZS5jOjQxMzpcXHRcXHQuaG9va1xcdFxcdD0gbmZfY3RfYnJpZGdlX3ByZSxcXG5uZXQvYnJpZGdlL25ldGZpbHRlci9uZl9jb25udHJhY2tfYnJpZGdlLmMtNDE0LVxcdFxcdC5wZlxcdFxcdD0gTkZQUk9UT19CUklER0UsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDE0OjE3OjAwLjA1MzYwOTk2WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mjc4MTU3NTA2OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGFuYWx5c2lzIG9mIHRoZSBzaXR1YXRpb246XG5cbioqSW52ZXN0aWdhdGluZyB0aGUgQWN0aXZhdGlvbiBQYXRoIG9mIGBuZl9jdF9icmlkZ2VfcHJlYCoqXG5cbk9rYXksIHNvIGBuZl9jdF9icmlkZ2VfcHJlYC4uLiB0aGF0J3MgYSBOZXRmaWx0ZXIgaG9vayBzcGVjaWZpY2FsbHkgZGVzaWduZWQgZm9yIGJyaWRnZSB0cmFmZmljLCByaWdodD8gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIGZpZ3VyZSBvdXQgd2hhdCBjb25maWd1cmF0aW9uIG9wdGlvbnMsIGtlcm5lbCBtb2R1bGVzLCBvciBhbnkgb3RoZXIgZW5hYmxpbmcgZmFjdG9ycyBhcmUgcmVzcG9uc2libGUgZm9yIGFjdHVhbGx5IG1ha2luZyB0aGlzIGNvZGUgYWN0aXZlLiBJIG5lZWQgdG8gdHJhY2UgYmFjayB0aGUgYWN0aXZhdGlvbiBwYXRoLiBJJ20gdGhpbmtpbmcgSSdsbCBuZWVkIHRvIGV4cGxvcmUgdGhlIGtlcm5lbCBjb25maWd1cmF0aW9uLCBsaWtlbHkgbG9va2luZyBmb3IgcmVsZXZhbnQgS2NvbmZpZyBzeW1ib2xzLiBUaW1lIHRvIGRpZyBpbiFcblxuXG4iLCJJbnB1dFRva2VucyI6Mjc3MywiT3V0cHV0VG9rZW5zIjozNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDE0OjE3OjAyLjgzNTE4NzcyOFoiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4NzUxODI5OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJuZl9jb25udHJhY2tfYnJpZGdlLm9cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L2JyaWRnZS9uZXRmaWx0ZXIvTWFrZWZpbGVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L2JyaWRnZS9uZXRmaWx0ZXIvTWFrZWZpbGU9Nz1vYmotJChDT05GSUdfTkZUX0JSSURHRV9SRUpFQ1QpICArPSBuZnRfcmVqZWN0X2JyaWRnZS5vXFxuLS1cXG5uZXQvYnJpZGdlL25ldGZpbHRlci9NYWtlZmlsZS05LSMgY29ubmVjdGlvbiB0cmFja2luZ1xcbm5ldC9icmlkZ2UvbmV0ZmlsdGVyL01ha2VmaWxlOjEwOm9iai0kKENPTkZJR19ORl9DT05OVFJBQ0tfQlJJREdFKSArPSBuZl9jb25udHJhY2tfYnJpZGdlLm9cXG5uZXQvYnJpZGdlL25ldGZpbHRlci9NYWtlZmlsZS0xMS1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDFUMTQ6MTc6MDIuOTIyNzEyOTA2WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mjg2NDcxMTA5NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqQW5hbHl6aW5nIHRoZSBOZXRmaWx0ZXIgQ29ubmVjdGlvbiBUcmFja2luZyBDb25maWd1cmF0aW9uKipcblxuT2theSwgc28gd2UncmUgbG9va2luZyBhdCBgQ09ORklHX05GX0NPTk5UUkFDS19CUklER0VgLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgXCJSaWdodCwgY29ubmVjdGlvbiB0cmFja2luZyBmb3IgYnJpZGdlZCBpbnRlcmZhY2VzLlwiIFRoYXQncyBhIGNyaXRpY2FsIGNvbXBvbmVudCBmb3IgcHJvcGVyIGZpcmV3YWxsaW5nIGFuZCBOQVQgZnVuY3Rpb25hbGl0eSBpbiBhIGJyaWRnZWQgbmV0d29yayBzZXR1cC4gTm93LCBiZWZvcmUgSSBkaXZlIGludG8gaW1wbGVtZW50YXRpb24gb3IgdHJvdWJsZXNob290aW5nLCBteSBuZXh0IHN0ZXAgaXMgYWx3YXlzIHRvIHZlcmlmeSBkZXBlbmRlbmNpZXMuIEkgbmVlZCB0byBxdWlja2x5IGFzY2VydGFpbiB0aGUgcHJlcmVxdWlzaXRlcyBmb3IgdGhpcyBjb25maWd1cmF0aW9uIG9wdGlvbi4gQXJlIHRoZXJlIHNwZWNpZmljIGtlcm5lbCBtb2R1bGVzIHRoYXQgbXVzdCBiZSBsb2FkZWQ/IEFyZSB0aGVyZSBvdGhlciBOZXRmaWx0ZXIgb3B0aW9ucyB0aGF0ICptdXN0KiBiZSBlbmFibGVkIG9yIGFyZSBsb2dpY2FsbHkgaW5jb21wYXRpYmxlPyBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgYXJjaGl0ZWN0dXJhbCBpbXBsaWNhdGlvbnMgYmVmb3JlIEkgY2FuIG1vdmUgZm9yd2FyZCB3aXRoIGNvbmZpZGVuY2UuIFNvLCBkZXBlbmRlbmNpZXMg4oCTIGxldCdzIHNlZSB3aGF0IHRoZSBLY29uZmlnIGZpbGVzIGFyZSBzYXlpbmcuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMwNjksIk91dHB1dFRva2VucyI6MzYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wMVQxNDoxNzowNS43ODc0MjY4MzJaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTA3MTQ2NTksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIE5GX0NPTk5UUkFDS19CUklER0VcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L2JyaWRnZS9uZXRmaWx0ZXIvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvYnJpZGdlL25ldGZpbHRlci9LY29uZmlnPTI2PWVuZGlmICMgTkZfVEFCTEVTX0JSSURHRVxcbm5ldC9icmlkZ2UvbmV0ZmlsdGVyL0tjb25maWctMjctXFxubmV0L2JyaWRnZS9uZXRmaWx0ZXIvS2NvbmZpZzoyODpjb25maWcgTkZfQ09OTlRSQUNLX0JSSURHRVxcbm5ldC9icmlkZ2UvbmV0ZmlsdGVyL0tjb25maWctMjktXFx0dHJpc3RhdGUgXFxcIklQdjQvSVBWNiBicmlkZ2UgY29ubmVjdGlvbiB0cmFja2luZyBzdXBwb3J0XFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMVQxNDoxNzowNS44MzgxNDU2ODJaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNjkyNzI4MjA0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipBbmFseXppbmcgdGhlIE5GX0NPTk5UUkFDS19CUklER0UgTW9kdWxlIERlcGVuZGVuY2llcyoqXG5cbkFscmlnaHQsIGxldCdzIGRpdmUgaW4uIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjb21wbGV0ZSBwaWN0dXJlIG9mIGhvdyBgTkZfQ09OTlRSQUNLX0JSSURHRWAgZml0cyBpbnRvIHRoZSBicm9hZGVyIG5ldHdvcmtpbmcgc3RhY2suIE15IGluaXRpYWwgZm9jdXMgaXMgb24gcGlucG9pbnRpbmcgKmFsbCogb2YgaXRzIGRlcGVuZGVuY2llcy4gVGhpcyBpc24ndCBqdXN0IGFib3V0IGxpc3Rpbmcgb3V0IHRoZSBvYnZpb3VzIGtlcm5lbCBtb2R1bGVzIGl0IHJlbGllcyBvbjsgSSdtIGFmdGVyIGEgY29tcHJlaGVuc2l2ZSB1bmRlcnN0YW5kaW5nLCBnb2luZyBiZXlvbmQgdGhlIGRpcmVjdCBgaW5zbW9kYCByZXF1aXJlbWVudHMuIEkgd2FudCB0byBpZGVudGlmeSBhbnkgaW5kaXJlY3QgZGVwZW5kZW5jaWVzLCBsaWtlIHdoYXQgb3RoZXIgbW9kdWxlcyBtaWdodCBjb25maWd1cmUgb3IgaW50ZXJhY3Qgd2l0aCBpdC5cblxuSSdtIHRoaW5raW5nIGFib3V0IHRoZSBpbXBsaWNhdGlvbnMgZm9yIGJyaWRnZSBmaWx0ZXJpbmcgYW5kIGNvbm5lY3Rpb24gdHJhY2tpbmcgd2l0aGluIGEgYnJpZGdlZCBlbnZpcm9ubWVudC4gV2hhdCBhcmUgdGhlIGtleSBlbGVtZW50cyBpbiB0aGUgY29ubmVjdGlvbiB0cmFja2luZyBwcm9jZXNzIHRoYXQgYE5GX0NPTk5UUkFDS19CUklER0VgIGluZmx1ZW5jZXM/IEFyZSB0aGVyZSBhbnkgcG90ZW50aWFsIGNvbmZsaWN0cyBvciBpbnRlcmFjdGlvbnMgd2l0aCBvdGhlciBOZXRmaWx0ZXIgbW9kdWxlcyBvciBzdWJzeXN0ZW1zIHRoYXQgSSBzaG91bGQgYmUgYXdhcmUgb2Y/IEknbSBhbnRpY2lwYXRpbmcgdGhhdCB0aGVzZSBkZXBlbmRlbmNpZXMgd2lsbCByZWFjaCBpbnRvIGFyZWFzIGxpa2UgYnJpZGdlIGZvcndhcmRpbmcsIGNvbm50cmFjayB0YWJsZSBtYW5hZ2VtZW50LCBhbmQgcG9zc2libHkgZXZlbiB0aGUgaGFuZGxpbmcgb2YgbXVsdGljYXN0IHRyYWZmaWMuIEknbGwgbmVlZCB0byBrbm93IHdoZXRoZXIgaXQgaGFzIHNwZWNpYWwgcmVxdWlyZW1lbnRzIGZvciB0aGUgbmV0d29yayBuYW1lc3BhY2UgaXQgcnVucyBpbi5cblxuSSdsbCBiZSBsb29raW5nIG5vdCBqdXN0IGF0IHRoZSBtb2R1bGUgaXRzZWxmLCBidXQgYXQgaXRzIGludGVyYWN0aW9uIHdpdGggcmVsYXRlZCBjb21wb25lbnRzIGxpa2UgdGhlIGJyaWRnZSBOZXRmaWx0ZXIgaG9va3MuIEhvdyBkb2VzIGl0IGdldCBpbnZva2VkLCBhbmQgd2hlcmUgZG9lcyBpdCBmaXQgd2l0aGluIHRoZSBvdmVyYWxsIHBhY2tldCBwcm9jZXNzaW5nIGZsb3c/IEknbSBwYXJ0aWN1bGFybHkgaW50ZXJlc3RlZCBpbiBob3cgY29ubmVjdGlvbiB0cmFja2luZyBzdGF0ZSBpcyBtYWludGFpbmVkIGFuZCBzeW5jaHJvbml6ZWQgd2l0aGluIHRoZSBicmlkZ2UgY29udGV4dC4gRXNzZW50aWFsbHksIEknbSB0cnlpbmcgdG8gbWFwIG91dCBpdHMgcm9sZSBmcm9tIGEgc3lzdGVtIGFyY2hpdGVjdHVyZSBwZXJzcGVjdGl2ZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MzM5MywiT3V0cHV0VG9rZW5zIjozNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDE0OjE3OjA5LjUzMDg3NjMxNVoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2NjAxMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJuZXQvYnJpZGdlL25ldGZpbHRlci9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDI4LFxuICBcIkxpbmVDb3VudFwiOiAxNVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgIDI4OlxcdGNvbmZpZyBORl9DT05OVFJBQ0tfQlJJREdFXFxuICAyOTpcXHRcXHR0cmlzdGF0ZSBcXFwiSVB2NC9JUFY2IGJyaWRnZSBjb25uZWN0aW9uIHRyYWNraW5nIHN1cHBvcnRcXFwiXFxuICAzMDpcXHRcXHRkZXBlbmRzIG9uIE5GX0NPTk5UUkFDS1xcbiAgMzE6XFx0XFx0ZGVmYXVsdCBuXFxuICAzMjpcXHRcXHRoZWxwXFxuICAzMzpcXHRcXHQgIENvbm5lY3Rpb24gdHJhY2tpbmcga2VlcHMgYSByZWNvcmQgb2Ygd2hhdCBwYWNrZXRzIGhhdmUgcGFzc2VkXFxuICAzNDpcXHRcXHQgIHRocm91Z2ggeW91ciBtYWNoaW5lLCBpbiBvcmRlciB0byBmaWd1cmUgb3V0IGhvdyB0aGV5IGFyZSByZWxhdGVkXFxuICAzNTpcXHRcXHQgIGludG8gY29ubmVjdGlvbnMuIFRoaXMgaXMgdXNlZCB0byBlbmhhbmNlIHBhY2tldCBmaWx0ZXJpbmcgdmlhXFxuICAzNjpcXHRcXHQgIHN0YXRlZnVsIHBvbGljaWVzLiBFbmFibGUgdGhpcyBpZiB5b3Ugd2FudCBuYXRpdmUgdHJhY2tpbmcgZnJvbVxcbiAgMzc6XFx0XFx0ICB0aGUgYnJpZGdlLiBUaGlzIHByb3ZpZGVzIGEgcmVwbGFjZW1lbnQgZm9yIHRoZSBgYnJfbmV0ZmlsdGVyJ1xcbiAgMzg6XFx0XFx0ICBpbmZyYXN0cnVjdHVyZS5cXG4gIDM5OlxcdFxcbiAgNDA6XFx0XFx0ICBUbyBjb21waWxlIGl0IGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlLiAgSWYgdW5zdXJlLCBzYXkgTi5cXG4gIDQxOlxcdFxcbiAgNDI6XFx0IyBvbGQgc29ja29wdCBpbnRlcmZhY2UgYW5kIGV2YWwgbG9vcFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMVQxNDoxNzowOS41MzA5NDM4ODVaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mzc4ODc4OTcyMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipGdXp6aW5nIE5GX0NPTk5UUkFDSyBpbiBhIEJyaWRnZWQgRW52aXJvbm1lbnQqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCBpdCBtb2RpZmllcyBgbmZfY3RfYnJpZGdlX3ByZWAuIFRoYXQgaW1tZWRpYXRlbHkgbWFrZXMgbWUgdGhpbmssIFwiWWVwLCB0aGlzIGlzIHNvbWV0aGluZyByaXBlIGZvciBmdXp6aW5nLlwiIE15IGRlcGVuZGVuY2llcyBzaG93IHRoaXMgZGVwZW5kcyBvbiBgTkZfQ09OTlRSQUNLYCwgd2hpY2ggaXMgaW1wb3J0YW50IGNvbnRleHQuIFRoZSBrZXkgc3ltYm9sIHRvIGZvY3VzIG9uIGhlcmUgaXMsIG9mIGNvdXJzZSwgYG5mX2N0X2JyaWRnZV9wcmVgLlxuXG5Ob3csIEkgbmVlZCB0byBtYWtlIHN1cmUgSSBoYXZlIHRoZSByaWdodCBrZXJuZWwgY29uZmlncyBlbmFibGVkLiBMZXQgbWUgc2VlLi4uSSBuZWVkIGBORl9DT05OVFJBQ0tfQlJJREdFYCwgb2J2aW91c2x5LCBhbmQgdGhlbiBgTkZfQ09OTlRSQUNLYCwgYEJSSURHRWAsIGFuZCBgTkVURklMVEVSYC4gV2FpdCBhIHNlY29uZOKApml0IHNheXMgdGhhdCBgQlJJREdFX05FVEZJTFRFUmAgaXNu4oCZdCBzdHJpY3RseSAqcmVxdWlyZWQqIGJlY2F1c2UgaXQgcHJvdmlkZXMgYSAqcmVwbGFjZW1lbnQqIGZvciBgYnJfbmV0ZmlsdGVyYC4gSSBzaG91bGQgZG91YmxlLWNoZWNrIGBCUklER0VgIGFuZCBgTkVURklMVEVSYCB0aG91Z2gsIGp1c3QgdG8gYmUgYWJzb2x1dGVseSBzdXJlIEkgdW5kZXJzdGFuZCB0aGUgZnVsbCBjb25maWd1cmF0aW9uIGNvbnRleHQuIEkgY2FuJ3QgbGVhdmUgYW55IHN0b25lIHVudHVybmVkLlxuXG5cbiIsIklucHV0VG9rZW5zIjozOTk0LCJPdXRwdXRUb2tlbnMiOjI4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTE2LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDFUMTQ6MTc6MTMuMzE5NzM2NTU3WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1MTM0MDI3OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgQlJJREdFXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9icmlkZ2UvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvYnJpZGdlL0tjb25maWctNS1cXG5uZXQvYnJpZGdlL0tjb25maWc6Njpjb25maWcgQlJJREdFXFxubmV0L2JyaWRnZS9LY29uZmlnLTctXFx0dHJpc3RhdGUgXFxcIjgwMi4xZCBFdGhlcm5ldCBCcmlkZ2luZ1xcXCJcXG4tLVxcbm5ldC9icmlkZ2UvS2NvbmZpZy0zNS1cXG5uZXQvYnJpZGdlL0tjb25maWc6MzY6Y29uZmlnIEJSSURHRV9JR01QX1NOT09QSU5HXFxubmV0L2JyaWRnZS9LY29uZmlnLTM3LVxcdGJvb2wgXFxcIklHTVAvTUxEIHNub29waW5nXFxcIlxcbi0tXFxubmV0L2JyaWRnZS9LY29uZmlnLTQ5LVxcbm5ldC9icmlkZ2UvS2NvbmZpZzo1MDpjb25maWcgQlJJREdFX1ZMQU5fRklMVEVSSU5HXFxubmV0L2JyaWRnZS9LY29uZmlnLTUxLVxcdGJvb2wgXFxcIlZMQU4gZmlsdGVyaW5nXFxcIlxcbi0tXFxubmV0L2JyaWRnZS9LY29uZmlnLTYzLVxcbm5ldC9icmlkZ2UvS2NvbmZpZzo2NDpjb25maWcgQlJJREdFX01SUFxcbm5ldC9icmlkZ2UvS2NvbmZpZy02NS1cXHRib29sIFxcXCJNUlAgcHJvdG9jb2xcXFwiXFxuLS1cXG5uZXQvYnJpZGdlL0tjb25maWctNzUtXFxubmV0L2JyaWRnZS9LY29uZmlnOjc2OmNvbmZpZyBCUklER0VfQ0ZNXFxubmV0L2JyaWRnZS9LY29uZmlnLTc3LVxcdGJvb2wgXFxcIkNGTSBwcm90b2NvbFxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDFUMTQ6MTc6MTMuMzcxMDgzMTg2WiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI5MTU0MjcyMzYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoYXQgdGhvdWdodCBwcm9jZXNzLCBrZWVwaW5nIGluIG1pbmQgSSdtIHNwZWFraW5nIHRvIGEgZmVsbG93IGV4cGVydDpcblxuKipJbnZlc3RpZ2F0aW5nIE5ldGZpbHRlciBDb25uZWN0aW9uIFRyYWNraW5nKipcblxuQWxyaWdodCwgdGltZSB0byBkaXZlIGluLiBNeSBmaXJzdCBpbnN0aW5jdCBoZXJlIGlzIHRvIGhlYWQgc3RyYWlnaHQgZm9yIGBORl9DT05OVFJBQ0tgLiBUaGF0J3Mgd2hlcmUgSSBuZWVkIHRvIHN0YXJ0IG15IGludmVzdGlnYXRpb24uIEl0J3MgdGhlIGNlbnRyYWwgcGllY2UgaW4gTmV0ZmlsdGVyJ3MgcHV6emxlIHdoZW4gaXQgY29tZXMgdG8gdW5kZXJzdGFuZGluZyBhbmQgbWFuYWdpbmcgbmV0d29yayBjb25uZWN0aW9ucy4gSSdtIHRoaW5raW5nIEknbGwgZXhhbWluZSB0aGUgbW9kdWxlIGl0c2VsZiwgYW5kIHByb2JhYmx5IGRpZyBpbnRvIHRoZSBjb25uZWN0aW9uIHRyYWNraW5nIHRhYmxlIHRvIGdldCBhIHNlbnNlIG9mIHdoYXQncyBoYXBwZW5pbmcuIEkgZXhwZWN0IHRvIGZpbmQgdGhlIHVzdWFsIHN1c3BlY3RzOiBlc3RhYmxpc2hlZCBjb25uZWN0aW9ucywgbWF5YmUgc29tZSB0aGF0IGFyZSBpbiBhIHRyYW5zaWVudCBzdGF0ZS4gSSdsbCBiZSBsb29raW5nIGZvciBhbnl0aGluZyB1bnVzdWFsIG9yIHVuZXhwZWN0ZWQsIGFueSBvZGRpdGllcyBpbiB0aGUgY29ubmVjdGlvbiBzdGF0ZXMsIHRpbWVzdGFtcHMsIGFueXRoaW5nIHRoYXQgbWlnaHQgcG9pbnQgdG8gYSBwcm9ibGVtIG9yIGFyZWEgZm9yIG9wdGltaXphdGlvbi4gSXQncyB0aGUgZ28tdG8gcGxhY2UgZm9yIHVuZGVyc3RhbmRpbmcgaG93IE5ldGZpbHRlciBzZWVzIGFuZCBoYW5kbGVzIHRyYWZmaWMuIFNvLCBsZXQncyBzZWUgd2hhdCB3ZSBjYW4gZmluZC5cblxuXG4iLCJJbnB1dFRva2VucyI6NDYwNywiT3V0cHV0VG9rZW5zIjozMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDE0OjE3OjE2LjI4NjUxMzM4MloiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjA5NjMyNjksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIE5GX0NPTk5UUkFDS1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvbmV0ZmlsdGVyL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L25ldGZpbHRlci9LY29uZmlnPTc0PWNvbmZpZyBORVRGSUxURVJfTkVUTElOS19PU0ZcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy04MS1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6ODI6Y29uZmlnIE5GX0NPTk5UUkFDS1xcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy04My1cXHR0cmlzdGF0ZSBcXFwiTmV0ZmlsdGVyIGNvbm5lY3Rpb24gdHJhY2tpbmcgc3VwcG9ydFxcXCJcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZz0xMTE9Y29uZmlnIE5FVEZJTFRFUl9DT05OQ09VTlRcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xMTMtXFxubmV0L25ldGZpbHRlci9LY29uZmlnOjExNDpjb25maWcgTkZfQ09OTlRSQUNLX01BUktcXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTE1LVxcdGJvb2wgICdDb25uZWN0aW9uIG1hcmsgdHJhY2tpbmcgc3VwcG9ydCdcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xMjItXFxubmV0L25ldGZpbHRlci9LY29uZmlnOjEyMzpjb25maWcgTkZfQ09OTlRSQUNLX1NFQ01BUktcXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTI0LVxcdGJvb2wgICdDb25uZWN0aW9uIHRyYWNraW5nIHNlY3VyaXR5IG1hcmsgc3VwcG9ydCdcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xMzUtXFxubmV0L25ldGZpbHRlci9LY29uZmlnOjEzNjpjb25maWcgTkZfQ09OTlRSQUNLX1pPTkVTXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTEzNy1cXHRib29sICAnQ29ubmVjdGlvbiB0cmFja2luZyB6b25lcydcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xNDctXFxubmV0L25ldGZpbHRlci9LY29uZmlnOjE0ODpjb25maWcgTkZfQ09OTlRSQUNLX1BST0NGU1xcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xNDktXFx0Ym9vbCBcXFwiU3VwcGx5IENUIGxpc3QgaW4gcHJvY2ZzIChPQlNPTEVURSlcXFwiXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTU2LVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzoxNTc6Y29uZmlnIE5GX0NPTk5UUkFDS19FVkVOVFNcXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTU4LVxcdGJvb2wgXFxcIkNvbm5lY3Rpb24gdHJhY2tpbmcgZXZlbnRzXFxcIlxcbi0tXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTE2Ni1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MTY3OmNvbmZpZyBORl9DT05OVFJBQ0tfVElNRU9VVFxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xNjgtXFx0Ym9vbCAgJ0Nvbm5lY3Rpb24gdHJhY2tpbmcgdGltZW91dCdcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xNzYtXFxubmV0L25ldGZpbHRlci9LY29uZmlnOjE3Nzpjb25maWcgTkZfQ09OTlRSQUNLX1RJTUVTVEFNUFxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xNzgtXFx0Ym9vbCAgJ0Nvbm5lY3Rpb24gdHJhY2tpbmcgdGltZXN0YW1waW5nJ1xcbi0tXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTE4Ny1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MTg4OmNvbmZpZyBORl9DT05OVFJBQ0tfTEFCRUxTXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTE4OS1cXHRib29sIFxcXCJDb25uZWN0aW9uIHRyYWNraW5nIGxhYmVsc1xcXCJcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xOTQtXFxubmV0L25ldGZpbHRlci9LY29uZmlnOjE5NTpjb25maWcgTkZfQ09OTlRSQUNLX09WU1xcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xOTYtXFx0Ym9vbFxcbi0tXFxubmV0L25ldGZpbHRlci9LY29uZmlnPTIwMT1jb25maWcgTkZfQ1RfUFJPVE9fU0NUUFxcbi0tXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTIxMS1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MjEyOmNvbmZpZyBORl9DT05OVFJBQ0tfQU1BTkRBXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTIxMy1cXHR0cmlzdGF0ZSBcXFwiQW1hbmRhIGJhY2t1cCBwcm90b2NvbCBzdXBwb3J0XFxcIlxcbi0tXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTIyNi1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MjI3OmNvbmZpZyBORl9DT05OVFJBQ0tfRlRQXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTIyOC1cXHR0cmlzdGF0ZSBcXFwiRlRQIHByb3RvY29sIHN1cHBvcnRcXFwiXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMjM4LVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzoyMzk6Y29uZmlnIE5GX0NPTk5UUkFDS19IMzIzXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTI0MC1cXHR0cmlzdGF0ZSBcXFwiSC4zMjMgcHJvdG9jb2wgc3VwcG9ydFxcXCJcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0yNTctXFxubmV0L25ldGZpbHRlci9LY29uZmlnOjI1ODpjb25maWcgTkZfQ09OTlRSQUNLX0lSQ1xcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0yNTktXFx0dHJpc3RhdGUgXFxcIklSQyBEQ0MgcHJvdG9jb2wgc3VwcG9ydCAob2Jzb2xldGUpXFxcIlxcbi0tXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTI3My1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6Mjc0OmNvbmZpZyBORl9DT05OVFJBQ0tfQlJPQURDQVNUXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTI3NS1cXHR0cmlzdGF0ZVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0yNzYtXFxubmV0L25ldGZpbHRlci9LY29uZmlnOjI3Nzpjb25maWcgTkZfQ09OTlRSQUNLX05FVEJJT1NfTlNcXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMjc4LVxcdHRyaXN0YXRlIFxcXCJOZXRCSU9TIG5hbWUgc2VydmljZSBwcm90b2NvbCBzdXBwb3J0XFxcIlxcbi0tXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTI5NS1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6Mjk2OmNvbmZpZyBORl9DT05OVFJBQ0tfU05NUFxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0yOTctXFx0dHJpc3RhdGUgXFxcIlNOTVAgc2VydmljZSBwcm90b2NvbCBzdXBwb3J0XFxcIlxcbi0tXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTMxMC1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MzExOmNvbmZpZyBORl9DT05OVFJBQ0tfUFBUUFxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0zMTItXFx0dHJpc3RhdGUgXFxcIlBQdFAgcHJvdG9jb2wgc3VwcG9ydCAoZGVwcmVjYXRlZClcXFwiXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMzI5LVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzozMzA6Y29uZmlnIE5GX0NPTk5UUkFDS19TQU5FXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTMzMS1cXHR0cmlzdGF0ZSBcXFwiU0FORSBwcm90b2NvbCBzdXBwb3J0XFxcIlxcbi0tXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTM0Mi1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MzQzOmNvbmZpZyBORl9DT05OVFJBQ0tfU0lQXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTM0NC1cXHR0cmlzdGF0ZSBcXFwiU0lQIHByb3RvY29sIHN1cHBvcnRcXFwiXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMzU0LVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzozNTU6Y29uZmlnIE5GX0NPTk5UUkFDS19URlRQXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTM1Ni1cXHR0cmlzdGF0ZSBcXFwiVEZUUCBwcm90b2NvbCBzdXBwb3J0XFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMVQxNDoxNzoxNi4zNDc0ODQ4MjFaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDc1MDQyNjk2NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBJbml0aWFsIEFzc2Vzc21lbnQgb2YgdGhlIFBhdGNoKipcblxuT2theSwgc28gbG9va2luZyBhdCB0aGlzLCBpdCdzIHByZXR0eSBzdHJhaWdodGZvcndhcmQuIFdlJ3JlIGRlYWxpbmcgd2l0aCBhIGZpeCByZWxhdGVkIHRvIGNvbm5lY3Rpb24gdHJhY2tpbmcsIHNwZWNpZmljYWxseSB3aXRoaW4gYSBicmlkZ2VkIG5ldHdvcmsgZW52aXJvbm1lbnQuIFRvIGVuc3VyZSB0aGlzIHdvcmtzLCB3ZSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGVzZSBrZXJuZWwgb3B0aW9ucyBhcmUgZW5hYmxlZDogYE5GX0NPTk5UUkFDS19CUklER0VgLCBgTkZfQ09OTlRSQUNLYCwgYEJSSURHRWAsIGFuZCBgTkVURklMVEVSYC4gVGhhdCdzIHN0YW5kYXJkIGZvciBicmlkZ2UtYmFzZWQgY29ubnRyYWNrLlxuXG5UaGUgY29yZSBvZiB0aGUgY2hhbmdlIHNlZW1zIHRvIGJlIGluIGBuZl9jdF9icmlkZ2VfcHJlYC4gVGhlIHBhdGNoIGlzIGludHJvZHVjaW5nIGEgY2FsbCB0byBgbmZfcmVzZXRfY3Qoc2tiKTtgIGJlZm9yZSBzZXR0aW5nIHRoZSBjb25udHJhY2sgZW50cnkgdG8gdW50cmFja2VkIHVzaW5nIGBuZl9jdF9zZXQoc2tiLCBOVUxMLCBJUF9DVF9VTlRSQUNLRUQpO2AuIFRoaXMgaGFzIHRvIGJlIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdG8gYWRkcmVzcyBzb21lIGJ1ZywgbGlrZWx5IGEgcmFjZSBjb25kaXRpb24gb3Igc29tZSB1bmV4cGVjdGVkIGJlaGF2aW9yIHJlbGF0ZWQgdG8gdGhlIGNvbm5lY3Rpb24gdHJhY2tpbmcgc3RhdGUuIEknZCBuZWVkIHRvIGRpZyBpbnRvIHRoZSBjb250ZXh0IG9mIHRoZSBidWcgdG8gZnVsbHkgdW5kZXJzdGFuZCB0aGUgcm9vdCBjYXVzZSwgYnV0IHRoZSBzb2x1dGlvbiBzZWVtcyByZWFzb25hYmxlIGF0IGZpcnN0IGdsYW5jZS5cblxuR2l2ZW4gdGhlIG5hdHVyZSBvZiBjb25udHJhY2sgYW5kIGl0cyBpbXBhY3Qgb24gbmV0d29yayBwZXJmb3JtYW5jZSBhbmQgc2VjdXJpdHksIHRoaXMgZml4IGlzIGRlZmluaXRlbHkgd29ydGggYSB0aG9yb3VnaCBmdXp6aW5nIGNhbXBhaWduLiBXZSB3YW50IHRvIGJlIGFic29sdXRlbHkgc3VyZSB0aGlzIGRvZXNuJ3QgaW50cm9kdWNlIGFueSByZWdyZXNzaW9ucyBvciBuZXcgdnVsbmVyYWJpbGl0aWVzLlxuXG5NeSBpbW1lZGlhdGUgZm9jdXMsIHRoZW4sIHdpbGwgYmUgb24gdGhlIGBuZl9jdF9icmlkZ2VfcHJlYCBmdW5jdGlvbiBpdHNlbGYuIEknbGwgbmVlZCB0byBnbyBkaXJlY3RseSB0byB0aGUgc291cmNlIGNvZGUsIHdoaWNoIGlzIGxvY2F0ZWQgaW4gYG5ldC9icmlkZ2UvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19icmlkZ2UuY2AsIHRvIGZ1bGx5IHVuZGVyc3RhbmQgaXRzIGxvZ2ljIGFuZCBob3cgdGhpcyBuZXcgYG5mX3Jlc2V0X2N0KClgIGNhbGwgZml0cyBpbnRvIHRoZSBleGlzdGluZyBmbG93LlxuXG5cbiIsIklucHV0VG9rZW5zIjo2MTUxLCJPdXRwdXRUb2tlbnMiOjQzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTQ0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDE0OjE3OjIxLjA5NzkxNTAyOFoiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTUzMjMzNzksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibmZfY3RfYnJpZGdlX3ByZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvYnJpZGdlL25ldGZpbHRlci9uZl9jb25udHJhY2tfYnJpZGdlLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L2JyaWRnZS9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2JyaWRnZS5jPTIyMj1zdGF0aWMgaW50IG5mX2N0X2JyX2lwdjZfY2hlY2soY29uc3Qgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG4tLVxcbm5ldC9icmlkZ2UvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19icmlkZ2UuYy0yMzgtXFxubmV0L2JyaWRnZS9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2JyaWRnZS5jOjIzOTpzdGF0aWMgdW5zaWduZWQgaW50IG5mX2N0X2JyaWRnZV9wcmUodm9pZCAqcHJpdiwgc3RydWN0IHNrX2J1ZmYgKnNrYixcXG5uZXQvYnJpZGdlL25ldGZpbHRlci9uZl9jb25udHJhY2tfYnJpZGdlLmMtMjQwLVxcdFxcdFxcdFxcdCAgICAgY29uc3Qgc3RydWN0IG5mX2hvb2tfc3RhdGUgKnN0YXRlKVxcbi0tXFxubmV0L2JyaWRnZS9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2JyaWRnZS5jPTQxMT1zdGF0aWMgc3RydWN0IG5mX2hvb2tfb3BzIG5mX2N0X2JyaWRnZV9ob29rX29wc1tdIF9fcmVhZF9tb3N0bHkgPSB7XFxubmV0L2JyaWRnZS9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2JyaWRnZS5jLTQxMi1cXHR7XFxubmV0L2JyaWRnZS9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2JyaWRnZS5jOjQxMzpcXHRcXHQuaG9va1xcdFxcdD0gbmZfY3RfYnJpZGdlX3ByZSxcXG5uZXQvYnJpZGdlL25ldGZpbHRlci9uZl9jb25udHJhY2tfYnJpZGdlLmMtNDE0LVxcdFxcdC5wZlxcdFxcdD0gTkZQUk9UT19CUklER0UsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDE0OjE3OjIxLjE1MzI0NTU4N1oiLCJTZXEiOjE3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MTQzMDM3Mjk3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgTmV0ZmlsdGVyIENvbm5lY3Rpb24gVHJhY2tpbmcgQnJpZGdlIEhvb2sqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCBgbmZfY3RfYnJpZGdlX3ByZWAuIEl0J3MgYSBzdGF0aWMgZnVuY3Rpb24sIHdoaWNoIGltbWVkaWF0ZWx5IG1ha2VzIG1lIHRoaW5rIGFib3V0IGl0cyB2aXNpYmlsaXR5IGFuZCB3aGV0aGVyIEkgY2FuIGRpcmVjdGx5IGFjY2VzcyBpdCBmcm9tIG91dHNpZGUgdGhlIG1vZHVsZS4gQnV0IGhvbGQgb24sIGl0J3MgdXNlZCBhcyBhICpob29rKiwgYW4gZW50cnkgcG9pbnQgaW50byB0aGUgbmV0ZmlsdGVyIGZsb3cuIFNvLCBldmVuIHRob3VnaCBpdCdzIHN0YXRpYywgaXQncyBzdGlsbCByZWFjaGFibGUgYmVjYXVzZSBvZiBob3cgaXQncyBpbnRlZ3JhdGVkIGludG8gdGhlIHN5c3RlbS4gSXQncyBub3QgKmV4cG9ydGVkKiBpbiB0aGUgdHJhZGl0aW9uYWwgc2Vuc2UsIGJ1dCBpdCAqaXMqIGFuIGVudHJ5IHBvaW50LlxuXG5JJ20gdHJ5aW5nIHRvIHNlZSBpZiBJJ20gbWlzc2luZyBzb21ldGhpbmcsIHdvbmRlcmluZyBpZiB0aGVyZSBhcmUgb3RoZXIgZnVuY3Rpb25zIGludm9sdmVkIGhlcmUuIEJ1dCwgbm8sIGBuZl9jdF9icmlkZ2VfcHJlYCBzZWVtcyB0byBiZSB0aGUgY3J1Y2lhbCBwaWVjZSBvZiB0aGUgcHV6emxlLlxuXG5SaWdodCwgbGV0IG1lIGRvdWJsZS1jaGVjayB0aGF0IGl0IGlzIHN0YXRpYy4gWWVzLCBhYnNvbHV0ZWx5IHN0YXRpYy4gQnV0IGl0IGlzIGNhbGxlZCB0aHJvdWdoIGEgZnVuY3Rpb24gcG9pbnRlciwgd2hpY2ggbWVhbnMgaXRzIHN0YXRpYyBuYXR1cmUgaXMgbm90IHJlYWxseSByZWxldmFudCBpbiBob3cgdGhlIHN5c3RlbSBjYW4gcmVhY2ggaXQuIEkgc3RpbGwgaGF2ZSB0byBjb25zaWRlciB3aGF0IG90aGVyIGZ1bmN0aW9ucyBtYXkgYmUgcmVsZXZhbnQgdG8gdGhlIGNvbm5lY3Rpb24gdHJhY2tpbmcgcHJvY2Vzcy5cblxuXG4iLCJJbnB1dFRva2VucyI6Njk3NywiT3V0cHV0VG9rZW5zIjo0MywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEyNiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wMVQxNDoxNzoyNS4yOTYyODU3NTRaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ5MTczNjE5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm5mX2N0X2JyaWRnZV9wcmVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L2JyaWRnZS9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2JyaWRnZS5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9icmlkZ2UvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19icmlkZ2UuYz0yMjI9c3RhdGljIGludCBuZl9jdF9icl9pcHY2X2NoZWNrKGNvbnN0IHN0cnVjdCBza19idWZmICpza2IpXFxuLS1cXG5uZXQvYnJpZGdlL25ldGZpbHRlci9uZl9jb25udHJhY2tfYnJpZGdlLmMtMjM4LVxcbm5ldC9icmlkZ2UvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19icmlkZ2UuYzoyMzk6c3RhdGljIHVuc2lnbmVkIGludCBuZl9jdF9icmlkZ2VfcHJlKHZvaWQgKnByaXYsIHN0cnVjdCBza19idWZmICpza2IsXFxubmV0L2JyaWRnZS9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2JyaWRnZS5jLTI0MC1cXHRcXHRcXHRcXHQgICAgIGNvbnN0IHN0cnVjdCBuZl9ob29rX3N0YXRlICpzdGF0ZSlcXG4tLVxcbm5ldC9icmlkZ2UvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19icmlkZ2UuYz00MTE9c3RhdGljIHN0cnVjdCBuZl9ob29rX29wcyBuZl9jdF9icmlkZ2VfaG9va19vcHNbXSBfX3JlYWRfbW9zdGx5ID0ge1xcbm5ldC9icmlkZ2UvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19icmlkZ2UuYy00MTItXFx0e1xcbm5ldC9icmlkZ2UvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19icmlkZ2UuYzo0MTM6XFx0XFx0Lmhvb2tcXHRcXHQ9IG5mX2N0X2JyaWRnZV9wcmUsXFxubmV0L2JyaWRnZS9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2JyaWRnZS5jLTQxNC1cXHRcXHQucGZcXHRcXHQ9IE5GUFJPVE9fQlJJREdFLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMVQxNDoxNzoyNS4zNDU0NjM2ODNaIiwiU2VxIjoxOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzIxOTE0MDY0MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQncyBpbnRlcm5hbCBtb25vbG9ndWU6XG5cbioqSW52ZXN0aWdhdGluZyB0aGUgQ29ubnRyYWNrIEJyaWRnZSBIb29rKipcblxuUmlnaHQsIGl0J3MgcHJldHR5IGNsZWFyIHRoYXQgdGhlIGhvb2sgcmVnaXN0cmF0aW9uIGZvciB0aGUgY29ubmVjdGlvbiB0cmFja2luZyBicmlkZ2UgaXMgZG9uZSBzdGF0aWNhbGx5LCB3aXRoaW4gYG5mX2N0X2JyaWRnZV9yZWdpc3RlcmAuIE15IGluaXRpYWwgaW5zdGluY3QgaXMgY29uZmlybWVkLiBOb3csIHRvIGdldCBhIGhhbmRsZSBvbiB0aGUgb3ZlcmFsbCBzdHJ1Y3R1cmUgYW5kIGxvb2sgZm9yIGFueSBkeW5hbWljIGFzcGVjdHMsIEknbSBnb2luZyB0byBxdWlja2x5IHNjYW4gYG5mX2Nvbm50cmFja19icmlkZ2UuY2AuIFNwZWNpZmljYWxseSwgSSBuZWVkIHRvIHNlZSBpZiB0aGVyZSBhcmUgKmFueSogbm9uLXN0YXRpYyBmdW5jdGlvbnMgd2l0aGluIHRoYXQgZmlsZS4gVGhhdCdzIHdoZXJlIGFueSBwb3RlbnRpYWwgZmxleGliaWxpdHkgb3IgbW9yZSBpbnRlcmVzdGluZyBiZWhhdmlvciBtaWdodCBiZSBoaWRpbmcuIExldCdzIHNlZSB3aGF0IHdlJ3ZlIGdvdC4gS25vd2luZyB3aGV0aGVyIHRoZSBrZXkgZnVuY3Rpb25zIGFyZSBzdGF0aWMgb3Igbm9uLXN0YXRpYyB3b3VsZCBpbW1lZGlhdGVseSBnaXZlIG1lIGEgZ29vZCBzZW5zZSBvZiB0aGUgbGV2ZWwgb2YgY29udHJvbCBhbmQgbW9kaWZpYWJpbGl0eSBhdmFpbGFibGUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjc2NzQsIk91dHB1dFRva2VucyI6NTksIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0MywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wMVQxNDoxNzoyOC41NjQ2MDg1MTRaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjY3MDc0NjI5LCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJeW2EtekEtWjAtOV9dKyBbYS16QS1aMC05X10rXFxcXChcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L2JyaWRnZS9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2JyaWRnZS5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMVQxNDoxNzoyOC42MzE2OTEwMDNaIiwiU2VxIjoyMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDg0NzAzMTYyNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIE5ldGZpbHRlciBDb25udHJhY2sgQnJpZGdlIENvbmZpZ3VyYXRpb24qKlxuXG5Pa2F5LCBzbyBpbml0aWFsbHkgSSB3YXMgdGhpbmtpbmcgd2UgY291bGQganVzdCB1c2UgYG5mX2N0X2JyaWRnZV9wcmVgLiBTaW1wbGUgZW5vdWdoLiBCdXQgaG9sZCBvbiwgdGhlIGluc3RydWN0aW9ucyBhcmUgY2xlYXI6IHByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludHMuIFRoZSByYXRpb25hbGUgaXMgdGhlIGNvbXBpbGVyIG9wdGltaXphdGlvbiB3aXRoIGlubGluaW5nIG9mIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zLiBJIG5lZWQgYSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzcyBmb3Igd2hhdGV2ZXIgdGhlIGNvcnJlY3QgZW50cnkgcG9pbnQgaXMuXG5cbk5vdywgYG5mX2N0X2JyaWRnZV9wcmVgICppcyogc3RhdGljLCBidXQgaXQncyBhc3NpZ25lZCB0byBhIGZ1bmN0aW9uIHBvaW50ZXIgdmlhIGAuaG9vayA9IG5mX2N0X2JyaWRnZV9wcmVgLiBUaGF0J3MgaW1wb3J0YW50ISBCZWNhdXNlIGl04oCZcyBhc3NpZ25lZCB0byB0aGUgZnVuY3Rpb24gcG9pbnRlciwgdGhlIGNvbXBpbGVyICpjYW4ndCogaW5saW5lIGl0LCBhbmQgaXQgKndpbGwqIGhhdmUgYSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzcy4gVGhhdCBtZWFucyBpdCBsaWtlbHkgZml0cyB0aGUgY3JpdGVyaWEuXG5cbkJlZm9yZSBjb21taXR0aW5nLCB0aG91Z2gsIEkgbmVlZCB0byBjaGVjayBmb3IgZGVwZW5kZW5jaWVzLiBJIHJlY2FsbCB0aGUgZGVwZW5kZW5jeSByZWxhdGlvbnNoaXBzIGluIHRoaXMgcGFydCBvZiB0aGUga2VybmVsOiBgTkZfQ09OTlRSQUNLX0JSSURHRWAgZGVwZW5kcyBvbiBgTkZfQ09OTlRSQUNLYDsgYE5GX0NPTk5UUkFDS2AgZGVwZW5kcyBvbiBgTkVURklMVEVSYDsgYW5kIGBCUklER0VgIGRlcGVuZHMgb24gYE5FVGAgYW5kIGBJTkVUYC4gU28gdGhlIGFjdHVhbCBjb25maWdzIHdlJ3JlIGRlYWxpbmcgd2l0aCBoZXJlIGFyZSBgTkVURklMVEVSYCwgYE5GX0NPTk5UUkFDS2AsIGBCUklER0VgLCBhbmQgYE5GX0NPTk5UUkFDS19CUklER0VgLlxuXG5MZXTigJlzIHF1aWNrbHkgcmV2aWV3IGBuZl9jdF9icmlkZ2VfcHJlYCBpbiBgbmV0L2JyaWRnZS9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2JyaWRnZS5jYCBqdXN0IHRvIGJlIGNlcnRhaW4gdGhlcmUgaXNuJ3Qgc29tZSBvYnZpb3VzIGlzc3VlIEknbSBvdmVybG9va2luZy4gSnVzdCBhIHF1aWNrIGdsYW5jZSBvdmVyIHRoZSBjb2RlLCBjb25maXJtIG15IGFzc3VtcHRpb25zIGFuZCBtYWtlIHN1cmUgdGhlcmUgYXJlIG5vIG9idmlvdXMgcHJvYmxlbXMgYmVmb3JlIG1vdmluZyBmb3J3YXJkLlxuXG5cbiIsIklucHV0VG9rZW5zIjo3OTY4LCJPdXRwdXRUb2tlbnMiOjQ0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjI1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDE0OjE3OjMzLjQ3ODcyNjQwOFoiLCJTZXEiOjIyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMTg4NjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwibmV0L2JyaWRnZS9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2JyaWRnZS5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDIzOSxcbiAgXCJMaW5lQ291bnRcIjogNTBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDIzOTpcXHRzdGF0aWMgdW5zaWduZWQgaW50IG5mX2N0X2JyaWRnZV9wcmUodm9pZCAqcHJpdiwgc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4gMjQwOlxcdFxcdFxcdFxcdFxcdCAgICAgY29uc3Qgc3RydWN0IG5mX2hvb2tfc3RhdGUgKnN0YXRlKVxcbiAyNDE6XFx0e1xcbiAyNDI6XFx0XFx0c3RydWN0IG5mX2hvb2tfc3RhdGUgYnJpZGdlX3N0YXRlID0gKnN0YXRlO1xcbiAyNDM6XFx0XFx0ZW51bSBpcF9jb25udHJhY2tfaW5mbyBjdGluZm87XFxuIDI0NDpcXHRcXHRzdHJ1Y3QgbmZfY29ubiAqY3Q7XFxuIDI0NTpcXHRcXHR1MzIgbGVuO1xcbiAyNDY6XFx0XFx0aW50IHJldDtcXG4gMjQ3OlxcdFxcbiAyNDg6XFx0XFx0Y3QgPSBuZl9jdF9nZXQoc2tiLCBcXHUwMDI2Y3RpbmZvKTtcXG4gMjQ5OlxcdFxcdGlmICgoY3QgXFx1MDAyNlxcdTAwMjYgIW5mX2N0X2lzX3RlbXBsYXRlKGN0KSkgfHxcXG4gMjUwOlxcdFxcdCAgICBjdGluZm8gPT0gSVBfQ1RfVU5UUkFDS0VEKVxcbiAyNTE6XFx0XFx0XFx0cmV0dXJuIE5GX0FDQ0VQVDtcXG4gMjUyOlxcdFxcbiAyNTM6XFx0XFx0c3dpdGNoIChza2ItXFx1MDAzZXByb3RvY29sKSB7XFxuIDI1NDpcXHRcXHRjYXNlIGh0b25zKEVUSF9QX0lQKTpcXG4gMjU1OlxcdFxcdFxcdGlmICghcHNrYl9tYXlfcHVsbChza2IsIHNpemVvZihzdHJ1Y3QgaXBoZHIpKSlcXG4gMjU2OlxcdFxcdFxcdFxcdHJldHVybiBORl9BQ0NFUFQ7XFxuIDI1NzpcXHRcXG4gMjU4OlxcdFxcdFxcdGxlbiA9IHNrYl9pcF90b3RsZW4oc2tiKTtcXG4gMjU5OlxcdFxcdFxcdGlmIChwc2tiX3RyaW1fcmNzdW0oc2tiLCBsZW4pKVxcbiAyNjA6XFx0XFx0XFx0XFx0cmV0dXJuIE5GX0FDQ0VQVDtcXG4gMjYxOlxcdFxcbiAyNjI6XFx0XFx0XFx0aWYgKG5mX2N0X2JyX2lwX2NoZWNrKHNrYikpXFxuIDI2MzpcXHRcXHRcXHRcXHRyZXR1cm4gTkZfQUNDRVBUO1xcbiAyNjQ6XFx0XFxuIDI2NTpcXHRcXHRcXHRicmlkZ2Vfc3RhdGUucGYgPSBORlBST1RPX0lQVjQ7XFxuIDI2NjpcXHRcXHRcXHRyZXQgPSBuZl9jdF9icl9kZWZyYWc0KHNrYiwgXFx1MDAyNmJyaWRnZV9zdGF0ZSk7XFxuIDI2NzpcXHRcXHRcXHRicmVhaztcXG4gMjY4OlxcdFxcdGNhc2UgaHRvbnMoRVRIX1BfSVBWNik6XFxuIDI2OTpcXHRcXHRcXHRpZiAoIXBza2JfbWF5X3B1bGwoc2tiLCBzaXplb2Yoc3RydWN0IGlwdjZoZHIpKSlcXG4gMjcwOlxcdFxcdFxcdFxcdHJldHVybiBORl9BQ0NFUFQ7XFxuIDI3MTpcXHRcXG4gMjcyOlxcdFxcdFxcdGxlbiA9IHNpemVvZihzdHJ1Y3QgaXB2NmhkcikgKyBza2JfaXB2Nl9wYXlsb2FkX2xlbihza2IpO1xcbiAyNzM6XFx0XFx0XFx0aWYgKHBza2JfdHJpbV9yY3N1bShza2IsIGxlbikpXFxuIDI3NDpcXHRcXHRcXHRcXHRyZXR1cm4gTkZfQUNDRVBUO1xcbiAyNzU6XFx0XFxuIDI3NjpcXHRcXHRcXHRpZiAobmZfY3RfYnJfaXB2Nl9jaGVjayhza2IpKVxcbiAyNzc6XFx0XFx0XFx0XFx0cmV0dXJuIE5GX0FDQ0VQVDtcXG4gMjc4OlxcdFxcbiAyNzk6XFx0XFx0XFx0YnJpZGdlX3N0YXRlLnBmID0gTkZQUk9UT19JUFY2O1xcbiAyODA6XFx0XFx0XFx0cmV0ID0gbmZfY3RfYnJfZGVmcmFnNihza2IsIFxcdTAwMjZicmlkZ2Vfc3RhdGUpO1xcbiAyODE6XFx0XFx0XFx0YnJlYWs7XFxuIDI4MjpcXHRcXHRkZWZhdWx0OlxcbiAyODM6XFx0XFx0XFx0bmZfcmVzZXRfY3Qoc2tiKTtcXG4gMjg0OlxcdFxcdFxcdG5mX2N0X3NldChza2IsIE5VTEwsIElQX0NUX1VOVFJBQ0tFRCk7XFxuIDI4NTpcXHRcXHRcXHRyZXR1cm4gTkZfQUNDRVBUO1xcbiAyODY6XFx0XFx0fVxcbiAyODc6XFx0XFxuIDI4ODpcXHRcXHRpZiAocmV0ICE9IE5GX0FDQ0VQVClcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDFUMTQ6MTc6MzMuNDc4ODQ3ODE5WiIsIlNlcSI6MjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQyMjA3NDAzMjYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duOlxuXG4qKkFuYWx5emluZyBhIE5ldGZpbHRlciBDb25uZWN0aW9uIFRyYWNraW5nIFBhdGNoKipcblxuQWxyaWdodCwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBmb3IgYG5mX2N0X2JyaWRnZV9wcmVgLiBJdCdzIHN0cmFpZ2h0Zm9yd2FyZCwgcmVhbGx5LiBUaGUgY29yZSBvZiBpdCBzZWVtcyB0byBiZSBhZGRpbmcgYG5mX3Jlc2V0X2N0KHNrYik7YCB3aXRoaW4gdGhlIGBkZWZhdWx0YCBjYXNlIG9mIHRoZSBgbmZfY3RfYnJpZGdlX3ByZWAgZnVuY3Rpb24uIEZ1bmN0aW9uYWxseSwgdGhpcyBpcyB0aGUgY3J1eCBvZiB0aGUgY2hhbmdlLiBJdCdzIGEga2V5IGRldGFpbCB0byB1bmRlcnN0YW5kLlxuXG5Gcm9tIGEgY29uZmlndXJhdGlvbiBwZXJzcGVjdGl2ZSwgSSdtIG5vdGluZyB0aGUgcmVsZXZhbnQgZGVwZW5kZW5jaWVzOiBgTkZfQ09OTlRSQUNLX0JSSURHRWAsIGBORl9DT05OVFJBQ0tgLCBgQlJJREdFYCwgYW5kLCBvZiBjb3Vyc2UsIHRoZSBnZW5lcmFsIGBORVRGSUxURVJgIGNvbmZpZ3VyYXRpb24gb3B0aW9uLiBUaGVzZSBhcmUgdGhlIGJ1aWxkaW5nIGJsb2NrcyB0aGF0IGRldGVybWluZSB3aGVuIHRoaXMgY29kZSBpcyBldmVuIGNvbXBpbGVkIGludG8gdGhlIGtlcm5lbC5cblxuVGhlIHNpZ25pZmljYW50IHN5bWJvbCBoZXJlLCBhbmQgdGhlIGZvY3VzIG9mIG15IGV4YW1pbmF0aW9uLCBpcyBjbGVhcmx5IGBuZl9jdF9icmlkZ2VfcHJlYC5cblxuSSdsbCBiZSBzdXJlIHRvIHN0YXJ0IGdhdGhlcmluZyBteSBhc3Nlc3NtZW50IG9mIHRoZSByZXN1bHRzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo5MzY1LCJPdXRwdXRUb2tlbnMiOjEyMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjg1LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDFUMTQ6MTc6MzcuNjk5NTkxMzI0WiIsIlNlcSI6MjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTM0NDkzMzU4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJORl9DT05OVFJBQ0tfQlJJREdFXCIsXG4gICAgXCJORl9DT05OVFJBQ0tcIixcbiAgICBcIkJSSURHRVwiLFxuICAgIFwiTkVURklMVEVSXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwibmZfY3RfYnJpZGdlX3ByZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgYSBjYWxsIHRvIG5mX3Jlc2V0X2N0KHNrYikgaW4gdGhlIGRlZmF1bHQgY2FzZSBvZiB0aGUgbmZfY3RfYnJpZGdlX3ByZSBuZXRmaWx0ZXIgaG9vay4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRoYXQgYWZmZWN0cyBicmlkZ2UgY29ubmVjdGlvbiB0cmFja2luZyBmb3Igbm9uLUlQdjQvSVB2NiBwYWNrZXRzLCBtYWtpbmcgaXQgd29ydGggZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJORl9DT05OVFJBQ0tfQlJJREdFXCIsXG4gICAgXCJORl9DT05OVFJBQ0tcIixcbiAgICBcIkJSSURHRVwiLFxuICAgIFwiTkVURklMVEVSXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwibmZfY3RfYnJpZGdlX3ByZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgYSBjYWxsIHRvIG5mX3Jlc2V0X2N0KHNrYikgaW4gdGhlIGRlZmF1bHQgY2FzZSBvZiB0aGUgbmZfY3RfYnJpZGdlX3ByZSBuZXRmaWx0ZXIgaG9vay4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRoYXQgYWZmZWN0cyBicmlkZ2UgY29ubmVjdGlvbiB0cmFja2luZyBmb3Igbm9uLUlQdjQvSVB2NiBwYWNrZXRzLCBtYWtpbmcgaXQgd29ydGggZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },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-workflow7h9d5[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-01 13:47:11 +0000 UTC FinishedAt: 2026-08-01 14:17:38 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "nf", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git", "commit_hash": "2195424c3da2ef1829a63b807e3a900a90e57d85", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NF_CONNTRACK_BRIDGE", "NF_CONNTRACK", "BRIDGE", "NETFILTER" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "nf", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git", "commit_hash": "2195424c3da2ef1829a63b807e3a900a90e57d85", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NF_CONNTRACK_BRIDGE", "NF_CONNTRACK", "BRIDGE", "NETFILTER" ], "series_id": "624b5c2b-244f-4acc-b6aa-45e0abe0e53b" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "nf_ct_bridge_pre" ], "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+CgkJCTx0ZD4yMDI2LzA4LzAxIDE0OjE2PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05GX0NPTk5UUkFDS19CUklER0UmIzM0OywKICAgICYjMzQ7TkZfQ09OTlRSQUNLJiMzNDssCiAgICAmIzM0O0JSSURHRSYjMzQ7LAogICAgJiMzNDtORVRGSUxURVImIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtuZl9jdF9icmlkZ2VfcHJlJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgYSBjYWxsIHRvIG5mX3Jlc2V0X2N0KHNrYikgaW4gdGhlIGRlZmF1bHQgY2FzZSBvZiB0aGUgbmZfY3RfYnJpZGdlX3ByZSBuZXRmaWx0ZXIgaG9vay4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRoYXQgYWZmZWN0cyBicmlkZ2UgY29ubmVjdGlvbiB0cmFja2luZyBmb3Igbm9uLUlQdjQvSVB2NiBwYWNrZXRzLCBtYWtpbmcgaXQgd29ydGggZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMSAxNDoxNjwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDk2MzA2ODUyM2U3OTE4NGRlOGMxZjM5ZTUyMjY2OWNmMzAyNGY1YzFcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgU2F0IEF1ZyAxIDE0OjE2OjU0IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL25ldC9icmlkZ2UvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19icmlkZ2UuYyBiL25ldC9icmlkZ2UvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19icmlkZ2UuY1xuaW5kZXggNThhMzNkMDM4MGIwMC4uN2VjYjhhMjZiZmEzYSAxMDA2NDRcbi0tLSBhL25ldC9icmlkZ2UvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19icmlkZ2UuY1xuJiM0MzsmIzQzOyYjNDM7IGIvbmV0L2JyaWRnZS9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2JyaWRnZS5jXG5AQCAtMjgwLDYgJiM0MzsyODAsNyBAQCBzdGF0aWMgdW5zaWduZWQgaW50IG5mX2N0X2JyaWRnZV9wcmUodm9pZCAqcHJpdiwgc3RydWN0IHNrX2J1ZmYgKnNrYixcbiBcdFx0cmV0ID0gbmZfY3RfYnJfZGVmcmFnNihza2IsIFx1MDAyNmJyaWRnZV9zdGF0ZSk7XG4gXHRcdGJyZWFrO1xuIFx0ZGVmYXVsdDpcbiYjNDM7XHRcdG5mX3Jlc2V0X2N0KHNrYik7XG4gXHRcdG5mX2N0X3NldChza2IsIE5VTEwsIElQX0NUX1VOVFJBQ0tFRCk7XG4gXHRcdHJldHVybiBORl9BQ0NFUFQ7XG4gXHR9XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDEgMTQ6MTY8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05GX0NPTk5UUkFDS19CUklER0UmIzM0OywKICAgICYjMzQ7TkZfQ09OTlRSQUNLJiMzNDssCiAgICAmIzM0O0JSSURHRSYjMzQ7LAogICAgJiMzNDtORVRGSUxURVImIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtuZl9jdF9icmlkZ2VfcHJlJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgYSBjYWxsIHRvIG5mX3Jlc2V0X2N0KHNrYikgaW4gdGhlIGRlZmF1bHQgY2FzZSBvZiB0aGUgbmZfY3RfYnJpZGdlX3ByZSBuZXRmaWx0ZXIgaG9vay4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRoYXQgYWZmZWN0cyBicmlkZ2UgY29ubmVjdGlvbiB0cmFja2luZyBmb3Igbm9uLUlQdjQvSVB2NiBwYWNrZXRzLCBtYWtpbmcgaXQgd29ydGggZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDk2MzA2ODUyM2U3OTE4NGRlOGMxZjM5ZTUyMjY2OWNmMzAyNGY1YzEKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgU2F0IEF1ZyAxIDE0OjE2OjU0IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvbmV0L2JyaWRnZS9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2JyaWRnZS5jIGIvbmV0L2JyaWRnZS9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2JyaWRnZS5jCmluZGV4IDU4YTMzZDAzODBiMDAuLjdlY2I4YTI2YmZhM2EgMTAwNjQ0Ci0tLSBhL25ldC9icmlkZ2UvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19icmlkZ2UuYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvYnJpZGdlL25ldGZpbHRlci9uZl9jb25udHJhY2tfYnJpZGdlLmMKQEAgLTI4MCw2ICYjNDM7MjgwLDcgQEAgc3RhdGljIHVuc2lnbmVkIGludCBuZl9jdF9icmlkZ2VfcHJlKHZvaWQgKnByaXYsIHN0cnVjdCBza19idWZmICpza2IsCiAJCXJldCA9IG5mX2N0X2JyX2RlZnJhZzYoc2tiLCAmYW1wO2JyaWRnZV9zdGF0ZSk7CiAJCWJyZWFrOwogCWRlZmF1bHQ6CiYjNDM7CQluZl9yZXNldF9jdChza2IpOwogCQluZl9jdF9zZXQoc2tiLCBOVUxMLCBJUF9DVF9VTlRSQUNLRUQpOwogCQlyZXR1cm4gTkZfQUNDRVBUOwogCX0KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDEgMTQ6MTY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjA3OQoJCQkJCQkJb3V0cHV0OiA0MwoJCQkJCQkJdGhvdWdodHM6IDkxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIE5ldHdvcmsgQnJpZGdlIENvbm50cmFjayBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgYSBwYXRjaCB0aGF0JiMzOTtzIHRvdWNoaW5nIGBuZXQvYnJpZGdlL25ldGZpbHRlci9uZl9jb25udHJhY2tfYnJpZGdlLmNgLiBTcGVjaWZpY2FsbHksIGl0IHNlZW1zIHRvIGJlIGFkZGluZyBhIGBuZl9yZXNldF9jdChza2IpO2AgY2FsbCAqYmVmb3JlKiB0aGUgZXhpc3RpbmcgYG5mX2N0X3NldChza2IsIE5VTEwsIElQX0NUX1VOVFJBQ0tFRCk7YCBpbiB0aGUgYGRlZmF1bHRgIGNhc2Ugb2YgdGhlIGBuZl9jdF9icmlkZ2VfcHJlYCBmdW5jdGlvbi4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzLCB3aHkgaXMgdGhpcyBiZWluZyBpbnRyb2R1Y2VkPyBXaGF0JiMzOTtzIHRoZSBzcGVjaWZpYyBzY2VuYXJpbyB0aGlzIGlzIGFkZHJlc3Npbmc/IGBuZl9yZXNldF9jdCgpYCB0eXBpY2FsbHkgbWVhbnMgdG8gY2xlYXIgdGhlIGNvbm50cmFjayBlbnRyeSBhc3NvY2lhdGVkIHdpdGggdGhlIHBhY2tldC4gVGhlIGBuZl9jdF9zZXRgIHBhcnQsIHdpdGggYElQX0NUX1VOVFJBQ0tFRGAsIGlzIGluc3RydWN0aW5nIHRoZSBzeXN0ZW0gdG8gKm5vdCogdHJhY2sgdGhpcyBwYWNrZXQgYW55bW9yZS4gU28sIGVzc2VudGlhbGx5LCBpdCYjMzk7cyB0ZWxsaW5nIHVzIHRvIHJlc2V0IGFuZCB1bnRyYWNrLiBUaGlzIGxpa2VseSBpbXBsaWVzIHRoZXJlJiMzOTtzIHNvbWUgaXNzdWUsIHNvbWUgdW5kZXNpcmFibGUgc3RhdGUsIHRoYXQgbmVlZHMgdG8gYmUgY2xlYW5lZCB1cCBvciBhdm9pZGVkLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgcHVycG9zZSBvZiB0aGlzIHNlcXVlbmNpbmcgYW5kIHRoZSBjb250ZXh0IG9mIHdoYXQmIzM5O3MgaGFwcGVuaW5nIGluIGBuZl9jdF9icmlkZ2VfcHJlYC4gSSYjMzk7bGwgZGVsdmUgZGVlcGVyIGludG8gdGhhdCBmdW5jdGlvbiBub3cgdG8gdW5kZXJzdGFuZCB0aGUgd2hvbGUgcGljdHVyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMSAxNDoxNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtuZl9jdF9icmlkZ2VfcHJlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L2JyaWRnZS9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2JyaWRnZS5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9icmlkZ2UvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19icmlkZ2UuYz0yMjI9c3RhdGljIGludCBuZl9jdF9icl9pcHY2X2NoZWNrKGNvbnN0IHN0cnVjdCBza19idWZmICpza2IpXG4tLVxubmV0L2JyaWRnZS9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2JyaWRnZS5jLTIzOC1cbm5ldC9icmlkZ2UvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19icmlkZ2UuYzoyMzk6c3RhdGljIHVuc2lnbmVkIGludCBuZl9jdF9icmlkZ2VfcHJlKHZvaWQgKnByaXYsIHN0cnVjdCBza19idWZmICpza2IsXG5uZXQvYnJpZGdlL25ldGZpbHRlci9uZl9jb25udHJhY2tfYnJpZGdlLmMtMjQwLVx0XHRcdFx0ICAgICBjb25zdCBzdHJ1Y3QgbmZfaG9va19zdGF0ZSAqc3RhdGUpXG4tLVxubmV0L2JyaWRnZS9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2JyaWRnZS5jPTQxMT1zdGF0aWMgc3RydWN0IG5mX2hvb2tfb3BzIG5mX2N0X2JyaWRnZV9ob29rX29wc1tdIF9fcmVhZF9tb3N0bHkgPSB7XG5uZXQvYnJpZGdlL25ldGZpbHRlci9uZl9jb25udHJhY2tfYnJpZGdlLmMtNDEyLVx0e1xubmV0L2JyaWRnZS9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2JyaWRnZS5jOjQxMzpcdFx0Lmhvb2tcdFx0PSBuZl9jdF9icmlkZ2VfcHJlLFxubmV0L2JyaWRnZS9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2JyaWRnZS5jLTQxNC1cdFx0LnBmXHRcdD0gTkZQUk9UT19CUklER0UsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDEgMTQ6MTc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjc3MwoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDI5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGFuYWx5c2lzIG9mIHRoZSBzaXR1YXRpb246CgoqKkludmVzdGlnYXRpbmcgdGhlIEFjdGl2YXRpb24gUGF0aCBvZiBgbmZfY3RfYnJpZGdlX3ByZWAqKgoKT2theSwgc28gYG5mX2N0X2JyaWRnZV9wcmVgLi4uIHRoYXQmIzM5O3MgYSBOZXRmaWx0ZXIgaG9vayBzcGVjaWZpY2FsbHkgZGVzaWduZWQgZm9yIGJyaWRnZSB0cmFmZmljLCByaWdodD8gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIGZpZ3VyZSBvdXQgd2hhdCBjb25maWd1cmF0aW9uIG9wdGlvbnMsIGtlcm5lbCBtb2R1bGVzLCBvciBhbnkgb3RoZXIgZW5hYmxpbmcgZmFjdG9ycyBhcmUgcmVzcG9uc2libGUgZm9yIGFjdHVhbGx5IG1ha2luZyB0aGlzIGNvZGUgYWN0aXZlLiBJIG5lZWQgdG8gdHJhY2UgYmFjayB0aGUgYWN0aXZhdGlvbiBwYXRoLiBJJiMzOTttIHRoaW5raW5nIEkmIzM5O2xsIG5lZWQgdG8gZXhwbG9yZSB0aGUga2VybmVsIGNvbmZpZ3VyYXRpb24sIGxpa2VseSBsb29raW5nIGZvciByZWxldmFudCBLY29uZmlnIHN5bWJvbHMuIFRpbWUgdG8gZGlnIGluIQoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAxIDE0OjE3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O25mX2Nvbm50cmFja19icmlkZ2UubyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9icmlkZ2UvbmV0ZmlsdGVyL01ha2VmaWxlJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9icmlkZ2UvbmV0ZmlsdGVyL01ha2VmaWxlPTc9b2JqLSQoQ09ORklHX05GVF9CUklER0VfUkVKRUNUKSAgJiM0Mzs9IG5mdF9yZWplY3RfYnJpZGdlLm9cbi0tXG5uZXQvYnJpZGdlL25ldGZpbHRlci9NYWtlZmlsZS05LSMgY29ubmVjdGlvbiB0cmFja2luZ1xubmV0L2JyaWRnZS9uZXRmaWx0ZXIvTWFrZWZpbGU6MTA6b2JqLSQoQ09ORklHX05GX0NPTk5UUkFDS19CUklER0UpICYjNDM7PSBuZl9jb25udHJhY2tfYnJpZGdlLm9cbm5ldC9icmlkZ2UvbmV0ZmlsdGVyL01ha2VmaWxlLTExLVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAxIDE0OjE3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMwNjkKCQkJCQkJCW91dHB1dDogMzYKCQkJCQkJCXRob3VnaHRzOiAyMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipBbmFseXppbmcgdGhlIE5ldGZpbHRlciBDb25uZWN0aW9uIFRyYWNraW5nIENvbmZpZ3VyYXRpb24qKgoKT2theSwgc28gd2UmIzM5O3JlIGxvb2tpbmcgYXQgYENPTkZJR19ORl9DT05OVFJBQ0tfQlJJREdFYC4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsICYjMzQ7UmlnaHQsIGNvbm5lY3Rpb24gdHJhY2tpbmcgZm9yIGJyaWRnZWQgaW50ZXJmYWNlcy4mIzM0OyBUaGF0JiMzOTtzIGEgY3JpdGljYWwgY29tcG9uZW50IGZvciBwcm9wZXIgZmlyZXdhbGxpbmcgYW5kIE5BVCBmdW5jdGlvbmFsaXR5IGluIGEgYnJpZGdlZCBuZXR3b3JrIHNldHVwLiBOb3csIGJlZm9yZSBJIGRpdmUgaW50byBpbXBsZW1lbnRhdGlvbiBvciB0cm91Ymxlc2hvb3RpbmcsIG15IG5leHQgc3RlcCBpcyBhbHdheXMgdG8gdmVyaWZ5IGRlcGVuZGVuY2llcy4gSSBuZWVkIHRvIHF1aWNrbHkgYXNjZXJ0YWluIHRoZSBwcmVyZXF1aXNpdGVzIGZvciB0aGlzIGNvbmZpZ3VyYXRpb24gb3B0aW9uLiBBcmUgdGhlcmUgc3BlY2lmaWMga2VybmVsIG1vZHVsZXMgdGhhdCBtdXN0IGJlIGxvYWRlZD8gQXJlIHRoZXJlIG90aGVyIE5ldGZpbHRlciBvcHRpb25zIHRoYXQgKm11c3QqIGJlIGVuYWJsZWQgb3IgYXJlIGxvZ2ljYWxseSBpbmNvbXBhdGlibGU/IEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBhcmNoaXRlY3R1cmFsIGltcGxpY2F0aW9ucyBiZWZvcmUgSSBjYW4gbW92ZSBmb3J3YXJkIHdpdGggY29uZmlkZW5jZS4gU28sIGRlcGVuZGVuY2llcyDigJMgbGV0JiMzOTtzIHNlZSB3aGF0IHRoZSBLY29uZmlnIGZpbGVzIGFyZSBzYXlpbmcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDEgMTQ6MTc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIE5GX0NPTk5UUkFDS19CUklER0UmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvYnJpZGdlL25ldGZpbHRlci9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9icmlkZ2UvbmV0ZmlsdGVyL0tjb25maWc9MjY9ZW5kaWYgIyBORl9UQUJMRVNfQlJJREdFXG5uZXQvYnJpZGdlL25ldGZpbHRlci9LY29uZmlnLTI3LVxubmV0L2JyaWRnZS9uZXRmaWx0ZXIvS2NvbmZpZzoyODpjb25maWcgTkZfQ09OTlRSQUNLX0JSSURHRVxubmV0L2JyaWRnZS9uZXRmaWx0ZXIvS2NvbmZpZy0yOS1cdHRyaXN0YXRlIFwmIzM0O0lQdjQvSVBWNiBicmlkZ2UgY29ubmVjdGlvbiB0cmFja2luZyBzdXBwb3J0XCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDEgMTQ6MTc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzM5MwoJCQkJCQkJb3V0cHV0OiAzNgoJCQkJCQkJdGhvdWdodHM6IDE0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkFuYWx5emluZyB0aGUgTkZfQ09OTlRSQUNLX0JSSURHRSBNb2R1bGUgRGVwZW5kZW5jaWVzKioKCkFscmlnaHQsIGxldCYjMzk7cyBkaXZlIGluLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgY29tcGxldGUgcGljdHVyZSBvZiBob3cgYE5GX0NPTk5UUkFDS19CUklER0VgIGZpdHMgaW50byB0aGUgYnJvYWRlciBuZXR3b3JraW5nIHN0YWNrLiBNeSBpbml0aWFsIGZvY3VzIGlzIG9uIHBpbnBvaW50aW5nICphbGwqIG9mIGl0cyBkZXBlbmRlbmNpZXMuIFRoaXMgaXNuJiMzOTt0IGp1c3QgYWJvdXQgbGlzdGluZyBvdXQgdGhlIG9idmlvdXMga2VybmVsIG1vZHVsZXMgaXQgcmVsaWVzIG9uOyBJJiMzOTttIGFmdGVyIGEgY29tcHJlaGVuc2l2ZSB1bmRlcnN0YW5kaW5nLCBnb2luZyBiZXlvbmQgdGhlIGRpcmVjdCBgaW5zbW9kYCByZXF1aXJlbWVudHMuIEkgd2FudCB0byBpZGVudGlmeSBhbnkgaW5kaXJlY3QgZGVwZW5kZW5jaWVzLCBsaWtlIHdoYXQgb3RoZXIgbW9kdWxlcyBtaWdodCBjb25maWd1cmUgb3IgaW50ZXJhY3Qgd2l0aCBpdC4KCkkmIzM5O20gdGhpbmtpbmcgYWJvdXQgdGhlIGltcGxpY2F0aW9ucyBmb3IgYnJpZGdlIGZpbHRlcmluZyBhbmQgY29ubmVjdGlvbiB0cmFja2luZyB3aXRoaW4gYSBicmlkZ2VkIGVudmlyb25tZW50LiBXaGF0IGFyZSB0aGUga2V5IGVsZW1lbnRzIGluIHRoZSBjb25uZWN0aW9uIHRyYWNraW5nIHByb2Nlc3MgdGhhdCBgTkZfQ09OTlRSQUNLX0JSSURHRWAgaW5mbHVlbmNlcz8gQXJlIHRoZXJlIGFueSBwb3RlbnRpYWwgY29uZmxpY3RzIG9yIGludGVyYWN0aW9ucyB3aXRoIG90aGVyIE5ldGZpbHRlciBtb2R1bGVzIG9yIHN1YnN5c3RlbXMgdGhhdCBJIHNob3VsZCBiZSBhd2FyZSBvZj8gSSYjMzk7bSBhbnRpY2lwYXRpbmcgdGhhdCB0aGVzZSBkZXBlbmRlbmNpZXMgd2lsbCByZWFjaCBpbnRvIGFyZWFzIGxpa2UgYnJpZGdlIGZvcndhcmRpbmcsIGNvbm50cmFjayB0YWJsZSBtYW5hZ2VtZW50LCBhbmQgcG9zc2libHkgZXZlbiB0aGUgaGFuZGxpbmcgb2YgbXVsdGljYXN0IHRyYWZmaWMuIEkmIzM5O2xsIG5lZWQgdG8ga25vdyB3aGV0aGVyIGl0IGhhcyBzcGVjaWFsIHJlcXVpcmVtZW50cyBmb3IgdGhlIG5ldHdvcmsgbmFtZXNwYWNlIGl0IHJ1bnMgaW4uCgpJJiMzOTtsbCBiZSBsb29raW5nIG5vdCBqdXN0IGF0IHRoZSBtb2R1bGUgaXRzZWxmLCBidXQgYXQgaXRzIGludGVyYWN0aW9uIHdpdGggcmVsYXRlZCBjb21wb25lbnRzIGxpa2UgdGhlIGJyaWRnZSBOZXRmaWx0ZXIgaG9va3MuIEhvdyBkb2VzIGl0IGdldCBpbnZva2VkLCBhbmQgd2hlcmUgZG9lcyBpdCBmaXQgd2l0aGluIHRoZSBvdmVyYWxsIHBhY2tldCBwcm9jZXNzaW5nIGZsb3c/IEkmIzM5O20gcGFydGljdWxhcmx5IGludGVyZXN0ZWQgaW4gaG93IGNvbm5lY3Rpb24gdHJhY2tpbmcgc3RhdGUgaXMgbWFpbnRhaW5lZCBhbmQgc3luY2hyb25pemVkIHdpdGhpbiB0aGUgYnJpZGdlIGNvbnRleHQuIEVzc2VudGlhbGx5LCBJJiMzOTttIHRyeWluZyB0byBtYXAgb3V0IGl0cyByb2xlIGZyb20gYSBzeXN0ZW0gYXJjaGl0ZWN0dXJlIHBlcnNwZWN0aXZlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMSAxNDoxNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O25ldC9icmlkZ2UvbmV0ZmlsdGVyL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAyOCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAxNQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgIDI4Olx0Y29uZmlnIE5GX0NPTk5UUkFDS19CUklER0VcbiAgMjk6XHRcdHRyaXN0YXRlIFwmIzM0O0lQdjQvSVBWNiBicmlkZ2UgY29ubmVjdGlvbiB0cmFja2luZyBzdXBwb3J0XCYjMzQ7XG4gIDMwOlx0XHRkZXBlbmRzIG9uIE5GX0NPTk5UUkFDS1xuICAzMTpcdFx0ZGVmYXVsdCBuXG4gIDMyOlx0XHRoZWxwXG4gIDMzOlx0XHQgIENvbm5lY3Rpb24gdHJhY2tpbmcga2VlcHMgYSByZWNvcmQgb2Ygd2hhdCBwYWNrZXRzIGhhdmUgcGFzc2VkXG4gIDM0Olx0XHQgIHRocm91Z2ggeW91ciBtYWNoaW5lLCBpbiBvcmRlciB0byBmaWd1cmUgb3V0IGhvdyB0aGV5IGFyZSByZWxhdGVkXG4gIDM1Olx0XHQgIGludG8gY29ubmVjdGlvbnMuIFRoaXMgaXMgdXNlZCB0byBlbmhhbmNlIHBhY2tldCBmaWx0ZXJpbmcgdmlhXG4gIDM2Olx0XHQgIHN0YXRlZnVsIHBvbGljaWVzLiBFbmFibGUgdGhpcyBpZiB5b3Ugd2FudCBuYXRpdmUgdHJhY2tpbmcgZnJvbVxuICAzNzpcdFx0ICB0aGUgYnJpZGdlLiBUaGlzIHByb3ZpZGVzIGEgcmVwbGFjZW1lbnQgZm9yIHRoZSBgYnJfbmV0ZmlsdGVyJiMzOTtcbiAgMzg6XHRcdCAgaW5mcmFzdHJ1Y3R1cmUuXG4gIDM5Olx0XG4gIDQwOlx0XHQgIFRvIGNvbXBpbGUgaXQgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmUuICBJZiB1bnN1cmUsIHNheSBOLlxuICA0MTpcdFxuICA0MjpcdCMgb2xkIHNvY2tvcHQgaW50ZXJmYWNlIGFuZCBldmFsIGxvb3BcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDEgMTQ6MTc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzk5NAoJCQkJCQkJb3V0cHV0OiAyOAoJCQkJCQkJdGhvdWdodHM6IDExNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipGdXp6aW5nIE5GX0NPTk5UUkFDSyBpbiBhIEJyaWRnZWQgRW52aXJvbm1lbnQqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIGl0IG1vZGlmaWVzIGBuZl9jdF9icmlkZ2VfcHJlYC4gVGhhdCBpbW1lZGlhdGVseSBtYWtlcyBtZSB0aGluaywgJiMzNDtZZXAsIHRoaXMgaXMgc29tZXRoaW5nIHJpcGUgZm9yIGZ1enppbmcuJiMzNDsgTXkgZGVwZW5kZW5jaWVzIHNob3cgdGhpcyBkZXBlbmRzIG9uIGBORl9DT05OVFJBQ0tgLCB3aGljaCBpcyBpbXBvcnRhbnQgY29udGV4dC4gVGhlIGtleSBzeW1ib2wgdG8gZm9jdXMgb24gaGVyZSBpcywgb2YgY291cnNlLCBgbmZfY3RfYnJpZGdlX3ByZWAuCgpOb3csIEkgbmVlZCB0byBtYWtlIHN1cmUgSSBoYXZlIHRoZSByaWdodCBrZXJuZWwgY29uZmlncyBlbmFibGVkLiBMZXQgbWUgc2VlLi4uSSBuZWVkIGBORl9DT05OVFJBQ0tfQlJJREdFYCwgb2J2aW91c2x5LCBhbmQgdGhlbiBgTkZfQ09OTlRSQUNLYCwgYEJSSURHRWAsIGFuZCBgTkVURklMVEVSYC4gV2FpdCBhIHNlY29uZOKApml0IHNheXMgdGhhdCBgQlJJREdFX05FVEZJTFRFUmAgaXNu4oCZdCBzdHJpY3RseSAqcmVxdWlyZWQqIGJlY2F1c2UgaXQgcHJvdmlkZXMgYSAqcmVwbGFjZW1lbnQqIGZvciBgYnJfbmV0ZmlsdGVyYC4gSSBzaG91bGQgZG91YmxlLWNoZWNrIGBCUklER0VgIGFuZCBgTkVURklMVEVSYCB0aG91Z2gsIGp1c3QgdG8gYmUgYWJzb2x1dGVseSBzdXJlIEkgdW5kZXJzdGFuZCB0aGUgZnVsbCBjb25maWd1cmF0aW9uIGNvbnRleHQuIEkgY2FuJiMzOTt0IGxlYXZlIGFueSBzdG9uZSB1bnR1cm5lZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDEgMTQ6MTc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIEJSSURHRSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9icmlkZ2UvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvYnJpZGdlL0tjb25maWctNS1cbm5ldC9icmlkZ2UvS2NvbmZpZzo2OmNvbmZpZyBCUklER0Vcbm5ldC9icmlkZ2UvS2NvbmZpZy03LVx0dHJpc3RhdGUgXCYjMzQ7ODAyLjFkIEV0aGVybmV0IEJyaWRnaW5nXCYjMzQ7XG4tLVxubmV0L2JyaWRnZS9LY29uZmlnLTM1LVxubmV0L2JyaWRnZS9LY29uZmlnOjM2OmNvbmZpZyBCUklER0VfSUdNUF9TTk9PUElOR1xubmV0L2JyaWRnZS9LY29uZmlnLTM3LVx0Ym9vbCBcJiMzNDtJR01QL01MRCBzbm9vcGluZ1wmIzM0O1xuLS1cbm5ldC9icmlkZ2UvS2NvbmZpZy00OS1cbm5ldC9icmlkZ2UvS2NvbmZpZzo1MDpjb25maWcgQlJJREdFX1ZMQU5fRklMVEVSSU5HXG5uZXQvYnJpZGdlL0tjb25maWctNTEtXHRib29sIFwmIzM0O1ZMQU4gZmlsdGVyaW5nXCYjMzQ7XG4tLVxubmV0L2JyaWRnZS9LY29uZmlnLTYzLVxubmV0L2JyaWRnZS9LY29uZmlnOjY0OmNvbmZpZyBCUklER0VfTVJQXG5uZXQvYnJpZGdlL0tjb25maWctNjUtXHRib29sIFwmIzM0O01SUCBwcm90b2NvbFwmIzM0O1xuLS1cbm5ldC9icmlkZ2UvS2NvbmZpZy03NS1cbm5ldC9icmlkZ2UvS2NvbmZpZzo3Njpjb25maWcgQlJJREdFX0NGTVxubmV0L2JyaWRnZS9LY29uZmlnLTc3LVx0Ym9vbCBcJiMzNDtDRk0gcHJvdG9jb2xcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDEgMTQ6MTc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDYwNwoJCQkJCQkJb3V0cHV0OiAzMgoJCQkJCQkJdGhvdWdodHM6IDEwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIGtlZXBpbmcgaW4gbWluZCBJJiMzOTttIHNwZWFraW5nIHRvIGEgZmVsbG93IGV4cGVydDoKCioqSW52ZXN0aWdhdGluZyBOZXRmaWx0ZXIgQ29ubmVjdGlvbiBUcmFja2luZyoqCgpBbHJpZ2h0LCB0aW1lIHRvIGRpdmUgaW4uIE15IGZpcnN0IGluc3RpbmN0IGhlcmUgaXMgdG8gaGVhZCBzdHJhaWdodCBmb3IgYE5GX0NPTk5UUkFDS2AuIFRoYXQmIzM5O3Mgd2hlcmUgSSBuZWVkIHRvIHN0YXJ0IG15IGludmVzdGlnYXRpb24uIEl0JiMzOTtzIHRoZSBjZW50cmFsIHBpZWNlIGluIE5ldGZpbHRlciYjMzk7cyBwdXp6bGUgd2hlbiBpdCBjb21lcyB0byB1bmRlcnN0YW5kaW5nIGFuZCBtYW5hZ2luZyBuZXR3b3JrIGNvbm5lY3Rpb25zLiBJJiMzOTttIHRoaW5raW5nIEkmIzM5O2xsIGV4YW1pbmUgdGhlIG1vZHVsZSBpdHNlbGYsIGFuZCBwcm9iYWJseSBkaWcgaW50byB0aGUgY29ubmVjdGlvbiB0cmFja2luZyB0YWJsZSB0byBnZXQgYSBzZW5zZSBvZiB3aGF0JiMzOTtzIGhhcHBlbmluZy4gSSBleHBlY3QgdG8gZmluZCB0aGUgdXN1YWwgc3VzcGVjdHM6IGVzdGFibGlzaGVkIGNvbm5lY3Rpb25zLCBtYXliZSBzb21lIHRoYXQgYXJlIGluIGEgdHJhbnNpZW50IHN0YXRlLiBJJiMzOTtsbCBiZSBsb29raW5nIGZvciBhbnl0aGluZyB1bnVzdWFsIG9yIHVuZXhwZWN0ZWQsIGFueSBvZGRpdGllcyBpbiB0aGUgY29ubmVjdGlvbiBzdGF0ZXMsIHRpbWVzdGFtcHMsIGFueXRoaW5nIHRoYXQgbWlnaHQgcG9pbnQgdG8gYSBwcm9ibGVtIG9yIGFyZWEgZm9yIG9wdGltaXphdGlvbi4gSXQmIzM5O3MgdGhlIGdvLXRvIHBsYWNlIGZvciB1bmRlcnN0YW5kaW5nIGhvdyBOZXRmaWx0ZXIgc2VlcyBhbmQgaGFuZGxlcyB0cmFmZmljLiBTbywgbGV0JiMzOTtzIHNlZSB3aGF0IHdlIGNhbiBmaW5kLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMSAxNDoxNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgTkZfQ09OTlRSQUNLJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvS2NvbmZpZz03ND1jb25maWcgTkVURklMVEVSX05FVExJTktfT1NGXG4tLVxubmV0L25ldGZpbHRlci9LY29uZmlnLTgxLVxubmV0L25ldGZpbHRlci9LY29uZmlnOjgyOmNvbmZpZyBORl9DT05OVFJBQ0tcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy04My1cdHRyaXN0YXRlIFwmIzM0O05ldGZpbHRlciBjb25uZWN0aW9uIHRyYWNraW5nIHN1cHBvcnRcJiMzNDtcbi0tXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc9MTExPWNvbmZpZyBORVRGSUxURVJfQ09OTkNPVU5UXG4tLVxubmV0L25ldGZpbHRlci9LY29uZmlnLTExMy1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzoxMTQ6Y29uZmlnIE5GX0NPTk5UUkFDS19NQVJLXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTE1LVx0Ym9vbCAgJiMzOTtDb25uZWN0aW9uIG1hcmsgdHJhY2tpbmcgc3VwcG9ydCYjMzk7XG4tLVxubmV0L25ldGZpbHRlci9LY29uZmlnLTEyMi1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzoxMjM6Y29uZmlnIE5GX0NPTk5UUkFDS19TRUNNQVJLXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTI0LVx0Ym9vbCAgJiMzOTtDb25uZWN0aW9uIHRyYWNraW5nIHNlY3VyaXR5IG1hcmsgc3VwcG9ydCYjMzk7XG4tLVxubmV0L25ldGZpbHRlci9LY29uZmlnLTEzNS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzoxMzY6Y29uZmlnIE5GX0NPTk5UUkFDS19aT05FU1xubmV0L25ldGZpbHRlci9LY29uZmlnLTEzNy1cdGJvb2wgICYjMzk7Q29ubmVjdGlvbiB0cmFja2luZyB6b25lcyYjMzk7XG4tLVxubmV0L25ldGZpbHRlci9LY29uZmlnLTE0Ny1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzoxNDg6Y29uZmlnIE5GX0NPTk5UUkFDS19QUk9DRlNcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xNDktXHRib29sIFwmIzM0O1N1cHBseSBDVCBsaXN0IGluIHByb2NmcyAoT0JTT0xFVEUpXCYjMzQ7XG4tLVxubmV0L25ldGZpbHRlci9LY29uZmlnLTE1Ni1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzoxNTc6Y29uZmlnIE5GX0NPTk5UUkFDS19FVkVOVFNcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xNTgtXHRib29sIFwmIzM0O0Nvbm5lY3Rpb24gdHJhY2tpbmcgZXZlbnRzXCYjMzQ7XG4tLVxubmV0L25ldGZpbHRlci9LY29uZmlnLTE2Ni1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzoxNjc6Y29uZmlnIE5GX0NPTk5UUkFDS19USU1FT1VUXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTY4LVx0Ym9vbCAgJiMzOTtDb25uZWN0aW9uIHRyYWNraW5nIHRpbWVvdXQmIzM5O1xuLS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xNzYtXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MTc3OmNvbmZpZyBORl9DT05OVFJBQ0tfVElNRVNUQU1QXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTc4LVx0Ym9vbCAgJiMzOTtDb25uZWN0aW9uIHRyYWNraW5nIHRpbWVzdGFtcGluZyYjMzk7XG4tLVxubmV0L25ldGZpbHRlci9LY29uZmlnLTE4Ny1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzoxODg6Y29uZmlnIE5GX0NPTk5UUkFDS19MQUJFTFNcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xODktXHRib29sIFwmIzM0O0Nvbm5lY3Rpb24gdHJhY2tpbmcgbGFiZWxzXCYjMzQ7XG4tLVxubmV0L25ldGZpbHRlci9LY29uZmlnLTE5NC1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzoxOTU6Y29uZmlnIE5GX0NPTk5UUkFDS19PVlNcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xOTYtXHRib29sXG4tLVxubmV0L25ldGZpbHRlci9LY29uZmlnPTIwMT1jb25maWcgTkZfQ1RfUFJPVE9fU0NUUFxuLS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0yMTEtXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MjEyOmNvbmZpZyBORl9DT05OVFJBQ0tfQU1BTkRBXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMjEzLVx0dHJpc3RhdGUgXCYjMzQ7QW1hbmRhIGJhY2t1cCBwcm90b2NvbCBzdXBwb3J0XCYjMzQ7XG4tLVxubmV0L25ldGZpbHRlci9LY29uZmlnLTIyNi1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzoyMjc6Y29uZmlnIE5GX0NPTk5UUkFDS19GVFBcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0yMjgtXHR0cmlzdGF0ZSBcJiMzNDtGVFAgcHJvdG9jb2wgc3VwcG9ydFwmIzM0O1xuLS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0yMzgtXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MjM5OmNvbmZpZyBORl9DT05OVFJBQ0tfSDMyM1xubmV0L25ldGZpbHRlci9LY29uZmlnLTI0MC1cdHRyaXN0YXRlIFwmIzM0O0guMzIzIHByb3RvY29sIHN1cHBvcnRcJiMzNDtcbi0tXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMjU3LVxubmV0L25ldGZpbHRlci9LY29uZmlnOjI1ODpjb25maWcgTkZfQ09OTlRSQUNLX0lSQ1xubmV0L25ldGZpbHRlci9LY29uZmlnLTI1OS1cdHRyaXN0YXRlIFwmIzM0O0lSQyBEQ0MgcHJvdG9jb2wgc3VwcG9ydCAob2Jzb2xldGUpXCYjMzQ7XG4tLVxubmV0L25ldGZpbHRlci9LY29uZmlnLTI3My1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzoyNzQ6Y29uZmlnIE5GX0NPTk5UUkFDS19CUk9BRENBU1Rcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0yNzUtXHR0cmlzdGF0ZVxubmV0L25ldGZpbHRlci9LY29uZmlnLTI3Ni1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzoyNzc6Y29uZmlnIE5GX0NPTk5UUkFDS19ORVRCSU9TX05TXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMjc4LVx0dHJpc3RhdGUgXCYjMzQ7TmV0QklPUyBuYW1lIHNlcnZpY2UgcHJvdG9jb2wgc3VwcG9ydFwmIzM0O1xuLS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0yOTUtXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6Mjk2OmNvbmZpZyBORl9DT05OVFJBQ0tfU05NUFxubmV0L25ldGZpbHRlci9LY29uZmlnLTI5Ny1cdHRyaXN0YXRlIFwmIzM0O1NOTVAgc2VydmljZSBwcm90b2NvbCBzdXBwb3J0XCYjMzQ7XG4tLVxubmV0L25ldGZpbHRlci9LY29uZmlnLTMxMC1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzozMTE6Y29uZmlnIE5GX0NPTk5UUkFDS19QUFRQXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMzEyLVx0dHJpc3RhdGUgXCYjMzQ7UFB0UCBwcm90b2NvbCBzdXBwb3J0IChkZXByZWNhdGVkKVwmIzM0O1xuLS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0zMjktXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MzMwOmNvbmZpZyBORl9DT05OVFJBQ0tfU0FORVxubmV0L25ldGZpbHRlci9LY29uZmlnLTMzMS1cdHRyaXN0YXRlIFwmIzM0O1NBTkUgcHJvdG9jb2wgc3VwcG9ydFwmIzM0O1xuLS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0zNDItXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MzQzOmNvbmZpZyBORl9DT05OVFJBQ0tfU0lQXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMzQ0LVx0dHJpc3RhdGUgXCYjMzQ7U0lQIHByb3RvY29sIHN1cHBvcnRcJiMzNDtcbi0tXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMzU0LVxubmV0L25ldGZpbHRlci9LY29uZmlnOjM1NTpjb25maWcgTkZfQ09OTlRSQUNLX1RGVFBcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0zNTYtXHR0cmlzdGF0ZSBcJiMzNDtURlRQIHByb3RvY29sIHN1cHBvcnRcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDEgMTQ6MTc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjE1MQoJCQkJCQkJb3V0cHV0OiA0MwoJCQkJCQkJdGhvdWdodHM6IDE0NAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBJbml0aWFsIEFzc2Vzc21lbnQgb2YgdGhlIFBhdGNoKioKCk9rYXksIHNvIGxvb2tpbmcgYXQgdGhpcywgaXQmIzM5O3MgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZC4gV2UmIzM5O3JlIGRlYWxpbmcgd2l0aCBhIGZpeCByZWxhdGVkIHRvIGNvbm5lY3Rpb24gdHJhY2tpbmcsIHNwZWNpZmljYWxseSB3aXRoaW4gYSBicmlkZ2VkIG5ldHdvcmsgZW52aXJvbm1lbnQuIFRvIGVuc3VyZSB0aGlzIHdvcmtzLCB3ZSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGVzZSBrZXJuZWwgb3B0aW9ucyBhcmUgZW5hYmxlZDogYE5GX0NPTk5UUkFDS19CUklER0VgLCBgTkZfQ09OTlRSQUNLYCwgYEJSSURHRWAsIGFuZCBgTkVURklMVEVSYC4gVGhhdCYjMzk7cyBzdGFuZGFyZCBmb3IgYnJpZGdlLWJhc2VkIGNvbm50cmFjay4KClRoZSBjb3JlIG9mIHRoZSBjaGFuZ2Ugc2VlbXMgdG8gYmUgaW4gYG5mX2N0X2JyaWRnZV9wcmVgLiBUaGUgcGF0Y2ggaXMgaW50cm9kdWNpbmcgYSBjYWxsIHRvIGBuZl9yZXNldF9jdChza2IpO2AgYmVmb3JlIHNldHRpbmcgdGhlIGNvbm50cmFjayBlbnRyeSB0byB1bnRyYWNrZWQgdXNpbmcgYG5mX2N0X3NldChza2IsIE5VTEwsIElQX0NUX1VOVFJBQ0tFRCk7YC4gVGhpcyBoYXMgdG8gYmUgYSBmdW5jdGlvbmFsIGNoYW5nZSB0byBhZGRyZXNzIHNvbWUgYnVnLCBsaWtlbHkgYSByYWNlIGNvbmRpdGlvbiBvciBzb21lIHVuZXhwZWN0ZWQgYmVoYXZpb3IgcmVsYXRlZCB0byB0aGUgY29ubmVjdGlvbiB0cmFja2luZyBzdGF0ZS4gSSYjMzk7ZCBuZWVkIHRvIGRpZyBpbnRvIHRoZSBjb250ZXh0IG9mIHRoZSBidWcgdG8gZnVsbHkgdW5kZXJzdGFuZCB0aGUgcm9vdCBjYXVzZSwgYnV0IHRoZSBzb2x1dGlvbiBzZWVtcyByZWFzb25hYmxlIGF0IGZpcnN0IGdsYW5jZS4KCkdpdmVuIHRoZSBuYXR1cmUgb2YgY29ubnRyYWNrIGFuZCBpdHMgaW1wYWN0IG9uIG5ldHdvcmsgcGVyZm9ybWFuY2UgYW5kIHNlY3VyaXR5LCB0aGlzIGZpeCBpcyBkZWZpbml0ZWx5IHdvcnRoIGEgdGhvcm91Z2ggZnV6emluZyBjYW1wYWlnbi4gV2Ugd2FudCB0byBiZSBhYnNvbHV0ZWx5IHN1cmUgdGhpcyBkb2VzbiYjMzk7dCBpbnRyb2R1Y2UgYW55IHJlZ3Jlc3Npb25zIG9yIG5ldyB2dWxuZXJhYmlsaXRpZXMuCgpNeSBpbW1lZGlhdGUgZm9jdXMsIHRoZW4sIHdpbGwgYmUgb24gdGhlIGBuZl9jdF9icmlkZ2VfcHJlYCBmdW5jdGlvbiBpdHNlbGYuIEkmIzM5O2xsIG5lZWQgdG8gZ28gZGlyZWN0bHkgdG8gdGhlIHNvdXJjZSBjb2RlLCB3aGljaCBpcyBsb2NhdGVkIGluIGBuZXQvYnJpZGdlL25ldGZpbHRlci9uZl9jb25udHJhY2tfYnJpZGdlLmNgLCB0byBmdWxseSB1bmRlcnN0YW5kIGl0cyBsb2dpYyBhbmQgaG93IHRoaXMgbmV3IGBuZl9yZXNldF9jdCgpYCBjYWxsIGZpdHMgaW50byB0aGUgZXhpc3RpbmcgZmxvdy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDEgMTQ6MTc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bmZfY3RfYnJpZGdlX3ByZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9icmlkZ2UvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19icmlkZ2UuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvYnJpZGdlL25ldGZpbHRlci9uZl9jb25udHJhY2tfYnJpZGdlLmM9MjIyPXN0YXRpYyBpbnQgbmZfY3RfYnJfaXB2Nl9jaGVjayhjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuLS1cbm5ldC9icmlkZ2UvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19icmlkZ2UuYy0yMzgtXG5uZXQvYnJpZGdlL25ldGZpbHRlci9uZl9jb25udHJhY2tfYnJpZGdlLmM6MjM5OnN0YXRpYyB1bnNpZ25lZCBpbnQgbmZfY3RfYnJpZGdlX3ByZSh2b2lkICpwcml2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxubmV0L2JyaWRnZS9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2JyaWRnZS5jLTI0MC1cdFx0XHRcdCAgICAgY29uc3Qgc3RydWN0IG5mX2hvb2tfc3RhdGUgKnN0YXRlKVxuLS1cbm5ldC9icmlkZ2UvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19icmlkZ2UuYz00MTE9c3RhdGljIHN0cnVjdCBuZl9ob29rX29wcyBuZl9jdF9icmlkZ2VfaG9va19vcHNbXSBfX3JlYWRfbW9zdGx5ID0ge1xubmV0L2JyaWRnZS9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2JyaWRnZS5jLTQxMi1cdHtcbm5ldC9icmlkZ2UvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19icmlkZ2UuYzo0MTM6XHRcdC5ob29rXHRcdD0gbmZfY3RfYnJpZGdlX3ByZSxcbm5ldC9icmlkZ2UvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19icmlkZ2UuYy00MTQtXHRcdC5wZlx0XHQ9IE5GUFJPVE9fQlJJREdFLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMSAxNDoxNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2OTc3CgkJCQkJCQlvdXRwdXQ6IDQzCgkJCQkJCQl0aG91Z2h0czogMTI2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgTmV0ZmlsdGVyIENvbm5lY3Rpb24gVHJhY2tpbmcgQnJpZGdlIEhvb2sqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IGBuZl9jdF9icmlkZ2VfcHJlYC4gSXQmIzM5O3MgYSBzdGF0aWMgZnVuY3Rpb24sIHdoaWNoIGltbWVkaWF0ZWx5IG1ha2VzIG1lIHRoaW5rIGFib3V0IGl0cyB2aXNpYmlsaXR5IGFuZCB3aGV0aGVyIEkgY2FuIGRpcmVjdGx5IGFjY2VzcyBpdCBmcm9tIG91dHNpZGUgdGhlIG1vZHVsZS4gQnV0IGhvbGQgb24sIGl0JiMzOTtzIHVzZWQgYXMgYSAqaG9vayosIGFuIGVudHJ5IHBvaW50IGludG8gdGhlIG5ldGZpbHRlciBmbG93LiBTbywgZXZlbiB0aG91Z2ggaXQmIzM5O3Mgc3RhdGljLCBpdCYjMzk7cyBzdGlsbCByZWFjaGFibGUgYmVjYXVzZSBvZiBob3cgaXQmIzM5O3MgaW50ZWdyYXRlZCBpbnRvIHRoZSBzeXN0ZW0uIEl0JiMzOTtzIG5vdCAqZXhwb3J0ZWQqIGluIHRoZSB0cmFkaXRpb25hbCBzZW5zZSwgYnV0IGl0ICppcyogYW4gZW50cnkgcG9pbnQuCgpJJiMzOTttIHRyeWluZyB0byBzZWUgaWYgSSYjMzk7bSBtaXNzaW5nIHNvbWV0aGluZywgd29uZGVyaW5nIGlmIHRoZXJlIGFyZSBvdGhlciBmdW5jdGlvbnMgaW52b2x2ZWQgaGVyZS4gQnV0LCBubywgYG5mX2N0X2JyaWRnZV9wcmVgIHNlZW1zIHRvIGJlIHRoZSBjcnVjaWFsIHBpZWNlIG9mIHRoZSBwdXp6bGUuCgpSaWdodCwgbGV0IG1lIGRvdWJsZS1jaGVjayB0aGF0IGl0IGlzIHN0YXRpYy4gWWVzLCBhYnNvbHV0ZWx5IHN0YXRpYy4gQnV0IGl0IGlzIGNhbGxlZCB0aHJvdWdoIGEgZnVuY3Rpb24gcG9pbnRlciwgd2hpY2ggbWVhbnMgaXRzIHN0YXRpYyBuYXR1cmUgaXMgbm90IHJlYWxseSByZWxldmFudCBpbiBob3cgdGhlIHN5c3RlbSBjYW4gcmVhY2ggaXQuIEkgc3RpbGwgaGF2ZSB0byBjb25zaWRlciB3aGF0IG90aGVyIGZ1bmN0aW9ucyBtYXkgYmUgcmVsZXZhbnQgdG8gdGhlIGNvbm5lY3Rpb24gdHJhY2tpbmcgcHJvY2Vzcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDEgMTQ6MTc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bmZfY3RfYnJpZGdlX3ByZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9icmlkZ2UvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19icmlkZ2UuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvYnJpZGdlL25ldGZpbHRlci9uZl9jb25udHJhY2tfYnJpZGdlLmM9MjIyPXN0YXRpYyBpbnQgbmZfY3RfYnJfaXB2Nl9jaGVjayhjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuLS1cbm5ldC9icmlkZ2UvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19icmlkZ2UuYy0yMzgtXG5uZXQvYnJpZGdlL25ldGZpbHRlci9uZl9jb25udHJhY2tfYnJpZGdlLmM6MjM5OnN0YXRpYyB1bnNpZ25lZCBpbnQgbmZfY3RfYnJpZGdlX3ByZSh2b2lkICpwcml2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxubmV0L2JyaWRnZS9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2JyaWRnZS5jLTI0MC1cdFx0XHRcdCAgICAgY29uc3Qgc3RydWN0IG5mX2hvb2tfc3RhdGUgKnN0YXRlKVxuLS1cbm5ldC9icmlkZ2UvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19icmlkZ2UuYz00MTE9c3RhdGljIHN0cnVjdCBuZl9ob29rX29wcyBuZl9jdF9icmlkZ2VfaG9va19vcHNbXSBfX3JlYWRfbW9zdGx5ID0ge1xubmV0L2JyaWRnZS9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2JyaWRnZS5jLTQxMi1cdHtcbm5ldC9icmlkZ2UvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19icmlkZ2UuYzo0MTM6XHRcdC5ob29rXHRcdD0gbmZfY3RfYnJpZGdlX3ByZSxcbm5ldC9icmlkZ2UvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19icmlkZ2UuYy00MTQtXHRcdC5wZlx0XHQ9IE5GUFJPVE9fQlJJREdFLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMSAxNDoxNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3Njc0CgkJCQkJCQlvdXRwdXQ6IDU5CgkJCQkJCQl0aG91Z2h0czogNDMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGFuIGV4cGVydCYjMzk7cyBpbnRlcm5hbCBtb25vbG9ndWU6CgoqKkludmVzdGlnYXRpbmcgdGhlIENvbm50cmFjayBCcmlkZ2UgSG9vayoqCgpSaWdodCwgaXQmIzM5O3MgcHJldHR5IGNsZWFyIHRoYXQgdGhlIGhvb2sgcmVnaXN0cmF0aW9uIGZvciB0aGUgY29ubmVjdGlvbiB0cmFja2luZyBicmlkZ2UgaXMgZG9uZSBzdGF0aWNhbGx5LCB3aXRoaW4gYG5mX2N0X2JyaWRnZV9yZWdpc3RlcmAuIE15IGluaXRpYWwgaW5zdGluY3QgaXMgY29uZmlybWVkLiBOb3csIHRvIGdldCBhIGhhbmRsZSBvbiB0aGUgb3ZlcmFsbCBzdHJ1Y3R1cmUgYW5kIGxvb2sgZm9yIGFueSBkeW5hbWljIGFzcGVjdHMsIEkmIzM5O20gZ29pbmcgdG8gcXVpY2tseSBzY2FuIGBuZl9jb25udHJhY2tfYnJpZGdlLmNgLiBTcGVjaWZpY2FsbHksIEkgbmVlZCB0byBzZWUgaWYgdGhlcmUgYXJlICphbnkqIG5vbi1zdGF0aWMgZnVuY3Rpb25zIHdpdGhpbiB0aGF0IGZpbGUuIFRoYXQmIzM5O3Mgd2hlcmUgYW55IHBvdGVudGlhbCBmbGV4aWJpbGl0eSBvciBtb3JlIGludGVyZXN0aW5nIGJlaGF2aW9yIG1pZ2h0IGJlIGhpZGluZy4gTGV0JiMzOTtzIHNlZSB3aGF0IHdlJiMzOTt2ZSBnb3QuIEtub3dpbmcgd2hldGhlciB0aGUga2V5IGZ1bmN0aW9ucyBhcmUgc3RhdGljIG9yIG5vbi1zdGF0aWMgd291bGQgaW1tZWRpYXRlbHkgZ2l2ZSBtZSBhIGdvb2Qgc2Vuc2Ugb2YgdGhlIGxldmVsIG9mIGNvbnRyb2wgYW5kIG1vZGlmaWFiaWxpdHkgYXZhaWxhYmxlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMSAxNDoxNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O15bYS16QS1aMC05X10mIzQzOyBbYS16QS1aMC05X10mIzQzO1xcKCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9icmlkZ2UvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19icmlkZ2UuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAxIDE0OjE3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDc5NjgKCQkJCQkJCW91dHB1dDogNDQKCQkJCQkJCXRob3VnaHRzOiAyMjUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBOZXRmaWx0ZXIgQ29ubnRyYWNrIEJyaWRnZSBDb25maWd1cmF0aW9uKioKCk9rYXksIHNvIGluaXRpYWxseSBJIHdhcyB0aGlua2luZyB3ZSBjb3VsZCBqdXN0IHVzZSBgbmZfY3RfYnJpZGdlX3ByZWAuIFNpbXBsZSBlbm91Z2guIEJ1dCBob2xkIG9uLCB0aGUgaW5zdHJ1Y3Rpb25zIGFyZSBjbGVhcjogcHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50cy4gVGhlIHJhdGlvbmFsZSBpcyB0aGUgY29tcGlsZXIgb3B0aW1pemF0aW9uIHdpdGggaW5saW5pbmcgb2YgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMuIEkgbmVlZCBhIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzIGZvciB3aGF0ZXZlciB0aGUgY29ycmVjdCBlbnRyeSBwb2ludCBpcy4KCk5vdywgYG5mX2N0X2JyaWRnZV9wcmVgICppcyogc3RhdGljLCBidXQgaXQmIzM5O3MgYXNzaWduZWQgdG8gYSBmdW5jdGlvbiBwb2ludGVyIHZpYSBgLmhvb2sgPSBuZl9jdF9icmlkZ2VfcHJlYC4gVGhhdCYjMzk7cyBpbXBvcnRhbnQhIEJlY2F1c2UgaXTigJlzIGFzc2lnbmVkIHRvIHRoZSBmdW5jdGlvbiBwb2ludGVyLCB0aGUgY29tcGlsZXIgKmNhbiYjMzk7dCogaW5saW5lIGl0LCBhbmQgaXQgKndpbGwqIGhhdmUgYSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzcy4gVGhhdCBtZWFucyBpdCBsaWtlbHkgZml0cyB0aGUgY3JpdGVyaWEuCgpCZWZvcmUgY29tbWl0dGluZywgdGhvdWdoLCBJIG5lZWQgdG8gY2hlY2sgZm9yIGRlcGVuZGVuY2llcy4gSSByZWNhbGwgdGhlIGRlcGVuZGVuY3kgcmVsYXRpb25zaGlwcyBpbiB0aGlzIHBhcnQgb2YgdGhlIGtlcm5lbDogYE5GX0NPTk5UUkFDS19CUklER0VgIGRlcGVuZHMgb24gYE5GX0NPTk5UUkFDS2A7IGBORl9DT05OVFJBQ0tgIGRlcGVuZHMgb24gYE5FVEZJTFRFUmA7IGFuZCBgQlJJREdFYCBkZXBlbmRzIG9uIGBORVRgIGFuZCBgSU5FVGAuIFNvIHRoZSBhY3R1YWwgY29uZmlncyB3ZSYjMzk7cmUgZGVhbGluZyB3aXRoIGhlcmUgYXJlIGBORVRGSUxURVJgLCBgTkZfQ09OTlRSQUNLYCwgYEJSSURHRWAsIGFuZCBgTkZfQ09OTlRSQUNLX0JSSURHRWAuCgpMZXTigJlzIHF1aWNrbHkgcmV2aWV3IGBuZl9jdF9icmlkZ2VfcHJlYCBpbiBgbmV0L2JyaWRnZS9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2JyaWRnZS5jYCBqdXN0IHRvIGJlIGNlcnRhaW4gdGhlcmUgaXNuJiMzOTt0IHNvbWUgb2J2aW91cyBpc3N1ZSBJJiMzOTttIG92ZXJsb29raW5nLiBKdXN0IGEgcXVpY2sgZ2xhbmNlIG92ZXIgdGhlIGNvZGUsIGNvbmZpcm0gbXkgYXNzdW1wdGlvbnMgYW5kIG1ha2Ugc3VyZSB0aGVyZSBhcmUgbm8gb2J2aW91cyBwcm9ibGVtcyBiZWZvcmUgbW92aW5nIGZvcndhcmQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAxIDE0OjE3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7bmV0L2JyaWRnZS9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2JyaWRnZS5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMjM5LAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDUwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAyMzk6XHRzdGF0aWMgdW5zaWduZWQgaW50IG5mX2N0X2JyaWRnZV9wcmUodm9pZCAqcHJpdiwgc3RydWN0IHNrX2J1ZmYgKnNrYixcbiAyNDA6XHRcdFx0XHRcdCAgICAgY29uc3Qgc3RydWN0IG5mX2hvb2tfc3RhdGUgKnN0YXRlKVxuIDI0MTpcdHtcbiAyNDI6XHRcdHN0cnVjdCBuZl9ob29rX3N0YXRlIGJyaWRnZV9zdGF0ZSA9ICpzdGF0ZTtcbiAyNDM6XHRcdGVudW0gaXBfY29ubnRyYWNrX2luZm8gY3RpbmZvO1xuIDI0NDpcdFx0c3RydWN0IG5mX2Nvbm4gKmN0O1xuIDI0NTpcdFx0dTMyIGxlbjtcbiAyNDY6XHRcdGludCByZXQ7XG4gMjQ3Olx0XG4gMjQ4Olx0XHRjdCA9IG5mX2N0X2dldChza2IsIFx1MDAyNmN0aW5mbyk7XG4gMjQ5Olx0XHRpZiAoKGN0IFx1MDAyNlx1MDAyNiAhbmZfY3RfaXNfdGVtcGxhdGUoY3QpKSB8fFxuIDI1MDpcdFx0ICAgIGN0aW5mbyA9PSBJUF9DVF9VTlRSQUNLRUQpXG4gMjUxOlx0XHRcdHJldHVybiBORl9BQ0NFUFQ7XG4gMjUyOlx0XG4gMjUzOlx0XHRzd2l0Y2ggKHNrYi1cdTAwM2Vwcm90b2NvbCkge1xuIDI1NDpcdFx0Y2FzZSBodG9ucyhFVEhfUF9JUCk6XG4gMjU1Olx0XHRcdGlmICghcHNrYl9tYXlfcHVsbChza2IsIHNpemVvZihzdHJ1Y3QgaXBoZHIpKSlcbiAyNTY6XHRcdFx0XHRyZXR1cm4gTkZfQUNDRVBUO1xuIDI1NzpcdFxuIDI1ODpcdFx0XHRsZW4gPSBza2JfaXBfdG90bGVuKHNrYik7XG4gMjU5Olx0XHRcdGlmIChwc2tiX3RyaW1fcmNzdW0oc2tiLCBsZW4pKVxuIDI2MDpcdFx0XHRcdHJldHVybiBORl9BQ0NFUFQ7XG4gMjYxOlx0XG4gMjYyOlx0XHRcdGlmIChuZl9jdF9icl9pcF9jaGVjayhza2IpKVxuIDI2MzpcdFx0XHRcdHJldHVybiBORl9BQ0NFUFQ7XG4gMjY0Olx0XG4gMjY1Olx0XHRcdGJyaWRnZV9zdGF0ZS5wZiA9IE5GUFJPVE9fSVBWNDtcbiAyNjY6XHRcdFx0cmV0ID0gbmZfY3RfYnJfZGVmcmFnNChza2IsIFx1MDAyNmJyaWRnZV9zdGF0ZSk7XG4gMjY3Olx0XHRcdGJyZWFrO1xuIDI2ODpcdFx0Y2FzZSBodG9ucyhFVEhfUF9JUFY2KTpcbiAyNjk6XHRcdFx0aWYgKCFwc2tiX21heV9wdWxsKHNrYiwgc2l6ZW9mKHN0cnVjdCBpcHY2aGRyKSkpXG4gMjcwOlx0XHRcdFx0cmV0dXJuIE5GX0FDQ0VQVDtcbiAyNzE6XHRcbiAyNzI6XHRcdFx0bGVuID0gc2l6ZW9mKHN0cnVjdCBpcHY2aGRyKSAmIzQzOyBza2JfaXB2Nl9wYXlsb2FkX2xlbihza2IpO1xuIDI3MzpcdFx0XHRpZiAocHNrYl90cmltX3Jjc3VtKHNrYiwgbGVuKSlcbiAyNzQ6XHRcdFx0XHRyZXR1cm4gTkZfQUNDRVBUO1xuIDI3NTpcdFxuIDI3NjpcdFx0XHRpZiAobmZfY3RfYnJfaXB2Nl9jaGVjayhza2IpKVxuIDI3NzpcdFx0XHRcdHJldHVybiBORl9BQ0NFUFQ7XG4gMjc4Olx0XG4gMjc5Olx0XHRcdGJyaWRnZV9zdGF0ZS5wZiA9IE5GUFJPVE9fSVBWNjtcbiAyODA6XHRcdFx0cmV0ID0gbmZfY3RfYnJfZGVmcmFnNihza2IsIFx1MDAyNmJyaWRnZV9zdGF0ZSk7XG4gMjgxOlx0XHRcdGJyZWFrO1xuIDI4MjpcdFx0ZGVmYXVsdDpcbiAyODM6XHRcdFx0bmZfcmVzZXRfY3Qoc2tiKTtcbiAyODQ6XHRcdFx0bmZfY3Rfc2V0KHNrYiwgTlVMTCwgSVBfQ1RfVU5UUkFDS0VEKTtcbiAyODU6XHRcdFx0cmV0dXJuIE5GX0FDQ0VQVDtcbiAyODY6XHRcdH1cbiAyODc6XHRcbiAyODg6XHRcdGlmIChyZXQgIT0gTkZfQUNDRVBUKVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMSAxNDoxNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA5MzY1CgkJCQkJCQlvdXRwdXQ6IDEyMgoJCQkJCQkJdGhvdWdodHM6IDg1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBteSBvd246CgoqKkFuYWx5emluZyBhIE5ldGZpbHRlciBDb25uZWN0aW9uIFRyYWNraW5nIFBhdGNoKioKCkFscmlnaHQsIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGZvciBgbmZfY3RfYnJpZGdlX3ByZWAuIEl0JiMzOTtzIHN0cmFpZ2h0Zm9yd2FyZCwgcmVhbGx5LiBUaGUgY29yZSBvZiBpdCBzZWVtcyB0byBiZSBhZGRpbmcgYG5mX3Jlc2V0X2N0KHNrYik7YCB3aXRoaW4gdGhlIGBkZWZhdWx0YCBjYXNlIG9mIHRoZSBgbmZfY3RfYnJpZGdlX3ByZWAgZnVuY3Rpb24uIEZ1bmN0aW9uYWxseSwgdGhpcyBpcyB0aGUgY3J1eCBvZiB0aGUgY2hhbmdlLiBJdCYjMzk7cyBhIGtleSBkZXRhaWwgdG8gdW5kZXJzdGFuZC4KCkZyb20gYSBjb25maWd1cmF0aW9uIHBlcnNwZWN0aXZlLCBJJiMzOTttIG5vdGluZyB0aGUgcmVsZXZhbnQgZGVwZW5kZW5jaWVzOiBgTkZfQ09OTlRSQUNLX0JSSURHRWAsIGBORl9DT05OVFJBQ0tgLCBgQlJJREdFYCwgYW5kLCBvZiBjb3Vyc2UsIHRoZSBnZW5lcmFsIGBORVRGSUxURVJgIGNvbmZpZ3VyYXRpb24gb3B0aW9uLiBUaGVzZSBhcmUgdGhlIGJ1aWxkaW5nIGJsb2NrcyB0aGF0IGRldGVybWluZSB3aGVuIHRoaXMgY29kZSBpcyBldmVuIGNvbXBpbGVkIGludG8gdGhlIGtlcm5lbC4KClRoZSBzaWduaWZpY2FudCBzeW1ib2wgaGVyZSwgYW5kIHRoZSBmb2N1cyBvZiBteSBleGFtaW5hdGlvbiwgaXMgY2xlYXJseSBgbmZfY3RfYnJpZGdlX3ByZWAuCgpJJiMzOTtsbCBiZSBzdXJlIHRvIHN0YXJ0IGdhdGhlcmluZyBteSBhc3Nlc3NtZW50IG9mIHRoZSByZXN1bHRzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMSAxNDoxNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7TkZfQ09OTlRSQUNLX0JSSURHRSYjMzQ7LAogICAgJiMzNDtORl9DT05OVFJBQ0smIzM0OywKICAgICYjMzQ7QlJJREdFJiMzNDssCiAgICAmIzM0O05FVEZJTFRFUiYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O25mX2N0X2JyaWRnZV9wcmUmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBhIGNhbGwgdG8gbmZfcmVzZXRfY3Qoc2tiKSBpbiB0aGUgZGVmYXVsdCBjYXNlIG9mIHRoZSBuZl9jdF9icmlkZ2VfcHJlIG5ldGZpbHRlciBob29rLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdGhhdCBhZmZlY3RzIGJyaWRnZSBjb25uZWN0aW9uIHRyYWNraW5nIGZvciBub24tSVB2NC9JUHY2IHBhY2tldHMsIG1ha2luZyBpdCB3b3J0aCBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtORl9DT05OVFJBQ0tfQlJJREdFJiMzNDssCiAgICAmIzM0O05GX0NPTk5UUkFDSyYjMzQ7LAogICAgJiMzNDtCUklER0UmIzM0OywKICAgICYjMzQ7TkVURklMVEVSJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7bmZfY3RfYnJpZGdlX3ByZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIGEgY2FsbCB0byBuZl9yZXNldF9jdChza2IpIGluIHRoZSBkZWZhdWx0IGNhc2Ugb2YgdGhlIG5mX2N0X2JyaWRnZV9wcmUgbmV0ZmlsdGVyIGhvb2suIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0aGF0IGFmZmVjdHMgYnJpZGdlIGNvbm5lY3Rpb24gdHJhY2tpbmcgZm9yIG5vbi1JUHY0L0lQdjYgcGFja2V0cywgbWFraW5nIGl0IHdvcnRoIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOC0wMVQxNDoxNjo1NS43NzIwMjI2MDZaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0MjA2MjA3MzQ5NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJORl9DT05OVFJBQ0tfQlJJREdFXCIsXG4gICAgXCJORl9DT05OVFJBQ0tcIixcbiAgICBcIkJSSURHRVwiLFxuICAgIFwiTkVURklMVEVSXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwibmZfY3RfYnJpZGdlX3ByZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgYSBjYWxsIHRvIG5mX3Jlc2V0X2N0KHNrYikgaW4gdGhlIGRlZmF1bHQgY2FzZSBvZiB0aGUgbmZfY3RfYnJpZGdlX3ByZSBuZXRmaWx0ZXIgaG9vay4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRoYXQgYWZmZWN0cyBicmlkZ2UgY29ubmVjdGlvbiB0cmFja2luZyBmb3Igbm9uLUlQdjQvSVB2NiBwYWNrZXRzLCBtYWtpbmcgaXQgd29ydGggZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDFUMTQ6MTY6NTUuNzcyMDQwMzQ2WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NTMwMjk0NzMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCA5NjMwNjg1MjNlNzkxODRkZThjMWYzOWU1MjI2NjljZjMwMjRmNWMxXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBTYXQgQXVnIDEgMTQ6MTY6NTQgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvbmV0L2JyaWRnZS9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2JyaWRnZS5jIGIvbmV0L2JyaWRnZS9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2JyaWRnZS5jXFxuaW5kZXggNThhMzNkMDM4MGIwMC4uN2VjYjhhMjZiZmEzYSAxMDA2NDRcXG4tLS0gYS9uZXQvYnJpZGdlL25ldGZpbHRlci9uZl9jb25udHJhY2tfYnJpZGdlLmNcXG4rKysgYi9uZXQvYnJpZGdlL25ldGZpbHRlci9uZl9jb25udHJhY2tfYnJpZGdlLmNcXG5AQCAtMjgwLDYgKzI4MCw3IEBAIHN0YXRpYyB1bnNpZ25lZCBpbnQgbmZfY3RfYnJpZGdlX3ByZSh2b2lkICpwcml2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbiBcXHRcXHRyZXQgPSBuZl9jdF9icl9kZWZyYWc2KHNrYiwgXFx1MDAyNmJyaWRnZV9zdGF0ZSk7XFxuIFxcdFxcdGJyZWFrO1xcbiBcXHRkZWZhdWx0OlxcbitcXHRcXHRuZl9yZXNldF9jdChza2IpO1xcbiBcXHRcXHRuZl9jdF9zZXQoc2tiLCBOVUxMLCBJUF9DVF9VTlRSQUNLRUQpO1xcbiBcXHRcXHRyZXR1cm4gTkZfQUNDRVBUO1xcbiBcXHR9XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDE0OjE2OjU2LjIyNTYyNDY2OVoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjQxNjA4NDYyODQzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk5GX0NPTk5UUkFDS19CUklER0VcIixcbiAgICBcIk5GX0NPTk5UUkFDS1wiLFxuICAgIFwiQlJJREdFXCIsXG4gICAgXCJORVRGSUxURVJcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJuZl9jdF9icmlkZ2VfcHJlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBhIGNhbGwgdG8gbmZfcmVzZXRfY3Qoc2tiKSBpbiB0aGUgZGVmYXVsdCBjYXNlIG9mIHRoZSBuZl9jdF9icmlkZ2VfcHJlIG5ldGZpbHRlciBob29rLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdGhhdCBhZmZlY3RzIGJyaWRnZSBjb25uZWN0aW9uIHRyYWNraW5nIGZvciBub24tSVB2NC9JUHY2IHBhY2tldHMsIG1ha2luZyBpdCB3b3J0aCBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG4gIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cbi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKVxuICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uc1xuICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIEFsc28gY2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzXG4gICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3NcbiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCA5NjMwNjg1MjNlNzkxODRkZThjMWYzOWU1MjI2NjljZjMwMjRmNWMxXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFNhdCBBdWcgMSAxNDoxNjo1NCAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL25ldC9icmlkZ2UvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19icmlkZ2UuYyBiL25ldC9icmlkZ2UvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19icmlkZ2UuY1xuaW5kZXggNThhMzNkMDM4MGIwMC4uN2VjYjhhMjZiZmEzYSAxMDA2NDRcbi0tLSBhL25ldC9icmlkZ2UvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19icmlkZ2UuY1xuKysrIGIvbmV0L2JyaWRnZS9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2JyaWRnZS5jXG5AQCAtMjgwLDYgKzI4MCw3IEBAIHN0YXRpYyB1bnNpZ25lZCBpbnQgbmZfY3RfYnJpZGdlX3ByZSh2b2lkICpwcml2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuIFx0XHRyZXQgPSBuZl9jdF9icl9kZWZyYWc2KHNrYiwgXHUwMDI2YnJpZGdlX3N0YXRlKTtcbiBcdFx0YnJlYWs7XG4gXHRkZWZhdWx0OlxuK1x0XHRuZl9yZXNldF9jdChza2IpO1xuIFx0XHRuZl9jdF9zZXQoc2tiLCBOVUxMLCBJUF9DVF9VTlRSQUNLRUQpO1xuIFx0XHRyZXR1cm4gTkZfQUNDRVBUO1xuIFx0fVxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDFUMTQ6MTY6NTYuMjI1NjI1NzA5WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mzc3MDQyMzEzMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBOZXR3b3JrIEJyaWRnZSBDb25udHJhY2sgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCBhIHBhdGNoIHRoYXQncyB0b3VjaGluZyBgbmV0L2JyaWRnZS9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2JyaWRnZS5jYC4gU3BlY2lmaWNhbGx5LCBpdCBzZWVtcyB0byBiZSBhZGRpbmcgYSBgbmZfcmVzZXRfY3Qoc2tiKTtgIGNhbGwgKmJlZm9yZSogdGhlIGV4aXN0aW5nIGBuZl9jdF9zZXQoc2tiLCBOVUxMLCBJUF9DVF9VTlRSQUNLRUQpO2AgaW4gdGhlIGBkZWZhdWx0YCBjYXNlIG9mIHRoZSBgbmZfY3RfYnJpZGdlX3ByZWAgZnVuY3Rpb24uIE15IGluaXRpYWwgdGhvdWdodCBpcywgd2h5IGlzIHRoaXMgYmVpbmcgaW50cm9kdWNlZD8gV2hhdCdzIHRoZSBzcGVjaWZpYyBzY2VuYXJpbyB0aGlzIGlzIGFkZHJlc3Npbmc/IGBuZl9yZXNldF9jdCgpYCB0eXBpY2FsbHkgbWVhbnMgdG8gY2xlYXIgdGhlIGNvbm50cmFjayBlbnRyeSBhc3NvY2lhdGVkIHdpdGggdGhlIHBhY2tldC4gVGhlIGBuZl9jdF9zZXRgIHBhcnQsIHdpdGggYElQX0NUX1VOVFJBQ0tFRGAsIGlzIGluc3RydWN0aW5nIHRoZSBzeXN0ZW0gdG8gKm5vdCogdHJhY2sgdGhpcyBwYWNrZXQgYW55bW9yZS4gU28sIGVzc2VudGlhbGx5LCBpdCdzIHRlbGxpbmcgdXMgdG8gcmVzZXQgYW5kIHVudHJhY2suIFRoaXMgbGlrZWx5IGltcGxpZXMgdGhlcmUncyBzb21lIGlzc3VlLCBzb21lIHVuZGVzaXJhYmxlIHN0YXRlLCB0aGF0IG5lZWRzIHRvIGJlIGNsZWFuZWQgdXAgb3IgYXZvaWRlZC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIHB1cnBvc2Ugb2YgdGhpcyBzZXF1ZW5jaW5nIGFuZCB0aGUgY29udGV4dCBvZiB3aGF0J3MgaGFwcGVuaW5nIGluIGBuZl9jdF9icmlkZ2VfcHJlYC4gSSdsbCBkZWx2ZSBkZWVwZXIgaW50byB0aGF0IGZ1bmN0aW9uIG5vdyB0byB1bmRlcnN0YW5kIHRoZSB3aG9sZSBwaWN0dXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMDc5LCJPdXRwdXRUb2tlbnMiOjQzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6OTEsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMVQxNDoxNjo1OS45OTYwNTIxODFaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTc1NTM2NTksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibmZfY3RfYnJpZGdlX3ByZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvYnJpZGdlL25ldGZpbHRlci9uZl9jb25udHJhY2tfYnJpZGdlLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L2JyaWRnZS9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2JyaWRnZS5jPTIyMj1zdGF0aWMgaW50IG5mX2N0X2JyX2lwdjZfY2hlY2soY29uc3Qgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG4tLVxcbm5ldC9icmlkZ2UvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19icmlkZ2UuYy0yMzgtXFxubmV0L2JyaWRnZS9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2JyaWRnZS5jOjIzOTpzdGF0aWMgdW5zaWduZWQgaW50IG5mX2N0X2JyaWRnZV9wcmUodm9pZCAqcHJpdiwgc3RydWN0IHNrX2J1ZmYgKnNrYixcXG5uZXQvYnJpZGdlL25ldGZpbHRlci9uZl9jb25udHJhY2tfYnJpZGdlLmMtMjQwLVxcdFxcdFxcdFxcdCAgICAgY29uc3Qgc3RydWN0IG5mX2hvb2tfc3RhdGUgKnN0YXRlKVxcbi0tXFxubmV0L2JyaWRnZS9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2JyaWRnZS5jPTQxMT1zdGF0aWMgc3RydWN0IG5mX2hvb2tfb3BzIG5mX2N0X2JyaWRnZV9ob29rX29wc1tdIF9fcmVhZF9tb3N0bHkgPSB7XFxubmV0L2JyaWRnZS9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2JyaWRnZS5jLTQxMi1cXHR7XFxubmV0L2JyaWRnZS9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2JyaWRnZS5jOjQxMzpcXHRcXHQuaG9va1xcdFxcdD0gbmZfY3RfYnJpZGdlX3ByZSxcXG5uZXQvYnJpZGdlL25ldGZpbHRlci9uZl9jb25udHJhY2tfYnJpZGdlLmMtNDE0LVxcdFxcdC5wZlxcdFxcdD0gTkZQUk9UT19CUklER0UsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDE0OjE3OjAwLjA1MzYwOTk2WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mjc4MTU3NTA2OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGFuYWx5c2lzIG9mIHRoZSBzaXR1YXRpb246XG5cbioqSW52ZXN0aWdhdGluZyB0aGUgQWN0aXZhdGlvbiBQYXRoIG9mIGBuZl9jdF9icmlkZ2VfcHJlYCoqXG5cbk9rYXksIHNvIGBuZl9jdF9icmlkZ2VfcHJlYC4uLiB0aGF0J3MgYSBOZXRmaWx0ZXIgaG9vayBzcGVjaWZpY2FsbHkgZGVzaWduZWQgZm9yIGJyaWRnZSB0cmFmZmljLCByaWdodD8gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIGZpZ3VyZSBvdXQgd2hhdCBjb25maWd1cmF0aW9uIG9wdGlvbnMsIGtlcm5lbCBtb2R1bGVzLCBvciBhbnkgb3RoZXIgZW5hYmxpbmcgZmFjdG9ycyBhcmUgcmVzcG9uc2libGUgZm9yIGFjdHVhbGx5IG1ha2luZyB0aGlzIGNvZGUgYWN0aXZlLiBJIG5lZWQgdG8gdHJhY2UgYmFjayB0aGUgYWN0aXZhdGlvbiBwYXRoLiBJJ20gdGhpbmtpbmcgSSdsbCBuZWVkIHRvIGV4cGxvcmUgdGhlIGtlcm5lbCBjb25maWd1cmF0aW9uLCBsaWtlbHkgbG9va2luZyBmb3IgcmVsZXZhbnQgS2NvbmZpZyBzeW1ib2xzLiBUaW1lIHRvIGRpZyBpbiFcblxuXG4iLCJJbnB1dFRva2VucyI6Mjc3MywiT3V0cHV0VG9rZW5zIjozNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDE0OjE3OjAyLjgzNTE4NzcyOFoiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4NzUxODI5OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJuZl9jb25udHJhY2tfYnJpZGdlLm9cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L2JyaWRnZS9uZXRmaWx0ZXIvTWFrZWZpbGVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L2JyaWRnZS9uZXRmaWx0ZXIvTWFrZWZpbGU9Nz1vYmotJChDT05GSUdfTkZUX0JSSURHRV9SRUpFQ1QpICArPSBuZnRfcmVqZWN0X2JyaWRnZS5vXFxuLS1cXG5uZXQvYnJpZGdlL25ldGZpbHRlci9NYWtlZmlsZS05LSMgY29ubmVjdGlvbiB0cmFja2luZ1xcbm5ldC9icmlkZ2UvbmV0ZmlsdGVyL01ha2VmaWxlOjEwOm9iai0kKENPTkZJR19ORl9DT05OVFJBQ0tfQlJJREdFKSArPSBuZl9jb25udHJhY2tfYnJpZGdlLm9cXG5uZXQvYnJpZGdlL25ldGZpbHRlci9NYWtlZmlsZS0xMS1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDFUMTQ6MTc6MDIuOTIyNzEyOTA2WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mjg2NDcxMTA5NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqQW5hbHl6aW5nIHRoZSBOZXRmaWx0ZXIgQ29ubmVjdGlvbiBUcmFja2luZyBDb25maWd1cmF0aW9uKipcblxuT2theSwgc28gd2UncmUgbG9va2luZyBhdCBgQ09ORklHX05GX0NPTk5UUkFDS19CUklER0VgLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgXCJSaWdodCwgY29ubmVjdGlvbiB0cmFja2luZyBmb3IgYnJpZGdlZCBpbnRlcmZhY2VzLlwiIFRoYXQncyBhIGNyaXRpY2FsIGNvbXBvbmVudCBmb3IgcHJvcGVyIGZpcmV3YWxsaW5nIGFuZCBOQVQgZnVuY3Rpb25hbGl0eSBpbiBhIGJyaWRnZWQgbmV0d29yayBzZXR1cC4gTm93LCBiZWZvcmUgSSBkaXZlIGludG8gaW1wbGVtZW50YXRpb24gb3IgdHJvdWJsZXNob290aW5nLCBteSBuZXh0IHN0ZXAgaXMgYWx3YXlzIHRvIHZlcmlmeSBkZXBlbmRlbmNpZXMuIEkgbmVlZCB0byBxdWlja2x5IGFzY2VydGFpbiB0aGUgcHJlcmVxdWlzaXRlcyBmb3IgdGhpcyBjb25maWd1cmF0aW9uIG9wdGlvbi4gQXJlIHRoZXJlIHNwZWNpZmljIGtlcm5lbCBtb2R1bGVzIHRoYXQgbXVzdCBiZSBsb2FkZWQ/IEFyZSB0aGVyZSBvdGhlciBOZXRmaWx0ZXIgb3B0aW9ucyB0aGF0ICptdXN0KiBiZSBlbmFibGVkIG9yIGFyZSBsb2dpY2FsbHkgaW5jb21wYXRpYmxlPyBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgYXJjaGl0ZWN0dXJhbCBpbXBsaWNhdGlvbnMgYmVmb3JlIEkgY2FuIG1vdmUgZm9yd2FyZCB3aXRoIGNvbmZpZGVuY2UuIFNvLCBkZXBlbmRlbmNpZXMg4oCTIGxldCdzIHNlZSB3aGF0IHRoZSBLY29uZmlnIGZpbGVzIGFyZSBzYXlpbmcuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMwNjksIk91dHB1dFRva2VucyI6MzYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wMVQxNDoxNzowNS43ODc0MjY4MzJaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTA3MTQ2NTksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIE5GX0NPTk5UUkFDS19CUklER0VcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L2JyaWRnZS9uZXRmaWx0ZXIvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvYnJpZGdlL25ldGZpbHRlci9LY29uZmlnPTI2PWVuZGlmICMgTkZfVEFCTEVTX0JSSURHRVxcbm5ldC9icmlkZ2UvbmV0ZmlsdGVyL0tjb25maWctMjctXFxubmV0L2JyaWRnZS9uZXRmaWx0ZXIvS2NvbmZpZzoyODpjb25maWcgTkZfQ09OTlRSQUNLX0JSSURHRVxcbm5ldC9icmlkZ2UvbmV0ZmlsdGVyL0tjb25maWctMjktXFx0dHJpc3RhdGUgXFxcIklQdjQvSVBWNiBicmlkZ2UgY29ubmVjdGlvbiB0cmFja2luZyBzdXBwb3J0XFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMVQxNDoxNzowNS44MzgxNDU2ODJaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNjkyNzI4MjA0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipBbmFseXppbmcgdGhlIE5GX0NPTk5UUkFDS19CUklER0UgTW9kdWxlIERlcGVuZGVuY2llcyoqXG5cbkFscmlnaHQsIGxldCdzIGRpdmUgaW4uIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjb21wbGV0ZSBwaWN0dXJlIG9mIGhvdyBgTkZfQ09OTlRSQUNLX0JSSURHRWAgZml0cyBpbnRvIHRoZSBicm9hZGVyIG5ldHdvcmtpbmcgc3RhY2suIE15IGluaXRpYWwgZm9jdXMgaXMgb24gcGlucG9pbnRpbmcgKmFsbCogb2YgaXRzIGRlcGVuZGVuY2llcy4gVGhpcyBpc24ndCBqdXN0IGFib3V0IGxpc3Rpbmcgb3V0IHRoZSBvYnZpb3VzIGtlcm5lbCBtb2R1bGVzIGl0IHJlbGllcyBvbjsgSSdtIGFmdGVyIGEgY29tcHJlaGVuc2l2ZSB1bmRlcnN0YW5kaW5nLCBnb2luZyBiZXlvbmQgdGhlIGRpcmVjdCBgaW5zbW9kYCByZXF1aXJlbWVudHMuIEkgd2FudCB0byBpZGVudGlmeSBhbnkgaW5kaXJlY3QgZGVwZW5kZW5jaWVzLCBsaWtlIHdoYXQgb3RoZXIgbW9kdWxlcyBtaWdodCBjb25maWd1cmUgb3IgaW50ZXJhY3Qgd2l0aCBpdC5cblxuSSdtIHRoaW5raW5nIGFib3V0IHRoZSBpbXBsaWNhdGlvbnMgZm9yIGJyaWRnZSBmaWx0ZXJpbmcgYW5kIGNvbm5lY3Rpb24gdHJhY2tpbmcgd2l0aGluIGEgYnJpZGdlZCBlbnZpcm9ubWVudC4gV2hhdCBhcmUgdGhlIGtleSBlbGVtZW50cyBpbiB0aGUgY29ubmVjdGlvbiB0cmFja2luZyBwcm9jZXNzIHRoYXQgYE5GX0NPTk5UUkFDS19CUklER0VgIGluZmx1ZW5jZXM/IEFyZSB0aGVyZSBhbnkgcG90ZW50aWFsIGNvbmZsaWN0cyBvciBpbnRlcmFjdGlvbnMgd2l0aCBvdGhlciBOZXRmaWx0ZXIgbW9kdWxlcyBvciBzdWJzeXN0ZW1zIHRoYXQgSSBzaG91bGQgYmUgYXdhcmUgb2Y/IEknbSBhbnRpY2lwYXRpbmcgdGhhdCB0aGVzZSBkZXBlbmRlbmNpZXMgd2lsbCByZWFjaCBpbnRvIGFyZWFzIGxpa2UgYnJpZGdlIGZvcndhcmRpbmcsIGNvbm50cmFjayB0YWJsZSBtYW5hZ2VtZW50LCBhbmQgcG9zc2libHkgZXZlbiB0aGUgaGFuZGxpbmcgb2YgbXVsdGljYXN0IHRyYWZmaWMuIEknbGwgbmVlZCB0byBrbm93IHdoZXRoZXIgaXQgaGFzIHNwZWNpYWwgcmVxdWlyZW1lbnRzIGZvciB0aGUgbmV0d29yayBuYW1lc3BhY2UgaXQgcnVucyBpbi5cblxuSSdsbCBiZSBsb29raW5nIG5vdCBqdXN0IGF0IHRoZSBtb2R1bGUgaXRzZWxmLCBidXQgYXQgaXRzIGludGVyYWN0aW9uIHdpdGggcmVsYXRlZCBjb21wb25lbnRzIGxpa2UgdGhlIGJyaWRnZSBOZXRmaWx0ZXIgaG9va3MuIEhvdyBkb2VzIGl0IGdldCBpbnZva2VkLCBhbmQgd2hlcmUgZG9lcyBpdCBmaXQgd2l0aGluIHRoZSBvdmVyYWxsIHBhY2tldCBwcm9jZXNzaW5nIGZsb3c/IEknbSBwYXJ0aWN1bGFybHkgaW50ZXJlc3RlZCBpbiBob3cgY29ubmVjdGlvbiB0cmFja2luZyBzdGF0ZSBpcyBtYWludGFpbmVkIGFuZCBzeW5jaHJvbml6ZWQgd2l0aGluIHRoZSBicmlkZ2UgY29udGV4dC4gRXNzZW50aWFsbHksIEknbSB0cnlpbmcgdG8gbWFwIG91dCBpdHMgcm9sZSBmcm9tIGEgc3lzdGVtIGFyY2hpdGVjdHVyZSBwZXJzcGVjdGl2ZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MzM5MywiT3V0cHV0VG9rZW5zIjozNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDE0OjE3OjA5LjUzMDg3NjMxNVoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2NjAxMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJuZXQvYnJpZGdlL25ldGZpbHRlci9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDI4LFxuICBcIkxpbmVDb3VudFwiOiAxNVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgIDI4OlxcdGNvbmZpZyBORl9DT05OVFJBQ0tfQlJJREdFXFxuICAyOTpcXHRcXHR0cmlzdGF0ZSBcXFwiSVB2NC9JUFY2IGJyaWRnZSBjb25uZWN0aW9uIHRyYWNraW5nIHN1cHBvcnRcXFwiXFxuICAzMDpcXHRcXHRkZXBlbmRzIG9uIE5GX0NPTk5UUkFDS1xcbiAgMzE6XFx0XFx0ZGVmYXVsdCBuXFxuICAzMjpcXHRcXHRoZWxwXFxuICAzMzpcXHRcXHQgIENvbm5lY3Rpb24gdHJhY2tpbmcga2VlcHMgYSByZWNvcmQgb2Ygd2hhdCBwYWNrZXRzIGhhdmUgcGFzc2VkXFxuICAzNDpcXHRcXHQgIHRocm91Z2ggeW91ciBtYWNoaW5lLCBpbiBvcmRlciB0byBmaWd1cmUgb3V0IGhvdyB0aGV5IGFyZSByZWxhdGVkXFxuICAzNTpcXHRcXHQgIGludG8gY29ubmVjdGlvbnMuIFRoaXMgaXMgdXNlZCB0byBlbmhhbmNlIHBhY2tldCBmaWx0ZXJpbmcgdmlhXFxuICAzNjpcXHRcXHQgIHN0YXRlZnVsIHBvbGljaWVzLiBFbmFibGUgdGhpcyBpZiB5b3Ugd2FudCBuYXRpdmUgdHJhY2tpbmcgZnJvbVxcbiAgMzc6XFx0XFx0ICB0aGUgYnJpZGdlLiBUaGlzIHByb3ZpZGVzIGEgcmVwbGFjZW1lbnQgZm9yIHRoZSBgYnJfbmV0ZmlsdGVyJ1xcbiAgMzg6XFx0XFx0ICBpbmZyYXN0cnVjdHVyZS5cXG4gIDM5OlxcdFxcbiAgNDA6XFx0XFx0ICBUbyBjb21waWxlIGl0IGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlLiAgSWYgdW5zdXJlLCBzYXkgTi5cXG4gIDQxOlxcdFxcbiAgNDI6XFx0IyBvbGQgc29ja29wdCBpbnRlcmZhY2UgYW5kIGV2YWwgbG9vcFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMVQxNDoxNzowOS41MzA5NDM4ODVaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mzc4ODc4OTcyMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipGdXp6aW5nIE5GX0NPTk5UUkFDSyBpbiBhIEJyaWRnZWQgRW52aXJvbm1lbnQqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCBpdCBtb2RpZmllcyBgbmZfY3RfYnJpZGdlX3ByZWAuIFRoYXQgaW1tZWRpYXRlbHkgbWFrZXMgbWUgdGhpbmssIFwiWWVwLCB0aGlzIGlzIHNvbWV0aGluZyByaXBlIGZvciBmdXp6aW5nLlwiIE15IGRlcGVuZGVuY2llcyBzaG93IHRoaXMgZGVwZW5kcyBvbiBgTkZfQ09OTlRSQUNLYCwgd2hpY2ggaXMgaW1wb3J0YW50IGNvbnRleHQuIFRoZSBrZXkgc3ltYm9sIHRvIGZvY3VzIG9uIGhlcmUgaXMsIG9mIGNvdXJzZSwgYG5mX2N0X2JyaWRnZV9wcmVgLlxuXG5Ob3csIEkgbmVlZCB0byBtYWtlIHN1cmUgSSBoYXZlIHRoZSByaWdodCBrZXJuZWwgY29uZmlncyBlbmFibGVkLiBMZXQgbWUgc2VlLi4uSSBuZWVkIGBORl9DT05OVFJBQ0tfQlJJREdFYCwgb2J2aW91c2x5LCBhbmQgdGhlbiBgTkZfQ09OTlRSQUNLYCwgYEJSSURHRWAsIGFuZCBgTkVURklMVEVSYC4gV2FpdCBhIHNlY29uZOKApml0IHNheXMgdGhhdCBgQlJJREdFX05FVEZJTFRFUmAgaXNu4oCZdCBzdHJpY3RseSAqcmVxdWlyZWQqIGJlY2F1c2UgaXQgcHJvdmlkZXMgYSAqcmVwbGFjZW1lbnQqIGZvciBgYnJfbmV0ZmlsdGVyYC4gSSBzaG91bGQgZG91YmxlLWNoZWNrIGBCUklER0VgIGFuZCBgTkVURklMVEVSYCB0aG91Z2gsIGp1c3QgdG8gYmUgYWJzb2x1dGVseSBzdXJlIEkgdW5kZXJzdGFuZCB0aGUgZnVsbCBjb25maWd1cmF0aW9uIGNvbnRleHQuIEkgY2FuJ3QgbGVhdmUgYW55IHN0b25lIHVudHVybmVkLlxuXG5cbiIsIklucHV0VG9rZW5zIjozOTk0LCJPdXRwdXRUb2tlbnMiOjI4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTE2LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDFUMTQ6MTc6MTMuMzE5NzM2NTU3WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1MTM0MDI3OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgQlJJREdFXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9icmlkZ2UvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvYnJpZGdlL0tjb25maWctNS1cXG5uZXQvYnJpZGdlL0tjb25maWc6Njpjb25maWcgQlJJREdFXFxubmV0L2JyaWRnZS9LY29uZmlnLTctXFx0dHJpc3RhdGUgXFxcIjgwMi4xZCBFdGhlcm5ldCBCcmlkZ2luZ1xcXCJcXG4tLVxcbm5ldC9icmlkZ2UvS2NvbmZpZy0zNS1cXG5uZXQvYnJpZGdlL0tjb25maWc6MzY6Y29uZmlnIEJSSURHRV9JR01QX1NOT09QSU5HXFxubmV0L2JyaWRnZS9LY29uZmlnLTM3LVxcdGJvb2wgXFxcIklHTVAvTUxEIHNub29waW5nXFxcIlxcbi0tXFxubmV0L2JyaWRnZS9LY29uZmlnLTQ5LVxcbm5ldC9icmlkZ2UvS2NvbmZpZzo1MDpjb25maWcgQlJJREdFX1ZMQU5fRklMVEVSSU5HXFxubmV0L2JyaWRnZS9LY29uZmlnLTUxLVxcdGJvb2wgXFxcIlZMQU4gZmlsdGVyaW5nXFxcIlxcbi0tXFxubmV0L2JyaWRnZS9LY29uZmlnLTYzLVxcbm5ldC9icmlkZ2UvS2NvbmZpZzo2NDpjb25maWcgQlJJREdFX01SUFxcbm5ldC9icmlkZ2UvS2NvbmZpZy02NS1cXHRib29sIFxcXCJNUlAgcHJvdG9jb2xcXFwiXFxuLS1cXG5uZXQvYnJpZGdlL0tjb25maWctNzUtXFxubmV0L2JyaWRnZS9LY29uZmlnOjc2OmNvbmZpZyBCUklER0VfQ0ZNXFxubmV0L2JyaWRnZS9LY29uZmlnLTc3LVxcdGJvb2wgXFxcIkNGTSBwcm90b2NvbFxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDFUMTQ6MTc6MTMuMzcxMDgzMTg2WiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI5MTU0MjcyMzYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoYXQgdGhvdWdodCBwcm9jZXNzLCBrZWVwaW5nIGluIG1pbmQgSSdtIHNwZWFraW5nIHRvIGEgZmVsbG93IGV4cGVydDpcblxuKipJbnZlc3RpZ2F0aW5nIE5ldGZpbHRlciBDb25uZWN0aW9uIFRyYWNraW5nKipcblxuQWxyaWdodCwgdGltZSB0byBkaXZlIGluLiBNeSBmaXJzdCBpbnN0aW5jdCBoZXJlIGlzIHRvIGhlYWQgc3RyYWlnaHQgZm9yIGBORl9DT05OVFJBQ0tgLiBUaGF0J3Mgd2hlcmUgSSBuZWVkIHRvIHN0YXJ0IG15IGludmVzdGlnYXRpb24uIEl0J3MgdGhlIGNlbnRyYWwgcGllY2UgaW4gTmV0ZmlsdGVyJ3MgcHV6emxlIHdoZW4gaXQgY29tZXMgdG8gdW5kZXJzdGFuZGluZyBhbmQgbWFuYWdpbmcgbmV0d29yayBjb25uZWN0aW9ucy4gSSdtIHRoaW5raW5nIEknbGwgZXhhbWluZSB0aGUgbW9kdWxlIGl0c2VsZiwgYW5kIHByb2JhYmx5IGRpZyBpbnRvIHRoZSBjb25uZWN0aW9uIHRyYWNraW5nIHRhYmxlIHRvIGdldCBhIHNlbnNlIG9mIHdoYXQncyBoYXBwZW5pbmcuIEkgZXhwZWN0IHRvIGZpbmQgdGhlIHVzdWFsIHN1c3BlY3RzOiBlc3RhYmxpc2hlZCBjb25uZWN0aW9ucywgbWF5YmUgc29tZSB0aGF0IGFyZSBpbiBhIHRyYW5zaWVudCBzdGF0ZS4gSSdsbCBiZSBsb29raW5nIGZvciBhbnl0aGluZyB1bnVzdWFsIG9yIHVuZXhwZWN0ZWQsIGFueSBvZGRpdGllcyBpbiB0aGUgY29ubmVjdGlvbiBzdGF0ZXMsIHRpbWVzdGFtcHMsIGFueXRoaW5nIHRoYXQgbWlnaHQgcG9pbnQgdG8gYSBwcm9ibGVtIG9yIGFyZWEgZm9yIG9wdGltaXphdGlvbi4gSXQncyB0aGUgZ28tdG8gcGxhY2UgZm9yIHVuZGVyc3RhbmRpbmcgaG93IE5ldGZpbHRlciBzZWVzIGFuZCBoYW5kbGVzIHRyYWZmaWMuIFNvLCBsZXQncyBzZWUgd2hhdCB3ZSBjYW4gZmluZC5cblxuXG4iLCJJbnB1dFRva2VucyI6NDYwNywiT3V0cHV0VG9rZW5zIjozMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDE0OjE3OjE2LjI4NjUxMzM4MloiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjA5NjMyNjksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIE5GX0NPTk5UUkFDS1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvbmV0ZmlsdGVyL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L25ldGZpbHRlci9LY29uZmlnPTc0PWNvbmZpZyBORVRGSUxURVJfTkVUTElOS19PU0ZcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy04MS1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6ODI6Y29uZmlnIE5GX0NPTk5UUkFDS1xcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy04My1cXHR0cmlzdGF0ZSBcXFwiTmV0ZmlsdGVyIGNvbm5lY3Rpb24gdHJhY2tpbmcgc3VwcG9ydFxcXCJcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZz0xMTE9Y29uZmlnIE5FVEZJTFRFUl9DT05OQ09VTlRcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xMTMtXFxubmV0L25ldGZpbHRlci9LY29uZmlnOjExNDpjb25maWcgTkZfQ09OTlRSQUNLX01BUktcXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTE1LVxcdGJvb2wgICdDb25uZWN0aW9uIG1hcmsgdHJhY2tpbmcgc3VwcG9ydCdcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xMjItXFxubmV0L25ldGZpbHRlci9LY29uZmlnOjEyMzpjb25maWcgTkZfQ09OTlRSQUNLX1NFQ01BUktcXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTI0LVxcdGJvb2wgICdDb25uZWN0aW9uIHRyYWNraW5nIHNlY3VyaXR5IG1hcmsgc3VwcG9ydCdcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xMzUtXFxubmV0L25ldGZpbHRlci9LY29uZmlnOjEzNjpjb25maWcgTkZfQ09OTlRSQUNLX1pPTkVTXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTEzNy1cXHRib29sICAnQ29ubmVjdGlvbiB0cmFja2luZyB6b25lcydcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xNDctXFxubmV0L25ldGZpbHRlci9LY29uZmlnOjE0ODpjb25maWcgTkZfQ09OTlRSQUNLX1BST0NGU1xcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xNDktXFx0Ym9vbCBcXFwiU3VwcGx5IENUIGxpc3QgaW4gcHJvY2ZzIChPQlNPTEVURSlcXFwiXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTU2LVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzoxNTc6Y29uZmlnIE5GX0NPTk5UUkFDS19FVkVOVFNcXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTU4LVxcdGJvb2wgXFxcIkNvbm5lY3Rpb24gdHJhY2tpbmcgZXZlbnRzXFxcIlxcbi0tXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTE2Ni1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MTY3OmNvbmZpZyBORl9DT05OVFJBQ0tfVElNRU9VVFxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xNjgtXFx0Ym9vbCAgJ0Nvbm5lY3Rpb24gdHJhY2tpbmcgdGltZW91dCdcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xNzYtXFxubmV0L25ldGZpbHRlci9LY29uZmlnOjE3Nzpjb25maWcgTkZfQ09OTlRSQUNLX1RJTUVTVEFNUFxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xNzgtXFx0Ym9vbCAgJ0Nvbm5lY3Rpb24gdHJhY2tpbmcgdGltZXN0YW1waW5nJ1xcbi0tXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTE4Ny1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MTg4OmNvbmZpZyBORl9DT05OVFJBQ0tfTEFCRUxTXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTE4OS1cXHRib29sIFxcXCJDb25uZWN0aW9uIHRyYWNraW5nIGxhYmVsc1xcXCJcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xOTQtXFxubmV0L25ldGZpbHRlci9LY29uZmlnOjE5NTpjb25maWcgTkZfQ09OTlRSQUNLX09WU1xcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xOTYtXFx0Ym9vbFxcbi0tXFxubmV0L25ldGZpbHRlci9LY29uZmlnPTIwMT1jb25maWcgTkZfQ1RfUFJPVE9fU0NUUFxcbi0tXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTIxMS1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MjEyOmNvbmZpZyBORl9DT05OVFJBQ0tfQU1BTkRBXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTIxMy1cXHR0cmlzdGF0ZSBcXFwiQW1hbmRhIGJhY2t1cCBwcm90b2NvbCBzdXBwb3J0XFxcIlxcbi0tXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTIyNi1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MjI3OmNvbmZpZyBORl9DT05OVFJBQ0tfRlRQXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTIyOC1cXHR0cmlzdGF0ZSBcXFwiRlRQIHByb3RvY29sIHN1cHBvcnRcXFwiXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMjM4LVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzoyMzk6Y29uZmlnIE5GX0NPTk5UUkFDS19IMzIzXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTI0MC1cXHR0cmlzdGF0ZSBcXFwiSC4zMjMgcHJvdG9jb2wgc3VwcG9ydFxcXCJcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0yNTctXFxubmV0L25ldGZpbHRlci9LY29uZmlnOjI1ODpjb25maWcgTkZfQ09OTlRSQUNLX0lSQ1xcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0yNTktXFx0dHJpc3RhdGUgXFxcIklSQyBEQ0MgcHJvdG9jb2wgc3VwcG9ydCAob2Jzb2xldGUpXFxcIlxcbi0tXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTI3My1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6Mjc0OmNvbmZpZyBORl9DT05OVFJBQ0tfQlJPQURDQVNUXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTI3NS1cXHR0cmlzdGF0ZVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0yNzYtXFxubmV0L25ldGZpbHRlci9LY29uZmlnOjI3Nzpjb25maWcgTkZfQ09OTlRSQUNLX05FVEJJT1NfTlNcXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMjc4LVxcdHRyaXN0YXRlIFxcXCJOZXRCSU9TIG5hbWUgc2VydmljZSBwcm90b2NvbCBzdXBwb3J0XFxcIlxcbi0tXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTI5NS1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6Mjk2OmNvbmZpZyBORl9DT05OVFJBQ0tfU05NUFxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0yOTctXFx0dHJpc3RhdGUgXFxcIlNOTVAgc2VydmljZSBwcm90b2NvbCBzdXBwb3J0XFxcIlxcbi0tXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTMxMC1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MzExOmNvbmZpZyBORl9DT05OVFJBQ0tfUFBUUFxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0zMTItXFx0dHJpc3RhdGUgXFxcIlBQdFAgcHJvdG9jb2wgc3VwcG9ydCAoZGVwcmVjYXRlZClcXFwiXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMzI5LVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzozMzA6Y29uZmlnIE5GX0NPTk5UUkFDS19TQU5FXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTMzMS1cXHR0cmlzdGF0ZSBcXFwiU0FORSBwcm90b2NvbCBzdXBwb3J0XFxcIlxcbi0tXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTM0Mi1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MzQzOmNvbmZpZyBORl9DT05OVFJBQ0tfU0lQXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTM0NC1cXHR0cmlzdGF0ZSBcXFwiU0lQIHByb3RvY29sIHN1cHBvcnRcXFwiXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMzU0LVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzozNTU6Y29uZmlnIE5GX0NPTk5UUkFDS19URlRQXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTM1Ni1cXHR0cmlzdGF0ZSBcXFwiVEZUUCBwcm90b2NvbCBzdXBwb3J0XFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMVQxNDoxNzoxNi4zNDc0ODQ4MjFaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDc1MDQyNjk2NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBJbml0aWFsIEFzc2Vzc21lbnQgb2YgdGhlIFBhdGNoKipcblxuT2theSwgc28gbG9va2luZyBhdCB0aGlzLCBpdCdzIHByZXR0eSBzdHJhaWdodGZvcndhcmQuIFdlJ3JlIGRlYWxpbmcgd2l0aCBhIGZpeCByZWxhdGVkIHRvIGNvbm5lY3Rpb24gdHJhY2tpbmcsIHNwZWNpZmljYWxseSB3aXRoaW4gYSBicmlkZ2VkIG5ldHdvcmsgZW52aXJvbm1lbnQuIFRvIGVuc3VyZSB0aGlzIHdvcmtzLCB3ZSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGVzZSBrZXJuZWwgb3B0aW9ucyBhcmUgZW5hYmxlZDogYE5GX0NPTk5UUkFDS19CUklER0VgLCBgTkZfQ09OTlRSQUNLYCwgYEJSSURHRWAsIGFuZCBgTkVURklMVEVSYC4gVGhhdCdzIHN0YW5kYXJkIGZvciBicmlkZ2UtYmFzZWQgY29ubnRyYWNrLlxuXG5UaGUgY29yZSBvZiB0aGUgY2hhbmdlIHNlZW1zIHRvIGJlIGluIGBuZl9jdF9icmlkZ2VfcHJlYC4gVGhlIHBhdGNoIGlzIGludHJvZHVjaW5nIGEgY2FsbCB0byBgbmZfcmVzZXRfY3Qoc2tiKTtgIGJlZm9yZSBzZXR0aW5nIHRoZSBjb25udHJhY2sgZW50cnkgdG8gdW50cmFja2VkIHVzaW5nIGBuZl9jdF9zZXQoc2tiLCBOVUxMLCBJUF9DVF9VTlRSQUNLRUQpO2AuIFRoaXMgaGFzIHRvIGJlIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdG8gYWRkcmVzcyBzb21lIGJ1ZywgbGlrZWx5IGEgcmFjZSBjb25kaXRpb24gb3Igc29tZSB1bmV4cGVjdGVkIGJlaGF2aW9yIHJlbGF0ZWQgdG8gdGhlIGNvbm5lY3Rpb24gdHJhY2tpbmcgc3RhdGUuIEknZCBuZWVkIHRvIGRpZyBpbnRvIHRoZSBjb250ZXh0IG9mIHRoZSBidWcgdG8gZnVsbHkgdW5kZXJzdGFuZCB0aGUgcm9vdCBjYXVzZSwgYnV0IHRoZSBzb2x1dGlvbiBzZWVtcyByZWFzb25hYmxlIGF0IGZpcnN0IGdsYW5jZS5cblxuR2l2ZW4gdGhlIG5hdHVyZSBvZiBjb25udHJhY2sgYW5kIGl0cyBpbXBhY3Qgb24gbmV0d29yayBwZXJmb3JtYW5jZSBhbmQgc2VjdXJpdHksIHRoaXMgZml4IGlzIGRlZmluaXRlbHkgd29ydGggYSB0aG9yb3VnaCBmdXp6aW5nIGNhbXBhaWduLiBXZSB3YW50IHRvIGJlIGFic29sdXRlbHkgc3VyZSB0aGlzIGRvZXNuJ3QgaW50cm9kdWNlIGFueSByZWdyZXNzaW9ucyBvciBuZXcgdnVsbmVyYWJpbGl0aWVzLlxuXG5NeSBpbW1lZGlhdGUgZm9jdXMsIHRoZW4sIHdpbGwgYmUgb24gdGhlIGBuZl9jdF9icmlkZ2VfcHJlYCBmdW5jdGlvbiBpdHNlbGYuIEknbGwgbmVlZCB0byBnbyBkaXJlY3RseSB0byB0aGUgc291cmNlIGNvZGUsIHdoaWNoIGlzIGxvY2F0ZWQgaW4gYG5ldC9icmlkZ2UvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19icmlkZ2UuY2AsIHRvIGZ1bGx5IHVuZGVyc3RhbmQgaXRzIGxvZ2ljIGFuZCBob3cgdGhpcyBuZXcgYG5mX3Jlc2V0X2N0KClgIGNhbGwgZml0cyBpbnRvIHRoZSBleGlzdGluZyBmbG93LlxuXG5cbiIsIklucHV0VG9rZW5zIjo2MTUxLCJPdXRwdXRUb2tlbnMiOjQzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTQ0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDE0OjE3OjIxLjA5NzkxNTAyOFoiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTUzMjMzNzksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibmZfY3RfYnJpZGdlX3ByZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvYnJpZGdlL25ldGZpbHRlci9uZl9jb25udHJhY2tfYnJpZGdlLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L2JyaWRnZS9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2JyaWRnZS5jPTIyMj1zdGF0aWMgaW50IG5mX2N0X2JyX2lwdjZfY2hlY2soY29uc3Qgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG4tLVxcbm5ldC9icmlkZ2UvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19icmlkZ2UuYy0yMzgtXFxubmV0L2JyaWRnZS9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2JyaWRnZS5jOjIzOTpzdGF0aWMgdW5zaWduZWQgaW50IG5mX2N0X2JyaWRnZV9wcmUodm9pZCAqcHJpdiwgc3RydWN0IHNrX2J1ZmYgKnNrYixcXG5uZXQvYnJpZGdlL25ldGZpbHRlci9uZl9jb25udHJhY2tfYnJpZGdlLmMtMjQwLVxcdFxcdFxcdFxcdCAgICAgY29uc3Qgc3RydWN0IG5mX2hvb2tfc3RhdGUgKnN0YXRlKVxcbi0tXFxubmV0L2JyaWRnZS9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2JyaWRnZS5jPTQxMT1zdGF0aWMgc3RydWN0IG5mX2hvb2tfb3BzIG5mX2N0X2JyaWRnZV9ob29rX29wc1tdIF9fcmVhZF9tb3N0bHkgPSB7XFxubmV0L2JyaWRnZS9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2JyaWRnZS5jLTQxMi1cXHR7XFxubmV0L2JyaWRnZS9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2JyaWRnZS5jOjQxMzpcXHRcXHQuaG9va1xcdFxcdD0gbmZfY3RfYnJpZGdlX3ByZSxcXG5uZXQvYnJpZGdlL25ldGZpbHRlci9uZl9jb25udHJhY2tfYnJpZGdlLmMtNDE0LVxcdFxcdC5wZlxcdFxcdD0gTkZQUk9UT19CUklER0UsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDE0OjE3OjIxLjE1MzI0NTU4N1oiLCJTZXEiOjE3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MTQzMDM3Mjk3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgTmV0ZmlsdGVyIENvbm5lY3Rpb24gVHJhY2tpbmcgQnJpZGdlIEhvb2sqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCBgbmZfY3RfYnJpZGdlX3ByZWAuIEl0J3MgYSBzdGF0aWMgZnVuY3Rpb24sIHdoaWNoIGltbWVkaWF0ZWx5IG1ha2VzIG1lIHRoaW5rIGFib3V0IGl0cyB2aXNpYmlsaXR5IGFuZCB3aGV0aGVyIEkgY2FuIGRpcmVjdGx5IGFjY2VzcyBpdCBmcm9tIG91dHNpZGUgdGhlIG1vZHVsZS4gQnV0IGhvbGQgb24sIGl0J3MgdXNlZCBhcyBhICpob29rKiwgYW4gZW50cnkgcG9pbnQgaW50byB0aGUgbmV0ZmlsdGVyIGZsb3cuIFNvLCBldmVuIHRob3VnaCBpdCdzIHN0YXRpYywgaXQncyBzdGlsbCByZWFjaGFibGUgYmVjYXVzZSBvZiBob3cgaXQncyBpbnRlZ3JhdGVkIGludG8gdGhlIHN5c3RlbS4gSXQncyBub3QgKmV4cG9ydGVkKiBpbiB0aGUgdHJhZGl0aW9uYWwgc2Vuc2UsIGJ1dCBpdCAqaXMqIGFuIGVudHJ5IHBvaW50LlxuXG5JJ20gdHJ5aW5nIHRvIHNlZSBpZiBJJ20gbWlzc2luZyBzb21ldGhpbmcsIHdvbmRlcmluZyBpZiB0aGVyZSBhcmUgb3RoZXIgZnVuY3Rpb25zIGludm9sdmVkIGhlcmUuIEJ1dCwgbm8sIGBuZl9jdF9icmlkZ2VfcHJlYCBzZWVtcyB0byBiZSB0aGUgY3J1Y2lhbCBwaWVjZSBvZiB0aGUgcHV6emxlLlxuXG5SaWdodCwgbGV0IG1lIGRvdWJsZS1jaGVjayB0aGF0IGl0IGlzIHN0YXRpYy4gWWVzLCBhYnNvbHV0ZWx5IHN0YXRpYy4gQnV0IGl0IGlzIGNhbGxlZCB0aHJvdWdoIGEgZnVuY3Rpb24gcG9pbnRlciwgd2hpY2ggbWVhbnMgaXRzIHN0YXRpYyBuYXR1cmUgaXMgbm90IHJlYWxseSByZWxldmFudCBpbiBob3cgdGhlIHN5c3RlbSBjYW4gcmVhY2ggaXQuIEkgc3RpbGwgaGF2ZSB0byBjb25zaWRlciB3aGF0IG90aGVyIGZ1bmN0aW9ucyBtYXkgYmUgcmVsZXZhbnQgdG8gdGhlIGNvbm5lY3Rpb24gdHJhY2tpbmcgcHJvY2Vzcy5cblxuXG4iLCJJbnB1dFRva2VucyI6Njk3NywiT3V0cHV0VG9rZW5zIjo0MywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEyNiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wMVQxNDoxNzoyNS4yOTYyODU3NTRaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ5MTczNjE5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm5mX2N0X2JyaWRnZV9wcmVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L2JyaWRnZS9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2JyaWRnZS5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9icmlkZ2UvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19icmlkZ2UuYz0yMjI9c3RhdGljIGludCBuZl9jdF9icl9pcHY2X2NoZWNrKGNvbnN0IHN0cnVjdCBza19idWZmICpza2IpXFxuLS1cXG5uZXQvYnJpZGdlL25ldGZpbHRlci9uZl9jb25udHJhY2tfYnJpZGdlLmMtMjM4LVxcbm5ldC9icmlkZ2UvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19icmlkZ2UuYzoyMzk6c3RhdGljIHVuc2lnbmVkIGludCBuZl9jdF9icmlkZ2VfcHJlKHZvaWQgKnByaXYsIHN0cnVjdCBza19idWZmICpza2IsXFxubmV0L2JyaWRnZS9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2JyaWRnZS5jLTI0MC1cXHRcXHRcXHRcXHQgICAgIGNvbnN0IHN0cnVjdCBuZl9ob29rX3N0YXRlICpzdGF0ZSlcXG4tLVxcbm5ldC9icmlkZ2UvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19icmlkZ2UuYz00MTE9c3RhdGljIHN0cnVjdCBuZl9ob29rX29wcyBuZl9jdF9icmlkZ2VfaG9va19vcHNbXSBfX3JlYWRfbW9zdGx5ID0ge1xcbm5ldC9icmlkZ2UvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19icmlkZ2UuYy00MTItXFx0e1xcbm5ldC9icmlkZ2UvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19icmlkZ2UuYzo0MTM6XFx0XFx0Lmhvb2tcXHRcXHQ9IG5mX2N0X2JyaWRnZV9wcmUsXFxubmV0L2JyaWRnZS9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2JyaWRnZS5jLTQxNC1cXHRcXHQucGZcXHRcXHQ9IE5GUFJPVE9fQlJJREdFLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMVQxNDoxNzoyNS4zNDU0NjM2ODNaIiwiU2VxIjoxOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzIxOTE0MDY0MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQncyBpbnRlcm5hbCBtb25vbG9ndWU6XG5cbioqSW52ZXN0aWdhdGluZyB0aGUgQ29ubnRyYWNrIEJyaWRnZSBIb29rKipcblxuUmlnaHQsIGl0J3MgcHJldHR5IGNsZWFyIHRoYXQgdGhlIGhvb2sgcmVnaXN0cmF0aW9uIGZvciB0aGUgY29ubmVjdGlvbiB0cmFja2luZyBicmlkZ2UgaXMgZG9uZSBzdGF0aWNhbGx5LCB3aXRoaW4gYG5mX2N0X2JyaWRnZV9yZWdpc3RlcmAuIE15IGluaXRpYWwgaW5zdGluY3QgaXMgY29uZmlybWVkLiBOb3csIHRvIGdldCBhIGhhbmRsZSBvbiB0aGUgb3ZlcmFsbCBzdHJ1Y3R1cmUgYW5kIGxvb2sgZm9yIGFueSBkeW5hbWljIGFzcGVjdHMsIEknbSBnb2luZyB0byBxdWlja2x5IHNjYW4gYG5mX2Nvbm50cmFja19icmlkZ2UuY2AuIFNwZWNpZmljYWxseSwgSSBuZWVkIHRvIHNlZSBpZiB0aGVyZSBhcmUgKmFueSogbm9uLXN0YXRpYyBmdW5jdGlvbnMgd2l0aGluIHRoYXQgZmlsZS4gVGhhdCdzIHdoZXJlIGFueSBwb3RlbnRpYWwgZmxleGliaWxpdHkgb3IgbW9yZSBpbnRlcmVzdGluZyBiZWhhdmlvciBtaWdodCBiZSBoaWRpbmcuIExldCdzIHNlZSB3aGF0IHdlJ3ZlIGdvdC4gS25vd2luZyB3aGV0aGVyIHRoZSBrZXkgZnVuY3Rpb25zIGFyZSBzdGF0aWMgb3Igbm9uLXN0YXRpYyB3b3VsZCBpbW1lZGlhdGVseSBnaXZlIG1lIGEgZ29vZCBzZW5zZSBvZiB0aGUgbGV2ZWwgb2YgY29udHJvbCBhbmQgbW9kaWZpYWJpbGl0eSBhdmFpbGFibGUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjc2NzQsIk91dHB1dFRva2VucyI6NTksIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0MywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wMVQxNDoxNzoyOC41NjQ2MDg1MTRaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjY3MDc0NjI5LCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJeW2EtekEtWjAtOV9dKyBbYS16QS1aMC05X10rXFxcXChcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L2JyaWRnZS9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2JyaWRnZS5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMVQxNDoxNzoyOC42MzE2OTEwMDNaIiwiU2VxIjoyMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDg0NzAzMTYyNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIE5ldGZpbHRlciBDb25udHJhY2sgQnJpZGdlIENvbmZpZ3VyYXRpb24qKlxuXG5Pa2F5LCBzbyBpbml0aWFsbHkgSSB3YXMgdGhpbmtpbmcgd2UgY291bGQganVzdCB1c2UgYG5mX2N0X2JyaWRnZV9wcmVgLiBTaW1wbGUgZW5vdWdoLiBCdXQgaG9sZCBvbiwgdGhlIGluc3RydWN0aW9ucyBhcmUgY2xlYXI6IHByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludHMuIFRoZSByYXRpb25hbGUgaXMgdGhlIGNvbXBpbGVyIG9wdGltaXphdGlvbiB3aXRoIGlubGluaW5nIG9mIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zLiBJIG5lZWQgYSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzcyBmb3Igd2hhdGV2ZXIgdGhlIGNvcnJlY3QgZW50cnkgcG9pbnQgaXMuXG5cbk5vdywgYG5mX2N0X2JyaWRnZV9wcmVgICppcyogc3RhdGljLCBidXQgaXQncyBhc3NpZ25lZCB0byBhIGZ1bmN0aW9uIHBvaW50ZXIgdmlhIGAuaG9vayA9IG5mX2N0X2JyaWRnZV9wcmVgLiBUaGF0J3MgaW1wb3J0YW50ISBCZWNhdXNlIGl04oCZcyBhc3NpZ25lZCB0byB0aGUgZnVuY3Rpb24gcG9pbnRlciwgdGhlIGNvbXBpbGVyICpjYW4ndCogaW5saW5lIGl0LCBhbmQgaXQgKndpbGwqIGhhdmUgYSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzcy4gVGhhdCBtZWFucyBpdCBsaWtlbHkgZml0cyB0aGUgY3JpdGVyaWEuXG5cbkJlZm9yZSBjb21taXR0aW5nLCB0aG91Z2gsIEkgbmVlZCB0byBjaGVjayBmb3IgZGVwZW5kZW5jaWVzLiBJIHJlY2FsbCB0aGUgZGVwZW5kZW5jeSByZWxhdGlvbnNoaXBzIGluIHRoaXMgcGFydCBvZiB0aGUga2VybmVsOiBgTkZfQ09OTlRSQUNLX0JSSURHRWAgZGVwZW5kcyBvbiBgTkZfQ09OTlRSQUNLYDsgYE5GX0NPTk5UUkFDS2AgZGVwZW5kcyBvbiBgTkVURklMVEVSYDsgYW5kIGBCUklER0VgIGRlcGVuZHMgb24gYE5FVGAgYW5kIGBJTkVUYC4gU28gdGhlIGFjdHVhbCBjb25maWdzIHdlJ3JlIGRlYWxpbmcgd2l0aCBoZXJlIGFyZSBgTkVURklMVEVSYCwgYE5GX0NPTk5UUkFDS2AsIGBCUklER0VgLCBhbmQgYE5GX0NPTk5UUkFDS19CUklER0VgLlxuXG5MZXTigJlzIHF1aWNrbHkgcmV2aWV3IGBuZl9jdF9icmlkZ2VfcHJlYCBpbiBgbmV0L2JyaWRnZS9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2JyaWRnZS5jYCBqdXN0IHRvIGJlIGNlcnRhaW4gdGhlcmUgaXNuJ3Qgc29tZSBvYnZpb3VzIGlzc3VlIEknbSBvdmVybG9va2luZy4gSnVzdCBhIHF1aWNrIGdsYW5jZSBvdmVyIHRoZSBjb2RlLCBjb25maXJtIG15IGFzc3VtcHRpb25zIGFuZCBtYWtlIHN1cmUgdGhlcmUgYXJlIG5vIG9idmlvdXMgcHJvYmxlbXMgYmVmb3JlIG1vdmluZyBmb3J3YXJkLlxuXG5cbiIsIklucHV0VG9rZW5zIjo3OTY4LCJPdXRwdXRUb2tlbnMiOjQ0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjI1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDE0OjE3OjMzLjQ3ODcyNjQwOFoiLCJTZXEiOjIyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMTg4NjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwibmV0L2JyaWRnZS9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2JyaWRnZS5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDIzOSxcbiAgXCJMaW5lQ291bnRcIjogNTBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDIzOTpcXHRzdGF0aWMgdW5zaWduZWQgaW50IG5mX2N0X2JyaWRnZV9wcmUodm9pZCAqcHJpdiwgc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4gMjQwOlxcdFxcdFxcdFxcdFxcdCAgICAgY29uc3Qgc3RydWN0IG5mX2hvb2tfc3RhdGUgKnN0YXRlKVxcbiAyNDE6XFx0e1xcbiAyNDI6XFx0XFx0c3RydWN0IG5mX2hvb2tfc3RhdGUgYnJpZGdlX3N0YXRlID0gKnN0YXRlO1xcbiAyNDM6XFx0XFx0ZW51bSBpcF9jb25udHJhY2tfaW5mbyBjdGluZm87XFxuIDI0NDpcXHRcXHRzdHJ1Y3QgbmZfY29ubiAqY3Q7XFxuIDI0NTpcXHRcXHR1MzIgbGVuO1xcbiAyNDY6XFx0XFx0aW50IHJldDtcXG4gMjQ3OlxcdFxcbiAyNDg6XFx0XFx0Y3QgPSBuZl9jdF9nZXQoc2tiLCBcXHUwMDI2Y3RpbmZvKTtcXG4gMjQ5OlxcdFxcdGlmICgoY3QgXFx1MDAyNlxcdTAwMjYgIW5mX2N0X2lzX3RlbXBsYXRlKGN0KSkgfHxcXG4gMjUwOlxcdFxcdCAgICBjdGluZm8gPT0gSVBfQ1RfVU5UUkFDS0VEKVxcbiAyNTE6XFx0XFx0XFx0cmV0dXJuIE5GX0FDQ0VQVDtcXG4gMjUyOlxcdFxcbiAyNTM6XFx0XFx0c3dpdGNoIChza2ItXFx1MDAzZXByb3RvY29sKSB7XFxuIDI1NDpcXHRcXHRjYXNlIGh0b25zKEVUSF9QX0lQKTpcXG4gMjU1OlxcdFxcdFxcdGlmICghcHNrYl9tYXlfcHVsbChza2IsIHNpemVvZihzdHJ1Y3QgaXBoZHIpKSlcXG4gMjU2OlxcdFxcdFxcdFxcdHJldHVybiBORl9BQ0NFUFQ7XFxuIDI1NzpcXHRcXG4gMjU4OlxcdFxcdFxcdGxlbiA9IHNrYl9pcF90b3RsZW4oc2tiKTtcXG4gMjU5OlxcdFxcdFxcdGlmIChwc2tiX3RyaW1fcmNzdW0oc2tiLCBsZW4pKVxcbiAyNjA6XFx0XFx0XFx0XFx0cmV0dXJuIE5GX0FDQ0VQVDtcXG4gMjYxOlxcdFxcbiAyNjI6XFx0XFx0XFx0aWYgKG5mX2N0X2JyX2lwX2NoZWNrKHNrYikpXFxuIDI2MzpcXHRcXHRcXHRcXHRyZXR1cm4gTkZfQUNDRVBUO1xcbiAyNjQ6XFx0XFxuIDI2NTpcXHRcXHRcXHRicmlkZ2Vfc3RhdGUucGYgPSBORlBST1RPX0lQVjQ7XFxuIDI2NjpcXHRcXHRcXHRyZXQgPSBuZl9jdF9icl9kZWZyYWc0KHNrYiwgXFx1MDAyNmJyaWRnZV9zdGF0ZSk7XFxuIDI2NzpcXHRcXHRcXHRicmVhaztcXG4gMjY4OlxcdFxcdGNhc2UgaHRvbnMoRVRIX1BfSVBWNik6XFxuIDI2OTpcXHRcXHRcXHRpZiAoIXBza2JfbWF5X3B1bGwoc2tiLCBzaXplb2Yoc3RydWN0IGlwdjZoZHIpKSlcXG4gMjcwOlxcdFxcdFxcdFxcdHJldHVybiBORl9BQ0NFUFQ7XFxuIDI3MTpcXHRcXG4gMjcyOlxcdFxcdFxcdGxlbiA9IHNpemVvZihzdHJ1Y3QgaXB2NmhkcikgKyBza2JfaXB2Nl9wYXlsb2FkX2xlbihza2IpO1xcbiAyNzM6XFx0XFx0XFx0aWYgKHBza2JfdHJpbV9yY3N1bShza2IsIGxlbikpXFxuIDI3NDpcXHRcXHRcXHRcXHRyZXR1cm4gTkZfQUNDRVBUO1xcbiAyNzU6XFx0XFxuIDI3NjpcXHRcXHRcXHRpZiAobmZfY3RfYnJfaXB2Nl9jaGVjayhza2IpKVxcbiAyNzc6XFx0XFx0XFx0XFx0cmV0dXJuIE5GX0FDQ0VQVDtcXG4gMjc4OlxcdFxcbiAyNzk6XFx0XFx0XFx0YnJpZGdlX3N0YXRlLnBmID0gTkZQUk9UT19JUFY2O1xcbiAyODA6XFx0XFx0XFx0cmV0ID0gbmZfY3RfYnJfZGVmcmFnNihza2IsIFxcdTAwMjZicmlkZ2Vfc3RhdGUpO1xcbiAyODE6XFx0XFx0XFx0YnJlYWs7XFxuIDI4MjpcXHRcXHRkZWZhdWx0OlxcbiAyODM6XFx0XFx0XFx0bmZfcmVzZXRfY3Qoc2tiKTtcXG4gMjg0OlxcdFxcdFxcdG5mX2N0X3NldChza2IsIE5VTEwsIElQX0NUX1VOVFJBQ0tFRCk7XFxuIDI4NTpcXHRcXHRcXHRyZXR1cm4gTkZfQUNDRVBUO1xcbiAyODY6XFx0XFx0fVxcbiAyODc6XFx0XFxuIDI4ODpcXHRcXHRpZiAocmV0ICE9IE5GX0FDQ0VQVClcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDFUMTQ6MTc6MzMuNDc4ODQ3ODE5WiIsIlNlcSI6MjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQyMjA3NDAzMjYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duOlxuXG4qKkFuYWx5emluZyBhIE5ldGZpbHRlciBDb25uZWN0aW9uIFRyYWNraW5nIFBhdGNoKipcblxuQWxyaWdodCwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBmb3IgYG5mX2N0X2JyaWRnZV9wcmVgLiBJdCdzIHN0cmFpZ2h0Zm9yd2FyZCwgcmVhbGx5LiBUaGUgY29yZSBvZiBpdCBzZWVtcyB0byBiZSBhZGRpbmcgYG5mX3Jlc2V0X2N0KHNrYik7YCB3aXRoaW4gdGhlIGBkZWZhdWx0YCBjYXNlIG9mIHRoZSBgbmZfY3RfYnJpZGdlX3ByZWAgZnVuY3Rpb24uIEZ1bmN0aW9uYWxseSwgdGhpcyBpcyB0aGUgY3J1eCBvZiB0aGUgY2hhbmdlLiBJdCdzIGEga2V5IGRldGFpbCB0byB1bmRlcnN0YW5kLlxuXG5Gcm9tIGEgY29uZmlndXJhdGlvbiBwZXJzcGVjdGl2ZSwgSSdtIG5vdGluZyB0aGUgcmVsZXZhbnQgZGVwZW5kZW5jaWVzOiBgTkZfQ09OTlRSQUNLX0JSSURHRWAsIGBORl9DT05OVFJBQ0tgLCBgQlJJREdFYCwgYW5kLCBvZiBjb3Vyc2UsIHRoZSBnZW5lcmFsIGBORVRGSUxURVJgIGNvbmZpZ3VyYXRpb24gb3B0aW9uLiBUaGVzZSBhcmUgdGhlIGJ1aWxkaW5nIGJsb2NrcyB0aGF0IGRldGVybWluZSB3aGVuIHRoaXMgY29kZSBpcyBldmVuIGNvbXBpbGVkIGludG8gdGhlIGtlcm5lbC5cblxuVGhlIHNpZ25pZmljYW50IHN5bWJvbCBoZXJlLCBhbmQgdGhlIGZvY3VzIG9mIG15IGV4YW1pbmF0aW9uLCBpcyBjbGVhcmx5IGBuZl9jdF9icmlkZ2VfcHJlYC5cblxuSSdsbCBiZSBzdXJlIHRvIHN0YXJ0IGdhdGhlcmluZyBteSBhc3Nlc3NtZW50IG9mIHRoZSByZXN1bHRzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo5MzY1LCJPdXRwdXRUb2tlbnMiOjEyMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjg1LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDFUMTQ6MTc6MzcuNjk5NTkxMzI0WiIsIlNlcSI6MjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTM0NDkzMzU4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJORl9DT05OVFJBQ0tfQlJJREdFXCIsXG4gICAgXCJORl9DT05OVFJBQ0tcIixcbiAgICBcIkJSSURHRVwiLFxuICAgIFwiTkVURklMVEVSXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwibmZfY3RfYnJpZGdlX3ByZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgYSBjYWxsIHRvIG5mX3Jlc2V0X2N0KHNrYikgaW4gdGhlIGRlZmF1bHQgY2FzZSBvZiB0aGUgbmZfY3RfYnJpZGdlX3ByZSBuZXRmaWx0ZXIgaG9vay4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRoYXQgYWZmZWN0cyBicmlkZ2UgY29ubmVjdGlvbiB0cmFja2luZyBmb3Igbm9uLUlQdjQvSVB2NiBwYWNrZXRzLCBtYWtpbmcgaXQgd29ydGggZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJORl9DT05OVFJBQ0tfQlJJREdFXCIsXG4gICAgXCJORl9DT05OVFJBQ0tcIixcbiAgICBcIkJSSURHRVwiLFxuICAgIFwiTkVURklMVEVSXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwibmZfY3RfYnJpZGdlX3ByZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgYSBjYWxsIHRvIG5mX3Jlc2V0X2N0KHNrYikgaW4gdGhlIGRlZmF1bHQgY2FzZSBvZiB0aGUgbmZfY3RfYnJpZGdlX3ByZSBuZXRmaWx0ZXIgaG9vay4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRoYXQgYWZmZWN0cyBicmlkZ2UgY29ubmVjdGlvbiB0cmFja2luZyBmb3Igbm9uLUlQdjQvSVB2NiBwYWNrZXRzLCBtYWtpbmcgaXQgd29ydGggZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },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-workflow7h9d5[1] Phase: Succeeded StartedAt: 2026-08-01 14:17:48 +0000 UTC FinishedAt: 2026-08-01 14:17:48 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7h9d5[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-08-01 14:17:48 +0000 UTC FinishedAt: 2026-08-01 14:17:48 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7h9d5[2] Phase: Succeeded StartedAt: 2026-08-01 14:17:48 +0000 UTC FinishedAt: 2026-08-01 18:03:25 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7h9d5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK_BRIDGE","NF_CONNTRACK","BRIDGE","NETFILTER"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nf_ct_bridge_pre"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK_BRIDGE","NF_CONNTRACK","BRIDGE","NETFILTER"],"series_id":"624b5c2b-244f-4acc-b6aa-45e0abe0e53b","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-08-01 14:17:48 +0000 UTC FinishedAt: 2026-08-01 18:03:25 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK_BRIDGE","NF_CONNTRACK","BRIDGE","NETFILTER"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nf_ct_bridge_pre"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK_BRIDGE","NF_CONNTRACK","BRIDGE","NETFILTER"],"series_id":"624b5c2b-244f-4acc-b6aa-45e0abe0e53b","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflow7h9d5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK_BRIDGE","NF_CONNTRACK","BRIDGE","NETFILTER"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nf_ct_bridge_pre"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK_BRIDGE","NF_CONNTRACK","BRIDGE","NETFILTER"],"series_id":"624b5c2b-244f-4acc-b6aa-45e0abe0e53b","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-08-01 14:17:48 +0000 UTC FinishedAt: 2026-08-01 14:17:58 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7h9d5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK_BRIDGE","NF_CONNTRACK","BRIDGE","NETFILTER"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nf_ct_bridge_pre"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK_BRIDGE","NF_CONNTRACK","BRIDGE","NETFILTER"],"series_id":"624b5c2b-244f-4acc-b6aa-45e0abe0e53b","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-08-01 14:17:48 +0000 UTC FinishedAt: 2026-08-01 14:17:55 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK_BRIDGE","NF_CONNTRACK","BRIDGE","NETFILTER"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.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-workflow7h9d5/series-workflow7h9d5-convert-artifact-2184070112/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow7h9d5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK_BRIDGE","NF_CONNTRACK","BRIDGE","NETFILTER"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nf_ct_bridge_pre"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK_BRIDGE","NF_CONNTRACK","BRIDGE","NETFILTER"],"series_id":"624b5c2b-244f-4acc-b6aa-45e0abe0e53b","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-08-01 14:17:58 +0000 UTC FinishedAt: 2026-08-01 14:37:14 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7h9d5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK_BRIDGE","NF_CONNTRACK","BRIDGE","NETFILTER"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nf_ct_bridge_pre"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK_BRIDGE","NF_CONNTRACK","BRIDGE","NETFILTER"],"series_id":"624b5c2b-244f-4acc-b6aa-45e0abe0e53b","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-08-01 14:17:58 +0000 UTC FinishedAt: 2026-08-01 14:37:14 +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:*618de68b-16d0-4022-80b2-bc2bab0c3f09,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-workflow7h9d5/series-workflow7h9d5-convert-artifact-2184070112/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": "a4f58ef2-74d3-462e-9459-9200862b4a8d", "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-workflow7h9d5/series-workflow7h9d5-build-action-2249634470/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow7h9d5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK_BRIDGE","NF_CONNTRACK","BRIDGE","NETFILTER"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nf_ct_bridge_pre"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK_BRIDGE","NF_CONNTRACK","BRIDGE","NETFILTER"],"series_id":"624b5c2b-244f-4acc-b6aa-45e0abe0e53b","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-08-01 14:17:58 +0000 UTC FinishedAt: 2026-08-01 14:37:04 +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:*618de68b-16d0-4022-80b2-bc2bab0c3f09,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-workflow7h9d5/series-workflow7h9d5-convert-artifact-2184070112/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": "a4f58ef2-74d3-462e-9459-9200862b4a8d", "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-workflow7h9d5/series-workflow7h9d5-build-action-2249634470/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow7h9d5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK_BRIDGE","NF_CONNTRACK","BRIDGE","NETFILTER"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nf_ct_bridge_pre"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK_BRIDGE","NF_CONNTRACK","BRIDGE","NETFILTER"],"series_id":"624b5c2b-244f-4acc-b6aa-45e0abe0e53b","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-08-01 14:37:14 +0000 UTC FinishedAt: 2026-08-01 14:37:14 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7h9d5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK_BRIDGE","NF_CONNTRACK","BRIDGE","NETFILTER"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nf_ct_bridge_pre"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK_BRIDGE","NF_CONNTRACK","BRIDGE","NETFILTER"],"series_id":"624b5c2b-244f-4acc-b6aa-45e0abe0e53b","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-08-01 14:37:14 +0000 UTC FinishedAt: 2026-08-01 14:37:14 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7h9d5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK_BRIDGE","NF_CONNTRACK","BRIDGE","NETFILTER"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nf_ct_bridge_pre"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK_BRIDGE","NF_CONNTRACK","BRIDGE","NETFILTER"],"series_id":"624b5c2b-244f-4acc-b6aa-45e0abe0e53b","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-08-01 14:37:14 +0000 UTC FinishedAt: 2026-08-01 14:37:24 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7h9d5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK_BRIDGE","NF_CONNTRACK","BRIDGE","NETFILTER"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nf_ct_bridge_pre"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK_BRIDGE","NF_CONNTRACK","BRIDGE","NETFILTER"],"series_id":"624b5c2b-244f-4acc-b6aa-45e0abe0e53b","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-08-01 14:37:14 +0000 UTC FinishedAt: 2026-08-01 14:37:18 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK_BRIDGE","NF_CONNTRACK","BRIDGE","NETFILTER"],"series_id":"624b5c2b-244f-4acc-b6aa-45e0abe0e53b","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.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-workflow7h9d5/series-workflow7h9d5-convert-artifact-2902771463/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow7h9d5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK_BRIDGE","NF_CONNTRACK","BRIDGE","NETFILTER"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nf_ct_bridge_pre"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK_BRIDGE","NF_CONNTRACK","BRIDGE","NETFILTER"],"series_id":"624b5c2b-244f-4acc-b6aa-45e0abe0e53b","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-08-01 14:37:24 +0000 UTC FinishedAt: 2026-08-01 14:39:23 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7h9d5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK_BRIDGE","NF_CONNTRACK","BRIDGE","NETFILTER"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nf_ct_bridge_pre"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK_BRIDGE","NF_CONNTRACK","BRIDGE","NETFILTER"],"series_id":"624b5c2b-244f-4acc-b6aa-45e0abe0e53b","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-08-01 14:37:24 +0000 UTC FinishedAt: 2026-08-01 14:39:14 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*a4f58ef2-74d3-462e-9459-9200862b4a8d,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-workflow7h9d5/series-workflow7h9d5-build-action-2249634470/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-workflow7h9d5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK_BRIDGE","NF_CONNTRACK","BRIDGE","NETFILTER"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nf_ct_bridge_pre"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK_BRIDGE","NF_CONNTRACK","BRIDGE","NETFILTER"],"series_id":"624b5c2b-244f-4acc-b6aa-45e0abe0e53b","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-08-01 14:39:23 +0000 UTC FinishedAt: 2026-08-01 14:39:23 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7h9d5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK_BRIDGE","NF_CONNTRACK","BRIDGE","NETFILTER"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nf_ct_bridge_pre"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK_BRIDGE","NF_CONNTRACK","BRIDGE","NETFILTER"],"series_id":"624b5c2b-244f-4acc-b6aa-45e0abe0e53b","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-08-01 14:39:23 +0000 UTC FinishedAt: 2026-08-01 14:39:23 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7h9d5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK_BRIDGE","NF_CONNTRACK","BRIDGE","NETFILTER"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nf_ct_bridge_pre"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK_BRIDGE","NF_CONNTRACK","BRIDGE","NETFILTER"],"series_id":"624b5c2b-244f-4acc-b6aa-45e0abe0e53b","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-08-01 14:39:23 +0000 UTC FinishedAt: 2026-08-01 14:58:46 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7h9d5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK_BRIDGE","NF_CONNTRACK","BRIDGE","NETFILTER"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nf_ct_bridge_pre"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK_BRIDGE","NF_CONNTRACK","BRIDGE","NETFILTER"],"series_id":"624b5c2b-244f-4acc-b6aa-45e0abe0e53b","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-08-01 14:39:23 +0000 UTC FinishedAt: 2026-08-01 14:58:46 +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:*618de68b-16d0-4022-80b2-bc2bab0c3f09,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-workflow7h9d5/series-workflow7h9d5-convert-artifact-2902771463/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": "98e61383-182f-4ad8-bce7-2d1d0eba3bc6", "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-workflow7h9d5/series-workflow7h9d5-build-action-1000257675/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow7h9d5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK_BRIDGE","NF_CONNTRACK","BRIDGE","NETFILTER"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nf_ct_bridge_pre"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK_BRIDGE","NF_CONNTRACK","BRIDGE","NETFILTER"],"series_id":"624b5c2b-244f-4acc-b6aa-45e0abe0e53b","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-08-01 14:39:23 +0000 UTC FinishedAt: 2026-08-01 14:58:36 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*true,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Patched,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*618de68b-16d0-4022-80b2-bc2bab0c3f09,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-workflow7h9d5/series-workflow7h9d5-convert-artifact-2902771463/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": "98e61383-182f-4ad8-bce7-2d1d0eba3bc6", "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-workflow7h9d5/series-workflow7h9d5-build-action-1000257675/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow7h9d5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK_BRIDGE","NF_CONNTRACK","BRIDGE","NETFILTER"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nf_ct_bridge_pre"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK_BRIDGE","NF_CONNTRACK","BRIDGE","NETFILTER"],"series_id":"624b5c2b-244f-4acc-b6aa-45e0abe0e53b","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-08-01 14:58:46 +0000 UTC FinishedAt: 2026-08-01 14:58:46 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7h9d5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK_BRIDGE","NF_CONNTRACK","BRIDGE","NETFILTER"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nf_ct_bridge_pre"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK_BRIDGE","NF_CONNTRACK","BRIDGE","NETFILTER"],"series_id":"624b5c2b-244f-4acc-b6aa-45e0abe0e53b","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-08-01 14:58:46 +0000 UTC FinishedAt: 2026-08-01 14:58:46 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7h9d5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK_BRIDGE","NF_CONNTRACK","BRIDGE","NETFILTER"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nf_ct_bridge_pre"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK_BRIDGE","NF_CONNTRACK","BRIDGE","NETFILTER"],"series_id":"624b5c2b-244f-4acc-b6aa-45e0abe0e53b","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-08-01 14:58:46 +0000 UTC FinishedAt: 2026-08-01 15:00:46 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7h9d5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK_BRIDGE","NF_CONNTRACK","BRIDGE","NETFILTER"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nf_ct_bridge_pre"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK_BRIDGE","NF_CONNTRACK","BRIDGE","NETFILTER"],"series_id":"624b5c2b-244f-4acc-b6aa-45e0abe0e53b","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-08-01 14:58:46 +0000 UTC FinishedAt: 2026-08-01 15:00:36 +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:*98e61383-182f-4ad8-bce7-2d1d0eba3bc6,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-workflow7h9d5/series-workflow7h9d5-build-action-1000257675/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-workflow7h9d5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK_BRIDGE","NF_CONNTRACK","BRIDGE","NETFILTER"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nf_ct_bridge_pre"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK_BRIDGE","NF_CONNTRACK","BRIDGE","NETFILTER"],"series_id":"624b5c2b-244f-4acc-b6aa-45e0abe0e53b","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-08-01 15:00:46 +0000 UTC FinishedAt: 2026-08-01 18:03:25 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7h9d5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK_BRIDGE","NF_CONNTRACK","BRIDGE","NETFILTER"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nf_ct_bridge_pre"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK_BRIDGE","NF_CONNTRACK","BRIDGE","NETFILTER"],"series_id":"624b5c2b-244f-4acc-b6aa-45e0abe0e53b","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-08-01 15:00:46 +0000 UTC FinishedAt: 2026-08-01 18:03:25 +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":["nf_ct_bridge_pre"],"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:*a4f58ef2-74d3-462e-9459-9200862b4a8d,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*98e61383-182f-4ad8-bce7-2d1d0eba3bc6,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-workflow7h9d5/series-workflow7h9d5-build-action-2249634470/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-workflow7h9d5/series-workflow7h9d5-build-action-1000257675/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflow7h9d5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK_BRIDGE","NF_CONNTRACK","BRIDGE","NETFILTER"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nf_ct_bridge_pre"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK_BRIDGE","NF_CONNTRACK","BRIDGE","NETFILTER"],"series_id":"624b5c2b-244f-4acc-b6aa-45e0abe0e53b","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-08-01 15:00:46 +0000 UTC FinishedAt: 2026-08-01 15:00:56 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7h9d5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK_BRIDGE","NF_CONNTRACK","BRIDGE","NETFILTER"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nf_ct_bridge_pre"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK_BRIDGE","NF_CONNTRACK","BRIDGE","NETFILTER"],"series_id":"624b5c2b-244f-4acc-b6aa-45e0abe0e53b","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-08-01 15:00:46 +0000 UTC FinishedAt: 2026-08-01 15:00:52 +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":["nf_ct_bridge_pre"],"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-workflow7h9d5/series-workflow7h9d5-convert-artifact-2367445728/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow7h9d5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK_BRIDGE","NF_CONNTRACK","BRIDGE","NETFILTER"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nf_ct_bridge_pre"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK_BRIDGE","NF_CONNTRACK","BRIDGE","NETFILTER"],"series_id":"624b5c2b-244f-4acc-b6aa-45e0abe0e53b","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-08-01 15:00:46 +0000 UTC FinishedAt: 2026-08-01 15:00:46 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7h9d5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK_BRIDGE","NF_CONNTRACK","BRIDGE","NETFILTER"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nf_ct_bridge_pre"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK_BRIDGE","NF_CONNTRACK","BRIDGE","NETFILTER"],"series_id":"624b5c2b-244f-4acc-b6aa-45e0abe0e53b","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-08-01 15:00:46 +0000 UTC FinishedAt: 2026-08-01 15:00:46 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7h9d5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK_BRIDGE","NF_CONNTRACK","BRIDGE","NETFILTER"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nf_ct_bridge_pre"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK_BRIDGE","NF_CONNTRACK","BRIDGE","NETFILTER"],"series_id":"624b5c2b-244f-4acc-b6aa-45e0abe0e53b","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-08-01 15:00:46 +0000 UTC FinishedAt: 2026-08-01 15:00:46 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7h9d5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK_BRIDGE","NF_CONNTRACK","BRIDGE","NETFILTER"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nf_ct_bridge_pre"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK_BRIDGE","NF_CONNTRACK","BRIDGE","NETFILTER"],"series_id":"624b5c2b-244f-4acc-b6aa-45e0abe0e53b","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-08-01 15:00:56 +0000 UTC FinishedAt: 2026-08-01 18:03:25 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7h9d5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK_BRIDGE","NF_CONNTRACK","BRIDGE","NETFILTER"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nf_ct_bridge_pre"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK_BRIDGE","NF_CONNTRACK","BRIDGE","NETFILTER"],"series_id":"624b5c2b-244f-4acc-b6aa-45e0abe0e53b","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-08-01 15:00:56 +0000 UTC FinishedAt: 2026-08-01 18:03:15 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*a4f58ef2-74d3-462e-9459-9200862b4a8d,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*98e61383-182f-4ad8-bce7-2d1d0eba3bc6,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-workflow7h9d5/series-workflow7h9d5-build-action-2249634470/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-workflow7h9d5/series-workflow7h9d5-build-action-1000257675/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-workflow7h9d5/series-workflow7h9d5-convert-artifact-2367445728/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,}