Name: series-workflowjnzc9 Phase: Succeeded StartedAt: 2026-07-15 10:00:04 +0000 UTC FinishedAt: 2026-07-15 14:43:58 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjnzc9[0] Phase: Succeeded StartedAt: 2026-07-15 10:00:04 +0000 UTC FinishedAt: 2026-07-15 10:14:33 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjnzc9[0].run-triage Phase: Succeeded StartedAt: 2026-07-15 10:00:04 +0000 UTC FinishedAt: 2026-07-15 10:14:33 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "linux-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next", "commit_hash": "3f1f755366687d051174739fb99f7d560202f60b", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "SMC", "DIBS", "DIBS_LO" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "linux-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next", "commit_hash": "3f1f755366687d051174739fb99f7d560202f60b", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "SMC", "DIBS", "DIBS_LO" ], "series_id": "4e8378be-b72c-4fa8-8210-5ed8232e2594" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "smc_cdc_msg_recv_action", "smcd_cdc_rx_tsklet", "smc_cdc_rx_handler", "__smc_buf_create", "smcd_buf_attach" ], "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+CgkJCTx0ZD4yMDI2LzA3LzE1IDEwOjEzPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1NNQyYjMzQ7LAogICAgJiMzNDtESUJTJiMzNDssCiAgICAmIzM0O0RJQlNfTE8mIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtzbWNfY2RjX21zZ19yZWN2X2FjdGlvbiYjMzQ7LAogICAgJiMzNDtzbWNkX2NkY19yeF90c2tsZXQmIzM0OywKICAgICYjMzQ7c21jX2NkY19yeF9oYW5kbGVyJiMzNDssCiAgICAmIzM0O19fc21jX2J1Zl9jcmVhdGUmIzM0OywKICAgICYjMzQ7c21jZF9idWZfYXR0YWNoJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgcmFjZSBjb25kaXRpb24gaW4gdGhlIFNNQyBwcm90b2NvbCB3aGVyZSBhIGNvbmN1cnJlbnQgQ0RDIHJlY2VpdmUgaGFuZGxlciBjb3VsZCBhY2Nlc3MgdW5pbml0aWFsaXplZCBvciBOVUxMIGJ1ZmZlciBkZXNjcmlwdG9ycyBkdXJpbmcgY29ubmVjdGlvbiBzZXR1cC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIFNNQyBsb2dpYyBhbmQgaXMgcmVhY2hhYmxlIHZpYSB0aGUgbG9vcGJhY2sgSVNNIGRldmljZS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNSAxMDoxMzwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IGZiNmMzZDJlYTU3Y2E0NWE0NWNlYWNiNDk0NGZlZTQxMmMwNGE3NWZcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgV2VkIEp1bCAxNSAxMDoxMzoxMCAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9uZXQvc21jL3NtY19jZGMuYyBiL25ldC9zbWMvc21jX2NkYy5jXG5pbmRleCAzMmQ2ZDAzZGYzMjE0NS4uMmNkMGVlN2I1MWMyMjYgMTAwNjQ0XG4tLS0gYS9uZXQvc21jL3NtY19jZGMuY1xuJiM0MzsmIzQzOyYjNDM7IGIvbmV0L3NtYy9zbWNfY2RjLmNcbkBAIC0zMzIsNiAmIzQzOzMzMiw3IEBAIHN0YXRpYyB2b2lkIHNtY19jZGNfbXNnX3JlY3ZfYWN0aW9uKHN0cnVjdCBzbWNfc29jayAqc21jLFxuIHtcbiBcdHVuaW9uIHNtY19ob3N0X2N1cnNvciBjb25zX29sZCwgcHJvZF9vbGQ7XG4gXHRzdHJ1Y3Qgc21jX2Nvbm5lY3Rpb24gKmNvbm4gPSBcdTAwMjZzbWMtXHUwMDNlY29ubjtcbiYjNDM7XHRzdHJ1Y3Qgc21jX2J1Zl9kZXNjICpzbmRidWZfZGVzYztcbiBcdGludCBkaWZmX2NvbnMsIGRpZmZfcHJvZCwgZGlmZl90eDtcbiBcbiBcdHNtY19jdXJzX2NvcHkoXHUwMDI2cHJvZF9vbGQsIFx1MDAyNmNvbm4tXHUwMDNlbG9jYWxfcnhfY3RybC5wcm9kLCBjb25uKTtcbkBAIC0zNTMsMTIgJiM0MzszNTQsMjAgQEAgc3RhdGljIHZvaWQgc21jX2NkY19tc2dfcmVjdl9hY3Rpb24oc3RydWN0IHNtY19zb2NrICpzbWMsXG4gXHRcdCAqIHBlZXIgUk1CLCB0aGVuIHVwZGF0ZSB0eF9jdXJzX2ZpbiBhbmQgc25kYnVmX3NwYWNlXG4gXHRcdCAqIGhlcmUgc2luY2UgcGVlciBoYXMgYWxyZWFkeSBjb25zdW1lZCB0aGUgZGF0YS5cbiBcdFx0ICovXG4mIzQzO1x0XHQvKiBQYWlyIHdpdGggc21wX3N0b3JlX3JlbGVhc2UoKSBpbiBzbWNkX2J1Zl9hdHRhY2goKTogdGhlIGdob3N0XG4mIzQzO1x0XHQgKiBzbmRidWZfZGVzYyBpcyBhdHRhY2hlZCBhZnRlciB0aGUgY29ubmVjdGlvbiBpcyByZWFjaGFibGUgdG9cbiYjNDM7XHRcdCAqIHRoZSBJU00gZGV2aWNlLCBzbyBhY3F1aXJlIGl0IGFuZCBza2lwIHRoZSB1cGRhdGUgd2hpbGUgaXQgaXNcbiYjNDM7XHRcdCAqIHVuc2V0IC0tIGF2b2lkcyBhIE5VTEwgZGVyZWYgYW5kIGEgbG9hZCBvZiBhbiB1bmluaXRpYWxpc2VkXG4mIzQzO1x0XHQgKiBidWZmZXIuXG4mIzQzO1x0XHQgKi9cbiYjNDM7XHRcdHNuZGJ1Zl9kZXNjID0gc21wX2xvYWRfYWNxdWlyZShcdTAwMjZjb25uLVx1MDAzZXNuZGJ1Zl9kZXNjKTtcbiBcdFx0aWYgKGNvbm4tXHUwMDNlbGdyLVx1MDAzZWlzX3NtY2QgXHUwMDI2XHUwMDI2XG4tXHRcdCAgICBzbWNfaXNtX3N1cHBvcnRfZG1iX25vY29weShjb25uLVx1MDAzZWxnci1cdTAwM2VzbWNkKSkge1xuJiM0MztcdFx0ICAgIHNtY19pc21fc3VwcG9ydF9kbWJfbm9jb3B5KGNvbm4tXHUwMDNlbGdyLVx1MDAzZXNtY2QpIFx1MDAyNlx1MDAyNlxuJiM0MztcdFx0ICAgIHNuZGJ1Zl9kZXNjKSB7XG4gXHRcdFx0LyogQ2FsY3VsYXRlIGNvbnN1bWVkIGRhdGEgYW5kXG4gXHRcdFx0ICogaW5jcmVtZW50IGZyZWUgc2VuZCBidWZmZXIgc3BhY2UuXG4gXHRcdFx0ICovXG4tXHRcdFx0ZGlmZl90eCA9IHNtY19jdXJzX2RpZmYoY29ubi1cdTAwM2VzbmRidWZfZGVzYy1cdTAwM2VsZW4sXG4mIzQzO1x0XHRcdGRpZmZfdHggPSBzbWNfY3Vyc19kaWZmKHNuZGJ1Zl9kZXNjLVx1MDAzZWxlbixcbiBcdFx0XHRcdFx0XHRcdTAwMjZjb25uLVx1MDAzZXR4X2N1cnNfZmluLFxuIFx0XHRcdFx0XHRcdFx1MDAyNmNvbm4tXHUwMDNlbG9jYWxfcnhfY3RybC5jb25zKTtcbiBcdFx0XHQvKiBpbmNyZWFzZSBsb2NhbCBzbmRidWYgc3BhY2UgYW5kIGZpbl9jdXJzICovXG5AQCAtNDQzLDEzICYjNDM7NDUyLDIxIEBAIHN0YXRpYyB2b2lkIHNtY2RfY2RjX3J4X3Rza2xldChzdHJ1Y3QgdGFza2xldF9zdHJ1Y3QgKnQpXG4ge1xuIFx0c3RydWN0IHNtY19jb25uZWN0aW9uICpjb25uID0gZnJvbV90YXNrbGV0KGNvbm4sIHQsIHJ4X3Rza2xldCk7XG4gXHRzdHJ1Y3Qgc21jZF9jZGNfbXNnICpkYXRhX2NkYztcbiYjNDM7XHRzdHJ1Y3Qgc21jX2J1Zl9kZXNjICpybWJfZGVzYztcbiBcdHN0cnVjdCBzbWNkX2NkY19tc2cgY2RjO1xuIFx0c3RydWN0IHNtY19zb2NrICpzbWM7XG4gXG4gXHRpZiAoIWNvbm4gfHwgY29ubi1cdTAwM2VraWxsZWQpXG4gXHRcdHJldHVybjtcbiYjNDM7XHQvKiBQYWlyIHdpdGggc21wX3N0b3JlX3JlbGVhc2UoKSBpbiBfX3NtY19idWZfY3JlYXRlKCk6IHRoZSBjb25uZWN0aW9uXG4mIzQzO1x0ICogaXMgcHVibGlzaGVkIGJlZm9yZSBpdHMgUk1CIGlzIGFsbG9jYXRlZCwgc28gYmFpbCB3aGlsZSBybWJfZGVzYyBpc1xuJiM0MztcdCAqIHVuc2V0IHRvIGF2b2lkIGEgTlVMTCBkZXJlZiBhbmQgYSBsb2FkIG9mIGFuIHVuaW5pdGlhbGlzZWQgYnVmZmVyLlxuJiM0MztcdCAqL1xuJiM0MztcdHJtYl9kZXNjID0gc21wX2xvYWRfYWNxdWlyZShcdTAwMjZjb25uLVx1MDAzZXJtYl9kZXNjKTtcbiYjNDM7XHRpZiAoIXJtYl9kZXNjKVxuJiM0MztcdFx0cmV0dXJuO1xuIFxuLVx0ZGF0YV9jZGMgPSAoc3RydWN0IHNtY2RfY2RjX21zZyAqKWNvbm4tXHUwMDNlcm1iX2Rlc2MtXHUwMDNlY3B1X2FkZHI7XG4mIzQzO1x0ZGF0YV9jZGMgPSAoc3RydWN0IHNtY2RfY2RjX21zZyAqKXJtYl9kZXNjLVx1MDAzZWNwdV9hZGRyO1xuIFx0c21jZF9jdXJzX2NvcHkoXHUwMDI2Y2RjLnByb2QsIFx1MDAyNmRhdGFfY2RjLVx1MDAzZXByb2QsIGNvbm4pO1xuIFx0c21jZF9jdXJzX2NvcHkoXHUwMDI2Y2RjLmNvbnMsIFx1MDAyNmRhdGFfY2RjLVx1MDAzZWNvbnMsIGNvbm4pO1xuIFx0c21jID0gY29udGFpbmVyX29mKGNvbm4sIHN0cnVjdCBzbWNfc29jaywgY29ubik7XG5AQCAtNDgzLDcgJiM0Mzs1MDAsMTEgQEAgc3RhdGljIHZvaWQgc21jX2NkY19yeF9oYW5kbGVyKHN0cnVjdCBpYl93YyAqd2MsIHZvaWQgKmJ1ZilcbiBcdGxnciA9IHNtY19nZXRfbGdyKGxpbmspO1xuIFx0cmVhZF9sb2NrX2JoKFx1MDAyNmxnci1cdTAwM2Vjb25uc19sb2NrKTtcbiBcdGNvbm4gPSBzbWNfbGdyX2ZpbmRfY29ubihudG9obChjZGMtXHUwMDNldG9rZW4pLCBsZ3IpO1xuLVx0aWYgKCFjb25uIHx8IGNvbm4tXHUwMDNlb3V0X29mX3N5bmMpIHtcbiYjNDM7XHQvKiBQYWlyIHdpdGggc21wX3N0b3JlX3JlbGVhc2UoKSBpbiBfX3NtY19idWZfY3JlYXRlKCk6IGJhaWwgd2hpbGUgdGhlXG4mIzQzO1x0ICogUk1CIGlzIHVuc2V0IChzbWNfY2RjX21zZ19yZWN2X2FjdGlvbigpIGRlcmVmZXJlbmNlcyBpdCkgdG8gYXZvaWQgYVxuJiM0MztcdCAqIE5VTEwgZGVyZWYgYW5kIGEgc3RhbGUtYnVmZmVyIHJlYWQgaW4gdGhlIGNvbm5lY3Rpb24gc2V0dXAgd2luZG93LlxuJiM0MztcdCAqL1xuJiM0MztcdGlmICghY29ubiB8fCBjb25uLVx1MDAzZW91dF9vZl9zeW5jIHx8ICFzbXBfbG9hZF9hY3F1aXJlKFx1MDAyNmNvbm4tXHUwMDNlcm1iX2Rlc2MpKSB7XG4gXHRcdHJlYWRfdW5sb2NrX2JoKFx1MDAyNmxnci1cdTAwM2Vjb25uc19sb2NrKTtcbiBcdFx0cmV0dXJuO1xuIFx0fVxuZGlmZiAtLWdpdCBhL25ldC9zbWMvc21jX2NvcmUuYyBiL25ldC9zbWMvc21jX2NvcmUuY1xuaW5kZXggY2Y2YjYyMGZlZjA1ZjkuLmQ5NGI3MjhjMGQ2OGM3IDEwMDY0NFxuLS0tIGEvbmV0L3NtYy9zbWNfY29yZS5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvc21jL3NtY19jb3JlLmNcbkBAIC0yNDk5LDcgJiM0MzsyNDk5LDEzIEBAIHN0YXRpYyBpbnQgX19zbWNfYnVmX2NyZWF0ZShzdHJ1Y3Qgc21jX3NvY2sgKnNtYywgYm9vbCBpc19zbWNkLCBib29sIGlzX3JtYilcbiBcdH1cbiBcbiBcdGlmIChpc19ybWIpIHtcbi1cdFx0Y29ubi1cdTAwM2VybWJfZGVzYyA9IGJ1Zl9kZXNjO1xuJiM0MztcdFx0LyogUHVibGlzaCB3aXRoIHJlbGVhc2Ugc2VtYW50aWNzOiB0aGUgY29ubmVjdGlvbiBpcyBhbHJlYWR5IGluXG4mIzQzO1x0XHQgKiB0aGUgbGluayBncm91cCYjMzk7cyB0b2tlbiB0cmVlLCBzbyBhIGNvbmN1cnJlbnQgQ0RDIHJlY2VpdmVcbiYjNDM7XHRcdCAqIGhhbmRsZXIgbXVzdCBvYnNlcnZlIGEgZnVsbHkgaW5pdGlhbGlzZWQgYnVmZmVyIG9uY2UgaXQgc2Vlc1xuJiM0MztcdFx0ICogYSBub24tTlVMTCBybWJfZGVzYy4gIFBhaXJzIHdpdGggdGhlIHNtcF9sb2FkX2FjcXVpcmUoKSBpblxuJiM0MztcdFx0ICogdGhlIENEQyByZWNlaXZlIHBhdGguXG4mIzQzO1x0XHQgKi9cbiYjNDM7XHRcdHNtcF9zdG9yZV9yZWxlYXNlKFx1MDAyNmNvbm4tXHUwMDNlcm1iX2Rlc2MsIGJ1Zl9kZXNjKTtcbiBcdFx0Y29ubi1cdTAwM2VybWJlX3NpemVfY29tcCA9IGJ1ZnNpemVfY29tcDtcbiBcdFx0c21jLVx1MDAzZXNrLnNrX3JjdmJ1ZiA9IGJ1ZnNpemUgKiAyO1xuIFx0XHRhdG9taWNfc2V0KFx1MDAyNmNvbm4tXHUwMDNlYnl0ZXNfdG9fcmN2LCAwKTtcbkBAIC0yNTk5LDcgJiM0MzsyNjA1LDEzIEBAIGludCBzbWNkX2J1Zl9hdHRhY2goc3RydWN0IHNtY19zb2NrICpzbWMpXG4gXHRidWZfZGVzYy1cdTAwM2VjcHVfYWRkciA9XG4gXHRcdCh1OCAqKWJ1Zl9kZXNjLVx1MDAzZWNwdV9hZGRyICYjNDM7IHNpemVvZihzdHJ1Y3Qgc21jZF9jZGNfbXNnKTtcbiBcdGJ1Zl9kZXNjLVx1MDAzZWxlbiAtPSBzaXplb2Yoc3RydWN0IHNtY2RfY2RjX21zZyk7XG4tXHRjb25uLVx1MDAzZXNuZGJ1Zl9kZXNjID0gYnVmX2Rlc2M7XG4mIzQzO1x0LyogUHVibGlzaCB3aXRoIHJlbGVhc2Ugc2VtYW50aWNzOiB0aGUgY29ubmVjdGlvbiBpcyBhbHJlYWR5IHJlYWNoYWJsZVxuJiM0MztcdCAqIHRvIHRoZSBJU00gZGV2aWNlIChzbWNfaXNtX3NldF9jb25uKCkgcmFuIGluIF9fc21jX2J1Zl9jcmVhdGUoKSksIHNvXG4mIzQzO1x0ICogdGhlIENEQyByZWNlaXZlIHRhc2tsZXQgbXVzdCBvYnNlcnZlIGEgZnVsbHkgaW5pdGlhbGlzZWQgZ2hvc3QgYnVmZmVyXG4mIzQzO1x0ICogb25jZSBpdCBzZWVzIGEgbm9uLU5VTEwgc25kYnVmX2Rlc2MuICBQYWlycyB3aXRoIHNtcF9sb2FkX2FjcXVpcmUoKVxuJiM0MztcdCAqIGluIHNtY19jZGNfbXNnX3JlY3ZfYWN0aW9uKCkuXG4mIzQzO1x0ICovXG4mIzQzO1x0c21wX3N0b3JlX3JlbGVhc2UoXHUwMDI2Y29ubi1cdTAwM2VzbmRidWZfZGVzYywgYnVmX2Rlc2MpO1xuIFx0Y29ubi1cdTAwM2VzbmRidWZfZGVzYy1cdTAwM2V1c2VkID0gMTtcbiBcdGF0b21pY19zZXQoXHUwMDI2Y29ubi1cdTAwM2VzbmRidWZfc3BhY2UsIGNvbm4tXHUwMDNlc25kYnVmX2Rlc2MtXHUwMDNlbGVuKTtcbiBcdHJldHVybiAwO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE1IDEwOjEzPC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1NNQyYjMzQ7LAogICAgJiMzNDtESUJTJiMzNDssCiAgICAmIzM0O0RJQlNfTE8mIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtzbWNfY2RjX21zZ19yZWN2X2FjdGlvbiYjMzQ7LAogICAgJiMzNDtzbWNkX2NkY19yeF90c2tsZXQmIzM0OywKICAgICYjMzQ7c21jX2NkY19yeF9oYW5kbGVyJiMzNDssCiAgICAmIzM0O19fc21jX2J1Zl9jcmVhdGUmIzM0OywKICAgICYjMzQ7c21jZF9idWZfYXR0YWNoJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgcmFjZSBjb25kaXRpb24gaW4gdGhlIFNNQyBwcm90b2NvbCB3aGVyZSBhIGNvbmN1cnJlbnQgQ0RDIHJlY2VpdmUgaGFuZGxlciBjb3VsZCBhY2Nlc3MgdW5pbml0aWFsaXplZCBvciBOVUxMIGJ1ZmZlciBkZXNjcmlwdG9ycyBkdXJpbmcgY29ubmVjdGlvbiBzZXR1cC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIFNNQyBsb2dpYyBhbmQgaXMgcmVhY2hhYmxlIHZpYSB0aGUgbG9vcGJhY2sgSVNNIGRldmljZS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLApldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXQKICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LAogICBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgZmI2YzNkMmVhNTdjYTQ1YTQ1Y2VhY2I0OTQ0ZmVlNDEyYzA0YTc1ZgpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBXZWQgSnVsIDE1IDEwOjEzOjEwIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvbmV0L3NtYy9zbWNfY2RjLmMgYi9uZXQvc21jL3NtY19jZGMuYwppbmRleCAzMmQ2ZDAzZGYzMjE0NS4uMmNkMGVlN2I1MWMyMjYgMTAwNjQ0Ci0tLSBhL25ldC9zbWMvc21jX2NkYy5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC9zbWMvc21jX2NkYy5jCkBAIC0zMzIsNiAmIzQzOzMzMiw3IEBAIHN0YXRpYyB2b2lkIHNtY19jZGNfbXNnX3JlY3ZfYWN0aW9uKHN0cnVjdCBzbWNfc29jayAqc21jLAogewogCXVuaW9uIHNtY19ob3N0X2N1cnNvciBjb25zX29sZCwgcHJvZF9vbGQ7CiAJc3RydWN0IHNtY19jb25uZWN0aW9uICpjb25uID0gJmFtcDtzbWMtJmd0O2Nvbm47CiYjNDM7CXN0cnVjdCBzbWNfYnVmX2Rlc2MgKnNuZGJ1Zl9kZXNjOwogCWludCBkaWZmX2NvbnMsIGRpZmZfcHJvZCwgZGlmZl90eDsKIAogCXNtY19jdXJzX2NvcHkoJmFtcDtwcm9kX29sZCwgJmFtcDtjb25uLSZndDtsb2NhbF9yeF9jdHJsLnByb2QsIGNvbm4pOwpAQCAtMzUzLDEyICYjNDM7MzU0LDIwIEBAIHN0YXRpYyB2b2lkIHNtY19jZGNfbXNnX3JlY3ZfYWN0aW9uKHN0cnVjdCBzbWNfc29jayAqc21jLAogCQkgKiBwZWVyIFJNQiwgdGhlbiB1cGRhdGUgdHhfY3Vyc19maW4gYW5kIHNuZGJ1Zl9zcGFjZQogCQkgKiBoZXJlIHNpbmNlIHBlZXIgaGFzIGFscmVhZHkgY29uc3VtZWQgdGhlIGRhdGEuCiAJCSAqLwomIzQzOwkJLyogUGFpciB3aXRoIHNtcF9zdG9yZV9yZWxlYXNlKCkgaW4gc21jZF9idWZfYXR0YWNoKCk6IHRoZSBnaG9zdAomIzQzOwkJICogc25kYnVmX2Rlc2MgaXMgYXR0YWNoZWQgYWZ0ZXIgdGhlIGNvbm5lY3Rpb24gaXMgcmVhY2hhYmxlIHRvCiYjNDM7CQkgKiB0aGUgSVNNIGRldmljZSwgc28gYWNxdWlyZSBpdCBhbmQgc2tpcCB0aGUgdXBkYXRlIHdoaWxlIGl0IGlzCiYjNDM7CQkgKiB1bnNldCAtLSBhdm9pZHMgYSBOVUxMIGRlcmVmIGFuZCBhIGxvYWQgb2YgYW4gdW5pbml0aWFsaXNlZAomIzQzOwkJICogYnVmZmVyLgomIzQzOwkJICovCiYjNDM7CQlzbmRidWZfZGVzYyA9IHNtcF9sb2FkX2FjcXVpcmUoJmFtcDtjb25uLSZndDtzbmRidWZfZGVzYyk7CiAJCWlmIChjb25uLSZndDtsZ3ItJmd0O2lzX3NtY2QgJmFtcDsmYW1wOwotCQkgICAgc21jX2lzbV9zdXBwb3J0X2RtYl9ub2NvcHkoY29ubi0mZ3Q7bGdyLSZndDtzbWNkKSkgewomIzQzOwkJICAgIHNtY19pc21fc3VwcG9ydF9kbWJfbm9jb3B5KGNvbm4tJmd0O2xnci0mZ3Q7c21jZCkgJmFtcDsmYW1wOwomIzQzOwkJICAgIHNuZGJ1Zl9kZXNjKSB7CiAJCQkvKiBDYWxjdWxhdGUgY29uc3VtZWQgZGF0YSBhbmQKIAkJCSAqIGluY3JlbWVudCBmcmVlIHNlbmQgYnVmZmVyIHNwYWNlLgogCQkJICovCi0JCQlkaWZmX3R4ID0gc21jX2N1cnNfZGlmZihjb25uLSZndDtzbmRidWZfZGVzYy0mZ3Q7bGVuLAomIzQzOwkJCWRpZmZfdHggPSBzbWNfY3Vyc19kaWZmKHNuZGJ1Zl9kZXNjLSZndDtsZW4sCiAJCQkJCQkmYW1wO2Nvbm4tJmd0O3R4X2N1cnNfZmluLAogCQkJCQkJJmFtcDtjb25uLSZndDtsb2NhbF9yeF9jdHJsLmNvbnMpOwogCQkJLyogaW5jcmVhc2UgbG9jYWwgc25kYnVmIHNwYWNlIGFuZCBmaW5fY3VycyAqLwpAQCAtNDQzLDEzICYjNDM7NDUyLDIxIEBAIHN0YXRpYyB2b2lkIHNtY2RfY2RjX3J4X3Rza2xldChzdHJ1Y3QgdGFza2xldF9zdHJ1Y3QgKnQpCiB7CiAJc3RydWN0IHNtY19jb25uZWN0aW9uICpjb25uID0gZnJvbV90YXNrbGV0KGNvbm4sIHQsIHJ4X3Rza2xldCk7CiAJc3RydWN0IHNtY2RfY2RjX21zZyAqZGF0YV9jZGM7CiYjNDM7CXN0cnVjdCBzbWNfYnVmX2Rlc2MgKnJtYl9kZXNjOwogCXN0cnVjdCBzbWNkX2NkY19tc2cgY2RjOwogCXN0cnVjdCBzbWNfc29jayAqc21jOwogCiAJaWYgKCFjb25uIHx8IGNvbm4tJmd0O2tpbGxlZCkKIAkJcmV0dXJuOwomIzQzOwkvKiBQYWlyIHdpdGggc21wX3N0b3JlX3JlbGVhc2UoKSBpbiBfX3NtY19idWZfY3JlYXRlKCk6IHRoZSBjb25uZWN0aW9uCiYjNDM7CSAqIGlzIHB1Ymxpc2hlZCBiZWZvcmUgaXRzIFJNQiBpcyBhbGxvY2F0ZWQsIHNvIGJhaWwgd2hpbGUgcm1iX2Rlc2MgaXMKJiM0MzsJICogdW5zZXQgdG8gYXZvaWQgYSBOVUxMIGRlcmVmIGFuZCBhIGxvYWQgb2YgYW4gdW5pbml0aWFsaXNlZCBidWZmZXIuCiYjNDM7CSAqLwomIzQzOwlybWJfZGVzYyA9IHNtcF9sb2FkX2FjcXVpcmUoJmFtcDtjb25uLSZndDtybWJfZGVzYyk7CiYjNDM7CWlmICghcm1iX2Rlc2MpCiYjNDM7CQlyZXR1cm47CiAKLQlkYXRhX2NkYyA9IChzdHJ1Y3Qgc21jZF9jZGNfbXNnICopY29ubi0mZ3Q7cm1iX2Rlc2MtJmd0O2NwdV9hZGRyOwomIzQzOwlkYXRhX2NkYyA9IChzdHJ1Y3Qgc21jZF9jZGNfbXNnICopcm1iX2Rlc2MtJmd0O2NwdV9hZGRyOwogCXNtY2RfY3Vyc19jb3B5KCZhbXA7Y2RjLnByb2QsICZhbXA7ZGF0YV9jZGMtJmd0O3Byb2QsIGNvbm4pOwogCXNtY2RfY3Vyc19jb3B5KCZhbXA7Y2RjLmNvbnMsICZhbXA7ZGF0YV9jZGMtJmd0O2NvbnMsIGNvbm4pOwogCXNtYyA9IGNvbnRhaW5lcl9vZihjb25uLCBzdHJ1Y3Qgc21jX3NvY2ssIGNvbm4pOwpAQCAtNDgzLDcgJiM0Mzs1MDAsMTEgQEAgc3RhdGljIHZvaWQgc21jX2NkY19yeF9oYW5kbGVyKHN0cnVjdCBpYl93YyAqd2MsIHZvaWQgKmJ1ZikKIAlsZ3IgPSBzbWNfZ2V0X2xncihsaW5rKTsKIAlyZWFkX2xvY2tfYmgoJmFtcDtsZ3ItJmd0O2Nvbm5zX2xvY2spOwogCWNvbm4gPSBzbWNfbGdyX2ZpbmRfY29ubihudG9obChjZGMtJmd0O3Rva2VuKSwgbGdyKTsKLQlpZiAoIWNvbm4gfHwgY29ubi0mZ3Q7b3V0X29mX3N5bmMpIHsKJiM0MzsJLyogUGFpciB3aXRoIHNtcF9zdG9yZV9yZWxlYXNlKCkgaW4gX19zbWNfYnVmX2NyZWF0ZSgpOiBiYWlsIHdoaWxlIHRoZQomIzQzOwkgKiBSTUIgaXMgdW5zZXQgKHNtY19jZGNfbXNnX3JlY3ZfYWN0aW9uKCkgZGVyZWZlcmVuY2VzIGl0KSB0byBhdm9pZCBhCiYjNDM7CSAqIE5VTEwgZGVyZWYgYW5kIGEgc3RhbGUtYnVmZmVyIHJlYWQgaW4gdGhlIGNvbm5lY3Rpb24gc2V0dXAgd2luZG93LgomIzQzOwkgKi8KJiM0MzsJaWYgKCFjb25uIHx8IGNvbm4tJmd0O291dF9vZl9zeW5jIHx8ICFzbXBfbG9hZF9hY3F1aXJlKCZhbXA7Y29ubi0mZ3Q7cm1iX2Rlc2MpKSB7CiAJCXJlYWRfdW5sb2NrX2JoKCZhbXA7bGdyLSZndDtjb25uc19sb2NrKTsKIAkJcmV0dXJuOwogCX0KZGlmZiAtLWdpdCBhL25ldC9zbWMvc21jX2NvcmUuYyBiL25ldC9zbWMvc21jX2NvcmUuYwppbmRleCBjZjZiNjIwZmVmMDVmOS4uZDk0YjcyOGMwZDY4YzcgMTAwNjQ0Ci0tLSBhL25ldC9zbWMvc21jX2NvcmUuYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvc21jL3NtY19jb3JlLmMKQEAgLTI0OTksNyAmIzQzOzI0OTksMTMgQEAgc3RhdGljIGludCBfX3NtY19idWZfY3JlYXRlKHN0cnVjdCBzbWNfc29jayAqc21jLCBib29sIGlzX3NtY2QsIGJvb2wgaXNfcm1iKQogCX0KIAogCWlmIChpc19ybWIpIHsKLQkJY29ubi0mZ3Q7cm1iX2Rlc2MgPSBidWZfZGVzYzsKJiM0MzsJCS8qIFB1Ymxpc2ggd2l0aCByZWxlYXNlIHNlbWFudGljczogdGhlIGNvbm5lY3Rpb24gaXMgYWxyZWFkeSBpbgomIzQzOwkJICogdGhlIGxpbmsgZ3JvdXAmIzM5O3MgdG9rZW4gdHJlZSwgc28gYSBjb25jdXJyZW50IENEQyByZWNlaXZlCiYjNDM7CQkgKiBoYW5kbGVyIG11c3Qgb2JzZXJ2ZSBhIGZ1bGx5IGluaXRpYWxpc2VkIGJ1ZmZlciBvbmNlIGl0IHNlZXMKJiM0MzsJCSAqIGEgbm9uLU5VTEwgcm1iX2Rlc2MuICBQYWlycyB3aXRoIHRoZSBzbXBfbG9hZF9hY3F1aXJlKCkgaW4KJiM0MzsJCSAqIHRoZSBDREMgcmVjZWl2ZSBwYXRoLgomIzQzOwkJICovCiYjNDM7CQlzbXBfc3RvcmVfcmVsZWFzZSgmYW1wO2Nvbm4tJmd0O3JtYl9kZXNjLCBidWZfZGVzYyk7CiAJCWNvbm4tJmd0O3JtYmVfc2l6ZV9jb21wID0gYnVmc2l6ZV9jb21wOwogCQlzbWMtJmd0O3NrLnNrX3JjdmJ1ZiA9IGJ1ZnNpemUgKiAyOwogCQlhdG9taWNfc2V0KCZhbXA7Y29ubi0mZ3Q7Ynl0ZXNfdG9fcmN2LCAwKTsKQEAgLTI1OTksNyAmIzQzOzI2MDUsMTMgQEAgaW50IHNtY2RfYnVmX2F0dGFjaChzdHJ1Y3Qgc21jX3NvY2sgKnNtYykKIAlidWZfZGVzYy0mZ3Q7Y3B1X2FkZHIgPQogCQkodTggKilidWZfZGVzYy0mZ3Q7Y3B1X2FkZHIgJiM0Mzsgc2l6ZW9mKHN0cnVjdCBzbWNkX2NkY19tc2cpOwogCWJ1Zl9kZXNjLSZndDtsZW4gLT0gc2l6ZW9mKHN0cnVjdCBzbWNkX2NkY19tc2cpOwotCWNvbm4tJmd0O3NuZGJ1Zl9kZXNjID0gYnVmX2Rlc2M7CiYjNDM7CS8qIFB1Ymxpc2ggd2l0aCByZWxlYXNlIHNlbWFudGljczogdGhlIGNvbm5lY3Rpb24gaXMgYWxyZWFkeSByZWFjaGFibGUKJiM0MzsJICogdG8gdGhlIElTTSBkZXZpY2UgKHNtY19pc21fc2V0X2Nvbm4oKSByYW4gaW4gX19zbWNfYnVmX2NyZWF0ZSgpKSwgc28KJiM0MzsJICogdGhlIENEQyByZWNlaXZlIHRhc2tsZXQgbXVzdCBvYnNlcnZlIGEgZnVsbHkgaW5pdGlhbGlzZWQgZ2hvc3QgYnVmZmVyCiYjNDM7CSAqIG9uY2UgaXQgc2VlcyBhIG5vbi1OVUxMIHNuZGJ1Zl9kZXNjLiAgUGFpcnMgd2l0aCBzbXBfbG9hZF9hY3F1aXJlKCkKJiM0MzsJICogaW4gc21jX2NkY19tc2dfcmVjdl9hY3Rpb24oKS4KJiM0MzsJICovCiYjNDM7CXNtcF9zdG9yZV9yZWxlYXNlKCZhbXA7Y29ubi0mZ3Q7c25kYnVmX2Rlc2MsIGJ1Zl9kZXNjKTsKIAljb25uLSZndDtzbmRidWZfZGVzYy0mZ3Q7dXNlZCA9IDE7CiAJYXRvbWljX3NldCgmYW1wO2Nvbm4tJmd0O3NuZGJ1Zl9zcGFjZSwgY29ubi0mZ3Q7c25kYnVmX2Rlc2MtJmd0O2xlbik7CiAJcmV0dXJuIDA7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE1IDEwOjEzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM0MzcKCQkJCQkJCW91dHB1dDogMjkKCQkJCQkJCXRob3VnaHRzOiAyNTkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBTTUMgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7dmUgZ290IGEgcGF0Y2ggaGVyZSB0aGF0JiMzOTtzIHRvdWNoaW5nIGBuZXQvc21jL3NtY19jZGMuY2AgYW5kIGBuZXQvc21jL3NtY19jb3JlLmNgIOKAkyB0aGF0JiMzOTtzIGEga2V5IGFyZWEgZm9yIHRoZSBTaGFyZWQgTWVtb3J5IENvbW11bmljYXRpb25zIHByb3RvY29sLiBUaGUgbWFpbiBmb2N1cyBzZWVtcyB0byBiZSBhcm91bmQgdGhvc2UgbWVtb3J5IGJhcnJpZXJzLCBgc21wX2xvYWRfYWNxdWlyZWAgYW5kIGBzbXBfc3RvcmVfcmVsZWFzZWAsIHdoaWNoIGlzIGNsYXNzaWMuIFRoZXkmIzM5O3JlIGJlaW5nIHBsYWNlZCBhcm91bmQgYWNjZXNzIHRvIGBjb25uLSZndDtybWJfZGVzY2AgYW5kIGBjb25uLSZndDtzbmRidWZfZGVzY2AuIFRoZSBnb2FsIGlzIGNsZWFybHkgdG8gYXZvaWQgcG90ZW50aWFsIE5VTEwgcG9pbnRlciBkZXJlZmVyZW5jZXMgYW5kIHByZXZlbnQgdGhvc2UgbmFzdHkgdW5pbml0aWFsaXplZCBidWZmZXIgcmVhZHMsIHdoaWNoIEkmIzM5O3ZlIHNlZW4gY2F1c2UgZW5vdWdoIHByb2JsZW1zIGluIHRoZSBwYXN0LiBJdCYjMzk7cyBhIGZ1bmN0aW9uYWwgY2hhbmdlLCBub3QgYSBuZXcgZmVhdHVyZSwgYnV0IG5lY2Vzc2FyeSBmb3IgY29ycmVjdG5lc3MuCgpGaXJzdCB0aGluZ3MgZmlyc3Q6IElzIFNNQyBldmVuIGVuYWJsZWQ/IEkgbmVlZCB0byBjaGVjayB0aGUgYnVpbGQgY29uZmlndXJhdGlvbi4gYENPTkZJR19TTUNgIHNob3VsZCBiZSB0aGUgZmxhZy4gSSYjMzk7bGwgbWFrZSBhIG5vdGUgdG8gY29uZmlybSB0aGF0LgoKTm93LCBsZXQmIzM5O3MgZ2V0IGludG8gdGhlIGNvZGUgaXRzZWxmLiBJJiMzOTtsbCBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGltcGFjdCBvZiB0aGVzZSBiYXJyaWVycy4gQmFzZWQgb24gdGhlIHBhdGNoLCBpdCBsb29rcyBsaWtlIHRoZXNlIGFyZSB0aGUgZnVuY3Rpb25zIHRoYXQgd2lsbCBuZWVkIGNsb3NlciBpbnNwZWN0aW9uOiBgc21jX2NkY19tc2dfcmVjdl9hY3Rpb25gLCBgc21jZF9jZGNfcnhfdHNrbGV0YCwgYHNtY19jZGNfcnhfaGFuZGxlcmAsIGBfX3NtY19idWZfY3JlYXRlYCwgYW5kIGBzbWNkX2J1Zl9hdHRhY2hgLiBJJiMzOTtsbCBuZWVkIHRvIHRyYWNlIHRoZSBkYXRhIGZsb3cgdGhyb3VnaCB0aG9zZSBhbmQgc2VlIGV4YWN0bHkgd2hlcmUgdGhlc2UgbWVtb3J5IGJhcnJpZXIgY2hhbmdlcyBhcmUgY3JpdGljYWwuIEkmIzM5O20gZ29pbmcgdG8gdHJhY2sgZG93biB3aGF0IHRoZSByZWxldmFudCBjb25maWdzIGFyZSB0byBzZWUgd2hhdCBwYXJ0cyBvZiB0aGUgU01DIHN0YWNrIGFyZSBhY3R1YWxseSBiZWluZyBtb2RpZmllZC4KClRoaXMgYWxsIHBvaW50cyB0byBlbnN1cmluZyBkYXRhIGNvbnNpc3RlbmN5IGJldHdlZW4gdGhlIGNvcmVzIGR1cmluZyBjb21tdW5pY2F0aW9uLiBUaW1lIHRvIGRpdmUgaW50byB0aGVzZSBzcGVjaWZpYyBmdW5jdGlvbnMgYW5kIHVuZGVyc3RhbmQgdGhlIGNvbnRleHQgYmV0dGVyLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE1IDEwOjEzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBTTUMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvc21jL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L3NtYy9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG5uZXQvc21jL0tjb25maWc6Mjpjb25maWcgU01DXG5uZXQvc21jL0tjb25maWctMy1cdHRyaXN0YXRlIFwmIzM0O1NNQyBzb2NrZXQgcHJvdG9jb2wgZmFtaWx5XCYjMzQ7XG4tLVxubmV0L3NtYy9LY29uZmlnLTEzLVxubmV0L3NtYy9LY29uZmlnOjE0OmNvbmZpZyBTTUNfRElBR1xubmV0L3NtYy9LY29uZmlnLTE1LVx0dHJpc3RhdGUgXCYjMzQ7U01DOiBzb2NrZXQgbW9uaXRvcmluZyBpbnRlcmZhY2VcJiMzNDtcbi0tXG5uZXQvc21jL0tjb25maWctMjItXG5uZXQvc21jL0tjb25maWc6MjM6Y29uZmlnIFNNQ19IU19DVFJMX0JQRlxubmV0L3NtYy9LY29uZmlnLTI0LVx0Ym9vbCBcJiMzNDtHZW5lcmljIGVCUEYgaG9vayBmb3IgU01DIGhhbmRzaGFrZSBmbG93XCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMTA6MTM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDI4NgoJCQkJCQkJb3V0cHV0OiAzMQoJCQkJCQkJdGhvdWdodHM6IDk0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGJyZWFrZG93biBvZiB0aGlzLgoKKipJbnZlc3RpZ2F0aW5nIFNNQyBDYXBhYmlsaXRpZXMgYW5kIEltcGxlbWVudGF0aW9uKioKClJpZ2h0LCBzbyB3ZSYjMzk7cmUgbG9va2luZyBhdCBTTUMsIHdoaWNoIGlzIGRlZmluZWQgYXMgYENPTkZJR19TTUNgLiBNeSBmaXJzdCBpbnN0aW5jdCBpcyB0byB1bmRlcnN0YW5kIGl0cyB1bmRlcmx5aW5nIGhhcmR3YXJlIHJlcXVpcmVtZW50cy4gQ2FuIHdlIGdldCBhd2F5IHdpdGggZW11bGF0aW9uLCBvciBpcyBkZWRpY2F0ZWQgaGFyZHdhcmUgZXNzZW50aWFsIGZvciBpdHMgZnVuY3Rpb25hbGl0eT8gVGhlIGtleSBxdWVzdGlvbiBpcyB3aGV0aGVyIHdlIGNhbiBlZmZlY3RpdmVseSBzaW11bGF0ZSB0aGlzIGZvciB0ZXN0aW5nIG9yIGluIGVudmlyb25tZW50cyB3aXRob3V0IHNwZWNpZmljIGhhcmR3YXJlIHN1cHBvcnQuCgpGcm9tIHRoZSBpbmZvcm1hdGlvbiwgSSBzZWUgdGhhdCBTTUMgb3BlcmF0ZXMgaW4gdHdvIHByaW1hcnkgZmxhdm9yczogU01DLVIsIHdoaWNoIGxldmVyYWdlcyBSRE1BLCBhbmQgU01DLUQsIHdoaWNoIHV0aWxpemVzIElTTSAoSW5maW5pQmFuZCBTaGFyZWQgTWVtb3J5KS4gTm93LCBoZXJlJiMzOTtzIHdoZXJlIHRoaW5ncyBnZXQgaW50ZXJlc3Rpbmc6IFNNQy1EIG9mZmVycyBhIHRhbnRhbGl6aW5nIHBvc3NpYmlsaXR5LiBJdCBjYW4gdXRpbGl6ZSBhICYjMzQ7ZHVtbXkmIzM0OyBvciBsb29wYmFjayBJU00gZGV2aWNlLiBUaGlzIGlzIGJyaWxsaWFudDsgaXQgb3BlbnMgZG9vcnMgZm9yIHRlc3RpbmcgYW5kIGRldmVsb3BtZW50IGluIGEgbW9yZSBnZW5lcmFsaXplZCBlbnZpcm9ubWVudC4gSSBzaG91bGQgZGVmaW5pdGVseSBjaGVjayB0aGUga2VybmVsIHNvdXJjZSBjb2RlIHRvIGV4YW1pbmUgdGhlIGxvb3BiYWNrIElTTSBpbXBsZW1lbnRhdGlvbi4gSSYjMzk7bSBnb2luZyB0byBsb29rIGF0IGBuZXQvc21jL3NtY19sb29wYmFjay5jYCBvciBzb21ldGhpbmcgYW5hbG9nb3VzLiBUaGlzIHNob3VsZCB0ZWxsIG1lIGV2ZXJ5dGhpbmcgSSBuZWVkIHRvIGtub3cgYWJvdXQgdGhlIHNvZnR3YXJlIGVtdWxhdGlvbiBhbmQgaXRzIHBvdGVudGlhbCBsaW1pdGF0aW9ucyBvciBmZWF0dXJlcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNSAxMDoxMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O1NNQ19MTyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9zbWMvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMTA6MTM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDY2MgoJCQkJCQkJb3V0cHV0OiAyMwoJCQkJCQkJdGhvdWdodHM6IDEzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqSW52ZXN0aWdhdGluZyB0aGUgU01DIFN1YnN5c3RlbSoqCgpPa2F5LCBmaXJzdCB0aGluZ3MgZmlyc3QsIEkgbmVlZCB0byBnZXQgYSBjbGVhciBwaWN0dXJlIG9mIHdoYXQmIzM5O3MgZ29pbmcgb24uIExldCYjMzk7cyBzdGFydCB3aXRoIGEgc3lzdGVtYXRpYyBhcHByb2FjaC4gVGhlIGluaXRpYWwgaW5zdGluY3QgaXMgdG8gZHJpbGwgZG93biBpbnRvIHRoZSBuZXR3b3JraW5nIHN1YnN5c3RlbS4gVGhhdCB1c3VhbGx5IGdpdmVzIG1lIGEgZ29vZCBvdmVydmlldyBvZiBob3cgdGhpbmdzIGFyZSB3b3JraW5nLiBTbywgbXkgZm9jdXMgd2lsbCBiZSB0aGUgYG5ldC9zbWMvYCBkaXJlY3RvcnkuIFRoYXQmIzM5O3MgdGhlIGxvZ2ljYWwgcGxhY2UgdG8gYmVnaW4gcG9raW5nIGFyb3VuZCBmb3IgYW55IFN5c3RlbSBNYW5hZ2VtZW50IENvbnRyb2xsZXIgcmVsYXRlZCBhY3Rpdml0eSBvciBob29rcyBpbnRvIG5ldHdvcmsgZnVuY3Rpb25hbGl0eS4gVGhpcyBzZWVtcyBsaWtlIGEgcmVhc29uYWJsZSBpbml0aWFsIGNoZWNrIGJlZm9yZSBtb3Zpbmcgb250byBkZWVwZXIgYXNwZWN0cyBvZiB0aGUgc3lzdGVtLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE1IDEwOjEzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Y29kZXNlYXJjaC1kaXItaW5kZXg8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0RpciYjMzQ7OiAmIzM0O25ldC9zbWMvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGVzJiMzNDs6IFsKICAgICYjMzQ7YWZfc21jLmMmIzM0OywKICAgICYjMzQ7c21jLmgmIzM0OywKICAgICYjMzQ7c21jX2NkYy5jJiMzNDssCiAgICAmIzM0O3NtY19jZGMuaCYjMzQ7LAogICAgJiMzNDtzbWNfY2xjLmMmIzM0OywKICAgICYjMzQ7c21jX2NsYy5oJiMzNDssCiAgICAmIzM0O3NtY19jbG9zZS5jJiMzNDssCiAgICAmIzM0O3NtY19jbG9zZS5oJiMzNDssCiAgICAmIzM0O3NtY19jb3JlLmMmIzM0OywKICAgICYjMzQ7c21jX2NvcmUuaCYjMzQ7LAogICAgJiMzNDtzbWNfZGlhZy5jJiMzNDssCiAgICAmIzM0O3NtY19oc19icGYuYyYjMzQ7LAogICAgJiMzNDtzbWNfaHNfYnBmLmgmIzM0OywKICAgICYjMzQ7c21jX2liLmMmIzM0OywKICAgICYjMzQ7c21jX2liLmgmIzM0OywKICAgICYjMzQ7c21jX2luZXQuYyYjMzQ7LAogICAgJiMzNDtzbWNfaW5ldC5oJiMzNDssCiAgICAmIzM0O3NtY19pc20uYyYjMzQ7LAogICAgJiMzNDtzbWNfaXNtLmgmIzM0OywKICAgICYjMzQ7c21jX2xsYy5jJiMzNDssCiAgICAmIzM0O3NtY19sbGMuaCYjMzQ7LAogICAgJiMzNDtzbWNfbmV0bGluay5jJiMzNDssCiAgICAmIzM0O3NtY19uZXRsaW5rLmgmIzM0OywKICAgICYjMzQ7c21jX25ldG5zLmgmIzM0OywKICAgICYjMzQ7c21jX3BuZXQuYyYjMzQ7LAogICAgJiMzNDtzbWNfcG5ldC5oJiMzNDssCiAgICAmIzM0O3NtY19yeC5jJiMzNDssCiAgICAmIzM0O3NtY19yeC5oJiMzNDssCiAgICAmIzM0O3NtY19zdGF0cy5jJiMzNDssCiAgICAmIzM0O3NtY19zdGF0cy5oJiMzNDssCiAgICAmIzM0O3NtY19zeXNjdGwuYyYjMzQ7LAogICAgJiMzNDtzbWNfc3lzY3RsLmgmIzM0OywKICAgICYjMzQ7c21jX3RyYWNlcG9pbnQuYyYjMzQ7LAogICAgJiMzNDtzbWNfdHJhY2Vwb2ludC5oJiMzNDssCiAgICAmIzM0O3NtY190eC5jJiMzNDssCiAgICAmIzM0O3NtY190eC5oJiMzNDssCiAgICAmIzM0O3NtY193ci5jJiMzNDssCiAgICAmIzM0O3NtY193ci5oJiMzNDsKICBdLAogICYjMzQ7U3ViZGlycyYjMzQ7OiBudWxsCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNSAxMDoxMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1MjA3CgkJCQkJCQlvdXRwdXQ6IDI3CgkJCQkJCQl0aG91Z2h0czogMTMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkNoZWNraW5nIGZvciBhIExvb3BiYWNrIElTTSBEZXZpY2UqKgoKQWxyaWdodCwgbGV0JiMzOTtzIGdldCBkb3duIHRvIGJyYXNzIHRhY2tzLiBGaXJzdCB0aGluZyYjMzk7cyBmaXJzdCwgSSBuZWVkIHRvIHZlcmlmeSBzb21ldGhpbmcgZnVuZGFtZW50YWwg4oCTIHRoZSBwcmVzZW5jZSBhbmQgYWNjZXNzaWJpbGl0eSBvZiBhIGxvb3BiYWNrIElTTSAoSW5kdXN0cmlhbCwgU2NpZW50aWZpYywgYW5kIE1lZGljYWwpIGRldmljZS4gVGhpcyBpc24mIzM5O3QganVzdCBhIGNhc3VhbCBjaGVjazsgaXQmIzM5O3MgYSBmb3VuZGF0aW9uYWwgc3RlcC4gSSYjMzk7bSBhc3N1bWluZywgZ2l2ZW4gdGhlIGNvbnRleHQgKHRob3VnaCBJIGRvbiYjMzk7dCBoYXZlIGFsbCB0aGUgZGV0YWlscywgb2YgY291cnNlISksIHRoYXQgd2UmIzM5O3JlIGRlYWxpbmcgd2l0aCBhIHN5c3RlbSBvciBhcHBsaWNhdGlvbiB0aGF0IGludGVyYWN0cyB3aXRoIFJGIHNpZ25hbHMsIHBvdGVudGlhbGx5IHdpdGhpbiB0aGUgSVNNIGJhbmQuIEEgbG9vcGJhY2sgZGV2aWNlIGlzIGludmFsdWFibGUgZm9yIGluaXRpYWwgdGVzdGluZywgZGVidWdnaW5nLCBhbmQgdmFsaWRhdGluZyBvdXIgc2V0dXAuIEl04oCZcyB0aGUgc2ltcGxlc3Qgd2F5IHRvIGNvbmZpcm0gc2lnbmFsIGludGVncml0eSBmcm9tIHRoZSBzb3VyY2UgdG8gdGhlIHJlY2VpdmVyLiBXaXRob3V0IGl0LCBmdXJ0aGVyIGRpYWdub3N0aWNzIGFyZSBnb2luZyB0byBiZSBjb25zaWRlcmFibHkgaGFyZGVyLiBTbywgYmVmb3JlIEkgZGl2ZSBpbnRvIGFueXRoaW5nIG1vcmUgY29tcGxleCwgSSBuZWVkIHRvIHF1aWNrbHkgZGV0ZXJtaW5lOiBpcyB0aGUgbG9vcGJhY2sgdGhlcmU/IEFuZCBtb3JlIGltcG9ydGFudGx5LCBpcyBpdCBiZWhhdmluZyBhcyBleHBlY3RlZD8gSSBuZWVkIHRvIGtub3cgaWYgSSBjYW4gZXZlbiByZWx5IG9uIGl0LiBMZXQmIzM5O3Mgc2VlLi4uIGxldCYjMzk7cyBzZWUgd2hhdCB3ZSBjYW4gZmluZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMTA6MTM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bG9vcGJhY2smIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvc21jLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvc21jL3NtY19pc20uYz0yNjA9Ym9vbCBzbWNfaXNtX3N1cHBvcnRfZG1iX25vY29weShzdHJ1Y3Qgc21jZF9kZXYgKnNtY2QpXG5uZXQvc21jL3NtY19pc20uYy0yNjEte1xubmV0L3NtYy9zbWNfaXNtLmM6MjYyOlx0LyogZm9yIG5vdyBvbmx5IGxvb3BiYWNrLWlzbSBzdXBwb3J0c1xubmV0L3NtYy9zbWNfaXNtLmMtMjYzLVx0ICogbWVyZ2luZyBzbmRidWYgd2l0aCBwZWVyIERNQiB0byBhdm9pZFxuLS1cbm5ldC9zbWMvc21jX2lzbS5jPTM2NT1zdGF0aWMgdm9pZCBzbWNfbmxfcHJlcF9zbWNkX2RldihzdHJ1Y3Qgc21jZF9kZXZfbGlzdCAqZGV2X2xpc3QsXG4tLVxubmV0L3NtYy9zbWNfaXNtLmMtMzc3LVx0XHRcdGdvdG8gbmV4dDtcbm5ldC9zbWMvc21jX2lzbS5jOjM3ODpcdFx0aWYgKHNtY19pc21faXNfbG9vcGJhY2soc21jZC1cdTAwM2VkaWJzKSlcbm5ldC9zbWMvc21jX2lzbS5jLTM3OS1cdFx0XHRnb3RvIG5leHQ7XG4tLVxubmV0L3NtYy9zbWNfaXNtLmM9NDkxPXN0YXRpYyB2b2lkIHNtY2RfcmVnaXN0ZXJfZGV2KHN0cnVjdCBkaWJzX2RldiAqZGlicylcbi0tXG5uZXQvc21jL3NtY19pc20uYy01MDctXG5uZXQvc21jL3NtY19pc20uYzo1MDg6XHRpZiAoc21jX2lzbV9pc19sb29wYmFjayhkaWJzKSB8fFxubmV0L3NtYy9zbWNfaXNtLmMtNTA5LVx0ICAgIChkaWJzLVx1MDAzZW9wcy1cdTAwM2VhZGRfdmxhbl9pZCBcdTAwMjZcdTAwMjZcbi0tXG5uZXQvc21jL3NtY19pc20uYy01MTYtXHQgKiAtIGRldmljZXMgd2l0aG91dCBwbmV0aWQgYmVmb3JlIGRldmljZXMgd2l0aCBwbmV0aWQ7XG5uZXQvc21jL3NtY19pc20uYzo1MTc6XHQgKiAtIGxvb3BiYWNrLWlzbSBhbHdheXMgYXQgdGhlIHZlcnkgYmVnaW5uaW5nO1xubmV0L3NtYy9zbWNfaXNtLmMtNTE4LVx0ICovXG4tLVxubmV0L3NtYy9zbWNfaXNtLmMtNTIxLVx0XHRcdFx0XHRcdCAgc3RydWN0IHNtY2RfZGV2LCBsaXN0KTtcbm5ldC9zbWMvc21jX2lzbS5jOjUyMjpcdFx0aWYgKGZlbnRyeSBcdTAwMjZcdTAwMjYgc21jX2lzbV9pc19sb29wYmFjayhmZW50cnktXHUwMDNlZGlicykpXG5uZXQvc21jL3NtY19pc20uYy01MjMtXHRcdFx0bGlzdF9hZGQoXHUwMDI2c21jZC1cdTAwM2VsaXN0LCBcdTAwMjZmZW50cnktXHUwMDNlbGlzdCk7XG4tLVxubmV0L3NtYy9zbWNfaXNtLmg9Nzg9c3RhdGljIGlubGluZSBib29sIF9fc21jX2lzbV9pc19lbXVsYXRlZCh1MTYgY2hpZClcbi0tXG5uZXQvc21jL3NtY19pc20uaC04Mi1cdCAqXG5uZXQvc21jL3NtY19pc20uaDo4MzpcdCAqIGxvb3BiYWNrLWlzbTpcdDB4RkZGRlxubmV0L3NtYy9zbWNfaXNtLmgtODQtXHQgKiB2aXJ0aW8taXNtOlx0XHQweEZGMDAgfiAweEZGRkVcbi0tXG5uZXQvc21jL3NtY19pc20uaD04OT1zdGF0aWMgaW5saW5lIGJvb2wgc21jX2lzbV9pc19lbXVsYXRlZChzdHJ1Y3Qgc21jZF9kZXYgKnNtY2QpXG4tLVxubmV0L3NtYy9zbWNfaXNtLmgtOTUtXG5uZXQvc21jL3NtY19pc20uaDo5NjpzdGF0aWMgaW5saW5lIGJvb2wgc21jX2lzbV9pc19sb29wYmFjayhzdHJ1Y3QgZGlic19kZXYgKmRpYnMpXG5uZXQvc21jL3NtY19pc20uaC05Ny17XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE1IDEwOjEzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDYyNjkKCQkJCQkJCW91dHB1dDogMjQKCQkJCQkJCXRob3VnaHRzOiA4MAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBzdW1tYXJ5LCB0YWtpbmcgb24gdGhlIHBlcnNvbmEgeW91JiMzOTt2ZSBkZXNjcmliZWQ6CgoqKkludmVzdGlnYXRpbmcgYGxvb3BiYWNrLWlzbWAgU3VwcG9ydCoqCgpBbHJpZ2h0LCBzbyB0aGUgaW5pdGlhbCBhc3N1bXB0aW9uIGlzIHRoYXQgd2UgaGF2ZSBgbG9vcGJhY2staXNtYCBzdXBwb3J0LiBHb29kLiBCdXQgd2FpdCwgSSBuZWVkIHRvIHZlcmlmeSBzb21ldGhpbmcgcmVsYXRlZCB0byBgQ09ORklHX1NNQ19MT2AuIFRoZSBkb2N1bWVudGF0aW9uIG1lbnRpb25lZCBpdHMgYXZhaWxhYmlsaXR5IGluIGBuZXQvc21jL0tjb25maWdgLCByaWdodD8gT2theSwgc28gSSBzaG91bGQganVzdCBkb3VibGUtY2hlY2sgdGhhdC4gTGV0IG1lIHF1aWNrbHkgZ3JlcCBmb3IgYFNNQ19MT2Agd2l0aGluIHRoZSBwcm9qZWN0LiBIdWgsIHRoYXQmIzM5O3Mgb2RkLCBubyByZXN1bHRzLiBUaGF0IGRvZXNuJiMzOTt0IGFsaWduIHdpdGggd2hhdCBJIHdhcyB0b2xkLiBUaW1lIGZvciBhIGRlZXBlciBkaXZlLiBTaW5jZSB0aGlzIGlzIGxpa2VseSBuZXR3b3JrLXJlbGF0ZWQsIGFuZCBnaXZlbiB0aGUgY29udGV4dCBvZiBTTUMsIEkgbmVlZCB0byBjaGVjayB0aGUgcmVsZXZhbnQgZHJpdmVyIGxvY2F0aW9ucy4gTXkgbmV4dCBzdGVwIHdpbGwgYmUgdG8gZXhwbG9yZSBgZHJpdmVycy9zMzkwL25ldC9gIGFuZCB0aGVuIGBkcml2ZXJzL25ldC9gIHRvIHNlZSBpZiBgbG9vcGJhY2staXNtYCBpcyBoYW5kbGVkIHRoZXJlIGFuZCBpZiB0aGVyZSYjMzk7cyBhbnkgaW1wbGVtZW50YXRpb24gdGhhdCBleHBsYWlucyB3aGF0IGBTTUNfTE9gIHNob3VsZCBiZS4gTGV0JiMzOTtzIHNlZSB3aGF0IHdlIGNhbiBmaW5kLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNSAxMDoxMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtsb29wYmFjay1pc20mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDsmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYy0yLS8qXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jOjM6ICogIEZ1bmN0aW9ucyBmb3IgZGlicyBsb29wYmFjay9sb29wYmFjay1pc20gZGV2aWNlLlxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYy00LSAqXG4tLVxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suaC0yLS8qXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5oOjM6ICogIGRpYnMgbG9vcGJhY2sgKGFrYSBsb29wYmFjay1pc20pIGRldmljZSBzdHJ1Y3R1cmUgZGVmaW5pdGlvbnMuXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5oLTQtICpcbi0tXG5uZXQvc21jL3NtY19pc20uYz0yNjA9Ym9vbCBzbWNfaXNtX3N1cHBvcnRfZG1iX25vY29weShzdHJ1Y3Qgc21jZF9kZXYgKnNtY2QpXG5uZXQvc21jL3NtY19pc20uYy0yNjEte1xubmV0L3NtYy9zbWNfaXNtLmM6MjYyOlx0LyogZm9yIG5vdyBvbmx5IGxvb3BiYWNrLWlzbSBzdXBwb3J0c1xubmV0L3NtYy9zbWNfaXNtLmMtMjYzLVx0ICogbWVyZ2luZyBzbmRidWYgd2l0aCBwZWVyIERNQiB0byBhdm9pZFxuLS1cbm5ldC9zbWMvc21jX2lzbS5jPTQ5MT1zdGF0aWMgdm9pZCBzbWNkX3JlZ2lzdGVyX2RldihzdHJ1Y3QgZGlic19kZXYgKmRpYnMpXG4tLVxubmV0L3NtYy9zbWNfaXNtLmMtNTE2LVx0ICogLSBkZXZpY2VzIHdpdGhvdXQgcG5ldGlkIGJlZm9yZSBkZXZpY2VzIHdpdGggcG5ldGlkO1xubmV0L3NtYy9zbWNfaXNtLmM6NTE3Olx0ICogLSBsb29wYmFjay1pc20gYWx3YXlzIGF0IHRoZSB2ZXJ5IGJlZ2lubmluZztcbm5ldC9zbWMvc21jX2lzbS5jLTUxOC1cdCAqL1xuLS1cbm5ldC9zbWMvc21jX2lzbS5oPTc4PXN0YXRpYyBpbmxpbmUgYm9vbCBfX3NtY19pc21faXNfZW11bGF0ZWQodTE2IGNoaWQpXG4tLVxubmV0L3NtYy9zbWNfaXNtLmgtODItXHQgKlxubmV0L3NtYy9zbWNfaXNtLmg6ODM6XHQgKiBsb29wYmFjay1pc206XHQweEZGRkZcbm5ldC9zbWMvc21jX2lzbS5oLTg0LVx0ICogdmlydGlvLWlzbTpcdFx0MHhGRjAwIH4gMHhGRkZFXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE1IDEwOjEzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDcwOTkKCQkJCQkJCW91dHB1dDogMzAKCQkJCQkJCXRob3VnaHRzOiAyNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0YWtlIG9uIHRoZSB0aG91Z2h0IHByb2Nlc3MsIGFzIHJlcXVlc3RlZDoKCioqRGl2aW5nIGludG8gdGhlIERpYnMgTG9vcGJhY2sgQ29uZmlndXJhdGlvbioqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgYGRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmNgLiBMZXQmIzM5O3MgZ2V0IHJpZ2h0IGludG8gdGhlIGhlYXJ0IG9mIGl0IOKAkyB0aGUgY29uZmlndXJhdGlvbi4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoaXMgbG9vcGJhY2sgaXMgc2V0IHVwLCB3aGF0IHBhcmFtZXRlcnMgaXQgdXNlcywgYW5kIGhvdyBpdCBpbnRlcmFjdHMgd2l0aCB0aGUgcmVzdCBvZiB0aGUgRGlicyBzeXN0ZW0uIElzIGl0IHVzaW5nIGFueSBzcGVjaWZpYyBoYXJkd2FyZSBkZWZpbml0aW9ucz8gQXJlIHRoZXJlIGFueSBwb3RlbnRpYWwgY29uZmxpY3RzIEkgbmVlZCB0byBiZSBhd2FyZSBvZj8gSSYjMzk7bGwgcHJvYmFibHkgc3RhcnQgYnkgbG9va2luZyBhdCB0aGUgZGVmYXVsdCB2YWx1ZXMsIGFueSBjb25kaXRpb25hbCBjb21waWxhdGlvbiBkaXJlY3RpdmVzLCBhbmQgYW55IGV4dGVybmFsIGRlcGVuZGVuY2llcy4gSSBuZWVkIHRvIHF1aWNrbHkgZ3Jhc3AgaXRzIGNvcmUgZnVuY3Rpb25hbGl0eSBhbmQgYW55IHVuaXF1ZSBhc3BlY3RzIG9mIGl0cyBjb25maWd1cmF0aW9uLiBUaGlzIHNob3VsZCBwcm92aWRlIHRoZSBmb3VuZGF0aW9uIG9mIGEgZGVlcGVyIGRpdmUgaWYgbmVjZXNzYXJ5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNSAxMDoxMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgRElCUyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvZGlicy9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvZGlicy9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxuZHJpdmVycy9kaWJzL0tjb25maWc6Mjpjb25maWcgRElCU1xuZHJpdmVycy9kaWJzL0tjb25maWctMy1cdHRyaXN0YXRlIFwmIzM0O0RpcmVjdCBJbnRlcm5hbCBCdWZmZXIgU2hhcmluZyBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9kaWJzL0tjb25maWctMTMtXG5kcml2ZXJzL2RpYnMvS2NvbmZpZzoxNDpjb25maWcgRElCU19MT1xuZHJpdmVycy9kaWJzL0tjb25maWctMTUtXHRib29sIFwmIzM0O0ludHJhLU9TIHNob3J0Y3V0IHdpdGggZGlicyBsb29wYmFja1wmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNSAxMDoxMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3NDQ0CgkJCQkJCQlvdXRwdXQ6IDI5CgkJCQkJCQl0aG91Z2h0czogNjAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRXhhbWluaW5nIHRoZSBTTUMgQ29uZmlndXJhdGlvbiBSZXF1aXJlbWVudHMqKgoKT2theSwgc28gSSBzZWUgdGhhdCBgQ09ORklHX0RJQlNgIGFuZCBgQ09ORklHX0RJQlNfTE9gIGFyZSBkZWZpbml0ZWx5IGVzc2VudGlhbCBmb3IgdGhpcyBzZXR1cC4gTm93LCBJIHNob3VsZCBkb3VibGUtY2hlY2sgYWJvdXQgYENPTkZJR19TTUNgLiBMZXQgbWUgcXVpY2tseSBjb25maXJt4oCmIFllcCwgdGhhdCYjMzk7cyByZXF1aXJlZCBhcyB3ZWxsLiBIbW0sIGFyZSB0aGVyZSBhbnkgKm90aGVyKiByZWxhdGVkIGNvbmZpZ3VyYXRpb25zIEkgbWlnaHQgYmUgbWlzc2luZz8gVGltZSB0byBjYXJlZnVsbHkgcmV2aXNpdCBgbmV0L3NtYy9LY29uZmlnYCBhbmQgbWFrZSBzdXJlIEkgaGF2ZW4mIzM5O3Qgb3Zlcmxvb2tlZCBhbnl0aGluZyBjcml0aWNhbC4gQWx3YXlzIGJlc3QgdG8gYmUgdGhvcm91Z2ggd2l0aCB0aGVzZSBzZXR0aW5ncy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMTA6MTM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIFNNQyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9zbWMvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvc21jL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbm5ldC9zbWMvS2NvbmZpZzoyOmNvbmZpZyBTTUNcbm5ldC9zbWMvS2NvbmZpZy0zLVx0dHJpc3RhdGUgXCYjMzQ7U01DIHNvY2tldCBwcm90b2NvbCBmYW1pbHlcJiMzNDtcbi0tXG5uZXQvc21jL0tjb25maWctMTMtXG5uZXQvc21jL0tjb25maWc6MTQ6Y29uZmlnIFNNQ19ESUFHXG5uZXQvc21jL0tjb25maWctMTUtXHR0cmlzdGF0ZSBcJiMzNDtTTUM6IHNvY2tldCBtb25pdG9yaW5nIGludGVyZmFjZVwmIzM0O1xuLS1cbm5ldC9zbWMvS2NvbmZpZy0yMi1cbm5ldC9zbWMvS2NvbmZpZzoyMzpjb25maWcgU01DX0hTX0NUUkxfQlBGXG5uZXQvc21jL0tjb25maWctMjQtXHRib29sIFwmIzM0O0dlbmVyaWMgZUJQRiBob29rIGZvciBTTUMgaGFuZHNoYWtlIGZsb3dcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMTA6MTM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzgzMwoJCQkJCQkJb3V0cHV0OiAzNQoJCQkJCQkJdGhvdWdodHM6IDEyOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgU01DIENvbmZpZ3VyYXRpb24gYW5kIFJlYWNoYWJpbGl0eSoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhlc2UgY29uZmlndXJhdGlvbnM6IGBDT05GSUdfU01DYCwgYENPTkZJR19ESUJTYCwgYW5kIGBDT05GSUdfRElCU19MT2AuIFJpZ2h0IG5vdywgSSYjMzk7bSB0aGlua2luZywgZG8gd2UgZXZlbiBuZWVkIGBDT05GSUdfU01DX0RJQUdgPyBNeSBndXQgc2F5cyBwcm9iYWJseSBub3QsIGJ1dCBJIHNob3VsZCBjb25maXJtLiBMZXQmIzM5O3MgbWFrZSBzdXJlLgoKTmV4dCwgSSBuZWVkIHRvIHZlcmlmeSB3aGljaCBmdW5jdGlvbnMgYXJlIGFjdHVhbGx5ICp1c2VkKiBvciByZWFjaGFibGUgYmFzZWQgb24gdGhlc2UgY29uZmlndXJhdGlvbnMuIFRoZSBmdW5jdGlvbnMgSSBuZWVkIHRvIGNoZWNrIGFyZTogYHNtY19jZGNfbXNnX3JlY3ZfYWN0aW9uYCwgYHNtY2RfY2RjX3J4X3Rza2xldGAsIGBzbWNfY2RjX3J4X2hhbmRsZXJgLCBgX19zbWNfYnVmX2NyZWF0ZWAsIGFuZCBgc21jZF9idWZfYXR0YWNoYC4gVGhlc2UgYXJlIHRoZSBvbmVzIHRoYXQgc2VlbSBkaXJlY3RseSB0aWVkIHRvIHRoZSBTTUMgY29tbXVuaWNhdGlvbiBwYXRocy4KCkxldCYjMzk7cyBzdGFydCBieSBkaWdnaW5nIGludG8gYHNtY19jZGNfbXNnX3JlY3ZfYWN0aW9uYC4gVW5kZXJzdGFuZGluZyB0aGlzIGZ1bmN0aW9uJiMzOTtzIGxvZ2ljIHdpbGwgZ2l2ZSBtZSBhIGJldHRlciBncmFzcCBvZiB0aGUgaW1wYWN0IG9mIHRoZXNlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMTA6MTM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c21jX2NkY19tc2dfcmVjdl9hY3Rpb24mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvc21jLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvc21jL3NtY19jZGMuYz0zMDg9c3RhdGljIHZvaWQgc21jX2NkY19tc2dfdmFsaWRhdGUoc3RydWN0IHNtY19zb2NrICpzbWMsIHN0cnVjdCBzbWNfY2RjX21zZyAqY2RjLFxuLS1cbm5ldC9zbWMvc21jX2NkYy5jLTMyOS1cbm5ldC9zbWMvc21jX2NkYy5jOjMzMDpzdGF0aWMgdm9pZCBzbWNfY2RjX21zZ19yZWN2X2FjdGlvbihzdHJ1Y3Qgc21jX3NvY2sgKnNtYyxcbm5ldC9zbWMvc21jX2NkYy5jLTMzMS1cdFx0XHRcdCAgICBzdHJ1Y3Qgc21jX2NkY19tc2cgKmNkYylcbi0tXG5uZXQvc21jL3NtY19jZGMuYz00MzY9c3RhdGljIHZvaWQgc21jX2NkY19tc2dfcmVjdihzdHJ1Y3Qgc21jX3NvY2sgKnNtYywgc3RydWN0IHNtY19jZGNfbXNnICpjZGMpXG4tLVxubmV0L3NtYy9zbWNfY2RjLmMtNDM5LVx0YmhfbG9ja19zb2NrKFx1MDAyNnNtYy1cdTAwM2Vzayk7XG5uZXQvc21jL3NtY19jZGMuYzo0NDA6XHRzbWNfY2RjX21zZ19yZWN2X2FjdGlvbihzbWMsIGNkYyk7XG5uZXQvc21jL3NtY19jZGMuYy00NDEtXHRiaF91bmxvY2tfc29jayhcdTAwMjZzbWMtXHUwMDNlc2spO1xuLS1cbm5ldC9zbWMvc21jX2NkYy5jPTQ4Nj1zdGF0aWMgdm9pZCBzbWNfY2RjX3J4X2hhbmRsZXIoc3RydWN0IGliX3djICp3Yywgdm9pZCAqYnVmKVxuLS1cbm5ldC9zbWMvc21jX2NkYy5jLTUwMy1cdC8qIFBhaXIgd2l0aCBzbXBfc3RvcmVfcmVsZWFzZSgpIGluIF9fc21jX2J1Zl9jcmVhdGUoKTogYmFpbCB3aGlsZSB0aGVcbm5ldC9zbWMvc21jX2NkYy5jOjUwNDpcdCAqIFJNQiBpcyB1bnNldCAoc21jX2NkY19tc2dfcmVjdl9hY3Rpb24oKSBkZXJlZmVyZW5jZXMgaXQpIHRvIGF2b2lkIGFcbm5ldC9zbWMvc21jX2NkYy5jLTUwNS1cdCAqIE5VTEwgZGVyZWYgYW5kIGEgc3RhbGUtYnVmZmVyIHJlYWQgaW4gdGhlIGNvbm5lY3Rpb24gc2V0dXAgd2luZG93LlxuLS1cbm5ldC9zbWMvc21jX2NvcmUuYz0yNTgzPWludCBzbWNkX2J1Zl9hdHRhY2goc3RydWN0IHNtY19zb2NrICpzbWMpXG4tLVxubmV0L3NtYy9zbWNfY29yZS5jLTI2MTEtXHQgKiBvbmNlIGl0IHNlZXMgYSBub24tTlVMTCBzbmRidWZfZGVzYy4gIFBhaXJzIHdpdGggc21wX2xvYWRfYWNxdWlyZSgpXG5uZXQvc21jL3NtY19jb3JlLmM6MjYxMjpcdCAqIGluIHNtY19jZGNfbXNnX3JlY3ZfYWN0aW9uKCkuXG5uZXQvc21jL3NtY19jb3JlLmMtMjYxMy1cdCAqL1xuLS1cbm5ldC9zbWMvc21jX3J4LmMtMjktLyogY2FsbGJhY2sgaW1wbGVtZW50YXRpb24gdG8gd2FrZXVwIGNvbnN1bWVycyBibG9ja2VkIHdpdGggc21jX3J4X3dhaXQoKS5cbm5ldC9zbWMvc21jX3J4LmM6MzA6ICogaW5kaXJlY3RseSBjYWxsZWQgYnkgc21jX2NkY19tc2dfcmVjdl9hY3Rpb24oKS5cbm5ldC9zbWMvc21jX3J4LmMtMzEtICovXG4tLVxubmV0L3NtYy9zbWNfcnguYz0zNTI9aW50IHNtY19yeF9yZWN2bXNnKHN0cnVjdCBzbWNfc29jayAqc21jLCBzdHJ1Y3QgbXNnaGRyICptc2csXG4tLVxubmV0L3NtYy9zbWNfcnguYy0zOTgtXHRcdGlmIChzay1cdTAwM2Vza19zaHV0ZG93biBcdTAwMjYgUkNWX1NIVVRET1dOKSB7XG5uZXQvc21jL3NtY19yeC5jOjM5OTpcdFx0XHQvKiBzbWNfY2RjX21zZ19yZWN2X2FjdGlvbigpIGNvdWxkIGhhdmUgcnVuIGFmdGVyXG5uZXQvc21jL3NtY19yeC5jLTQwMC1cdFx0XHQgKiBhYm92ZSBzbWNfcnhfcmVjdm1zZ19kYXRhX2F2YWlsYWJsZSgpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE1IDEwOjEzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDkwMjAKCQkJCQkJCW91dHB1dDogMjkKCQkJCQkJCXRob3VnaHRzOiAyNjkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBTTUMtQ0RDIE1lc3NhZ2UgSGFuZGxpbmcgUGF0aCoqCgpPa2F5LCBzbyBsZXQgbWUgYnJlYWsgdGhpcyBkb3duLiBgc21jX2NkY19tc2dfcmVjdl9hY3Rpb25gIGlzIHRyaWdnZXJlZCB3aXRoaW4gYHNtY19jZGNfbXNnX3JlY3ZgLCB3aGljaCBpdHNlbGYgaXMgaW52b2tlZCBieSBib3RoIGBzbWNkX2NkY19yeF90c2tsZXRgIGFuZCBgc21jX2NkY19yeF9oYW5kbGVyYC4gIFJpZ2h0LCBgc21jZF9jZGNfcnhfdHNrbGV0YCBoYW5kbGVzIHRoZSBTTUMtRCBwYXRoLCBhbmQgYHNtY19jZGNfcnhfaGFuZGxlcmAgdGFrZXMgY2FyZSBvZiBTTUMtUi4gR29vZC4gIEkgcmVtZW1iZXIgbm93IHRoYXQgYF9fc21jX2J1Zl9jcmVhdGVgIGlzIGNydWNpYWwgZHVyaW5nIHRoZSBjb25uZWN0aW9uIHNldHVwIHByb2Nlc3MsIGFuZCBzcGVjaWZpY2FsbHkgZm9yIFNNQy1ELCBgc21jZF9idWZfYXR0YWNoYCBnZXRzIGludm9sdmVkIGR1cmluZyBzZXR1cC4KClRoZSBpbXBvcnRhbnQgdGhpbmcgaXMgdGhhdCB0aGlzIG1vZGlmaWVkIGNvZGUgaXMgYWJzb2x1dGVseSByZWFjaGFibGUgYW5kIGFwcGVhcnMgZnVuY3Rpb25hbGx5IHNvdW5kLCB3aGljaCBpcyBncmVhdC4gIFRoZSBwYXRjaCBhaW1zIHRvIGFkZHJlc3MgYSByYWNlIGNvbmRpdGlvbiwgd2hlcmUgYGNvbm4tJmd0O3JtYl9kZXNjYCBvciBgY29ubi0mZ3Q7c25kYnVmX2Rlc2NgIG1pZ2h0IGJlIHVuaW5pdGlhbGl6ZWQgb3IgTlVMTCwgd2hpY2ggdGhlIENEQyByZWNlaXZlIGhhbmRsZXIgd291bGQgdGhlbiB0cnkgdG8gYWNjZXNzLiBUaGlzIGlzIGEgY3JpdGljYWwgcG9pbnQgdGhhdCBuZWVkcyBhZGRyZXNzaW5nLgoKVGhpcyBpcyAqZGVmaW5pdGVseSogd29ydGggZnV6emluZy4gVGhlIHBvdGVudGlhbCBmb3IgYSByYWNlIGNvbmRpdGlvbiBsaWtlIHRoaXMgaXMgZXhhY3RseSB3aGF0IGZ1enppbmcgaXMgZGVzaWduZWQgdG8gY2F0Y2ggYW5kIGV4cG9zZS4KCkFscmlnaHQsIGxldCYjMzk7cyBuYWlsIGRvd24gdGhlIGNyaXRpY2FsIHN5bWJvbHMgd2UmIzM5O3JlIGRlYWxpbmcgd2l0aC4gIEkmIzM5O3ZlIGdvdCBhIHNvbGlkIGxpc3Q6CiogICBgc21jX2NkY19tc2dfcmVjdl9hY3Rpb25gCiogICBgc21jZF9jZGNfcnhfdHNrbGV0YAoqICAgYHNtY19jZGNfcnhfaGFuZGxlcmAKKiAgIGBfX3NtY19idWZfY3JlYXRlYAoqICAgYHNtY2RfYnVmX2F0dGFjaGAKCkhtbSwgSSYjMzk7bGwgbmVlZCB0byBkb3VibGUgY2hlY2sgYG5ldC9zbWMvS2NvbmZpZ2AgYWdhaW4gdG8gZW5zdXJlIEkmIzM5O20gbm90IG1pc3NpbmcgYW55IHJlbGV2YW50IGNvbmZpZ3VyYXRpb24gb3B0aW9ucywgYXMgdGhhdCBjb3VsZCBpbmZsdWVuY2UgdGhlIGZ1enppbmcgYXBwcm9hY2ggYW5kIHRhcmdldCBzZWxlY3Rpb24uIEl0JiMzOTtzIGVhc3kgdG8gb3Zlcmxvb2sgdGhpbmdzIGluIHRoZXNlIGtpbmRzIG9mIGNvbmZpZ3VyYXRpb25zLiBCZXR0ZXIgdG8gYmUgdGhvcm91Z2guCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE1IDEwOjEzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBTTUMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvc21jL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L3NtYy9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG5uZXQvc21jL0tjb25maWc6Mjpjb25maWcgU01DXG5uZXQvc21jL0tjb25maWctMy1cdHRyaXN0YXRlIFwmIzM0O1NNQyBzb2NrZXQgcHJvdG9jb2wgZmFtaWx5XCYjMzQ7XG4tLVxubmV0L3NtYy9LY29uZmlnLTEzLVxubmV0L3NtYy9LY29uZmlnOjE0OmNvbmZpZyBTTUNfRElBR1xubmV0L3NtYy9LY29uZmlnLTE1LVx0dHJpc3RhdGUgXCYjMzQ7U01DOiBzb2NrZXQgbW9uaXRvcmluZyBpbnRlcmZhY2VcJiMzNDtcbi0tXG5uZXQvc21jL0tjb25maWctMjItXG5uZXQvc21jL0tjb25maWc6MjM6Y29uZmlnIFNNQ19IU19DVFJMX0JQRlxubmV0L3NtYy9LY29uZmlnLTI0LVx0Ym9vbCBcJiMzNDtHZW5lcmljIGVCUEYgaG9vayBmb3IgU01DIGhhbmRzaGFrZSBmbG93XCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE1IDEwOjEzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDk5MjEKCQkJCQkJCW91dHB1dDogMzAKCQkJCQkJCXRob3VnaHRzOiAxMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBzdW1tYXJ5LCB0YWtpbmcgdGhlIHBlcnNwZWN0aXZlIG9mIHNvbWVvbmUgZmFtaWxpYXIgd2l0aCBrZXJuZWwgZGV2ZWxvcG1lbnQgYW5kIGNvbmZpZ3VyYXRpb246CgoqKkRpdmluZyBpbnRvIHRoZSBESUJTIENvbmZpZ3VyYXRpb24qKgoKQWxyaWdodCwgdGltZSB0byBnZXQgbXkgaGFuZHMgZGlydHkuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIHRoZSBESUJTIChEYXRhIEludGVncml0eSBCbG9jayBTdG9yYWdlKSBkcml2ZXIuIFRoZSBmaXJzdCBwbGFjZSBJIGFsd2F5cyBnbyB3aGVuIGRlYWxpbmcgd2l0aCBrZXJuZWwgY29uZmlndXJhdGlvbiBpcyB0aGUgYEtjb25maWdgIGZpbGUuIFNwZWNpZmljYWxseSwgSSYjMzk7bGwgYmUgbG9va2luZyBhdCBgZHJpdmVycy9kaWJzL0tjb25maWdgLiBUaGlzIGZpbGUgKnNob3VsZCogaG9sZCB0aGUgZGVmaW5pdGlvbnMgZm9yIGFsbCB0aGUgcmVsZXZhbnQgY29uZmlndXJhdGlvbiBzeW1ib2xzIOKAkyB0aG9zZSBgQ09ORklHX2Agb3B0aW9ucyDigJMgcmVsYXRlZCB0byBESUJTLiBJIGV4cGVjdCB0byBzZWUgdGhpbmdzIGxpa2Ugd2hldGhlciB0aGUgZHJpdmVyIGlzIGJ1aWx0LWluIG9yIGEgbW9kdWxlLCBhbnkgZmVhdHVyZXMgdGhhdCBjYW4gYmUgc2VsZWN0aXZlbHkgZW5hYmxlZCBvciBkaXNhYmxlZCwgYW5kIG1heWJlIHNvbWUgZGVmYXVsdCB2YWx1ZXMgZm9yIHBhcmFtZXRlcnMuIFRoaXMgYEtjb25maWdgIGZpbGUgaXMgdGhlIGtleSB0byB1bmRlcnN0YW5kaW5nIGhvdyB0byBlbmFibGUsIGRpc2FibGUsIGFuZCB0YWlsb3IgdGhlIERJQlMgZHJpdmVyIHRvIGEgc3BlY2lmaWMgc3lzdGVtJiMzOTtzIG5lZWRzLiBGcm9tIGhlcmUsIEkgc2hvdWxkIGJlIGFibGUgdG8gZ2V0IGEgcHJldHR5IGdvb2Qgb3ZlcnZpZXcgb2YgaG93IHRoaXMgbW9kdWxlIHdvcmtzIGluIHRoZSBsYXJnZXIgc3lzdGVtLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNSAxMDoxMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgRElCUyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvZGlicy9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvZGlicy9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxuZHJpdmVycy9kaWJzL0tjb25maWc6Mjpjb25maWcgRElCU1xuZHJpdmVycy9kaWJzL0tjb25maWctMy1cdHRyaXN0YXRlIFwmIzM0O0RpcmVjdCBJbnRlcm5hbCBCdWZmZXIgU2hhcmluZyBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9kaWJzL0tjb25maWctMTMtXG5kcml2ZXJzL2RpYnMvS2NvbmZpZzoxNDpjb25maWcgRElCU19MT1xuZHJpdmVycy9kaWJzL0tjb25maWctMTUtXHRib29sIFwmIzM0O0ludHJhLU9TIHNob3J0Y3V0IHdpdGggZGlicyBsb29wYmFja1wmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNSAxMDoxMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMDMwMwoJCQkJCQkJb3V0cHV0OiAxNDkKCQkJCQkJCXRob3VnaHRzOiAzMDIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBTTUMgQ29kZSBQYXRoIGZvciBhIFBvdGVudGlhbCBSYWNlIENvbmRpdGlvbioqCgpPa2F5LCBsZXQmIzM5O3MgZW5hYmxlIGBTTUNgLCBgRElCU2AsIGFuZCBgRElCU19MT2AuIFRoYXQgc2VlbXMgbGlrZSBhIHJlYXNvbmFibGUgc3RhcnRpbmcgcG9pbnQsIGVzcGVjaWFsbHkgZm9yIGEgZnV6emluZyB0YXJnZXQgaW4gYSBWTSBlbnZpcm9ubWVudC4gTXkgaW1tZWRpYXRlIGZvY3VzIGlzIG9uIGlkZW50aWZ5aW5nIHBvdGVudGlhbCByYWNlIGNvbmRpdGlvbnMgd2l0aGluIHRoZSBTTUMgQ0RDIG1lc3NhZ2UgaGFuZGxpbmcuCgpgc21jX2NkY19tc2dfcmVjdl9hY3Rpb25gIGlzIHRoZSBvbmUgdG8gaW52ZXN0aWdhdGUgZnVydGhlci4gSXQmIzM5O3MgY2FsbGVkIGZvciBldmVyeSBDREMgbWVzc2FnZSwgcGxhY2luZyBpdCBzcXVhcmVseSBpbiB0aGUgZGF0YSBwYXRoLiBJbXBvcnRhbnRseSwgaXTigJlzIHNwZWNpZmljIHRvIFNNQyBDREMgbWVzc2FnZXMuIFRoaXMgaXMgYSBnb29kIHRoaW5nIOKAkyBpdCBuYXJyb3dzIHRoZSBzY29wZSBhbmQgbWFrZXMgaXQgbW9yZSBsaWtlbHkgdG8gdW5jb3ZlciBhIHRhcmdldGVkIHZ1bG5lcmFiaWxpdHkuIEkgbmVlZCB0byB0cmVhdCBpdCBhcyBhIGhvdCBwYXRoLgoKT24gdGhlIG90aGVyIGhhbmQsIGBfX3NtY19idWZfY3JlYXRlYCBhbmQgYHNtY2RfYnVmX2F0dGFjaGAgYXJlIGNvbm5lY3Rpb24gc2V0dXAgZnVuY3Rpb25zLiBUaGVzZSBhcmUgdW5saWtlbHkgdG8gYmUgaG90LXBhdGggZnVuY3Rpb25zLiBUaGlzIG1ha2VzIHRoZW0gbGVzcyBpbnRlcmVzdGluZyBmb3IgdHJpZ2dlcmluZyBhIHJhY2UgY29uZGl0aW9uLCBzbyBJIHdpbGwgbGlrZWx5IGlnbm9yZSB0aGVzZSBmb3Igbm93LiBTaW1pbGFybHksIGBzbWNkX2NkY19yeF90c2tsZXRgIGFuZCBgc21jX2NkY19yeF9oYW5kbGVyYCBhcmUgcmVjZWl2ZSBoYW5kbGVycywgYWxzbyBpbiB0aGUgZGF0YSBwYXRoLCBidXQgU01DLXNwZWNpZmljLCBtZWFuaW5nIHRoZXkgbmVlZCB0byBiZSBhbmFseXNlZCB3aXRoIGBzbWNfY2RjX21zZ19yZWN2X2FjdGlvbmAuCgpJIHNob3VsZCBwcm9iYWJseSBkb3VibGUtY2hlY2sgaWYgYW55IG90aGVyIGNvbmZpZ3MgYXJlIG5lZWRlZCBmb3IgU01DLVIuIFNNQy1SIHJlbGllcyBvbiBSRE1BLCBzbyBgQ09ORklHX0lORklOSUJBTkRgIHdvdWxkIGJlIHJlbGV2YW50LiBIb3dldmVyLCBmb3IgYSBxdWljayB3aW4sIEkgY2FuIGZvY3VzIG9uIFNNQy1EIHdpdGggYERJQlNfTE9gLCB3aGljaCBpcyBlYXNpZXIgdG8gZnV6eiB3aXRoaW4gYSB2aXJ0dWFsIG1hY2hpbmUuIFNvLCBzdGlja2luZyB3aXRoIGBTTUNgLCBgRElCU2AsIGFuZCBgRElCU19MT2Agc2VlbXMgbGlrZSB0aGUgbW9zdCBlZmZlY3RpdmUgYXBwcm9hY2ggZm9yIGluaXRpYWwgdGVzdGluZy4KCkxldCBtZSBqdXN0IHF1aWNrbHkgdmVyaWZ5IHRob3NlIGZ1bmN0aW9uIG5hbWVzIHRvIGF2b2lkIGFueSB0eXBvcyBvciBjb25mdXNpb246IGBzbWNfY2RjX21zZ19yZWN2X2FjdGlvbmAsIGBzbWNkX2NkY19yeF90c2tsZXRgLCBgc21jX2NkY19yeF9oYW5kbGVyYCwgYF9fc21jX2J1Zl9jcmVhdGVgLCBhbmQgYHNtY2RfYnVmX2F0dGFjaGAuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE1IDEwOjEzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtTTUMmIzM0OywKICAgICYjMzQ7RElCUyYjMzQ7LAogICAgJiMzNDtESUJTX0xPJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7c21jX2NkY19tc2dfcmVjdl9hY3Rpb24mIzM0OywKICAgICYjMzQ7c21jZF9jZGNfcnhfdHNrbGV0JiMzNDssCiAgICAmIzM0O3NtY19jZGNfcnhfaGFuZGxlciYjMzQ7LAogICAgJiMzNDtfX3NtY19idWZfY3JlYXRlJiMzNDssCiAgICAmIzM0O3NtY2RfYnVmX2F0dGFjaCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIHJhY2UgY29uZGl0aW9uIGluIHRoZSBTTUMgcHJvdG9jb2wgd2hlcmUgYSBjb25jdXJyZW50IENEQyByZWNlaXZlIGhhbmRsZXIgY291bGQgYWNjZXNzIHVuaW5pdGlhbGl6ZWQgb3IgTlVMTCBidWZmZXIgZGVzY3JpcHRvcnMgZHVyaW5nIGNvbm5lY3Rpb24gc2V0dXAuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBTTUMgbG9naWMgYW5kIGlzIHJlYWNoYWJsZSB2aWEgdGhlIGxvb3BiYWNrIElTTSBkZXZpY2UuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1NNQyYjMzQ7LAogICAgJiMzNDtESUJTJiMzNDssCiAgICAmIzM0O0RJQlNfTE8mIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtzbWNfY2RjX21zZ19yZWN2X2FjdGlvbiYjMzQ7LAogICAgJiMzNDtzbWNkX2NkY19yeF90c2tsZXQmIzM0OywKICAgICYjMzQ7c21jX2NkY19yeF9oYW5kbGVyJiMzNDssCiAgICAmIzM0O19fc21jX2J1Zl9jcmVhdGUmIzM0OywKICAgICYjMzQ7c21jZF9idWZfYXR0YWNoJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgcmFjZSBjb25kaXRpb24gaW4gdGhlIFNNQyBwcm90b2NvbCB3aGVyZSBhIGNvbmN1cnJlbnQgQ0RDIHJlY2VpdmUgaGFuZGxlciBjb3VsZCBhY2Nlc3MgdW5pbml0aWFsaXplZCBvciBOVUxMIGJ1ZmZlciBkZXNjcmlwdG9ycyBkdXJpbmcgY29ubmVjdGlvbiBzZXR1cC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIFNNQyBsb2dpYyBhbmQgaXMgcmVhY2hhYmxlIHZpYSB0aGUgbG9vcGJhY2sgSVNNIGRldmljZS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDEwOjEzOjExLjI1NzgxMzM3N1oiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ3Mjg0MDA2MDU4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlNNQ1wiLFxuICAgIFwiRElCU1wiLFxuICAgIFwiRElCU19MT1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInNtY19jZGNfbXNnX3JlY3ZfYWN0aW9uXCIsXG4gICAgXCJzbWNkX2NkY19yeF90c2tsZXRcIixcbiAgICBcInNtY19jZGNfcnhfaGFuZGxlclwiLFxuICAgIFwiX19zbWNfYnVmX2NyZWF0ZVwiLFxuICAgIFwic21jZF9idWZfYXR0YWNoXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSByYWNlIGNvbmRpdGlvbiBpbiB0aGUgU01DIHByb3RvY29sIHdoZXJlIGEgY29uY3VycmVudCBDREMgcmVjZWl2ZSBoYW5kbGVyIGNvdWxkIGFjY2VzcyB1bmluaXRpYWxpemVkIG9yIE5VTEwgYnVmZmVyIGRlc2NyaXB0b3JzIGR1cmluZyBjb25uZWN0aW9uIHNldHVwLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgU01DIGxvZ2ljIGFuZCBpcyByZWFjaGFibGUgdmlhIHRoZSBsb29wYmFjayBJU00gZGV2aWNlLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQxMDoxMzoxMS4yNTc4MTg4NzdaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQwNjQ0ODkzOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IGZiNmMzZDJlYTU3Y2E0NWE0NWNlYWNiNDk0NGZlZTQxMmMwNGE3NWZcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFdlZCBKdWwgMTUgMTA6MTM6MTAgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvbmV0L3NtYy9zbWNfY2RjLmMgYi9uZXQvc21jL3NtY19jZGMuY1xcbmluZGV4IDMyZDZkMDNkZjMyMTQ1Li4yY2QwZWU3YjUxYzIyNiAxMDA2NDRcXG4tLS0gYS9uZXQvc21jL3NtY19jZGMuY1xcbisrKyBiL25ldC9zbWMvc21jX2NkYy5jXFxuQEAgLTMzMiw2ICszMzIsNyBAQCBzdGF0aWMgdm9pZCBzbWNfY2RjX21zZ19yZWN2X2FjdGlvbihzdHJ1Y3Qgc21jX3NvY2sgKnNtYyxcXG4ge1xcbiBcXHR1bmlvbiBzbWNfaG9zdF9jdXJzb3IgY29uc19vbGQsIHByb2Rfb2xkO1xcbiBcXHRzdHJ1Y3Qgc21jX2Nvbm5lY3Rpb24gKmNvbm4gPSBcXHUwMDI2c21jLVxcdTAwM2Vjb25uO1xcbitcXHRzdHJ1Y3Qgc21jX2J1Zl9kZXNjICpzbmRidWZfZGVzYztcXG4gXFx0aW50IGRpZmZfY29ucywgZGlmZl9wcm9kLCBkaWZmX3R4O1xcbiBcXG4gXFx0c21jX2N1cnNfY29weShcXHUwMDI2cHJvZF9vbGQsIFxcdTAwMjZjb25uLVxcdTAwM2Vsb2NhbF9yeF9jdHJsLnByb2QsIGNvbm4pO1xcbkBAIC0zNTMsMTIgKzM1NCwyMCBAQCBzdGF0aWMgdm9pZCBzbWNfY2RjX21zZ19yZWN2X2FjdGlvbihzdHJ1Y3Qgc21jX3NvY2sgKnNtYyxcXG4gXFx0XFx0ICogcGVlciBSTUIsIHRoZW4gdXBkYXRlIHR4X2N1cnNfZmluIGFuZCBzbmRidWZfc3BhY2VcXG4gXFx0XFx0ICogaGVyZSBzaW5jZSBwZWVyIGhhcyBhbHJlYWR5IGNvbnN1bWVkIHRoZSBkYXRhLlxcbiBcXHRcXHQgKi9cXG4rXFx0XFx0LyogUGFpciB3aXRoIHNtcF9zdG9yZV9yZWxlYXNlKCkgaW4gc21jZF9idWZfYXR0YWNoKCk6IHRoZSBnaG9zdFxcbitcXHRcXHQgKiBzbmRidWZfZGVzYyBpcyBhdHRhY2hlZCBhZnRlciB0aGUgY29ubmVjdGlvbiBpcyByZWFjaGFibGUgdG9cXG4rXFx0XFx0ICogdGhlIElTTSBkZXZpY2UsIHNvIGFjcXVpcmUgaXQgYW5kIHNraXAgdGhlIHVwZGF0ZSB3aGlsZSBpdCBpc1xcbitcXHRcXHQgKiB1bnNldCAtLSBhdm9pZHMgYSBOVUxMIGRlcmVmIGFuZCBhIGxvYWQgb2YgYW4gdW5pbml0aWFsaXNlZFxcbitcXHRcXHQgKiBidWZmZXIuXFxuK1xcdFxcdCAqL1xcbitcXHRcXHRzbmRidWZfZGVzYyA9IHNtcF9sb2FkX2FjcXVpcmUoXFx1MDAyNmNvbm4tXFx1MDAzZXNuZGJ1Zl9kZXNjKTtcXG4gXFx0XFx0aWYgKGNvbm4tXFx1MDAzZWxnci1cXHUwMDNlaXNfc21jZCBcXHUwMDI2XFx1MDAyNlxcbi1cXHRcXHQgICAgc21jX2lzbV9zdXBwb3J0X2RtYl9ub2NvcHkoY29ubi1cXHUwMDNlbGdyLVxcdTAwM2VzbWNkKSkge1xcbitcXHRcXHQgICAgc21jX2lzbV9zdXBwb3J0X2RtYl9ub2NvcHkoY29ubi1cXHUwMDNlbGdyLVxcdTAwM2VzbWNkKSBcXHUwMDI2XFx1MDAyNlxcbitcXHRcXHQgICAgc25kYnVmX2Rlc2MpIHtcXG4gXFx0XFx0XFx0LyogQ2FsY3VsYXRlIGNvbnN1bWVkIGRhdGEgYW5kXFxuIFxcdFxcdFxcdCAqIGluY3JlbWVudCBmcmVlIHNlbmQgYnVmZmVyIHNwYWNlLlxcbiBcXHRcXHRcXHQgKi9cXG4tXFx0XFx0XFx0ZGlmZl90eCA9IHNtY19jdXJzX2RpZmYoY29ubi1cXHUwMDNlc25kYnVmX2Rlc2MtXFx1MDAzZWxlbixcXG4rXFx0XFx0XFx0ZGlmZl90eCA9IHNtY19jdXJzX2RpZmYoc25kYnVmX2Rlc2MtXFx1MDAzZWxlbixcXG4gXFx0XFx0XFx0XFx0XFx0XFx0XFx1MDAyNmNvbm4tXFx1MDAzZXR4X2N1cnNfZmluLFxcbiBcXHRcXHRcXHRcXHRcXHRcXHRcXHUwMDI2Y29ubi1cXHUwMDNlbG9jYWxfcnhfY3RybC5jb25zKTtcXG4gXFx0XFx0XFx0LyogaW5jcmVhc2UgbG9jYWwgc25kYnVmIHNwYWNlIGFuZCBmaW5fY3VycyAqL1xcbkBAIC00NDMsMTMgKzQ1MiwyMSBAQCBzdGF0aWMgdm9pZCBzbWNkX2NkY19yeF90c2tsZXQoc3RydWN0IHRhc2tsZXRfc3RydWN0ICp0KVxcbiB7XFxuIFxcdHN0cnVjdCBzbWNfY29ubmVjdGlvbiAqY29ubiA9IGZyb21fdGFza2xldChjb25uLCB0LCByeF90c2tsZXQpO1xcbiBcXHRzdHJ1Y3Qgc21jZF9jZGNfbXNnICpkYXRhX2NkYztcXG4rXFx0c3RydWN0IHNtY19idWZfZGVzYyAqcm1iX2Rlc2M7XFxuIFxcdHN0cnVjdCBzbWNkX2NkY19tc2cgY2RjO1xcbiBcXHRzdHJ1Y3Qgc21jX3NvY2sgKnNtYztcXG4gXFxuIFxcdGlmICghY29ubiB8fCBjb25uLVxcdTAwM2VraWxsZWQpXFxuIFxcdFxcdHJldHVybjtcXG4rXFx0LyogUGFpciB3aXRoIHNtcF9zdG9yZV9yZWxlYXNlKCkgaW4gX19zbWNfYnVmX2NyZWF0ZSgpOiB0aGUgY29ubmVjdGlvblxcbitcXHQgKiBpcyBwdWJsaXNoZWQgYmVmb3JlIGl0cyBSTUIgaXMgYWxsb2NhdGVkLCBzbyBiYWlsIHdoaWxlIHJtYl9kZXNjIGlzXFxuK1xcdCAqIHVuc2V0IHRvIGF2b2lkIGEgTlVMTCBkZXJlZiBhbmQgYSBsb2FkIG9mIGFuIHVuaW5pdGlhbGlzZWQgYnVmZmVyLlxcbitcXHQgKi9cXG4rXFx0cm1iX2Rlc2MgPSBzbXBfbG9hZF9hY3F1aXJlKFxcdTAwMjZjb25uLVxcdTAwM2VybWJfZGVzYyk7XFxuK1xcdGlmICghcm1iX2Rlc2MpXFxuK1xcdFxcdHJldHVybjtcXG4gXFxuLVxcdGRhdGFfY2RjID0gKHN0cnVjdCBzbWNkX2NkY19tc2cgKiljb25uLVxcdTAwM2VybWJfZGVzYy1cXHUwMDNlY3B1X2FkZHI7XFxuK1xcdGRhdGFfY2RjID0gKHN0cnVjdCBzbWNkX2NkY19tc2cgKilybWJfZGVzYy1cXHUwMDNlY3B1X2FkZHI7XFxuIFxcdHNtY2RfY3Vyc19jb3B5KFxcdTAwMjZjZGMucHJvZCwgXFx1MDAyNmRhdGFfY2RjLVxcdTAwM2Vwcm9kLCBjb25uKTtcXG4gXFx0c21jZF9jdXJzX2NvcHkoXFx1MDAyNmNkYy5jb25zLCBcXHUwMDI2ZGF0YV9jZGMtXFx1MDAzZWNvbnMsIGNvbm4pO1xcbiBcXHRzbWMgPSBjb250YWluZXJfb2YoY29ubiwgc3RydWN0IHNtY19zb2NrLCBjb25uKTtcXG5AQCAtNDgzLDcgKzUwMCwxMSBAQCBzdGF0aWMgdm9pZCBzbWNfY2RjX3J4X2hhbmRsZXIoc3RydWN0IGliX3djICp3Yywgdm9pZCAqYnVmKVxcbiBcXHRsZ3IgPSBzbWNfZ2V0X2xncihsaW5rKTtcXG4gXFx0cmVhZF9sb2NrX2JoKFxcdTAwMjZsZ3ItXFx1MDAzZWNvbm5zX2xvY2spO1xcbiBcXHRjb25uID0gc21jX2xncl9maW5kX2Nvbm4obnRvaGwoY2RjLVxcdTAwM2V0b2tlbiksIGxncik7XFxuLVxcdGlmICghY29ubiB8fCBjb25uLVxcdTAwM2VvdXRfb2Zfc3luYykge1xcbitcXHQvKiBQYWlyIHdpdGggc21wX3N0b3JlX3JlbGVhc2UoKSBpbiBfX3NtY19idWZfY3JlYXRlKCk6IGJhaWwgd2hpbGUgdGhlXFxuK1xcdCAqIFJNQiBpcyB1bnNldCAoc21jX2NkY19tc2dfcmVjdl9hY3Rpb24oKSBkZXJlZmVyZW5jZXMgaXQpIHRvIGF2b2lkIGFcXG4rXFx0ICogTlVMTCBkZXJlZiBhbmQgYSBzdGFsZS1idWZmZXIgcmVhZCBpbiB0aGUgY29ubmVjdGlvbiBzZXR1cCB3aW5kb3cuXFxuK1xcdCAqL1xcbitcXHRpZiAoIWNvbm4gfHwgY29ubi1cXHUwMDNlb3V0X29mX3N5bmMgfHwgIXNtcF9sb2FkX2FjcXVpcmUoXFx1MDAyNmNvbm4tXFx1MDAzZXJtYl9kZXNjKSkge1xcbiBcXHRcXHRyZWFkX3VubG9ja19iaChcXHUwMDI2bGdyLVxcdTAwM2Vjb25uc19sb2NrKTtcXG4gXFx0XFx0cmV0dXJuO1xcbiBcXHR9XFxuZGlmZiAtLWdpdCBhL25ldC9zbWMvc21jX2NvcmUuYyBiL25ldC9zbWMvc21jX2NvcmUuY1xcbmluZGV4IGNmNmI2MjBmZWYwNWY5Li5kOTRiNzI4YzBkNjhjNyAxMDA2NDRcXG4tLS0gYS9uZXQvc21jL3NtY19jb3JlLmNcXG4rKysgYi9uZXQvc21jL3NtY19jb3JlLmNcXG5AQCAtMjQ5OSw3ICsyNDk5LDEzIEBAIHN0YXRpYyBpbnQgX19zbWNfYnVmX2NyZWF0ZShzdHJ1Y3Qgc21jX3NvY2sgKnNtYywgYm9vbCBpc19zbWNkLCBib29sIGlzX3JtYilcXG4gXFx0fVxcbiBcXG4gXFx0aWYgKGlzX3JtYikge1xcbi1cXHRcXHRjb25uLVxcdTAwM2VybWJfZGVzYyA9IGJ1Zl9kZXNjO1xcbitcXHRcXHQvKiBQdWJsaXNoIHdpdGggcmVsZWFzZSBzZW1hbnRpY3M6IHRoZSBjb25uZWN0aW9uIGlzIGFscmVhZHkgaW5cXG4rXFx0XFx0ICogdGhlIGxpbmsgZ3JvdXAncyB0b2tlbiB0cmVlLCBzbyBhIGNvbmN1cnJlbnQgQ0RDIHJlY2VpdmVcXG4rXFx0XFx0ICogaGFuZGxlciBtdXN0IG9ic2VydmUgYSBmdWxseSBpbml0aWFsaXNlZCBidWZmZXIgb25jZSBpdCBzZWVzXFxuK1xcdFxcdCAqIGEgbm9uLU5VTEwgcm1iX2Rlc2MuICBQYWlycyB3aXRoIHRoZSBzbXBfbG9hZF9hY3F1aXJlKCkgaW5cXG4rXFx0XFx0ICogdGhlIENEQyByZWNlaXZlIHBhdGguXFxuK1xcdFxcdCAqL1xcbitcXHRcXHRzbXBfc3RvcmVfcmVsZWFzZShcXHUwMDI2Y29ubi1cXHUwMDNlcm1iX2Rlc2MsIGJ1Zl9kZXNjKTtcXG4gXFx0XFx0Y29ubi1cXHUwMDNlcm1iZV9zaXplX2NvbXAgPSBidWZzaXplX2NvbXA7XFxuIFxcdFxcdHNtYy1cXHUwMDNlc2suc2tfcmN2YnVmID0gYnVmc2l6ZSAqIDI7XFxuIFxcdFxcdGF0b21pY19zZXQoXFx1MDAyNmNvbm4tXFx1MDAzZWJ5dGVzX3RvX3JjdiwgMCk7XFxuQEAgLTI1OTksNyArMjYwNSwxMyBAQCBpbnQgc21jZF9idWZfYXR0YWNoKHN0cnVjdCBzbWNfc29jayAqc21jKVxcbiBcXHRidWZfZGVzYy1cXHUwMDNlY3B1X2FkZHIgPVxcbiBcXHRcXHQodTggKilidWZfZGVzYy1cXHUwMDNlY3B1X2FkZHIgKyBzaXplb2Yoc3RydWN0IHNtY2RfY2RjX21zZyk7XFxuIFxcdGJ1Zl9kZXNjLVxcdTAwM2VsZW4gLT0gc2l6ZW9mKHN0cnVjdCBzbWNkX2NkY19tc2cpO1xcbi1cXHRjb25uLVxcdTAwM2VzbmRidWZfZGVzYyA9IGJ1Zl9kZXNjO1xcbitcXHQvKiBQdWJsaXNoIHdpdGggcmVsZWFzZSBzZW1hbnRpY3M6IHRoZSBjb25uZWN0aW9uIGlzIGFscmVhZHkgcmVhY2hhYmxlXFxuK1xcdCAqIHRvIHRoZSBJU00gZGV2aWNlIChzbWNfaXNtX3NldF9jb25uKCkgcmFuIGluIF9fc21jX2J1Zl9jcmVhdGUoKSksIHNvXFxuK1xcdCAqIHRoZSBDREMgcmVjZWl2ZSB0YXNrbGV0IG11c3Qgb2JzZXJ2ZSBhIGZ1bGx5IGluaXRpYWxpc2VkIGdob3N0IGJ1ZmZlclxcbitcXHQgKiBvbmNlIGl0IHNlZXMgYSBub24tTlVMTCBzbmRidWZfZGVzYy4gIFBhaXJzIHdpdGggc21wX2xvYWRfYWNxdWlyZSgpXFxuK1xcdCAqIGluIHNtY19jZGNfbXNnX3JlY3ZfYWN0aW9uKCkuXFxuK1xcdCAqL1xcbitcXHRzbXBfc3RvcmVfcmVsZWFzZShcXHUwMDI2Y29ubi1cXHUwMDNlc25kYnVmX2Rlc2MsIGJ1Zl9kZXNjKTtcXG4gXFx0Y29ubi1cXHUwMDNlc25kYnVmX2Rlc2MtXFx1MDAzZXVzZWQgPSAxO1xcbiBcXHRhdG9taWNfc2V0KFxcdTAwMjZjb25uLVxcdTAwM2VzbmRidWZfc3BhY2UsIGNvbm4tXFx1MDAzZXNuZGJ1Zl9kZXNjLVxcdTAwM2VsZW4pO1xcbiBcXHRyZXR1cm4gMDtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTVUMTA6MTM6MTEuNjY1MTczMTA2WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0Njg3NjYzNjg4MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJTTUNcIixcbiAgICBcIkRJQlNcIixcbiAgICBcIkRJQlNfTE9cIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJzbWNfY2RjX21zZ19yZWN2X2FjdGlvblwiLFxuICAgIFwic21jZF9jZGNfcnhfdHNrbGV0XCIsXG4gICAgXCJzbWNfY2RjX3J4X2hhbmRsZXJcIixcbiAgICBcIl9fc21jX2J1Zl9jcmVhdGVcIixcbiAgICBcInNtY2RfYnVmX2F0dGFjaFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgcmFjZSBjb25kaXRpb24gaW4gdGhlIFNNQyBwcm90b2NvbCB3aGVyZSBhIGNvbmN1cnJlbnQgQ0RDIHJlY2VpdmUgaGFuZGxlciBjb3VsZCBhY2Nlc3MgdW5pbml0aWFsaXplZCBvciBOVUxMIGJ1ZmZlciBkZXNjcmlwdG9ycyBkdXJpbmcgY29ubmVjdGlvbiBzZXR1cC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIFNNQyBsb2dpYyBhbmQgaXMgcmVhY2hhYmxlIHZpYSB0aGUgbG9vcGJhY2sgSVNNIGRldmljZS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdFxuICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LFxuICAgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCBmYjZjM2QyZWE1N2NhNDVhNDVjZWFjYjQ5NDRmZWU0MTJjMDRhNzVmXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFdlZCBKdWwgMTUgMTA6MTM6MTAgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9uZXQvc21jL3NtY19jZGMuYyBiL25ldC9zbWMvc21jX2NkYy5jXG5pbmRleCAzMmQ2ZDAzZGYzMjE0NS4uMmNkMGVlN2I1MWMyMjYgMTAwNjQ0XG4tLS0gYS9uZXQvc21jL3NtY19jZGMuY1xuKysrIGIvbmV0L3NtYy9zbWNfY2RjLmNcbkBAIC0zMzIsNiArMzMyLDcgQEAgc3RhdGljIHZvaWQgc21jX2NkY19tc2dfcmVjdl9hY3Rpb24oc3RydWN0IHNtY19zb2NrICpzbWMsXG4ge1xuIFx0dW5pb24gc21jX2hvc3RfY3Vyc29yIGNvbnNfb2xkLCBwcm9kX29sZDtcbiBcdHN0cnVjdCBzbWNfY29ubmVjdGlvbiAqY29ubiA9IFx1MDAyNnNtYy1cdTAwM2Vjb25uO1xuK1x0c3RydWN0IHNtY19idWZfZGVzYyAqc25kYnVmX2Rlc2M7XG4gXHRpbnQgZGlmZl9jb25zLCBkaWZmX3Byb2QsIGRpZmZfdHg7XG4gXG4gXHRzbWNfY3Vyc19jb3B5KFx1MDAyNnByb2Rfb2xkLCBcdTAwMjZjb25uLVx1MDAzZWxvY2FsX3J4X2N0cmwucHJvZCwgY29ubik7XG5AQCAtMzUzLDEyICszNTQsMjAgQEAgc3RhdGljIHZvaWQgc21jX2NkY19tc2dfcmVjdl9hY3Rpb24oc3RydWN0IHNtY19zb2NrICpzbWMsXG4gXHRcdCAqIHBlZXIgUk1CLCB0aGVuIHVwZGF0ZSB0eF9jdXJzX2ZpbiBhbmQgc25kYnVmX3NwYWNlXG4gXHRcdCAqIGhlcmUgc2luY2UgcGVlciBoYXMgYWxyZWFkeSBjb25zdW1lZCB0aGUgZGF0YS5cbiBcdFx0ICovXG4rXHRcdC8qIFBhaXIgd2l0aCBzbXBfc3RvcmVfcmVsZWFzZSgpIGluIHNtY2RfYnVmX2F0dGFjaCgpOiB0aGUgZ2hvc3RcbitcdFx0ICogc25kYnVmX2Rlc2MgaXMgYXR0YWNoZWQgYWZ0ZXIgdGhlIGNvbm5lY3Rpb24gaXMgcmVhY2hhYmxlIHRvXG4rXHRcdCAqIHRoZSBJU00gZGV2aWNlLCBzbyBhY3F1aXJlIGl0IGFuZCBza2lwIHRoZSB1cGRhdGUgd2hpbGUgaXQgaXNcbitcdFx0ICogdW5zZXQgLS0gYXZvaWRzIGEgTlVMTCBkZXJlZiBhbmQgYSBsb2FkIG9mIGFuIHVuaW5pdGlhbGlzZWRcbitcdFx0ICogYnVmZmVyLlxuK1x0XHQgKi9cbitcdFx0c25kYnVmX2Rlc2MgPSBzbXBfbG9hZF9hY3F1aXJlKFx1MDAyNmNvbm4tXHUwMDNlc25kYnVmX2Rlc2MpO1xuIFx0XHRpZiAoY29ubi1cdTAwM2VsZ3ItXHUwMDNlaXNfc21jZCBcdTAwMjZcdTAwMjZcbi1cdFx0ICAgIHNtY19pc21fc3VwcG9ydF9kbWJfbm9jb3B5KGNvbm4tXHUwMDNlbGdyLVx1MDAzZXNtY2QpKSB7XG4rXHRcdCAgICBzbWNfaXNtX3N1cHBvcnRfZG1iX25vY29weShjb25uLVx1MDAzZWxnci1cdTAwM2VzbWNkKSBcdTAwMjZcdTAwMjZcbitcdFx0ICAgIHNuZGJ1Zl9kZXNjKSB7XG4gXHRcdFx0LyogQ2FsY3VsYXRlIGNvbnN1bWVkIGRhdGEgYW5kXG4gXHRcdFx0ICogaW5jcmVtZW50IGZyZWUgc2VuZCBidWZmZXIgc3BhY2UuXG4gXHRcdFx0ICovXG4tXHRcdFx0ZGlmZl90eCA9IHNtY19jdXJzX2RpZmYoY29ubi1cdTAwM2VzbmRidWZfZGVzYy1cdTAwM2VsZW4sXG4rXHRcdFx0ZGlmZl90eCA9IHNtY19jdXJzX2RpZmYoc25kYnVmX2Rlc2MtXHUwMDNlbGVuLFxuIFx0XHRcdFx0XHRcdFx1MDAyNmNvbm4tXHUwMDNldHhfY3Vyc19maW4sXG4gXHRcdFx0XHRcdFx0XHUwMDI2Y29ubi1cdTAwM2Vsb2NhbF9yeF9jdHJsLmNvbnMpO1xuIFx0XHRcdC8qIGluY3JlYXNlIGxvY2FsIHNuZGJ1ZiBzcGFjZSBhbmQgZmluX2N1cnMgKi9cbkBAIC00NDMsMTMgKzQ1MiwyMSBAQCBzdGF0aWMgdm9pZCBzbWNkX2NkY19yeF90c2tsZXQoc3RydWN0IHRhc2tsZXRfc3RydWN0ICp0KVxuIHtcbiBcdHN0cnVjdCBzbWNfY29ubmVjdGlvbiAqY29ubiA9IGZyb21fdGFza2xldChjb25uLCB0LCByeF90c2tsZXQpO1xuIFx0c3RydWN0IHNtY2RfY2RjX21zZyAqZGF0YV9jZGM7XG4rXHRzdHJ1Y3Qgc21jX2J1Zl9kZXNjICpybWJfZGVzYztcbiBcdHN0cnVjdCBzbWNkX2NkY19tc2cgY2RjO1xuIFx0c3RydWN0IHNtY19zb2NrICpzbWM7XG4gXG4gXHRpZiAoIWNvbm4gfHwgY29ubi1cdTAwM2VraWxsZWQpXG4gXHRcdHJldHVybjtcbitcdC8qIFBhaXIgd2l0aCBzbXBfc3RvcmVfcmVsZWFzZSgpIGluIF9fc21jX2J1Zl9jcmVhdGUoKTogdGhlIGNvbm5lY3Rpb25cbitcdCAqIGlzIHB1Ymxpc2hlZCBiZWZvcmUgaXRzIFJNQiBpcyBhbGxvY2F0ZWQsIHNvIGJhaWwgd2hpbGUgcm1iX2Rlc2MgaXNcbitcdCAqIHVuc2V0IHRvIGF2b2lkIGEgTlVMTCBkZXJlZiBhbmQgYSBsb2FkIG9mIGFuIHVuaW5pdGlhbGlzZWQgYnVmZmVyLlxuK1x0ICovXG4rXHRybWJfZGVzYyA9IHNtcF9sb2FkX2FjcXVpcmUoXHUwMDI2Y29ubi1cdTAwM2VybWJfZGVzYyk7XG4rXHRpZiAoIXJtYl9kZXNjKVxuK1x0XHRyZXR1cm47XG4gXG4tXHRkYXRhX2NkYyA9IChzdHJ1Y3Qgc21jZF9jZGNfbXNnICopY29ubi1cdTAwM2VybWJfZGVzYy1cdTAwM2VjcHVfYWRkcjtcbitcdGRhdGFfY2RjID0gKHN0cnVjdCBzbWNkX2NkY19tc2cgKilybWJfZGVzYy1cdTAwM2VjcHVfYWRkcjtcbiBcdHNtY2RfY3Vyc19jb3B5KFx1MDAyNmNkYy5wcm9kLCBcdTAwMjZkYXRhX2NkYy1cdTAwM2Vwcm9kLCBjb25uKTtcbiBcdHNtY2RfY3Vyc19jb3B5KFx1MDAyNmNkYy5jb25zLCBcdTAwMjZkYXRhX2NkYy1cdTAwM2Vjb25zLCBjb25uKTtcbiBcdHNtYyA9IGNvbnRhaW5lcl9vZihjb25uLCBzdHJ1Y3Qgc21jX3NvY2ssIGNvbm4pO1xuQEAgLTQ4Myw3ICs1MDAsMTEgQEAgc3RhdGljIHZvaWQgc21jX2NkY19yeF9oYW5kbGVyKHN0cnVjdCBpYl93YyAqd2MsIHZvaWQgKmJ1ZilcbiBcdGxnciA9IHNtY19nZXRfbGdyKGxpbmspO1xuIFx0cmVhZF9sb2NrX2JoKFx1MDAyNmxnci1cdTAwM2Vjb25uc19sb2NrKTtcbiBcdGNvbm4gPSBzbWNfbGdyX2ZpbmRfY29ubihudG9obChjZGMtXHUwMDNldG9rZW4pLCBsZ3IpO1xuLVx0aWYgKCFjb25uIHx8IGNvbm4tXHUwMDNlb3V0X29mX3N5bmMpIHtcbitcdC8qIFBhaXIgd2l0aCBzbXBfc3RvcmVfcmVsZWFzZSgpIGluIF9fc21jX2J1Zl9jcmVhdGUoKTogYmFpbCB3aGlsZSB0aGVcbitcdCAqIFJNQiBpcyB1bnNldCAoc21jX2NkY19tc2dfcmVjdl9hY3Rpb24oKSBkZXJlZmVyZW5jZXMgaXQpIHRvIGF2b2lkIGFcbitcdCAqIE5VTEwgZGVyZWYgYW5kIGEgc3RhbGUtYnVmZmVyIHJlYWQgaW4gdGhlIGNvbm5lY3Rpb24gc2V0dXAgd2luZG93LlxuK1x0ICovXG4rXHRpZiAoIWNvbm4gfHwgY29ubi1cdTAwM2VvdXRfb2Zfc3luYyB8fCAhc21wX2xvYWRfYWNxdWlyZShcdTAwMjZjb25uLVx1MDAzZXJtYl9kZXNjKSkge1xuIFx0XHRyZWFkX3VubG9ja19iaChcdTAwMjZsZ3ItXHUwMDNlY29ubnNfbG9jayk7XG4gXHRcdHJldHVybjtcbiBcdH1cbmRpZmYgLS1naXQgYS9uZXQvc21jL3NtY19jb3JlLmMgYi9uZXQvc21jL3NtY19jb3JlLmNcbmluZGV4IGNmNmI2MjBmZWYwNWY5Li5kOTRiNzI4YzBkNjhjNyAxMDA2NDRcbi0tLSBhL25ldC9zbWMvc21jX2NvcmUuY1xuKysrIGIvbmV0L3NtYy9zbWNfY29yZS5jXG5AQCAtMjQ5OSw3ICsyNDk5LDEzIEBAIHN0YXRpYyBpbnQgX19zbWNfYnVmX2NyZWF0ZShzdHJ1Y3Qgc21jX3NvY2sgKnNtYywgYm9vbCBpc19zbWNkLCBib29sIGlzX3JtYilcbiBcdH1cbiBcbiBcdGlmIChpc19ybWIpIHtcbi1cdFx0Y29ubi1cdTAwM2VybWJfZGVzYyA9IGJ1Zl9kZXNjO1xuK1x0XHQvKiBQdWJsaXNoIHdpdGggcmVsZWFzZSBzZW1hbnRpY3M6IHRoZSBjb25uZWN0aW9uIGlzIGFscmVhZHkgaW5cbitcdFx0ICogdGhlIGxpbmsgZ3JvdXAncyB0b2tlbiB0cmVlLCBzbyBhIGNvbmN1cnJlbnQgQ0RDIHJlY2VpdmVcbitcdFx0ICogaGFuZGxlciBtdXN0IG9ic2VydmUgYSBmdWxseSBpbml0aWFsaXNlZCBidWZmZXIgb25jZSBpdCBzZWVzXG4rXHRcdCAqIGEgbm9uLU5VTEwgcm1iX2Rlc2MuICBQYWlycyB3aXRoIHRoZSBzbXBfbG9hZF9hY3F1aXJlKCkgaW5cbitcdFx0ICogdGhlIENEQyByZWNlaXZlIHBhdGguXG4rXHRcdCAqL1xuK1x0XHRzbXBfc3RvcmVfcmVsZWFzZShcdTAwMjZjb25uLVx1MDAzZXJtYl9kZXNjLCBidWZfZGVzYyk7XG4gXHRcdGNvbm4tXHUwMDNlcm1iZV9zaXplX2NvbXAgPSBidWZzaXplX2NvbXA7XG4gXHRcdHNtYy1cdTAwM2Vzay5za19yY3ZidWYgPSBidWZzaXplICogMjtcbiBcdFx0YXRvbWljX3NldChcdTAwMjZjb25uLVx1MDAzZWJ5dGVzX3RvX3JjdiwgMCk7XG5AQCAtMjU5OSw3ICsyNjA1LDEzIEBAIGludCBzbWNkX2J1Zl9hdHRhY2goc3RydWN0IHNtY19zb2NrICpzbWMpXG4gXHRidWZfZGVzYy1cdTAwM2VjcHVfYWRkciA9XG4gXHRcdCh1OCAqKWJ1Zl9kZXNjLVx1MDAzZWNwdV9hZGRyICsgc2l6ZW9mKHN0cnVjdCBzbWNkX2NkY19tc2cpO1xuIFx0YnVmX2Rlc2MtXHUwMDNlbGVuIC09IHNpemVvZihzdHJ1Y3Qgc21jZF9jZGNfbXNnKTtcbi1cdGNvbm4tXHUwMDNlc25kYnVmX2Rlc2MgPSBidWZfZGVzYztcbitcdC8qIFB1Ymxpc2ggd2l0aCByZWxlYXNlIHNlbWFudGljczogdGhlIGNvbm5lY3Rpb24gaXMgYWxyZWFkeSByZWFjaGFibGVcbitcdCAqIHRvIHRoZSBJU00gZGV2aWNlIChzbWNfaXNtX3NldF9jb25uKCkgcmFuIGluIF9fc21jX2J1Zl9jcmVhdGUoKSksIHNvXG4rXHQgKiB0aGUgQ0RDIHJlY2VpdmUgdGFza2xldCBtdXN0IG9ic2VydmUgYSBmdWxseSBpbml0aWFsaXNlZCBnaG9zdCBidWZmZXJcbitcdCAqIG9uY2UgaXQgc2VlcyBhIG5vbi1OVUxMIHNuZGJ1Zl9kZXNjLiAgUGFpcnMgd2l0aCBzbXBfbG9hZF9hY3F1aXJlKClcbitcdCAqIGluIHNtY19jZGNfbXNnX3JlY3ZfYWN0aW9uKCkuXG4rXHQgKi9cbitcdHNtcF9zdG9yZV9yZWxlYXNlKFx1MDAyNmNvbm4tXHUwMDNlc25kYnVmX2Rlc2MsIGJ1Zl9kZXNjKTtcbiBcdGNvbm4tXHUwMDNlc25kYnVmX2Rlc2MtXHUwMDNldXNlZCA9IDE7XG4gXHRhdG9taWNfc2V0KFx1MDAyNmNvbm4tXHUwMDNlc25kYnVmX3NwYWNlLCBjb25uLVx1MDAzZXNuZGJ1Zl9kZXNjLVx1MDAzZWxlbik7XG4gXHRyZXR1cm4gMDtcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDEwOjEzOjExLjY2NTE3NDYyNloiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjUxMjYzNDI3NjIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBTTUMgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ3ZlIGdvdCBhIHBhdGNoIGhlcmUgdGhhdCdzIHRvdWNoaW5nIGBuZXQvc21jL3NtY19jZGMuY2AgYW5kIGBuZXQvc21jL3NtY19jb3JlLmNgIOKAkyB0aGF0J3MgYSBrZXkgYXJlYSBmb3IgdGhlIFNoYXJlZCBNZW1vcnkgQ29tbXVuaWNhdGlvbnMgcHJvdG9jb2wuIFRoZSBtYWluIGZvY3VzIHNlZW1zIHRvIGJlIGFyb3VuZCB0aG9zZSBtZW1vcnkgYmFycmllcnMsIGBzbXBfbG9hZF9hY3F1aXJlYCBhbmQgYHNtcF9zdG9yZV9yZWxlYXNlYCwgd2hpY2ggaXMgY2xhc3NpYy4gVGhleSdyZSBiZWluZyBwbGFjZWQgYXJvdW5kIGFjY2VzcyB0byBgY29ubi1cdTAwM2VybWJfZGVzY2AgYW5kIGBjb25uLVx1MDAzZXNuZGJ1Zl9kZXNjYC4gVGhlIGdvYWwgaXMgY2xlYXJseSB0byBhdm9pZCBwb3RlbnRpYWwgTlVMTCBwb2ludGVyIGRlcmVmZXJlbmNlcyBhbmQgcHJldmVudCB0aG9zZSBuYXN0eSB1bmluaXRpYWxpemVkIGJ1ZmZlciByZWFkcywgd2hpY2ggSSd2ZSBzZWVuIGNhdXNlIGVub3VnaCBwcm9ibGVtcyBpbiB0aGUgcGFzdC4gSXQncyBhIGZ1bmN0aW9uYWwgY2hhbmdlLCBub3QgYSBuZXcgZmVhdHVyZSwgYnV0IG5lY2Vzc2FyeSBmb3IgY29ycmVjdG5lc3MuXG5cbkZpcnN0IHRoaW5ncyBmaXJzdDogSXMgU01DIGV2ZW4gZW5hYmxlZD8gSSBuZWVkIHRvIGNoZWNrIHRoZSBidWlsZCBjb25maWd1cmF0aW9uLiBgQ09ORklHX1NNQ2Agc2hvdWxkIGJlIHRoZSBmbGFnLiBJJ2xsIG1ha2UgYSBub3RlIHRvIGNvbmZpcm0gdGhhdC5cblxuTm93LCBsZXQncyBnZXQgaW50byB0aGUgY29kZSBpdHNlbGYuIEknbGwgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBpbXBhY3Qgb2YgdGhlc2UgYmFycmllcnMuIEJhc2VkIG9uIHRoZSBwYXRjaCwgaXQgbG9va3MgbGlrZSB0aGVzZSBhcmUgdGhlIGZ1bmN0aW9ucyB0aGF0IHdpbGwgbmVlZCBjbG9zZXIgaW5zcGVjdGlvbjogYHNtY19jZGNfbXNnX3JlY3ZfYWN0aW9uYCwgYHNtY2RfY2RjX3J4X3Rza2xldGAsIGBzbWNfY2RjX3J4X2hhbmRsZXJgLCBgX19zbWNfYnVmX2NyZWF0ZWAsIGFuZCBgc21jZF9idWZfYXR0YWNoYC4gSSdsbCBuZWVkIHRvIHRyYWNlIHRoZSBkYXRhIGZsb3cgdGhyb3VnaCB0aG9zZSBhbmQgc2VlIGV4YWN0bHkgd2hlcmUgdGhlc2UgbWVtb3J5IGJhcnJpZXIgY2hhbmdlcyBhcmUgY3JpdGljYWwuIEknbSBnb2luZyB0byB0cmFjayBkb3duIHdoYXQgdGhlIHJlbGV2YW50IGNvbmZpZ3MgYXJlIHRvIHNlZSB3aGF0IHBhcnRzIG9mIHRoZSBTTUMgc3RhY2sgYXJlIGFjdHVhbGx5IGJlaW5nIG1vZGlmaWVkLlxuXG5UaGlzIGFsbCBwb2ludHMgdG8gZW5zdXJpbmcgZGF0YSBjb25zaXN0ZW5jeSBiZXR3ZWVuIHRoZSBjb3JlcyBkdXJpbmcgY29tbXVuaWNhdGlvbi4gVGltZSB0byBkaXZlIGludG8gdGhlc2Ugc3BlY2lmaWMgZnVuY3Rpb25zIGFuZCB1bmRlcnN0YW5kIHRoZSBjb250ZXh0IGJldHRlci5cblxuXG4iLCJJbnB1dFRva2VucyI6MzQzNywiT3V0cHV0VG9rZW5zIjoyOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI1OSwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDEwOjEzOjE2Ljc5MTUxOTMyOFoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2Mjg5ODUxNSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgU01DXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9zbWMvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvc21jL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG5uZXQvc21jL0tjb25maWc6Mjpjb25maWcgU01DXFxubmV0L3NtYy9LY29uZmlnLTMtXFx0dHJpc3RhdGUgXFxcIlNNQyBzb2NrZXQgcHJvdG9jb2wgZmFtaWx5XFxcIlxcbi0tXFxubmV0L3NtYy9LY29uZmlnLTEzLVxcbm5ldC9zbWMvS2NvbmZpZzoxNDpjb25maWcgU01DX0RJQUdcXG5uZXQvc21jL0tjb25maWctMTUtXFx0dHJpc3RhdGUgXFxcIlNNQzogc29ja2V0IG1vbml0b3JpbmcgaW50ZXJmYWNlXFxcIlxcbi0tXFxubmV0L3NtYy9LY29uZmlnLTIyLVxcbm5ldC9zbWMvS2NvbmZpZzoyMzpjb25maWcgU01DX0hTX0NUUkxfQlBGXFxubmV0L3NtYy9LY29uZmlnLTI0LVxcdGJvb2wgXFxcIkdlbmVyaWMgZUJQRiBob29rIGZvciBTTUMgaGFuZHNoYWtlIGZsb3dcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDEwOjEzOjE2Ljg1NDQyNTE1M1oiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM4NTkyOTk3NjgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBicmVha2Rvd24gb2YgdGhpcy5cblxuKipJbnZlc3RpZ2F0aW5nIFNNQyBDYXBhYmlsaXRpZXMgYW5kIEltcGxlbWVudGF0aW9uKipcblxuUmlnaHQsIHNvIHdlJ3JlIGxvb2tpbmcgYXQgU01DLCB3aGljaCBpcyBkZWZpbmVkIGFzIGBDT05GSUdfU01DYC4gTXkgZmlyc3QgaW5zdGluY3QgaXMgdG8gdW5kZXJzdGFuZCBpdHMgdW5kZXJseWluZyBoYXJkd2FyZSByZXF1aXJlbWVudHMuIENhbiB3ZSBnZXQgYXdheSB3aXRoIGVtdWxhdGlvbiwgb3IgaXMgZGVkaWNhdGVkIGhhcmR3YXJlIGVzc2VudGlhbCBmb3IgaXRzIGZ1bmN0aW9uYWxpdHk/IFRoZSBrZXkgcXVlc3Rpb24gaXMgd2hldGhlciB3ZSBjYW4gZWZmZWN0aXZlbHkgc2ltdWxhdGUgdGhpcyBmb3IgdGVzdGluZyBvciBpbiBlbnZpcm9ubWVudHMgd2l0aG91dCBzcGVjaWZpYyBoYXJkd2FyZSBzdXBwb3J0LlxuXG5Gcm9tIHRoZSBpbmZvcm1hdGlvbiwgSSBzZWUgdGhhdCBTTUMgb3BlcmF0ZXMgaW4gdHdvIHByaW1hcnkgZmxhdm9yczogU01DLVIsIHdoaWNoIGxldmVyYWdlcyBSRE1BLCBhbmQgU01DLUQsIHdoaWNoIHV0aWxpemVzIElTTSAoSW5maW5pQmFuZCBTaGFyZWQgTWVtb3J5KS4gTm93LCBoZXJlJ3Mgd2hlcmUgdGhpbmdzIGdldCBpbnRlcmVzdGluZzogU01DLUQgb2ZmZXJzIGEgdGFudGFsaXppbmcgcG9zc2liaWxpdHkuIEl0IGNhbiB1dGlsaXplIGEgXCJkdW1teVwiIG9yIGxvb3BiYWNrIElTTSBkZXZpY2UuIFRoaXMgaXMgYnJpbGxpYW50OyBpdCBvcGVucyBkb29ycyBmb3IgdGVzdGluZyBhbmQgZGV2ZWxvcG1lbnQgaW4gYSBtb3JlIGdlbmVyYWxpemVkIGVudmlyb25tZW50LiBJIHNob3VsZCBkZWZpbml0ZWx5IGNoZWNrIHRoZSBrZXJuZWwgc291cmNlIGNvZGUgdG8gZXhhbWluZSB0aGUgbG9vcGJhY2sgSVNNIGltcGxlbWVudGF0aW9uLiBJJ20gZ29pbmcgdG8gbG9vayBhdCBgbmV0L3NtYy9zbWNfbG9vcGJhY2suY2Agb3Igc29tZXRoaW5nIGFuYWxvZ291cy4gVGhpcyBzaG91bGQgdGVsbCBtZSBldmVyeXRoaW5nIEkgbmVlZCB0byBrbm93IGFib3V0IHRoZSBzb2Z0d2FyZSBlbXVsYXRpb24gYW5kIGl0cyBwb3RlbnRpYWwgbGltaXRhdGlvbnMgb3IgZmVhdHVyZXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQyODYsIk91dHB1dFRva2VucyI6MzEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo5NCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQxMDoxMzoyMC43MTM3MjY1ODFaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzM3OTM2ODc0LCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJTTUNfTE9cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L3NtYy9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQxMDoxMzoyMS4wNTE2NzEzMTVaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyODEwODk4ODU3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkludmVzdGlnYXRpbmcgdGhlIFNNQyBTdWJzeXN0ZW0qKlxuXG5Pa2F5LCBmaXJzdCB0aGluZ3MgZmlyc3QsIEkgbmVlZCB0byBnZXQgYSBjbGVhciBwaWN0dXJlIG9mIHdoYXQncyBnb2luZyBvbi4gTGV0J3Mgc3RhcnQgd2l0aCBhIHN5c3RlbWF0aWMgYXBwcm9hY2guIFRoZSBpbml0aWFsIGluc3RpbmN0IGlzIHRvIGRyaWxsIGRvd24gaW50byB0aGUgbmV0d29ya2luZyBzdWJzeXN0ZW0uIFRoYXQgdXN1YWxseSBnaXZlcyBtZSBhIGdvb2Qgb3ZlcnZpZXcgb2YgaG93IHRoaW5ncyBhcmUgd29ya2luZy4gU28sIG15IGZvY3VzIHdpbGwgYmUgdGhlIGBuZXQvc21jL2AgZGlyZWN0b3J5LiBUaGF0J3MgdGhlIGxvZ2ljYWwgcGxhY2UgdG8gYmVnaW4gcG9raW5nIGFyb3VuZCBmb3IgYW55IFN5c3RlbSBNYW5hZ2VtZW50IENvbnRyb2xsZXIgcmVsYXRlZCBhY3Rpdml0eSBvciBob29rcyBpbnRvIG5ldHdvcmsgZnVuY3Rpb25hbGl0eS4gVGhpcyBzZWVtcyBsaWtlIGEgcmVhc29uYWJsZSBpbml0aWFsIGNoZWNrIGJlZm9yZSBtb3Zpbmcgb250byBkZWVwZXIgYXNwZWN0cyBvZiB0aGUgc3lzdGVtLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0NjYyLCJPdXRwdXRUb2tlbnMiOjIzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTVUMTA6MTM6MjMuODYyNTcyNDUyWiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiY29kZXNlYXJjaC1kaXItaW5kZXgiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo5OTcwMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkRpclwiOiBcIm5ldC9zbWMvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIkZpbGVzXCI6IFtcbiAgICBcImFmX3NtYy5jXCIsXG4gICAgXCJzbWMuaFwiLFxuICAgIFwic21jX2NkYy5jXCIsXG4gICAgXCJzbWNfY2RjLmhcIixcbiAgICBcInNtY19jbGMuY1wiLFxuICAgIFwic21jX2NsYy5oXCIsXG4gICAgXCJzbWNfY2xvc2UuY1wiLFxuICAgIFwic21jX2Nsb3NlLmhcIixcbiAgICBcInNtY19jb3JlLmNcIixcbiAgICBcInNtY19jb3JlLmhcIixcbiAgICBcInNtY19kaWFnLmNcIixcbiAgICBcInNtY19oc19icGYuY1wiLFxuICAgIFwic21jX2hzX2JwZi5oXCIsXG4gICAgXCJzbWNfaWIuY1wiLFxuICAgIFwic21jX2liLmhcIixcbiAgICBcInNtY19pbmV0LmNcIixcbiAgICBcInNtY19pbmV0LmhcIixcbiAgICBcInNtY19pc20uY1wiLFxuICAgIFwic21jX2lzbS5oXCIsXG4gICAgXCJzbWNfbGxjLmNcIixcbiAgICBcInNtY19sbGMuaFwiLFxuICAgIFwic21jX25ldGxpbmsuY1wiLFxuICAgIFwic21jX25ldGxpbmsuaFwiLFxuICAgIFwic21jX25ldG5zLmhcIixcbiAgICBcInNtY19wbmV0LmNcIixcbiAgICBcInNtY19wbmV0LmhcIixcbiAgICBcInNtY19yeC5jXCIsXG4gICAgXCJzbWNfcnguaFwiLFxuICAgIFwic21jX3N0YXRzLmNcIixcbiAgICBcInNtY19zdGF0cy5oXCIsXG4gICAgXCJzbWNfc3lzY3RsLmNcIixcbiAgICBcInNtY19zeXNjdGwuaFwiLFxuICAgIFwic21jX3RyYWNlcG9pbnQuY1wiLFxuICAgIFwic21jX3RyYWNlcG9pbnQuaFwiLFxuICAgIFwic21jX3R4LmNcIixcbiAgICBcInNtY190eC5oXCIsXG4gICAgXCJzbWNfd3IuY1wiLFxuICAgIFwic21jX3dyLmhcIlxuICBdLFxuICBcIlN1YmRpcnNcIjogbnVsbFxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTVUMTA6MTM6MjMuODYyNjc0MDgyWiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzA0MDQ1OTMwMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkNoZWNraW5nIGZvciBhIExvb3BiYWNrIElTTSBEZXZpY2UqKlxuXG5BbHJpZ2h0LCBsZXQncyBnZXQgZG93biB0byBicmFzcyB0YWNrcy4gRmlyc3QgdGhpbmcncyBmaXJzdCwgSSBuZWVkIHRvIHZlcmlmeSBzb21ldGhpbmcgZnVuZGFtZW50YWwg4oCTIHRoZSBwcmVzZW5jZSBhbmQgYWNjZXNzaWJpbGl0eSBvZiBhIGxvb3BiYWNrIElTTSAoSW5kdXN0cmlhbCwgU2NpZW50aWZpYywgYW5kIE1lZGljYWwpIGRldmljZS4gVGhpcyBpc24ndCBqdXN0IGEgY2FzdWFsIGNoZWNrOyBpdCdzIGEgZm91bmRhdGlvbmFsIHN0ZXAuIEknbSBhc3N1bWluZywgZ2l2ZW4gdGhlIGNvbnRleHQgKHRob3VnaCBJIGRvbid0IGhhdmUgYWxsIHRoZSBkZXRhaWxzLCBvZiBjb3Vyc2UhKSwgdGhhdCB3ZSdyZSBkZWFsaW5nIHdpdGggYSBzeXN0ZW0gb3IgYXBwbGljYXRpb24gdGhhdCBpbnRlcmFjdHMgd2l0aCBSRiBzaWduYWxzLCBwb3RlbnRpYWxseSB3aXRoaW4gdGhlIElTTSBiYW5kLiBBIGxvb3BiYWNrIGRldmljZSBpcyBpbnZhbHVhYmxlIGZvciBpbml0aWFsIHRlc3RpbmcsIGRlYnVnZ2luZywgYW5kIHZhbGlkYXRpbmcgb3VyIHNldHVwLiBJdOKAmXMgdGhlIHNpbXBsZXN0IHdheSB0byBjb25maXJtIHNpZ25hbCBpbnRlZ3JpdHkgZnJvbSB0aGUgc291cmNlIHRvIHRoZSByZWNlaXZlci4gV2l0aG91dCBpdCwgZnVydGhlciBkaWFnbm9zdGljcyBhcmUgZ29pbmcgdG8gYmUgY29uc2lkZXJhYmx5IGhhcmRlci4gU28sIGJlZm9yZSBJIGRpdmUgaW50byBhbnl0aGluZyBtb3JlIGNvbXBsZXgsIEkgbmVlZCB0byBxdWlja2x5IGRldGVybWluZTogaXMgdGhlIGxvb3BiYWNrIHRoZXJlPyBBbmQgbW9yZSBpbXBvcnRhbnRseSwgaXMgaXQgYmVoYXZpbmcgYXMgZXhwZWN0ZWQ/IEkgbmVlZCB0byBrbm93IGlmIEkgY2FuIGV2ZW4gcmVseSBvbiBpdC4gTGV0J3Mgc2VlLi4uIGxldCdzIHNlZSB3aGF0IHdlIGNhbiBmaW5kLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1MjA3LCJPdXRwdXRUb2tlbnMiOjI3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTMsIlRvb2xDYWxscyI6WyJjb2Rlc2VhcmNoLWRpci1pbmRleCJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDEwOjEzOjI2LjkwMzEzNzc1MloiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzA0MjEwOTQsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibG9vcGJhY2tcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L3NtYy9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L3NtYy9zbWNfaXNtLmM9MjYwPWJvb2wgc21jX2lzbV9zdXBwb3J0X2RtYl9ub2NvcHkoc3RydWN0IHNtY2RfZGV2ICpzbWNkKVxcbm5ldC9zbWMvc21jX2lzbS5jLTI2MS17XFxubmV0L3NtYy9zbWNfaXNtLmM6MjYyOlxcdC8qIGZvciBub3cgb25seSBsb29wYmFjay1pc20gc3VwcG9ydHNcXG5uZXQvc21jL3NtY19pc20uYy0yNjMtXFx0ICogbWVyZ2luZyBzbmRidWYgd2l0aCBwZWVyIERNQiB0byBhdm9pZFxcbi0tXFxubmV0L3NtYy9zbWNfaXNtLmM9MzY1PXN0YXRpYyB2b2lkIHNtY19ubF9wcmVwX3NtY2RfZGV2KHN0cnVjdCBzbWNkX2Rldl9saXN0ICpkZXZfbGlzdCxcXG4tLVxcbm5ldC9zbWMvc21jX2lzbS5jLTM3Ny1cXHRcXHRcXHRnb3RvIG5leHQ7XFxubmV0L3NtYy9zbWNfaXNtLmM6Mzc4OlxcdFxcdGlmIChzbWNfaXNtX2lzX2xvb3BiYWNrKHNtY2QtXFx1MDAzZWRpYnMpKVxcbm5ldC9zbWMvc21jX2lzbS5jLTM3OS1cXHRcXHRcXHRnb3RvIG5leHQ7XFxuLS1cXG5uZXQvc21jL3NtY19pc20uYz00OTE9c3RhdGljIHZvaWQgc21jZF9yZWdpc3Rlcl9kZXYoc3RydWN0IGRpYnNfZGV2ICpkaWJzKVxcbi0tXFxubmV0L3NtYy9zbWNfaXNtLmMtNTA3LVxcbm5ldC9zbWMvc21jX2lzbS5jOjUwODpcXHRpZiAoc21jX2lzbV9pc19sb29wYmFjayhkaWJzKSB8fFxcbm5ldC9zbWMvc21jX2lzbS5jLTUwOS1cXHQgICAgKGRpYnMtXFx1MDAzZW9wcy1cXHUwMDNlYWRkX3ZsYW5faWQgXFx1MDAyNlxcdTAwMjZcXG4tLVxcbm5ldC9zbWMvc21jX2lzbS5jLTUxNi1cXHQgKiAtIGRldmljZXMgd2l0aG91dCBwbmV0aWQgYmVmb3JlIGRldmljZXMgd2l0aCBwbmV0aWQ7XFxubmV0L3NtYy9zbWNfaXNtLmM6NTE3OlxcdCAqIC0gbG9vcGJhY2staXNtIGFsd2F5cyBhdCB0aGUgdmVyeSBiZWdpbm5pbmc7XFxubmV0L3NtYy9zbWNfaXNtLmMtNTE4LVxcdCAqL1xcbi0tXFxubmV0L3NtYy9zbWNfaXNtLmMtNTIxLVxcdFxcdFxcdFxcdFxcdFxcdCAgc3RydWN0IHNtY2RfZGV2LCBsaXN0KTtcXG5uZXQvc21jL3NtY19pc20uYzo1MjI6XFx0XFx0aWYgKGZlbnRyeSBcXHUwMDI2XFx1MDAyNiBzbWNfaXNtX2lzX2xvb3BiYWNrKGZlbnRyeS1cXHUwMDNlZGlicykpXFxubmV0L3NtYy9zbWNfaXNtLmMtNTIzLVxcdFxcdFxcdGxpc3RfYWRkKFxcdTAwMjZzbWNkLVxcdTAwM2VsaXN0LCBcXHUwMDI2ZmVudHJ5LVxcdTAwM2VsaXN0KTtcXG4tLVxcbm5ldC9zbWMvc21jX2lzbS5oPTc4PXN0YXRpYyBpbmxpbmUgYm9vbCBfX3NtY19pc21faXNfZW11bGF0ZWQodTE2IGNoaWQpXFxuLS1cXG5uZXQvc21jL3NtY19pc20uaC04Mi1cXHQgKlxcbm5ldC9zbWMvc21jX2lzbS5oOjgzOlxcdCAqIGxvb3BiYWNrLWlzbTpcXHQweEZGRkZcXG5uZXQvc21jL3NtY19pc20uaC04NC1cXHQgKiB2aXJ0aW8taXNtOlxcdFxcdDB4RkYwMCB+IDB4RkZGRVxcbi0tXFxubmV0L3NtYy9zbWNfaXNtLmg9ODk9c3RhdGljIGlubGluZSBib29sIHNtY19pc21faXNfZW11bGF0ZWQoc3RydWN0IHNtY2RfZGV2ICpzbWNkKVxcbi0tXFxubmV0L3NtYy9zbWNfaXNtLmgtOTUtXFxubmV0L3NtYy9zbWNfaXNtLmg6OTY6c3RhdGljIGlubGluZSBib29sIHNtY19pc21faXNfbG9vcGJhY2soc3RydWN0IGRpYnNfZGV2ICpkaWJzKVxcbm5ldC9zbWMvc21jX2lzbS5oLTk3LXtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTVUMTA6MTM6MjYuOTczNTcxMzI3WiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM1NTEyODg4MTEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBzdW1tYXJ5LCB0YWtpbmcgb24gdGhlIHBlcnNvbmEgeW91J3ZlIGRlc2NyaWJlZDpcblxuKipJbnZlc3RpZ2F0aW5nIGBsb29wYmFjay1pc21gIFN1cHBvcnQqKlxuXG5BbHJpZ2h0LCBzbyB0aGUgaW5pdGlhbCBhc3N1bXB0aW9uIGlzIHRoYXQgd2UgaGF2ZSBgbG9vcGJhY2staXNtYCBzdXBwb3J0LiBHb29kLiBCdXQgd2FpdCwgSSBuZWVkIHRvIHZlcmlmeSBzb21ldGhpbmcgcmVsYXRlZCB0byBgQ09ORklHX1NNQ19MT2AuIFRoZSBkb2N1bWVudGF0aW9uIG1lbnRpb25lZCBpdHMgYXZhaWxhYmlsaXR5IGluIGBuZXQvc21jL0tjb25maWdgLCByaWdodD8gT2theSwgc28gSSBzaG91bGQganVzdCBkb3VibGUtY2hlY2sgdGhhdC4gTGV0IG1lIHF1aWNrbHkgZ3JlcCBmb3IgYFNNQ19MT2Agd2l0aGluIHRoZSBwcm9qZWN0LiBIdWgsIHRoYXQncyBvZGQsIG5vIHJlc3VsdHMuIFRoYXQgZG9lc24ndCBhbGlnbiB3aXRoIHdoYXQgSSB3YXMgdG9sZC4gVGltZSBmb3IgYSBkZWVwZXIgZGl2ZS4gU2luY2UgdGhpcyBpcyBsaWtlbHkgbmV0d29yay1yZWxhdGVkLCBhbmQgZ2l2ZW4gdGhlIGNvbnRleHQgb2YgU01DLCBJIG5lZWQgdG8gY2hlY2sgdGhlIHJlbGV2YW50IGRyaXZlciBsb2NhdGlvbnMuIE15IG5leHQgc3RlcCB3aWxsIGJlIHRvIGV4cGxvcmUgYGRyaXZlcnMvczM5MC9uZXQvYCBhbmQgdGhlbiBgZHJpdmVycy9uZXQvYCB0byBzZWUgaWYgYGxvb3BiYWNrLWlzbWAgaXMgaGFuZGxlZCB0aGVyZSBhbmQgaWYgdGhlcmUncyBhbnkgaW1wbGVtZW50YXRpb24gdGhhdCBleHBsYWlucyB3aGF0IGBTTUNfTE9gIHNob3VsZCBiZS4gTGV0J3Mgc2VlIHdoYXQgd2UgY2FuIGZpbmQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjYyNjksIk91dHB1dFRva2VucyI6MjQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo4MCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQxMDoxMzozMC41MjQ4NjIxODdaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIwMDc1NTY4OTksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibG9vcGJhY2staXNtXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIlwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jLTItLypcXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jOjM6ICogIEZ1bmN0aW9ucyBmb3IgZGlicyBsb29wYmFjay9sb29wYmFjay1pc20gZGV2aWNlLlxcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmMtNC0gKlxcbi0tXFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suaC0yLS8qXFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suaDozOiAqICBkaWJzIGxvb3BiYWNrIChha2EgbG9vcGJhY2staXNtKSBkZXZpY2Ugc3RydWN0dXJlIGRlZmluaXRpb25zLlxcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmgtNC0gKlxcbi0tXFxubmV0L3NtYy9zbWNfaXNtLmM9MjYwPWJvb2wgc21jX2lzbV9zdXBwb3J0X2RtYl9ub2NvcHkoc3RydWN0IHNtY2RfZGV2ICpzbWNkKVxcbm5ldC9zbWMvc21jX2lzbS5jLTI2MS17XFxubmV0L3NtYy9zbWNfaXNtLmM6MjYyOlxcdC8qIGZvciBub3cgb25seSBsb29wYmFjay1pc20gc3VwcG9ydHNcXG5uZXQvc21jL3NtY19pc20uYy0yNjMtXFx0ICogbWVyZ2luZyBzbmRidWYgd2l0aCBwZWVyIERNQiB0byBhdm9pZFxcbi0tXFxubmV0L3NtYy9zbWNfaXNtLmM9NDkxPXN0YXRpYyB2b2lkIHNtY2RfcmVnaXN0ZXJfZGV2KHN0cnVjdCBkaWJzX2RldiAqZGlicylcXG4tLVxcbm5ldC9zbWMvc21jX2lzbS5jLTUxNi1cXHQgKiAtIGRldmljZXMgd2l0aG91dCBwbmV0aWQgYmVmb3JlIGRldmljZXMgd2l0aCBwbmV0aWQ7XFxubmV0L3NtYy9zbWNfaXNtLmM6NTE3OlxcdCAqIC0gbG9vcGJhY2staXNtIGFsd2F5cyBhdCB0aGUgdmVyeSBiZWdpbm5pbmc7XFxubmV0L3NtYy9zbWNfaXNtLmMtNTE4LVxcdCAqL1xcbi0tXFxubmV0L3NtYy9zbWNfaXNtLmg9Nzg9c3RhdGljIGlubGluZSBib29sIF9fc21jX2lzbV9pc19lbXVsYXRlZCh1MTYgY2hpZClcXG4tLVxcbm5ldC9zbWMvc21jX2lzbS5oLTgyLVxcdCAqXFxubmV0L3NtYy9zbWNfaXNtLmg6ODM6XFx0ICogbG9vcGJhY2staXNtOlxcdDB4RkZGRlxcbm5ldC9zbWMvc21jX2lzbS5oLTg0LVxcdCAqIHZpcnRpby1pc206XFx0XFx0MHhGRjAwIH4gMHhGRkZFXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDEwOjEzOjMyLjUzMjQyNjA2NloiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMDUzMTMxMjM5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZSBvbiB0aGUgdGhvdWdodCBwcm9jZXNzLCBhcyByZXF1ZXN0ZWQ6XG5cbioqRGl2aW5nIGludG8gdGhlIERpYnMgTG9vcGJhY2sgQ29uZmlndXJhdGlvbioqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IGBkcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jYC4gTGV0J3MgZ2V0IHJpZ2h0IGludG8gdGhlIGhlYXJ0IG9mIGl0IOKAkyB0aGUgY29uZmlndXJhdGlvbi4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoaXMgbG9vcGJhY2sgaXMgc2V0IHVwLCB3aGF0IHBhcmFtZXRlcnMgaXQgdXNlcywgYW5kIGhvdyBpdCBpbnRlcmFjdHMgd2l0aCB0aGUgcmVzdCBvZiB0aGUgRGlicyBzeXN0ZW0uIElzIGl0IHVzaW5nIGFueSBzcGVjaWZpYyBoYXJkd2FyZSBkZWZpbml0aW9ucz8gQXJlIHRoZXJlIGFueSBwb3RlbnRpYWwgY29uZmxpY3RzIEkgbmVlZCB0byBiZSBhd2FyZSBvZj8gSSdsbCBwcm9iYWJseSBzdGFydCBieSBsb29raW5nIGF0IHRoZSBkZWZhdWx0IHZhbHVlcywgYW55IGNvbmRpdGlvbmFsIGNvbXBpbGF0aW9uIGRpcmVjdGl2ZXMsIGFuZCBhbnkgZXh0ZXJuYWwgZGVwZW5kZW5jaWVzLiBJIG5lZWQgdG8gcXVpY2tseSBncmFzcCBpdHMgY29yZSBmdW5jdGlvbmFsaXR5IGFuZCBhbnkgdW5pcXVlIGFzcGVjdHMgb2YgaXRzIGNvbmZpZ3VyYXRpb24uIFRoaXMgc2hvdWxkIHByb3ZpZGUgdGhlIGZvdW5kYXRpb24gb2YgYSBkZWVwZXIgZGl2ZSBpZiBuZWNlc3NhcnkuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjcwOTksIk91dHB1dFRva2VucyI6MzAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQxMDoxMzozNS41ODU1NTg5NjRaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjY2NDQwMzE1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBESUJTXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvZGlicy9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvZGlicy9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxcbmRyaXZlcnMvZGlicy9LY29uZmlnOjI6Y29uZmlnIERJQlNcXG5kcml2ZXJzL2RpYnMvS2NvbmZpZy0zLVxcdHRyaXN0YXRlIFxcXCJEaXJlY3QgSW50ZXJuYWwgQnVmZmVyIFNoYXJpbmcgc3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvZGlicy9LY29uZmlnLTEzLVxcbmRyaXZlcnMvZGlicy9LY29uZmlnOjE0OmNvbmZpZyBESUJTX0xPXFxuZHJpdmVycy9kaWJzL0tjb25maWctMTUtXFx0Ym9vbCBcXFwiSW50cmEtT1Mgc2hvcnRjdXQgd2l0aCBkaWJzIGxvb3BiYWNrXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQxMDoxMzozNS42NTIwMDQ4OTlaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mjg5NTI2MjM0MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipFeGFtaW5pbmcgdGhlIFNNQyBDb25maWd1cmF0aW9uIFJlcXVpcmVtZW50cyoqXG5cbk9rYXksIHNvIEkgc2VlIHRoYXQgYENPTkZJR19ESUJTYCBhbmQgYENPTkZJR19ESUJTX0xPYCBhcmUgZGVmaW5pdGVseSBlc3NlbnRpYWwgZm9yIHRoaXMgc2V0dXAuIE5vdywgSSBzaG91bGQgZG91YmxlLWNoZWNrIGFib3V0IGBDT05GSUdfU01DYC4gTGV0IG1lIHF1aWNrbHkgY29uZmlybeKApiBZZXAsIHRoYXQncyByZXF1aXJlZCBhcyB3ZWxsLiBIbW0sIGFyZSB0aGVyZSBhbnkgKm90aGVyKiByZWxhdGVkIGNvbmZpZ3VyYXRpb25zIEkgbWlnaHQgYmUgbWlzc2luZz8gVGltZSB0byBjYXJlZnVsbHkgcmV2aXNpdCBgbmV0L3NtYy9LY29uZmlnYCBhbmQgbWFrZSBzdXJlIEkgaGF2ZW4ndCBvdmVybG9va2VkIGFueXRoaW5nIGNyaXRpY2FsLiBBbHdheXMgYmVzdCB0byBiZSB0aG9yb3VnaCB3aXRoIHRoZXNlIHNldHRpbmdzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo3NDQ0LCJPdXRwdXRUb2tlbnMiOjI5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NjAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTVUMTA6MTM6MzguNTQ3MjY5MTVaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjYxMDUyOTI1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBTTUNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L3NtYy9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9zbWMvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbm5ldC9zbWMvS2NvbmZpZzoyOmNvbmZpZyBTTUNcXG5uZXQvc21jL0tjb25maWctMy1cXHR0cmlzdGF0ZSBcXFwiU01DIHNvY2tldCBwcm90b2NvbCBmYW1pbHlcXFwiXFxuLS1cXG5uZXQvc21jL0tjb25maWctMTMtXFxubmV0L3NtYy9LY29uZmlnOjE0OmNvbmZpZyBTTUNfRElBR1xcbm5ldC9zbWMvS2NvbmZpZy0xNS1cXHR0cmlzdGF0ZSBcXFwiU01DOiBzb2NrZXQgbW9uaXRvcmluZyBpbnRlcmZhY2VcXFwiXFxuLS1cXG5uZXQvc21jL0tjb25maWctMjItXFxubmV0L3NtYy9LY29uZmlnOjIzOmNvbmZpZyBTTUNfSFNfQ1RSTF9CUEZcXG5uZXQvc21jL0tjb25maWctMjQtXFx0Ym9vbCBcXFwiR2VuZXJpYyBlQlBGIGhvb2sgZm9yIFNNQyBoYW5kc2hha2UgZmxvd1xcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTVUMTA6MTM6MzguNjA4MzMxNTY1WiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM2ODM4NTMyNjEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIFNNQyBDb25maWd1cmF0aW9uIGFuZCBSZWFjaGFiaWxpdHkqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGVzZSBjb25maWd1cmF0aW9uczogYENPTkZJR19TTUNgLCBgQ09ORklHX0RJQlNgLCBhbmQgYENPTkZJR19ESUJTX0xPYC4gUmlnaHQgbm93LCBJJ20gdGhpbmtpbmcsIGRvIHdlIGV2ZW4gbmVlZCBgQ09ORklHX1NNQ19ESUFHYD8gTXkgZ3V0IHNheXMgcHJvYmFibHkgbm90LCBidXQgSSBzaG91bGQgY29uZmlybS4gTGV0J3MgbWFrZSBzdXJlLlxuXG5OZXh0LCBJIG5lZWQgdG8gdmVyaWZ5IHdoaWNoIGZ1bmN0aW9ucyBhcmUgYWN0dWFsbHkgKnVzZWQqIG9yIHJlYWNoYWJsZSBiYXNlZCBvbiB0aGVzZSBjb25maWd1cmF0aW9ucy4gVGhlIGZ1bmN0aW9ucyBJIG5lZWQgdG8gY2hlY2sgYXJlOiBgc21jX2NkY19tc2dfcmVjdl9hY3Rpb25gLCBgc21jZF9jZGNfcnhfdHNrbGV0YCwgYHNtY19jZGNfcnhfaGFuZGxlcmAsIGBfX3NtY19idWZfY3JlYXRlYCwgYW5kIGBzbWNkX2J1Zl9hdHRhY2hgLiBUaGVzZSBhcmUgdGhlIG9uZXMgdGhhdCBzZWVtIGRpcmVjdGx5IHRpZWQgdG8gdGhlIFNNQyBjb21tdW5pY2F0aW9uIHBhdGhzLlxuXG5MZXQncyBzdGFydCBieSBkaWdnaW5nIGludG8gYHNtY19jZGNfbXNnX3JlY3ZfYWN0aW9uYC4gVW5kZXJzdGFuZGluZyB0aGlzIGZ1bmN0aW9uJ3MgbG9naWMgd2lsbCBnaXZlIG1lIGEgYmV0dGVyIGdyYXNwIG9mIHRoZSBpbXBhY3Qgb2YgdGhlc2UgY29uZmlndXJhdGlvbiBvcHRpb25zLlxuXG5cbiIsIklucHV0VG9rZW5zIjo3ODMzLCJPdXRwdXRUb2tlbnMiOjM1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTI5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDEwOjEzOjQyLjI5MjE4NjczNloiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjMyOTQzMTYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwic21jX2NkY19tc2dfcmVjdl9hY3Rpb25cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L3NtYy9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L3NtYy9zbWNfY2RjLmM9MzA4PXN0YXRpYyB2b2lkIHNtY19jZGNfbXNnX3ZhbGlkYXRlKHN0cnVjdCBzbWNfc29jayAqc21jLCBzdHJ1Y3Qgc21jX2NkY19tc2cgKmNkYyxcXG4tLVxcbm5ldC9zbWMvc21jX2NkYy5jLTMyOS1cXG5uZXQvc21jL3NtY19jZGMuYzozMzA6c3RhdGljIHZvaWQgc21jX2NkY19tc2dfcmVjdl9hY3Rpb24oc3RydWN0IHNtY19zb2NrICpzbWMsXFxubmV0L3NtYy9zbWNfY2RjLmMtMzMxLVxcdFxcdFxcdFxcdCAgICBzdHJ1Y3Qgc21jX2NkY19tc2cgKmNkYylcXG4tLVxcbm5ldC9zbWMvc21jX2NkYy5jPTQzNj1zdGF0aWMgdm9pZCBzbWNfY2RjX21zZ19yZWN2KHN0cnVjdCBzbWNfc29jayAqc21jLCBzdHJ1Y3Qgc21jX2NkY19tc2cgKmNkYylcXG4tLVxcbm5ldC9zbWMvc21jX2NkYy5jLTQzOS1cXHRiaF9sb2NrX3NvY2soXFx1MDAyNnNtYy1cXHUwMDNlc2spO1xcbm5ldC9zbWMvc21jX2NkYy5jOjQ0MDpcXHRzbWNfY2RjX21zZ19yZWN2X2FjdGlvbihzbWMsIGNkYyk7XFxubmV0L3NtYy9zbWNfY2RjLmMtNDQxLVxcdGJoX3VubG9ja19zb2NrKFxcdTAwMjZzbWMtXFx1MDAzZXNrKTtcXG4tLVxcbm5ldC9zbWMvc21jX2NkYy5jPTQ4Nj1zdGF0aWMgdm9pZCBzbWNfY2RjX3J4X2hhbmRsZXIoc3RydWN0IGliX3djICp3Yywgdm9pZCAqYnVmKVxcbi0tXFxubmV0L3NtYy9zbWNfY2RjLmMtNTAzLVxcdC8qIFBhaXIgd2l0aCBzbXBfc3RvcmVfcmVsZWFzZSgpIGluIF9fc21jX2J1Zl9jcmVhdGUoKTogYmFpbCB3aGlsZSB0aGVcXG5uZXQvc21jL3NtY19jZGMuYzo1MDQ6XFx0ICogUk1CIGlzIHVuc2V0IChzbWNfY2RjX21zZ19yZWN2X2FjdGlvbigpIGRlcmVmZXJlbmNlcyBpdCkgdG8gYXZvaWQgYVxcbm5ldC9zbWMvc21jX2NkYy5jLTUwNS1cXHQgKiBOVUxMIGRlcmVmIGFuZCBhIHN0YWxlLWJ1ZmZlciByZWFkIGluIHRoZSBjb25uZWN0aW9uIHNldHVwIHdpbmRvdy5cXG4tLVxcbm5ldC9zbWMvc21jX2NvcmUuYz0yNTgzPWludCBzbWNkX2J1Zl9hdHRhY2goc3RydWN0IHNtY19zb2NrICpzbWMpXFxuLS1cXG5uZXQvc21jL3NtY19jb3JlLmMtMjYxMS1cXHQgKiBvbmNlIGl0IHNlZXMgYSBub24tTlVMTCBzbmRidWZfZGVzYy4gIFBhaXJzIHdpdGggc21wX2xvYWRfYWNxdWlyZSgpXFxubmV0L3NtYy9zbWNfY29yZS5jOjI2MTI6XFx0ICogaW4gc21jX2NkY19tc2dfcmVjdl9hY3Rpb24oKS5cXG5uZXQvc21jL3NtY19jb3JlLmMtMjYxMy1cXHQgKi9cXG4tLVxcbm5ldC9zbWMvc21jX3J4LmMtMjktLyogY2FsbGJhY2sgaW1wbGVtZW50YXRpb24gdG8gd2FrZXVwIGNvbnN1bWVycyBibG9ja2VkIHdpdGggc21jX3J4X3dhaXQoKS5cXG5uZXQvc21jL3NtY19yeC5jOjMwOiAqIGluZGlyZWN0bHkgY2FsbGVkIGJ5IHNtY19jZGNfbXNnX3JlY3ZfYWN0aW9uKCkuXFxubmV0L3NtYy9zbWNfcnguYy0zMS0gKi9cXG4tLVxcbm5ldC9zbWMvc21jX3J4LmM9MzUyPWludCBzbWNfcnhfcmVjdm1zZyhzdHJ1Y3Qgc21jX3NvY2sgKnNtYywgc3RydWN0IG1zZ2hkciAqbXNnLFxcbi0tXFxubmV0L3NtYy9zbWNfcnguYy0zOTgtXFx0XFx0aWYgKHNrLVxcdTAwM2Vza19zaHV0ZG93biBcXHUwMDI2IFJDVl9TSFVURE9XTikge1xcbm5ldC9zbWMvc21jX3J4LmM6Mzk5OlxcdFxcdFxcdC8qIHNtY19jZGNfbXNnX3JlY3ZfYWN0aW9uKCkgY291bGQgaGF2ZSBydW4gYWZ0ZXJcXG5uZXQvc21jL3NtY19yeC5jLTQwMC1cXHRcXHRcXHQgKiBhYm92ZSBzbWNfcnhfcmVjdm1zZ19kYXRhX2F2YWlsYWJsZSgpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDEwOjEzOjQyLjM1NTQ4NzM1MVoiLCJTZXEiOjE5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1MjEzMDMwMjE1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgU01DLUNEQyBNZXNzYWdlIEhhbmRsaW5nIFBhdGgqKlxuXG5Pa2F5LCBzbyBsZXQgbWUgYnJlYWsgdGhpcyBkb3duLiBgc21jX2NkY19tc2dfcmVjdl9hY3Rpb25gIGlzIHRyaWdnZXJlZCB3aXRoaW4gYHNtY19jZGNfbXNnX3JlY3ZgLCB3aGljaCBpdHNlbGYgaXMgaW52b2tlZCBieSBib3RoIGBzbWNkX2NkY19yeF90c2tsZXRgIGFuZCBgc21jX2NkY19yeF9oYW5kbGVyYC4gIFJpZ2h0LCBgc21jZF9jZGNfcnhfdHNrbGV0YCBoYW5kbGVzIHRoZSBTTUMtRCBwYXRoLCBhbmQgYHNtY19jZGNfcnhfaGFuZGxlcmAgdGFrZXMgY2FyZSBvZiBTTUMtUi4gR29vZC4gIEkgcmVtZW1iZXIgbm93IHRoYXQgYF9fc21jX2J1Zl9jcmVhdGVgIGlzIGNydWNpYWwgZHVyaW5nIHRoZSBjb25uZWN0aW9uIHNldHVwIHByb2Nlc3MsIGFuZCBzcGVjaWZpY2FsbHkgZm9yIFNNQy1ELCBgc21jZF9idWZfYXR0YWNoYCBnZXRzIGludm9sdmVkIGR1cmluZyBzZXR1cC5cblxuVGhlIGltcG9ydGFudCB0aGluZyBpcyB0aGF0IHRoaXMgbW9kaWZpZWQgY29kZSBpcyBhYnNvbHV0ZWx5IHJlYWNoYWJsZSBhbmQgYXBwZWFycyBmdW5jdGlvbmFsbHkgc291bmQsIHdoaWNoIGlzIGdyZWF0LiAgVGhlIHBhdGNoIGFpbXMgdG8gYWRkcmVzcyBhIHJhY2UgY29uZGl0aW9uLCB3aGVyZSBgY29ubi1cdTAwM2VybWJfZGVzY2Agb3IgYGNvbm4tXHUwMDNlc25kYnVmX2Rlc2NgIG1pZ2h0IGJlIHVuaW5pdGlhbGl6ZWQgb3IgTlVMTCwgd2hpY2ggdGhlIENEQyByZWNlaXZlIGhhbmRsZXIgd291bGQgdGhlbiB0cnkgdG8gYWNjZXNzLiBUaGlzIGlzIGEgY3JpdGljYWwgcG9pbnQgdGhhdCBuZWVkcyBhZGRyZXNzaW5nLlxuXG5UaGlzIGlzICpkZWZpbml0ZWx5KiB3b3J0aCBmdXp6aW5nLiBUaGUgcG90ZW50aWFsIGZvciBhIHJhY2UgY29uZGl0aW9uIGxpa2UgdGhpcyBpcyBleGFjdGx5IHdoYXQgZnV6emluZyBpcyBkZXNpZ25lZCB0byBjYXRjaCBhbmQgZXhwb3NlLlxuXG5BbHJpZ2h0LCBsZXQncyBuYWlsIGRvd24gdGhlIGNyaXRpY2FsIHN5bWJvbHMgd2UncmUgZGVhbGluZyB3aXRoLiAgSSd2ZSBnb3QgYSBzb2xpZCBsaXN0OlxuKiAgIGBzbWNfY2RjX21zZ19yZWN2X2FjdGlvbmBcbiogICBgc21jZF9jZGNfcnhfdHNrbGV0YFxuKiAgIGBzbWNfY2RjX3J4X2hhbmRsZXJgXG4qICAgYF9fc21jX2J1Zl9jcmVhdGVgXG4qICAgYHNtY2RfYnVmX2F0dGFjaGBcblxuSG1tLCBJJ2xsIG5lZWQgdG8gZG91YmxlIGNoZWNrIGBuZXQvc21jL0tjb25maWdgIGFnYWluIHRvIGVuc3VyZSBJJ20gbm90IG1pc3NpbmcgYW55IHJlbGV2YW50IGNvbmZpZ3VyYXRpb24gb3B0aW9ucywgYXMgdGhhdCBjb3VsZCBpbmZsdWVuY2UgdGhlIGZ1enppbmcgYXBwcm9hY2ggYW5kIHRhcmdldCBzZWxlY3Rpb24uIEl0J3MgZWFzeSB0byBvdmVybG9vayB0aGluZ3MgaW4gdGhlc2Uga2luZHMgb2YgY29uZmlndXJhdGlvbnMuIEJldHRlciB0byBiZSB0aG9yb3VnaC5cblxuXG4iLCJJbnB1dFRva2VucyI6OTAyMCwiT3V0cHV0VG9rZW5zIjoyOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI2OSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQxMDoxMzo0Ny41Njg1MTkzMzdaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjMzODUzNzA0NCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgU01DXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9zbWMvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvc21jL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG5uZXQvc21jL0tjb25maWc6Mjpjb25maWcgU01DXFxubmV0L3NtYy9LY29uZmlnLTMtXFx0dHJpc3RhdGUgXFxcIlNNQyBzb2NrZXQgcHJvdG9jb2wgZmFtaWx5XFxcIlxcbi0tXFxubmV0L3NtYy9LY29uZmlnLTEzLVxcbm5ldC9zbWMvS2NvbmZpZzoxNDpjb25maWcgU01DX0RJQUdcXG5uZXQvc21jL0tjb25maWctMTUtXFx0dHJpc3RhdGUgXFxcIlNNQzogc29ja2V0IG1vbml0b3JpbmcgaW50ZXJmYWNlXFxcIlxcbi0tXFxubmV0L3NtYy9LY29uZmlnLTIyLVxcbm5ldC9zbWMvS2NvbmZpZzoyMzpjb25maWcgU01DX0hTX0NUUkxfQlBGXFxubmV0L3NtYy9LY29uZmlnLTI0LVxcdGJvb2wgXFxcIkdlbmVyaWMgZUJQRiBob29rIGZvciBTTUMgaGFuZHNoYWtlIGZsb3dcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDEwOjEzOjQ3LjkwNzA2MDk1MVoiLCJTZXEiOjIxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMzYwNzU5OTU1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgc3VtbWFyeSwgdGFraW5nIHRoZSBwZXJzcGVjdGl2ZSBvZiBzb21lb25lIGZhbWlsaWFyIHdpdGgga2VybmVsIGRldmVsb3BtZW50IGFuZCBjb25maWd1cmF0aW9uOlxuXG4qKkRpdmluZyBpbnRvIHRoZSBESUJTIENvbmZpZ3VyYXRpb24qKlxuXG5BbHJpZ2h0LCB0aW1lIHRvIGdldCBteSBoYW5kcyBkaXJ0eS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgdGhlIERJQlMgKERhdGEgSW50ZWdyaXR5IEJsb2NrIFN0b3JhZ2UpIGRyaXZlci4gVGhlIGZpcnN0IHBsYWNlIEkgYWx3YXlzIGdvIHdoZW4gZGVhbGluZyB3aXRoIGtlcm5lbCBjb25maWd1cmF0aW9uIGlzIHRoZSBgS2NvbmZpZ2AgZmlsZS4gU3BlY2lmaWNhbGx5LCBJJ2xsIGJlIGxvb2tpbmcgYXQgYGRyaXZlcnMvZGlicy9LY29uZmlnYC4gVGhpcyBmaWxlICpzaG91bGQqIGhvbGQgdGhlIGRlZmluaXRpb25zIGZvciBhbGwgdGhlIHJlbGV2YW50IGNvbmZpZ3VyYXRpb24gc3ltYm9scyDigJMgdGhvc2UgYENPTkZJR19gIG9wdGlvbnMg4oCTIHJlbGF0ZWQgdG8gRElCUy4gSSBleHBlY3QgdG8gc2VlIHRoaW5ncyBsaWtlIHdoZXRoZXIgdGhlIGRyaXZlciBpcyBidWlsdC1pbiBvciBhIG1vZHVsZSwgYW55IGZlYXR1cmVzIHRoYXQgY2FuIGJlIHNlbGVjdGl2ZWx5IGVuYWJsZWQgb3IgZGlzYWJsZWQsIGFuZCBtYXliZSBzb21lIGRlZmF1bHQgdmFsdWVzIGZvciBwYXJhbWV0ZXJzLiBUaGlzIGBLY29uZmlnYCBmaWxlIGlzIHRoZSBrZXkgdG8gdW5kZXJzdGFuZGluZyBob3cgdG8gZW5hYmxlLCBkaXNhYmxlLCBhbmQgdGFpbG9yIHRoZSBESUJTIGRyaXZlciB0byBhIHNwZWNpZmljIHN5c3RlbSdzIG5lZWRzLiBGcm9tIGhlcmUsIEkgc2hvdWxkIGJlIGFibGUgdG8gZ2V0IGEgcHJldHR5IGdvb2Qgb3ZlcnZpZXcgb2YgaG93IHRoaXMgbW9kdWxlIHdvcmtzIGluIHRoZSBsYXJnZXIgc3lzdGVtLlxuXG5cbiIsIklucHV0VG9rZW5zIjo5OTIxLCJPdXRwdXRUb2tlbnMiOjMwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTVUMTA6MTM6NTEuMjY3ODIyOTk2WiIsIlNlcSI6MjIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2ODE0OTE3NCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgRElCU1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL2RpYnMvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL2RpYnMvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcXG5kcml2ZXJzL2RpYnMvS2NvbmZpZzoyOmNvbmZpZyBESUJTXFxuZHJpdmVycy9kaWJzL0tjb25maWctMy1cXHR0cmlzdGF0ZSBcXFwiRGlyZWN0IEludGVybmFsIEJ1ZmZlciBTaGFyaW5nIHN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL2RpYnMvS2NvbmZpZy0xMy1cXG5kcml2ZXJzL2RpYnMvS2NvbmZpZzoxNDpjb25maWcgRElCU19MT1xcbmRyaXZlcnMvZGlicy9LY29uZmlnLTE1LVxcdGJvb2wgXFxcIkludHJhLU9TIHNob3J0Y3V0IHdpdGggZGlicyBsb29wYmFja1xcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTVUMTA6MTM6NTEuMzM1OTc2NDExWiIsIlNlcSI6MjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjcxMTY3NDA2MDEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBTTUMgQ29kZSBQYXRoIGZvciBhIFBvdGVudGlhbCBSYWNlIENvbmRpdGlvbioqXG5cbk9rYXksIGxldCdzIGVuYWJsZSBgU01DYCwgYERJQlNgLCBhbmQgYERJQlNfTE9gLiBUaGF0IHNlZW1zIGxpa2UgYSByZWFzb25hYmxlIHN0YXJ0aW5nIHBvaW50LCBlc3BlY2lhbGx5IGZvciBhIGZ1enppbmcgdGFyZ2V0IGluIGEgVk0gZW52aXJvbm1lbnQuIE15IGltbWVkaWF0ZSBmb2N1cyBpcyBvbiBpZGVudGlmeWluZyBwb3RlbnRpYWwgcmFjZSBjb25kaXRpb25zIHdpdGhpbiB0aGUgU01DIENEQyBtZXNzYWdlIGhhbmRsaW5nLlxuXG5gc21jX2NkY19tc2dfcmVjdl9hY3Rpb25gIGlzIHRoZSBvbmUgdG8gaW52ZXN0aWdhdGUgZnVydGhlci4gSXQncyBjYWxsZWQgZm9yIGV2ZXJ5IENEQyBtZXNzYWdlLCBwbGFjaW5nIGl0IHNxdWFyZWx5IGluIHRoZSBkYXRhIHBhdGguIEltcG9ydGFudGx5LCBpdOKAmXMgc3BlY2lmaWMgdG8gU01DIENEQyBtZXNzYWdlcy4gVGhpcyBpcyBhIGdvb2QgdGhpbmcg4oCTIGl0IG5hcnJvd3MgdGhlIHNjb3BlIGFuZCBtYWtlcyBpdCBtb3JlIGxpa2VseSB0byB1bmNvdmVyIGEgdGFyZ2V0ZWQgdnVsbmVyYWJpbGl0eS4gSSBuZWVkIHRvIHRyZWF0IGl0IGFzIGEgaG90IHBhdGguXG5cbk9uIHRoZSBvdGhlciBoYW5kLCBgX19zbWNfYnVmX2NyZWF0ZWAgYW5kIGBzbWNkX2J1Zl9hdHRhY2hgIGFyZSBjb25uZWN0aW9uIHNldHVwIGZ1bmN0aW9ucy4gVGhlc2UgYXJlIHVubGlrZWx5IHRvIGJlIGhvdC1wYXRoIGZ1bmN0aW9ucy4gVGhpcyBtYWtlcyB0aGVtIGxlc3MgaW50ZXJlc3RpbmcgZm9yIHRyaWdnZXJpbmcgYSByYWNlIGNvbmRpdGlvbiwgc28gSSB3aWxsIGxpa2VseSBpZ25vcmUgdGhlc2UgZm9yIG5vdy4gU2ltaWxhcmx5LCBgc21jZF9jZGNfcnhfdHNrbGV0YCBhbmQgYHNtY19jZGNfcnhfaGFuZGxlcmAgYXJlIHJlY2VpdmUgaGFuZGxlcnMsIGFsc28gaW4gdGhlIGRhdGEgcGF0aCwgYnV0IFNNQy1zcGVjaWZpYywgbWVhbmluZyB0aGV5IG5lZWQgdG8gYmUgYW5hbHlzZWQgd2l0aCBgc21jX2NkY19tc2dfcmVjdl9hY3Rpb25gLlxuXG5JIHNob3VsZCBwcm9iYWJseSBkb3VibGUtY2hlY2sgaWYgYW55IG90aGVyIGNvbmZpZ3MgYXJlIG5lZWRlZCBmb3IgU01DLVIuIFNNQy1SIHJlbGllcyBvbiBSRE1BLCBzbyBgQ09ORklHX0lORklOSUJBTkRgIHdvdWxkIGJlIHJlbGV2YW50LiBIb3dldmVyLCBmb3IgYSBxdWljayB3aW4sIEkgY2FuIGZvY3VzIG9uIFNNQy1EIHdpdGggYERJQlNfTE9gLCB3aGljaCBpcyBlYXNpZXIgdG8gZnV6eiB3aXRoaW4gYSB2aXJ0dWFsIG1hY2hpbmUuIFNvLCBzdGlja2luZyB3aXRoIGBTTUNgLCBgRElCU2AsIGFuZCBgRElCU19MT2Agc2VlbXMgbGlrZSB0aGUgbW9zdCBlZmZlY3RpdmUgYXBwcm9hY2ggZm9yIGluaXRpYWwgdGVzdGluZy5cblxuTGV0IG1lIGp1c3QgcXVpY2tseSB2ZXJpZnkgdGhvc2UgZnVuY3Rpb24gbmFtZXMgdG8gYXZvaWQgYW55IHR5cG9zIG9yIGNvbmZ1c2lvbjogYHNtY19jZGNfbXNnX3JlY3ZfYWN0aW9uYCwgYHNtY2RfY2RjX3J4X3Rza2xldGAsIGBzbWNfY2RjX3J4X2hhbmRsZXJgLCBgX19zbWNfYnVmX2NyZWF0ZWAsIGFuZCBgc21jZF9idWZfYXR0YWNoYC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTAzMDMsIk91dHB1dFRva2VucyI6MTQ5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzAyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDEwOjEzOjU4LjQ1MjcxOTM1MloiLCJTZXEiOjI0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjg5MDg1NjU0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJTTUNcIixcbiAgICBcIkRJQlNcIixcbiAgICBcIkRJQlNfTE9cIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJzbWNfY2RjX21zZ19yZWN2X2FjdGlvblwiLFxuICAgIFwic21jZF9jZGNfcnhfdHNrbGV0XCIsXG4gICAgXCJzbWNfY2RjX3J4X2hhbmRsZXJcIixcbiAgICBcIl9fc21jX2J1Zl9jcmVhdGVcIixcbiAgICBcInNtY2RfYnVmX2F0dGFjaFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgcmFjZSBjb25kaXRpb24gaW4gdGhlIFNNQyBwcm90b2NvbCB3aGVyZSBhIGNvbmN1cnJlbnQgQ0RDIHJlY2VpdmUgaGFuZGxlciBjb3VsZCBhY2Nlc3MgdW5pbml0aWFsaXplZCBvciBOVUxMIGJ1ZmZlciBkZXNjcmlwdG9ycyBkdXJpbmcgY29ubmVjdGlvbiBzZXR1cC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIFNNQyBsb2dpYyBhbmQgaXMgcmVhY2hhYmxlIHZpYSB0aGUgbG9vcGJhY2sgSVNNIGRldmljZS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJTTUNcIixcbiAgICBcIkRJQlNcIixcbiAgICBcIkRJQlNfTE9cIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJzbWNfY2RjX21zZ19yZWN2X2FjdGlvblwiLFxuICAgIFwic21jZF9jZGNfcnhfdHNrbGV0XCIsXG4gICAgXCJzbWNfY2RjX3J4X2hhbmRsZXJcIixcbiAgICBcIl9fc21jX2J1Zl9jcmVhdGVcIixcbiAgICBcInNtY2RfYnVmX2F0dGFjaFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgcmFjZSBjb25kaXRpb24gaW4gdGhlIFNNQyBwcm90b2NvbCB3aGVyZSBhIGNvbmN1cnJlbnQgQ0RDIHJlY2VpdmUgaGFuZGxlciBjb3VsZCBhY2Nlc3MgdW5pbml0aWFsaXplZCBvciBOVUxMIGJ1ZmZlciBkZXNjcmlwdG9ycyBkdXJpbmcgY29ubmVjdGlvbiBzZXR1cC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIFNNQyBsb2dpYyBhbmQgaXMgcmVhY2hhYmxlIHZpYSB0aGUgbG9vcGJhY2sgSVNNIGRldmljZS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowjnzc9[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-15 10:00:04 +0000 UTC FinishedAt: 2026-07-15 10:14:00 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "linux-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next", "commit_hash": "3f1f755366687d051174739fb99f7d560202f60b", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "SMC", "DIBS", "DIBS_LO" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "linux-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next", "commit_hash": "3f1f755366687d051174739fb99f7d560202f60b", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "SMC", "DIBS", "DIBS_LO" ], "series_id": "4e8378be-b72c-4fa8-8210-5ed8232e2594" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "smc_cdc_msg_recv_action", "smcd_cdc_rx_tsklet", "smc_cdc_rx_handler", "__smc_buf_create", "smcd_buf_attach" ], "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+CgkJCTx0ZD4yMDI2LzA3LzE1IDEwOjEzPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1NNQyYjMzQ7LAogICAgJiMzNDtESUJTJiMzNDssCiAgICAmIzM0O0RJQlNfTE8mIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtzbWNfY2RjX21zZ19yZWN2X2FjdGlvbiYjMzQ7LAogICAgJiMzNDtzbWNkX2NkY19yeF90c2tsZXQmIzM0OywKICAgICYjMzQ7c21jX2NkY19yeF9oYW5kbGVyJiMzNDssCiAgICAmIzM0O19fc21jX2J1Zl9jcmVhdGUmIzM0OywKICAgICYjMzQ7c21jZF9idWZfYXR0YWNoJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgcmFjZSBjb25kaXRpb24gaW4gdGhlIFNNQyBwcm90b2NvbCB3aGVyZSBhIGNvbmN1cnJlbnQgQ0RDIHJlY2VpdmUgaGFuZGxlciBjb3VsZCBhY2Nlc3MgdW5pbml0aWFsaXplZCBvciBOVUxMIGJ1ZmZlciBkZXNjcmlwdG9ycyBkdXJpbmcgY29ubmVjdGlvbiBzZXR1cC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIFNNQyBsb2dpYyBhbmQgaXMgcmVhY2hhYmxlIHZpYSB0aGUgbG9vcGJhY2sgSVNNIGRldmljZS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNSAxMDoxMzwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IGZiNmMzZDJlYTU3Y2E0NWE0NWNlYWNiNDk0NGZlZTQxMmMwNGE3NWZcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgV2VkIEp1bCAxNSAxMDoxMzoxMCAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9uZXQvc21jL3NtY19jZGMuYyBiL25ldC9zbWMvc21jX2NkYy5jXG5pbmRleCAzMmQ2ZDAzZGYzMjE0NS4uMmNkMGVlN2I1MWMyMjYgMTAwNjQ0XG4tLS0gYS9uZXQvc21jL3NtY19jZGMuY1xuJiM0MzsmIzQzOyYjNDM7IGIvbmV0L3NtYy9zbWNfY2RjLmNcbkBAIC0zMzIsNiAmIzQzOzMzMiw3IEBAIHN0YXRpYyB2b2lkIHNtY19jZGNfbXNnX3JlY3ZfYWN0aW9uKHN0cnVjdCBzbWNfc29jayAqc21jLFxuIHtcbiBcdHVuaW9uIHNtY19ob3N0X2N1cnNvciBjb25zX29sZCwgcHJvZF9vbGQ7XG4gXHRzdHJ1Y3Qgc21jX2Nvbm5lY3Rpb24gKmNvbm4gPSBcdTAwMjZzbWMtXHUwMDNlY29ubjtcbiYjNDM7XHRzdHJ1Y3Qgc21jX2J1Zl9kZXNjICpzbmRidWZfZGVzYztcbiBcdGludCBkaWZmX2NvbnMsIGRpZmZfcHJvZCwgZGlmZl90eDtcbiBcbiBcdHNtY19jdXJzX2NvcHkoXHUwMDI2cHJvZF9vbGQsIFx1MDAyNmNvbm4tXHUwMDNlbG9jYWxfcnhfY3RybC5wcm9kLCBjb25uKTtcbkBAIC0zNTMsMTIgJiM0MzszNTQsMjAgQEAgc3RhdGljIHZvaWQgc21jX2NkY19tc2dfcmVjdl9hY3Rpb24oc3RydWN0IHNtY19zb2NrICpzbWMsXG4gXHRcdCAqIHBlZXIgUk1CLCB0aGVuIHVwZGF0ZSB0eF9jdXJzX2ZpbiBhbmQgc25kYnVmX3NwYWNlXG4gXHRcdCAqIGhlcmUgc2luY2UgcGVlciBoYXMgYWxyZWFkeSBjb25zdW1lZCB0aGUgZGF0YS5cbiBcdFx0ICovXG4mIzQzO1x0XHQvKiBQYWlyIHdpdGggc21wX3N0b3JlX3JlbGVhc2UoKSBpbiBzbWNkX2J1Zl9hdHRhY2goKTogdGhlIGdob3N0XG4mIzQzO1x0XHQgKiBzbmRidWZfZGVzYyBpcyBhdHRhY2hlZCBhZnRlciB0aGUgY29ubmVjdGlvbiBpcyByZWFjaGFibGUgdG9cbiYjNDM7XHRcdCAqIHRoZSBJU00gZGV2aWNlLCBzbyBhY3F1aXJlIGl0IGFuZCBza2lwIHRoZSB1cGRhdGUgd2hpbGUgaXQgaXNcbiYjNDM7XHRcdCAqIHVuc2V0IC0tIGF2b2lkcyBhIE5VTEwgZGVyZWYgYW5kIGEgbG9hZCBvZiBhbiB1bmluaXRpYWxpc2VkXG4mIzQzO1x0XHQgKiBidWZmZXIuXG4mIzQzO1x0XHQgKi9cbiYjNDM7XHRcdHNuZGJ1Zl9kZXNjID0gc21wX2xvYWRfYWNxdWlyZShcdTAwMjZjb25uLVx1MDAzZXNuZGJ1Zl9kZXNjKTtcbiBcdFx0aWYgKGNvbm4tXHUwMDNlbGdyLVx1MDAzZWlzX3NtY2QgXHUwMDI2XHUwMDI2XG4tXHRcdCAgICBzbWNfaXNtX3N1cHBvcnRfZG1iX25vY29weShjb25uLVx1MDAzZWxnci1cdTAwM2VzbWNkKSkge1xuJiM0MztcdFx0ICAgIHNtY19pc21fc3VwcG9ydF9kbWJfbm9jb3B5KGNvbm4tXHUwMDNlbGdyLVx1MDAzZXNtY2QpIFx1MDAyNlx1MDAyNlxuJiM0MztcdFx0ICAgIHNuZGJ1Zl9kZXNjKSB7XG4gXHRcdFx0LyogQ2FsY3VsYXRlIGNvbnN1bWVkIGRhdGEgYW5kXG4gXHRcdFx0ICogaW5jcmVtZW50IGZyZWUgc2VuZCBidWZmZXIgc3BhY2UuXG4gXHRcdFx0ICovXG4tXHRcdFx0ZGlmZl90eCA9IHNtY19jdXJzX2RpZmYoY29ubi1cdTAwM2VzbmRidWZfZGVzYy1cdTAwM2VsZW4sXG4mIzQzO1x0XHRcdGRpZmZfdHggPSBzbWNfY3Vyc19kaWZmKHNuZGJ1Zl9kZXNjLVx1MDAzZWxlbixcbiBcdFx0XHRcdFx0XHRcdTAwMjZjb25uLVx1MDAzZXR4X2N1cnNfZmluLFxuIFx0XHRcdFx0XHRcdFx1MDAyNmNvbm4tXHUwMDNlbG9jYWxfcnhfY3RybC5jb25zKTtcbiBcdFx0XHQvKiBpbmNyZWFzZSBsb2NhbCBzbmRidWYgc3BhY2UgYW5kIGZpbl9jdXJzICovXG5AQCAtNDQzLDEzICYjNDM7NDUyLDIxIEBAIHN0YXRpYyB2b2lkIHNtY2RfY2RjX3J4X3Rza2xldChzdHJ1Y3QgdGFza2xldF9zdHJ1Y3QgKnQpXG4ge1xuIFx0c3RydWN0IHNtY19jb25uZWN0aW9uICpjb25uID0gZnJvbV90YXNrbGV0KGNvbm4sIHQsIHJ4X3Rza2xldCk7XG4gXHRzdHJ1Y3Qgc21jZF9jZGNfbXNnICpkYXRhX2NkYztcbiYjNDM7XHRzdHJ1Y3Qgc21jX2J1Zl9kZXNjICpybWJfZGVzYztcbiBcdHN0cnVjdCBzbWNkX2NkY19tc2cgY2RjO1xuIFx0c3RydWN0IHNtY19zb2NrICpzbWM7XG4gXG4gXHRpZiAoIWNvbm4gfHwgY29ubi1cdTAwM2VraWxsZWQpXG4gXHRcdHJldHVybjtcbiYjNDM7XHQvKiBQYWlyIHdpdGggc21wX3N0b3JlX3JlbGVhc2UoKSBpbiBfX3NtY19idWZfY3JlYXRlKCk6IHRoZSBjb25uZWN0aW9uXG4mIzQzO1x0ICogaXMgcHVibGlzaGVkIGJlZm9yZSBpdHMgUk1CIGlzIGFsbG9jYXRlZCwgc28gYmFpbCB3aGlsZSBybWJfZGVzYyBpc1xuJiM0MztcdCAqIHVuc2V0IHRvIGF2b2lkIGEgTlVMTCBkZXJlZiBhbmQgYSBsb2FkIG9mIGFuIHVuaW5pdGlhbGlzZWQgYnVmZmVyLlxuJiM0MztcdCAqL1xuJiM0MztcdHJtYl9kZXNjID0gc21wX2xvYWRfYWNxdWlyZShcdTAwMjZjb25uLVx1MDAzZXJtYl9kZXNjKTtcbiYjNDM7XHRpZiAoIXJtYl9kZXNjKVxuJiM0MztcdFx0cmV0dXJuO1xuIFxuLVx0ZGF0YV9jZGMgPSAoc3RydWN0IHNtY2RfY2RjX21zZyAqKWNvbm4tXHUwMDNlcm1iX2Rlc2MtXHUwMDNlY3B1X2FkZHI7XG4mIzQzO1x0ZGF0YV9jZGMgPSAoc3RydWN0IHNtY2RfY2RjX21zZyAqKXJtYl9kZXNjLVx1MDAzZWNwdV9hZGRyO1xuIFx0c21jZF9jdXJzX2NvcHkoXHUwMDI2Y2RjLnByb2QsIFx1MDAyNmRhdGFfY2RjLVx1MDAzZXByb2QsIGNvbm4pO1xuIFx0c21jZF9jdXJzX2NvcHkoXHUwMDI2Y2RjLmNvbnMsIFx1MDAyNmRhdGFfY2RjLVx1MDAzZWNvbnMsIGNvbm4pO1xuIFx0c21jID0gY29udGFpbmVyX29mKGNvbm4sIHN0cnVjdCBzbWNfc29jaywgY29ubik7XG5AQCAtNDgzLDcgJiM0Mzs1MDAsMTEgQEAgc3RhdGljIHZvaWQgc21jX2NkY19yeF9oYW5kbGVyKHN0cnVjdCBpYl93YyAqd2MsIHZvaWQgKmJ1ZilcbiBcdGxnciA9IHNtY19nZXRfbGdyKGxpbmspO1xuIFx0cmVhZF9sb2NrX2JoKFx1MDAyNmxnci1cdTAwM2Vjb25uc19sb2NrKTtcbiBcdGNvbm4gPSBzbWNfbGdyX2ZpbmRfY29ubihudG9obChjZGMtXHUwMDNldG9rZW4pLCBsZ3IpO1xuLVx0aWYgKCFjb25uIHx8IGNvbm4tXHUwMDNlb3V0X29mX3N5bmMpIHtcbiYjNDM7XHQvKiBQYWlyIHdpdGggc21wX3N0b3JlX3JlbGVhc2UoKSBpbiBfX3NtY19idWZfY3JlYXRlKCk6IGJhaWwgd2hpbGUgdGhlXG4mIzQzO1x0ICogUk1CIGlzIHVuc2V0IChzbWNfY2RjX21zZ19yZWN2X2FjdGlvbigpIGRlcmVmZXJlbmNlcyBpdCkgdG8gYXZvaWQgYVxuJiM0MztcdCAqIE5VTEwgZGVyZWYgYW5kIGEgc3RhbGUtYnVmZmVyIHJlYWQgaW4gdGhlIGNvbm5lY3Rpb24gc2V0dXAgd2luZG93LlxuJiM0MztcdCAqL1xuJiM0MztcdGlmICghY29ubiB8fCBjb25uLVx1MDAzZW91dF9vZl9zeW5jIHx8ICFzbXBfbG9hZF9hY3F1aXJlKFx1MDAyNmNvbm4tXHUwMDNlcm1iX2Rlc2MpKSB7XG4gXHRcdHJlYWRfdW5sb2NrX2JoKFx1MDAyNmxnci1cdTAwM2Vjb25uc19sb2NrKTtcbiBcdFx0cmV0dXJuO1xuIFx0fVxuZGlmZiAtLWdpdCBhL25ldC9zbWMvc21jX2NvcmUuYyBiL25ldC9zbWMvc21jX2NvcmUuY1xuaW5kZXggY2Y2YjYyMGZlZjA1ZjkuLmQ5NGI3MjhjMGQ2OGM3IDEwMDY0NFxuLS0tIGEvbmV0L3NtYy9zbWNfY29yZS5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvc21jL3NtY19jb3JlLmNcbkBAIC0yNDk5LDcgJiM0MzsyNDk5LDEzIEBAIHN0YXRpYyBpbnQgX19zbWNfYnVmX2NyZWF0ZShzdHJ1Y3Qgc21jX3NvY2sgKnNtYywgYm9vbCBpc19zbWNkLCBib29sIGlzX3JtYilcbiBcdH1cbiBcbiBcdGlmIChpc19ybWIpIHtcbi1cdFx0Y29ubi1cdTAwM2VybWJfZGVzYyA9IGJ1Zl9kZXNjO1xuJiM0MztcdFx0LyogUHVibGlzaCB3aXRoIHJlbGVhc2Ugc2VtYW50aWNzOiB0aGUgY29ubmVjdGlvbiBpcyBhbHJlYWR5IGluXG4mIzQzO1x0XHQgKiB0aGUgbGluayBncm91cCYjMzk7cyB0b2tlbiB0cmVlLCBzbyBhIGNvbmN1cnJlbnQgQ0RDIHJlY2VpdmVcbiYjNDM7XHRcdCAqIGhhbmRsZXIgbXVzdCBvYnNlcnZlIGEgZnVsbHkgaW5pdGlhbGlzZWQgYnVmZmVyIG9uY2UgaXQgc2Vlc1xuJiM0MztcdFx0ICogYSBub24tTlVMTCBybWJfZGVzYy4gIFBhaXJzIHdpdGggdGhlIHNtcF9sb2FkX2FjcXVpcmUoKSBpblxuJiM0MztcdFx0ICogdGhlIENEQyByZWNlaXZlIHBhdGguXG4mIzQzO1x0XHQgKi9cbiYjNDM7XHRcdHNtcF9zdG9yZV9yZWxlYXNlKFx1MDAyNmNvbm4tXHUwMDNlcm1iX2Rlc2MsIGJ1Zl9kZXNjKTtcbiBcdFx0Y29ubi1cdTAwM2VybWJlX3NpemVfY29tcCA9IGJ1ZnNpemVfY29tcDtcbiBcdFx0c21jLVx1MDAzZXNrLnNrX3JjdmJ1ZiA9IGJ1ZnNpemUgKiAyO1xuIFx0XHRhdG9taWNfc2V0KFx1MDAyNmNvbm4tXHUwMDNlYnl0ZXNfdG9fcmN2LCAwKTtcbkBAIC0yNTk5LDcgJiM0MzsyNjA1LDEzIEBAIGludCBzbWNkX2J1Zl9hdHRhY2goc3RydWN0IHNtY19zb2NrICpzbWMpXG4gXHRidWZfZGVzYy1cdTAwM2VjcHVfYWRkciA9XG4gXHRcdCh1OCAqKWJ1Zl9kZXNjLVx1MDAzZWNwdV9hZGRyICYjNDM7IHNpemVvZihzdHJ1Y3Qgc21jZF9jZGNfbXNnKTtcbiBcdGJ1Zl9kZXNjLVx1MDAzZWxlbiAtPSBzaXplb2Yoc3RydWN0IHNtY2RfY2RjX21zZyk7XG4tXHRjb25uLVx1MDAzZXNuZGJ1Zl9kZXNjID0gYnVmX2Rlc2M7XG4mIzQzO1x0LyogUHVibGlzaCB3aXRoIHJlbGVhc2Ugc2VtYW50aWNzOiB0aGUgY29ubmVjdGlvbiBpcyBhbHJlYWR5IHJlYWNoYWJsZVxuJiM0MztcdCAqIHRvIHRoZSBJU00gZGV2aWNlIChzbWNfaXNtX3NldF9jb25uKCkgcmFuIGluIF9fc21jX2J1Zl9jcmVhdGUoKSksIHNvXG4mIzQzO1x0ICogdGhlIENEQyByZWNlaXZlIHRhc2tsZXQgbXVzdCBvYnNlcnZlIGEgZnVsbHkgaW5pdGlhbGlzZWQgZ2hvc3QgYnVmZmVyXG4mIzQzO1x0ICogb25jZSBpdCBzZWVzIGEgbm9uLU5VTEwgc25kYnVmX2Rlc2MuICBQYWlycyB3aXRoIHNtcF9sb2FkX2FjcXVpcmUoKVxuJiM0MztcdCAqIGluIHNtY19jZGNfbXNnX3JlY3ZfYWN0aW9uKCkuXG4mIzQzO1x0ICovXG4mIzQzO1x0c21wX3N0b3JlX3JlbGVhc2UoXHUwMDI2Y29ubi1cdTAwM2VzbmRidWZfZGVzYywgYnVmX2Rlc2MpO1xuIFx0Y29ubi1cdTAwM2VzbmRidWZfZGVzYy1cdTAwM2V1c2VkID0gMTtcbiBcdGF0b21pY19zZXQoXHUwMDI2Y29ubi1cdTAwM2VzbmRidWZfc3BhY2UsIGNvbm4tXHUwMDNlc25kYnVmX2Rlc2MtXHUwMDNlbGVuKTtcbiBcdHJldHVybiAwO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE1IDEwOjEzPC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1NNQyYjMzQ7LAogICAgJiMzNDtESUJTJiMzNDssCiAgICAmIzM0O0RJQlNfTE8mIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtzbWNfY2RjX21zZ19yZWN2X2FjdGlvbiYjMzQ7LAogICAgJiMzNDtzbWNkX2NkY19yeF90c2tsZXQmIzM0OywKICAgICYjMzQ7c21jX2NkY19yeF9oYW5kbGVyJiMzNDssCiAgICAmIzM0O19fc21jX2J1Zl9jcmVhdGUmIzM0OywKICAgICYjMzQ7c21jZF9idWZfYXR0YWNoJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgcmFjZSBjb25kaXRpb24gaW4gdGhlIFNNQyBwcm90b2NvbCB3aGVyZSBhIGNvbmN1cnJlbnQgQ0RDIHJlY2VpdmUgaGFuZGxlciBjb3VsZCBhY2Nlc3MgdW5pbml0aWFsaXplZCBvciBOVUxMIGJ1ZmZlciBkZXNjcmlwdG9ycyBkdXJpbmcgY29ubmVjdGlvbiBzZXR1cC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIFNNQyBsb2dpYyBhbmQgaXMgcmVhY2hhYmxlIHZpYSB0aGUgbG9vcGJhY2sgSVNNIGRldmljZS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLApldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXQKICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LAogICBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgZmI2YzNkMmVhNTdjYTQ1YTQ1Y2VhY2I0OTQ0ZmVlNDEyYzA0YTc1ZgpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBXZWQgSnVsIDE1IDEwOjEzOjEwIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvbmV0L3NtYy9zbWNfY2RjLmMgYi9uZXQvc21jL3NtY19jZGMuYwppbmRleCAzMmQ2ZDAzZGYzMjE0NS4uMmNkMGVlN2I1MWMyMjYgMTAwNjQ0Ci0tLSBhL25ldC9zbWMvc21jX2NkYy5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC9zbWMvc21jX2NkYy5jCkBAIC0zMzIsNiAmIzQzOzMzMiw3IEBAIHN0YXRpYyB2b2lkIHNtY19jZGNfbXNnX3JlY3ZfYWN0aW9uKHN0cnVjdCBzbWNfc29jayAqc21jLAogewogCXVuaW9uIHNtY19ob3N0X2N1cnNvciBjb25zX29sZCwgcHJvZF9vbGQ7CiAJc3RydWN0IHNtY19jb25uZWN0aW9uICpjb25uID0gJmFtcDtzbWMtJmd0O2Nvbm47CiYjNDM7CXN0cnVjdCBzbWNfYnVmX2Rlc2MgKnNuZGJ1Zl9kZXNjOwogCWludCBkaWZmX2NvbnMsIGRpZmZfcHJvZCwgZGlmZl90eDsKIAogCXNtY19jdXJzX2NvcHkoJmFtcDtwcm9kX29sZCwgJmFtcDtjb25uLSZndDtsb2NhbF9yeF9jdHJsLnByb2QsIGNvbm4pOwpAQCAtMzUzLDEyICYjNDM7MzU0LDIwIEBAIHN0YXRpYyB2b2lkIHNtY19jZGNfbXNnX3JlY3ZfYWN0aW9uKHN0cnVjdCBzbWNfc29jayAqc21jLAogCQkgKiBwZWVyIFJNQiwgdGhlbiB1cGRhdGUgdHhfY3Vyc19maW4gYW5kIHNuZGJ1Zl9zcGFjZQogCQkgKiBoZXJlIHNpbmNlIHBlZXIgaGFzIGFscmVhZHkgY29uc3VtZWQgdGhlIGRhdGEuCiAJCSAqLwomIzQzOwkJLyogUGFpciB3aXRoIHNtcF9zdG9yZV9yZWxlYXNlKCkgaW4gc21jZF9idWZfYXR0YWNoKCk6IHRoZSBnaG9zdAomIzQzOwkJICogc25kYnVmX2Rlc2MgaXMgYXR0YWNoZWQgYWZ0ZXIgdGhlIGNvbm5lY3Rpb24gaXMgcmVhY2hhYmxlIHRvCiYjNDM7CQkgKiB0aGUgSVNNIGRldmljZSwgc28gYWNxdWlyZSBpdCBhbmQgc2tpcCB0aGUgdXBkYXRlIHdoaWxlIGl0IGlzCiYjNDM7CQkgKiB1bnNldCAtLSBhdm9pZHMgYSBOVUxMIGRlcmVmIGFuZCBhIGxvYWQgb2YgYW4gdW5pbml0aWFsaXNlZAomIzQzOwkJICogYnVmZmVyLgomIzQzOwkJICovCiYjNDM7CQlzbmRidWZfZGVzYyA9IHNtcF9sb2FkX2FjcXVpcmUoJmFtcDtjb25uLSZndDtzbmRidWZfZGVzYyk7CiAJCWlmIChjb25uLSZndDtsZ3ItJmd0O2lzX3NtY2QgJmFtcDsmYW1wOwotCQkgICAgc21jX2lzbV9zdXBwb3J0X2RtYl9ub2NvcHkoY29ubi0mZ3Q7bGdyLSZndDtzbWNkKSkgewomIzQzOwkJICAgIHNtY19pc21fc3VwcG9ydF9kbWJfbm9jb3B5KGNvbm4tJmd0O2xnci0mZ3Q7c21jZCkgJmFtcDsmYW1wOwomIzQzOwkJICAgIHNuZGJ1Zl9kZXNjKSB7CiAJCQkvKiBDYWxjdWxhdGUgY29uc3VtZWQgZGF0YSBhbmQKIAkJCSAqIGluY3JlbWVudCBmcmVlIHNlbmQgYnVmZmVyIHNwYWNlLgogCQkJICovCi0JCQlkaWZmX3R4ID0gc21jX2N1cnNfZGlmZihjb25uLSZndDtzbmRidWZfZGVzYy0mZ3Q7bGVuLAomIzQzOwkJCWRpZmZfdHggPSBzbWNfY3Vyc19kaWZmKHNuZGJ1Zl9kZXNjLSZndDtsZW4sCiAJCQkJCQkmYW1wO2Nvbm4tJmd0O3R4X2N1cnNfZmluLAogCQkJCQkJJmFtcDtjb25uLSZndDtsb2NhbF9yeF9jdHJsLmNvbnMpOwogCQkJLyogaW5jcmVhc2UgbG9jYWwgc25kYnVmIHNwYWNlIGFuZCBmaW5fY3VycyAqLwpAQCAtNDQzLDEzICYjNDM7NDUyLDIxIEBAIHN0YXRpYyB2b2lkIHNtY2RfY2RjX3J4X3Rza2xldChzdHJ1Y3QgdGFza2xldF9zdHJ1Y3QgKnQpCiB7CiAJc3RydWN0IHNtY19jb25uZWN0aW9uICpjb25uID0gZnJvbV90YXNrbGV0KGNvbm4sIHQsIHJ4X3Rza2xldCk7CiAJc3RydWN0IHNtY2RfY2RjX21zZyAqZGF0YV9jZGM7CiYjNDM7CXN0cnVjdCBzbWNfYnVmX2Rlc2MgKnJtYl9kZXNjOwogCXN0cnVjdCBzbWNkX2NkY19tc2cgY2RjOwogCXN0cnVjdCBzbWNfc29jayAqc21jOwogCiAJaWYgKCFjb25uIHx8IGNvbm4tJmd0O2tpbGxlZCkKIAkJcmV0dXJuOwomIzQzOwkvKiBQYWlyIHdpdGggc21wX3N0b3JlX3JlbGVhc2UoKSBpbiBfX3NtY19idWZfY3JlYXRlKCk6IHRoZSBjb25uZWN0aW9uCiYjNDM7CSAqIGlzIHB1Ymxpc2hlZCBiZWZvcmUgaXRzIFJNQiBpcyBhbGxvY2F0ZWQsIHNvIGJhaWwgd2hpbGUgcm1iX2Rlc2MgaXMKJiM0MzsJICogdW5zZXQgdG8gYXZvaWQgYSBOVUxMIGRlcmVmIGFuZCBhIGxvYWQgb2YgYW4gdW5pbml0aWFsaXNlZCBidWZmZXIuCiYjNDM7CSAqLwomIzQzOwlybWJfZGVzYyA9IHNtcF9sb2FkX2FjcXVpcmUoJmFtcDtjb25uLSZndDtybWJfZGVzYyk7CiYjNDM7CWlmICghcm1iX2Rlc2MpCiYjNDM7CQlyZXR1cm47CiAKLQlkYXRhX2NkYyA9IChzdHJ1Y3Qgc21jZF9jZGNfbXNnICopY29ubi0mZ3Q7cm1iX2Rlc2MtJmd0O2NwdV9hZGRyOwomIzQzOwlkYXRhX2NkYyA9IChzdHJ1Y3Qgc21jZF9jZGNfbXNnICopcm1iX2Rlc2MtJmd0O2NwdV9hZGRyOwogCXNtY2RfY3Vyc19jb3B5KCZhbXA7Y2RjLnByb2QsICZhbXA7ZGF0YV9jZGMtJmd0O3Byb2QsIGNvbm4pOwogCXNtY2RfY3Vyc19jb3B5KCZhbXA7Y2RjLmNvbnMsICZhbXA7ZGF0YV9jZGMtJmd0O2NvbnMsIGNvbm4pOwogCXNtYyA9IGNvbnRhaW5lcl9vZihjb25uLCBzdHJ1Y3Qgc21jX3NvY2ssIGNvbm4pOwpAQCAtNDgzLDcgJiM0Mzs1MDAsMTEgQEAgc3RhdGljIHZvaWQgc21jX2NkY19yeF9oYW5kbGVyKHN0cnVjdCBpYl93YyAqd2MsIHZvaWQgKmJ1ZikKIAlsZ3IgPSBzbWNfZ2V0X2xncihsaW5rKTsKIAlyZWFkX2xvY2tfYmgoJmFtcDtsZ3ItJmd0O2Nvbm5zX2xvY2spOwogCWNvbm4gPSBzbWNfbGdyX2ZpbmRfY29ubihudG9obChjZGMtJmd0O3Rva2VuKSwgbGdyKTsKLQlpZiAoIWNvbm4gfHwgY29ubi0mZ3Q7b3V0X29mX3N5bmMpIHsKJiM0MzsJLyogUGFpciB3aXRoIHNtcF9zdG9yZV9yZWxlYXNlKCkgaW4gX19zbWNfYnVmX2NyZWF0ZSgpOiBiYWlsIHdoaWxlIHRoZQomIzQzOwkgKiBSTUIgaXMgdW5zZXQgKHNtY19jZGNfbXNnX3JlY3ZfYWN0aW9uKCkgZGVyZWZlcmVuY2VzIGl0KSB0byBhdm9pZCBhCiYjNDM7CSAqIE5VTEwgZGVyZWYgYW5kIGEgc3RhbGUtYnVmZmVyIHJlYWQgaW4gdGhlIGNvbm5lY3Rpb24gc2V0dXAgd2luZG93LgomIzQzOwkgKi8KJiM0MzsJaWYgKCFjb25uIHx8IGNvbm4tJmd0O291dF9vZl9zeW5jIHx8ICFzbXBfbG9hZF9hY3F1aXJlKCZhbXA7Y29ubi0mZ3Q7cm1iX2Rlc2MpKSB7CiAJCXJlYWRfdW5sb2NrX2JoKCZhbXA7bGdyLSZndDtjb25uc19sb2NrKTsKIAkJcmV0dXJuOwogCX0KZGlmZiAtLWdpdCBhL25ldC9zbWMvc21jX2NvcmUuYyBiL25ldC9zbWMvc21jX2NvcmUuYwppbmRleCBjZjZiNjIwZmVmMDVmOS4uZDk0YjcyOGMwZDY4YzcgMTAwNjQ0Ci0tLSBhL25ldC9zbWMvc21jX2NvcmUuYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvc21jL3NtY19jb3JlLmMKQEAgLTI0OTksNyAmIzQzOzI0OTksMTMgQEAgc3RhdGljIGludCBfX3NtY19idWZfY3JlYXRlKHN0cnVjdCBzbWNfc29jayAqc21jLCBib29sIGlzX3NtY2QsIGJvb2wgaXNfcm1iKQogCX0KIAogCWlmIChpc19ybWIpIHsKLQkJY29ubi0mZ3Q7cm1iX2Rlc2MgPSBidWZfZGVzYzsKJiM0MzsJCS8qIFB1Ymxpc2ggd2l0aCByZWxlYXNlIHNlbWFudGljczogdGhlIGNvbm5lY3Rpb24gaXMgYWxyZWFkeSBpbgomIzQzOwkJICogdGhlIGxpbmsgZ3JvdXAmIzM5O3MgdG9rZW4gdHJlZSwgc28gYSBjb25jdXJyZW50IENEQyByZWNlaXZlCiYjNDM7CQkgKiBoYW5kbGVyIG11c3Qgb2JzZXJ2ZSBhIGZ1bGx5IGluaXRpYWxpc2VkIGJ1ZmZlciBvbmNlIGl0IHNlZXMKJiM0MzsJCSAqIGEgbm9uLU5VTEwgcm1iX2Rlc2MuICBQYWlycyB3aXRoIHRoZSBzbXBfbG9hZF9hY3F1aXJlKCkgaW4KJiM0MzsJCSAqIHRoZSBDREMgcmVjZWl2ZSBwYXRoLgomIzQzOwkJICovCiYjNDM7CQlzbXBfc3RvcmVfcmVsZWFzZSgmYW1wO2Nvbm4tJmd0O3JtYl9kZXNjLCBidWZfZGVzYyk7CiAJCWNvbm4tJmd0O3JtYmVfc2l6ZV9jb21wID0gYnVmc2l6ZV9jb21wOwogCQlzbWMtJmd0O3NrLnNrX3JjdmJ1ZiA9IGJ1ZnNpemUgKiAyOwogCQlhdG9taWNfc2V0KCZhbXA7Y29ubi0mZ3Q7Ynl0ZXNfdG9fcmN2LCAwKTsKQEAgLTI1OTksNyAmIzQzOzI2MDUsMTMgQEAgaW50IHNtY2RfYnVmX2F0dGFjaChzdHJ1Y3Qgc21jX3NvY2sgKnNtYykKIAlidWZfZGVzYy0mZ3Q7Y3B1X2FkZHIgPQogCQkodTggKilidWZfZGVzYy0mZ3Q7Y3B1X2FkZHIgJiM0Mzsgc2l6ZW9mKHN0cnVjdCBzbWNkX2NkY19tc2cpOwogCWJ1Zl9kZXNjLSZndDtsZW4gLT0gc2l6ZW9mKHN0cnVjdCBzbWNkX2NkY19tc2cpOwotCWNvbm4tJmd0O3NuZGJ1Zl9kZXNjID0gYnVmX2Rlc2M7CiYjNDM7CS8qIFB1Ymxpc2ggd2l0aCByZWxlYXNlIHNlbWFudGljczogdGhlIGNvbm5lY3Rpb24gaXMgYWxyZWFkeSByZWFjaGFibGUKJiM0MzsJICogdG8gdGhlIElTTSBkZXZpY2UgKHNtY19pc21fc2V0X2Nvbm4oKSByYW4gaW4gX19zbWNfYnVmX2NyZWF0ZSgpKSwgc28KJiM0MzsJICogdGhlIENEQyByZWNlaXZlIHRhc2tsZXQgbXVzdCBvYnNlcnZlIGEgZnVsbHkgaW5pdGlhbGlzZWQgZ2hvc3QgYnVmZmVyCiYjNDM7CSAqIG9uY2UgaXQgc2VlcyBhIG5vbi1OVUxMIHNuZGJ1Zl9kZXNjLiAgUGFpcnMgd2l0aCBzbXBfbG9hZF9hY3F1aXJlKCkKJiM0MzsJICogaW4gc21jX2NkY19tc2dfcmVjdl9hY3Rpb24oKS4KJiM0MzsJICovCiYjNDM7CXNtcF9zdG9yZV9yZWxlYXNlKCZhbXA7Y29ubi0mZ3Q7c25kYnVmX2Rlc2MsIGJ1Zl9kZXNjKTsKIAljb25uLSZndDtzbmRidWZfZGVzYy0mZ3Q7dXNlZCA9IDE7CiAJYXRvbWljX3NldCgmYW1wO2Nvbm4tJmd0O3NuZGJ1Zl9zcGFjZSwgY29ubi0mZ3Q7c25kYnVmX2Rlc2MtJmd0O2xlbik7CiAJcmV0dXJuIDA7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE1IDEwOjEzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM0MzcKCQkJCQkJCW91dHB1dDogMjkKCQkJCQkJCXRob3VnaHRzOiAyNTkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBTTUMgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7dmUgZ290IGEgcGF0Y2ggaGVyZSB0aGF0JiMzOTtzIHRvdWNoaW5nIGBuZXQvc21jL3NtY19jZGMuY2AgYW5kIGBuZXQvc21jL3NtY19jb3JlLmNgIOKAkyB0aGF0JiMzOTtzIGEga2V5IGFyZWEgZm9yIHRoZSBTaGFyZWQgTWVtb3J5IENvbW11bmljYXRpb25zIHByb3RvY29sLiBUaGUgbWFpbiBmb2N1cyBzZWVtcyB0byBiZSBhcm91bmQgdGhvc2UgbWVtb3J5IGJhcnJpZXJzLCBgc21wX2xvYWRfYWNxdWlyZWAgYW5kIGBzbXBfc3RvcmVfcmVsZWFzZWAsIHdoaWNoIGlzIGNsYXNzaWMuIFRoZXkmIzM5O3JlIGJlaW5nIHBsYWNlZCBhcm91bmQgYWNjZXNzIHRvIGBjb25uLSZndDtybWJfZGVzY2AgYW5kIGBjb25uLSZndDtzbmRidWZfZGVzY2AuIFRoZSBnb2FsIGlzIGNsZWFybHkgdG8gYXZvaWQgcG90ZW50aWFsIE5VTEwgcG9pbnRlciBkZXJlZmVyZW5jZXMgYW5kIHByZXZlbnQgdGhvc2UgbmFzdHkgdW5pbml0aWFsaXplZCBidWZmZXIgcmVhZHMsIHdoaWNoIEkmIzM5O3ZlIHNlZW4gY2F1c2UgZW5vdWdoIHByb2JsZW1zIGluIHRoZSBwYXN0LiBJdCYjMzk7cyBhIGZ1bmN0aW9uYWwgY2hhbmdlLCBub3QgYSBuZXcgZmVhdHVyZSwgYnV0IG5lY2Vzc2FyeSBmb3IgY29ycmVjdG5lc3MuCgpGaXJzdCB0aGluZ3MgZmlyc3Q6IElzIFNNQyBldmVuIGVuYWJsZWQ/IEkgbmVlZCB0byBjaGVjayB0aGUgYnVpbGQgY29uZmlndXJhdGlvbi4gYENPTkZJR19TTUNgIHNob3VsZCBiZSB0aGUgZmxhZy4gSSYjMzk7bGwgbWFrZSBhIG5vdGUgdG8gY29uZmlybSB0aGF0LgoKTm93LCBsZXQmIzM5O3MgZ2V0IGludG8gdGhlIGNvZGUgaXRzZWxmLiBJJiMzOTtsbCBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGltcGFjdCBvZiB0aGVzZSBiYXJyaWVycy4gQmFzZWQgb24gdGhlIHBhdGNoLCBpdCBsb29rcyBsaWtlIHRoZXNlIGFyZSB0aGUgZnVuY3Rpb25zIHRoYXQgd2lsbCBuZWVkIGNsb3NlciBpbnNwZWN0aW9uOiBgc21jX2NkY19tc2dfcmVjdl9hY3Rpb25gLCBgc21jZF9jZGNfcnhfdHNrbGV0YCwgYHNtY19jZGNfcnhfaGFuZGxlcmAsIGBfX3NtY19idWZfY3JlYXRlYCwgYW5kIGBzbWNkX2J1Zl9hdHRhY2hgLiBJJiMzOTtsbCBuZWVkIHRvIHRyYWNlIHRoZSBkYXRhIGZsb3cgdGhyb3VnaCB0aG9zZSBhbmQgc2VlIGV4YWN0bHkgd2hlcmUgdGhlc2UgbWVtb3J5IGJhcnJpZXIgY2hhbmdlcyBhcmUgY3JpdGljYWwuIEkmIzM5O20gZ29pbmcgdG8gdHJhY2sgZG93biB3aGF0IHRoZSByZWxldmFudCBjb25maWdzIGFyZSB0byBzZWUgd2hhdCBwYXJ0cyBvZiB0aGUgU01DIHN0YWNrIGFyZSBhY3R1YWxseSBiZWluZyBtb2RpZmllZC4KClRoaXMgYWxsIHBvaW50cyB0byBlbnN1cmluZyBkYXRhIGNvbnNpc3RlbmN5IGJldHdlZW4gdGhlIGNvcmVzIGR1cmluZyBjb21tdW5pY2F0aW9uLiBUaW1lIHRvIGRpdmUgaW50byB0aGVzZSBzcGVjaWZpYyBmdW5jdGlvbnMgYW5kIHVuZGVyc3RhbmQgdGhlIGNvbnRleHQgYmV0dGVyLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE1IDEwOjEzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBTTUMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvc21jL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L3NtYy9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG5uZXQvc21jL0tjb25maWc6Mjpjb25maWcgU01DXG5uZXQvc21jL0tjb25maWctMy1cdHRyaXN0YXRlIFwmIzM0O1NNQyBzb2NrZXQgcHJvdG9jb2wgZmFtaWx5XCYjMzQ7XG4tLVxubmV0L3NtYy9LY29uZmlnLTEzLVxubmV0L3NtYy9LY29uZmlnOjE0OmNvbmZpZyBTTUNfRElBR1xubmV0L3NtYy9LY29uZmlnLTE1LVx0dHJpc3RhdGUgXCYjMzQ7U01DOiBzb2NrZXQgbW9uaXRvcmluZyBpbnRlcmZhY2VcJiMzNDtcbi0tXG5uZXQvc21jL0tjb25maWctMjItXG5uZXQvc21jL0tjb25maWc6MjM6Y29uZmlnIFNNQ19IU19DVFJMX0JQRlxubmV0L3NtYy9LY29uZmlnLTI0LVx0Ym9vbCBcJiMzNDtHZW5lcmljIGVCUEYgaG9vayBmb3IgU01DIGhhbmRzaGFrZSBmbG93XCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMTA6MTM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDI4NgoJCQkJCQkJb3V0cHV0OiAzMQoJCQkJCQkJdGhvdWdodHM6IDk0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGJyZWFrZG93biBvZiB0aGlzLgoKKipJbnZlc3RpZ2F0aW5nIFNNQyBDYXBhYmlsaXRpZXMgYW5kIEltcGxlbWVudGF0aW9uKioKClJpZ2h0LCBzbyB3ZSYjMzk7cmUgbG9va2luZyBhdCBTTUMsIHdoaWNoIGlzIGRlZmluZWQgYXMgYENPTkZJR19TTUNgLiBNeSBmaXJzdCBpbnN0aW5jdCBpcyB0byB1bmRlcnN0YW5kIGl0cyB1bmRlcmx5aW5nIGhhcmR3YXJlIHJlcXVpcmVtZW50cy4gQ2FuIHdlIGdldCBhd2F5IHdpdGggZW11bGF0aW9uLCBvciBpcyBkZWRpY2F0ZWQgaGFyZHdhcmUgZXNzZW50aWFsIGZvciBpdHMgZnVuY3Rpb25hbGl0eT8gVGhlIGtleSBxdWVzdGlvbiBpcyB3aGV0aGVyIHdlIGNhbiBlZmZlY3RpdmVseSBzaW11bGF0ZSB0aGlzIGZvciB0ZXN0aW5nIG9yIGluIGVudmlyb25tZW50cyB3aXRob3V0IHNwZWNpZmljIGhhcmR3YXJlIHN1cHBvcnQuCgpGcm9tIHRoZSBpbmZvcm1hdGlvbiwgSSBzZWUgdGhhdCBTTUMgb3BlcmF0ZXMgaW4gdHdvIHByaW1hcnkgZmxhdm9yczogU01DLVIsIHdoaWNoIGxldmVyYWdlcyBSRE1BLCBhbmQgU01DLUQsIHdoaWNoIHV0aWxpemVzIElTTSAoSW5maW5pQmFuZCBTaGFyZWQgTWVtb3J5KS4gTm93LCBoZXJlJiMzOTtzIHdoZXJlIHRoaW5ncyBnZXQgaW50ZXJlc3Rpbmc6IFNNQy1EIG9mZmVycyBhIHRhbnRhbGl6aW5nIHBvc3NpYmlsaXR5LiBJdCBjYW4gdXRpbGl6ZSBhICYjMzQ7ZHVtbXkmIzM0OyBvciBsb29wYmFjayBJU00gZGV2aWNlLiBUaGlzIGlzIGJyaWxsaWFudDsgaXQgb3BlbnMgZG9vcnMgZm9yIHRlc3RpbmcgYW5kIGRldmVsb3BtZW50IGluIGEgbW9yZSBnZW5lcmFsaXplZCBlbnZpcm9ubWVudC4gSSBzaG91bGQgZGVmaW5pdGVseSBjaGVjayB0aGUga2VybmVsIHNvdXJjZSBjb2RlIHRvIGV4YW1pbmUgdGhlIGxvb3BiYWNrIElTTSBpbXBsZW1lbnRhdGlvbi4gSSYjMzk7bSBnb2luZyB0byBsb29rIGF0IGBuZXQvc21jL3NtY19sb29wYmFjay5jYCBvciBzb21ldGhpbmcgYW5hbG9nb3VzLiBUaGlzIHNob3VsZCB0ZWxsIG1lIGV2ZXJ5dGhpbmcgSSBuZWVkIHRvIGtub3cgYWJvdXQgdGhlIHNvZnR3YXJlIGVtdWxhdGlvbiBhbmQgaXRzIHBvdGVudGlhbCBsaW1pdGF0aW9ucyBvciBmZWF0dXJlcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNSAxMDoxMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O1NNQ19MTyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9zbWMvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMTA6MTM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDY2MgoJCQkJCQkJb3V0cHV0OiAyMwoJCQkJCQkJdGhvdWdodHM6IDEzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqSW52ZXN0aWdhdGluZyB0aGUgU01DIFN1YnN5c3RlbSoqCgpPa2F5LCBmaXJzdCB0aGluZ3MgZmlyc3QsIEkgbmVlZCB0byBnZXQgYSBjbGVhciBwaWN0dXJlIG9mIHdoYXQmIzM5O3MgZ29pbmcgb24uIExldCYjMzk7cyBzdGFydCB3aXRoIGEgc3lzdGVtYXRpYyBhcHByb2FjaC4gVGhlIGluaXRpYWwgaW5zdGluY3QgaXMgdG8gZHJpbGwgZG93biBpbnRvIHRoZSBuZXR3b3JraW5nIHN1YnN5c3RlbS4gVGhhdCB1c3VhbGx5IGdpdmVzIG1lIGEgZ29vZCBvdmVydmlldyBvZiBob3cgdGhpbmdzIGFyZSB3b3JraW5nLiBTbywgbXkgZm9jdXMgd2lsbCBiZSB0aGUgYG5ldC9zbWMvYCBkaXJlY3RvcnkuIFRoYXQmIzM5O3MgdGhlIGxvZ2ljYWwgcGxhY2UgdG8gYmVnaW4gcG9raW5nIGFyb3VuZCBmb3IgYW55IFN5c3RlbSBNYW5hZ2VtZW50IENvbnRyb2xsZXIgcmVsYXRlZCBhY3Rpdml0eSBvciBob29rcyBpbnRvIG5ldHdvcmsgZnVuY3Rpb25hbGl0eS4gVGhpcyBzZWVtcyBsaWtlIGEgcmVhc29uYWJsZSBpbml0aWFsIGNoZWNrIGJlZm9yZSBtb3Zpbmcgb250byBkZWVwZXIgYXNwZWN0cyBvZiB0aGUgc3lzdGVtLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE1IDEwOjEzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Y29kZXNlYXJjaC1kaXItaW5kZXg8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0RpciYjMzQ7OiAmIzM0O25ldC9zbWMvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGVzJiMzNDs6IFsKICAgICYjMzQ7YWZfc21jLmMmIzM0OywKICAgICYjMzQ7c21jLmgmIzM0OywKICAgICYjMzQ7c21jX2NkYy5jJiMzNDssCiAgICAmIzM0O3NtY19jZGMuaCYjMzQ7LAogICAgJiMzNDtzbWNfY2xjLmMmIzM0OywKICAgICYjMzQ7c21jX2NsYy5oJiMzNDssCiAgICAmIzM0O3NtY19jbG9zZS5jJiMzNDssCiAgICAmIzM0O3NtY19jbG9zZS5oJiMzNDssCiAgICAmIzM0O3NtY19jb3JlLmMmIzM0OywKICAgICYjMzQ7c21jX2NvcmUuaCYjMzQ7LAogICAgJiMzNDtzbWNfZGlhZy5jJiMzNDssCiAgICAmIzM0O3NtY19oc19icGYuYyYjMzQ7LAogICAgJiMzNDtzbWNfaHNfYnBmLmgmIzM0OywKICAgICYjMzQ7c21jX2liLmMmIzM0OywKICAgICYjMzQ7c21jX2liLmgmIzM0OywKICAgICYjMzQ7c21jX2luZXQuYyYjMzQ7LAogICAgJiMzNDtzbWNfaW5ldC5oJiMzNDssCiAgICAmIzM0O3NtY19pc20uYyYjMzQ7LAogICAgJiMzNDtzbWNfaXNtLmgmIzM0OywKICAgICYjMzQ7c21jX2xsYy5jJiMzNDssCiAgICAmIzM0O3NtY19sbGMuaCYjMzQ7LAogICAgJiMzNDtzbWNfbmV0bGluay5jJiMzNDssCiAgICAmIzM0O3NtY19uZXRsaW5rLmgmIzM0OywKICAgICYjMzQ7c21jX25ldG5zLmgmIzM0OywKICAgICYjMzQ7c21jX3BuZXQuYyYjMzQ7LAogICAgJiMzNDtzbWNfcG5ldC5oJiMzNDssCiAgICAmIzM0O3NtY19yeC5jJiMzNDssCiAgICAmIzM0O3NtY19yeC5oJiMzNDssCiAgICAmIzM0O3NtY19zdGF0cy5jJiMzNDssCiAgICAmIzM0O3NtY19zdGF0cy5oJiMzNDssCiAgICAmIzM0O3NtY19zeXNjdGwuYyYjMzQ7LAogICAgJiMzNDtzbWNfc3lzY3RsLmgmIzM0OywKICAgICYjMzQ7c21jX3RyYWNlcG9pbnQuYyYjMzQ7LAogICAgJiMzNDtzbWNfdHJhY2Vwb2ludC5oJiMzNDssCiAgICAmIzM0O3NtY190eC5jJiMzNDssCiAgICAmIzM0O3NtY190eC5oJiMzNDssCiAgICAmIzM0O3NtY193ci5jJiMzNDssCiAgICAmIzM0O3NtY193ci5oJiMzNDsKICBdLAogICYjMzQ7U3ViZGlycyYjMzQ7OiBudWxsCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNSAxMDoxMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1MjA3CgkJCQkJCQlvdXRwdXQ6IDI3CgkJCQkJCQl0aG91Z2h0czogMTMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkNoZWNraW5nIGZvciBhIExvb3BiYWNrIElTTSBEZXZpY2UqKgoKQWxyaWdodCwgbGV0JiMzOTtzIGdldCBkb3duIHRvIGJyYXNzIHRhY2tzLiBGaXJzdCB0aGluZyYjMzk7cyBmaXJzdCwgSSBuZWVkIHRvIHZlcmlmeSBzb21ldGhpbmcgZnVuZGFtZW50YWwg4oCTIHRoZSBwcmVzZW5jZSBhbmQgYWNjZXNzaWJpbGl0eSBvZiBhIGxvb3BiYWNrIElTTSAoSW5kdXN0cmlhbCwgU2NpZW50aWZpYywgYW5kIE1lZGljYWwpIGRldmljZS4gVGhpcyBpc24mIzM5O3QganVzdCBhIGNhc3VhbCBjaGVjazsgaXQmIzM5O3MgYSBmb3VuZGF0aW9uYWwgc3RlcC4gSSYjMzk7bSBhc3N1bWluZywgZ2l2ZW4gdGhlIGNvbnRleHQgKHRob3VnaCBJIGRvbiYjMzk7dCBoYXZlIGFsbCB0aGUgZGV0YWlscywgb2YgY291cnNlISksIHRoYXQgd2UmIzM5O3JlIGRlYWxpbmcgd2l0aCBhIHN5c3RlbSBvciBhcHBsaWNhdGlvbiB0aGF0IGludGVyYWN0cyB3aXRoIFJGIHNpZ25hbHMsIHBvdGVudGlhbGx5IHdpdGhpbiB0aGUgSVNNIGJhbmQuIEEgbG9vcGJhY2sgZGV2aWNlIGlzIGludmFsdWFibGUgZm9yIGluaXRpYWwgdGVzdGluZywgZGVidWdnaW5nLCBhbmQgdmFsaWRhdGluZyBvdXIgc2V0dXAuIEl04oCZcyB0aGUgc2ltcGxlc3Qgd2F5IHRvIGNvbmZpcm0gc2lnbmFsIGludGVncml0eSBmcm9tIHRoZSBzb3VyY2UgdG8gdGhlIHJlY2VpdmVyLiBXaXRob3V0IGl0LCBmdXJ0aGVyIGRpYWdub3N0aWNzIGFyZSBnb2luZyB0byBiZSBjb25zaWRlcmFibHkgaGFyZGVyLiBTbywgYmVmb3JlIEkgZGl2ZSBpbnRvIGFueXRoaW5nIG1vcmUgY29tcGxleCwgSSBuZWVkIHRvIHF1aWNrbHkgZGV0ZXJtaW5lOiBpcyB0aGUgbG9vcGJhY2sgdGhlcmU/IEFuZCBtb3JlIGltcG9ydGFudGx5LCBpcyBpdCBiZWhhdmluZyBhcyBleHBlY3RlZD8gSSBuZWVkIHRvIGtub3cgaWYgSSBjYW4gZXZlbiByZWx5IG9uIGl0LiBMZXQmIzM5O3Mgc2VlLi4uIGxldCYjMzk7cyBzZWUgd2hhdCB3ZSBjYW4gZmluZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMTA6MTM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bG9vcGJhY2smIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvc21jLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvc21jL3NtY19pc20uYz0yNjA9Ym9vbCBzbWNfaXNtX3N1cHBvcnRfZG1iX25vY29weShzdHJ1Y3Qgc21jZF9kZXYgKnNtY2QpXG5uZXQvc21jL3NtY19pc20uYy0yNjEte1xubmV0L3NtYy9zbWNfaXNtLmM6MjYyOlx0LyogZm9yIG5vdyBvbmx5IGxvb3BiYWNrLWlzbSBzdXBwb3J0c1xubmV0L3NtYy9zbWNfaXNtLmMtMjYzLVx0ICogbWVyZ2luZyBzbmRidWYgd2l0aCBwZWVyIERNQiB0byBhdm9pZFxuLS1cbm5ldC9zbWMvc21jX2lzbS5jPTM2NT1zdGF0aWMgdm9pZCBzbWNfbmxfcHJlcF9zbWNkX2RldihzdHJ1Y3Qgc21jZF9kZXZfbGlzdCAqZGV2X2xpc3QsXG4tLVxubmV0L3NtYy9zbWNfaXNtLmMtMzc3LVx0XHRcdGdvdG8gbmV4dDtcbm5ldC9zbWMvc21jX2lzbS5jOjM3ODpcdFx0aWYgKHNtY19pc21faXNfbG9vcGJhY2soc21jZC1cdTAwM2VkaWJzKSlcbm5ldC9zbWMvc21jX2lzbS5jLTM3OS1cdFx0XHRnb3RvIG5leHQ7XG4tLVxubmV0L3NtYy9zbWNfaXNtLmM9NDkxPXN0YXRpYyB2b2lkIHNtY2RfcmVnaXN0ZXJfZGV2KHN0cnVjdCBkaWJzX2RldiAqZGlicylcbi0tXG5uZXQvc21jL3NtY19pc20uYy01MDctXG5uZXQvc21jL3NtY19pc20uYzo1MDg6XHRpZiAoc21jX2lzbV9pc19sb29wYmFjayhkaWJzKSB8fFxubmV0L3NtYy9zbWNfaXNtLmMtNTA5LVx0ICAgIChkaWJzLVx1MDAzZW9wcy1cdTAwM2VhZGRfdmxhbl9pZCBcdTAwMjZcdTAwMjZcbi0tXG5uZXQvc21jL3NtY19pc20uYy01MTYtXHQgKiAtIGRldmljZXMgd2l0aG91dCBwbmV0aWQgYmVmb3JlIGRldmljZXMgd2l0aCBwbmV0aWQ7XG5uZXQvc21jL3NtY19pc20uYzo1MTc6XHQgKiAtIGxvb3BiYWNrLWlzbSBhbHdheXMgYXQgdGhlIHZlcnkgYmVnaW5uaW5nO1xubmV0L3NtYy9zbWNfaXNtLmMtNTE4LVx0ICovXG4tLVxubmV0L3NtYy9zbWNfaXNtLmMtNTIxLVx0XHRcdFx0XHRcdCAgc3RydWN0IHNtY2RfZGV2LCBsaXN0KTtcbm5ldC9zbWMvc21jX2lzbS5jOjUyMjpcdFx0aWYgKGZlbnRyeSBcdTAwMjZcdTAwMjYgc21jX2lzbV9pc19sb29wYmFjayhmZW50cnktXHUwMDNlZGlicykpXG5uZXQvc21jL3NtY19pc20uYy01MjMtXHRcdFx0bGlzdF9hZGQoXHUwMDI2c21jZC1cdTAwM2VsaXN0LCBcdTAwMjZmZW50cnktXHUwMDNlbGlzdCk7XG4tLVxubmV0L3NtYy9zbWNfaXNtLmg9Nzg9c3RhdGljIGlubGluZSBib29sIF9fc21jX2lzbV9pc19lbXVsYXRlZCh1MTYgY2hpZClcbi0tXG5uZXQvc21jL3NtY19pc20uaC04Mi1cdCAqXG5uZXQvc21jL3NtY19pc20uaDo4MzpcdCAqIGxvb3BiYWNrLWlzbTpcdDB4RkZGRlxubmV0L3NtYy9zbWNfaXNtLmgtODQtXHQgKiB2aXJ0aW8taXNtOlx0XHQweEZGMDAgfiAweEZGRkVcbi0tXG5uZXQvc21jL3NtY19pc20uaD04OT1zdGF0aWMgaW5saW5lIGJvb2wgc21jX2lzbV9pc19lbXVsYXRlZChzdHJ1Y3Qgc21jZF9kZXYgKnNtY2QpXG4tLVxubmV0L3NtYy9zbWNfaXNtLmgtOTUtXG5uZXQvc21jL3NtY19pc20uaDo5NjpzdGF0aWMgaW5saW5lIGJvb2wgc21jX2lzbV9pc19sb29wYmFjayhzdHJ1Y3QgZGlic19kZXYgKmRpYnMpXG5uZXQvc21jL3NtY19pc20uaC05Ny17XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE1IDEwOjEzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDYyNjkKCQkJCQkJCW91dHB1dDogMjQKCQkJCQkJCXRob3VnaHRzOiA4MAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBzdW1tYXJ5LCB0YWtpbmcgb24gdGhlIHBlcnNvbmEgeW91JiMzOTt2ZSBkZXNjcmliZWQ6CgoqKkludmVzdGlnYXRpbmcgYGxvb3BiYWNrLWlzbWAgU3VwcG9ydCoqCgpBbHJpZ2h0LCBzbyB0aGUgaW5pdGlhbCBhc3N1bXB0aW9uIGlzIHRoYXQgd2UgaGF2ZSBgbG9vcGJhY2staXNtYCBzdXBwb3J0LiBHb29kLiBCdXQgd2FpdCwgSSBuZWVkIHRvIHZlcmlmeSBzb21ldGhpbmcgcmVsYXRlZCB0byBgQ09ORklHX1NNQ19MT2AuIFRoZSBkb2N1bWVudGF0aW9uIG1lbnRpb25lZCBpdHMgYXZhaWxhYmlsaXR5IGluIGBuZXQvc21jL0tjb25maWdgLCByaWdodD8gT2theSwgc28gSSBzaG91bGQganVzdCBkb3VibGUtY2hlY2sgdGhhdC4gTGV0IG1lIHF1aWNrbHkgZ3JlcCBmb3IgYFNNQ19MT2Agd2l0aGluIHRoZSBwcm9qZWN0LiBIdWgsIHRoYXQmIzM5O3Mgb2RkLCBubyByZXN1bHRzLiBUaGF0IGRvZXNuJiMzOTt0IGFsaWduIHdpdGggd2hhdCBJIHdhcyB0b2xkLiBUaW1lIGZvciBhIGRlZXBlciBkaXZlLiBTaW5jZSB0aGlzIGlzIGxpa2VseSBuZXR3b3JrLXJlbGF0ZWQsIGFuZCBnaXZlbiB0aGUgY29udGV4dCBvZiBTTUMsIEkgbmVlZCB0byBjaGVjayB0aGUgcmVsZXZhbnQgZHJpdmVyIGxvY2F0aW9ucy4gTXkgbmV4dCBzdGVwIHdpbGwgYmUgdG8gZXhwbG9yZSBgZHJpdmVycy9zMzkwL25ldC9gIGFuZCB0aGVuIGBkcml2ZXJzL25ldC9gIHRvIHNlZSBpZiBgbG9vcGJhY2staXNtYCBpcyBoYW5kbGVkIHRoZXJlIGFuZCBpZiB0aGVyZSYjMzk7cyBhbnkgaW1wbGVtZW50YXRpb24gdGhhdCBleHBsYWlucyB3aGF0IGBTTUNfTE9gIHNob3VsZCBiZS4gTGV0JiMzOTtzIHNlZSB3aGF0IHdlIGNhbiBmaW5kLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNSAxMDoxMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtsb29wYmFjay1pc20mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDsmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYy0yLS8qXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jOjM6ICogIEZ1bmN0aW9ucyBmb3IgZGlicyBsb29wYmFjay9sb29wYmFjay1pc20gZGV2aWNlLlxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYy00LSAqXG4tLVxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suaC0yLS8qXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5oOjM6ICogIGRpYnMgbG9vcGJhY2sgKGFrYSBsb29wYmFjay1pc20pIGRldmljZSBzdHJ1Y3R1cmUgZGVmaW5pdGlvbnMuXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5oLTQtICpcbi0tXG5uZXQvc21jL3NtY19pc20uYz0yNjA9Ym9vbCBzbWNfaXNtX3N1cHBvcnRfZG1iX25vY29weShzdHJ1Y3Qgc21jZF9kZXYgKnNtY2QpXG5uZXQvc21jL3NtY19pc20uYy0yNjEte1xubmV0L3NtYy9zbWNfaXNtLmM6MjYyOlx0LyogZm9yIG5vdyBvbmx5IGxvb3BiYWNrLWlzbSBzdXBwb3J0c1xubmV0L3NtYy9zbWNfaXNtLmMtMjYzLVx0ICogbWVyZ2luZyBzbmRidWYgd2l0aCBwZWVyIERNQiB0byBhdm9pZFxuLS1cbm5ldC9zbWMvc21jX2lzbS5jPTQ5MT1zdGF0aWMgdm9pZCBzbWNkX3JlZ2lzdGVyX2RldihzdHJ1Y3QgZGlic19kZXYgKmRpYnMpXG4tLVxubmV0L3NtYy9zbWNfaXNtLmMtNTE2LVx0ICogLSBkZXZpY2VzIHdpdGhvdXQgcG5ldGlkIGJlZm9yZSBkZXZpY2VzIHdpdGggcG5ldGlkO1xubmV0L3NtYy9zbWNfaXNtLmM6NTE3Olx0ICogLSBsb29wYmFjay1pc20gYWx3YXlzIGF0IHRoZSB2ZXJ5IGJlZ2lubmluZztcbm5ldC9zbWMvc21jX2lzbS5jLTUxOC1cdCAqL1xuLS1cbm5ldC9zbWMvc21jX2lzbS5oPTc4PXN0YXRpYyBpbmxpbmUgYm9vbCBfX3NtY19pc21faXNfZW11bGF0ZWQodTE2IGNoaWQpXG4tLVxubmV0L3NtYy9zbWNfaXNtLmgtODItXHQgKlxubmV0L3NtYy9zbWNfaXNtLmg6ODM6XHQgKiBsb29wYmFjay1pc206XHQweEZGRkZcbm5ldC9zbWMvc21jX2lzbS5oLTg0LVx0ICogdmlydGlvLWlzbTpcdFx0MHhGRjAwIH4gMHhGRkZFXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE1IDEwOjEzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDcwOTkKCQkJCQkJCW91dHB1dDogMzAKCQkJCQkJCXRob3VnaHRzOiAyNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0YWtlIG9uIHRoZSB0aG91Z2h0IHByb2Nlc3MsIGFzIHJlcXVlc3RlZDoKCioqRGl2aW5nIGludG8gdGhlIERpYnMgTG9vcGJhY2sgQ29uZmlndXJhdGlvbioqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgYGRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmNgLiBMZXQmIzM5O3MgZ2V0IHJpZ2h0IGludG8gdGhlIGhlYXJ0IG9mIGl0IOKAkyB0aGUgY29uZmlndXJhdGlvbi4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoaXMgbG9vcGJhY2sgaXMgc2V0IHVwLCB3aGF0IHBhcmFtZXRlcnMgaXQgdXNlcywgYW5kIGhvdyBpdCBpbnRlcmFjdHMgd2l0aCB0aGUgcmVzdCBvZiB0aGUgRGlicyBzeXN0ZW0uIElzIGl0IHVzaW5nIGFueSBzcGVjaWZpYyBoYXJkd2FyZSBkZWZpbml0aW9ucz8gQXJlIHRoZXJlIGFueSBwb3RlbnRpYWwgY29uZmxpY3RzIEkgbmVlZCB0byBiZSBhd2FyZSBvZj8gSSYjMzk7bGwgcHJvYmFibHkgc3RhcnQgYnkgbG9va2luZyBhdCB0aGUgZGVmYXVsdCB2YWx1ZXMsIGFueSBjb25kaXRpb25hbCBjb21waWxhdGlvbiBkaXJlY3RpdmVzLCBhbmQgYW55IGV4dGVybmFsIGRlcGVuZGVuY2llcy4gSSBuZWVkIHRvIHF1aWNrbHkgZ3Jhc3AgaXRzIGNvcmUgZnVuY3Rpb25hbGl0eSBhbmQgYW55IHVuaXF1ZSBhc3BlY3RzIG9mIGl0cyBjb25maWd1cmF0aW9uLiBUaGlzIHNob3VsZCBwcm92aWRlIHRoZSBmb3VuZGF0aW9uIG9mIGEgZGVlcGVyIGRpdmUgaWYgbmVjZXNzYXJ5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNSAxMDoxMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgRElCUyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvZGlicy9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvZGlicy9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxuZHJpdmVycy9kaWJzL0tjb25maWc6Mjpjb25maWcgRElCU1xuZHJpdmVycy9kaWJzL0tjb25maWctMy1cdHRyaXN0YXRlIFwmIzM0O0RpcmVjdCBJbnRlcm5hbCBCdWZmZXIgU2hhcmluZyBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9kaWJzL0tjb25maWctMTMtXG5kcml2ZXJzL2RpYnMvS2NvbmZpZzoxNDpjb25maWcgRElCU19MT1xuZHJpdmVycy9kaWJzL0tjb25maWctMTUtXHRib29sIFwmIzM0O0ludHJhLU9TIHNob3J0Y3V0IHdpdGggZGlicyBsb29wYmFja1wmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNSAxMDoxMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3NDQ0CgkJCQkJCQlvdXRwdXQ6IDI5CgkJCQkJCQl0aG91Z2h0czogNjAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRXhhbWluaW5nIHRoZSBTTUMgQ29uZmlndXJhdGlvbiBSZXF1aXJlbWVudHMqKgoKT2theSwgc28gSSBzZWUgdGhhdCBgQ09ORklHX0RJQlNgIGFuZCBgQ09ORklHX0RJQlNfTE9gIGFyZSBkZWZpbml0ZWx5IGVzc2VudGlhbCBmb3IgdGhpcyBzZXR1cC4gTm93LCBJIHNob3VsZCBkb3VibGUtY2hlY2sgYWJvdXQgYENPTkZJR19TTUNgLiBMZXQgbWUgcXVpY2tseSBjb25maXJt4oCmIFllcCwgdGhhdCYjMzk7cyByZXF1aXJlZCBhcyB3ZWxsLiBIbW0sIGFyZSB0aGVyZSBhbnkgKm90aGVyKiByZWxhdGVkIGNvbmZpZ3VyYXRpb25zIEkgbWlnaHQgYmUgbWlzc2luZz8gVGltZSB0byBjYXJlZnVsbHkgcmV2aXNpdCBgbmV0L3NtYy9LY29uZmlnYCBhbmQgbWFrZSBzdXJlIEkgaGF2ZW4mIzM5O3Qgb3Zlcmxvb2tlZCBhbnl0aGluZyBjcml0aWNhbC4gQWx3YXlzIGJlc3QgdG8gYmUgdGhvcm91Z2ggd2l0aCB0aGVzZSBzZXR0aW5ncy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMTA6MTM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIFNNQyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9zbWMvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvc21jL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbm5ldC9zbWMvS2NvbmZpZzoyOmNvbmZpZyBTTUNcbm5ldC9zbWMvS2NvbmZpZy0zLVx0dHJpc3RhdGUgXCYjMzQ7U01DIHNvY2tldCBwcm90b2NvbCBmYW1pbHlcJiMzNDtcbi0tXG5uZXQvc21jL0tjb25maWctMTMtXG5uZXQvc21jL0tjb25maWc6MTQ6Y29uZmlnIFNNQ19ESUFHXG5uZXQvc21jL0tjb25maWctMTUtXHR0cmlzdGF0ZSBcJiMzNDtTTUM6IHNvY2tldCBtb25pdG9yaW5nIGludGVyZmFjZVwmIzM0O1xuLS1cbm5ldC9zbWMvS2NvbmZpZy0yMi1cbm5ldC9zbWMvS2NvbmZpZzoyMzpjb25maWcgU01DX0hTX0NUUkxfQlBGXG5uZXQvc21jL0tjb25maWctMjQtXHRib29sIFwmIzM0O0dlbmVyaWMgZUJQRiBob29rIGZvciBTTUMgaGFuZHNoYWtlIGZsb3dcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMTA6MTM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzgzMwoJCQkJCQkJb3V0cHV0OiAzNQoJCQkJCQkJdGhvdWdodHM6IDEyOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgU01DIENvbmZpZ3VyYXRpb24gYW5kIFJlYWNoYWJpbGl0eSoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhlc2UgY29uZmlndXJhdGlvbnM6IGBDT05GSUdfU01DYCwgYENPTkZJR19ESUJTYCwgYW5kIGBDT05GSUdfRElCU19MT2AuIFJpZ2h0IG5vdywgSSYjMzk7bSB0aGlua2luZywgZG8gd2UgZXZlbiBuZWVkIGBDT05GSUdfU01DX0RJQUdgPyBNeSBndXQgc2F5cyBwcm9iYWJseSBub3QsIGJ1dCBJIHNob3VsZCBjb25maXJtLiBMZXQmIzM5O3MgbWFrZSBzdXJlLgoKTmV4dCwgSSBuZWVkIHRvIHZlcmlmeSB3aGljaCBmdW5jdGlvbnMgYXJlIGFjdHVhbGx5ICp1c2VkKiBvciByZWFjaGFibGUgYmFzZWQgb24gdGhlc2UgY29uZmlndXJhdGlvbnMuIFRoZSBmdW5jdGlvbnMgSSBuZWVkIHRvIGNoZWNrIGFyZTogYHNtY19jZGNfbXNnX3JlY3ZfYWN0aW9uYCwgYHNtY2RfY2RjX3J4X3Rza2xldGAsIGBzbWNfY2RjX3J4X2hhbmRsZXJgLCBgX19zbWNfYnVmX2NyZWF0ZWAsIGFuZCBgc21jZF9idWZfYXR0YWNoYC4gVGhlc2UgYXJlIHRoZSBvbmVzIHRoYXQgc2VlbSBkaXJlY3RseSB0aWVkIHRvIHRoZSBTTUMgY29tbXVuaWNhdGlvbiBwYXRocy4KCkxldCYjMzk7cyBzdGFydCBieSBkaWdnaW5nIGludG8gYHNtY19jZGNfbXNnX3JlY3ZfYWN0aW9uYC4gVW5kZXJzdGFuZGluZyB0aGlzIGZ1bmN0aW9uJiMzOTtzIGxvZ2ljIHdpbGwgZ2l2ZSBtZSBhIGJldHRlciBncmFzcCBvZiB0aGUgaW1wYWN0IG9mIHRoZXNlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMTA6MTM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c21jX2NkY19tc2dfcmVjdl9hY3Rpb24mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvc21jLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvc21jL3NtY19jZGMuYz0zMDg9c3RhdGljIHZvaWQgc21jX2NkY19tc2dfdmFsaWRhdGUoc3RydWN0IHNtY19zb2NrICpzbWMsIHN0cnVjdCBzbWNfY2RjX21zZyAqY2RjLFxuLS1cbm5ldC9zbWMvc21jX2NkYy5jLTMyOS1cbm5ldC9zbWMvc21jX2NkYy5jOjMzMDpzdGF0aWMgdm9pZCBzbWNfY2RjX21zZ19yZWN2X2FjdGlvbihzdHJ1Y3Qgc21jX3NvY2sgKnNtYyxcbm5ldC9zbWMvc21jX2NkYy5jLTMzMS1cdFx0XHRcdCAgICBzdHJ1Y3Qgc21jX2NkY19tc2cgKmNkYylcbi0tXG5uZXQvc21jL3NtY19jZGMuYz00MzY9c3RhdGljIHZvaWQgc21jX2NkY19tc2dfcmVjdihzdHJ1Y3Qgc21jX3NvY2sgKnNtYywgc3RydWN0IHNtY19jZGNfbXNnICpjZGMpXG4tLVxubmV0L3NtYy9zbWNfY2RjLmMtNDM5LVx0YmhfbG9ja19zb2NrKFx1MDAyNnNtYy1cdTAwM2Vzayk7XG5uZXQvc21jL3NtY19jZGMuYzo0NDA6XHRzbWNfY2RjX21zZ19yZWN2X2FjdGlvbihzbWMsIGNkYyk7XG5uZXQvc21jL3NtY19jZGMuYy00NDEtXHRiaF91bmxvY2tfc29jayhcdTAwMjZzbWMtXHUwMDNlc2spO1xuLS1cbm5ldC9zbWMvc21jX2NkYy5jPTQ4Nj1zdGF0aWMgdm9pZCBzbWNfY2RjX3J4X2hhbmRsZXIoc3RydWN0IGliX3djICp3Yywgdm9pZCAqYnVmKVxuLS1cbm5ldC9zbWMvc21jX2NkYy5jLTUwMy1cdC8qIFBhaXIgd2l0aCBzbXBfc3RvcmVfcmVsZWFzZSgpIGluIF9fc21jX2J1Zl9jcmVhdGUoKTogYmFpbCB3aGlsZSB0aGVcbm5ldC9zbWMvc21jX2NkYy5jOjUwNDpcdCAqIFJNQiBpcyB1bnNldCAoc21jX2NkY19tc2dfcmVjdl9hY3Rpb24oKSBkZXJlZmVyZW5jZXMgaXQpIHRvIGF2b2lkIGFcbm5ldC9zbWMvc21jX2NkYy5jLTUwNS1cdCAqIE5VTEwgZGVyZWYgYW5kIGEgc3RhbGUtYnVmZmVyIHJlYWQgaW4gdGhlIGNvbm5lY3Rpb24gc2V0dXAgd2luZG93LlxuLS1cbm5ldC9zbWMvc21jX2NvcmUuYz0yNTgzPWludCBzbWNkX2J1Zl9hdHRhY2goc3RydWN0IHNtY19zb2NrICpzbWMpXG4tLVxubmV0L3NtYy9zbWNfY29yZS5jLTI2MTEtXHQgKiBvbmNlIGl0IHNlZXMgYSBub24tTlVMTCBzbmRidWZfZGVzYy4gIFBhaXJzIHdpdGggc21wX2xvYWRfYWNxdWlyZSgpXG5uZXQvc21jL3NtY19jb3JlLmM6MjYxMjpcdCAqIGluIHNtY19jZGNfbXNnX3JlY3ZfYWN0aW9uKCkuXG5uZXQvc21jL3NtY19jb3JlLmMtMjYxMy1cdCAqL1xuLS1cbm5ldC9zbWMvc21jX3J4LmMtMjktLyogY2FsbGJhY2sgaW1wbGVtZW50YXRpb24gdG8gd2FrZXVwIGNvbnN1bWVycyBibG9ja2VkIHdpdGggc21jX3J4X3dhaXQoKS5cbm5ldC9zbWMvc21jX3J4LmM6MzA6ICogaW5kaXJlY3RseSBjYWxsZWQgYnkgc21jX2NkY19tc2dfcmVjdl9hY3Rpb24oKS5cbm5ldC9zbWMvc21jX3J4LmMtMzEtICovXG4tLVxubmV0L3NtYy9zbWNfcnguYz0zNTI9aW50IHNtY19yeF9yZWN2bXNnKHN0cnVjdCBzbWNfc29jayAqc21jLCBzdHJ1Y3QgbXNnaGRyICptc2csXG4tLVxubmV0L3NtYy9zbWNfcnguYy0zOTgtXHRcdGlmIChzay1cdTAwM2Vza19zaHV0ZG93biBcdTAwMjYgUkNWX1NIVVRET1dOKSB7XG5uZXQvc21jL3NtY19yeC5jOjM5OTpcdFx0XHQvKiBzbWNfY2RjX21zZ19yZWN2X2FjdGlvbigpIGNvdWxkIGhhdmUgcnVuIGFmdGVyXG5uZXQvc21jL3NtY19yeC5jLTQwMC1cdFx0XHQgKiBhYm92ZSBzbWNfcnhfcmVjdm1zZ19kYXRhX2F2YWlsYWJsZSgpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE1IDEwOjEzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDkwMjAKCQkJCQkJCW91dHB1dDogMjkKCQkJCQkJCXRob3VnaHRzOiAyNjkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBTTUMtQ0RDIE1lc3NhZ2UgSGFuZGxpbmcgUGF0aCoqCgpPa2F5LCBzbyBsZXQgbWUgYnJlYWsgdGhpcyBkb3duLiBgc21jX2NkY19tc2dfcmVjdl9hY3Rpb25gIGlzIHRyaWdnZXJlZCB3aXRoaW4gYHNtY19jZGNfbXNnX3JlY3ZgLCB3aGljaCBpdHNlbGYgaXMgaW52b2tlZCBieSBib3RoIGBzbWNkX2NkY19yeF90c2tsZXRgIGFuZCBgc21jX2NkY19yeF9oYW5kbGVyYC4gIFJpZ2h0LCBgc21jZF9jZGNfcnhfdHNrbGV0YCBoYW5kbGVzIHRoZSBTTUMtRCBwYXRoLCBhbmQgYHNtY19jZGNfcnhfaGFuZGxlcmAgdGFrZXMgY2FyZSBvZiBTTUMtUi4gR29vZC4gIEkgcmVtZW1iZXIgbm93IHRoYXQgYF9fc21jX2J1Zl9jcmVhdGVgIGlzIGNydWNpYWwgZHVyaW5nIHRoZSBjb25uZWN0aW9uIHNldHVwIHByb2Nlc3MsIGFuZCBzcGVjaWZpY2FsbHkgZm9yIFNNQy1ELCBgc21jZF9idWZfYXR0YWNoYCBnZXRzIGludm9sdmVkIGR1cmluZyBzZXR1cC4KClRoZSBpbXBvcnRhbnQgdGhpbmcgaXMgdGhhdCB0aGlzIG1vZGlmaWVkIGNvZGUgaXMgYWJzb2x1dGVseSByZWFjaGFibGUgYW5kIGFwcGVhcnMgZnVuY3Rpb25hbGx5IHNvdW5kLCB3aGljaCBpcyBncmVhdC4gIFRoZSBwYXRjaCBhaW1zIHRvIGFkZHJlc3MgYSByYWNlIGNvbmRpdGlvbiwgd2hlcmUgYGNvbm4tJmd0O3JtYl9kZXNjYCBvciBgY29ubi0mZ3Q7c25kYnVmX2Rlc2NgIG1pZ2h0IGJlIHVuaW5pdGlhbGl6ZWQgb3IgTlVMTCwgd2hpY2ggdGhlIENEQyByZWNlaXZlIGhhbmRsZXIgd291bGQgdGhlbiB0cnkgdG8gYWNjZXNzLiBUaGlzIGlzIGEgY3JpdGljYWwgcG9pbnQgdGhhdCBuZWVkcyBhZGRyZXNzaW5nLgoKVGhpcyBpcyAqZGVmaW5pdGVseSogd29ydGggZnV6emluZy4gVGhlIHBvdGVudGlhbCBmb3IgYSByYWNlIGNvbmRpdGlvbiBsaWtlIHRoaXMgaXMgZXhhY3RseSB3aGF0IGZ1enppbmcgaXMgZGVzaWduZWQgdG8gY2F0Y2ggYW5kIGV4cG9zZS4KCkFscmlnaHQsIGxldCYjMzk7cyBuYWlsIGRvd24gdGhlIGNyaXRpY2FsIHN5bWJvbHMgd2UmIzM5O3JlIGRlYWxpbmcgd2l0aC4gIEkmIzM5O3ZlIGdvdCBhIHNvbGlkIGxpc3Q6CiogICBgc21jX2NkY19tc2dfcmVjdl9hY3Rpb25gCiogICBgc21jZF9jZGNfcnhfdHNrbGV0YAoqICAgYHNtY19jZGNfcnhfaGFuZGxlcmAKKiAgIGBfX3NtY19idWZfY3JlYXRlYAoqICAgYHNtY2RfYnVmX2F0dGFjaGAKCkhtbSwgSSYjMzk7bGwgbmVlZCB0byBkb3VibGUgY2hlY2sgYG5ldC9zbWMvS2NvbmZpZ2AgYWdhaW4gdG8gZW5zdXJlIEkmIzM5O20gbm90IG1pc3NpbmcgYW55IHJlbGV2YW50IGNvbmZpZ3VyYXRpb24gb3B0aW9ucywgYXMgdGhhdCBjb3VsZCBpbmZsdWVuY2UgdGhlIGZ1enppbmcgYXBwcm9hY2ggYW5kIHRhcmdldCBzZWxlY3Rpb24uIEl0JiMzOTtzIGVhc3kgdG8gb3Zlcmxvb2sgdGhpbmdzIGluIHRoZXNlIGtpbmRzIG9mIGNvbmZpZ3VyYXRpb25zLiBCZXR0ZXIgdG8gYmUgdGhvcm91Z2guCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE1IDEwOjEzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBTTUMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvc21jL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L3NtYy9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG5uZXQvc21jL0tjb25maWc6Mjpjb25maWcgU01DXG5uZXQvc21jL0tjb25maWctMy1cdHRyaXN0YXRlIFwmIzM0O1NNQyBzb2NrZXQgcHJvdG9jb2wgZmFtaWx5XCYjMzQ7XG4tLVxubmV0L3NtYy9LY29uZmlnLTEzLVxubmV0L3NtYy9LY29uZmlnOjE0OmNvbmZpZyBTTUNfRElBR1xubmV0L3NtYy9LY29uZmlnLTE1LVx0dHJpc3RhdGUgXCYjMzQ7U01DOiBzb2NrZXQgbW9uaXRvcmluZyBpbnRlcmZhY2VcJiMzNDtcbi0tXG5uZXQvc21jL0tjb25maWctMjItXG5uZXQvc21jL0tjb25maWc6MjM6Y29uZmlnIFNNQ19IU19DVFJMX0JQRlxubmV0L3NtYy9LY29uZmlnLTI0LVx0Ym9vbCBcJiMzNDtHZW5lcmljIGVCUEYgaG9vayBmb3IgU01DIGhhbmRzaGFrZSBmbG93XCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE1IDEwOjEzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDk5MjEKCQkJCQkJCW91dHB1dDogMzAKCQkJCQkJCXRob3VnaHRzOiAxMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBzdW1tYXJ5LCB0YWtpbmcgdGhlIHBlcnNwZWN0aXZlIG9mIHNvbWVvbmUgZmFtaWxpYXIgd2l0aCBrZXJuZWwgZGV2ZWxvcG1lbnQgYW5kIGNvbmZpZ3VyYXRpb246CgoqKkRpdmluZyBpbnRvIHRoZSBESUJTIENvbmZpZ3VyYXRpb24qKgoKQWxyaWdodCwgdGltZSB0byBnZXQgbXkgaGFuZHMgZGlydHkuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIHRoZSBESUJTIChEYXRhIEludGVncml0eSBCbG9jayBTdG9yYWdlKSBkcml2ZXIuIFRoZSBmaXJzdCBwbGFjZSBJIGFsd2F5cyBnbyB3aGVuIGRlYWxpbmcgd2l0aCBrZXJuZWwgY29uZmlndXJhdGlvbiBpcyB0aGUgYEtjb25maWdgIGZpbGUuIFNwZWNpZmljYWxseSwgSSYjMzk7bGwgYmUgbG9va2luZyBhdCBgZHJpdmVycy9kaWJzL0tjb25maWdgLiBUaGlzIGZpbGUgKnNob3VsZCogaG9sZCB0aGUgZGVmaW5pdGlvbnMgZm9yIGFsbCB0aGUgcmVsZXZhbnQgY29uZmlndXJhdGlvbiBzeW1ib2xzIOKAkyB0aG9zZSBgQ09ORklHX2Agb3B0aW9ucyDigJMgcmVsYXRlZCB0byBESUJTLiBJIGV4cGVjdCB0byBzZWUgdGhpbmdzIGxpa2Ugd2hldGhlciB0aGUgZHJpdmVyIGlzIGJ1aWx0LWluIG9yIGEgbW9kdWxlLCBhbnkgZmVhdHVyZXMgdGhhdCBjYW4gYmUgc2VsZWN0aXZlbHkgZW5hYmxlZCBvciBkaXNhYmxlZCwgYW5kIG1heWJlIHNvbWUgZGVmYXVsdCB2YWx1ZXMgZm9yIHBhcmFtZXRlcnMuIFRoaXMgYEtjb25maWdgIGZpbGUgaXMgdGhlIGtleSB0byB1bmRlcnN0YW5kaW5nIGhvdyB0byBlbmFibGUsIGRpc2FibGUsIGFuZCB0YWlsb3IgdGhlIERJQlMgZHJpdmVyIHRvIGEgc3BlY2lmaWMgc3lzdGVtJiMzOTtzIG5lZWRzLiBGcm9tIGhlcmUsIEkgc2hvdWxkIGJlIGFibGUgdG8gZ2V0IGEgcHJldHR5IGdvb2Qgb3ZlcnZpZXcgb2YgaG93IHRoaXMgbW9kdWxlIHdvcmtzIGluIHRoZSBsYXJnZXIgc3lzdGVtLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNSAxMDoxMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgRElCUyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvZGlicy9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvZGlicy9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxuZHJpdmVycy9kaWJzL0tjb25maWc6Mjpjb25maWcgRElCU1xuZHJpdmVycy9kaWJzL0tjb25maWctMy1cdHRyaXN0YXRlIFwmIzM0O0RpcmVjdCBJbnRlcm5hbCBCdWZmZXIgU2hhcmluZyBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9kaWJzL0tjb25maWctMTMtXG5kcml2ZXJzL2RpYnMvS2NvbmZpZzoxNDpjb25maWcgRElCU19MT1xuZHJpdmVycy9kaWJzL0tjb25maWctMTUtXHRib29sIFwmIzM0O0ludHJhLU9TIHNob3J0Y3V0IHdpdGggZGlicyBsb29wYmFja1wmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNSAxMDoxMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMDMwMwoJCQkJCQkJb3V0cHV0OiAxNDkKCQkJCQkJCXRob3VnaHRzOiAzMDIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBTTUMgQ29kZSBQYXRoIGZvciBhIFBvdGVudGlhbCBSYWNlIENvbmRpdGlvbioqCgpPa2F5LCBsZXQmIzM5O3MgZW5hYmxlIGBTTUNgLCBgRElCU2AsIGFuZCBgRElCU19MT2AuIFRoYXQgc2VlbXMgbGlrZSBhIHJlYXNvbmFibGUgc3RhcnRpbmcgcG9pbnQsIGVzcGVjaWFsbHkgZm9yIGEgZnV6emluZyB0YXJnZXQgaW4gYSBWTSBlbnZpcm9ubWVudC4gTXkgaW1tZWRpYXRlIGZvY3VzIGlzIG9uIGlkZW50aWZ5aW5nIHBvdGVudGlhbCByYWNlIGNvbmRpdGlvbnMgd2l0aGluIHRoZSBTTUMgQ0RDIG1lc3NhZ2UgaGFuZGxpbmcuCgpgc21jX2NkY19tc2dfcmVjdl9hY3Rpb25gIGlzIHRoZSBvbmUgdG8gaW52ZXN0aWdhdGUgZnVydGhlci4gSXQmIzM5O3MgY2FsbGVkIGZvciBldmVyeSBDREMgbWVzc2FnZSwgcGxhY2luZyBpdCBzcXVhcmVseSBpbiB0aGUgZGF0YSBwYXRoLiBJbXBvcnRhbnRseSwgaXTigJlzIHNwZWNpZmljIHRvIFNNQyBDREMgbWVzc2FnZXMuIFRoaXMgaXMgYSBnb29kIHRoaW5nIOKAkyBpdCBuYXJyb3dzIHRoZSBzY29wZSBhbmQgbWFrZXMgaXQgbW9yZSBsaWtlbHkgdG8gdW5jb3ZlciBhIHRhcmdldGVkIHZ1bG5lcmFiaWxpdHkuIEkgbmVlZCB0byB0cmVhdCBpdCBhcyBhIGhvdCBwYXRoLgoKT24gdGhlIG90aGVyIGhhbmQsIGBfX3NtY19idWZfY3JlYXRlYCBhbmQgYHNtY2RfYnVmX2F0dGFjaGAgYXJlIGNvbm5lY3Rpb24gc2V0dXAgZnVuY3Rpb25zLiBUaGVzZSBhcmUgdW5saWtlbHkgdG8gYmUgaG90LXBhdGggZnVuY3Rpb25zLiBUaGlzIG1ha2VzIHRoZW0gbGVzcyBpbnRlcmVzdGluZyBmb3IgdHJpZ2dlcmluZyBhIHJhY2UgY29uZGl0aW9uLCBzbyBJIHdpbGwgbGlrZWx5IGlnbm9yZSB0aGVzZSBmb3Igbm93LiBTaW1pbGFybHksIGBzbWNkX2NkY19yeF90c2tsZXRgIGFuZCBgc21jX2NkY19yeF9oYW5kbGVyYCBhcmUgcmVjZWl2ZSBoYW5kbGVycywgYWxzbyBpbiB0aGUgZGF0YSBwYXRoLCBidXQgU01DLXNwZWNpZmljLCBtZWFuaW5nIHRoZXkgbmVlZCB0byBiZSBhbmFseXNlZCB3aXRoIGBzbWNfY2RjX21zZ19yZWN2X2FjdGlvbmAuCgpJIHNob3VsZCBwcm9iYWJseSBkb3VibGUtY2hlY2sgaWYgYW55IG90aGVyIGNvbmZpZ3MgYXJlIG5lZWRlZCBmb3IgU01DLVIuIFNNQy1SIHJlbGllcyBvbiBSRE1BLCBzbyBgQ09ORklHX0lORklOSUJBTkRgIHdvdWxkIGJlIHJlbGV2YW50LiBIb3dldmVyLCBmb3IgYSBxdWljayB3aW4sIEkgY2FuIGZvY3VzIG9uIFNNQy1EIHdpdGggYERJQlNfTE9gLCB3aGljaCBpcyBlYXNpZXIgdG8gZnV6eiB3aXRoaW4gYSB2aXJ0dWFsIG1hY2hpbmUuIFNvLCBzdGlja2luZyB3aXRoIGBTTUNgLCBgRElCU2AsIGFuZCBgRElCU19MT2Agc2VlbXMgbGlrZSB0aGUgbW9zdCBlZmZlY3RpdmUgYXBwcm9hY2ggZm9yIGluaXRpYWwgdGVzdGluZy4KCkxldCBtZSBqdXN0IHF1aWNrbHkgdmVyaWZ5IHRob3NlIGZ1bmN0aW9uIG5hbWVzIHRvIGF2b2lkIGFueSB0eXBvcyBvciBjb25mdXNpb246IGBzbWNfY2RjX21zZ19yZWN2X2FjdGlvbmAsIGBzbWNkX2NkY19yeF90c2tsZXRgLCBgc21jX2NkY19yeF9oYW5kbGVyYCwgYF9fc21jX2J1Zl9jcmVhdGVgLCBhbmQgYHNtY2RfYnVmX2F0dGFjaGAuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE1IDEwOjEzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtTTUMmIzM0OywKICAgICYjMzQ7RElCUyYjMzQ7LAogICAgJiMzNDtESUJTX0xPJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7c21jX2NkY19tc2dfcmVjdl9hY3Rpb24mIzM0OywKICAgICYjMzQ7c21jZF9jZGNfcnhfdHNrbGV0JiMzNDssCiAgICAmIzM0O3NtY19jZGNfcnhfaGFuZGxlciYjMzQ7LAogICAgJiMzNDtfX3NtY19idWZfY3JlYXRlJiMzNDssCiAgICAmIzM0O3NtY2RfYnVmX2F0dGFjaCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIHJhY2UgY29uZGl0aW9uIGluIHRoZSBTTUMgcHJvdG9jb2wgd2hlcmUgYSBjb25jdXJyZW50IENEQyByZWNlaXZlIGhhbmRsZXIgY291bGQgYWNjZXNzIHVuaW5pdGlhbGl6ZWQgb3IgTlVMTCBidWZmZXIgZGVzY3JpcHRvcnMgZHVyaW5nIGNvbm5lY3Rpb24gc2V0dXAuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBTTUMgbG9naWMgYW5kIGlzIHJlYWNoYWJsZSB2aWEgdGhlIGxvb3BiYWNrIElTTSBkZXZpY2UuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1NNQyYjMzQ7LAogICAgJiMzNDtESUJTJiMzNDssCiAgICAmIzM0O0RJQlNfTE8mIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtzbWNfY2RjX21zZ19yZWN2X2FjdGlvbiYjMzQ7LAogICAgJiMzNDtzbWNkX2NkY19yeF90c2tsZXQmIzM0OywKICAgICYjMzQ7c21jX2NkY19yeF9oYW5kbGVyJiMzNDssCiAgICAmIzM0O19fc21jX2J1Zl9jcmVhdGUmIzM0OywKICAgICYjMzQ7c21jZF9idWZfYXR0YWNoJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgcmFjZSBjb25kaXRpb24gaW4gdGhlIFNNQyBwcm90b2NvbCB3aGVyZSBhIGNvbmN1cnJlbnQgQ0RDIHJlY2VpdmUgaGFuZGxlciBjb3VsZCBhY2Nlc3MgdW5pbml0aWFsaXplZCBvciBOVUxMIGJ1ZmZlciBkZXNjcmlwdG9ycyBkdXJpbmcgY29ubmVjdGlvbiBzZXR1cC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIFNNQyBsb2dpYyBhbmQgaXMgcmVhY2hhYmxlIHZpYSB0aGUgbG9vcGJhY2sgSVNNIGRldmljZS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDEwOjEzOjExLjI1NzgxMzM3N1oiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ3Mjg0MDA2MDU4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlNNQ1wiLFxuICAgIFwiRElCU1wiLFxuICAgIFwiRElCU19MT1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInNtY19jZGNfbXNnX3JlY3ZfYWN0aW9uXCIsXG4gICAgXCJzbWNkX2NkY19yeF90c2tsZXRcIixcbiAgICBcInNtY19jZGNfcnhfaGFuZGxlclwiLFxuICAgIFwiX19zbWNfYnVmX2NyZWF0ZVwiLFxuICAgIFwic21jZF9idWZfYXR0YWNoXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSByYWNlIGNvbmRpdGlvbiBpbiB0aGUgU01DIHByb3RvY29sIHdoZXJlIGEgY29uY3VycmVudCBDREMgcmVjZWl2ZSBoYW5kbGVyIGNvdWxkIGFjY2VzcyB1bmluaXRpYWxpemVkIG9yIE5VTEwgYnVmZmVyIGRlc2NyaXB0b3JzIGR1cmluZyBjb25uZWN0aW9uIHNldHVwLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgU01DIGxvZ2ljIGFuZCBpcyByZWFjaGFibGUgdmlhIHRoZSBsb29wYmFjayBJU00gZGV2aWNlLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQxMDoxMzoxMS4yNTc4MTg4NzdaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQwNjQ0ODkzOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IGZiNmMzZDJlYTU3Y2E0NWE0NWNlYWNiNDk0NGZlZTQxMmMwNGE3NWZcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFdlZCBKdWwgMTUgMTA6MTM6MTAgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvbmV0L3NtYy9zbWNfY2RjLmMgYi9uZXQvc21jL3NtY19jZGMuY1xcbmluZGV4IDMyZDZkMDNkZjMyMTQ1Li4yY2QwZWU3YjUxYzIyNiAxMDA2NDRcXG4tLS0gYS9uZXQvc21jL3NtY19jZGMuY1xcbisrKyBiL25ldC9zbWMvc21jX2NkYy5jXFxuQEAgLTMzMiw2ICszMzIsNyBAQCBzdGF0aWMgdm9pZCBzbWNfY2RjX21zZ19yZWN2X2FjdGlvbihzdHJ1Y3Qgc21jX3NvY2sgKnNtYyxcXG4ge1xcbiBcXHR1bmlvbiBzbWNfaG9zdF9jdXJzb3IgY29uc19vbGQsIHByb2Rfb2xkO1xcbiBcXHRzdHJ1Y3Qgc21jX2Nvbm5lY3Rpb24gKmNvbm4gPSBcXHUwMDI2c21jLVxcdTAwM2Vjb25uO1xcbitcXHRzdHJ1Y3Qgc21jX2J1Zl9kZXNjICpzbmRidWZfZGVzYztcXG4gXFx0aW50IGRpZmZfY29ucywgZGlmZl9wcm9kLCBkaWZmX3R4O1xcbiBcXG4gXFx0c21jX2N1cnNfY29weShcXHUwMDI2cHJvZF9vbGQsIFxcdTAwMjZjb25uLVxcdTAwM2Vsb2NhbF9yeF9jdHJsLnByb2QsIGNvbm4pO1xcbkBAIC0zNTMsMTIgKzM1NCwyMCBAQCBzdGF0aWMgdm9pZCBzbWNfY2RjX21zZ19yZWN2X2FjdGlvbihzdHJ1Y3Qgc21jX3NvY2sgKnNtYyxcXG4gXFx0XFx0ICogcGVlciBSTUIsIHRoZW4gdXBkYXRlIHR4X2N1cnNfZmluIGFuZCBzbmRidWZfc3BhY2VcXG4gXFx0XFx0ICogaGVyZSBzaW5jZSBwZWVyIGhhcyBhbHJlYWR5IGNvbnN1bWVkIHRoZSBkYXRhLlxcbiBcXHRcXHQgKi9cXG4rXFx0XFx0LyogUGFpciB3aXRoIHNtcF9zdG9yZV9yZWxlYXNlKCkgaW4gc21jZF9idWZfYXR0YWNoKCk6IHRoZSBnaG9zdFxcbitcXHRcXHQgKiBzbmRidWZfZGVzYyBpcyBhdHRhY2hlZCBhZnRlciB0aGUgY29ubmVjdGlvbiBpcyByZWFjaGFibGUgdG9cXG4rXFx0XFx0ICogdGhlIElTTSBkZXZpY2UsIHNvIGFjcXVpcmUgaXQgYW5kIHNraXAgdGhlIHVwZGF0ZSB3aGlsZSBpdCBpc1xcbitcXHRcXHQgKiB1bnNldCAtLSBhdm9pZHMgYSBOVUxMIGRlcmVmIGFuZCBhIGxvYWQgb2YgYW4gdW5pbml0aWFsaXNlZFxcbitcXHRcXHQgKiBidWZmZXIuXFxuK1xcdFxcdCAqL1xcbitcXHRcXHRzbmRidWZfZGVzYyA9IHNtcF9sb2FkX2FjcXVpcmUoXFx1MDAyNmNvbm4tXFx1MDAzZXNuZGJ1Zl9kZXNjKTtcXG4gXFx0XFx0aWYgKGNvbm4tXFx1MDAzZWxnci1cXHUwMDNlaXNfc21jZCBcXHUwMDI2XFx1MDAyNlxcbi1cXHRcXHQgICAgc21jX2lzbV9zdXBwb3J0X2RtYl9ub2NvcHkoY29ubi1cXHUwMDNlbGdyLVxcdTAwM2VzbWNkKSkge1xcbitcXHRcXHQgICAgc21jX2lzbV9zdXBwb3J0X2RtYl9ub2NvcHkoY29ubi1cXHUwMDNlbGdyLVxcdTAwM2VzbWNkKSBcXHUwMDI2XFx1MDAyNlxcbitcXHRcXHQgICAgc25kYnVmX2Rlc2MpIHtcXG4gXFx0XFx0XFx0LyogQ2FsY3VsYXRlIGNvbnN1bWVkIGRhdGEgYW5kXFxuIFxcdFxcdFxcdCAqIGluY3JlbWVudCBmcmVlIHNlbmQgYnVmZmVyIHNwYWNlLlxcbiBcXHRcXHRcXHQgKi9cXG4tXFx0XFx0XFx0ZGlmZl90eCA9IHNtY19jdXJzX2RpZmYoY29ubi1cXHUwMDNlc25kYnVmX2Rlc2MtXFx1MDAzZWxlbixcXG4rXFx0XFx0XFx0ZGlmZl90eCA9IHNtY19jdXJzX2RpZmYoc25kYnVmX2Rlc2MtXFx1MDAzZWxlbixcXG4gXFx0XFx0XFx0XFx0XFx0XFx0XFx1MDAyNmNvbm4tXFx1MDAzZXR4X2N1cnNfZmluLFxcbiBcXHRcXHRcXHRcXHRcXHRcXHRcXHUwMDI2Y29ubi1cXHUwMDNlbG9jYWxfcnhfY3RybC5jb25zKTtcXG4gXFx0XFx0XFx0LyogaW5jcmVhc2UgbG9jYWwgc25kYnVmIHNwYWNlIGFuZCBmaW5fY3VycyAqL1xcbkBAIC00NDMsMTMgKzQ1MiwyMSBAQCBzdGF0aWMgdm9pZCBzbWNkX2NkY19yeF90c2tsZXQoc3RydWN0IHRhc2tsZXRfc3RydWN0ICp0KVxcbiB7XFxuIFxcdHN0cnVjdCBzbWNfY29ubmVjdGlvbiAqY29ubiA9IGZyb21fdGFza2xldChjb25uLCB0LCByeF90c2tsZXQpO1xcbiBcXHRzdHJ1Y3Qgc21jZF9jZGNfbXNnICpkYXRhX2NkYztcXG4rXFx0c3RydWN0IHNtY19idWZfZGVzYyAqcm1iX2Rlc2M7XFxuIFxcdHN0cnVjdCBzbWNkX2NkY19tc2cgY2RjO1xcbiBcXHRzdHJ1Y3Qgc21jX3NvY2sgKnNtYztcXG4gXFxuIFxcdGlmICghY29ubiB8fCBjb25uLVxcdTAwM2VraWxsZWQpXFxuIFxcdFxcdHJldHVybjtcXG4rXFx0LyogUGFpciB3aXRoIHNtcF9zdG9yZV9yZWxlYXNlKCkgaW4gX19zbWNfYnVmX2NyZWF0ZSgpOiB0aGUgY29ubmVjdGlvblxcbitcXHQgKiBpcyBwdWJsaXNoZWQgYmVmb3JlIGl0cyBSTUIgaXMgYWxsb2NhdGVkLCBzbyBiYWlsIHdoaWxlIHJtYl9kZXNjIGlzXFxuK1xcdCAqIHVuc2V0IHRvIGF2b2lkIGEgTlVMTCBkZXJlZiBhbmQgYSBsb2FkIG9mIGFuIHVuaW5pdGlhbGlzZWQgYnVmZmVyLlxcbitcXHQgKi9cXG4rXFx0cm1iX2Rlc2MgPSBzbXBfbG9hZF9hY3F1aXJlKFxcdTAwMjZjb25uLVxcdTAwM2VybWJfZGVzYyk7XFxuK1xcdGlmICghcm1iX2Rlc2MpXFxuK1xcdFxcdHJldHVybjtcXG4gXFxuLVxcdGRhdGFfY2RjID0gKHN0cnVjdCBzbWNkX2NkY19tc2cgKiljb25uLVxcdTAwM2VybWJfZGVzYy1cXHUwMDNlY3B1X2FkZHI7XFxuK1xcdGRhdGFfY2RjID0gKHN0cnVjdCBzbWNkX2NkY19tc2cgKilybWJfZGVzYy1cXHUwMDNlY3B1X2FkZHI7XFxuIFxcdHNtY2RfY3Vyc19jb3B5KFxcdTAwMjZjZGMucHJvZCwgXFx1MDAyNmRhdGFfY2RjLVxcdTAwM2Vwcm9kLCBjb25uKTtcXG4gXFx0c21jZF9jdXJzX2NvcHkoXFx1MDAyNmNkYy5jb25zLCBcXHUwMDI2ZGF0YV9jZGMtXFx1MDAzZWNvbnMsIGNvbm4pO1xcbiBcXHRzbWMgPSBjb250YWluZXJfb2YoY29ubiwgc3RydWN0IHNtY19zb2NrLCBjb25uKTtcXG5AQCAtNDgzLDcgKzUwMCwxMSBAQCBzdGF0aWMgdm9pZCBzbWNfY2RjX3J4X2hhbmRsZXIoc3RydWN0IGliX3djICp3Yywgdm9pZCAqYnVmKVxcbiBcXHRsZ3IgPSBzbWNfZ2V0X2xncihsaW5rKTtcXG4gXFx0cmVhZF9sb2NrX2JoKFxcdTAwMjZsZ3ItXFx1MDAzZWNvbm5zX2xvY2spO1xcbiBcXHRjb25uID0gc21jX2xncl9maW5kX2Nvbm4obnRvaGwoY2RjLVxcdTAwM2V0b2tlbiksIGxncik7XFxuLVxcdGlmICghY29ubiB8fCBjb25uLVxcdTAwM2VvdXRfb2Zfc3luYykge1xcbitcXHQvKiBQYWlyIHdpdGggc21wX3N0b3JlX3JlbGVhc2UoKSBpbiBfX3NtY19idWZfY3JlYXRlKCk6IGJhaWwgd2hpbGUgdGhlXFxuK1xcdCAqIFJNQiBpcyB1bnNldCAoc21jX2NkY19tc2dfcmVjdl9hY3Rpb24oKSBkZXJlZmVyZW5jZXMgaXQpIHRvIGF2b2lkIGFcXG4rXFx0ICogTlVMTCBkZXJlZiBhbmQgYSBzdGFsZS1idWZmZXIgcmVhZCBpbiB0aGUgY29ubmVjdGlvbiBzZXR1cCB3aW5kb3cuXFxuK1xcdCAqL1xcbitcXHRpZiAoIWNvbm4gfHwgY29ubi1cXHUwMDNlb3V0X29mX3N5bmMgfHwgIXNtcF9sb2FkX2FjcXVpcmUoXFx1MDAyNmNvbm4tXFx1MDAzZXJtYl9kZXNjKSkge1xcbiBcXHRcXHRyZWFkX3VubG9ja19iaChcXHUwMDI2bGdyLVxcdTAwM2Vjb25uc19sb2NrKTtcXG4gXFx0XFx0cmV0dXJuO1xcbiBcXHR9XFxuZGlmZiAtLWdpdCBhL25ldC9zbWMvc21jX2NvcmUuYyBiL25ldC9zbWMvc21jX2NvcmUuY1xcbmluZGV4IGNmNmI2MjBmZWYwNWY5Li5kOTRiNzI4YzBkNjhjNyAxMDA2NDRcXG4tLS0gYS9uZXQvc21jL3NtY19jb3JlLmNcXG4rKysgYi9uZXQvc21jL3NtY19jb3JlLmNcXG5AQCAtMjQ5OSw3ICsyNDk5LDEzIEBAIHN0YXRpYyBpbnQgX19zbWNfYnVmX2NyZWF0ZShzdHJ1Y3Qgc21jX3NvY2sgKnNtYywgYm9vbCBpc19zbWNkLCBib29sIGlzX3JtYilcXG4gXFx0fVxcbiBcXG4gXFx0aWYgKGlzX3JtYikge1xcbi1cXHRcXHRjb25uLVxcdTAwM2VybWJfZGVzYyA9IGJ1Zl9kZXNjO1xcbitcXHRcXHQvKiBQdWJsaXNoIHdpdGggcmVsZWFzZSBzZW1hbnRpY3M6IHRoZSBjb25uZWN0aW9uIGlzIGFscmVhZHkgaW5cXG4rXFx0XFx0ICogdGhlIGxpbmsgZ3JvdXAncyB0b2tlbiB0cmVlLCBzbyBhIGNvbmN1cnJlbnQgQ0RDIHJlY2VpdmVcXG4rXFx0XFx0ICogaGFuZGxlciBtdXN0IG9ic2VydmUgYSBmdWxseSBpbml0aWFsaXNlZCBidWZmZXIgb25jZSBpdCBzZWVzXFxuK1xcdFxcdCAqIGEgbm9uLU5VTEwgcm1iX2Rlc2MuICBQYWlycyB3aXRoIHRoZSBzbXBfbG9hZF9hY3F1aXJlKCkgaW5cXG4rXFx0XFx0ICogdGhlIENEQyByZWNlaXZlIHBhdGguXFxuK1xcdFxcdCAqL1xcbitcXHRcXHRzbXBfc3RvcmVfcmVsZWFzZShcXHUwMDI2Y29ubi1cXHUwMDNlcm1iX2Rlc2MsIGJ1Zl9kZXNjKTtcXG4gXFx0XFx0Y29ubi1cXHUwMDNlcm1iZV9zaXplX2NvbXAgPSBidWZzaXplX2NvbXA7XFxuIFxcdFxcdHNtYy1cXHUwMDNlc2suc2tfcmN2YnVmID0gYnVmc2l6ZSAqIDI7XFxuIFxcdFxcdGF0b21pY19zZXQoXFx1MDAyNmNvbm4tXFx1MDAzZWJ5dGVzX3RvX3JjdiwgMCk7XFxuQEAgLTI1OTksNyArMjYwNSwxMyBAQCBpbnQgc21jZF9idWZfYXR0YWNoKHN0cnVjdCBzbWNfc29jayAqc21jKVxcbiBcXHRidWZfZGVzYy1cXHUwMDNlY3B1X2FkZHIgPVxcbiBcXHRcXHQodTggKilidWZfZGVzYy1cXHUwMDNlY3B1X2FkZHIgKyBzaXplb2Yoc3RydWN0IHNtY2RfY2RjX21zZyk7XFxuIFxcdGJ1Zl9kZXNjLVxcdTAwM2VsZW4gLT0gc2l6ZW9mKHN0cnVjdCBzbWNkX2NkY19tc2cpO1xcbi1cXHRjb25uLVxcdTAwM2VzbmRidWZfZGVzYyA9IGJ1Zl9kZXNjO1xcbitcXHQvKiBQdWJsaXNoIHdpdGggcmVsZWFzZSBzZW1hbnRpY3M6IHRoZSBjb25uZWN0aW9uIGlzIGFscmVhZHkgcmVhY2hhYmxlXFxuK1xcdCAqIHRvIHRoZSBJU00gZGV2aWNlIChzbWNfaXNtX3NldF9jb25uKCkgcmFuIGluIF9fc21jX2J1Zl9jcmVhdGUoKSksIHNvXFxuK1xcdCAqIHRoZSBDREMgcmVjZWl2ZSB0YXNrbGV0IG11c3Qgb2JzZXJ2ZSBhIGZ1bGx5IGluaXRpYWxpc2VkIGdob3N0IGJ1ZmZlclxcbitcXHQgKiBvbmNlIGl0IHNlZXMgYSBub24tTlVMTCBzbmRidWZfZGVzYy4gIFBhaXJzIHdpdGggc21wX2xvYWRfYWNxdWlyZSgpXFxuK1xcdCAqIGluIHNtY19jZGNfbXNnX3JlY3ZfYWN0aW9uKCkuXFxuK1xcdCAqL1xcbitcXHRzbXBfc3RvcmVfcmVsZWFzZShcXHUwMDI2Y29ubi1cXHUwMDNlc25kYnVmX2Rlc2MsIGJ1Zl9kZXNjKTtcXG4gXFx0Y29ubi1cXHUwMDNlc25kYnVmX2Rlc2MtXFx1MDAzZXVzZWQgPSAxO1xcbiBcXHRhdG9taWNfc2V0KFxcdTAwMjZjb25uLVxcdTAwM2VzbmRidWZfc3BhY2UsIGNvbm4tXFx1MDAzZXNuZGJ1Zl9kZXNjLVxcdTAwM2VsZW4pO1xcbiBcXHRyZXR1cm4gMDtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTVUMTA6MTM6MTEuNjY1MTczMTA2WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0Njg3NjYzNjg4MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJTTUNcIixcbiAgICBcIkRJQlNcIixcbiAgICBcIkRJQlNfTE9cIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJzbWNfY2RjX21zZ19yZWN2X2FjdGlvblwiLFxuICAgIFwic21jZF9jZGNfcnhfdHNrbGV0XCIsXG4gICAgXCJzbWNfY2RjX3J4X2hhbmRsZXJcIixcbiAgICBcIl9fc21jX2J1Zl9jcmVhdGVcIixcbiAgICBcInNtY2RfYnVmX2F0dGFjaFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgcmFjZSBjb25kaXRpb24gaW4gdGhlIFNNQyBwcm90b2NvbCB3aGVyZSBhIGNvbmN1cnJlbnQgQ0RDIHJlY2VpdmUgaGFuZGxlciBjb3VsZCBhY2Nlc3MgdW5pbml0aWFsaXplZCBvciBOVUxMIGJ1ZmZlciBkZXNjcmlwdG9ycyBkdXJpbmcgY29ubmVjdGlvbiBzZXR1cC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIFNNQyBsb2dpYyBhbmQgaXMgcmVhY2hhYmxlIHZpYSB0aGUgbG9vcGJhY2sgSVNNIGRldmljZS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdFxuICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LFxuICAgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCBmYjZjM2QyZWE1N2NhNDVhNDVjZWFjYjQ5NDRmZWU0MTJjMDRhNzVmXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFdlZCBKdWwgMTUgMTA6MTM6MTAgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9uZXQvc21jL3NtY19jZGMuYyBiL25ldC9zbWMvc21jX2NkYy5jXG5pbmRleCAzMmQ2ZDAzZGYzMjE0NS4uMmNkMGVlN2I1MWMyMjYgMTAwNjQ0XG4tLS0gYS9uZXQvc21jL3NtY19jZGMuY1xuKysrIGIvbmV0L3NtYy9zbWNfY2RjLmNcbkBAIC0zMzIsNiArMzMyLDcgQEAgc3RhdGljIHZvaWQgc21jX2NkY19tc2dfcmVjdl9hY3Rpb24oc3RydWN0IHNtY19zb2NrICpzbWMsXG4ge1xuIFx0dW5pb24gc21jX2hvc3RfY3Vyc29yIGNvbnNfb2xkLCBwcm9kX29sZDtcbiBcdHN0cnVjdCBzbWNfY29ubmVjdGlvbiAqY29ubiA9IFx1MDAyNnNtYy1cdTAwM2Vjb25uO1xuK1x0c3RydWN0IHNtY19idWZfZGVzYyAqc25kYnVmX2Rlc2M7XG4gXHRpbnQgZGlmZl9jb25zLCBkaWZmX3Byb2QsIGRpZmZfdHg7XG4gXG4gXHRzbWNfY3Vyc19jb3B5KFx1MDAyNnByb2Rfb2xkLCBcdTAwMjZjb25uLVx1MDAzZWxvY2FsX3J4X2N0cmwucHJvZCwgY29ubik7XG5AQCAtMzUzLDEyICszNTQsMjAgQEAgc3RhdGljIHZvaWQgc21jX2NkY19tc2dfcmVjdl9hY3Rpb24oc3RydWN0IHNtY19zb2NrICpzbWMsXG4gXHRcdCAqIHBlZXIgUk1CLCB0aGVuIHVwZGF0ZSB0eF9jdXJzX2ZpbiBhbmQgc25kYnVmX3NwYWNlXG4gXHRcdCAqIGhlcmUgc2luY2UgcGVlciBoYXMgYWxyZWFkeSBjb25zdW1lZCB0aGUgZGF0YS5cbiBcdFx0ICovXG4rXHRcdC8qIFBhaXIgd2l0aCBzbXBfc3RvcmVfcmVsZWFzZSgpIGluIHNtY2RfYnVmX2F0dGFjaCgpOiB0aGUgZ2hvc3RcbitcdFx0ICogc25kYnVmX2Rlc2MgaXMgYXR0YWNoZWQgYWZ0ZXIgdGhlIGNvbm5lY3Rpb24gaXMgcmVhY2hhYmxlIHRvXG4rXHRcdCAqIHRoZSBJU00gZGV2aWNlLCBzbyBhY3F1aXJlIGl0IGFuZCBza2lwIHRoZSB1cGRhdGUgd2hpbGUgaXQgaXNcbitcdFx0ICogdW5zZXQgLS0gYXZvaWRzIGEgTlVMTCBkZXJlZiBhbmQgYSBsb2FkIG9mIGFuIHVuaW5pdGlhbGlzZWRcbitcdFx0ICogYnVmZmVyLlxuK1x0XHQgKi9cbitcdFx0c25kYnVmX2Rlc2MgPSBzbXBfbG9hZF9hY3F1aXJlKFx1MDAyNmNvbm4tXHUwMDNlc25kYnVmX2Rlc2MpO1xuIFx0XHRpZiAoY29ubi1cdTAwM2VsZ3ItXHUwMDNlaXNfc21jZCBcdTAwMjZcdTAwMjZcbi1cdFx0ICAgIHNtY19pc21fc3VwcG9ydF9kbWJfbm9jb3B5KGNvbm4tXHUwMDNlbGdyLVx1MDAzZXNtY2QpKSB7XG4rXHRcdCAgICBzbWNfaXNtX3N1cHBvcnRfZG1iX25vY29weShjb25uLVx1MDAzZWxnci1cdTAwM2VzbWNkKSBcdTAwMjZcdTAwMjZcbitcdFx0ICAgIHNuZGJ1Zl9kZXNjKSB7XG4gXHRcdFx0LyogQ2FsY3VsYXRlIGNvbnN1bWVkIGRhdGEgYW5kXG4gXHRcdFx0ICogaW5jcmVtZW50IGZyZWUgc2VuZCBidWZmZXIgc3BhY2UuXG4gXHRcdFx0ICovXG4tXHRcdFx0ZGlmZl90eCA9IHNtY19jdXJzX2RpZmYoY29ubi1cdTAwM2VzbmRidWZfZGVzYy1cdTAwM2VsZW4sXG4rXHRcdFx0ZGlmZl90eCA9IHNtY19jdXJzX2RpZmYoc25kYnVmX2Rlc2MtXHUwMDNlbGVuLFxuIFx0XHRcdFx0XHRcdFx1MDAyNmNvbm4tXHUwMDNldHhfY3Vyc19maW4sXG4gXHRcdFx0XHRcdFx0XHUwMDI2Y29ubi1cdTAwM2Vsb2NhbF9yeF9jdHJsLmNvbnMpO1xuIFx0XHRcdC8qIGluY3JlYXNlIGxvY2FsIHNuZGJ1ZiBzcGFjZSBhbmQgZmluX2N1cnMgKi9cbkBAIC00NDMsMTMgKzQ1MiwyMSBAQCBzdGF0aWMgdm9pZCBzbWNkX2NkY19yeF90c2tsZXQoc3RydWN0IHRhc2tsZXRfc3RydWN0ICp0KVxuIHtcbiBcdHN0cnVjdCBzbWNfY29ubmVjdGlvbiAqY29ubiA9IGZyb21fdGFza2xldChjb25uLCB0LCByeF90c2tsZXQpO1xuIFx0c3RydWN0IHNtY2RfY2RjX21zZyAqZGF0YV9jZGM7XG4rXHRzdHJ1Y3Qgc21jX2J1Zl9kZXNjICpybWJfZGVzYztcbiBcdHN0cnVjdCBzbWNkX2NkY19tc2cgY2RjO1xuIFx0c3RydWN0IHNtY19zb2NrICpzbWM7XG4gXG4gXHRpZiAoIWNvbm4gfHwgY29ubi1cdTAwM2VraWxsZWQpXG4gXHRcdHJldHVybjtcbitcdC8qIFBhaXIgd2l0aCBzbXBfc3RvcmVfcmVsZWFzZSgpIGluIF9fc21jX2J1Zl9jcmVhdGUoKTogdGhlIGNvbm5lY3Rpb25cbitcdCAqIGlzIHB1Ymxpc2hlZCBiZWZvcmUgaXRzIFJNQiBpcyBhbGxvY2F0ZWQsIHNvIGJhaWwgd2hpbGUgcm1iX2Rlc2MgaXNcbitcdCAqIHVuc2V0IHRvIGF2b2lkIGEgTlVMTCBkZXJlZiBhbmQgYSBsb2FkIG9mIGFuIHVuaW5pdGlhbGlzZWQgYnVmZmVyLlxuK1x0ICovXG4rXHRybWJfZGVzYyA9IHNtcF9sb2FkX2FjcXVpcmUoXHUwMDI2Y29ubi1cdTAwM2VybWJfZGVzYyk7XG4rXHRpZiAoIXJtYl9kZXNjKVxuK1x0XHRyZXR1cm47XG4gXG4tXHRkYXRhX2NkYyA9IChzdHJ1Y3Qgc21jZF9jZGNfbXNnICopY29ubi1cdTAwM2VybWJfZGVzYy1cdTAwM2VjcHVfYWRkcjtcbitcdGRhdGFfY2RjID0gKHN0cnVjdCBzbWNkX2NkY19tc2cgKilybWJfZGVzYy1cdTAwM2VjcHVfYWRkcjtcbiBcdHNtY2RfY3Vyc19jb3B5KFx1MDAyNmNkYy5wcm9kLCBcdTAwMjZkYXRhX2NkYy1cdTAwM2Vwcm9kLCBjb25uKTtcbiBcdHNtY2RfY3Vyc19jb3B5KFx1MDAyNmNkYy5jb25zLCBcdTAwMjZkYXRhX2NkYy1cdTAwM2Vjb25zLCBjb25uKTtcbiBcdHNtYyA9IGNvbnRhaW5lcl9vZihjb25uLCBzdHJ1Y3Qgc21jX3NvY2ssIGNvbm4pO1xuQEAgLTQ4Myw3ICs1MDAsMTEgQEAgc3RhdGljIHZvaWQgc21jX2NkY19yeF9oYW5kbGVyKHN0cnVjdCBpYl93YyAqd2MsIHZvaWQgKmJ1ZilcbiBcdGxnciA9IHNtY19nZXRfbGdyKGxpbmspO1xuIFx0cmVhZF9sb2NrX2JoKFx1MDAyNmxnci1cdTAwM2Vjb25uc19sb2NrKTtcbiBcdGNvbm4gPSBzbWNfbGdyX2ZpbmRfY29ubihudG9obChjZGMtXHUwMDNldG9rZW4pLCBsZ3IpO1xuLVx0aWYgKCFjb25uIHx8IGNvbm4tXHUwMDNlb3V0X29mX3N5bmMpIHtcbitcdC8qIFBhaXIgd2l0aCBzbXBfc3RvcmVfcmVsZWFzZSgpIGluIF9fc21jX2J1Zl9jcmVhdGUoKTogYmFpbCB3aGlsZSB0aGVcbitcdCAqIFJNQiBpcyB1bnNldCAoc21jX2NkY19tc2dfcmVjdl9hY3Rpb24oKSBkZXJlZmVyZW5jZXMgaXQpIHRvIGF2b2lkIGFcbitcdCAqIE5VTEwgZGVyZWYgYW5kIGEgc3RhbGUtYnVmZmVyIHJlYWQgaW4gdGhlIGNvbm5lY3Rpb24gc2V0dXAgd2luZG93LlxuK1x0ICovXG4rXHRpZiAoIWNvbm4gfHwgY29ubi1cdTAwM2VvdXRfb2Zfc3luYyB8fCAhc21wX2xvYWRfYWNxdWlyZShcdTAwMjZjb25uLVx1MDAzZXJtYl9kZXNjKSkge1xuIFx0XHRyZWFkX3VubG9ja19iaChcdTAwMjZsZ3ItXHUwMDNlY29ubnNfbG9jayk7XG4gXHRcdHJldHVybjtcbiBcdH1cbmRpZmYgLS1naXQgYS9uZXQvc21jL3NtY19jb3JlLmMgYi9uZXQvc21jL3NtY19jb3JlLmNcbmluZGV4IGNmNmI2MjBmZWYwNWY5Li5kOTRiNzI4YzBkNjhjNyAxMDA2NDRcbi0tLSBhL25ldC9zbWMvc21jX2NvcmUuY1xuKysrIGIvbmV0L3NtYy9zbWNfY29yZS5jXG5AQCAtMjQ5OSw3ICsyNDk5LDEzIEBAIHN0YXRpYyBpbnQgX19zbWNfYnVmX2NyZWF0ZShzdHJ1Y3Qgc21jX3NvY2sgKnNtYywgYm9vbCBpc19zbWNkLCBib29sIGlzX3JtYilcbiBcdH1cbiBcbiBcdGlmIChpc19ybWIpIHtcbi1cdFx0Y29ubi1cdTAwM2VybWJfZGVzYyA9IGJ1Zl9kZXNjO1xuK1x0XHQvKiBQdWJsaXNoIHdpdGggcmVsZWFzZSBzZW1hbnRpY3M6IHRoZSBjb25uZWN0aW9uIGlzIGFscmVhZHkgaW5cbitcdFx0ICogdGhlIGxpbmsgZ3JvdXAncyB0b2tlbiB0cmVlLCBzbyBhIGNvbmN1cnJlbnQgQ0RDIHJlY2VpdmVcbitcdFx0ICogaGFuZGxlciBtdXN0IG9ic2VydmUgYSBmdWxseSBpbml0aWFsaXNlZCBidWZmZXIgb25jZSBpdCBzZWVzXG4rXHRcdCAqIGEgbm9uLU5VTEwgcm1iX2Rlc2MuICBQYWlycyB3aXRoIHRoZSBzbXBfbG9hZF9hY3F1aXJlKCkgaW5cbitcdFx0ICogdGhlIENEQyByZWNlaXZlIHBhdGguXG4rXHRcdCAqL1xuK1x0XHRzbXBfc3RvcmVfcmVsZWFzZShcdTAwMjZjb25uLVx1MDAzZXJtYl9kZXNjLCBidWZfZGVzYyk7XG4gXHRcdGNvbm4tXHUwMDNlcm1iZV9zaXplX2NvbXAgPSBidWZzaXplX2NvbXA7XG4gXHRcdHNtYy1cdTAwM2Vzay5za19yY3ZidWYgPSBidWZzaXplICogMjtcbiBcdFx0YXRvbWljX3NldChcdTAwMjZjb25uLVx1MDAzZWJ5dGVzX3RvX3JjdiwgMCk7XG5AQCAtMjU5OSw3ICsyNjA1LDEzIEBAIGludCBzbWNkX2J1Zl9hdHRhY2goc3RydWN0IHNtY19zb2NrICpzbWMpXG4gXHRidWZfZGVzYy1cdTAwM2VjcHVfYWRkciA9XG4gXHRcdCh1OCAqKWJ1Zl9kZXNjLVx1MDAzZWNwdV9hZGRyICsgc2l6ZW9mKHN0cnVjdCBzbWNkX2NkY19tc2cpO1xuIFx0YnVmX2Rlc2MtXHUwMDNlbGVuIC09IHNpemVvZihzdHJ1Y3Qgc21jZF9jZGNfbXNnKTtcbi1cdGNvbm4tXHUwMDNlc25kYnVmX2Rlc2MgPSBidWZfZGVzYztcbitcdC8qIFB1Ymxpc2ggd2l0aCByZWxlYXNlIHNlbWFudGljczogdGhlIGNvbm5lY3Rpb24gaXMgYWxyZWFkeSByZWFjaGFibGVcbitcdCAqIHRvIHRoZSBJU00gZGV2aWNlIChzbWNfaXNtX3NldF9jb25uKCkgcmFuIGluIF9fc21jX2J1Zl9jcmVhdGUoKSksIHNvXG4rXHQgKiB0aGUgQ0RDIHJlY2VpdmUgdGFza2xldCBtdXN0IG9ic2VydmUgYSBmdWxseSBpbml0aWFsaXNlZCBnaG9zdCBidWZmZXJcbitcdCAqIG9uY2UgaXQgc2VlcyBhIG5vbi1OVUxMIHNuZGJ1Zl9kZXNjLiAgUGFpcnMgd2l0aCBzbXBfbG9hZF9hY3F1aXJlKClcbitcdCAqIGluIHNtY19jZGNfbXNnX3JlY3ZfYWN0aW9uKCkuXG4rXHQgKi9cbitcdHNtcF9zdG9yZV9yZWxlYXNlKFx1MDAyNmNvbm4tXHUwMDNlc25kYnVmX2Rlc2MsIGJ1Zl9kZXNjKTtcbiBcdGNvbm4tXHUwMDNlc25kYnVmX2Rlc2MtXHUwMDNldXNlZCA9IDE7XG4gXHRhdG9taWNfc2V0KFx1MDAyNmNvbm4tXHUwMDNlc25kYnVmX3NwYWNlLCBjb25uLVx1MDAzZXNuZGJ1Zl9kZXNjLVx1MDAzZWxlbik7XG4gXHRyZXR1cm4gMDtcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDEwOjEzOjExLjY2NTE3NDYyNloiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjUxMjYzNDI3NjIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBTTUMgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ3ZlIGdvdCBhIHBhdGNoIGhlcmUgdGhhdCdzIHRvdWNoaW5nIGBuZXQvc21jL3NtY19jZGMuY2AgYW5kIGBuZXQvc21jL3NtY19jb3JlLmNgIOKAkyB0aGF0J3MgYSBrZXkgYXJlYSBmb3IgdGhlIFNoYXJlZCBNZW1vcnkgQ29tbXVuaWNhdGlvbnMgcHJvdG9jb2wuIFRoZSBtYWluIGZvY3VzIHNlZW1zIHRvIGJlIGFyb3VuZCB0aG9zZSBtZW1vcnkgYmFycmllcnMsIGBzbXBfbG9hZF9hY3F1aXJlYCBhbmQgYHNtcF9zdG9yZV9yZWxlYXNlYCwgd2hpY2ggaXMgY2xhc3NpYy4gVGhleSdyZSBiZWluZyBwbGFjZWQgYXJvdW5kIGFjY2VzcyB0byBgY29ubi1cdTAwM2VybWJfZGVzY2AgYW5kIGBjb25uLVx1MDAzZXNuZGJ1Zl9kZXNjYC4gVGhlIGdvYWwgaXMgY2xlYXJseSB0byBhdm9pZCBwb3RlbnRpYWwgTlVMTCBwb2ludGVyIGRlcmVmZXJlbmNlcyBhbmQgcHJldmVudCB0aG9zZSBuYXN0eSB1bmluaXRpYWxpemVkIGJ1ZmZlciByZWFkcywgd2hpY2ggSSd2ZSBzZWVuIGNhdXNlIGVub3VnaCBwcm9ibGVtcyBpbiB0aGUgcGFzdC4gSXQncyBhIGZ1bmN0aW9uYWwgY2hhbmdlLCBub3QgYSBuZXcgZmVhdHVyZSwgYnV0IG5lY2Vzc2FyeSBmb3IgY29ycmVjdG5lc3MuXG5cbkZpcnN0IHRoaW5ncyBmaXJzdDogSXMgU01DIGV2ZW4gZW5hYmxlZD8gSSBuZWVkIHRvIGNoZWNrIHRoZSBidWlsZCBjb25maWd1cmF0aW9uLiBgQ09ORklHX1NNQ2Agc2hvdWxkIGJlIHRoZSBmbGFnLiBJJ2xsIG1ha2UgYSBub3RlIHRvIGNvbmZpcm0gdGhhdC5cblxuTm93LCBsZXQncyBnZXQgaW50byB0aGUgY29kZSBpdHNlbGYuIEknbGwgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBpbXBhY3Qgb2YgdGhlc2UgYmFycmllcnMuIEJhc2VkIG9uIHRoZSBwYXRjaCwgaXQgbG9va3MgbGlrZSB0aGVzZSBhcmUgdGhlIGZ1bmN0aW9ucyB0aGF0IHdpbGwgbmVlZCBjbG9zZXIgaW5zcGVjdGlvbjogYHNtY19jZGNfbXNnX3JlY3ZfYWN0aW9uYCwgYHNtY2RfY2RjX3J4X3Rza2xldGAsIGBzbWNfY2RjX3J4X2hhbmRsZXJgLCBgX19zbWNfYnVmX2NyZWF0ZWAsIGFuZCBgc21jZF9idWZfYXR0YWNoYC4gSSdsbCBuZWVkIHRvIHRyYWNlIHRoZSBkYXRhIGZsb3cgdGhyb3VnaCB0aG9zZSBhbmQgc2VlIGV4YWN0bHkgd2hlcmUgdGhlc2UgbWVtb3J5IGJhcnJpZXIgY2hhbmdlcyBhcmUgY3JpdGljYWwuIEknbSBnb2luZyB0byB0cmFjayBkb3duIHdoYXQgdGhlIHJlbGV2YW50IGNvbmZpZ3MgYXJlIHRvIHNlZSB3aGF0IHBhcnRzIG9mIHRoZSBTTUMgc3RhY2sgYXJlIGFjdHVhbGx5IGJlaW5nIG1vZGlmaWVkLlxuXG5UaGlzIGFsbCBwb2ludHMgdG8gZW5zdXJpbmcgZGF0YSBjb25zaXN0ZW5jeSBiZXR3ZWVuIHRoZSBjb3JlcyBkdXJpbmcgY29tbXVuaWNhdGlvbi4gVGltZSB0byBkaXZlIGludG8gdGhlc2Ugc3BlY2lmaWMgZnVuY3Rpb25zIGFuZCB1bmRlcnN0YW5kIHRoZSBjb250ZXh0IGJldHRlci5cblxuXG4iLCJJbnB1dFRva2VucyI6MzQzNywiT3V0cHV0VG9rZW5zIjoyOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI1OSwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDEwOjEzOjE2Ljc5MTUxOTMyOFoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2Mjg5ODUxNSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgU01DXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9zbWMvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvc21jL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG5uZXQvc21jL0tjb25maWc6Mjpjb25maWcgU01DXFxubmV0L3NtYy9LY29uZmlnLTMtXFx0dHJpc3RhdGUgXFxcIlNNQyBzb2NrZXQgcHJvdG9jb2wgZmFtaWx5XFxcIlxcbi0tXFxubmV0L3NtYy9LY29uZmlnLTEzLVxcbm5ldC9zbWMvS2NvbmZpZzoxNDpjb25maWcgU01DX0RJQUdcXG5uZXQvc21jL0tjb25maWctMTUtXFx0dHJpc3RhdGUgXFxcIlNNQzogc29ja2V0IG1vbml0b3JpbmcgaW50ZXJmYWNlXFxcIlxcbi0tXFxubmV0L3NtYy9LY29uZmlnLTIyLVxcbm5ldC9zbWMvS2NvbmZpZzoyMzpjb25maWcgU01DX0hTX0NUUkxfQlBGXFxubmV0L3NtYy9LY29uZmlnLTI0LVxcdGJvb2wgXFxcIkdlbmVyaWMgZUJQRiBob29rIGZvciBTTUMgaGFuZHNoYWtlIGZsb3dcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDEwOjEzOjE2Ljg1NDQyNTE1M1oiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM4NTkyOTk3NjgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBicmVha2Rvd24gb2YgdGhpcy5cblxuKipJbnZlc3RpZ2F0aW5nIFNNQyBDYXBhYmlsaXRpZXMgYW5kIEltcGxlbWVudGF0aW9uKipcblxuUmlnaHQsIHNvIHdlJ3JlIGxvb2tpbmcgYXQgU01DLCB3aGljaCBpcyBkZWZpbmVkIGFzIGBDT05GSUdfU01DYC4gTXkgZmlyc3QgaW5zdGluY3QgaXMgdG8gdW5kZXJzdGFuZCBpdHMgdW5kZXJseWluZyBoYXJkd2FyZSByZXF1aXJlbWVudHMuIENhbiB3ZSBnZXQgYXdheSB3aXRoIGVtdWxhdGlvbiwgb3IgaXMgZGVkaWNhdGVkIGhhcmR3YXJlIGVzc2VudGlhbCBmb3IgaXRzIGZ1bmN0aW9uYWxpdHk/IFRoZSBrZXkgcXVlc3Rpb24gaXMgd2hldGhlciB3ZSBjYW4gZWZmZWN0aXZlbHkgc2ltdWxhdGUgdGhpcyBmb3IgdGVzdGluZyBvciBpbiBlbnZpcm9ubWVudHMgd2l0aG91dCBzcGVjaWZpYyBoYXJkd2FyZSBzdXBwb3J0LlxuXG5Gcm9tIHRoZSBpbmZvcm1hdGlvbiwgSSBzZWUgdGhhdCBTTUMgb3BlcmF0ZXMgaW4gdHdvIHByaW1hcnkgZmxhdm9yczogU01DLVIsIHdoaWNoIGxldmVyYWdlcyBSRE1BLCBhbmQgU01DLUQsIHdoaWNoIHV0aWxpemVzIElTTSAoSW5maW5pQmFuZCBTaGFyZWQgTWVtb3J5KS4gTm93LCBoZXJlJ3Mgd2hlcmUgdGhpbmdzIGdldCBpbnRlcmVzdGluZzogU01DLUQgb2ZmZXJzIGEgdGFudGFsaXppbmcgcG9zc2liaWxpdHkuIEl0IGNhbiB1dGlsaXplIGEgXCJkdW1teVwiIG9yIGxvb3BiYWNrIElTTSBkZXZpY2UuIFRoaXMgaXMgYnJpbGxpYW50OyBpdCBvcGVucyBkb29ycyBmb3IgdGVzdGluZyBhbmQgZGV2ZWxvcG1lbnQgaW4gYSBtb3JlIGdlbmVyYWxpemVkIGVudmlyb25tZW50LiBJIHNob3VsZCBkZWZpbml0ZWx5IGNoZWNrIHRoZSBrZXJuZWwgc291cmNlIGNvZGUgdG8gZXhhbWluZSB0aGUgbG9vcGJhY2sgSVNNIGltcGxlbWVudGF0aW9uLiBJJ20gZ29pbmcgdG8gbG9vayBhdCBgbmV0L3NtYy9zbWNfbG9vcGJhY2suY2Agb3Igc29tZXRoaW5nIGFuYWxvZ291cy4gVGhpcyBzaG91bGQgdGVsbCBtZSBldmVyeXRoaW5nIEkgbmVlZCB0byBrbm93IGFib3V0IHRoZSBzb2Z0d2FyZSBlbXVsYXRpb24gYW5kIGl0cyBwb3RlbnRpYWwgbGltaXRhdGlvbnMgb3IgZmVhdHVyZXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQyODYsIk91dHB1dFRva2VucyI6MzEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo5NCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQxMDoxMzoyMC43MTM3MjY1ODFaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzM3OTM2ODc0LCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJTTUNfTE9cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L3NtYy9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQxMDoxMzoyMS4wNTE2NzEzMTVaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyODEwODk4ODU3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkludmVzdGlnYXRpbmcgdGhlIFNNQyBTdWJzeXN0ZW0qKlxuXG5Pa2F5LCBmaXJzdCB0aGluZ3MgZmlyc3QsIEkgbmVlZCB0byBnZXQgYSBjbGVhciBwaWN0dXJlIG9mIHdoYXQncyBnb2luZyBvbi4gTGV0J3Mgc3RhcnQgd2l0aCBhIHN5c3RlbWF0aWMgYXBwcm9hY2guIFRoZSBpbml0aWFsIGluc3RpbmN0IGlzIHRvIGRyaWxsIGRvd24gaW50byB0aGUgbmV0d29ya2luZyBzdWJzeXN0ZW0uIFRoYXQgdXN1YWxseSBnaXZlcyBtZSBhIGdvb2Qgb3ZlcnZpZXcgb2YgaG93IHRoaW5ncyBhcmUgd29ya2luZy4gU28sIG15IGZvY3VzIHdpbGwgYmUgdGhlIGBuZXQvc21jL2AgZGlyZWN0b3J5LiBUaGF0J3MgdGhlIGxvZ2ljYWwgcGxhY2UgdG8gYmVnaW4gcG9raW5nIGFyb3VuZCBmb3IgYW55IFN5c3RlbSBNYW5hZ2VtZW50IENvbnRyb2xsZXIgcmVsYXRlZCBhY3Rpdml0eSBvciBob29rcyBpbnRvIG5ldHdvcmsgZnVuY3Rpb25hbGl0eS4gVGhpcyBzZWVtcyBsaWtlIGEgcmVhc29uYWJsZSBpbml0aWFsIGNoZWNrIGJlZm9yZSBtb3Zpbmcgb250byBkZWVwZXIgYXNwZWN0cyBvZiB0aGUgc3lzdGVtLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0NjYyLCJPdXRwdXRUb2tlbnMiOjIzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTVUMTA6MTM6MjMuODYyNTcyNDUyWiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiY29kZXNlYXJjaC1kaXItaW5kZXgiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo5OTcwMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkRpclwiOiBcIm5ldC9zbWMvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIkZpbGVzXCI6IFtcbiAgICBcImFmX3NtYy5jXCIsXG4gICAgXCJzbWMuaFwiLFxuICAgIFwic21jX2NkYy5jXCIsXG4gICAgXCJzbWNfY2RjLmhcIixcbiAgICBcInNtY19jbGMuY1wiLFxuICAgIFwic21jX2NsYy5oXCIsXG4gICAgXCJzbWNfY2xvc2UuY1wiLFxuICAgIFwic21jX2Nsb3NlLmhcIixcbiAgICBcInNtY19jb3JlLmNcIixcbiAgICBcInNtY19jb3JlLmhcIixcbiAgICBcInNtY19kaWFnLmNcIixcbiAgICBcInNtY19oc19icGYuY1wiLFxuICAgIFwic21jX2hzX2JwZi5oXCIsXG4gICAgXCJzbWNfaWIuY1wiLFxuICAgIFwic21jX2liLmhcIixcbiAgICBcInNtY19pbmV0LmNcIixcbiAgICBcInNtY19pbmV0LmhcIixcbiAgICBcInNtY19pc20uY1wiLFxuICAgIFwic21jX2lzbS5oXCIsXG4gICAgXCJzbWNfbGxjLmNcIixcbiAgICBcInNtY19sbGMuaFwiLFxuICAgIFwic21jX25ldGxpbmsuY1wiLFxuICAgIFwic21jX25ldGxpbmsuaFwiLFxuICAgIFwic21jX25ldG5zLmhcIixcbiAgICBcInNtY19wbmV0LmNcIixcbiAgICBcInNtY19wbmV0LmhcIixcbiAgICBcInNtY19yeC5jXCIsXG4gICAgXCJzbWNfcnguaFwiLFxuICAgIFwic21jX3N0YXRzLmNcIixcbiAgICBcInNtY19zdGF0cy5oXCIsXG4gICAgXCJzbWNfc3lzY3RsLmNcIixcbiAgICBcInNtY19zeXNjdGwuaFwiLFxuICAgIFwic21jX3RyYWNlcG9pbnQuY1wiLFxuICAgIFwic21jX3RyYWNlcG9pbnQuaFwiLFxuICAgIFwic21jX3R4LmNcIixcbiAgICBcInNtY190eC5oXCIsXG4gICAgXCJzbWNfd3IuY1wiLFxuICAgIFwic21jX3dyLmhcIlxuICBdLFxuICBcIlN1YmRpcnNcIjogbnVsbFxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTVUMTA6MTM6MjMuODYyNjc0MDgyWiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzA0MDQ1OTMwMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkNoZWNraW5nIGZvciBhIExvb3BiYWNrIElTTSBEZXZpY2UqKlxuXG5BbHJpZ2h0LCBsZXQncyBnZXQgZG93biB0byBicmFzcyB0YWNrcy4gRmlyc3QgdGhpbmcncyBmaXJzdCwgSSBuZWVkIHRvIHZlcmlmeSBzb21ldGhpbmcgZnVuZGFtZW50YWwg4oCTIHRoZSBwcmVzZW5jZSBhbmQgYWNjZXNzaWJpbGl0eSBvZiBhIGxvb3BiYWNrIElTTSAoSW5kdXN0cmlhbCwgU2NpZW50aWZpYywgYW5kIE1lZGljYWwpIGRldmljZS4gVGhpcyBpc24ndCBqdXN0IGEgY2FzdWFsIGNoZWNrOyBpdCdzIGEgZm91bmRhdGlvbmFsIHN0ZXAuIEknbSBhc3N1bWluZywgZ2l2ZW4gdGhlIGNvbnRleHQgKHRob3VnaCBJIGRvbid0IGhhdmUgYWxsIHRoZSBkZXRhaWxzLCBvZiBjb3Vyc2UhKSwgdGhhdCB3ZSdyZSBkZWFsaW5nIHdpdGggYSBzeXN0ZW0gb3IgYXBwbGljYXRpb24gdGhhdCBpbnRlcmFjdHMgd2l0aCBSRiBzaWduYWxzLCBwb3RlbnRpYWxseSB3aXRoaW4gdGhlIElTTSBiYW5kLiBBIGxvb3BiYWNrIGRldmljZSBpcyBpbnZhbHVhYmxlIGZvciBpbml0aWFsIHRlc3RpbmcsIGRlYnVnZ2luZywgYW5kIHZhbGlkYXRpbmcgb3VyIHNldHVwLiBJdOKAmXMgdGhlIHNpbXBsZXN0IHdheSB0byBjb25maXJtIHNpZ25hbCBpbnRlZ3JpdHkgZnJvbSB0aGUgc291cmNlIHRvIHRoZSByZWNlaXZlci4gV2l0aG91dCBpdCwgZnVydGhlciBkaWFnbm9zdGljcyBhcmUgZ29pbmcgdG8gYmUgY29uc2lkZXJhYmx5IGhhcmRlci4gU28sIGJlZm9yZSBJIGRpdmUgaW50byBhbnl0aGluZyBtb3JlIGNvbXBsZXgsIEkgbmVlZCB0byBxdWlja2x5IGRldGVybWluZTogaXMgdGhlIGxvb3BiYWNrIHRoZXJlPyBBbmQgbW9yZSBpbXBvcnRhbnRseSwgaXMgaXQgYmVoYXZpbmcgYXMgZXhwZWN0ZWQ/IEkgbmVlZCB0byBrbm93IGlmIEkgY2FuIGV2ZW4gcmVseSBvbiBpdC4gTGV0J3Mgc2VlLi4uIGxldCdzIHNlZSB3aGF0IHdlIGNhbiBmaW5kLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1MjA3LCJPdXRwdXRUb2tlbnMiOjI3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTMsIlRvb2xDYWxscyI6WyJjb2Rlc2VhcmNoLWRpci1pbmRleCJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDEwOjEzOjI2LjkwMzEzNzc1MloiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzA0MjEwOTQsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibG9vcGJhY2tcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L3NtYy9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L3NtYy9zbWNfaXNtLmM9MjYwPWJvb2wgc21jX2lzbV9zdXBwb3J0X2RtYl9ub2NvcHkoc3RydWN0IHNtY2RfZGV2ICpzbWNkKVxcbm5ldC9zbWMvc21jX2lzbS5jLTI2MS17XFxubmV0L3NtYy9zbWNfaXNtLmM6MjYyOlxcdC8qIGZvciBub3cgb25seSBsb29wYmFjay1pc20gc3VwcG9ydHNcXG5uZXQvc21jL3NtY19pc20uYy0yNjMtXFx0ICogbWVyZ2luZyBzbmRidWYgd2l0aCBwZWVyIERNQiB0byBhdm9pZFxcbi0tXFxubmV0L3NtYy9zbWNfaXNtLmM9MzY1PXN0YXRpYyB2b2lkIHNtY19ubF9wcmVwX3NtY2RfZGV2KHN0cnVjdCBzbWNkX2Rldl9saXN0ICpkZXZfbGlzdCxcXG4tLVxcbm5ldC9zbWMvc21jX2lzbS5jLTM3Ny1cXHRcXHRcXHRnb3RvIG5leHQ7XFxubmV0L3NtYy9zbWNfaXNtLmM6Mzc4OlxcdFxcdGlmIChzbWNfaXNtX2lzX2xvb3BiYWNrKHNtY2QtXFx1MDAzZWRpYnMpKVxcbm5ldC9zbWMvc21jX2lzbS5jLTM3OS1cXHRcXHRcXHRnb3RvIG5leHQ7XFxuLS1cXG5uZXQvc21jL3NtY19pc20uYz00OTE9c3RhdGljIHZvaWQgc21jZF9yZWdpc3Rlcl9kZXYoc3RydWN0IGRpYnNfZGV2ICpkaWJzKVxcbi0tXFxubmV0L3NtYy9zbWNfaXNtLmMtNTA3LVxcbm5ldC9zbWMvc21jX2lzbS5jOjUwODpcXHRpZiAoc21jX2lzbV9pc19sb29wYmFjayhkaWJzKSB8fFxcbm5ldC9zbWMvc21jX2lzbS5jLTUwOS1cXHQgICAgKGRpYnMtXFx1MDAzZW9wcy1cXHUwMDNlYWRkX3ZsYW5faWQgXFx1MDAyNlxcdTAwMjZcXG4tLVxcbm5ldC9zbWMvc21jX2lzbS5jLTUxNi1cXHQgKiAtIGRldmljZXMgd2l0aG91dCBwbmV0aWQgYmVmb3JlIGRldmljZXMgd2l0aCBwbmV0aWQ7XFxubmV0L3NtYy9zbWNfaXNtLmM6NTE3OlxcdCAqIC0gbG9vcGJhY2staXNtIGFsd2F5cyBhdCB0aGUgdmVyeSBiZWdpbm5pbmc7XFxubmV0L3NtYy9zbWNfaXNtLmMtNTE4LVxcdCAqL1xcbi0tXFxubmV0L3NtYy9zbWNfaXNtLmMtNTIxLVxcdFxcdFxcdFxcdFxcdFxcdCAgc3RydWN0IHNtY2RfZGV2LCBsaXN0KTtcXG5uZXQvc21jL3NtY19pc20uYzo1MjI6XFx0XFx0aWYgKGZlbnRyeSBcXHUwMDI2XFx1MDAyNiBzbWNfaXNtX2lzX2xvb3BiYWNrKGZlbnRyeS1cXHUwMDNlZGlicykpXFxubmV0L3NtYy9zbWNfaXNtLmMtNTIzLVxcdFxcdFxcdGxpc3RfYWRkKFxcdTAwMjZzbWNkLVxcdTAwM2VsaXN0LCBcXHUwMDI2ZmVudHJ5LVxcdTAwM2VsaXN0KTtcXG4tLVxcbm5ldC9zbWMvc21jX2lzbS5oPTc4PXN0YXRpYyBpbmxpbmUgYm9vbCBfX3NtY19pc21faXNfZW11bGF0ZWQodTE2IGNoaWQpXFxuLS1cXG5uZXQvc21jL3NtY19pc20uaC04Mi1cXHQgKlxcbm5ldC9zbWMvc21jX2lzbS5oOjgzOlxcdCAqIGxvb3BiYWNrLWlzbTpcXHQweEZGRkZcXG5uZXQvc21jL3NtY19pc20uaC04NC1cXHQgKiB2aXJ0aW8taXNtOlxcdFxcdDB4RkYwMCB+IDB4RkZGRVxcbi0tXFxubmV0L3NtYy9zbWNfaXNtLmg9ODk9c3RhdGljIGlubGluZSBib29sIHNtY19pc21faXNfZW11bGF0ZWQoc3RydWN0IHNtY2RfZGV2ICpzbWNkKVxcbi0tXFxubmV0L3NtYy9zbWNfaXNtLmgtOTUtXFxubmV0L3NtYy9zbWNfaXNtLmg6OTY6c3RhdGljIGlubGluZSBib29sIHNtY19pc21faXNfbG9vcGJhY2soc3RydWN0IGRpYnNfZGV2ICpkaWJzKVxcbm5ldC9zbWMvc21jX2lzbS5oLTk3LXtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTVUMTA6MTM6MjYuOTczNTcxMzI3WiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM1NTEyODg4MTEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBzdW1tYXJ5LCB0YWtpbmcgb24gdGhlIHBlcnNvbmEgeW91J3ZlIGRlc2NyaWJlZDpcblxuKipJbnZlc3RpZ2F0aW5nIGBsb29wYmFjay1pc21gIFN1cHBvcnQqKlxuXG5BbHJpZ2h0LCBzbyB0aGUgaW5pdGlhbCBhc3N1bXB0aW9uIGlzIHRoYXQgd2UgaGF2ZSBgbG9vcGJhY2staXNtYCBzdXBwb3J0LiBHb29kLiBCdXQgd2FpdCwgSSBuZWVkIHRvIHZlcmlmeSBzb21ldGhpbmcgcmVsYXRlZCB0byBgQ09ORklHX1NNQ19MT2AuIFRoZSBkb2N1bWVudGF0aW9uIG1lbnRpb25lZCBpdHMgYXZhaWxhYmlsaXR5IGluIGBuZXQvc21jL0tjb25maWdgLCByaWdodD8gT2theSwgc28gSSBzaG91bGQganVzdCBkb3VibGUtY2hlY2sgdGhhdC4gTGV0IG1lIHF1aWNrbHkgZ3JlcCBmb3IgYFNNQ19MT2Agd2l0aGluIHRoZSBwcm9qZWN0LiBIdWgsIHRoYXQncyBvZGQsIG5vIHJlc3VsdHMuIFRoYXQgZG9lc24ndCBhbGlnbiB3aXRoIHdoYXQgSSB3YXMgdG9sZC4gVGltZSBmb3IgYSBkZWVwZXIgZGl2ZS4gU2luY2UgdGhpcyBpcyBsaWtlbHkgbmV0d29yay1yZWxhdGVkLCBhbmQgZ2l2ZW4gdGhlIGNvbnRleHQgb2YgU01DLCBJIG5lZWQgdG8gY2hlY2sgdGhlIHJlbGV2YW50IGRyaXZlciBsb2NhdGlvbnMuIE15IG5leHQgc3RlcCB3aWxsIGJlIHRvIGV4cGxvcmUgYGRyaXZlcnMvczM5MC9uZXQvYCBhbmQgdGhlbiBgZHJpdmVycy9uZXQvYCB0byBzZWUgaWYgYGxvb3BiYWNrLWlzbWAgaXMgaGFuZGxlZCB0aGVyZSBhbmQgaWYgdGhlcmUncyBhbnkgaW1wbGVtZW50YXRpb24gdGhhdCBleHBsYWlucyB3aGF0IGBTTUNfTE9gIHNob3VsZCBiZS4gTGV0J3Mgc2VlIHdoYXQgd2UgY2FuIGZpbmQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjYyNjksIk91dHB1dFRva2VucyI6MjQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo4MCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQxMDoxMzozMC41MjQ4NjIxODdaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIwMDc1NTY4OTksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibG9vcGJhY2staXNtXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIlwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jLTItLypcXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jOjM6ICogIEZ1bmN0aW9ucyBmb3IgZGlicyBsb29wYmFjay9sb29wYmFjay1pc20gZGV2aWNlLlxcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmMtNC0gKlxcbi0tXFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suaC0yLS8qXFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suaDozOiAqICBkaWJzIGxvb3BiYWNrIChha2EgbG9vcGJhY2staXNtKSBkZXZpY2Ugc3RydWN0dXJlIGRlZmluaXRpb25zLlxcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmgtNC0gKlxcbi0tXFxubmV0L3NtYy9zbWNfaXNtLmM9MjYwPWJvb2wgc21jX2lzbV9zdXBwb3J0X2RtYl9ub2NvcHkoc3RydWN0IHNtY2RfZGV2ICpzbWNkKVxcbm5ldC9zbWMvc21jX2lzbS5jLTI2MS17XFxubmV0L3NtYy9zbWNfaXNtLmM6MjYyOlxcdC8qIGZvciBub3cgb25seSBsb29wYmFjay1pc20gc3VwcG9ydHNcXG5uZXQvc21jL3NtY19pc20uYy0yNjMtXFx0ICogbWVyZ2luZyBzbmRidWYgd2l0aCBwZWVyIERNQiB0byBhdm9pZFxcbi0tXFxubmV0L3NtYy9zbWNfaXNtLmM9NDkxPXN0YXRpYyB2b2lkIHNtY2RfcmVnaXN0ZXJfZGV2KHN0cnVjdCBkaWJzX2RldiAqZGlicylcXG4tLVxcbm5ldC9zbWMvc21jX2lzbS5jLTUxNi1cXHQgKiAtIGRldmljZXMgd2l0aG91dCBwbmV0aWQgYmVmb3JlIGRldmljZXMgd2l0aCBwbmV0aWQ7XFxubmV0L3NtYy9zbWNfaXNtLmM6NTE3OlxcdCAqIC0gbG9vcGJhY2staXNtIGFsd2F5cyBhdCB0aGUgdmVyeSBiZWdpbm5pbmc7XFxubmV0L3NtYy9zbWNfaXNtLmMtNTE4LVxcdCAqL1xcbi0tXFxubmV0L3NtYy9zbWNfaXNtLmg9Nzg9c3RhdGljIGlubGluZSBib29sIF9fc21jX2lzbV9pc19lbXVsYXRlZCh1MTYgY2hpZClcXG4tLVxcbm5ldC9zbWMvc21jX2lzbS5oLTgyLVxcdCAqXFxubmV0L3NtYy9zbWNfaXNtLmg6ODM6XFx0ICogbG9vcGJhY2staXNtOlxcdDB4RkZGRlxcbm5ldC9zbWMvc21jX2lzbS5oLTg0LVxcdCAqIHZpcnRpby1pc206XFx0XFx0MHhGRjAwIH4gMHhGRkZFXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDEwOjEzOjMyLjUzMjQyNjA2NloiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMDUzMTMxMjM5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZSBvbiB0aGUgdGhvdWdodCBwcm9jZXNzLCBhcyByZXF1ZXN0ZWQ6XG5cbioqRGl2aW5nIGludG8gdGhlIERpYnMgTG9vcGJhY2sgQ29uZmlndXJhdGlvbioqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IGBkcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jYC4gTGV0J3MgZ2V0IHJpZ2h0IGludG8gdGhlIGhlYXJ0IG9mIGl0IOKAkyB0aGUgY29uZmlndXJhdGlvbi4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoaXMgbG9vcGJhY2sgaXMgc2V0IHVwLCB3aGF0IHBhcmFtZXRlcnMgaXQgdXNlcywgYW5kIGhvdyBpdCBpbnRlcmFjdHMgd2l0aCB0aGUgcmVzdCBvZiB0aGUgRGlicyBzeXN0ZW0uIElzIGl0IHVzaW5nIGFueSBzcGVjaWZpYyBoYXJkd2FyZSBkZWZpbml0aW9ucz8gQXJlIHRoZXJlIGFueSBwb3RlbnRpYWwgY29uZmxpY3RzIEkgbmVlZCB0byBiZSBhd2FyZSBvZj8gSSdsbCBwcm9iYWJseSBzdGFydCBieSBsb29raW5nIGF0IHRoZSBkZWZhdWx0IHZhbHVlcywgYW55IGNvbmRpdGlvbmFsIGNvbXBpbGF0aW9uIGRpcmVjdGl2ZXMsIGFuZCBhbnkgZXh0ZXJuYWwgZGVwZW5kZW5jaWVzLiBJIG5lZWQgdG8gcXVpY2tseSBncmFzcCBpdHMgY29yZSBmdW5jdGlvbmFsaXR5IGFuZCBhbnkgdW5pcXVlIGFzcGVjdHMgb2YgaXRzIGNvbmZpZ3VyYXRpb24uIFRoaXMgc2hvdWxkIHByb3ZpZGUgdGhlIGZvdW5kYXRpb24gb2YgYSBkZWVwZXIgZGl2ZSBpZiBuZWNlc3NhcnkuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjcwOTksIk91dHB1dFRva2VucyI6MzAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQxMDoxMzozNS41ODU1NTg5NjRaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjY2NDQwMzE1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBESUJTXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvZGlicy9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvZGlicy9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxcbmRyaXZlcnMvZGlicy9LY29uZmlnOjI6Y29uZmlnIERJQlNcXG5kcml2ZXJzL2RpYnMvS2NvbmZpZy0zLVxcdHRyaXN0YXRlIFxcXCJEaXJlY3QgSW50ZXJuYWwgQnVmZmVyIFNoYXJpbmcgc3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvZGlicy9LY29uZmlnLTEzLVxcbmRyaXZlcnMvZGlicy9LY29uZmlnOjE0OmNvbmZpZyBESUJTX0xPXFxuZHJpdmVycy9kaWJzL0tjb25maWctMTUtXFx0Ym9vbCBcXFwiSW50cmEtT1Mgc2hvcnRjdXQgd2l0aCBkaWJzIGxvb3BiYWNrXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQxMDoxMzozNS42NTIwMDQ4OTlaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mjg5NTI2MjM0MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipFeGFtaW5pbmcgdGhlIFNNQyBDb25maWd1cmF0aW9uIFJlcXVpcmVtZW50cyoqXG5cbk9rYXksIHNvIEkgc2VlIHRoYXQgYENPTkZJR19ESUJTYCBhbmQgYENPTkZJR19ESUJTX0xPYCBhcmUgZGVmaW5pdGVseSBlc3NlbnRpYWwgZm9yIHRoaXMgc2V0dXAuIE5vdywgSSBzaG91bGQgZG91YmxlLWNoZWNrIGFib3V0IGBDT05GSUdfU01DYC4gTGV0IG1lIHF1aWNrbHkgY29uZmlybeKApiBZZXAsIHRoYXQncyByZXF1aXJlZCBhcyB3ZWxsLiBIbW0sIGFyZSB0aGVyZSBhbnkgKm90aGVyKiByZWxhdGVkIGNvbmZpZ3VyYXRpb25zIEkgbWlnaHQgYmUgbWlzc2luZz8gVGltZSB0byBjYXJlZnVsbHkgcmV2aXNpdCBgbmV0L3NtYy9LY29uZmlnYCBhbmQgbWFrZSBzdXJlIEkgaGF2ZW4ndCBvdmVybG9va2VkIGFueXRoaW5nIGNyaXRpY2FsLiBBbHdheXMgYmVzdCB0byBiZSB0aG9yb3VnaCB3aXRoIHRoZXNlIHNldHRpbmdzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo3NDQ0LCJPdXRwdXRUb2tlbnMiOjI5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NjAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTVUMTA6MTM6MzguNTQ3MjY5MTVaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjYxMDUyOTI1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBTTUNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L3NtYy9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9zbWMvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbm5ldC9zbWMvS2NvbmZpZzoyOmNvbmZpZyBTTUNcXG5uZXQvc21jL0tjb25maWctMy1cXHR0cmlzdGF0ZSBcXFwiU01DIHNvY2tldCBwcm90b2NvbCBmYW1pbHlcXFwiXFxuLS1cXG5uZXQvc21jL0tjb25maWctMTMtXFxubmV0L3NtYy9LY29uZmlnOjE0OmNvbmZpZyBTTUNfRElBR1xcbm5ldC9zbWMvS2NvbmZpZy0xNS1cXHR0cmlzdGF0ZSBcXFwiU01DOiBzb2NrZXQgbW9uaXRvcmluZyBpbnRlcmZhY2VcXFwiXFxuLS1cXG5uZXQvc21jL0tjb25maWctMjItXFxubmV0L3NtYy9LY29uZmlnOjIzOmNvbmZpZyBTTUNfSFNfQ1RSTF9CUEZcXG5uZXQvc21jL0tjb25maWctMjQtXFx0Ym9vbCBcXFwiR2VuZXJpYyBlQlBGIGhvb2sgZm9yIFNNQyBoYW5kc2hha2UgZmxvd1xcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTVUMTA6MTM6MzguNjA4MzMxNTY1WiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM2ODM4NTMyNjEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIFNNQyBDb25maWd1cmF0aW9uIGFuZCBSZWFjaGFiaWxpdHkqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGVzZSBjb25maWd1cmF0aW9uczogYENPTkZJR19TTUNgLCBgQ09ORklHX0RJQlNgLCBhbmQgYENPTkZJR19ESUJTX0xPYC4gUmlnaHQgbm93LCBJJ20gdGhpbmtpbmcsIGRvIHdlIGV2ZW4gbmVlZCBgQ09ORklHX1NNQ19ESUFHYD8gTXkgZ3V0IHNheXMgcHJvYmFibHkgbm90LCBidXQgSSBzaG91bGQgY29uZmlybS4gTGV0J3MgbWFrZSBzdXJlLlxuXG5OZXh0LCBJIG5lZWQgdG8gdmVyaWZ5IHdoaWNoIGZ1bmN0aW9ucyBhcmUgYWN0dWFsbHkgKnVzZWQqIG9yIHJlYWNoYWJsZSBiYXNlZCBvbiB0aGVzZSBjb25maWd1cmF0aW9ucy4gVGhlIGZ1bmN0aW9ucyBJIG5lZWQgdG8gY2hlY2sgYXJlOiBgc21jX2NkY19tc2dfcmVjdl9hY3Rpb25gLCBgc21jZF9jZGNfcnhfdHNrbGV0YCwgYHNtY19jZGNfcnhfaGFuZGxlcmAsIGBfX3NtY19idWZfY3JlYXRlYCwgYW5kIGBzbWNkX2J1Zl9hdHRhY2hgLiBUaGVzZSBhcmUgdGhlIG9uZXMgdGhhdCBzZWVtIGRpcmVjdGx5IHRpZWQgdG8gdGhlIFNNQyBjb21tdW5pY2F0aW9uIHBhdGhzLlxuXG5MZXQncyBzdGFydCBieSBkaWdnaW5nIGludG8gYHNtY19jZGNfbXNnX3JlY3ZfYWN0aW9uYC4gVW5kZXJzdGFuZGluZyB0aGlzIGZ1bmN0aW9uJ3MgbG9naWMgd2lsbCBnaXZlIG1lIGEgYmV0dGVyIGdyYXNwIG9mIHRoZSBpbXBhY3Qgb2YgdGhlc2UgY29uZmlndXJhdGlvbiBvcHRpb25zLlxuXG5cbiIsIklucHV0VG9rZW5zIjo3ODMzLCJPdXRwdXRUb2tlbnMiOjM1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTI5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDEwOjEzOjQyLjI5MjE4NjczNloiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjMyOTQzMTYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwic21jX2NkY19tc2dfcmVjdl9hY3Rpb25cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L3NtYy9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L3NtYy9zbWNfY2RjLmM9MzA4PXN0YXRpYyB2b2lkIHNtY19jZGNfbXNnX3ZhbGlkYXRlKHN0cnVjdCBzbWNfc29jayAqc21jLCBzdHJ1Y3Qgc21jX2NkY19tc2cgKmNkYyxcXG4tLVxcbm5ldC9zbWMvc21jX2NkYy5jLTMyOS1cXG5uZXQvc21jL3NtY19jZGMuYzozMzA6c3RhdGljIHZvaWQgc21jX2NkY19tc2dfcmVjdl9hY3Rpb24oc3RydWN0IHNtY19zb2NrICpzbWMsXFxubmV0L3NtYy9zbWNfY2RjLmMtMzMxLVxcdFxcdFxcdFxcdCAgICBzdHJ1Y3Qgc21jX2NkY19tc2cgKmNkYylcXG4tLVxcbm5ldC9zbWMvc21jX2NkYy5jPTQzNj1zdGF0aWMgdm9pZCBzbWNfY2RjX21zZ19yZWN2KHN0cnVjdCBzbWNfc29jayAqc21jLCBzdHJ1Y3Qgc21jX2NkY19tc2cgKmNkYylcXG4tLVxcbm5ldC9zbWMvc21jX2NkYy5jLTQzOS1cXHRiaF9sb2NrX3NvY2soXFx1MDAyNnNtYy1cXHUwMDNlc2spO1xcbm5ldC9zbWMvc21jX2NkYy5jOjQ0MDpcXHRzbWNfY2RjX21zZ19yZWN2X2FjdGlvbihzbWMsIGNkYyk7XFxubmV0L3NtYy9zbWNfY2RjLmMtNDQxLVxcdGJoX3VubG9ja19zb2NrKFxcdTAwMjZzbWMtXFx1MDAzZXNrKTtcXG4tLVxcbm5ldC9zbWMvc21jX2NkYy5jPTQ4Nj1zdGF0aWMgdm9pZCBzbWNfY2RjX3J4X2hhbmRsZXIoc3RydWN0IGliX3djICp3Yywgdm9pZCAqYnVmKVxcbi0tXFxubmV0L3NtYy9zbWNfY2RjLmMtNTAzLVxcdC8qIFBhaXIgd2l0aCBzbXBfc3RvcmVfcmVsZWFzZSgpIGluIF9fc21jX2J1Zl9jcmVhdGUoKTogYmFpbCB3aGlsZSB0aGVcXG5uZXQvc21jL3NtY19jZGMuYzo1MDQ6XFx0ICogUk1CIGlzIHVuc2V0IChzbWNfY2RjX21zZ19yZWN2X2FjdGlvbigpIGRlcmVmZXJlbmNlcyBpdCkgdG8gYXZvaWQgYVxcbm5ldC9zbWMvc21jX2NkYy5jLTUwNS1cXHQgKiBOVUxMIGRlcmVmIGFuZCBhIHN0YWxlLWJ1ZmZlciByZWFkIGluIHRoZSBjb25uZWN0aW9uIHNldHVwIHdpbmRvdy5cXG4tLVxcbm5ldC9zbWMvc21jX2NvcmUuYz0yNTgzPWludCBzbWNkX2J1Zl9hdHRhY2goc3RydWN0IHNtY19zb2NrICpzbWMpXFxuLS1cXG5uZXQvc21jL3NtY19jb3JlLmMtMjYxMS1cXHQgKiBvbmNlIGl0IHNlZXMgYSBub24tTlVMTCBzbmRidWZfZGVzYy4gIFBhaXJzIHdpdGggc21wX2xvYWRfYWNxdWlyZSgpXFxubmV0L3NtYy9zbWNfY29yZS5jOjI2MTI6XFx0ICogaW4gc21jX2NkY19tc2dfcmVjdl9hY3Rpb24oKS5cXG5uZXQvc21jL3NtY19jb3JlLmMtMjYxMy1cXHQgKi9cXG4tLVxcbm5ldC9zbWMvc21jX3J4LmMtMjktLyogY2FsbGJhY2sgaW1wbGVtZW50YXRpb24gdG8gd2FrZXVwIGNvbnN1bWVycyBibG9ja2VkIHdpdGggc21jX3J4X3dhaXQoKS5cXG5uZXQvc21jL3NtY19yeC5jOjMwOiAqIGluZGlyZWN0bHkgY2FsbGVkIGJ5IHNtY19jZGNfbXNnX3JlY3ZfYWN0aW9uKCkuXFxubmV0L3NtYy9zbWNfcnguYy0zMS0gKi9cXG4tLVxcbm5ldC9zbWMvc21jX3J4LmM9MzUyPWludCBzbWNfcnhfcmVjdm1zZyhzdHJ1Y3Qgc21jX3NvY2sgKnNtYywgc3RydWN0IG1zZ2hkciAqbXNnLFxcbi0tXFxubmV0L3NtYy9zbWNfcnguYy0zOTgtXFx0XFx0aWYgKHNrLVxcdTAwM2Vza19zaHV0ZG93biBcXHUwMDI2IFJDVl9TSFVURE9XTikge1xcbm5ldC9zbWMvc21jX3J4LmM6Mzk5OlxcdFxcdFxcdC8qIHNtY19jZGNfbXNnX3JlY3ZfYWN0aW9uKCkgY291bGQgaGF2ZSBydW4gYWZ0ZXJcXG5uZXQvc21jL3NtY19yeC5jLTQwMC1cXHRcXHRcXHQgKiBhYm92ZSBzbWNfcnhfcmVjdm1zZ19kYXRhX2F2YWlsYWJsZSgpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDEwOjEzOjQyLjM1NTQ4NzM1MVoiLCJTZXEiOjE5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1MjEzMDMwMjE1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgU01DLUNEQyBNZXNzYWdlIEhhbmRsaW5nIFBhdGgqKlxuXG5Pa2F5LCBzbyBsZXQgbWUgYnJlYWsgdGhpcyBkb3duLiBgc21jX2NkY19tc2dfcmVjdl9hY3Rpb25gIGlzIHRyaWdnZXJlZCB3aXRoaW4gYHNtY19jZGNfbXNnX3JlY3ZgLCB3aGljaCBpdHNlbGYgaXMgaW52b2tlZCBieSBib3RoIGBzbWNkX2NkY19yeF90c2tsZXRgIGFuZCBgc21jX2NkY19yeF9oYW5kbGVyYC4gIFJpZ2h0LCBgc21jZF9jZGNfcnhfdHNrbGV0YCBoYW5kbGVzIHRoZSBTTUMtRCBwYXRoLCBhbmQgYHNtY19jZGNfcnhfaGFuZGxlcmAgdGFrZXMgY2FyZSBvZiBTTUMtUi4gR29vZC4gIEkgcmVtZW1iZXIgbm93IHRoYXQgYF9fc21jX2J1Zl9jcmVhdGVgIGlzIGNydWNpYWwgZHVyaW5nIHRoZSBjb25uZWN0aW9uIHNldHVwIHByb2Nlc3MsIGFuZCBzcGVjaWZpY2FsbHkgZm9yIFNNQy1ELCBgc21jZF9idWZfYXR0YWNoYCBnZXRzIGludm9sdmVkIGR1cmluZyBzZXR1cC5cblxuVGhlIGltcG9ydGFudCB0aGluZyBpcyB0aGF0IHRoaXMgbW9kaWZpZWQgY29kZSBpcyBhYnNvbHV0ZWx5IHJlYWNoYWJsZSBhbmQgYXBwZWFycyBmdW5jdGlvbmFsbHkgc291bmQsIHdoaWNoIGlzIGdyZWF0LiAgVGhlIHBhdGNoIGFpbXMgdG8gYWRkcmVzcyBhIHJhY2UgY29uZGl0aW9uLCB3aGVyZSBgY29ubi1cdTAwM2VybWJfZGVzY2Agb3IgYGNvbm4tXHUwMDNlc25kYnVmX2Rlc2NgIG1pZ2h0IGJlIHVuaW5pdGlhbGl6ZWQgb3IgTlVMTCwgd2hpY2ggdGhlIENEQyByZWNlaXZlIGhhbmRsZXIgd291bGQgdGhlbiB0cnkgdG8gYWNjZXNzLiBUaGlzIGlzIGEgY3JpdGljYWwgcG9pbnQgdGhhdCBuZWVkcyBhZGRyZXNzaW5nLlxuXG5UaGlzIGlzICpkZWZpbml0ZWx5KiB3b3J0aCBmdXp6aW5nLiBUaGUgcG90ZW50aWFsIGZvciBhIHJhY2UgY29uZGl0aW9uIGxpa2UgdGhpcyBpcyBleGFjdGx5IHdoYXQgZnV6emluZyBpcyBkZXNpZ25lZCB0byBjYXRjaCBhbmQgZXhwb3NlLlxuXG5BbHJpZ2h0LCBsZXQncyBuYWlsIGRvd24gdGhlIGNyaXRpY2FsIHN5bWJvbHMgd2UncmUgZGVhbGluZyB3aXRoLiAgSSd2ZSBnb3QgYSBzb2xpZCBsaXN0OlxuKiAgIGBzbWNfY2RjX21zZ19yZWN2X2FjdGlvbmBcbiogICBgc21jZF9jZGNfcnhfdHNrbGV0YFxuKiAgIGBzbWNfY2RjX3J4X2hhbmRsZXJgXG4qICAgYF9fc21jX2J1Zl9jcmVhdGVgXG4qICAgYHNtY2RfYnVmX2F0dGFjaGBcblxuSG1tLCBJJ2xsIG5lZWQgdG8gZG91YmxlIGNoZWNrIGBuZXQvc21jL0tjb25maWdgIGFnYWluIHRvIGVuc3VyZSBJJ20gbm90IG1pc3NpbmcgYW55IHJlbGV2YW50IGNvbmZpZ3VyYXRpb24gb3B0aW9ucywgYXMgdGhhdCBjb3VsZCBpbmZsdWVuY2UgdGhlIGZ1enppbmcgYXBwcm9hY2ggYW5kIHRhcmdldCBzZWxlY3Rpb24uIEl0J3MgZWFzeSB0byBvdmVybG9vayB0aGluZ3MgaW4gdGhlc2Uga2luZHMgb2YgY29uZmlndXJhdGlvbnMuIEJldHRlciB0byBiZSB0aG9yb3VnaC5cblxuXG4iLCJJbnB1dFRva2VucyI6OTAyMCwiT3V0cHV0VG9rZW5zIjoyOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI2OSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQxMDoxMzo0Ny41Njg1MTkzMzdaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjMzODUzNzA0NCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgU01DXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9zbWMvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvc21jL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG5uZXQvc21jL0tjb25maWc6Mjpjb25maWcgU01DXFxubmV0L3NtYy9LY29uZmlnLTMtXFx0dHJpc3RhdGUgXFxcIlNNQyBzb2NrZXQgcHJvdG9jb2wgZmFtaWx5XFxcIlxcbi0tXFxubmV0L3NtYy9LY29uZmlnLTEzLVxcbm5ldC9zbWMvS2NvbmZpZzoxNDpjb25maWcgU01DX0RJQUdcXG5uZXQvc21jL0tjb25maWctMTUtXFx0dHJpc3RhdGUgXFxcIlNNQzogc29ja2V0IG1vbml0b3JpbmcgaW50ZXJmYWNlXFxcIlxcbi0tXFxubmV0L3NtYy9LY29uZmlnLTIyLVxcbm5ldC9zbWMvS2NvbmZpZzoyMzpjb25maWcgU01DX0hTX0NUUkxfQlBGXFxubmV0L3NtYy9LY29uZmlnLTI0LVxcdGJvb2wgXFxcIkdlbmVyaWMgZUJQRiBob29rIGZvciBTTUMgaGFuZHNoYWtlIGZsb3dcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDEwOjEzOjQ3LjkwNzA2MDk1MVoiLCJTZXEiOjIxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMzYwNzU5OTU1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgc3VtbWFyeSwgdGFraW5nIHRoZSBwZXJzcGVjdGl2ZSBvZiBzb21lb25lIGZhbWlsaWFyIHdpdGgga2VybmVsIGRldmVsb3BtZW50IGFuZCBjb25maWd1cmF0aW9uOlxuXG4qKkRpdmluZyBpbnRvIHRoZSBESUJTIENvbmZpZ3VyYXRpb24qKlxuXG5BbHJpZ2h0LCB0aW1lIHRvIGdldCBteSBoYW5kcyBkaXJ0eS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgdGhlIERJQlMgKERhdGEgSW50ZWdyaXR5IEJsb2NrIFN0b3JhZ2UpIGRyaXZlci4gVGhlIGZpcnN0IHBsYWNlIEkgYWx3YXlzIGdvIHdoZW4gZGVhbGluZyB3aXRoIGtlcm5lbCBjb25maWd1cmF0aW9uIGlzIHRoZSBgS2NvbmZpZ2AgZmlsZS4gU3BlY2lmaWNhbGx5LCBJJ2xsIGJlIGxvb2tpbmcgYXQgYGRyaXZlcnMvZGlicy9LY29uZmlnYC4gVGhpcyBmaWxlICpzaG91bGQqIGhvbGQgdGhlIGRlZmluaXRpb25zIGZvciBhbGwgdGhlIHJlbGV2YW50IGNvbmZpZ3VyYXRpb24gc3ltYm9scyDigJMgdGhvc2UgYENPTkZJR19gIG9wdGlvbnMg4oCTIHJlbGF0ZWQgdG8gRElCUy4gSSBleHBlY3QgdG8gc2VlIHRoaW5ncyBsaWtlIHdoZXRoZXIgdGhlIGRyaXZlciBpcyBidWlsdC1pbiBvciBhIG1vZHVsZSwgYW55IGZlYXR1cmVzIHRoYXQgY2FuIGJlIHNlbGVjdGl2ZWx5IGVuYWJsZWQgb3IgZGlzYWJsZWQsIGFuZCBtYXliZSBzb21lIGRlZmF1bHQgdmFsdWVzIGZvciBwYXJhbWV0ZXJzLiBUaGlzIGBLY29uZmlnYCBmaWxlIGlzIHRoZSBrZXkgdG8gdW5kZXJzdGFuZGluZyBob3cgdG8gZW5hYmxlLCBkaXNhYmxlLCBhbmQgdGFpbG9yIHRoZSBESUJTIGRyaXZlciB0byBhIHNwZWNpZmljIHN5c3RlbSdzIG5lZWRzLiBGcm9tIGhlcmUsIEkgc2hvdWxkIGJlIGFibGUgdG8gZ2V0IGEgcHJldHR5IGdvb2Qgb3ZlcnZpZXcgb2YgaG93IHRoaXMgbW9kdWxlIHdvcmtzIGluIHRoZSBsYXJnZXIgc3lzdGVtLlxuXG5cbiIsIklucHV0VG9rZW5zIjo5OTIxLCJPdXRwdXRUb2tlbnMiOjMwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTVUMTA6MTM6NTEuMjY3ODIyOTk2WiIsIlNlcSI6MjIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2ODE0OTE3NCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgRElCU1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL2RpYnMvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL2RpYnMvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcXG5kcml2ZXJzL2RpYnMvS2NvbmZpZzoyOmNvbmZpZyBESUJTXFxuZHJpdmVycy9kaWJzL0tjb25maWctMy1cXHR0cmlzdGF0ZSBcXFwiRGlyZWN0IEludGVybmFsIEJ1ZmZlciBTaGFyaW5nIHN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL2RpYnMvS2NvbmZpZy0xMy1cXG5kcml2ZXJzL2RpYnMvS2NvbmZpZzoxNDpjb25maWcgRElCU19MT1xcbmRyaXZlcnMvZGlicy9LY29uZmlnLTE1LVxcdGJvb2wgXFxcIkludHJhLU9TIHNob3J0Y3V0IHdpdGggZGlicyBsb29wYmFja1xcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTVUMTA6MTM6NTEuMzM1OTc2NDExWiIsIlNlcSI6MjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjcxMTY3NDA2MDEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBTTUMgQ29kZSBQYXRoIGZvciBhIFBvdGVudGlhbCBSYWNlIENvbmRpdGlvbioqXG5cbk9rYXksIGxldCdzIGVuYWJsZSBgU01DYCwgYERJQlNgLCBhbmQgYERJQlNfTE9gLiBUaGF0IHNlZW1zIGxpa2UgYSByZWFzb25hYmxlIHN0YXJ0aW5nIHBvaW50LCBlc3BlY2lhbGx5IGZvciBhIGZ1enppbmcgdGFyZ2V0IGluIGEgVk0gZW52aXJvbm1lbnQuIE15IGltbWVkaWF0ZSBmb2N1cyBpcyBvbiBpZGVudGlmeWluZyBwb3RlbnRpYWwgcmFjZSBjb25kaXRpb25zIHdpdGhpbiB0aGUgU01DIENEQyBtZXNzYWdlIGhhbmRsaW5nLlxuXG5gc21jX2NkY19tc2dfcmVjdl9hY3Rpb25gIGlzIHRoZSBvbmUgdG8gaW52ZXN0aWdhdGUgZnVydGhlci4gSXQncyBjYWxsZWQgZm9yIGV2ZXJ5IENEQyBtZXNzYWdlLCBwbGFjaW5nIGl0IHNxdWFyZWx5IGluIHRoZSBkYXRhIHBhdGguIEltcG9ydGFudGx5LCBpdOKAmXMgc3BlY2lmaWMgdG8gU01DIENEQyBtZXNzYWdlcy4gVGhpcyBpcyBhIGdvb2QgdGhpbmcg4oCTIGl0IG5hcnJvd3MgdGhlIHNjb3BlIGFuZCBtYWtlcyBpdCBtb3JlIGxpa2VseSB0byB1bmNvdmVyIGEgdGFyZ2V0ZWQgdnVsbmVyYWJpbGl0eS4gSSBuZWVkIHRvIHRyZWF0IGl0IGFzIGEgaG90IHBhdGguXG5cbk9uIHRoZSBvdGhlciBoYW5kLCBgX19zbWNfYnVmX2NyZWF0ZWAgYW5kIGBzbWNkX2J1Zl9hdHRhY2hgIGFyZSBjb25uZWN0aW9uIHNldHVwIGZ1bmN0aW9ucy4gVGhlc2UgYXJlIHVubGlrZWx5IHRvIGJlIGhvdC1wYXRoIGZ1bmN0aW9ucy4gVGhpcyBtYWtlcyB0aGVtIGxlc3MgaW50ZXJlc3RpbmcgZm9yIHRyaWdnZXJpbmcgYSByYWNlIGNvbmRpdGlvbiwgc28gSSB3aWxsIGxpa2VseSBpZ25vcmUgdGhlc2UgZm9yIG5vdy4gU2ltaWxhcmx5LCBgc21jZF9jZGNfcnhfdHNrbGV0YCBhbmQgYHNtY19jZGNfcnhfaGFuZGxlcmAgYXJlIHJlY2VpdmUgaGFuZGxlcnMsIGFsc28gaW4gdGhlIGRhdGEgcGF0aCwgYnV0IFNNQy1zcGVjaWZpYywgbWVhbmluZyB0aGV5IG5lZWQgdG8gYmUgYW5hbHlzZWQgd2l0aCBgc21jX2NkY19tc2dfcmVjdl9hY3Rpb25gLlxuXG5JIHNob3VsZCBwcm9iYWJseSBkb3VibGUtY2hlY2sgaWYgYW55IG90aGVyIGNvbmZpZ3MgYXJlIG5lZWRlZCBmb3IgU01DLVIuIFNNQy1SIHJlbGllcyBvbiBSRE1BLCBzbyBgQ09ORklHX0lORklOSUJBTkRgIHdvdWxkIGJlIHJlbGV2YW50LiBIb3dldmVyLCBmb3IgYSBxdWljayB3aW4sIEkgY2FuIGZvY3VzIG9uIFNNQy1EIHdpdGggYERJQlNfTE9gLCB3aGljaCBpcyBlYXNpZXIgdG8gZnV6eiB3aXRoaW4gYSB2aXJ0dWFsIG1hY2hpbmUuIFNvLCBzdGlja2luZyB3aXRoIGBTTUNgLCBgRElCU2AsIGFuZCBgRElCU19MT2Agc2VlbXMgbGlrZSB0aGUgbW9zdCBlZmZlY3RpdmUgYXBwcm9hY2ggZm9yIGluaXRpYWwgdGVzdGluZy5cblxuTGV0IG1lIGp1c3QgcXVpY2tseSB2ZXJpZnkgdGhvc2UgZnVuY3Rpb24gbmFtZXMgdG8gYXZvaWQgYW55IHR5cG9zIG9yIGNvbmZ1c2lvbjogYHNtY19jZGNfbXNnX3JlY3ZfYWN0aW9uYCwgYHNtY2RfY2RjX3J4X3Rza2xldGAsIGBzbWNfY2RjX3J4X2hhbmRsZXJgLCBgX19zbWNfYnVmX2NyZWF0ZWAsIGFuZCBgc21jZF9idWZfYXR0YWNoYC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTAzMDMsIk91dHB1dFRva2VucyI6MTQ5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzAyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDEwOjEzOjU4LjQ1MjcxOTM1MloiLCJTZXEiOjI0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjg5MDg1NjU0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJTTUNcIixcbiAgICBcIkRJQlNcIixcbiAgICBcIkRJQlNfTE9cIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJzbWNfY2RjX21zZ19yZWN2X2FjdGlvblwiLFxuICAgIFwic21jZF9jZGNfcnhfdHNrbGV0XCIsXG4gICAgXCJzbWNfY2RjX3J4X2hhbmRsZXJcIixcbiAgICBcIl9fc21jX2J1Zl9jcmVhdGVcIixcbiAgICBcInNtY2RfYnVmX2F0dGFjaFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgcmFjZSBjb25kaXRpb24gaW4gdGhlIFNNQyBwcm90b2NvbCB3aGVyZSBhIGNvbmN1cnJlbnQgQ0RDIHJlY2VpdmUgaGFuZGxlciBjb3VsZCBhY2Nlc3MgdW5pbml0aWFsaXplZCBvciBOVUxMIGJ1ZmZlciBkZXNjcmlwdG9ycyBkdXJpbmcgY29ubmVjdGlvbiBzZXR1cC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIFNNQyBsb2dpYyBhbmQgaXMgcmVhY2hhYmxlIHZpYSB0aGUgbG9vcGJhY2sgSVNNIGRldmljZS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJTTUNcIixcbiAgICBcIkRJQlNcIixcbiAgICBcIkRJQlNfTE9cIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJzbWNfY2RjX21zZ19yZWN2X2FjdGlvblwiLFxuICAgIFwic21jZF9jZGNfcnhfdHNrbGV0XCIsXG4gICAgXCJzbWNfY2RjX3J4X2hhbmRsZXJcIixcbiAgICBcIl9fc21jX2J1Zl9jcmVhdGVcIixcbiAgICBcInNtY2RfYnVmX2F0dGFjaFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgcmFjZSBjb25kaXRpb24gaW4gdGhlIFNNQyBwcm90b2NvbCB3aGVyZSBhIGNvbmN1cnJlbnQgQ0RDIHJlY2VpdmUgaGFuZGxlciBjb3VsZCBhY2Nlc3MgdW5pbml0aWFsaXplZCBvciBOVUxMIGJ1ZmZlciBkZXNjcmlwdG9ycyBkdXJpbmcgY29ubmVjdGlvbiBzZXR1cC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIFNNQyBsb2dpYyBhbmQgaXMgcmVhY2hhYmxlIHZpYSB0aGUgbG9vcGJhY2sgSVNNIGRldmljZS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowjnzc9[1] Phase: Succeeded StartedAt: 2026-07-15 10:14:33 +0000 UTC FinishedAt: 2026-07-15 10:14:33 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjnzc9[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-07-15 10:14:33 +0000 UTC FinishedAt: 2026-07-15 10:14:33 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjnzc9[2] Phase: Succeeded StartedAt: 2026-07-15 10:14:33 +0000 UTC FinishedAt: 2026-07-15 14:43:58 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjnzc9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","DIBS","DIBS_LO"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["smc_cdc_msg_recv_action","smcd_cdc_rx_tsklet","smc_cdc_rx_handler","__smc_buf_create","smcd_buf_attach"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","DIBS","DIBS_LO"],"series_id":"4e8378be-b72c-4fa8-8210-5ed8232e2594","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-07-15 10:14:33 +0000 UTC FinishedAt: 2026-07-15 14:43:58 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","DIBS","DIBS_LO"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["smc_cdc_msg_recv_action","smcd_cdc_rx_tsklet","smc_cdc_rx_handler","__smc_buf_create","smcd_buf_attach"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","DIBS","DIBS_LO"],"series_id":"4e8378be-b72c-4fa8-8210-5ed8232e2594","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowjnzc9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","DIBS","DIBS_LO"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["smc_cdc_msg_recv_action","smcd_cdc_rx_tsklet","smc_cdc_rx_handler","__smc_buf_create","smcd_buf_attach"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","DIBS","DIBS_LO"],"series_id":"4e8378be-b72c-4fa8-8210-5ed8232e2594","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-07-15 10:14:33 +0000 UTC FinishedAt: 2026-07-15 10:14:59 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjnzc9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","DIBS","DIBS_LO"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["smc_cdc_msg_recv_action","smcd_cdc_rx_tsklet","smc_cdc_rx_handler","__smc_buf_create","smcd_buf_attach"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","DIBS","DIBS_LO"],"series_id":"4e8378be-b72c-4fa8-8210-5ed8232e2594","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-07-15 10:14:33 +0000 UTC FinishedAt: 2026-07-15 10:14:54 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","DIBS","DIBS_LO"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},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-workflowjnzc9/series-workflowjnzc9-convert-artifact-3292238095/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowjnzc9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","DIBS","DIBS_LO"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["smc_cdc_msg_recv_action","smcd_cdc_rx_tsklet","smc_cdc_rx_handler","__smc_buf_create","smcd_buf_attach"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","DIBS","DIBS_LO"],"series_id":"4e8378be-b72c-4fa8-8210-5ed8232e2594","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-07-15 10:14:59 +0000 UTC FinishedAt: 2026-07-15 10:53:28 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjnzc9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","DIBS","DIBS_LO"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["smc_cdc_msg_recv_action","smcd_cdc_rx_tsklet","smc_cdc_rx_handler","__smc_buf_create","smcd_buf_attach"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","DIBS","DIBS_LO"],"series_id":"4e8378be-b72c-4fa8-8210-5ed8232e2594","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-07-15 10:14:59 +0000 UTC FinishedAt: 2026-07-15 10:53:28 +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:*7bf117f5-4ba8-4896-8b91-e9342c352f29,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-workflowjnzc9/series-workflowjnzc9-convert-artifact-3292238095/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": "b1b414a9-37e6-4e9c-abf4-0c1db9a647be", "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-workflowjnzc9/series-workflowjnzc9-build-action-1936293461/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowjnzc9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","DIBS","DIBS_LO"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["smc_cdc_msg_recv_action","smcd_cdc_rx_tsklet","smc_cdc_rx_handler","__smc_buf_create","smcd_buf_attach"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","DIBS","DIBS_LO"],"series_id":"4e8378be-b72c-4fa8-8210-5ed8232e2594","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-07-15 10:14:59 +0000 UTC FinishedAt: 2026-07-15 10:53:20 +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:*7bf117f5-4ba8-4896-8b91-e9342c352f29,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-workflowjnzc9/series-workflowjnzc9-convert-artifact-3292238095/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": "b1b414a9-37e6-4e9c-abf4-0c1db9a647be", "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-workflowjnzc9/series-workflowjnzc9-build-action-1936293461/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowjnzc9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","DIBS","DIBS_LO"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["smc_cdc_msg_recv_action","smcd_cdc_rx_tsklet","smc_cdc_rx_handler","__smc_buf_create","smcd_buf_attach"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","DIBS","DIBS_LO"],"series_id":"4e8378be-b72c-4fa8-8210-5ed8232e2594","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-07-15 10:53:28 +0000 UTC FinishedAt: 2026-07-15 10:53:28 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjnzc9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","DIBS","DIBS_LO"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["smc_cdc_msg_recv_action","smcd_cdc_rx_tsklet","smc_cdc_rx_handler","__smc_buf_create","smcd_buf_attach"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","DIBS","DIBS_LO"],"series_id":"4e8378be-b72c-4fa8-8210-5ed8232e2594","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-07-15 10:53:28 +0000 UTC FinishedAt: 2026-07-15 10:53:28 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjnzc9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","DIBS","DIBS_LO"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["smc_cdc_msg_recv_action","smcd_cdc_rx_tsklet","smc_cdc_rx_handler","__smc_buf_create","smcd_buf_attach"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","DIBS","DIBS_LO"],"series_id":"4e8378be-b72c-4fa8-8210-5ed8232e2594","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-07-15 10:53:28 +0000 UTC FinishedAt: 2026-07-15 10:53:38 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjnzc9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","DIBS","DIBS_LO"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["smc_cdc_msg_recv_action","smcd_cdc_rx_tsklet","smc_cdc_rx_handler","__smc_buf_create","smcd_buf_attach"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","DIBS","DIBS_LO"],"series_id":"4e8378be-b72c-4fa8-8210-5ed8232e2594","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-07-15 10:53:28 +0000 UTC FinishedAt: 2026-07-15 10:53:34 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","DIBS","DIBS_LO"],"series_id":"4e8378be-b72c-4fa8-8210-5ed8232e2594","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},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-workflowjnzc9/series-workflowjnzc9-convert-artifact-1009526622/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowjnzc9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","DIBS","DIBS_LO"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["smc_cdc_msg_recv_action","smcd_cdc_rx_tsklet","smc_cdc_rx_handler","__smc_buf_create","smcd_buf_attach"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","DIBS","DIBS_LO"],"series_id":"4e8378be-b72c-4fa8-8210-5ed8232e2594","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-07-15 10:53:38 +0000 UTC FinishedAt: 2026-07-15 10:55:54 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjnzc9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","DIBS","DIBS_LO"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["smc_cdc_msg_recv_action","smcd_cdc_rx_tsklet","smc_cdc_rx_handler","__smc_buf_create","smcd_buf_attach"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","DIBS","DIBS_LO"],"series_id":"4e8378be-b72c-4fa8-8210-5ed8232e2594","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-07-15 10:53:38 +0000 UTC FinishedAt: 2026-07-15 10:55:44 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*b1b414a9-37e6-4e9c-abf4-0c1db9a647be,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-workflowjnzc9/series-workflowjnzc9-build-action-1936293461/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-workflowjnzc9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","DIBS","DIBS_LO"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["smc_cdc_msg_recv_action","smcd_cdc_rx_tsklet","smc_cdc_rx_handler","__smc_buf_create","smcd_buf_attach"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","DIBS","DIBS_LO"],"series_id":"4e8378be-b72c-4fa8-8210-5ed8232e2594","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-07-15 10:55:54 +0000 UTC FinishedAt: 2026-07-15 10:55:54 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjnzc9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","DIBS","DIBS_LO"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["smc_cdc_msg_recv_action","smcd_cdc_rx_tsklet","smc_cdc_rx_handler","__smc_buf_create","smcd_buf_attach"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","DIBS","DIBS_LO"],"series_id":"4e8378be-b72c-4fa8-8210-5ed8232e2594","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-07-15 10:55:54 +0000 UTC FinishedAt: 2026-07-15 10:55:54 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjnzc9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","DIBS","DIBS_LO"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["smc_cdc_msg_recv_action","smcd_cdc_rx_tsklet","smc_cdc_rx_handler","__smc_buf_create","smcd_buf_attach"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","DIBS","DIBS_LO"],"series_id":"4e8378be-b72c-4fa8-8210-5ed8232e2594","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-07-15 10:55:54 +0000 UTC FinishedAt: 2026-07-15 11:38:54 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjnzc9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","DIBS","DIBS_LO"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["smc_cdc_msg_recv_action","smcd_cdc_rx_tsklet","smc_cdc_rx_handler","__smc_buf_create","smcd_buf_attach"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","DIBS","DIBS_LO"],"series_id":"4e8378be-b72c-4fa8-8210-5ed8232e2594","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-07-15 10:55:54 +0000 UTC FinishedAt: 2026-07-15 11:38:54 +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:*7bf117f5-4ba8-4896-8b91-e9342c352f29,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-workflowjnzc9/series-workflowjnzc9-convert-artifact-1009526622/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": "fed0c4a7-ca35-4e69-893b-733a4f64753d", "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-workflowjnzc9/series-workflowjnzc9-build-action-520974386/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowjnzc9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","DIBS","DIBS_LO"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["smc_cdc_msg_recv_action","smcd_cdc_rx_tsklet","smc_cdc_rx_handler","__smc_buf_create","smcd_buf_attach"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","DIBS","DIBS_LO"],"series_id":"4e8378be-b72c-4fa8-8210-5ed8232e2594","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-07-15 10:55:54 +0000 UTC FinishedAt: 2026-07-15 11:38:44 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*true,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Patched,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*7bf117f5-4ba8-4896-8b91-e9342c352f29,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-workflowjnzc9/series-workflowjnzc9-convert-artifact-1009526622/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": "fed0c4a7-ca35-4e69-893b-733a4f64753d", "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-workflowjnzc9/series-workflowjnzc9-build-action-520974386/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowjnzc9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","DIBS","DIBS_LO"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["smc_cdc_msg_recv_action","smcd_cdc_rx_tsklet","smc_cdc_rx_handler","__smc_buf_create","smcd_buf_attach"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","DIBS","DIBS_LO"],"series_id":"4e8378be-b72c-4fa8-8210-5ed8232e2594","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-07-15 11:38:54 +0000 UTC FinishedAt: 2026-07-15 11:38:54 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjnzc9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","DIBS","DIBS_LO"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["smc_cdc_msg_recv_action","smcd_cdc_rx_tsklet","smc_cdc_rx_handler","__smc_buf_create","smcd_buf_attach"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","DIBS","DIBS_LO"],"series_id":"4e8378be-b72c-4fa8-8210-5ed8232e2594","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-07-15 11:38:54 +0000 UTC FinishedAt: 2026-07-15 11:38:54 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjnzc9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","DIBS","DIBS_LO"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["smc_cdc_msg_recv_action","smcd_cdc_rx_tsklet","smc_cdc_rx_handler","__smc_buf_create","smcd_buf_attach"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","DIBS","DIBS_LO"],"series_id":"4e8378be-b72c-4fa8-8210-5ed8232e2594","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-07-15 11:38:54 +0000 UTC FinishedAt: 2026-07-15 11:41:13 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjnzc9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","DIBS","DIBS_LO"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["smc_cdc_msg_recv_action","smcd_cdc_rx_tsklet","smc_cdc_rx_handler","__smc_buf_create","smcd_buf_attach"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","DIBS","DIBS_LO"],"series_id":"4e8378be-b72c-4fa8-8210-5ed8232e2594","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-07-15 11:38:54 +0000 UTC FinishedAt: 2026-07-15 11:41:03 +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:*fed0c4a7-ca35-4e69-893b-733a4f64753d,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-workflowjnzc9/series-workflowjnzc9-build-action-520974386/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-workflowjnzc9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","DIBS","DIBS_LO"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["smc_cdc_msg_recv_action","smcd_cdc_rx_tsklet","smc_cdc_rx_handler","__smc_buf_create","smcd_buf_attach"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","DIBS","DIBS_LO"],"series_id":"4e8378be-b72c-4fa8-8210-5ed8232e2594","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-07-15 11:41:13 +0000 UTC FinishedAt: 2026-07-15 14:43:58 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjnzc9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","DIBS","DIBS_LO"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["smc_cdc_msg_recv_action","smcd_cdc_rx_tsklet","smc_cdc_rx_handler","__smc_buf_create","smcd_buf_attach"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","DIBS","DIBS_LO"],"series_id":"4e8378be-b72c-4fa8-8210-5ed8232e2594","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-07-15 11:41:13 +0000 UTC FinishedAt: 2026-07-15 14:43:58 +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":["smc_cdc_msg_recv_action","smcd_cdc_rx_tsklet","smc_cdc_rx_handler","__smc_buf_create","smcd_buf_attach"],"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:*b1b414a9-37e6-4e9c-abf4-0c1db9a647be,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*fed0c4a7-ca35-4e69-893b-733a4f64753d,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-workflowjnzc9/series-workflowjnzc9-build-action-1936293461/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-workflowjnzc9/series-workflowjnzc9-build-action-520974386/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowjnzc9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","DIBS","DIBS_LO"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["smc_cdc_msg_recv_action","smcd_cdc_rx_tsklet","smc_cdc_rx_handler","__smc_buf_create","smcd_buf_attach"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","DIBS","DIBS_LO"],"series_id":"4e8378be-b72c-4fa8-8210-5ed8232e2594","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-07-15 11:41:13 +0000 UTC FinishedAt: 2026-07-15 11:41:23 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjnzc9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","DIBS","DIBS_LO"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["smc_cdc_msg_recv_action","smcd_cdc_rx_tsklet","smc_cdc_rx_handler","__smc_buf_create","smcd_buf_attach"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","DIBS","DIBS_LO"],"series_id":"4e8378be-b72c-4fa8-8210-5ed8232e2594","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-07-15 11:41:13 +0000 UTC FinishedAt: 2026-07-15 11:41:20 +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":["smc_cdc_msg_recv_action","smcd_cdc_rx_tsklet","smc_cdc_rx_handler","__smc_buf_create","smcd_buf_attach"],"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-workflowjnzc9/series-workflowjnzc9-convert-artifact-478983011/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowjnzc9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","DIBS","DIBS_LO"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["smc_cdc_msg_recv_action","smcd_cdc_rx_tsklet","smc_cdc_rx_handler","__smc_buf_create","smcd_buf_attach"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","DIBS","DIBS_LO"],"series_id":"4e8378be-b72c-4fa8-8210-5ed8232e2594","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-07-15 11:41:13 +0000 UTC FinishedAt: 2026-07-15 11:41:13 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjnzc9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","DIBS","DIBS_LO"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["smc_cdc_msg_recv_action","smcd_cdc_rx_tsklet","smc_cdc_rx_handler","__smc_buf_create","smcd_buf_attach"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","DIBS","DIBS_LO"],"series_id":"4e8378be-b72c-4fa8-8210-5ed8232e2594","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-07-15 11:41:13 +0000 UTC FinishedAt: 2026-07-15 11:41:13 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjnzc9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","DIBS","DIBS_LO"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["smc_cdc_msg_recv_action","smcd_cdc_rx_tsklet","smc_cdc_rx_handler","__smc_buf_create","smcd_buf_attach"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","DIBS","DIBS_LO"],"series_id":"4e8378be-b72c-4fa8-8210-5ed8232e2594","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-07-15 11:41:13 +0000 UTC FinishedAt: 2026-07-15 11:41:13 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjnzc9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","DIBS","DIBS_LO"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["smc_cdc_msg_recv_action","smcd_cdc_rx_tsklet","smc_cdc_rx_handler","__smc_buf_create","smcd_buf_attach"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","DIBS","DIBS_LO"],"series_id":"4e8378be-b72c-4fa8-8210-5ed8232e2594","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-07-15 11:41:23 +0000 UTC FinishedAt: 2026-07-15 14:43:58 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjnzc9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","DIBS","DIBS_LO"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["smc_cdc_msg_recv_action","smcd_cdc_rx_tsklet","smc_cdc_rx_handler","__smc_buf_create","smcd_buf_attach"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","DIBS","DIBS_LO"],"series_id":"4e8378be-b72c-4fa8-8210-5ed8232e2594","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-07-15 11:41:23 +0000 UTC FinishedAt: 2026-07-15 14:43:48 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*b1b414a9-37e6-4e9c-abf4-0c1db9a647be,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*fed0c4a7-ca35-4e69-893b-733a4f64753d,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-workflowjnzc9/series-workflowjnzc9-build-action-1936293461/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-workflowjnzc9/series-workflowjnzc9-build-action-520974386/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-workflowjnzc9/series-workflowjnzc9-convert-artifact-478983011/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,}