Name: series-workflowkbklz Phase: Succeeded StartedAt: 2026-07-22 16:19:22 +0000 UTC FinishedAt: 2026-07-22 21:09:51 +0000 UTC Input: nil Output: nil --------- Name: series-workflowkbklz[0] Phase: Succeeded StartedAt: 2026-07-22 16:19:22 +0000 UTC FinishedAt: 2026-07-22 16:53:01 +0000 UTC Input: nil Output: nil --------- Name: series-workflowkbklz[0].run-triage Phase: Succeeded StartedAt: 2026-07-22 16:19:22 +0000 UTC FinishedAt: 2026-07-22 16:53:01 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git", "commit_hash": "f5cfb576ce39ba5647024c6d6eeb5b7a822fab6e", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "IPV6", "INET6_AH" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git", "commit_hash": "f5cfb576ce39ba5647024c6d6eeb5b7a822fab6e", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "IPV6", "INET6_AH" ], "series_id": "c19b1309-1a1a-4c4d-8575-7fb52da0112e" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "ah6_output", "ah6_input", "ipv6_clear_mutable_options", "ipv6_rearrange_rthdr" ], "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+CgkJCTx0ZD4yMDI2LzA3LzIyIDE2OjUyPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0lQVjYmIzM0OywKICAgICYjMzQ7SU5FVDZfQUgmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDthaDZfb3V0cHV0JiMzNDssCiAgICAmIzM0O2FoNl9pbnB1dCYjMzQ7LAogICAgJiMzNDtpcHY2X2NsZWFyX211dGFibGVfb3B0aW9ucyYjMzQ7LAogICAgJiMzNDtpcHY2X3JlYXJyYW5nZV9ydGhkciYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIGEgYm91bmRzIGNoZWNrIGluIGBpcHY2X3JlYXJyYW5nZV9ydGhkcmAgdG8gcHJldmVudCBvdXQtb2YtYm91bmRzIGFjY2VzcyB3aGVuIGBzZWdtZW50c19sZWZ0IFx1MDAzZSBzZWdtZW50c2AuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgSVB2NiBBSCAoQXV0aGVudGljYXRpb24gSGVhZGVyKSBwcm9jZXNzaW5nIGxvZ2ljLiBGdXp6aW5nIHNob3VsZCBmb2N1cyBvbiBgYWg2X2lucHV0YCBhbmQgYGFoNl9vdXRwdXRgIHBhdGhzIHdpdGggbWFsZm9ybWVkIHJvdXRpbmcgaGVhZGVycy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMiAxNjo1MjwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IGQ0MmM3NzFkZWJlMTI5Yzg1NjEyZDdhODY3NTA5NDA4ODcwYTIxYTVcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgV2VkIEp1bCAyMiAxNjo1MjoxOCAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9uZXQvaXB2Ni9haDYuYyBiL25ldC9pcHY2L2FoNi5jXG5pbmRleCA3NmY3YTJkZTkxMDhlYi4uMGYwMWRiODAyZjM1MzUgMTAwNjQ0XG4tLS0gYS9uZXQvaXB2Ni9haDYuY1xuJiM0MzsmIzQzOyYjNDM7IGIvbmV0L2lwdjYvYWg2LmNcbkBAIC0yMzMsMjUgJiM0MzsyMzMsMjQgQEAgc3RhdGljIHZvaWQgaXB2Nl9yZWFycmFuZ2VfZGVzdG9wdChzdHJ1Y3QgaXB2NmhkciAqaXBoLCBzdHJ1Y3QgaXB2Nl9vcHRfaGRyICpkZXNcbiAgKlx0c28gdGhhdCB0aGV5IGFwcGVhciBpbiB0aGUgb3JkZXIgdGhleSB3aWxsIGF0IHRoZSBmaW5hbCBkZXN0aW5hdGlvbi5cbiAgKlx0U2VlIEFwcGVuZGl4IEEyIG9mIFJGQyAyNDAyIGZvciBkZXRhaWxzLlxuICAqL1xuLXN0YXRpYyB2b2lkIGlwdjZfcmVhcnJhbmdlX3J0aGRyKHN0cnVjdCBpcHY2aGRyICppcGgsIHN0cnVjdCBpcHY2X3J0X2hkciAqcnRoZHIpXG4mIzQzO3N0YXRpYyBpbnQgaXB2Nl9yZWFycmFuZ2VfcnRoZHIoc3RydWN0IGlwdjZoZHIgKmlwaCwgc3RydWN0IGlwdjZfcnRfaGRyICpydGhkcilcbiB7XG4tXHRpbnQgc2VnbWVudHMsIHNlZ21lbnRzX2xlZnQ7XG4mIzQzO1x0dW5zaWduZWQgaW50IHNlZ21lbnRzLCBzZWdtZW50c19sZWZ0O1xuIFx0c3RydWN0IGluNl9hZGRyICphZGRycztcbiBcdHN0cnVjdCBpbjZfYWRkciBmaW5hbF9hZGRyO1xuIFxuIFx0c2VnbWVudHNfbGVmdCA9IHJ0aGRyLVx1MDAzZXNlZ21lbnRzX2xlZnQ7XG4gXHRpZiAoc2VnbWVudHNfbGVmdCA9PSAwKVxuLVx0XHRyZXR1cm47XG4tXHRydGhkci1cdTAwM2VzZWdtZW50c19sZWZ0ID0gMDtcbiYjNDM7XHRcdHJldHVybiAwO1xuIFxuLVx0LyogVGhlIHZhbHVlIG9mIHJ0aGRyLVx1MDAzZWhkcmxlbiBoYXMgYmVlbiB2ZXJpZmllZCBlaXRoZXIgYnkgdGhlIHN5c3RlbVxuLVx0ICogY2FsbCBpZiBpdCBpcyBsb2NhbGx5IGdlbmVyYXRlZCwgb3IgYnkgaXB2Nl9ydGhkcl9yY3YoKSBmb3IgaW5jb21pbmdcbi1cdCAqIHBhY2tldHMuICBTbyB3ZSBjYW4gYXNzdW1lIHRoYXQgaXQgaXMgZXZlbiBhbmQgdGhhdCBzZWdtZW50cyBpc1xuLVx0ICogZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIHNlZ21lbnRzX2xlZnQuXG4tXHQgKlxuLVx0ICogRm9yIHRoZSBzYW1lIHJlYXNvbiB3ZSBjYW4gYXNzdW1lIHRoYXQgdGhpcyBvcHRpb24gaXMgb2YgdHlwZSAwLlxuJiM0MztcdC8qIFJhdyBsb2NhbGx5IGdlbmVyYXRlZCBwYWNrZXRzIGNhbiByZWFjaCBBSDYgd2l0aG91dCB0aGUgaW52YXJpYW50XG4mIzQzO1x0ICogcmVxdWlyZWQgYnkgdGhlIHJ0MC1zdHlsZSBhZGRyZXNzIHJlYXJyYW5nZW1lbnQgYmVsb3cuXG4gXHQgKi9cbiBcdHNlZ21lbnRzID0gcnRoZHItXHUwMDNlaGRybGVuIFx1MDAzZVx1MDAzZSAxO1xuJiM0MztcdGlmIChzZWdtZW50c19sZWZ0IFx1MDAzZSBzZWdtZW50cylcbiYjNDM7XHRcdHJldHVybiAtRUlOVkFMO1xuJiM0MztcbiYjNDM7XHRydGhkci1cdTAwM2VzZWdtZW50c19sZWZ0ID0gMDtcbiBcbiBcdGFkZHJzID0gKChzdHJ1Y3QgcnQwX2hkciAqKXJ0aGRyKS1cdTAwM2VhZGRyO1xuIFx0ZmluYWxfYWRkciA9IGFkZHJzW3NlZ21lbnRzIC0gMV07XG5AQCAtMjYxLDYgJiM0MzsyNjAsOCBAQCBzdGF0aWMgdm9pZCBpcHY2X3JlYXJyYW5nZV9ydGhkcihzdHJ1Y3QgaXB2NmhkciAqaXBoLCBzdHJ1Y3QgaXB2Nl9ydF9oZHIgKnJ0aGRyKVxuIFxuIFx0YWRkcnNbMF0gPSBpcGgtXHUwMDNlZGFkZHI7XG4gXHRpcGgtXHUwMDNlZGFkZHIgPSBmaW5hbF9hZGRyO1xuJiM0MztcbiYjNDM7XHRyZXR1cm4gMDtcbiB9XG4gXG4gc3RhdGljIGludCBpcHY2X2NsZWFyX211dGFibGVfb3B0aW9ucyhzdHJ1Y3QgaXB2NmhkciAqaXBoLCBpbnQgbGVuLCBpbnQgZGlyKVxuQEAgLTI3Myw2ICYjNDM7Mjc0LDcgQEAgc3RhdGljIGludCBpcHY2X2NsZWFyX211dGFibGVfb3B0aW9ucyhzdHJ1Y3QgaXB2NmhkciAqaXBoLCBpbnQgbGVuLCBpbnQgZGlyKVxuIFx0fSBleHRoZHIgPSB7IC5pcGggPSBpcGggfTtcbiBcdGNoYXIgKmVuZCA9IGV4dGhkci5yYXcgJiM0MzsgbGVuO1xuIFx0aW50IG5leHRoZHIgPSBpcGgtXHUwMDNlbmV4dGhkcjtcbiYjNDM7XHRpbnQgZXJyO1xuIFxuIFx0ZXh0aGRyLmlwaCYjNDM7JiM0Mzs7XG4gXG5AQCAtMjkyLDcgJiM0MzsyOTQsOSBAQCBzdGF0aWMgaW50IGlwdjZfY2xlYXJfbXV0YWJsZV9vcHRpb25zKHN0cnVjdCBpcHY2aGRyICppcGgsIGludCBsZW4sIGludCBkaXIpXG4gXHRcdFx0YnJlYWs7XG4gXG4gXHRcdGNhc2UgTkVYVEhEUl9ST1VUSU5HOlxuLVx0XHRcdGlwdjZfcmVhcnJhbmdlX3J0aGRyKGlwaCwgZXh0aGRyLnJ0aCk7XG4mIzQzO1x0XHRcdGVyciA9IGlwdjZfcmVhcnJhbmdlX3J0aGRyKGlwaCwgZXh0aGRyLnJ0aCk7XG4mIzQzO1x0XHRcdGlmIChlcnIpXG4mIzQzO1x0XHRcdFx0cmV0dXJuIGVycjtcbiBcdFx0XHRicmVhaztcbiBcbiBcdFx0ZGVmYXVsdDpcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMiAxNjo1MjwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7SVBWNiYjMzQ7LAogICAgJiMzNDtJTkVUNl9BSCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2FoNl9vdXRwdXQmIzM0OywKICAgICYjMzQ7YWg2X2lucHV0JiMzNDssCiAgICAmIzM0O2lwdjZfY2xlYXJfbXV0YWJsZV9vcHRpb25zJiMzNDssCiAgICAmIzM0O2lwdjZfcmVhcnJhbmdlX3J0aGRyJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgYSBib3VuZHMgY2hlY2sgaW4gYGlwdjZfcmVhcnJhbmdlX3J0aGRyYCB0byBwcmV2ZW50IG91dC1vZi1ib3VuZHMgYWNjZXNzIHdoZW4gYHNlZ21lbnRzX2xlZnQgXHUwMDNlIHNlZ21lbnRzYC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBJUHY2IEFIIChBdXRoZW50aWNhdGlvbiBIZWFkZXIpIHByb2Nlc3NpbmcgbG9naWMuIEZ1enppbmcgc2hvdWxkIGZvY3VzIG9uIGBhaDZfaW5wdXRgIGFuZCBgYWg2X291dHB1dGAgcGF0aHMgd2l0aCBtYWxmb3JtZWQgcm91dGluZyBoZWFkZXJzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdAogICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksCiAgIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCBkNDJjNzcxZGViZTEyOWM4NTYxMmQ3YTg2NzUwOTQwODg3MGEyMWE1CkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFdlZCBKdWwgMjIgMTY6NTI6MTggMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9uZXQvaXB2Ni9haDYuYyBiL25ldC9pcHY2L2FoNi5jCmluZGV4IDc2ZjdhMmRlOTEwOGViLi4wZjAxZGI4MDJmMzUzNSAxMDA2NDQKLS0tIGEvbmV0L2lwdjYvYWg2LmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L2lwdjYvYWg2LmMKQEAgLTIzMywyNSAmIzQzOzIzMywyNCBAQCBzdGF0aWMgdm9pZCBpcHY2X3JlYXJyYW5nZV9kZXN0b3B0KHN0cnVjdCBpcHY2aGRyICppcGgsIHN0cnVjdCBpcHY2X29wdF9oZHIgKmRlcwogICoJc28gdGhhdCB0aGV5IGFwcGVhciBpbiB0aGUgb3JkZXIgdGhleSB3aWxsIGF0IHRoZSBmaW5hbCBkZXN0aW5hdGlvbi4KICAqCVNlZSBBcHBlbmRpeCBBMiBvZiBSRkMgMjQwMiBmb3IgZGV0YWlscy4KICAqLwotc3RhdGljIHZvaWQgaXB2Nl9yZWFycmFuZ2VfcnRoZHIoc3RydWN0IGlwdjZoZHIgKmlwaCwgc3RydWN0IGlwdjZfcnRfaGRyICpydGhkcikKJiM0MztzdGF0aWMgaW50IGlwdjZfcmVhcnJhbmdlX3J0aGRyKHN0cnVjdCBpcHY2aGRyICppcGgsIHN0cnVjdCBpcHY2X3J0X2hkciAqcnRoZHIpCiB7Ci0JaW50IHNlZ21lbnRzLCBzZWdtZW50c19sZWZ0OwomIzQzOwl1bnNpZ25lZCBpbnQgc2VnbWVudHMsIHNlZ21lbnRzX2xlZnQ7CiAJc3RydWN0IGluNl9hZGRyICphZGRyczsKIAlzdHJ1Y3QgaW42X2FkZHIgZmluYWxfYWRkcjsKIAogCXNlZ21lbnRzX2xlZnQgPSBydGhkci0mZ3Q7c2VnbWVudHNfbGVmdDsKIAlpZiAoc2VnbWVudHNfbGVmdCA9PSAwKQotCQlyZXR1cm47Ci0JcnRoZHItJmd0O3NlZ21lbnRzX2xlZnQgPSAwOwomIzQzOwkJcmV0dXJuIDA7CiAKLQkvKiBUaGUgdmFsdWUgb2YgcnRoZHItJmd0O2hkcmxlbiBoYXMgYmVlbiB2ZXJpZmllZCBlaXRoZXIgYnkgdGhlIHN5c3RlbQotCSAqIGNhbGwgaWYgaXQgaXMgbG9jYWxseSBnZW5lcmF0ZWQsIG9yIGJ5IGlwdjZfcnRoZHJfcmN2KCkgZm9yIGluY29taW5nCi0JICogcGFja2V0cy4gIFNvIHdlIGNhbiBhc3N1bWUgdGhhdCBpdCBpcyBldmVuIGFuZCB0aGF0IHNlZ21lbnRzIGlzCi0JICogZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIHNlZ21lbnRzX2xlZnQuCi0JICoKLQkgKiBGb3IgdGhlIHNhbWUgcmVhc29uIHdlIGNhbiBhc3N1bWUgdGhhdCB0aGlzIG9wdGlvbiBpcyBvZiB0eXBlIDAuCiYjNDM7CS8qIFJhdyBsb2NhbGx5IGdlbmVyYXRlZCBwYWNrZXRzIGNhbiByZWFjaCBBSDYgd2l0aG91dCB0aGUgaW52YXJpYW50CiYjNDM7CSAqIHJlcXVpcmVkIGJ5IHRoZSBydDAtc3R5bGUgYWRkcmVzcyByZWFycmFuZ2VtZW50IGJlbG93LgogCSAqLwogCXNlZ21lbnRzID0gcnRoZHItJmd0O2hkcmxlbiAmZ3Q7Jmd0OyAxOwomIzQzOwlpZiAoc2VnbWVudHNfbGVmdCAmZ3Q7IHNlZ21lbnRzKQomIzQzOwkJcmV0dXJuIC1FSU5WQUw7CiYjNDM7CiYjNDM7CXJ0aGRyLSZndDtzZWdtZW50c19sZWZ0ID0gMDsKIAogCWFkZHJzID0gKChzdHJ1Y3QgcnQwX2hkciAqKXJ0aGRyKS0mZ3Q7YWRkcjsKIAlmaW5hbF9hZGRyID0gYWRkcnNbc2VnbWVudHMgLSAxXTsKQEAgLTI2MSw2ICYjNDM7MjYwLDggQEAgc3RhdGljIHZvaWQgaXB2Nl9yZWFycmFuZ2VfcnRoZHIoc3RydWN0IGlwdjZoZHIgKmlwaCwgc3RydWN0IGlwdjZfcnRfaGRyICpydGhkcikKIAogCWFkZHJzWzBdID0gaXBoLSZndDtkYWRkcjsKIAlpcGgtJmd0O2RhZGRyID0gZmluYWxfYWRkcjsKJiM0MzsKJiM0MzsJcmV0dXJuIDA7CiB9CiAKIHN0YXRpYyBpbnQgaXB2Nl9jbGVhcl9tdXRhYmxlX29wdGlvbnMoc3RydWN0IGlwdjZoZHIgKmlwaCwgaW50IGxlbiwgaW50IGRpcikKQEAgLTI3Myw2ICYjNDM7Mjc0LDcgQEAgc3RhdGljIGludCBpcHY2X2NsZWFyX211dGFibGVfb3B0aW9ucyhzdHJ1Y3QgaXB2NmhkciAqaXBoLCBpbnQgbGVuLCBpbnQgZGlyKQogCX0gZXh0aGRyID0geyAuaXBoID0gaXBoIH07CiAJY2hhciAqZW5kID0gZXh0aGRyLnJhdyAmIzQzOyBsZW47CiAJaW50IG5leHRoZHIgPSBpcGgtJmd0O25leHRoZHI7CiYjNDM7CWludCBlcnI7CiAKIAlleHRoZHIuaXBoJiM0MzsmIzQzOzsKIApAQCAtMjkyLDcgJiM0MzsyOTQsOSBAQCBzdGF0aWMgaW50IGlwdjZfY2xlYXJfbXV0YWJsZV9vcHRpb25zKHN0cnVjdCBpcHY2aGRyICppcGgsIGludCBsZW4sIGludCBkaXIpCiAJCQlicmVhazsKIAogCQljYXNlIE5FWFRIRFJfUk9VVElORzoKLQkJCWlwdjZfcmVhcnJhbmdlX3J0aGRyKGlwaCwgZXh0aGRyLnJ0aCk7CiYjNDM7CQkJZXJyID0gaXB2Nl9yZWFycmFuZ2VfcnRoZHIoaXBoLCBleHRoZHIucnRoKTsKJiM0MzsJCQlpZiAoZXJyKQomIzQzOwkJCQlyZXR1cm4gZXJyOwogCQkJYnJlYWs7CiAKIAkJZGVmYXVsdDoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjIgMTY6NTI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjU5NQoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDE3MgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFNlY3VyaXR5IEltcGxpY2F0aW9ucyBvZiBhIFJlY2VudCBLZXJuZWwgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggdGhhdCB0d2Vha3MgYG5ldC9pcHY2L2FoNi5jYC4gSW1tZWRpYXRlbHksIEkgc2VlIHRoYXQgdGhlIGZ1bmN0aW9uIGBpcHY2X3JlYXJyYW5nZV9ydGhkcmAgaGFzIGJlZW4gY2hhbmdlZC4gSXQmIzM5O3Mgbm93IHJldHVybmluZyBhbiBgaW50YCByYXRoZXIgdGhhbiBgdm9pZGAsIHdoaWNoIGlzIGEgcmVkIGZsYWcsIG1lYW5pbmcgdGhhdCBlcnJvciBoYW5kbGluZyBpcyBiZWluZyBpbnRyb2R1Y2VkLiBUaGUgcGF0Y2ggYWRkcyBhIGNoZWNrIHdpdGhpbiBgaXB2Nl9yZWFycmFuZ2VfcnRoZHJgOgoKYGBgYwoJc2VnbWVudHMgPSBydGhkci0mZ3Q7aGRybGVuICZndDsmZ3Q7IDE7CglpZiAoc2VnbWVudHNfbGVmdCAmZ3Q7IHNlZ21lbnRzKQoJCXJldHVybiAtRUlOVkFMOwpgYGAKClJpZ2h0LCBpdCBsb29rcyBsaWtlIHRoaXMgaXMgYSBib3VuZHMgY2hlY2sgb24gdGhlIG51bWJlciBvZiBzZWdtZW50cyBpbiBhIHJvdXRpbmcgaGVhZGVyLiBUaGlzIHN1Z2dlc3RzIGEgcG90ZW50aWFsIHZ1bG5lcmFiaWxpdHkgcmVsYXRlZCB0byByb3V0aW5nIGhlYWRlciBtYW5pcHVsYXRpb24gaXMgYmVpbmcgYWRkcmVzc2VkLCBhbmQgdGhpcyBjaGVjayBpcyBtZWFudCB0byBtaXRpZ2F0ZSBpdC4KClRoZSBvdGhlciBjaGFuZ2UgbW9kaWZpZXMgYGlwdjZfY2xlYXJfbXV0YWJsZV9vcHRpb25zYCB0byBjaGVjayB0aGUgcmV0dXJuIHZhbHVlIG9mIGBpcHY2X3JlYXJyYW5nZV9ydGhkcmAuIElmIHRoZXJlJiMzOTtzIGFuIGVycm9yIGZyb20gdGhlIHJlYXJyYW5nZSBmdW5jdGlvbiwgYGlwdjZfY2xlYXJfbXV0YWJsZV9vcHRpb25zYCBub3cgcHJvcGFnYXRlcyBpdC4gU21hcnQuIEJ1dCB0aGlzIGlzIHRoZSBjcnVjaWFsIHBhcnQuIE5vdywgSSBuZWVkIHRvIHNlZSAqaG93KiB0aGVzZSBlcnJvcnMgYXJlIGhhbmRsZWQgdXAgdGhlIGNhbGwgc3RhY2suIEFyZSB0aGUgY2FsbGVycyBvZiBgaXB2Nl9jbGVhcl9tdXRhYmxlX29wdGlvbnNgIHByZXBhcmVkIHRvIGhhbmRsZSBwb3RlbnRpYWwgYC1FSU5WQUxgIHJldHVybnM/IFRoYXQmIzM5O3Mgd2hlcmUgdGhlIHJlYWwgc2VjdXJpdHkgaW1wbGljYXRpb25zIGxpZS4gSSBuZWVkIHRvIHRyYWNlIHRob3NlIGZ1bmN0aW9uIGNhbGxzIGFuZCB1bmRlcnN0YW5kIHRoZSBlcnJvciBwcm9wYWdhdGlvbi4gQXJlIHdlIGp1c3QgbG9nZ2luZyB0aGUgZXJyb3IsIG9yIGlzIHRoZSBwYWNrZXQgYmVpbmcgZHJvcHBlZCwgb3Igc29tZXRoaW5nIG1vcmUgc29waGlzdGljYXRlZD8KCkZpcnN0LCBJIHNob3VsZCBzZWUgaWYgdGhlcmUgYXJlIGFueSBjb25maWcgb3B0aW9ucyByZWxhdGVkIHRvIHRoZSBmaWxlIGluIHF1ZXN0aW9uLiBJdCBpcyBvZnRlbiBuZWNlc3NhcnkgdG8gYmUgYXdhcmUgb2YgdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyB0aGF0IGFmZmVjdCB0aGUgc291cmNlIGNvZGUgaW4gcXVlc3Rpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjIgMTY6NTI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7aXB2Nl9jbGVhcl9tdXRhYmxlX29wdGlvbnMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvaXB2Ni9haDYuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvaXB2Ni9haDYuYz0yMzY9c3RhdGljIGludCBpcHY2X3JlYXJyYW5nZV9ydGhkcihzdHJ1Y3QgaXB2NmhkciAqaXBoLCBzdHJ1Y3QgaXB2Nl9ydF9oZHIgKnJ0aGRyKVxuLS1cbm5ldC9pcHY2L2FoNi5jLTI2Ni1cbm5ldC9pcHY2L2FoNi5jOjI2NzpzdGF0aWMgaW50IGlwdjZfY2xlYXJfbXV0YWJsZV9vcHRpb25zKHN0cnVjdCBpcHY2aGRyICppcGgsIGludCBsZW4sIGludCBkaXIpXG5uZXQvaXB2Ni9haDYuYy0yNjgte1xuLS1cbm5ldC9pcHY2L2FoNi5jPTM0Nz1zdGF0aWMgaW50IGFoNl9vdXRwdXQoc3RydWN0IHhmcm1fc3RhdGUgKngsIHN0cnVjdCBza19idWZmICpza2IpXG4tLVxubmV0L2lwdjYvYWg2LmMtNDEzLVx0aWYgKGV4dGxlbikge1xubmV0L2lwdjYvYWg2LmM6NDE0Olx0XHRlcnIgPSBpcHY2X2NsZWFyX211dGFibGVfb3B0aW9ucyh0b3BfaXBoLFxubmV0L2lwdjYvYWg2LmMtNDE1LVx0XHRcdFx0XHRcdCBleHRsZW4gLSBzaXplb2YoKmlwaF9leHQpICYjNDM7XG4tLVxubmV0L2lwdjYvYWg2LmM9NTE2PXN0YXRpYyBpbnQgYWg2X2lucHV0KHN0cnVjdCB4ZnJtX3N0YXRlICp4LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuLS1cbm5ldC9pcHY2L2FoNi5jLTYxMC1cbm5ldC9pcHY2L2FoNi5jOjYxMTpcdGVyciA9IGlwdjZfY2xlYXJfbXV0YWJsZV9vcHRpb25zKGlwNmgsIGhkcl9sZW4sIFhGUk1fUE9MSUNZX0lOKTtcbm5ldC9pcHY2L2FoNi5jLTYxMi1cdGlmIChlcnIpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjIgMTY6NTI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzU0NQoJCQkJCQkJb3V0cHV0OiAzMAoJCQkJCQkJdGhvdWdodHM6IDQwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCBwcmVzZW50ZWQgYXMgYSBwZXJzb25hbCB0aG91Z2h0IHByb2Nlc3MsIGFzIHJlcXVlc3RlZDoKCioqRGVidWdnaW5nIE5ldHdvcmsgQXV0aGVudGljYXRpb24gSGVhZGVyIChBSCkgSXNzdWVzKioKClJpZ2h0LCBzbyBJJiMzOTttIHNlZWluZyBhbiBpc3N1ZSwgYW5kIGl0IGxvb2tzIGxpa2UgdGhlIGBhaDZfb3V0cHV0YCBhbmQgYGFoNl9pbnB1dGAgZnVuY3Rpb25zIGFyZSB3aGVyZSB0aGUgZXJyb3IgaGFuZGxpbmcgaXMgaGFwcGVuaW5nLiBUaGF0JiMzOTtzIGEgZ29vZCBzdGFydGluZyBwb2ludC4gTXkgZ3V0IHRlbGxzIG1lIHRoaXMgaXMgc29tZXRoaW5nIHNwZWNpZmljIHRvIElQdjYgYXV0aGVudGljYXRpb24uIEJlZm9yZSBJIGRpdmUgZGVlcCBpbnRvIHRob3NlIGZ1bmN0aW9ucyB0aG91Z2gsIGl0JiMzOTtzIGFsd2F5cyB3b3J0aCB2ZXJpZnlpbmcgdGhlIGNvbmZpZ3VyYXRpb24gZmlyc3QsIGdpdmVuIHRoZSBudWFuY2VzIGludm9sdmVkIHdpdGggQUguIExldCYjMzk7cyBzdGFydCBieSBkb3VibGUtY2hlY2tpbmcgdGhlIHJlbGV2YW50IGNvbmZpZ3VyYXRpb24gb3B0aW9ucyByZWxhdGVkIHRvIGBuZXQvaXB2Ni9haDYuY2AuIEkgbmVlZCB0byBlbnN1cmUgdGhlIGV4cGVjdGVkIGZlYXR1cmVzIGFyZSBlbmFibGVkIChvciBkaXNhYmxlZCwgZGVwZW5kaW5nIG9uIHRoZSBzY2VuYXJpbykuIEEgcXVpY2sgbG9vayBhdCB0aGUgY29uZmlndXJhdGlvbiB3aWxsIHF1aWNrbHkgdGVsbCBtZSBpZiBhbnkgZXhwZWN0ZWQgY29uZmlndXJhdGlvbnMgaGF2ZSBiZWVuIG1pc3NlZC4gVGhhdCBjb3VsZCBiZSBhIHNvdXJjZSBvZiB0aGUgY3VycmVudCBiZWhhdmlvci4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMiAxNjo1MjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDthaDYubyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9pcHY2L01ha2VmaWxlJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9pcHY2L01ha2VmaWxlPTI4PWlwdjYtJChDT05GSUdfSVBWNl9JT0FNNl9MV1RVTk5FTCkgJiM0Mzs9IGlvYW02X2lwdHVubmVsLm9cbm5ldC9pcHY2L01ha2VmaWxlLTI5LVxubmV0L2lwdjYvTWFrZWZpbGU6MzA6b2JqLSQoQ09ORklHX0lORVQ2X0FIKSAmIzQzOz0gYWg2Lm9cbm5ldC9pcHY2L01ha2VmaWxlLTMxLW9iai0kKENPTkZJR19JTkVUNl9FU1ApICYjNDM7PSBlc3A2Lm9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMiAxNjo1MjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzOTE3CgkJCQkJCQlvdXRwdXQ6IDMzCgkJCQkJCQl0aG91Z2h0czogMzYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkV4YW1pbmluZyBJTkVUNl9BSCBDb25maWd1cmF0aW9uKioKCkFscmlnaHQsIHNvIHRoZSBrZXkgY29uZmlndXJhdGlvbiBpdGVtIGluIHBsYXkgaGVyZSBpcyBgSU5FVDZfQUhgLiBJIG5lZWQgdG8gcXVpY2tseSBlc3RhYmxpc2ggdGhlIGNvbnRleHQuIExldCBtZSBqdXN0IHNjYW4gZm9yIG90aGVyIHJlbGV2YW50IGNvbmZpZyBvcHRpb25zIGluIHRoaXMgYXJlYS4gTXkgaW1tZWRpYXRlIGFzc3VtcHRpb24sIGFuZCBpdCYjMzk7cyBwcmFjdGljYWxseSBhIGdpdmVuLCBpcyB0aGF0IGBJUFY2YCBpdHNlbGYgaXMgYSBwcmVyZXF1aXNpdGUuIFdlJiMzOTtyZSBkZWFsaW5nIHdpdGggQUggb3ZlciBJUHY2LCBzbyB0aGF0IGZvdW5kYXRpb24gaGFzIHRvIGJlIGluIHBsYWNlIGZpcnN0LiBCZXN0IHRvIGNvbmZpcm0gdGhhdCBkZXBlbmRlbmN5IGV4cGxpY2l0bHksIHRob3VnaCwganVzdCB0byBiZSB0aG9yb3VnaCBhbmQgYXZvaWQgYW55IGdvdGNoYXMuIEkgbmVlZCB0byBkb2N1bWVudCB0aGlzIHByb3Blcmx5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIyIDE2OjUyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBJTkVUNl9BSCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9pcHY2L0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L2lwdjYvS2NvbmZpZz0zOT1jb25maWcgSVBWNl9PUFRJTUlTVElDX0RBRFxuLS1cbm5ldC9pcHY2L0tjb25maWctNDYtXG5uZXQvaXB2Ni9LY29uZmlnOjQ3OmNvbmZpZyBJTkVUNl9BSFxubmV0L2lwdjYvS2NvbmZpZy00OC1cdHRyaXN0YXRlIFwmIzM0O0lQdjY6IEFIIHRyYW5zZm9ybWF0aW9uXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjIgMTY6NTI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDIxMQoJCQkJCQkJb3V0cHV0OiAzMwoJCQkJCQkJdGhvdWdodHM6IDE1NQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFNlY3VyaXR5IEFzc29jaWF0aW9uIENvbmZpZ3VyYXRpb24qKgoKT2theSwgc28gdGhlIGNvbmZpZ3VyYXRpb24gaXMgc2V0IHRvIGBJTkVUNl9BSGAsIHdoaWNoIG1lYW5zIHdlJiMzOTtyZSBkZWFsaW5nIHdpdGggQXV0aGVudGljYXRpb24gSGVhZGVyIG92ZXIgSVB2Ni4gVGhpcyBwYXRjaCBpcyB0b3VjaGluZyB0d28ga2V5IGZ1bmN0aW9ucywgYGlwdjZfcmVhcnJhbmdlX3J0aGRyYCBhbmQgYGlwdjZfY2xlYXJfbXV0YWJsZV9vcHRpb25zYCwgd2hpY2ggYXJlIHBhcnQgb2YgdGhlIElQdjYgcHJvY2Vzc2luZy4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsIGFyZSB0aGVzZSB0aGUgcmlnaHQgZnVuY3Rpb25zPwoKVGhlIGluaXRpYWwgZm9jdXMgc3ltYm9scyBzaG91bGQgaW5jbHVkZSBgaXB2Nl9yZWFycmFuZ2VfcnRoZHJgLCBgaXB2Nl9jbGVhcl9tdXRhYmxlX29wdGlvbnNgLCBhbmQgdGhlIEFILXNwZWNpZmljIGZ1bmN0aW9ucyBgYWg2X291dHB1dGAgYW5kIGBhaDZfaW5wdXRgLiBIb2xkIG9uLCBJIG5lZWQgdG8gcmVtZW1iZXIgLSBib3RoIGBpcHY2X3JlYXJyYW5nZV9ydGhkcmAgYW5kIGBpcHY2X2NsZWFyX211dGFibGVfb3B0aW9uc2AgYXJlIGRlY2xhcmVkIHN0YXRpYy4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBJIGFtIG5vdCBtaXNzaW5nIGFueXRoaW5nIHRoYXQgd291bGQgYmUgdXNpbmcgdGhlbS4gQWxzbywgYGFoNl9vdXRwdXRgIGFuZCBgYWg2X2lucHV0YCBhcmUgc3RhdGljIGFzIHdlbGwuIEJ1dCB3YWl0LCBhcmVuJiMzOTt0IHRob3NlIHJlZ2lzdGVyZWQgc29tZXdoZXJlLCBtYXliZSB3aXRoaW4gYHhmcm1fc3RhdGVfYWZpbmZvYCBvciBzb21ldGhpbmcgc2ltaWxhcj8gWWVzLCB0aGV5IGFyZSEgT2theSwgc28gSSBuZWVkIHRvIGRpZyBpbnRvIGBhaDZfb3V0cHV0YCBhbmQgYGFoNl9pbnB1dGAgdG8gdHJhY2UgdGhlaXIgdXNhZ2UuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIyIDE2OjUyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2FoNl9vdXRwdXQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvaXB2Ni9haDYuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvaXB2Ni9haDYuYz0yNjc9c3RhdGljIGludCBpcHY2X2NsZWFyX211dGFibGVfb3B0aW9ucyhzdHJ1Y3QgaXB2NmhkciAqaXBoLCBpbnQgbGVuLCBpbnQgZGlyKVxuLS1cbm5ldC9pcHY2L2FoNi5jLTMxMi1cbm5ldC9pcHY2L2FoNi5jOjMxMzpzdGF0aWMgdm9pZCBhaDZfb3V0cHV0X2RvbmUodm9pZCAqZGF0YSwgaW50IGVycilcbm5ldC9pcHY2L2FoNi5jLTMxNC17XG4tLVxubmV0L2lwdjYvYWg2LmMtMzQ2LVxubmV0L2lwdjYvYWg2LmM6MzQ3OnN0YXRpYyBpbnQgYWg2X291dHB1dChzdHJ1Y3QgeGZybV9zdGF0ZSAqeCwgc3RydWN0IHNrX2J1ZmYgKnNrYilcbm5ldC9pcHY2L2FoNi5jLTM0OC17XG4tLVxubmV0L2lwdjYvYWg2LmMtNDQ2LVx0YWhhc2hfcmVxdWVzdF9zZXRfY3J5cHQocmVxLCBzZywgaWN2LCBza2ItXHUwMDNlbGVuICYjNDM7IHNlcWhpX2xlbik7XG5uZXQvaXB2Ni9haDYuYzo0NDc6XHRhaGFzaF9yZXF1ZXN0X3NldF9jYWxsYmFjayhyZXEsIDAsIGFoNl9vdXRwdXRfZG9uZSwgc2tiKTtcbm5ldC9pcHY2L2FoNi5jLTQ0OC1cbi0tXG5uZXQvaXB2Ni9haDYuYz03ODQ9c3RhdGljIGNvbnN0IHN0cnVjdCB4ZnJtX3R5cGUgYWg2X3R5cGUgPSB7XG4tLVxubmV0L2lwdjYvYWg2LmMtNzkwLVx0LmlucHV0XHRcdD0gYWg2X2lucHV0LFxubmV0L2lwdjYvYWg2LmM6NzkxOlx0Lm91dHB1dFx0XHQ9IGFoNl9vdXRwdXQsXG5uZXQvaXB2Ni9haDYuYy03OTItfTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjIgMTY6NTI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTA0MAoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDExNwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBSZWNlbnQgSVB2NiBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgbXkgaW5pdGlhbCByZWFjdGlvbiBpcyB0aGF0IGl0JiMzOTtzIHRhcmdldGluZyBhIHByZXR0eSBuYXN0eSBwb3RlbnRpYWwgdnVsbmVyYWJpbGl0eS4gVGhlIGZvY3VzIHN5bWJvbHMgZ2l2ZSBtZSBhIGdvb2QgaGFuZGxlIG9uIHdoZXJlIHRvIGxvb2sg4oCTIGBhaDZfb3V0cHV0YCwgYGFoNl9pbnB1dGAsIGBpcHY2X3JlYXJyYW5nZV9ydGhkcmAsIGFuZCBgaXB2Nl9jbGVhcl9tdXRhYmxlX29wdGlvbnNgLiBJdCBzZWVtcyB0aGUgY29yZSBwcm9ibGVtIGxpZXMgd2l0aGluIGBpcHY2X3JlYXJyYW5nZV9ydGhkcmAsIHNwZWNpZmljYWxseSB0aGUgY29uZGl0aW9uIHdoZXJlIGBzZWdtZW50c19sZWZ0YCBzb21laG93IGJlY29tZXMgZ3JlYXRlciB0aGFuIGBzZWdtZW50c2AuIFRoYXQgc2NyZWFtcyBvdXQtb2YtYm91bmRzIGFjY2Vzcywgd2hpY2ggaXMgc29tZXRoaW5nIEkgd2FudCB0byBuaXAgaW4gdGhlIGJ1ZCBpbW1lZGlhdGVseS4KCk15IGd1dCB0ZWxscyBtZSB0aGlzIGlzIGZ1bmN0aW9uYWxseSBzb3VuZDsgZml4aW5nIHRoYXQga2luZCBvZiBtZW1vcnkgYWNjZXNzIGJ1ZyBpcyBhbHdheXMgYSBnb29kIHRoaW5nLiBEZWZpbml0ZWx5IHdvcnRoIHNvbWUgc2VyaW91cyBmdXp6aW5nIGFmdGVyIEkgY29uZmlybSBteSB1bmRlcnN0YW5kaW5nLiBJIHNob3VsZCBhbHNvIG5vdGUgZG93biB0aGUgcmVxdWlyZWQgY29uZmlndXJhdGlvbnMgZm9yIHRoaXMgcGF0Y2ggdG8gZnVuY3Rpb246IGBJTkVUNl9BSGAgYW5kIGBJUFY2YC4KCkp1c3QgdG8gYmUgdGhvcm91Z2gsIEkgc2hvdWxkIGRvdWJsZS1jaGVjayBkZXBlbmRlbmNpZXMuIEkmIzM5O2xsIHF1aWNrbHkgdmVyaWZ5IHRoYXQgYElORVQ2X0FIYCBkb2VzbiYjMzk7dCBoYXZlIGFueSBoaWRkZW4gZGVwZW5kZW5jaWVzIHRoYXQgY291bGQgY29tcGxpY2F0ZSB0aGluZ3MgZG93biB0aGUgbGluZS4gV2UgZG9uJiMzOTt0IHdhbnQgYW55IHVuZXhwZWN0ZWQgaW50ZXJhY3Rpb25zIG9yIHNpZGUgZWZmZWN0cy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjIgMTY6NTI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtuZXQvaXB2Ni9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogNDcsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICA0NzpcdGNvbmZpZyBJTkVUNl9BSFxuICA0ODpcdFx0dHJpc3RhdGUgXCYjMzQ7SVB2NjogQUggdHJhbnNmb3JtYXRpb25cJiMzNDtcbiAgNDk6XHRcdHNlbGVjdCBYRlJNX0FIXG4gIDUwOlx0XHRoZWxwXG4gIDUxOlx0XHQgIFN1cHBvcnQgZm9yIElQc2VjIEFIIChBdXRoZW50aWNhdGlvbiBIZWFkZXIpLlxuICA1MjpcdFxuICA1MzpcdFx0ICBBSCBjYW4gYmUgdXNlZCB3aXRoIHZhcmlvdXMgYXV0aGVudGljYXRpb24gYWxnb3JpdGhtcy4gIEJlc2lkZXNcbiAgNTQ6XHRcdCAgZW5hYmxpbmcgQUggc3VwcG9ydCBpdHNlbGYsIHRoaXMgb3B0aW9uIGVuYWJsZXMgdGhlIGdlbmVyaWNcbiAgNTU6XHRcdCAgaW1wbGVtZW50YXRpb25zIG9mIHRoZSBhbGdvcml0aG1zIHRoYXQgUkZDIDgyMjEgbGlzdHMgYXMgTVVTVCBiZVxuICA1NjpcdFx0ICBpbXBsZW1lbnRlZC4gIElmIHlvdSBuZWVkIGFueSBvdGhlciBhbGdvcml0aG1zLCB5b3UmIzM5O2xsIG5lZWQgdG8gZW5hYmxlXG4gIDU3Olx0XHQgIHRoZW0gaW4gdGhlIGNyeXB0byBBUEkuICBZb3Ugc2hvdWxkIGFsc28gZW5hYmxlIGFjY2VsZXJhdGVkXG4gIDU4Olx0XHQgIGltcGxlbWVudGF0aW9ucyBvZiBhbnkgbmVlZGVkIGFsZ29yaXRobXMgd2hlbiBhdmFpbGFibGUuXG4gIDU5Olx0XG4gIDYwOlx0XHQgIElmIHVuc3VyZSwgc2F5IFkuXG4gIDYxOlx0XG4gIDYyOlx0Y29uZmlnIElORVQ2X0VTUFxuICA2MzpcdFx0dHJpc3RhdGUgXCYjMzQ7SVB2NjogRVNQIHRyYW5zZm9ybWF0aW9uXCYjMzQ7XG4gIDY0Olx0XHRzZWxlY3QgWEZSTV9FU1BcbiAgNjU6XHRcdGhlbHBcbiAgNjY6XHRcdCAgU3VwcG9ydCBmb3IgSVBzZWMgRVNQIChFbmNhcHN1bGF0aW5nIFNlY3VyaXR5IFBheWxvYWQpLlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMiAxNjo1MjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1NzMxCgkJCQkJCQlvdXRwdXQ6IDE1NQoJCQkJCQkJdGhvdWdodHM6IDE5OQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBbmFseXNpcyBvZiB0aGUgSVB2NiBBSCBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgbXkgaW5pdGlhbCB0aG91Z2h0IGlzLCB0aGUgYElORVQ2X0FIYCBjb25maWcgaXMgbmVzdGVkIHdpdGhpbiB0aGUgYElQVjZgIGJsb2NrIGluIGBuZXQvaXB2Ni9LY29uZmlnYC4gVGhhdCBtZWFucyBib3RoIGBJUFY2YCBhbmQgYElORVQ2X0FIYCBhcmUgcmVsZXZhbnQgY29uZmlndXJhdGlvbnMgaGVyZS4gV2UmIzM5O3JlIGRlYWxpbmcgd2l0aCBJUHY2IEF1dGhlbnRpY2F0aW9uIEhlYWRlciBmdW5jdGlvbmFsaXR5LCBzbyBteSByYWRhciBpcyB1cC4KCk5vdywgbGV0JiMzOTtzIHNlZSwgYGlwdjZfcmVhcnJhbmdlX3J0aGRyYC4uLiBpcyBpdCBzdGF0aWM/IFl1cCwgaXQgaXMuIFRoYXQmIzM5O3MgZ29vZCBpbnRlbC4gS25vd2luZyBpdCYjMzk7cyBzdGF0aWMsIGNvbWJpbmVkIHdpdGggdGhlIGNvbnRleHQgb2YgdGhlIHBhdGNoLCB0ZWxscyBtZSB0aGF0IGBhaDZfb3V0cHV0YCwgYGFoNl9pbnB1dGAsIGBpcHY2X2NsZWFyX211dGFibGVfb3B0aW9uc2AsIGFuZCBgaXB2Nl9yZWFycmFuZ2VfcnRoZHJgIGFyZSBhbGwgcHJpbWUgdGFyZ2V0cyBmb3IgZnV6emluZy4gVGhleSBhcmUgYWxsIGludm9sdmVkIGluIGNyaXRpY2FsIGFzcGVjdHMgb2YgdGhlIEFIIHByb2Nlc3MuCgpUaGUgcmVhc29uaW5nIGJlaGluZCB0aGlzIGlzLCB0aGUgcGF0Y2ggaXRzZWxmIGludHJvZHVjZXMgYSBjcnVjaWFsIGJvdW5kcyBjaGVjayB3aXRoaW4gYGlwdjZfcmVhcnJhbmdlX3J0aGRyYC4gU3BlY2lmaWNhbGx5LCBpdCBhZGRyZXNzZXMgYW4gb3V0LW9mLWJvdW5kcyBhY2Nlc3MgaXNzdWUgd2hlbiBgc2VnbWVudHNfbGVmdGAgZXhjZWVkcyBgc2VnbWVudHNgLiBUaGF0JiMzOTtzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgZGlyZWN0bHkgaW1wYWN0aW5nIGhvdyB0aGUgSVB2NiBBSCBwcm9jZXNzZXMgcGFja2V0cy4gVGhlcmVmb3JlLCBmdXp6aW5nIHRoZSBpbnB1dCBhbmQgb3V0cHV0IHBhdGhzIG9mIGBhaDZfaW5wdXRgIGFuZCBgYWg2X291dHB1dGAsIHBhcnRpY3VsYXJseSB3aXRoIGludGVudGlvbmFsbHkgbWFsZm9ybWVkIHJvdXRpbmcgaGVhZGVycywgaXMgdGhlIGtleSB0byBlZmZlY3RpdmVseSB0ZXN0IHRoaXMgcGF0Y2guIFdlIHNob3VsZCBmb2N1cyBvbiBjcmFmdGluZyBmdXp6ZXIgaW5wdXRzIHRvIHRyaWdnZXIgdGhhdCBgc2VnbWVudHNfbGVmdGAgY29uZGl0aW9uIHRvIHNlZSBpZiB0aGUgY2hlY2sgd29ya3MgY29ycmVjdGx5LgoKQWxyaWdodCwgdGltZSB0byBnZXQgdGhvc2UgZnV6emVycyByZWFkeSBhbmQgc2V0IHVwIGZvciB0aGUgQUggaW5wdXQgYW5kIG91dHB1dCBwYXRocyEKCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjIgMTY6NTI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0lQVjYmIzM0OywKICAgICYjMzQ7SU5FVDZfQUgmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDthaDZfb3V0cHV0JiMzNDssCiAgICAmIzM0O2FoNl9pbnB1dCYjMzQ7LAogICAgJiMzNDtpcHY2X2NsZWFyX211dGFibGVfb3B0aW9ucyYjMzQ7LAogICAgJiMzNDtpcHY2X3JlYXJyYW5nZV9ydGhkciYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIGEgYm91bmRzIGNoZWNrIGluIGBpcHY2X3JlYXJyYW5nZV9ydGhkcmAgdG8gcHJldmVudCBvdXQtb2YtYm91bmRzIGFjY2VzcyB3aGVuIGBzZWdtZW50c19sZWZ0IFx1MDAzZSBzZWdtZW50c2AuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgSVB2NiBBSCAoQXV0aGVudGljYXRpb24gSGVhZGVyKSBwcm9jZXNzaW5nIGxvZ2ljLiBGdXp6aW5nIHNob3VsZCBmb2N1cyBvbiBgYWg2X2lucHV0YCBhbmQgYGFoNl9vdXRwdXRgIHBhdGhzIHdpdGggbWFsZm9ybWVkIHJvdXRpbmcgaGVhZGVycy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7SVBWNiYjMzQ7LAogICAgJiMzNDtJTkVUNl9BSCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2FoNl9vdXRwdXQmIzM0OywKICAgICYjMzQ7YWg2X2lucHV0JiMzNDssCiAgICAmIzM0O2lwdjZfY2xlYXJfbXV0YWJsZV9vcHRpb25zJiMzNDssCiAgICAmIzM0O2lwdjZfcmVhcnJhbmdlX3J0aGRyJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgYSBib3VuZHMgY2hlY2sgaW4gYGlwdjZfcmVhcnJhbmdlX3J0aGRyYCB0byBwcmV2ZW50IG91dC1vZi1ib3VuZHMgYWNjZXNzIHdoZW4gYHNlZ21lbnRzX2xlZnQgXHUwMDNlIHNlZ21lbnRzYC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBJUHY2IEFIIChBdXRoZW50aWNhdGlvbiBIZWFkZXIpIHByb2Nlc3NpbmcgbG9naWMuIEZ1enppbmcgc2hvdWxkIGZvY3VzIG9uIGBhaDZfaW5wdXRgIGFuZCBgYWg2X291dHB1dGAgcGF0aHMgd2l0aCBtYWxmb3JtZWQgcm91dGluZyBoZWFkZXJzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDctMjJUMTY6NTI6MjAuNzkyMTY1NjE2WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Mjg1MzE1NzU1NDksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiSVBWNlwiLFxuICAgIFwiSU5FVDZfQUhcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJhaDZfb3V0cHV0XCIsXG4gICAgXCJhaDZfaW5wdXRcIixcbiAgICBcImlwdjZfY2xlYXJfbXV0YWJsZV9vcHRpb25zXCIsXG4gICAgXCJpcHY2X3JlYXJyYW5nZV9ydGhkclwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgYSBib3VuZHMgY2hlY2sgaW4gYGlwdjZfcmVhcnJhbmdlX3J0aGRyYCB0byBwcmV2ZW50IG91dC1vZi1ib3VuZHMgYWNjZXNzIHdoZW4gYHNlZ21lbnRzX2xlZnQgXFx1MDAzZSBzZWdtZW50c2AuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgSVB2NiBBSCAoQXV0aGVudGljYXRpb24gSGVhZGVyKSBwcm9jZXNzaW5nIGxvZ2ljLiBGdXp6aW5nIHNob3VsZCBmb2N1cyBvbiBgYWg2X2lucHV0YCBhbmQgYGFoNl9vdXRwdXRgIHBhdGhzIHdpdGggbWFsZm9ybWVkIHJvdXRpbmcgaGVhZGVycy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjJUMTY6NTI6MjAuNzkyMTcyMTE2WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2Mjk0ODAyNzEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCBkNDJjNzcxZGViZTEyOWM4NTYxMmQ3YTg2NzUwOTQwODg3MGEyMWE1XFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBXZWQgSnVsIDIyIDE2OjUyOjE4IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL25ldC9pcHY2L2FoNi5jIGIvbmV0L2lwdjYvYWg2LmNcXG5pbmRleCA3NmY3YTJkZTkxMDhlYi4uMGYwMWRiODAyZjM1MzUgMTAwNjQ0XFxuLS0tIGEvbmV0L2lwdjYvYWg2LmNcXG4rKysgYi9uZXQvaXB2Ni9haDYuY1xcbkBAIC0yMzMsMjUgKzIzMywyNCBAQCBzdGF0aWMgdm9pZCBpcHY2X3JlYXJyYW5nZV9kZXN0b3B0KHN0cnVjdCBpcHY2aGRyICppcGgsIHN0cnVjdCBpcHY2X29wdF9oZHIgKmRlc1xcbiAgKlxcdHNvIHRoYXQgdGhleSBhcHBlYXIgaW4gdGhlIG9yZGVyIHRoZXkgd2lsbCBhdCB0aGUgZmluYWwgZGVzdGluYXRpb24uXFxuICAqXFx0U2VlIEFwcGVuZGl4IEEyIG9mIFJGQyAyNDAyIGZvciBkZXRhaWxzLlxcbiAgKi9cXG4tc3RhdGljIHZvaWQgaXB2Nl9yZWFycmFuZ2VfcnRoZHIoc3RydWN0IGlwdjZoZHIgKmlwaCwgc3RydWN0IGlwdjZfcnRfaGRyICpydGhkcilcXG4rc3RhdGljIGludCBpcHY2X3JlYXJyYW5nZV9ydGhkcihzdHJ1Y3QgaXB2NmhkciAqaXBoLCBzdHJ1Y3QgaXB2Nl9ydF9oZHIgKnJ0aGRyKVxcbiB7XFxuLVxcdGludCBzZWdtZW50cywgc2VnbWVudHNfbGVmdDtcXG4rXFx0dW5zaWduZWQgaW50IHNlZ21lbnRzLCBzZWdtZW50c19sZWZ0O1xcbiBcXHRzdHJ1Y3QgaW42X2FkZHIgKmFkZHJzO1xcbiBcXHRzdHJ1Y3QgaW42X2FkZHIgZmluYWxfYWRkcjtcXG4gXFxuIFxcdHNlZ21lbnRzX2xlZnQgPSBydGhkci1cXHUwMDNlc2VnbWVudHNfbGVmdDtcXG4gXFx0aWYgKHNlZ21lbnRzX2xlZnQgPT0gMClcXG4tXFx0XFx0cmV0dXJuO1xcbi1cXHRydGhkci1cXHUwMDNlc2VnbWVudHNfbGVmdCA9IDA7XFxuK1xcdFxcdHJldHVybiAwO1xcbiBcXG4tXFx0LyogVGhlIHZhbHVlIG9mIHJ0aGRyLVxcdTAwM2VoZHJsZW4gaGFzIGJlZW4gdmVyaWZpZWQgZWl0aGVyIGJ5IHRoZSBzeXN0ZW1cXG4tXFx0ICogY2FsbCBpZiBpdCBpcyBsb2NhbGx5IGdlbmVyYXRlZCwgb3IgYnkgaXB2Nl9ydGhkcl9yY3YoKSBmb3IgaW5jb21pbmdcXG4tXFx0ICogcGFja2V0cy4gIFNvIHdlIGNhbiBhc3N1bWUgdGhhdCBpdCBpcyBldmVuIGFuZCB0aGF0IHNlZ21lbnRzIGlzXFxuLVxcdCAqIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byBzZWdtZW50c19sZWZ0Llxcbi1cXHQgKlxcbi1cXHQgKiBGb3IgdGhlIHNhbWUgcmVhc29uIHdlIGNhbiBhc3N1bWUgdGhhdCB0aGlzIG9wdGlvbiBpcyBvZiB0eXBlIDAuXFxuK1xcdC8qIFJhdyBsb2NhbGx5IGdlbmVyYXRlZCBwYWNrZXRzIGNhbiByZWFjaCBBSDYgd2l0aG91dCB0aGUgaW52YXJpYW50XFxuK1xcdCAqIHJlcXVpcmVkIGJ5IHRoZSBydDAtc3R5bGUgYWRkcmVzcyByZWFycmFuZ2VtZW50IGJlbG93LlxcbiBcXHQgKi9cXG4gXFx0c2VnbWVudHMgPSBydGhkci1cXHUwMDNlaGRybGVuIFxcdTAwM2VcXHUwMDNlIDE7XFxuK1xcdGlmIChzZWdtZW50c19sZWZ0IFxcdTAwM2Ugc2VnbWVudHMpXFxuK1xcdFxcdHJldHVybiAtRUlOVkFMO1xcbitcXG4rXFx0cnRoZHItXFx1MDAzZXNlZ21lbnRzX2xlZnQgPSAwO1xcbiBcXG4gXFx0YWRkcnMgPSAoKHN0cnVjdCBydDBfaGRyICopcnRoZHIpLVxcdTAwM2VhZGRyO1xcbiBcXHRmaW5hbF9hZGRyID0gYWRkcnNbc2VnbWVudHMgLSAxXTtcXG5AQCAtMjYxLDYgKzI2MCw4IEBAIHN0YXRpYyB2b2lkIGlwdjZfcmVhcnJhbmdlX3J0aGRyKHN0cnVjdCBpcHY2aGRyICppcGgsIHN0cnVjdCBpcHY2X3J0X2hkciAqcnRoZHIpXFxuIFxcbiBcXHRhZGRyc1swXSA9IGlwaC1cXHUwMDNlZGFkZHI7XFxuIFxcdGlwaC1cXHUwMDNlZGFkZHIgPSBmaW5hbF9hZGRyO1xcbitcXG4rXFx0cmV0dXJuIDA7XFxuIH1cXG4gXFxuIHN0YXRpYyBpbnQgaXB2Nl9jbGVhcl9tdXRhYmxlX29wdGlvbnMoc3RydWN0IGlwdjZoZHIgKmlwaCwgaW50IGxlbiwgaW50IGRpcilcXG5AQCAtMjczLDYgKzI3NCw3IEBAIHN0YXRpYyBpbnQgaXB2Nl9jbGVhcl9tdXRhYmxlX29wdGlvbnMoc3RydWN0IGlwdjZoZHIgKmlwaCwgaW50IGxlbiwgaW50IGRpcilcXG4gXFx0fSBleHRoZHIgPSB7IC5pcGggPSBpcGggfTtcXG4gXFx0Y2hhciAqZW5kID0gZXh0aGRyLnJhdyArIGxlbjtcXG4gXFx0aW50IG5leHRoZHIgPSBpcGgtXFx1MDAzZW5leHRoZHI7XFxuK1xcdGludCBlcnI7XFxuIFxcbiBcXHRleHRoZHIuaXBoKys7XFxuIFxcbkBAIC0yOTIsNyArMjk0LDkgQEAgc3RhdGljIGludCBpcHY2X2NsZWFyX211dGFibGVfb3B0aW9ucyhzdHJ1Y3QgaXB2NmhkciAqaXBoLCBpbnQgbGVuLCBpbnQgZGlyKVxcbiBcXHRcXHRcXHRicmVhaztcXG4gXFxuIFxcdFxcdGNhc2UgTkVYVEhEUl9ST1VUSU5HOlxcbi1cXHRcXHRcXHRpcHY2X3JlYXJyYW5nZV9ydGhkcihpcGgsIGV4dGhkci5ydGgpO1xcbitcXHRcXHRcXHRlcnIgPSBpcHY2X3JlYXJyYW5nZV9ydGhkcihpcGgsIGV4dGhkci5ydGgpO1xcbitcXHRcXHRcXHRpZiAoZXJyKVxcbitcXHRcXHRcXHRcXHRyZXR1cm4gZXJyO1xcbiBcXHRcXHRcXHRicmVhaztcXG4gXFxuIFxcdFxcdGRlZmF1bHQ6XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIyVDE2OjUyOjIxLjQyMjU0NTQwNloiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjI3OTAxMTgwNjg5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIklQVjZcIixcbiAgICBcIklORVQ2X0FIXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiYWg2X291dHB1dFwiLFxuICAgIFwiYWg2X2lucHV0XCIsXG4gICAgXCJpcHY2X2NsZWFyX211dGFibGVfb3B0aW9uc1wiLFxuICAgIFwiaXB2Nl9yZWFycmFuZ2VfcnRoZHJcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIGEgYm91bmRzIGNoZWNrIGluIGBpcHY2X3JlYXJyYW5nZV9ydGhkcmAgdG8gcHJldmVudCBvdXQtb2YtYm91bmRzIGFjY2VzcyB3aGVuIGBzZWdtZW50c19sZWZ0IFxcdTAwM2Ugc2VnbWVudHNgLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIElQdjYgQUggKEF1dGhlbnRpY2F0aW9uIEhlYWRlcikgcHJvY2Vzc2luZyBsb2dpYy4gRnV6emluZyBzaG91bGQgZm9jdXMgb24gYGFoNl9pbnB1dGAgYW5kIGBhaDZfb3V0cHV0YCBwYXRocyB3aXRoIG1hbGZvcm1lZCByb3V0aW5nIGhlYWRlcnMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXRcbiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSxcbiAgIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgZDQyYzc3MWRlYmUxMjljODU2MTJkN2E4Njc1MDk0MDg4NzBhMjFhNVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBXZWQgSnVsIDIyIDE2OjUyOjE4IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbmV0L2lwdjYvYWg2LmMgYi9uZXQvaXB2Ni9haDYuY1xuaW5kZXggNzZmN2EyZGU5MTA4ZWIuLjBmMDFkYjgwMmYzNTM1IDEwMDY0NFxuLS0tIGEvbmV0L2lwdjYvYWg2LmNcbisrKyBiL25ldC9pcHY2L2FoNi5jXG5AQCAtMjMzLDI1ICsyMzMsMjQgQEAgc3RhdGljIHZvaWQgaXB2Nl9yZWFycmFuZ2VfZGVzdG9wdChzdHJ1Y3QgaXB2NmhkciAqaXBoLCBzdHJ1Y3QgaXB2Nl9vcHRfaGRyICpkZXNcbiAgKlx0c28gdGhhdCB0aGV5IGFwcGVhciBpbiB0aGUgb3JkZXIgdGhleSB3aWxsIGF0IHRoZSBmaW5hbCBkZXN0aW5hdGlvbi5cbiAgKlx0U2VlIEFwcGVuZGl4IEEyIG9mIFJGQyAyNDAyIGZvciBkZXRhaWxzLlxuICAqL1xuLXN0YXRpYyB2b2lkIGlwdjZfcmVhcnJhbmdlX3J0aGRyKHN0cnVjdCBpcHY2aGRyICppcGgsIHN0cnVjdCBpcHY2X3J0X2hkciAqcnRoZHIpXG4rc3RhdGljIGludCBpcHY2X3JlYXJyYW5nZV9ydGhkcihzdHJ1Y3QgaXB2NmhkciAqaXBoLCBzdHJ1Y3QgaXB2Nl9ydF9oZHIgKnJ0aGRyKVxuIHtcbi1cdGludCBzZWdtZW50cywgc2VnbWVudHNfbGVmdDtcbitcdHVuc2lnbmVkIGludCBzZWdtZW50cywgc2VnbWVudHNfbGVmdDtcbiBcdHN0cnVjdCBpbjZfYWRkciAqYWRkcnM7XG4gXHRzdHJ1Y3QgaW42X2FkZHIgZmluYWxfYWRkcjtcbiBcbiBcdHNlZ21lbnRzX2xlZnQgPSBydGhkci1cdTAwM2VzZWdtZW50c19sZWZ0O1xuIFx0aWYgKHNlZ21lbnRzX2xlZnQgPT0gMClcbi1cdFx0cmV0dXJuO1xuLVx0cnRoZHItXHUwMDNlc2VnbWVudHNfbGVmdCA9IDA7XG4rXHRcdHJldHVybiAwO1xuIFxuLVx0LyogVGhlIHZhbHVlIG9mIHJ0aGRyLVx1MDAzZWhkcmxlbiBoYXMgYmVlbiB2ZXJpZmllZCBlaXRoZXIgYnkgdGhlIHN5c3RlbVxuLVx0ICogY2FsbCBpZiBpdCBpcyBsb2NhbGx5IGdlbmVyYXRlZCwgb3IgYnkgaXB2Nl9ydGhkcl9yY3YoKSBmb3IgaW5jb21pbmdcbi1cdCAqIHBhY2tldHMuICBTbyB3ZSBjYW4gYXNzdW1lIHRoYXQgaXQgaXMgZXZlbiBhbmQgdGhhdCBzZWdtZW50cyBpc1xuLVx0ICogZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIHNlZ21lbnRzX2xlZnQuXG4tXHQgKlxuLVx0ICogRm9yIHRoZSBzYW1lIHJlYXNvbiB3ZSBjYW4gYXNzdW1lIHRoYXQgdGhpcyBvcHRpb24gaXMgb2YgdHlwZSAwLlxuK1x0LyogUmF3IGxvY2FsbHkgZ2VuZXJhdGVkIHBhY2tldHMgY2FuIHJlYWNoIEFINiB3aXRob3V0IHRoZSBpbnZhcmlhbnRcbitcdCAqIHJlcXVpcmVkIGJ5IHRoZSBydDAtc3R5bGUgYWRkcmVzcyByZWFycmFuZ2VtZW50IGJlbG93LlxuIFx0ICovXG4gXHRzZWdtZW50cyA9IHJ0aGRyLVx1MDAzZWhkcmxlbiBcdTAwM2VcdTAwM2UgMTtcbitcdGlmIChzZWdtZW50c19sZWZ0IFx1MDAzZSBzZWdtZW50cylcbitcdFx0cmV0dXJuIC1FSU5WQUw7XG4rXG4rXHRydGhkci1cdTAwM2VzZWdtZW50c19sZWZ0ID0gMDtcbiBcbiBcdGFkZHJzID0gKChzdHJ1Y3QgcnQwX2hkciAqKXJ0aGRyKS1cdTAwM2VhZGRyO1xuIFx0ZmluYWxfYWRkciA9IGFkZHJzW3NlZ21lbnRzIC0gMV07XG5AQCAtMjYxLDYgKzI2MCw4IEBAIHN0YXRpYyB2b2lkIGlwdjZfcmVhcnJhbmdlX3J0aGRyKHN0cnVjdCBpcHY2aGRyICppcGgsIHN0cnVjdCBpcHY2X3J0X2hkciAqcnRoZHIpXG4gXG4gXHRhZGRyc1swXSA9IGlwaC1cdTAwM2VkYWRkcjtcbiBcdGlwaC1cdTAwM2VkYWRkciA9IGZpbmFsX2FkZHI7XG4rXG4rXHRyZXR1cm4gMDtcbiB9XG4gXG4gc3RhdGljIGludCBpcHY2X2NsZWFyX211dGFibGVfb3B0aW9ucyhzdHJ1Y3QgaXB2NmhkciAqaXBoLCBpbnQgbGVuLCBpbnQgZGlyKVxuQEAgLTI3Myw2ICsyNzQsNyBAQCBzdGF0aWMgaW50IGlwdjZfY2xlYXJfbXV0YWJsZV9vcHRpb25zKHN0cnVjdCBpcHY2aGRyICppcGgsIGludCBsZW4sIGludCBkaXIpXG4gXHR9IGV4dGhkciA9IHsgLmlwaCA9IGlwaCB9O1xuIFx0Y2hhciAqZW5kID0gZXh0aGRyLnJhdyArIGxlbjtcbiBcdGludCBuZXh0aGRyID0gaXBoLVx1MDAzZW5leHRoZHI7XG4rXHRpbnQgZXJyO1xuIFxuIFx0ZXh0aGRyLmlwaCsrO1xuIFxuQEAgLTI5Miw3ICsyOTQsOSBAQCBzdGF0aWMgaW50IGlwdjZfY2xlYXJfbXV0YWJsZV9vcHRpb25zKHN0cnVjdCBpcHY2aGRyICppcGgsIGludCBsZW4sIGludCBkaXIpXG4gXHRcdFx0YnJlYWs7XG4gXG4gXHRcdGNhc2UgTkVYVEhEUl9ST1VUSU5HOlxuLVx0XHRcdGlwdjZfcmVhcnJhbmdlX3J0aGRyKGlwaCwgZXh0aGRyLnJ0aCk7XG4rXHRcdFx0ZXJyID0gaXB2Nl9yZWFycmFuZ2VfcnRoZHIoaXBoLCBleHRoZHIucnRoKTtcbitcdFx0XHRpZiAoZXJyKVxuK1x0XHRcdFx0cmV0dXJuIGVycjtcbiBcdFx0XHRicmVhaztcbiBcbiBcdFx0ZGVmYXVsdDpcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIyVDE2OjUyOjIxLjQyMjU0NzYyNloiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU4MjY2MTMxMjAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBTZWN1cml0eSBJbXBsaWNhdGlvbnMgb2YgYSBSZWNlbnQgS2VybmVsIFBhdGNoKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCB0aGF0IHR3ZWFrcyBgbmV0L2lwdjYvYWg2LmNgLiBJbW1lZGlhdGVseSwgSSBzZWUgdGhhdCB0aGUgZnVuY3Rpb24gYGlwdjZfcmVhcnJhbmdlX3J0aGRyYCBoYXMgYmVlbiBjaGFuZ2VkLiBJdCdzIG5vdyByZXR1cm5pbmcgYW4gYGludGAgcmF0aGVyIHRoYW4gYHZvaWRgLCB3aGljaCBpcyBhIHJlZCBmbGFnLCBtZWFuaW5nIHRoYXQgZXJyb3IgaGFuZGxpbmcgaXMgYmVpbmcgaW50cm9kdWNlZC4gVGhlIHBhdGNoIGFkZHMgYSBjaGVjayB3aXRoaW4gYGlwdjZfcmVhcnJhbmdlX3J0aGRyYDpcblxuYGBgY1xuXHRzZWdtZW50cyA9IHJ0aGRyLVx1MDAzZWhkcmxlbiBcdTAwM2VcdTAwM2UgMTtcblx0aWYgKHNlZ21lbnRzX2xlZnQgXHUwMDNlIHNlZ21lbnRzKVxuXHRcdHJldHVybiAtRUlOVkFMO1xuYGBgXG5cblJpZ2h0LCBpdCBsb29rcyBsaWtlIHRoaXMgaXMgYSBib3VuZHMgY2hlY2sgb24gdGhlIG51bWJlciBvZiBzZWdtZW50cyBpbiBhIHJvdXRpbmcgaGVhZGVyLiBUaGlzIHN1Z2dlc3RzIGEgcG90ZW50aWFsIHZ1bG5lcmFiaWxpdHkgcmVsYXRlZCB0byByb3V0aW5nIGhlYWRlciBtYW5pcHVsYXRpb24gaXMgYmVpbmcgYWRkcmVzc2VkLCBhbmQgdGhpcyBjaGVjayBpcyBtZWFudCB0byBtaXRpZ2F0ZSBpdC5cblxuVGhlIG90aGVyIGNoYW5nZSBtb2RpZmllcyBgaXB2Nl9jbGVhcl9tdXRhYmxlX29wdGlvbnNgIHRvIGNoZWNrIHRoZSByZXR1cm4gdmFsdWUgb2YgYGlwdjZfcmVhcnJhbmdlX3J0aGRyYC4gSWYgdGhlcmUncyBhbiBlcnJvciBmcm9tIHRoZSByZWFycmFuZ2UgZnVuY3Rpb24sIGBpcHY2X2NsZWFyX211dGFibGVfb3B0aW9uc2Agbm93IHByb3BhZ2F0ZXMgaXQuIFNtYXJ0LiBCdXQgdGhpcyBpcyB0aGUgY3J1Y2lhbCBwYXJ0LiBOb3csIEkgbmVlZCB0byBzZWUgKmhvdyogdGhlc2UgZXJyb3JzIGFyZSBoYW5kbGVkIHVwIHRoZSBjYWxsIHN0YWNrLiBBcmUgdGhlIGNhbGxlcnMgb2YgYGlwdjZfY2xlYXJfbXV0YWJsZV9vcHRpb25zYCBwcmVwYXJlZCB0byBoYW5kbGUgcG90ZW50aWFsIGAtRUlOVkFMYCByZXR1cm5zPyBUaGF0J3Mgd2hlcmUgdGhlIHJlYWwgc2VjdXJpdHkgaW1wbGljYXRpb25zIGxpZS4gSSBuZWVkIHRvIHRyYWNlIHRob3NlIGZ1bmN0aW9uIGNhbGxzIGFuZCB1bmRlcnN0YW5kIHRoZSBlcnJvciBwcm9wYWdhdGlvbi4gQXJlIHdlIGp1c3QgbG9nZ2luZyB0aGUgZXJyb3IsIG9yIGlzIHRoZSBwYWNrZXQgYmVpbmcgZHJvcHBlZCwgb3Igc29tZXRoaW5nIG1vcmUgc29waGlzdGljYXRlZD9cblxuRmlyc3QsIEkgc2hvdWxkIHNlZSBpZiB0aGVyZSBhcmUgYW55IGNvbmZpZyBvcHRpb25zIHJlbGF0ZWQgdG8gdGhlIGZpbGUgaW4gcXVlc3Rpb24uIEl0IGlzIG9mdGVuIG5lY2Vzc2FyeSB0byBiZSBhd2FyZSBvZiB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zIHRoYXQgYWZmZWN0IHRoZSBzb3VyY2UgY29kZSBpbiBxdWVzdGlvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6MjU5NSwiT3V0cHV0VG9rZW5zIjozNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE3MiwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIyVDE2OjUyOjI3LjI0OTE2MzM5NloiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNzg0OTc4OTYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiaXB2Nl9jbGVhcl9tdXRhYmxlX29wdGlvbnNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L2lwdjYvYWg2LmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L2lwdjYvYWg2LmM9MjM2PXN0YXRpYyBpbnQgaXB2Nl9yZWFycmFuZ2VfcnRoZHIoc3RydWN0IGlwdjZoZHIgKmlwaCwgc3RydWN0IGlwdjZfcnRfaGRyICpydGhkcilcXG4tLVxcbm5ldC9pcHY2L2FoNi5jLTI2Ni1cXG5uZXQvaXB2Ni9haDYuYzoyNjc6c3RhdGljIGludCBpcHY2X2NsZWFyX211dGFibGVfb3B0aW9ucyhzdHJ1Y3QgaXB2NmhkciAqaXBoLCBpbnQgbGVuLCBpbnQgZGlyKVxcbm5ldC9pcHY2L2FoNi5jLTI2OC17XFxuLS1cXG5uZXQvaXB2Ni9haDYuYz0zNDc9c3RhdGljIGludCBhaDZfb3V0cHV0KHN0cnVjdCB4ZnJtX3N0YXRlICp4LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbi0tXFxubmV0L2lwdjYvYWg2LmMtNDEzLVxcdGlmIChleHRsZW4pIHtcXG5uZXQvaXB2Ni9haDYuYzo0MTQ6XFx0XFx0ZXJyID0gaXB2Nl9jbGVhcl9tdXRhYmxlX29wdGlvbnModG9wX2lwaCxcXG5uZXQvaXB2Ni9haDYuYy00MTUtXFx0XFx0XFx0XFx0XFx0XFx0IGV4dGxlbiAtIHNpemVvZigqaXBoX2V4dCkgK1xcbi0tXFxubmV0L2lwdjYvYWg2LmM9NTE2PXN0YXRpYyBpbnQgYWg2X2lucHV0KHN0cnVjdCB4ZnJtX3N0YXRlICp4LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbi0tXFxubmV0L2lwdjYvYWg2LmMtNjEwLVxcbm5ldC9pcHY2L2FoNi5jOjYxMTpcXHRlcnIgPSBpcHY2X2NsZWFyX211dGFibGVfb3B0aW9ucyhpcDZoLCBoZHJfbGVuLCBYRlJNX1BPTElDWV9JTik7XFxubmV0L2lwdjYvYWg2LmMtNjEyLVxcdGlmIChlcnIpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIyVDE2OjUyOjI3LjQyNzY2OTEyMloiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM0MzY1MDUyNjksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgcHJlc2VudGVkIGFzIGEgcGVyc29uYWwgdGhvdWdodCBwcm9jZXNzLCBhcyByZXF1ZXN0ZWQ6XG5cbioqRGVidWdnaW5nIE5ldHdvcmsgQXV0aGVudGljYXRpb24gSGVhZGVyIChBSCkgSXNzdWVzKipcblxuUmlnaHQsIHNvIEknbSBzZWVpbmcgYW4gaXNzdWUsIGFuZCBpdCBsb29rcyBsaWtlIHRoZSBgYWg2X291dHB1dGAgYW5kIGBhaDZfaW5wdXRgIGZ1bmN0aW9ucyBhcmUgd2hlcmUgdGhlIGVycm9yIGhhbmRsaW5nIGlzIGhhcHBlbmluZy4gVGhhdCdzIGEgZ29vZCBzdGFydGluZyBwb2ludC4gTXkgZ3V0IHRlbGxzIG1lIHRoaXMgaXMgc29tZXRoaW5nIHNwZWNpZmljIHRvIElQdjYgYXV0aGVudGljYXRpb24uIEJlZm9yZSBJIGRpdmUgZGVlcCBpbnRvIHRob3NlIGZ1bmN0aW9ucyB0aG91Z2gsIGl0J3MgYWx3YXlzIHdvcnRoIHZlcmlmeWluZyB0aGUgY29uZmlndXJhdGlvbiBmaXJzdCwgZ2l2ZW4gdGhlIG51YW5jZXMgaW52b2x2ZWQgd2l0aCBBSC4gTGV0J3Mgc3RhcnQgYnkgZG91YmxlLWNoZWNraW5nIHRoZSByZWxldmFudCBjb25maWd1cmF0aW9uIG9wdGlvbnMgcmVsYXRlZCB0byBgbmV0L2lwdjYvYWg2LmNgLiBJIG5lZWQgdG8gZW5zdXJlIHRoZSBleHBlY3RlZCBmZWF0dXJlcyBhcmUgZW5hYmxlZCAob3IgZGlzYWJsZWQsIGRlcGVuZGluZyBvbiB0aGUgc2NlbmFyaW8pLiBBIHF1aWNrIGxvb2sgYXQgdGhlIGNvbmZpZ3VyYXRpb24gd2lsbCBxdWlja2x5IHRlbGwgbWUgaWYgYW55IGV4cGVjdGVkIGNvbmZpZ3VyYXRpb25zIGhhdmUgYmVlbiBtaXNzZWQuIFRoYXQgY291bGQgYmUgYSBzb3VyY2Ugb2YgdGhlIGN1cnJlbnQgYmVoYXZpb3IuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM1NDUsIk91dHB1dFRva2VucyI6MzAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0MCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yMlQxNjo1MjozMC44NjQxNzY3NTFaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTEwODQyMDQxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImFoNi5vXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9pcHY2L01ha2VmaWxlXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9pcHY2L01ha2VmaWxlPTI4PWlwdjYtJChDT05GSUdfSVBWNl9JT0FNNl9MV1RVTk5FTCkgKz0gaW9hbTZfaXB0dW5uZWwub1xcbm5ldC9pcHY2L01ha2VmaWxlLTI5LVxcbm5ldC9pcHY2L01ha2VmaWxlOjMwOm9iai0kKENPTkZJR19JTkVUNl9BSCkgKz0gYWg2Lm9cXG5uZXQvaXB2Ni9NYWtlZmlsZS0zMS1vYmotJChDT05GSUdfSU5FVDZfRVNQKSArPSBlc3A2Lm9cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjJUMTY6NTI6MzAuOTc1MDI0NTAyWiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mjk5NDI1ODU1NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkV4YW1pbmluZyBJTkVUNl9BSCBDb25maWd1cmF0aW9uKipcblxuQWxyaWdodCwgc28gdGhlIGtleSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gcGxheSBoZXJlIGlzIGBJTkVUNl9BSGAuIEkgbmVlZCB0byBxdWlja2x5IGVzdGFibGlzaCB0aGUgY29udGV4dC4gTGV0IG1lIGp1c3Qgc2NhbiBmb3Igb3RoZXIgcmVsZXZhbnQgY29uZmlnIG9wdGlvbnMgaW4gdGhpcyBhcmVhLiBNeSBpbW1lZGlhdGUgYXNzdW1wdGlvbiwgYW5kIGl0J3MgcHJhY3RpY2FsbHkgYSBnaXZlbiwgaXMgdGhhdCBgSVBWNmAgaXRzZWxmIGlzIGEgcHJlcmVxdWlzaXRlLiBXZSdyZSBkZWFsaW5nIHdpdGggQUggb3ZlciBJUHY2LCBzbyB0aGF0IGZvdW5kYXRpb24gaGFzIHRvIGJlIGluIHBsYWNlIGZpcnN0LiBCZXN0IHRvIGNvbmZpcm0gdGhhdCBkZXBlbmRlbmN5IGV4cGxpY2l0bHksIHRob3VnaCwganVzdCB0byBiZSB0aG9yb3VnaCBhbmQgYXZvaWQgYW55IGdvdGNoYXMuIEkgbmVlZCB0byBkb2N1bWVudCB0aGlzIHByb3Blcmx5LlxuXG5cbiIsIklucHV0VG9rZW5zIjozOTE3LCJPdXRwdXRUb2tlbnMiOjMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjJUMTY6NTI6MzMuOTY5Mjg2NTM2WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI3NDgyMzQxOCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgSU5FVDZfQUhcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L2lwdjYvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvaXB2Ni9LY29uZmlnPTM5PWNvbmZpZyBJUFY2X09QVElNSVNUSUNfREFEXFxuLS1cXG5uZXQvaXB2Ni9LY29uZmlnLTQ2LVxcbm5ldC9pcHY2L0tjb25maWc6NDc6Y29uZmlnIElORVQ2X0FIXFxubmV0L2lwdjYvS2NvbmZpZy00OC1cXHR0cmlzdGF0ZSBcXFwiSVB2NjogQUggdHJhbnNmb3JtYXRpb25cXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIyVDE2OjUyOjM0LjI0NDExNDkwNFoiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQwODQyODY2MzgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBTZWN1cml0eSBBc3NvY2lhdGlvbiBDb25maWd1cmF0aW9uKipcblxuT2theSwgc28gdGhlIGNvbmZpZ3VyYXRpb24gaXMgc2V0IHRvIGBJTkVUNl9BSGAsIHdoaWNoIG1lYW5zIHdlJ3JlIGRlYWxpbmcgd2l0aCBBdXRoZW50aWNhdGlvbiBIZWFkZXIgb3ZlciBJUHY2LiBUaGlzIHBhdGNoIGlzIHRvdWNoaW5nIHR3byBrZXkgZnVuY3Rpb25zLCBgaXB2Nl9yZWFycmFuZ2VfcnRoZHJgIGFuZCBgaXB2Nl9jbGVhcl9tdXRhYmxlX29wdGlvbnNgLCB3aGljaCBhcmUgcGFydCBvZiB0aGUgSVB2NiBwcm9jZXNzaW5nLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgYXJlIHRoZXNlIHRoZSByaWdodCBmdW5jdGlvbnM/XG5cblRoZSBpbml0aWFsIGZvY3VzIHN5bWJvbHMgc2hvdWxkIGluY2x1ZGUgYGlwdjZfcmVhcnJhbmdlX3J0aGRyYCwgYGlwdjZfY2xlYXJfbXV0YWJsZV9vcHRpb25zYCwgYW5kIHRoZSBBSC1zcGVjaWZpYyBmdW5jdGlvbnMgYGFoNl9vdXRwdXRgIGFuZCBgYWg2X2lucHV0YC4gSG9sZCBvbiwgSSBuZWVkIHRvIHJlbWVtYmVyIC0gYm90aCBgaXB2Nl9yZWFycmFuZ2VfcnRoZHJgIGFuZCBgaXB2Nl9jbGVhcl9tdXRhYmxlX29wdGlvbnNgIGFyZSBkZWNsYXJlZCBzdGF0aWMuIEkgbmVlZCB0byBtYWtlIHN1cmUgSSBhbSBub3QgbWlzc2luZyBhbnl0aGluZyB0aGF0IHdvdWxkIGJlIHVzaW5nIHRoZW0uIEFsc28sIGBhaDZfb3V0cHV0YCBhbmQgYGFoNl9pbnB1dGAgYXJlIHN0YXRpYyBhcyB3ZWxsLiBCdXQgd2FpdCwgYXJlbid0IHRob3NlIHJlZ2lzdGVyZWQgc29tZXdoZXJlLCBtYXliZSB3aXRoaW4gYHhmcm1fc3RhdGVfYWZpbmZvYCBvciBzb21ldGhpbmcgc2ltaWxhcj8gWWVzLCB0aGV5IGFyZSEgT2theSwgc28gSSBuZWVkIHRvIGRpZyBpbnRvIGBhaDZfb3V0cHV0YCBhbmQgYGFoNl9pbnB1dGAgdG8gdHJhY2UgdGhlaXIgdXNhZ2UuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQyMTEsIk91dHB1dFRva2VucyI6MzMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNTUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjJUMTY6NTI6MzguMzI4NDA0MjUyWiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxOTIyOTUyMzUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiYWg2X291dHB1dFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvaXB2Ni9haDYuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvaXB2Ni9haDYuYz0yNjc9c3RhdGljIGludCBpcHY2X2NsZWFyX211dGFibGVfb3B0aW9ucyhzdHJ1Y3QgaXB2NmhkciAqaXBoLCBpbnQgbGVuLCBpbnQgZGlyKVxcbi0tXFxubmV0L2lwdjYvYWg2LmMtMzEyLVxcbm5ldC9pcHY2L2FoNi5jOjMxMzpzdGF0aWMgdm9pZCBhaDZfb3V0cHV0X2RvbmUodm9pZCAqZGF0YSwgaW50IGVycilcXG5uZXQvaXB2Ni9haDYuYy0zMTQte1xcbi0tXFxubmV0L2lwdjYvYWg2LmMtMzQ2LVxcbm5ldC9pcHY2L2FoNi5jOjM0NzpzdGF0aWMgaW50IGFoNl9vdXRwdXQoc3RydWN0IHhmcm1fc3RhdGUgKngsIHN0cnVjdCBza19idWZmICpza2IpXFxubmV0L2lwdjYvYWg2LmMtMzQ4LXtcXG4tLVxcbm5ldC9pcHY2L2FoNi5jLTQ0Ni1cXHRhaGFzaF9yZXF1ZXN0X3NldF9jcnlwdChyZXEsIHNnLCBpY3YsIHNrYi1cXHUwMDNlbGVuICsgc2VxaGlfbGVuKTtcXG5uZXQvaXB2Ni9haDYuYzo0NDc6XFx0YWhhc2hfcmVxdWVzdF9zZXRfY2FsbGJhY2socmVxLCAwLCBhaDZfb3V0cHV0X2RvbmUsIHNrYik7XFxubmV0L2lwdjYvYWg2LmMtNDQ4LVxcbi0tXFxubmV0L2lwdjYvYWg2LmM9Nzg0PXN0YXRpYyBjb25zdCBzdHJ1Y3QgeGZybV90eXBlIGFoNl90eXBlID0ge1xcbi0tXFxubmV0L2lwdjYvYWg2LmMtNzkwLVxcdC5pbnB1dFxcdFxcdD0gYWg2X2lucHV0LFxcbm5ldC9pcHY2L2FoNi5jOjc5MTpcXHQub3V0cHV0XFx0XFx0PSBhaDZfb3V0cHV0LFxcbm5ldC9pcHY2L2FoNi5jLTc5Mi19O1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yMlQxNjo1MjozOC41MjA3MDU0MzdaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDE0MzE4NTE1MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBSZWNlbnQgSVB2NiBQYXRjaCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIG15IGluaXRpYWwgcmVhY3Rpb24gaXMgdGhhdCBpdCdzIHRhcmdldGluZyBhIHByZXR0eSBuYXN0eSBwb3RlbnRpYWwgdnVsbmVyYWJpbGl0eS4gVGhlIGZvY3VzIHN5bWJvbHMgZ2l2ZSBtZSBhIGdvb2QgaGFuZGxlIG9uIHdoZXJlIHRvIGxvb2sg4oCTIGBhaDZfb3V0cHV0YCwgYGFoNl9pbnB1dGAsIGBpcHY2X3JlYXJyYW5nZV9ydGhkcmAsIGFuZCBgaXB2Nl9jbGVhcl9tdXRhYmxlX29wdGlvbnNgLiBJdCBzZWVtcyB0aGUgY29yZSBwcm9ibGVtIGxpZXMgd2l0aGluIGBpcHY2X3JlYXJyYW5nZV9ydGhkcmAsIHNwZWNpZmljYWxseSB0aGUgY29uZGl0aW9uIHdoZXJlIGBzZWdtZW50c19sZWZ0YCBzb21laG93IGJlY29tZXMgZ3JlYXRlciB0aGFuIGBzZWdtZW50c2AuIFRoYXQgc2NyZWFtcyBvdXQtb2YtYm91bmRzIGFjY2Vzcywgd2hpY2ggaXMgc29tZXRoaW5nIEkgd2FudCB0byBuaXAgaW4gdGhlIGJ1ZCBpbW1lZGlhdGVseS5cblxuTXkgZ3V0IHRlbGxzIG1lIHRoaXMgaXMgZnVuY3Rpb25hbGx5IHNvdW5kOyBmaXhpbmcgdGhhdCBraW5kIG9mIG1lbW9yeSBhY2Nlc3MgYnVnIGlzIGFsd2F5cyBhIGdvb2QgdGhpbmcuIERlZmluaXRlbHkgd29ydGggc29tZSBzZXJpb3VzIGZ1enppbmcgYWZ0ZXIgSSBjb25maXJtIG15IHVuZGVyc3RhbmRpbmcuIEkgc2hvdWxkIGFsc28gbm90ZSBkb3duIHRoZSByZXF1aXJlZCBjb25maWd1cmF0aW9ucyBmb3IgdGhpcyBwYXRjaCB0byBmdW5jdGlvbjogYElORVQ2X0FIYCBhbmQgYElQVjZgLlxuXG5KdXN0IHRvIGJlIHRob3JvdWdoLCBJIHNob3VsZCBkb3VibGUtY2hlY2sgZGVwZW5kZW5jaWVzLiBJJ2xsIHF1aWNrbHkgdmVyaWZ5IHRoYXQgYElORVQ2X0FIYCBkb2Vzbid0IGhhdmUgYW55IGhpZGRlbiBkZXBlbmRlbmNpZXMgdGhhdCBjb3VsZCBjb21wbGljYXRlIHRoaW5ncyBkb3duIHRoZSBsaW5lLiBXZSBkb24ndCB3YW50IGFueSB1bmV4cGVjdGVkIGludGVyYWN0aW9ucyBvciBzaWRlIGVmZmVjdHMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjUwNDAsIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMTcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjJUMTY6NTI6NDIuNjYzODkzMjdaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTEwOTEwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcIm5ldC9pcHY2L0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogNDcsXG4gIFwiTGluZUNvdW50XCI6IDIwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgNDc6XFx0Y29uZmlnIElORVQ2X0FIXFxuICA0ODpcXHRcXHR0cmlzdGF0ZSBcXFwiSVB2NjogQUggdHJhbnNmb3JtYXRpb25cXFwiXFxuICA0OTpcXHRcXHRzZWxlY3QgWEZSTV9BSFxcbiAgNTA6XFx0XFx0aGVscFxcbiAgNTE6XFx0XFx0ICBTdXBwb3J0IGZvciBJUHNlYyBBSCAoQXV0aGVudGljYXRpb24gSGVhZGVyKS5cXG4gIDUyOlxcdFxcbiAgNTM6XFx0XFx0ICBBSCBjYW4gYmUgdXNlZCB3aXRoIHZhcmlvdXMgYXV0aGVudGljYXRpb24gYWxnb3JpdGhtcy4gIEJlc2lkZXNcXG4gIDU0OlxcdFxcdCAgZW5hYmxpbmcgQUggc3VwcG9ydCBpdHNlbGYsIHRoaXMgb3B0aW9uIGVuYWJsZXMgdGhlIGdlbmVyaWNcXG4gIDU1OlxcdFxcdCAgaW1wbGVtZW50YXRpb25zIG9mIHRoZSBhbGdvcml0aG1zIHRoYXQgUkZDIDgyMjEgbGlzdHMgYXMgTVVTVCBiZVxcbiAgNTY6XFx0XFx0ICBpbXBsZW1lbnRlZC4gIElmIHlvdSBuZWVkIGFueSBvdGhlciBhbGdvcml0aG1zLCB5b3UnbGwgbmVlZCB0byBlbmFibGVcXG4gIDU3OlxcdFxcdCAgdGhlbSBpbiB0aGUgY3J5cHRvIEFQSS4gIFlvdSBzaG91bGQgYWxzbyBlbmFibGUgYWNjZWxlcmF0ZWRcXG4gIDU4OlxcdFxcdCAgaW1wbGVtZW50YXRpb25zIG9mIGFueSBuZWVkZWQgYWxnb3JpdGhtcyB3aGVuIGF2YWlsYWJsZS5cXG4gIDU5OlxcdFxcbiAgNjA6XFx0XFx0ICBJZiB1bnN1cmUsIHNheSBZLlxcbiAgNjE6XFx0XFxuICA2MjpcXHRjb25maWcgSU5FVDZfRVNQXFxuICA2MzpcXHRcXHR0cmlzdGF0ZSBcXFwiSVB2NjogRVNQIHRyYW5zZm9ybWF0aW9uXFxcIlxcbiAgNjQ6XFx0XFx0c2VsZWN0IFhGUk1fRVNQXFxuICA2NTpcXHRcXHRoZWxwXFxuICA2NjpcXHRcXHQgIFN1cHBvcnQgZm9yIElQc2VjIEVTUCAoRW5jYXBzdWxhdGluZyBTZWN1cml0eSBQYXlsb2FkKS5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjJUMTY6NTI6NDIuNjY0MDA2MzhaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjQxOTI4MzU5NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBbmFseXNpcyBvZiB0aGUgSVB2NiBBSCBQYXRjaCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIG15IGluaXRpYWwgdGhvdWdodCBpcywgdGhlIGBJTkVUNl9BSGAgY29uZmlnIGlzIG5lc3RlZCB3aXRoaW4gdGhlIGBJUFY2YCBibG9jayBpbiBgbmV0L2lwdjYvS2NvbmZpZ2AuIFRoYXQgbWVhbnMgYm90aCBgSVBWNmAgYW5kIGBJTkVUNl9BSGAgYXJlIHJlbGV2YW50IGNvbmZpZ3VyYXRpb25zIGhlcmUuIFdlJ3JlIGRlYWxpbmcgd2l0aCBJUHY2IEF1dGhlbnRpY2F0aW9uIEhlYWRlciBmdW5jdGlvbmFsaXR5LCBzbyBteSByYWRhciBpcyB1cC5cblxuTm93LCBsZXQncyBzZWUsIGBpcHY2X3JlYXJyYW5nZV9ydGhkcmAuLi4gaXMgaXQgc3RhdGljPyBZdXAsIGl0IGlzLiBUaGF0J3MgZ29vZCBpbnRlbC4gS25vd2luZyBpdCdzIHN0YXRpYywgY29tYmluZWQgd2l0aCB0aGUgY29udGV4dCBvZiB0aGUgcGF0Y2gsIHRlbGxzIG1lIHRoYXQgYGFoNl9vdXRwdXRgLCBgYWg2X2lucHV0YCwgYGlwdjZfY2xlYXJfbXV0YWJsZV9vcHRpb25zYCwgYW5kIGBpcHY2X3JlYXJyYW5nZV9ydGhkcmAgYXJlIGFsbCBwcmltZSB0YXJnZXRzIGZvciBmdXp6aW5nLiBUaGV5IGFyZSBhbGwgaW52b2x2ZWQgaW4gY3JpdGljYWwgYXNwZWN0cyBvZiB0aGUgQUggcHJvY2Vzcy5cblxuVGhlIHJlYXNvbmluZyBiZWhpbmQgdGhpcyBpcywgdGhlIHBhdGNoIGl0c2VsZiBpbnRyb2R1Y2VzIGEgY3J1Y2lhbCBib3VuZHMgY2hlY2sgd2l0aGluIGBpcHY2X3JlYXJyYW5nZV9ydGhkcmAuIFNwZWNpZmljYWxseSwgaXQgYWRkcmVzc2VzIGFuIG91dC1vZi1ib3VuZHMgYWNjZXNzIGlzc3VlIHdoZW4gYHNlZ21lbnRzX2xlZnRgIGV4Y2VlZHMgYHNlZ21lbnRzYC4gVGhhdCdzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgZGlyZWN0bHkgaW1wYWN0aW5nIGhvdyB0aGUgSVB2NiBBSCBwcm9jZXNzZXMgcGFja2V0cy4gVGhlcmVmb3JlLCBmdXp6aW5nIHRoZSBpbnB1dCBhbmQgb3V0cHV0IHBhdGhzIG9mIGBhaDZfaW5wdXRgIGFuZCBgYWg2X291dHB1dGAsIHBhcnRpY3VsYXJseSB3aXRoIGludGVudGlvbmFsbHkgbWFsZm9ybWVkIHJvdXRpbmcgaGVhZGVycywgaXMgdGhlIGtleSB0byBlZmZlY3RpdmVseSB0ZXN0IHRoaXMgcGF0Y2guIFdlIHNob3VsZCBmb2N1cyBvbiBjcmFmdGluZyBmdXp6ZXIgaW5wdXRzIHRvIHRyaWdnZXIgdGhhdCBgc2VnbWVudHNfbGVmdGAgY29uZGl0aW9uIHRvIHNlZSBpZiB0aGUgY2hlY2sgd29ya3MgY29ycmVjdGx5LlxuXG5BbHJpZ2h0LCB0aW1lIHRvIGdldCB0aG9zZSBmdXp6ZXJzIHJlYWR5IGFuZCBzZXQgdXAgZm9yIHRoZSBBSCBpbnB1dCBhbmQgb3V0cHV0IHBhdGhzIVxuXG5cbiIsIklucHV0VG9rZW5zIjo1NzMxLCJPdXRwdXRUb2tlbnMiOjE1NSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE5OSwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIyVDE2OjUyOjQ5LjA4MzI5MjU4NFoiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI0MDQyNzQxMSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiSVBWNlwiLFxuICAgIFwiSU5FVDZfQUhcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJhaDZfb3V0cHV0XCIsXG4gICAgXCJhaDZfaW5wdXRcIixcbiAgICBcImlwdjZfY2xlYXJfbXV0YWJsZV9vcHRpb25zXCIsXG4gICAgXCJpcHY2X3JlYXJyYW5nZV9ydGhkclwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgYSBib3VuZHMgY2hlY2sgaW4gYGlwdjZfcmVhcnJhbmdlX3J0aGRyYCB0byBwcmV2ZW50IG91dC1vZi1ib3VuZHMgYWNjZXNzIHdoZW4gYHNlZ21lbnRzX2xlZnQgXFx1MDAzZSBzZWdtZW50c2AuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgSVB2NiBBSCAoQXV0aGVudGljYXRpb24gSGVhZGVyKSBwcm9jZXNzaW5nIGxvZ2ljLiBGdXp6aW5nIHNob3VsZCBmb2N1cyBvbiBgYWg2X2lucHV0YCBhbmQgYGFoNl9vdXRwdXRgIHBhdGhzIHdpdGggbWFsZm9ybWVkIHJvdXRpbmcgaGVhZGVycy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJJUFY2XCIsXG4gICAgXCJJTkVUNl9BSFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImFoNl9vdXRwdXRcIixcbiAgICBcImFoNl9pbnB1dFwiLFxuICAgIFwiaXB2Nl9jbGVhcl9tdXRhYmxlX29wdGlvbnNcIixcbiAgICBcImlwdjZfcmVhcnJhbmdlX3J0aGRyXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBhIGJvdW5kcyBjaGVjayBpbiBgaXB2Nl9yZWFycmFuZ2VfcnRoZHJgIHRvIHByZXZlbnQgb3V0LW9mLWJvdW5kcyBhY2Nlc3Mgd2hlbiBgc2VnbWVudHNfbGVmdCBcXHUwMDNlIHNlZ21lbnRzYC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBJUHY2IEFIIChBdXRoZW50aWNhdGlvbiBIZWFkZXIpIHByb2Nlc3NpbmcgbG9naWMuIEZ1enppbmcgc2hvdWxkIGZvY3VzIG9uIGBhaDZfaW5wdXRgIGFuZCBgYWg2X291dHB1dGAgcGF0aHMgd2l0aCBtYWxmb3JtZWQgcm91dGluZyBoZWFkZXJzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowkbklz[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-22 16:19:22 +0000 UTC FinishedAt: 2026-07-22 16:52:51 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git", "commit_hash": "f5cfb576ce39ba5647024c6d6eeb5b7a822fab6e", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "IPV6", "INET6_AH" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git", "commit_hash": "f5cfb576ce39ba5647024c6d6eeb5b7a822fab6e", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "IPV6", "INET6_AH" ], "series_id": "c19b1309-1a1a-4c4d-8575-7fb52da0112e" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "ah6_output", "ah6_input", "ipv6_clear_mutable_options", "ipv6_rearrange_rthdr" ], "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+CgkJCTx0ZD4yMDI2LzA3LzIyIDE2OjUyPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0lQVjYmIzM0OywKICAgICYjMzQ7SU5FVDZfQUgmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDthaDZfb3V0cHV0JiMzNDssCiAgICAmIzM0O2FoNl9pbnB1dCYjMzQ7LAogICAgJiMzNDtpcHY2X2NsZWFyX211dGFibGVfb3B0aW9ucyYjMzQ7LAogICAgJiMzNDtpcHY2X3JlYXJyYW5nZV9ydGhkciYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIGEgYm91bmRzIGNoZWNrIGluIGBpcHY2X3JlYXJyYW5nZV9ydGhkcmAgdG8gcHJldmVudCBvdXQtb2YtYm91bmRzIGFjY2VzcyB3aGVuIGBzZWdtZW50c19sZWZ0IFx1MDAzZSBzZWdtZW50c2AuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgSVB2NiBBSCAoQXV0aGVudGljYXRpb24gSGVhZGVyKSBwcm9jZXNzaW5nIGxvZ2ljLiBGdXp6aW5nIHNob3VsZCBmb2N1cyBvbiBgYWg2X2lucHV0YCBhbmQgYGFoNl9vdXRwdXRgIHBhdGhzIHdpdGggbWFsZm9ybWVkIHJvdXRpbmcgaGVhZGVycy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMiAxNjo1MjwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IGQ0MmM3NzFkZWJlMTI5Yzg1NjEyZDdhODY3NTA5NDA4ODcwYTIxYTVcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgV2VkIEp1bCAyMiAxNjo1MjoxOCAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9uZXQvaXB2Ni9haDYuYyBiL25ldC9pcHY2L2FoNi5jXG5pbmRleCA3NmY3YTJkZTkxMDhlYi4uMGYwMWRiODAyZjM1MzUgMTAwNjQ0XG4tLS0gYS9uZXQvaXB2Ni9haDYuY1xuJiM0MzsmIzQzOyYjNDM7IGIvbmV0L2lwdjYvYWg2LmNcbkBAIC0yMzMsMjUgJiM0MzsyMzMsMjQgQEAgc3RhdGljIHZvaWQgaXB2Nl9yZWFycmFuZ2VfZGVzdG9wdChzdHJ1Y3QgaXB2NmhkciAqaXBoLCBzdHJ1Y3QgaXB2Nl9vcHRfaGRyICpkZXNcbiAgKlx0c28gdGhhdCB0aGV5IGFwcGVhciBpbiB0aGUgb3JkZXIgdGhleSB3aWxsIGF0IHRoZSBmaW5hbCBkZXN0aW5hdGlvbi5cbiAgKlx0U2VlIEFwcGVuZGl4IEEyIG9mIFJGQyAyNDAyIGZvciBkZXRhaWxzLlxuICAqL1xuLXN0YXRpYyB2b2lkIGlwdjZfcmVhcnJhbmdlX3J0aGRyKHN0cnVjdCBpcHY2aGRyICppcGgsIHN0cnVjdCBpcHY2X3J0X2hkciAqcnRoZHIpXG4mIzQzO3N0YXRpYyBpbnQgaXB2Nl9yZWFycmFuZ2VfcnRoZHIoc3RydWN0IGlwdjZoZHIgKmlwaCwgc3RydWN0IGlwdjZfcnRfaGRyICpydGhkcilcbiB7XG4tXHRpbnQgc2VnbWVudHMsIHNlZ21lbnRzX2xlZnQ7XG4mIzQzO1x0dW5zaWduZWQgaW50IHNlZ21lbnRzLCBzZWdtZW50c19sZWZ0O1xuIFx0c3RydWN0IGluNl9hZGRyICphZGRycztcbiBcdHN0cnVjdCBpbjZfYWRkciBmaW5hbF9hZGRyO1xuIFxuIFx0c2VnbWVudHNfbGVmdCA9IHJ0aGRyLVx1MDAzZXNlZ21lbnRzX2xlZnQ7XG4gXHRpZiAoc2VnbWVudHNfbGVmdCA9PSAwKVxuLVx0XHRyZXR1cm47XG4tXHRydGhkci1cdTAwM2VzZWdtZW50c19sZWZ0ID0gMDtcbiYjNDM7XHRcdHJldHVybiAwO1xuIFxuLVx0LyogVGhlIHZhbHVlIG9mIHJ0aGRyLVx1MDAzZWhkcmxlbiBoYXMgYmVlbiB2ZXJpZmllZCBlaXRoZXIgYnkgdGhlIHN5c3RlbVxuLVx0ICogY2FsbCBpZiBpdCBpcyBsb2NhbGx5IGdlbmVyYXRlZCwgb3IgYnkgaXB2Nl9ydGhkcl9yY3YoKSBmb3IgaW5jb21pbmdcbi1cdCAqIHBhY2tldHMuICBTbyB3ZSBjYW4gYXNzdW1lIHRoYXQgaXQgaXMgZXZlbiBhbmQgdGhhdCBzZWdtZW50cyBpc1xuLVx0ICogZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIHNlZ21lbnRzX2xlZnQuXG4tXHQgKlxuLVx0ICogRm9yIHRoZSBzYW1lIHJlYXNvbiB3ZSBjYW4gYXNzdW1lIHRoYXQgdGhpcyBvcHRpb24gaXMgb2YgdHlwZSAwLlxuJiM0MztcdC8qIFJhdyBsb2NhbGx5IGdlbmVyYXRlZCBwYWNrZXRzIGNhbiByZWFjaCBBSDYgd2l0aG91dCB0aGUgaW52YXJpYW50XG4mIzQzO1x0ICogcmVxdWlyZWQgYnkgdGhlIHJ0MC1zdHlsZSBhZGRyZXNzIHJlYXJyYW5nZW1lbnQgYmVsb3cuXG4gXHQgKi9cbiBcdHNlZ21lbnRzID0gcnRoZHItXHUwMDNlaGRybGVuIFx1MDAzZVx1MDAzZSAxO1xuJiM0MztcdGlmIChzZWdtZW50c19sZWZ0IFx1MDAzZSBzZWdtZW50cylcbiYjNDM7XHRcdHJldHVybiAtRUlOVkFMO1xuJiM0MztcbiYjNDM7XHRydGhkci1cdTAwM2VzZWdtZW50c19sZWZ0ID0gMDtcbiBcbiBcdGFkZHJzID0gKChzdHJ1Y3QgcnQwX2hkciAqKXJ0aGRyKS1cdTAwM2VhZGRyO1xuIFx0ZmluYWxfYWRkciA9IGFkZHJzW3NlZ21lbnRzIC0gMV07XG5AQCAtMjYxLDYgJiM0MzsyNjAsOCBAQCBzdGF0aWMgdm9pZCBpcHY2X3JlYXJyYW5nZV9ydGhkcihzdHJ1Y3QgaXB2NmhkciAqaXBoLCBzdHJ1Y3QgaXB2Nl9ydF9oZHIgKnJ0aGRyKVxuIFxuIFx0YWRkcnNbMF0gPSBpcGgtXHUwMDNlZGFkZHI7XG4gXHRpcGgtXHUwMDNlZGFkZHIgPSBmaW5hbF9hZGRyO1xuJiM0MztcbiYjNDM7XHRyZXR1cm4gMDtcbiB9XG4gXG4gc3RhdGljIGludCBpcHY2X2NsZWFyX211dGFibGVfb3B0aW9ucyhzdHJ1Y3QgaXB2NmhkciAqaXBoLCBpbnQgbGVuLCBpbnQgZGlyKVxuQEAgLTI3Myw2ICYjNDM7Mjc0LDcgQEAgc3RhdGljIGludCBpcHY2X2NsZWFyX211dGFibGVfb3B0aW9ucyhzdHJ1Y3QgaXB2NmhkciAqaXBoLCBpbnQgbGVuLCBpbnQgZGlyKVxuIFx0fSBleHRoZHIgPSB7IC5pcGggPSBpcGggfTtcbiBcdGNoYXIgKmVuZCA9IGV4dGhkci5yYXcgJiM0MzsgbGVuO1xuIFx0aW50IG5leHRoZHIgPSBpcGgtXHUwMDNlbmV4dGhkcjtcbiYjNDM7XHRpbnQgZXJyO1xuIFxuIFx0ZXh0aGRyLmlwaCYjNDM7JiM0Mzs7XG4gXG5AQCAtMjkyLDcgJiM0MzsyOTQsOSBAQCBzdGF0aWMgaW50IGlwdjZfY2xlYXJfbXV0YWJsZV9vcHRpb25zKHN0cnVjdCBpcHY2aGRyICppcGgsIGludCBsZW4sIGludCBkaXIpXG4gXHRcdFx0YnJlYWs7XG4gXG4gXHRcdGNhc2UgTkVYVEhEUl9ST1VUSU5HOlxuLVx0XHRcdGlwdjZfcmVhcnJhbmdlX3J0aGRyKGlwaCwgZXh0aGRyLnJ0aCk7XG4mIzQzO1x0XHRcdGVyciA9IGlwdjZfcmVhcnJhbmdlX3J0aGRyKGlwaCwgZXh0aGRyLnJ0aCk7XG4mIzQzO1x0XHRcdGlmIChlcnIpXG4mIzQzO1x0XHRcdFx0cmV0dXJuIGVycjtcbiBcdFx0XHRicmVhaztcbiBcbiBcdFx0ZGVmYXVsdDpcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMiAxNjo1MjwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7SVBWNiYjMzQ7LAogICAgJiMzNDtJTkVUNl9BSCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2FoNl9vdXRwdXQmIzM0OywKICAgICYjMzQ7YWg2X2lucHV0JiMzNDssCiAgICAmIzM0O2lwdjZfY2xlYXJfbXV0YWJsZV9vcHRpb25zJiMzNDssCiAgICAmIzM0O2lwdjZfcmVhcnJhbmdlX3J0aGRyJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgYSBib3VuZHMgY2hlY2sgaW4gYGlwdjZfcmVhcnJhbmdlX3J0aGRyYCB0byBwcmV2ZW50IG91dC1vZi1ib3VuZHMgYWNjZXNzIHdoZW4gYHNlZ21lbnRzX2xlZnQgXHUwMDNlIHNlZ21lbnRzYC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBJUHY2IEFIIChBdXRoZW50aWNhdGlvbiBIZWFkZXIpIHByb2Nlc3NpbmcgbG9naWMuIEZ1enppbmcgc2hvdWxkIGZvY3VzIG9uIGBhaDZfaW5wdXRgIGFuZCBgYWg2X291dHB1dGAgcGF0aHMgd2l0aCBtYWxmb3JtZWQgcm91dGluZyBoZWFkZXJzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdAogICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksCiAgIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCBkNDJjNzcxZGViZTEyOWM4NTYxMmQ3YTg2NzUwOTQwODg3MGEyMWE1CkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFdlZCBKdWwgMjIgMTY6NTI6MTggMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9uZXQvaXB2Ni9haDYuYyBiL25ldC9pcHY2L2FoNi5jCmluZGV4IDc2ZjdhMmRlOTEwOGViLi4wZjAxZGI4MDJmMzUzNSAxMDA2NDQKLS0tIGEvbmV0L2lwdjYvYWg2LmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L2lwdjYvYWg2LmMKQEAgLTIzMywyNSAmIzQzOzIzMywyNCBAQCBzdGF0aWMgdm9pZCBpcHY2X3JlYXJyYW5nZV9kZXN0b3B0KHN0cnVjdCBpcHY2aGRyICppcGgsIHN0cnVjdCBpcHY2X29wdF9oZHIgKmRlcwogICoJc28gdGhhdCB0aGV5IGFwcGVhciBpbiB0aGUgb3JkZXIgdGhleSB3aWxsIGF0IHRoZSBmaW5hbCBkZXN0aW5hdGlvbi4KICAqCVNlZSBBcHBlbmRpeCBBMiBvZiBSRkMgMjQwMiBmb3IgZGV0YWlscy4KICAqLwotc3RhdGljIHZvaWQgaXB2Nl9yZWFycmFuZ2VfcnRoZHIoc3RydWN0IGlwdjZoZHIgKmlwaCwgc3RydWN0IGlwdjZfcnRfaGRyICpydGhkcikKJiM0MztzdGF0aWMgaW50IGlwdjZfcmVhcnJhbmdlX3J0aGRyKHN0cnVjdCBpcHY2aGRyICppcGgsIHN0cnVjdCBpcHY2X3J0X2hkciAqcnRoZHIpCiB7Ci0JaW50IHNlZ21lbnRzLCBzZWdtZW50c19sZWZ0OwomIzQzOwl1bnNpZ25lZCBpbnQgc2VnbWVudHMsIHNlZ21lbnRzX2xlZnQ7CiAJc3RydWN0IGluNl9hZGRyICphZGRyczsKIAlzdHJ1Y3QgaW42X2FkZHIgZmluYWxfYWRkcjsKIAogCXNlZ21lbnRzX2xlZnQgPSBydGhkci0mZ3Q7c2VnbWVudHNfbGVmdDsKIAlpZiAoc2VnbWVudHNfbGVmdCA9PSAwKQotCQlyZXR1cm47Ci0JcnRoZHItJmd0O3NlZ21lbnRzX2xlZnQgPSAwOwomIzQzOwkJcmV0dXJuIDA7CiAKLQkvKiBUaGUgdmFsdWUgb2YgcnRoZHItJmd0O2hkcmxlbiBoYXMgYmVlbiB2ZXJpZmllZCBlaXRoZXIgYnkgdGhlIHN5c3RlbQotCSAqIGNhbGwgaWYgaXQgaXMgbG9jYWxseSBnZW5lcmF0ZWQsIG9yIGJ5IGlwdjZfcnRoZHJfcmN2KCkgZm9yIGluY29taW5nCi0JICogcGFja2V0cy4gIFNvIHdlIGNhbiBhc3N1bWUgdGhhdCBpdCBpcyBldmVuIGFuZCB0aGF0IHNlZ21lbnRzIGlzCi0JICogZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIHNlZ21lbnRzX2xlZnQuCi0JICoKLQkgKiBGb3IgdGhlIHNhbWUgcmVhc29uIHdlIGNhbiBhc3N1bWUgdGhhdCB0aGlzIG9wdGlvbiBpcyBvZiB0eXBlIDAuCiYjNDM7CS8qIFJhdyBsb2NhbGx5IGdlbmVyYXRlZCBwYWNrZXRzIGNhbiByZWFjaCBBSDYgd2l0aG91dCB0aGUgaW52YXJpYW50CiYjNDM7CSAqIHJlcXVpcmVkIGJ5IHRoZSBydDAtc3R5bGUgYWRkcmVzcyByZWFycmFuZ2VtZW50IGJlbG93LgogCSAqLwogCXNlZ21lbnRzID0gcnRoZHItJmd0O2hkcmxlbiAmZ3Q7Jmd0OyAxOwomIzQzOwlpZiAoc2VnbWVudHNfbGVmdCAmZ3Q7IHNlZ21lbnRzKQomIzQzOwkJcmV0dXJuIC1FSU5WQUw7CiYjNDM7CiYjNDM7CXJ0aGRyLSZndDtzZWdtZW50c19sZWZ0ID0gMDsKIAogCWFkZHJzID0gKChzdHJ1Y3QgcnQwX2hkciAqKXJ0aGRyKS0mZ3Q7YWRkcjsKIAlmaW5hbF9hZGRyID0gYWRkcnNbc2VnbWVudHMgLSAxXTsKQEAgLTI2MSw2ICYjNDM7MjYwLDggQEAgc3RhdGljIHZvaWQgaXB2Nl9yZWFycmFuZ2VfcnRoZHIoc3RydWN0IGlwdjZoZHIgKmlwaCwgc3RydWN0IGlwdjZfcnRfaGRyICpydGhkcikKIAogCWFkZHJzWzBdID0gaXBoLSZndDtkYWRkcjsKIAlpcGgtJmd0O2RhZGRyID0gZmluYWxfYWRkcjsKJiM0MzsKJiM0MzsJcmV0dXJuIDA7CiB9CiAKIHN0YXRpYyBpbnQgaXB2Nl9jbGVhcl9tdXRhYmxlX29wdGlvbnMoc3RydWN0IGlwdjZoZHIgKmlwaCwgaW50IGxlbiwgaW50IGRpcikKQEAgLTI3Myw2ICYjNDM7Mjc0LDcgQEAgc3RhdGljIGludCBpcHY2X2NsZWFyX211dGFibGVfb3B0aW9ucyhzdHJ1Y3QgaXB2NmhkciAqaXBoLCBpbnQgbGVuLCBpbnQgZGlyKQogCX0gZXh0aGRyID0geyAuaXBoID0gaXBoIH07CiAJY2hhciAqZW5kID0gZXh0aGRyLnJhdyAmIzQzOyBsZW47CiAJaW50IG5leHRoZHIgPSBpcGgtJmd0O25leHRoZHI7CiYjNDM7CWludCBlcnI7CiAKIAlleHRoZHIuaXBoJiM0MzsmIzQzOzsKIApAQCAtMjkyLDcgJiM0MzsyOTQsOSBAQCBzdGF0aWMgaW50IGlwdjZfY2xlYXJfbXV0YWJsZV9vcHRpb25zKHN0cnVjdCBpcHY2aGRyICppcGgsIGludCBsZW4sIGludCBkaXIpCiAJCQlicmVhazsKIAogCQljYXNlIE5FWFRIRFJfUk9VVElORzoKLQkJCWlwdjZfcmVhcnJhbmdlX3J0aGRyKGlwaCwgZXh0aGRyLnJ0aCk7CiYjNDM7CQkJZXJyID0gaXB2Nl9yZWFycmFuZ2VfcnRoZHIoaXBoLCBleHRoZHIucnRoKTsKJiM0MzsJCQlpZiAoZXJyKQomIzQzOwkJCQlyZXR1cm4gZXJyOwogCQkJYnJlYWs7CiAKIAkJZGVmYXVsdDoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjIgMTY6NTI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjU5NQoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDE3MgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFNlY3VyaXR5IEltcGxpY2F0aW9ucyBvZiBhIFJlY2VudCBLZXJuZWwgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggdGhhdCB0d2Vha3MgYG5ldC9pcHY2L2FoNi5jYC4gSW1tZWRpYXRlbHksIEkgc2VlIHRoYXQgdGhlIGZ1bmN0aW9uIGBpcHY2X3JlYXJyYW5nZV9ydGhkcmAgaGFzIGJlZW4gY2hhbmdlZC4gSXQmIzM5O3Mgbm93IHJldHVybmluZyBhbiBgaW50YCByYXRoZXIgdGhhbiBgdm9pZGAsIHdoaWNoIGlzIGEgcmVkIGZsYWcsIG1lYW5pbmcgdGhhdCBlcnJvciBoYW5kbGluZyBpcyBiZWluZyBpbnRyb2R1Y2VkLiBUaGUgcGF0Y2ggYWRkcyBhIGNoZWNrIHdpdGhpbiBgaXB2Nl9yZWFycmFuZ2VfcnRoZHJgOgoKYGBgYwoJc2VnbWVudHMgPSBydGhkci0mZ3Q7aGRybGVuICZndDsmZ3Q7IDE7CglpZiAoc2VnbWVudHNfbGVmdCAmZ3Q7IHNlZ21lbnRzKQoJCXJldHVybiAtRUlOVkFMOwpgYGAKClJpZ2h0LCBpdCBsb29rcyBsaWtlIHRoaXMgaXMgYSBib3VuZHMgY2hlY2sgb24gdGhlIG51bWJlciBvZiBzZWdtZW50cyBpbiBhIHJvdXRpbmcgaGVhZGVyLiBUaGlzIHN1Z2dlc3RzIGEgcG90ZW50aWFsIHZ1bG5lcmFiaWxpdHkgcmVsYXRlZCB0byByb3V0aW5nIGhlYWRlciBtYW5pcHVsYXRpb24gaXMgYmVpbmcgYWRkcmVzc2VkLCBhbmQgdGhpcyBjaGVjayBpcyBtZWFudCB0byBtaXRpZ2F0ZSBpdC4KClRoZSBvdGhlciBjaGFuZ2UgbW9kaWZpZXMgYGlwdjZfY2xlYXJfbXV0YWJsZV9vcHRpb25zYCB0byBjaGVjayB0aGUgcmV0dXJuIHZhbHVlIG9mIGBpcHY2X3JlYXJyYW5nZV9ydGhkcmAuIElmIHRoZXJlJiMzOTtzIGFuIGVycm9yIGZyb20gdGhlIHJlYXJyYW5nZSBmdW5jdGlvbiwgYGlwdjZfY2xlYXJfbXV0YWJsZV9vcHRpb25zYCBub3cgcHJvcGFnYXRlcyBpdC4gU21hcnQuIEJ1dCB0aGlzIGlzIHRoZSBjcnVjaWFsIHBhcnQuIE5vdywgSSBuZWVkIHRvIHNlZSAqaG93KiB0aGVzZSBlcnJvcnMgYXJlIGhhbmRsZWQgdXAgdGhlIGNhbGwgc3RhY2suIEFyZSB0aGUgY2FsbGVycyBvZiBgaXB2Nl9jbGVhcl9tdXRhYmxlX29wdGlvbnNgIHByZXBhcmVkIHRvIGhhbmRsZSBwb3RlbnRpYWwgYC1FSU5WQUxgIHJldHVybnM/IFRoYXQmIzM5O3Mgd2hlcmUgdGhlIHJlYWwgc2VjdXJpdHkgaW1wbGljYXRpb25zIGxpZS4gSSBuZWVkIHRvIHRyYWNlIHRob3NlIGZ1bmN0aW9uIGNhbGxzIGFuZCB1bmRlcnN0YW5kIHRoZSBlcnJvciBwcm9wYWdhdGlvbi4gQXJlIHdlIGp1c3QgbG9nZ2luZyB0aGUgZXJyb3IsIG9yIGlzIHRoZSBwYWNrZXQgYmVpbmcgZHJvcHBlZCwgb3Igc29tZXRoaW5nIG1vcmUgc29waGlzdGljYXRlZD8KCkZpcnN0LCBJIHNob3VsZCBzZWUgaWYgdGhlcmUgYXJlIGFueSBjb25maWcgb3B0aW9ucyByZWxhdGVkIHRvIHRoZSBmaWxlIGluIHF1ZXN0aW9uLiBJdCBpcyBvZnRlbiBuZWNlc3NhcnkgdG8gYmUgYXdhcmUgb2YgdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyB0aGF0IGFmZmVjdCB0aGUgc291cmNlIGNvZGUgaW4gcXVlc3Rpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjIgMTY6NTI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7aXB2Nl9jbGVhcl9tdXRhYmxlX29wdGlvbnMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvaXB2Ni9haDYuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvaXB2Ni9haDYuYz0yMzY9c3RhdGljIGludCBpcHY2X3JlYXJyYW5nZV9ydGhkcihzdHJ1Y3QgaXB2NmhkciAqaXBoLCBzdHJ1Y3QgaXB2Nl9ydF9oZHIgKnJ0aGRyKVxuLS1cbm5ldC9pcHY2L2FoNi5jLTI2Ni1cbm5ldC9pcHY2L2FoNi5jOjI2NzpzdGF0aWMgaW50IGlwdjZfY2xlYXJfbXV0YWJsZV9vcHRpb25zKHN0cnVjdCBpcHY2aGRyICppcGgsIGludCBsZW4sIGludCBkaXIpXG5uZXQvaXB2Ni9haDYuYy0yNjgte1xuLS1cbm5ldC9pcHY2L2FoNi5jPTM0Nz1zdGF0aWMgaW50IGFoNl9vdXRwdXQoc3RydWN0IHhmcm1fc3RhdGUgKngsIHN0cnVjdCBza19idWZmICpza2IpXG4tLVxubmV0L2lwdjYvYWg2LmMtNDEzLVx0aWYgKGV4dGxlbikge1xubmV0L2lwdjYvYWg2LmM6NDE0Olx0XHRlcnIgPSBpcHY2X2NsZWFyX211dGFibGVfb3B0aW9ucyh0b3BfaXBoLFxubmV0L2lwdjYvYWg2LmMtNDE1LVx0XHRcdFx0XHRcdCBleHRsZW4gLSBzaXplb2YoKmlwaF9leHQpICYjNDM7XG4tLVxubmV0L2lwdjYvYWg2LmM9NTE2PXN0YXRpYyBpbnQgYWg2X2lucHV0KHN0cnVjdCB4ZnJtX3N0YXRlICp4LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuLS1cbm5ldC9pcHY2L2FoNi5jLTYxMC1cbm5ldC9pcHY2L2FoNi5jOjYxMTpcdGVyciA9IGlwdjZfY2xlYXJfbXV0YWJsZV9vcHRpb25zKGlwNmgsIGhkcl9sZW4sIFhGUk1fUE9MSUNZX0lOKTtcbm5ldC9pcHY2L2FoNi5jLTYxMi1cdGlmIChlcnIpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjIgMTY6NTI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzU0NQoJCQkJCQkJb3V0cHV0OiAzMAoJCQkJCQkJdGhvdWdodHM6IDQwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCBwcmVzZW50ZWQgYXMgYSBwZXJzb25hbCB0aG91Z2h0IHByb2Nlc3MsIGFzIHJlcXVlc3RlZDoKCioqRGVidWdnaW5nIE5ldHdvcmsgQXV0aGVudGljYXRpb24gSGVhZGVyIChBSCkgSXNzdWVzKioKClJpZ2h0LCBzbyBJJiMzOTttIHNlZWluZyBhbiBpc3N1ZSwgYW5kIGl0IGxvb2tzIGxpa2UgdGhlIGBhaDZfb3V0cHV0YCBhbmQgYGFoNl9pbnB1dGAgZnVuY3Rpb25zIGFyZSB3aGVyZSB0aGUgZXJyb3IgaGFuZGxpbmcgaXMgaGFwcGVuaW5nLiBUaGF0JiMzOTtzIGEgZ29vZCBzdGFydGluZyBwb2ludC4gTXkgZ3V0IHRlbGxzIG1lIHRoaXMgaXMgc29tZXRoaW5nIHNwZWNpZmljIHRvIElQdjYgYXV0aGVudGljYXRpb24uIEJlZm9yZSBJIGRpdmUgZGVlcCBpbnRvIHRob3NlIGZ1bmN0aW9ucyB0aG91Z2gsIGl0JiMzOTtzIGFsd2F5cyB3b3J0aCB2ZXJpZnlpbmcgdGhlIGNvbmZpZ3VyYXRpb24gZmlyc3QsIGdpdmVuIHRoZSBudWFuY2VzIGludm9sdmVkIHdpdGggQUguIExldCYjMzk7cyBzdGFydCBieSBkb3VibGUtY2hlY2tpbmcgdGhlIHJlbGV2YW50IGNvbmZpZ3VyYXRpb24gb3B0aW9ucyByZWxhdGVkIHRvIGBuZXQvaXB2Ni9haDYuY2AuIEkgbmVlZCB0byBlbnN1cmUgdGhlIGV4cGVjdGVkIGZlYXR1cmVzIGFyZSBlbmFibGVkIChvciBkaXNhYmxlZCwgZGVwZW5kaW5nIG9uIHRoZSBzY2VuYXJpbykuIEEgcXVpY2sgbG9vayBhdCB0aGUgY29uZmlndXJhdGlvbiB3aWxsIHF1aWNrbHkgdGVsbCBtZSBpZiBhbnkgZXhwZWN0ZWQgY29uZmlndXJhdGlvbnMgaGF2ZSBiZWVuIG1pc3NlZC4gVGhhdCBjb3VsZCBiZSBhIHNvdXJjZSBvZiB0aGUgY3VycmVudCBiZWhhdmlvci4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMiAxNjo1MjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDthaDYubyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9pcHY2L01ha2VmaWxlJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9pcHY2L01ha2VmaWxlPTI4PWlwdjYtJChDT05GSUdfSVBWNl9JT0FNNl9MV1RVTk5FTCkgJiM0Mzs9IGlvYW02X2lwdHVubmVsLm9cbm5ldC9pcHY2L01ha2VmaWxlLTI5LVxubmV0L2lwdjYvTWFrZWZpbGU6MzA6b2JqLSQoQ09ORklHX0lORVQ2X0FIKSAmIzQzOz0gYWg2Lm9cbm5ldC9pcHY2L01ha2VmaWxlLTMxLW9iai0kKENPTkZJR19JTkVUNl9FU1ApICYjNDM7PSBlc3A2Lm9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMiAxNjo1MjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzOTE3CgkJCQkJCQlvdXRwdXQ6IDMzCgkJCQkJCQl0aG91Z2h0czogMzYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkV4YW1pbmluZyBJTkVUNl9BSCBDb25maWd1cmF0aW9uKioKCkFscmlnaHQsIHNvIHRoZSBrZXkgY29uZmlndXJhdGlvbiBpdGVtIGluIHBsYXkgaGVyZSBpcyBgSU5FVDZfQUhgLiBJIG5lZWQgdG8gcXVpY2tseSBlc3RhYmxpc2ggdGhlIGNvbnRleHQuIExldCBtZSBqdXN0IHNjYW4gZm9yIG90aGVyIHJlbGV2YW50IGNvbmZpZyBvcHRpb25zIGluIHRoaXMgYXJlYS4gTXkgaW1tZWRpYXRlIGFzc3VtcHRpb24sIGFuZCBpdCYjMzk7cyBwcmFjdGljYWxseSBhIGdpdmVuLCBpcyB0aGF0IGBJUFY2YCBpdHNlbGYgaXMgYSBwcmVyZXF1aXNpdGUuIFdlJiMzOTtyZSBkZWFsaW5nIHdpdGggQUggb3ZlciBJUHY2LCBzbyB0aGF0IGZvdW5kYXRpb24gaGFzIHRvIGJlIGluIHBsYWNlIGZpcnN0LiBCZXN0IHRvIGNvbmZpcm0gdGhhdCBkZXBlbmRlbmN5IGV4cGxpY2l0bHksIHRob3VnaCwganVzdCB0byBiZSB0aG9yb3VnaCBhbmQgYXZvaWQgYW55IGdvdGNoYXMuIEkgbmVlZCB0byBkb2N1bWVudCB0aGlzIHByb3Blcmx5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIyIDE2OjUyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBJTkVUNl9BSCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9pcHY2L0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L2lwdjYvS2NvbmZpZz0zOT1jb25maWcgSVBWNl9PUFRJTUlTVElDX0RBRFxuLS1cbm5ldC9pcHY2L0tjb25maWctNDYtXG5uZXQvaXB2Ni9LY29uZmlnOjQ3OmNvbmZpZyBJTkVUNl9BSFxubmV0L2lwdjYvS2NvbmZpZy00OC1cdHRyaXN0YXRlIFwmIzM0O0lQdjY6IEFIIHRyYW5zZm9ybWF0aW9uXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjIgMTY6NTI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDIxMQoJCQkJCQkJb3V0cHV0OiAzMwoJCQkJCQkJdGhvdWdodHM6IDE1NQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFNlY3VyaXR5IEFzc29jaWF0aW9uIENvbmZpZ3VyYXRpb24qKgoKT2theSwgc28gdGhlIGNvbmZpZ3VyYXRpb24gaXMgc2V0IHRvIGBJTkVUNl9BSGAsIHdoaWNoIG1lYW5zIHdlJiMzOTtyZSBkZWFsaW5nIHdpdGggQXV0aGVudGljYXRpb24gSGVhZGVyIG92ZXIgSVB2Ni4gVGhpcyBwYXRjaCBpcyB0b3VjaGluZyB0d28ga2V5IGZ1bmN0aW9ucywgYGlwdjZfcmVhcnJhbmdlX3J0aGRyYCBhbmQgYGlwdjZfY2xlYXJfbXV0YWJsZV9vcHRpb25zYCwgd2hpY2ggYXJlIHBhcnQgb2YgdGhlIElQdjYgcHJvY2Vzc2luZy4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsIGFyZSB0aGVzZSB0aGUgcmlnaHQgZnVuY3Rpb25zPwoKVGhlIGluaXRpYWwgZm9jdXMgc3ltYm9scyBzaG91bGQgaW5jbHVkZSBgaXB2Nl9yZWFycmFuZ2VfcnRoZHJgLCBgaXB2Nl9jbGVhcl9tdXRhYmxlX29wdGlvbnNgLCBhbmQgdGhlIEFILXNwZWNpZmljIGZ1bmN0aW9ucyBgYWg2X291dHB1dGAgYW5kIGBhaDZfaW5wdXRgLiBIb2xkIG9uLCBJIG5lZWQgdG8gcmVtZW1iZXIgLSBib3RoIGBpcHY2X3JlYXJyYW5nZV9ydGhkcmAgYW5kIGBpcHY2X2NsZWFyX211dGFibGVfb3B0aW9uc2AgYXJlIGRlY2xhcmVkIHN0YXRpYy4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBJIGFtIG5vdCBtaXNzaW5nIGFueXRoaW5nIHRoYXQgd291bGQgYmUgdXNpbmcgdGhlbS4gQWxzbywgYGFoNl9vdXRwdXRgIGFuZCBgYWg2X2lucHV0YCBhcmUgc3RhdGljIGFzIHdlbGwuIEJ1dCB3YWl0LCBhcmVuJiMzOTt0IHRob3NlIHJlZ2lzdGVyZWQgc29tZXdoZXJlLCBtYXliZSB3aXRoaW4gYHhmcm1fc3RhdGVfYWZpbmZvYCBvciBzb21ldGhpbmcgc2ltaWxhcj8gWWVzLCB0aGV5IGFyZSEgT2theSwgc28gSSBuZWVkIHRvIGRpZyBpbnRvIGBhaDZfb3V0cHV0YCBhbmQgYGFoNl9pbnB1dGAgdG8gdHJhY2UgdGhlaXIgdXNhZ2UuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIyIDE2OjUyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2FoNl9vdXRwdXQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvaXB2Ni9haDYuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvaXB2Ni9haDYuYz0yNjc9c3RhdGljIGludCBpcHY2X2NsZWFyX211dGFibGVfb3B0aW9ucyhzdHJ1Y3QgaXB2NmhkciAqaXBoLCBpbnQgbGVuLCBpbnQgZGlyKVxuLS1cbm5ldC9pcHY2L2FoNi5jLTMxMi1cbm5ldC9pcHY2L2FoNi5jOjMxMzpzdGF0aWMgdm9pZCBhaDZfb3V0cHV0X2RvbmUodm9pZCAqZGF0YSwgaW50IGVycilcbm5ldC9pcHY2L2FoNi5jLTMxNC17XG4tLVxubmV0L2lwdjYvYWg2LmMtMzQ2LVxubmV0L2lwdjYvYWg2LmM6MzQ3OnN0YXRpYyBpbnQgYWg2X291dHB1dChzdHJ1Y3QgeGZybV9zdGF0ZSAqeCwgc3RydWN0IHNrX2J1ZmYgKnNrYilcbm5ldC9pcHY2L2FoNi5jLTM0OC17XG4tLVxubmV0L2lwdjYvYWg2LmMtNDQ2LVx0YWhhc2hfcmVxdWVzdF9zZXRfY3J5cHQocmVxLCBzZywgaWN2LCBza2ItXHUwMDNlbGVuICYjNDM7IHNlcWhpX2xlbik7XG5uZXQvaXB2Ni9haDYuYzo0NDc6XHRhaGFzaF9yZXF1ZXN0X3NldF9jYWxsYmFjayhyZXEsIDAsIGFoNl9vdXRwdXRfZG9uZSwgc2tiKTtcbm5ldC9pcHY2L2FoNi5jLTQ0OC1cbi0tXG5uZXQvaXB2Ni9haDYuYz03ODQ9c3RhdGljIGNvbnN0IHN0cnVjdCB4ZnJtX3R5cGUgYWg2X3R5cGUgPSB7XG4tLVxubmV0L2lwdjYvYWg2LmMtNzkwLVx0LmlucHV0XHRcdD0gYWg2X2lucHV0LFxubmV0L2lwdjYvYWg2LmM6NzkxOlx0Lm91dHB1dFx0XHQ9IGFoNl9vdXRwdXQsXG5uZXQvaXB2Ni9haDYuYy03OTItfTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjIgMTY6NTI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTA0MAoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDExNwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBSZWNlbnQgSVB2NiBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgbXkgaW5pdGlhbCByZWFjdGlvbiBpcyB0aGF0IGl0JiMzOTtzIHRhcmdldGluZyBhIHByZXR0eSBuYXN0eSBwb3RlbnRpYWwgdnVsbmVyYWJpbGl0eS4gVGhlIGZvY3VzIHN5bWJvbHMgZ2l2ZSBtZSBhIGdvb2QgaGFuZGxlIG9uIHdoZXJlIHRvIGxvb2sg4oCTIGBhaDZfb3V0cHV0YCwgYGFoNl9pbnB1dGAsIGBpcHY2X3JlYXJyYW5nZV9ydGhkcmAsIGFuZCBgaXB2Nl9jbGVhcl9tdXRhYmxlX29wdGlvbnNgLiBJdCBzZWVtcyB0aGUgY29yZSBwcm9ibGVtIGxpZXMgd2l0aGluIGBpcHY2X3JlYXJyYW5nZV9ydGhkcmAsIHNwZWNpZmljYWxseSB0aGUgY29uZGl0aW9uIHdoZXJlIGBzZWdtZW50c19sZWZ0YCBzb21laG93IGJlY29tZXMgZ3JlYXRlciB0aGFuIGBzZWdtZW50c2AuIFRoYXQgc2NyZWFtcyBvdXQtb2YtYm91bmRzIGFjY2Vzcywgd2hpY2ggaXMgc29tZXRoaW5nIEkgd2FudCB0byBuaXAgaW4gdGhlIGJ1ZCBpbW1lZGlhdGVseS4KCk15IGd1dCB0ZWxscyBtZSB0aGlzIGlzIGZ1bmN0aW9uYWxseSBzb3VuZDsgZml4aW5nIHRoYXQga2luZCBvZiBtZW1vcnkgYWNjZXNzIGJ1ZyBpcyBhbHdheXMgYSBnb29kIHRoaW5nLiBEZWZpbml0ZWx5IHdvcnRoIHNvbWUgc2VyaW91cyBmdXp6aW5nIGFmdGVyIEkgY29uZmlybSBteSB1bmRlcnN0YW5kaW5nLiBJIHNob3VsZCBhbHNvIG5vdGUgZG93biB0aGUgcmVxdWlyZWQgY29uZmlndXJhdGlvbnMgZm9yIHRoaXMgcGF0Y2ggdG8gZnVuY3Rpb246IGBJTkVUNl9BSGAgYW5kIGBJUFY2YC4KCkp1c3QgdG8gYmUgdGhvcm91Z2gsIEkgc2hvdWxkIGRvdWJsZS1jaGVjayBkZXBlbmRlbmNpZXMuIEkmIzM5O2xsIHF1aWNrbHkgdmVyaWZ5IHRoYXQgYElORVQ2X0FIYCBkb2VzbiYjMzk7dCBoYXZlIGFueSBoaWRkZW4gZGVwZW5kZW5jaWVzIHRoYXQgY291bGQgY29tcGxpY2F0ZSB0aGluZ3MgZG93biB0aGUgbGluZS4gV2UgZG9uJiMzOTt0IHdhbnQgYW55IHVuZXhwZWN0ZWQgaW50ZXJhY3Rpb25zIG9yIHNpZGUgZWZmZWN0cy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjIgMTY6NTI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtuZXQvaXB2Ni9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogNDcsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICA0NzpcdGNvbmZpZyBJTkVUNl9BSFxuICA0ODpcdFx0dHJpc3RhdGUgXCYjMzQ7SVB2NjogQUggdHJhbnNmb3JtYXRpb25cJiMzNDtcbiAgNDk6XHRcdHNlbGVjdCBYRlJNX0FIXG4gIDUwOlx0XHRoZWxwXG4gIDUxOlx0XHQgIFN1cHBvcnQgZm9yIElQc2VjIEFIIChBdXRoZW50aWNhdGlvbiBIZWFkZXIpLlxuICA1MjpcdFxuICA1MzpcdFx0ICBBSCBjYW4gYmUgdXNlZCB3aXRoIHZhcmlvdXMgYXV0aGVudGljYXRpb24gYWxnb3JpdGhtcy4gIEJlc2lkZXNcbiAgNTQ6XHRcdCAgZW5hYmxpbmcgQUggc3VwcG9ydCBpdHNlbGYsIHRoaXMgb3B0aW9uIGVuYWJsZXMgdGhlIGdlbmVyaWNcbiAgNTU6XHRcdCAgaW1wbGVtZW50YXRpb25zIG9mIHRoZSBhbGdvcml0aG1zIHRoYXQgUkZDIDgyMjEgbGlzdHMgYXMgTVVTVCBiZVxuICA1NjpcdFx0ICBpbXBsZW1lbnRlZC4gIElmIHlvdSBuZWVkIGFueSBvdGhlciBhbGdvcml0aG1zLCB5b3UmIzM5O2xsIG5lZWQgdG8gZW5hYmxlXG4gIDU3Olx0XHQgIHRoZW0gaW4gdGhlIGNyeXB0byBBUEkuICBZb3Ugc2hvdWxkIGFsc28gZW5hYmxlIGFjY2VsZXJhdGVkXG4gIDU4Olx0XHQgIGltcGxlbWVudGF0aW9ucyBvZiBhbnkgbmVlZGVkIGFsZ29yaXRobXMgd2hlbiBhdmFpbGFibGUuXG4gIDU5Olx0XG4gIDYwOlx0XHQgIElmIHVuc3VyZSwgc2F5IFkuXG4gIDYxOlx0XG4gIDYyOlx0Y29uZmlnIElORVQ2X0VTUFxuICA2MzpcdFx0dHJpc3RhdGUgXCYjMzQ7SVB2NjogRVNQIHRyYW5zZm9ybWF0aW9uXCYjMzQ7XG4gIDY0Olx0XHRzZWxlY3QgWEZSTV9FU1BcbiAgNjU6XHRcdGhlbHBcbiAgNjY6XHRcdCAgU3VwcG9ydCBmb3IgSVBzZWMgRVNQIChFbmNhcHN1bGF0aW5nIFNlY3VyaXR5IFBheWxvYWQpLlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMiAxNjo1MjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1NzMxCgkJCQkJCQlvdXRwdXQ6IDE1NQoJCQkJCQkJdGhvdWdodHM6IDE5OQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBbmFseXNpcyBvZiB0aGUgSVB2NiBBSCBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgbXkgaW5pdGlhbCB0aG91Z2h0IGlzLCB0aGUgYElORVQ2X0FIYCBjb25maWcgaXMgbmVzdGVkIHdpdGhpbiB0aGUgYElQVjZgIGJsb2NrIGluIGBuZXQvaXB2Ni9LY29uZmlnYC4gVGhhdCBtZWFucyBib3RoIGBJUFY2YCBhbmQgYElORVQ2X0FIYCBhcmUgcmVsZXZhbnQgY29uZmlndXJhdGlvbnMgaGVyZS4gV2UmIzM5O3JlIGRlYWxpbmcgd2l0aCBJUHY2IEF1dGhlbnRpY2F0aW9uIEhlYWRlciBmdW5jdGlvbmFsaXR5LCBzbyBteSByYWRhciBpcyB1cC4KCk5vdywgbGV0JiMzOTtzIHNlZSwgYGlwdjZfcmVhcnJhbmdlX3J0aGRyYC4uLiBpcyBpdCBzdGF0aWM/IFl1cCwgaXQgaXMuIFRoYXQmIzM5O3MgZ29vZCBpbnRlbC4gS25vd2luZyBpdCYjMzk7cyBzdGF0aWMsIGNvbWJpbmVkIHdpdGggdGhlIGNvbnRleHQgb2YgdGhlIHBhdGNoLCB0ZWxscyBtZSB0aGF0IGBhaDZfb3V0cHV0YCwgYGFoNl9pbnB1dGAsIGBpcHY2X2NsZWFyX211dGFibGVfb3B0aW9uc2AsIGFuZCBgaXB2Nl9yZWFycmFuZ2VfcnRoZHJgIGFyZSBhbGwgcHJpbWUgdGFyZ2V0cyBmb3IgZnV6emluZy4gVGhleSBhcmUgYWxsIGludm9sdmVkIGluIGNyaXRpY2FsIGFzcGVjdHMgb2YgdGhlIEFIIHByb2Nlc3MuCgpUaGUgcmVhc29uaW5nIGJlaGluZCB0aGlzIGlzLCB0aGUgcGF0Y2ggaXRzZWxmIGludHJvZHVjZXMgYSBjcnVjaWFsIGJvdW5kcyBjaGVjayB3aXRoaW4gYGlwdjZfcmVhcnJhbmdlX3J0aGRyYC4gU3BlY2lmaWNhbGx5LCBpdCBhZGRyZXNzZXMgYW4gb3V0LW9mLWJvdW5kcyBhY2Nlc3MgaXNzdWUgd2hlbiBgc2VnbWVudHNfbGVmdGAgZXhjZWVkcyBgc2VnbWVudHNgLiBUaGF0JiMzOTtzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgZGlyZWN0bHkgaW1wYWN0aW5nIGhvdyB0aGUgSVB2NiBBSCBwcm9jZXNzZXMgcGFja2V0cy4gVGhlcmVmb3JlLCBmdXp6aW5nIHRoZSBpbnB1dCBhbmQgb3V0cHV0IHBhdGhzIG9mIGBhaDZfaW5wdXRgIGFuZCBgYWg2X291dHB1dGAsIHBhcnRpY3VsYXJseSB3aXRoIGludGVudGlvbmFsbHkgbWFsZm9ybWVkIHJvdXRpbmcgaGVhZGVycywgaXMgdGhlIGtleSB0byBlZmZlY3RpdmVseSB0ZXN0IHRoaXMgcGF0Y2guIFdlIHNob3VsZCBmb2N1cyBvbiBjcmFmdGluZyBmdXp6ZXIgaW5wdXRzIHRvIHRyaWdnZXIgdGhhdCBgc2VnbWVudHNfbGVmdGAgY29uZGl0aW9uIHRvIHNlZSBpZiB0aGUgY2hlY2sgd29ya3MgY29ycmVjdGx5LgoKQWxyaWdodCwgdGltZSB0byBnZXQgdGhvc2UgZnV6emVycyByZWFkeSBhbmQgc2V0IHVwIGZvciB0aGUgQUggaW5wdXQgYW5kIG91dHB1dCBwYXRocyEKCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjIgMTY6NTI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0lQVjYmIzM0OywKICAgICYjMzQ7SU5FVDZfQUgmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDthaDZfb3V0cHV0JiMzNDssCiAgICAmIzM0O2FoNl9pbnB1dCYjMzQ7LAogICAgJiMzNDtpcHY2X2NsZWFyX211dGFibGVfb3B0aW9ucyYjMzQ7LAogICAgJiMzNDtpcHY2X3JlYXJyYW5nZV9ydGhkciYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIGEgYm91bmRzIGNoZWNrIGluIGBpcHY2X3JlYXJyYW5nZV9ydGhkcmAgdG8gcHJldmVudCBvdXQtb2YtYm91bmRzIGFjY2VzcyB3aGVuIGBzZWdtZW50c19sZWZ0IFx1MDAzZSBzZWdtZW50c2AuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgSVB2NiBBSCAoQXV0aGVudGljYXRpb24gSGVhZGVyKSBwcm9jZXNzaW5nIGxvZ2ljLiBGdXp6aW5nIHNob3VsZCBmb2N1cyBvbiBgYWg2X2lucHV0YCBhbmQgYGFoNl9vdXRwdXRgIHBhdGhzIHdpdGggbWFsZm9ybWVkIHJvdXRpbmcgaGVhZGVycy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7SVBWNiYjMzQ7LAogICAgJiMzNDtJTkVUNl9BSCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2FoNl9vdXRwdXQmIzM0OywKICAgICYjMzQ7YWg2X2lucHV0JiMzNDssCiAgICAmIzM0O2lwdjZfY2xlYXJfbXV0YWJsZV9vcHRpb25zJiMzNDssCiAgICAmIzM0O2lwdjZfcmVhcnJhbmdlX3J0aGRyJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgYSBib3VuZHMgY2hlY2sgaW4gYGlwdjZfcmVhcnJhbmdlX3J0aGRyYCB0byBwcmV2ZW50IG91dC1vZi1ib3VuZHMgYWNjZXNzIHdoZW4gYHNlZ21lbnRzX2xlZnQgXHUwMDNlIHNlZ21lbnRzYC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBJUHY2IEFIIChBdXRoZW50aWNhdGlvbiBIZWFkZXIpIHByb2Nlc3NpbmcgbG9naWMuIEZ1enppbmcgc2hvdWxkIGZvY3VzIG9uIGBhaDZfaW5wdXRgIGFuZCBgYWg2X291dHB1dGAgcGF0aHMgd2l0aCBtYWxmb3JtZWQgcm91dGluZyBoZWFkZXJzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDctMjJUMTY6NTI6MjAuNzkyMTY1NjE2WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Mjg1MzE1NzU1NDksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiSVBWNlwiLFxuICAgIFwiSU5FVDZfQUhcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJhaDZfb3V0cHV0XCIsXG4gICAgXCJhaDZfaW5wdXRcIixcbiAgICBcImlwdjZfY2xlYXJfbXV0YWJsZV9vcHRpb25zXCIsXG4gICAgXCJpcHY2X3JlYXJyYW5nZV9ydGhkclwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgYSBib3VuZHMgY2hlY2sgaW4gYGlwdjZfcmVhcnJhbmdlX3J0aGRyYCB0byBwcmV2ZW50IG91dC1vZi1ib3VuZHMgYWNjZXNzIHdoZW4gYHNlZ21lbnRzX2xlZnQgXFx1MDAzZSBzZWdtZW50c2AuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgSVB2NiBBSCAoQXV0aGVudGljYXRpb24gSGVhZGVyKSBwcm9jZXNzaW5nIGxvZ2ljLiBGdXp6aW5nIHNob3VsZCBmb2N1cyBvbiBgYWg2X2lucHV0YCBhbmQgYGFoNl9vdXRwdXRgIHBhdGhzIHdpdGggbWFsZm9ybWVkIHJvdXRpbmcgaGVhZGVycy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjJUMTY6NTI6MjAuNzkyMTcyMTE2WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2Mjk0ODAyNzEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCBkNDJjNzcxZGViZTEyOWM4NTYxMmQ3YTg2NzUwOTQwODg3MGEyMWE1XFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBXZWQgSnVsIDIyIDE2OjUyOjE4IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL25ldC9pcHY2L2FoNi5jIGIvbmV0L2lwdjYvYWg2LmNcXG5pbmRleCA3NmY3YTJkZTkxMDhlYi4uMGYwMWRiODAyZjM1MzUgMTAwNjQ0XFxuLS0tIGEvbmV0L2lwdjYvYWg2LmNcXG4rKysgYi9uZXQvaXB2Ni9haDYuY1xcbkBAIC0yMzMsMjUgKzIzMywyNCBAQCBzdGF0aWMgdm9pZCBpcHY2X3JlYXJyYW5nZV9kZXN0b3B0KHN0cnVjdCBpcHY2aGRyICppcGgsIHN0cnVjdCBpcHY2X29wdF9oZHIgKmRlc1xcbiAgKlxcdHNvIHRoYXQgdGhleSBhcHBlYXIgaW4gdGhlIG9yZGVyIHRoZXkgd2lsbCBhdCB0aGUgZmluYWwgZGVzdGluYXRpb24uXFxuICAqXFx0U2VlIEFwcGVuZGl4IEEyIG9mIFJGQyAyNDAyIGZvciBkZXRhaWxzLlxcbiAgKi9cXG4tc3RhdGljIHZvaWQgaXB2Nl9yZWFycmFuZ2VfcnRoZHIoc3RydWN0IGlwdjZoZHIgKmlwaCwgc3RydWN0IGlwdjZfcnRfaGRyICpydGhkcilcXG4rc3RhdGljIGludCBpcHY2X3JlYXJyYW5nZV9ydGhkcihzdHJ1Y3QgaXB2NmhkciAqaXBoLCBzdHJ1Y3QgaXB2Nl9ydF9oZHIgKnJ0aGRyKVxcbiB7XFxuLVxcdGludCBzZWdtZW50cywgc2VnbWVudHNfbGVmdDtcXG4rXFx0dW5zaWduZWQgaW50IHNlZ21lbnRzLCBzZWdtZW50c19sZWZ0O1xcbiBcXHRzdHJ1Y3QgaW42X2FkZHIgKmFkZHJzO1xcbiBcXHRzdHJ1Y3QgaW42X2FkZHIgZmluYWxfYWRkcjtcXG4gXFxuIFxcdHNlZ21lbnRzX2xlZnQgPSBydGhkci1cXHUwMDNlc2VnbWVudHNfbGVmdDtcXG4gXFx0aWYgKHNlZ21lbnRzX2xlZnQgPT0gMClcXG4tXFx0XFx0cmV0dXJuO1xcbi1cXHRydGhkci1cXHUwMDNlc2VnbWVudHNfbGVmdCA9IDA7XFxuK1xcdFxcdHJldHVybiAwO1xcbiBcXG4tXFx0LyogVGhlIHZhbHVlIG9mIHJ0aGRyLVxcdTAwM2VoZHJsZW4gaGFzIGJlZW4gdmVyaWZpZWQgZWl0aGVyIGJ5IHRoZSBzeXN0ZW1cXG4tXFx0ICogY2FsbCBpZiBpdCBpcyBsb2NhbGx5IGdlbmVyYXRlZCwgb3IgYnkgaXB2Nl9ydGhkcl9yY3YoKSBmb3IgaW5jb21pbmdcXG4tXFx0ICogcGFja2V0cy4gIFNvIHdlIGNhbiBhc3N1bWUgdGhhdCBpdCBpcyBldmVuIGFuZCB0aGF0IHNlZ21lbnRzIGlzXFxuLVxcdCAqIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byBzZWdtZW50c19sZWZ0Llxcbi1cXHQgKlxcbi1cXHQgKiBGb3IgdGhlIHNhbWUgcmVhc29uIHdlIGNhbiBhc3N1bWUgdGhhdCB0aGlzIG9wdGlvbiBpcyBvZiB0eXBlIDAuXFxuK1xcdC8qIFJhdyBsb2NhbGx5IGdlbmVyYXRlZCBwYWNrZXRzIGNhbiByZWFjaCBBSDYgd2l0aG91dCB0aGUgaW52YXJpYW50XFxuK1xcdCAqIHJlcXVpcmVkIGJ5IHRoZSBydDAtc3R5bGUgYWRkcmVzcyByZWFycmFuZ2VtZW50IGJlbG93LlxcbiBcXHQgKi9cXG4gXFx0c2VnbWVudHMgPSBydGhkci1cXHUwMDNlaGRybGVuIFxcdTAwM2VcXHUwMDNlIDE7XFxuK1xcdGlmIChzZWdtZW50c19sZWZ0IFxcdTAwM2Ugc2VnbWVudHMpXFxuK1xcdFxcdHJldHVybiAtRUlOVkFMO1xcbitcXG4rXFx0cnRoZHItXFx1MDAzZXNlZ21lbnRzX2xlZnQgPSAwO1xcbiBcXG4gXFx0YWRkcnMgPSAoKHN0cnVjdCBydDBfaGRyICopcnRoZHIpLVxcdTAwM2VhZGRyO1xcbiBcXHRmaW5hbF9hZGRyID0gYWRkcnNbc2VnbWVudHMgLSAxXTtcXG5AQCAtMjYxLDYgKzI2MCw4IEBAIHN0YXRpYyB2b2lkIGlwdjZfcmVhcnJhbmdlX3J0aGRyKHN0cnVjdCBpcHY2aGRyICppcGgsIHN0cnVjdCBpcHY2X3J0X2hkciAqcnRoZHIpXFxuIFxcbiBcXHRhZGRyc1swXSA9IGlwaC1cXHUwMDNlZGFkZHI7XFxuIFxcdGlwaC1cXHUwMDNlZGFkZHIgPSBmaW5hbF9hZGRyO1xcbitcXG4rXFx0cmV0dXJuIDA7XFxuIH1cXG4gXFxuIHN0YXRpYyBpbnQgaXB2Nl9jbGVhcl9tdXRhYmxlX29wdGlvbnMoc3RydWN0IGlwdjZoZHIgKmlwaCwgaW50IGxlbiwgaW50IGRpcilcXG5AQCAtMjczLDYgKzI3NCw3IEBAIHN0YXRpYyBpbnQgaXB2Nl9jbGVhcl9tdXRhYmxlX29wdGlvbnMoc3RydWN0IGlwdjZoZHIgKmlwaCwgaW50IGxlbiwgaW50IGRpcilcXG4gXFx0fSBleHRoZHIgPSB7IC5pcGggPSBpcGggfTtcXG4gXFx0Y2hhciAqZW5kID0gZXh0aGRyLnJhdyArIGxlbjtcXG4gXFx0aW50IG5leHRoZHIgPSBpcGgtXFx1MDAzZW5leHRoZHI7XFxuK1xcdGludCBlcnI7XFxuIFxcbiBcXHRleHRoZHIuaXBoKys7XFxuIFxcbkBAIC0yOTIsNyArMjk0LDkgQEAgc3RhdGljIGludCBpcHY2X2NsZWFyX211dGFibGVfb3B0aW9ucyhzdHJ1Y3QgaXB2NmhkciAqaXBoLCBpbnQgbGVuLCBpbnQgZGlyKVxcbiBcXHRcXHRcXHRicmVhaztcXG4gXFxuIFxcdFxcdGNhc2UgTkVYVEhEUl9ST1VUSU5HOlxcbi1cXHRcXHRcXHRpcHY2X3JlYXJyYW5nZV9ydGhkcihpcGgsIGV4dGhkci5ydGgpO1xcbitcXHRcXHRcXHRlcnIgPSBpcHY2X3JlYXJyYW5nZV9ydGhkcihpcGgsIGV4dGhkci5ydGgpO1xcbitcXHRcXHRcXHRpZiAoZXJyKVxcbitcXHRcXHRcXHRcXHRyZXR1cm4gZXJyO1xcbiBcXHRcXHRcXHRicmVhaztcXG4gXFxuIFxcdFxcdGRlZmF1bHQ6XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIyVDE2OjUyOjIxLjQyMjU0NTQwNloiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjI3OTAxMTgwNjg5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIklQVjZcIixcbiAgICBcIklORVQ2X0FIXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiYWg2X291dHB1dFwiLFxuICAgIFwiYWg2X2lucHV0XCIsXG4gICAgXCJpcHY2X2NsZWFyX211dGFibGVfb3B0aW9uc1wiLFxuICAgIFwiaXB2Nl9yZWFycmFuZ2VfcnRoZHJcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIGEgYm91bmRzIGNoZWNrIGluIGBpcHY2X3JlYXJyYW5nZV9ydGhkcmAgdG8gcHJldmVudCBvdXQtb2YtYm91bmRzIGFjY2VzcyB3aGVuIGBzZWdtZW50c19sZWZ0IFxcdTAwM2Ugc2VnbWVudHNgLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIElQdjYgQUggKEF1dGhlbnRpY2F0aW9uIEhlYWRlcikgcHJvY2Vzc2luZyBsb2dpYy4gRnV6emluZyBzaG91bGQgZm9jdXMgb24gYGFoNl9pbnB1dGAgYW5kIGBhaDZfb3V0cHV0YCBwYXRocyB3aXRoIG1hbGZvcm1lZCByb3V0aW5nIGhlYWRlcnMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXRcbiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSxcbiAgIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgZDQyYzc3MWRlYmUxMjljODU2MTJkN2E4Njc1MDk0MDg4NzBhMjFhNVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBXZWQgSnVsIDIyIDE2OjUyOjE4IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbmV0L2lwdjYvYWg2LmMgYi9uZXQvaXB2Ni9haDYuY1xuaW5kZXggNzZmN2EyZGU5MTA4ZWIuLjBmMDFkYjgwMmYzNTM1IDEwMDY0NFxuLS0tIGEvbmV0L2lwdjYvYWg2LmNcbisrKyBiL25ldC9pcHY2L2FoNi5jXG5AQCAtMjMzLDI1ICsyMzMsMjQgQEAgc3RhdGljIHZvaWQgaXB2Nl9yZWFycmFuZ2VfZGVzdG9wdChzdHJ1Y3QgaXB2NmhkciAqaXBoLCBzdHJ1Y3QgaXB2Nl9vcHRfaGRyICpkZXNcbiAgKlx0c28gdGhhdCB0aGV5IGFwcGVhciBpbiB0aGUgb3JkZXIgdGhleSB3aWxsIGF0IHRoZSBmaW5hbCBkZXN0aW5hdGlvbi5cbiAgKlx0U2VlIEFwcGVuZGl4IEEyIG9mIFJGQyAyNDAyIGZvciBkZXRhaWxzLlxuICAqL1xuLXN0YXRpYyB2b2lkIGlwdjZfcmVhcnJhbmdlX3J0aGRyKHN0cnVjdCBpcHY2aGRyICppcGgsIHN0cnVjdCBpcHY2X3J0X2hkciAqcnRoZHIpXG4rc3RhdGljIGludCBpcHY2X3JlYXJyYW5nZV9ydGhkcihzdHJ1Y3QgaXB2NmhkciAqaXBoLCBzdHJ1Y3QgaXB2Nl9ydF9oZHIgKnJ0aGRyKVxuIHtcbi1cdGludCBzZWdtZW50cywgc2VnbWVudHNfbGVmdDtcbitcdHVuc2lnbmVkIGludCBzZWdtZW50cywgc2VnbWVudHNfbGVmdDtcbiBcdHN0cnVjdCBpbjZfYWRkciAqYWRkcnM7XG4gXHRzdHJ1Y3QgaW42X2FkZHIgZmluYWxfYWRkcjtcbiBcbiBcdHNlZ21lbnRzX2xlZnQgPSBydGhkci1cdTAwM2VzZWdtZW50c19sZWZ0O1xuIFx0aWYgKHNlZ21lbnRzX2xlZnQgPT0gMClcbi1cdFx0cmV0dXJuO1xuLVx0cnRoZHItXHUwMDNlc2VnbWVudHNfbGVmdCA9IDA7XG4rXHRcdHJldHVybiAwO1xuIFxuLVx0LyogVGhlIHZhbHVlIG9mIHJ0aGRyLVx1MDAzZWhkcmxlbiBoYXMgYmVlbiB2ZXJpZmllZCBlaXRoZXIgYnkgdGhlIHN5c3RlbVxuLVx0ICogY2FsbCBpZiBpdCBpcyBsb2NhbGx5IGdlbmVyYXRlZCwgb3IgYnkgaXB2Nl9ydGhkcl9yY3YoKSBmb3IgaW5jb21pbmdcbi1cdCAqIHBhY2tldHMuICBTbyB3ZSBjYW4gYXNzdW1lIHRoYXQgaXQgaXMgZXZlbiBhbmQgdGhhdCBzZWdtZW50cyBpc1xuLVx0ICogZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIHNlZ21lbnRzX2xlZnQuXG4tXHQgKlxuLVx0ICogRm9yIHRoZSBzYW1lIHJlYXNvbiB3ZSBjYW4gYXNzdW1lIHRoYXQgdGhpcyBvcHRpb24gaXMgb2YgdHlwZSAwLlxuK1x0LyogUmF3IGxvY2FsbHkgZ2VuZXJhdGVkIHBhY2tldHMgY2FuIHJlYWNoIEFINiB3aXRob3V0IHRoZSBpbnZhcmlhbnRcbitcdCAqIHJlcXVpcmVkIGJ5IHRoZSBydDAtc3R5bGUgYWRkcmVzcyByZWFycmFuZ2VtZW50IGJlbG93LlxuIFx0ICovXG4gXHRzZWdtZW50cyA9IHJ0aGRyLVx1MDAzZWhkcmxlbiBcdTAwM2VcdTAwM2UgMTtcbitcdGlmIChzZWdtZW50c19sZWZ0IFx1MDAzZSBzZWdtZW50cylcbitcdFx0cmV0dXJuIC1FSU5WQUw7XG4rXG4rXHRydGhkci1cdTAwM2VzZWdtZW50c19sZWZ0ID0gMDtcbiBcbiBcdGFkZHJzID0gKChzdHJ1Y3QgcnQwX2hkciAqKXJ0aGRyKS1cdTAwM2VhZGRyO1xuIFx0ZmluYWxfYWRkciA9IGFkZHJzW3NlZ21lbnRzIC0gMV07XG5AQCAtMjYxLDYgKzI2MCw4IEBAIHN0YXRpYyB2b2lkIGlwdjZfcmVhcnJhbmdlX3J0aGRyKHN0cnVjdCBpcHY2aGRyICppcGgsIHN0cnVjdCBpcHY2X3J0X2hkciAqcnRoZHIpXG4gXG4gXHRhZGRyc1swXSA9IGlwaC1cdTAwM2VkYWRkcjtcbiBcdGlwaC1cdTAwM2VkYWRkciA9IGZpbmFsX2FkZHI7XG4rXG4rXHRyZXR1cm4gMDtcbiB9XG4gXG4gc3RhdGljIGludCBpcHY2X2NsZWFyX211dGFibGVfb3B0aW9ucyhzdHJ1Y3QgaXB2NmhkciAqaXBoLCBpbnQgbGVuLCBpbnQgZGlyKVxuQEAgLTI3Myw2ICsyNzQsNyBAQCBzdGF0aWMgaW50IGlwdjZfY2xlYXJfbXV0YWJsZV9vcHRpb25zKHN0cnVjdCBpcHY2aGRyICppcGgsIGludCBsZW4sIGludCBkaXIpXG4gXHR9IGV4dGhkciA9IHsgLmlwaCA9IGlwaCB9O1xuIFx0Y2hhciAqZW5kID0gZXh0aGRyLnJhdyArIGxlbjtcbiBcdGludCBuZXh0aGRyID0gaXBoLVx1MDAzZW5leHRoZHI7XG4rXHRpbnQgZXJyO1xuIFxuIFx0ZXh0aGRyLmlwaCsrO1xuIFxuQEAgLTI5Miw3ICsyOTQsOSBAQCBzdGF0aWMgaW50IGlwdjZfY2xlYXJfbXV0YWJsZV9vcHRpb25zKHN0cnVjdCBpcHY2aGRyICppcGgsIGludCBsZW4sIGludCBkaXIpXG4gXHRcdFx0YnJlYWs7XG4gXG4gXHRcdGNhc2UgTkVYVEhEUl9ST1VUSU5HOlxuLVx0XHRcdGlwdjZfcmVhcnJhbmdlX3J0aGRyKGlwaCwgZXh0aGRyLnJ0aCk7XG4rXHRcdFx0ZXJyID0gaXB2Nl9yZWFycmFuZ2VfcnRoZHIoaXBoLCBleHRoZHIucnRoKTtcbitcdFx0XHRpZiAoZXJyKVxuK1x0XHRcdFx0cmV0dXJuIGVycjtcbiBcdFx0XHRicmVhaztcbiBcbiBcdFx0ZGVmYXVsdDpcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIyVDE2OjUyOjIxLjQyMjU0NzYyNloiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU4MjY2MTMxMjAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBTZWN1cml0eSBJbXBsaWNhdGlvbnMgb2YgYSBSZWNlbnQgS2VybmVsIFBhdGNoKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCB0aGF0IHR3ZWFrcyBgbmV0L2lwdjYvYWg2LmNgLiBJbW1lZGlhdGVseSwgSSBzZWUgdGhhdCB0aGUgZnVuY3Rpb24gYGlwdjZfcmVhcnJhbmdlX3J0aGRyYCBoYXMgYmVlbiBjaGFuZ2VkLiBJdCdzIG5vdyByZXR1cm5pbmcgYW4gYGludGAgcmF0aGVyIHRoYW4gYHZvaWRgLCB3aGljaCBpcyBhIHJlZCBmbGFnLCBtZWFuaW5nIHRoYXQgZXJyb3IgaGFuZGxpbmcgaXMgYmVpbmcgaW50cm9kdWNlZC4gVGhlIHBhdGNoIGFkZHMgYSBjaGVjayB3aXRoaW4gYGlwdjZfcmVhcnJhbmdlX3J0aGRyYDpcblxuYGBgY1xuXHRzZWdtZW50cyA9IHJ0aGRyLVx1MDAzZWhkcmxlbiBcdTAwM2VcdTAwM2UgMTtcblx0aWYgKHNlZ21lbnRzX2xlZnQgXHUwMDNlIHNlZ21lbnRzKVxuXHRcdHJldHVybiAtRUlOVkFMO1xuYGBgXG5cblJpZ2h0LCBpdCBsb29rcyBsaWtlIHRoaXMgaXMgYSBib3VuZHMgY2hlY2sgb24gdGhlIG51bWJlciBvZiBzZWdtZW50cyBpbiBhIHJvdXRpbmcgaGVhZGVyLiBUaGlzIHN1Z2dlc3RzIGEgcG90ZW50aWFsIHZ1bG5lcmFiaWxpdHkgcmVsYXRlZCB0byByb3V0aW5nIGhlYWRlciBtYW5pcHVsYXRpb24gaXMgYmVpbmcgYWRkcmVzc2VkLCBhbmQgdGhpcyBjaGVjayBpcyBtZWFudCB0byBtaXRpZ2F0ZSBpdC5cblxuVGhlIG90aGVyIGNoYW5nZSBtb2RpZmllcyBgaXB2Nl9jbGVhcl9tdXRhYmxlX29wdGlvbnNgIHRvIGNoZWNrIHRoZSByZXR1cm4gdmFsdWUgb2YgYGlwdjZfcmVhcnJhbmdlX3J0aGRyYC4gSWYgdGhlcmUncyBhbiBlcnJvciBmcm9tIHRoZSByZWFycmFuZ2UgZnVuY3Rpb24sIGBpcHY2X2NsZWFyX211dGFibGVfb3B0aW9uc2Agbm93IHByb3BhZ2F0ZXMgaXQuIFNtYXJ0LiBCdXQgdGhpcyBpcyB0aGUgY3J1Y2lhbCBwYXJ0LiBOb3csIEkgbmVlZCB0byBzZWUgKmhvdyogdGhlc2UgZXJyb3JzIGFyZSBoYW5kbGVkIHVwIHRoZSBjYWxsIHN0YWNrLiBBcmUgdGhlIGNhbGxlcnMgb2YgYGlwdjZfY2xlYXJfbXV0YWJsZV9vcHRpb25zYCBwcmVwYXJlZCB0byBoYW5kbGUgcG90ZW50aWFsIGAtRUlOVkFMYCByZXR1cm5zPyBUaGF0J3Mgd2hlcmUgdGhlIHJlYWwgc2VjdXJpdHkgaW1wbGljYXRpb25zIGxpZS4gSSBuZWVkIHRvIHRyYWNlIHRob3NlIGZ1bmN0aW9uIGNhbGxzIGFuZCB1bmRlcnN0YW5kIHRoZSBlcnJvciBwcm9wYWdhdGlvbi4gQXJlIHdlIGp1c3QgbG9nZ2luZyB0aGUgZXJyb3IsIG9yIGlzIHRoZSBwYWNrZXQgYmVpbmcgZHJvcHBlZCwgb3Igc29tZXRoaW5nIG1vcmUgc29waGlzdGljYXRlZD9cblxuRmlyc3QsIEkgc2hvdWxkIHNlZSBpZiB0aGVyZSBhcmUgYW55IGNvbmZpZyBvcHRpb25zIHJlbGF0ZWQgdG8gdGhlIGZpbGUgaW4gcXVlc3Rpb24uIEl0IGlzIG9mdGVuIG5lY2Vzc2FyeSB0byBiZSBhd2FyZSBvZiB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zIHRoYXQgYWZmZWN0IHRoZSBzb3VyY2UgY29kZSBpbiBxdWVzdGlvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6MjU5NSwiT3V0cHV0VG9rZW5zIjozNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE3MiwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIyVDE2OjUyOjI3LjI0OTE2MzM5NloiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNzg0OTc4OTYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiaXB2Nl9jbGVhcl9tdXRhYmxlX29wdGlvbnNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L2lwdjYvYWg2LmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L2lwdjYvYWg2LmM9MjM2PXN0YXRpYyBpbnQgaXB2Nl9yZWFycmFuZ2VfcnRoZHIoc3RydWN0IGlwdjZoZHIgKmlwaCwgc3RydWN0IGlwdjZfcnRfaGRyICpydGhkcilcXG4tLVxcbm5ldC9pcHY2L2FoNi5jLTI2Ni1cXG5uZXQvaXB2Ni9haDYuYzoyNjc6c3RhdGljIGludCBpcHY2X2NsZWFyX211dGFibGVfb3B0aW9ucyhzdHJ1Y3QgaXB2NmhkciAqaXBoLCBpbnQgbGVuLCBpbnQgZGlyKVxcbm5ldC9pcHY2L2FoNi5jLTI2OC17XFxuLS1cXG5uZXQvaXB2Ni9haDYuYz0zNDc9c3RhdGljIGludCBhaDZfb3V0cHV0KHN0cnVjdCB4ZnJtX3N0YXRlICp4LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbi0tXFxubmV0L2lwdjYvYWg2LmMtNDEzLVxcdGlmIChleHRsZW4pIHtcXG5uZXQvaXB2Ni9haDYuYzo0MTQ6XFx0XFx0ZXJyID0gaXB2Nl9jbGVhcl9tdXRhYmxlX29wdGlvbnModG9wX2lwaCxcXG5uZXQvaXB2Ni9haDYuYy00MTUtXFx0XFx0XFx0XFx0XFx0XFx0IGV4dGxlbiAtIHNpemVvZigqaXBoX2V4dCkgK1xcbi0tXFxubmV0L2lwdjYvYWg2LmM9NTE2PXN0YXRpYyBpbnQgYWg2X2lucHV0KHN0cnVjdCB4ZnJtX3N0YXRlICp4LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbi0tXFxubmV0L2lwdjYvYWg2LmMtNjEwLVxcbm5ldC9pcHY2L2FoNi5jOjYxMTpcXHRlcnIgPSBpcHY2X2NsZWFyX211dGFibGVfb3B0aW9ucyhpcDZoLCBoZHJfbGVuLCBYRlJNX1BPTElDWV9JTik7XFxubmV0L2lwdjYvYWg2LmMtNjEyLVxcdGlmIChlcnIpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIyVDE2OjUyOjI3LjQyNzY2OTEyMloiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM0MzY1MDUyNjksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgcHJlc2VudGVkIGFzIGEgcGVyc29uYWwgdGhvdWdodCBwcm9jZXNzLCBhcyByZXF1ZXN0ZWQ6XG5cbioqRGVidWdnaW5nIE5ldHdvcmsgQXV0aGVudGljYXRpb24gSGVhZGVyIChBSCkgSXNzdWVzKipcblxuUmlnaHQsIHNvIEknbSBzZWVpbmcgYW4gaXNzdWUsIGFuZCBpdCBsb29rcyBsaWtlIHRoZSBgYWg2X291dHB1dGAgYW5kIGBhaDZfaW5wdXRgIGZ1bmN0aW9ucyBhcmUgd2hlcmUgdGhlIGVycm9yIGhhbmRsaW5nIGlzIGhhcHBlbmluZy4gVGhhdCdzIGEgZ29vZCBzdGFydGluZyBwb2ludC4gTXkgZ3V0IHRlbGxzIG1lIHRoaXMgaXMgc29tZXRoaW5nIHNwZWNpZmljIHRvIElQdjYgYXV0aGVudGljYXRpb24uIEJlZm9yZSBJIGRpdmUgZGVlcCBpbnRvIHRob3NlIGZ1bmN0aW9ucyB0aG91Z2gsIGl0J3MgYWx3YXlzIHdvcnRoIHZlcmlmeWluZyB0aGUgY29uZmlndXJhdGlvbiBmaXJzdCwgZ2l2ZW4gdGhlIG51YW5jZXMgaW52b2x2ZWQgd2l0aCBBSC4gTGV0J3Mgc3RhcnQgYnkgZG91YmxlLWNoZWNraW5nIHRoZSByZWxldmFudCBjb25maWd1cmF0aW9uIG9wdGlvbnMgcmVsYXRlZCB0byBgbmV0L2lwdjYvYWg2LmNgLiBJIG5lZWQgdG8gZW5zdXJlIHRoZSBleHBlY3RlZCBmZWF0dXJlcyBhcmUgZW5hYmxlZCAob3IgZGlzYWJsZWQsIGRlcGVuZGluZyBvbiB0aGUgc2NlbmFyaW8pLiBBIHF1aWNrIGxvb2sgYXQgdGhlIGNvbmZpZ3VyYXRpb24gd2lsbCBxdWlja2x5IHRlbGwgbWUgaWYgYW55IGV4cGVjdGVkIGNvbmZpZ3VyYXRpb25zIGhhdmUgYmVlbiBtaXNzZWQuIFRoYXQgY291bGQgYmUgYSBzb3VyY2Ugb2YgdGhlIGN1cnJlbnQgYmVoYXZpb3IuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM1NDUsIk91dHB1dFRva2VucyI6MzAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0MCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yMlQxNjo1MjozMC44NjQxNzY3NTFaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTEwODQyMDQxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImFoNi5vXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9pcHY2L01ha2VmaWxlXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9pcHY2L01ha2VmaWxlPTI4PWlwdjYtJChDT05GSUdfSVBWNl9JT0FNNl9MV1RVTk5FTCkgKz0gaW9hbTZfaXB0dW5uZWwub1xcbm5ldC9pcHY2L01ha2VmaWxlLTI5LVxcbm5ldC9pcHY2L01ha2VmaWxlOjMwOm9iai0kKENPTkZJR19JTkVUNl9BSCkgKz0gYWg2Lm9cXG5uZXQvaXB2Ni9NYWtlZmlsZS0zMS1vYmotJChDT05GSUdfSU5FVDZfRVNQKSArPSBlc3A2Lm9cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjJUMTY6NTI6MzAuOTc1MDI0NTAyWiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mjk5NDI1ODU1NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkV4YW1pbmluZyBJTkVUNl9BSCBDb25maWd1cmF0aW9uKipcblxuQWxyaWdodCwgc28gdGhlIGtleSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gcGxheSBoZXJlIGlzIGBJTkVUNl9BSGAuIEkgbmVlZCB0byBxdWlja2x5IGVzdGFibGlzaCB0aGUgY29udGV4dC4gTGV0IG1lIGp1c3Qgc2NhbiBmb3Igb3RoZXIgcmVsZXZhbnQgY29uZmlnIG9wdGlvbnMgaW4gdGhpcyBhcmVhLiBNeSBpbW1lZGlhdGUgYXNzdW1wdGlvbiwgYW5kIGl0J3MgcHJhY3RpY2FsbHkgYSBnaXZlbiwgaXMgdGhhdCBgSVBWNmAgaXRzZWxmIGlzIGEgcHJlcmVxdWlzaXRlLiBXZSdyZSBkZWFsaW5nIHdpdGggQUggb3ZlciBJUHY2LCBzbyB0aGF0IGZvdW5kYXRpb24gaGFzIHRvIGJlIGluIHBsYWNlIGZpcnN0LiBCZXN0IHRvIGNvbmZpcm0gdGhhdCBkZXBlbmRlbmN5IGV4cGxpY2l0bHksIHRob3VnaCwganVzdCB0byBiZSB0aG9yb3VnaCBhbmQgYXZvaWQgYW55IGdvdGNoYXMuIEkgbmVlZCB0byBkb2N1bWVudCB0aGlzIHByb3Blcmx5LlxuXG5cbiIsIklucHV0VG9rZW5zIjozOTE3LCJPdXRwdXRUb2tlbnMiOjMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjJUMTY6NTI6MzMuOTY5Mjg2NTM2WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI3NDgyMzQxOCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgSU5FVDZfQUhcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L2lwdjYvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvaXB2Ni9LY29uZmlnPTM5PWNvbmZpZyBJUFY2X09QVElNSVNUSUNfREFEXFxuLS1cXG5uZXQvaXB2Ni9LY29uZmlnLTQ2LVxcbm5ldC9pcHY2L0tjb25maWc6NDc6Y29uZmlnIElORVQ2X0FIXFxubmV0L2lwdjYvS2NvbmZpZy00OC1cXHR0cmlzdGF0ZSBcXFwiSVB2NjogQUggdHJhbnNmb3JtYXRpb25cXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIyVDE2OjUyOjM0LjI0NDExNDkwNFoiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQwODQyODY2MzgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBTZWN1cml0eSBBc3NvY2lhdGlvbiBDb25maWd1cmF0aW9uKipcblxuT2theSwgc28gdGhlIGNvbmZpZ3VyYXRpb24gaXMgc2V0IHRvIGBJTkVUNl9BSGAsIHdoaWNoIG1lYW5zIHdlJ3JlIGRlYWxpbmcgd2l0aCBBdXRoZW50aWNhdGlvbiBIZWFkZXIgb3ZlciBJUHY2LiBUaGlzIHBhdGNoIGlzIHRvdWNoaW5nIHR3byBrZXkgZnVuY3Rpb25zLCBgaXB2Nl9yZWFycmFuZ2VfcnRoZHJgIGFuZCBgaXB2Nl9jbGVhcl9tdXRhYmxlX29wdGlvbnNgLCB3aGljaCBhcmUgcGFydCBvZiB0aGUgSVB2NiBwcm9jZXNzaW5nLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgYXJlIHRoZXNlIHRoZSByaWdodCBmdW5jdGlvbnM/XG5cblRoZSBpbml0aWFsIGZvY3VzIHN5bWJvbHMgc2hvdWxkIGluY2x1ZGUgYGlwdjZfcmVhcnJhbmdlX3J0aGRyYCwgYGlwdjZfY2xlYXJfbXV0YWJsZV9vcHRpb25zYCwgYW5kIHRoZSBBSC1zcGVjaWZpYyBmdW5jdGlvbnMgYGFoNl9vdXRwdXRgIGFuZCBgYWg2X2lucHV0YC4gSG9sZCBvbiwgSSBuZWVkIHRvIHJlbWVtYmVyIC0gYm90aCBgaXB2Nl9yZWFycmFuZ2VfcnRoZHJgIGFuZCBgaXB2Nl9jbGVhcl9tdXRhYmxlX29wdGlvbnNgIGFyZSBkZWNsYXJlZCBzdGF0aWMuIEkgbmVlZCB0byBtYWtlIHN1cmUgSSBhbSBub3QgbWlzc2luZyBhbnl0aGluZyB0aGF0IHdvdWxkIGJlIHVzaW5nIHRoZW0uIEFsc28sIGBhaDZfb3V0cHV0YCBhbmQgYGFoNl9pbnB1dGAgYXJlIHN0YXRpYyBhcyB3ZWxsLiBCdXQgd2FpdCwgYXJlbid0IHRob3NlIHJlZ2lzdGVyZWQgc29tZXdoZXJlLCBtYXliZSB3aXRoaW4gYHhmcm1fc3RhdGVfYWZpbmZvYCBvciBzb21ldGhpbmcgc2ltaWxhcj8gWWVzLCB0aGV5IGFyZSEgT2theSwgc28gSSBuZWVkIHRvIGRpZyBpbnRvIGBhaDZfb3V0cHV0YCBhbmQgYGFoNl9pbnB1dGAgdG8gdHJhY2UgdGhlaXIgdXNhZ2UuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQyMTEsIk91dHB1dFRva2VucyI6MzMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNTUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjJUMTY6NTI6MzguMzI4NDA0MjUyWiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxOTIyOTUyMzUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiYWg2X291dHB1dFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvaXB2Ni9haDYuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvaXB2Ni9haDYuYz0yNjc9c3RhdGljIGludCBpcHY2X2NsZWFyX211dGFibGVfb3B0aW9ucyhzdHJ1Y3QgaXB2NmhkciAqaXBoLCBpbnQgbGVuLCBpbnQgZGlyKVxcbi0tXFxubmV0L2lwdjYvYWg2LmMtMzEyLVxcbm5ldC9pcHY2L2FoNi5jOjMxMzpzdGF0aWMgdm9pZCBhaDZfb3V0cHV0X2RvbmUodm9pZCAqZGF0YSwgaW50IGVycilcXG5uZXQvaXB2Ni9haDYuYy0zMTQte1xcbi0tXFxubmV0L2lwdjYvYWg2LmMtMzQ2LVxcbm5ldC9pcHY2L2FoNi5jOjM0NzpzdGF0aWMgaW50IGFoNl9vdXRwdXQoc3RydWN0IHhmcm1fc3RhdGUgKngsIHN0cnVjdCBza19idWZmICpza2IpXFxubmV0L2lwdjYvYWg2LmMtMzQ4LXtcXG4tLVxcbm5ldC9pcHY2L2FoNi5jLTQ0Ni1cXHRhaGFzaF9yZXF1ZXN0X3NldF9jcnlwdChyZXEsIHNnLCBpY3YsIHNrYi1cXHUwMDNlbGVuICsgc2VxaGlfbGVuKTtcXG5uZXQvaXB2Ni9haDYuYzo0NDc6XFx0YWhhc2hfcmVxdWVzdF9zZXRfY2FsbGJhY2socmVxLCAwLCBhaDZfb3V0cHV0X2RvbmUsIHNrYik7XFxubmV0L2lwdjYvYWg2LmMtNDQ4LVxcbi0tXFxubmV0L2lwdjYvYWg2LmM9Nzg0PXN0YXRpYyBjb25zdCBzdHJ1Y3QgeGZybV90eXBlIGFoNl90eXBlID0ge1xcbi0tXFxubmV0L2lwdjYvYWg2LmMtNzkwLVxcdC5pbnB1dFxcdFxcdD0gYWg2X2lucHV0LFxcbm5ldC9pcHY2L2FoNi5jOjc5MTpcXHQub3V0cHV0XFx0XFx0PSBhaDZfb3V0cHV0LFxcbm5ldC9pcHY2L2FoNi5jLTc5Mi19O1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yMlQxNjo1MjozOC41MjA3MDU0MzdaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDE0MzE4NTE1MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBSZWNlbnQgSVB2NiBQYXRjaCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIG15IGluaXRpYWwgcmVhY3Rpb24gaXMgdGhhdCBpdCdzIHRhcmdldGluZyBhIHByZXR0eSBuYXN0eSBwb3RlbnRpYWwgdnVsbmVyYWJpbGl0eS4gVGhlIGZvY3VzIHN5bWJvbHMgZ2l2ZSBtZSBhIGdvb2QgaGFuZGxlIG9uIHdoZXJlIHRvIGxvb2sg4oCTIGBhaDZfb3V0cHV0YCwgYGFoNl9pbnB1dGAsIGBpcHY2X3JlYXJyYW5nZV9ydGhkcmAsIGFuZCBgaXB2Nl9jbGVhcl9tdXRhYmxlX29wdGlvbnNgLiBJdCBzZWVtcyB0aGUgY29yZSBwcm9ibGVtIGxpZXMgd2l0aGluIGBpcHY2X3JlYXJyYW5nZV9ydGhkcmAsIHNwZWNpZmljYWxseSB0aGUgY29uZGl0aW9uIHdoZXJlIGBzZWdtZW50c19sZWZ0YCBzb21laG93IGJlY29tZXMgZ3JlYXRlciB0aGFuIGBzZWdtZW50c2AuIFRoYXQgc2NyZWFtcyBvdXQtb2YtYm91bmRzIGFjY2Vzcywgd2hpY2ggaXMgc29tZXRoaW5nIEkgd2FudCB0byBuaXAgaW4gdGhlIGJ1ZCBpbW1lZGlhdGVseS5cblxuTXkgZ3V0IHRlbGxzIG1lIHRoaXMgaXMgZnVuY3Rpb25hbGx5IHNvdW5kOyBmaXhpbmcgdGhhdCBraW5kIG9mIG1lbW9yeSBhY2Nlc3MgYnVnIGlzIGFsd2F5cyBhIGdvb2QgdGhpbmcuIERlZmluaXRlbHkgd29ydGggc29tZSBzZXJpb3VzIGZ1enppbmcgYWZ0ZXIgSSBjb25maXJtIG15IHVuZGVyc3RhbmRpbmcuIEkgc2hvdWxkIGFsc28gbm90ZSBkb3duIHRoZSByZXF1aXJlZCBjb25maWd1cmF0aW9ucyBmb3IgdGhpcyBwYXRjaCB0byBmdW5jdGlvbjogYElORVQ2X0FIYCBhbmQgYElQVjZgLlxuXG5KdXN0IHRvIGJlIHRob3JvdWdoLCBJIHNob3VsZCBkb3VibGUtY2hlY2sgZGVwZW5kZW5jaWVzLiBJJ2xsIHF1aWNrbHkgdmVyaWZ5IHRoYXQgYElORVQ2X0FIYCBkb2Vzbid0IGhhdmUgYW55IGhpZGRlbiBkZXBlbmRlbmNpZXMgdGhhdCBjb3VsZCBjb21wbGljYXRlIHRoaW5ncyBkb3duIHRoZSBsaW5lLiBXZSBkb24ndCB3YW50IGFueSB1bmV4cGVjdGVkIGludGVyYWN0aW9ucyBvciBzaWRlIGVmZmVjdHMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjUwNDAsIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMTcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjJUMTY6NTI6NDIuNjYzODkzMjdaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTEwOTEwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcIm5ldC9pcHY2L0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogNDcsXG4gIFwiTGluZUNvdW50XCI6IDIwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgNDc6XFx0Y29uZmlnIElORVQ2X0FIXFxuICA0ODpcXHRcXHR0cmlzdGF0ZSBcXFwiSVB2NjogQUggdHJhbnNmb3JtYXRpb25cXFwiXFxuICA0OTpcXHRcXHRzZWxlY3QgWEZSTV9BSFxcbiAgNTA6XFx0XFx0aGVscFxcbiAgNTE6XFx0XFx0ICBTdXBwb3J0IGZvciBJUHNlYyBBSCAoQXV0aGVudGljYXRpb24gSGVhZGVyKS5cXG4gIDUyOlxcdFxcbiAgNTM6XFx0XFx0ICBBSCBjYW4gYmUgdXNlZCB3aXRoIHZhcmlvdXMgYXV0aGVudGljYXRpb24gYWxnb3JpdGhtcy4gIEJlc2lkZXNcXG4gIDU0OlxcdFxcdCAgZW5hYmxpbmcgQUggc3VwcG9ydCBpdHNlbGYsIHRoaXMgb3B0aW9uIGVuYWJsZXMgdGhlIGdlbmVyaWNcXG4gIDU1OlxcdFxcdCAgaW1wbGVtZW50YXRpb25zIG9mIHRoZSBhbGdvcml0aG1zIHRoYXQgUkZDIDgyMjEgbGlzdHMgYXMgTVVTVCBiZVxcbiAgNTY6XFx0XFx0ICBpbXBsZW1lbnRlZC4gIElmIHlvdSBuZWVkIGFueSBvdGhlciBhbGdvcml0aG1zLCB5b3UnbGwgbmVlZCB0byBlbmFibGVcXG4gIDU3OlxcdFxcdCAgdGhlbSBpbiB0aGUgY3J5cHRvIEFQSS4gIFlvdSBzaG91bGQgYWxzbyBlbmFibGUgYWNjZWxlcmF0ZWRcXG4gIDU4OlxcdFxcdCAgaW1wbGVtZW50YXRpb25zIG9mIGFueSBuZWVkZWQgYWxnb3JpdGhtcyB3aGVuIGF2YWlsYWJsZS5cXG4gIDU5OlxcdFxcbiAgNjA6XFx0XFx0ICBJZiB1bnN1cmUsIHNheSBZLlxcbiAgNjE6XFx0XFxuICA2MjpcXHRjb25maWcgSU5FVDZfRVNQXFxuICA2MzpcXHRcXHR0cmlzdGF0ZSBcXFwiSVB2NjogRVNQIHRyYW5zZm9ybWF0aW9uXFxcIlxcbiAgNjQ6XFx0XFx0c2VsZWN0IFhGUk1fRVNQXFxuICA2NTpcXHRcXHRoZWxwXFxuICA2NjpcXHRcXHQgIFN1cHBvcnQgZm9yIElQc2VjIEVTUCAoRW5jYXBzdWxhdGluZyBTZWN1cml0eSBQYXlsb2FkKS5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjJUMTY6NTI6NDIuNjY0MDA2MzhaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjQxOTI4MzU5NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBbmFseXNpcyBvZiB0aGUgSVB2NiBBSCBQYXRjaCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIG15IGluaXRpYWwgdGhvdWdodCBpcywgdGhlIGBJTkVUNl9BSGAgY29uZmlnIGlzIG5lc3RlZCB3aXRoaW4gdGhlIGBJUFY2YCBibG9jayBpbiBgbmV0L2lwdjYvS2NvbmZpZ2AuIFRoYXQgbWVhbnMgYm90aCBgSVBWNmAgYW5kIGBJTkVUNl9BSGAgYXJlIHJlbGV2YW50IGNvbmZpZ3VyYXRpb25zIGhlcmUuIFdlJ3JlIGRlYWxpbmcgd2l0aCBJUHY2IEF1dGhlbnRpY2F0aW9uIEhlYWRlciBmdW5jdGlvbmFsaXR5LCBzbyBteSByYWRhciBpcyB1cC5cblxuTm93LCBsZXQncyBzZWUsIGBpcHY2X3JlYXJyYW5nZV9ydGhkcmAuLi4gaXMgaXQgc3RhdGljPyBZdXAsIGl0IGlzLiBUaGF0J3MgZ29vZCBpbnRlbC4gS25vd2luZyBpdCdzIHN0YXRpYywgY29tYmluZWQgd2l0aCB0aGUgY29udGV4dCBvZiB0aGUgcGF0Y2gsIHRlbGxzIG1lIHRoYXQgYGFoNl9vdXRwdXRgLCBgYWg2X2lucHV0YCwgYGlwdjZfY2xlYXJfbXV0YWJsZV9vcHRpb25zYCwgYW5kIGBpcHY2X3JlYXJyYW5nZV9ydGhkcmAgYXJlIGFsbCBwcmltZSB0YXJnZXRzIGZvciBmdXp6aW5nLiBUaGV5IGFyZSBhbGwgaW52b2x2ZWQgaW4gY3JpdGljYWwgYXNwZWN0cyBvZiB0aGUgQUggcHJvY2Vzcy5cblxuVGhlIHJlYXNvbmluZyBiZWhpbmQgdGhpcyBpcywgdGhlIHBhdGNoIGl0c2VsZiBpbnRyb2R1Y2VzIGEgY3J1Y2lhbCBib3VuZHMgY2hlY2sgd2l0aGluIGBpcHY2X3JlYXJyYW5nZV9ydGhkcmAuIFNwZWNpZmljYWxseSwgaXQgYWRkcmVzc2VzIGFuIG91dC1vZi1ib3VuZHMgYWNjZXNzIGlzc3VlIHdoZW4gYHNlZ21lbnRzX2xlZnRgIGV4Y2VlZHMgYHNlZ21lbnRzYC4gVGhhdCdzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgZGlyZWN0bHkgaW1wYWN0aW5nIGhvdyB0aGUgSVB2NiBBSCBwcm9jZXNzZXMgcGFja2V0cy4gVGhlcmVmb3JlLCBmdXp6aW5nIHRoZSBpbnB1dCBhbmQgb3V0cHV0IHBhdGhzIG9mIGBhaDZfaW5wdXRgIGFuZCBgYWg2X291dHB1dGAsIHBhcnRpY3VsYXJseSB3aXRoIGludGVudGlvbmFsbHkgbWFsZm9ybWVkIHJvdXRpbmcgaGVhZGVycywgaXMgdGhlIGtleSB0byBlZmZlY3RpdmVseSB0ZXN0IHRoaXMgcGF0Y2guIFdlIHNob3VsZCBmb2N1cyBvbiBjcmFmdGluZyBmdXp6ZXIgaW5wdXRzIHRvIHRyaWdnZXIgdGhhdCBgc2VnbWVudHNfbGVmdGAgY29uZGl0aW9uIHRvIHNlZSBpZiB0aGUgY2hlY2sgd29ya3MgY29ycmVjdGx5LlxuXG5BbHJpZ2h0LCB0aW1lIHRvIGdldCB0aG9zZSBmdXp6ZXJzIHJlYWR5IGFuZCBzZXQgdXAgZm9yIHRoZSBBSCBpbnB1dCBhbmQgb3V0cHV0IHBhdGhzIVxuXG5cbiIsIklucHV0VG9rZW5zIjo1NzMxLCJPdXRwdXRUb2tlbnMiOjE1NSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE5OSwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIyVDE2OjUyOjQ5LjA4MzI5MjU4NFoiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI0MDQyNzQxMSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiSVBWNlwiLFxuICAgIFwiSU5FVDZfQUhcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJhaDZfb3V0cHV0XCIsXG4gICAgXCJhaDZfaW5wdXRcIixcbiAgICBcImlwdjZfY2xlYXJfbXV0YWJsZV9vcHRpb25zXCIsXG4gICAgXCJpcHY2X3JlYXJyYW5nZV9ydGhkclwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgYSBib3VuZHMgY2hlY2sgaW4gYGlwdjZfcmVhcnJhbmdlX3J0aGRyYCB0byBwcmV2ZW50IG91dC1vZi1ib3VuZHMgYWNjZXNzIHdoZW4gYHNlZ21lbnRzX2xlZnQgXFx1MDAzZSBzZWdtZW50c2AuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgSVB2NiBBSCAoQXV0aGVudGljYXRpb24gSGVhZGVyKSBwcm9jZXNzaW5nIGxvZ2ljLiBGdXp6aW5nIHNob3VsZCBmb2N1cyBvbiBgYWg2X2lucHV0YCBhbmQgYGFoNl9vdXRwdXRgIHBhdGhzIHdpdGggbWFsZm9ybWVkIHJvdXRpbmcgaGVhZGVycy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJJUFY2XCIsXG4gICAgXCJJTkVUNl9BSFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImFoNl9vdXRwdXRcIixcbiAgICBcImFoNl9pbnB1dFwiLFxuICAgIFwiaXB2Nl9jbGVhcl9tdXRhYmxlX29wdGlvbnNcIixcbiAgICBcImlwdjZfcmVhcnJhbmdlX3J0aGRyXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBhIGJvdW5kcyBjaGVjayBpbiBgaXB2Nl9yZWFycmFuZ2VfcnRoZHJgIHRvIHByZXZlbnQgb3V0LW9mLWJvdW5kcyBhY2Nlc3Mgd2hlbiBgc2VnbWVudHNfbGVmdCBcXHUwMDNlIHNlZ21lbnRzYC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBJUHY2IEFIIChBdXRoZW50aWNhdGlvbiBIZWFkZXIpIHByb2Nlc3NpbmcgbG9naWMuIEZ1enppbmcgc2hvdWxkIGZvY3VzIG9uIGBhaDZfaW5wdXRgIGFuZCBgYWg2X291dHB1dGAgcGF0aHMgd2l0aCBtYWxmb3JtZWQgcm91dGluZyBoZWFkZXJzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowkbklz[1] Phase: Succeeded StartedAt: 2026-07-22 16:53:01 +0000 UTC FinishedAt: 2026-07-22 16:53:01 +0000 UTC Input: nil Output: nil --------- Name: series-workflowkbklz[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-07-22 16:53:01 +0000 UTC FinishedAt: 2026-07-22 16:53:01 +0000 UTC Input: nil Output: nil --------- Name: series-workflowkbklz[2] Phase: Succeeded StartedAt: 2026-07-22 16:53:01 +0000 UTC FinishedAt: 2026-07-22 21:09:51 +0000 UTC Input: nil Output: nil --------- Name: series-workflowkbklz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5cfb576ce39ba5647024c6d6eeb5b7a822fab6e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6","INET6_AH"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ah6_output","ah6_input","ipv6_clear_mutable_options","ipv6_rearrange_rthdr"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5cfb576ce39ba5647024c6d6eeb5b7a822fab6e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6","INET6_AH"],"series_id":"c19b1309-1a1a-4c4d-8575-7fb52da0112e","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-07-22 16:53:01 +0000 UTC FinishedAt: 2026-07-22 21:09:51 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"f5cfb576ce39ba5647024c6d6eeb5b7a822fab6e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6","INET6_AH"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ah6_output","ah6_input","ipv6_clear_mutable_options","ipv6_rearrange_rthdr"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"f5cfb576ce39ba5647024c6d6eeb5b7a822fab6e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6","INET6_AH"],"series_id":"c19b1309-1a1a-4c4d-8575-7fb52da0112e","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowkbklz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5cfb576ce39ba5647024c6d6eeb5b7a822fab6e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6","INET6_AH"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ah6_output","ah6_input","ipv6_clear_mutable_options","ipv6_rearrange_rthdr"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5cfb576ce39ba5647024c6d6eeb5b7a822fab6e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6","INET6_AH"],"series_id":"c19b1309-1a1a-4c4d-8575-7fb52da0112e","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-07-22 16:53:01 +0000 UTC FinishedAt: 2026-07-22 16:53:12 +0000 UTC Input: nil Output: nil --------- Name: series-workflowkbklz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5cfb576ce39ba5647024c6d6eeb5b7a822fab6e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6","INET6_AH"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ah6_output","ah6_input","ipv6_clear_mutable_options","ipv6_rearrange_rthdr"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5cfb576ce39ba5647024c6d6eeb5b7a822fab6e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6","INET6_AH"],"series_id":"c19b1309-1a1a-4c4d-8575-7fb52da0112e","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-07-22 16:53:01 +0000 UTC FinishedAt: 2026-07-22 16:53:07 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"f5cfb576ce39ba5647024c6d6eeb5b7a822fab6e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6","INET6_AH"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.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-workflowkbklz/series-workflowkbklz-convert-artifact-2410774711/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowkbklz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5cfb576ce39ba5647024c6d6eeb5b7a822fab6e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6","INET6_AH"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ah6_output","ah6_input","ipv6_clear_mutable_options","ipv6_rearrange_rthdr"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5cfb576ce39ba5647024c6d6eeb5b7a822fab6e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6","INET6_AH"],"series_id":"c19b1309-1a1a-4c4d-8575-7fb52da0112e","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-07-22 16:53:12 +0000 UTC FinishedAt: 2026-07-22 17:22:22 +0000 UTC Input: nil Output: nil --------- Name: series-workflowkbklz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5cfb576ce39ba5647024c6d6eeb5b7a822fab6e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6","INET6_AH"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ah6_output","ah6_input","ipv6_clear_mutable_options","ipv6_rearrange_rthdr"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5cfb576ce39ba5647024c6d6eeb5b7a822fab6e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6","INET6_AH"],"series_id":"c19b1309-1a1a-4c4d-8575-7fb52da0112e","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-07-22 16:53:13 +0000 UTC FinishedAt: 2026-07-22 17:22:22 +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:*c2ccd67c-2050-4c93-8583-b5095aed1563,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-workflowkbklz/series-workflowkbklz-convert-artifact-2410774711/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": "c9a60ddc-2de1-4d8d-99fd-4361af897c9f", "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-workflowkbklz/series-workflowkbklz-build-action-3101089805/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowkbklz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5cfb576ce39ba5647024c6d6eeb5b7a822fab6e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6","INET6_AH"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ah6_output","ah6_input","ipv6_clear_mutable_options","ipv6_rearrange_rthdr"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5cfb576ce39ba5647024c6d6eeb5b7a822fab6e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6","INET6_AH"],"series_id":"c19b1309-1a1a-4c4d-8575-7fb52da0112e","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-07-22 16:53:13 +0000 UTC FinishedAt: 2026-07-22 17:22:12 +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:*c2ccd67c-2050-4c93-8583-b5095aed1563,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-workflowkbklz/series-workflowkbklz-convert-artifact-2410774711/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": "c9a60ddc-2de1-4d8d-99fd-4361af897c9f", "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-workflowkbklz/series-workflowkbklz-build-action-3101089805/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowkbklz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5cfb576ce39ba5647024c6d6eeb5b7a822fab6e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6","INET6_AH"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ah6_output","ah6_input","ipv6_clear_mutable_options","ipv6_rearrange_rthdr"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5cfb576ce39ba5647024c6d6eeb5b7a822fab6e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6","INET6_AH"],"series_id":"c19b1309-1a1a-4c4d-8575-7fb52da0112e","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-07-22 17:22:22 +0000 UTC FinishedAt: 2026-07-22 17:22:22 +0000 UTC Input: nil Output: nil --------- Name: series-workflowkbklz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5cfb576ce39ba5647024c6d6eeb5b7a822fab6e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6","INET6_AH"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ah6_output","ah6_input","ipv6_clear_mutable_options","ipv6_rearrange_rthdr"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5cfb576ce39ba5647024c6d6eeb5b7a822fab6e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6","INET6_AH"],"series_id":"c19b1309-1a1a-4c4d-8575-7fb52da0112e","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-07-22 17:22:22 +0000 UTC FinishedAt: 2026-07-22 17:22:22 +0000 UTC Input: nil Output: nil --------- Name: series-workflowkbklz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5cfb576ce39ba5647024c6d6eeb5b7a822fab6e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6","INET6_AH"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ah6_output","ah6_input","ipv6_clear_mutable_options","ipv6_rearrange_rthdr"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5cfb576ce39ba5647024c6d6eeb5b7a822fab6e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6","INET6_AH"],"series_id":"c19b1309-1a1a-4c4d-8575-7fb52da0112e","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-07-22 17:22:22 +0000 UTC FinishedAt: 2026-07-22 17:22:43 +0000 UTC Input: nil Output: nil --------- Name: series-workflowkbklz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5cfb576ce39ba5647024c6d6eeb5b7a822fab6e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6","INET6_AH"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ah6_output","ah6_input","ipv6_clear_mutable_options","ipv6_rearrange_rthdr"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5cfb576ce39ba5647024c6d6eeb5b7a822fab6e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6","INET6_AH"],"series_id":"c19b1309-1a1a-4c4d-8575-7fb52da0112e","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-07-22 17:22:22 +0000 UTC FinishedAt: 2026-07-22 17:22:30 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"f5cfb576ce39ba5647024c6d6eeb5b7a822fab6e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6","INET6_AH"],"series_id":"c19b1309-1a1a-4c4d-8575-7fb52da0112e","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.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-workflowkbklz/series-workflowkbklz-convert-artifact-4061133798/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowkbklz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5cfb576ce39ba5647024c6d6eeb5b7a822fab6e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6","INET6_AH"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ah6_output","ah6_input","ipv6_clear_mutable_options","ipv6_rearrange_rthdr"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5cfb576ce39ba5647024c6d6eeb5b7a822fab6e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6","INET6_AH"],"series_id":"c19b1309-1a1a-4c4d-8575-7fb52da0112e","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-07-22 17:22:43 +0000 UTC FinishedAt: 2026-07-22 17:24:35 +0000 UTC Input: nil Output: nil --------- Name: series-workflowkbklz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5cfb576ce39ba5647024c6d6eeb5b7a822fab6e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6","INET6_AH"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ah6_output","ah6_input","ipv6_clear_mutable_options","ipv6_rearrange_rthdr"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5cfb576ce39ba5647024c6d6eeb5b7a822fab6e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6","INET6_AH"],"series_id":"c19b1309-1a1a-4c4d-8575-7fb52da0112e","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-07-22 17:22:43 +0000 UTC FinishedAt: 2026-07-22 17:24:25 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*c9a60ddc-2de1-4d8d-99fd-4361af897c9f,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-workflowkbklz/series-workflowkbklz-build-action-3101089805/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-workflowkbklz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5cfb576ce39ba5647024c6d6eeb5b7a822fab6e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6","INET6_AH"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ah6_output","ah6_input","ipv6_clear_mutable_options","ipv6_rearrange_rthdr"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5cfb576ce39ba5647024c6d6eeb5b7a822fab6e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6","INET6_AH"],"series_id":"c19b1309-1a1a-4c4d-8575-7fb52da0112e","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-07-22 17:24:35 +0000 UTC FinishedAt: 2026-07-22 17:24:35 +0000 UTC Input: nil Output: nil --------- Name: series-workflowkbklz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5cfb576ce39ba5647024c6d6eeb5b7a822fab6e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6","INET6_AH"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ah6_output","ah6_input","ipv6_clear_mutable_options","ipv6_rearrange_rthdr"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5cfb576ce39ba5647024c6d6eeb5b7a822fab6e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6","INET6_AH"],"series_id":"c19b1309-1a1a-4c4d-8575-7fb52da0112e","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-07-22 17:24:35 +0000 UTC FinishedAt: 2026-07-22 17:24:35 +0000 UTC Input: nil Output: nil --------- Name: series-workflowkbklz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5cfb576ce39ba5647024c6d6eeb5b7a822fab6e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6","INET6_AH"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ah6_output","ah6_input","ipv6_clear_mutable_options","ipv6_rearrange_rthdr"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5cfb576ce39ba5647024c6d6eeb5b7a822fab6e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6","INET6_AH"],"series_id":"c19b1309-1a1a-4c4d-8575-7fb52da0112e","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-07-22 17:24:35 +0000 UTC FinishedAt: 2026-07-22 18:05:28 +0000 UTC Input: nil Output: nil --------- Name: series-workflowkbklz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5cfb576ce39ba5647024c6d6eeb5b7a822fab6e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6","INET6_AH"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ah6_output","ah6_input","ipv6_clear_mutable_options","ipv6_rearrange_rthdr"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5cfb576ce39ba5647024c6d6eeb5b7a822fab6e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6","INET6_AH"],"series_id":"c19b1309-1a1a-4c4d-8575-7fb52da0112e","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-07-22 17:24:35 +0000 UTC FinishedAt: 2026-07-22 18:05:28 +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:*c2ccd67c-2050-4c93-8583-b5095aed1563,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-workflowkbklz/series-workflowkbklz-convert-artifact-4061133798/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": "8dbb0406-76f7-4f27-8fc1-78e9bd2095d8", "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-workflowkbklz/series-workflowkbklz-build-action-3806900650/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowkbklz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5cfb576ce39ba5647024c6d6eeb5b7a822fab6e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6","INET6_AH"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ah6_output","ah6_input","ipv6_clear_mutable_options","ipv6_rearrange_rthdr"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5cfb576ce39ba5647024c6d6eeb5b7a822fab6e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6","INET6_AH"],"series_id":"c19b1309-1a1a-4c4d-8575-7fb52da0112e","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-07-22 17:24:35 +0000 UTC FinishedAt: 2026-07-22 18:05:18 +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:*c2ccd67c-2050-4c93-8583-b5095aed1563,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-workflowkbklz/series-workflowkbklz-convert-artifact-4061133798/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": "8dbb0406-76f7-4f27-8fc1-78e9bd2095d8", "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-workflowkbklz/series-workflowkbklz-build-action-3806900650/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowkbklz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5cfb576ce39ba5647024c6d6eeb5b7a822fab6e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6","INET6_AH"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ah6_output","ah6_input","ipv6_clear_mutable_options","ipv6_rearrange_rthdr"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5cfb576ce39ba5647024c6d6eeb5b7a822fab6e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6","INET6_AH"],"series_id":"c19b1309-1a1a-4c4d-8575-7fb52da0112e","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-07-22 18:05:28 +0000 UTC FinishedAt: 2026-07-22 18:05:28 +0000 UTC Input: nil Output: nil --------- Name: series-workflowkbklz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5cfb576ce39ba5647024c6d6eeb5b7a822fab6e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6","INET6_AH"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ah6_output","ah6_input","ipv6_clear_mutable_options","ipv6_rearrange_rthdr"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5cfb576ce39ba5647024c6d6eeb5b7a822fab6e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6","INET6_AH"],"series_id":"c19b1309-1a1a-4c4d-8575-7fb52da0112e","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-07-22 18:05:28 +0000 UTC FinishedAt: 2026-07-22 18:05:28 +0000 UTC Input: nil Output: nil --------- Name: series-workflowkbklz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5cfb576ce39ba5647024c6d6eeb5b7a822fab6e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6","INET6_AH"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ah6_output","ah6_input","ipv6_clear_mutable_options","ipv6_rearrange_rthdr"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5cfb576ce39ba5647024c6d6eeb5b7a822fab6e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6","INET6_AH"],"series_id":"c19b1309-1a1a-4c4d-8575-7fb52da0112e","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-07-22 18:05:28 +0000 UTC FinishedAt: 2026-07-22 18:07:53 +0000 UTC Input: nil Output: nil --------- Name: series-workflowkbklz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5cfb576ce39ba5647024c6d6eeb5b7a822fab6e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6","INET6_AH"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ah6_output","ah6_input","ipv6_clear_mutable_options","ipv6_rearrange_rthdr"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5cfb576ce39ba5647024c6d6eeb5b7a822fab6e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6","INET6_AH"],"series_id":"c19b1309-1a1a-4c4d-8575-7fb52da0112e","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-07-22 18:05:28 +0000 UTC FinishedAt: 2026-07-22 18:07:43 +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:*8dbb0406-76f7-4f27-8fc1-78e9bd2095d8,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-workflowkbklz/series-workflowkbklz-build-action-3806900650/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-workflowkbklz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5cfb576ce39ba5647024c6d6eeb5b7a822fab6e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6","INET6_AH"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ah6_output","ah6_input","ipv6_clear_mutable_options","ipv6_rearrange_rthdr"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5cfb576ce39ba5647024c6d6eeb5b7a822fab6e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6","INET6_AH"],"series_id":"c19b1309-1a1a-4c4d-8575-7fb52da0112e","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-07-22 18:07:53 +0000 UTC FinishedAt: 2026-07-22 21:09:51 +0000 UTC Input: nil Output: nil --------- Name: series-workflowkbklz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5cfb576ce39ba5647024c6d6eeb5b7a822fab6e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6","INET6_AH"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ah6_output","ah6_input","ipv6_clear_mutable_options","ipv6_rearrange_rthdr"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5cfb576ce39ba5647024c6d6eeb5b7a822fab6e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6","INET6_AH"],"series_id":"c19b1309-1a1a-4c4d-8575-7fb52da0112e","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-07-22 18:07:53 +0000 UTC FinishedAt: 2026-07-22 21:09:51 +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":["ah6_output","ah6_input","ipv6_clear_mutable_options","ipv6_rearrange_rthdr"],"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:*c9a60ddc-2de1-4d8d-99fd-4361af897c9f,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*8dbb0406-76f7-4f27-8fc1-78e9bd2095d8,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-workflowkbklz/series-workflowkbklz-build-action-3101089805/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-workflowkbklz/series-workflowkbklz-build-action-3806900650/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowkbklz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5cfb576ce39ba5647024c6d6eeb5b7a822fab6e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6","INET6_AH"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ah6_output","ah6_input","ipv6_clear_mutable_options","ipv6_rearrange_rthdr"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5cfb576ce39ba5647024c6d6eeb5b7a822fab6e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6","INET6_AH"],"series_id":"c19b1309-1a1a-4c4d-8575-7fb52da0112e","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-07-22 18:07:53 +0000 UTC FinishedAt: 2026-07-22 18:08:13 +0000 UTC Input: nil Output: nil --------- Name: series-workflowkbklz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5cfb576ce39ba5647024c6d6eeb5b7a822fab6e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6","INET6_AH"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ah6_output","ah6_input","ipv6_clear_mutable_options","ipv6_rearrange_rthdr"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5cfb576ce39ba5647024c6d6eeb5b7a822fab6e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6","INET6_AH"],"series_id":"c19b1309-1a1a-4c4d-8575-7fb52da0112e","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-07-22 18:07:53 +0000 UTC FinishedAt: 2026-07-22 18:08:01 +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":["ah6_output","ah6_input","ipv6_clear_mutable_options","ipv6_rearrange_rthdr"],"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-workflowkbklz/series-workflowkbklz-convert-artifact-977631531/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowkbklz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5cfb576ce39ba5647024c6d6eeb5b7a822fab6e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6","INET6_AH"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ah6_output","ah6_input","ipv6_clear_mutable_options","ipv6_rearrange_rthdr"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5cfb576ce39ba5647024c6d6eeb5b7a822fab6e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6","INET6_AH"],"series_id":"c19b1309-1a1a-4c4d-8575-7fb52da0112e","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-07-22 18:07:53 +0000 UTC FinishedAt: 2026-07-22 18:07:53 +0000 UTC Input: nil Output: nil --------- Name: series-workflowkbklz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5cfb576ce39ba5647024c6d6eeb5b7a822fab6e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6","INET6_AH"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ah6_output","ah6_input","ipv6_clear_mutable_options","ipv6_rearrange_rthdr"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5cfb576ce39ba5647024c6d6eeb5b7a822fab6e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6","INET6_AH"],"series_id":"c19b1309-1a1a-4c4d-8575-7fb52da0112e","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-07-22 18:07:53 +0000 UTC FinishedAt: 2026-07-22 18:07:53 +0000 UTC Input: nil Output: nil --------- Name: series-workflowkbklz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5cfb576ce39ba5647024c6d6eeb5b7a822fab6e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6","INET6_AH"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ah6_output","ah6_input","ipv6_clear_mutable_options","ipv6_rearrange_rthdr"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5cfb576ce39ba5647024c6d6eeb5b7a822fab6e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6","INET6_AH"],"series_id":"c19b1309-1a1a-4c4d-8575-7fb52da0112e","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-07-22 18:07:53 +0000 UTC FinishedAt: 2026-07-22 18:07:53 +0000 UTC Input: nil Output: nil --------- Name: series-workflowkbklz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5cfb576ce39ba5647024c6d6eeb5b7a822fab6e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6","INET6_AH"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ah6_output","ah6_input","ipv6_clear_mutable_options","ipv6_rearrange_rthdr"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5cfb576ce39ba5647024c6d6eeb5b7a822fab6e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6","INET6_AH"],"series_id":"c19b1309-1a1a-4c4d-8575-7fb52da0112e","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-07-22 18:08:13 +0000 UTC FinishedAt: 2026-07-22 21:09:51 +0000 UTC Input: nil Output: nil --------- Name: series-workflowkbklz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5cfb576ce39ba5647024c6d6eeb5b7a822fab6e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6","INET6_AH"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ah6_output","ah6_input","ipv6_clear_mutable_options","ipv6_rearrange_rthdr"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5cfb576ce39ba5647024c6d6eeb5b7a822fab6e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6","INET6_AH"],"series_id":"c19b1309-1a1a-4c4d-8575-7fb52da0112e","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-07-22 18:08:13 +0000 UTC FinishedAt: 2026-07-22 21:09:40 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*c9a60ddc-2de1-4d8d-99fd-4361af897c9f,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*8dbb0406-76f7-4f27-8fc1-78e9bd2095d8,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-workflowkbklz/series-workflowkbklz-build-action-3101089805/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-workflowkbklz/series-workflowkbklz-build-action-3806900650/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-workflowkbklz/series-workflowkbklz-convert-artifact-977631531/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,}