Name: series-workflow7k95n Phase: Succeeded StartedAt: 2026-07-07 07:53:36 +0000 UTC FinishedAt: 2026-07-07 10:28:45 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7k95n[0] Phase: Succeeded StartedAt: 2026-07-07 07:53:36 +0000 UTC FinishedAt: 2026-07-07 08:23:51 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7k95n[0].run-triage Phase: Succeeded StartedAt: 2026-07-07 07:53:36 +0000 UTC FinishedAt: 2026-07-07 08:23:51 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "9e05e91a9a847ed57926414bd7c2c5e54d6c56c6", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NF_CONNTRACK_BRIDGE", "BRIDGE", "IPV6", "NETFILTER" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "9e05e91a9a847ed57926414bd7c2c5e54d6c56c6", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NF_CONNTRACK_BRIDGE", "BRIDGE", "IPV6", "NETFILTER" ], "series_id": "681eb511-0aa7-4e36-96b8-d32087cdf765" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "br_ip6_fragment", "nf_ct_bridge_refrag" ], "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+CgkJCTx0ZD4yMDI2LzA3LzA3IDA4OjIwPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+M208L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05GX0NPTk5UUkFDS19CUklER0UmIzM0OywKICAgICYjMzQ7QlJJREdFJiMzNDssCiAgICAmIzM0O0lQVjYmIzM0OywKICAgICYjMzQ7TkVURklMVEVSJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7YnJfaXA2X2ZyYWdtZW50JiMzNDssCiAgICAmIzM0O25mX2N0X2JyaWRnZV9yZWZyYWcmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSBwb3RlbnRpYWwgdXNlLWFmdGVyLWZyZWUgaW4gYGJyX2lwNl9mcmFnbWVudGAgYnkgcmUtZXZhbHVhdGluZyB0aGUgYHByZXZoZHJgIHBvaW50ZXIgYWZ0ZXIgYHNrYl9jaGVja3N1bV9oZWxwYCB3aGljaCBtYXkgcmVhbGxvY2F0ZSB0aGUgc2tiIGRhdGEuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgSVB2NiBicmlkZ2UgbmV0ZmlsdGVyIGNvZGUgdGhhdCBzaG91bGQgYmUgZnV6emVkIHRvIGVuc3VyZSB0aGUgZml4IGlzIGNvcnJlY3QgYW5kIGRvZXNuJiMzOTt0IGludHJvZHVjZSBuZXcgaXNzdWVzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA3IDA4OjIwPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgMzY5OTc3YTliODZkNDA1OGRjMmFiODczMmY0MWJkMmIyNjZkZmNmY1xuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUdWUgSnVsIDcgMDg6MjA6MjkgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbmV0L2lwdjYvbmV0ZmlsdGVyLmMgYi9uZXQvaXB2Ni9uZXRmaWx0ZXIuY1xuaW5kZXggNmQ4MGY4NWU1NWZhN2YuLjU0Nzg3OWRhOTUzMjUxIDEwMDY0NFxuLS0tIGEvbmV0L2lwdjYvbmV0ZmlsdGVyLmNcbiYjNDM7JiM0MzsmIzQzOyBiL25ldC9pcHY2L25ldGZpbHRlci5jXG5AQCAtMTQ3LDYgJiM0MzsxNDcsMTAgQEAgaW50IGJyX2lwNl9mcmFnbWVudChzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX2J1ZmYgKnNrYixcbiBcdCAgICAoZXJyID0gc2tiX2NoZWNrc3VtX2hlbHAoc2tiKSkpXG4gXHRcdGdvdG8gYmxhY2tob2xlO1xuIFxuJiM0MztcdGVyciA9IGlwNl9maW5kXzFzdGZyYWdvcHQoc2tiLCBcdTAwMjZwcmV2aGRyKTtcbiYjNDM7XHRpZiAoZXJyIFx1MDAzYyAwKVxuJiM0MztcdFx0Z290byBibGFja2hvbGU7XG4mIzQzO1xuIFx0aHJvb20gPSBMTF9SRVNFUlZFRF9TUEFDRShza2ItXHUwMDNlZGV2KTtcbiBcdGlmIChza2JfaGFzX2ZyYWdfbGlzdChza2IpKSB7XG4gXHRcdHVuc2lnbmVkIGludCBmaXJzdF9sZW4gPSBza2JfcGFnZWxlbihza2IpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA3IDA4OjIwPC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjNtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05GX0NPTk5UUkFDS19CUklER0UmIzM0OywKICAgICYjMzQ7QlJJREdFJiMzNDssCiAgICAmIzM0O0lQVjYmIzM0OywKICAgICYjMzQ7TkVURklMVEVSJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7YnJfaXA2X2ZyYWdtZW50JiMzNDssCiAgICAmIzM0O25mX2N0X2JyaWRnZV9yZWZyYWcmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSBwb3RlbnRpYWwgdXNlLWFmdGVyLWZyZWUgaW4gYGJyX2lwNl9mcmFnbWVudGAgYnkgcmUtZXZhbHVhdGluZyB0aGUgYHByZXZoZHJgIHBvaW50ZXIgYWZ0ZXIgYHNrYl9jaGVja3N1bV9oZWxwYCB3aGljaCBtYXkgcmVhbGxvY2F0ZSB0aGUgc2tiIGRhdGEuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgSVB2NiBicmlkZ2UgbmV0ZmlsdGVyIGNvZGUgdGhhdCBzaG91bGQgYmUgZnV6emVkIHRvIGVuc3VyZSB0aGUgZml4IGlzIGNvcnJlY3QgYW5kIGRvZXNuJiMzOTt0IGludHJvZHVjZSBuZXcgaXNzdWVzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdAogICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksCiAgIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCAzNjk5NzdhOWI4NmQ0MDU4ZGMyYWI4NzMyZjQxYmQyYjI2NmRmY2ZjCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFR1ZSBKdWwgNyAwODoyMDoyOSAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL25ldC9pcHY2L25ldGZpbHRlci5jIGIvbmV0L2lwdjYvbmV0ZmlsdGVyLmMKaW5kZXggNmQ4MGY4NWU1NWZhN2YuLjU0Nzg3OWRhOTUzMjUxIDEwMDY0NAotLS0gYS9uZXQvaXB2Ni9uZXRmaWx0ZXIuYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvaXB2Ni9uZXRmaWx0ZXIuYwpAQCAtMTQ3LDYgJiM0MzsxNDcsMTAgQEAgaW50IGJyX2lwNl9mcmFnbWVudChzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX2J1ZmYgKnNrYiwKIAkgICAgKGVyciA9IHNrYl9jaGVja3N1bV9oZWxwKHNrYikpKQogCQlnb3RvIGJsYWNraG9sZTsKIAomIzQzOwllcnIgPSBpcDZfZmluZF8xc3RmcmFnb3B0KHNrYiwgJmFtcDtwcmV2aGRyKTsKJiM0MzsJaWYgKGVyciAmbHQ7IDApCiYjNDM7CQlnb3RvIGJsYWNraG9sZTsKJiM0MzsKIAlocm9vbSA9IExMX1JFU0VSVkVEX1NQQUNFKHNrYi0mZ3Q7ZGV2KTsKIAlpZiAoc2tiX2hhc19mcmFnX2xpc3Qoc2tiKSkgewogCQl1bnNpZ25lZCBpbnQgZmlyc3RfbGVuID0gc2tiX3BhZ2VsZW4oc2tiKTsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDcgMDg6MjA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTg3NQoJCQkJCQkJb3V0cHV0OiAzNQoJCQkJCQkJdGhvdWdodHM6IDc3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIEtlcm5lbCBQYXRjaCBpbiBJUHY2IE5ldGZpbHRlcioqCgpPa2F5LCBzbyBJJiMzOTt2ZSBnb3QgdGhpcyBwYXRjaCBoZXJlIHRoYXQmIzM5O3MgcG9raW5nIGFyb3VuZCBpbiBgbmV0L2lwdjYvbmV0ZmlsdGVyLmNgLiBTcGVjaWZpY2FsbHksIGl0IHNlZW1zIHRvIGJlIGFkZGluZyBhIGNhbGwgdG8gYGlwNl9maW5kXzFzdGZyYWdvcHQoc2tiLCAmYW1wO3ByZXZoZHIpYCB3aXRoaW4gdGhlIGBicl9pcDZfZnJhZ21lbnRgIGZ1bmN0aW9uLiBBbHJpZ2h0LCB0aGF0JiMzOTtzIGludGVyZXN0aW5nLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aHkgdGhleSYjMzk7cmUgYWRkaW5nIHRoaXMsIHdoYXQgYGlwNl9maW5kXzFzdGZyYWdvcHRgICpkb2VzKiBpbiB0aGlzIGNvbnRleHQsIGFuZCBtb3N0IGltcG9ydGFudGx5LCBob3cgdGhpcyBpbXBhY3RzIHRoZSBiZWhhdmlvciBvZiBgYnJfaXA2X2ZyYWdtZW50YC4gTXkgaW5pdGlhbCBodW5jaCBpcyB0aGlzIHByb2JhYmx5IGhhcyBzb21ldGhpbmcgdG8gZG8gd2l0aCBoYW5kbGluZyBJUHY2IGZyYWdtZW50YXRpb24gYW5kIG9wdGlvbnMgd2l0aGluIHRoZSBicmlkZ2luZyBjb250ZXh0LCB3aGljaCwgb2YgY291cnNlLCBpcyBhIHBvdGVudGlhbGx5IGNvbXBsZXggaW50ZXJhY3Rpb24uIFNvLCBsZXQmIzM5O3MgZGl2ZSBpbnRvIGBicl9pcDZfZnJhZ21lbnRgIGl0c2VsZiB3aXRoaW4gYG5ldC9pcHY2L25ldGZpbHRlci5jYCBhbmQgZmlndXJlIG91dCB3aGF0JiMzOTtzIGdvaW5nIG9uLiBJIG5lZWQgdG8gc2VlIHRoZSBsb2dpYyBhcm91bmQgdGhhdCBjYWxsIHNpdGUgdG8gZnVsbHkgZ3Jhc3AgdGhlIHJhbWlmaWNhdGlvbnMuIExldCYjMzk7cyBnZXQgdG8gdGhlIGNvZGUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDcgMDg6MjA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7YnJfaXA2X2ZyYWdtZW50JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L2lwdjYvbmV0ZmlsdGVyLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L2lwdjYvbmV0ZmlsdGVyLmM9MTEwPUVYUE9SVF9TWU1CT0xfR1BMKF9fbmZfaXA2X3JvdXRlKTtcbm5ldC9pcHY2L25ldGZpbHRlci5jLTExMS1cbm5ldC9pcHY2L25ldGZpbHRlci5jOjExMjppbnQgYnJfaXA2X2ZyYWdtZW50KHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxubmV0L2lwdjYvbmV0ZmlsdGVyLmMtMTEzLVx0XHQgICAgc3RydWN0IG5mX2JyaWRnZV9mcmFnX2RhdGEgKmRhdGEsXG4tLVxubmV0L2lwdjYvbmV0ZmlsdGVyLmMtMjMzLX1cbm5ldC9pcHY2L25ldGZpbHRlci5jOjIzNDpFWFBPUlRfU1lNQk9MX0dQTChicl9pcDZfZnJhZ21lbnQpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA3IDA4OjIwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIzODcKCQkJCQkJCW91dHB1dDogMzgKCQkJCQkJCXRob3VnaHRzOiAzNwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBzdW1tYXJ5LCB0YWtpbmcgb24gdGhlIHBlcnNvbmEgeW91IHJlcXVlc3RlZDoKCioqRGVjb25zdHJ1Y3RpbmcgdGhlIElQdjYgRnJhZ21lbnRhdGlvbiBQYXRjaCoqCgpBbHJpZ2h0LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoaXMuIFRoZSBkZXNjcmlwdGlvbiBzYXlzIHRoZSBwYXRjaCB0YXJnZXRzIGBicl9pcDZfZnJhZ21lbnRgIHdpdGhpbiBgbmV0L2lwdjYvbmV0ZmlsdGVyLmNgLiBUaGF0JiMzOTtzIHRoZSBrZXkuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgdGhpcyBmdW5jdGlvbiBkb2VzIGFuZCB3aGF0IHNwZWNpZmljIG1vZGlmaWNhdGlvbnMgd2VyZSBtYWRlLiBUaGUgY29tbWVudCBzdWdnZXN0cyB0aGVyZSYjMzk7cyBhIG5ldHdvcmtpbmcgaXNzdWUgdGhhdCYjMzk7cyBiZWluZyBhZGRyZXNzZWQsIHNwZWNpZmljYWxseSByZWxhdGVkIHRvIHRoZSBicmlkZ2luZyBvZiBJUHY2IGZyYWdtZW50cy4gVGhpcyBuYXJyb3dzIHRoZSBzY29wZS4gU28sIEkgbmVlZCB0byBvcGVuIHRoZSByZWxldmFudCBmaWxlIGFuZCBzdGFydCB0cmFjaW5nIHRocm91Z2ggdGhhdCBmdW5jdGlvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNyAwODoyMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O25ldC9pcHY2L25ldGZpbHRlci5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMTEyLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDEwMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgMTEyOlx0aW50IGJyX2lwNl9mcmFnbWVudChzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX2J1ZmYgKnNrYixcbiAxMTM6XHRcdFx0ICAgIHN0cnVjdCBuZl9icmlkZ2VfZnJhZ19kYXRhICpkYXRhLFxuIDExNDpcdFx0XHQgICAgaW50ICgqb3V0cHV0KShzdHJ1Y3QgbmV0ICosIHN0cnVjdCBzb2NrICpzayxcbiAxMTU6XHRcdFx0XHRcdCAgY29uc3Qgc3RydWN0IG5mX2JyaWRnZV9mcmFnX2RhdGEgKmRhdGEsXG4gMTE2Olx0XHRcdFx0XHQgIHN0cnVjdCBza19idWZmICopKVxuIDExNzpcdHtcbiAxMTg6XHRcdGludCBmcmFnX21heF9zaXplID0gQlJfSU5QVVRfU0tCX0NCKHNrYiktXHUwMDNlZnJhZ19tYXhfc2l6ZTtcbiAxMTk6XHRcdHU4IHRzdGFtcF90eXBlID0gc2tiLVx1MDAzZXRzdGFtcF90eXBlO1xuIDEyMDpcdFx0a3RpbWVfdCB0c3RhbXAgPSBza2ItXHUwMDNldHN0YW1wO1xuIDEyMTpcdFx0c3RydWN0IGlwNl9mcmFnX3N0YXRlIHN0YXRlO1xuIDEyMjpcdFx0dTggKnByZXZoZHIsIG5leHRoZHIgPSAwO1xuIDEyMzpcdFx0dW5zaWduZWQgaW50IG10dSwgaGxlbjtcbiAxMjQ6XHRcdGludCBocm9vbSwgZXJyID0gMDtcbiAxMjU6XHRcdF9fYmUzMiBmcmFnX2lkO1xuIDEyNjpcdFxuIDEyNzpcdFx0ZXJyID0gaXA2X2ZpbmRfMXN0ZnJhZ29wdChza2IsIFx1MDAyNnByZXZoZHIpO1xuIDEyODpcdFx0aWYgKGVyciBcdTAwM2MgMClcbiAxMjk6XHRcdFx0Z290byBibGFja2hvbGU7XG4gMTMwOlx0XHRobGVuID0gZXJyO1xuIDEzMTpcdFx0bmV4dGhkciA9ICpwcmV2aGRyO1xuIDEzMjpcdFxuIDEzMzpcdFx0bXR1ID0gc2tiLVx1MDAzZWRldi1cdTAwM2VtdHU7XG4gMTM0Olx0XHRpZiAoZnJhZ19tYXhfc2l6ZSBcdTAwM2UgbXR1IHx8XG4gMTM1Olx0XHQgICAgZnJhZ19tYXhfc2l6ZSBcdTAwM2MgSVBWNl9NSU5fTVRVKVxuIDEzNjpcdFx0XHRnb3RvIGJsYWNraG9sZTtcbiAxMzc6XHRcbiAxMzg6XHRcdG10dSA9IGZyYWdfbWF4X3NpemU7XG4gMTM5Olx0XHRpZiAobXR1IFx1MDAzYyBobGVuICYjNDM7IHNpemVvZihzdHJ1Y3QgZnJhZ19oZHIpICYjNDM7IDgpXG4gMTQwOlx0XHRcdGdvdG8gYmxhY2tob2xlO1xuIDE0MTpcdFx0bXR1IC09IGhsZW4gJiM0Mzsgc2l6ZW9mKHN0cnVjdCBmcmFnX2hkcik7XG4gMTQyOlx0XG4gMTQzOlx0XHRmcmFnX2lkID0gaXB2Nl9zZWxlY3RfaWRlbnQobmV0LCBcdTAwMjZpcHY2X2hkcihza2IpLVx1MDAzZWRhZGRyLFxuIDE0NDpcdFx0XHRcdFx0ICAgIFx1MDAyNmlwdjZfaGRyKHNrYiktXHUwMDNlc2FkZHIpO1xuIDE0NTpcdFxuIDE0NjpcdFx0aWYgKHNrYi1cdTAwM2VpcF9zdW1tZWQgPT0gQ0hFQ0tTVU1fUEFSVElBTCBcdTAwMjZcdTAwMjZcbiAxNDc6XHRcdCAgICAoZXJyID0gc2tiX2NoZWNrc3VtX2hlbHAoc2tiKSkpXG4gMTQ4Olx0XHRcdGdvdG8gYmxhY2tob2xlO1xuIDE0OTpcdFxuIDE1MDpcdFx0ZXJyID0gaXA2X2ZpbmRfMXN0ZnJhZ29wdChza2IsIFx1MDAyNnByZXZoZHIpO1xuIDE1MTpcdFx0aWYgKGVyciBcdTAwM2MgMClcbiAxNTI6XHRcdFx0Z290byBibGFja2hvbGU7XG4gMTUzOlx0XG4gMTU0Olx0XHRocm9vbSA9IExMX1JFU0VSVkVEX1NQQUNFKHNrYi1cdTAwM2VkZXYpO1xuIDE1NTpcdFx0aWYgKHNrYl9oYXNfZnJhZ19saXN0KHNrYikpIHtcbiAxNTY6XHRcdFx0dW5zaWduZWQgaW50IGZpcnN0X2xlbiA9IHNrYl9wYWdlbGVuKHNrYik7XG4gMTU3Olx0XHRcdHN0cnVjdCBpcDZfZnJhZ2xpc3RfaXRlciBpdGVyO1xuIDE1ODpcdFx0XHRzdHJ1Y3Qgc2tfYnVmZiAqZnJhZzI7XG4gMTU5Olx0XG4gMTYwOlx0XHRcdGlmIChmaXJzdF9sZW4gLSBobGVuIFx1MDAzZSBtdHUpXG4gMTYxOlx0XHRcdFx0Z290byBibGFja2hvbGU7XG4gMTYyOlx0XG4gMTYzOlx0XHRcdGlmIChza2JfY2xvbmVkKHNrYikgfHxcbiAxNjQ6XHRcdFx0ICAgIHNrYl9oZWFkcm9vbShza2IpIFx1MDAzYyAoaHJvb20gJiM0Mzsgc2l6ZW9mKHN0cnVjdCBmcmFnX2hkcikpKVxuIDE2NTpcdFx0XHRcdGdvdG8gc2xvd19wYXRoO1xuIDE2NjpcdFxuIDE2NzpcdFx0XHRza2Jfd2Fsa19mcmFncyhza2IsIGZyYWcyKSB7XG4gMTY4Olx0XHRcdFx0aWYgKGZyYWcyLVx1MDAzZWxlbiBcdTAwM2UgbXR1KVxuIDE2OTpcdFx0XHRcdFx0Z290byBibGFja2hvbGU7XG4gMTcwOlx0XG4gMTcxOlx0XHRcdFx0LyogUGFydGlhbGx5IGNsb25lZCBza2I/ICovXG4gMTcyOlx0XHRcdFx0aWYgKHNrYl9zaGFyZWQoZnJhZzIpIHx8XG4gMTczOlx0XHRcdFx0ICAgIHNrYl9oZWFkcm9vbShmcmFnMikgXHUwMDNjIChobGVuICYjNDM7IGhyb29tICYjNDM7IHNpemVvZihzdHJ1Y3QgZnJhZ19oZHIpKSlcbiAxNzQ6XHRcdFx0XHRcdGdvdG8gc2xvd19wYXRoO1xuIDE3NTpcdFx0XHR9XG4gMTc2Olx0XG4gMTc3Olx0XHRcdGVyciA9IGlwNl9mcmFnbGlzdF9pbml0KHNrYiwgaGxlbiwgcHJldmhkciwgbmV4dGhkciwgZnJhZ19pZCxcbiAxNzg6XHRcdFx0XHRcdFx0XHUwMDI2aXRlcik7XG4gMTc5Olx0XHRcdGlmIChlcnIgXHUwMDNjIDApXG4gMTgwOlx0XHRcdFx0Z290byBibGFja2hvbGU7XG4gMTgxOlx0XG4gMTgyOlx0XHRcdGZvciAoOzspIHtcbiAxODM6XHRcdFx0XHQvKiBQcmVwYXJlIGhlYWRlciBvZiB0aGUgbmV4dCBmcmFtZSxcbiAxODQ6XHRcdFx0XHQgKiBiZWZvcmUgcHJldmlvdXMgb25lIHdlbnQgZG93bi5cbiAxODU6XHRcdFx0XHQgKi9cbiAxODY6XHRcdFx0XHRpZiAoaXRlci5mcmFnKVxuIDE4NzpcdFx0XHRcdFx0aXA2X2ZyYWdsaXN0X3ByZXBhcmUoc2tiLCBcdTAwMjZpdGVyKTtcbiAxODg6XHRcbiAxODk6XHRcdFx0XHRza2Jfc2V0X2RlbGl2ZXJ5X3RpbWUoc2tiLCB0c3RhbXAsIHRzdGFtcF90eXBlKTtcbiAxOTA6XHRcdFx0XHRlcnIgPSBvdXRwdXQobmV0LCBzaywgZGF0YSwgc2tiKTtcbiAxOTE6XHRcdFx0XHRpZiAoZXJyIHx8ICFpdGVyLmZyYWcpXG4gMTkyOlx0XHRcdFx0XHRicmVhaztcbiAxOTM6XHRcbiAxOTQ6XHRcdFx0XHRza2IgPSBpcDZfZnJhZ2xpc3RfbmV4dChcdTAwMjZpdGVyKTtcbiAxOTU6XHRcdFx0fVxuIDE5NjpcdFxuIDE5NzpcdFx0XHRrZnJlZShpdGVyLnRtcF9oZHIpO1xuIDE5ODpcdFx0XHRpZiAoIWVycilcbiAxOTk6XHRcdFx0XHRyZXR1cm4gMDtcbiAyMDA6XHRcbiAyMDE6XHRcdFx0a2ZyZWVfc2tiX2xpc3QoaXRlci5mcmFnKTtcbiAyMDI6XHRcdFx0cmV0dXJuIGVycjtcbiAyMDM6XHRcdH1cbiAyMDQ6XHRzbG93X3BhdGg6XG4gMjA1Olx0XHQvKiBUaGlzIGlzIGEgbGluZWFyaXplZCBza2J1ZmYsIHRoZSBvcmlnaW5hbCBnZW9tZXRyeSBpcyBsb3N0IGZvciB1cy5cbiAyMDY6XHRcdCAqIFRoaXMgbWF5IGFsc28gYmUgYSBjbG9uZSBza2J1ZmYsIHdlIGNvdWxkIHByZXNlcnZlIHRoZSBnZW9tZXRyeSBmb3JcbiAyMDc6XHRcdCAqIHRoZSBjb3BpZXMgYnV0IHByb2JhYmx5IG5vdCB3b3J0aCB0aGUgZWZmb3J0LlxuIDIwODpcdFx0ICovXG4gMjA5Olx0XHRpcDZfZnJhZ19pbml0KHNrYiwgaGxlbiwgbXR1LCBza2ItXHUwMDNlZGV2LVx1MDAzZW5lZWRlZF90YWlscm9vbSxcbiAyMTA6XHRcdFx0ICAgICAgTExfUkVTRVJWRURfU1BBQ0Uoc2tiLVx1MDAzZWRldiksIHByZXZoZHIsIG5leHRoZHIsIGZyYWdfaWQsXG4gMjExOlx0XHRcdCAgICAgIFx1MDAyNnN0YXRlKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNyAwODoyMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0MTc3CgkJCQkJCQlvdXRwdXQ6IDI2CgkJCQkJCQl0aG91Z2h0czogOTgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgTmV0d29ya2luZyBQYXRjaCoqCgpPa2F5LCBzbyB0aGlzIHBhdGNoIGludHJvZHVjZXMgYSBzZWNvbmQgY2FsbCB0byBgaXA2X2ZpbmRfMXN0ZnJhZ29wdCgpYCBhZnRlciBgc2tiX2NoZWNrc3VtX2hlbHAoc2tiKWAuIE15IGltbWVkaWF0ZSBjb25jZXJuIGlzIHRoZSBwb3RlbnRpYWwgZm9yIGBza2JfY2hlY2tzdW1faGVscGAgdG8gcmVhbGxvY2F0ZSB0aGUgYHNrYmAgZGF0YS4gSWYgaXQgZG9lcywgYW5kIGl0IHZlcnkgd2VsbCBtaWdodCwgdGhlbiBgcHJldmhkcmAgY291bGQgZW5kIHVwIGJlaW5nIGEgZGFuZ2xpbmcgcG9pbnRlciwgcG9pbnRpbmcgdG8gaW52YWxpZCBtZW1vcnkuIFRoaXMgaXMgYSBjbGVhciBmdW5jdGlvbmFsIGlzc3VlIHRoYXQgbmVlZHMgYWRkcmVzc2luZywgYW5kIHRoZSBwYXRjaCwgaWYgaXQgZml4ZXMgdGhpcyBpc3N1ZSBpcyB2ZXJ5IHJlbGV2YW50IHRvIG15IHdvcmsuCgpTaW5jZSB0aGlzIGZpeGVzIGEgcG90ZW50aWFsIGlzc3VlLCBJIHNob3VsZCBhbHNvIGxvb2sgYXQgdGhlIGJyb2FkZXIgcGljdHVyZS4gU3BlY2lmaWNhbGx5LCBgYnJfaXA2X2ZyYWdtZW50YCBpcyBiZWluZyBleHBvcnRlZC4gVGhhdCBtZWFucyBvdGhlciBwYXJ0cyBvZiB0aGUgc3lzdGVtIGFyZSByZWx5aW5nIG9uIGl0LCBhbmQgdW5kZXJzdGFuZGluZyBob3cgaXQmIzM5O3MgdXNlZCBpcyBjcml0aWNhbC4gTGV0JiMzOTtzIHRyYWNlIHRob3NlIGNhbGxzIGFuZCBkZXBlbmRlbmNpZXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDcgMDg6MjE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7YnJfaXA2X2ZyYWdtZW50JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2luY2x1ZGUvbGludXgvbmV0ZmlsdGVyX2lwdjYuaD01Mz1zdGF0aWMgaW5saW5lIGludCBuZl9pcDZfcm91dGUoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3QgZHN0X2VudHJ5ICoqZHN0LFxuLS1cbmluY2x1ZGUvbGludXgvbmV0ZmlsdGVyX2lwdjYuaC02NC1cbmluY2x1ZGUvbGludXgvbmV0ZmlsdGVyX2lwdjYuaDo2NTppbnQgYnJfaXA2X2ZyYWdtZW50KHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuaW5jbHVkZS9saW51eC9uZXRmaWx0ZXJfaXB2Ni5oLTY2LVx0XHQgICAgc3RydWN0IG5mX2JyaWRnZV9mcmFnX2RhdGEgKmRhdGEsXG4tLVxuaW5jbHVkZS9saW51eC9uZXRmaWx0ZXJfaXB2Ni5oLTcwLVxuaW5jbHVkZS9saW51eC9uZXRmaWx0ZXJfaXB2Ni5oOjcxOnN0YXRpYyBpbmxpbmUgaW50IG5mX2JyX2lwNl9mcmFnbWVudChzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBzb2NrICpzayxcbmluY2x1ZGUvbGludXgvbmV0ZmlsdGVyX2lwdjYuaC03Mi1cdFx0XHRcdCAgICAgc3RydWN0IHNrX2J1ZmYgKnNrYixcbi0tXG5pbmNsdWRlL2xpbnV4L25ldGZpbHRlcl9pcHY2LmgtNzgtI2lmIElTX0VOQUJMRUQoQ09ORklHX0lQVjYpXG5pbmNsdWRlL2xpbnV4L25ldGZpbHRlcl9pcHY2Lmg6Nzk6XHRyZXR1cm4gYnJfaXA2X2ZyYWdtZW50KG5ldCwgc2ssIHNrYiwgZGF0YSwgb3V0cHV0KTtcbmluY2x1ZGUvbGludXgvbmV0ZmlsdGVyX2lwdjYuaC04MC0jZWxzZVxuLS1cbm5ldC9icmlkZ2UvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19icmlkZ2UuYz0zMzc9bmZfY3RfYnJpZGdlX3JlZnJhZyhzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBjb25zdCBzdHJ1Y3QgbmZfaG9va19zdGF0ZSAqc3RhdGUsXG4tLVxubmV0L2JyaWRnZS9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2JyaWRnZS5jLTM1Mi1cdGNhc2UgaHRvbnMoRVRIX1BfSVBWNik6XG5uZXQvYnJpZGdlL25ldGZpbHRlci9uZl9jb25udHJhY2tfYnJpZGdlLmM6MzUzOlx0XHRuZl9icl9pcDZfZnJhZ21lbnQoc3RhdGUtXHUwMDNlbmV0LCBzdGF0ZS1cdTAwM2Vzaywgc2tiLCBcdTAwMjZkYXRhLCBvdXRwdXQpO1xubmV0L2JyaWRnZS9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2JyaWRnZS5jLTM1NC1cdFx0YnJlYWs7XG4tLVxubmV0L2lwdjYvbmV0ZmlsdGVyLmM9MTEwPUVYUE9SVF9TWU1CT0xfR1BMKF9fbmZfaXA2X3JvdXRlKTtcbm5ldC9pcHY2L25ldGZpbHRlci5jLTExMS1cbm5ldC9pcHY2L25ldGZpbHRlci5jOjExMjppbnQgYnJfaXA2X2ZyYWdtZW50KHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxubmV0L2lwdjYvbmV0ZmlsdGVyLmMtMTEzLVx0XHQgICAgc3RydWN0IG5mX2JyaWRnZV9mcmFnX2RhdGEgKmRhdGEsXG4tLVxubmV0L2lwdjYvbmV0ZmlsdGVyLmMtMjMzLX1cbm5ldC9pcHY2L25ldGZpbHRlci5jOjIzNDpFWFBPUlRfU1lNQk9MX0dQTChicl9pcDZfZnJhZ21lbnQpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA3IDA4OjIxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDUxMDYKCQkJCQkJCW91dHB1dDogMzAKCQkJCQkJCXRob3VnaHRzOiAxMDAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqSW52ZXN0aWdhdGluZyB0aGUgQ29uZmlndXJhdGlvbiBMYW5kc2NhcGUgZm9yIElQIEZyYWdtZW50YXRpb24gaW4gQnJpZGdlIEVudmlyb25tZW50cyoqCgpPa2F5LCBzbyBJJiMzOTttIGRpdmluZyBpbnRvIHRoZSBrZXJuZWwgY29kZSByZWxhdGVkIHRvIElQIGZyYWdtZW50YXRpb24sIHNwZWNpZmljYWxseSB3aXRoaW4gYnJpZGdlIGVudmlyb25tZW50cy4gTXkgc3RhcnRpbmcgcG9pbnQgaXMgdGhlIGBuZl9jdF9icmlkZ2VfcmVmcmFnYCBmdW5jdGlvbiwgd2hpY2ggcmVzaWRlcyBpbiBgbmV0L2JyaWRnZS9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2JyaWRnZS5jYC4gTXkgaW1tZWRpYXRlIHF1ZXN0aW9uIGlzOiB3aGF0IGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBhcmUgcmVsZXZhbnQgdG8gdGhpcyBhbmQgdGhlIGFzc29jaWF0ZWQgYGJyX2lwNl9mcmFnbWVudGAgZnVuY3Rpb25hbGl0eT8gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCYjMzk7cyBlbmFibGVkLCBvciBuZWVkcyB0byBiZSBlbmFibGVkLCB0byBtYWtlIHRoZXNlIGZlYXR1cmVzIHdvcmsgYXMgaW50ZW5kZWQuCgpgYnJfaXA2X2ZyYWdtZW50YCwgSSBzZWUsIGlzIGRlZmluZWQgd2l0aGluIGBuZXQvaXB2Ni9uZXRmaWx0ZXIuY2AuIEdpdmVuIHRoYXQsIEkgdGhpbmsgdGhlIGBuZXQvaXB2Ni9NYWtlZmlsZWAgaXMgdGhlIG5leHQgbG9naWNhbCBwbGFjZSB0byBsb29rLiBUaGlzIHNob3VsZCBwcm92aWRlIGluc2lnaHRzIGludG8gdGhlIGJ1aWxkIHByb2Nlc3MsIGRlcGVuZGVuY2llcywgYW5kIGFueSBjb25kaXRpb25hbCBjb21waWxhdGlvbiB0aGF0IGluZmx1ZW5jZXMgdGhlIGluY2x1c2lvbiBvZiB0aGlzIGZyYWdtZW50YXRpb24gc3VwcG9ydC4gVGhpcyBzaG91bGQgaWxsdW1pbmF0ZSB0aGUgbmVjZXNzYXJ5IGtlcm5lbCBjb25maWd1cmF0aW9ucy4gSSYjMzk7bGwgc3RhcnQgdGhlcmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA3IDA4OjIxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O25ldGZpbHRlci5vJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L2lwdjYvTWFrZWZpbGUmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L2lwdjYvTWFrZWZpbGU9MTg9aXB2Ni0kKENPTkZJR19YRlJNKSAmIzQzOz0geGZybTZfcG9saWN5Lm8geGZybTZfc3RhdGUubyB4ZnJtNl9pbnB1dC5vIFxcXG5uZXQvaXB2Ni9NYWtlZmlsZS0xOS1cdHhmcm02X291dHB1dC5vIHhmcm02X3Byb3RvY29sLm9cbm5ldC9pcHY2L01ha2VmaWxlOjIwOmlwdjYtJChDT05GSUdfTkVURklMVEVSKSAmIzQzOz0gbmV0ZmlsdGVyLm9cbm5ldC9pcHY2L01ha2VmaWxlLTIxLWlwdjYtJChDT05GSUdfSVBWNl9NVUxUSVBMRV9UQUJMRVMpICYjNDM7PSBmaWI2X3J1bGVzLm9cbi0tXG5uZXQvaXB2Ni9NYWtlZmlsZT01OD1pZmRlZiBDT05GSUdfR0NPVl9QUk9GSUxFX05FVEZJTFRFUlxubmV0L2lwdjYvTWFrZWZpbGU6NTk6R0NPVl9QUk9GSUxFX25ldGZpbHRlci5vIDo9IHlcbm5ldC9pcHY2L01ha2VmaWxlLTYwLWVuZGlmXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA3IDA4OjIxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDU2NDMKCQkJCQkJCW91dHB1dDogMzUKCQkJCQkJCXRob3VnaHRzOiA2OAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgbGV0JiMzOTtzIHNlZSwgbXkgaW5pdGlhbCBhc3Nlc3NtZW50IHN1Z2dlc3RzIHRoYXQgSSYjMzk7bGwgZGVmaW5pdGVseSBuZWVkIGBDT05GSUdfTkVURklMVEVSYCBhbmQgYENPTkZJR19JUFY2YCBlbmFibGVkLiBUaG9zZSBzZWVtIGxpa2Ugb2J2aW91cyBwcmVyZXF1aXNpdGVzLCBnaXZlbiB0aGUgY29udGV4dC4gQnV0LCBobW0sIEkmIzM5O20gYWxzbyBzZWVpbmcgYSByZWZlcmVuY2UgdG8gYG5mX2N0X2JyaWRnZV9yZWZyYWdgLiBOb3csIHdoZXJlIGRvZXMgdGhhdCBsaXZlPyBBaGEsIGl0IGxvb2tzIGxpa2UgaXQmIzM5O3MgdHVja2VkIGF3YXkgaW4gYG5ldC9icmlkZ2UvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19icmlkZ2UuY2AuIE9rYXksIGdvb2QgdG8ga25vdy4gQmVzdCB0byBiZSB0aG9yb3VnaCwgSSBzaG91bGQgcmVhbGx5IGNoZWNrIHRoZSBidWlsZCBjb25maWd1cmF0aW9uIGZvciB0aGF0IGRpcmVjdG9yeSBhcyB3ZWxsLCBzbyBsZXQgbWUgcXVpY2tseSBwZWVrIGF0IGBuZXQvYnJpZGdlL25ldGZpbHRlci9NYWtlZmlsZWAgdG8gbWFrZSBzdXJlIHRoZXJlIGFyZW4mIzM5O3QgYW55IG90aGVyIGRlcGVuZGVuY2llcyBvciBmbGFncyBJJiMzOTttIG1pc3NpbmcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA3IDA4OjIyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O25mX2Nvbm50cmFja19icmlkZ2UmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvYnJpZGdlL25ldGZpbHRlci9NYWtlZmlsZSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvYnJpZGdlL25ldGZpbHRlci9NYWtlZmlsZT03PW9iai0kKENPTkZJR19ORlRfQlJJREdFX1JFSkVDVCkgICYjNDM7PSBuZnRfcmVqZWN0X2JyaWRnZS5vXG4tLVxubmV0L2JyaWRnZS9uZXRmaWx0ZXIvTWFrZWZpbGUtOS0jIGNvbm5lY3Rpb24gdHJhY2tpbmdcbm5ldC9icmlkZ2UvbmV0ZmlsdGVyL01ha2VmaWxlOjEwOm9iai0kKENPTkZJR19ORl9DT05OVFJBQ0tfQlJJREdFKSAmIzQzOz0gbmZfY29ubnRyYWNrX2JyaWRnZS5vXG5uZXQvYnJpZGdlL25ldGZpbHRlci9NYWtlZmlsZS0xMS1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDcgMDg6MjI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjAxMwoJCQkJCQkJb3V0cHV0OiAzNgoJCQkJCQkJdGhvdWdodHM6IDQxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkludmVzdGlnYXRpbmcgTmV0d29yayBCcmlkZ2UgQ29ubmVjdGlvbiBUcmFja2luZyBSZXF1aXJlbWVudHMqKgoKQWxyaWdodCwgdGhlIHNpdHVhdGlvbiBjYWxscyBmb3IgYENPTkZJR19ORl9DT05OVFJBQ0tfQlJJREdFYC4gR290dGEgbWFrZSBzdXJlIHRoYXQmIzM5O3MgZW5hYmxlZCBhbmQgY29uZmlndXJlZCBjb3JyZWN0bHkuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBjcm9zcy1yZWZlcmVuY2UgdGhpcyBpbiBgbmV0L2JyaWRnZS9uZXRmaWx0ZXIvS2NvbmZpZ2AuIFRoYXQmIzM5O3MgdGhlIGxvZ2ljYWwgcGxhY2UgdG8gc3RhcnQgZGlnZ2luZyBpbnRvIHRoZSBkZXBlbmRlbmNpZXMgYW5kIG9wdGlvbnMuIEkmIzM5O2xsIG5lZWQgdG8gY29uZmlybSBpdHMgcHJlc2VuY2UsIGNoZWNrIGl0cyBpbXBsaWNhdGlvbnMgZm9yIG91ciBzcGVjaWZpYyBicmlkZ2Ugc2V0dXAsIGFuZCBtYWtlIHN1cmUgdGhlcmUgYXJlbiYjMzk7dCBhbnkgY29uZmxpY3RpbmcgY29uZmlndXJhdGlvbnMgb3IgbmVjZXNzYXJ5IGF1eGlsaWFyeSBtb2R1bGVzIHRoYXQgbmVlZCB0byBiZSBjb25zaWRlcmVkLiBJdCYjMzk7cyBhIGZ1bmRhbWVudGFsIHBpZWNlLCBzbyBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdCB0aG9yb3VnaGx5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNyAwODoyMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgTkZfQ09OTlRSQUNLX0JSSURHRSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9icmlkZ2UvbmV0ZmlsdGVyL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L2JyaWRnZS9uZXRmaWx0ZXIvS2NvbmZpZz0yNj1lbmRpZiAjIE5GX1RBQkxFU19CUklER0Vcbm5ldC9icmlkZ2UvbmV0ZmlsdGVyL0tjb25maWctMjctXG5uZXQvYnJpZGdlL25ldGZpbHRlci9LY29uZmlnOjI4OmNvbmZpZyBORl9DT05OVFJBQ0tfQlJJREdFXG5uZXQvYnJpZGdlL25ldGZpbHRlci9LY29uZmlnLTI5LVx0dHJpc3RhdGUgXCYjMzQ7SVB2NC9JUFY2IGJyaWRnZSBjb25uZWN0aW9uIHRyYWNraW5nIHN1cHBvcnRcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDcgMDg6MjI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjMzMwoJCQkJCQkJb3V0cHV0OiAzNgoJCQkJCQkJdGhvdWdodHM6IDUwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkludmVzdGlnYXRpbmcgQ29uZmlndXJhdGlvbiBEZXBlbmRlbmNpZXMqKgoKT2theSwgc28gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgdGhlIGRlcGVuZGVuY2llcyByZWxhdGVkIHRvIHRoaXMgbmV0d29ya2luZyBjb25maWd1cmF0aW9uLiBGaXJzdCwgSSYjMzk7bGwgcXVpY2tseSBzZWUgaWYgdGhlcmUgYXJlIGFueSBvdGhlciBjb25maWd1cmF0aW9uIG9wdGlvbnMgdGhhdCBqdW1wIG91dCBhcyBwb3RlbnRpYWxseSByZWxldmFudC4gU3BlY2lmaWNhbGx5LCBJJiMzOTttIHRoaW5raW5nIGBDT05GSUdfQlJJREdFX05FVEZJTFRFUmAg4oCTIHRoYXQgc291bmRzIGxpa2UgYSBzdHJvbmcgY2FuZGlkYXRlIHRvIGludmVzdGlnYXRlLiBUbyBnZXQgYSBjbGVhcmVyIHBpY3R1cmUgb2YgdGhlIHJlbGF0aW9uc2hpcHMgYW5kIGRlcGVuZGVuY2llcywgSSYjMzk7bGwgZGl2ZSBpbnRvIHRoZSBgbmV0L2JyaWRnZS9uZXRmaWx0ZXIvS2NvbmZpZ2AgZmlsZS4gSSYjMzk7bSBlc3BlY2lhbGx5IGludGVyZXN0ZWQgaW4gd2hldGhlciBgTkZfQ09OTlRSQUNLX0JSSURHRWAgaGFzIGFueSBkZXBlbmRlbmNpZXMgd2l0aGluIHRoYXQgY29udGV4dCwgYXMgY29ubmVjdGlvbiB0cmFja2luZyBpcyBvZnRlbiBhIGtleSBhc3BlY3Qgb2YgdGhlc2UgdHlwZXMgb2YgY29uZmlndXJhdGlvbnMuIFRoaXMgc2hvdWxkIGdpdmUgbWUgdGhlIGluZm9ybWF0aW9uIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyBldmVyeXRoaW5nIGZpdHMgdG9nZXRoZXIuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA3IDA4OjIyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7bmV0L2JyaWRnZS9uZXRmaWx0ZXIvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDI4LAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDIwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgMjg6XHRjb25maWcgTkZfQ09OTlRSQUNLX0JSSURHRVxuICAyOTpcdFx0dHJpc3RhdGUgXCYjMzQ7SVB2NC9JUFY2IGJyaWRnZSBjb25uZWN0aW9uIHRyYWNraW5nIHN1cHBvcnRcJiMzNDtcbiAgMzA6XHRcdGRlcGVuZHMgb24gTkZfQ09OTlRSQUNLXG4gIDMxOlx0XHRkZWZhdWx0IG5cbiAgMzI6XHRcdGhlbHBcbiAgMzM6XHRcdCAgQ29ubmVjdGlvbiB0cmFja2luZyBrZWVwcyBhIHJlY29yZCBvZiB3aGF0IHBhY2tldHMgaGF2ZSBwYXNzZWRcbiAgMzQ6XHRcdCAgdGhyb3VnaCB5b3VyIG1hY2hpbmUsIGluIG9yZGVyIHRvIGZpZ3VyZSBvdXQgaG93IHRoZXkgYXJlIHJlbGF0ZWRcbiAgMzU6XHRcdCAgaW50byBjb25uZWN0aW9ucy4gVGhpcyBpcyB1c2VkIHRvIGVuaGFuY2UgcGFja2V0IGZpbHRlcmluZyB2aWFcbiAgMzY6XHRcdCAgc3RhdGVmdWwgcG9saWNpZXMuIEVuYWJsZSB0aGlzIGlmIHlvdSB3YW50IG5hdGl2ZSB0cmFja2luZyBmcm9tXG4gIDM3Olx0XHQgIHRoZSBicmlkZ2UuIFRoaXMgcHJvdmlkZXMgYSByZXBsYWNlbWVudCBmb3IgdGhlIGBicl9uZXRmaWx0ZXImIzM5O1xuICAzODpcdFx0ICBpbmZyYXN0cnVjdHVyZS5cbiAgMzk6XHRcbiAgNDA6XHRcdCAgVG8gY29tcGlsZSBpdCBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZS4gIElmIHVuc3VyZSwgc2F5IE4uXG4gIDQxOlx0XG4gIDQyOlx0IyBvbGQgc29ja29wdCBpbnRlcmZhY2UgYW5kIGV2YWwgbG9vcFxuICA0MzpcdGNvbmZpZyBCUklER0VfTkZfRUJUQUJMRVNfTEVHQUNZXG4gIDQ0Olx0XHR0cmlzdGF0ZSBcJiMzNDtMZWdhY3kgRUJUQUJMRVMgc3VwcG9ydFwmIzM0O1xuICA0NTpcdFx0ZGVwZW5kcyBvbiBCUklER0UgXHUwMDI2XHUwMDI2IE5FVEZJTFRFUl9YVEFCTEVTX0xFR0FDWVxuICA0NjpcdFx0ZGVwZW5kcyBvbiBORVRGSUxURVJfWFRBQkxFU1xuICA0NzpcdFx0ZGVmYXVsdFx0blxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNyAwODoyMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2ODczCgkJCQkJCQlvdXRwdXQ6IDI2CgkJCQkJCQl0aG91Z2h0czogMzE1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFuYWx5c2lzIG9mIGEgUG90ZW50aWFsIElQdjYgQnJpZGdlIEZyYWdtZW50YXRpb24gQnVnKioKCk9rYXksIHNvIEkmIzM5O20gaG9uaW5nIGluIG9uIGEgcG90ZW50aWFsIHZ1bG5lcmFiaWxpdHkuIEl0IGxvb2tzIGxpa2UgdGhlIGNvcmUgY29uZmlndXJhdGlvbiBpdGVtIEkgbmVlZCB0byBwYXkgYXR0ZW50aW9uIHRvIGlzIGBDT05GSUdfTkZfQ09OTlRSQUNLX0JSSURHRWAuIE9mIGNvdXJzZSwgSSYjMzk7bGwgYWxzbyBuZWVkIHRvIGNvbnNpZGVyIGBDT05GSUdfSVBWNmAsIGBDT05GSUdfTkVURklMVEVSYCwgYENPTkZJR19CUklER0VgLCBhbmQgYENPTkZJR19ORl9DT05OVFJBQ0tgIHNpbmNlIHRoZXkgbGlrZWx5IHBsYXkgYSBzdXBwb3J0aW5nIHJvbGUuIEkgbmVlZCB0byBrZWVwIGluIG1pbmQgdGhlc2UgY29uZmlndXJhdGlvbnMuCgpTcGVjaWZpY2FsbHksIEkmIzM5O20gZ29pbmcgdG8gZm9jdXMgb24gdGhlIGBORl9DT05OVFJBQ0tfQlJJREdFYCBtb2R1bGUuIFRoZSBmdW5jdGlvbiB0aGF0IHJlYWxseSBzdGFuZHMgb3V0IGlzIGBicl9pcDZfZnJhZ21lbnRgLiBOb3csIGlzIHRoZXJlIGFueXRoaW5nIGVsc2U/IEFoLCB5ZXMsIGBuZl9jdF9icmlkZ2VfcmVmcmFnYCBjYWxscyBpdC4gU28sIHRoYXQmIzM5O3MgaW1wb3J0YW50IGNvbnRleHQuCgpMZXQgbWUgZ28gYmFjayBhbmQgZ2l2ZSBgYnJfaXA2X2ZyYWdtZW50YCBhbm90aGVyIGNsb3NlIGxvb2suIEl0IGFwcGVhcnMgdG8gY2FsbCBgaXA2X2ZpbmRfMXN0ZnJhZ29wdGAuIEFoIGhhISBJIGJlbGlldmUgSSYjMzk7dmUgcGlucG9pbnRlZCB0aGUgaXNzdWUuIFRoZSByb290IGNhdXNlIGxvb2tzIGxpa2UgYSB1c2UtYWZ0ZXItZnJlZSBvciBhIHJlbGF0ZWQgZGFuZ2xpbmcgcG9pbnRlciBpc3N1ZS4gTXkgaHlwb3RoZXNpcyBpcyB0aGF0IGBwcmV2aGRyYCBiZWNvbWVzIGludmFsaWQgYWZ0ZXIgYHNrYl9jaGVja3N1bV9oZWxwKHNrYilgIGlzIGNhbGxlZC4gQW5kLCBvZiBjb3Vyc2UsIGBza2JfY2hlY2tzdW1faGVscGAgaXMga25vd24gdG8gcG90ZW50aWFsbHkgcmVhbGxvY2F0ZSB0aGUgYHNrYmAgZGF0YSwgd2hpY2ggd291bGQgaW52YWxpZGF0ZSB0aGUgYHByZXZoZHJgIHBvaW50ZXIuIFRoaXMgc2VlbXMgaW5jcmVkaWJseSBwcm9taXNpbmcgZm9yIGZ1enppbmcuCgpMZXQgbWUganVzdCBkb3VibGUtY2hlY2sgb25lIGxhc3QgdGltZSB0aGF0IGBicl9pcDZfZnJhZ21lbnRgIGlzIHRoZSBvbmx5IGZ1bmN0aW9uIEkgbmVlZCB0byBiZSBjb25jZXJuZWQgd2l0aCBpbiB0aGlzIGNvbnRleHQuIFllcywgaXQgYXBwZWFycyB0byBiZSB0aGUgcHJpbWFyeSBmdW5jdGlvbiBiZWluZyBtb2RpZmllZC4gTXkgZm9jdXMgc3ltYm9scyB3aWxsIGJlIGBicl9pcDZfZnJhZ21lbnRgIGFuZCBgbmZfY3RfYnJpZGdlX3JlZnJhZ2AuCgpJIHNob3VsZCBiZSBhYmxlIHRvIGdldCBhIGxvb2sgYXQgYGJyX2lwNl9mcmFnbWVudGAgZnJvbSBgbmV0L2lwdjYvbmV0ZmlsdGVyLmNgLiBJIHNob3VsZCBjaGVjayB0aGF0IGl0JiMzOTtzIGV4cG9ydGVkIGFuZCBjaGVjayB3aGVyZSBlbHNlIGl0IG1heSBiZSBjYWxsZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA3IDA4OjIyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2JyX2lwNl9mcmFnbWVudCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0OyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtpbmNsdWRlL2xpbnV4L25ldGZpbHRlcl9pcHY2Lmg9NTM9c3RhdGljIGlubGluZSBpbnQgbmZfaXA2X3JvdXRlKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IGRzdF9lbnRyeSAqKmRzdCxcbi0tXG5pbmNsdWRlL2xpbnV4L25ldGZpbHRlcl9pcHY2LmgtNjQtXG5pbmNsdWRlL2xpbnV4L25ldGZpbHRlcl9pcHY2Lmg6NjU6aW50IGJyX2lwNl9mcmFnbWVudChzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX2J1ZmYgKnNrYixcbmluY2x1ZGUvbGludXgvbmV0ZmlsdGVyX2lwdjYuaC02Ni1cdFx0ICAgIHN0cnVjdCBuZl9icmlkZ2VfZnJhZ19kYXRhICpkYXRhLFxuLS1cbmluY2x1ZGUvbGludXgvbmV0ZmlsdGVyX2lwdjYuaC03MC1cbmluY2x1ZGUvbGludXgvbmV0ZmlsdGVyX2lwdjYuaDo3MTpzdGF0aWMgaW5saW5lIGludCBuZl9icl9pcDZfZnJhZ21lbnQoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3Qgc29jayAqc2ssXG5pbmNsdWRlL2xpbnV4L25ldGZpbHRlcl9pcHY2LmgtNzItXHRcdFx0XHQgICAgIHN0cnVjdCBza19idWZmICpza2IsXG4tLVxuaW5jbHVkZS9saW51eC9uZXRmaWx0ZXJfaXB2Ni5oLTc4LSNpZiBJU19FTkFCTEVEKENPTkZJR19JUFY2KVxuaW5jbHVkZS9saW51eC9uZXRmaWx0ZXJfaXB2Ni5oOjc5Olx0cmV0dXJuIGJyX2lwNl9mcmFnbWVudChuZXQsIHNrLCBza2IsIGRhdGEsIG91dHB1dCk7XG5pbmNsdWRlL2xpbnV4L25ldGZpbHRlcl9pcHY2LmgtODAtI2Vsc2Vcbi0tXG5uZXQvYnJpZGdlL25ldGZpbHRlci9uZl9jb25udHJhY2tfYnJpZGdlLmM9MzM3PW5mX2N0X2JyaWRnZV9yZWZyYWcoc3RydWN0IHNrX2J1ZmYgKnNrYiwgY29uc3Qgc3RydWN0IG5mX2hvb2tfc3RhdGUgKnN0YXRlLFxuLS1cbm5ldC9icmlkZ2UvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19icmlkZ2UuYy0zNTItXHRjYXNlIGh0b25zKEVUSF9QX0lQVjYpOlxubmV0L2JyaWRnZS9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2JyaWRnZS5jOjM1MzpcdFx0bmZfYnJfaXA2X2ZyYWdtZW50KHN0YXRlLVx1MDAzZW5ldCwgc3RhdGUtXHUwMDNlc2ssIHNrYiwgXHUwMDI2ZGF0YSwgb3V0cHV0KTtcbm5ldC9icmlkZ2UvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19icmlkZ2UuYy0zNTQtXHRcdGJyZWFrO1xuLS1cbm5ldC9pcHY2L25ldGZpbHRlci5jPTExMD1FWFBPUlRfU1lNQk9MX0dQTChfX25mX2lwNl9yb3V0ZSk7XG5uZXQvaXB2Ni9uZXRmaWx0ZXIuYy0xMTEtXG5uZXQvaXB2Ni9uZXRmaWx0ZXIuYzoxMTI6aW50IGJyX2lwNl9mcmFnbWVudChzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX2J1ZmYgKnNrYixcbm5ldC9pcHY2L25ldGZpbHRlci5jLTExMy1cdFx0ICAgIHN0cnVjdCBuZl9icmlkZ2VfZnJhZ19kYXRhICpkYXRhLFxuLS1cbm5ldC9pcHY2L25ldGZpbHRlci5jLTIzMy19XG5uZXQvaXB2Ni9uZXRmaWx0ZXIuYzoyMzQ6RVhQT1JUX1NZTUJPTF9HUEwoYnJfaXA2X2ZyYWdtZW50KTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDcgMDg6MjM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogODI1OAoJCQkJCQkJb3V0cHV0OiA0NAoJCQkJCQkJdGhvdWdodHM6IDc2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHVuZGVyc3RhbmRpbmcsIGZvcm1hdHRlZCBhcyByZXF1ZXN0ZWQ6CgoqKkRlY29uc3RydWN0aW5nIHRoZSBDb25udHJhY2sgQnJpZGdlIFJlLWZyYWdtZW50YXRpb24gTG9naWMqKgoKQWxyaWdodCwgc28gSSBuZWVkIHRvIGRpZyBpbnRvIGhvdyByZS1mcmFnbWVudGF0aW9uIGlzIGhhbmRsZWQgd2l0aGluIHRoZSBDb25udHJhY2sgYnJpZGdlIGNvbnRleHQuIFRoZSBjb2RlIHBhdGggc3VnZ2VzdHMgdGhhdCBgbmZfY3RfYnJpZGdlX3JlZnJhZ2AgaXMgY2FsbGVkIGV4Y2x1c2l2ZWx5IHRocm91Z2ggYG5mX2JyX2lwNl9mcmFnbWVudGAuIFRoYXQgbWVhbnMgdGhlIGBORl9DT05OVFJBQ0tfQlJJREdFYCBjb25maWd1cmF0aW9uIG9wdGlvbiBpcyB0aGUgY3J1Y2lhbCBwaWVjZSBoZXJlLiBJdCYjMzk7cyB0aGUgZW5hYmxpbmcgY29uZGl0aW9uLgoKTm93LCB0byBnZXQgYSBoYW5kbGUgb24gd2hhdCYjMzk7cyBhY3R1YWxseSBoYXBwZW5pbmcsIEkgbmVlZCB0byBqdW1wIGludG8gdGhlIGBuZl9jdF9icmlkZ2VfcmVmcmFnYCBmdW5jdGlvbiBpdHNlbGYuIEkmIzM5O2xsIGZpbmQgaXQgaW4gYG5ldC9icmlkZ2UvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19icmlkZ2UuY2AuIExldCYjMzk7cyBzZWUgd2hhdCB0aGUgaW1wbGVtZW50YXRpb24gbG9va3MgbGlrZSBhbmQgaG93IGl0JiMzOTtzIG9yY2hlc3RyYXRpbmcgdGhlc2UgZnJhZ21lbnRzLiBJIGV4cGVjdCBpdCYjMzk7bGwgYmUgbG9va2luZyBhdCB0aGUgY29ubmVjdGlvbiB0cmFja2luZyBlbnRyaWVzIGFuZCBvcmNoZXN0cmF0aW5nIHRoZSByZWFzc2VtYmx5IGJhc2VkIG9uIHRoZSBicmlkZ2UmIzM5O3MgaW52b2x2ZW1lbnQuIE15IGluaXRpYWwgYXNzdW1wdGlvbiBpcyB0aGF0IGl0JiMzOTtsbCBpbnZvbHZlIHNvbWUgY2FyZWZ1bCBtYW5hZ2VtZW50IG9mIGZyYWdtZW50IGlkZW50aWZpY2F0aW9uIGFuZCByZWFzc2VtYmx5IG1ldGFkYXRhLiBMZXQmIzM5O3Mgc2VlIGhvdyB0aGV5IGRvIGl0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNyAwODoyMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O25ldC9icmlkZ2UvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19icmlkZ2UuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDMzNywKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA1MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgMzM3Olx0bmZfY3RfYnJpZGdlX3JlZnJhZyhzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBjb25zdCBzdHJ1Y3QgbmZfaG9va19zdGF0ZSAqc3RhdGUsXG4gMzM4Olx0XHRcdCAgICBpbnQgKCpvdXRwdXQpKHN0cnVjdCBuZXQgKiwgc3RydWN0IHNvY2sgKnNrLFxuIDMzOTpcdFx0XHRcdFx0ICBjb25zdCBzdHJ1Y3QgbmZfYnJpZGdlX2ZyYWdfZGF0YSAqZGF0YSxcbiAzNDA6XHRcdFx0XHRcdCAgc3RydWN0IHNrX2J1ZmYgKikpXG4gMzQxOlx0e1xuIDM0MjpcdFx0c3RydWN0IG5mX2JyaWRnZV9mcmFnX2RhdGEgZGF0YTtcbiAzNDM6XHRcbiAzNDQ6XHRcdGlmICghQlJfSU5QVVRfU0tCX0NCKHNrYiktXHUwMDNlZnJhZ19tYXhfc2l6ZSlcbiAzNDU6XHRcdFx0cmV0dXJuIE5GX0FDQ0VQVDtcbiAzNDY6XHRcbiAzNDc6XHRcdG5mX2N0X2JyaWRnZV9mcmFnX3NhdmUoc2tiLCBcdTAwMjZkYXRhKTtcbiAzNDg6XHRcdHN3aXRjaCAoc2tiLVx1MDAzZXByb3RvY29sKSB7XG4gMzQ5Olx0XHRjYXNlIGh0b25zKEVUSF9QX0lQKTpcbiAzNTA6XHRcdFx0bmZfYnJfaXBfZnJhZ21lbnQoc3RhdGUtXHUwMDNlbmV0LCBzdGF0ZS1cdTAwM2Vzaywgc2tiLCBcdTAwMjZkYXRhLCBvdXRwdXQpO1xuIDM1MTpcdFx0XHRicmVhaztcbiAzNTI6XHRcdGNhc2UgaHRvbnMoRVRIX1BfSVBWNik6XG4gMzUzOlx0XHRcdG5mX2JyX2lwNl9mcmFnbWVudChzdGF0ZS1cdTAwM2VuZXQsIHN0YXRlLVx1MDAzZXNrLCBza2IsIFx1MDAyNmRhdGEsIG91dHB1dCk7XG4gMzU0Olx0XHRcdGJyZWFrO1xuIDM1NTpcdFx0ZGVmYXVsdDpcbiAzNTY6XHRcdFx0V0FSTl9PTl9PTkNFKDEpO1xuIDM1NzpcdFx0XHRyZXR1cm4gTkZfRFJPUDtcbiAzNTg6XHRcdH1cbiAzNTk6XHRcbiAzNjA6XHRcdHJldHVybiBORl9TVE9MRU47XG4gMzYxOlx0fVxuIDM2MjpcdFxuIDM2MzpcdC8qIEFjdHVhbGx5IG9ubHkgc2xvdyBwYXRoIHJlZnJhZ21lbnRhdGlvbiBuZWVkcyB0aGlzLiAqL1xuIDM2NDpcdHN0YXRpYyBpbnQgbmZfY3RfYnJpZGdlX2ZyYWdfcmVzdG9yZShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuIDM2NTpcdFx0XHRcdFx0ICAgICBjb25zdCBzdHJ1Y3QgbmZfYnJpZGdlX2ZyYWdfZGF0YSAqZGF0YSlcbiAzNjY6XHR7XG4gMzY3Olx0XHRpbnQgZXJyO1xuIDM2ODpcdFxuIDM2OTpcdFx0ZXJyID0gc2tiX2Nvd19oZWFkKHNrYiwgRVRIX0hMRU4pO1xuIDM3MDpcdFx0aWYgKGVycikge1xuIDM3MTpcdFx0XHRrZnJlZV9za2Ioc2tiKTtcbiAzNzI6XHRcdFx0cmV0dXJuIC1FTk9NRU07XG4gMzczOlx0XHR9XG4gMzc0Olx0XHRpZiAoZGF0YS1cdTAwM2V2bGFuX3ByZXNlbnQpXG4gMzc1Olx0XHRcdF9fdmxhbl9od2FjY2VsX3B1dF90YWcoc2tiLCBkYXRhLVx1MDAzZXZsYW5fcHJvdG8sIGRhdGEtXHUwMDNldmxhbl90Y2kpO1xuIDM3NjpcdFx0ZWxzZSBpZiAoc2tiX3ZsYW5fdGFnX3ByZXNlbnQoc2tiKSlcbiAzNzc6XHRcdFx0X192bGFuX2h3YWNjZWxfY2xlYXJfdGFnKHNrYik7XG4gMzc4Olx0XG4gMzc5Olx0XHRza2JfY29weV90b19saW5lYXJfZGF0YV9vZmZzZXQoc2tiLCAtRVRIX0hMRU4sIGRhdGEtXHUwMDNlbWFjLCBFVEhfSExFTik7XG4gMzgwOlx0XHRza2JfcmVzZXRfbWFjX2hlYWRlcihza2IpO1xuIDM4MTpcdFxuIDM4MjpcdFx0cmV0dXJuIDA7XG4gMzgzOlx0fVxuIDM4NDpcdFxuIDM4NTpcdHN0YXRpYyBpbnQgbmZfY3RfYnJpZGdlX3JlZnJhZ19wb3N0KHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHNvY2sgKnNrLFxuIDM4NjpcdFx0XHRcdFx0ICAgIGNvbnN0IHN0cnVjdCBuZl9icmlkZ2VfZnJhZ19kYXRhICpkYXRhLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNyAwODoyMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA5NDM3CgkJCQkJCQlvdXRwdXQ6IDE1MwoJCQkJCQkJdGhvdWdodHM6IDI0NwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBc3Nlc3NtZW50IG9mIHRoZSBJUHY2IEJyaWRnZSBOZXRmaWx0ZXIgUGF0Y2gqKgoKT2theSwgc28gdGhpcyBwYXRjaCBpcyBhZGRyZXNzaW5nIGEgcHJldHR5IG5hc3R5IHBvdGVudGlhbCBidWcgd2l0aGluIGBicl9pcDZfZnJhZ21lbnRgLiBJdCBzZWVtcyBsaWtlIHRoZSBgcHJldmhkcmAgcG9pbnRlciwgdXNlZCB3aXRoaW4gdGhlIElQdjYgZnJhZ21lbnRhdGlvbiBsb2dpYywgY2FuIGJlY29tZSBkYW5nbGluZyBpZiBgc2tiX2NoZWNrc3VtX2hlbHBgIGRlY2lkZXMgdG8gcmVhbGxvY2F0ZSB0aGUgYHNrYmAmIzM5O3MgZGF0YSBidWZmZXIuIFRoYXQmIzM5O3MgYSBjbGFzc2ljIHJlY2lwZSBmb3IgYSB1c2UtYWZ0ZXItZnJlZSBvciwgZXZlbiB3b3JzZSwgbWVtb3J5IGNvcnJ1cHRpb24sIGFuZCB3ZSBhbGwga25vdyBob3cgdGhvc2UgY2FuIGJlIGEgbmlnaHRtYXJlIHRvIGRlYnVnLgoKVGhlIGZpeCBpdHNlbGYgYXBwZWFycyBzdHJhaWdodGZvcndhcmQg4oCTIGNhbGwgYGlwNl9maW5kXzFzdGZyYWdvcHRgIGFnYWluIGFmdGVyIHRoZSBwb3RlbnRpYWwgcmVhbGxvY2F0aW9uIHRvIGVuc3VyZSBgcHJldmhkcmAgaXMgcG9pbnRpbmcgYXQgdmFsaWQgbWVtb3J5LiBGdW5jdGlvbmFsbHksIHRoaXMgc2VlbXMgbGlrZSBhIHNvbGlkIGFwcHJvYWNoIHRvIG1pdGlnYXRlIHRoZSByaXNrLiBUaGlzIGFmZmVjdHMgY29kZSB3aXRoaW4gdGhlIGJyaWRnZSBuZXRmaWx0ZXIgY29udGV4dCwgc3BlY2lmaWNhbGx5IGBicl9pcDZfZnJhZ21lbnRgIGFuZCBgbmZfY3RfYnJpZGdlX3JlZnJhZ2AsIHdoaWNoIEkmIzM5O2xsIGJlIGtlZXBpbmcgYSBjbG9zZSBleWUgb24uCgpHaXZlbiB0aGUgcG90ZW50aWFsIHNldmVyaXR5IG9mIGEgdXNlLWFmdGVyLWZyZWUgaW4gbmV0d29yayBjb2RlLCBhbmQgdGhlIGZ1bmN0aW9uYWwgbmF0dXJlIG9mIHRoaXMgY2hhbmdlLCBJJiMzOTttIGFic29sdXRlbHkgZ29pbmcgdG8gcmVjb21tZW5kIGZ1enppbmcgdGhpcy4gV2UgbmVlZCB0byBiZSBhYnNvbHV0ZWx5IGNlcnRhaW4gdGhpcyBmaXggd29ya3MgYW5kIGRvZXNuJiMzOTt0IGludHJvZHVjZSBhbnkgcmVncmVzc2lvbnMgb3IgbmV3IHZ1bG5lcmFiaWxpdGllcy4gVGhlIHJlbGV2YW50IGNvbmZpZ3VyYXRpb24gb3B0aW9ucywgYE5GX0NPTk5UUkFDS19CUklER0VgLCBgQlJJREdFYCwgYElQVjZgLCBhbmQgYE5FVEZJTFRFUmAsIHdpbGwgYmUgZW5hYmxlZCBmb3IgdGhlIGZ1enppbmcgcnVucy4KCkFscmlnaHQsIHRpbWUgdG8gc2V0IHRoZSBmdXp6aW5nIHByb2Nlc3MgaW4gbW90aW9uIHVzaW5nIHRoZSBzZXQtcmVzdWx0cyB0b29sLiBMZXQmIzM5O3Mgc2VlIHdoYXQgd2UgY2FuIGRpZyB1cC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDcgMDg6MjM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05GX0NPTk5UUkFDS19CUklER0UmIzM0OywKICAgICYjMzQ7QlJJREdFJiMzNDssCiAgICAmIzM0O0lQVjYmIzM0OywKICAgICYjMzQ7TkVURklMVEVSJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7YnJfaXA2X2ZyYWdtZW50JiMzNDssCiAgICAmIzM0O25mX2N0X2JyaWRnZV9yZWZyYWcmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSBwb3RlbnRpYWwgdXNlLWFmdGVyLWZyZWUgaW4gYGJyX2lwNl9mcmFnbWVudGAgYnkgcmUtZXZhbHVhdGluZyB0aGUgYHByZXZoZHJgIHBvaW50ZXIgYWZ0ZXIgYHNrYl9jaGVja3N1bV9oZWxwYCB3aGljaCBtYXkgcmVhbGxvY2F0ZSB0aGUgc2tiIGRhdGEuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgSVB2NiBicmlkZ2UgbmV0ZmlsdGVyIGNvZGUgdGhhdCBzaG91bGQgYmUgZnV6emVkIHRvIGVuc3VyZSB0aGUgZml4IGlzIGNvcnJlY3QgYW5kIGRvZXNuJiMzOTt0IGludHJvZHVjZSBuZXcgaXNzdWVzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtORl9DT05OVFJBQ0tfQlJJREdFJiMzNDssCiAgICAmIzM0O0JSSURHRSYjMzQ7LAogICAgJiMzNDtJUFY2JiMzNDssCiAgICAmIzM0O05FVEZJTFRFUiYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2JyX2lwNl9mcmFnbWVudCYjMzQ7LAogICAgJiMzNDtuZl9jdF9icmlkZ2VfcmVmcmFnJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgcG90ZW50aWFsIHVzZS1hZnRlci1mcmVlIGluIGBicl9pcDZfZnJhZ21lbnRgIGJ5IHJlLWV2YWx1YXRpbmcgdGhlIGBwcmV2aGRyYCBwb2ludGVyIGFmdGVyIGBza2JfY2hlY2tzdW1faGVscGAgd2hpY2ggbWF5IHJlYWxsb2NhdGUgdGhlIHNrYiBkYXRhLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIElQdjYgYnJpZGdlIG5ldGZpbHRlciBjb2RlIHRoYXQgc2hvdWxkIGJlIGZ1enplZCB0byBlbnN1cmUgdGhlIGZpeCBpcyBjb3JyZWN0IGFuZCBkb2VzbiYjMzk7dCBpbnRyb2R1Y2UgbmV3IGlzc3Vlcy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA3VDA4OjIwOjMxLjUzMDc2MTc2NloiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE4Nzk2NDk5MTY2NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJORl9DT05OVFJBQ0tfQlJJREdFXCIsXG4gICAgXCJCUklER0VcIixcbiAgICBcIklQVjZcIixcbiAgICBcIk5FVEZJTFRFUlwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImJyX2lwNl9mcmFnbWVudFwiLFxuICAgIFwibmZfY3RfYnJpZGdlX3JlZnJhZ1wiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgcG90ZW50aWFsIHVzZS1hZnRlci1mcmVlIGluIGBicl9pcDZfZnJhZ21lbnRgIGJ5IHJlLWV2YWx1YXRpbmcgdGhlIGBwcmV2aGRyYCBwb2ludGVyIGFmdGVyIGBza2JfY2hlY2tzdW1faGVscGAgd2hpY2ggbWF5IHJlYWxsb2NhdGUgdGhlIHNrYiBkYXRhLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIElQdjYgYnJpZGdlIG5ldGZpbHRlciBjb2RlIHRoYXQgc2hvdWxkIGJlIGZ1enplZCB0byBlbnN1cmUgdGhlIGZpeCBpcyBjb3JyZWN0IGFuZCBkb2Vzbid0IGludHJvZHVjZSBuZXcgaXNzdWVzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wN1QwODoyMDozMS41MzA3Njc1MzZaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjgzMzI0Njk4MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDM2OTk3N2E5Yjg2ZDQwNThkYzJhYjg3MzJmNDFiZDJiMjY2ZGZjZmNcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFR1ZSBKdWwgNyAwODoyMDoyOSAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9uZXQvaXB2Ni9uZXRmaWx0ZXIuYyBiL25ldC9pcHY2L25ldGZpbHRlci5jXFxuaW5kZXggNmQ4MGY4NWU1NWZhN2YuLjU0Nzg3OWRhOTUzMjUxIDEwMDY0NFxcbi0tLSBhL25ldC9pcHY2L25ldGZpbHRlci5jXFxuKysrIGIvbmV0L2lwdjYvbmV0ZmlsdGVyLmNcXG5AQCAtMTQ3LDYgKzE0NywxMCBAQCBpbnQgYnJfaXA2X2ZyYWdtZW50KHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbiBcXHQgICAgKGVyciA9IHNrYl9jaGVja3N1bV9oZWxwKHNrYikpKVxcbiBcXHRcXHRnb3RvIGJsYWNraG9sZTtcXG4gXFxuK1xcdGVyciA9IGlwNl9maW5kXzFzdGZyYWdvcHQoc2tiLCBcXHUwMDI2cHJldmhkcik7XFxuK1xcdGlmIChlcnIgXFx1MDAzYyAwKVxcbitcXHRcXHRnb3RvIGJsYWNraG9sZTtcXG4rXFxuIFxcdGhyb29tID0gTExfUkVTRVJWRURfU1BBQ0Uoc2tiLVxcdTAwM2VkZXYpO1xcbiBcXHRpZiAoc2tiX2hhc19mcmFnX2xpc3Qoc2tiKSkge1xcbiBcXHRcXHR1bnNpZ25lZCBpbnQgZmlyc3RfbGVuID0gc2tiX3BhZ2VsZW4oc2tiKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDdUMDg6MjA6MzIuMzY1MDc5NzI3WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxODcxMzA2NTc1NDYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTkZfQ09OTlRSQUNLX0JSSURHRVwiLFxuICAgIFwiQlJJREdFXCIsXG4gICAgXCJJUFY2XCIsXG4gICAgXCJORVRGSUxURVJcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJicl9pcDZfZnJhZ21lbnRcIixcbiAgICBcIm5mX2N0X2JyaWRnZV9yZWZyYWdcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIHBvdGVudGlhbCB1c2UtYWZ0ZXItZnJlZSBpbiBgYnJfaXA2X2ZyYWdtZW50YCBieSByZS1ldmFsdWF0aW5nIHRoZSBgcHJldmhkcmAgcG9pbnRlciBhZnRlciBgc2tiX2NoZWNrc3VtX2hlbHBgIHdoaWNoIG1heSByZWFsbG9jYXRlIHRoZSBza2IgZGF0YS4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBJUHY2IGJyaWRnZSBuZXRmaWx0ZXIgY29kZSB0aGF0IHNob3VsZCBiZSBmdXp6ZWQgdG8gZW5zdXJlIHRoZSBmaXggaXMgY29ycmVjdCBhbmQgZG9lc24ndCBpbnRyb2R1Y2UgbmV3IGlzc3Vlcy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdFxuICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LFxuICAgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCAzNjk5NzdhOWI4NmQ0MDU4ZGMyYWI4NzMyZjQxYmQyYjI2NmRmY2ZjXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFR1ZSBKdWwgNyAwODoyMDoyOSAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL25ldC9pcHY2L25ldGZpbHRlci5jIGIvbmV0L2lwdjYvbmV0ZmlsdGVyLmNcbmluZGV4IDZkODBmODVlNTVmYTdmLi41NDc4NzlkYTk1MzI1MSAxMDA2NDRcbi0tLSBhL25ldC9pcHY2L25ldGZpbHRlci5jXG4rKysgYi9uZXQvaXB2Ni9uZXRmaWx0ZXIuY1xuQEAgLTE0Nyw2ICsxNDcsMTAgQEAgaW50IGJyX2lwNl9mcmFnbWVudChzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX2J1ZmYgKnNrYixcbiBcdCAgICAoZXJyID0gc2tiX2NoZWNrc3VtX2hlbHAoc2tiKSkpXG4gXHRcdGdvdG8gYmxhY2tob2xlO1xuIFxuK1x0ZXJyID0gaXA2X2ZpbmRfMXN0ZnJhZ29wdChza2IsIFx1MDAyNnByZXZoZHIpO1xuK1x0aWYgKGVyciBcdTAwM2MgMClcbitcdFx0Z290byBibGFja2hvbGU7XG4rXG4gXHRocm9vbSA9IExMX1JFU0VSVkVEX1NQQUNFKHNrYi1cdTAwM2VkZXYpO1xuIFx0aWYgKHNrYl9oYXNfZnJhZ19saXN0KHNrYikpIHtcbiBcdFx0dW5zaWduZWQgaW50IGZpcnN0X2xlbiA9IHNrYl9wYWdlbGVuKHNrYik7XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wN1QwODoyMDozMi4zNjUwODE0ODdaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0OTA5ODEzODgyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIEtlcm5lbCBQYXRjaCBpbiBJUHY2IE5ldGZpbHRlcioqXG5cbk9rYXksIHNvIEkndmUgZ290IHRoaXMgcGF0Y2ggaGVyZSB0aGF0J3MgcG9raW5nIGFyb3VuZCBpbiBgbmV0L2lwdjYvbmV0ZmlsdGVyLmNgLiBTcGVjaWZpY2FsbHksIGl0IHNlZW1zIHRvIGJlIGFkZGluZyBhIGNhbGwgdG8gYGlwNl9maW5kXzFzdGZyYWdvcHQoc2tiLCBcdTAwMjZwcmV2aGRyKWAgd2l0aGluIHRoZSBgYnJfaXA2X2ZyYWdtZW50YCBmdW5jdGlvbi4gQWxyaWdodCwgdGhhdCdzIGludGVyZXN0aW5nLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aHkgdGhleSdyZSBhZGRpbmcgdGhpcywgd2hhdCBgaXA2X2ZpbmRfMXN0ZnJhZ29wdGAgKmRvZXMqIGluIHRoaXMgY29udGV4dCwgYW5kIG1vc3QgaW1wb3J0YW50bHksIGhvdyB0aGlzIGltcGFjdHMgdGhlIGJlaGF2aW9yIG9mIGBicl9pcDZfZnJhZ21lbnRgLiBNeSBpbml0aWFsIGh1bmNoIGlzIHRoaXMgcHJvYmFibHkgaGFzIHNvbWV0aGluZyB0byBkbyB3aXRoIGhhbmRsaW5nIElQdjYgZnJhZ21lbnRhdGlvbiBhbmQgb3B0aW9ucyB3aXRoaW4gdGhlIGJyaWRnaW5nIGNvbnRleHQsIHdoaWNoLCBvZiBjb3Vyc2UsIGlzIGEgcG90ZW50aWFsbHkgY29tcGxleCBpbnRlcmFjdGlvbi4gU28sIGxldCdzIGRpdmUgaW50byBgYnJfaXA2X2ZyYWdtZW50YCBpdHNlbGYgd2l0aGluIGBuZXQvaXB2Ni9uZXRmaWx0ZXIuY2AgYW5kIGZpZ3VyZSBvdXQgd2hhdCdzIGdvaW5nIG9uLiBJIG5lZWQgdG8gc2VlIHRoZSBsb2dpYyBhcm91bmQgdGhhdCBjYWxsIHNpdGUgdG8gZnVsbHkgZ3Jhc3AgdGhlIHJhbWlmaWNhdGlvbnMuIExldCdzIGdldCB0byB0aGUgY29kZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTg3NSwiT3V0cHV0VG9rZW5zIjozNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjc3LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDdUMDg6MjA6MzcuMjc0ODk3OTQ5WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjc1MzM1MjE5MiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJicl9pcDZfZnJhZ21lbnRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L2lwdjYvbmV0ZmlsdGVyLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L2lwdjYvbmV0ZmlsdGVyLmM9MTEwPUVYUE9SVF9TWU1CT0xfR1BMKF9fbmZfaXA2X3JvdXRlKTtcXG5uZXQvaXB2Ni9uZXRmaWx0ZXIuYy0xMTEtXFxubmV0L2lwdjYvbmV0ZmlsdGVyLmM6MTEyOmludCBicl9pcDZfZnJhZ21lbnQoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBza19idWZmICpza2IsXFxubmV0L2lwdjYvbmV0ZmlsdGVyLmMtMTEzLVxcdFxcdCAgICBzdHJ1Y3QgbmZfYnJpZGdlX2ZyYWdfZGF0YSAqZGF0YSxcXG4tLVxcbm5ldC9pcHY2L25ldGZpbHRlci5jLTIzMy19XFxubmV0L2lwdjYvbmV0ZmlsdGVyLmM6MjM0OkVYUE9SVF9TWU1CT0xfR1BMKGJyX2lwNl9mcmFnbWVudCk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA3VDA4OjIwOjM4LjAyODI1Nzk5MVoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMxODEwODkwMTEzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgc3VtbWFyeSwgdGFraW5nIG9uIHRoZSBwZXJzb25hIHlvdSByZXF1ZXN0ZWQ6XG5cbioqRGVjb25zdHJ1Y3RpbmcgdGhlIElQdjYgRnJhZ21lbnRhdGlvbiBQYXRjaCoqXG5cbkFscmlnaHQsIGxldCdzIGRpdmUgaW50byB0aGlzLiBUaGUgZGVzY3JpcHRpb24gc2F5cyB0aGUgcGF0Y2ggdGFyZ2V0cyBgYnJfaXA2X2ZyYWdtZW50YCB3aXRoaW4gYG5ldC9pcHY2L25ldGZpbHRlci5jYC4gVGhhdCdzIHRoZSBrZXkuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgdGhpcyBmdW5jdGlvbiBkb2VzIGFuZCB3aGF0IHNwZWNpZmljIG1vZGlmaWNhdGlvbnMgd2VyZSBtYWRlLiBUaGUgY29tbWVudCBzdWdnZXN0cyB0aGVyZSdzIGEgbmV0d29ya2luZyBpc3N1ZSB0aGF0J3MgYmVpbmcgYWRkcmVzc2VkLCBzcGVjaWZpY2FsbHkgcmVsYXRlZCB0byB0aGUgYnJpZGdpbmcgb2YgSVB2NiBmcmFnbWVudHMuIFRoaXMgbmFycm93cyB0aGUgc2NvcGUuIFNvLCBJIG5lZWQgdG8gb3BlbiB0aGUgcmVsZXZhbnQgZmlsZSBhbmQgc3RhcnQgdHJhY2luZyB0aHJvdWdoIHRoYXQgZnVuY3Rpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIzODcsIk91dHB1dFRva2VucyI6MzgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wN1QwODoyMTowOS44MzkxNTAyNjRaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNDYwMTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwibmV0L2lwdjYvbmV0ZmlsdGVyLmNcIixcbiAgXCJGaXJzdExpbmVcIjogMTEyLFxuICBcIkxpbmVDb3VudFwiOiAxMDBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDExMjpcXHRpbnQgYnJfaXA2X2ZyYWdtZW50KHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbiAxMTM6XFx0XFx0XFx0ICAgIHN0cnVjdCBuZl9icmlkZ2VfZnJhZ19kYXRhICpkYXRhLFxcbiAxMTQ6XFx0XFx0XFx0ICAgIGludCAoKm91dHB1dCkoc3RydWN0IG5ldCAqLCBzdHJ1Y3Qgc29jayAqc2ssXFxuIDExNTpcXHRcXHRcXHRcXHRcXHQgIGNvbnN0IHN0cnVjdCBuZl9icmlkZ2VfZnJhZ19kYXRhICpkYXRhLFxcbiAxMTY6XFx0XFx0XFx0XFx0XFx0ICBzdHJ1Y3Qgc2tfYnVmZiAqKSlcXG4gMTE3OlxcdHtcXG4gMTE4OlxcdFxcdGludCBmcmFnX21heF9zaXplID0gQlJfSU5QVVRfU0tCX0NCKHNrYiktXFx1MDAzZWZyYWdfbWF4X3NpemU7XFxuIDExOTpcXHRcXHR1OCB0c3RhbXBfdHlwZSA9IHNrYi1cXHUwMDNldHN0YW1wX3R5cGU7XFxuIDEyMDpcXHRcXHRrdGltZV90IHRzdGFtcCA9IHNrYi1cXHUwMDNldHN0YW1wO1xcbiAxMjE6XFx0XFx0c3RydWN0IGlwNl9mcmFnX3N0YXRlIHN0YXRlO1xcbiAxMjI6XFx0XFx0dTggKnByZXZoZHIsIG5leHRoZHIgPSAwO1xcbiAxMjM6XFx0XFx0dW5zaWduZWQgaW50IG10dSwgaGxlbjtcXG4gMTI0OlxcdFxcdGludCBocm9vbSwgZXJyID0gMDtcXG4gMTI1OlxcdFxcdF9fYmUzMiBmcmFnX2lkO1xcbiAxMjY6XFx0XFxuIDEyNzpcXHRcXHRlcnIgPSBpcDZfZmluZF8xc3RmcmFnb3B0KHNrYiwgXFx1MDAyNnByZXZoZHIpO1xcbiAxMjg6XFx0XFx0aWYgKGVyciBcXHUwMDNjIDApXFxuIDEyOTpcXHRcXHRcXHRnb3RvIGJsYWNraG9sZTtcXG4gMTMwOlxcdFxcdGhsZW4gPSBlcnI7XFxuIDEzMTpcXHRcXHRuZXh0aGRyID0gKnByZXZoZHI7XFxuIDEzMjpcXHRcXG4gMTMzOlxcdFxcdG10dSA9IHNrYi1cXHUwMDNlZGV2LVxcdTAwM2VtdHU7XFxuIDEzNDpcXHRcXHRpZiAoZnJhZ19tYXhfc2l6ZSBcXHUwMDNlIG10dSB8fFxcbiAxMzU6XFx0XFx0ICAgIGZyYWdfbWF4X3NpemUgXFx1MDAzYyBJUFY2X01JTl9NVFUpXFxuIDEzNjpcXHRcXHRcXHRnb3RvIGJsYWNraG9sZTtcXG4gMTM3OlxcdFxcbiAxMzg6XFx0XFx0bXR1ID0gZnJhZ19tYXhfc2l6ZTtcXG4gMTM5OlxcdFxcdGlmIChtdHUgXFx1MDAzYyBobGVuICsgc2l6ZW9mKHN0cnVjdCBmcmFnX2hkcikgKyA4KVxcbiAxNDA6XFx0XFx0XFx0Z290byBibGFja2hvbGU7XFxuIDE0MTpcXHRcXHRtdHUgLT0gaGxlbiArIHNpemVvZihzdHJ1Y3QgZnJhZ19oZHIpO1xcbiAxNDI6XFx0XFxuIDE0MzpcXHRcXHRmcmFnX2lkID0gaXB2Nl9zZWxlY3RfaWRlbnQobmV0LCBcXHUwMDI2aXB2Nl9oZHIoc2tiKS1cXHUwMDNlZGFkZHIsXFxuIDE0NDpcXHRcXHRcXHRcXHRcXHQgICAgXFx1MDAyNmlwdjZfaGRyKHNrYiktXFx1MDAzZXNhZGRyKTtcXG4gMTQ1OlxcdFxcbiAxNDY6XFx0XFx0aWYgKHNrYi1cXHUwMDNlaXBfc3VtbWVkID09IENIRUNLU1VNX1BBUlRJQUwgXFx1MDAyNlxcdTAwMjZcXG4gMTQ3OlxcdFxcdCAgICAoZXJyID0gc2tiX2NoZWNrc3VtX2hlbHAoc2tiKSkpXFxuIDE0ODpcXHRcXHRcXHRnb3RvIGJsYWNraG9sZTtcXG4gMTQ5OlxcdFxcbiAxNTA6XFx0XFx0ZXJyID0gaXA2X2ZpbmRfMXN0ZnJhZ29wdChza2IsIFxcdTAwMjZwcmV2aGRyKTtcXG4gMTUxOlxcdFxcdGlmIChlcnIgXFx1MDAzYyAwKVxcbiAxNTI6XFx0XFx0XFx0Z290byBibGFja2hvbGU7XFxuIDE1MzpcXHRcXG4gMTU0OlxcdFxcdGhyb29tID0gTExfUkVTRVJWRURfU1BBQ0Uoc2tiLVxcdTAwM2VkZXYpO1xcbiAxNTU6XFx0XFx0aWYgKHNrYl9oYXNfZnJhZ19saXN0KHNrYikpIHtcXG4gMTU2OlxcdFxcdFxcdHVuc2lnbmVkIGludCBmaXJzdF9sZW4gPSBza2JfcGFnZWxlbihza2IpO1xcbiAxNTc6XFx0XFx0XFx0c3RydWN0IGlwNl9mcmFnbGlzdF9pdGVyIGl0ZXI7XFxuIDE1ODpcXHRcXHRcXHRzdHJ1Y3Qgc2tfYnVmZiAqZnJhZzI7XFxuIDE1OTpcXHRcXG4gMTYwOlxcdFxcdFxcdGlmIChmaXJzdF9sZW4gLSBobGVuIFxcdTAwM2UgbXR1KVxcbiAxNjE6XFx0XFx0XFx0XFx0Z290byBibGFja2hvbGU7XFxuIDE2MjpcXHRcXG4gMTYzOlxcdFxcdFxcdGlmIChza2JfY2xvbmVkKHNrYikgfHxcXG4gMTY0OlxcdFxcdFxcdCAgICBza2JfaGVhZHJvb20oc2tiKSBcXHUwMDNjIChocm9vbSArIHNpemVvZihzdHJ1Y3QgZnJhZ19oZHIpKSlcXG4gMTY1OlxcdFxcdFxcdFxcdGdvdG8gc2xvd19wYXRoO1xcbiAxNjY6XFx0XFxuIDE2NzpcXHRcXHRcXHRza2Jfd2Fsa19mcmFncyhza2IsIGZyYWcyKSB7XFxuIDE2ODpcXHRcXHRcXHRcXHRpZiAoZnJhZzItXFx1MDAzZWxlbiBcXHUwMDNlIG10dSlcXG4gMTY5OlxcdFxcdFxcdFxcdFxcdGdvdG8gYmxhY2tob2xlO1xcbiAxNzA6XFx0XFxuIDE3MTpcXHRcXHRcXHRcXHQvKiBQYXJ0aWFsbHkgY2xvbmVkIHNrYj8gKi9cXG4gMTcyOlxcdFxcdFxcdFxcdGlmIChza2Jfc2hhcmVkKGZyYWcyKSB8fFxcbiAxNzM6XFx0XFx0XFx0XFx0ICAgIHNrYl9oZWFkcm9vbShmcmFnMikgXFx1MDAzYyAoaGxlbiArIGhyb29tICsgc2l6ZW9mKHN0cnVjdCBmcmFnX2hkcikpKVxcbiAxNzQ6XFx0XFx0XFx0XFx0XFx0Z290byBzbG93X3BhdGg7XFxuIDE3NTpcXHRcXHRcXHR9XFxuIDE3NjpcXHRcXG4gMTc3OlxcdFxcdFxcdGVyciA9IGlwNl9mcmFnbGlzdF9pbml0KHNrYiwgaGxlbiwgcHJldmhkciwgbmV4dGhkciwgZnJhZ19pZCxcXG4gMTc4OlxcdFxcdFxcdFxcdFxcdFxcdFxcdTAwMjZpdGVyKTtcXG4gMTc5OlxcdFxcdFxcdGlmIChlcnIgXFx1MDAzYyAwKVxcbiAxODA6XFx0XFx0XFx0XFx0Z290byBibGFja2hvbGU7XFxuIDE4MTpcXHRcXG4gMTgyOlxcdFxcdFxcdGZvciAoOzspIHtcXG4gMTgzOlxcdFxcdFxcdFxcdC8qIFByZXBhcmUgaGVhZGVyIG9mIHRoZSBuZXh0IGZyYW1lLFxcbiAxODQ6XFx0XFx0XFx0XFx0ICogYmVmb3JlIHByZXZpb3VzIG9uZSB3ZW50IGRvd24uXFxuIDE4NTpcXHRcXHRcXHRcXHQgKi9cXG4gMTg2OlxcdFxcdFxcdFxcdGlmIChpdGVyLmZyYWcpXFxuIDE4NzpcXHRcXHRcXHRcXHRcXHRpcDZfZnJhZ2xpc3RfcHJlcGFyZShza2IsIFxcdTAwMjZpdGVyKTtcXG4gMTg4OlxcdFxcbiAxODk6XFx0XFx0XFx0XFx0c2tiX3NldF9kZWxpdmVyeV90aW1lKHNrYiwgdHN0YW1wLCB0c3RhbXBfdHlwZSk7XFxuIDE5MDpcXHRcXHRcXHRcXHRlcnIgPSBvdXRwdXQobmV0LCBzaywgZGF0YSwgc2tiKTtcXG4gMTkxOlxcdFxcdFxcdFxcdGlmIChlcnIgfHwgIWl0ZXIuZnJhZylcXG4gMTkyOlxcdFxcdFxcdFxcdFxcdGJyZWFrO1xcbiAxOTM6XFx0XFxuIDE5NDpcXHRcXHRcXHRcXHRza2IgPSBpcDZfZnJhZ2xpc3RfbmV4dChcXHUwMDI2aXRlcik7XFxuIDE5NTpcXHRcXHRcXHR9XFxuIDE5NjpcXHRcXG4gMTk3OlxcdFxcdFxcdGtmcmVlKGl0ZXIudG1wX2hkcik7XFxuIDE5ODpcXHRcXHRcXHRpZiAoIWVycilcXG4gMTk5OlxcdFxcdFxcdFxcdHJldHVybiAwO1xcbiAyMDA6XFx0XFxuIDIwMTpcXHRcXHRcXHRrZnJlZV9za2JfbGlzdChpdGVyLmZyYWcpO1xcbiAyMDI6XFx0XFx0XFx0cmV0dXJuIGVycjtcXG4gMjAzOlxcdFxcdH1cXG4gMjA0OlxcdHNsb3dfcGF0aDpcXG4gMjA1OlxcdFxcdC8qIFRoaXMgaXMgYSBsaW5lYXJpemVkIHNrYnVmZiwgdGhlIG9yaWdpbmFsIGdlb21ldHJ5IGlzIGxvc3QgZm9yIHVzLlxcbiAyMDY6XFx0XFx0ICogVGhpcyBtYXkgYWxzbyBiZSBhIGNsb25lIHNrYnVmZiwgd2UgY291bGQgcHJlc2VydmUgdGhlIGdlb21ldHJ5IGZvclxcbiAyMDc6XFx0XFx0ICogdGhlIGNvcGllcyBidXQgcHJvYmFibHkgbm90IHdvcnRoIHRoZSBlZmZvcnQuXFxuIDIwODpcXHRcXHQgKi9cXG4gMjA5OlxcdFxcdGlwNl9mcmFnX2luaXQoc2tiLCBobGVuLCBtdHUsIHNrYi1cXHUwMDNlZGV2LVxcdTAwM2VuZWVkZWRfdGFpbHJvb20sXFxuIDIxMDpcXHRcXHRcXHQgICAgICBMTF9SRVNFUlZFRF9TUEFDRShza2ItXFx1MDAzZWRldiksIHByZXZoZHIsIG5leHRoZHIsIGZyYWdfaWQsXFxuIDIxMTpcXHRcXHRcXHQgICAgICBcXHUwMDI2c3RhdGUpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wN1QwODoyMTowOS44MzkyOTg2NzRaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyMDYwNTg1NzQ1MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBOZXR3b3JraW5nIFBhdGNoKipcblxuT2theSwgc28gdGhpcyBwYXRjaCBpbnRyb2R1Y2VzIGEgc2Vjb25kIGNhbGwgdG8gYGlwNl9maW5kXzFzdGZyYWdvcHQoKWAgYWZ0ZXIgYHNrYl9jaGVja3N1bV9oZWxwKHNrYilgLiBNeSBpbW1lZGlhdGUgY29uY2VybiBpcyB0aGUgcG90ZW50aWFsIGZvciBgc2tiX2NoZWNrc3VtX2hlbHBgIHRvIHJlYWxsb2NhdGUgdGhlIGBza2JgIGRhdGEuIElmIGl0IGRvZXMsIGFuZCBpdCB2ZXJ5IHdlbGwgbWlnaHQsIHRoZW4gYHByZXZoZHJgIGNvdWxkIGVuZCB1cCBiZWluZyBhIGRhbmdsaW5nIHBvaW50ZXIsIHBvaW50aW5nIHRvIGludmFsaWQgbWVtb3J5LiBUaGlzIGlzIGEgY2xlYXIgZnVuY3Rpb25hbCBpc3N1ZSB0aGF0IG5lZWRzIGFkZHJlc3NpbmcsIGFuZCB0aGUgcGF0Y2gsIGlmIGl0IGZpeGVzIHRoaXMgaXNzdWUgaXMgdmVyeSByZWxldmFudCB0byBteSB3b3JrLlxuXG5TaW5jZSB0aGlzIGZpeGVzIGEgcG90ZW50aWFsIGlzc3VlLCBJIHNob3VsZCBhbHNvIGxvb2sgYXQgdGhlIGJyb2FkZXIgcGljdHVyZS4gU3BlY2lmaWNhbGx5LCBgYnJfaXA2X2ZyYWdtZW50YCBpcyBiZWluZyBleHBvcnRlZC4gVGhhdCBtZWFucyBvdGhlciBwYXJ0cyBvZiB0aGUgc3lzdGVtIGFyZSByZWx5aW5nIG9uIGl0LCBhbmQgdW5kZXJzdGFuZGluZyBob3cgaXQncyB1c2VkIGlzIGNyaXRpY2FsLiBMZXQncyB0cmFjZSB0aG9zZSBjYWxscyBhbmQgZGVwZW5kZW5jaWVzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0MTc3LCJPdXRwdXRUb2tlbnMiOjI2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6OTgsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wN1QwODoyMTozMC40NDUxNTkxMDdaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTc2MzYxMjc3NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJicl9pcDZfZnJhZ21lbnRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImluY2x1ZGUvbGludXgvbmV0ZmlsdGVyX2lwdjYuaD01Mz1zdGF0aWMgaW5saW5lIGludCBuZl9pcDZfcm91dGUoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3QgZHN0X2VudHJ5ICoqZHN0LFxcbi0tXFxuaW5jbHVkZS9saW51eC9uZXRmaWx0ZXJfaXB2Ni5oLTY0LVxcbmluY2x1ZGUvbGludXgvbmV0ZmlsdGVyX2lwdjYuaDo2NTppbnQgYnJfaXA2X2ZyYWdtZW50KHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbmluY2x1ZGUvbGludXgvbmV0ZmlsdGVyX2lwdjYuaC02Ni1cXHRcXHQgICAgc3RydWN0IG5mX2JyaWRnZV9mcmFnX2RhdGEgKmRhdGEsXFxuLS1cXG5pbmNsdWRlL2xpbnV4L25ldGZpbHRlcl9pcHY2LmgtNzAtXFxuaW5jbHVkZS9saW51eC9uZXRmaWx0ZXJfaXB2Ni5oOjcxOnN0YXRpYyBpbmxpbmUgaW50IG5mX2JyX2lwNl9mcmFnbWVudChzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBzb2NrICpzayxcXG5pbmNsdWRlL2xpbnV4L25ldGZpbHRlcl9pcHY2LmgtNzItXFx0XFx0XFx0XFx0ICAgICBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbi0tXFxuaW5jbHVkZS9saW51eC9uZXRmaWx0ZXJfaXB2Ni5oLTc4LSNpZiBJU19FTkFCTEVEKENPTkZJR19JUFY2KVxcbmluY2x1ZGUvbGludXgvbmV0ZmlsdGVyX2lwdjYuaDo3OTpcXHRyZXR1cm4gYnJfaXA2X2ZyYWdtZW50KG5ldCwgc2ssIHNrYiwgZGF0YSwgb3V0cHV0KTtcXG5pbmNsdWRlL2xpbnV4L25ldGZpbHRlcl9pcHY2LmgtODAtI2Vsc2VcXG4tLVxcbm5ldC9icmlkZ2UvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19icmlkZ2UuYz0zMzc9bmZfY3RfYnJpZGdlX3JlZnJhZyhzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBjb25zdCBzdHJ1Y3QgbmZfaG9va19zdGF0ZSAqc3RhdGUsXFxuLS1cXG5uZXQvYnJpZGdlL25ldGZpbHRlci9uZl9jb25udHJhY2tfYnJpZGdlLmMtMzUyLVxcdGNhc2UgaHRvbnMoRVRIX1BfSVBWNik6XFxubmV0L2JyaWRnZS9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2JyaWRnZS5jOjM1MzpcXHRcXHRuZl9icl9pcDZfZnJhZ21lbnQoc3RhdGUtXFx1MDAzZW5ldCwgc3RhdGUtXFx1MDAzZXNrLCBza2IsIFxcdTAwMjZkYXRhLCBvdXRwdXQpO1xcbm5ldC9icmlkZ2UvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19icmlkZ2UuYy0zNTQtXFx0XFx0YnJlYWs7XFxuLS1cXG5uZXQvaXB2Ni9uZXRmaWx0ZXIuYz0xMTA9RVhQT1JUX1NZTUJPTF9HUEwoX19uZl9pcDZfcm91dGUpO1xcbm5ldC9pcHY2L25ldGZpbHRlci5jLTExMS1cXG5uZXQvaXB2Ni9uZXRmaWx0ZXIuYzoxMTI6aW50IGJyX2lwNl9mcmFnbWVudChzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX2J1ZmYgKnNrYixcXG5uZXQvaXB2Ni9uZXRmaWx0ZXIuYy0xMTMtXFx0XFx0ICAgIHN0cnVjdCBuZl9icmlkZ2VfZnJhZ19kYXRhICpkYXRhLFxcbi0tXFxubmV0L2lwdjYvbmV0ZmlsdGVyLmMtMjMzLX1cXG5uZXQvaXB2Ni9uZXRmaWx0ZXIuYzoyMzQ6RVhQT1JUX1NZTUJPTF9HUEwoYnJfaXA2X2ZyYWdtZW50KTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDdUMDg6MjE6MzYuMjA4Nzc4MzM0WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzkzODMxMjAyNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipJbnZlc3RpZ2F0aW5nIHRoZSBDb25maWd1cmF0aW9uIExhbmRzY2FwZSBmb3IgSVAgRnJhZ21lbnRhdGlvbiBpbiBCcmlkZ2UgRW52aXJvbm1lbnRzKipcblxuT2theSwgc28gSSdtIGRpdmluZyBpbnRvIHRoZSBrZXJuZWwgY29kZSByZWxhdGVkIHRvIElQIGZyYWdtZW50YXRpb24sIHNwZWNpZmljYWxseSB3aXRoaW4gYnJpZGdlIGVudmlyb25tZW50cy4gTXkgc3RhcnRpbmcgcG9pbnQgaXMgdGhlIGBuZl9jdF9icmlkZ2VfcmVmcmFnYCBmdW5jdGlvbiwgd2hpY2ggcmVzaWRlcyBpbiBgbmV0L2JyaWRnZS9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2JyaWRnZS5jYC4gTXkgaW1tZWRpYXRlIHF1ZXN0aW9uIGlzOiB3aGF0IGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBhcmUgcmVsZXZhbnQgdG8gdGhpcyBhbmQgdGhlIGFzc29jaWF0ZWQgYGJyX2lwNl9mcmFnbWVudGAgZnVuY3Rpb25hbGl0eT8gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCdzIGVuYWJsZWQsIG9yIG5lZWRzIHRvIGJlIGVuYWJsZWQsIHRvIG1ha2UgdGhlc2UgZmVhdHVyZXMgd29yayBhcyBpbnRlbmRlZC5cblxuYGJyX2lwNl9mcmFnbWVudGAsIEkgc2VlLCBpcyBkZWZpbmVkIHdpdGhpbiBgbmV0L2lwdjYvbmV0ZmlsdGVyLmNgLiBHaXZlbiB0aGF0LCBJIHRoaW5rIHRoZSBgbmV0L2lwdjYvTWFrZWZpbGVgIGlzIHRoZSBuZXh0IGxvZ2ljYWwgcGxhY2UgdG8gbG9vay4gVGhpcyBzaG91bGQgcHJvdmlkZSBpbnNpZ2h0cyBpbnRvIHRoZSBidWlsZCBwcm9jZXNzLCBkZXBlbmRlbmNpZXMsIGFuZCBhbnkgY29uZGl0aW9uYWwgY29tcGlsYXRpb24gdGhhdCBpbmZsdWVuY2VzIHRoZSBpbmNsdXNpb24gb2YgdGhpcyBmcmFnbWVudGF0aW9uIHN1cHBvcnQuIFRoaXMgc2hvdWxkIGlsbHVtaW5hdGUgdGhlIG5lY2Vzc2FyeSBrZXJuZWwgY29uZmlndXJhdGlvbnMuIEknbGwgc3RhcnQgdGhlcmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjUxMDYsIk91dHB1dFRva2VucyI6MzAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMDAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDdUMDg6MjE6NDAuMTQ3MDkzMjFaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI1NzUxNTY5MywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJuZXRmaWx0ZXIub1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvaXB2Ni9NYWtlZmlsZVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvaXB2Ni9NYWtlZmlsZT0xOD1pcHY2LSQoQ09ORklHX1hGUk0pICs9IHhmcm02X3BvbGljeS5vIHhmcm02X3N0YXRlLm8geGZybTZfaW5wdXQubyBcXFxcXFxubmV0L2lwdjYvTWFrZWZpbGUtMTktXFx0eGZybTZfb3V0cHV0Lm8geGZybTZfcHJvdG9jb2wub1xcbm5ldC9pcHY2L01ha2VmaWxlOjIwOmlwdjYtJChDT05GSUdfTkVURklMVEVSKSArPSBuZXRmaWx0ZXIub1xcbm5ldC9pcHY2L01ha2VmaWxlLTIxLWlwdjYtJChDT05GSUdfSVBWNl9NVUxUSVBMRV9UQUJMRVMpICs9IGZpYjZfcnVsZXMub1xcbi0tXFxubmV0L2lwdjYvTWFrZWZpbGU9NTg9aWZkZWYgQ09ORklHX0dDT1ZfUFJPRklMRV9ORVRGSUxURVJcXG5uZXQvaXB2Ni9NYWtlZmlsZTo1OTpHQ09WX1BST0ZJTEVfbmV0ZmlsdGVyLm8gOj0geVxcbm5ldC9pcHY2L01ha2VmaWxlLTYwLWVuZGlmXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA3VDA4OjIxOjQwLjQwNDYxNjQ4M1oiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNDk1NDc2NzEzOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0J3Mgc2VlLCBteSBpbml0aWFsIGFzc2Vzc21lbnQgc3VnZ2VzdHMgdGhhdCBJJ2xsIGRlZmluaXRlbHkgbmVlZCBgQ09ORklHX05FVEZJTFRFUmAgYW5kIGBDT05GSUdfSVBWNmAgZW5hYmxlZC4gVGhvc2Ugc2VlbSBsaWtlIG9idmlvdXMgcHJlcmVxdWlzaXRlcywgZ2l2ZW4gdGhlIGNvbnRleHQuIEJ1dCwgaG1tLCBJJ20gYWxzbyBzZWVpbmcgYSByZWZlcmVuY2UgdG8gYG5mX2N0X2JyaWRnZV9yZWZyYWdgLiBOb3csIHdoZXJlIGRvZXMgdGhhdCBsaXZlPyBBaGEsIGl0IGxvb2tzIGxpa2UgaXQncyB0dWNrZWQgYXdheSBpbiBgbmV0L2JyaWRnZS9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2JyaWRnZS5jYC4gT2theSwgZ29vZCB0byBrbm93LiBCZXN0IHRvIGJlIHRob3JvdWdoLCBJIHNob3VsZCByZWFsbHkgY2hlY2sgdGhlIGJ1aWxkIGNvbmZpZ3VyYXRpb24gZm9yIHRoYXQgZGlyZWN0b3J5IGFzIHdlbGwsIHNvIGxldCBtZSBxdWlja2x5IHBlZWsgYXQgYG5ldC9icmlkZ2UvbmV0ZmlsdGVyL01ha2VmaWxlYCB0byBtYWtlIHN1cmUgdGhlcmUgYXJlbid0IGFueSBvdGhlciBkZXBlbmRlbmNpZXMgb3IgZmxhZ3MgSSdtIG1pc3NpbmcuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU2NDMsIk91dHB1dFRva2VucyI6MzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2OCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wN1QwODoyMjoxNS4zNTkzODYzNjFaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjcyNDcxMzE3MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJuZl9jb25udHJhY2tfYnJpZGdlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9icmlkZ2UvbmV0ZmlsdGVyL01ha2VmaWxlXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9icmlkZ2UvbmV0ZmlsdGVyL01ha2VmaWxlPTc9b2JqLSQoQ09ORklHX05GVF9CUklER0VfUkVKRUNUKSAgKz0gbmZ0X3JlamVjdF9icmlkZ2Uub1xcbi0tXFxubmV0L2JyaWRnZS9uZXRmaWx0ZXIvTWFrZWZpbGUtOS0jIGNvbm5lY3Rpb24gdHJhY2tpbmdcXG5uZXQvYnJpZGdlL25ldGZpbHRlci9NYWtlZmlsZToxMDpvYmotJChDT05GSUdfTkZfQ09OTlRSQUNLX0JSSURHRSkgKz0gbmZfY29ubnRyYWNrX2JyaWRnZS5vXFxubmV0L2JyaWRnZS9uZXRmaWx0ZXIvTWFrZWZpbGUtMTEtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA3VDA4OjIyOjE2LjA4NDEwNTUzWiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI2ODA1MzUwMDQ2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipJbnZlc3RpZ2F0aW5nIE5ldHdvcmsgQnJpZGdlIENvbm5lY3Rpb24gVHJhY2tpbmcgUmVxdWlyZW1lbnRzKipcblxuQWxyaWdodCwgdGhlIHNpdHVhdGlvbiBjYWxscyBmb3IgYENPTkZJR19ORl9DT05OVFJBQ0tfQlJJREdFYC4gR290dGEgbWFrZSBzdXJlIHRoYXQncyBlbmFibGVkIGFuZCBjb25maWd1cmVkIGNvcnJlY3RseS4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIGNyb3NzLXJlZmVyZW5jZSB0aGlzIGluIGBuZXQvYnJpZGdlL25ldGZpbHRlci9LY29uZmlnYC4gVGhhdCdzIHRoZSBsb2dpY2FsIHBsYWNlIHRvIHN0YXJ0IGRpZ2dpbmcgaW50byB0aGUgZGVwZW5kZW5jaWVzIGFuZCBvcHRpb25zLiBJJ2xsIG5lZWQgdG8gY29uZmlybSBpdHMgcHJlc2VuY2UsIGNoZWNrIGl0cyBpbXBsaWNhdGlvbnMgZm9yIG91ciBzcGVjaWZpYyBicmlkZ2Ugc2V0dXAsIGFuZCBtYWtlIHN1cmUgdGhlcmUgYXJlbid0IGFueSBjb25mbGljdGluZyBjb25maWd1cmF0aW9ucyBvciBuZWNlc3NhcnkgYXV4aWxpYXJ5IG1vZHVsZXMgdGhhdCBuZWVkIHRvIGJlIGNvbnNpZGVyZWQuIEl0J3MgYSBmdW5kYW1lbnRhbCBwaWVjZSwgc28gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaXQgdGhvcm91Z2hseS5cblxuXG4iLCJJbnB1dFRva2VucyI6NjAxMywiT3V0cHV0VG9rZW5zIjozNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA3VDA4OjIyOjQyLjg4OTQ1ODAxNloiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjcwNDc5MzI5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBORl9DT05OVFJBQ0tfQlJJREdFXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9icmlkZ2UvbmV0ZmlsdGVyL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L2JyaWRnZS9uZXRmaWx0ZXIvS2NvbmZpZz0yNj1lbmRpZiAjIE5GX1RBQkxFU19CUklER0VcXG5uZXQvYnJpZGdlL25ldGZpbHRlci9LY29uZmlnLTI3LVxcbm5ldC9icmlkZ2UvbmV0ZmlsdGVyL0tjb25maWc6Mjg6Y29uZmlnIE5GX0NPTk5UUkFDS19CUklER0VcXG5uZXQvYnJpZGdlL25ldGZpbHRlci9LY29uZmlnLTI5LVxcdHRyaXN0YXRlIFxcXCJJUHY0L0lQVjYgYnJpZGdlIGNvbm5lY3Rpb24gdHJhY2tpbmcgc3VwcG9ydFxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDdUMDg6MjI6NDMuMTU5OTQ2MTE1WiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU5NTk5NjczMDYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqSW52ZXN0aWdhdGluZyBDb25maWd1cmF0aW9uIERlcGVuZGVuY2llcyoqXG5cbk9rYXksIHNvIEkgbmVlZCB0byBmaWd1cmUgb3V0IHRoZSBkZXBlbmRlbmNpZXMgcmVsYXRlZCB0byB0aGlzIG5ldHdvcmtpbmcgY29uZmlndXJhdGlvbi4gRmlyc3QsIEknbGwgcXVpY2tseSBzZWUgaWYgdGhlcmUgYXJlIGFueSBvdGhlciBjb25maWd1cmF0aW9uIG9wdGlvbnMgdGhhdCBqdW1wIG91dCBhcyBwb3RlbnRpYWxseSByZWxldmFudC4gU3BlY2lmaWNhbGx5LCBJJ20gdGhpbmtpbmcgYENPTkZJR19CUklER0VfTkVURklMVEVSYCDigJMgdGhhdCBzb3VuZHMgbGlrZSBhIHN0cm9uZyBjYW5kaWRhdGUgdG8gaW52ZXN0aWdhdGUuIFRvIGdldCBhIGNsZWFyZXIgcGljdHVyZSBvZiB0aGUgcmVsYXRpb25zaGlwcyBhbmQgZGVwZW5kZW5jaWVzLCBJJ2xsIGRpdmUgaW50byB0aGUgYG5ldC9icmlkZ2UvbmV0ZmlsdGVyL0tjb25maWdgIGZpbGUuIEknbSBlc3BlY2lhbGx5IGludGVyZXN0ZWQgaW4gd2hldGhlciBgTkZfQ09OTlRSQUNLX0JSSURHRWAgaGFzIGFueSBkZXBlbmRlbmNpZXMgd2l0aGluIHRoYXQgY29udGV4dCwgYXMgY29ubmVjdGlvbiB0cmFja2luZyBpcyBvZnRlbiBhIGtleSBhc3BlY3Qgb2YgdGhlc2UgdHlwZXMgb2YgY29uZmlndXJhdGlvbnMuIFRoaXMgc2hvdWxkIGdpdmUgbWUgdGhlIGluZm9ybWF0aW9uIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyBldmVyeXRoaW5nIGZpdHMgdG9nZXRoZXIuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjYzMzMsIk91dHB1dFRva2VucyI6MzYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1MCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wN1QwODoyMjo0OS4xMTk5MTYyMjFaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTAwMTUwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcIm5ldC9icmlkZ2UvbmV0ZmlsdGVyL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMjgsXG4gIFwiTGluZUNvdW50XCI6IDIwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgMjg6XFx0Y29uZmlnIE5GX0NPTk5UUkFDS19CUklER0VcXG4gIDI5OlxcdFxcdHRyaXN0YXRlIFxcXCJJUHY0L0lQVjYgYnJpZGdlIGNvbm5lY3Rpb24gdHJhY2tpbmcgc3VwcG9ydFxcXCJcXG4gIDMwOlxcdFxcdGRlcGVuZHMgb24gTkZfQ09OTlRSQUNLXFxuICAzMTpcXHRcXHRkZWZhdWx0IG5cXG4gIDMyOlxcdFxcdGhlbHBcXG4gIDMzOlxcdFxcdCAgQ29ubmVjdGlvbiB0cmFja2luZyBrZWVwcyBhIHJlY29yZCBvZiB3aGF0IHBhY2tldHMgaGF2ZSBwYXNzZWRcXG4gIDM0OlxcdFxcdCAgdGhyb3VnaCB5b3VyIG1hY2hpbmUsIGluIG9yZGVyIHRvIGZpZ3VyZSBvdXQgaG93IHRoZXkgYXJlIHJlbGF0ZWRcXG4gIDM1OlxcdFxcdCAgaW50byBjb25uZWN0aW9ucy4gVGhpcyBpcyB1c2VkIHRvIGVuaGFuY2UgcGFja2V0IGZpbHRlcmluZyB2aWFcXG4gIDM2OlxcdFxcdCAgc3RhdGVmdWwgcG9saWNpZXMuIEVuYWJsZSB0aGlzIGlmIHlvdSB3YW50IG5hdGl2ZSB0cmFja2luZyBmcm9tXFxuICAzNzpcXHRcXHQgIHRoZSBicmlkZ2UuIFRoaXMgcHJvdmlkZXMgYSByZXBsYWNlbWVudCBmb3IgdGhlIGBicl9uZXRmaWx0ZXInXFxuICAzODpcXHRcXHQgIGluZnJhc3RydWN0dXJlLlxcbiAgMzk6XFx0XFxuICA0MDpcXHRcXHQgIFRvIGNvbXBpbGUgaXQgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmUuICBJZiB1bnN1cmUsIHNheSBOLlxcbiAgNDE6XFx0XFxuICA0MjpcXHQjIG9sZCBzb2Nrb3B0IGludGVyZmFjZSBhbmQgZXZhbCBsb29wXFxuICA0MzpcXHRjb25maWcgQlJJREdFX05GX0VCVEFCTEVTX0xFR0FDWVxcbiAgNDQ6XFx0XFx0dHJpc3RhdGUgXFxcIkxlZ2FjeSBFQlRBQkxFUyBzdXBwb3J0XFxcIlxcbiAgNDU6XFx0XFx0ZGVwZW5kcyBvbiBCUklER0UgXFx1MDAyNlxcdTAwMjYgTkVURklMVEVSX1hUQUJMRVNfTEVHQUNZXFxuICA0NjpcXHRcXHRkZXBlbmRzIG9uIE5FVEZJTFRFUl9YVEFCTEVTXFxuICA0NzpcXHRcXHRkZWZhdWx0XFx0blxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wN1QwODoyMjo0OS4xMjAwMTg1NjFaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NzA4Nzg1MDIxMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBbmFseXNpcyBvZiBhIFBvdGVudGlhbCBJUHY2IEJyaWRnZSBGcmFnbWVudGF0aW9uIEJ1ZyoqXG5cbk9rYXksIHNvIEknbSBob25pbmcgaW4gb24gYSBwb3RlbnRpYWwgdnVsbmVyYWJpbGl0eS4gSXQgbG9va3MgbGlrZSB0aGUgY29yZSBjb25maWd1cmF0aW9uIGl0ZW0gSSBuZWVkIHRvIHBheSBhdHRlbnRpb24gdG8gaXMgYENPTkZJR19ORl9DT05OVFJBQ0tfQlJJREdFYC4gT2YgY291cnNlLCBJJ2xsIGFsc28gbmVlZCB0byBjb25zaWRlciBgQ09ORklHX0lQVjZgLCBgQ09ORklHX05FVEZJTFRFUmAsIGBDT05GSUdfQlJJREdFYCwgYW5kIGBDT05GSUdfTkZfQ09OTlRSQUNLYCBzaW5jZSB0aGV5IGxpa2VseSBwbGF5IGEgc3VwcG9ydGluZyByb2xlLiBJIG5lZWQgdG8ga2VlcCBpbiBtaW5kIHRoZXNlIGNvbmZpZ3VyYXRpb25zLlxuXG5TcGVjaWZpY2FsbHksIEknbSBnb2luZyB0byBmb2N1cyBvbiB0aGUgYE5GX0NPTk5UUkFDS19CUklER0VgIG1vZHVsZS4gVGhlIGZ1bmN0aW9uIHRoYXQgcmVhbGx5IHN0YW5kcyBvdXQgaXMgYGJyX2lwNl9mcmFnbWVudGAuIE5vdywgaXMgdGhlcmUgYW55dGhpbmcgZWxzZT8gQWgsIHllcywgYG5mX2N0X2JyaWRnZV9yZWZyYWdgIGNhbGxzIGl0LiBTbywgdGhhdCdzIGltcG9ydGFudCBjb250ZXh0LlxuXG5MZXQgbWUgZ28gYmFjayBhbmQgZ2l2ZSBgYnJfaXA2X2ZyYWdtZW50YCBhbm90aGVyIGNsb3NlIGxvb2suIEl0IGFwcGVhcnMgdG8gY2FsbCBgaXA2X2ZpbmRfMXN0ZnJhZ29wdGAuIEFoIGhhISBJIGJlbGlldmUgSSd2ZSBwaW5wb2ludGVkIHRoZSBpc3N1ZS4gVGhlIHJvb3QgY2F1c2UgbG9va3MgbGlrZSBhIHVzZS1hZnRlci1mcmVlIG9yIGEgcmVsYXRlZCBkYW5nbGluZyBwb2ludGVyIGlzc3VlLiBNeSBoeXBvdGhlc2lzIGlzIHRoYXQgYHByZXZoZHJgIGJlY29tZXMgaW52YWxpZCBhZnRlciBgc2tiX2NoZWNrc3VtX2hlbHAoc2tiKWAgaXMgY2FsbGVkLiBBbmQsIG9mIGNvdXJzZSwgYHNrYl9jaGVja3N1bV9oZWxwYCBpcyBrbm93biB0byBwb3RlbnRpYWxseSByZWFsbG9jYXRlIHRoZSBgc2tiYCBkYXRhLCB3aGljaCB3b3VsZCBpbnZhbGlkYXRlIHRoZSBgcHJldmhkcmAgcG9pbnRlci4gVGhpcyBzZWVtcyBpbmNyZWRpYmx5IHByb21pc2luZyBmb3IgZnV6emluZy5cblxuTGV0IG1lIGp1c3QgZG91YmxlLWNoZWNrIG9uZSBsYXN0IHRpbWUgdGhhdCBgYnJfaXA2X2ZyYWdtZW50YCBpcyB0aGUgb25seSBmdW5jdGlvbiBJIG5lZWQgdG8gYmUgY29uY2VybmVkIHdpdGggaW4gdGhpcyBjb250ZXh0LiBZZXMsIGl0IGFwcGVhcnMgdG8gYmUgdGhlIHByaW1hcnkgZnVuY3Rpb24gYmVpbmcgbW9kaWZpZWQuIE15IGZvY3VzIHN5bWJvbHMgd2lsbCBiZSBgYnJfaXA2X2ZyYWdtZW50YCBhbmQgYG5mX2N0X2JyaWRnZV9yZWZyYWdgLlxuXG5JIHNob3VsZCBiZSBhYmxlIHRvIGdldCBhIGxvb2sgYXQgYGJyX2lwNl9mcmFnbWVudGAgZnJvbSBgbmV0L2lwdjYvbmV0ZmlsdGVyLmNgLiBJIHNob3VsZCBjaGVjayB0aGF0IGl0J3MgZXhwb3J0ZWQgYW5kIGNoZWNrIHdoZXJlIGVsc2UgaXQgbWF5IGJlIGNhbGxlZC5cblxuXG4iLCJJbnB1dFRva2VucyI6Njg3MywiT3V0cHV0VG9rZW5zIjoyNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMxNSwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA3VDA4OjIyOjU2LjIwNzg3MjAzMVoiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDA0NTc4MDk0OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJicl9pcDZfZnJhZ21lbnRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImluY2x1ZGUvbGludXgvbmV0ZmlsdGVyX2lwdjYuaD01Mz1zdGF0aWMgaW5saW5lIGludCBuZl9pcDZfcm91dGUoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3QgZHN0X2VudHJ5ICoqZHN0LFxcbi0tXFxuaW5jbHVkZS9saW51eC9uZXRmaWx0ZXJfaXB2Ni5oLTY0LVxcbmluY2x1ZGUvbGludXgvbmV0ZmlsdGVyX2lwdjYuaDo2NTppbnQgYnJfaXA2X2ZyYWdtZW50KHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbmluY2x1ZGUvbGludXgvbmV0ZmlsdGVyX2lwdjYuaC02Ni1cXHRcXHQgICAgc3RydWN0IG5mX2JyaWRnZV9mcmFnX2RhdGEgKmRhdGEsXFxuLS1cXG5pbmNsdWRlL2xpbnV4L25ldGZpbHRlcl9pcHY2LmgtNzAtXFxuaW5jbHVkZS9saW51eC9uZXRmaWx0ZXJfaXB2Ni5oOjcxOnN0YXRpYyBpbmxpbmUgaW50IG5mX2JyX2lwNl9mcmFnbWVudChzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBzb2NrICpzayxcXG5pbmNsdWRlL2xpbnV4L25ldGZpbHRlcl9pcHY2LmgtNzItXFx0XFx0XFx0XFx0ICAgICBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbi0tXFxuaW5jbHVkZS9saW51eC9uZXRmaWx0ZXJfaXB2Ni5oLTc4LSNpZiBJU19FTkFCTEVEKENPTkZJR19JUFY2KVxcbmluY2x1ZGUvbGludXgvbmV0ZmlsdGVyX2lwdjYuaDo3OTpcXHRyZXR1cm4gYnJfaXA2X2ZyYWdtZW50KG5ldCwgc2ssIHNrYiwgZGF0YSwgb3V0cHV0KTtcXG5pbmNsdWRlL2xpbnV4L25ldGZpbHRlcl9pcHY2LmgtODAtI2Vsc2VcXG4tLVxcbm5ldC9icmlkZ2UvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19icmlkZ2UuYz0zMzc9bmZfY3RfYnJpZGdlX3JlZnJhZyhzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBjb25zdCBzdHJ1Y3QgbmZfaG9va19zdGF0ZSAqc3RhdGUsXFxuLS1cXG5uZXQvYnJpZGdlL25ldGZpbHRlci9uZl9jb25udHJhY2tfYnJpZGdlLmMtMzUyLVxcdGNhc2UgaHRvbnMoRVRIX1BfSVBWNik6XFxubmV0L2JyaWRnZS9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2JyaWRnZS5jOjM1MzpcXHRcXHRuZl9icl9pcDZfZnJhZ21lbnQoc3RhdGUtXFx1MDAzZW5ldCwgc3RhdGUtXFx1MDAzZXNrLCBza2IsIFxcdTAwMjZkYXRhLCBvdXRwdXQpO1xcbm5ldC9icmlkZ2UvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19icmlkZ2UuYy0zNTQtXFx0XFx0YnJlYWs7XFxuLS1cXG5uZXQvaXB2Ni9uZXRmaWx0ZXIuYz0xMTA9RVhQT1JUX1NZTUJPTF9HUEwoX19uZl9pcDZfcm91dGUpO1xcbm5ldC9pcHY2L25ldGZpbHRlci5jLTExMS1cXG5uZXQvaXB2Ni9uZXRmaWx0ZXIuYzoxMTI6aW50IGJyX2lwNl9mcmFnbWVudChzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX2J1ZmYgKnNrYixcXG5uZXQvaXB2Ni9uZXRmaWx0ZXIuYy0xMTMtXFx0XFx0ICAgIHN0cnVjdCBuZl9icmlkZ2VfZnJhZ19kYXRhICpkYXRhLFxcbi0tXFxubmV0L2lwdjYvbmV0ZmlsdGVyLmMtMjMzLX1cXG5uZXQvaXB2Ni9uZXRmaWx0ZXIuYzoyMzQ6RVhQT1JUX1NZTUJPTF9HUEwoYnJfaXA2X2ZyYWdtZW50KTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDdUMDg6MjM6MDAuMjUzNjU5OTRaIiwiU2VxIjoxOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTk4MDA1NDkyMzQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB1bmRlcnN0YW5kaW5nLCBmb3JtYXR0ZWQgYXMgcmVxdWVzdGVkOlxuXG4qKkRlY29uc3RydWN0aW5nIHRoZSBDb25udHJhY2sgQnJpZGdlIFJlLWZyYWdtZW50YXRpb24gTG9naWMqKlxuXG5BbHJpZ2h0LCBzbyBJIG5lZWQgdG8gZGlnIGludG8gaG93IHJlLWZyYWdtZW50YXRpb24gaXMgaGFuZGxlZCB3aXRoaW4gdGhlIENvbm50cmFjayBicmlkZ2UgY29udGV4dC4gVGhlIGNvZGUgcGF0aCBzdWdnZXN0cyB0aGF0IGBuZl9jdF9icmlkZ2VfcmVmcmFnYCBpcyBjYWxsZWQgZXhjbHVzaXZlbHkgdGhyb3VnaCBgbmZfYnJfaXA2X2ZyYWdtZW50YC4gVGhhdCBtZWFucyB0aGUgYE5GX0NPTk5UUkFDS19CUklER0VgIGNvbmZpZ3VyYXRpb24gb3B0aW9uIGlzIHRoZSBjcnVjaWFsIHBpZWNlIGhlcmUuIEl0J3MgdGhlIGVuYWJsaW5nIGNvbmRpdGlvbi5cblxuTm93LCB0byBnZXQgYSBoYW5kbGUgb24gd2hhdCdzIGFjdHVhbGx5IGhhcHBlbmluZywgSSBuZWVkIHRvIGp1bXAgaW50byB0aGUgYG5mX2N0X2JyaWRnZV9yZWZyYWdgIGZ1bmN0aW9uIGl0c2VsZi4gSSdsbCBmaW5kIGl0IGluIGBuZXQvYnJpZGdlL25ldGZpbHRlci9uZl9jb25udHJhY2tfYnJpZGdlLmNgLiBMZXQncyBzZWUgd2hhdCB0aGUgaW1wbGVtZW50YXRpb24gbG9va3MgbGlrZSBhbmQgaG93IGl0J3Mgb3JjaGVzdHJhdGluZyB0aGVzZSBmcmFnbWVudHMuIEkgZXhwZWN0IGl0J2xsIGJlIGxvb2tpbmcgYXQgdGhlIGNvbm5lY3Rpb24gdHJhY2tpbmcgZW50cmllcyBhbmQgb3JjaGVzdHJhdGluZyB0aGUgcmVhc3NlbWJseSBiYXNlZCBvbiB0aGUgYnJpZGdlJ3MgaW52b2x2ZW1lbnQuIE15IGluaXRpYWwgYXNzdW1wdGlvbiBpcyB0aGF0IGl0J2xsIGludm9sdmUgc29tZSBjYXJlZnVsIG1hbmFnZW1lbnQgb2YgZnJhZ21lbnQgaWRlbnRpZmljYXRpb24gYW5kIHJlYXNzZW1ibHkgbWV0YWRhdGEuIExldCdzIHNlZSBob3cgdGhleSBkbyBpdC5cblxuXG4iLCJJbnB1dFRva2VucyI6ODI1OCwiT3V0cHV0VG9rZW5zIjo0NCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjc2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA3VDA4OjIzOjIwLjA1NDIxMTkwNFoiLCJTZXEiOjIwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMTg5NDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwibmV0L2JyaWRnZS9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2JyaWRnZS5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDMzNyxcbiAgXCJMaW5lQ291bnRcIjogNTBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDMzNzpcXHRuZl9jdF9icmlkZ2VfcmVmcmFnKHN0cnVjdCBza19idWZmICpza2IsIGNvbnN0IHN0cnVjdCBuZl9ob29rX3N0YXRlICpzdGF0ZSxcXG4gMzM4OlxcdFxcdFxcdCAgICBpbnQgKCpvdXRwdXQpKHN0cnVjdCBuZXQgKiwgc3RydWN0IHNvY2sgKnNrLFxcbiAzMzk6XFx0XFx0XFx0XFx0XFx0ICBjb25zdCBzdHJ1Y3QgbmZfYnJpZGdlX2ZyYWdfZGF0YSAqZGF0YSxcXG4gMzQwOlxcdFxcdFxcdFxcdFxcdCAgc3RydWN0IHNrX2J1ZmYgKikpXFxuIDM0MTpcXHR7XFxuIDM0MjpcXHRcXHRzdHJ1Y3QgbmZfYnJpZGdlX2ZyYWdfZGF0YSBkYXRhO1xcbiAzNDM6XFx0XFxuIDM0NDpcXHRcXHRpZiAoIUJSX0lOUFVUX1NLQl9DQihza2IpLVxcdTAwM2VmcmFnX21heF9zaXplKVxcbiAzNDU6XFx0XFx0XFx0cmV0dXJuIE5GX0FDQ0VQVDtcXG4gMzQ2OlxcdFxcbiAzNDc6XFx0XFx0bmZfY3RfYnJpZGdlX2ZyYWdfc2F2ZShza2IsIFxcdTAwMjZkYXRhKTtcXG4gMzQ4OlxcdFxcdHN3aXRjaCAoc2tiLVxcdTAwM2Vwcm90b2NvbCkge1xcbiAzNDk6XFx0XFx0Y2FzZSBodG9ucyhFVEhfUF9JUCk6XFxuIDM1MDpcXHRcXHRcXHRuZl9icl9pcF9mcmFnbWVudChzdGF0ZS1cXHUwMDNlbmV0LCBzdGF0ZS1cXHUwMDNlc2ssIHNrYiwgXFx1MDAyNmRhdGEsIG91dHB1dCk7XFxuIDM1MTpcXHRcXHRcXHRicmVhaztcXG4gMzUyOlxcdFxcdGNhc2UgaHRvbnMoRVRIX1BfSVBWNik6XFxuIDM1MzpcXHRcXHRcXHRuZl9icl9pcDZfZnJhZ21lbnQoc3RhdGUtXFx1MDAzZW5ldCwgc3RhdGUtXFx1MDAzZXNrLCBza2IsIFxcdTAwMjZkYXRhLCBvdXRwdXQpO1xcbiAzNTQ6XFx0XFx0XFx0YnJlYWs7XFxuIDM1NTpcXHRcXHRkZWZhdWx0OlxcbiAzNTY6XFx0XFx0XFx0V0FSTl9PTl9PTkNFKDEpO1xcbiAzNTc6XFx0XFx0XFx0cmV0dXJuIE5GX0RST1A7XFxuIDM1ODpcXHRcXHR9XFxuIDM1OTpcXHRcXG4gMzYwOlxcdFxcdHJldHVybiBORl9TVE9MRU47XFxuIDM2MTpcXHR9XFxuIDM2MjpcXHRcXG4gMzYzOlxcdC8qIEFjdHVhbGx5IG9ubHkgc2xvdyBwYXRoIHJlZnJhZ21lbnRhdGlvbiBuZWVkcyB0aGlzLiAqL1xcbiAzNjQ6XFx0c3RhdGljIGludCBuZl9jdF9icmlkZ2VfZnJhZ19yZXN0b3JlKHN0cnVjdCBza19idWZmICpza2IsXFxuIDM2NTpcXHRcXHRcXHRcXHRcXHQgICAgIGNvbnN0IHN0cnVjdCBuZl9icmlkZ2VfZnJhZ19kYXRhICpkYXRhKVxcbiAzNjY6XFx0e1xcbiAzNjc6XFx0XFx0aW50IGVycjtcXG4gMzY4OlxcdFxcbiAzNjk6XFx0XFx0ZXJyID0gc2tiX2Nvd19oZWFkKHNrYiwgRVRIX0hMRU4pO1xcbiAzNzA6XFx0XFx0aWYgKGVycikge1xcbiAzNzE6XFx0XFx0XFx0a2ZyZWVfc2tiKHNrYik7XFxuIDM3MjpcXHRcXHRcXHRyZXR1cm4gLUVOT01FTTtcXG4gMzczOlxcdFxcdH1cXG4gMzc0OlxcdFxcdGlmIChkYXRhLVxcdTAwM2V2bGFuX3ByZXNlbnQpXFxuIDM3NTpcXHRcXHRcXHRfX3ZsYW5faHdhY2NlbF9wdXRfdGFnKHNrYiwgZGF0YS1cXHUwMDNldmxhbl9wcm90bywgZGF0YS1cXHUwMDNldmxhbl90Y2kpO1xcbiAzNzY6XFx0XFx0ZWxzZSBpZiAoc2tiX3ZsYW5fdGFnX3ByZXNlbnQoc2tiKSlcXG4gMzc3OlxcdFxcdFxcdF9fdmxhbl9od2FjY2VsX2NsZWFyX3RhZyhza2IpO1xcbiAzNzg6XFx0XFxuIDM3OTpcXHRcXHRza2JfY29weV90b19saW5lYXJfZGF0YV9vZmZzZXQoc2tiLCAtRVRIX0hMRU4sIGRhdGEtXFx1MDAzZW1hYywgRVRIX0hMRU4pO1xcbiAzODA6XFx0XFx0c2tiX3Jlc2V0X21hY19oZWFkZXIoc2tiKTtcXG4gMzgxOlxcdFxcbiAzODI6XFx0XFx0cmV0dXJuIDA7XFxuIDM4MzpcXHR9XFxuIDM4NDpcXHRcXG4gMzg1OlxcdHN0YXRpYyBpbnQgbmZfY3RfYnJpZGdlX3JlZnJhZ19wb3N0KHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHNvY2sgKnNrLFxcbiAzODY6XFx0XFx0XFx0XFx0XFx0ICAgIGNvbnN0IHN0cnVjdCBuZl9icmlkZ2VfZnJhZ19kYXRhICpkYXRhLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wN1QwODoyMzoyMC4wNTQzMzI3MjRaIiwiU2VxIjoyMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTkyNTU0MjQ3NDcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudCBvZiB0aGUgSVB2NiBCcmlkZ2UgTmV0ZmlsdGVyIFBhdGNoKipcblxuT2theSwgc28gdGhpcyBwYXRjaCBpcyBhZGRyZXNzaW5nIGEgcHJldHR5IG5hc3R5IHBvdGVudGlhbCBidWcgd2l0aGluIGBicl9pcDZfZnJhZ21lbnRgLiBJdCBzZWVtcyBsaWtlIHRoZSBgcHJldmhkcmAgcG9pbnRlciwgdXNlZCB3aXRoaW4gdGhlIElQdjYgZnJhZ21lbnRhdGlvbiBsb2dpYywgY2FuIGJlY29tZSBkYW5nbGluZyBpZiBgc2tiX2NoZWNrc3VtX2hlbHBgIGRlY2lkZXMgdG8gcmVhbGxvY2F0ZSB0aGUgYHNrYmAncyBkYXRhIGJ1ZmZlci4gVGhhdCdzIGEgY2xhc3NpYyByZWNpcGUgZm9yIGEgdXNlLWFmdGVyLWZyZWUgb3IsIGV2ZW4gd29yc2UsIG1lbW9yeSBjb3JydXB0aW9uLCBhbmQgd2UgYWxsIGtub3cgaG93IHRob3NlIGNhbiBiZSBhIG5pZ2h0bWFyZSB0byBkZWJ1Zy5cblxuVGhlIGZpeCBpdHNlbGYgYXBwZWFycyBzdHJhaWdodGZvcndhcmQg4oCTIGNhbGwgYGlwNl9maW5kXzFzdGZyYWdvcHRgIGFnYWluIGFmdGVyIHRoZSBwb3RlbnRpYWwgcmVhbGxvY2F0aW9uIHRvIGVuc3VyZSBgcHJldmhkcmAgaXMgcG9pbnRpbmcgYXQgdmFsaWQgbWVtb3J5LiBGdW5jdGlvbmFsbHksIHRoaXMgc2VlbXMgbGlrZSBhIHNvbGlkIGFwcHJvYWNoIHRvIG1pdGlnYXRlIHRoZSByaXNrLiBUaGlzIGFmZmVjdHMgY29kZSB3aXRoaW4gdGhlIGJyaWRnZSBuZXRmaWx0ZXIgY29udGV4dCwgc3BlY2lmaWNhbGx5IGBicl9pcDZfZnJhZ21lbnRgIGFuZCBgbmZfY3RfYnJpZGdlX3JlZnJhZ2AsIHdoaWNoIEknbGwgYmUga2VlcGluZyBhIGNsb3NlIGV5ZSBvbi5cblxuR2l2ZW4gdGhlIHBvdGVudGlhbCBzZXZlcml0eSBvZiBhIHVzZS1hZnRlci1mcmVlIGluIG5ldHdvcmsgY29kZSwgYW5kIHRoZSBmdW5jdGlvbmFsIG5hdHVyZSBvZiB0aGlzIGNoYW5nZSwgSSdtIGFic29sdXRlbHkgZ29pbmcgdG8gcmVjb21tZW5kIGZ1enppbmcgdGhpcy4gV2UgbmVlZCB0byBiZSBhYnNvbHV0ZWx5IGNlcnRhaW4gdGhpcyBmaXggd29ya3MgYW5kIGRvZXNuJ3QgaW50cm9kdWNlIGFueSByZWdyZXNzaW9ucyBvciBuZXcgdnVsbmVyYWJpbGl0aWVzLiBUaGUgcmVsZXZhbnQgY29uZmlndXJhdGlvbiBvcHRpb25zLCBgTkZfQ09OTlRSQUNLX0JSSURHRWAsIGBCUklER0VgLCBgSVBWNmAsIGFuZCBgTkVURklMVEVSYCwgd2lsbCBiZSBlbmFibGVkIGZvciB0aGUgZnV6emluZyBydW5zLlxuXG5BbHJpZ2h0LCB0aW1lIHRvIHNldCB0aGUgZnV6emluZyBwcm9jZXNzIGluIG1vdGlvbiB1c2luZyB0aGUgc2V0LXJlc3VsdHMgdG9vbC4gTGV0J3Mgc2VlIHdoYXQgd2UgY2FuIGRpZyB1cC5cblxuXG4iLCJJbnB1dFRva2VucyI6OTQzNywiT3V0cHV0VG9rZW5zIjoxNTMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNDcsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wN1QwODoyMzozOS4zMDk3NjAxNTFaIiwiU2VxIjoyMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxODU5NzA5NTIsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk5GX0NPTk5UUkFDS19CUklER0VcIixcbiAgICBcIkJSSURHRVwiLFxuICAgIFwiSVBWNlwiLFxuICAgIFwiTkVURklMVEVSXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiYnJfaXA2X2ZyYWdtZW50XCIsXG4gICAgXCJuZl9jdF9icmlkZ2VfcmVmcmFnXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSBwb3RlbnRpYWwgdXNlLWFmdGVyLWZyZWUgaW4gYGJyX2lwNl9mcmFnbWVudGAgYnkgcmUtZXZhbHVhdGluZyB0aGUgYHByZXZoZHJgIHBvaW50ZXIgYWZ0ZXIgYHNrYl9jaGVja3N1bV9oZWxwYCB3aGljaCBtYXkgcmVhbGxvY2F0ZSB0aGUgc2tiIGRhdGEuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgSVB2NiBicmlkZ2UgbmV0ZmlsdGVyIGNvZGUgdGhhdCBzaG91bGQgYmUgZnV6emVkIHRvIGVuc3VyZSB0aGUgZml4IGlzIGNvcnJlY3QgYW5kIGRvZXNuJ3QgaW50cm9kdWNlIG5ldyBpc3N1ZXMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTkZfQ09OTlRSQUNLX0JSSURHRVwiLFxuICAgIFwiQlJJREdFXCIsXG4gICAgXCJJUFY2XCIsXG4gICAgXCJORVRGSUxURVJcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJicl9pcDZfZnJhZ21lbnRcIixcbiAgICBcIm5mX2N0X2JyaWRnZV9yZWZyYWdcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIHBvdGVudGlhbCB1c2UtYWZ0ZXItZnJlZSBpbiBgYnJfaXA2X2ZyYWdtZW50YCBieSByZS1ldmFsdWF0aW5nIHRoZSBgcHJldmhkcmAgcG9pbnRlciBhZnRlciBgc2tiX2NoZWNrc3VtX2hlbHBgIHdoaWNoIG1heSByZWFsbG9jYXRlIHRoZSBza2IgZGF0YS4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBJUHY2IGJyaWRnZSBuZXRmaWx0ZXIgY29kZSB0aGF0IHNob3VsZCBiZSBmdXp6ZWQgdG8gZW5zdXJlIHRoZSBmaXggaXMgY29ycmVjdCBhbmQgZG9lc24ndCBpbnRyb2R1Y2UgbmV3IGlzc3Vlcy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+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-workflow7k95n[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-07 07:53:36 +0000 UTC FinishedAt: 2026-07-07 08:23:40 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "9e05e91a9a847ed57926414bd7c2c5e54d6c56c6", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NF_CONNTRACK_BRIDGE", "BRIDGE", "IPV6", "NETFILTER" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "9e05e91a9a847ed57926414bd7c2c5e54d6c56c6", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NF_CONNTRACK_BRIDGE", "BRIDGE", "IPV6", "NETFILTER" ], "series_id": "681eb511-0aa7-4e36-96b8-d32087cdf765" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "br_ip6_fragment", "nf_ct_bridge_refrag" ], "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+CgkJCTx0ZD4yMDI2LzA3LzA3IDA4OjIwPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+M208L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05GX0NPTk5UUkFDS19CUklER0UmIzM0OywKICAgICYjMzQ7QlJJREdFJiMzNDssCiAgICAmIzM0O0lQVjYmIzM0OywKICAgICYjMzQ7TkVURklMVEVSJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7YnJfaXA2X2ZyYWdtZW50JiMzNDssCiAgICAmIzM0O25mX2N0X2JyaWRnZV9yZWZyYWcmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSBwb3RlbnRpYWwgdXNlLWFmdGVyLWZyZWUgaW4gYGJyX2lwNl9mcmFnbWVudGAgYnkgcmUtZXZhbHVhdGluZyB0aGUgYHByZXZoZHJgIHBvaW50ZXIgYWZ0ZXIgYHNrYl9jaGVja3N1bV9oZWxwYCB3aGljaCBtYXkgcmVhbGxvY2F0ZSB0aGUgc2tiIGRhdGEuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgSVB2NiBicmlkZ2UgbmV0ZmlsdGVyIGNvZGUgdGhhdCBzaG91bGQgYmUgZnV6emVkIHRvIGVuc3VyZSB0aGUgZml4IGlzIGNvcnJlY3QgYW5kIGRvZXNuJiMzOTt0IGludHJvZHVjZSBuZXcgaXNzdWVzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA3IDA4OjIwPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgMzY5OTc3YTliODZkNDA1OGRjMmFiODczMmY0MWJkMmIyNjZkZmNmY1xuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUdWUgSnVsIDcgMDg6MjA6MjkgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbmV0L2lwdjYvbmV0ZmlsdGVyLmMgYi9uZXQvaXB2Ni9uZXRmaWx0ZXIuY1xuaW5kZXggNmQ4MGY4NWU1NWZhN2YuLjU0Nzg3OWRhOTUzMjUxIDEwMDY0NFxuLS0tIGEvbmV0L2lwdjYvbmV0ZmlsdGVyLmNcbiYjNDM7JiM0MzsmIzQzOyBiL25ldC9pcHY2L25ldGZpbHRlci5jXG5AQCAtMTQ3LDYgJiM0MzsxNDcsMTAgQEAgaW50IGJyX2lwNl9mcmFnbWVudChzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX2J1ZmYgKnNrYixcbiBcdCAgICAoZXJyID0gc2tiX2NoZWNrc3VtX2hlbHAoc2tiKSkpXG4gXHRcdGdvdG8gYmxhY2tob2xlO1xuIFxuJiM0MztcdGVyciA9IGlwNl9maW5kXzFzdGZyYWdvcHQoc2tiLCBcdTAwMjZwcmV2aGRyKTtcbiYjNDM7XHRpZiAoZXJyIFx1MDAzYyAwKVxuJiM0MztcdFx0Z290byBibGFja2hvbGU7XG4mIzQzO1xuIFx0aHJvb20gPSBMTF9SRVNFUlZFRF9TUEFDRShza2ItXHUwMDNlZGV2KTtcbiBcdGlmIChza2JfaGFzX2ZyYWdfbGlzdChza2IpKSB7XG4gXHRcdHVuc2lnbmVkIGludCBmaXJzdF9sZW4gPSBza2JfcGFnZWxlbihza2IpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA3IDA4OjIwPC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjNtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05GX0NPTk5UUkFDS19CUklER0UmIzM0OywKICAgICYjMzQ7QlJJREdFJiMzNDssCiAgICAmIzM0O0lQVjYmIzM0OywKICAgICYjMzQ7TkVURklMVEVSJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7YnJfaXA2X2ZyYWdtZW50JiMzNDssCiAgICAmIzM0O25mX2N0X2JyaWRnZV9yZWZyYWcmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSBwb3RlbnRpYWwgdXNlLWFmdGVyLWZyZWUgaW4gYGJyX2lwNl9mcmFnbWVudGAgYnkgcmUtZXZhbHVhdGluZyB0aGUgYHByZXZoZHJgIHBvaW50ZXIgYWZ0ZXIgYHNrYl9jaGVja3N1bV9oZWxwYCB3aGljaCBtYXkgcmVhbGxvY2F0ZSB0aGUgc2tiIGRhdGEuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgSVB2NiBicmlkZ2UgbmV0ZmlsdGVyIGNvZGUgdGhhdCBzaG91bGQgYmUgZnV6emVkIHRvIGVuc3VyZSB0aGUgZml4IGlzIGNvcnJlY3QgYW5kIGRvZXNuJiMzOTt0IGludHJvZHVjZSBuZXcgaXNzdWVzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdAogICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksCiAgIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCAzNjk5NzdhOWI4NmQ0MDU4ZGMyYWI4NzMyZjQxYmQyYjI2NmRmY2ZjCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFR1ZSBKdWwgNyAwODoyMDoyOSAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL25ldC9pcHY2L25ldGZpbHRlci5jIGIvbmV0L2lwdjYvbmV0ZmlsdGVyLmMKaW5kZXggNmQ4MGY4NWU1NWZhN2YuLjU0Nzg3OWRhOTUzMjUxIDEwMDY0NAotLS0gYS9uZXQvaXB2Ni9uZXRmaWx0ZXIuYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvaXB2Ni9uZXRmaWx0ZXIuYwpAQCAtMTQ3LDYgJiM0MzsxNDcsMTAgQEAgaW50IGJyX2lwNl9mcmFnbWVudChzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX2J1ZmYgKnNrYiwKIAkgICAgKGVyciA9IHNrYl9jaGVja3N1bV9oZWxwKHNrYikpKQogCQlnb3RvIGJsYWNraG9sZTsKIAomIzQzOwllcnIgPSBpcDZfZmluZF8xc3RmcmFnb3B0KHNrYiwgJmFtcDtwcmV2aGRyKTsKJiM0MzsJaWYgKGVyciAmbHQ7IDApCiYjNDM7CQlnb3RvIGJsYWNraG9sZTsKJiM0MzsKIAlocm9vbSA9IExMX1JFU0VSVkVEX1NQQUNFKHNrYi0mZ3Q7ZGV2KTsKIAlpZiAoc2tiX2hhc19mcmFnX2xpc3Qoc2tiKSkgewogCQl1bnNpZ25lZCBpbnQgZmlyc3RfbGVuID0gc2tiX3BhZ2VsZW4oc2tiKTsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDcgMDg6MjA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTg3NQoJCQkJCQkJb3V0cHV0OiAzNQoJCQkJCQkJdGhvdWdodHM6IDc3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIEtlcm5lbCBQYXRjaCBpbiBJUHY2IE5ldGZpbHRlcioqCgpPa2F5LCBzbyBJJiMzOTt2ZSBnb3QgdGhpcyBwYXRjaCBoZXJlIHRoYXQmIzM5O3MgcG9raW5nIGFyb3VuZCBpbiBgbmV0L2lwdjYvbmV0ZmlsdGVyLmNgLiBTcGVjaWZpY2FsbHksIGl0IHNlZW1zIHRvIGJlIGFkZGluZyBhIGNhbGwgdG8gYGlwNl9maW5kXzFzdGZyYWdvcHQoc2tiLCAmYW1wO3ByZXZoZHIpYCB3aXRoaW4gdGhlIGBicl9pcDZfZnJhZ21lbnRgIGZ1bmN0aW9uLiBBbHJpZ2h0LCB0aGF0JiMzOTtzIGludGVyZXN0aW5nLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aHkgdGhleSYjMzk7cmUgYWRkaW5nIHRoaXMsIHdoYXQgYGlwNl9maW5kXzFzdGZyYWdvcHRgICpkb2VzKiBpbiB0aGlzIGNvbnRleHQsIGFuZCBtb3N0IGltcG9ydGFudGx5LCBob3cgdGhpcyBpbXBhY3RzIHRoZSBiZWhhdmlvciBvZiBgYnJfaXA2X2ZyYWdtZW50YC4gTXkgaW5pdGlhbCBodW5jaCBpcyB0aGlzIHByb2JhYmx5IGhhcyBzb21ldGhpbmcgdG8gZG8gd2l0aCBoYW5kbGluZyBJUHY2IGZyYWdtZW50YXRpb24gYW5kIG9wdGlvbnMgd2l0aGluIHRoZSBicmlkZ2luZyBjb250ZXh0LCB3aGljaCwgb2YgY291cnNlLCBpcyBhIHBvdGVudGlhbGx5IGNvbXBsZXggaW50ZXJhY3Rpb24uIFNvLCBsZXQmIzM5O3MgZGl2ZSBpbnRvIGBicl9pcDZfZnJhZ21lbnRgIGl0c2VsZiB3aXRoaW4gYG5ldC9pcHY2L25ldGZpbHRlci5jYCBhbmQgZmlndXJlIG91dCB3aGF0JiMzOTtzIGdvaW5nIG9uLiBJIG5lZWQgdG8gc2VlIHRoZSBsb2dpYyBhcm91bmQgdGhhdCBjYWxsIHNpdGUgdG8gZnVsbHkgZ3Jhc3AgdGhlIHJhbWlmaWNhdGlvbnMuIExldCYjMzk7cyBnZXQgdG8gdGhlIGNvZGUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDcgMDg6MjA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7YnJfaXA2X2ZyYWdtZW50JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L2lwdjYvbmV0ZmlsdGVyLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L2lwdjYvbmV0ZmlsdGVyLmM9MTEwPUVYUE9SVF9TWU1CT0xfR1BMKF9fbmZfaXA2X3JvdXRlKTtcbm5ldC9pcHY2L25ldGZpbHRlci5jLTExMS1cbm5ldC9pcHY2L25ldGZpbHRlci5jOjExMjppbnQgYnJfaXA2X2ZyYWdtZW50KHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxubmV0L2lwdjYvbmV0ZmlsdGVyLmMtMTEzLVx0XHQgICAgc3RydWN0IG5mX2JyaWRnZV9mcmFnX2RhdGEgKmRhdGEsXG4tLVxubmV0L2lwdjYvbmV0ZmlsdGVyLmMtMjMzLX1cbm5ldC9pcHY2L25ldGZpbHRlci5jOjIzNDpFWFBPUlRfU1lNQk9MX0dQTChicl9pcDZfZnJhZ21lbnQpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA3IDA4OjIwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIzODcKCQkJCQkJCW91dHB1dDogMzgKCQkJCQkJCXRob3VnaHRzOiAzNwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBzdW1tYXJ5LCB0YWtpbmcgb24gdGhlIHBlcnNvbmEgeW91IHJlcXVlc3RlZDoKCioqRGVjb25zdHJ1Y3RpbmcgdGhlIElQdjYgRnJhZ21lbnRhdGlvbiBQYXRjaCoqCgpBbHJpZ2h0LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoaXMuIFRoZSBkZXNjcmlwdGlvbiBzYXlzIHRoZSBwYXRjaCB0YXJnZXRzIGBicl9pcDZfZnJhZ21lbnRgIHdpdGhpbiBgbmV0L2lwdjYvbmV0ZmlsdGVyLmNgLiBUaGF0JiMzOTtzIHRoZSBrZXkuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgdGhpcyBmdW5jdGlvbiBkb2VzIGFuZCB3aGF0IHNwZWNpZmljIG1vZGlmaWNhdGlvbnMgd2VyZSBtYWRlLiBUaGUgY29tbWVudCBzdWdnZXN0cyB0aGVyZSYjMzk7cyBhIG5ldHdvcmtpbmcgaXNzdWUgdGhhdCYjMzk7cyBiZWluZyBhZGRyZXNzZWQsIHNwZWNpZmljYWxseSByZWxhdGVkIHRvIHRoZSBicmlkZ2luZyBvZiBJUHY2IGZyYWdtZW50cy4gVGhpcyBuYXJyb3dzIHRoZSBzY29wZS4gU28sIEkgbmVlZCB0byBvcGVuIHRoZSByZWxldmFudCBmaWxlIGFuZCBzdGFydCB0cmFjaW5nIHRocm91Z2ggdGhhdCBmdW5jdGlvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNyAwODoyMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O25ldC9pcHY2L25ldGZpbHRlci5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMTEyLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDEwMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgMTEyOlx0aW50IGJyX2lwNl9mcmFnbWVudChzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX2J1ZmYgKnNrYixcbiAxMTM6XHRcdFx0ICAgIHN0cnVjdCBuZl9icmlkZ2VfZnJhZ19kYXRhICpkYXRhLFxuIDExNDpcdFx0XHQgICAgaW50ICgqb3V0cHV0KShzdHJ1Y3QgbmV0ICosIHN0cnVjdCBzb2NrICpzayxcbiAxMTU6XHRcdFx0XHRcdCAgY29uc3Qgc3RydWN0IG5mX2JyaWRnZV9mcmFnX2RhdGEgKmRhdGEsXG4gMTE2Olx0XHRcdFx0XHQgIHN0cnVjdCBza19idWZmICopKVxuIDExNzpcdHtcbiAxMTg6XHRcdGludCBmcmFnX21heF9zaXplID0gQlJfSU5QVVRfU0tCX0NCKHNrYiktXHUwMDNlZnJhZ19tYXhfc2l6ZTtcbiAxMTk6XHRcdHU4IHRzdGFtcF90eXBlID0gc2tiLVx1MDAzZXRzdGFtcF90eXBlO1xuIDEyMDpcdFx0a3RpbWVfdCB0c3RhbXAgPSBza2ItXHUwMDNldHN0YW1wO1xuIDEyMTpcdFx0c3RydWN0IGlwNl9mcmFnX3N0YXRlIHN0YXRlO1xuIDEyMjpcdFx0dTggKnByZXZoZHIsIG5leHRoZHIgPSAwO1xuIDEyMzpcdFx0dW5zaWduZWQgaW50IG10dSwgaGxlbjtcbiAxMjQ6XHRcdGludCBocm9vbSwgZXJyID0gMDtcbiAxMjU6XHRcdF9fYmUzMiBmcmFnX2lkO1xuIDEyNjpcdFxuIDEyNzpcdFx0ZXJyID0gaXA2X2ZpbmRfMXN0ZnJhZ29wdChza2IsIFx1MDAyNnByZXZoZHIpO1xuIDEyODpcdFx0aWYgKGVyciBcdTAwM2MgMClcbiAxMjk6XHRcdFx0Z290byBibGFja2hvbGU7XG4gMTMwOlx0XHRobGVuID0gZXJyO1xuIDEzMTpcdFx0bmV4dGhkciA9ICpwcmV2aGRyO1xuIDEzMjpcdFxuIDEzMzpcdFx0bXR1ID0gc2tiLVx1MDAzZWRldi1cdTAwM2VtdHU7XG4gMTM0Olx0XHRpZiAoZnJhZ19tYXhfc2l6ZSBcdTAwM2UgbXR1IHx8XG4gMTM1Olx0XHQgICAgZnJhZ19tYXhfc2l6ZSBcdTAwM2MgSVBWNl9NSU5fTVRVKVxuIDEzNjpcdFx0XHRnb3RvIGJsYWNraG9sZTtcbiAxMzc6XHRcbiAxMzg6XHRcdG10dSA9IGZyYWdfbWF4X3NpemU7XG4gMTM5Olx0XHRpZiAobXR1IFx1MDAzYyBobGVuICYjNDM7IHNpemVvZihzdHJ1Y3QgZnJhZ19oZHIpICYjNDM7IDgpXG4gMTQwOlx0XHRcdGdvdG8gYmxhY2tob2xlO1xuIDE0MTpcdFx0bXR1IC09IGhsZW4gJiM0Mzsgc2l6ZW9mKHN0cnVjdCBmcmFnX2hkcik7XG4gMTQyOlx0XG4gMTQzOlx0XHRmcmFnX2lkID0gaXB2Nl9zZWxlY3RfaWRlbnQobmV0LCBcdTAwMjZpcHY2X2hkcihza2IpLVx1MDAzZWRhZGRyLFxuIDE0NDpcdFx0XHRcdFx0ICAgIFx1MDAyNmlwdjZfaGRyKHNrYiktXHUwMDNlc2FkZHIpO1xuIDE0NTpcdFxuIDE0NjpcdFx0aWYgKHNrYi1cdTAwM2VpcF9zdW1tZWQgPT0gQ0hFQ0tTVU1fUEFSVElBTCBcdTAwMjZcdTAwMjZcbiAxNDc6XHRcdCAgICAoZXJyID0gc2tiX2NoZWNrc3VtX2hlbHAoc2tiKSkpXG4gMTQ4Olx0XHRcdGdvdG8gYmxhY2tob2xlO1xuIDE0OTpcdFxuIDE1MDpcdFx0ZXJyID0gaXA2X2ZpbmRfMXN0ZnJhZ29wdChza2IsIFx1MDAyNnByZXZoZHIpO1xuIDE1MTpcdFx0aWYgKGVyciBcdTAwM2MgMClcbiAxNTI6XHRcdFx0Z290byBibGFja2hvbGU7XG4gMTUzOlx0XG4gMTU0Olx0XHRocm9vbSA9IExMX1JFU0VSVkVEX1NQQUNFKHNrYi1cdTAwM2VkZXYpO1xuIDE1NTpcdFx0aWYgKHNrYl9oYXNfZnJhZ19saXN0KHNrYikpIHtcbiAxNTY6XHRcdFx0dW5zaWduZWQgaW50IGZpcnN0X2xlbiA9IHNrYl9wYWdlbGVuKHNrYik7XG4gMTU3Olx0XHRcdHN0cnVjdCBpcDZfZnJhZ2xpc3RfaXRlciBpdGVyO1xuIDE1ODpcdFx0XHRzdHJ1Y3Qgc2tfYnVmZiAqZnJhZzI7XG4gMTU5Olx0XG4gMTYwOlx0XHRcdGlmIChmaXJzdF9sZW4gLSBobGVuIFx1MDAzZSBtdHUpXG4gMTYxOlx0XHRcdFx0Z290byBibGFja2hvbGU7XG4gMTYyOlx0XG4gMTYzOlx0XHRcdGlmIChza2JfY2xvbmVkKHNrYikgfHxcbiAxNjQ6XHRcdFx0ICAgIHNrYl9oZWFkcm9vbShza2IpIFx1MDAzYyAoaHJvb20gJiM0Mzsgc2l6ZW9mKHN0cnVjdCBmcmFnX2hkcikpKVxuIDE2NTpcdFx0XHRcdGdvdG8gc2xvd19wYXRoO1xuIDE2NjpcdFxuIDE2NzpcdFx0XHRza2Jfd2Fsa19mcmFncyhza2IsIGZyYWcyKSB7XG4gMTY4Olx0XHRcdFx0aWYgKGZyYWcyLVx1MDAzZWxlbiBcdTAwM2UgbXR1KVxuIDE2OTpcdFx0XHRcdFx0Z290byBibGFja2hvbGU7XG4gMTcwOlx0XG4gMTcxOlx0XHRcdFx0LyogUGFydGlhbGx5IGNsb25lZCBza2I/ICovXG4gMTcyOlx0XHRcdFx0aWYgKHNrYl9zaGFyZWQoZnJhZzIpIHx8XG4gMTczOlx0XHRcdFx0ICAgIHNrYl9oZWFkcm9vbShmcmFnMikgXHUwMDNjIChobGVuICYjNDM7IGhyb29tICYjNDM7IHNpemVvZihzdHJ1Y3QgZnJhZ19oZHIpKSlcbiAxNzQ6XHRcdFx0XHRcdGdvdG8gc2xvd19wYXRoO1xuIDE3NTpcdFx0XHR9XG4gMTc2Olx0XG4gMTc3Olx0XHRcdGVyciA9IGlwNl9mcmFnbGlzdF9pbml0KHNrYiwgaGxlbiwgcHJldmhkciwgbmV4dGhkciwgZnJhZ19pZCxcbiAxNzg6XHRcdFx0XHRcdFx0XHUwMDI2aXRlcik7XG4gMTc5Olx0XHRcdGlmIChlcnIgXHUwMDNjIDApXG4gMTgwOlx0XHRcdFx0Z290byBibGFja2hvbGU7XG4gMTgxOlx0XG4gMTgyOlx0XHRcdGZvciAoOzspIHtcbiAxODM6XHRcdFx0XHQvKiBQcmVwYXJlIGhlYWRlciBvZiB0aGUgbmV4dCBmcmFtZSxcbiAxODQ6XHRcdFx0XHQgKiBiZWZvcmUgcHJldmlvdXMgb25lIHdlbnQgZG93bi5cbiAxODU6XHRcdFx0XHQgKi9cbiAxODY6XHRcdFx0XHRpZiAoaXRlci5mcmFnKVxuIDE4NzpcdFx0XHRcdFx0aXA2X2ZyYWdsaXN0X3ByZXBhcmUoc2tiLCBcdTAwMjZpdGVyKTtcbiAxODg6XHRcbiAxODk6XHRcdFx0XHRza2Jfc2V0X2RlbGl2ZXJ5X3RpbWUoc2tiLCB0c3RhbXAsIHRzdGFtcF90eXBlKTtcbiAxOTA6XHRcdFx0XHRlcnIgPSBvdXRwdXQobmV0LCBzaywgZGF0YSwgc2tiKTtcbiAxOTE6XHRcdFx0XHRpZiAoZXJyIHx8ICFpdGVyLmZyYWcpXG4gMTkyOlx0XHRcdFx0XHRicmVhaztcbiAxOTM6XHRcbiAxOTQ6XHRcdFx0XHRza2IgPSBpcDZfZnJhZ2xpc3RfbmV4dChcdTAwMjZpdGVyKTtcbiAxOTU6XHRcdFx0fVxuIDE5NjpcdFxuIDE5NzpcdFx0XHRrZnJlZShpdGVyLnRtcF9oZHIpO1xuIDE5ODpcdFx0XHRpZiAoIWVycilcbiAxOTk6XHRcdFx0XHRyZXR1cm4gMDtcbiAyMDA6XHRcbiAyMDE6XHRcdFx0a2ZyZWVfc2tiX2xpc3QoaXRlci5mcmFnKTtcbiAyMDI6XHRcdFx0cmV0dXJuIGVycjtcbiAyMDM6XHRcdH1cbiAyMDQ6XHRzbG93X3BhdGg6XG4gMjA1Olx0XHQvKiBUaGlzIGlzIGEgbGluZWFyaXplZCBza2J1ZmYsIHRoZSBvcmlnaW5hbCBnZW9tZXRyeSBpcyBsb3N0IGZvciB1cy5cbiAyMDY6XHRcdCAqIFRoaXMgbWF5IGFsc28gYmUgYSBjbG9uZSBza2J1ZmYsIHdlIGNvdWxkIHByZXNlcnZlIHRoZSBnZW9tZXRyeSBmb3JcbiAyMDc6XHRcdCAqIHRoZSBjb3BpZXMgYnV0IHByb2JhYmx5IG5vdCB3b3J0aCB0aGUgZWZmb3J0LlxuIDIwODpcdFx0ICovXG4gMjA5Olx0XHRpcDZfZnJhZ19pbml0KHNrYiwgaGxlbiwgbXR1LCBza2ItXHUwMDNlZGV2LVx1MDAzZW5lZWRlZF90YWlscm9vbSxcbiAyMTA6XHRcdFx0ICAgICAgTExfUkVTRVJWRURfU1BBQ0Uoc2tiLVx1MDAzZWRldiksIHByZXZoZHIsIG5leHRoZHIsIGZyYWdfaWQsXG4gMjExOlx0XHRcdCAgICAgIFx1MDAyNnN0YXRlKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNyAwODoyMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0MTc3CgkJCQkJCQlvdXRwdXQ6IDI2CgkJCQkJCQl0aG91Z2h0czogOTgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgTmV0d29ya2luZyBQYXRjaCoqCgpPa2F5LCBzbyB0aGlzIHBhdGNoIGludHJvZHVjZXMgYSBzZWNvbmQgY2FsbCB0byBgaXA2X2ZpbmRfMXN0ZnJhZ29wdCgpYCBhZnRlciBgc2tiX2NoZWNrc3VtX2hlbHAoc2tiKWAuIE15IGltbWVkaWF0ZSBjb25jZXJuIGlzIHRoZSBwb3RlbnRpYWwgZm9yIGBza2JfY2hlY2tzdW1faGVscGAgdG8gcmVhbGxvY2F0ZSB0aGUgYHNrYmAgZGF0YS4gSWYgaXQgZG9lcywgYW5kIGl0IHZlcnkgd2VsbCBtaWdodCwgdGhlbiBgcHJldmhkcmAgY291bGQgZW5kIHVwIGJlaW5nIGEgZGFuZ2xpbmcgcG9pbnRlciwgcG9pbnRpbmcgdG8gaW52YWxpZCBtZW1vcnkuIFRoaXMgaXMgYSBjbGVhciBmdW5jdGlvbmFsIGlzc3VlIHRoYXQgbmVlZHMgYWRkcmVzc2luZywgYW5kIHRoZSBwYXRjaCwgaWYgaXQgZml4ZXMgdGhpcyBpc3N1ZSBpcyB2ZXJ5IHJlbGV2YW50IHRvIG15IHdvcmsuCgpTaW5jZSB0aGlzIGZpeGVzIGEgcG90ZW50aWFsIGlzc3VlLCBJIHNob3VsZCBhbHNvIGxvb2sgYXQgdGhlIGJyb2FkZXIgcGljdHVyZS4gU3BlY2lmaWNhbGx5LCBgYnJfaXA2X2ZyYWdtZW50YCBpcyBiZWluZyBleHBvcnRlZC4gVGhhdCBtZWFucyBvdGhlciBwYXJ0cyBvZiB0aGUgc3lzdGVtIGFyZSByZWx5aW5nIG9uIGl0LCBhbmQgdW5kZXJzdGFuZGluZyBob3cgaXQmIzM5O3MgdXNlZCBpcyBjcml0aWNhbC4gTGV0JiMzOTtzIHRyYWNlIHRob3NlIGNhbGxzIGFuZCBkZXBlbmRlbmNpZXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDcgMDg6MjE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7YnJfaXA2X2ZyYWdtZW50JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2luY2x1ZGUvbGludXgvbmV0ZmlsdGVyX2lwdjYuaD01Mz1zdGF0aWMgaW5saW5lIGludCBuZl9pcDZfcm91dGUoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3QgZHN0X2VudHJ5ICoqZHN0LFxuLS1cbmluY2x1ZGUvbGludXgvbmV0ZmlsdGVyX2lwdjYuaC02NC1cbmluY2x1ZGUvbGludXgvbmV0ZmlsdGVyX2lwdjYuaDo2NTppbnQgYnJfaXA2X2ZyYWdtZW50KHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuaW5jbHVkZS9saW51eC9uZXRmaWx0ZXJfaXB2Ni5oLTY2LVx0XHQgICAgc3RydWN0IG5mX2JyaWRnZV9mcmFnX2RhdGEgKmRhdGEsXG4tLVxuaW5jbHVkZS9saW51eC9uZXRmaWx0ZXJfaXB2Ni5oLTcwLVxuaW5jbHVkZS9saW51eC9uZXRmaWx0ZXJfaXB2Ni5oOjcxOnN0YXRpYyBpbmxpbmUgaW50IG5mX2JyX2lwNl9mcmFnbWVudChzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBzb2NrICpzayxcbmluY2x1ZGUvbGludXgvbmV0ZmlsdGVyX2lwdjYuaC03Mi1cdFx0XHRcdCAgICAgc3RydWN0IHNrX2J1ZmYgKnNrYixcbi0tXG5pbmNsdWRlL2xpbnV4L25ldGZpbHRlcl9pcHY2LmgtNzgtI2lmIElTX0VOQUJMRUQoQ09ORklHX0lQVjYpXG5pbmNsdWRlL2xpbnV4L25ldGZpbHRlcl9pcHY2Lmg6Nzk6XHRyZXR1cm4gYnJfaXA2X2ZyYWdtZW50KG5ldCwgc2ssIHNrYiwgZGF0YSwgb3V0cHV0KTtcbmluY2x1ZGUvbGludXgvbmV0ZmlsdGVyX2lwdjYuaC04MC0jZWxzZVxuLS1cbm5ldC9icmlkZ2UvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19icmlkZ2UuYz0zMzc9bmZfY3RfYnJpZGdlX3JlZnJhZyhzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBjb25zdCBzdHJ1Y3QgbmZfaG9va19zdGF0ZSAqc3RhdGUsXG4tLVxubmV0L2JyaWRnZS9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2JyaWRnZS5jLTM1Mi1cdGNhc2UgaHRvbnMoRVRIX1BfSVBWNik6XG5uZXQvYnJpZGdlL25ldGZpbHRlci9uZl9jb25udHJhY2tfYnJpZGdlLmM6MzUzOlx0XHRuZl9icl9pcDZfZnJhZ21lbnQoc3RhdGUtXHUwMDNlbmV0LCBzdGF0ZS1cdTAwM2Vzaywgc2tiLCBcdTAwMjZkYXRhLCBvdXRwdXQpO1xubmV0L2JyaWRnZS9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2JyaWRnZS5jLTM1NC1cdFx0YnJlYWs7XG4tLVxubmV0L2lwdjYvbmV0ZmlsdGVyLmM9MTEwPUVYUE9SVF9TWU1CT0xfR1BMKF9fbmZfaXA2X3JvdXRlKTtcbm5ldC9pcHY2L25ldGZpbHRlci5jLTExMS1cbm5ldC9pcHY2L25ldGZpbHRlci5jOjExMjppbnQgYnJfaXA2X2ZyYWdtZW50KHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxubmV0L2lwdjYvbmV0ZmlsdGVyLmMtMTEzLVx0XHQgICAgc3RydWN0IG5mX2JyaWRnZV9mcmFnX2RhdGEgKmRhdGEsXG4tLVxubmV0L2lwdjYvbmV0ZmlsdGVyLmMtMjMzLX1cbm5ldC9pcHY2L25ldGZpbHRlci5jOjIzNDpFWFBPUlRfU1lNQk9MX0dQTChicl9pcDZfZnJhZ21lbnQpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA3IDA4OjIxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDUxMDYKCQkJCQkJCW91dHB1dDogMzAKCQkJCQkJCXRob3VnaHRzOiAxMDAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqSW52ZXN0aWdhdGluZyB0aGUgQ29uZmlndXJhdGlvbiBMYW5kc2NhcGUgZm9yIElQIEZyYWdtZW50YXRpb24gaW4gQnJpZGdlIEVudmlyb25tZW50cyoqCgpPa2F5LCBzbyBJJiMzOTttIGRpdmluZyBpbnRvIHRoZSBrZXJuZWwgY29kZSByZWxhdGVkIHRvIElQIGZyYWdtZW50YXRpb24sIHNwZWNpZmljYWxseSB3aXRoaW4gYnJpZGdlIGVudmlyb25tZW50cy4gTXkgc3RhcnRpbmcgcG9pbnQgaXMgdGhlIGBuZl9jdF9icmlkZ2VfcmVmcmFnYCBmdW5jdGlvbiwgd2hpY2ggcmVzaWRlcyBpbiBgbmV0L2JyaWRnZS9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2JyaWRnZS5jYC4gTXkgaW1tZWRpYXRlIHF1ZXN0aW9uIGlzOiB3aGF0IGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBhcmUgcmVsZXZhbnQgdG8gdGhpcyBhbmQgdGhlIGFzc29jaWF0ZWQgYGJyX2lwNl9mcmFnbWVudGAgZnVuY3Rpb25hbGl0eT8gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCYjMzk7cyBlbmFibGVkLCBvciBuZWVkcyB0byBiZSBlbmFibGVkLCB0byBtYWtlIHRoZXNlIGZlYXR1cmVzIHdvcmsgYXMgaW50ZW5kZWQuCgpgYnJfaXA2X2ZyYWdtZW50YCwgSSBzZWUsIGlzIGRlZmluZWQgd2l0aGluIGBuZXQvaXB2Ni9uZXRmaWx0ZXIuY2AuIEdpdmVuIHRoYXQsIEkgdGhpbmsgdGhlIGBuZXQvaXB2Ni9NYWtlZmlsZWAgaXMgdGhlIG5leHQgbG9naWNhbCBwbGFjZSB0byBsb29rLiBUaGlzIHNob3VsZCBwcm92aWRlIGluc2lnaHRzIGludG8gdGhlIGJ1aWxkIHByb2Nlc3MsIGRlcGVuZGVuY2llcywgYW5kIGFueSBjb25kaXRpb25hbCBjb21waWxhdGlvbiB0aGF0IGluZmx1ZW5jZXMgdGhlIGluY2x1c2lvbiBvZiB0aGlzIGZyYWdtZW50YXRpb24gc3VwcG9ydC4gVGhpcyBzaG91bGQgaWxsdW1pbmF0ZSB0aGUgbmVjZXNzYXJ5IGtlcm5lbCBjb25maWd1cmF0aW9ucy4gSSYjMzk7bGwgc3RhcnQgdGhlcmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA3IDA4OjIxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O25ldGZpbHRlci5vJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L2lwdjYvTWFrZWZpbGUmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L2lwdjYvTWFrZWZpbGU9MTg9aXB2Ni0kKENPTkZJR19YRlJNKSAmIzQzOz0geGZybTZfcG9saWN5Lm8geGZybTZfc3RhdGUubyB4ZnJtNl9pbnB1dC5vIFxcXG5uZXQvaXB2Ni9NYWtlZmlsZS0xOS1cdHhmcm02X291dHB1dC5vIHhmcm02X3Byb3RvY29sLm9cbm5ldC9pcHY2L01ha2VmaWxlOjIwOmlwdjYtJChDT05GSUdfTkVURklMVEVSKSAmIzQzOz0gbmV0ZmlsdGVyLm9cbm5ldC9pcHY2L01ha2VmaWxlLTIxLWlwdjYtJChDT05GSUdfSVBWNl9NVUxUSVBMRV9UQUJMRVMpICYjNDM7PSBmaWI2X3J1bGVzLm9cbi0tXG5uZXQvaXB2Ni9NYWtlZmlsZT01OD1pZmRlZiBDT05GSUdfR0NPVl9QUk9GSUxFX05FVEZJTFRFUlxubmV0L2lwdjYvTWFrZWZpbGU6NTk6R0NPVl9QUk9GSUxFX25ldGZpbHRlci5vIDo9IHlcbm5ldC9pcHY2L01ha2VmaWxlLTYwLWVuZGlmXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA3IDA4OjIxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDU2NDMKCQkJCQkJCW91dHB1dDogMzUKCQkJCQkJCXRob3VnaHRzOiA2OAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgbGV0JiMzOTtzIHNlZSwgbXkgaW5pdGlhbCBhc3Nlc3NtZW50IHN1Z2dlc3RzIHRoYXQgSSYjMzk7bGwgZGVmaW5pdGVseSBuZWVkIGBDT05GSUdfTkVURklMVEVSYCBhbmQgYENPTkZJR19JUFY2YCBlbmFibGVkLiBUaG9zZSBzZWVtIGxpa2Ugb2J2aW91cyBwcmVyZXF1aXNpdGVzLCBnaXZlbiB0aGUgY29udGV4dC4gQnV0LCBobW0sIEkmIzM5O20gYWxzbyBzZWVpbmcgYSByZWZlcmVuY2UgdG8gYG5mX2N0X2JyaWRnZV9yZWZyYWdgLiBOb3csIHdoZXJlIGRvZXMgdGhhdCBsaXZlPyBBaGEsIGl0IGxvb2tzIGxpa2UgaXQmIzM5O3MgdHVja2VkIGF3YXkgaW4gYG5ldC9icmlkZ2UvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19icmlkZ2UuY2AuIE9rYXksIGdvb2QgdG8ga25vdy4gQmVzdCB0byBiZSB0aG9yb3VnaCwgSSBzaG91bGQgcmVhbGx5IGNoZWNrIHRoZSBidWlsZCBjb25maWd1cmF0aW9uIGZvciB0aGF0IGRpcmVjdG9yeSBhcyB3ZWxsLCBzbyBsZXQgbWUgcXVpY2tseSBwZWVrIGF0IGBuZXQvYnJpZGdlL25ldGZpbHRlci9NYWtlZmlsZWAgdG8gbWFrZSBzdXJlIHRoZXJlIGFyZW4mIzM5O3QgYW55IG90aGVyIGRlcGVuZGVuY2llcyBvciBmbGFncyBJJiMzOTttIG1pc3NpbmcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA3IDA4OjIyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O25mX2Nvbm50cmFja19icmlkZ2UmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvYnJpZGdlL25ldGZpbHRlci9NYWtlZmlsZSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvYnJpZGdlL25ldGZpbHRlci9NYWtlZmlsZT03PW9iai0kKENPTkZJR19ORlRfQlJJREdFX1JFSkVDVCkgICYjNDM7PSBuZnRfcmVqZWN0X2JyaWRnZS5vXG4tLVxubmV0L2JyaWRnZS9uZXRmaWx0ZXIvTWFrZWZpbGUtOS0jIGNvbm5lY3Rpb24gdHJhY2tpbmdcbm5ldC9icmlkZ2UvbmV0ZmlsdGVyL01ha2VmaWxlOjEwOm9iai0kKENPTkZJR19ORl9DT05OVFJBQ0tfQlJJREdFKSAmIzQzOz0gbmZfY29ubnRyYWNrX2JyaWRnZS5vXG5uZXQvYnJpZGdlL25ldGZpbHRlci9NYWtlZmlsZS0xMS1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDcgMDg6MjI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjAxMwoJCQkJCQkJb3V0cHV0OiAzNgoJCQkJCQkJdGhvdWdodHM6IDQxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkludmVzdGlnYXRpbmcgTmV0d29yayBCcmlkZ2UgQ29ubmVjdGlvbiBUcmFja2luZyBSZXF1aXJlbWVudHMqKgoKQWxyaWdodCwgdGhlIHNpdHVhdGlvbiBjYWxscyBmb3IgYENPTkZJR19ORl9DT05OVFJBQ0tfQlJJREdFYC4gR290dGEgbWFrZSBzdXJlIHRoYXQmIzM5O3MgZW5hYmxlZCBhbmQgY29uZmlndXJlZCBjb3JyZWN0bHkuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBjcm9zcy1yZWZlcmVuY2UgdGhpcyBpbiBgbmV0L2JyaWRnZS9uZXRmaWx0ZXIvS2NvbmZpZ2AuIFRoYXQmIzM5O3MgdGhlIGxvZ2ljYWwgcGxhY2UgdG8gc3RhcnQgZGlnZ2luZyBpbnRvIHRoZSBkZXBlbmRlbmNpZXMgYW5kIG9wdGlvbnMuIEkmIzM5O2xsIG5lZWQgdG8gY29uZmlybSBpdHMgcHJlc2VuY2UsIGNoZWNrIGl0cyBpbXBsaWNhdGlvbnMgZm9yIG91ciBzcGVjaWZpYyBicmlkZ2Ugc2V0dXAsIGFuZCBtYWtlIHN1cmUgdGhlcmUgYXJlbiYjMzk7dCBhbnkgY29uZmxpY3RpbmcgY29uZmlndXJhdGlvbnMgb3IgbmVjZXNzYXJ5IGF1eGlsaWFyeSBtb2R1bGVzIHRoYXQgbmVlZCB0byBiZSBjb25zaWRlcmVkLiBJdCYjMzk7cyBhIGZ1bmRhbWVudGFsIHBpZWNlLCBzbyBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdCB0aG9yb3VnaGx5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNyAwODoyMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgTkZfQ09OTlRSQUNLX0JSSURHRSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9icmlkZ2UvbmV0ZmlsdGVyL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L2JyaWRnZS9uZXRmaWx0ZXIvS2NvbmZpZz0yNj1lbmRpZiAjIE5GX1RBQkxFU19CUklER0Vcbm5ldC9icmlkZ2UvbmV0ZmlsdGVyL0tjb25maWctMjctXG5uZXQvYnJpZGdlL25ldGZpbHRlci9LY29uZmlnOjI4OmNvbmZpZyBORl9DT05OVFJBQ0tfQlJJREdFXG5uZXQvYnJpZGdlL25ldGZpbHRlci9LY29uZmlnLTI5LVx0dHJpc3RhdGUgXCYjMzQ7SVB2NC9JUFY2IGJyaWRnZSBjb25uZWN0aW9uIHRyYWNraW5nIHN1cHBvcnRcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDcgMDg6MjI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjMzMwoJCQkJCQkJb3V0cHV0OiAzNgoJCQkJCQkJdGhvdWdodHM6IDUwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkludmVzdGlnYXRpbmcgQ29uZmlndXJhdGlvbiBEZXBlbmRlbmNpZXMqKgoKT2theSwgc28gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgdGhlIGRlcGVuZGVuY2llcyByZWxhdGVkIHRvIHRoaXMgbmV0d29ya2luZyBjb25maWd1cmF0aW9uLiBGaXJzdCwgSSYjMzk7bGwgcXVpY2tseSBzZWUgaWYgdGhlcmUgYXJlIGFueSBvdGhlciBjb25maWd1cmF0aW9uIG9wdGlvbnMgdGhhdCBqdW1wIG91dCBhcyBwb3RlbnRpYWxseSByZWxldmFudC4gU3BlY2lmaWNhbGx5LCBJJiMzOTttIHRoaW5raW5nIGBDT05GSUdfQlJJREdFX05FVEZJTFRFUmAg4oCTIHRoYXQgc291bmRzIGxpa2UgYSBzdHJvbmcgY2FuZGlkYXRlIHRvIGludmVzdGlnYXRlLiBUbyBnZXQgYSBjbGVhcmVyIHBpY3R1cmUgb2YgdGhlIHJlbGF0aW9uc2hpcHMgYW5kIGRlcGVuZGVuY2llcywgSSYjMzk7bGwgZGl2ZSBpbnRvIHRoZSBgbmV0L2JyaWRnZS9uZXRmaWx0ZXIvS2NvbmZpZ2AgZmlsZS4gSSYjMzk7bSBlc3BlY2lhbGx5IGludGVyZXN0ZWQgaW4gd2hldGhlciBgTkZfQ09OTlRSQUNLX0JSSURHRWAgaGFzIGFueSBkZXBlbmRlbmNpZXMgd2l0aGluIHRoYXQgY29udGV4dCwgYXMgY29ubmVjdGlvbiB0cmFja2luZyBpcyBvZnRlbiBhIGtleSBhc3BlY3Qgb2YgdGhlc2UgdHlwZXMgb2YgY29uZmlndXJhdGlvbnMuIFRoaXMgc2hvdWxkIGdpdmUgbWUgdGhlIGluZm9ybWF0aW9uIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyBldmVyeXRoaW5nIGZpdHMgdG9nZXRoZXIuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA3IDA4OjIyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7bmV0L2JyaWRnZS9uZXRmaWx0ZXIvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDI4LAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDIwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgMjg6XHRjb25maWcgTkZfQ09OTlRSQUNLX0JSSURHRVxuICAyOTpcdFx0dHJpc3RhdGUgXCYjMzQ7SVB2NC9JUFY2IGJyaWRnZSBjb25uZWN0aW9uIHRyYWNraW5nIHN1cHBvcnRcJiMzNDtcbiAgMzA6XHRcdGRlcGVuZHMgb24gTkZfQ09OTlRSQUNLXG4gIDMxOlx0XHRkZWZhdWx0IG5cbiAgMzI6XHRcdGhlbHBcbiAgMzM6XHRcdCAgQ29ubmVjdGlvbiB0cmFja2luZyBrZWVwcyBhIHJlY29yZCBvZiB3aGF0IHBhY2tldHMgaGF2ZSBwYXNzZWRcbiAgMzQ6XHRcdCAgdGhyb3VnaCB5b3VyIG1hY2hpbmUsIGluIG9yZGVyIHRvIGZpZ3VyZSBvdXQgaG93IHRoZXkgYXJlIHJlbGF0ZWRcbiAgMzU6XHRcdCAgaW50byBjb25uZWN0aW9ucy4gVGhpcyBpcyB1c2VkIHRvIGVuaGFuY2UgcGFja2V0IGZpbHRlcmluZyB2aWFcbiAgMzY6XHRcdCAgc3RhdGVmdWwgcG9saWNpZXMuIEVuYWJsZSB0aGlzIGlmIHlvdSB3YW50IG5hdGl2ZSB0cmFja2luZyBmcm9tXG4gIDM3Olx0XHQgIHRoZSBicmlkZ2UuIFRoaXMgcHJvdmlkZXMgYSByZXBsYWNlbWVudCBmb3IgdGhlIGBicl9uZXRmaWx0ZXImIzM5O1xuICAzODpcdFx0ICBpbmZyYXN0cnVjdHVyZS5cbiAgMzk6XHRcbiAgNDA6XHRcdCAgVG8gY29tcGlsZSBpdCBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZS4gIElmIHVuc3VyZSwgc2F5IE4uXG4gIDQxOlx0XG4gIDQyOlx0IyBvbGQgc29ja29wdCBpbnRlcmZhY2UgYW5kIGV2YWwgbG9vcFxuICA0MzpcdGNvbmZpZyBCUklER0VfTkZfRUJUQUJMRVNfTEVHQUNZXG4gIDQ0Olx0XHR0cmlzdGF0ZSBcJiMzNDtMZWdhY3kgRUJUQUJMRVMgc3VwcG9ydFwmIzM0O1xuICA0NTpcdFx0ZGVwZW5kcyBvbiBCUklER0UgXHUwMDI2XHUwMDI2IE5FVEZJTFRFUl9YVEFCTEVTX0xFR0FDWVxuICA0NjpcdFx0ZGVwZW5kcyBvbiBORVRGSUxURVJfWFRBQkxFU1xuICA0NzpcdFx0ZGVmYXVsdFx0blxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNyAwODoyMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2ODczCgkJCQkJCQlvdXRwdXQ6IDI2CgkJCQkJCQl0aG91Z2h0czogMzE1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFuYWx5c2lzIG9mIGEgUG90ZW50aWFsIElQdjYgQnJpZGdlIEZyYWdtZW50YXRpb24gQnVnKioKCk9rYXksIHNvIEkmIzM5O20gaG9uaW5nIGluIG9uIGEgcG90ZW50aWFsIHZ1bG5lcmFiaWxpdHkuIEl0IGxvb2tzIGxpa2UgdGhlIGNvcmUgY29uZmlndXJhdGlvbiBpdGVtIEkgbmVlZCB0byBwYXkgYXR0ZW50aW9uIHRvIGlzIGBDT05GSUdfTkZfQ09OTlRSQUNLX0JSSURHRWAuIE9mIGNvdXJzZSwgSSYjMzk7bGwgYWxzbyBuZWVkIHRvIGNvbnNpZGVyIGBDT05GSUdfSVBWNmAsIGBDT05GSUdfTkVURklMVEVSYCwgYENPTkZJR19CUklER0VgLCBhbmQgYENPTkZJR19ORl9DT05OVFJBQ0tgIHNpbmNlIHRoZXkgbGlrZWx5IHBsYXkgYSBzdXBwb3J0aW5nIHJvbGUuIEkgbmVlZCB0byBrZWVwIGluIG1pbmQgdGhlc2UgY29uZmlndXJhdGlvbnMuCgpTcGVjaWZpY2FsbHksIEkmIzM5O20gZ29pbmcgdG8gZm9jdXMgb24gdGhlIGBORl9DT05OVFJBQ0tfQlJJREdFYCBtb2R1bGUuIFRoZSBmdW5jdGlvbiB0aGF0IHJlYWxseSBzdGFuZHMgb3V0IGlzIGBicl9pcDZfZnJhZ21lbnRgLiBOb3csIGlzIHRoZXJlIGFueXRoaW5nIGVsc2U/IEFoLCB5ZXMsIGBuZl9jdF9icmlkZ2VfcmVmcmFnYCBjYWxscyBpdC4gU28sIHRoYXQmIzM5O3MgaW1wb3J0YW50IGNvbnRleHQuCgpMZXQgbWUgZ28gYmFjayBhbmQgZ2l2ZSBgYnJfaXA2X2ZyYWdtZW50YCBhbm90aGVyIGNsb3NlIGxvb2suIEl0IGFwcGVhcnMgdG8gY2FsbCBgaXA2X2ZpbmRfMXN0ZnJhZ29wdGAuIEFoIGhhISBJIGJlbGlldmUgSSYjMzk7dmUgcGlucG9pbnRlZCB0aGUgaXNzdWUuIFRoZSByb290IGNhdXNlIGxvb2tzIGxpa2UgYSB1c2UtYWZ0ZXItZnJlZSBvciBhIHJlbGF0ZWQgZGFuZ2xpbmcgcG9pbnRlciBpc3N1ZS4gTXkgaHlwb3RoZXNpcyBpcyB0aGF0IGBwcmV2aGRyYCBiZWNvbWVzIGludmFsaWQgYWZ0ZXIgYHNrYl9jaGVja3N1bV9oZWxwKHNrYilgIGlzIGNhbGxlZC4gQW5kLCBvZiBjb3Vyc2UsIGBza2JfY2hlY2tzdW1faGVscGAgaXMga25vd24gdG8gcG90ZW50aWFsbHkgcmVhbGxvY2F0ZSB0aGUgYHNrYmAgZGF0YSwgd2hpY2ggd291bGQgaW52YWxpZGF0ZSB0aGUgYHByZXZoZHJgIHBvaW50ZXIuIFRoaXMgc2VlbXMgaW5jcmVkaWJseSBwcm9taXNpbmcgZm9yIGZ1enppbmcuCgpMZXQgbWUganVzdCBkb3VibGUtY2hlY2sgb25lIGxhc3QgdGltZSB0aGF0IGBicl9pcDZfZnJhZ21lbnRgIGlzIHRoZSBvbmx5IGZ1bmN0aW9uIEkgbmVlZCB0byBiZSBjb25jZXJuZWQgd2l0aCBpbiB0aGlzIGNvbnRleHQuIFllcywgaXQgYXBwZWFycyB0byBiZSB0aGUgcHJpbWFyeSBmdW5jdGlvbiBiZWluZyBtb2RpZmllZC4gTXkgZm9jdXMgc3ltYm9scyB3aWxsIGJlIGBicl9pcDZfZnJhZ21lbnRgIGFuZCBgbmZfY3RfYnJpZGdlX3JlZnJhZ2AuCgpJIHNob3VsZCBiZSBhYmxlIHRvIGdldCBhIGxvb2sgYXQgYGJyX2lwNl9mcmFnbWVudGAgZnJvbSBgbmV0L2lwdjYvbmV0ZmlsdGVyLmNgLiBJIHNob3VsZCBjaGVjayB0aGF0IGl0JiMzOTtzIGV4cG9ydGVkIGFuZCBjaGVjayB3aGVyZSBlbHNlIGl0IG1heSBiZSBjYWxsZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA3IDA4OjIyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2JyX2lwNl9mcmFnbWVudCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0OyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtpbmNsdWRlL2xpbnV4L25ldGZpbHRlcl9pcHY2Lmg9NTM9c3RhdGljIGlubGluZSBpbnQgbmZfaXA2X3JvdXRlKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IGRzdF9lbnRyeSAqKmRzdCxcbi0tXG5pbmNsdWRlL2xpbnV4L25ldGZpbHRlcl9pcHY2LmgtNjQtXG5pbmNsdWRlL2xpbnV4L25ldGZpbHRlcl9pcHY2Lmg6NjU6aW50IGJyX2lwNl9mcmFnbWVudChzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX2J1ZmYgKnNrYixcbmluY2x1ZGUvbGludXgvbmV0ZmlsdGVyX2lwdjYuaC02Ni1cdFx0ICAgIHN0cnVjdCBuZl9icmlkZ2VfZnJhZ19kYXRhICpkYXRhLFxuLS1cbmluY2x1ZGUvbGludXgvbmV0ZmlsdGVyX2lwdjYuaC03MC1cbmluY2x1ZGUvbGludXgvbmV0ZmlsdGVyX2lwdjYuaDo3MTpzdGF0aWMgaW5saW5lIGludCBuZl9icl9pcDZfZnJhZ21lbnQoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3Qgc29jayAqc2ssXG5pbmNsdWRlL2xpbnV4L25ldGZpbHRlcl9pcHY2LmgtNzItXHRcdFx0XHQgICAgIHN0cnVjdCBza19idWZmICpza2IsXG4tLVxuaW5jbHVkZS9saW51eC9uZXRmaWx0ZXJfaXB2Ni5oLTc4LSNpZiBJU19FTkFCTEVEKENPTkZJR19JUFY2KVxuaW5jbHVkZS9saW51eC9uZXRmaWx0ZXJfaXB2Ni5oOjc5Olx0cmV0dXJuIGJyX2lwNl9mcmFnbWVudChuZXQsIHNrLCBza2IsIGRhdGEsIG91dHB1dCk7XG5pbmNsdWRlL2xpbnV4L25ldGZpbHRlcl9pcHY2LmgtODAtI2Vsc2Vcbi0tXG5uZXQvYnJpZGdlL25ldGZpbHRlci9uZl9jb25udHJhY2tfYnJpZGdlLmM9MzM3PW5mX2N0X2JyaWRnZV9yZWZyYWcoc3RydWN0IHNrX2J1ZmYgKnNrYiwgY29uc3Qgc3RydWN0IG5mX2hvb2tfc3RhdGUgKnN0YXRlLFxuLS1cbm5ldC9icmlkZ2UvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19icmlkZ2UuYy0zNTItXHRjYXNlIGh0b25zKEVUSF9QX0lQVjYpOlxubmV0L2JyaWRnZS9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2JyaWRnZS5jOjM1MzpcdFx0bmZfYnJfaXA2X2ZyYWdtZW50KHN0YXRlLVx1MDAzZW5ldCwgc3RhdGUtXHUwMDNlc2ssIHNrYiwgXHUwMDI2ZGF0YSwgb3V0cHV0KTtcbm5ldC9icmlkZ2UvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19icmlkZ2UuYy0zNTQtXHRcdGJyZWFrO1xuLS1cbm5ldC9pcHY2L25ldGZpbHRlci5jPTExMD1FWFBPUlRfU1lNQk9MX0dQTChfX25mX2lwNl9yb3V0ZSk7XG5uZXQvaXB2Ni9uZXRmaWx0ZXIuYy0xMTEtXG5uZXQvaXB2Ni9uZXRmaWx0ZXIuYzoxMTI6aW50IGJyX2lwNl9mcmFnbWVudChzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX2J1ZmYgKnNrYixcbm5ldC9pcHY2L25ldGZpbHRlci5jLTExMy1cdFx0ICAgIHN0cnVjdCBuZl9icmlkZ2VfZnJhZ19kYXRhICpkYXRhLFxuLS1cbm5ldC9pcHY2L25ldGZpbHRlci5jLTIzMy19XG5uZXQvaXB2Ni9uZXRmaWx0ZXIuYzoyMzQ6RVhQT1JUX1NZTUJPTF9HUEwoYnJfaXA2X2ZyYWdtZW50KTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDcgMDg6MjM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogODI1OAoJCQkJCQkJb3V0cHV0OiA0NAoJCQkJCQkJdGhvdWdodHM6IDc2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHVuZGVyc3RhbmRpbmcsIGZvcm1hdHRlZCBhcyByZXF1ZXN0ZWQ6CgoqKkRlY29uc3RydWN0aW5nIHRoZSBDb25udHJhY2sgQnJpZGdlIFJlLWZyYWdtZW50YXRpb24gTG9naWMqKgoKQWxyaWdodCwgc28gSSBuZWVkIHRvIGRpZyBpbnRvIGhvdyByZS1mcmFnbWVudGF0aW9uIGlzIGhhbmRsZWQgd2l0aGluIHRoZSBDb25udHJhY2sgYnJpZGdlIGNvbnRleHQuIFRoZSBjb2RlIHBhdGggc3VnZ2VzdHMgdGhhdCBgbmZfY3RfYnJpZGdlX3JlZnJhZ2AgaXMgY2FsbGVkIGV4Y2x1c2l2ZWx5IHRocm91Z2ggYG5mX2JyX2lwNl9mcmFnbWVudGAuIFRoYXQgbWVhbnMgdGhlIGBORl9DT05OVFJBQ0tfQlJJREdFYCBjb25maWd1cmF0aW9uIG9wdGlvbiBpcyB0aGUgY3J1Y2lhbCBwaWVjZSBoZXJlLiBJdCYjMzk7cyB0aGUgZW5hYmxpbmcgY29uZGl0aW9uLgoKTm93LCB0byBnZXQgYSBoYW5kbGUgb24gd2hhdCYjMzk7cyBhY3R1YWxseSBoYXBwZW5pbmcsIEkgbmVlZCB0byBqdW1wIGludG8gdGhlIGBuZl9jdF9icmlkZ2VfcmVmcmFnYCBmdW5jdGlvbiBpdHNlbGYuIEkmIzM5O2xsIGZpbmQgaXQgaW4gYG5ldC9icmlkZ2UvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19icmlkZ2UuY2AuIExldCYjMzk7cyBzZWUgd2hhdCB0aGUgaW1wbGVtZW50YXRpb24gbG9va3MgbGlrZSBhbmQgaG93IGl0JiMzOTtzIG9yY2hlc3RyYXRpbmcgdGhlc2UgZnJhZ21lbnRzLiBJIGV4cGVjdCBpdCYjMzk7bGwgYmUgbG9va2luZyBhdCB0aGUgY29ubmVjdGlvbiB0cmFja2luZyBlbnRyaWVzIGFuZCBvcmNoZXN0cmF0aW5nIHRoZSByZWFzc2VtYmx5IGJhc2VkIG9uIHRoZSBicmlkZ2UmIzM5O3MgaW52b2x2ZW1lbnQuIE15IGluaXRpYWwgYXNzdW1wdGlvbiBpcyB0aGF0IGl0JiMzOTtsbCBpbnZvbHZlIHNvbWUgY2FyZWZ1bCBtYW5hZ2VtZW50IG9mIGZyYWdtZW50IGlkZW50aWZpY2F0aW9uIGFuZCByZWFzc2VtYmx5IG1ldGFkYXRhLiBMZXQmIzM5O3Mgc2VlIGhvdyB0aGV5IGRvIGl0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNyAwODoyMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O25ldC9icmlkZ2UvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19icmlkZ2UuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDMzNywKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA1MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgMzM3Olx0bmZfY3RfYnJpZGdlX3JlZnJhZyhzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBjb25zdCBzdHJ1Y3QgbmZfaG9va19zdGF0ZSAqc3RhdGUsXG4gMzM4Olx0XHRcdCAgICBpbnQgKCpvdXRwdXQpKHN0cnVjdCBuZXQgKiwgc3RydWN0IHNvY2sgKnNrLFxuIDMzOTpcdFx0XHRcdFx0ICBjb25zdCBzdHJ1Y3QgbmZfYnJpZGdlX2ZyYWdfZGF0YSAqZGF0YSxcbiAzNDA6XHRcdFx0XHRcdCAgc3RydWN0IHNrX2J1ZmYgKikpXG4gMzQxOlx0e1xuIDM0MjpcdFx0c3RydWN0IG5mX2JyaWRnZV9mcmFnX2RhdGEgZGF0YTtcbiAzNDM6XHRcbiAzNDQ6XHRcdGlmICghQlJfSU5QVVRfU0tCX0NCKHNrYiktXHUwMDNlZnJhZ19tYXhfc2l6ZSlcbiAzNDU6XHRcdFx0cmV0dXJuIE5GX0FDQ0VQVDtcbiAzNDY6XHRcbiAzNDc6XHRcdG5mX2N0X2JyaWRnZV9mcmFnX3NhdmUoc2tiLCBcdTAwMjZkYXRhKTtcbiAzNDg6XHRcdHN3aXRjaCAoc2tiLVx1MDAzZXByb3RvY29sKSB7XG4gMzQ5Olx0XHRjYXNlIGh0b25zKEVUSF9QX0lQKTpcbiAzNTA6XHRcdFx0bmZfYnJfaXBfZnJhZ21lbnQoc3RhdGUtXHUwMDNlbmV0LCBzdGF0ZS1cdTAwM2Vzaywgc2tiLCBcdTAwMjZkYXRhLCBvdXRwdXQpO1xuIDM1MTpcdFx0XHRicmVhaztcbiAzNTI6XHRcdGNhc2UgaHRvbnMoRVRIX1BfSVBWNik6XG4gMzUzOlx0XHRcdG5mX2JyX2lwNl9mcmFnbWVudChzdGF0ZS1cdTAwM2VuZXQsIHN0YXRlLVx1MDAzZXNrLCBza2IsIFx1MDAyNmRhdGEsIG91dHB1dCk7XG4gMzU0Olx0XHRcdGJyZWFrO1xuIDM1NTpcdFx0ZGVmYXVsdDpcbiAzNTY6XHRcdFx0V0FSTl9PTl9PTkNFKDEpO1xuIDM1NzpcdFx0XHRyZXR1cm4gTkZfRFJPUDtcbiAzNTg6XHRcdH1cbiAzNTk6XHRcbiAzNjA6XHRcdHJldHVybiBORl9TVE9MRU47XG4gMzYxOlx0fVxuIDM2MjpcdFxuIDM2MzpcdC8qIEFjdHVhbGx5IG9ubHkgc2xvdyBwYXRoIHJlZnJhZ21lbnRhdGlvbiBuZWVkcyB0aGlzLiAqL1xuIDM2NDpcdHN0YXRpYyBpbnQgbmZfY3RfYnJpZGdlX2ZyYWdfcmVzdG9yZShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuIDM2NTpcdFx0XHRcdFx0ICAgICBjb25zdCBzdHJ1Y3QgbmZfYnJpZGdlX2ZyYWdfZGF0YSAqZGF0YSlcbiAzNjY6XHR7XG4gMzY3Olx0XHRpbnQgZXJyO1xuIDM2ODpcdFxuIDM2OTpcdFx0ZXJyID0gc2tiX2Nvd19oZWFkKHNrYiwgRVRIX0hMRU4pO1xuIDM3MDpcdFx0aWYgKGVycikge1xuIDM3MTpcdFx0XHRrZnJlZV9za2Ioc2tiKTtcbiAzNzI6XHRcdFx0cmV0dXJuIC1FTk9NRU07XG4gMzczOlx0XHR9XG4gMzc0Olx0XHRpZiAoZGF0YS1cdTAwM2V2bGFuX3ByZXNlbnQpXG4gMzc1Olx0XHRcdF9fdmxhbl9od2FjY2VsX3B1dF90YWcoc2tiLCBkYXRhLVx1MDAzZXZsYW5fcHJvdG8sIGRhdGEtXHUwMDNldmxhbl90Y2kpO1xuIDM3NjpcdFx0ZWxzZSBpZiAoc2tiX3ZsYW5fdGFnX3ByZXNlbnQoc2tiKSlcbiAzNzc6XHRcdFx0X192bGFuX2h3YWNjZWxfY2xlYXJfdGFnKHNrYik7XG4gMzc4Olx0XG4gMzc5Olx0XHRza2JfY29weV90b19saW5lYXJfZGF0YV9vZmZzZXQoc2tiLCAtRVRIX0hMRU4sIGRhdGEtXHUwMDNlbWFjLCBFVEhfSExFTik7XG4gMzgwOlx0XHRza2JfcmVzZXRfbWFjX2hlYWRlcihza2IpO1xuIDM4MTpcdFxuIDM4MjpcdFx0cmV0dXJuIDA7XG4gMzgzOlx0fVxuIDM4NDpcdFxuIDM4NTpcdHN0YXRpYyBpbnQgbmZfY3RfYnJpZGdlX3JlZnJhZ19wb3N0KHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHNvY2sgKnNrLFxuIDM4NjpcdFx0XHRcdFx0ICAgIGNvbnN0IHN0cnVjdCBuZl9icmlkZ2VfZnJhZ19kYXRhICpkYXRhLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNyAwODoyMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA5NDM3CgkJCQkJCQlvdXRwdXQ6IDE1MwoJCQkJCQkJdGhvdWdodHM6IDI0NwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBc3Nlc3NtZW50IG9mIHRoZSBJUHY2IEJyaWRnZSBOZXRmaWx0ZXIgUGF0Y2gqKgoKT2theSwgc28gdGhpcyBwYXRjaCBpcyBhZGRyZXNzaW5nIGEgcHJldHR5IG5hc3R5IHBvdGVudGlhbCBidWcgd2l0aGluIGBicl9pcDZfZnJhZ21lbnRgLiBJdCBzZWVtcyBsaWtlIHRoZSBgcHJldmhkcmAgcG9pbnRlciwgdXNlZCB3aXRoaW4gdGhlIElQdjYgZnJhZ21lbnRhdGlvbiBsb2dpYywgY2FuIGJlY29tZSBkYW5nbGluZyBpZiBgc2tiX2NoZWNrc3VtX2hlbHBgIGRlY2lkZXMgdG8gcmVhbGxvY2F0ZSB0aGUgYHNrYmAmIzM5O3MgZGF0YSBidWZmZXIuIFRoYXQmIzM5O3MgYSBjbGFzc2ljIHJlY2lwZSBmb3IgYSB1c2UtYWZ0ZXItZnJlZSBvciwgZXZlbiB3b3JzZSwgbWVtb3J5IGNvcnJ1cHRpb24sIGFuZCB3ZSBhbGwga25vdyBob3cgdGhvc2UgY2FuIGJlIGEgbmlnaHRtYXJlIHRvIGRlYnVnLgoKVGhlIGZpeCBpdHNlbGYgYXBwZWFycyBzdHJhaWdodGZvcndhcmQg4oCTIGNhbGwgYGlwNl9maW5kXzFzdGZyYWdvcHRgIGFnYWluIGFmdGVyIHRoZSBwb3RlbnRpYWwgcmVhbGxvY2F0aW9uIHRvIGVuc3VyZSBgcHJldmhkcmAgaXMgcG9pbnRpbmcgYXQgdmFsaWQgbWVtb3J5LiBGdW5jdGlvbmFsbHksIHRoaXMgc2VlbXMgbGlrZSBhIHNvbGlkIGFwcHJvYWNoIHRvIG1pdGlnYXRlIHRoZSByaXNrLiBUaGlzIGFmZmVjdHMgY29kZSB3aXRoaW4gdGhlIGJyaWRnZSBuZXRmaWx0ZXIgY29udGV4dCwgc3BlY2lmaWNhbGx5IGBicl9pcDZfZnJhZ21lbnRgIGFuZCBgbmZfY3RfYnJpZGdlX3JlZnJhZ2AsIHdoaWNoIEkmIzM5O2xsIGJlIGtlZXBpbmcgYSBjbG9zZSBleWUgb24uCgpHaXZlbiB0aGUgcG90ZW50aWFsIHNldmVyaXR5IG9mIGEgdXNlLWFmdGVyLWZyZWUgaW4gbmV0d29yayBjb2RlLCBhbmQgdGhlIGZ1bmN0aW9uYWwgbmF0dXJlIG9mIHRoaXMgY2hhbmdlLCBJJiMzOTttIGFic29sdXRlbHkgZ29pbmcgdG8gcmVjb21tZW5kIGZ1enppbmcgdGhpcy4gV2UgbmVlZCB0byBiZSBhYnNvbHV0ZWx5IGNlcnRhaW4gdGhpcyBmaXggd29ya3MgYW5kIGRvZXNuJiMzOTt0IGludHJvZHVjZSBhbnkgcmVncmVzc2lvbnMgb3IgbmV3IHZ1bG5lcmFiaWxpdGllcy4gVGhlIHJlbGV2YW50IGNvbmZpZ3VyYXRpb24gb3B0aW9ucywgYE5GX0NPTk5UUkFDS19CUklER0VgLCBgQlJJREdFYCwgYElQVjZgLCBhbmQgYE5FVEZJTFRFUmAsIHdpbGwgYmUgZW5hYmxlZCBmb3IgdGhlIGZ1enppbmcgcnVucy4KCkFscmlnaHQsIHRpbWUgdG8gc2V0IHRoZSBmdXp6aW5nIHByb2Nlc3MgaW4gbW90aW9uIHVzaW5nIHRoZSBzZXQtcmVzdWx0cyB0b29sLiBMZXQmIzM5O3Mgc2VlIHdoYXQgd2UgY2FuIGRpZyB1cC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDcgMDg6MjM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05GX0NPTk5UUkFDS19CUklER0UmIzM0OywKICAgICYjMzQ7QlJJREdFJiMzNDssCiAgICAmIzM0O0lQVjYmIzM0OywKICAgICYjMzQ7TkVURklMVEVSJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7YnJfaXA2X2ZyYWdtZW50JiMzNDssCiAgICAmIzM0O25mX2N0X2JyaWRnZV9yZWZyYWcmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSBwb3RlbnRpYWwgdXNlLWFmdGVyLWZyZWUgaW4gYGJyX2lwNl9mcmFnbWVudGAgYnkgcmUtZXZhbHVhdGluZyB0aGUgYHByZXZoZHJgIHBvaW50ZXIgYWZ0ZXIgYHNrYl9jaGVja3N1bV9oZWxwYCB3aGljaCBtYXkgcmVhbGxvY2F0ZSB0aGUgc2tiIGRhdGEuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgSVB2NiBicmlkZ2UgbmV0ZmlsdGVyIGNvZGUgdGhhdCBzaG91bGQgYmUgZnV6emVkIHRvIGVuc3VyZSB0aGUgZml4IGlzIGNvcnJlY3QgYW5kIGRvZXNuJiMzOTt0IGludHJvZHVjZSBuZXcgaXNzdWVzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtORl9DT05OVFJBQ0tfQlJJREdFJiMzNDssCiAgICAmIzM0O0JSSURHRSYjMzQ7LAogICAgJiMzNDtJUFY2JiMzNDssCiAgICAmIzM0O05FVEZJTFRFUiYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2JyX2lwNl9mcmFnbWVudCYjMzQ7LAogICAgJiMzNDtuZl9jdF9icmlkZ2VfcmVmcmFnJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgcG90ZW50aWFsIHVzZS1hZnRlci1mcmVlIGluIGBicl9pcDZfZnJhZ21lbnRgIGJ5IHJlLWV2YWx1YXRpbmcgdGhlIGBwcmV2aGRyYCBwb2ludGVyIGFmdGVyIGBza2JfY2hlY2tzdW1faGVscGAgd2hpY2ggbWF5IHJlYWxsb2NhdGUgdGhlIHNrYiBkYXRhLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIElQdjYgYnJpZGdlIG5ldGZpbHRlciBjb2RlIHRoYXQgc2hvdWxkIGJlIGZ1enplZCB0byBlbnN1cmUgdGhlIGZpeCBpcyBjb3JyZWN0IGFuZCBkb2VzbiYjMzk7dCBpbnRyb2R1Y2UgbmV3IGlzc3Vlcy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA3VDA4OjIwOjMxLjUzMDc2MTc2NloiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE4Nzk2NDk5MTY2NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJORl9DT05OVFJBQ0tfQlJJREdFXCIsXG4gICAgXCJCUklER0VcIixcbiAgICBcIklQVjZcIixcbiAgICBcIk5FVEZJTFRFUlwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImJyX2lwNl9mcmFnbWVudFwiLFxuICAgIFwibmZfY3RfYnJpZGdlX3JlZnJhZ1wiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgcG90ZW50aWFsIHVzZS1hZnRlci1mcmVlIGluIGBicl9pcDZfZnJhZ21lbnRgIGJ5IHJlLWV2YWx1YXRpbmcgdGhlIGBwcmV2aGRyYCBwb2ludGVyIGFmdGVyIGBza2JfY2hlY2tzdW1faGVscGAgd2hpY2ggbWF5IHJlYWxsb2NhdGUgdGhlIHNrYiBkYXRhLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIElQdjYgYnJpZGdlIG5ldGZpbHRlciBjb2RlIHRoYXQgc2hvdWxkIGJlIGZ1enplZCB0byBlbnN1cmUgdGhlIGZpeCBpcyBjb3JyZWN0IGFuZCBkb2Vzbid0IGludHJvZHVjZSBuZXcgaXNzdWVzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wN1QwODoyMDozMS41MzA3Njc1MzZaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjgzMzI0Njk4MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDM2OTk3N2E5Yjg2ZDQwNThkYzJhYjg3MzJmNDFiZDJiMjY2ZGZjZmNcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFR1ZSBKdWwgNyAwODoyMDoyOSAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9uZXQvaXB2Ni9uZXRmaWx0ZXIuYyBiL25ldC9pcHY2L25ldGZpbHRlci5jXFxuaW5kZXggNmQ4MGY4NWU1NWZhN2YuLjU0Nzg3OWRhOTUzMjUxIDEwMDY0NFxcbi0tLSBhL25ldC9pcHY2L25ldGZpbHRlci5jXFxuKysrIGIvbmV0L2lwdjYvbmV0ZmlsdGVyLmNcXG5AQCAtMTQ3LDYgKzE0NywxMCBAQCBpbnQgYnJfaXA2X2ZyYWdtZW50KHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbiBcXHQgICAgKGVyciA9IHNrYl9jaGVja3N1bV9oZWxwKHNrYikpKVxcbiBcXHRcXHRnb3RvIGJsYWNraG9sZTtcXG4gXFxuK1xcdGVyciA9IGlwNl9maW5kXzFzdGZyYWdvcHQoc2tiLCBcXHUwMDI2cHJldmhkcik7XFxuK1xcdGlmIChlcnIgXFx1MDAzYyAwKVxcbitcXHRcXHRnb3RvIGJsYWNraG9sZTtcXG4rXFxuIFxcdGhyb29tID0gTExfUkVTRVJWRURfU1BBQ0Uoc2tiLVxcdTAwM2VkZXYpO1xcbiBcXHRpZiAoc2tiX2hhc19mcmFnX2xpc3Qoc2tiKSkge1xcbiBcXHRcXHR1bnNpZ25lZCBpbnQgZmlyc3RfbGVuID0gc2tiX3BhZ2VsZW4oc2tiKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDdUMDg6MjA6MzIuMzY1MDc5NzI3WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxODcxMzA2NTc1NDYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTkZfQ09OTlRSQUNLX0JSSURHRVwiLFxuICAgIFwiQlJJREdFXCIsXG4gICAgXCJJUFY2XCIsXG4gICAgXCJORVRGSUxURVJcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJicl9pcDZfZnJhZ21lbnRcIixcbiAgICBcIm5mX2N0X2JyaWRnZV9yZWZyYWdcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIHBvdGVudGlhbCB1c2UtYWZ0ZXItZnJlZSBpbiBgYnJfaXA2X2ZyYWdtZW50YCBieSByZS1ldmFsdWF0aW5nIHRoZSBgcHJldmhkcmAgcG9pbnRlciBhZnRlciBgc2tiX2NoZWNrc3VtX2hlbHBgIHdoaWNoIG1heSByZWFsbG9jYXRlIHRoZSBza2IgZGF0YS4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBJUHY2IGJyaWRnZSBuZXRmaWx0ZXIgY29kZSB0aGF0IHNob3VsZCBiZSBmdXp6ZWQgdG8gZW5zdXJlIHRoZSBmaXggaXMgY29ycmVjdCBhbmQgZG9lc24ndCBpbnRyb2R1Y2UgbmV3IGlzc3Vlcy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdFxuICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LFxuICAgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCAzNjk5NzdhOWI4NmQ0MDU4ZGMyYWI4NzMyZjQxYmQyYjI2NmRmY2ZjXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFR1ZSBKdWwgNyAwODoyMDoyOSAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL25ldC9pcHY2L25ldGZpbHRlci5jIGIvbmV0L2lwdjYvbmV0ZmlsdGVyLmNcbmluZGV4IDZkODBmODVlNTVmYTdmLi41NDc4NzlkYTk1MzI1MSAxMDA2NDRcbi0tLSBhL25ldC9pcHY2L25ldGZpbHRlci5jXG4rKysgYi9uZXQvaXB2Ni9uZXRmaWx0ZXIuY1xuQEAgLTE0Nyw2ICsxNDcsMTAgQEAgaW50IGJyX2lwNl9mcmFnbWVudChzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX2J1ZmYgKnNrYixcbiBcdCAgICAoZXJyID0gc2tiX2NoZWNrc3VtX2hlbHAoc2tiKSkpXG4gXHRcdGdvdG8gYmxhY2tob2xlO1xuIFxuK1x0ZXJyID0gaXA2X2ZpbmRfMXN0ZnJhZ29wdChza2IsIFx1MDAyNnByZXZoZHIpO1xuK1x0aWYgKGVyciBcdTAwM2MgMClcbitcdFx0Z290byBibGFja2hvbGU7XG4rXG4gXHRocm9vbSA9IExMX1JFU0VSVkVEX1NQQUNFKHNrYi1cdTAwM2VkZXYpO1xuIFx0aWYgKHNrYl9oYXNfZnJhZ19saXN0KHNrYikpIHtcbiBcdFx0dW5zaWduZWQgaW50IGZpcnN0X2xlbiA9IHNrYl9wYWdlbGVuKHNrYik7XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wN1QwODoyMDozMi4zNjUwODE0ODdaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0OTA5ODEzODgyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIEtlcm5lbCBQYXRjaCBpbiBJUHY2IE5ldGZpbHRlcioqXG5cbk9rYXksIHNvIEkndmUgZ290IHRoaXMgcGF0Y2ggaGVyZSB0aGF0J3MgcG9raW5nIGFyb3VuZCBpbiBgbmV0L2lwdjYvbmV0ZmlsdGVyLmNgLiBTcGVjaWZpY2FsbHksIGl0IHNlZW1zIHRvIGJlIGFkZGluZyBhIGNhbGwgdG8gYGlwNl9maW5kXzFzdGZyYWdvcHQoc2tiLCBcdTAwMjZwcmV2aGRyKWAgd2l0aGluIHRoZSBgYnJfaXA2X2ZyYWdtZW50YCBmdW5jdGlvbi4gQWxyaWdodCwgdGhhdCdzIGludGVyZXN0aW5nLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aHkgdGhleSdyZSBhZGRpbmcgdGhpcywgd2hhdCBgaXA2X2ZpbmRfMXN0ZnJhZ29wdGAgKmRvZXMqIGluIHRoaXMgY29udGV4dCwgYW5kIG1vc3QgaW1wb3J0YW50bHksIGhvdyB0aGlzIGltcGFjdHMgdGhlIGJlaGF2aW9yIG9mIGBicl9pcDZfZnJhZ21lbnRgLiBNeSBpbml0aWFsIGh1bmNoIGlzIHRoaXMgcHJvYmFibHkgaGFzIHNvbWV0aGluZyB0byBkbyB3aXRoIGhhbmRsaW5nIElQdjYgZnJhZ21lbnRhdGlvbiBhbmQgb3B0aW9ucyB3aXRoaW4gdGhlIGJyaWRnaW5nIGNvbnRleHQsIHdoaWNoLCBvZiBjb3Vyc2UsIGlzIGEgcG90ZW50aWFsbHkgY29tcGxleCBpbnRlcmFjdGlvbi4gU28sIGxldCdzIGRpdmUgaW50byBgYnJfaXA2X2ZyYWdtZW50YCBpdHNlbGYgd2l0aGluIGBuZXQvaXB2Ni9uZXRmaWx0ZXIuY2AgYW5kIGZpZ3VyZSBvdXQgd2hhdCdzIGdvaW5nIG9uLiBJIG5lZWQgdG8gc2VlIHRoZSBsb2dpYyBhcm91bmQgdGhhdCBjYWxsIHNpdGUgdG8gZnVsbHkgZ3Jhc3AgdGhlIHJhbWlmaWNhdGlvbnMuIExldCdzIGdldCB0byB0aGUgY29kZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTg3NSwiT3V0cHV0VG9rZW5zIjozNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjc3LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDdUMDg6MjA6MzcuMjc0ODk3OTQ5WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjc1MzM1MjE5MiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJicl9pcDZfZnJhZ21lbnRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L2lwdjYvbmV0ZmlsdGVyLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L2lwdjYvbmV0ZmlsdGVyLmM9MTEwPUVYUE9SVF9TWU1CT0xfR1BMKF9fbmZfaXA2X3JvdXRlKTtcXG5uZXQvaXB2Ni9uZXRmaWx0ZXIuYy0xMTEtXFxubmV0L2lwdjYvbmV0ZmlsdGVyLmM6MTEyOmludCBicl9pcDZfZnJhZ21lbnQoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBza19idWZmICpza2IsXFxubmV0L2lwdjYvbmV0ZmlsdGVyLmMtMTEzLVxcdFxcdCAgICBzdHJ1Y3QgbmZfYnJpZGdlX2ZyYWdfZGF0YSAqZGF0YSxcXG4tLVxcbm5ldC9pcHY2L25ldGZpbHRlci5jLTIzMy19XFxubmV0L2lwdjYvbmV0ZmlsdGVyLmM6MjM0OkVYUE9SVF9TWU1CT0xfR1BMKGJyX2lwNl9mcmFnbWVudCk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA3VDA4OjIwOjM4LjAyODI1Nzk5MVoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMxODEwODkwMTEzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgc3VtbWFyeSwgdGFraW5nIG9uIHRoZSBwZXJzb25hIHlvdSByZXF1ZXN0ZWQ6XG5cbioqRGVjb25zdHJ1Y3RpbmcgdGhlIElQdjYgRnJhZ21lbnRhdGlvbiBQYXRjaCoqXG5cbkFscmlnaHQsIGxldCdzIGRpdmUgaW50byB0aGlzLiBUaGUgZGVzY3JpcHRpb24gc2F5cyB0aGUgcGF0Y2ggdGFyZ2V0cyBgYnJfaXA2X2ZyYWdtZW50YCB3aXRoaW4gYG5ldC9pcHY2L25ldGZpbHRlci5jYC4gVGhhdCdzIHRoZSBrZXkuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgdGhpcyBmdW5jdGlvbiBkb2VzIGFuZCB3aGF0IHNwZWNpZmljIG1vZGlmaWNhdGlvbnMgd2VyZSBtYWRlLiBUaGUgY29tbWVudCBzdWdnZXN0cyB0aGVyZSdzIGEgbmV0d29ya2luZyBpc3N1ZSB0aGF0J3MgYmVpbmcgYWRkcmVzc2VkLCBzcGVjaWZpY2FsbHkgcmVsYXRlZCB0byB0aGUgYnJpZGdpbmcgb2YgSVB2NiBmcmFnbWVudHMuIFRoaXMgbmFycm93cyB0aGUgc2NvcGUuIFNvLCBJIG5lZWQgdG8gb3BlbiB0aGUgcmVsZXZhbnQgZmlsZSBhbmQgc3RhcnQgdHJhY2luZyB0aHJvdWdoIHRoYXQgZnVuY3Rpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIzODcsIk91dHB1dFRva2VucyI6MzgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wN1QwODoyMTowOS44MzkxNTAyNjRaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNDYwMTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwibmV0L2lwdjYvbmV0ZmlsdGVyLmNcIixcbiAgXCJGaXJzdExpbmVcIjogMTEyLFxuICBcIkxpbmVDb3VudFwiOiAxMDBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDExMjpcXHRpbnQgYnJfaXA2X2ZyYWdtZW50KHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbiAxMTM6XFx0XFx0XFx0ICAgIHN0cnVjdCBuZl9icmlkZ2VfZnJhZ19kYXRhICpkYXRhLFxcbiAxMTQ6XFx0XFx0XFx0ICAgIGludCAoKm91dHB1dCkoc3RydWN0IG5ldCAqLCBzdHJ1Y3Qgc29jayAqc2ssXFxuIDExNTpcXHRcXHRcXHRcXHRcXHQgIGNvbnN0IHN0cnVjdCBuZl9icmlkZ2VfZnJhZ19kYXRhICpkYXRhLFxcbiAxMTY6XFx0XFx0XFx0XFx0XFx0ICBzdHJ1Y3Qgc2tfYnVmZiAqKSlcXG4gMTE3OlxcdHtcXG4gMTE4OlxcdFxcdGludCBmcmFnX21heF9zaXplID0gQlJfSU5QVVRfU0tCX0NCKHNrYiktXFx1MDAzZWZyYWdfbWF4X3NpemU7XFxuIDExOTpcXHRcXHR1OCB0c3RhbXBfdHlwZSA9IHNrYi1cXHUwMDNldHN0YW1wX3R5cGU7XFxuIDEyMDpcXHRcXHRrdGltZV90IHRzdGFtcCA9IHNrYi1cXHUwMDNldHN0YW1wO1xcbiAxMjE6XFx0XFx0c3RydWN0IGlwNl9mcmFnX3N0YXRlIHN0YXRlO1xcbiAxMjI6XFx0XFx0dTggKnByZXZoZHIsIG5leHRoZHIgPSAwO1xcbiAxMjM6XFx0XFx0dW5zaWduZWQgaW50IG10dSwgaGxlbjtcXG4gMTI0OlxcdFxcdGludCBocm9vbSwgZXJyID0gMDtcXG4gMTI1OlxcdFxcdF9fYmUzMiBmcmFnX2lkO1xcbiAxMjY6XFx0XFxuIDEyNzpcXHRcXHRlcnIgPSBpcDZfZmluZF8xc3RmcmFnb3B0KHNrYiwgXFx1MDAyNnByZXZoZHIpO1xcbiAxMjg6XFx0XFx0aWYgKGVyciBcXHUwMDNjIDApXFxuIDEyOTpcXHRcXHRcXHRnb3RvIGJsYWNraG9sZTtcXG4gMTMwOlxcdFxcdGhsZW4gPSBlcnI7XFxuIDEzMTpcXHRcXHRuZXh0aGRyID0gKnByZXZoZHI7XFxuIDEzMjpcXHRcXG4gMTMzOlxcdFxcdG10dSA9IHNrYi1cXHUwMDNlZGV2LVxcdTAwM2VtdHU7XFxuIDEzNDpcXHRcXHRpZiAoZnJhZ19tYXhfc2l6ZSBcXHUwMDNlIG10dSB8fFxcbiAxMzU6XFx0XFx0ICAgIGZyYWdfbWF4X3NpemUgXFx1MDAzYyBJUFY2X01JTl9NVFUpXFxuIDEzNjpcXHRcXHRcXHRnb3RvIGJsYWNraG9sZTtcXG4gMTM3OlxcdFxcbiAxMzg6XFx0XFx0bXR1ID0gZnJhZ19tYXhfc2l6ZTtcXG4gMTM5OlxcdFxcdGlmIChtdHUgXFx1MDAzYyBobGVuICsgc2l6ZW9mKHN0cnVjdCBmcmFnX2hkcikgKyA4KVxcbiAxNDA6XFx0XFx0XFx0Z290byBibGFja2hvbGU7XFxuIDE0MTpcXHRcXHRtdHUgLT0gaGxlbiArIHNpemVvZihzdHJ1Y3QgZnJhZ19oZHIpO1xcbiAxNDI6XFx0XFxuIDE0MzpcXHRcXHRmcmFnX2lkID0gaXB2Nl9zZWxlY3RfaWRlbnQobmV0LCBcXHUwMDI2aXB2Nl9oZHIoc2tiKS1cXHUwMDNlZGFkZHIsXFxuIDE0NDpcXHRcXHRcXHRcXHRcXHQgICAgXFx1MDAyNmlwdjZfaGRyKHNrYiktXFx1MDAzZXNhZGRyKTtcXG4gMTQ1OlxcdFxcbiAxNDY6XFx0XFx0aWYgKHNrYi1cXHUwMDNlaXBfc3VtbWVkID09IENIRUNLU1VNX1BBUlRJQUwgXFx1MDAyNlxcdTAwMjZcXG4gMTQ3OlxcdFxcdCAgICAoZXJyID0gc2tiX2NoZWNrc3VtX2hlbHAoc2tiKSkpXFxuIDE0ODpcXHRcXHRcXHRnb3RvIGJsYWNraG9sZTtcXG4gMTQ5OlxcdFxcbiAxNTA6XFx0XFx0ZXJyID0gaXA2X2ZpbmRfMXN0ZnJhZ29wdChza2IsIFxcdTAwMjZwcmV2aGRyKTtcXG4gMTUxOlxcdFxcdGlmIChlcnIgXFx1MDAzYyAwKVxcbiAxNTI6XFx0XFx0XFx0Z290byBibGFja2hvbGU7XFxuIDE1MzpcXHRcXG4gMTU0OlxcdFxcdGhyb29tID0gTExfUkVTRVJWRURfU1BBQ0Uoc2tiLVxcdTAwM2VkZXYpO1xcbiAxNTU6XFx0XFx0aWYgKHNrYl9oYXNfZnJhZ19saXN0KHNrYikpIHtcXG4gMTU2OlxcdFxcdFxcdHVuc2lnbmVkIGludCBmaXJzdF9sZW4gPSBza2JfcGFnZWxlbihza2IpO1xcbiAxNTc6XFx0XFx0XFx0c3RydWN0IGlwNl9mcmFnbGlzdF9pdGVyIGl0ZXI7XFxuIDE1ODpcXHRcXHRcXHRzdHJ1Y3Qgc2tfYnVmZiAqZnJhZzI7XFxuIDE1OTpcXHRcXG4gMTYwOlxcdFxcdFxcdGlmIChmaXJzdF9sZW4gLSBobGVuIFxcdTAwM2UgbXR1KVxcbiAxNjE6XFx0XFx0XFx0XFx0Z290byBibGFja2hvbGU7XFxuIDE2MjpcXHRcXG4gMTYzOlxcdFxcdFxcdGlmIChza2JfY2xvbmVkKHNrYikgfHxcXG4gMTY0OlxcdFxcdFxcdCAgICBza2JfaGVhZHJvb20oc2tiKSBcXHUwMDNjIChocm9vbSArIHNpemVvZihzdHJ1Y3QgZnJhZ19oZHIpKSlcXG4gMTY1OlxcdFxcdFxcdFxcdGdvdG8gc2xvd19wYXRoO1xcbiAxNjY6XFx0XFxuIDE2NzpcXHRcXHRcXHRza2Jfd2Fsa19mcmFncyhza2IsIGZyYWcyKSB7XFxuIDE2ODpcXHRcXHRcXHRcXHRpZiAoZnJhZzItXFx1MDAzZWxlbiBcXHUwMDNlIG10dSlcXG4gMTY5OlxcdFxcdFxcdFxcdFxcdGdvdG8gYmxhY2tob2xlO1xcbiAxNzA6XFx0XFxuIDE3MTpcXHRcXHRcXHRcXHQvKiBQYXJ0aWFsbHkgY2xvbmVkIHNrYj8gKi9cXG4gMTcyOlxcdFxcdFxcdFxcdGlmIChza2Jfc2hhcmVkKGZyYWcyKSB8fFxcbiAxNzM6XFx0XFx0XFx0XFx0ICAgIHNrYl9oZWFkcm9vbShmcmFnMikgXFx1MDAzYyAoaGxlbiArIGhyb29tICsgc2l6ZW9mKHN0cnVjdCBmcmFnX2hkcikpKVxcbiAxNzQ6XFx0XFx0XFx0XFx0XFx0Z290byBzbG93X3BhdGg7XFxuIDE3NTpcXHRcXHRcXHR9XFxuIDE3NjpcXHRcXG4gMTc3OlxcdFxcdFxcdGVyciA9IGlwNl9mcmFnbGlzdF9pbml0KHNrYiwgaGxlbiwgcHJldmhkciwgbmV4dGhkciwgZnJhZ19pZCxcXG4gMTc4OlxcdFxcdFxcdFxcdFxcdFxcdFxcdTAwMjZpdGVyKTtcXG4gMTc5OlxcdFxcdFxcdGlmIChlcnIgXFx1MDAzYyAwKVxcbiAxODA6XFx0XFx0XFx0XFx0Z290byBibGFja2hvbGU7XFxuIDE4MTpcXHRcXG4gMTgyOlxcdFxcdFxcdGZvciAoOzspIHtcXG4gMTgzOlxcdFxcdFxcdFxcdC8qIFByZXBhcmUgaGVhZGVyIG9mIHRoZSBuZXh0IGZyYW1lLFxcbiAxODQ6XFx0XFx0XFx0XFx0ICogYmVmb3JlIHByZXZpb3VzIG9uZSB3ZW50IGRvd24uXFxuIDE4NTpcXHRcXHRcXHRcXHQgKi9cXG4gMTg2OlxcdFxcdFxcdFxcdGlmIChpdGVyLmZyYWcpXFxuIDE4NzpcXHRcXHRcXHRcXHRcXHRpcDZfZnJhZ2xpc3RfcHJlcGFyZShza2IsIFxcdTAwMjZpdGVyKTtcXG4gMTg4OlxcdFxcbiAxODk6XFx0XFx0XFx0XFx0c2tiX3NldF9kZWxpdmVyeV90aW1lKHNrYiwgdHN0YW1wLCB0c3RhbXBfdHlwZSk7XFxuIDE5MDpcXHRcXHRcXHRcXHRlcnIgPSBvdXRwdXQobmV0LCBzaywgZGF0YSwgc2tiKTtcXG4gMTkxOlxcdFxcdFxcdFxcdGlmIChlcnIgfHwgIWl0ZXIuZnJhZylcXG4gMTkyOlxcdFxcdFxcdFxcdFxcdGJyZWFrO1xcbiAxOTM6XFx0XFxuIDE5NDpcXHRcXHRcXHRcXHRza2IgPSBpcDZfZnJhZ2xpc3RfbmV4dChcXHUwMDI2aXRlcik7XFxuIDE5NTpcXHRcXHRcXHR9XFxuIDE5NjpcXHRcXG4gMTk3OlxcdFxcdFxcdGtmcmVlKGl0ZXIudG1wX2hkcik7XFxuIDE5ODpcXHRcXHRcXHRpZiAoIWVycilcXG4gMTk5OlxcdFxcdFxcdFxcdHJldHVybiAwO1xcbiAyMDA6XFx0XFxuIDIwMTpcXHRcXHRcXHRrZnJlZV9za2JfbGlzdChpdGVyLmZyYWcpO1xcbiAyMDI6XFx0XFx0XFx0cmV0dXJuIGVycjtcXG4gMjAzOlxcdFxcdH1cXG4gMjA0OlxcdHNsb3dfcGF0aDpcXG4gMjA1OlxcdFxcdC8qIFRoaXMgaXMgYSBsaW5lYXJpemVkIHNrYnVmZiwgdGhlIG9yaWdpbmFsIGdlb21ldHJ5IGlzIGxvc3QgZm9yIHVzLlxcbiAyMDY6XFx0XFx0ICogVGhpcyBtYXkgYWxzbyBiZSBhIGNsb25lIHNrYnVmZiwgd2UgY291bGQgcHJlc2VydmUgdGhlIGdlb21ldHJ5IGZvclxcbiAyMDc6XFx0XFx0ICogdGhlIGNvcGllcyBidXQgcHJvYmFibHkgbm90IHdvcnRoIHRoZSBlZmZvcnQuXFxuIDIwODpcXHRcXHQgKi9cXG4gMjA5OlxcdFxcdGlwNl9mcmFnX2luaXQoc2tiLCBobGVuLCBtdHUsIHNrYi1cXHUwMDNlZGV2LVxcdTAwM2VuZWVkZWRfdGFpbHJvb20sXFxuIDIxMDpcXHRcXHRcXHQgICAgICBMTF9SRVNFUlZFRF9TUEFDRShza2ItXFx1MDAzZWRldiksIHByZXZoZHIsIG5leHRoZHIsIGZyYWdfaWQsXFxuIDIxMTpcXHRcXHRcXHQgICAgICBcXHUwMDI2c3RhdGUpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wN1QwODoyMTowOS44MzkyOTg2NzRaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyMDYwNTg1NzQ1MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBOZXR3b3JraW5nIFBhdGNoKipcblxuT2theSwgc28gdGhpcyBwYXRjaCBpbnRyb2R1Y2VzIGEgc2Vjb25kIGNhbGwgdG8gYGlwNl9maW5kXzFzdGZyYWdvcHQoKWAgYWZ0ZXIgYHNrYl9jaGVja3N1bV9oZWxwKHNrYilgLiBNeSBpbW1lZGlhdGUgY29uY2VybiBpcyB0aGUgcG90ZW50aWFsIGZvciBgc2tiX2NoZWNrc3VtX2hlbHBgIHRvIHJlYWxsb2NhdGUgdGhlIGBza2JgIGRhdGEuIElmIGl0IGRvZXMsIGFuZCBpdCB2ZXJ5IHdlbGwgbWlnaHQsIHRoZW4gYHByZXZoZHJgIGNvdWxkIGVuZCB1cCBiZWluZyBhIGRhbmdsaW5nIHBvaW50ZXIsIHBvaW50aW5nIHRvIGludmFsaWQgbWVtb3J5LiBUaGlzIGlzIGEgY2xlYXIgZnVuY3Rpb25hbCBpc3N1ZSB0aGF0IG5lZWRzIGFkZHJlc3NpbmcsIGFuZCB0aGUgcGF0Y2gsIGlmIGl0IGZpeGVzIHRoaXMgaXNzdWUgaXMgdmVyeSByZWxldmFudCB0byBteSB3b3JrLlxuXG5TaW5jZSB0aGlzIGZpeGVzIGEgcG90ZW50aWFsIGlzc3VlLCBJIHNob3VsZCBhbHNvIGxvb2sgYXQgdGhlIGJyb2FkZXIgcGljdHVyZS4gU3BlY2lmaWNhbGx5LCBgYnJfaXA2X2ZyYWdtZW50YCBpcyBiZWluZyBleHBvcnRlZC4gVGhhdCBtZWFucyBvdGhlciBwYXJ0cyBvZiB0aGUgc3lzdGVtIGFyZSByZWx5aW5nIG9uIGl0LCBhbmQgdW5kZXJzdGFuZGluZyBob3cgaXQncyB1c2VkIGlzIGNyaXRpY2FsLiBMZXQncyB0cmFjZSB0aG9zZSBjYWxscyBhbmQgZGVwZW5kZW5jaWVzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0MTc3LCJPdXRwdXRUb2tlbnMiOjI2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6OTgsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wN1QwODoyMTozMC40NDUxNTkxMDdaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTc2MzYxMjc3NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJicl9pcDZfZnJhZ21lbnRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImluY2x1ZGUvbGludXgvbmV0ZmlsdGVyX2lwdjYuaD01Mz1zdGF0aWMgaW5saW5lIGludCBuZl9pcDZfcm91dGUoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3QgZHN0X2VudHJ5ICoqZHN0LFxcbi0tXFxuaW5jbHVkZS9saW51eC9uZXRmaWx0ZXJfaXB2Ni5oLTY0LVxcbmluY2x1ZGUvbGludXgvbmV0ZmlsdGVyX2lwdjYuaDo2NTppbnQgYnJfaXA2X2ZyYWdtZW50KHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbmluY2x1ZGUvbGludXgvbmV0ZmlsdGVyX2lwdjYuaC02Ni1cXHRcXHQgICAgc3RydWN0IG5mX2JyaWRnZV9mcmFnX2RhdGEgKmRhdGEsXFxuLS1cXG5pbmNsdWRlL2xpbnV4L25ldGZpbHRlcl9pcHY2LmgtNzAtXFxuaW5jbHVkZS9saW51eC9uZXRmaWx0ZXJfaXB2Ni5oOjcxOnN0YXRpYyBpbmxpbmUgaW50IG5mX2JyX2lwNl9mcmFnbWVudChzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBzb2NrICpzayxcXG5pbmNsdWRlL2xpbnV4L25ldGZpbHRlcl9pcHY2LmgtNzItXFx0XFx0XFx0XFx0ICAgICBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbi0tXFxuaW5jbHVkZS9saW51eC9uZXRmaWx0ZXJfaXB2Ni5oLTc4LSNpZiBJU19FTkFCTEVEKENPTkZJR19JUFY2KVxcbmluY2x1ZGUvbGludXgvbmV0ZmlsdGVyX2lwdjYuaDo3OTpcXHRyZXR1cm4gYnJfaXA2X2ZyYWdtZW50KG5ldCwgc2ssIHNrYiwgZGF0YSwgb3V0cHV0KTtcXG5pbmNsdWRlL2xpbnV4L25ldGZpbHRlcl9pcHY2LmgtODAtI2Vsc2VcXG4tLVxcbm5ldC9icmlkZ2UvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19icmlkZ2UuYz0zMzc9bmZfY3RfYnJpZGdlX3JlZnJhZyhzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBjb25zdCBzdHJ1Y3QgbmZfaG9va19zdGF0ZSAqc3RhdGUsXFxuLS1cXG5uZXQvYnJpZGdlL25ldGZpbHRlci9uZl9jb25udHJhY2tfYnJpZGdlLmMtMzUyLVxcdGNhc2UgaHRvbnMoRVRIX1BfSVBWNik6XFxubmV0L2JyaWRnZS9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2JyaWRnZS5jOjM1MzpcXHRcXHRuZl9icl9pcDZfZnJhZ21lbnQoc3RhdGUtXFx1MDAzZW5ldCwgc3RhdGUtXFx1MDAzZXNrLCBza2IsIFxcdTAwMjZkYXRhLCBvdXRwdXQpO1xcbm5ldC9icmlkZ2UvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19icmlkZ2UuYy0zNTQtXFx0XFx0YnJlYWs7XFxuLS1cXG5uZXQvaXB2Ni9uZXRmaWx0ZXIuYz0xMTA9RVhQT1JUX1NZTUJPTF9HUEwoX19uZl9pcDZfcm91dGUpO1xcbm5ldC9pcHY2L25ldGZpbHRlci5jLTExMS1cXG5uZXQvaXB2Ni9uZXRmaWx0ZXIuYzoxMTI6aW50IGJyX2lwNl9mcmFnbWVudChzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX2J1ZmYgKnNrYixcXG5uZXQvaXB2Ni9uZXRmaWx0ZXIuYy0xMTMtXFx0XFx0ICAgIHN0cnVjdCBuZl9icmlkZ2VfZnJhZ19kYXRhICpkYXRhLFxcbi0tXFxubmV0L2lwdjYvbmV0ZmlsdGVyLmMtMjMzLX1cXG5uZXQvaXB2Ni9uZXRmaWx0ZXIuYzoyMzQ6RVhQT1JUX1NZTUJPTF9HUEwoYnJfaXA2X2ZyYWdtZW50KTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDdUMDg6MjE6MzYuMjA4Nzc4MzM0WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzkzODMxMjAyNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipJbnZlc3RpZ2F0aW5nIHRoZSBDb25maWd1cmF0aW9uIExhbmRzY2FwZSBmb3IgSVAgRnJhZ21lbnRhdGlvbiBpbiBCcmlkZ2UgRW52aXJvbm1lbnRzKipcblxuT2theSwgc28gSSdtIGRpdmluZyBpbnRvIHRoZSBrZXJuZWwgY29kZSByZWxhdGVkIHRvIElQIGZyYWdtZW50YXRpb24sIHNwZWNpZmljYWxseSB3aXRoaW4gYnJpZGdlIGVudmlyb25tZW50cy4gTXkgc3RhcnRpbmcgcG9pbnQgaXMgdGhlIGBuZl9jdF9icmlkZ2VfcmVmcmFnYCBmdW5jdGlvbiwgd2hpY2ggcmVzaWRlcyBpbiBgbmV0L2JyaWRnZS9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2JyaWRnZS5jYC4gTXkgaW1tZWRpYXRlIHF1ZXN0aW9uIGlzOiB3aGF0IGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBhcmUgcmVsZXZhbnQgdG8gdGhpcyBhbmQgdGhlIGFzc29jaWF0ZWQgYGJyX2lwNl9mcmFnbWVudGAgZnVuY3Rpb25hbGl0eT8gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCdzIGVuYWJsZWQsIG9yIG5lZWRzIHRvIGJlIGVuYWJsZWQsIHRvIG1ha2UgdGhlc2UgZmVhdHVyZXMgd29yayBhcyBpbnRlbmRlZC5cblxuYGJyX2lwNl9mcmFnbWVudGAsIEkgc2VlLCBpcyBkZWZpbmVkIHdpdGhpbiBgbmV0L2lwdjYvbmV0ZmlsdGVyLmNgLiBHaXZlbiB0aGF0LCBJIHRoaW5rIHRoZSBgbmV0L2lwdjYvTWFrZWZpbGVgIGlzIHRoZSBuZXh0IGxvZ2ljYWwgcGxhY2UgdG8gbG9vay4gVGhpcyBzaG91bGQgcHJvdmlkZSBpbnNpZ2h0cyBpbnRvIHRoZSBidWlsZCBwcm9jZXNzLCBkZXBlbmRlbmNpZXMsIGFuZCBhbnkgY29uZGl0aW9uYWwgY29tcGlsYXRpb24gdGhhdCBpbmZsdWVuY2VzIHRoZSBpbmNsdXNpb24gb2YgdGhpcyBmcmFnbWVudGF0aW9uIHN1cHBvcnQuIFRoaXMgc2hvdWxkIGlsbHVtaW5hdGUgdGhlIG5lY2Vzc2FyeSBrZXJuZWwgY29uZmlndXJhdGlvbnMuIEknbGwgc3RhcnQgdGhlcmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjUxMDYsIk91dHB1dFRva2VucyI6MzAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMDAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDdUMDg6MjE6NDAuMTQ3MDkzMjFaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI1NzUxNTY5MywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJuZXRmaWx0ZXIub1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvaXB2Ni9NYWtlZmlsZVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvaXB2Ni9NYWtlZmlsZT0xOD1pcHY2LSQoQ09ORklHX1hGUk0pICs9IHhmcm02X3BvbGljeS5vIHhmcm02X3N0YXRlLm8geGZybTZfaW5wdXQubyBcXFxcXFxubmV0L2lwdjYvTWFrZWZpbGUtMTktXFx0eGZybTZfb3V0cHV0Lm8geGZybTZfcHJvdG9jb2wub1xcbm5ldC9pcHY2L01ha2VmaWxlOjIwOmlwdjYtJChDT05GSUdfTkVURklMVEVSKSArPSBuZXRmaWx0ZXIub1xcbm5ldC9pcHY2L01ha2VmaWxlLTIxLWlwdjYtJChDT05GSUdfSVBWNl9NVUxUSVBMRV9UQUJMRVMpICs9IGZpYjZfcnVsZXMub1xcbi0tXFxubmV0L2lwdjYvTWFrZWZpbGU9NTg9aWZkZWYgQ09ORklHX0dDT1ZfUFJPRklMRV9ORVRGSUxURVJcXG5uZXQvaXB2Ni9NYWtlZmlsZTo1OTpHQ09WX1BST0ZJTEVfbmV0ZmlsdGVyLm8gOj0geVxcbm5ldC9pcHY2L01ha2VmaWxlLTYwLWVuZGlmXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA3VDA4OjIxOjQwLjQwNDYxNjQ4M1oiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNDk1NDc2NzEzOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0J3Mgc2VlLCBteSBpbml0aWFsIGFzc2Vzc21lbnQgc3VnZ2VzdHMgdGhhdCBJJ2xsIGRlZmluaXRlbHkgbmVlZCBgQ09ORklHX05FVEZJTFRFUmAgYW5kIGBDT05GSUdfSVBWNmAgZW5hYmxlZC4gVGhvc2Ugc2VlbSBsaWtlIG9idmlvdXMgcHJlcmVxdWlzaXRlcywgZ2l2ZW4gdGhlIGNvbnRleHQuIEJ1dCwgaG1tLCBJJ20gYWxzbyBzZWVpbmcgYSByZWZlcmVuY2UgdG8gYG5mX2N0X2JyaWRnZV9yZWZyYWdgLiBOb3csIHdoZXJlIGRvZXMgdGhhdCBsaXZlPyBBaGEsIGl0IGxvb2tzIGxpa2UgaXQncyB0dWNrZWQgYXdheSBpbiBgbmV0L2JyaWRnZS9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2JyaWRnZS5jYC4gT2theSwgZ29vZCB0byBrbm93LiBCZXN0IHRvIGJlIHRob3JvdWdoLCBJIHNob3VsZCByZWFsbHkgY2hlY2sgdGhlIGJ1aWxkIGNvbmZpZ3VyYXRpb24gZm9yIHRoYXQgZGlyZWN0b3J5IGFzIHdlbGwsIHNvIGxldCBtZSBxdWlja2x5IHBlZWsgYXQgYG5ldC9icmlkZ2UvbmV0ZmlsdGVyL01ha2VmaWxlYCB0byBtYWtlIHN1cmUgdGhlcmUgYXJlbid0IGFueSBvdGhlciBkZXBlbmRlbmNpZXMgb3IgZmxhZ3MgSSdtIG1pc3NpbmcuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU2NDMsIk91dHB1dFRva2VucyI6MzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2OCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wN1QwODoyMjoxNS4zNTkzODYzNjFaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjcyNDcxMzE3MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJuZl9jb25udHJhY2tfYnJpZGdlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9icmlkZ2UvbmV0ZmlsdGVyL01ha2VmaWxlXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9icmlkZ2UvbmV0ZmlsdGVyL01ha2VmaWxlPTc9b2JqLSQoQ09ORklHX05GVF9CUklER0VfUkVKRUNUKSAgKz0gbmZ0X3JlamVjdF9icmlkZ2Uub1xcbi0tXFxubmV0L2JyaWRnZS9uZXRmaWx0ZXIvTWFrZWZpbGUtOS0jIGNvbm5lY3Rpb24gdHJhY2tpbmdcXG5uZXQvYnJpZGdlL25ldGZpbHRlci9NYWtlZmlsZToxMDpvYmotJChDT05GSUdfTkZfQ09OTlRSQUNLX0JSSURHRSkgKz0gbmZfY29ubnRyYWNrX2JyaWRnZS5vXFxubmV0L2JyaWRnZS9uZXRmaWx0ZXIvTWFrZWZpbGUtMTEtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA3VDA4OjIyOjE2LjA4NDEwNTUzWiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI2ODA1MzUwMDQ2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipJbnZlc3RpZ2F0aW5nIE5ldHdvcmsgQnJpZGdlIENvbm5lY3Rpb24gVHJhY2tpbmcgUmVxdWlyZW1lbnRzKipcblxuQWxyaWdodCwgdGhlIHNpdHVhdGlvbiBjYWxscyBmb3IgYENPTkZJR19ORl9DT05OVFJBQ0tfQlJJREdFYC4gR290dGEgbWFrZSBzdXJlIHRoYXQncyBlbmFibGVkIGFuZCBjb25maWd1cmVkIGNvcnJlY3RseS4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIGNyb3NzLXJlZmVyZW5jZSB0aGlzIGluIGBuZXQvYnJpZGdlL25ldGZpbHRlci9LY29uZmlnYC4gVGhhdCdzIHRoZSBsb2dpY2FsIHBsYWNlIHRvIHN0YXJ0IGRpZ2dpbmcgaW50byB0aGUgZGVwZW5kZW5jaWVzIGFuZCBvcHRpb25zLiBJJ2xsIG5lZWQgdG8gY29uZmlybSBpdHMgcHJlc2VuY2UsIGNoZWNrIGl0cyBpbXBsaWNhdGlvbnMgZm9yIG91ciBzcGVjaWZpYyBicmlkZ2Ugc2V0dXAsIGFuZCBtYWtlIHN1cmUgdGhlcmUgYXJlbid0IGFueSBjb25mbGljdGluZyBjb25maWd1cmF0aW9ucyBvciBuZWNlc3NhcnkgYXV4aWxpYXJ5IG1vZHVsZXMgdGhhdCBuZWVkIHRvIGJlIGNvbnNpZGVyZWQuIEl0J3MgYSBmdW5kYW1lbnRhbCBwaWVjZSwgc28gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaXQgdGhvcm91Z2hseS5cblxuXG4iLCJJbnB1dFRva2VucyI6NjAxMywiT3V0cHV0VG9rZW5zIjozNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA3VDA4OjIyOjQyLjg4OTQ1ODAxNloiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjcwNDc5MzI5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBORl9DT05OVFJBQ0tfQlJJREdFXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9icmlkZ2UvbmV0ZmlsdGVyL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L2JyaWRnZS9uZXRmaWx0ZXIvS2NvbmZpZz0yNj1lbmRpZiAjIE5GX1RBQkxFU19CUklER0VcXG5uZXQvYnJpZGdlL25ldGZpbHRlci9LY29uZmlnLTI3LVxcbm5ldC9icmlkZ2UvbmV0ZmlsdGVyL0tjb25maWc6Mjg6Y29uZmlnIE5GX0NPTk5UUkFDS19CUklER0VcXG5uZXQvYnJpZGdlL25ldGZpbHRlci9LY29uZmlnLTI5LVxcdHRyaXN0YXRlIFxcXCJJUHY0L0lQVjYgYnJpZGdlIGNvbm5lY3Rpb24gdHJhY2tpbmcgc3VwcG9ydFxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDdUMDg6MjI6NDMuMTU5OTQ2MTE1WiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU5NTk5NjczMDYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqSW52ZXN0aWdhdGluZyBDb25maWd1cmF0aW9uIERlcGVuZGVuY2llcyoqXG5cbk9rYXksIHNvIEkgbmVlZCB0byBmaWd1cmUgb3V0IHRoZSBkZXBlbmRlbmNpZXMgcmVsYXRlZCB0byB0aGlzIG5ldHdvcmtpbmcgY29uZmlndXJhdGlvbi4gRmlyc3QsIEknbGwgcXVpY2tseSBzZWUgaWYgdGhlcmUgYXJlIGFueSBvdGhlciBjb25maWd1cmF0aW9uIG9wdGlvbnMgdGhhdCBqdW1wIG91dCBhcyBwb3RlbnRpYWxseSByZWxldmFudC4gU3BlY2lmaWNhbGx5LCBJJ20gdGhpbmtpbmcgYENPTkZJR19CUklER0VfTkVURklMVEVSYCDigJMgdGhhdCBzb3VuZHMgbGlrZSBhIHN0cm9uZyBjYW5kaWRhdGUgdG8gaW52ZXN0aWdhdGUuIFRvIGdldCBhIGNsZWFyZXIgcGljdHVyZSBvZiB0aGUgcmVsYXRpb25zaGlwcyBhbmQgZGVwZW5kZW5jaWVzLCBJJ2xsIGRpdmUgaW50byB0aGUgYG5ldC9icmlkZ2UvbmV0ZmlsdGVyL0tjb25maWdgIGZpbGUuIEknbSBlc3BlY2lhbGx5IGludGVyZXN0ZWQgaW4gd2hldGhlciBgTkZfQ09OTlRSQUNLX0JSSURHRWAgaGFzIGFueSBkZXBlbmRlbmNpZXMgd2l0aGluIHRoYXQgY29udGV4dCwgYXMgY29ubmVjdGlvbiB0cmFja2luZyBpcyBvZnRlbiBhIGtleSBhc3BlY3Qgb2YgdGhlc2UgdHlwZXMgb2YgY29uZmlndXJhdGlvbnMuIFRoaXMgc2hvdWxkIGdpdmUgbWUgdGhlIGluZm9ybWF0aW9uIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyBldmVyeXRoaW5nIGZpdHMgdG9nZXRoZXIuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjYzMzMsIk91dHB1dFRva2VucyI6MzYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1MCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wN1QwODoyMjo0OS4xMTk5MTYyMjFaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTAwMTUwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcIm5ldC9icmlkZ2UvbmV0ZmlsdGVyL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMjgsXG4gIFwiTGluZUNvdW50XCI6IDIwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgMjg6XFx0Y29uZmlnIE5GX0NPTk5UUkFDS19CUklER0VcXG4gIDI5OlxcdFxcdHRyaXN0YXRlIFxcXCJJUHY0L0lQVjYgYnJpZGdlIGNvbm5lY3Rpb24gdHJhY2tpbmcgc3VwcG9ydFxcXCJcXG4gIDMwOlxcdFxcdGRlcGVuZHMgb24gTkZfQ09OTlRSQUNLXFxuICAzMTpcXHRcXHRkZWZhdWx0IG5cXG4gIDMyOlxcdFxcdGhlbHBcXG4gIDMzOlxcdFxcdCAgQ29ubmVjdGlvbiB0cmFja2luZyBrZWVwcyBhIHJlY29yZCBvZiB3aGF0IHBhY2tldHMgaGF2ZSBwYXNzZWRcXG4gIDM0OlxcdFxcdCAgdGhyb3VnaCB5b3VyIG1hY2hpbmUsIGluIG9yZGVyIHRvIGZpZ3VyZSBvdXQgaG93IHRoZXkgYXJlIHJlbGF0ZWRcXG4gIDM1OlxcdFxcdCAgaW50byBjb25uZWN0aW9ucy4gVGhpcyBpcyB1c2VkIHRvIGVuaGFuY2UgcGFja2V0IGZpbHRlcmluZyB2aWFcXG4gIDM2OlxcdFxcdCAgc3RhdGVmdWwgcG9saWNpZXMuIEVuYWJsZSB0aGlzIGlmIHlvdSB3YW50IG5hdGl2ZSB0cmFja2luZyBmcm9tXFxuICAzNzpcXHRcXHQgIHRoZSBicmlkZ2UuIFRoaXMgcHJvdmlkZXMgYSByZXBsYWNlbWVudCBmb3IgdGhlIGBicl9uZXRmaWx0ZXInXFxuICAzODpcXHRcXHQgIGluZnJhc3RydWN0dXJlLlxcbiAgMzk6XFx0XFxuICA0MDpcXHRcXHQgIFRvIGNvbXBpbGUgaXQgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmUuICBJZiB1bnN1cmUsIHNheSBOLlxcbiAgNDE6XFx0XFxuICA0MjpcXHQjIG9sZCBzb2Nrb3B0IGludGVyZmFjZSBhbmQgZXZhbCBsb29wXFxuICA0MzpcXHRjb25maWcgQlJJREdFX05GX0VCVEFCTEVTX0xFR0FDWVxcbiAgNDQ6XFx0XFx0dHJpc3RhdGUgXFxcIkxlZ2FjeSBFQlRBQkxFUyBzdXBwb3J0XFxcIlxcbiAgNDU6XFx0XFx0ZGVwZW5kcyBvbiBCUklER0UgXFx1MDAyNlxcdTAwMjYgTkVURklMVEVSX1hUQUJMRVNfTEVHQUNZXFxuICA0NjpcXHRcXHRkZXBlbmRzIG9uIE5FVEZJTFRFUl9YVEFCTEVTXFxuICA0NzpcXHRcXHRkZWZhdWx0XFx0blxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wN1QwODoyMjo0OS4xMjAwMTg1NjFaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NzA4Nzg1MDIxMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBbmFseXNpcyBvZiBhIFBvdGVudGlhbCBJUHY2IEJyaWRnZSBGcmFnbWVudGF0aW9uIEJ1ZyoqXG5cbk9rYXksIHNvIEknbSBob25pbmcgaW4gb24gYSBwb3RlbnRpYWwgdnVsbmVyYWJpbGl0eS4gSXQgbG9va3MgbGlrZSB0aGUgY29yZSBjb25maWd1cmF0aW9uIGl0ZW0gSSBuZWVkIHRvIHBheSBhdHRlbnRpb24gdG8gaXMgYENPTkZJR19ORl9DT05OVFJBQ0tfQlJJREdFYC4gT2YgY291cnNlLCBJJ2xsIGFsc28gbmVlZCB0byBjb25zaWRlciBgQ09ORklHX0lQVjZgLCBgQ09ORklHX05FVEZJTFRFUmAsIGBDT05GSUdfQlJJREdFYCwgYW5kIGBDT05GSUdfTkZfQ09OTlRSQUNLYCBzaW5jZSB0aGV5IGxpa2VseSBwbGF5IGEgc3VwcG9ydGluZyByb2xlLiBJIG5lZWQgdG8ga2VlcCBpbiBtaW5kIHRoZXNlIGNvbmZpZ3VyYXRpb25zLlxuXG5TcGVjaWZpY2FsbHksIEknbSBnb2luZyB0byBmb2N1cyBvbiB0aGUgYE5GX0NPTk5UUkFDS19CUklER0VgIG1vZHVsZS4gVGhlIGZ1bmN0aW9uIHRoYXQgcmVhbGx5IHN0YW5kcyBvdXQgaXMgYGJyX2lwNl9mcmFnbWVudGAuIE5vdywgaXMgdGhlcmUgYW55dGhpbmcgZWxzZT8gQWgsIHllcywgYG5mX2N0X2JyaWRnZV9yZWZyYWdgIGNhbGxzIGl0LiBTbywgdGhhdCdzIGltcG9ydGFudCBjb250ZXh0LlxuXG5MZXQgbWUgZ28gYmFjayBhbmQgZ2l2ZSBgYnJfaXA2X2ZyYWdtZW50YCBhbm90aGVyIGNsb3NlIGxvb2suIEl0IGFwcGVhcnMgdG8gY2FsbCBgaXA2X2ZpbmRfMXN0ZnJhZ29wdGAuIEFoIGhhISBJIGJlbGlldmUgSSd2ZSBwaW5wb2ludGVkIHRoZSBpc3N1ZS4gVGhlIHJvb3QgY2F1c2UgbG9va3MgbGlrZSBhIHVzZS1hZnRlci1mcmVlIG9yIGEgcmVsYXRlZCBkYW5nbGluZyBwb2ludGVyIGlzc3VlLiBNeSBoeXBvdGhlc2lzIGlzIHRoYXQgYHByZXZoZHJgIGJlY29tZXMgaW52YWxpZCBhZnRlciBgc2tiX2NoZWNrc3VtX2hlbHAoc2tiKWAgaXMgY2FsbGVkLiBBbmQsIG9mIGNvdXJzZSwgYHNrYl9jaGVja3N1bV9oZWxwYCBpcyBrbm93biB0byBwb3RlbnRpYWxseSByZWFsbG9jYXRlIHRoZSBgc2tiYCBkYXRhLCB3aGljaCB3b3VsZCBpbnZhbGlkYXRlIHRoZSBgcHJldmhkcmAgcG9pbnRlci4gVGhpcyBzZWVtcyBpbmNyZWRpYmx5IHByb21pc2luZyBmb3IgZnV6emluZy5cblxuTGV0IG1lIGp1c3QgZG91YmxlLWNoZWNrIG9uZSBsYXN0IHRpbWUgdGhhdCBgYnJfaXA2X2ZyYWdtZW50YCBpcyB0aGUgb25seSBmdW5jdGlvbiBJIG5lZWQgdG8gYmUgY29uY2VybmVkIHdpdGggaW4gdGhpcyBjb250ZXh0LiBZZXMsIGl0IGFwcGVhcnMgdG8gYmUgdGhlIHByaW1hcnkgZnVuY3Rpb24gYmVpbmcgbW9kaWZpZWQuIE15IGZvY3VzIHN5bWJvbHMgd2lsbCBiZSBgYnJfaXA2X2ZyYWdtZW50YCBhbmQgYG5mX2N0X2JyaWRnZV9yZWZyYWdgLlxuXG5JIHNob3VsZCBiZSBhYmxlIHRvIGdldCBhIGxvb2sgYXQgYGJyX2lwNl9mcmFnbWVudGAgZnJvbSBgbmV0L2lwdjYvbmV0ZmlsdGVyLmNgLiBJIHNob3VsZCBjaGVjayB0aGF0IGl0J3MgZXhwb3J0ZWQgYW5kIGNoZWNrIHdoZXJlIGVsc2UgaXQgbWF5IGJlIGNhbGxlZC5cblxuXG4iLCJJbnB1dFRva2VucyI6Njg3MywiT3V0cHV0VG9rZW5zIjoyNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMxNSwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA3VDA4OjIyOjU2LjIwNzg3MjAzMVoiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDA0NTc4MDk0OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJicl9pcDZfZnJhZ21lbnRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImluY2x1ZGUvbGludXgvbmV0ZmlsdGVyX2lwdjYuaD01Mz1zdGF0aWMgaW5saW5lIGludCBuZl9pcDZfcm91dGUoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3QgZHN0X2VudHJ5ICoqZHN0LFxcbi0tXFxuaW5jbHVkZS9saW51eC9uZXRmaWx0ZXJfaXB2Ni5oLTY0LVxcbmluY2x1ZGUvbGludXgvbmV0ZmlsdGVyX2lwdjYuaDo2NTppbnQgYnJfaXA2X2ZyYWdtZW50KHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbmluY2x1ZGUvbGludXgvbmV0ZmlsdGVyX2lwdjYuaC02Ni1cXHRcXHQgICAgc3RydWN0IG5mX2JyaWRnZV9mcmFnX2RhdGEgKmRhdGEsXFxuLS1cXG5pbmNsdWRlL2xpbnV4L25ldGZpbHRlcl9pcHY2LmgtNzAtXFxuaW5jbHVkZS9saW51eC9uZXRmaWx0ZXJfaXB2Ni5oOjcxOnN0YXRpYyBpbmxpbmUgaW50IG5mX2JyX2lwNl9mcmFnbWVudChzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBzb2NrICpzayxcXG5pbmNsdWRlL2xpbnV4L25ldGZpbHRlcl9pcHY2LmgtNzItXFx0XFx0XFx0XFx0ICAgICBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbi0tXFxuaW5jbHVkZS9saW51eC9uZXRmaWx0ZXJfaXB2Ni5oLTc4LSNpZiBJU19FTkFCTEVEKENPTkZJR19JUFY2KVxcbmluY2x1ZGUvbGludXgvbmV0ZmlsdGVyX2lwdjYuaDo3OTpcXHRyZXR1cm4gYnJfaXA2X2ZyYWdtZW50KG5ldCwgc2ssIHNrYiwgZGF0YSwgb3V0cHV0KTtcXG5pbmNsdWRlL2xpbnV4L25ldGZpbHRlcl9pcHY2LmgtODAtI2Vsc2VcXG4tLVxcbm5ldC9icmlkZ2UvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19icmlkZ2UuYz0zMzc9bmZfY3RfYnJpZGdlX3JlZnJhZyhzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBjb25zdCBzdHJ1Y3QgbmZfaG9va19zdGF0ZSAqc3RhdGUsXFxuLS1cXG5uZXQvYnJpZGdlL25ldGZpbHRlci9uZl9jb25udHJhY2tfYnJpZGdlLmMtMzUyLVxcdGNhc2UgaHRvbnMoRVRIX1BfSVBWNik6XFxubmV0L2JyaWRnZS9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2JyaWRnZS5jOjM1MzpcXHRcXHRuZl9icl9pcDZfZnJhZ21lbnQoc3RhdGUtXFx1MDAzZW5ldCwgc3RhdGUtXFx1MDAzZXNrLCBza2IsIFxcdTAwMjZkYXRhLCBvdXRwdXQpO1xcbm5ldC9icmlkZ2UvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19icmlkZ2UuYy0zNTQtXFx0XFx0YnJlYWs7XFxuLS1cXG5uZXQvaXB2Ni9uZXRmaWx0ZXIuYz0xMTA9RVhQT1JUX1NZTUJPTF9HUEwoX19uZl9pcDZfcm91dGUpO1xcbm5ldC9pcHY2L25ldGZpbHRlci5jLTExMS1cXG5uZXQvaXB2Ni9uZXRmaWx0ZXIuYzoxMTI6aW50IGJyX2lwNl9mcmFnbWVudChzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX2J1ZmYgKnNrYixcXG5uZXQvaXB2Ni9uZXRmaWx0ZXIuYy0xMTMtXFx0XFx0ICAgIHN0cnVjdCBuZl9icmlkZ2VfZnJhZ19kYXRhICpkYXRhLFxcbi0tXFxubmV0L2lwdjYvbmV0ZmlsdGVyLmMtMjMzLX1cXG5uZXQvaXB2Ni9uZXRmaWx0ZXIuYzoyMzQ6RVhQT1JUX1NZTUJPTF9HUEwoYnJfaXA2X2ZyYWdtZW50KTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDdUMDg6MjM6MDAuMjUzNjU5OTRaIiwiU2VxIjoxOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTk4MDA1NDkyMzQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB1bmRlcnN0YW5kaW5nLCBmb3JtYXR0ZWQgYXMgcmVxdWVzdGVkOlxuXG4qKkRlY29uc3RydWN0aW5nIHRoZSBDb25udHJhY2sgQnJpZGdlIFJlLWZyYWdtZW50YXRpb24gTG9naWMqKlxuXG5BbHJpZ2h0LCBzbyBJIG5lZWQgdG8gZGlnIGludG8gaG93IHJlLWZyYWdtZW50YXRpb24gaXMgaGFuZGxlZCB3aXRoaW4gdGhlIENvbm50cmFjayBicmlkZ2UgY29udGV4dC4gVGhlIGNvZGUgcGF0aCBzdWdnZXN0cyB0aGF0IGBuZl9jdF9icmlkZ2VfcmVmcmFnYCBpcyBjYWxsZWQgZXhjbHVzaXZlbHkgdGhyb3VnaCBgbmZfYnJfaXA2X2ZyYWdtZW50YC4gVGhhdCBtZWFucyB0aGUgYE5GX0NPTk5UUkFDS19CUklER0VgIGNvbmZpZ3VyYXRpb24gb3B0aW9uIGlzIHRoZSBjcnVjaWFsIHBpZWNlIGhlcmUuIEl0J3MgdGhlIGVuYWJsaW5nIGNvbmRpdGlvbi5cblxuTm93LCB0byBnZXQgYSBoYW5kbGUgb24gd2hhdCdzIGFjdHVhbGx5IGhhcHBlbmluZywgSSBuZWVkIHRvIGp1bXAgaW50byB0aGUgYG5mX2N0X2JyaWRnZV9yZWZyYWdgIGZ1bmN0aW9uIGl0c2VsZi4gSSdsbCBmaW5kIGl0IGluIGBuZXQvYnJpZGdlL25ldGZpbHRlci9uZl9jb25udHJhY2tfYnJpZGdlLmNgLiBMZXQncyBzZWUgd2hhdCB0aGUgaW1wbGVtZW50YXRpb24gbG9va3MgbGlrZSBhbmQgaG93IGl0J3Mgb3JjaGVzdHJhdGluZyB0aGVzZSBmcmFnbWVudHMuIEkgZXhwZWN0IGl0J2xsIGJlIGxvb2tpbmcgYXQgdGhlIGNvbm5lY3Rpb24gdHJhY2tpbmcgZW50cmllcyBhbmQgb3JjaGVzdHJhdGluZyB0aGUgcmVhc3NlbWJseSBiYXNlZCBvbiB0aGUgYnJpZGdlJ3MgaW52b2x2ZW1lbnQuIE15IGluaXRpYWwgYXNzdW1wdGlvbiBpcyB0aGF0IGl0J2xsIGludm9sdmUgc29tZSBjYXJlZnVsIG1hbmFnZW1lbnQgb2YgZnJhZ21lbnQgaWRlbnRpZmljYXRpb24gYW5kIHJlYXNzZW1ibHkgbWV0YWRhdGEuIExldCdzIHNlZSBob3cgdGhleSBkbyBpdC5cblxuXG4iLCJJbnB1dFRva2VucyI6ODI1OCwiT3V0cHV0VG9rZW5zIjo0NCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjc2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA3VDA4OjIzOjIwLjA1NDIxMTkwNFoiLCJTZXEiOjIwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMTg5NDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwibmV0L2JyaWRnZS9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2JyaWRnZS5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDMzNyxcbiAgXCJMaW5lQ291bnRcIjogNTBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDMzNzpcXHRuZl9jdF9icmlkZ2VfcmVmcmFnKHN0cnVjdCBza19idWZmICpza2IsIGNvbnN0IHN0cnVjdCBuZl9ob29rX3N0YXRlICpzdGF0ZSxcXG4gMzM4OlxcdFxcdFxcdCAgICBpbnQgKCpvdXRwdXQpKHN0cnVjdCBuZXQgKiwgc3RydWN0IHNvY2sgKnNrLFxcbiAzMzk6XFx0XFx0XFx0XFx0XFx0ICBjb25zdCBzdHJ1Y3QgbmZfYnJpZGdlX2ZyYWdfZGF0YSAqZGF0YSxcXG4gMzQwOlxcdFxcdFxcdFxcdFxcdCAgc3RydWN0IHNrX2J1ZmYgKikpXFxuIDM0MTpcXHR7XFxuIDM0MjpcXHRcXHRzdHJ1Y3QgbmZfYnJpZGdlX2ZyYWdfZGF0YSBkYXRhO1xcbiAzNDM6XFx0XFxuIDM0NDpcXHRcXHRpZiAoIUJSX0lOUFVUX1NLQl9DQihza2IpLVxcdTAwM2VmcmFnX21heF9zaXplKVxcbiAzNDU6XFx0XFx0XFx0cmV0dXJuIE5GX0FDQ0VQVDtcXG4gMzQ2OlxcdFxcbiAzNDc6XFx0XFx0bmZfY3RfYnJpZGdlX2ZyYWdfc2F2ZShza2IsIFxcdTAwMjZkYXRhKTtcXG4gMzQ4OlxcdFxcdHN3aXRjaCAoc2tiLVxcdTAwM2Vwcm90b2NvbCkge1xcbiAzNDk6XFx0XFx0Y2FzZSBodG9ucyhFVEhfUF9JUCk6XFxuIDM1MDpcXHRcXHRcXHRuZl9icl9pcF9mcmFnbWVudChzdGF0ZS1cXHUwMDNlbmV0LCBzdGF0ZS1cXHUwMDNlc2ssIHNrYiwgXFx1MDAyNmRhdGEsIG91dHB1dCk7XFxuIDM1MTpcXHRcXHRcXHRicmVhaztcXG4gMzUyOlxcdFxcdGNhc2UgaHRvbnMoRVRIX1BfSVBWNik6XFxuIDM1MzpcXHRcXHRcXHRuZl9icl9pcDZfZnJhZ21lbnQoc3RhdGUtXFx1MDAzZW5ldCwgc3RhdGUtXFx1MDAzZXNrLCBza2IsIFxcdTAwMjZkYXRhLCBvdXRwdXQpO1xcbiAzNTQ6XFx0XFx0XFx0YnJlYWs7XFxuIDM1NTpcXHRcXHRkZWZhdWx0OlxcbiAzNTY6XFx0XFx0XFx0V0FSTl9PTl9PTkNFKDEpO1xcbiAzNTc6XFx0XFx0XFx0cmV0dXJuIE5GX0RST1A7XFxuIDM1ODpcXHRcXHR9XFxuIDM1OTpcXHRcXG4gMzYwOlxcdFxcdHJldHVybiBORl9TVE9MRU47XFxuIDM2MTpcXHR9XFxuIDM2MjpcXHRcXG4gMzYzOlxcdC8qIEFjdHVhbGx5IG9ubHkgc2xvdyBwYXRoIHJlZnJhZ21lbnRhdGlvbiBuZWVkcyB0aGlzLiAqL1xcbiAzNjQ6XFx0c3RhdGljIGludCBuZl9jdF9icmlkZ2VfZnJhZ19yZXN0b3JlKHN0cnVjdCBza19idWZmICpza2IsXFxuIDM2NTpcXHRcXHRcXHRcXHRcXHQgICAgIGNvbnN0IHN0cnVjdCBuZl9icmlkZ2VfZnJhZ19kYXRhICpkYXRhKVxcbiAzNjY6XFx0e1xcbiAzNjc6XFx0XFx0aW50IGVycjtcXG4gMzY4OlxcdFxcbiAzNjk6XFx0XFx0ZXJyID0gc2tiX2Nvd19oZWFkKHNrYiwgRVRIX0hMRU4pO1xcbiAzNzA6XFx0XFx0aWYgKGVycikge1xcbiAzNzE6XFx0XFx0XFx0a2ZyZWVfc2tiKHNrYik7XFxuIDM3MjpcXHRcXHRcXHRyZXR1cm4gLUVOT01FTTtcXG4gMzczOlxcdFxcdH1cXG4gMzc0OlxcdFxcdGlmIChkYXRhLVxcdTAwM2V2bGFuX3ByZXNlbnQpXFxuIDM3NTpcXHRcXHRcXHRfX3ZsYW5faHdhY2NlbF9wdXRfdGFnKHNrYiwgZGF0YS1cXHUwMDNldmxhbl9wcm90bywgZGF0YS1cXHUwMDNldmxhbl90Y2kpO1xcbiAzNzY6XFx0XFx0ZWxzZSBpZiAoc2tiX3ZsYW5fdGFnX3ByZXNlbnQoc2tiKSlcXG4gMzc3OlxcdFxcdFxcdF9fdmxhbl9od2FjY2VsX2NsZWFyX3RhZyhza2IpO1xcbiAzNzg6XFx0XFxuIDM3OTpcXHRcXHRza2JfY29weV90b19saW5lYXJfZGF0YV9vZmZzZXQoc2tiLCAtRVRIX0hMRU4sIGRhdGEtXFx1MDAzZW1hYywgRVRIX0hMRU4pO1xcbiAzODA6XFx0XFx0c2tiX3Jlc2V0X21hY19oZWFkZXIoc2tiKTtcXG4gMzgxOlxcdFxcbiAzODI6XFx0XFx0cmV0dXJuIDA7XFxuIDM4MzpcXHR9XFxuIDM4NDpcXHRcXG4gMzg1OlxcdHN0YXRpYyBpbnQgbmZfY3RfYnJpZGdlX3JlZnJhZ19wb3N0KHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHNvY2sgKnNrLFxcbiAzODY6XFx0XFx0XFx0XFx0XFx0ICAgIGNvbnN0IHN0cnVjdCBuZl9icmlkZ2VfZnJhZ19kYXRhICpkYXRhLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wN1QwODoyMzoyMC4wNTQzMzI3MjRaIiwiU2VxIjoyMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTkyNTU0MjQ3NDcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudCBvZiB0aGUgSVB2NiBCcmlkZ2UgTmV0ZmlsdGVyIFBhdGNoKipcblxuT2theSwgc28gdGhpcyBwYXRjaCBpcyBhZGRyZXNzaW5nIGEgcHJldHR5IG5hc3R5IHBvdGVudGlhbCBidWcgd2l0aGluIGBicl9pcDZfZnJhZ21lbnRgLiBJdCBzZWVtcyBsaWtlIHRoZSBgcHJldmhkcmAgcG9pbnRlciwgdXNlZCB3aXRoaW4gdGhlIElQdjYgZnJhZ21lbnRhdGlvbiBsb2dpYywgY2FuIGJlY29tZSBkYW5nbGluZyBpZiBgc2tiX2NoZWNrc3VtX2hlbHBgIGRlY2lkZXMgdG8gcmVhbGxvY2F0ZSB0aGUgYHNrYmAncyBkYXRhIGJ1ZmZlci4gVGhhdCdzIGEgY2xhc3NpYyByZWNpcGUgZm9yIGEgdXNlLWFmdGVyLWZyZWUgb3IsIGV2ZW4gd29yc2UsIG1lbW9yeSBjb3JydXB0aW9uLCBhbmQgd2UgYWxsIGtub3cgaG93IHRob3NlIGNhbiBiZSBhIG5pZ2h0bWFyZSB0byBkZWJ1Zy5cblxuVGhlIGZpeCBpdHNlbGYgYXBwZWFycyBzdHJhaWdodGZvcndhcmQg4oCTIGNhbGwgYGlwNl9maW5kXzFzdGZyYWdvcHRgIGFnYWluIGFmdGVyIHRoZSBwb3RlbnRpYWwgcmVhbGxvY2F0aW9uIHRvIGVuc3VyZSBgcHJldmhkcmAgaXMgcG9pbnRpbmcgYXQgdmFsaWQgbWVtb3J5LiBGdW5jdGlvbmFsbHksIHRoaXMgc2VlbXMgbGlrZSBhIHNvbGlkIGFwcHJvYWNoIHRvIG1pdGlnYXRlIHRoZSByaXNrLiBUaGlzIGFmZmVjdHMgY29kZSB3aXRoaW4gdGhlIGJyaWRnZSBuZXRmaWx0ZXIgY29udGV4dCwgc3BlY2lmaWNhbGx5IGBicl9pcDZfZnJhZ21lbnRgIGFuZCBgbmZfY3RfYnJpZGdlX3JlZnJhZ2AsIHdoaWNoIEknbGwgYmUga2VlcGluZyBhIGNsb3NlIGV5ZSBvbi5cblxuR2l2ZW4gdGhlIHBvdGVudGlhbCBzZXZlcml0eSBvZiBhIHVzZS1hZnRlci1mcmVlIGluIG5ldHdvcmsgY29kZSwgYW5kIHRoZSBmdW5jdGlvbmFsIG5hdHVyZSBvZiB0aGlzIGNoYW5nZSwgSSdtIGFic29sdXRlbHkgZ29pbmcgdG8gcmVjb21tZW5kIGZ1enppbmcgdGhpcy4gV2UgbmVlZCB0byBiZSBhYnNvbHV0ZWx5IGNlcnRhaW4gdGhpcyBmaXggd29ya3MgYW5kIGRvZXNuJ3QgaW50cm9kdWNlIGFueSByZWdyZXNzaW9ucyBvciBuZXcgdnVsbmVyYWJpbGl0aWVzLiBUaGUgcmVsZXZhbnQgY29uZmlndXJhdGlvbiBvcHRpb25zLCBgTkZfQ09OTlRSQUNLX0JSSURHRWAsIGBCUklER0VgLCBgSVBWNmAsIGFuZCBgTkVURklMVEVSYCwgd2lsbCBiZSBlbmFibGVkIGZvciB0aGUgZnV6emluZyBydW5zLlxuXG5BbHJpZ2h0LCB0aW1lIHRvIHNldCB0aGUgZnV6emluZyBwcm9jZXNzIGluIG1vdGlvbiB1c2luZyB0aGUgc2V0LXJlc3VsdHMgdG9vbC4gTGV0J3Mgc2VlIHdoYXQgd2UgY2FuIGRpZyB1cC5cblxuXG4iLCJJbnB1dFRva2VucyI6OTQzNywiT3V0cHV0VG9rZW5zIjoxNTMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNDcsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wN1QwODoyMzozOS4zMDk3NjAxNTFaIiwiU2VxIjoyMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxODU5NzA5NTIsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk5GX0NPTk5UUkFDS19CUklER0VcIixcbiAgICBcIkJSSURHRVwiLFxuICAgIFwiSVBWNlwiLFxuICAgIFwiTkVURklMVEVSXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiYnJfaXA2X2ZyYWdtZW50XCIsXG4gICAgXCJuZl9jdF9icmlkZ2VfcmVmcmFnXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSBwb3RlbnRpYWwgdXNlLWFmdGVyLWZyZWUgaW4gYGJyX2lwNl9mcmFnbWVudGAgYnkgcmUtZXZhbHVhdGluZyB0aGUgYHByZXZoZHJgIHBvaW50ZXIgYWZ0ZXIgYHNrYl9jaGVja3N1bV9oZWxwYCB3aGljaCBtYXkgcmVhbGxvY2F0ZSB0aGUgc2tiIGRhdGEuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgSVB2NiBicmlkZ2UgbmV0ZmlsdGVyIGNvZGUgdGhhdCBzaG91bGQgYmUgZnV6emVkIHRvIGVuc3VyZSB0aGUgZml4IGlzIGNvcnJlY3QgYW5kIGRvZXNuJ3QgaW50cm9kdWNlIG5ldyBpc3N1ZXMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTkZfQ09OTlRSQUNLX0JSSURHRVwiLFxuICAgIFwiQlJJREdFXCIsXG4gICAgXCJJUFY2XCIsXG4gICAgXCJORVRGSUxURVJcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJicl9pcDZfZnJhZ21lbnRcIixcbiAgICBcIm5mX2N0X2JyaWRnZV9yZWZyYWdcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIHBvdGVudGlhbCB1c2UtYWZ0ZXItZnJlZSBpbiBgYnJfaXA2X2ZyYWdtZW50YCBieSByZS1ldmFsdWF0aW5nIHRoZSBgcHJldmhkcmAgcG9pbnRlciBhZnRlciBgc2tiX2NoZWNrc3VtX2hlbHBgIHdoaWNoIG1heSByZWFsbG9jYXRlIHRoZSBza2IgZGF0YS4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBJUHY2IGJyaWRnZSBuZXRmaWx0ZXIgY29kZSB0aGF0IHNob3VsZCBiZSBmdXp6ZWQgdG8gZW5zdXJlIHRoZSBmaXggaXMgY29ycmVjdCBhbmQgZG9lc24ndCBpbnRyb2R1Y2UgbmV3IGlzc3Vlcy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+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-workflow7k95n[1] Phase: Succeeded StartedAt: 2026-07-07 08:23:51 +0000 UTC FinishedAt: 2026-07-07 08:23:51 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7k95n[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-07-07 08:23:51 +0000 UTC FinishedAt: 2026-07-07 08:23:51 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7k95n[2] Phase: Succeeded StartedAt: 2026-07-07 08:23:51 +0000 UTC FinishedAt: 2026-07-07 10:28:45 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7k95n[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9e05e91a9a847ed57926414bd7c2c5e54d6c56c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK_BRIDGE","BRIDGE","IPV6","NETFILTER"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["br_ip6_fragment","nf_ct_bridge_refrag"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"9e05e91a9a847ed57926414bd7c2c5e54d6c56c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK_BRIDGE","BRIDGE","IPV6","NETFILTER"],"series_id":"681eb511-0aa7-4e36-96b8-d32087cdf765","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-07-07 08:23:52 +0000 UTC FinishedAt: 2026-07-07 10:28:45 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"9e05e91a9a847ed57926414bd7c2c5e54d6c56c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK_BRIDGE","BRIDGE","IPV6","NETFILTER"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["br_ip6_fragment","nf_ct_bridge_refrag"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"9e05e91a9a847ed57926414bd7c2c5e54d6c56c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK_BRIDGE","BRIDGE","IPV6","NETFILTER"],"series_id":"681eb511-0aa7-4e36-96b8-d32087cdf765","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflow7k95n[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9e05e91a9a847ed57926414bd7c2c5e54d6c56c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK_BRIDGE","BRIDGE","IPV6","NETFILTER"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["br_ip6_fragment","nf_ct_bridge_refrag"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"9e05e91a9a847ed57926414bd7c2c5e54d6c56c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK_BRIDGE","BRIDGE","IPV6","NETFILTER"],"series_id":"681eb511-0aa7-4e36-96b8-d32087cdf765","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-07-07 08:23:52 +0000 UTC FinishedAt: 2026-07-07 08:24:18 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7k95n[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9e05e91a9a847ed57926414bd7c2c5e54d6c56c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK_BRIDGE","BRIDGE","IPV6","NETFILTER"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["br_ip6_fragment","nf_ct_bridge_refrag"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"9e05e91a9a847ed57926414bd7c2c5e54d6c56c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK_BRIDGE","BRIDGE","IPV6","NETFILTER"],"series_id":"681eb511-0aa7-4e36-96b8-d32087cdf765","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-07-07 08:23:52 +0000 UTC FinishedAt: 2026-07-07 08:24:13 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"9e05e91a9a847ed57926414bd7c2c5e54d6c56c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK_BRIDGE","BRIDGE","IPV6","NETFILTER"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow7k95n/series-workflow7k95n-convert-artifact-2231928508/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow7k95n[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9e05e91a9a847ed57926414bd7c2c5e54d6c56c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK_BRIDGE","BRIDGE","IPV6","NETFILTER"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["br_ip6_fragment","nf_ct_bridge_refrag"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"9e05e91a9a847ed57926414bd7c2c5e54d6c56c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK_BRIDGE","BRIDGE","IPV6","NETFILTER"],"series_id":"681eb511-0aa7-4e36-96b8-d32087cdf765","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-07-07 08:24:18 +0000 UTC FinishedAt: 2026-07-07 09:01:39 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7k95n[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9e05e91a9a847ed57926414bd7c2c5e54d6c56c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK_BRIDGE","BRIDGE","IPV6","NETFILTER"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["br_ip6_fragment","nf_ct_bridge_refrag"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"9e05e91a9a847ed57926414bd7c2c5e54d6c56c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK_BRIDGE","BRIDGE","IPV6","NETFILTER"],"series_id":"681eb511-0aa7-4e36-96b8-d32087cdf765","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-07-07 08:24:18 +0000 UTC FinishedAt: 2026-07-07 09:01:39 +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:*262bcdc5-bd0b-4aca-ad66-289e2d62e755,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-workflow7k95n/series-workflow7k95n-convert-artifact-2231928508/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": "06c53269-2e1c-478b-bbfc-47c83b9b89b3", "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-workflow7k95n/series-workflow7k95n-build-action-281876458/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow7k95n[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9e05e91a9a847ed57926414bd7c2c5e54d6c56c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK_BRIDGE","BRIDGE","IPV6","NETFILTER"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["br_ip6_fragment","nf_ct_bridge_refrag"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"9e05e91a9a847ed57926414bd7c2c5e54d6c56c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK_BRIDGE","BRIDGE","IPV6","NETFILTER"],"series_id":"681eb511-0aa7-4e36-96b8-d32087cdf765","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-07-07 08:24:18 +0000 UTC FinishedAt: 2026-07-07 09:01:18 +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:*262bcdc5-bd0b-4aca-ad66-289e2d62e755,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-workflow7k95n/series-workflow7k95n-convert-artifact-2231928508/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": "06c53269-2e1c-478b-bbfc-47c83b9b89b3", "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-workflow7k95n/series-workflow7k95n-build-action-281876458/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow7k95n[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9e05e91a9a847ed57926414bd7c2c5e54d6c56c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK_BRIDGE","BRIDGE","IPV6","NETFILTER"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["br_ip6_fragment","nf_ct_bridge_refrag"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"9e05e91a9a847ed57926414bd7c2c5e54d6c56c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK_BRIDGE","BRIDGE","IPV6","NETFILTER"],"series_id":"681eb511-0aa7-4e36-96b8-d32087cdf765","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-07-07 09:01:39 +0000 UTC FinishedAt: 2026-07-07 09:01:39 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7k95n[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9e05e91a9a847ed57926414bd7c2c5e54d6c56c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK_BRIDGE","BRIDGE","IPV6","NETFILTER"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["br_ip6_fragment","nf_ct_bridge_refrag"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"9e05e91a9a847ed57926414bd7c2c5e54d6c56c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK_BRIDGE","BRIDGE","IPV6","NETFILTER"],"series_id":"681eb511-0aa7-4e36-96b8-d32087cdf765","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-07-07 09:01:39 +0000 UTC FinishedAt: 2026-07-07 09:01:39 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7k95n[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9e05e91a9a847ed57926414bd7c2c5e54d6c56c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK_BRIDGE","BRIDGE","IPV6","NETFILTER"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["br_ip6_fragment","nf_ct_bridge_refrag"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"9e05e91a9a847ed57926414bd7c2c5e54d6c56c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK_BRIDGE","BRIDGE","IPV6","NETFILTER"],"series_id":"681eb511-0aa7-4e36-96b8-d32087cdf765","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-07-07 09:01:39 +0000 UTC FinishedAt: 2026-07-07 09:02:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7k95n[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9e05e91a9a847ed57926414bd7c2c5e54d6c56c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK_BRIDGE","BRIDGE","IPV6","NETFILTER"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["br_ip6_fragment","nf_ct_bridge_refrag"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"9e05e91a9a847ed57926414bd7c2c5e54d6c56c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK_BRIDGE","BRIDGE","IPV6","NETFILTER"],"series_id":"681eb511-0aa7-4e36-96b8-d32087cdf765","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-07-07 09:01:39 +0000 UTC FinishedAt: 2026-07-07 09:01:50 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"9e05e91a9a847ed57926414bd7c2c5e54d6c56c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK_BRIDGE","BRIDGE","IPV6","NETFILTER"],"series_id":"681eb511-0aa7-4e36-96b8-d32087cdf765","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow7k95n/series-workflow7k95n-convert-artifact-1831713275/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow7k95n[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9e05e91a9a847ed57926414bd7c2c5e54d6c56c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK_BRIDGE","BRIDGE","IPV6","NETFILTER"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["br_ip6_fragment","nf_ct_bridge_refrag"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"9e05e91a9a847ed57926414bd7c2c5e54d6c56c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK_BRIDGE","BRIDGE","IPV6","NETFILTER"],"series_id":"681eb511-0aa7-4e36-96b8-d32087cdf765","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-07-07 09:02:00 +0000 UTC FinishedAt: 2026-07-07 09:03:59 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7k95n[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9e05e91a9a847ed57926414bd7c2c5e54d6c56c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK_BRIDGE","BRIDGE","IPV6","NETFILTER"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["br_ip6_fragment","nf_ct_bridge_refrag"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"9e05e91a9a847ed57926414bd7c2c5e54d6c56c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK_BRIDGE","BRIDGE","IPV6","NETFILTER"],"series_id":"681eb511-0aa7-4e36-96b8-d32087cdf765","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-07-07 09:02:00 +0000 UTC FinishedAt: 2026-07-07 09:03:49 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*06c53269-2e1c-478b-bbfc-47c83b9b89b3,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-workflow7k95n/series-workflow7k95n-build-action-281876458/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-workflow7k95n[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9e05e91a9a847ed57926414bd7c2c5e54d6c56c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK_BRIDGE","BRIDGE","IPV6","NETFILTER"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["br_ip6_fragment","nf_ct_bridge_refrag"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"9e05e91a9a847ed57926414bd7c2c5e54d6c56c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK_BRIDGE","BRIDGE","IPV6","NETFILTER"],"series_id":"681eb511-0aa7-4e36-96b8-d32087cdf765","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-07-07 09:03:59 +0000 UTC FinishedAt: 2026-07-07 09:03:59 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7k95n[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9e05e91a9a847ed57926414bd7c2c5e54d6c56c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK_BRIDGE","BRIDGE","IPV6","NETFILTER"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["br_ip6_fragment","nf_ct_bridge_refrag"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"9e05e91a9a847ed57926414bd7c2c5e54d6c56c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK_BRIDGE","BRIDGE","IPV6","NETFILTER"],"series_id":"681eb511-0aa7-4e36-96b8-d32087cdf765","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-07-07 09:03:59 +0000 UTC FinishedAt: 2026-07-07 09:03:59 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7k95n[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9e05e91a9a847ed57926414bd7c2c5e54d6c56c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK_BRIDGE","BRIDGE","IPV6","NETFILTER"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["br_ip6_fragment","nf_ct_bridge_refrag"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"9e05e91a9a847ed57926414bd7c2c5e54d6c56c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK_BRIDGE","BRIDGE","IPV6","NETFILTER"],"series_id":"681eb511-0aa7-4e36-96b8-d32087cdf765","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-07-07 09:03:59 +0000 UTC FinishedAt: 2026-07-07 09:31:05 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7k95n[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9e05e91a9a847ed57926414bd7c2c5e54d6c56c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK_BRIDGE","BRIDGE","IPV6","NETFILTER"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["br_ip6_fragment","nf_ct_bridge_refrag"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"9e05e91a9a847ed57926414bd7c2c5e54d6c56c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK_BRIDGE","BRIDGE","IPV6","NETFILTER"],"series_id":"681eb511-0aa7-4e36-96b8-d32087cdf765","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-07-07 09:03:59 +0000 UTC FinishedAt: 2026-07-07 09:31:05 +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:*262bcdc5-bd0b-4aca-ad66-289e2d62e755,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-workflow7k95n/series-workflow7k95n-convert-artifact-1831713275/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": "b573db7a-3f5c-4a1b-85c7-79bd321e2d9f", "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-workflow7k95n/series-workflow7k95n-build-action-3614191135/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow7k95n[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9e05e91a9a847ed57926414bd7c2c5e54d6c56c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK_BRIDGE","BRIDGE","IPV6","NETFILTER"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["br_ip6_fragment","nf_ct_bridge_refrag"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"9e05e91a9a847ed57926414bd7c2c5e54d6c56c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK_BRIDGE","BRIDGE","IPV6","NETFILTER"],"series_id":"681eb511-0aa7-4e36-96b8-d32087cdf765","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-07-07 09:03:59 +0000 UTC FinishedAt: 2026-07-07 09:30:55 +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:*262bcdc5-bd0b-4aca-ad66-289e2d62e755,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-workflow7k95n/series-workflow7k95n-convert-artifact-1831713275/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": "b573db7a-3f5c-4a1b-85c7-79bd321e2d9f", "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-workflow7k95n/series-workflow7k95n-build-action-3614191135/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow7k95n[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9e05e91a9a847ed57926414bd7c2c5e54d6c56c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK_BRIDGE","BRIDGE","IPV6","NETFILTER"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["br_ip6_fragment","nf_ct_bridge_refrag"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"9e05e91a9a847ed57926414bd7c2c5e54d6c56c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK_BRIDGE","BRIDGE","IPV6","NETFILTER"],"series_id":"681eb511-0aa7-4e36-96b8-d32087cdf765","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-07-07 09:31:05 +0000 UTC FinishedAt: 2026-07-07 09:31:05 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7k95n[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9e05e91a9a847ed57926414bd7c2c5e54d6c56c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK_BRIDGE","BRIDGE","IPV6","NETFILTER"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["br_ip6_fragment","nf_ct_bridge_refrag"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"9e05e91a9a847ed57926414bd7c2c5e54d6c56c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK_BRIDGE","BRIDGE","IPV6","NETFILTER"],"series_id":"681eb511-0aa7-4e36-96b8-d32087cdf765","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-07-07 09:31:05 +0000 UTC FinishedAt: 2026-07-07 09:31:05 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7k95n[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9e05e91a9a847ed57926414bd7c2c5e54d6c56c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK_BRIDGE","BRIDGE","IPV6","NETFILTER"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["br_ip6_fragment","nf_ct_bridge_refrag"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"9e05e91a9a847ed57926414bd7c2c5e54d6c56c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK_BRIDGE","BRIDGE","IPV6","NETFILTER"],"series_id":"681eb511-0aa7-4e36-96b8-d32087cdf765","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-07-07 09:31:05 +0000 UTC FinishedAt: 2026-07-07 09:33:07 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7k95n[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9e05e91a9a847ed57926414bd7c2c5e54d6c56c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK_BRIDGE","BRIDGE","IPV6","NETFILTER"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["br_ip6_fragment","nf_ct_bridge_refrag"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"9e05e91a9a847ed57926414bd7c2c5e54d6c56c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK_BRIDGE","BRIDGE","IPV6","NETFILTER"],"series_id":"681eb511-0aa7-4e36-96b8-d32087cdf765","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-07-07 09:31:05 +0000 UTC FinishedAt: 2026-07-07 09:32:54 +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:*b573db7a-3f5c-4a1b-85c7-79bd321e2d9f,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-workflow7k95n/series-workflow7k95n-build-action-3614191135/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-workflow7k95n[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9e05e91a9a847ed57926414bd7c2c5e54d6c56c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK_BRIDGE","BRIDGE","IPV6","NETFILTER"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["br_ip6_fragment","nf_ct_bridge_refrag"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"9e05e91a9a847ed57926414bd7c2c5e54d6c56c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK_BRIDGE","BRIDGE","IPV6","NETFILTER"],"series_id":"681eb511-0aa7-4e36-96b8-d32087cdf765","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-07-07 09:33:07 +0000 UTC FinishedAt: 2026-07-07 10:28:45 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7k95n[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9e05e91a9a847ed57926414bd7c2c5e54d6c56c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK_BRIDGE","BRIDGE","IPV6","NETFILTER"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["br_ip6_fragment","nf_ct_bridge_refrag"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"9e05e91a9a847ed57926414bd7c2c5e54d6c56c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK_BRIDGE","BRIDGE","IPV6","NETFILTER"],"series_id":"681eb511-0aa7-4e36-96b8-d32087cdf765","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-07-07 09:33:07 +0000 UTC FinishedAt: 2026-07-07 10:28:45 +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":["br_ip6_fragment","nf_ct_bridge_refrag"],"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:*06c53269-2e1c-478b-bbfc-47c83b9b89b3,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*b573db7a-3f5c-4a1b-85c7-79bd321e2d9f,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-workflow7k95n/series-workflow7k95n-build-action-281876458/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-workflow7k95n/series-workflow7k95n-build-action-3614191135/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflow7k95n[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9e05e91a9a847ed57926414bd7c2c5e54d6c56c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK_BRIDGE","BRIDGE","IPV6","NETFILTER"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["br_ip6_fragment","nf_ct_bridge_refrag"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"9e05e91a9a847ed57926414bd7c2c5e54d6c56c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK_BRIDGE","BRIDGE","IPV6","NETFILTER"],"series_id":"681eb511-0aa7-4e36-96b8-d32087cdf765","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-07-07 09:33:07 +0000 UTC FinishedAt: 2026-07-07 09:33:17 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7k95n[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9e05e91a9a847ed57926414bd7c2c5e54d6c56c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK_BRIDGE","BRIDGE","IPV6","NETFILTER"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["br_ip6_fragment","nf_ct_bridge_refrag"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"9e05e91a9a847ed57926414bd7c2c5e54d6c56c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK_BRIDGE","BRIDGE","IPV6","NETFILTER"],"series_id":"681eb511-0aa7-4e36-96b8-d32087cdf765","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-07-07 09:33:07 +0000 UTC FinishedAt: 2026-07-07 09:33:14 +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":["br_ip6_fragment","nf_ct_bridge_refrag"],"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-workflow7k95n/series-workflow7k95n-convert-artifact-486748916/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow7k95n[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9e05e91a9a847ed57926414bd7c2c5e54d6c56c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK_BRIDGE","BRIDGE","IPV6","NETFILTER"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["br_ip6_fragment","nf_ct_bridge_refrag"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"9e05e91a9a847ed57926414bd7c2c5e54d6c56c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK_BRIDGE","BRIDGE","IPV6","NETFILTER"],"series_id":"681eb511-0aa7-4e36-96b8-d32087cdf765","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-07-07 09:33:07 +0000 UTC FinishedAt: 2026-07-07 09:33:07 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7k95n[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9e05e91a9a847ed57926414bd7c2c5e54d6c56c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK_BRIDGE","BRIDGE","IPV6","NETFILTER"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["br_ip6_fragment","nf_ct_bridge_refrag"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"9e05e91a9a847ed57926414bd7c2c5e54d6c56c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK_BRIDGE","BRIDGE","IPV6","NETFILTER"],"series_id":"681eb511-0aa7-4e36-96b8-d32087cdf765","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-07-07 09:33:07 +0000 UTC FinishedAt: 2026-07-07 09:33:07 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7k95n[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9e05e91a9a847ed57926414bd7c2c5e54d6c56c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK_BRIDGE","BRIDGE","IPV6","NETFILTER"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["br_ip6_fragment","nf_ct_bridge_refrag"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"9e05e91a9a847ed57926414bd7c2c5e54d6c56c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK_BRIDGE","BRIDGE","IPV6","NETFILTER"],"series_id":"681eb511-0aa7-4e36-96b8-d32087cdf765","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-07-07 09:33:07 +0000 UTC FinishedAt: 2026-07-07 09:33:07 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7k95n[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9e05e91a9a847ed57926414bd7c2c5e54d6c56c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK_BRIDGE","BRIDGE","IPV6","NETFILTER"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["br_ip6_fragment","nf_ct_bridge_refrag"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"9e05e91a9a847ed57926414bd7c2c5e54d6c56c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK_BRIDGE","BRIDGE","IPV6","NETFILTER"],"series_id":"681eb511-0aa7-4e36-96b8-d32087cdf765","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-07-07 09:33:17 +0000 UTC FinishedAt: 2026-07-07 10:28:45 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7k95n[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9e05e91a9a847ed57926414bd7c2c5e54d6c56c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK_BRIDGE","BRIDGE","IPV6","NETFILTER"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["br_ip6_fragment","nf_ct_bridge_refrag"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"9e05e91a9a847ed57926414bd7c2c5e54d6c56c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK_BRIDGE","BRIDGE","IPV6","NETFILTER"],"series_id":"681eb511-0aa7-4e36-96b8-d32087cdf765","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-07-07 09:33:17 +0000 UTC FinishedAt: 2026-07-07 10:28:35 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*06c53269-2e1c-478b-bbfc-47c83b9b89b3,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*b573db7a-3f5c-4a1b-85c7-79bd321e2d9f,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-workflow7k95n/series-workflow7k95n-build-action-281876458/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-workflow7k95n/series-workflow7k95n-build-action-3614191135/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-workflow7k95n/series-workflow7k95n-convert-artifact-486748916/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,}