Name: series-workflowgrspj Phase: Succeeded StartedAt: 2026-07-01 22:55:51 +0000 UTC FinishedAt: 2026-07-02 03:35:29 +0000 UTC Input: nil Output: nil --------- Name: series-workflowgrspj[0] Phase: Succeeded StartedAt: 2026-07-01 22:55:51 +0000 UTC FinishedAt: 2026-07-01 23:03:17 +0000 UTC Input: nil Output: nil --------- Name: series-workflowgrspj[0].run-triage Phase: Succeeded StartedAt: 2026-07-01 22:55:51 +0000 UTC FinishedAt: 2026-07-01 23:03:17 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "mm-new", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git", "commit_hash": "ff1cd4bfdfebea913df9682c4a715bca55759ff0", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "DAMON", "DAMON_PADDR", "DAMON_VADDR", "DAMON_SYSFS", "DAMON_RECLAIM", "DAMON_LRU_SORT" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "mm-new", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git", "commit_hash": "ff1cd4bfdfebea913df9682c4a715bca55759ff0", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "DAMON", "DAMON_PADDR", "DAMON_VADDR", "DAMON_SYSFS", "DAMON_RECLAIM", "DAMON_LRU_SORT" ], "series_id": "bd9aa674-b9a5-446a-8f32-5cb7a5a85edd" }, "track": "KASAN", "fuzz": { "focus": null, "focus_symbols": [ "damon_commit_ctx", "damon_start", "damon_set_region_system_rams_default", "damon_lru_sort_apply_parameters", "damon_reclaim_apply_parameters", "damon_sysfs_set_regions", "damon_sysfs_commit_input" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db" ], "skip_cover_check": true, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAxIDIzOjAxPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0RBTU9OJiMzNDssCiAgICAmIzM0O0RBTU9OX1BBRERSJiMzNDssCiAgICAmIzM0O0RBTU9OX1ZBRERSJiMzNDssCiAgICAmIzM0O0RBTU9OX1NZU0ZTJiMzNDssCiAgICAmIzM0O0RBTU9OX1JFQ0xBSU0mIzM0OywKICAgICYjMzQ7REFNT05fTFJVX1NPUlQmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtkYW1vbl9jb21taXRfY3R4JiMzNDssCiAgICAmIzM0O2RhbW9uX3N0YXJ0JiMzNDssCiAgICAmIzM0O2RhbW9uX3NldF9yZWdpb25fc3lzdGVtX3JhbXNfZGVmYXVsdCYjMzQ7LAogICAgJiMzNDtkYW1vbl9scnVfc29ydF9hcHBseV9wYXJhbWV0ZXJzJiMzNDssCiAgICAmIzM0O2RhbW9uX3JlY2xhaW1fYXBwbHlfcGFyYW1ldGVycyYjMzQ7LAogICAgJiMzNDtkYW1vbl9zeXNmc19zZXRfcmVnaW9ucyYjMzQ7LAogICAgJiMzNDtkYW1vbl9zeXNmc19jb21taXRfaW5wdXQmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgY29yZSBEQU1PTiAoRGF0YSBBY2Nlc3MgTU9OaXRvcikgbG9naWMsIGluY2x1ZGluZyBjb250ZXh0IGNvbW1pdCBoYW5kbGluZywgcGFyYW1ldGVyIHZhbGlkYXRpb24sIGFuZCBzeXNmcyBpbnRlcmZhY2UgaW5wdXRzLiBJdCByZW1vdmVzIHNvbWUgdmFsaWRhdGlvbiBjaGVja3MgZnJvbSBzcGVjaWZpYyBmdW5jdGlvbnMgYW5kIG1vdmVzIHRoZW0gb3IgcmVsaWVzIG9uIG90aGVyIHZhbGlkYXRpb24sIHdoaWNoIGNvdWxkIGludHJvZHVjZSBidWdzIGlmIGludmFsaWQgcGFyYW1ldGVycyBhcmUgcGFzc2VkLiBGdXp6aW5nIHNob3VsZCBmb2N1cyBvbiB0aGUgbW9kaWZpZWQgZnVuY3Rpb25zIHRvIGVuc3VyZSBzdGFiaWxpdHkuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDEgMjM6MDE8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCA2Y2JhYmQ4MmRjYjlmYzFmZWRhYTBhZDMwMDJmNzgxMTU3YTkzZmM1XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFdlZCBKdWwgMSAyMzowMTo1NSAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L2RhbW9uLmggYi9pbmNsdWRlL2xpbnV4L2RhbW9uLmhcbmluZGV4IGNmYmJmOGJhMjhmNjMyLi5kMGY2MDg1ODdjMDg2OSAxMDA2NDRcbi0tLSBhL2luY2x1ZGUvbGludXgvZGFtb24uaFxuJiM0MzsmIzQzOyYjNDM7IGIvaW5jbHVkZS9saW51eC9kYW1vbi5oXG5AQCAtNTEsNyAmIzQzOzUxLDggQEAgc3RydWN0IGRhbW9uX3NpemVfcmFuZ2Uge1xuICAqIEBsaXN0Olx0XHRMaXN0IGhlYWQgZm9yIHNpYmxpbmdzLlxuICAqIEBhZ2U6XHRcdEFnZSBvZiB0aGlzIHJlZ2lvbi5cbiAgKlxuLSAqIEZvciBhbnkgdXNlIGNhc2UsIEBhciBzaG91bGQgYmUgbm9uLXplcm8gcG9zaXRpdmUgc2l6ZS5cbiYjNDM7ICogRm9yIGFueSB1c2UgY2FzZSwgQGFyIHNob3VsZCBiZSBub24temVybyBwb3NpdGl2ZSBzaXplLiAgZGFtb25fc2V0X3JlZ2lvbnMoKVxuJiM0MzsgKiBkb2VzIHRoZSB2YWxpZGF0aW9uLlxuICAqXG4gICogQG5yX2FjY2Vzc2VzIGlzIHJlc2V0IHRvIHplcm8gZm9yIGV2ZXJ5IFx1MDAyNmRhbW9uX2F0dHJzLVx1MDAzZWFnZ3JfaW50ZXJ2YWwgYW5kIGJlXG4gICogaW5jcmVhc2VkIGZvciBldmVyeSBcdTAwMjZkYW1vbl9hdHRycy1cdTAwM2VzYW1wbGVfaW50ZXJ2YWwgaWYgYW4gYWNjZXNzIHRvIHRoZSByZWdpb25cbmRpZmYgLS1naXQgYS9tbS9kYW1vbi9jb3JlLmMgYi9tbS9kYW1vbi9jb3JlLmNcbmluZGV4IDlhMDMxMjMyNjljMjhlLi5mMmRlNTc5OWU2ODJmMyAxMDA2NDRcbi0tLSBhL21tL2RhbW9uL2NvcmUuY1xuJiM0MzsmIzQzOyYjNDM7IGIvbW0vZGFtb24vY29yZS5jXG5AQCAtMTU1NSwyMCAmIzQzOzE1NTUsNyBAQCBzdGF0aWMgaW50IGRhbW9uX2NvbW1pdF9wcm9iZXMoc3RydWN0IGRhbW9uX2N0eCAqZHN0LCBzdHJ1Y3QgZGFtb25fY3R4ICpzcmMpXG4gXHRyZXR1cm4gMDtcbiB9XG4gXG4tLyoqXG4tICogZGFtb25fY29tbWl0X2N0eCgpIC0gQ29tbWl0IHBhcmFtZXRlcnMgb2YgYSBEQU1PTiBjb250ZXh0IHRvIGFub3RoZXIuXG4tICogQGRzdDpcdFRoZSBjb21taXQgZGVzdGluYXRpb24gREFNT04gY29udGV4dC5cbi0gKiBAc3JjOlx0VGhlIGNvbW1pdCBzb3VyY2UgREFNT04gY29udGV4dC5cbi0gKlxuLSAqIFRoaXMgZnVuY3Rpb24gY29waWVzIHVzZXItc3BlY2lmaWVkIHBhcmFtZXRlcnMgZnJvbSBAc3JjIHRvIEBkc3QgYW5kIHVwZGF0ZVxuLSAqIHRoZSBpbnRlcm5hbCBzdGF0dXMgYW5kIHJlc3VsdHMgYWNjb3JkaW5nbHkuICBVc2VycyBzaG91bGQgdXNlIHRoaXMgZnVuY3Rpb25cbi0gKiBmb3IgY29udGV4dC1sZXZlbCBwYXJhbWV0ZXJzIHVwZGF0ZSBvZiBydW5uaW5nIGNvbnRleHQsIGluc3RlYWQgb2YgbWFudWFsXG4tICogaW4tcGxhY2UgdXBkYXRlcy5cbi0gKlxuLSAqIFRoaXMgZnVuY3Rpb24gc2hvdWxkIGJlIGNhbGxlZCBmcm9tIHBhcmFtZXRlcnMtdXBkYXRlIHNhZmUgY29udGV4dCwgbGlrZVxuLSAqIGRhbW9uX2NhbGwoKS5cbi0gKi9cbi1pbnQgZGFtb25fY29tbWl0X2N0eChzdHJ1Y3QgZGFtb25fY3R4ICpkc3QsIHN0cnVjdCBkYW1vbl9jdHggKnNyYylcbiYjNDM7c3RhdGljIGludCBfX2RhbW9uX2NvbW1pdF9jdHgoc3RydWN0IGRhbW9uX2N0eCAqZHN0LCBzdHJ1Y3QgZGFtb25fY3R4ICpzcmMpXG4ge1xuIFx0aW50IGVycjtcbiBcdHN0cnVjdCBkYW1vcyAqc2NoZW1lO1xuQEAgLTE2MjMsNiAmIzQzOzE2MTAsNTIgQEAgaW50IGRhbW9uX2NvbW1pdF9jdHgoc3RydWN0IGRhbW9uX2N0eCAqZHN0LCBzdHJ1Y3QgZGFtb25fY3R4ICpzcmMpXG4gXHRyZXR1cm4gMDtcbiB9XG4gXG4mIzQzO3N0YXRpYyBzdHJ1Y3QgZGFtb25fY3R4ICpkYW1vbl9uZXdfdGVzdF9jdHgoc3RydWN0IGRhbW9uX2N0eCAqZHN0KVxuJiM0Mzt7XG4mIzQzO1x0c3RydWN0IGRhbW9uX2N0eCAqdGVzdF9jdHg7XG4mIzQzO1x0aW50IGVycjtcbiYjNDM7XG4mIzQzO1x0dGVzdF9jdHggPSBkYW1vbl9uZXdfY3R4KCk7XG4mIzQzO1x0aWYgKCF0ZXN0X2N0eClcbiYjNDM7XHRcdHJldHVybiBOVUxMO1xuJiM0MztcdGVyciA9IF9fZGFtb25fY29tbWl0X2N0eCh0ZXN0X2N0eCwgZHN0KTtcbiYjNDM7XHRpZiAoZXJyKSB7XG4mIzQzO1x0XHRkYW1vbl9kZXN0cm95X2N0eCh0ZXN0X2N0eCk7XG4mIzQzO1x0XHRyZXR1cm4gTlVMTDtcbiYjNDM7XHR9XG4mIzQzO1x0cmV0dXJuIHRlc3RfY3R4O1xuJiM0Mzt9XG4mIzQzO1xuJiM0MzsvKipcbiYjNDM7ICogZGFtb25fY29tbWl0X2N0eCgpIC0gQ29tbWl0IHBhcmFtZXRlcnMgb2YgYSBEQU1PTiBjb250ZXh0IHRvIGFub3RoZXIuXG4mIzQzOyAqIEBkc3Q6XHRUaGUgY29tbWl0IGRlc3RpbmF0aW9uIERBTU9OIGNvbnRleHQuXG4mIzQzOyAqIEBzcmM6XHRUaGUgY29tbWl0IHNvdXJjZSBEQU1PTiBjb250ZXh0LlxuJiM0MzsgKlxuJiM0MzsgKiBUaGlzIGZ1bmN0aW9uIGNvcGllcyB1c2VyLXNwZWNpZmllZCBwYXJhbWV0ZXJzIGZyb20gQHNyYyB0byBAZHN0IGFuZCB1cGRhdGVcbiYjNDM7ICogdGhlIGludGVybmFsIHN0YXR1cyBhbmQgcmVzdWx0cyBhY2NvcmRpbmdseS4gIFVzZXJzIHNob3VsZCB1c2UgdGhpcyBmdW5jdGlvblxuJiM0MzsgKiBmb3IgY29udGV4dC1sZXZlbCBwYXJhbWV0ZXJzIHVwZGF0ZSBvZiBydW5uaW5nIGNvbnRleHQsIGluc3RlYWQgb2YgbWFudWFsXG4mIzQzOyAqIGluLXBsYWNlIHVwZGF0ZXMuXG4mIzQzOyAqXG4mIzQzOyAqIFRoaXMgZnVuY3Rpb24gc2hvdWxkIGJlIGNhbGxlZCBmcm9tIHBhcmFtZXRlcnMtdXBkYXRlIHNhZmUgY29udGV4dCwgbGlrZVxuJiM0MzsgKiBkYW1vbl9jYWxsKCkuXG4mIzQzOyAqL1xuJiM0MztpbnQgZGFtb25fY29tbWl0X2N0eChzdHJ1Y3QgZGFtb25fY3R4ICpkc3QsIHN0cnVjdCBkYW1vbl9jdHggKnNyYylcbiYjNDM7e1xuJiM0MztcdHN0cnVjdCBkYW1vbl9jdHggKnRlc3RfY3R4O1xuJiM0MztcdGludCBlcnI7XG4mIzQzO1xuJiM0MztcdHRlc3RfY3R4ID0gZGFtb25fbmV3X3Rlc3RfY3R4KGRzdCk7XG4mIzQzO1x0aWYgKCF0ZXN0X2N0eClcbiYjNDM7XHRcdHJldHVybiAtRU5PTUVNO1xuJiM0MztcdGVyciA9IF9fZGFtb25fY29tbWl0X2N0eCh0ZXN0X2N0eCwgZHN0KTtcbiYjNDM7XHRpZiAoZXJyKVxuJiM0MztcdFx0Z290byBvdXQ7XG4mIzQzO1x0ZXJyID0gX19kYW1vbl9jb21taXRfY3R4KGRzdCwgc3JjKTtcbiYjNDM7b3V0OlxuJiM0MztcdGRhbW9uX2Rlc3Ryb3lfY3R4KHRlc3RfY3R4KTtcbiYjNDM7XHRyZXR1cm4gZXJyO1xuJiM0Mzt9XG4mIzQzO1xuIC8qKlxuICAqIGRhbW9uX25yX3J1bm5pbmdfY3R4cygpIC0gUmV0dXJuIG51bWJlciBvZiBjdXJyZW50bHkgcnVubmluZyBjb250ZXh0cy5cbiAgKi9cbkBAIC0xNzIzLDYgJiM0MzsxNzU2LDggQEAgc3RhdGljIGludCBfX2RhbW9uX3N0YXJ0KHN0cnVjdCBkYW1vbl9jdHggKmN0eClcbiBcdHJldHVybiBlcnI7XG4gfVxuIFxuJiM0MztzdGF0aWMgaW50IF9fZGFtb25fY29tbWl0X2N0eChzdHJ1Y3QgZGFtb25fY3R4ICpkc3QsIHN0cnVjdCBkYW1vbl9jdHggKnNyYyk7XG4mIzQzO1xuIC8qKlxuICAqIGRhbW9uX3N0YXJ0KCkgLSBTdGFydHMgdGhlIG1vbml0b3JpbmdzIGZvciBhIGdpdmVuIGdyb3VwIG9mIGNvbnRleHRzLlxuICAqIEBjdHhzOlx0YW4gYXJyYXkgb2YgdGhlIHBvaW50ZXJzIGZvciBjb250ZXh0cyB0byBzdGFydCBtb25pdG9yaW5nXG5AQCAtMTc0MCwxMyAmIzQzOzE3NzUsMjIgQEAgc3RhdGljIGludCBfX2RhbW9uX3N0YXJ0KHN0cnVjdCBkYW1vbl9jdHggKmN0eClcbiAgKi9cbiBpbnQgZGFtb25fc3RhcnQoc3RydWN0IGRhbW9uX2N0eCAqKmN0eHMsIGludCBucl9jdHhzLCBib29sIGV4Y2x1c2l2ZSlcbiB7XG4mIzQzO1x0c3RydWN0IGRhbW9uX2N0eCAqdGVzdF9jdHg7XG4gXHRpbnQgaTtcbiBcdGludCBlcnIgPSAwO1xuIFxuJiM0MztcdHRlc3RfY3R4ID0gZGFtb25fbmV3X2N0eCgpO1xuJiM0MztcdGlmICghdGVzdF9jdHgpXG4mIzQzO1x0XHRyZXR1cm4gLUVOT01FTTtcbiYjNDM7XG4gXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBucl9jdHhzOyBpJiM0MzsmIzQzOykge1xuLVx0XHRpZiAoIWlzX3Bvd2VyX29mXzIoY3R4c1tpXS1cdTAwM2VtaW5fcmVnaW9uX3N6KSlcbi1cdFx0XHRyZXR1cm4gLUVJTlZBTDtcbiYjNDM7XHRcdGVyciA9IF9fZGFtb25fY29tbWl0X2N0eCh0ZXN0X2N0eCwgY3R4c1tpXSk7XG4mIzQzO1x0XHRpZiAoZXJyKSB7XG4mIzQzO1x0XHRcdGRhbW9uX2Rlc3Ryb3lfY3R4KHRlc3RfY3R4KTtcbiYjNDM7XHRcdFx0cmV0dXJuIGVycjtcbiYjNDM7XHRcdH1cbiBcdH1cbiYjNDM7XHRkYW1vbl9kZXN0cm95X2N0eCh0ZXN0X2N0eCk7XG4gXG4gXHRtdXRleF9sb2NrKFx1MDAyNmRhbW9uX2xvY2spO1xuIFx0aWYgKChleGNsdXNpdmUgXHUwMDI2XHUwMDI2IG5yX3J1bm5pbmdfY3R4cykgfHxcbkBAIC0zNzM4LDkgJiM0MzszNzgyLDYgQEAgaW50IGRhbW9uX3NldF9yZWdpb25fc3lzdGVtX3JhbXNfZGVmYXVsdChzdHJ1Y3QgZGFtb25fdGFyZ2V0ICp0LFxuIHtcbiBcdHN0cnVjdCBkYW1vbl9hZGRyX3JhbmdlIGFkZHJfcmFuZ2U7XG4gXG4tXHRpZiAoKnN0YXJ0IFx1MDAzZSAqZW5kKVxuLVx0XHRyZXR1cm4gLUVJTlZBTDtcbi1cbiBcdGlmICghKnN0YXJ0IFx1MDAyNlx1MDAyNiAhKmVuZCBcdTAwMjZcdTAwMjZcbiBcdFx0IWRhbW9uX2ZpbmRfc3lzdGVtX3JhbXNfcmFuZ2Uoc3RhcnQsIGVuZCwgYWRkcl91bml0KSlcbiBcdFx0cmV0dXJuIC1FSU5WQUw7XG5kaWZmIC0tZ2l0IGEvbW0vZGFtb24vbHJ1X3NvcnQuYyBiL21tL2RhbW9uL2xydV9zb3J0LmNcbmluZGV4IDMyZjQxNDkxYjcyNmIyLi4yZGQwY2QwZDI2MjczMSAxMDA2NDRcbi0tLSBhL21tL2RhbW9uL2xydV9zb3J0LmNcbiYjNDM7JiM0MzsmIzQzOyBiL21tL2RhbW9uL2xydV9zb3J0LmNcbkBAIC0yODQsMTEgJiM0MzsyODQsNiBAQCBzdGF0aWMgaW50IGRhbW9uX2xydV9zb3J0X2FwcGx5X3BhcmFtZXRlcnModm9pZClcbiBcdHBhcmFtX2N0eC1cdTAwM2VhZGRyX3VuaXQgPSBhZGRyX3VuaXQ7XG4gXHRwYXJhbV9jdHgtXHUwMDNlbWluX3JlZ2lvbl9zeiA9IG1heChEQU1PTl9NSU5fUkVHSU9OX1NaIC8gYWRkcl91bml0LCAxKTtcbiBcbi1cdGlmICghaXNfcG93ZXJfb2ZfMihwYXJhbV9jdHgtXHUwMDNlbWluX3JlZ2lvbl9zeikpIHtcbi1cdFx0ZXJyID0gLUVJTlZBTDtcbi1cdFx0Z290byBvdXQ7XG4tXHR9XG4tXG4gXHRpZiAoIWRhbW9uX2xydV9zb3J0X21vbl9hdHRycy5zYW1wbGVfaW50ZXJ2YWwpIHtcbiBcdFx0ZXJyID0gLUVJTlZBTDtcbiBcdFx0Z290byBvdXQ7XG5kaWZmIC0tZ2l0IGEvbW0vZGFtb24vcmVjbGFpbS5jIGIvbW0vZGFtb24vcmVjbGFpbS5jXG5pbmRleCAxMWI3MGQwYTlhNmYwYS4uNjQ2OWIyNWNjMzRmOTIgMTAwNjQ0XG4tLS0gYS9tbS9kYW1vbi9yZWNsYWltLmNcbiYjNDM7JiM0MzsmIzQzOyBiL21tL2RhbW9uL3JlY2xhaW0uY1xuQEAgLTIwOCwxMSAmIzQzOzIwOCw2IEBAIHN0YXRpYyBpbnQgZGFtb25fcmVjbGFpbV9hcHBseV9wYXJhbWV0ZXJzKHZvaWQpXG4gXHRwYXJhbV9jdHgtXHUwMDNlYWRkcl91bml0ID0gYWRkcl91bml0O1xuIFx0cGFyYW1fY3R4LVx1MDAzZW1pbl9yZWdpb25fc3ogPSBtYXgoREFNT05fTUlOX1JFR0lPTl9TWiAvIGFkZHJfdW5pdCwgMSk7XG4gXG4tXHRpZiAoIWlzX3Bvd2VyX29mXzIocGFyYW1fY3R4LVx1MDAzZW1pbl9yZWdpb25fc3opKSB7XG4tXHRcdGVyciA9IC1FSU5WQUw7XG4tXHRcdGdvdG8gb3V0O1xuLVx0fVxuLVxuIFx0aWYgKCFkYW1vbl9yZWNsYWltX21vbl9hdHRycy5hZ2dyX2ludGVydmFsKSB7XG4gXHRcdGVyciA9IC1FSU5WQUw7XG4gXHRcdGdvdG8gb3V0O1xuZGlmZiAtLWdpdCBhL21tL2RhbW9uL3N5c2ZzLmMgYi9tbS9kYW1vbi9zeXNmcy5jXG5pbmRleCBlMzUyNmEyNjNlMjA1Zi4uOTMzZmYzMDNkZTVhMTIgMTAwNjQ0XG4tLS0gYS9tbS9kYW1vbi9zeXNmcy5jXG4mIzQzOyYjNDM7JiM0MzsgYi9tbS9kYW1vbi9zeXNmcy5jXG5AQCAtMTk2OSw5ICYjNDM7MTk2OSw2IEBAIHN0YXRpYyBpbnQgZGFtb25fc3lzZnNfc2V0X3JlZ2lvbnMoc3RydWN0IGRhbW9uX3RhcmdldCAqdCxcbiBcdFx0c3RydWN0IGRhbW9uX3N5c2ZzX3JlZ2lvbiAqc3lzX3JlZ2lvbiA9XG4gXHRcdFx0c3lzZnNfcmVnaW9ucy1cdTAwM2VyZWdpb25zX2FycltpXTtcbiBcbi1cdFx0aWYgKHN5c19yZWdpb24tXHUwMDNlYXIuc3RhcnQgXHUwMDNlIHN5c19yZWdpb24tXHUwMDNlYXIuZW5kKVxuLVx0XHRcdGdvdG8gb3V0O1xuLVxuIFx0XHRyYW5nZXNbaV0uc3RhcnQgPSBzeXNfcmVnaW9uLVx1MDAzZWFyLnN0YXJ0O1xuIFx0XHRyYW5nZXNbaV0uZW5kID0gc3lzX3JlZ2lvbi1cdTAwM2Vhci5lbmQ7XG4gXHRcdGlmIChpID09IDApXG5AQCAtMjA4MCwyNiAmIzQzOzIwNzcsNiBAQCBzdGF0aWMgaW50IGRhbW9uX3N5c2ZzX2FwcGx5X2lucHV0cyhzdHJ1Y3QgZGFtb25fY3R4ICpjdHgsXG4gc3RhdGljIHN0cnVjdCBkYW1vbl9jdHggKmRhbW9uX3N5c2ZzX2J1aWxkX2N0eChcbiBcdFx0c3RydWN0IGRhbW9uX3N5c2ZzX2NvbnRleHQgKnN5c19jdHgpO1xuIFxuLS8qXG4tICogUmV0dXJuIGEgbmV3IGRhbW9uX2N0eCBmb3IgdGVzdGluZyBuZXcgcGFyYW1ldGVycyB0byBjb21taXQuXG4tICovXG4tc3RhdGljIHN0cnVjdCBkYW1vbl9jdHggKmRhbW9uX3N5c2ZzX25ld190ZXN0X2N0eChcbi1cdFx0c3RydWN0IGRhbW9uX2N0eCAqcnVubmluZ19jdHgpXG4te1xuLVx0c3RydWN0IGRhbW9uX2N0eCAqdGVzdF9jdHg7XG4tXHRpbnQgZXJyO1xuLVxuLVx0dGVzdF9jdHggPSBkYW1vbl9uZXdfY3R4KCk7XG4tXHRpZiAoIXRlc3RfY3R4KVxuLVx0XHRyZXR1cm4gTlVMTDtcbi1cdGVyciA9IGRhbW9uX2NvbW1pdF9jdHgodGVzdF9jdHgsIHJ1bm5pbmdfY3R4KTtcbi1cdGlmIChlcnIpIHtcbi1cdFx0ZGFtb25fZGVzdHJveV9jdHgodGVzdF9jdHgpO1xuLVx0XHRyZXR1cm4gTlVMTDtcbi1cdH1cbi1cdHJldHVybiB0ZXN0X2N0eDtcbi19XG4tXG4gLypcbiAgKiBkYW1vbl9zeXNmc19jb21taXRfaW5wdXQoKSAtIENvbW1pdCB1c2VyIGlucHV0cyB0byBhIHJ1bm5pbmcga2RhbW9uZC5cbiAgKiBAa2RhbW9uZDpcdFRoZSBrb2JqZWN0IHdyYXBwZXIgZm9yIHRoZSBhc3NvY2lhdGVkIGtkYW1vbmQuXG5AQCAtMjEwOSw3ICYjNDM7MjA4Niw3IEBAIHN0YXRpYyBzdHJ1Y3QgZGFtb25fY3R4ICpkYW1vbl9zeXNmc19uZXdfdGVzdF9jdHgoXG4gc3RhdGljIGludCBkYW1vbl9zeXNmc19jb21taXRfaW5wdXQodm9pZCAqZGF0YSlcbiB7XG4gXHRzdHJ1Y3QgZGFtb25fc3lzZnNfa2RhbW9uZCAqa2RhbW9uZCA9IGRhdGE7XG4tXHRzdHJ1Y3QgZGFtb25fY3R4ICpwYXJhbV9jdHgsICp0ZXN0X2N0eDtcbiYjNDM7XHRzdHJ1Y3QgZGFtb25fY3R4ICpwYXJhbV9jdHg7XG4gXHRpbnQgZXJyO1xuIFxuIFx0aWYgKCFkYW1vbl9zeXNmc19rZGFtb25kX3J1bm5pbmcoa2RhbW9uZCkpXG5AQCAtMjEyMSwxNyAmIzQzOzIwOTgsNyBAQCBzdGF0aWMgaW50IGRhbW9uX3N5c2ZzX2NvbW1pdF9pbnB1dCh2b2lkICpkYXRhKVxuIFx0cGFyYW1fY3R4ID0gZGFtb25fc3lzZnNfYnVpbGRfY3R4KGtkYW1vbmQtXHUwMDNlY29udGV4dHMtXHUwMDNlY29udGV4dHNfYXJyWzBdKTtcbiBcdGlmIChJU19FUlIocGFyYW1fY3R4KSlcbiBcdFx0cmV0dXJuIFBUUl9FUlIocGFyYW1fY3R4KTtcbi1cdHRlc3RfY3R4ID0gZGFtb25fc3lzZnNfbmV3X3Rlc3RfY3R4KGtkYW1vbmQtXHUwMDNlZGFtb25fY3R4KTtcbi1cdGlmICghdGVzdF9jdHgpIHtcbi1cdFx0ZGFtb25fZGVzdHJveV9jdHgocGFyYW1fY3R4KTtcbi1cdFx0cmV0dXJuIC1FTk9NRU07XG4tXHR9XG4tXHRlcnIgPSBkYW1vbl9jb21taXRfY3R4KHRlc3RfY3R4LCBwYXJhbV9jdHgpO1xuLVx0aWYgKGVycilcbi1cdFx0Z290byBvdXQ7XG4gXHRlcnIgPSBkYW1vbl9jb21taXRfY3R4KGtkYW1vbmQtXHUwMDNlZGFtb25fY3R4LCBwYXJhbV9jdHgpO1xuLW91dDpcbi1cdGRhbW9uX2Rlc3Ryb3lfY3R4KHRlc3RfY3R4KTtcbiBcdGRhbW9uX2Rlc3Ryb3lfY3R4KHBhcmFtX2N0eCk7XG4gXHRyZXR1cm4gZXJyO1xuIH1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMSAyMzowMTwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtEQU1PTiYjMzQ7LAogICAgJiMzNDtEQU1PTl9QQUREUiYjMzQ7LAogICAgJiMzNDtEQU1PTl9WQUREUiYjMzQ7LAogICAgJiMzNDtEQU1PTl9TWVNGUyYjMzQ7LAogICAgJiMzNDtEQU1PTl9SRUNMQUlNJiMzNDssCiAgICAmIzM0O0RBTU9OX0xSVV9TT1JUJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7ZGFtb25fY29tbWl0X2N0eCYjMzQ7LAogICAgJiMzNDtkYW1vbl9zdGFydCYjMzQ7LAogICAgJiMzNDtkYW1vbl9zZXRfcmVnaW9uX3N5c3RlbV9yYW1zX2RlZmF1bHQmIzM0OywKICAgICYjMzQ7ZGFtb25fbHJ1X3NvcnRfYXBwbHlfcGFyYW1ldGVycyYjMzQ7LAogICAgJiMzNDtkYW1vbl9yZWNsYWltX2FwcGx5X3BhcmFtZXRlcnMmIzM0OywKICAgICYjMzQ7ZGFtb25fc3lzZnNfc2V0X3JlZ2lvbnMmIzM0OywKICAgICYjMzQ7ZGFtb25fc3lzZnNfY29tbWl0X2lucHV0JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIGNvcmUgREFNT04gKERhdGEgQWNjZXNzIE1PTml0b3IpIGxvZ2ljLCBpbmNsdWRpbmcgY29udGV4dCBjb21taXQgaGFuZGxpbmcsIHBhcmFtZXRlciB2YWxpZGF0aW9uLCBhbmQgc3lzZnMgaW50ZXJmYWNlIGlucHV0cy4gSXQgcmVtb3ZlcyBzb21lIHZhbGlkYXRpb24gY2hlY2tzIGZyb20gc3BlY2lmaWMgZnVuY3Rpb25zIGFuZCBtb3ZlcyB0aGVtIG9yIHJlbGllcyBvbiBvdGhlciB2YWxpZGF0aW9uLCB3aGljaCBjb3VsZCBpbnRyb2R1Y2UgYnVncyBpZiBpbnZhbGlkIHBhcmFtZXRlcnMgYXJlIHBhc3NlZC4gRnV6emluZyBzaG91bGQgZm9jdXMgb24gdGhlIG1vZGlmaWVkIGZ1bmN0aW9ucyB0byBlbnN1cmUgc3RhYmlsaXR5LiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdAogICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksCiAgIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCA2Y2JhYmQ4MmRjYjlmYzFmZWRhYTBhZDMwMDJmNzgxMTU3YTkzZmM1CkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFdlZCBKdWwgMSAyMzowMTo1NSAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvZGFtb24uaCBiL2luY2x1ZGUvbGludXgvZGFtb24uaAppbmRleCBjZmJiZjhiYTI4ZjYzMi4uZDBmNjA4NTg3YzA4NjkgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbGludXgvZGFtb24uaAomIzQzOyYjNDM7JiM0MzsgYi9pbmNsdWRlL2xpbnV4L2RhbW9uLmgKQEAgLTUxLDcgJiM0Mzs1MSw4IEBAIHN0cnVjdCBkYW1vbl9zaXplX3JhbmdlIHsKICAqIEBsaXN0OgkJTGlzdCBoZWFkIGZvciBzaWJsaW5ncy4KICAqIEBhZ2U6CQlBZ2Ugb2YgdGhpcyByZWdpb24uCiAgKgotICogRm9yIGFueSB1c2UgY2FzZSwgQGFyIHNob3VsZCBiZSBub24temVybyBwb3NpdGl2ZSBzaXplLgomIzQzOyAqIEZvciBhbnkgdXNlIGNhc2UsIEBhciBzaG91bGQgYmUgbm9uLXplcm8gcG9zaXRpdmUgc2l6ZS4gIGRhbW9uX3NldF9yZWdpb25zKCkKJiM0MzsgKiBkb2VzIHRoZSB2YWxpZGF0aW9uLgogICoKICAqIEBucl9hY2Nlc3NlcyBpcyByZXNldCB0byB6ZXJvIGZvciBldmVyeSAmYW1wO2RhbW9uX2F0dHJzLSZndDthZ2dyX2ludGVydmFsIGFuZCBiZQogICogaW5jcmVhc2VkIGZvciBldmVyeSAmYW1wO2RhbW9uX2F0dHJzLSZndDtzYW1wbGVfaW50ZXJ2YWwgaWYgYW4gYWNjZXNzIHRvIHRoZSByZWdpb24KZGlmZiAtLWdpdCBhL21tL2RhbW9uL2NvcmUuYyBiL21tL2RhbW9uL2NvcmUuYwppbmRleCA5YTAzMTIzMjY5YzI4ZS4uZjJkZTU3OTllNjgyZjMgMTAwNjQ0Ci0tLSBhL21tL2RhbW9uL2NvcmUuYwomIzQzOyYjNDM7JiM0MzsgYi9tbS9kYW1vbi9jb3JlLmMKQEAgLTE1NTUsMjAgJiM0MzsxNTU1LDcgQEAgc3RhdGljIGludCBkYW1vbl9jb21taXRfcHJvYmVzKHN0cnVjdCBkYW1vbl9jdHggKmRzdCwgc3RydWN0IGRhbW9uX2N0eCAqc3JjKQogCXJldHVybiAwOwogfQogCi0vKioKLSAqIGRhbW9uX2NvbW1pdF9jdHgoKSAtIENvbW1pdCBwYXJhbWV0ZXJzIG9mIGEgREFNT04gY29udGV4dCB0byBhbm90aGVyLgotICogQGRzdDoJVGhlIGNvbW1pdCBkZXN0aW5hdGlvbiBEQU1PTiBjb250ZXh0LgotICogQHNyYzoJVGhlIGNvbW1pdCBzb3VyY2UgREFNT04gY29udGV4dC4KLSAqCi0gKiBUaGlzIGZ1bmN0aW9uIGNvcGllcyB1c2VyLXNwZWNpZmllZCBwYXJhbWV0ZXJzIGZyb20gQHNyYyB0byBAZHN0IGFuZCB1cGRhdGUKLSAqIHRoZSBpbnRlcm5hbCBzdGF0dXMgYW5kIHJlc3VsdHMgYWNjb3JkaW5nbHkuICBVc2VycyBzaG91bGQgdXNlIHRoaXMgZnVuY3Rpb24KLSAqIGZvciBjb250ZXh0LWxldmVsIHBhcmFtZXRlcnMgdXBkYXRlIG9mIHJ1bm5pbmcgY29udGV4dCwgaW5zdGVhZCBvZiBtYW51YWwKLSAqIGluLXBsYWNlIHVwZGF0ZXMuCi0gKgotICogVGhpcyBmdW5jdGlvbiBzaG91bGQgYmUgY2FsbGVkIGZyb20gcGFyYW1ldGVycy11cGRhdGUgc2FmZSBjb250ZXh0LCBsaWtlCi0gKiBkYW1vbl9jYWxsKCkuCi0gKi8KLWludCBkYW1vbl9jb21taXRfY3R4KHN0cnVjdCBkYW1vbl9jdHggKmRzdCwgc3RydWN0IGRhbW9uX2N0eCAqc3JjKQomIzQzO3N0YXRpYyBpbnQgX19kYW1vbl9jb21taXRfY3R4KHN0cnVjdCBkYW1vbl9jdHggKmRzdCwgc3RydWN0IGRhbW9uX2N0eCAqc3JjKQogewogCWludCBlcnI7CiAJc3RydWN0IGRhbW9zICpzY2hlbWU7CkBAIC0xNjIzLDYgJiM0MzsxNjEwLDUyIEBAIGludCBkYW1vbl9jb21taXRfY3R4KHN0cnVjdCBkYW1vbl9jdHggKmRzdCwgc3RydWN0IGRhbW9uX2N0eCAqc3JjKQogCXJldHVybiAwOwogfQogCiYjNDM7c3RhdGljIHN0cnVjdCBkYW1vbl9jdHggKmRhbW9uX25ld190ZXN0X2N0eChzdHJ1Y3QgZGFtb25fY3R4ICpkc3QpCiYjNDM7ewomIzQzOwlzdHJ1Y3QgZGFtb25fY3R4ICp0ZXN0X2N0eDsKJiM0MzsJaW50IGVycjsKJiM0MzsKJiM0MzsJdGVzdF9jdHggPSBkYW1vbl9uZXdfY3R4KCk7CiYjNDM7CWlmICghdGVzdF9jdHgpCiYjNDM7CQlyZXR1cm4gTlVMTDsKJiM0MzsJZXJyID0gX19kYW1vbl9jb21taXRfY3R4KHRlc3RfY3R4LCBkc3QpOwomIzQzOwlpZiAoZXJyKSB7CiYjNDM7CQlkYW1vbl9kZXN0cm95X2N0eCh0ZXN0X2N0eCk7CiYjNDM7CQlyZXR1cm4gTlVMTDsKJiM0MzsJfQomIzQzOwlyZXR1cm4gdGVzdF9jdHg7CiYjNDM7fQomIzQzOwomIzQzOy8qKgomIzQzOyAqIGRhbW9uX2NvbW1pdF9jdHgoKSAtIENvbW1pdCBwYXJhbWV0ZXJzIG9mIGEgREFNT04gY29udGV4dCB0byBhbm90aGVyLgomIzQzOyAqIEBkc3Q6CVRoZSBjb21taXQgZGVzdGluYXRpb24gREFNT04gY29udGV4dC4KJiM0MzsgKiBAc3JjOglUaGUgY29tbWl0IHNvdXJjZSBEQU1PTiBjb250ZXh0LgomIzQzOyAqCiYjNDM7ICogVGhpcyBmdW5jdGlvbiBjb3BpZXMgdXNlci1zcGVjaWZpZWQgcGFyYW1ldGVycyBmcm9tIEBzcmMgdG8gQGRzdCBhbmQgdXBkYXRlCiYjNDM7ICogdGhlIGludGVybmFsIHN0YXR1cyBhbmQgcmVzdWx0cyBhY2NvcmRpbmdseS4gIFVzZXJzIHNob3VsZCB1c2UgdGhpcyBmdW5jdGlvbgomIzQzOyAqIGZvciBjb250ZXh0LWxldmVsIHBhcmFtZXRlcnMgdXBkYXRlIG9mIHJ1bm5pbmcgY29udGV4dCwgaW5zdGVhZCBvZiBtYW51YWwKJiM0MzsgKiBpbi1wbGFjZSB1cGRhdGVzLgomIzQzOyAqCiYjNDM7ICogVGhpcyBmdW5jdGlvbiBzaG91bGQgYmUgY2FsbGVkIGZyb20gcGFyYW1ldGVycy11cGRhdGUgc2FmZSBjb250ZXh0LCBsaWtlCiYjNDM7ICogZGFtb25fY2FsbCgpLgomIzQzOyAqLwomIzQzO2ludCBkYW1vbl9jb21taXRfY3R4KHN0cnVjdCBkYW1vbl9jdHggKmRzdCwgc3RydWN0IGRhbW9uX2N0eCAqc3JjKQomIzQzO3sKJiM0MzsJc3RydWN0IGRhbW9uX2N0eCAqdGVzdF9jdHg7CiYjNDM7CWludCBlcnI7CiYjNDM7CiYjNDM7CXRlc3RfY3R4ID0gZGFtb25fbmV3X3Rlc3RfY3R4KGRzdCk7CiYjNDM7CWlmICghdGVzdF9jdHgpCiYjNDM7CQlyZXR1cm4gLUVOT01FTTsKJiM0MzsJZXJyID0gX19kYW1vbl9jb21taXRfY3R4KHRlc3RfY3R4LCBkc3QpOwomIzQzOwlpZiAoZXJyKQomIzQzOwkJZ290byBvdXQ7CiYjNDM7CWVyciA9IF9fZGFtb25fY29tbWl0X2N0eChkc3QsIHNyYyk7CiYjNDM7b3V0OgomIzQzOwlkYW1vbl9kZXN0cm95X2N0eCh0ZXN0X2N0eCk7CiYjNDM7CXJldHVybiBlcnI7CiYjNDM7fQomIzQzOwogLyoqCiAgKiBkYW1vbl9ucl9ydW5uaW5nX2N0eHMoKSAtIFJldHVybiBudW1iZXIgb2YgY3VycmVudGx5IHJ1bm5pbmcgY29udGV4dHMuCiAgKi8KQEAgLTE3MjMsNiAmIzQzOzE3NTYsOCBAQCBzdGF0aWMgaW50IF9fZGFtb25fc3RhcnQoc3RydWN0IGRhbW9uX2N0eCAqY3R4KQogCXJldHVybiBlcnI7CiB9CiAKJiM0MztzdGF0aWMgaW50IF9fZGFtb25fY29tbWl0X2N0eChzdHJ1Y3QgZGFtb25fY3R4ICpkc3QsIHN0cnVjdCBkYW1vbl9jdHggKnNyYyk7CiYjNDM7CiAvKioKICAqIGRhbW9uX3N0YXJ0KCkgLSBTdGFydHMgdGhlIG1vbml0b3JpbmdzIGZvciBhIGdpdmVuIGdyb3VwIG9mIGNvbnRleHRzLgogICogQGN0eHM6CWFuIGFycmF5IG9mIHRoZSBwb2ludGVycyBmb3IgY29udGV4dHMgdG8gc3RhcnQgbW9uaXRvcmluZwpAQCAtMTc0MCwxMyAmIzQzOzE3NzUsMjIgQEAgc3RhdGljIGludCBfX2RhbW9uX3N0YXJ0KHN0cnVjdCBkYW1vbl9jdHggKmN0eCkKICAqLwogaW50IGRhbW9uX3N0YXJ0KHN0cnVjdCBkYW1vbl9jdHggKipjdHhzLCBpbnQgbnJfY3R4cywgYm9vbCBleGNsdXNpdmUpCiB7CiYjNDM7CXN0cnVjdCBkYW1vbl9jdHggKnRlc3RfY3R4OwogCWludCBpOwogCWludCBlcnIgPSAwOwogCiYjNDM7CXRlc3RfY3R4ID0gZGFtb25fbmV3X2N0eCgpOwomIzQzOwlpZiAoIXRlc3RfY3R4KQomIzQzOwkJcmV0dXJuIC1FTk9NRU07CiYjNDM7CiAJZm9yIChpID0gMDsgaSAmbHQ7IG5yX2N0eHM7IGkmIzQzOyYjNDM7KSB7Ci0JCWlmICghaXNfcG93ZXJfb2ZfMihjdHhzW2ldLSZndDttaW5fcmVnaW9uX3N6KSkKLQkJCXJldHVybiAtRUlOVkFMOwomIzQzOwkJZXJyID0gX19kYW1vbl9jb21taXRfY3R4KHRlc3RfY3R4LCBjdHhzW2ldKTsKJiM0MzsJCWlmIChlcnIpIHsKJiM0MzsJCQlkYW1vbl9kZXN0cm95X2N0eCh0ZXN0X2N0eCk7CiYjNDM7CQkJcmV0dXJuIGVycjsKJiM0MzsJCX0KIAl9CiYjNDM7CWRhbW9uX2Rlc3Ryb3lfY3R4KHRlc3RfY3R4KTsKIAogCW11dGV4X2xvY2soJmFtcDtkYW1vbl9sb2NrKTsKIAlpZiAoKGV4Y2x1c2l2ZSAmYW1wOyZhbXA7IG5yX3J1bm5pbmdfY3R4cykgfHwKQEAgLTM3MzgsOSAmIzQzOzM3ODIsNiBAQCBpbnQgZGFtb25fc2V0X3JlZ2lvbl9zeXN0ZW1fcmFtc19kZWZhdWx0KHN0cnVjdCBkYW1vbl90YXJnZXQgKnQsCiB7CiAJc3RydWN0IGRhbW9uX2FkZHJfcmFuZ2UgYWRkcl9yYW5nZTsKIAotCWlmICgqc3RhcnQgJmd0OyAqZW5kKQotCQlyZXR1cm4gLUVJTlZBTDsKLQogCWlmICghKnN0YXJ0ICZhbXA7JmFtcDsgISplbmQgJmFtcDsmYW1wOwogCQkhZGFtb25fZmluZF9zeXN0ZW1fcmFtc19yYW5nZShzdGFydCwgZW5kLCBhZGRyX3VuaXQpKQogCQlyZXR1cm4gLUVJTlZBTDsKZGlmZiAtLWdpdCBhL21tL2RhbW9uL2xydV9zb3J0LmMgYi9tbS9kYW1vbi9scnVfc29ydC5jCmluZGV4IDMyZjQxNDkxYjcyNmIyLi4yZGQwY2QwZDI2MjczMSAxMDA2NDQKLS0tIGEvbW0vZGFtb24vbHJ1X3NvcnQuYwomIzQzOyYjNDM7JiM0MzsgYi9tbS9kYW1vbi9scnVfc29ydC5jCkBAIC0yODQsMTEgJiM0MzsyODQsNiBAQCBzdGF0aWMgaW50IGRhbW9uX2xydV9zb3J0X2FwcGx5X3BhcmFtZXRlcnModm9pZCkKIAlwYXJhbV9jdHgtJmd0O2FkZHJfdW5pdCA9IGFkZHJfdW5pdDsKIAlwYXJhbV9jdHgtJmd0O21pbl9yZWdpb25fc3ogPSBtYXgoREFNT05fTUlOX1JFR0lPTl9TWiAvIGFkZHJfdW5pdCwgMSk7CiAKLQlpZiAoIWlzX3Bvd2VyX29mXzIocGFyYW1fY3R4LSZndDttaW5fcmVnaW9uX3N6KSkgewotCQllcnIgPSAtRUlOVkFMOwotCQlnb3RvIG91dDsKLQl9Ci0KIAlpZiAoIWRhbW9uX2xydV9zb3J0X21vbl9hdHRycy5zYW1wbGVfaW50ZXJ2YWwpIHsKIAkJZXJyID0gLUVJTlZBTDsKIAkJZ290byBvdXQ7CmRpZmYgLS1naXQgYS9tbS9kYW1vbi9yZWNsYWltLmMgYi9tbS9kYW1vbi9yZWNsYWltLmMKaW5kZXggMTFiNzBkMGE5YTZmMGEuLjY0NjliMjVjYzM0ZjkyIDEwMDY0NAotLS0gYS9tbS9kYW1vbi9yZWNsYWltLmMKJiM0MzsmIzQzOyYjNDM7IGIvbW0vZGFtb24vcmVjbGFpbS5jCkBAIC0yMDgsMTEgJiM0MzsyMDgsNiBAQCBzdGF0aWMgaW50IGRhbW9uX3JlY2xhaW1fYXBwbHlfcGFyYW1ldGVycyh2b2lkKQogCXBhcmFtX2N0eC0mZ3Q7YWRkcl91bml0ID0gYWRkcl91bml0OwogCXBhcmFtX2N0eC0mZ3Q7bWluX3JlZ2lvbl9zeiA9IG1heChEQU1PTl9NSU5fUkVHSU9OX1NaIC8gYWRkcl91bml0LCAxKTsKIAotCWlmICghaXNfcG93ZXJfb2ZfMihwYXJhbV9jdHgtJmd0O21pbl9yZWdpb25fc3opKSB7Ci0JCWVyciA9IC1FSU5WQUw7Ci0JCWdvdG8gb3V0OwotCX0KLQogCWlmICghZGFtb25fcmVjbGFpbV9tb25fYXR0cnMuYWdncl9pbnRlcnZhbCkgewogCQllcnIgPSAtRUlOVkFMOwogCQlnb3RvIG91dDsKZGlmZiAtLWdpdCBhL21tL2RhbW9uL3N5c2ZzLmMgYi9tbS9kYW1vbi9zeXNmcy5jCmluZGV4IGUzNTI2YTI2M2UyMDVmLi45MzNmZjMwM2RlNWExMiAxMDA2NDQKLS0tIGEvbW0vZGFtb24vc3lzZnMuYwomIzQzOyYjNDM7JiM0MzsgYi9tbS9kYW1vbi9zeXNmcy5jCkBAIC0xOTY5LDkgJiM0MzsxOTY5LDYgQEAgc3RhdGljIGludCBkYW1vbl9zeXNmc19zZXRfcmVnaW9ucyhzdHJ1Y3QgZGFtb25fdGFyZ2V0ICp0LAogCQlzdHJ1Y3QgZGFtb25fc3lzZnNfcmVnaW9uICpzeXNfcmVnaW9uID0KIAkJCXN5c2ZzX3JlZ2lvbnMtJmd0O3JlZ2lvbnNfYXJyW2ldOwogCi0JCWlmIChzeXNfcmVnaW9uLSZndDthci5zdGFydCAmZ3Q7IHN5c19yZWdpb24tJmd0O2FyLmVuZCkKLQkJCWdvdG8gb3V0OwotCiAJCXJhbmdlc1tpXS5zdGFydCA9IHN5c19yZWdpb24tJmd0O2FyLnN0YXJ0OwogCQlyYW5nZXNbaV0uZW5kID0gc3lzX3JlZ2lvbi0mZ3Q7YXIuZW5kOwogCQlpZiAoaSA9PSAwKQpAQCAtMjA4MCwyNiAmIzQzOzIwNzcsNiBAQCBzdGF0aWMgaW50IGRhbW9uX3N5c2ZzX2FwcGx5X2lucHV0cyhzdHJ1Y3QgZGFtb25fY3R4ICpjdHgsCiBzdGF0aWMgc3RydWN0IGRhbW9uX2N0eCAqZGFtb25fc3lzZnNfYnVpbGRfY3R4KAogCQlzdHJ1Y3QgZGFtb25fc3lzZnNfY29udGV4dCAqc3lzX2N0eCk7CiAKLS8qCi0gKiBSZXR1cm4gYSBuZXcgZGFtb25fY3R4IGZvciB0ZXN0aW5nIG5ldyBwYXJhbWV0ZXJzIHRvIGNvbW1pdC4KLSAqLwotc3RhdGljIHN0cnVjdCBkYW1vbl9jdHggKmRhbW9uX3N5c2ZzX25ld190ZXN0X2N0eCgKLQkJc3RydWN0IGRhbW9uX2N0eCAqcnVubmluZ19jdHgpCi17Ci0Jc3RydWN0IGRhbW9uX2N0eCAqdGVzdF9jdHg7Ci0JaW50IGVycjsKLQotCXRlc3RfY3R4ID0gZGFtb25fbmV3X2N0eCgpOwotCWlmICghdGVzdF9jdHgpCi0JCXJldHVybiBOVUxMOwotCWVyciA9IGRhbW9uX2NvbW1pdF9jdHgodGVzdF9jdHgsIHJ1bm5pbmdfY3R4KTsKLQlpZiAoZXJyKSB7Ci0JCWRhbW9uX2Rlc3Ryb3lfY3R4KHRlc3RfY3R4KTsKLQkJcmV0dXJuIE5VTEw7Ci0JfQotCXJldHVybiB0ZXN0X2N0eDsKLX0KLQogLyoKICAqIGRhbW9uX3N5c2ZzX2NvbW1pdF9pbnB1dCgpIC0gQ29tbWl0IHVzZXIgaW5wdXRzIHRvIGEgcnVubmluZyBrZGFtb25kLgogICogQGtkYW1vbmQ6CVRoZSBrb2JqZWN0IHdyYXBwZXIgZm9yIHRoZSBhc3NvY2lhdGVkIGtkYW1vbmQuCkBAIC0yMTA5LDcgJiM0MzsyMDg2LDcgQEAgc3RhdGljIHN0cnVjdCBkYW1vbl9jdHggKmRhbW9uX3N5c2ZzX25ld190ZXN0X2N0eCgKIHN0YXRpYyBpbnQgZGFtb25fc3lzZnNfY29tbWl0X2lucHV0KHZvaWQgKmRhdGEpCiB7CiAJc3RydWN0IGRhbW9uX3N5c2ZzX2tkYW1vbmQgKmtkYW1vbmQgPSBkYXRhOwotCXN0cnVjdCBkYW1vbl9jdHggKnBhcmFtX2N0eCwgKnRlc3RfY3R4OwomIzQzOwlzdHJ1Y3QgZGFtb25fY3R4ICpwYXJhbV9jdHg7CiAJaW50IGVycjsKIAogCWlmICghZGFtb25fc3lzZnNfa2RhbW9uZF9ydW5uaW5nKGtkYW1vbmQpKQpAQCAtMjEyMSwxNyAmIzQzOzIwOTgsNyBAQCBzdGF0aWMgaW50IGRhbW9uX3N5c2ZzX2NvbW1pdF9pbnB1dCh2b2lkICpkYXRhKQogCXBhcmFtX2N0eCA9IGRhbW9uX3N5c2ZzX2J1aWxkX2N0eChrZGFtb25kLSZndDtjb250ZXh0cy0mZ3Q7Y29udGV4dHNfYXJyWzBdKTsKIAlpZiAoSVNfRVJSKHBhcmFtX2N0eCkpCiAJCXJldHVybiBQVFJfRVJSKHBhcmFtX2N0eCk7Ci0JdGVzdF9jdHggPSBkYW1vbl9zeXNmc19uZXdfdGVzdF9jdHgoa2RhbW9uZC0mZ3Q7ZGFtb25fY3R4KTsKLQlpZiAoIXRlc3RfY3R4KSB7Ci0JCWRhbW9uX2Rlc3Ryb3lfY3R4KHBhcmFtX2N0eCk7Ci0JCXJldHVybiAtRU5PTUVNOwotCX0KLQllcnIgPSBkYW1vbl9jb21taXRfY3R4KHRlc3RfY3R4LCBwYXJhbV9jdHgpOwotCWlmIChlcnIpCi0JCWdvdG8gb3V0OwogCWVyciA9IGRhbW9uX2NvbW1pdF9jdHgoa2RhbW9uZC0mZ3Q7ZGFtb25fY3R4LCBwYXJhbV9jdHgpOwotb3V0OgotCWRhbW9uX2Rlc3Ryb3lfY3R4KHRlc3RfY3R4KTsKIAlkYW1vbl9kZXN0cm95X2N0eChwYXJhbV9jdHgpOwogCXJldHVybiBlcnI7CiB9CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAxIDIzOjAxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ2NjAKCQkJCQkJCW91dHB1dDogMzAKCQkJCQkJCXRob3VnaHRzOiA0NzkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRnV6emluZyBEZWNpc2lvbiBmb3IgREFNT04gUGF0Y2ggU2VyaWVzKioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIE15IGluaXRpYWwgYXNzZXNzbWVudCBpcyB3aGV0aGVyIHRoaXMgcGF0Y2ggc2VyaWVzIGludHJvZHVjZXMgYW55ICpmdW5jdGlvbmFsKiBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBuZWNlc3NpdGF0ZSBmdXp6aW5nLiBUaGUgZmFjdCB0aGF0IGl0IHRvdWNoZXMgYG1tL2RhbW9uLypgIGZpbGVzIGltbWVkaWF0ZWx5IGZsYWdzIG15IGF0dGVudGlvbiDigJMgREFNT04gaXMgY29yZSBtZW1vcnkgbWFuYWdlbWVudCwgc28gaXQmIzM5O3MgaW5oZXJlbnRseSByZWFjaGFibGUgYW5kIGltcG9ydGFudC4KCkxvb2tpbmcgYXQgdGhlIGNvZGUsIGl0IGxvb2tzIGxpa2UgaXQgaXMgcmVmYWN0b3JpbmcgYGRhbW9uX2NvbW1pdF9jdHhgIHVzaW5nIGBfX2RhbW9uX2NvbW1pdF9jdHhgIGFuZCBhIG5ldyBgZGFtb25fbmV3X3Rlc3RfY3R4YC4gVGhhdCwgaW4gaXRzZWxmLCBpcyBlbm91Z2ggdG8gYmUgd29ydGggYSBmdXp6aW5nIHBhc3M7IG5ldyBjb2RlIG1lYW5zIG5ldyBhdHRhY2sgc3VyZmFjZS4gSSBzZWUgdGhleSYjMzk7dmUgcmVtb3ZlZCBhIGJ1bmNoIG9mIGNoZWNrcyBsaWtlIGBpc19wb3dlcl9vZl8yYCBmcm9tIHBhcmFtZXRlciB2YWxpZGF0aW9uIGluIGBkYW1vbl9scnVfc29ydF9hcHBseV9wYXJhbWV0ZXJzYCwgYGRhbW9uX3JlY2xhaW1fYXBwbHlfcGFyYW1ldGVyc2AgYW5kIHRoZSBvdGhlciBwbGFjZXMuIFRoYXQmIzM5O3MgKnZlcnkqIGludGVyZXN0aW5nLiBSZW1vdmluZyB0aG9zZSBndWFyZHJhaWxzIGNvdWxkIGV4cG9zZSB2dWxuZXJhYmlsaXRpZXMsIGVzcGVjaWFsbHkgaWYgdGhlIHZhbGlkYXRpb24gaXMgbW92ZWQgZWxzZXdoZXJlIG9yIGltcGxpY2l0bHkgcmVsaWVkIHVwb24uIFRoZSBjb21taXQgbWVzc2FnZSBkb2VzbiYjMzk7dCBoZWxwIHdpdGggY29udGV4dCB0aG91Z2ghCgpUaGUgY2hhbmdlcyBpbiBgZGFtb25fc2V0X3JlZ2lvbl9zeXN0ZW1fcmFtc19kZWZhdWx0YCBhbmQgYGRhbW9uX3N5c2ZzX3NldF9yZWdpb25zYCBhbHNvIHJlbW92ZSBjaGVja3MuIEdpdmVuIHRoZSBuYXR1cmUgb2YgREFNT04mIzM5O3Mgcm9sZSBpbiBtZW1vcnkgbWFuYWdlbWVudCwgcmVtb3ZpbmcgY2hlY2tzIGlzIGEgYmlnIHJlZCBmbGFnLgoKR2l2ZW4gdGhhdCBEQU1PTiBpcyBhIGNvcmUgbWVtb3J5IG1hbmFnZW1lbnQgZmVhdHVyZSwgYW5kIHRoaXMgcGF0Y2ggc2VyaWVzIGNoYW5nZXMgZnVuY3Rpb25hbGl0eSBhbmQgcGFyYW1ldGVyIHZhbGlkYXRpb24sIHRoaXMgaXMgZGVmaW5pdGVseSBXb3J0aEZ1enppbmc9dHJ1ZS4KCk5vdywgbGV0JiMzOTtzIGlkZW50aWZ5ICp3aGVyZSogdG8gZm9jdXMgdGhlIGZ1enppbmcgZWZmb3J0LiBJJiMzOTtsbCBuZWVkIHRvIGNvbXBpbGUgYSBsaXN0IG9mIGFmZmVjdGVkIGZ1bmN0aW9uczoKCiogICBgZGFtb25fY29tbWl0X2N0eGAKKiAgIGBkYW1vbl9uZXdfdGVzdF9jdHhgIChuZXcpCiogICBgX19kYW1vbl9jb21taXRfY3R4YCAobmV3KQoqICAgYGRhbW9uX3N0YXJ0YAoqICAgYGRhbW9uX3NldF9yZWdpb25fc3lzdGVtX3JhbXNfZGVmYXVsdGAKKiAgIGBkYW1vbl9scnVfc29ydF9hcHBseV9wYXJhbWV0ZXJzYAoqICAgYGRhbW9uX3JlY2xhaW1fYXBwbHlfcGFyYW1ldGVyc2AKKiAgIGBkYW1vbl9zeXNmc19zZXRfcmVnaW9uc2AKKiAgIGBkYW1vbl9zeXNmc19jb21taXRfaW5wdXRgCgpNeSBuZXh0IHN0ZXAgd2lsbCBiZSB0byB1c2UgYGdyZXBwZXJgIChvciB3aGF0ZXZlciBzZWFyY2ggdG9vbCBJJiMzOTttIHVzaW5nKSB0byBjaGVjayB0aGUgcmVsZXZhbnQga2VybmVsIGNvbmZpZyBvcHRpb25zIGZvciBEQU1PTi4gVGhhdCYjMzk7bGwgZ3VpZGUgbWUgaW4gdGhlIGZ1enppbmcgc2V0dXAsIGFuZCBoZWxwIG1lIHRhcmdldCBjb25maWd1cmF0aW9ucyB0aGF0IGFyZSBsaWtlbHkgdG8gYmUgdXNlZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMSAyMzowMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgREFNT04mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDttbS9kYW1vbi9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O21tL2RhbW9uL0tjb25maWc9Mz1tZW51IFwmIzM0O0RhdGEgQWNjZXNzIE1vbml0b3JpbmdcJiMzNDtcbm1tL2RhbW9uL0tjb25maWctNC1cbm1tL2RhbW9uL0tjb25maWc6NTpjb25maWcgREFNT05cbm1tL2RhbW9uL0tjb25maWctNi1cdGJvb2wgXCYjMzQ7REFNT046IERhdGEgQWNjZXNzIE1vbml0b3JpbmcgRnJhbWV3b3JrXCYjMzQ7XG4tLVxubW0vZGFtb24vS2NvbmZpZy0xNC1cbm1tL2RhbW9uL0tjb25maWc6MTU6Y29uZmlnIERBTU9OX0RFQlVHX1NBTklUWVxubW0vZGFtb24vS2NvbmZpZy0xNi1cdGJvb2wgXCYjMzQ7Q2hlY2sgc2FuaXR5IG9mIERBTU9OIGNvZGVcJiMzNDtcbi0tXG5tbS9kYW1vbi9LY29uZmlnLTI1LVxubW0vZGFtb24vS2NvbmZpZzoyNjpjb25maWcgREFNT05fS1VOSVRfVEVTVFxubW0vZGFtb24vS2NvbmZpZy0yNy1cdGJvb2wgXCYjMzQ7VGVzdCBmb3IgZGFtb25cJiMzNDsgaWYgIUtVTklUX0FMTF9URVNUU1xuLS1cbm1tL2RhbW9uL0tjb25maWctMzctXG5tbS9kYW1vbi9LY29uZmlnOjM4OmNvbmZpZyBEQU1PTl9WQUREUlxubW0vZGFtb24vS2NvbmZpZy0zOS1cdGJvb2wgXCYjMzQ7RGF0YSBhY2Nlc3MgbW9uaXRvcmluZyBvcGVyYXRpb25zIGZvciB2aXJ0dWFsIGFkZHJlc3Mgc3BhY2VzXCYjMzQ7XG4tLVxubW0vZGFtb24vS2NvbmZpZy00Ni1cbm1tL2RhbW9uL0tjb25maWc6NDc6Y29uZmlnIERBTU9OX1BBRERSXG5tbS9kYW1vbi9LY29uZmlnLTQ4LVx0Ym9vbCBcJiMzNDtEYXRhIGFjY2VzcyBtb25pdG9yaW5nIG9wZXJhdGlvbnMgZm9yIHRoZSBwaHlzaWNhbCBhZGRyZXNzIHNwYWNlXCYjMzQ7XG4tLVxubW0vZGFtb24vS2NvbmZpZy01NS1cbm1tL2RhbW9uL0tjb25maWc6NTY6Y29uZmlnIERBTU9OX1ZBRERSX0tVTklUX1RFU1Rcbm1tL2RhbW9uL0tjb25maWctNTctXHRib29sIFwmIzM0O1Rlc3QgZm9yIERBTU9OIG9wZXJhdGlvbnNcJiMzNDsgaWYgIUtVTklUX0FMTF9URVNUU1xuLS1cbm1tL2RhbW9uL0tjb25maWctNjctXG5tbS9kYW1vbi9LY29uZmlnOjY4OmNvbmZpZyBEQU1PTl9TWVNGU1xubW0vZGFtb24vS2NvbmZpZy02OS1cdGJvb2wgXCYjMzQ7REFNT04gc3lzZnMgaW50ZXJmYWNlXCYjMzQ7XG4tLVxubW0vZGFtb24vS2NvbmZpZy03NS1cbm1tL2RhbW9uL0tjb25maWc6NzY6Y29uZmlnIERBTU9OX1NZU0ZTX0tVTklUX1RFU1Rcbm1tL2RhbW9uL0tjb25maWctNzctXHRib29sIFwmIzM0O1Rlc3QgZm9yIGRhbW9uIHN5c2ZzIGludGVyZmFjZVwmIzM0OyBpZiAhS1VOSVRfQUxMX1RFU1RTXG4tLVxubW0vZGFtb24vS2NvbmZpZy04Ny1cbm1tL2RhbW9uL0tjb25maWc6ODg6Y29uZmlnIERBTU9OX1JFQ0xBSU1cbm1tL2RhbW9uL0tjb25maWctODktXHRib29sIFwmIzM0O0J1aWxkIERBTU9OLWJhc2VkIHJlY2xhaW0gKERBTU9OX1JFQ0xBSU0pXCYjMzQ7XG4tLVxubW0vZGFtb24vS2NvbmZpZy05OS1cbm1tL2RhbW9uL0tjb25maWc6MTAwOmNvbmZpZyBEQU1PTl9MUlVfU09SVFxubW0vZGFtb24vS2NvbmZpZy0xMDEtXHRib29sIFwmIzM0O0J1aWxkIERBTU9OLWJhc2VkIExSVS1saXN0cyBzb3J0aW5nIChEQU1PTl9MUlVfU09SVClcJiMzNDtcbi0tXG5tbS9kYW1vbi9LY29uZmlnLTEwNy1cbm1tL2RhbW9uL0tjb25maWc6MTA4OmNvbmZpZyBEQU1PTl9TVEFUXG5tbS9kYW1vbi9LY29uZmlnLTEwOS1cdGJvb2wgXCYjMzQ7QnVpbGQgZGF0YSBhY2Nlc3MgbW9uaXRvcmluZyBzdGF0IChEQU1PTl9TVEFUKVwmIzM0O1xuLS1cbm1tL2RhbW9uL0tjb25maWctMTE1LVxubW0vZGFtb24vS2NvbmZpZzoxMTY6Y29uZmlnIERBTU9OX1NUQVRfRU5BQkxFRF9ERUZBVUxUXG5tbS9kYW1vbi9LY29uZmlnLTExNy1cdGJvb2wgXCYjMzQ7RW5hYmxlIERBTU9OX1NUQVQgYnkgZGVmYXVsdFwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAxIDIzOjAyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDY0NTEKCQkJCQkJCW91dHB1dDogMzMKCQkJCQkJCXRob3VnaHRzOiAyOTkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgRnV6emluZyBTdHJhdGVneSBmb3IgREFNT04qKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoZXNlIERBTU9OIGNvbmZpZ3VyYXRpb25zIOKAkyBgREFNT05gLCBgREFNT05fU1lTRlNgLCBgREFNT05fUkVDTEFJTWAsIGFuZCBgREFNT05fTFJVX1NPUlRgIOKAkyBhbmQgaXQgbG9va3MgbGlrZSB0aGUgcmVsZXZhbnQgZmlsZXMgdGhhdCBoYXZlIGJlZW4gdG91Y2hlZCBhcmUgYG1tL2RhbW9uL2NvcmUuY2AsIGBtbS9kYW1vbi9scnVfc29ydC5jYCwgYG1tL2RhbW9uL3JlY2xhaW0uY2AsIGFuZCBgbW0vZGFtb24vc3lzZnMuY2AuIFRoaXMgc3Ryb25nbHkgc3VnZ2VzdHMgdGhhdCBJIG5lZWQgdG8gZW5hYmxlIHRoZXNlIGNvbmZpZ3M6IGBEQU1PTmAsIGBEQU1PTl9TWVNGU2AsIGBEQU1PTl9SRUNMQUlNYCwgYW5kIGBEQU1PTl9MUlVfU09SVGAuCgpOb3csIHRoZSBjcnVjaWFsIHN0ZXAgaXMgaWRlbnRpZnlpbmcgdGhlIGtleSBmdW5jdGlvbnMgZm9yIGZ1enppbmcuIEFmdGVyIGEgcXVpY2sgc2NhbiwgSSYjMzk7bSB0aGlua2luZyB0aGUgZm9sbG93aW5nIGFyZSBoaWdoLXZhbHVlIHRhcmdldHM6IGBkYW1vbl9jb21taXRfY3R4YCwgYGRhbW9uX3N0YXJ0YCwgYGRhbW9uX3NldF9yZWdpb25fc3lzdGVtX3JhbXNfZGVmYXVsdGAsIGBkYW1vbl9scnVfc29ydF9hcHBseV9wYXJhbWV0ZXJzYCwgYGRhbW9uX3JlY2xhaW1fYXBwbHlfcGFyYW1ldGVyc2AsIGBkYW1vbl9zeXNmc19zZXRfcmVnaW9uc2AsIGFuZCBgZGFtb25fc3lzZnNfY29tbWl0X2lucHV0YC4gVGhlc2UgbG9vayBsaWtlIHByaW1lIGNhbmRpZGF0ZXMgZm9yIGV4cGxvaXRpbmcgcG90ZW50aWFsIHZ1bG5lcmFiaWxpdGllcy4KCkJlZm9yZSBJIGNvbW1pdCB0byB0aGlzIHBsYW4sIHRob3VnaCwgSSBzaG91bGQgZG91YmxlLWNoZWNrIHRoZSBkZXBlbmRlbmNpZXMuIEkgaGF2ZSBhIGh1bmNoIHRoYXQgYERBTU9OX1ZBRERSYCBhbmQgYERBTU9OX1BBRERSYCAqbWlnaHQqIGJlIHJlcXVpcmVkIGluIGNvbmp1bmN0aW9uIHdpdGggYERBTU9OX1JFQ0xBSU1gIGFuZCBgREFNT05fTFJVX1NPUlRgLiBCZXN0IHRvIGdvIGJhY2sgdG8gYG1tL2RhbW9uL0tjb25maWdgIHRvIHZlcmlmeSBhbnkgZGVwZW5kZW5jaWVzIGFuZCBtYWtlIHN1cmUgSSBoYXZlbiYjMzk7dCBtaXNzZWQgYW55dGhpbmcuIEkgd2FudCB0byBlbnN1cmUgbXkgZnV6emluZyBzZXR1cCBpcyBhcyBjb21wbGV0ZSBhcyBwb3NzaWJsZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMSAyMzowMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgREFNT05fUkVDTEFJTSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O21tL2RhbW9uL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bW0vZGFtb24vS2NvbmZpZz03Nj1jb25maWcgREFNT05fU1lTRlNfS1VOSVRfVEVTVFxuLS1cbm1tL2RhbW9uL0tjb25maWctODctXG5tbS9kYW1vbi9LY29uZmlnOjg4OmNvbmZpZyBEQU1PTl9SRUNMQUlNXG5tbS9kYW1vbi9LY29uZmlnLTg5LVx0Ym9vbCBcJiMzNDtCdWlsZCBEQU1PTi1iYXNlZCByZWNsYWltIChEQU1PTl9SRUNMQUlNKVwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAxIDIzOjAyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDcyNTEKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiAxOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0YWtlIG9uIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHN1bW1hcml6ZWQgYXMgeW91IHJlcXVlc3RlZDoKCioqTmF2aWdhdGluZyBLZXJuZWwgQ29uZmlndXJhdGlvbiBmb3IgRGFtb24qKgoKT2theSwgc28gSSBuZWVkIHRvIGRpdmUgaW50byB0aGUga2VybmVsIGNvbmZpZ3VyYXRpb24gZm9yIHRoZSBgbW0vZGFtb25gIHN1YnN5c3RlbS4gTGV0JiMzOTtzIHNlZS4uLiB0aGUgYEtjb25maWdgIGZpbGVzIGFyZSB1c3VhbGx5IHRoZSBiZXN0IHBsYWNlIHRvIHN0YXJ0LiBJJiMzOTttIHRoaW5raW5nLCBiYXNlZCBvbiBteSBleHBlcmllbmNlLCB0aGF0IGxpbmUgODggaW4gdGhhdCBwYXJ0aWN1bGFyIGBLY29uZmlnYCBmaWxlIChgbW0vZGFtb24vS2NvbmZpZ2ApIGlzIGEgbGlrZWx5IHBvaW50IG9mIGludGVyZXN0LiBJdCYjMzk7cyBvZnRlbiB3aGVyZSBrZXkgZmVhdHVyZXMgb3Igb3B0aW9ucyByZWxhdGVkIHRvIGEgbW9kdWxlIGJlZ2luIHRvIGJlIGRlZmluZWQgb3Igd2hlcmUgdGhlIGNvcmUgY29uZmlndXJhdGlvbiBlbnRyeSBpcyBsb2NhdGVkLiBUaGlzIGNvdWxkIGJlIHdoZXJlIEkmIzM5O2xsIGZpbmQgdGhlIHByaW1hcnkgY29uZmlndXJhdGlvbiBzeW1ib2wgb3IgcmVsYXRlZCBzZXR0aW5ncyBmb3IgRGFtb24uIEkmIzM5O2xsIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgcmVsYXRpb25zaGlwIGJldHdlZW4gdGhpcyBLY29uZmlnIGVudHJ5IGFuZCB0aGUgb3ZlcmFsbCBrZXJuZWwgYnVpbGQgcHJvY2VzcywgYW5kLCBmcm9tIG15IGJhY2tncm91bmQsIGtub3cgdGhlIHBvc3NpYmxlIGltcGxpY2F0aW9ucyBvZiB0aGUgc2V0dGluZ3MgSSBlbmNvdW50ZXIgdGhlcmUuIEl0JiMzOTtzIGEgY2xhc3NpYyBzdGFydGluZyBwb2ludCBmb3IgdW5yYXZlbGluZyB0aGUgY29uZmlndXJhdGlvbiBhbmQgZGVwZW5kZW5jaWVzIG9mIGEga2VybmVsIG1vZHVsZS4gTGV0JiMzOTtzIGdldCB0byBpdC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMSAyMzowMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O21tL2RhbW9uL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiA4MCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAzMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgIDgwOlx0XHRoZWxwXG4gIDgxOlx0XHQgIFRoaXMgYnVpbGRzIHRoZSBEQU1PTiBzeXNmcyBpbnRlcmZhY2UgS3VuaXQgdGVzdCBzdWl0ZS5cbiAgODI6XHRcbiAgODM6XHRcdCAgRm9yIG1vcmUgaW5mb3JtYXRpb24gb24gS1VuaXQgYW5kIHVuaXQgdGVzdHMgaW4gZ2VuZXJhbCwgcGxlYXNlIHJlZmVyXG4gIDg0Olx0XHQgIHRvIHRoZSBLVW5pdCBkb2N1bWVudGF0aW9uLlxuICA4NTpcdFxuICA4NjpcdFx0ICBJZiB1bnN1cmUsIHNheSBOLlxuICA4NzpcdFxuICA4ODpcdGNvbmZpZyBEQU1PTl9SRUNMQUlNXG4gIDg5Olx0XHRib29sIFwmIzM0O0J1aWxkIERBTU9OLWJhc2VkIHJlY2xhaW0gKERBTU9OX1JFQ0xBSU0pXCYjMzQ7XG4gIDkwOlx0XHRkZXBlbmRzIG9uIERBTU9OX1BBRERSXG4gIDkxOlx0XHRoZWxwXG4gIDkyOlx0XHQgIFRoaXMgYnVpbGRzIHRoZSBEQU1PTi1iYXNlZCByZWNsYW1hdGlvbiBzdWJzeXN0ZW0uICBJdCBmaW5kcyBwYWdlc1xuICA5MzpcdFx0ICB0aGF0IG5vdCBhY2Nlc3NlZCBmb3IgYSBsb25nIHRpbWUgKGNvbGQpIHVzaW5nIERBTU9OIGFuZCByZWNsYWltXG4gIDk0Olx0XHQgIHRob3NlLlxuICA5NTpcdFxuICA5NjpcdFx0ICBUaGlzIGlzIHN1Z2dlc3RlZCB0byBiZSB1c2VkIGFzIGEgcHJvYWN0aXZlIGFuZCBsaWdodHdlaWdodFxuICA5NzpcdFx0ICByZWNsYW1hdGlvbiB1bmRlciBsaWdodCBtZW1vcnkgcHJlc3N1cmUsIHdoaWxlIHRoZSB0cmFkaXRpb25hbCBwYWdlXG4gIDk4Olx0XHQgIHNjYW5uaW5nLWJhc2VkIHJlY2xhbWF0aW9uIGlzIHVzZWQgZm9yIGhlYXZ5IHByZXNzdXJlLlxuICA5OTpcdFxuIDEwMDpcdGNvbmZpZyBEQU1PTl9MUlVfU09SVFxuIDEwMTpcdFx0Ym9vbCBcJiMzNDtCdWlsZCBEQU1PTi1iYXNlZCBMUlUtbGlzdHMgc29ydGluZyAoREFNT05fTFJVX1NPUlQpXCYjMzQ7XG4gMTAyOlx0XHRkZXBlbmRzIG9uIERBTU9OX1BBRERSXG4gMTAzOlx0XHRoZWxwXG4gMTA0Olx0XHQgIFRoaXMgYnVpbGRzIHRoZSBEQU1PTi1iYXNlZCBMUlUtbGlzdHMgc29ydGluZyBzdWJzeXN0ZW0uICBJdCB0cmllcyB0b1xuIDEwNTpcdFx0ICBwcm90ZWN0IGZyZXF1ZW50bHkgYWNjZXNzZWQgKGhvdCkgcGFnZXMgd2hpbGUgcmFyZWx5IGFjY2Vzc2VkIChjb2xkKVxuIDEwNjpcdFx0ICBwYWdlcyByZWNsYWltZWQgZmlyc3QgdW5kZXIgbWVtb3J5IHByZXNzdXJlLlxuIDEwNzpcdFxuIDEwODpcdGNvbmZpZyBEQU1PTl9TVEFUXG4gMTA5Olx0XHRib29sIFwmIzM0O0J1aWxkIGRhdGEgYWNjZXNzIG1vbml0b3Jpbmcgc3RhdCAoREFNT05fU1RBVClcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMSAyMzowMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3OTU3CgkJCQkJCQlvdXRwdXQ6IDIyNQoJCQkJCQkJdGhvdWdodHM6IDI3NAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBbmFseXNpcyBvZiB0aGUgREFNT04gQ29uZmlndXJhdGlvbiBDaGFuZ2VzKioKCk9rYXksIHNvIEkgc2VlIHRoYXQgYERBTU9OX1JFQ0xBSU1gIGFuZCBgREFNT05fTFJVX1NPUlRgIGJvdGggaGF2ZSBkZXBlbmRlbmNpZXMgb24gYERBTU9OX1BBRERSYC4gTWFrZXMgc2Vuc2UuIFdlJiMzOTtsbCBuZWVkIHRvIG1ha2Ugc3VyZSBgREFNT05fUEFERFJgIGlzIGluY2x1ZGVkIHRoZW4sIGFuZCBsZXQmIzM5O3MgYWRkIGBEQU1PTl9WQUREUmAgZm9yIGdvb2QgbWVhc3VyZSwganVzdCB0byBiZSB0aG9yb3VnaCBhbmQgY292ZXIgYWxsIHRoZSBiYXNlcy4gVGhpcyBzZWVtcyBsaWtlIGEgcmVhc29uYWJsZSBzZXQgb2YgY29uZmlncyB0byBjb25zaWRlcjoKCmBEQU1PTmAKYERBTU9OX1BBRERSYApgREFNT05fVkFERFJgCmBEQU1PTl9TWVNGU2AKYERBTU9OX1JFQ0xBSU1gCmBEQU1PTl9MUlVfU09SVGAKCk5vdywgbGV0JiMzOTtzIGxvb2sgYXQgdGhlIHN5bWJvbHMgYWZmZWN0ZWQuIFRoZSBwYXRjaCBzZWVtcyB0byBiZSB0b3VjaGluZyBzZXZlcmFsIGtleSBhcmVhczogYGRhbW9uX2NvbW1pdF9jdHhgLCBgZGFtb25fc3RhcnRgLCBgZGFtb25fc2V0X3JlZ2lvbl9zeXN0ZW1fcmFtc19kZWZhdWx0YCwgYGRhbW9uX2xydV9zb3J0X2FwcGx5X3BhcmFtZXRlcnNgLCBgZGFtb25fcmVjbGFpbV9hcHBseV9wYXJhbWV0ZXJzYCwgYGRhbW9uX3N5c2ZzX3NldF9yZWdpb25zYCwgYW5kIGBkYW1vbl9zeXNmc19jb21taXRfaW5wdXRgLiBUaGF0JiMzOTtzIGEgcHJldHR5IHdpZGUgbmV0LCBlbmNvbXBhc3NpbmcgY29udGV4dCBjb21taXRtZW50LCBwYXJhbWV0ZXIgYXBwbGljYXRpb24sIGFuZCB0aGUgc3lzZnMgaW50ZXJmYWNlLgoKVGhlIHBhdGNoIGl0c2VsZiBpcyBhYm91dCBtb2RpZnlpbmcgY29yZSBEQU1PTiBsb2dpYywgc3BlY2lmaWNhbGx5IGNvbmNlcm5pbmcgY29udGV4dCBjb21taXRtZW50LCBwYXJhbWV0ZXIgdmFsaWRhdGlvbiwgYW5kIHN5c2ZzIGlucHV0LiBJIHNlZSBpdCYjMzk7cyByZW1vdmluZyBzb21lIHZhbGlkYXRpb24gY2hlY2tzIGZyb20gc3BlY2lmaWMgZnVuY3Rpb25zLiBUaGlzIHRyaWdnZXJzIGEgcmVkIGZsYWcsIGFzIGl0IG1ha2VzIHRoZSBtb2RpZmllZCBmdW5jdGlvbnMgbW9yZSB2dWxuZXJhYmxlIHRvIGFjY2VwdGluZyBpbnZhbGlkIHBhcmFtZXRlcnMuIFRoYXQgY291bGQgcG90ZW50aWFsbHkgaW50cm9kdWNlIHN1YnRsZSBidWdzIG9yIHVuZXhwZWN0ZWQgYmVoYXZpb3IgZG93biB0aGUgbGluZS4gV2UgcmVhbGx5IG5lZWQgdG8gcGF5IGF0dGVudGlvbiB0byB3aGVyZSB0aG9zZSBjaGVja3MgYXJlIG5vdywgb3IgaWYgdGhleSYjMzk7dmUgYmVlbiBtb3ZlZCB0byBhIGRpZmZlcmVudCBmdW5jdGlvbi4KCkdpdmVuIHRob3NlIGNoYW5nZXMsIHRoZSBtb3N0IGNyaXRpY2FsIHRoaW5nIHRvIGRvIGlzIGZ1enogdGhvc2UgbW9kaWZpZWQgZnVuY3Rpb25zLiBUaGF0IHNob3VsZCBiZSBvdXIgdG9wIHByaW9yaXR5LiBXZSBuZWVkIHRvIGhhbW1lciBvbiB0aGVtIHdpdGggaW52YWxpZCBhbmQgZWRnZS1jYXNlIGlucHV0cyB0byB2ZXJpZnkgc3RhYmlsaXR5LiBXZSBzaG91bGQgY2FsbCB0aGlzICYjMzQ7c2V0LXJlc3VsdHMuJiMzNDsKCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDEgMjM6MDI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0RBTU9OJiMzNDssCiAgICAmIzM0O0RBTU9OX1BBRERSJiMzNDssCiAgICAmIzM0O0RBTU9OX1ZBRERSJiMzNDssCiAgICAmIzM0O0RBTU9OX1NZU0ZTJiMzNDssCiAgICAmIzM0O0RBTU9OX1JFQ0xBSU0mIzM0OywKICAgICYjMzQ7REFNT05fTFJVX1NPUlQmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtkYW1vbl9jb21taXRfY3R4JiMzNDssCiAgICAmIzM0O2RhbW9uX3N0YXJ0JiMzNDssCiAgICAmIzM0O2RhbW9uX3NldF9yZWdpb25fc3lzdGVtX3JhbXNfZGVmYXVsdCYjMzQ7LAogICAgJiMzNDtkYW1vbl9scnVfc29ydF9hcHBseV9wYXJhbWV0ZXJzJiMzNDssCiAgICAmIzM0O2RhbW9uX3JlY2xhaW1fYXBwbHlfcGFyYW1ldGVycyYjMzQ7LAogICAgJiMzNDtkYW1vbl9zeXNmc19zZXRfcmVnaW9ucyYjMzQ7LAogICAgJiMzNDtkYW1vbl9zeXNmc19jb21taXRfaW5wdXQmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgY29yZSBEQU1PTiAoRGF0YSBBY2Nlc3MgTU9OaXRvcikgbG9naWMsIGluY2x1ZGluZyBjb250ZXh0IGNvbW1pdCBoYW5kbGluZywgcGFyYW1ldGVyIHZhbGlkYXRpb24sIGFuZCBzeXNmcyBpbnRlcmZhY2UgaW5wdXRzLiBJdCByZW1vdmVzIHNvbWUgdmFsaWRhdGlvbiBjaGVja3MgZnJvbSBzcGVjaWZpYyBmdW5jdGlvbnMgYW5kIG1vdmVzIHRoZW0gb3IgcmVsaWVzIG9uIG90aGVyIHZhbGlkYXRpb24sIHdoaWNoIGNvdWxkIGludHJvZHVjZSBidWdzIGlmIGludmFsaWQgcGFyYW1ldGVycyBhcmUgcGFzc2VkLiBGdXp6aW5nIHNob3VsZCBmb2N1cyBvbiB0aGUgbW9kaWZpZWQgZnVuY3Rpb25zIHRvIGVuc3VyZSBzdGFiaWxpdHkuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0RBTU9OJiMzNDssCiAgICAmIzM0O0RBTU9OX1BBRERSJiMzNDssCiAgICAmIzM0O0RBTU9OX1ZBRERSJiMzNDssCiAgICAmIzM0O0RBTU9OX1NZU0ZTJiMzNDssCiAgICAmIzM0O0RBTU9OX1JFQ0xBSU0mIzM0OywKICAgICYjMzQ7REFNT05fTFJVX1NPUlQmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtkYW1vbl9jb21taXRfY3R4JiMzNDssCiAgICAmIzM0O2RhbW9uX3N0YXJ0JiMzNDssCiAgICAmIzM0O2RhbW9uX3NldF9yZWdpb25fc3lzdGVtX3JhbXNfZGVmYXVsdCYjMzQ7LAogICAgJiMzNDtkYW1vbl9scnVfc29ydF9hcHBseV9wYXJhbWV0ZXJzJiMzNDssCiAgICAmIzM0O2RhbW9uX3JlY2xhaW1fYXBwbHlfcGFyYW1ldGVycyYjMzQ7LAogICAgJiMzNDtkYW1vbl9zeXNmc19zZXRfcmVnaW9ucyYjMzQ7LAogICAgJiMzNDtkYW1vbl9zeXNmc19jb21taXRfaW5wdXQmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgY29yZSBEQU1PTiAoRGF0YSBBY2Nlc3MgTU9OaXRvcikgbG9naWMsIGluY2x1ZGluZyBjb250ZXh0IGNvbW1pdCBoYW5kbGluZywgcGFyYW1ldGVyIHZhbGlkYXRpb24sIGFuZCBzeXNmcyBpbnRlcmZhY2UgaW5wdXRzLiBJdCByZW1vdmVzIHNvbWUgdmFsaWRhdGlvbiBjaGVja3MgZnJvbSBzcGVjaWZpYyBmdW5jdGlvbnMgYW5kIG1vdmVzIHRoZW0gb3IgcmVsaWVzIG9uIG90aGVyIHZhbGlkYXRpb24sIHdoaWNoIGNvdWxkIGludHJvZHVjZSBidWdzIGlmIGludmFsaWQgcGFyYW1ldGVycyBhcmUgcGFzc2VkLiBGdXp6aW5nIHNob3VsZCBmb2N1cyBvbiB0aGUgbW9kaWZpZWQgZnVuY3Rpb25zIHRvIGVuc3VyZSBzdGFiaWxpdHkuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNy0wMVQyMzowMTo1Ny4yMjQ4OTg0MTJaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNDY0NzA3OTg1NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJEQU1PTlwiLFxuICAgIFwiREFNT05fUEFERFJcIixcbiAgICBcIkRBTU9OX1ZBRERSXCIsXG4gICAgXCJEQU1PTl9TWVNGU1wiLFxuICAgIFwiREFNT05fUkVDTEFJTVwiLFxuICAgIFwiREFNT05fTFJVX1NPUlRcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJkYW1vbl9jb21taXRfY3R4XCIsXG4gICAgXCJkYW1vbl9zdGFydFwiLFxuICAgIFwiZGFtb25fc2V0X3JlZ2lvbl9zeXN0ZW1fcmFtc19kZWZhdWx0XCIsXG4gICAgXCJkYW1vbl9scnVfc29ydF9hcHBseV9wYXJhbWV0ZXJzXCIsXG4gICAgXCJkYW1vbl9yZWNsYWltX2FwcGx5X3BhcmFtZXRlcnNcIixcbiAgICBcImRhbW9uX3N5c2ZzX3NldF9yZWdpb25zXCIsXG4gICAgXCJkYW1vbl9zeXNmc19jb21taXRfaW5wdXRcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBjb3JlIERBTU9OIChEYXRhIEFjY2VzcyBNT05pdG9yKSBsb2dpYywgaW5jbHVkaW5nIGNvbnRleHQgY29tbWl0IGhhbmRsaW5nLCBwYXJhbWV0ZXIgdmFsaWRhdGlvbiwgYW5kIHN5c2ZzIGludGVyZmFjZSBpbnB1dHMuIEl0IHJlbW92ZXMgc29tZSB2YWxpZGF0aW9uIGNoZWNrcyBmcm9tIHNwZWNpZmljIGZ1bmN0aW9ucyBhbmQgbW92ZXMgdGhlbSBvciByZWxpZXMgb24gb3RoZXIgdmFsaWRhdGlvbiwgd2hpY2ggY291bGQgaW50cm9kdWNlIGJ1Z3MgaWYgaW52YWxpZCBwYXJhbWV0ZXJzIGFyZSBwYXNzZWQuIEZ1enppbmcgc2hvdWxkIGZvY3VzIG9uIHRoZSBtb2RpZmllZCBmdW5jdGlvbnMgdG8gZW5zdXJlIHN0YWJpbGl0eS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDFUMjM6MDE6NTcuMjI0OTA0MTUyWiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NDQ0MzgzOTEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCA2Y2JhYmQ4MmRjYjlmYzFmZWRhYTBhZDMwMDJmNzgxMTU3YTkzZmM1XFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBXZWQgSnVsIDEgMjM6MDE6NTUgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9kYW1vbi5oIGIvaW5jbHVkZS9saW51eC9kYW1vbi5oXFxuaW5kZXggY2ZiYmY4YmEyOGY2MzIuLmQwZjYwODU4N2MwODY5IDEwMDY0NFxcbi0tLSBhL2luY2x1ZGUvbGludXgvZGFtb24uaFxcbisrKyBiL2luY2x1ZGUvbGludXgvZGFtb24uaFxcbkBAIC01MSw3ICs1MSw4IEBAIHN0cnVjdCBkYW1vbl9zaXplX3JhbmdlIHtcXG4gICogQGxpc3Q6XFx0XFx0TGlzdCBoZWFkIGZvciBzaWJsaW5ncy5cXG4gICogQGFnZTpcXHRcXHRBZ2Ugb2YgdGhpcyByZWdpb24uXFxuICAqXFxuLSAqIEZvciBhbnkgdXNlIGNhc2UsIEBhciBzaG91bGQgYmUgbm9uLXplcm8gcG9zaXRpdmUgc2l6ZS5cXG4rICogRm9yIGFueSB1c2UgY2FzZSwgQGFyIHNob3VsZCBiZSBub24temVybyBwb3NpdGl2ZSBzaXplLiAgZGFtb25fc2V0X3JlZ2lvbnMoKVxcbisgKiBkb2VzIHRoZSB2YWxpZGF0aW9uLlxcbiAgKlxcbiAgKiBAbnJfYWNjZXNzZXMgaXMgcmVzZXQgdG8gemVybyBmb3IgZXZlcnkgXFx1MDAyNmRhbW9uX2F0dHJzLVxcdTAwM2VhZ2dyX2ludGVydmFsIGFuZCBiZVxcbiAgKiBpbmNyZWFzZWQgZm9yIGV2ZXJ5IFxcdTAwMjZkYW1vbl9hdHRycy1cXHUwMDNlc2FtcGxlX2ludGVydmFsIGlmIGFuIGFjY2VzcyB0byB0aGUgcmVnaW9uXFxuZGlmZiAtLWdpdCBhL21tL2RhbW9uL2NvcmUuYyBiL21tL2RhbW9uL2NvcmUuY1xcbmluZGV4IDlhMDMxMjMyNjljMjhlLi5mMmRlNTc5OWU2ODJmMyAxMDA2NDRcXG4tLS0gYS9tbS9kYW1vbi9jb3JlLmNcXG4rKysgYi9tbS9kYW1vbi9jb3JlLmNcXG5AQCAtMTU1NSwyMCArMTU1NSw3IEBAIHN0YXRpYyBpbnQgZGFtb25fY29tbWl0X3Byb2JlcyhzdHJ1Y3QgZGFtb25fY3R4ICpkc3QsIHN0cnVjdCBkYW1vbl9jdHggKnNyYylcXG4gXFx0cmV0dXJuIDA7XFxuIH1cXG4gXFxuLS8qKlxcbi0gKiBkYW1vbl9jb21taXRfY3R4KCkgLSBDb21taXQgcGFyYW1ldGVycyBvZiBhIERBTU9OIGNvbnRleHQgdG8gYW5vdGhlci5cXG4tICogQGRzdDpcXHRUaGUgY29tbWl0IGRlc3RpbmF0aW9uIERBTU9OIGNvbnRleHQuXFxuLSAqIEBzcmM6XFx0VGhlIGNvbW1pdCBzb3VyY2UgREFNT04gY29udGV4dC5cXG4tICpcXG4tICogVGhpcyBmdW5jdGlvbiBjb3BpZXMgdXNlci1zcGVjaWZpZWQgcGFyYW1ldGVycyBmcm9tIEBzcmMgdG8gQGRzdCBhbmQgdXBkYXRlXFxuLSAqIHRoZSBpbnRlcm5hbCBzdGF0dXMgYW5kIHJlc3VsdHMgYWNjb3JkaW5nbHkuICBVc2VycyBzaG91bGQgdXNlIHRoaXMgZnVuY3Rpb25cXG4tICogZm9yIGNvbnRleHQtbGV2ZWwgcGFyYW1ldGVycyB1cGRhdGUgb2YgcnVubmluZyBjb250ZXh0LCBpbnN0ZWFkIG9mIG1hbnVhbFxcbi0gKiBpbi1wbGFjZSB1cGRhdGVzLlxcbi0gKlxcbi0gKiBUaGlzIGZ1bmN0aW9uIHNob3VsZCBiZSBjYWxsZWQgZnJvbSBwYXJhbWV0ZXJzLXVwZGF0ZSBzYWZlIGNvbnRleHQsIGxpa2VcXG4tICogZGFtb25fY2FsbCgpLlxcbi0gKi9cXG4taW50IGRhbW9uX2NvbW1pdF9jdHgoc3RydWN0IGRhbW9uX2N0eCAqZHN0LCBzdHJ1Y3QgZGFtb25fY3R4ICpzcmMpXFxuK3N0YXRpYyBpbnQgX19kYW1vbl9jb21taXRfY3R4KHN0cnVjdCBkYW1vbl9jdHggKmRzdCwgc3RydWN0IGRhbW9uX2N0eCAqc3JjKVxcbiB7XFxuIFxcdGludCBlcnI7XFxuIFxcdHN0cnVjdCBkYW1vcyAqc2NoZW1lO1xcbkBAIC0xNjIzLDYgKzE2MTAsNTIgQEAgaW50IGRhbW9uX2NvbW1pdF9jdHgoc3RydWN0IGRhbW9uX2N0eCAqZHN0LCBzdHJ1Y3QgZGFtb25fY3R4ICpzcmMpXFxuIFxcdHJldHVybiAwO1xcbiB9XFxuIFxcbitzdGF0aWMgc3RydWN0IGRhbW9uX2N0eCAqZGFtb25fbmV3X3Rlc3RfY3R4KHN0cnVjdCBkYW1vbl9jdHggKmRzdClcXG4re1xcbitcXHRzdHJ1Y3QgZGFtb25fY3R4ICp0ZXN0X2N0eDtcXG4rXFx0aW50IGVycjtcXG4rXFxuK1xcdHRlc3RfY3R4ID0gZGFtb25fbmV3X2N0eCgpO1xcbitcXHRpZiAoIXRlc3RfY3R4KVxcbitcXHRcXHRyZXR1cm4gTlVMTDtcXG4rXFx0ZXJyID0gX19kYW1vbl9jb21taXRfY3R4KHRlc3RfY3R4LCBkc3QpO1xcbitcXHRpZiAoZXJyKSB7XFxuK1xcdFxcdGRhbW9uX2Rlc3Ryb3lfY3R4KHRlc3RfY3R4KTtcXG4rXFx0XFx0cmV0dXJuIE5VTEw7XFxuK1xcdH1cXG4rXFx0cmV0dXJuIHRlc3RfY3R4O1xcbit9XFxuK1xcbisvKipcXG4rICogZGFtb25fY29tbWl0X2N0eCgpIC0gQ29tbWl0IHBhcmFtZXRlcnMgb2YgYSBEQU1PTiBjb250ZXh0IHRvIGFub3RoZXIuXFxuKyAqIEBkc3Q6XFx0VGhlIGNvbW1pdCBkZXN0aW5hdGlvbiBEQU1PTiBjb250ZXh0LlxcbisgKiBAc3JjOlxcdFRoZSBjb21taXQgc291cmNlIERBTU9OIGNvbnRleHQuXFxuKyAqXFxuKyAqIFRoaXMgZnVuY3Rpb24gY29waWVzIHVzZXItc3BlY2lmaWVkIHBhcmFtZXRlcnMgZnJvbSBAc3JjIHRvIEBkc3QgYW5kIHVwZGF0ZVxcbisgKiB0aGUgaW50ZXJuYWwgc3RhdHVzIGFuZCByZXN1bHRzIGFjY29yZGluZ2x5LiAgVXNlcnMgc2hvdWxkIHVzZSB0aGlzIGZ1bmN0aW9uXFxuKyAqIGZvciBjb250ZXh0LWxldmVsIHBhcmFtZXRlcnMgdXBkYXRlIG9mIHJ1bm5pbmcgY29udGV4dCwgaW5zdGVhZCBvZiBtYW51YWxcXG4rICogaW4tcGxhY2UgdXBkYXRlcy5cXG4rICpcXG4rICogVGhpcyBmdW5jdGlvbiBzaG91bGQgYmUgY2FsbGVkIGZyb20gcGFyYW1ldGVycy11cGRhdGUgc2FmZSBjb250ZXh0LCBsaWtlXFxuKyAqIGRhbW9uX2NhbGwoKS5cXG4rICovXFxuK2ludCBkYW1vbl9jb21taXRfY3R4KHN0cnVjdCBkYW1vbl9jdHggKmRzdCwgc3RydWN0IGRhbW9uX2N0eCAqc3JjKVxcbit7XFxuK1xcdHN0cnVjdCBkYW1vbl9jdHggKnRlc3RfY3R4O1xcbitcXHRpbnQgZXJyO1xcbitcXG4rXFx0dGVzdF9jdHggPSBkYW1vbl9uZXdfdGVzdF9jdHgoZHN0KTtcXG4rXFx0aWYgKCF0ZXN0X2N0eClcXG4rXFx0XFx0cmV0dXJuIC1FTk9NRU07XFxuK1xcdGVyciA9IF9fZGFtb25fY29tbWl0X2N0eCh0ZXN0X2N0eCwgZHN0KTtcXG4rXFx0aWYgKGVycilcXG4rXFx0XFx0Z290byBvdXQ7XFxuK1xcdGVyciA9IF9fZGFtb25fY29tbWl0X2N0eChkc3QsIHNyYyk7XFxuK291dDpcXG4rXFx0ZGFtb25fZGVzdHJveV9jdHgodGVzdF9jdHgpO1xcbitcXHRyZXR1cm4gZXJyO1xcbit9XFxuK1xcbiAvKipcXG4gICogZGFtb25fbnJfcnVubmluZ19jdHhzKCkgLSBSZXR1cm4gbnVtYmVyIG9mIGN1cnJlbnRseSBydW5uaW5nIGNvbnRleHRzLlxcbiAgKi9cXG5AQCAtMTcyMyw2ICsxNzU2LDggQEAgc3RhdGljIGludCBfX2RhbW9uX3N0YXJ0KHN0cnVjdCBkYW1vbl9jdHggKmN0eClcXG4gXFx0cmV0dXJuIGVycjtcXG4gfVxcbiBcXG4rc3RhdGljIGludCBfX2RhbW9uX2NvbW1pdF9jdHgoc3RydWN0IGRhbW9uX2N0eCAqZHN0LCBzdHJ1Y3QgZGFtb25fY3R4ICpzcmMpO1xcbitcXG4gLyoqXFxuICAqIGRhbW9uX3N0YXJ0KCkgLSBTdGFydHMgdGhlIG1vbml0b3JpbmdzIGZvciBhIGdpdmVuIGdyb3VwIG9mIGNvbnRleHRzLlxcbiAgKiBAY3R4czpcXHRhbiBhcnJheSBvZiB0aGUgcG9pbnRlcnMgZm9yIGNvbnRleHRzIHRvIHN0YXJ0IG1vbml0b3JpbmdcXG5AQCAtMTc0MCwxMyArMTc3NSwyMiBAQCBzdGF0aWMgaW50IF9fZGFtb25fc3RhcnQoc3RydWN0IGRhbW9uX2N0eCAqY3R4KVxcbiAgKi9cXG4gaW50IGRhbW9uX3N0YXJ0KHN0cnVjdCBkYW1vbl9jdHggKipjdHhzLCBpbnQgbnJfY3R4cywgYm9vbCBleGNsdXNpdmUpXFxuIHtcXG4rXFx0c3RydWN0IGRhbW9uX2N0eCAqdGVzdF9jdHg7XFxuIFxcdGludCBpO1xcbiBcXHRpbnQgZXJyID0gMDtcXG4gXFxuK1xcdHRlc3RfY3R4ID0gZGFtb25fbmV3X2N0eCgpO1xcbitcXHRpZiAoIXRlc3RfY3R4KVxcbitcXHRcXHRyZXR1cm4gLUVOT01FTTtcXG4rXFxuIFxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBucl9jdHhzOyBpKyspIHtcXG4tXFx0XFx0aWYgKCFpc19wb3dlcl9vZl8yKGN0eHNbaV0tXFx1MDAzZW1pbl9yZWdpb25fc3opKVxcbi1cXHRcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4rXFx0XFx0ZXJyID0gX19kYW1vbl9jb21taXRfY3R4KHRlc3RfY3R4LCBjdHhzW2ldKTtcXG4rXFx0XFx0aWYgKGVycikge1xcbitcXHRcXHRcXHRkYW1vbl9kZXN0cm95X2N0eCh0ZXN0X2N0eCk7XFxuK1xcdFxcdFxcdHJldHVybiBlcnI7XFxuK1xcdFxcdH1cXG4gXFx0fVxcbitcXHRkYW1vbl9kZXN0cm95X2N0eCh0ZXN0X2N0eCk7XFxuIFxcbiBcXHRtdXRleF9sb2NrKFxcdTAwMjZkYW1vbl9sb2NrKTtcXG4gXFx0aWYgKChleGNsdXNpdmUgXFx1MDAyNlxcdTAwMjYgbnJfcnVubmluZ19jdHhzKSB8fFxcbkBAIC0zNzM4LDkgKzM3ODIsNiBAQCBpbnQgZGFtb25fc2V0X3JlZ2lvbl9zeXN0ZW1fcmFtc19kZWZhdWx0KHN0cnVjdCBkYW1vbl90YXJnZXQgKnQsXFxuIHtcXG4gXFx0c3RydWN0IGRhbW9uX2FkZHJfcmFuZ2UgYWRkcl9yYW5nZTtcXG4gXFxuLVxcdGlmICgqc3RhcnQgXFx1MDAzZSAqZW5kKVxcbi1cXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4tXFxuIFxcdGlmICghKnN0YXJ0IFxcdTAwMjZcXHUwMDI2ICEqZW5kIFxcdTAwMjZcXHUwMDI2XFxuIFxcdFxcdCFkYW1vbl9maW5kX3N5c3RlbV9yYW1zX3JhbmdlKHN0YXJ0LCBlbmQsIGFkZHJfdW5pdCkpXFxuIFxcdFxcdHJldHVybiAtRUlOVkFMO1xcbmRpZmYgLS1naXQgYS9tbS9kYW1vbi9scnVfc29ydC5jIGIvbW0vZGFtb24vbHJ1X3NvcnQuY1xcbmluZGV4IDMyZjQxNDkxYjcyNmIyLi4yZGQwY2QwZDI2MjczMSAxMDA2NDRcXG4tLS0gYS9tbS9kYW1vbi9scnVfc29ydC5jXFxuKysrIGIvbW0vZGFtb24vbHJ1X3NvcnQuY1xcbkBAIC0yODQsMTEgKzI4NCw2IEBAIHN0YXRpYyBpbnQgZGFtb25fbHJ1X3NvcnRfYXBwbHlfcGFyYW1ldGVycyh2b2lkKVxcbiBcXHRwYXJhbV9jdHgtXFx1MDAzZWFkZHJfdW5pdCA9IGFkZHJfdW5pdDtcXG4gXFx0cGFyYW1fY3R4LVxcdTAwM2VtaW5fcmVnaW9uX3N6ID0gbWF4KERBTU9OX01JTl9SRUdJT05fU1ogLyBhZGRyX3VuaXQsIDEpO1xcbiBcXG4tXFx0aWYgKCFpc19wb3dlcl9vZl8yKHBhcmFtX2N0eC1cXHUwMDNlbWluX3JlZ2lvbl9zeikpIHtcXG4tXFx0XFx0ZXJyID0gLUVJTlZBTDtcXG4tXFx0XFx0Z290byBvdXQ7XFxuLVxcdH1cXG4tXFxuIFxcdGlmICghZGFtb25fbHJ1X3NvcnRfbW9uX2F0dHJzLnNhbXBsZV9pbnRlcnZhbCkge1xcbiBcXHRcXHRlcnIgPSAtRUlOVkFMO1xcbiBcXHRcXHRnb3RvIG91dDtcXG5kaWZmIC0tZ2l0IGEvbW0vZGFtb24vcmVjbGFpbS5jIGIvbW0vZGFtb24vcmVjbGFpbS5jXFxuaW5kZXggMTFiNzBkMGE5YTZmMGEuLjY0NjliMjVjYzM0ZjkyIDEwMDY0NFxcbi0tLSBhL21tL2RhbW9uL3JlY2xhaW0uY1xcbisrKyBiL21tL2RhbW9uL3JlY2xhaW0uY1xcbkBAIC0yMDgsMTEgKzIwOCw2IEBAIHN0YXRpYyBpbnQgZGFtb25fcmVjbGFpbV9hcHBseV9wYXJhbWV0ZXJzKHZvaWQpXFxuIFxcdHBhcmFtX2N0eC1cXHUwMDNlYWRkcl91bml0ID0gYWRkcl91bml0O1xcbiBcXHRwYXJhbV9jdHgtXFx1MDAzZW1pbl9yZWdpb25fc3ogPSBtYXgoREFNT05fTUlOX1JFR0lPTl9TWiAvIGFkZHJfdW5pdCwgMSk7XFxuIFxcbi1cXHRpZiAoIWlzX3Bvd2VyX29mXzIocGFyYW1fY3R4LVxcdTAwM2VtaW5fcmVnaW9uX3N6KSkge1xcbi1cXHRcXHRlcnIgPSAtRUlOVkFMO1xcbi1cXHRcXHRnb3RvIG91dDtcXG4tXFx0fVxcbi1cXG4gXFx0aWYgKCFkYW1vbl9yZWNsYWltX21vbl9hdHRycy5hZ2dyX2ludGVydmFsKSB7XFxuIFxcdFxcdGVyciA9IC1FSU5WQUw7XFxuIFxcdFxcdGdvdG8gb3V0O1xcbmRpZmYgLS1naXQgYS9tbS9kYW1vbi9zeXNmcy5jIGIvbW0vZGFtb24vc3lzZnMuY1xcbmluZGV4IGUzNTI2YTI2M2UyMDVmLi45MzNmZjMwM2RlNWExMiAxMDA2NDRcXG4tLS0gYS9tbS9kYW1vbi9zeXNmcy5jXFxuKysrIGIvbW0vZGFtb24vc3lzZnMuY1xcbkBAIC0xOTY5LDkgKzE5NjksNiBAQCBzdGF0aWMgaW50IGRhbW9uX3N5c2ZzX3NldF9yZWdpb25zKHN0cnVjdCBkYW1vbl90YXJnZXQgKnQsXFxuIFxcdFxcdHN0cnVjdCBkYW1vbl9zeXNmc19yZWdpb24gKnN5c19yZWdpb24gPVxcbiBcXHRcXHRcXHRzeXNmc19yZWdpb25zLVxcdTAwM2VyZWdpb25zX2FycltpXTtcXG4gXFxuLVxcdFxcdGlmIChzeXNfcmVnaW9uLVxcdTAwM2Vhci5zdGFydCBcXHUwMDNlIHN5c19yZWdpb24tXFx1MDAzZWFyLmVuZClcXG4tXFx0XFx0XFx0Z290byBvdXQ7XFxuLVxcbiBcXHRcXHRyYW5nZXNbaV0uc3RhcnQgPSBzeXNfcmVnaW9uLVxcdTAwM2Vhci5zdGFydDtcXG4gXFx0XFx0cmFuZ2VzW2ldLmVuZCA9IHN5c19yZWdpb24tXFx1MDAzZWFyLmVuZDtcXG4gXFx0XFx0aWYgKGkgPT0gMClcXG5AQCAtMjA4MCwyNiArMjA3Nyw2IEBAIHN0YXRpYyBpbnQgZGFtb25fc3lzZnNfYXBwbHlfaW5wdXRzKHN0cnVjdCBkYW1vbl9jdHggKmN0eCxcXG4gc3RhdGljIHN0cnVjdCBkYW1vbl9jdHggKmRhbW9uX3N5c2ZzX2J1aWxkX2N0eChcXG4gXFx0XFx0c3RydWN0IGRhbW9uX3N5c2ZzX2NvbnRleHQgKnN5c19jdHgpO1xcbiBcXG4tLypcXG4tICogUmV0dXJuIGEgbmV3IGRhbW9uX2N0eCBmb3IgdGVzdGluZyBuZXcgcGFyYW1ldGVycyB0byBjb21taXQuXFxuLSAqL1xcbi1zdGF0aWMgc3RydWN0IGRhbW9uX2N0eCAqZGFtb25fc3lzZnNfbmV3X3Rlc3RfY3R4KFxcbi1cXHRcXHRzdHJ1Y3QgZGFtb25fY3R4ICpydW5uaW5nX2N0eClcXG4te1xcbi1cXHRzdHJ1Y3QgZGFtb25fY3R4ICp0ZXN0X2N0eDtcXG4tXFx0aW50IGVycjtcXG4tXFxuLVxcdHRlc3RfY3R4ID0gZGFtb25fbmV3X2N0eCgpO1xcbi1cXHRpZiAoIXRlc3RfY3R4KVxcbi1cXHRcXHRyZXR1cm4gTlVMTDtcXG4tXFx0ZXJyID0gZGFtb25fY29tbWl0X2N0eCh0ZXN0X2N0eCwgcnVubmluZ19jdHgpO1xcbi1cXHRpZiAoZXJyKSB7XFxuLVxcdFxcdGRhbW9uX2Rlc3Ryb3lfY3R4KHRlc3RfY3R4KTtcXG4tXFx0XFx0cmV0dXJuIE5VTEw7XFxuLVxcdH1cXG4tXFx0cmV0dXJuIHRlc3RfY3R4O1xcbi19XFxuLVxcbiAvKlxcbiAgKiBkYW1vbl9zeXNmc19jb21taXRfaW5wdXQoKSAtIENvbW1pdCB1c2VyIGlucHV0cyB0byBhIHJ1bm5pbmcga2RhbW9uZC5cXG4gICogQGtkYW1vbmQ6XFx0VGhlIGtvYmplY3Qgd3JhcHBlciBmb3IgdGhlIGFzc29jaWF0ZWQga2RhbW9uZC5cXG5AQCAtMjEwOSw3ICsyMDg2LDcgQEAgc3RhdGljIHN0cnVjdCBkYW1vbl9jdHggKmRhbW9uX3N5c2ZzX25ld190ZXN0X2N0eChcXG4gc3RhdGljIGludCBkYW1vbl9zeXNmc19jb21taXRfaW5wdXQodm9pZCAqZGF0YSlcXG4ge1xcbiBcXHRzdHJ1Y3QgZGFtb25fc3lzZnNfa2RhbW9uZCAqa2RhbW9uZCA9IGRhdGE7XFxuLVxcdHN0cnVjdCBkYW1vbl9jdHggKnBhcmFtX2N0eCwgKnRlc3RfY3R4O1xcbitcXHRzdHJ1Y3QgZGFtb25fY3R4ICpwYXJhbV9jdHg7XFxuIFxcdGludCBlcnI7XFxuIFxcbiBcXHRpZiAoIWRhbW9uX3N5c2ZzX2tkYW1vbmRfcnVubmluZyhrZGFtb25kKSlcXG5AQCAtMjEyMSwxNyArMjA5OCw3IEBAIHN0YXRpYyBpbnQgZGFtb25fc3lzZnNfY29tbWl0X2lucHV0KHZvaWQgKmRhdGEpXFxuIFxcdHBhcmFtX2N0eCA9IGRhbW9uX3N5c2ZzX2J1aWxkX2N0eChrZGFtb25kLVxcdTAwM2Vjb250ZXh0cy1cXHUwMDNlY29udGV4dHNfYXJyWzBdKTtcXG4gXFx0aWYgKElTX0VSUihwYXJhbV9jdHgpKVxcbiBcXHRcXHRyZXR1cm4gUFRSX0VSUihwYXJhbV9jdHgpO1xcbi1cXHR0ZXN0X2N0eCA9IGRhbW9uX3N5c2ZzX25ld190ZXN0X2N0eChrZGFtb25kLVxcdTAwM2VkYW1vbl9jdHgpO1xcbi1cXHRpZiAoIXRlc3RfY3R4KSB7XFxuLVxcdFxcdGRhbW9uX2Rlc3Ryb3lfY3R4KHBhcmFtX2N0eCk7XFxuLVxcdFxcdHJldHVybiAtRU5PTUVNO1xcbi1cXHR9XFxuLVxcdGVyciA9IGRhbW9uX2NvbW1pdF9jdHgodGVzdF9jdHgsIHBhcmFtX2N0eCk7XFxuLVxcdGlmIChlcnIpXFxuLVxcdFxcdGdvdG8gb3V0O1xcbiBcXHRlcnIgPSBkYW1vbl9jb21taXRfY3R4KGtkYW1vbmQtXFx1MDAzZWRhbW9uX2N0eCwgcGFyYW1fY3R4KTtcXG4tb3V0Olxcbi1cXHRkYW1vbl9kZXN0cm95X2N0eCh0ZXN0X2N0eCk7XFxuIFxcdGRhbW9uX2Rlc3Ryb3lfY3R4KHBhcmFtX2N0eCk7XFxuIFxcdHJldHVybiBlcnI7XFxuIH1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDFUMjM6MDE6NTcuNzcwMjIyMzYzWiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyNDEwMTc0ODA5NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJEQU1PTlwiLFxuICAgIFwiREFNT05fUEFERFJcIixcbiAgICBcIkRBTU9OX1ZBRERSXCIsXG4gICAgXCJEQU1PTl9TWVNGU1wiLFxuICAgIFwiREFNT05fUkVDTEFJTVwiLFxuICAgIFwiREFNT05fTFJVX1NPUlRcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJkYW1vbl9jb21taXRfY3R4XCIsXG4gICAgXCJkYW1vbl9zdGFydFwiLFxuICAgIFwiZGFtb25fc2V0X3JlZ2lvbl9zeXN0ZW1fcmFtc19kZWZhdWx0XCIsXG4gICAgXCJkYW1vbl9scnVfc29ydF9hcHBseV9wYXJhbWV0ZXJzXCIsXG4gICAgXCJkYW1vbl9yZWNsYWltX2FwcGx5X3BhcmFtZXRlcnNcIixcbiAgICBcImRhbW9uX3N5c2ZzX3NldF9yZWdpb25zXCIsXG4gICAgXCJkYW1vbl9zeXNmc19jb21taXRfaW5wdXRcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBjb3JlIERBTU9OIChEYXRhIEFjY2VzcyBNT05pdG9yKSBsb2dpYywgaW5jbHVkaW5nIGNvbnRleHQgY29tbWl0IGhhbmRsaW5nLCBwYXJhbWV0ZXIgdmFsaWRhdGlvbiwgYW5kIHN5c2ZzIGludGVyZmFjZSBpbnB1dHMuIEl0IHJlbW92ZXMgc29tZSB2YWxpZGF0aW9uIGNoZWNrcyBmcm9tIHNwZWNpZmljIGZ1bmN0aW9ucyBhbmQgbW92ZXMgdGhlbSBvciByZWxpZXMgb24gb3RoZXIgdmFsaWRhdGlvbiwgd2hpY2ggY291bGQgaW50cm9kdWNlIGJ1Z3MgaWYgaW52YWxpZCBwYXJhbWV0ZXJzIGFyZSBwYXNzZWQuIEZ1enppbmcgc2hvdWxkIGZvY3VzIG9uIHRoZSBtb2RpZmllZCBmdW5jdGlvbnMgdG8gZW5zdXJlIHN0YWJpbGl0eS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdFxuICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LFxuICAgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCA2Y2JhYmQ4MmRjYjlmYzFmZWRhYTBhZDMwMDJmNzgxMTU3YTkzZmM1XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFdlZCBKdWwgMSAyMzowMTo1NSAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvZGFtb24uaCBiL2luY2x1ZGUvbGludXgvZGFtb24uaFxuaW5kZXggY2ZiYmY4YmEyOGY2MzIuLmQwZjYwODU4N2MwODY5IDEwMDY0NFxuLS0tIGEvaW5jbHVkZS9saW51eC9kYW1vbi5oXG4rKysgYi9pbmNsdWRlL2xpbnV4L2RhbW9uLmhcbkBAIC01MSw3ICs1MSw4IEBAIHN0cnVjdCBkYW1vbl9zaXplX3JhbmdlIHtcbiAgKiBAbGlzdDpcdFx0TGlzdCBoZWFkIGZvciBzaWJsaW5ncy5cbiAgKiBAYWdlOlx0XHRBZ2Ugb2YgdGhpcyByZWdpb24uXG4gICpcbi0gKiBGb3IgYW55IHVzZSBjYXNlLCBAYXIgc2hvdWxkIGJlIG5vbi16ZXJvIHBvc2l0aXZlIHNpemUuXG4rICogRm9yIGFueSB1c2UgY2FzZSwgQGFyIHNob3VsZCBiZSBub24temVybyBwb3NpdGl2ZSBzaXplLiAgZGFtb25fc2V0X3JlZ2lvbnMoKVxuKyAqIGRvZXMgdGhlIHZhbGlkYXRpb24uXG4gICpcbiAgKiBAbnJfYWNjZXNzZXMgaXMgcmVzZXQgdG8gemVybyBmb3IgZXZlcnkgXHUwMDI2ZGFtb25fYXR0cnMtXHUwMDNlYWdncl9pbnRlcnZhbCBhbmQgYmVcbiAgKiBpbmNyZWFzZWQgZm9yIGV2ZXJ5IFx1MDAyNmRhbW9uX2F0dHJzLVx1MDAzZXNhbXBsZV9pbnRlcnZhbCBpZiBhbiBhY2Nlc3MgdG8gdGhlIHJlZ2lvblxuZGlmZiAtLWdpdCBhL21tL2RhbW9uL2NvcmUuYyBiL21tL2RhbW9uL2NvcmUuY1xuaW5kZXggOWEwMzEyMzI2OWMyOGUuLmYyZGU1Nzk5ZTY4MmYzIDEwMDY0NFxuLS0tIGEvbW0vZGFtb24vY29yZS5jXG4rKysgYi9tbS9kYW1vbi9jb3JlLmNcbkBAIC0xNTU1LDIwICsxNTU1LDcgQEAgc3RhdGljIGludCBkYW1vbl9jb21taXRfcHJvYmVzKHN0cnVjdCBkYW1vbl9jdHggKmRzdCwgc3RydWN0IGRhbW9uX2N0eCAqc3JjKVxuIFx0cmV0dXJuIDA7XG4gfVxuIFxuLS8qKlxuLSAqIGRhbW9uX2NvbW1pdF9jdHgoKSAtIENvbW1pdCBwYXJhbWV0ZXJzIG9mIGEgREFNT04gY29udGV4dCB0byBhbm90aGVyLlxuLSAqIEBkc3Q6XHRUaGUgY29tbWl0IGRlc3RpbmF0aW9uIERBTU9OIGNvbnRleHQuXG4tICogQHNyYzpcdFRoZSBjb21taXQgc291cmNlIERBTU9OIGNvbnRleHQuXG4tICpcbi0gKiBUaGlzIGZ1bmN0aW9uIGNvcGllcyB1c2VyLXNwZWNpZmllZCBwYXJhbWV0ZXJzIGZyb20gQHNyYyB0byBAZHN0IGFuZCB1cGRhdGVcbi0gKiB0aGUgaW50ZXJuYWwgc3RhdHVzIGFuZCByZXN1bHRzIGFjY29yZGluZ2x5LiAgVXNlcnMgc2hvdWxkIHVzZSB0aGlzIGZ1bmN0aW9uXG4tICogZm9yIGNvbnRleHQtbGV2ZWwgcGFyYW1ldGVycyB1cGRhdGUgb2YgcnVubmluZyBjb250ZXh0LCBpbnN0ZWFkIG9mIG1hbnVhbFxuLSAqIGluLXBsYWNlIHVwZGF0ZXMuXG4tICpcbi0gKiBUaGlzIGZ1bmN0aW9uIHNob3VsZCBiZSBjYWxsZWQgZnJvbSBwYXJhbWV0ZXJzLXVwZGF0ZSBzYWZlIGNvbnRleHQsIGxpa2Vcbi0gKiBkYW1vbl9jYWxsKCkuXG4tICovXG4taW50IGRhbW9uX2NvbW1pdF9jdHgoc3RydWN0IGRhbW9uX2N0eCAqZHN0LCBzdHJ1Y3QgZGFtb25fY3R4ICpzcmMpXG4rc3RhdGljIGludCBfX2RhbW9uX2NvbW1pdF9jdHgoc3RydWN0IGRhbW9uX2N0eCAqZHN0LCBzdHJ1Y3QgZGFtb25fY3R4ICpzcmMpXG4ge1xuIFx0aW50IGVycjtcbiBcdHN0cnVjdCBkYW1vcyAqc2NoZW1lO1xuQEAgLTE2MjMsNiArMTYxMCw1MiBAQCBpbnQgZGFtb25fY29tbWl0X2N0eChzdHJ1Y3QgZGFtb25fY3R4ICpkc3QsIHN0cnVjdCBkYW1vbl9jdHggKnNyYylcbiBcdHJldHVybiAwO1xuIH1cbiBcbitzdGF0aWMgc3RydWN0IGRhbW9uX2N0eCAqZGFtb25fbmV3X3Rlc3RfY3R4KHN0cnVjdCBkYW1vbl9jdHggKmRzdClcbit7XG4rXHRzdHJ1Y3QgZGFtb25fY3R4ICp0ZXN0X2N0eDtcbitcdGludCBlcnI7XG4rXG4rXHR0ZXN0X2N0eCA9IGRhbW9uX25ld19jdHgoKTtcbitcdGlmICghdGVzdF9jdHgpXG4rXHRcdHJldHVybiBOVUxMO1xuK1x0ZXJyID0gX19kYW1vbl9jb21taXRfY3R4KHRlc3RfY3R4LCBkc3QpO1xuK1x0aWYgKGVycikge1xuK1x0XHRkYW1vbl9kZXN0cm95X2N0eCh0ZXN0X2N0eCk7XG4rXHRcdHJldHVybiBOVUxMO1xuK1x0fVxuK1x0cmV0dXJuIHRlc3RfY3R4O1xuK31cbitcbisvKipcbisgKiBkYW1vbl9jb21taXRfY3R4KCkgLSBDb21taXQgcGFyYW1ldGVycyBvZiBhIERBTU9OIGNvbnRleHQgdG8gYW5vdGhlci5cbisgKiBAZHN0Olx0VGhlIGNvbW1pdCBkZXN0aW5hdGlvbiBEQU1PTiBjb250ZXh0LlxuKyAqIEBzcmM6XHRUaGUgY29tbWl0IHNvdXJjZSBEQU1PTiBjb250ZXh0LlxuKyAqXG4rICogVGhpcyBmdW5jdGlvbiBjb3BpZXMgdXNlci1zcGVjaWZpZWQgcGFyYW1ldGVycyBmcm9tIEBzcmMgdG8gQGRzdCBhbmQgdXBkYXRlXG4rICogdGhlIGludGVybmFsIHN0YXR1cyBhbmQgcmVzdWx0cyBhY2NvcmRpbmdseS4gIFVzZXJzIHNob3VsZCB1c2UgdGhpcyBmdW5jdGlvblxuKyAqIGZvciBjb250ZXh0LWxldmVsIHBhcmFtZXRlcnMgdXBkYXRlIG9mIHJ1bm5pbmcgY29udGV4dCwgaW5zdGVhZCBvZiBtYW51YWxcbisgKiBpbi1wbGFjZSB1cGRhdGVzLlxuKyAqXG4rICogVGhpcyBmdW5jdGlvbiBzaG91bGQgYmUgY2FsbGVkIGZyb20gcGFyYW1ldGVycy11cGRhdGUgc2FmZSBjb250ZXh0LCBsaWtlXG4rICogZGFtb25fY2FsbCgpLlxuKyAqL1xuK2ludCBkYW1vbl9jb21taXRfY3R4KHN0cnVjdCBkYW1vbl9jdHggKmRzdCwgc3RydWN0IGRhbW9uX2N0eCAqc3JjKVxuK3tcbitcdHN0cnVjdCBkYW1vbl9jdHggKnRlc3RfY3R4O1xuK1x0aW50IGVycjtcbitcbitcdHRlc3RfY3R4ID0gZGFtb25fbmV3X3Rlc3RfY3R4KGRzdCk7XG4rXHRpZiAoIXRlc3RfY3R4KVxuK1x0XHRyZXR1cm4gLUVOT01FTTtcbitcdGVyciA9IF9fZGFtb25fY29tbWl0X2N0eCh0ZXN0X2N0eCwgZHN0KTtcbitcdGlmIChlcnIpXG4rXHRcdGdvdG8gb3V0O1xuK1x0ZXJyID0gX19kYW1vbl9jb21taXRfY3R4KGRzdCwgc3JjKTtcbitvdXQ6XG4rXHRkYW1vbl9kZXN0cm95X2N0eCh0ZXN0X2N0eCk7XG4rXHRyZXR1cm4gZXJyO1xuK31cbitcbiAvKipcbiAgKiBkYW1vbl9ucl9ydW5uaW5nX2N0eHMoKSAtIFJldHVybiBudW1iZXIgb2YgY3VycmVudGx5IHJ1bm5pbmcgY29udGV4dHMuXG4gICovXG5AQCAtMTcyMyw2ICsxNzU2LDggQEAgc3RhdGljIGludCBfX2RhbW9uX3N0YXJ0KHN0cnVjdCBkYW1vbl9jdHggKmN0eClcbiBcdHJldHVybiBlcnI7XG4gfVxuIFxuK3N0YXRpYyBpbnQgX19kYW1vbl9jb21taXRfY3R4KHN0cnVjdCBkYW1vbl9jdHggKmRzdCwgc3RydWN0IGRhbW9uX2N0eCAqc3JjKTtcbitcbiAvKipcbiAgKiBkYW1vbl9zdGFydCgpIC0gU3RhcnRzIHRoZSBtb25pdG9yaW5ncyBmb3IgYSBnaXZlbiBncm91cCBvZiBjb250ZXh0cy5cbiAgKiBAY3R4czpcdGFuIGFycmF5IG9mIHRoZSBwb2ludGVycyBmb3IgY29udGV4dHMgdG8gc3RhcnQgbW9uaXRvcmluZ1xuQEAgLTE3NDAsMTMgKzE3NzUsMjIgQEAgc3RhdGljIGludCBfX2RhbW9uX3N0YXJ0KHN0cnVjdCBkYW1vbl9jdHggKmN0eClcbiAgKi9cbiBpbnQgZGFtb25fc3RhcnQoc3RydWN0IGRhbW9uX2N0eCAqKmN0eHMsIGludCBucl9jdHhzLCBib29sIGV4Y2x1c2l2ZSlcbiB7XG4rXHRzdHJ1Y3QgZGFtb25fY3R4ICp0ZXN0X2N0eDtcbiBcdGludCBpO1xuIFx0aW50IGVyciA9IDA7XG4gXG4rXHR0ZXN0X2N0eCA9IGRhbW9uX25ld19jdHgoKTtcbitcdGlmICghdGVzdF9jdHgpXG4rXHRcdHJldHVybiAtRU5PTUVNO1xuK1xuIFx0Zm9yIChpID0gMDsgaSBcdTAwM2MgbnJfY3R4czsgaSsrKSB7XG4tXHRcdGlmICghaXNfcG93ZXJfb2ZfMihjdHhzW2ldLVx1MDAzZW1pbl9yZWdpb25fc3opKVxuLVx0XHRcdHJldHVybiAtRUlOVkFMO1xuK1x0XHRlcnIgPSBfX2RhbW9uX2NvbW1pdF9jdHgodGVzdF9jdHgsIGN0eHNbaV0pO1xuK1x0XHRpZiAoZXJyKSB7XG4rXHRcdFx0ZGFtb25fZGVzdHJveV9jdHgodGVzdF9jdHgpO1xuK1x0XHRcdHJldHVybiBlcnI7XG4rXHRcdH1cbiBcdH1cbitcdGRhbW9uX2Rlc3Ryb3lfY3R4KHRlc3RfY3R4KTtcbiBcbiBcdG11dGV4X2xvY2soXHUwMDI2ZGFtb25fbG9jayk7XG4gXHRpZiAoKGV4Y2x1c2l2ZSBcdTAwMjZcdTAwMjYgbnJfcnVubmluZ19jdHhzKSB8fFxuQEAgLTM3MzgsOSArMzc4Miw2IEBAIGludCBkYW1vbl9zZXRfcmVnaW9uX3N5c3RlbV9yYW1zX2RlZmF1bHQoc3RydWN0IGRhbW9uX3RhcmdldCAqdCxcbiB7XG4gXHRzdHJ1Y3QgZGFtb25fYWRkcl9yYW5nZSBhZGRyX3JhbmdlO1xuIFxuLVx0aWYgKCpzdGFydCBcdTAwM2UgKmVuZClcbi1cdFx0cmV0dXJuIC1FSU5WQUw7XG4tXG4gXHRpZiAoISpzdGFydCBcdTAwMjZcdTAwMjYgISplbmQgXHUwMDI2XHUwMDI2XG4gXHRcdCFkYW1vbl9maW5kX3N5c3RlbV9yYW1zX3JhbmdlKHN0YXJ0LCBlbmQsIGFkZHJfdW5pdCkpXG4gXHRcdHJldHVybiAtRUlOVkFMO1xuZGlmZiAtLWdpdCBhL21tL2RhbW9uL2xydV9zb3J0LmMgYi9tbS9kYW1vbi9scnVfc29ydC5jXG5pbmRleCAzMmY0MTQ5MWI3MjZiMi4uMmRkMGNkMGQyNjI3MzEgMTAwNjQ0XG4tLS0gYS9tbS9kYW1vbi9scnVfc29ydC5jXG4rKysgYi9tbS9kYW1vbi9scnVfc29ydC5jXG5AQCAtMjg0LDExICsyODQsNiBAQCBzdGF0aWMgaW50IGRhbW9uX2xydV9zb3J0X2FwcGx5X3BhcmFtZXRlcnModm9pZClcbiBcdHBhcmFtX2N0eC1cdTAwM2VhZGRyX3VuaXQgPSBhZGRyX3VuaXQ7XG4gXHRwYXJhbV9jdHgtXHUwMDNlbWluX3JlZ2lvbl9zeiA9IG1heChEQU1PTl9NSU5fUkVHSU9OX1NaIC8gYWRkcl91bml0LCAxKTtcbiBcbi1cdGlmICghaXNfcG93ZXJfb2ZfMihwYXJhbV9jdHgtXHUwMDNlbWluX3JlZ2lvbl9zeikpIHtcbi1cdFx0ZXJyID0gLUVJTlZBTDtcbi1cdFx0Z290byBvdXQ7XG4tXHR9XG4tXG4gXHRpZiAoIWRhbW9uX2xydV9zb3J0X21vbl9hdHRycy5zYW1wbGVfaW50ZXJ2YWwpIHtcbiBcdFx0ZXJyID0gLUVJTlZBTDtcbiBcdFx0Z290byBvdXQ7XG5kaWZmIC0tZ2l0IGEvbW0vZGFtb24vcmVjbGFpbS5jIGIvbW0vZGFtb24vcmVjbGFpbS5jXG5pbmRleCAxMWI3MGQwYTlhNmYwYS4uNjQ2OWIyNWNjMzRmOTIgMTAwNjQ0XG4tLS0gYS9tbS9kYW1vbi9yZWNsYWltLmNcbisrKyBiL21tL2RhbW9uL3JlY2xhaW0uY1xuQEAgLTIwOCwxMSArMjA4LDYgQEAgc3RhdGljIGludCBkYW1vbl9yZWNsYWltX2FwcGx5X3BhcmFtZXRlcnModm9pZClcbiBcdHBhcmFtX2N0eC1cdTAwM2VhZGRyX3VuaXQgPSBhZGRyX3VuaXQ7XG4gXHRwYXJhbV9jdHgtXHUwMDNlbWluX3JlZ2lvbl9zeiA9IG1heChEQU1PTl9NSU5fUkVHSU9OX1NaIC8gYWRkcl91bml0LCAxKTtcbiBcbi1cdGlmICghaXNfcG93ZXJfb2ZfMihwYXJhbV9jdHgtXHUwMDNlbWluX3JlZ2lvbl9zeikpIHtcbi1cdFx0ZXJyID0gLUVJTlZBTDtcbi1cdFx0Z290byBvdXQ7XG4tXHR9XG4tXG4gXHRpZiAoIWRhbW9uX3JlY2xhaW1fbW9uX2F0dHJzLmFnZ3JfaW50ZXJ2YWwpIHtcbiBcdFx0ZXJyID0gLUVJTlZBTDtcbiBcdFx0Z290byBvdXQ7XG5kaWZmIC0tZ2l0IGEvbW0vZGFtb24vc3lzZnMuYyBiL21tL2RhbW9uL3N5c2ZzLmNcbmluZGV4IGUzNTI2YTI2M2UyMDVmLi45MzNmZjMwM2RlNWExMiAxMDA2NDRcbi0tLSBhL21tL2RhbW9uL3N5c2ZzLmNcbisrKyBiL21tL2RhbW9uL3N5c2ZzLmNcbkBAIC0xOTY5LDkgKzE5NjksNiBAQCBzdGF0aWMgaW50IGRhbW9uX3N5c2ZzX3NldF9yZWdpb25zKHN0cnVjdCBkYW1vbl90YXJnZXQgKnQsXG4gXHRcdHN0cnVjdCBkYW1vbl9zeXNmc19yZWdpb24gKnN5c19yZWdpb24gPVxuIFx0XHRcdHN5c2ZzX3JlZ2lvbnMtXHUwMDNlcmVnaW9uc19hcnJbaV07XG4gXG4tXHRcdGlmIChzeXNfcmVnaW9uLVx1MDAzZWFyLnN0YXJ0IFx1MDAzZSBzeXNfcmVnaW9uLVx1MDAzZWFyLmVuZClcbi1cdFx0XHRnb3RvIG91dDtcbi1cbiBcdFx0cmFuZ2VzW2ldLnN0YXJ0ID0gc3lzX3JlZ2lvbi1cdTAwM2Vhci5zdGFydDtcbiBcdFx0cmFuZ2VzW2ldLmVuZCA9IHN5c19yZWdpb24tXHUwMDNlYXIuZW5kO1xuIFx0XHRpZiAoaSA9PSAwKVxuQEAgLTIwODAsMjYgKzIwNzcsNiBAQCBzdGF0aWMgaW50IGRhbW9uX3N5c2ZzX2FwcGx5X2lucHV0cyhzdHJ1Y3QgZGFtb25fY3R4ICpjdHgsXG4gc3RhdGljIHN0cnVjdCBkYW1vbl9jdHggKmRhbW9uX3N5c2ZzX2J1aWxkX2N0eChcbiBcdFx0c3RydWN0IGRhbW9uX3N5c2ZzX2NvbnRleHQgKnN5c19jdHgpO1xuIFxuLS8qXG4tICogUmV0dXJuIGEgbmV3IGRhbW9uX2N0eCBmb3IgdGVzdGluZyBuZXcgcGFyYW1ldGVycyB0byBjb21taXQuXG4tICovXG4tc3RhdGljIHN0cnVjdCBkYW1vbl9jdHggKmRhbW9uX3N5c2ZzX25ld190ZXN0X2N0eChcbi1cdFx0c3RydWN0IGRhbW9uX2N0eCAqcnVubmluZ19jdHgpXG4te1xuLVx0c3RydWN0IGRhbW9uX2N0eCAqdGVzdF9jdHg7XG4tXHRpbnQgZXJyO1xuLVxuLVx0dGVzdF9jdHggPSBkYW1vbl9uZXdfY3R4KCk7XG4tXHRpZiAoIXRlc3RfY3R4KVxuLVx0XHRyZXR1cm4gTlVMTDtcbi1cdGVyciA9IGRhbW9uX2NvbW1pdF9jdHgodGVzdF9jdHgsIHJ1bm5pbmdfY3R4KTtcbi1cdGlmIChlcnIpIHtcbi1cdFx0ZGFtb25fZGVzdHJveV9jdHgodGVzdF9jdHgpO1xuLVx0XHRyZXR1cm4gTlVMTDtcbi1cdH1cbi1cdHJldHVybiB0ZXN0X2N0eDtcbi19XG4tXG4gLypcbiAgKiBkYW1vbl9zeXNmc19jb21taXRfaW5wdXQoKSAtIENvbW1pdCB1c2VyIGlucHV0cyB0byBhIHJ1bm5pbmcga2RhbW9uZC5cbiAgKiBAa2RhbW9uZDpcdFRoZSBrb2JqZWN0IHdyYXBwZXIgZm9yIHRoZSBhc3NvY2lhdGVkIGtkYW1vbmQuXG5AQCAtMjEwOSw3ICsyMDg2LDcgQEAgc3RhdGljIHN0cnVjdCBkYW1vbl9jdHggKmRhbW9uX3N5c2ZzX25ld190ZXN0X2N0eChcbiBzdGF0aWMgaW50IGRhbW9uX3N5c2ZzX2NvbW1pdF9pbnB1dCh2b2lkICpkYXRhKVxuIHtcbiBcdHN0cnVjdCBkYW1vbl9zeXNmc19rZGFtb25kICprZGFtb25kID0gZGF0YTtcbi1cdHN0cnVjdCBkYW1vbl9jdHggKnBhcmFtX2N0eCwgKnRlc3RfY3R4O1xuK1x0c3RydWN0IGRhbW9uX2N0eCAqcGFyYW1fY3R4O1xuIFx0aW50IGVycjtcbiBcbiBcdGlmICghZGFtb25fc3lzZnNfa2RhbW9uZF9ydW5uaW5nKGtkYW1vbmQpKVxuQEAgLTIxMjEsMTcgKzIwOTgsNyBAQCBzdGF0aWMgaW50IGRhbW9uX3N5c2ZzX2NvbW1pdF9pbnB1dCh2b2lkICpkYXRhKVxuIFx0cGFyYW1fY3R4ID0gZGFtb25fc3lzZnNfYnVpbGRfY3R4KGtkYW1vbmQtXHUwMDNlY29udGV4dHMtXHUwMDNlY29udGV4dHNfYXJyWzBdKTtcbiBcdGlmIChJU19FUlIocGFyYW1fY3R4KSlcbiBcdFx0cmV0dXJuIFBUUl9FUlIocGFyYW1fY3R4KTtcbi1cdHRlc3RfY3R4ID0gZGFtb25fc3lzZnNfbmV3X3Rlc3RfY3R4KGtkYW1vbmQtXHUwMDNlZGFtb25fY3R4KTtcbi1cdGlmICghdGVzdF9jdHgpIHtcbi1cdFx0ZGFtb25fZGVzdHJveV9jdHgocGFyYW1fY3R4KTtcbi1cdFx0cmV0dXJuIC1FTk9NRU07XG4tXHR9XG4tXHRlcnIgPSBkYW1vbl9jb21taXRfY3R4KHRlc3RfY3R4LCBwYXJhbV9jdHgpO1xuLVx0aWYgKGVycilcbi1cdFx0Z290byBvdXQ7XG4gXHRlcnIgPSBkYW1vbl9jb21taXRfY3R4KGtkYW1vbmQtXHUwMDNlZGFtb25fY3R4LCBwYXJhbV9jdHgpO1xuLW91dDpcbi1cdGRhbW9uX2Rlc3Ryb3lfY3R4KHRlc3RfY3R4KTtcbiBcdGRhbW9uX2Rlc3Ryb3lfY3R4KHBhcmFtX2N0eCk7XG4gXHRyZXR1cm4gZXJyO1xuIH1cbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAxVDIzOjAxOjU3Ljc3MDIyNDExM1oiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjc1OTQ1NDkwMjksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRnV6emluZyBEZWNpc2lvbiBmb3IgREFNT04gUGF0Y2ggU2VyaWVzKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBNeSBpbml0aWFsIGFzc2Vzc21lbnQgaXMgd2hldGhlciB0aGlzIHBhdGNoIHNlcmllcyBpbnRyb2R1Y2VzIGFueSAqZnVuY3Rpb25hbCogY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgbmVjZXNzaXRhdGUgZnV6emluZy4gVGhlIGZhY3QgdGhhdCBpdCB0b3VjaGVzIGBtbS9kYW1vbi8qYCBmaWxlcyBpbW1lZGlhdGVseSBmbGFncyBteSBhdHRlbnRpb24g4oCTIERBTU9OIGlzIGNvcmUgbWVtb3J5IG1hbmFnZW1lbnQsIHNvIGl0J3MgaW5oZXJlbnRseSByZWFjaGFibGUgYW5kIGltcG9ydGFudC5cblxuTG9va2luZyBhdCB0aGUgY29kZSwgaXQgbG9va3MgbGlrZSBpdCBpcyByZWZhY3RvcmluZyBgZGFtb25fY29tbWl0X2N0eGAgdXNpbmcgYF9fZGFtb25fY29tbWl0X2N0eGAgYW5kIGEgbmV3IGBkYW1vbl9uZXdfdGVzdF9jdHhgLiBUaGF0LCBpbiBpdHNlbGYsIGlzIGVub3VnaCB0byBiZSB3b3J0aCBhIGZ1enppbmcgcGFzczsgbmV3IGNvZGUgbWVhbnMgbmV3IGF0dGFjayBzdXJmYWNlLiBJIHNlZSB0aGV5J3ZlIHJlbW92ZWQgYSBidW5jaCBvZiBjaGVja3MgbGlrZSBgaXNfcG93ZXJfb2ZfMmAgZnJvbSBwYXJhbWV0ZXIgdmFsaWRhdGlvbiBpbiBgZGFtb25fbHJ1X3NvcnRfYXBwbHlfcGFyYW1ldGVyc2AsIGBkYW1vbl9yZWNsYWltX2FwcGx5X3BhcmFtZXRlcnNgIGFuZCB0aGUgb3RoZXIgcGxhY2VzLiBUaGF0J3MgKnZlcnkqIGludGVyZXN0aW5nLiBSZW1vdmluZyB0aG9zZSBndWFyZHJhaWxzIGNvdWxkIGV4cG9zZSB2dWxuZXJhYmlsaXRpZXMsIGVzcGVjaWFsbHkgaWYgdGhlIHZhbGlkYXRpb24gaXMgbW92ZWQgZWxzZXdoZXJlIG9yIGltcGxpY2l0bHkgcmVsaWVkIHVwb24uIFRoZSBjb21taXQgbWVzc2FnZSBkb2Vzbid0IGhlbHAgd2l0aCBjb250ZXh0IHRob3VnaCFcblxuVGhlIGNoYW5nZXMgaW4gYGRhbW9uX3NldF9yZWdpb25fc3lzdGVtX3JhbXNfZGVmYXVsdGAgYW5kIGBkYW1vbl9zeXNmc19zZXRfcmVnaW9uc2AgYWxzbyByZW1vdmUgY2hlY2tzLiBHaXZlbiB0aGUgbmF0dXJlIG9mIERBTU9OJ3Mgcm9sZSBpbiBtZW1vcnkgbWFuYWdlbWVudCwgcmVtb3ZpbmcgY2hlY2tzIGlzIGEgYmlnIHJlZCBmbGFnLlxuXG5HaXZlbiB0aGF0IERBTU9OIGlzIGEgY29yZSBtZW1vcnkgbWFuYWdlbWVudCBmZWF0dXJlLCBhbmQgdGhpcyBwYXRjaCBzZXJpZXMgY2hhbmdlcyBmdW5jdGlvbmFsaXR5IGFuZCBwYXJhbWV0ZXIgdmFsaWRhdGlvbiwgdGhpcyBpcyBkZWZpbml0ZWx5IFdvcnRoRnV6emluZz10cnVlLlxuXG5Ob3csIGxldCdzIGlkZW50aWZ5ICp3aGVyZSogdG8gZm9jdXMgdGhlIGZ1enppbmcgZWZmb3J0LiBJJ2xsIG5lZWQgdG8gY29tcGlsZSBhIGxpc3Qgb2YgYWZmZWN0ZWQgZnVuY3Rpb25zOlxuXG4qICAgYGRhbW9uX2NvbW1pdF9jdHhgXG4qICAgYGRhbW9uX25ld190ZXN0X2N0eGAgKG5ldylcbiogICBgX19kYW1vbl9jb21taXRfY3R4YCAobmV3KVxuKiAgIGBkYW1vbl9zdGFydGBcbiogICBgZGFtb25fc2V0X3JlZ2lvbl9zeXN0ZW1fcmFtc19kZWZhdWx0YFxuKiAgIGBkYW1vbl9scnVfc29ydF9hcHBseV9wYXJhbWV0ZXJzYFxuKiAgIGBkYW1vbl9yZWNsYWltX2FwcGx5X3BhcmFtZXRlcnNgXG4qICAgYGRhbW9uX3N5c2ZzX3NldF9yZWdpb25zYFxuKiAgIGBkYW1vbl9zeXNmc19jb21taXRfaW5wdXRgXG5cbk15IG5leHQgc3RlcCB3aWxsIGJlIHRvIHVzZSBgZ3JlcHBlcmAgKG9yIHdoYXRldmVyIHNlYXJjaCB0b29sIEknbSB1c2luZykgdG8gY2hlY2sgdGhlIHJlbGV2YW50IGtlcm5lbCBjb25maWcgb3B0aW9ucyBmb3IgREFNT04uIFRoYXQnbGwgZ3VpZGUgbWUgaW4gdGhlIGZ1enppbmcgc2V0dXAsIGFuZCBoZWxwIG1lIHRhcmdldCBjb25maWd1cmF0aW9ucyB0aGF0IGFyZSBsaWtlbHkgdG8gYmUgdXNlZC5cblxuXG4iLCJJbnB1dFRva2VucyI6NDY2MCwiT3V0cHV0VG9rZW5zIjozMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQ3OSwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAxVDIzOjAyOjA1LjM2NDc3NTA5MloiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMTY2MzM3MDcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIERBTU9OXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm1tL2RhbW9uL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibW0vZGFtb24vS2NvbmZpZz0zPW1lbnUgXFxcIkRhdGEgQWNjZXNzIE1vbml0b3JpbmdcXFwiXFxubW0vZGFtb24vS2NvbmZpZy00LVxcbm1tL2RhbW9uL0tjb25maWc6NTpjb25maWcgREFNT05cXG5tbS9kYW1vbi9LY29uZmlnLTYtXFx0Ym9vbCBcXFwiREFNT046IERhdGEgQWNjZXNzIE1vbml0b3JpbmcgRnJhbWV3b3JrXFxcIlxcbi0tXFxubW0vZGFtb24vS2NvbmZpZy0xNC1cXG5tbS9kYW1vbi9LY29uZmlnOjE1OmNvbmZpZyBEQU1PTl9ERUJVR19TQU5JVFlcXG5tbS9kYW1vbi9LY29uZmlnLTE2LVxcdGJvb2wgXFxcIkNoZWNrIHNhbml0eSBvZiBEQU1PTiBjb2RlXFxcIlxcbi0tXFxubW0vZGFtb24vS2NvbmZpZy0yNS1cXG5tbS9kYW1vbi9LY29uZmlnOjI2OmNvbmZpZyBEQU1PTl9LVU5JVF9URVNUXFxubW0vZGFtb24vS2NvbmZpZy0yNy1cXHRib29sIFxcXCJUZXN0IGZvciBkYW1vblxcXCIgaWYgIUtVTklUX0FMTF9URVNUU1xcbi0tXFxubW0vZGFtb24vS2NvbmZpZy0zNy1cXG5tbS9kYW1vbi9LY29uZmlnOjM4OmNvbmZpZyBEQU1PTl9WQUREUlxcbm1tL2RhbW9uL0tjb25maWctMzktXFx0Ym9vbCBcXFwiRGF0YSBhY2Nlc3MgbW9uaXRvcmluZyBvcGVyYXRpb25zIGZvciB2aXJ0dWFsIGFkZHJlc3Mgc3BhY2VzXFxcIlxcbi0tXFxubW0vZGFtb24vS2NvbmZpZy00Ni1cXG5tbS9kYW1vbi9LY29uZmlnOjQ3OmNvbmZpZyBEQU1PTl9QQUREUlxcbm1tL2RhbW9uL0tjb25maWctNDgtXFx0Ym9vbCBcXFwiRGF0YSBhY2Nlc3MgbW9uaXRvcmluZyBvcGVyYXRpb25zIGZvciB0aGUgcGh5c2ljYWwgYWRkcmVzcyBzcGFjZVxcXCJcXG4tLVxcbm1tL2RhbW9uL0tjb25maWctNTUtXFxubW0vZGFtb24vS2NvbmZpZzo1Njpjb25maWcgREFNT05fVkFERFJfS1VOSVRfVEVTVFxcbm1tL2RhbW9uL0tjb25maWctNTctXFx0Ym9vbCBcXFwiVGVzdCBmb3IgREFNT04gb3BlcmF0aW9uc1xcXCIgaWYgIUtVTklUX0FMTF9URVNUU1xcbi0tXFxubW0vZGFtb24vS2NvbmZpZy02Ny1cXG5tbS9kYW1vbi9LY29uZmlnOjY4OmNvbmZpZyBEQU1PTl9TWVNGU1xcbm1tL2RhbW9uL0tjb25maWctNjktXFx0Ym9vbCBcXFwiREFNT04gc3lzZnMgaW50ZXJmYWNlXFxcIlxcbi0tXFxubW0vZGFtb24vS2NvbmZpZy03NS1cXG5tbS9kYW1vbi9LY29uZmlnOjc2OmNvbmZpZyBEQU1PTl9TWVNGU19LVU5JVF9URVNUXFxubW0vZGFtb24vS2NvbmZpZy03Ny1cXHRib29sIFxcXCJUZXN0IGZvciBkYW1vbiBzeXNmcyBpbnRlcmZhY2VcXFwiIGlmICFLVU5JVF9BTExfVEVTVFNcXG4tLVxcbm1tL2RhbW9uL0tjb25maWctODctXFxubW0vZGFtb24vS2NvbmZpZzo4ODpjb25maWcgREFNT05fUkVDTEFJTVxcbm1tL2RhbW9uL0tjb25maWctODktXFx0Ym9vbCBcXFwiQnVpbGQgREFNT04tYmFzZWQgcmVjbGFpbSAoREFNT05fUkVDTEFJTSlcXFwiXFxuLS1cXG5tbS9kYW1vbi9LY29uZmlnLTk5LVxcbm1tL2RhbW9uL0tjb25maWc6MTAwOmNvbmZpZyBEQU1PTl9MUlVfU09SVFxcbm1tL2RhbW9uL0tjb25maWctMTAxLVxcdGJvb2wgXFxcIkJ1aWxkIERBTU9OLWJhc2VkIExSVS1saXN0cyBzb3J0aW5nIChEQU1PTl9MUlVfU09SVClcXFwiXFxuLS1cXG5tbS9kYW1vbi9LY29uZmlnLTEwNy1cXG5tbS9kYW1vbi9LY29uZmlnOjEwODpjb25maWcgREFNT05fU1RBVFxcbm1tL2RhbW9uL0tjb25maWctMTA5LVxcdGJvb2wgXFxcIkJ1aWxkIGRhdGEgYWNjZXNzIG1vbml0b3Jpbmcgc3RhdCAoREFNT05fU1RBVClcXFwiXFxuLS1cXG5tbS9kYW1vbi9LY29uZmlnLTExNS1cXG5tbS9kYW1vbi9LY29uZmlnOjExNjpjb25maWcgREFNT05fU1RBVF9FTkFCTEVEX0RFRkFVTFRcXG5tbS9kYW1vbi9LY29uZmlnLTExNy1cXHRib29sIFxcXCJFbmFibGUgREFNT05fU1RBVCBieSBkZWZhdWx0XFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wMVQyMzowMjowNS41ODE0MTQ0MzlaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2MzA1ODg5MDA4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEZ1enppbmcgU3RyYXRlZ3kgZm9yIERBTU9OKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhlc2UgREFNT04gY29uZmlndXJhdGlvbnMg4oCTIGBEQU1PTmAsIGBEQU1PTl9TWVNGU2AsIGBEQU1PTl9SRUNMQUlNYCwgYW5kIGBEQU1PTl9MUlVfU09SVGAg4oCTIGFuZCBpdCBsb29rcyBsaWtlIHRoZSByZWxldmFudCBmaWxlcyB0aGF0IGhhdmUgYmVlbiB0b3VjaGVkIGFyZSBgbW0vZGFtb24vY29yZS5jYCwgYG1tL2RhbW9uL2xydV9zb3J0LmNgLCBgbW0vZGFtb24vcmVjbGFpbS5jYCwgYW5kIGBtbS9kYW1vbi9zeXNmcy5jYC4gVGhpcyBzdHJvbmdseSBzdWdnZXN0cyB0aGF0IEkgbmVlZCB0byBlbmFibGUgdGhlc2UgY29uZmlnczogYERBTU9OYCwgYERBTU9OX1NZU0ZTYCwgYERBTU9OX1JFQ0xBSU1gLCBhbmQgYERBTU9OX0xSVV9TT1JUYC5cblxuTm93LCB0aGUgY3J1Y2lhbCBzdGVwIGlzIGlkZW50aWZ5aW5nIHRoZSBrZXkgZnVuY3Rpb25zIGZvciBmdXp6aW5nLiBBZnRlciBhIHF1aWNrIHNjYW4sIEknbSB0aGlua2luZyB0aGUgZm9sbG93aW5nIGFyZSBoaWdoLXZhbHVlIHRhcmdldHM6IGBkYW1vbl9jb21taXRfY3R4YCwgYGRhbW9uX3N0YXJ0YCwgYGRhbW9uX3NldF9yZWdpb25fc3lzdGVtX3JhbXNfZGVmYXVsdGAsIGBkYW1vbl9scnVfc29ydF9hcHBseV9wYXJhbWV0ZXJzYCwgYGRhbW9uX3JlY2xhaW1fYXBwbHlfcGFyYW1ldGVyc2AsIGBkYW1vbl9zeXNmc19zZXRfcmVnaW9uc2AsIGFuZCBgZGFtb25fc3lzZnNfY29tbWl0X2lucHV0YC4gVGhlc2UgbG9vayBsaWtlIHByaW1lIGNhbmRpZGF0ZXMgZm9yIGV4cGxvaXRpbmcgcG90ZW50aWFsIHZ1bG5lcmFiaWxpdGllcy5cblxuQmVmb3JlIEkgY29tbWl0IHRvIHRoaXMgcGxhbiwgdGhvdWdoLCBJIHNob3VsZCBkb3VibGUtY2hlY2sgdGhlIGRlcGVuZGVuY2llcy4gSSBoYXZlIGEgaHVuY2ggdGhhdCBgREFNT05fVkFERFJgIGFuZCBgREFNT05fUEFERFJgICptaWdodCogYmUgcmVxdWlyZWQgaW4gY29uanVuY3Rpb24gd2l0aCBgREFNT05fUkVDTEFJTWAgYW5kIGBEQU1PTl9MUlVfU09SVGAuIEJlc3QgdG8gZ28gYmFjayB0byBgbW0vZGFtb24vS2NvbmZpZ2AgdG8gdmVyaWZ5IGFueSBkZXBlbmRlbmNpZXMgYW5kIG1ha2Ugc3VyZSBJIGhhdmVuJ3QgbWlzc2VkIGFueXRoaW5nLiBJIHdhbnQgdG8gZW5zdXJlIG15IGZ1enppbmcgc2V0dXAgaXMgYXMgY29tcGxldGUgYXMgcG9zc2libGUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjY0NTEsIk91dHB1dFRva2VucyI6MzMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyOTksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDFUMjM6MDI6MTEuODg3MzA1MzQ3WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU0NjI5OTA0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBEQU1PTl9SRUNMQUlNXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm1tL2RhbW9uL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibW0vZGFtb24vS2NvbmZpZz03Nj1jb25maWcgREFNT05fU1lTRlNfS1VOSVRfVEVTVFxcbi0tXFxubW0vZGFtb24vS2NvbmZpZy04Ny1cXG5tbS9kYW1vbi9LY29uZmlnOjg4OmNvbmZpZyBEQU1PTl9SRUNMQUlNXFxubW0vZGFtb24vS2NvbmZpZy04OS1cXHRib29sIFxcXCJCdWlsZCBEQU1PTi1iYXNlZCByZWNsYWltIChEQU1PTl9SRUNMQUlNKVxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDFUMjM6MDI6MTEuOTQxOTQxMDUxWiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mjg5OTkyNjcxNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRha2Ugb24gdGhlIHRob3VnaHQgcHJvY2Vzcywgc3VtbWFyaXplZCBhcyB5b3UgcmVxdWVzdGVkOlxuXG4qKk5hdmlnYXRpbmcgS2VybmVsIENvbmZpZ3VyYXRpb24gZm9yIERhbW9uKipcblxuT2theSwgc28gSSBuZWVkIHRvIGRpdmUgaW50byB0aGUga2VybmVsIGNvbmZpZ3VyYXRpb24gZm9yIHRoZSBgbW0vZGFtb25gIHN1YnN5c3RlbS4gTGV0J3Mgc2VlLi4uIHRoZSBgS2NvbmZpZ2AgZmlsZXMgYXJlIHVzdWFsbHkgdGhlIGJlc3QgcGxhY2UgdG8gc3RhcnQuIEknbSB0aGlua2luZywgYmFzZWQgb24gbXkgZXhwZXJpZW5jZSwgdGhhdCBsaW5lIDg4IGluIHRoYXQgcGFydGljdWxhciBgS2NvbmZpZ2AgZmlsZSAoYG1tL2RhbW9uL0tjb25maWdgKSBpcyBhIGxpa2VseSBwb2ludCBvZiBpbnRlcmVzdC4gSXQncyBvZnRlbiB3aGVyZSBrZXkgZmVhdHVyZXMgb3Igb3B0aW9ucyByZWxhdGVkIHRvIGEgbW9kdWxlIGJlZ2luIHRvIGJlIGRlZmluZWQgb3Igd2hlcmUgdGhlIGNvcmUgY29uZmlndXJhdGlvbiBlbnRyeSBpcyBsb2NhdGVkLiBUaGlzIGNvdWxkIGJlIHdoZXJlIEknbGwgZmluZCB0aGUgcHJpbWFyeSBjb25maWd1cmF0aW9uIHN5bWJvbCBvciByZWxhdGVkIHNldHRpbmdzIGZvciBEYW1vbi4gSSdsbCBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIHJlbGF0aW9uc2hpcCBiZXR3ZWVuIHRoaXMgS2NvbmZpZyBlbnRyeSBhbmQgdGhlIG92ZXJhbGwga2VybmVsIGJ1aWxkIHByb2Nlc3MsIGFuZCwgZnJvbSBteSBiYWNrZ3JvdW5kLCBrbm93IHRoZSBwb3NzaWJsZSBpbXBsaWNhdGlvbnMgb2YgdGhlIHNldHRpbmdzIEkgZW5jb3VudGVyIHRoZXJlLiBJdCdzIGEgY2xhc3NpYyBzdGFydGluZyBwb2ludCBmb3IgdW5yYXZlbGluZyB0aGUgY29uZmlndXJhdGlvbiBhbmQgZGVwZW5kZW5jaWVzIG9mIGEga2VybmVsIG1vZHVsZS4gTGV0J3MgZ2V0IHRvIGl0LlxuXG5cbiIsIklucHV0VG9rZW5zIjo3MjUxLCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDFUMjM6MDI6MTQuODQxODY5NTc4WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODAwOTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwibW0vZGFtb24vS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiA4MCxcbiAgXCJMaW5lQ291bnRcIjogMzBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICA4MDpcXHRcXHRoZWxwXFxuICA4MTpcXHRcXHQgIFRoaXMgYnVpbGRzIHRoZSBEQU1PTiBzeXNmcyBpbnRlcmZhY2UgS3VuaXQgdGVzdCBzdWl0ZS5cXG4gIDgyOlxcdFxcbiAgODM6XFx0XFx0ICBGb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiBLVW5pdCBhbmQgdW5pdCB0ZXN0cyBpbiBnZW5lcmFsLCBwbGVhc2UgcmVmZXJcXG4gIDg0OlxcdFxcdCAgdG8gdGhlIEtVbml0IGRvY3VtZW50YXRpb24uXFxuICA4NTpcXHRcXG4gIDg2OlxcdFxcdCAgSWYgdW5zdXJlLCBzYXkgTi5cXG4gIDg3OlxcdFxcbiAgODg6XFx0Y29uZmlnIERBTU9OX1JFQ0xBSU1cXG4gIDg5OlxcdFxcdGJvb2wgXFxcIkJ1aWxkIERBTU9OLWJhc2VkIHJlY2xhaW0gKERBTU9OX1JFQ0xBSU0pXFxcIlxcbiAgOTA6XFx0XFx0ZGVwZW5kcyBvbiBEQU1PTl9QQUREUlxcbiAgOTE6XFx0XFx0aGVscFxcbiAgOTI6XFx0XFx0ICBUaGlzIGJ1aWxkcyB0aGUgREFNT04tYmFzZWQgcmVjbGFtYXRpb24gc3Vic3lzdGVtLiAgSXQgZmluZHMgcGFnZXNcXG4gIDkzOlxcdFxcdCAgdGhhdCBub3QgYWNjZXNzZWQgZm9yIGEgbG9uZyB0aW1lIChjb2xkKSB1c2luZyBEQU1PTiBhbmQgcmVjbGFpbVxcbiAgOTQ6XFx0XFx0ICB0aG9zZS5cXG4gIDk1OlxcdFxcbiAgOTY6XFx0XFx0ICBUaGlzIGlzIHN1Z2dlc3RlZCB0byBiZSB1c2VkIGFzIGEgcHJvYWN0aXZlIGFuZCBsaWdodHdlaWdodFxcbiAgOTc6XFx0XFx0ICByZWNsYW1hdGlvbiB1bmRlciBsaWdodCBtZW1vcnkgcHJlc3N1cmUsIHdoaWxlIHRoZSB0cmFkaXRpb25hbCBwYWdlXFxuICA5ODpcXHRcXHQgIHNjYW5uaW5nLWJhc2VkIHJlY2xhbWF0aW9uIGlzIHVzZWQgZm9yIGhlYXZ5IHByZXNzdXJlLlxcbiAgOTk6XFx0XFxuIDEwMDpcXHRjb25maWcgREFNT05fTFJVX1NPUlRcXG4gMTAxOlxcdFxcdGJvb2wgXFxcIkJ1aWxkIERBTU9OLWJhc2VkIExSVS1saXN0cyBzb3J0aW5nIChEQU1PTl9MUlVfU09SVClcXFwiXFxuIDEwMjpcXHRcXHRkZXBlbmRzIG9uIERBTU9OX1BBRERSXFxuIDEwMzpcXHRcXHRoZWxwXFxuIDEwNDpcXHRcXHQgIFRoaXMgYnVpbGRzIHRoZSBEQU1PTi1iYXNlZCBMUlUtbGlzdHMgc29ydGluZyBzdWJzeXN0ZW0uICBJdCB0cmllcyB0b1xcbiAxMDU6XFx0XFx0ICBwcm90ZWN0IGZyZXF1ZW50bHkgYWNjZXNzZWQgKGhvdCkgcGFnZXMgd2hpbGUgcmFyZWx5IGFjY2Vzc2VkIChjb2xkKVxcbiAxMDY6XFx0XFx0ICBwYWdlcyByZWNsYWltZWQgZmlyc3QgdW5kZXIgbWVtb3J5IHByZXNzdXJlLlxcbiAxMDc6XFx0XFxuIDEwODpcXHRjb25maWcgREFNT05fU1RBVFxcbiAxMDk6XFx0XFx0Ym9vbCBcXFwiQnVpbGQgZGF0YSBhY2Nlc3MgbW9uaXRvcmluZyBzdGF0IChEQU1PTl9TVEFUKVxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDFUMjM6MDI6MTQuODQxOTUyODc4WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Njg4OTMwOTcyNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBbmFseXNpcyBvZiB0aGUgREFNT04gQ29uZmlndXJhdGlvbiBDaGFuZ2VzKipcblxuT2theSwgc28gSSBzZWUgdGhhdCBgREFNT05fUkVDTEFJTWAgYW5kIGBEQU1PTl9MUlVfU09SVGAgYm90aCBoYXZlIGRlcGVuZGVuY2llcyBvbiBgREFNT05fUEFERFJgLiBNYWtlcyBzZW5zZS4gV2UnbGwgbmVlZCB0byBtYWtlIHN1cmUgYERBTU9OX1BBRERSYCBpcyBpbmNsdWRlZCB0aGVuLCBhbmQgbGV0J3MgYWRkIGBEQU1PTl9WQUREUmAgZm9yIGdvb2QgbWVhc3VyZSwganVzdCB0byBiZSB0aG9yb3VnaCBhbmQgY292ZXIgYWxsIHRoZSBiYXNlcy4gVGhpcyBzZWVtcyBsaWtlIGEgcmVhc29uYWJsZSBzZXQgb2YgY29uZmlncyB0byBjb25zaWRlcjpcblxuYERBTU9OYFxuYERBTU9OX1BBRERSYFxuYERBTU9OX1ZBRERSYFxuYERBTU9OX1NZU0ZTYFxuYERBTU9OX1JFQ0xBSU1gXG5gREFNT05fTFJVX1NPUlRgXG5cbk5vdywgbGV0J3MgbG9vayBhdCB0aGUgc3ltYm9scyBhZmZlY3RlZC4gVGhlIHBhdGNoIHNlZW1zIHRvIGJlIHRvdWNoaW5nIHNldmVyYWwga2V5IGFyZWFzOiBgZGFtb25fY29tbWl0X2N0eGAsIGBkYW1vbl9zdGFydGAsIGBkYW1vbl9zZXRfcmVnaW9uX3N5c3RlbV9yYW1zX2RlZmF1bHRgLCBgZGFtb25fbHJ1X3NvcnRfYXBwbHlfcGFyYW1ldGVyc2AsIGBkYW1vbl9yZWNsYWltX2FwcGx5X3BhcmFtZXRlcnNgLCBgZGFtb25fc3lzZnNfc2V0X3JlZ2lvbnNgLCBhbmQgYGRhbW9uX3N5c2ZzX2NvbW1pdF9pbnB1dGAuIFRoYXQncyBhIHByZXR0eSB3aWRlIG5ldCwgZW5jb21wYXNzaW5nIGNvbnRleHQgY29tbWl0bWVudCwgcGFyYW1ldGVyIGFwcGxpY2F0aW9uLCBhbmQgdGhlIHN5c2ZzIGludGVyZmFjZS5cblxuVGhlIHBhdGNoIGl0c2VsZiBpcyBhYm91dCBtb2RpZnlpbmcgY29yZSBEQU1PTiBsb2dpYywgc3BlY2lmaWNhbGx5IGNvbmNlcm5pbmcgY29udGV4dCBjb21taXRtZW50LCBwYXJhbWV0ZXIgdmFsaWRhdGlvbiwgYW5kIHN5c2ZzIGlucHV0LiBJIHNlZSBpdCdzIHJlbW92aW5nIHNvbWUgdmFsaWRhdGlvbiBjaGVja3MgZnJvbSBzcGVjaWZpYyBmdW5jdGlvbnMuIFRoaXMgdHJpZ2dlcnMgYSByZWQgZmxhZywgYXMgaXQgbWFrZXMgdGhlIG1vZGlmaWVkIGZ1bmN0aW9ucyBtb3JlIHZ1bG5lcmFibGUgdG8gYWNjZXB0aW5nIGludmFsaWQgcGFyYW1ldGVycy4gVGhhdCBjb3VsZCBwb3RlbnRpYWxseSBpbnRyb2R1Y2Ugc3VidGxlIGJ1Z3Mgb3IgdW5leHBlY3RlZCBiZWhhdmlvciBkb3duIHRoZSBsaW5lLiBXZSByZWFsbHkgbmVlZCB0byBwYXkgYXR0ZW50aW9uIHRvIHdoZXJlIHRob3NlIGNoZWNrcyBhcmUgbm93LCBvciBpZiB0aGV5J3ZlIGJlZW4gbW92ZWQgdG8gYSBkaWZmZXJlbnQgZnVuY3Rpb24uXG5cbkdpdmVuIHRob3NlIGNoYW5nZXMsIHRoZSBtb3N0IGNyaXRpY2FsIHRoaW5nIHRvIGRvIGlzIGZ1enogdGhvc2UgbW9kaWZpZWQgZnVuY3Rpb25zLiBUaGF0IHNob3VsZCBiZSBvdXIgdG9wIHByaW9yaXR5LiBXZSBuZWVkIHRvIGhhbW1lciBvbiB0aGVtIHdpdGggaW52YWxpZCBhbmQgZWRnZS1jYXNlIGlucHV0cyB0byB2ZXJpZnkgc3RhYmlsaXR5LiBXZSBzaG91bGQgY2FsbCB0aGlzIFwic2V0LXJlc3VsdHMuXCJcblxuXG4iLCJJbnB1dFRva2VucyI6Nzk1NywiT3V0cHV0VG9rZW5zIjoyMjUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNzQsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wMVQyMzowMjoyMS43MzEyNjQ0MjNaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNDA3MDIxNTUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkRBTU9OXCIsXG4gICAgXCJEQU1PTl9QQUREUlwiLFxuICAgIFwiREFNT05fVkFERFJcIixcbiAgICBcIkRBTU9OX1NZU0ZTXCIsXG4gICAgXCJEQU1PTl9SRUNMQUlNXCIsXG4gICAgXCJEQU1PTl9MUlVfU09SVFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImRhbW9uX2NvbW1pdF9jdHhcIixcbiAgICBcImRhbW9uX3N0YXJ0XCIsXG4gICAgXCJkYW1vbl9zZXRfcmVnaW9uX3N5c3RlbV9yYW1zX2RlZmF1bHRcIixcbiAgICBcImRhbW9uX2xydV9zb3J0X2FwcGx5X3BhcmFtZXRlcnNcIixcbiAgICBcImRhbW9uX3JlY2xhaW1fYXBwbHlfcGFyYW1ldGVyc1wiLFxuICAgIFwiZGFtb25fc3lzZnNfc2V0X3JlZ2lvbnNcIixcbiAgICBcImRhbW9uX3N5c2ZzX2NvbW1pdF9pbnB1dFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIGNvcmUgREFNT04gKERhdGEgQWNjZXNzIE1PTml0b3IpIGxvZ2ljLCBpbmNsdWRpbmcgY29udGV4dCBjb21taXQgaGFuZGxpbmcsIHBhcmFtZXRlciB2YWxpZGF0aW9uLCBhbmQgc3lzZnMgaW50ZXJmYWNlIGlucHV0cy4gSXQgcmVtb3ZlcyBzb21lIHZhbGlkYXRpb24gY2hlY2tzIGZyb20gc3BlY2lmaWMgZnVuY3Rpb25zIGFuZCBtb3ZlcyB0aGVtIG9yIHJlbGllcyBvbiBvdGhlciB2YWxpZGF0aW9uLCB3aGljaCBjb3VsZCBpbnRyb2R1Y2UgYnVncyBpZiBpbnZhbGlkIHBhcmFtZXRlcnMgYXJlIHBhc3NlZC4gRnV6emluZyBzaG91bGQgZm9jdXMgb24gdGhlIG1vZGlmaWVkIGZ1bmN0aW9ucyB0byBlbnN1cmUgc3RhYmlsaXR5LlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkRBTU9OXCIsXG4gICAgXCJEQU1PTl9QQUREUlwiLFxuICAgIFwiREFNT05fVkFERFJcIixcbiAgICBcIkRBTU9OX1NZU0ZTXCIsXG4gICAgXCJEQU1PTl9SRUNMQUlNXCIsXG4gICAgXCJEQU1PTl9MUlVfU09SVFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImRhbW9uX2NvbW1pdF9jdHhcIixcbiAgICBcImRhbW9uX3N0YXJ0XCIsXG4gICAgXCJkYW1vbl9zZXRfcmVnaW9uX3N5c3RlbV9yYW1zX2RlZmF1bHRcIixcbiAgICBcImRhbW9uX2xydV9zb3J0X2FwcGx5X3BhcmFtZXRlcnNcIixcbiAgICBcImRhbW9uX3JlY2xhaW1fYXBwbHlfcGFyYW1ldGVyc1wiLFxuICAgIFwiZGFtb25fc3lzZnNfc2V0X3JlZ2lvbnNcIixcbiAgICBcImRhbW9uX3N5c2ZzX2NvbW1pdF9pbnB1dFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIGNvcmUgREFNT04gKERhdGEgQWNjZXNzIE1PTml0b3IpIGxvZ2ljLCBpbmNsdWRpbmcgY29udGV4dCBjb21taXQgaGFuZGxpbmcsIHBhcmFtZXRlciB2YWxpZGF0aW9uLCBhbmQgc3lzZnMgaW50ZXJmYWNlIGlucHV0cy4gSXQgcmVtb3ZlcyBzb21lIHZhbGlkYXRpb24gY2hlY2tzIGZyb20gc3BlY2lmaWMgZnVuY3Rpb25zIGFuZCBtb3ZlcyB0aGVtIG9yIHJlbGllcyBvbiBvdGhlciB2YWxpZGF0aW9uLCB3aGljaCBjb3VsZCBpbnRyb2R1Y2UgYnVncyBpZiBpbnZhbGlkIHBhcmFtZXRlcnMgYXJlIHBhc3NlZC4gRnV6emluZyBzaG91bGQgZm9jdXMgb24gdGhlIG1vZGlmaWVkIGZ1bmN0aW9ucyB0byBlbnN1cmUgc3RhYmlsaXR5LlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowgrspj[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-01 22:55:51 +0000 UTC FinishedAt: 2026-07-01 23:02:23 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "mm-new", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git", "commit_hash": "ff1cd4bfdfebea913df9682c4a715bca55759ff0", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "DAMON", "DAMON_PADDR", "DAMON_VADDR", "DAMON_SYSFS", "DAMON_RECLAIM", "DAMON_LRU_SORT" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "mm-new", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git", "commit_hash": "ff1cd4bfdfebea913df9682c4a715bca55759ff0", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "DAMON", "DAMON_PADDR", "DAMON_VADDR", "DAMON_SYSFS", "DAMON_RECLAIM", "DAMON_LRU_SORT" ], "series_id": "bd9aa674-b9a5-446a-8f32-5cb7a5a85edd" }, "track": "KASAN", "fuzz": { "focus": null, "focus_symbols": [ "damon_commit_ctx", "damon_start", "damon_set_region_system_rams_default", "damon_lru_sort_apply_parameters", "damon_reclaim_apply_parameters", "damon_sysfs_set_regions", "damon_sysfs_commit_input" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db" ], "skip_cover_check": true, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAxIDIzOjAxPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0RBTU9OJiMzNDssCiAgICAmIzM0O0RBTU9OX1BBRERSJiMzNDssCiAgICAmIzM0O0RBTU9OX1ZBRERSJiMzNDssCiAgICAmIzM0O0RBTU9OX1NZU0ZTJiMzNDssCiAgICAmIzM0O0RBTU9OX1JFQ0xBSU0mIzM0OywKICAgICYjMzQ7REFNT05fTFJVX1NPUlQmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtkYW1vbl9jb21taXRfY3R4JiMzNDssCiAgICAmIzM0O2RhbW9uX3N0YXJ0JiMzNDssCiAgICAmIzM0O2RhbW9uX3NldF9yZWdpb25fc3lzdGVtX3JhbXNfZGVmYXVsdCYjMzQ7LAogICAgJiMzNDtkYW1vbl9scnVfc29ydF9hcHBseV9wYXJhbWV0ZXJzJiMzNDssCiAgICAmIzM0O2RhbW9uX3JlY2xhaW1fYXBwbHlfcGFyYW1ldGVycyYjMzQ7LAogICAgJiMzNDtkYW1vbl9zeXNmc19zZXRfcmVnaW9ucyYjMzQ7LAogICAgJiMzNDtkYW1vbl9zeXNmc19jb21taXRfaW5wdXQmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgY29yZSBEQU1PTiAoRGF0YSBBY2Nlc3MgTU9OaXRvcikgbG9naWMsIGluY2x1ZGluZyBjb250ZXh0IGNvbW1pdCBoYW5kbGluZywgcGFyYW1ldGVyIHZhbGlkYXRpb24sIGFuZCBzeXNmcyBpbnRlcmZhY2UgaW5wdXRzLiBJdCByZW1vdmVzIHNvbWUgdmFsaWRhdGlvbiBjaGVja3MgZnJvbSBzcGVjaWZpYyBmdW5jdGlvbnMgYW5kIG1vdmVzIHRoZW0gb3IgcmVsaWVzIG9uIG90aGVyIHZhbGlkYXRpb24sIHdoaWNoIGNvdWxkIGludHJvZHVjZSBidWdzIGlmIGludmFsaWQgcGFyYW1ldGVycyBhcmUgcGFzc2VkLiBGdXp6aW5nIHNob3VsZCBmb2N1cyBvbiB0aGUgbW9kaWZpZWQgZnVuY3Rpb25zIHRvIGVuc3VyZSBzdGFiaWxpdHkuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDEgMjM6MDE8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCA2Y2JhYmQ4MmRjYjlmYzFmZWRhYTBhZDMwMDJmNzgxMTU3YTkzZmM1XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFdlZCBKdWwgMSAyMzowMTo1NSAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L2RhbW9uLmggYi9pbmNsdWRlL2xpbnV4L2RhbW9uLmhcbmluZGV4IGNmYmJmOGJhMjhmNjMyLi5kMGY2MDg1ODdjMDg2OSAxMDA2NDRcbi0tLSBhL2luY2x1ZGUvbGludXgvZGFtb24uaFxuJiM0MzsmIzQzOyYjNDM7IGIvaW5jbHVkZS9saW51eC9kYW1vbi5oXG5AQCAtNTEsNyAmIzQzOzUxLDggQEAgc3RydWN0IGRhbW9uX3NpemVfcmFuZ2Uge1xuICAqIEBsaXN0Olx0XHRMaXN0IGhlYWQgZm9yIHNpYmxpbmdzLlxuICAqIEBhZ2U6XHRcdEFnZSBvZiB0aGlzIHJlZ2lvbi5cbiAgKlxuLSAqIEZvciBhbnkgdXNlIGNhc2UsIEBhciBzaG91bGQgYmUgbm9uLXplcm8gcG9zaXRpdmUgc2l6ZS5cbiYjNDM7ICogRm9yIGFueSB1c2UgY2FzZSwgQGFyIHNob3VsZCBiZSBub24temVybyBwb3NpdGl2ZSBzaXplLiAgZGFtb25fc2V0X3JlZ2lvbnMoKVxuJiM0MzsgKiBkb2VzIHRoZSB2YWxpZGF0aW9uLlxuICAqXG4gICogQG5yX2FjY2Vzc2VzIGlzIHJlc2V0IHRvIHplcm8gZm9yIGV2ZXJ5IFx1MDAyNmRhbW9uX2F0dHJzLVx1MDAzZWFnZ3JfaW50ZXJ2YWwgYW5kIGJlXG4gICogaW5jcmVhc2VkIGZvciBldmVyeSBcdTAwMjZkYW1vbl9hdHRycy1cdTAwM2VzYW1wbGVfaW50ZXJ2YWwgaWYgYW4gYWNjZXNzIHRvIHRoZSByZWdpb25cbmRpZmYgLS1naXQgYS9tbS9kYW1vbi9jb3JlLmMgYi9tbS9kYW1vbi9jb3JlLmNcbmluZGV4IDlhMDMxMjMyNjljMjhlLi5mMmRlNTc5OWU2ODJmMyAxMDA2NDRcbi0tLSBhL21tL2RhbW9uL2NvcmUuY1xuJiM0MzsmIzQzOyYjNDM7IGIvbW0vZGFtb24vY29yZS5jXG5AQCAtMTU1NSwyMCAmIzQzOzE1NTUsNyBAQCBzdGF0aWMgaW50IGRhbW9uX2NvbW1pdF9wcm9iZXMoc3RydWN0IGRhbW9uX2N0eCAqZHN0LCBzdHJ1Y3QgZGFtb25fY3R4ICpzcmMpXG4gXHRyZXR1cm4gMDtcbiB9XG4gXG4tLyoqXG4tICogZGFtb25fY29tbWl0X2N0eCgpIC0gQ29tbWl0IHBhcmFtZXRlcnMgb2YgYSBEQU1PTiBjb250ZXh0IHRvIGFub3RoZXIuXG4tICogQGRzdDpcdFRoZSBjb21taXQgZGVzdGluYXRpb24gREFNT04gY29udGV4dC5cbi0gKiBAc3JjOlx0VGhlIGNvbW1pdCBzb3VyY2UgREFNT04gY29udGV4dC5cbi0gKlxuLSAqIFRoaXMgZnVuY3Rpb24gY29waWVzIHVzZXItc3BlY2lmaWVkIHBhcmFtZXRlcnMgZnJvbSBAc3JjIHRvIEBkc3QgYW5kIHVwZGF0ZVxuLSAqIHRoZSBpbnRlcm5hbCBzdGF0dXMgYW5kIHJlc3VsdHMgYWNjb3JkaW5nbHkuICBVc2VycyBzaG91bGQgdXNlIHRoaXMgZnVuY3Rpb25cbi0gKiBmb3IgY29udGV4dC1sZXZlbCBwYXJhbWV0ZXJzIHVwZGF0ZSBvZiBydW5uaW5nIGNvbnRleHQsIGluc3RlYWQgb2YgbWFudWFsXG4tICogaW4tcGxhY2UgdXBkYXRlcy5cbi0gKlxuLSAqIFRoaXMgZnVuY3Rpb24gc2hvdWxkIGJlIGNhbGxlZCBmcm9tIHBhcmFtZXRlcnMtdXBkYXRlIHNhZmUgY29udGV4dCwgbGlrZVxuLSAqIGRhbW9uX2NhbGwoKS5cbi0gKi9cbi1pbnQgZGFtb25fY29tbWl0X2N0eChzdHJ1Y3QgZGFtb25fY3R4ICpkc3QsIHN0cnVjdCBkYW1vbl9jdHggKnNyYylcbiYjNDM7c3RhdGljIGludCBfX2RhbW9uX2NvbW1pdF9jdHgoc3RydWN0IGRhbW9uX2N0eCAqZHN0LCBzdHJ1Y3QgZGFtb25fY3R4ICpzcmMpXG4ge1xuIFx0aW50IGVycjtcbiBcdHN0cnVjdCBkYW1vcyAqc2NoZW1lO1xuQEAgLTE2MjMsNiAmIzQzOzE2MTAsNTIgQEAgaW50IGRhbW9uX2NvbW1pdF9jdHgoc3RydWN0IGRhbW9uX2N0eCAqZHN0LCBzdHJ1Y3QgZGFtb25fY3R4ICpzcmMpXG4gXHRyZXR1cm4gMDtcbiB9XG4gXG4mIzQzO3N0YXRpYyBzdHJ1Y3QgZGFtb25fY3R4ICpkYW1vbl9uZXdfdGVzdF9jdHgoc3RydWN0IGRhbW9uX2N0eCAqZHN0KVxuJiM0Mzt7XG4mIzQzO1x0c3RydWN0IGRhbW9uX2N0eCAqdGVzdF9jdHg7XG4mIzQzO1x0aW50IGVycjtcbiYjNDM7XG4mIzQzO1x0dGVzdF9jdHggPSBkYW1vbl9uZXdfY3R4KCk7XG4mIzQzO1x0aWYgKCF0ZXN0X2N0eClcbiYjNDM7XHRcdHJldHVybiBOVUxMO1xuJiM0MztcdGVyciA9IF9fZGFtb25fY29tbWl0X2N0eCh0ZXN0X2N0eCwgZHN0KTtcbiYjNDM7XHRpZiAoZXJyKSB7XG4mIzQzO1x0XHRkYW1vbl9kZXN0cm95X2N0eCh0ZXN0X2N0eCk7XG4mIzQzO1x0XHRyZXR1cm4gTlVMTDtcbiYjNDM7XHR9XG4mIzQzO1x0cmV0dXJuIHRlc3RfY3R4O1xuJiM0Mzt9XG4mIzQzO1xuJiM0MzsvKipcbiYjNDM7ICogZGFtb25fY29tbWl0X2N0eCgpIC0gQ29tbWl0IHBhcmFtZXRlcnMgb2YgYSBEQU1PTiBjb250ZXh0IHRvIGFub3RoZXIuXG4mIzQzOyAqIEBkc3Q6XHRUaGUgY29tbWl0IGRlc3RpbmF0aW9uIERBTU9OIGNvbnRleHQuXG4mIzQzOyAqIEBzcmM6XHRUaGUgY29tbWl0IHNvdXJjZSBEQU1PTiBjb250ZXh0LlxuJiM0MzsgKlxuJiM0MzsgKiBUaGlzIGZ1bmN0aW9uIGNvcGllcyB1c2VyLXNwZWNpZmllZCBwYXJhbWV0ZXJzIGZyb20gQHNyYyB0byBAZHN0IGFuZCB1cGRhdGVcbiYjNDM7ICogdGhlIGludGVybmFsIHN0YXR1cyBhbmQgcmVzdWx0cyBhY2NvcmRpbmdseS4gIFVzZXJzIHNob3VsZCB1c2UgdGhpcyBmdW5jdGlvblxuJiM0MzsgKiBmb3IgY29udGV4dC1sZXZlbCBwYXJhbWV0ZXJzIHVwZGF0ZSBvZiBydW5uaW5nIGNvbnRleHQsIGluc3RlYWQgb2YgbWFudWFsXG4mIzQzOyAqIGluLXBsYWNlIHVwZGF0ZXMuXG4mIzQzOyAqXG4mIzQzOyAqIFRoaXMgZnVuY3Rpb24gc2hvdWxkIGJlIGNhbGxlZCBmcm9tIHBhcmFtZXRlcnMtdXBkYXRlIHNhZmUgY29udGV4dCwgbGlrZVxuJiM0MzsgKiBkYW1vbl9jYWxsKCkuXG4mIzQzOyAqL1xuJiM0MztpbnQgZGFtb25fY29tbWl0X2N0eChzdHJ1Y3QgZGFtb25fY3R4ICpkc3QsIHN0cnVjdCBkYW1vbl9jdHggKnNyYylcbiYjNDM7e1xuJiM0MztcdHN0cnVjdCBkYW1vbl9jdHggKnRlc3RfY3R4O1xuJiM0MztcdGludCBlcnI7XG4mIzQzO1xuJiM0MztcdHRlc3RfY3R4ID0gZGFtb25fbmV3X3Rlc3RfY3R4KGRzdCk7XG4mIzQzO1x0aWYgKCF0ZXN0X2N0eClcbiYjNDM7XHRcdHJldHVybiAtRU5PTUVNO1xuJiM0MztcdGVyciA9IF9fZGFtb25fY29tbWl0X2N0eCh0ZXN0X2N0eCwgZHN0KTtcbiYjNDM7XHRpZiAoZXJyKVxuJiM0MztcdFx0Z290byBvdXQ7XG4mIzQzO1x0ZXJyID0gX19kYW1vbl9jb21taXRfY3R4KGRzdCwgc3JjKTtcbiYjNDM7b3V0OlxuJiM0MztcdGRhbW9uX2Rlc3Ryb3lfY3R4KHRlc3RfY3R4KTtcbiYjNDM7XHRyZXR1cm4gZXJyO1xuJiM0Mzt9XG4mIzQzO1xuIC8qKlxuICAqIGRhbW9uX25yX3J1bm5pbmdfY3R4cygpIC0gUmV0dXJuIG51bWJlciBvZiBjdXJyZW50bHkgcnVubmluZyBjb250ZXh0cy5cbiAgKi9cbkBAIC0xNzIzLDYgJiM0MzsxNzU2LDggQEAgc3RhdGljIGludCBfX2RhbW9uX3N0YXJ0KHN0cnVjdCBkYW1vbl9jdHggKmN0eClcbiBcdHJldHVybiBlcnI7XG4gfVxuIFxuJiM0MztzdGF0aWMgaW50IF9fZGFtb25fY29tbWl0X2N0eChzdHJ1Y3QgZGFtb25fY3R4ICpkc3QsIHN0cnVjdCBkYW1vbl9jdHggKnNyYyk7XG4mIzQzO1xuIC8qKlxuICAqIGRhbW9uX3N0YXJ0KCkgLSBTdGFydHMgdGhlIG1vbml0b3JpbmdzIGZvciBhIGdpdmVuIGdyb3VwIG9mIGNvbnRleHRzLlxuICAqIEBjdHhzOlx0YW4gYXJyYXkgb2YgdGhlIHBvaW50ZXJzIGZvciBjb250ZXh0cyB0byBzdGFydCBtb25pdG9yaW5nXG5AQCAtMTc0MCwxMyAmIzQzOzE3NzUsMjIgQEAgc3RhdGljIGludCBfX2RhbW9uX3N0YXJ0KHN0cnVjdCBkYW1vbl9jdHggKmN0eClcbiAgKi9cbiBpbnQgZGFtb25fc3RhcnQoc3RydWN0IGRhbW9uX2N0eCAqKmN0eHMsIGludCBucl9jdHhzLCBib29sIGV4Y2x1c2l2ZSlcbiB7XG4mIzQzO1x0c3RydWN0IGRhbW9uX2N0eCAqdGVzdF9jdHg7XG4gXHRpbnQgaTtcbiBcdGludCBlcnIgPSAwO1xuIFxuJiM0MztcdHRlc3RfY3R4ID0gZGFtb25fbmV3X2N0eCgpO1xuJiM0MztcdGlmICghdGVzdF9jdHgpXG4mIzQzO1x0XHRyZXR1cm4gLUVOT01FTTtcbiYjNDM7XG4gXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBucl9jdHhzOyBpJiM0MzsmIzQzOykge1xuLVx0XHRpZiAoIWlzX3Bvd2VyX29mXzIoY3R4c1tpXS1cdTAwM2VtaW5fcmVnaW9uX3N6KSlcbi1cdFx0XHRyZXR1cm4gLUVJTlZBTDtcbiYjNDM7XHRcdGVyciA9IF9fZGFtb25fY29tbWl0X2N0eCh0ZXN0X2N0eCwgY3R4c1tpXSk7XG4mIzQzO1x0XHRpZiAoZXJyKSB7XG4mIzQzO1x0XHRcdGRhbW9uX2Rlc3Ryb3lfY3R4KHRlc3RfY3R4KTtcbiYjNDM7XHRcdFx0cmV0dXJuIGVycjtcbiYjNDM7XHRcdH1cbiBcdH1cbiYjNDM7XHRkYW1vbl9kZXN0cm95X2N0eCh0ZXN0X2N0eCk7XG4gXG4gXHRtdXRleF9sb2NrKFx1MDAyNmRhbW9uX2xvY2spO1xuIFx0aWYgKChleGNsdXNpdmUgXHUwMDI2XHUwMDI2IG5yX3J1bm5pbmdfY3R4cykgfHxcbkBAIC0zNzM4LDkgJiM0MzszNzgyLDYgQEAgaW50IGRhbW9uX3NldF9yZWdpb25fc3lzdGVtX3JhbXNfZGVmYXVsdChzdHJ1Y3QgZGFtb25fdGFyZ2V0ICp0LFxuIHtcbiBcdHN0cnVjdCBkYW1vbl9hZGRyX3JhbmdlIGFkZHJfcmFuZ2U7XG4gXG4tXHRpZiAoKnN0YXJ0IFx1MDAzZSAqZW5kKVxuLVx0XHRyZXR1cm4gLUVJTlZBTDtcbi1cbiBcdGlmICghKnN0YXJ0IFx1MDAyNlx1MDAyNiAhKmVuZCBcdTAwMjZcdTAwMjZcbiBcdFx0IWRhbW9uX2ZpbmRfc3lzdGVtX3JhbXNfcmFuZ2Uoc3RhcnQsIGVuZCwgYWRkcl91bml0KSlcbiBcdFx0cmV0dXJuIC1FSU5WQUw7XG5kaWZmIC0tZ2l0IGEvbW0vZGFtb24vbHJ1X3NvcnQuYyBiL21tL2RhbW9uL2xydV9zb3J0LmNcbmluZGV4IDMyZjQxNDkxYjcyNmIyLi4yZGQwY2QwZDI2MjczMSAxMDA2NDRcbi0tLSBhL21tL2RhbW9uL2xydV9zb3J0LmNcbiYjNDM7JiM0MzsmIzQzOyBiL21tL2RhbW9uL2xydV9zb3J0LmNcbkBAIC0yODQsMTEgJiM0MzsyODQsNiBAQCBzdGF0aWMgaW50IGRhbW9uX2xydV9zb3J0X2FwcGx5X3BhcmFtZXRlcnModm9pZClcbiBcdHBhcmFtX2N0eC1cdTAwM2VhZGRyX3VuaXQgPSBhZGRyX3VuaXQ7XG4gXHRwYXJhbV9jdHgtXHUwMDNlbWluX3JlZ2lvbl9zeiA9IG1heChEQU1PTl9NSU5fUkVHSU9OX1NaIC8gYWRkcl91bml0LCAxKTtcbiBcbi1cdGlmICghaXNfcG93ZXJfb2ZfMihwYXJhbV9jdHgtXHUwMDNlbWluX3JlZ2lvbl9zeikpIHtcbi1cdFx0ZXJyID0gLUVJTlZBTDtcbi1cdFx0Z290byBvdXQ7XG4tXHR9XG4tXG4gXHRpZiAoIWRhbW9uX2xydV9zb3J0X21vbl9hdHRycy5zYW1wbGVfaW50ZXJ2YWwpIHtcbiBcdFx0ZXJyID0gLUVJTlZBTDtcbiBcdFx0Z290byBvdXQ7XG5kaWZmIC0tZ2l0IGEvbW0vZGFtb24vcmVjbGFpbS5jIGIvbW0vZGFtb24vcmVjbGFpbS5jXG5pbmRleCAxMWI3MGQwYTlhNmYwYS4uNjQ2OWIyNWNjMzRmOTIgMTAwNjQ0XG4tLS0gYS9tbS9kYW1vbi9yZWNsYWltLmNcbiYjNDM7JiM0MzsmIzQzOyBiL21tL2RhbW9uL3JlY2xhaW0uY1xuQEAgLTIwOCwxMSAmIzQzOzIwOCw2IEBAIHN0YXRpYyBpbnQgZGFtb25fcmVjbGFpbV9hcHBseV9wYXJhbWV0ZXJzKHZvaWQpXG4gXHRwYXJhbV9jdHgtXHUwMDNlYWRkcl91bml0ID0gYWRkcl91bml0O1xuIFx0cGFyYW1fY3R4LVx1MDAzZW1pbl9yZWdpb25fc3ogPSBtYXgoREFNT05fTUlOX1JFR0lPTl9TWiAvIGFkZHJfdW5pdCwgMSk7XG4gXG4tXHRpZiAoIWlzX3Bvd2VyX29mXzIocGFyYW1fY3R4LVx1MDAzZW1pbl9yZWdpb25fc3opKSB7XG4tXHRcdGVyciA9IC1FSU5WQUw7XG4tXHRcdGdvdG8gb3V0O1xuLVx0fVxuLVxuIFx0aWYgKCFkYW1vbl9yZWNsYWltX21vbl9hdHRycy5hZ2dyX2ludGVydmFsKSB7XG4gXHRcdGVyciA9IC1FSU5WQUw7XG4gXHRcdGdvdG8gb3V0O1xuZGlmZiAtLWdpdCBhL21tL2RhbW9uL3N5c2ZzLmMgYi9tbS9kYW1vbi9zeXNmcy5jXG5pbmRleCBlMzUyNmEyNjNlMjA1Zi4uOTMzZmYzMDNkZTVhMTIgMTAwNjQ0XG4tLS0gYS9tbS9kYW1vbi9zeXNmcy5jXG4mIzQzOyYjNDM7JiM0MzsgYi9tbS9kYW1vbi9zeXNmcy5jXG5AQCAtMTk2OSw5ICYjNDM7MTk2OSw2IEBAIHN0YXRpYyBpbnQgZGFtb25fc3lzZnNfc2V0X3JlZ2lvbnMoc3RydWN0IGRhbW9uX3RhcmdldCAqdCxcbiBcdFx0c3RydWN0IGRhbW9uX3N5c2ZzX3JlZ2lvbiAqc3lzX3JlZ2lvbiA9XG4gXHRcdFx0c3lzZnNfcmVnaW9ucy1cdTAwM2VyZWdpb25zX2FycltpXTtcbiBcbi1cdFx0aWYgKHN5c19yZWdpb24tXHUwMDNlYXIuc3RhcnQgXHUwMDNlIHN5c19yZWdpb24tXHUwMDNlYXIuZW5kKVxuLVx0XHRcdGdvdG8gb3V0O1xuLVxuIFx0XHRyYW5nZXNbaV0uc3RhcnQgPSBzeXNfcmVnaW9uLVx1MDAzZWFyLnN0YXJ0O1xuIFx0XHRyYW5nZXNbaV0uZW5kID0gc3lzX3JlZ2lvbi1cdTAwM2Vhci5lbmQ7XG4gXHRcdGlmIChpID09IDApXG5AQCAtMjA4MCwyNiAmIzQzOzIwNzcsNiBAQCBzdGF0aWMgaW50IGRhbW9uX3N5c2ZzX2FwcGx5X2lucHV0cyhzdHJ1Y3QgZGFtb25fY3R4ICpjdHgsXG4gc3RhdGljIHN0cnVjdCBkYW1vbl9jdHggKmRhbW9uX3N5c2ZzX2J1aWxkX2N0eChcbiBcdFx0c3RydWN0IGRhbW9uX3N5c2ZzX2NvbnRleHQgKnN5c19jdHgpO1xuIFxuLS8qXG4tICogUmV0dXJuIGEgbmV3IGRhbW9uX2N0eCBmb3IgdGVzdGluZyBuZXcgcGFyYW1ldGVycyB0byBjb21taXQuXG4tICovXG4tc3RhdGljIHN0cnVjdCBkYW1vbl9jdHggKmRhbW9uX3N5c2ZzX25ld190ZXN0X2N0eChcbi1cdFx0c3RydWN0IGRhbW9uX2N0eCAqcnVubmluZ19jdHgpXG4te1xuLVx0c3RydWN0IGRhbW9uX2N0eCAqdGVzdF9jdHg7XG4tXHRpbnQgZXJyO1xuLVxuLVx0dGVzdF9jdHggPSBkYW1vbl9uZXdfY3R4KCk7XG4tXHRpZiAoIXRlc3RfY3R4KVxuLVx0XHRyZXR1cm4gTlVMTDtcbi1cdGVyciA9IGRhbW9uX2NvbW1pdF9jdHgodGVzdF9jdHgsIHJ1bm5pbmdfY3R4KTtcbi1cdGlmIChlcnIpIHtcbi1cdFx0ZGFtb25fZGVzdHJveV9jdHgodGVzdF9jdHgpO1xuLVx0XHRyZXR1cm4gTlVMTDtcbi1cdH1cbi1cdHJldHVybiB0ZXN0X2N0eDtcbi19XG4tXG4gLypcbiAgKiBkYW1vbl9zeXNmc19jb21taXRfaW5wdXQoKSAtIENvbW1pdCB1c2VyIGlucHV0cyB0byBhIHJ1bm5pbmcga2RhbW9uZC5cbiAgKiBAa2RhbW9uZDpcdFRoZSBrb2JqZWN0IHdyYXBwZXIgZm9yIHRoZSBhc3NvY2lhdGVkIGtkYW1vbmQuXG5AQCAtMjEwOSw3ICYjNDM7MjA4Niw3IEBAIHN0YXRpYyBzdHJ1Y3QgZGFtb25fY3R4ICpkYW1vbl9zeXNmc19uZXdfdGVzdF9jdHgoXG4gc3RhdGljIGludCBkYW1vbl9zeXNmc19jb21taXRfaW5wdXQodm9pZCAqZGF0YSlcbiB7XG4gXHRzdHJ1Y3QgZGFtb25fc3lzZnNfa2RhbW9uZCAqa2RhbW9uZCA9IGRhdGE7XG4tXHRzdHJ1Y3QgZGFtb25fY3R4ICpwYXJhbV9jdHgsICp0ZXN0X2N0eDtcbiYjNDM7XHRzdHJ1Y3QgZGFtb25fY3R4ICpwYXJhbV9jdHg7XG4gXHRpbnQgZXJyO1xuIFxuIFx0aWYgKCFkYW1vbl9zeXNmc19rZGFtb25kX3J1bm5pbmcoa2RhbW9uZCkpXG5AQCAtMjEyMSwxNyAmIzQzOzIwOTgsNyBAQCBzdGF0aWMgaW50IGRhbW9uX3N5c2ZzX2NvbW1pdF9pbnB1dCh2b2lkICpkYXRhKVxuIFx0cGFyYW1fY3R4ID0gZGFtb25fc3lzZnNfYnVpbGRfY3R4KGtkYW1vbmQtXHUwMDNlY29udGV4dHMtXHUwMDNlY29udGV4dHNfYXJyWzBdKTtcbiBcdGlmIChJU19FUlIocGFyYW1fY3R4KSlcbiBcdFx0cmV0dXJuIFBUUl9FUlIocGFyYW1fY3R4KTtcbi1cdHRlc3RfY3R4ID0gZGFtb25fc3lzZnNfbmV3X3Rlc3RfY3R4KGtkYW1vbmQtXHUwMDNlZGFtb25fY3R4KTtcbi1cdGlmICghdGVzdF9jdHgpIHtcbi1cdFx0ZGFtb25fZGVzdHJveV9jdHgocGFyYW1fY3R4KTtcbi1cdFx0cmV0dXJuIC1FTk9NRU07XG4tXHR9XG4tXHRlcnIgPSBkYW1vbl9jb21taXRfY3R4KHRlc3RfY3R4LCBwYXJhbV9jdHgpO1xuLVx0aWYgKGVycilcbi1cdFx0Z290byBvdXQ7XG4gXHRlcnIgPSBkYW1vbl9jb21taXRfY3R4KGtkYW1vbmQtXHUwMDNlZGFtb25fY3R4LCBwYXJhbV9jdHgpO1xuLW91dDpcbi1cdGRhbW9uX2Rlc3Ryb3lfY3R4KHRlc3RfY3R4KTtcbiBcdGRhbW9uX2Rlc3Ryb3lfY3R4KHBhcmFtX2N0eCk7XG4gXHRyZXR1cm4gZXJyO1xuIH1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMSAyMzowMTwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtEQU1PTiYjMzQ7LAogICAgJiMzNDtEQU1PTl9QQUREUiYjMzQ7LAogICAgJiMzNDtEQU1PTl9WQUREUiYjMzQ7LAogICAgJiMzNDtEQU1PTl9TWVNGUyYjMzQ7LAogICAgJiMzNDtEQU1PTl9SRUNMQUlNJiMzNDssCiAgICAmIzM0O0RBTU9OX0xSVV9TT1JUJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7ZGFtb25fY29tbWl0X2N0eCYjMzQ7LAogICAgJiMzNDtkYW1vbl9zdGFydCYjMzQ7LAogICAgJiMzNDtkYW1vbl9zZXRfcmVnaW9uX3N5c3RlbV9yYW1zX2RlZmF1bHQmIzM0OywKICAgICYjMzQ7ZGFtb25fbHJ1X3NvcnRfYXBwbHlfcGFyYW1ldGVycyYjMzQ7LAogICAgJiMzNDtkYW1vbl9yZWNsYWltX2FwcGx5X3BhcmFtZXRlcnMmIzM0OywKICAgICYjMzQ7ZGFtb25fc3lzZnNfc2V0X3JlZ2lvbnMmIzM0OywKICAgICYjMzQ7ZGFtb25fc3lzZnNfY29tbWl0X2lucHV0JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIGNvcmUgREFNT04gKERhdGEgQWNjZXNzIE1PTml0b3IpIGxvZ2ljLCBpbmNsdWRpbmcgY29udGV4dCBjb21taXQgaGFuZGxpbmcsIHBhcmFtZXRlciB2YWxpZGF0aW9uLCBhbmQgc3lzZnMgaW50ZXJmYWNlIGlucHV0cy4gSXQgcmVtb3ZlcyBzb21lIHZhbGlkYXRpb24gY2hlY2tzIGZyb20gc3BlY2lmaWMgZnVuY3Rpb25zIGFuZCBtb3ZlcyB0aGVtIG9yIHJlbGllcyBvbiBvdGhlciB2YWxpZGF0aW9uLCB3aGljaCBjb3VsZCBpbnRyb2R1Y2UgYnVncyBpZiBpbnZhbGlkIHBhcmFtZXRlcnMgYXJlIHBhc3NlZC4gRnV6emluZyBzaG91bGQgZm9jdXMgb24gdGhlIG1vZGlmaWVkIGZ1bmN0aW9ucyB0byBlbnN1cmUgc3RhYmlsaXR5LiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdAogICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksCiAgIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCA2Y2JhYmQ4MmRjYjlmYzFmZWRhYTBhZDMwMDJmNzgxMTU3YTkzZmM1CkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFdlZCBKdWwgMSAyMzowMTo1NSAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvZGFtb24uaCBiL2luY2x1ZGUvbGludXgvZGFtb24uaAppbmRleCBjZmJiZjhiYTI4ZjYzMi4uZDBmNjA4NTg3YzA4NjkgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbGludXgvZGFtb24uaAomIzQzOyYjNDM7JiM0MzsgYi9pbmNsdWRlL2xpbnV4L2RhbW9uLmgKQEAgLTUxLDcgJiM0Mzs1MSw4IEBAIHN0cnVjdCBkYW1vbl9zaXplX3JhbmdlIHsKICAqIEBsaXN0OgkJTGlzdCBoZWFkIGZvciBzaWJsaW5ncy4KICAqIEBhZ2U6CQlBZ2Ugb2YgdGhpcyByZWdpb24uCiAgKgotICogRm9yIGFueSB1c2UgY2FzZSwgQGFyIHNob3VsZCBiZSBub24temVybyBwb3NpdGl2ZSBzaXplLgomIzQzOyAqIEZvciBhbnkgdXNlIGNhc2UsIEBhciBzaG91bGQgYmUgbm9uLXplcm8gcG9zaXRpdmUgc2l6ZS4gIGRhbW9uX3NldF9yZWdpb25zKCkKJiM0MzsgKiBkb2VzIHRoZSB2YWxpZGF0aW9uLgogICoKICAqIEBucl9hY2Nlc3NlcyBpcyByZXNldCB0byB6ZXJvIGZvciBldmVyeSAmYW1wO2RhbW9uX2F0dHJzLSZndDthZ2dyX2ludGVydmFsIGFuZCBiZQogICogaW5jcmVhc2VkIGZvciBldmVyeSAmYW1wO2RhbW9uX2F0dHJzLSZndDtzYW1wbGVfaW50ZXJ2YWwgaWYgYW4gYWNjZXNzIHRvIHRoZSByZWdpb24KZGlmZiAtLWdpdCBhL21tL2RhbW9uL2NvcmUuYyBiL21tL2RhbW9uL2NvcmUuYwppbmRleCA5YTAzMTIzMjY5YzI4ZS4uZjJkZTU3OTllNjgyZjMgMTAwNjQ0Ci0tLSBhL21tL2RhbW9uL2NvcmUuYwomIzQzOyYjNDM7JiM0MzsgYi9tbS9kYW1vbi9jb3JlLmMKQEAgLTE1NTUsMjAgJiM0MzsxNTU1LDcgQEAgc3RhdGljIGludCBkYW1vbl9jb21taXRfcHJvYmVzKHN0cnVjdCBkYW1vbl9jdHggKmRzdCwgc3RydWN0IGRhbW9uX2N0eCAqc3JjKQogCXJldHVybiAwOwogfQogCi0vKioKLSAqIGRhbW9uX2NvbW1pdF9jdHgoKSAtIENvbW1pdCBwYXJhbWV0ZXJzIG9mIGEgREFNT04gY29udGV4dCB0byBhbm90aGVyLgotICogQGRzdDoJVGhlIGNvbW1pdCBkZXN0aW5hdGlvbiBEQU1PTiBjb250ZXh0LgotICogQHNyYzoJVGhlIGNvbW1pdCBzb3VyY2UgREFNT04gY29udGV4dC4KLSAqCi0gKiBUaGlzIGZ1bmN0aW9uIGNvcGllcyB1c2VyLXNwZWNpZmllZCBwYXJhbWV0ZXJzIGZyb20gQHNyYyB0byBAZHN0IGFuZCB1cGRhdGUKLSAqIHRoZSBpbnRlcm5hbCBzdGF0dXMgYW5kIHJlc3VsdHMgYWNjb3JkaW5nbHkuICBVc2VycyBzaG91bGQgdXNlIHRoaXMgZnVuY3Rpb24KLSAqIGZvciBjb250ZXh0LWxldmVsIHBhcmFtZXRlcnMgdXBkYXRlIG9mIHJ1bm5pbmcgY29udGV4dCwgaW5zdGVhZCBvZiBtYW51YWwKLSAqIGluLXBsYWNlIHVwZGF0ZXMuCi0gKgotICogVGhpcyBmdW5jdGlvbiBzaG91bGQgYmUgY2FsbGVkIGZyb20gcGFyYW1ldGVycy11cGRhdGUgc2FmZSBjb250ZXh0LCBsaWtlCi0gKiBkYW1vbl9jYWxsKCkuCi0gKi8KLWludCBkYW1vbl9jb21taXRfY3R4KHN0cnVjdCBkYW1vbl9jdHggKmRzdCwgc3RydWN0IGRhbW9uX2N0eCAqc3JjKQomIzQzO3N0YXRpYyBpbnQgX19kYW1vbl9jb21taXRfY3R4KHN0cnVjdCBkYW1vbl9jdHggKmRzdCwgc3RydWN0IGRhbW9uX2N0eCAqc3JjKQogewogCWludCBlcnI7CiAJc3RydWN0IGRhbW9zICpzY2hlbWU7CkBAIC0xNjIzLDYgJiM0MzsxNjEwLDUyIEBAIGludCBkYW1vbl9jb21taXRfY3R4KHN0cnVjdCBkYW1vbl9jdHggKmRzdCwgc3RydWN0IGRhbW9uX2N0eCAqc3JjKQogCXJldHVybiAwOwogfQogCiYjNDM7c3RhdGljIHN0cnVjdCBkYW1vbl9jdHggKmRhbW9uX25ld190ZXN0X2N0eChzdHJ1Y3QgZGFtb25fY3R4ICpkc3QpCiYjNDM7ewomIzQzOwlzdHJ1Y3QgZGFtb25fY3R4ICp0ZXN0X2N0eDsKJiM0MzsJaW50IGVycjsKJiM0MzsKJiM0MzsJdGVzdF9jdHggPSBkYW1vbl9uZXdfY3R4KCk7CiYjNDM7CWlmICghdGVzdF9jdHgpCiYjNDM7CQlyZXR1cm4gTlVMTDsKJiM0MzsJZXJyID0gX19kYW1vbl9jb21taXRfY3R4KHRlc3RfY3R4LCBkc3QpOwomIzQzOwlpZiAoZXJyKSB7CiYjNDM7CQlkYW1vbl9kZXN0cm95X2N0eCh0ZXN0X2N0eCk7CiYjNDM7CQlyZXR1cm4gTlVMTDsKJiM0MzsJfQomIzQzOwlyZXR1cm4gdGVzdF9jdHg7CiYjNDM7fQomIzQzOwomIzQzOy8qKgomIzQzOyAqIGRhbW9uX2NvbW1pdF9jdHgoKSAtIENvbW1pdCBwYXJhbWV0ZXJzIG9mIGEgREFNT04gY29udGV4dCB0byBhbm90aGVyLgomIzQzOyAqIEBkc3Q6CVRoZSBjb21taXQgZGVzdGluYXRpb24gREFNT04gY29udGV4dC4KJiM0MzsgKiBAc3JjOglUaGUgY29tbWl0IHNvdXJjZSBEQU1PTiBjb250ZXh0LgomIzQzOyAqCiYjNDM7ICogVGhpcyBmdW5jdGlvbiBjb3BpZXMgdXNlci1zcGVjaWZpZWQgcGFyYW1ldGVycyBmcm9tIEBzcmMgdG8gQGRzdCBhbmQgdXBkYXRlCiYjNDM7ICogdGhlIGludGVybmFsIHN0YXR1cyBhbmQgcmVzdWx0cyBhY2NvcmRpbmdseS4gIFVzZXJzIHNob3VsZCB1c2UgdGhpcyBmdW5jdGlvbgomIzQzOyAqIGZvciBjb250ZXh0LWxldmVsIHBhcmFtZXRlcnMgdXBkYXRlIG9mIHJ1bm5pbmcgY29udGV4dCwgaW5zdGVhZCBvZiBtYW51YWwKJiM0MzsgKiBpbi1wbGFjZSB1cGRhdGVzLgomIzQzOyAqCiYjNDM7ICogVGhpcyBmdW5jdGlvbiBzaG91bGQgYmUgY2FsbGVkIGZyb20gcGFyYW1ldGVycy11cGRhdGUgc2FmZSBjb250ZXh0LCBsaWtlCiYjNDM7ICogZGFtb25fY2FsbCgpLgomIzQzOyAqLwomIzQzO2ludCBkYW1vbl9jb21taXRfY3R4KHN0cnVjdCBkYW1vbl9jdHggKmRzdCwgc3RydWN0IGRhbW9uX2N0eCAqc3JjKQomIzQzO3sKJiM0MzsJc3RydWN0IGRhbW9uX2N0eCAqdGVzdF9jdHg7CiYjNDM7CWludCBlcnI7CiYjNDM7CiYjNDM7CXRlc3RfY3R4ID0gZGFtb25fbmV3X3Rlc3RfY3R4KGRzdCk7CiYjNDM7CWlmICghdGVzdF9jdHgpCiYjNDM7CQlyZXR1cm4gLUVOT01FTTsKJiM0MzsJZXJyID0gX19kYW1vbl9jb21taXRfY3R4KHRlc3RfY3R4LCBkc3QpOwomIzQzOwlpZiAoZXJyKQomIzQzOwkJZ290byBvdXQ7CiYjNDM7CWVyciA9IF9fZGFtb25fY29tbWl0X2N0eChkc3QsIHNyYyk7CiYjNDM7b3V0OgomIzQzOwlkYW1vbl9kZXN0cm95X2N0eCh0ZXN0X2N0eCk7CiYjNDM7CXJldHVybiBlcnI7CiYjNDM7fQomIzQzOwogLyoqCiAgKiBkYW1vbl9ucl9ydW5uaW5nX2N0eHMoKSAtIFJldHVybiBudW1iZXIgb2YgY3VycmVudGx5IHJ1bm5pbmcgY29udGV4dHMuCiAgKi8KQEAgLTE3MjMsNiAmIzQzOzE3NTYsOCBAQCBzdGF0aWMgaW50IF9fZGFtb25fc3RhcnQoc3RydWN0IGRhbW9uX2N0eCAqY3R4KQogCXJldHVybiBlcnI7CiB9CiAKJiM0MztzdGF0aWMgaW50IF9fZGFtb25fY29tbWl0X2N0eChzdHJ1Y3QgZGFtb25fY3R4ICpkc3QsIHN0cnVjdCBkYW1vbl9jdHggKnNyYyk7CiYjNDM7CiAvKioKICAqIGRhbW9uX3N0YXJ0KCkgLSBTdGFydHMgdGhlIG1vbml0b3JpbmdzIGZvciBhIGdpdmVuIGdyb3VwIG9mIGNvbnRleHRzLgogICogQGN0eHM6CWFuIGFycmF5IG9mIHRoZSBwb2ludGVycyBmb3IgY29udGV4dHMgdG8gc3RhcnQgbW9uaXRvcmluZwpAQCAtMTc0MCwxMyAmIzQzOzE3NzUsMjIgQEAgc3RhdGljIGludCBfX2RhbW9uX3N0YXJ0KHN0cnVjdCBkYW1vbl9jdHggKmN0eCkKICAqLwogaW50IGRhbW9uX3N0YXJ0KHN0cnVjdCBkYW1vbl9jdHggKipjdHhzLCBpbnQgbnJfY3R4cywgYm9vbCBleGNsdXNpdmUpCiB7CiYjNDM7CXN0cnVjdCBkYW1vbl9jdHggKnRlc3RfY3R4OwogCWludCBpOwogCWludCBlcnIgPSAwOwogCiYjNDM7CXRlc3RfY3R4ID0gZGFtb25fbmV3X2N0eCgpOwomIzQzOwlpZiAoIXRlc3RfY3R4KQomIzQzOwkJcmV0dXJuIC1FTk9NRU07CiYjNDM7CiAJZm9yIChpID0gMDsgaSAmbHQ7IG5yX2N0eHM7IGkmIzQzOyYjNDM7KSB7Ci0JCWlmICghaXNfcG93ZXJfb2ZfMihjdHhzW2ldLSZndDttaW5fcmVnaW9uX3N6KSkKLQkJCXJldHVybiAtRUlOVkFMOwomIzQzOwkJZXJyID0gX19kYW1vbl9jb21taXRfY3R4KHRlc3RfY3R4LCBjdHhzW2ldKTsKJiM0MzsJCWlmIChlcnIpIHsKJiM0MzsJCQlkYW1vbl9kZXN0cm95X2N0eCh0ZXN0X2N0eCk7CiYjNDM7CQkJcmV0dXJuIGVycjsKJiM0MzsJCX0KIAl9CiYjNDM7CWRhbW9uX2Rlc3Ryb3lfY3R4KHRlc3RfY3R4KTsKIAogCW11dGV4X2xvY2soJmFtcDtkYW1vbl9sb2NrKTsKIAlpZiAoKGV4Y2x1c2l2ZSAmYW1wOyZhbXA7IG5yX3J1bm5pbmdfY3R4cykgfHwKQEAgLTM3MzgsOSAmIzQzOzM3ODIsNiBAQCBpbnQgZGFtb25fc2V0X3JlZ2lvbl9zeXN0ZW1fcmFtc19kZWZhdWx0KHN0cnVjdCBkYW1vbl90YXJnZXQgKnQsCiB7CiAJc3RydWN0IGRhbW9uX2FkZHJfcmFuZ2UgYWRkcl9yYW5nZTsKIAotCWlmICgqc3RhcnQgJmd0OyAqZW5kKQotCQlyZXR1cm4gLUVJTlZBTDsKLQogCWlmICghKnN0YXJ0ICZhbXA7JmFtcDsgISplbmQgJmFtcDsmYW1wOwogCQkhZGFtb25fZmluZF9zeXN0ZW1fcmFtc19yYW5nZShzdGFydCwgZW5kLCBhZGRyX3VuaXQpKQogCQlyZXR1cm4gLUVJTlZBTDsKZGlmZiAtLWdpdCBhL21tL2RhbW9uL2xydV9zb3J0LmMgYi9tbS9kYW1vbi9scnVfc29ydC5jCmluZGV4IDMyZjQxNDkxYjcyNmIyLi4yZGQwY2QwZDI2MjczMSAxMDA2NDQKLS0tIGEvbW0vZGFtb24vbHJ1X3NvcnQuYwomIzQzOyYjNDM7JiM0MzsgYi9tbS9kYW1vbi9scnVfc29ydC5jCkBAIC0yODQsMTEgJiM0MzsyODQsNiBAQCBzdGF0aWMgaW50IGRhbW9uX2xydV9zb3J0X2FwcGx5X3BhcmFtZXRlcnModm9pZCkKIAlwYXJhbV9jdHgtJmd0O2FkZHJfdW5pdCA9IGFkZHJfdW5pdDsKIAlwYXJhbV9jdHgtJmd0O21pbl9yZWdpb25fc3ogPSBtYXgoREFNT05fTUlOX1JFR0lPTl9TWiAvIGFkZHJfdW5pdCwgMSk7CiAKLQlpZiAoIWlzX3Bvd2VyX29mXzIocGFyYW1fY3R4LSZndDttaW5fcmVnaW9uX3N6KSkgewotCQllcnIgPSAtRUlOVkFMOwotCQlnb3RvIG91dDsKLQl9Ci0KIAlpZiAoIWRhbW9uX2xydV9zb3J0X21vbl9hdHRycy5zYW1wbGVfaW50ZXJ2YWwpIHsKIAkJZXJyID0gLUVJTlZBTDsKIAkJZ290byBvdXQ7CmRpZmYgLS1naXQgYS9tbS9kYW1vbi9yZWNsYWltLmMgYi9tbS9kYW1vbi9yZWNsYWltLmMKaW5kZXggMTFiNzBkMGE5YTZmMGEuLjY0NjliMjVjYzM0ZjkyIDEwMDY0NAotLS0gYS9tbS9kYW1vbi9yZWNsYWltLmMKJiM0MzsmIzQzOyYjNDM7IGIvbW0vZGFtb24vcmVjbGFpbS5jCkBAIC0yMDgsMTEgJiM0MzsyMDgsNiBAQCBzdGF0aWMgaW50IGRhbW9uX3JlY2xhaW1fYXBwbHlfcGFyYW1ldGVycyh2b2lkKQogCXBhcmFtX2N0eC0mZ3Q7YWRkcl91bml0ID0gYWRkcl91bml0OwogCXBhcmFtX2N0eC0mZ3Q7bWluX3JlZ2lvbl9zeiA9IG1heChEQU1PTl9NSU5fUkVHSU9OX1NaIC8gYWRkcl91bml0LCAxKTsKIAotCWlmICghaXNfcG93ZXJfb2ZfMihwYXJhbV9jdHgtJmd0O21pbl9yZWdpb25fc3opKSB7Ci0JCWVyciA9IC1FSU5WQUw7Ci0JCWdvdG8gb3V0OwotCX0KLQogCWlmICghZGFtb25fcmVjbGFpbV9tb25fYXR0cnMuYWdncl9pbnRlcnZhbCkgewogCQllcnIgPSAtRUlOVkFMOwogCQlnb3RvIG91dDsKZGlmZiAtLWdpdCBhL21tL2RhbW9uL3N5c2ZzLmMgYi9tbS9kYW1vbi9zeXNmcy5jCmluZGV4IGUzNTI2YTI2M2UyMDVmLi45MzNmZjMwM2RlNWExMiAxMDA2NDQKLS0tIGEvbW0vZGFtb24vc3lzZnMuYwomIzQzOyYjNDM7JiM0MzsgYi9tbS9kYW1vbi9zeXNmcy5jCkBAIC0xOTY5LDkgJiM0MzsxOTY5LDYgQEAgc3RhdGljIGludCBkYW1vbl9zeXNmc19zZXRfcmVnaW9ucyhzdHJ1Y3QgZGFtb25fdGFyZ2V0ICp0LAogCQlzdHJ1Y3QgZGFtb25fc3lzZnNfcmVnaW9uICpzeXNfcmVnaW9uID0KIAkJCXN5c2ZzX3JlZ2lvbnMtJmd0O3JlZ2lvbnNfYXJyW2ldOwogCi0JCWlmIChzeXNfcmVnaW9uLSZndDthci5zdGFydCAmZ3Q7IHN5c19yZWdpb24tJmd0O2FyLmVuZCkKLQkJCWdvdG8gb3V0OwotCiAJCXJhbmdlc1tpXS5zdGFydCA9IHN5c19yZWdpb24tJmd0O2FyLnN0YXJ0OwogCQlyYW5nZXNbaV0uZW5kID0gc3lzX3JlZ2lvbi0mZ3Q7YXIuZW5kOwogCQlpZiAoaSA9PSAwKQpAQCAtMjA4MCwyNiAmIzQzOzIwNzcsNiBAQCBzdGF0aWMgaW50IGRhbW9uX3N5c2ZzX2FwcGx5X2lucHV0cyhzdHJ1Y3QgZGFtb25fY3R4ICpjdHgsCiBzdGF0aWMgc3RydWN0IGRhbW9uX2N0eCAqZGFtb25fc3lzZnNfYnVpbGRfY3R4KAogCQlzdHJ1Y3QgZGFtb25fc3lzZnNfY29udGV4dCAqc3lzX2N0eCk7CiAKLS8qCi0gKiBSZXR1cm4gYSBuZXcgZGFtb25fY3R4IGZvciB0ZXN0aW5nIG5ldyBwYXJhbWV0ZXJzIHRvIGNvbW1pdC4KLSAqLwotc3RhdGljIHN0cnVjdCBkYW1vbl9jdHggKmRhbW9uX3N5c2ZzX25ld190ZXN0X2N0eCgKLQkJc3RydWN0IGRhbW9uX2N0eCAqcnVubmluZ19jdHgpCi17Ci0Jc3RydWN0IGRhbW9uX2N0eCAqdGVzdF9jdHg7Ci0JaW50IGVycjsKLQotCXRlc3RfY3R4ID0gZGFtb25fbmV3X2N0eCgpOwotCWlmICghdGVzdF9jdHgpCi0JCXJldHVybiBOVUxMOwotCWVyciA9IGRhbW9uX2NvbW1pdF9jdHgodGVzdF9jdHgsIHJ1bm5pbmdfY3R4KTsKLQlpZiAoZXJyKSB7Ci0JCWRhbW9uX2Rlc3Ryb3lfY3R4KHRlc3RfY3R4KTsKLQkJcmV0dXJuIE5VTEw7Ci0JfQotCXJldHVybiB0ZXN0X2N0eDsKLX0KLQogLyoKICAqIGRhbW9uX3N5c2ZzX2NvbW1pdF9pbnB1dCgpIC0gQ29tbWl0IHVzZXIgaW5wdXRzIHRvIGEgcnVubmluZyBrZGFtb25kLgogICogQGtkYW1vbmQ6CVRoZSBrb2JqZWN0IHdyYXBwZXIgZm9yIHRoZSBhc3NvY2lhdGVkIGtkYW1vbmQuCkBAIC0yMTA5LDcgJiM0MzsyMDg2LDcgQEAgc3RhdGljIHN0cnVjdCBkYW1vbl9jdHggKmRhbW9uX3N5c2ZzX25ld190ZXN0X2N0eCgKIHN0YXRpYyBpbnQgZGFtb25fc3lzZnNfY29tbWl0X2lucHV0KHZvaWQgKmRhdGEpCiB7CiAJc3RydWN0IGRhbW9uX3N5c2ZzX2tkYW1vbmQgKmtkYW1vbmQgPSBkYXRhOwotCXN0cnVjdCBkYW1vbl9jdHggKnBhcmFtX2N0eCwgKnRlc3RfY3R4OwomIzQzOwlzdHJ1Y3QgZGFtb25fY3R4ICpwYXJhbV9jdHg7CiAJaW50IGVycjsKIAogCWlmICghZGFtb25fc3lzZnNfa2RhbW9uZF9ydW5uaW5nKGtkYW1vbmQpKQpAQCAtMjEyMSwxNyAmIzQzOzIwOTgsNyBAQCBzdGF0aWMgaW50IGRhbW9uX3N5c2ZzX2NvbW1pdF9pbnB1dCh2b2lkICpkYXRhKQogCXBhcmFtX2N0eCA9IGRhbW9uX3N5c2ZzX2J1aWxkX2N0eChrZGFtb25kLSZndDtjb250ZXh0cy0mZ3Q7Y29udGV4dHNfYXJyWzBdKTsKIAlpZiAoSVNfRVJSKHBhcmFtX2N0eCkpCiAJCXJldHVybiBQVFJfRVJSKHBhcmFtX2N0eCk7Ci0JdGVzdF9jdHggPSBkYW1vbl9zeXNmc19uZXdfdGVzdF9jdHgoa2RhbW9uZC0mZ3Q7ZGFtb25fY3R4KTsKLQlpZiAoIXRlc3RfY3R4KSB7Ci0JCWRhbW9uX2Rlc3Ryb3lfY3R4KHBhcmFtX2N0eCk7Ci0JCXJldHVybiAtRU5PTUVNOwotCX0KLQllcnIgPSBkYW1vbl9jb21taXRfY3R4KHRlc3RfY3R4LCBwYXJhbV9jdHgpOwotCWlmIChlcnIpCi0JCWdvdG8gb3V0OwogCWVyciA9IGRhbW9uX2NvbW1pdF9jdHgoa2RhbW9uZC0mZ3Q7ZGFtb25fY3R4LCBwYXJhbV9jdHgpOwotb3V0OgotCWRhbW9uX2Rlc3Ryb3lfY3R4KHRlc3RfY3R4KTsKIAlkYW1vbl9kZXN0cm95X2N0eChwYXJhbV9jdHgpOwogCXJldHVybiBlcnI7CiB9CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAxIDIzOjAxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ2NjAKCQkJCQkJCW91dHB1dDogMzAKCQkJCQkJCXRob3VnaHRzOiA0NzkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRnV6emluZyBEZWNpc2lvbiBmb3IgREFNT04gUGF0Y2ggU2VyaWVzKioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIE15IGluaXRpYWwgYXNzZXNzbWVudCBpcyB3aGV0aGVyIHRoaXMgcGF0Y2ggc2VyaWVzIGludHJvZHVjZXMgYW55ICpmdW5jdGlvbmFsKiBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBuZWNlc3NpdGF0ZSBmdXp6aW5nLiBUaGUgZmFjdCB0aGF0IGl0IHRvdWNoZXMgYG1tL2RhbW9uLypgIGZpbGVzIGltbWVkaWF0ZWx5IGZsYWdzIG15IGF0dGVudGlvbiDigJMgREFNT04gaXMgY29yZSBtZW1vcnkgbWFuYWdlbWVudCwgc28gaXQmIzM5O3MgaW5oZXJlbnRseSByZWFjaGFibGUgYW5kIGltcG9ydGFudC4KCkxvb2tpbmcgYXQgdGhlIGNvZGUsIGl0IGxvb2tzIGxpa2UgaXQgaXMgcmVmYWN0b3JpbmcgYGRhbW9uX2NvbW1pdF9jdHhgIHVzaW5nIGBfX2RhbW9uX2NvbW1pdF9jdHhgIGFuZCBhIG5ldyBgZGFtb25fbmV3X3Rlc3RfY3R4YC4gVGhhdCwgaW4gaXRzZWxmLCBpcyBlbm91Z2ggdG8gYmUgd29ydGggYSBmdXp6aW5nIHBhc3M7IG5ldyBjb2RlIG1lYW5zIG5ldyBhdHRhY2sgc3VyZmFjZS4gSSBzZWUgdGhleSYjMzk7dmUgcmVtb3ZlZCBhIGJ1bmNoIG9mIGNoZWNrcyBsaWtlIGBpc19wb3dlcl9vZl8yYCBmcm9tIHBhcmFtZXRlciB2YWxpZGF0aW9uIGluIGBkYW1vbl9scnVfc29ydF9hcHBseV9wYXJhbWV0ZXJzYCwgYGRhbW9uX3JlY2xhaW1fYXBwbHlfcGFyYW1ldGVyc2AgYW5kIHRoZSBvdGhlciBwbGFjZXMuIFRoYXQmIzM5O3MgKnZlcnkqIGludGVyZXN0aW5nLiBSZW1vdmluZyB0aG9zZSBndWFyZHJhaWxzIGNvdWxkIGV4cG9zZSB2dWxuZXJhYmlsaXRpZXMsIGVzcGVjaWFsbHkgaWYgdGhlIHZhbGlkYXRpb24gaXMgbW92ZWQgZWxzZXdoZXJlIG9yIGltcGxpY2l0bHkgcmVsaWVkIHVwb24uIFRoZSBjb21taXQgbWVzc2FnZSBkb2VzbiYjMzk7dCBoZWxwIHdpdGggY29udGV4dCB0aG91Z2ghCgpUaGUgY2hhbmdlcyBpbiBgZGFtb25fc2V0X3JlZ2lvbl9zeXN0ZW1fcmFtc19kZWZhdWx0YCBhbmQgYGRhbW9uX3N5c2ZzX3NldF9yZWdpb25zYCBhbHNvIHJlbW92ZSBjaGVja3MuIEdpdmVuIHRoZSBuYXR1cmUgb2YgREFNT04mIzM5O3Mgcm9sZSBpbiBtZW1vcnkgbWFuYWdlbWVudCwgcmVtb3ZpbmcgY2hlY2tzIGlzIGEgYmlnIHJlZCBmbGFnLgoKR2l2ZW4gdGhhdCBEQU1PTiBpcyBhIGNvcmUgbWVtb3J5IG1hbmFnZW1lbnQgZmVhdHVyZSwgYW5kIHRoaXMgcGF0Y2ggc2VyaWVzIGNoYW5nZXMgZnVuY3Rpb25hbGl0eSBhbmQgcGFyYW1ldGVyIHZhbGlkYXRpb24sIHRoaXMgaXMgZGVmaW5pdGVseSBXb3J0aEZ1enppbmc9dHJ1ZS4KCk5vdywgbGV0JiMzOTtzIGlkZW50aWZ5ICp3aGVyZSogdG8gZm9jdXMgdGhlIGZ1enppbmcgZWZmb3J0LiBJJiMzOTtsbCBuZWVkIHRvIGNvbXBpbGUgYSBsaXN0IG9mIGFmZmVjdGVkIGZ1bmN0aW9uczoKCiogICBgZGFtb25fY29tbWl0X2N0eGAKKiAgIGBkYW1vbl9uZXdfdGVzdF9jdHhgIChuZXcpCiogICBgX19kYW1vbl9jb21taXRfY3R4YCAobmV3KQoqICAgYGRhbW9uX3N0YXJ0YAoqICAgYGRhbW9uX3NldF9yZWdpb25fc3lzdGVtX3JhbXNfZGVmYXVsdGAKKiAgIGBkYW1vbl9scnVfc29ydF9hcHBseV9wYXJhbWV0ZXJzYAoqICAgYGRhbW9uX3JlY2xhaW1fYXBwbHlfcGFyYW1ldGVyc2AKKiAgIGBkYW1vbl9zeXNmc19zZXRfcmVnaW9uc2AKKiAgIGBkYW1vbl9zeXNmc19jb21taXRfaW5wdXRgCgpNeSBuZXh0IHN0ZXAgd2lsbCBiZSB0byB1c2UgYGdyZXBwZXJgIChvciB3aGF0ZXZlciBzZWFyY2ggdG9vbCBJJiMzOTttIHVzaW5nKSB0byBjaGVjayB0aGUgcmVsZXZhbnQga2VybmVsIGNvbmZpZyBvcHRpb25zIGZvciBEQU1PTi4gVGhhdCYjMzk7bGwgZ3VpZGUgbWUgaW4gdGhlIGZ1enppbmcgc2V0dXAsIGFuZCBoZWxwIG1lIHRhcmdldCBjb25maWd1cmF0aW9ucyB0aGF0IGFyZSBsaWtlbHkgdG8gYmUgdXNlZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMSAyMzowMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgREFNT04mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDttbS9kYW1vbi9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O21tL2RhbW9uL0tjb25maWc9Mz1tZW51IFwmIzM0O0RhdGEgQWNjZXNzIE1vbml0b3JpbmdcJiMzNDtcbm1tL2RhbW9uL0tjb25maWctNC1cbm1tL2RhbW9uL0tjb25maWc6NTpjb25maWcgREFNT05cbm1tL2RhbW9uL0tjb25maWctNi1cdGJvb2wgXCYjMzQ7REFNT046IERhdGEgQWNjZXNzIE1vbml0b3JpbmcgRnJhbWV3b3JrXCYjMzQ7XG4tLVxubW0vZGFtb24vS2NvbmZpZy0xNC1cbm1tL2RhbW9uL0tjb25maWc6MTU6Y29uZmlnIERBTU9OX0RFQlVHX1NBTklUWVxubW0vZGFtb24vS2NvbmZpZy0xNi1cdGJvb2wgXCYjMzQ7Q2hlY2sgc2FuaXR5IG9mIERBTU9OIGNvZGVcJiMzNDtcbi0tXG5tbS9kYW1vbi9LY29uZmlnLTI1LVxubW0vZGFtb24vS2NvbmZpZzoyNjpjb25maWcgREFNT05fS1VOSVRfVEVTVFxubW0vZGFtb24vS2NvbmZpZy0yNy1cdGJvb2wgXCYjMzQ7VGVzdCBmb3IgZGFtb25cJiMzNDsgaWYgIUtVTklUX0FMTF9URVNUU1xuLS1cbm1tL2RhbW9uL0tjb25maWctMzctXG5tbS9kYW1vbi9LY29uZmlnOjM4OmNvbmZpZyBEQU1PTl9WQUREUlxubW0vZGFtb24vS2NvbmZpZy0zOS1cdGJvb2wgXCYjMzQ7RGF0YSBhY2Nlc3MgbW9uaXRvcmluZyBvcGVyYXRpb25zIGZvciB2aXJ0dWFsIGFkZHJlc3Mgc3BhY2VzXCYjMzQ7XG4tLVxubW0vZGFtb24vS2NvbmZpZy00Ni1cbm1tL2RhbW9uL0tjb25maWc6NDc6Y29uZmlnIERBTU9OX1BBRERSXG5tbS9kYW1vbi9LY29uZmlnLTQ4LVx0Ym9vbCBcJiMzNDtEYXRhIGFjY2VzcyBtb25pdG9yaW5nIG9wZXJhdGlvbnMgZm9yIHRoZSBwaHlzaWNhbCBhZGRyZXNzIHNwYWNlXCYjMzQ7XG4tLVxubW0vZGFtb24vS2NvbmZpZy01NS1cbm1tL2RhbW9uL0tjb25maWc6NTY6Y29uZmlnIERBTU9OX1ZBRERSX0tVTklUX1RFU1Rcbm1tL2RhbW9uL0tjb25maWctNTctXHRib29sIFwmIzM0O1Rlc3QgZm9yIERBTU9OIG9wZXJhdGlvbnNcJiMzNDsgaWYgIUtVTklUX0FMTF9URVNUU1xuLS1cbm1tL2RhbW9uL0tjb25maWctNjctXG5tbS9kYW1vbi9LY29uZmlnOjY4OmNvbmZpZyBEQU1PTl9TWVNGU1xubW0vZGFtb24vS2NvbmZpZy02OS1cdGJvb2wgXCYjMzQ7REFNT04gc3lzZnMgaW50ZXJmYWNlXCYjMzQ7XG4tLVxubW0vZGFtb24vS2NvbmZpZy03NS1cbm1tL2RhbW9uL0tjb25maWc6NzY6Y29uZmlnIERBTU9OX1NZU0ZTX0tVTklUX1RFU1Rcbm1tL2RhbW9uL0tjb25maWctNzctXHRib29sIFwmIzM0O1Rlc3QgZm9yIGRhbW9uIHN5c2ZzIGludGVyZmFjZVwmIzM0OyBpZiAhS1VOSVRfQUxMX1RFU1RTXG4tLVxubW0vZGFtb24vS2NvbmZpZy04Ny1cbm1tL2RhbW9uL0tjb25maWc6ODg6Y29uZmlnIERBTU9OX1JFQ0xBSU1cbm1tL2RhbW9uL0tjb25maWctODktXHRib29sIFwmIzM0O0J1aWxkIERBTU9OLWJhc2VkIHJlY2xhaW0gKERBTU9OX1JFQ0xBSU0pXCYjMzQ7XG4tLVxubW0vZGFtb24vS2NvbmZpZy05OS1cbm1tL2RhbW9uL0tjb25maWc6MTAwOmNvbmZpZyBEQU1PTl9MUlVfU09SVFxubW0vZGFtb24vS2NvbmZpZy0xMDEtXHRib29sIFwmIzM0O0J1aWxkIERBTU9OLWJhc2VkIExSVS1saXN0cyBzb3J0aW5nIChEQU1PTl9MUlVfU09SVClcJiMzNDtcbi0tXG5tbS9kYW1vbi9LY29uZmlnLTEwNy1cbm1tL2RhbW9uL0tjb25maWc6MTA4OmNvbmZpZyBEQU1PTl9TVEFUXG5tbS9kYW1vbi9LY29uZmlnLTEwOS1cdGJvb2wgXCYjMzQ7QnVpbGQgZGF0YSBhY2Nlc3MgbW9uaXRvcmluZyBzdGF0IChEQU1PTl9TVEFUKVwmIzM0O1xuLS1cbm1tL2RhbW9uL0tjb25maWctMTE1LVxubW0vZGFtb24vS2NvbmZpZzoxMTY6Y29uZmlnIERBTU9OX1NUQVRfRU5BQkxFRF9ERUZBVUxUXG5tbS9kYW1vbi9LY29uZmlnLTExNy1cdGJvb2wgXCYjMzQ7RW5hYmxlIERBTU9OX1NUQVQgYnkgZGVmYXVsdFwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAxIDIzOjAyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDY0NTEKCQkJCQkJCW91dHB1dDogMzMKCQkJCQkJCXRob3VnaHRzOiAyOTkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgRnV6emluZyBTdHJhdGVneSBmb3IgREFNT04qKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoZXNlIERBTU9OIGNvbmZpZ3VyYXRpb25zIOKAkyBgREFNT05gLCBgREFNT05fU1lTRlNgLCBgREFNT05fUkVDTEFJTWAsIGFuZCBgREFNT05fTFJVX1NPUlRgIOKAkyBhbmQgaXQgbG9va3MgbGlrZSB0aGUgcmVsZXZhbnQgZmlsZXMgdGhhdCBoYXZlIGJlZW4gdG91Y2hlZCBhcmUgYG1tL2RhbW9uL2NvcmUuY2AsIGBtbS9kYW1vbi9scnVfc29ydC5jYCwgYG1tL2RhbW9uL3JlY2xhaW0uY2AsIGFuZCBgbW0vZGFtb24vc3lzZnMuY2AuIFRoaXMgc3Ryb25nbHkgc3VnZ2VzdHMgdGhhdCBJIG5lZWQgdG8gZW5hYmxlIHRoZXNlIGNvbmZpZ3M6IGBEQU1PTmAsIGBEQU1PTl9TWVNGU2AsIGBEQU1PTl9SRUNMQUlNYCwgYW5kIGBEQU1PTl9MUlVfU09SVGAuCgpOb3csIHRoZSBjcnVjaWFsIHN0ZXAgaXMgaWRlbnRpZnlpbmcgdGhlIGtleSBmdW5jdGlvbnMgZm9yIGZ1enppbmcuIEFmdGVyIGEgcXVpY2sgc2NhbiwgSSYjMzk7bSB0aGlua2luZyB0aGUgZm9sbG93aW5nIGFyZSBoaWdoLXZhbHVlIHRhcmdldHM6IGBkYW1vbl9jb21taXRfY3R4YCwgYGRhbW9uX3N0YXJ0YCwgYGRhbW9uX3NldF9yZWdpb25fc3lzdGVtX3JhbXNfZGVmYXVsdGAsIGBkYW1vbl9scnVfc29ydF9hcHBseV9wYXJhbWV0ZXJzYCwgYGRhbW9uX3JlY2xhaW1fYXBwbHlfcGFyYW1ldGVyc2AsIGBkYW1vbl9zeXNmc19zZXRfcmVnaW9uc2AsIGFuZCBgZGFtb25fc3lzZnNfY29tbWl0X2lucHV0YC4gVGhlc2UgbG9vayBsaWtlIHByaW1lIGNhbmRpZGF0ZXMgZm9yIGV4cGxvaXRpbmcgcG90ZW50aWFsIHZ1bG5lcmFiaWxpdGllcy4KCkJlZm9yZSBJIGNvbW1pdCB0byB0aGlzIHBsYW4sIHRob3VnaCwgSSBzaG91bGQgZG91YmxlLWNoZWNrIHRoZSBkZXBlbmRlbmNpZXMuIEkgaGF2ZSBhIGh1bmNoIHRoYXQgYERBTU9OX1ZBRERSYCBhbmQgYERBTU9OX1BBRERSYCAqbWlnaHQqIGJlIHJlcXVpcmVkIGluIGNvbmp1bmN0aW9uIHdpdGggYERBTU9OX1JFQ0xBSU1gIGFuZCBgREFNT05fTFJVX1NPUlRgLiBCZXN0IHRvIGdvIGJhY2sgdG8gYG1tL2RhbW9uL0tjb25maWdgIHRvIHZlcmlmeSBhbnkgZGVwZW5kZW5jaWVzIGFuZCBtYWtlIHN1cmUgSSBoYXZlbiYjMzk7dCBtaXNzZWQgYW55dGhpbmcuIEkgd2FudCB0byBlbnN1cmUgbXkgZnV6emluZyBzZXR1cCBpcyBhcyBjb21wbGV0ZSBhcyBwb3NzaWJsZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMSAyMzowMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgREFNT05fUkVDTEFJTSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O21tL2RhbW9uL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bW0vZGFtb24vS2NvbmZpZz03Nj1jb25maWcgREFNT05fU1lTRlNfS1VOSVRfVEVTVFxuLS1cbm1tL2RhbW9uL0tjb25maWctODctXG5tbS9kYW1vbi9LY29uZmlnOjg4OmNvbmZpZyBEQU1PTl9SRUNMQUlNXG5tbS9kYW1vbi9LY29uZmlnLTg5LVx0Ym9vbCBcJiMzNDtCdWlsZCBEQU1PTi1iYXNlZCByZWNsYWltIChEQU1PTl9SRUNMQUlNKVwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAxIDIzOjAyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDcyNTEKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiAxOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0YWtlIG9uIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHN1bW1hcml6ZWQgYXMgeW91IHJlcXVlc3RlZDoKCioqTmF2aWdhdGluZyBLZXJuZWwgQ29uZmlndXJhdGlvbiBmb3IgRGFtb24qKgoKT2theSwgc28gSSBuZWVkIHRvIGRpdmUgaW50byB0aGUga2VybmVsIGNvbmZpZ3VyYXRpb24gZm9yIHRoZSBgbW0vZGFtb25gIHN1YnN5c3RlbS4gTGV0JiMzOTtzIHNlZS4uLiB0aGUgYEtjb25maWdgIGZpbGVzIGFyZSB1c3VhbGx5IHRoZSBiZXN0IHBsYWNlIHRvIHN0YXJ0LiBJJiMzOTttIHRoaW5raW5nLCBiYXNlZCBvbiBteSBleHBlcmllbmNlLCB0aGF0IGxpbmUgODggaW4gdGhhdCBwYXJ0aWN1bGFyIGBLY29uZmlnYCBmaWxlIChgbW0vZGFtb24vS2NvbmZpZ2ApIGlzIGEgbGlrZWx5IHBvaW50IG9mIGludGVyZXN0LiBJdCYjMzk7cyBvZnRlbiB3aGVyZSBrZXkgZmVhdHVyZXMgb3Igb3B0aW9ucyByZWxhdGVkIHRvIGEgbW9kdWxlIGJlZ2luIHRvIGJlIGRlZmluZWQgb3Igd2hlcmUgdGhlIGNvcmUgY29uZmlndXJhdGlvbiBlbnRyeSBpcyBsb2NhdGVkLiBUaGlzIGNvdWxkIGJlIHdoZXJlIEkmIzM5O2xsIGZpbmQgdGhlIHByaW1hcnkgY29uZmlndXJhdGlvbiBzeW1ib2wgb3IgcmVsYXRlZCBzZXR0aW5ncyBmb3IgRGFtb24uIEkmIzM5O2xsIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgcmVsYXRpb25zaGlwIGJldHdlZW4gdGhpcyBLY29uZmlnIGVudHJ5IGFuZCB0aGUgb3ZlcmFsbCBrZXJuZWwgYnVpbGQgcHJvY2VzcywgYW5kLCBmcm9tIG15IGJhY2tncm91bmQsIGtub3cgdGhlIHBvc3NpYmxlIGltcGxpY2F0aW9ucyBvZiB0aGUgc2V0dGluZ3MgSSBlbmNvdW50ZXIgdGhlcmUuIEl0JiMzOTtzIGEgY2xhc3NpYyBzdGFydGluZyBwb2ludCBmb3IgdW5yYXZlbGluZyB0aGUgY29uZmlndXJhdGlvbiBhbmQgZGVwZW5kZW5jaWVzIG9mIGEga2VybmVsIG1vZHVsZS4gTGV0JiMzOTtzIGdldCB0byBpdC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMSAyMzowMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O21tL2RhbW9uL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiA4MCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAzMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgIDgwOlx0XHRoZWxwXG4gIDgxOlx0XHQgIFRoaXMgYnVpbGRzIHRoZSBEQU1PTiBzeXNmcyBpbnRlcmZhY2UgS3VuaXQgdGVzdCBzdWl0ZS5cbiAgODI6XHRcbiAgODM6XHRcdCAgRm9yIG1vcmUgaW5mb3JtYXRpb24gb24gS1VuaXQgYW5kIHVuaXQgdGVzdHMgaW4gZ2VuZXJhbCwgcGxlYXNlIHJlZmVyXG4gIDg0Olx0XHQgIHRvIHRoZSBLVW5pdCBkb2N1bWVudGF0aW9uLlxuICA4NTpcdFxuICA4NjpcdFx0ICBJZiB1bnN1cmUsIHNheSBOLlxuICA4NzpcdFxuICA4ODpcdGNvbmZpZyBEQU1PTl9SRUNMQUlNXG4gIDg5Olx0XHRib29sIFwmIzM0O0J1aWxkIERBTU9OLWJhc2VkIHJlY2xhaW0gKERBTU9OX1JFQ0xBSU0pXCYjMzQ7XG4gIDkwOlx0XHRkZXBlbmRzIG9uIERBTU9OX1BBRERSXG4gIDkxOlx0XHRoZWxwXG4gIDkyOlx0XHQgIFRoaXMgYnVpbGRzIHRoZSBEQU1PTi1iYXNlZCByZWNsYW1hdGlvbiBzdWJzeXN0ZW0uICBJdCBmaW5kcyBwYWdlc1xuICA5MzpcdFx0ICB0aGF0IG5vdCBhY2Nlc3NlZCBmb3IgYSBsb25nIHRpbWUgKGNvbGQpIHVzaW5nIERBTU9OIGFuZCByZWNsYWltXG4gIDk0Olx0XHQgIHRob3NlLlxuICA5NTpcdFxuICA5NjpcdFx0ICBUaGlzIGlzIHN1Z2dlc3RlZCB0byBiZSB1c2VkIGFzIGEgcHJvYWN0aXZlIGFuZCBsaWdodHdlaWdodFxuICA5NzpcdFx0ICByZWNsYW1hdGlvbiB1bmRlciBsaWdodCBtZW1vcnkgcHJlc3N1cmUsIHdoaWxlIHRoZSB0cmFkaXRpb25hbCBwYWdlXG4gIDk4Olx0XHQgIHNjYW5uaW5nLWJhc2VkIHJlY2xhbWF0aW9uIGlzIHVzZWQgZm9yIGhlYXZ5IHByZXNzdXJlLlxuICA5OTpcdFxuIDEwMDpcdGNvbmZpZyBEQU1PTl9MUlVfU09SVFxuIDEwMTpcdFx0Ym9vbCBcJiMzNDtCdWlsZCBEQU1PTi1iYXNlZCBMUlUtbGlzdHMgc29ydGluZyAoREFNT05fTFJVX1NPUlQpXCYjMzQ7XG4gMTAyOlx0XHRkZXBlbmRzIG9uIERBTU9OX1BBRERSXG4gMTAzOlx0XHRoZWxwXG4gMTA0Olx0XHQgIFRoaXMgYnVpbGRzIHRoZSBEQU1PTi1iYXNlZCBMUlUtbGlzdHMgc29ydGluZyBzdWJzeXN0ZW0uICBJdCB0cmllcyB0b1xuIDEwNTpcdFx0ICBwcm90ZWN0IGZyZXF1ZW50bHkgYWNjZXNzZWQgKGhvdCkgcGFnZXMgd2hpbGUgcmFyZWx5IGFjY2Vzc2VkIChjb2xkKVxuIDEwNjpcdFx0ICBwYWdlcyByZWNsYWltZWQgZmlyc3QgdW5kZXIgbWVtb3J5IHByZXNzdXJlLlxuIDEwNzpcdFxuIDEwODpcdGNvbmZpZyBEQU1PTl9TVEFUXG4gMTA5Olx0XHRib29sIFwmIzM0O0J1aWxkIGRhdGEgYWNjZXNzIG1vbml0b3Jpbmcgc3RhdCAoREFNT05fU1RBVClcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMSAyMzowMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3OTU3CgkJCQkJCQlvdXRwdXQ6IDIyNQoJCQkJCQkJdGhvdWdodHM6IDI3NAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBbmFseXNpcyBvZiB0aGUgREFNT04gQ29uZmlndXJhdGlvbiBDaGFuZ2VzKioKCk9rYXksIHNvIEkgc2VlIHRoYXQgYERBTU9OX1JFQ0xBSU1gIGFuZCBgREFNT05fTFJVX1NPUlRgIGJvdGggaGF2ZSBkZXBlbmRlbmNpZXMgb24gYERBTU9OX1BBRERSYC4gTWFrZXMgc2Vuc2UuIFdlJiMzOTtsbCBuZWVkIHRvIG1ha2Ugc3VyZSBgREFNT05fUEFERFJgIGlzIGluY2x1ZGVkIHRoZW4sIGFuZCBsZXQmIzM5O3MgYWRkIGBEQU1PTl9WQUREUmAgZm9yIGdvb2QgbWVhc3VyZSwganVzdCB0byBiZSB0aG9yb3VnaCBhbmQgY292ZXIgYWxsIHRoZSBiYXNlcy4gVGhpcyBzZWVtcyBsaWtlIGEgcmVhc29uYWJsZSBzZXQgb2YgY29uZmlncyB0byBjb25zaWRlcjoKCmBEQU1PTmAKYERBTU9OX1BBRERSYApgREFNT05fVkFERFJgCmBEQU1PTl9TWVNGU2AKYERBTU9OX1JFQ0xBSU1gCmBEQU1PTl9MUlVfU09SVGAKCk5vdywgbGV0JiMzOTtzIGxvb2sgYXQgdGhlIHN5bWJvbHMgYWZmZWN0ZWQuIFRoZSBwYXRjaCBzZWVtcyB0byBiZSB0b3VjaGluZyBzZXZlcmFsIGtleSBhcmVhczogYGRhbW9uX2NvbW1pdF9jdHhgLCBgZGFtb25fc3RhcnRgLCBgZGFtb25fc2V0X3JlZ2lvbl9zeXN0ZW1fcmFtc19kZWZhdWx0YCwgYGRhbW9uX2xydV9zb3J0X2FwcGx5X3BhcmFtZXRlcnNgLCBgZGFtb25fcmVjbGFpbV9hcHBseV9wYXJhbWV0ZXJzYCwgYGRhbW9uX3N5c2ZzX3NldF9yZWdpb25zYCwgYW5kIGBkYW1vbl9zeXNmc19jb21taXRfaW5wdXRgLiBUaGF0JiMzOTtzIGEgcHJldHR5IHdpZGUgbmV0LCBlbmNvbXBhc3NpbmcgY29udGV4dCBjb21taXRtZW50LCBwYXJhbWV0ZXIgYXBwbGljYXRpb24sIGFuZCB0aGUgc3lzZnMgaW50ZXJmYWNlLgoKVGhlIHBhdGNoIGl0c2VsZiBpcyBhYm91dCBtb2RpZnlpbmcgY29yZSBEQU1PTiBsb2dpYywgc3BlY2lmaWNhbGx5IGNvbmNlcm5pbmcgY29udGV4dCBjb21taXRtZW50LCBwYXJhbWV0ZXIgdmFsaWRhdGlvbiwgYW5kIHN5c2ZzIGlucHV0LiBJIHNlZSBpdCYjMzk7cyByZW1vdmluZyBzb21lIHZhbGlkYXRpb24gY2hlY2tzIGZyb20gc3BlY2lmaWMgZnVuY3Rpb25zLiBUaGlzIHRyaWdnZXJzIGEgcmVkIGZsYWcsIGFzIGl0IG1ha2VzIHRoZSBtb2RpZmllZCBmdW5jdGlvbnMgbW9yZSB2dWxuZXJhYmxlIHRvIGFjY2VwdGluZyBpbnZhbGlkIHBhcmFtZXRlcnMuIFRoYXQgY291bGQgcG90ZW50aWFsbHkgaW50cm9kdWNlIHN1YnRsZSBidWdzIG9yIHVuZXhwZWN0ZWQgYmVoYXZpb3IgZG93biB0aGUgbGluZS4gV2UgcmVhbGx5IG5lZWQgdG8gcGF5IGF0dGVudGlvbiB0byB3aGVyZSB0aG9zZSBjaGVja3MgYXJlIG5vdywgb3IgaWYgdGhleSYjMzk7dmUgYmVlbiBtb3ZlZCB0byBhIGRpZmZlcmVudCBmdW5jdGlvbi4KCkdpdmVuIHRob3NlIGNoYW5nZXMsIHRoZSBtb3N0IGNyaXRpY2FsIHRoaW5nIHRvIGRvIGlzIGZ1enogdGhvc2UgbW9kaWZpZWQgZnVuY3Rpb25zLiBUaGF0IHNob3VsZCBiZSBvdXIgdG9wIHByaW9yaXR5LiBXZSBuZWVkIHRvIGhhbW1lciBvbiB0aGVtIHdpdGggaW52YWxpZCBhbmQgZWRnZS1jYXNlIGlucHV0cyB0byB2ZXJpZnkgc3RhYmlsaXR5LiBXZSBzaG91bGQgY2FsbCB0aGlzICYjMzQ7c2V0LXJlc3VsdHMuJiMzNDsKCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDEgMjM6MDI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0RBTU9OJiMzNDssCiAgICAmIzM0O0RBTU9OX1BBRERSJiMzNDssCiAgICAmIzM0O0RBTU9OX1ZBRERSJiMzNDssCiAgICAmIzM0O0RBTU9OX1NZU0ZTJiMzNDssCiAgICAmIzM0O0RBTU9OX1JFQ0xBSU0mIzM0OywKICAgICYjMzQ7REFNT05fTFJVX1NPUlQmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtkYW1vbl9jb21taXRfY3R4JiMzNDssCiAgICAmIzM0O2RhbW9uX3N0YXJ0JiMzNDssCiAgICAmIzM0O2RhbW9uX3NldF9yZWdpb25fc3lzdGVtX3JhbXNfZGVmYXVsdCYjMzQ7LAogICAgJiMzNDtkYW1vbl9scnVfc29ydF9hcHBseV9wYXJhbWV0ZXJzJiMzNDssCiAgICAmIzM0O2RhbW9uX3JlY2xhaW1fYXBwbHlfcGFyYW1ldGVycyYjMzQ7LAogICAgJiMzNDtkYW1vbl9zeXNmc19zZXRfcmVnaW9ucyYjMzQ7LAogICAgJiMzNDtkYW1vbl9zeXNmc19jb21taXRfaW5wdXQmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgY29yZSBEQU1PTiAoRGF0YSBBY2Nlc3MgTU9OaXRvcikgbG9naWMsIGluY2x1ZGluZyBjb250ZXh0IGNvbW1pdCBoYW5kbGluZywgcGFyYW1ldGVyIHZhbGlkYXRpb24sIGFuZCBzeXNmcyBpbnRlcmZhY2UgaW5wdXRzLiBJdCByZW1vdmVzIHNvbWUgdmFsaWRhdGlvbiBjaGVja3MgZnJvbSBzcGVjaWZpYyBmdW5jdGlvbnMgYW5kIG1vdmVzIHRoZW0gb3IgcmVsaWVzIG9uIG90aGVyIHZhbGlkYXRpb24sIHdoaWNoIGNvdWxkIGludHJvZHVjZSBidWdzIGlmIGludmFsaWQgcGFyYW1ldGVycyBhcmUgcGFzc2VkLiBGdXp6aW5nIHNob3VsZCBmb2N1cyBvbiB0aGUgbW9kaWZpZWQgZnVuY3Rpb25zIHRvIGVuc3VyZSBzdGFiaWxpdHkuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0RBTU9OJiMzNDssCiAgICAmIzM0O0RBTU9OX1BBRERSJiMzNDssCiAgICAmIzM0O0RBTU9OX1ZBRERSJiMzNDssCiAgICAmIzM0O0RBTU9OX1NZU0ZTJiMzNDssCiAgICAmIzM0O0RBTU9OX1JFQ0xBSU0mIzM0OywKICAgICYjMzQ7REFNT05fTFJVX1NPUlQmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtkYW1vbl9jb21taXRfY3R4JiMzNDssCiAgICAmIzM0O2RhbW9uX3N0YXJ0JiMzNDssCiAgICAmIzM0O2RhbW9uX3NldF9yZWdpb25fc3lzdGVtX3JhbXNfZGVmYXVsdCYjMzQ7LAogICAgJiMzNDtkYW1vbl9scnVfc29ydF9hcHBseV9wYXJhbWV0ZXJzJiMzNDssCiAgICAmIzM0O2RhbW9uX3JlY2xhaW1fYXBwbHlfcGFyYW1ldGVycyYjMzQ7LAogICAgJiMzNDtkYW1vbl9zeXNmc19zZXRfcmVnaW9ucyYjMzQ7LAogICAgJiMzNDtkYW1vbl9zeXNmc19jb21taXRfaW5wdXQmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgY29yZSBEQU1PTiAoRGF0YSBBY2Nlc3MgTU9OaXRvcikgbG9naWMsIGluY2x1ZGluZyBjb250ZXh0IGNvbW1pdCBoYW5kbGluZywgcGFyYW1ldGVyIHZhbGlkYXRpb24sIGFuZCBzeXNmcyBpbnRlcmZhY2UgaW5wdXRzLiBJdCByZW1vdmVzIHNvbWUgdmFsaWRhdGlvbiBjaGVja3MgZnJvbSBzcGVjaWZpYyBmdW5jdGlvbnMgYW5kIG1vdmVzIHRoZW0gb3IgcmVsaWVzIG9uIG90aGVyIHZhbGlkYXRpb24sIHdoaWNoIGNvdWxkIGludHJvZHVjZSBidWdzIGlmIGludmFsaWQgcGFyYW1ldGVycyBhcmUgcGFzc2VkLiBGdXp6aW5nIHNob3VsZCBmb2N1cyBvbiB0aGUgbW9kaWZpZWQgZnVuY3Rpb25zIHRvIGVuc3VyZSBzdGFiaWxpdHkuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNy0wMVQyMzowMTo1Ny4yMjQ4OTg0MTJaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNDY0NzA3OTg1NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJEQU1PTlwiLFxuICAgIFwiREFNT05fUEFERFJcIixcbiAgICBcIkRBTU9OX1ZBRERSXCIsXG4gICAgXCJEQU1PTl9TWVNGU1wiLFxuICAgIFwiREFNT05fUkVDTEFJTVwiLFxuICAgIFwiREFNT05fTFJVX1NPUlRcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJkYW1vbl9jb21taXRfY3R4XCIsXG4gICAgXCJkYW1vbl9zdGFydFwiLFxuICAgIFwiZGFtb25fc2V0X3JlZ2lvbl9zeXN0ZW1fcmFtc19kZWZhdWx0XCIsXG4gICAgXCJkYW1vbl9scnVfc29ydF9hcHBseV9wYXJhbWV0ZXJzXCIsXG4gICAgXCJkYW1vbl9yZWNsYWltX2FwcGx5X3BhcmFtZXRlcnNcIixcbiAgICBcImRhbW9uX3N5c2ZzX3NldF9yZWdpb25zXCIsXG4gICAgXCJkYW1vbl9zeXNmc19jb21taXRfaW5wdXRcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBjb3JlIERBTU9OIChEYXRhIEFjY2VzcyBNT05pdG9yKSBsb2dpYywgaW5jbHVkaW5nIGNvbnRleHQgY29tbWl0IGhhbmRsaW5nLCBwYXJhbWV0ZXIgdmFsaWRhdGlvbiwgYW5kIHN5c2ZzIGludGVyZmFjZSBpbnB1dHMuIEl0IHJlbW92ZXMgc29tZSB2YWxpZGF0aW9uIGNoZWNrcyBmcm9tIHNwZWNpZmljIGZ1bmN0aW9ucyBhbmQgbW92ZXMgdGhlbSBvciByZWxpZXMgb24gb3RoZXIgdmFsaWRhdGlvbiwgd2hpY2ggY291bGQgaW50cm9kdWNlIGJ1Z3MgaWYgaW52YWxpZCBwYXJhbWV0ZXJzIGFyZSBwYXNzZWQuIEZ1enppbmcgc2hvdWxkIGZvY3VzIG9uIHRoZSBtb2RpZmllZCBmdW5jdGlvbnMgdG8gZW5zdXJlIHN0YWJpbGl0eS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDFUMjM6MDE6NTcuMjI0OTA0MTUyWiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NDQ0MzgzOTEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCA2Y2JhYmQ4MmRjYjlmYzFmZWRhYTBhZDMwMDJmNzgxMTU3YTkzZmM1XFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBXZWQgSnVsIDEgMjM6MDE6NTUgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9kYW1vbi5oIGIvaW5jbHVkZS9saW51eC9kYW1vbi5oXFxuaW5kZXggY2ZiYmY4YmEyOGY2MzIuLmQwZjYwODU4N2MwODY5IDEwMDY0NFxcbi0tLSBhL2luY2x1ZGUvbGludXgvZGFtb24uaFxcbisrKyBiL2luY2x1ZGUvbGludXgvZGFtb24uaFxcbkBAIC01MSw3ICs1MSw4IEBAIHN0cnVjdCBkYW1vbl9zaXplX3JhbmdlIHtcXG4gICogQGxpc3Q6XFx0XFx0TGlzdCBoZWFkIGZvciBzaWJsaW5ncy5cXG4gICogQGFnZTpcXHRcXHRBZ2Ugb2YgdGhpcyByZWdpb24uXFxuICAqXFxuLSAqIEZvciBhbnkgdXNlIGNhc2UsIEBhciBzaG91bGQgYmUgbm9uLXplcm8gcG9zaXRpdmUgc2l6ZS5cXG4rICogRm9yIGFueSB1c2UgY2FzZSwgQGFyIHNob3VsZCBiZSBub24temVybyBwb3NpdGl2ZSBzaXplLiAgZGFtb25fc2V0X3JlZ2lvbnMoKVxcbisgKiBkb2VzIHRoZSB2YWxpZGF0aW9uLlxcbiAgKlxcbiAgKiBAbnJfYWNjZXNzZXMgaXMgcmVzZXQgdG8gemVybyBmb3IgZXZlcnkgXFx1MDAyNmRhbW9uX2F0dHJzLVxcdTAwM2VhZ2dyX2ludGVydmFsIGFuZCBiZVxcbiAgKiBpbmNyZWFzZWQgZm9yIGV2ZXJ5IFxcdTAwMjZkYW1vbl9hdHRycy1cXHUwMDNlc2FtcGxlX2ludGVydmFsIGlmIGFuIGFjY2VzcyB0byB0aGUgcmVnaW9uXFxuZGlmZiAtLWdpdCBhL21tL2RhbW9uL2NvcmUuYyBiL21tL2RhbW9uL2NvcmUuY1xcbmluZGV4IDlhMDMxMjMyNjljMjhlLi5mMmRlNTc5OWU2ODJmMyAxMDA2NDRcXG4tLS0gYS9tbS9kYW1vbi9jb3JlLmNcXG4rKysgYi9tbS9kYW1vbi9jb3JlLmNcXG5AQCAtMTU1NSwyMCArMTU1NSw3IEBAIHN0YXRpYyBpbnQgZGFtb25fY29tbWl0X3Byb2JlcyhzdHJ1Y3QgZGFtb25fY3R4ICpkc3QsIHN0cnVjdCBkYW1vbl9jdHggKnNyYylcXG4gXFx0cmV0dXJuIDA7XFxuIH1cXG4gXFxuLS8qKlxcbi0gKiBkYW1vbl9jb21taXRfY3R4KCkgLSBDb21taXQgcGFyYW1ldGVycyBvZiBhIERBTU9OIGNvbnRleHQgdG8gYW5vdGhlci5cXG4tICogQGRzdDpcXHRUaGUgY29tbWl0IGRlc3RpbmF0aW9uIERBTU9OIGNvbnRleHQuXFxuLSAqIEBzcmM6XFx0VGhlIGNvbW1pdCBzb3VyY2UgREFNT04gY29udGV4dC5cXG4tICpcXG4tICogVGhpcyBmdW5jdGlvbiBjb3BpZXMgdXNlci1zcGVjaWZpZWQgcGFyYW1ldGVycyBmcm9tIEBzcmMgdG8gQGRzdCBhbmQgdXBkYXRlXFxuLSAqIHRoZSBpbnRlcm5hbCBzdGF0dXMgYW5kIHJlc3VsdHMgYWNjb3JkaW5nbHkuICBVc2VycyBzaG91bGQgdXNlIHRoaXMgZnVuY3Rpb25cXG4tICogZm9yIGNvbnRleHQtbGV2ZWwgcGFyYW1ldGVycyB1cGRhdGUgb2YgcnVubmluZyBjb250ZXh0LCBpbnN0ZWFkIG9mIG1hbnVhbFxcbi0gKiBpbi1wbGFjZSB1cGRhdGVzLlxcbi0gKlxcbi0gKiBUaGlzIGZ1bmN0aW9uIHNob3VsZCBiZSBjYWxsZWQgZnJvbSBwYXJhbWV0ZXJzLXVwZGF0ZSBzYWZlIGNvbnRleHQsIGxpa2VcXG4tICogZGFtb25fY2FsbCgpLlxcbi0gKi9cXG4taW50IGRhbW9uX2NvbW1pdF9jdHgoc3RydWN0IGRhbW9uX2N0eCAqZHN0LCBzdHJ1Y3QgZGFtb25fY3R4ICpzcmMpXFxuK3N0YXRpYyBpbnQgX19kYW1vbl9jb21taXRfY3R4KHN0cnVjdCBkYW1vbl9jdHggKmRzdCwgc3RydWN0IGRhbW9uX2N0eCAqc3JjKVxcbiB7XFxuIFxcdGludCBlcnI7XFxuIFxcdHN0cnVjdCBkYW1vcyAqc2NoZW1lO1xcbkBAIC0xNjIzLDYgKzE2MTAsNTIgQEAgaW50IGRhbW9uX2NvbW1pdF9jdHgoc3RydWN0IGRhbW9uX2N0eCAqZHN0LCBzdHJ1Y3QgZGFtb25fY3R4ICpzcmMpXFxuIFxcdHJldHVybiAwO1xcbiB9XFxuIFxcbitzdGF0aWMgc3RydWN0IGRhbW9uX2N0eCAqZGFtb25fbmV3X3Rlc3RfY3R4KHN0cnVjdCBkYW1vbl9jdHggKmRzdClcXG4re1xcbitcXHRzdHJ1Y3QgZGFtb25fY3R4ICp0ZXN0X2N0eDtcXG4rXFx0aW50IGVycjtcXG4rXFxuK1xcdHRlc3RfY3R4ID0gZGFtb25fbmV3X2N0eCgpO1xcbitcXHRpZiAoIXRlc3RfY3R4KVxcbitcXHRcXHRyZXR1cm4gTlVMTDtcXG4rXFx0ZXJyID0gX19kYW1vbl9jb21taXRfY3R4KHRlc3RfY3R4LCBkc3QpO1xcbitcXHRpZiAoZXJyKSB7XFxuK1xcdFxcdGRhbW9uX2Rlc3Ryb3lfY3R4KHRlc3RfY3R4KTtcXG4rXFx0XFx0cmV0dXJuIE5VTEw7XFxuK1xcdH1cXG4rXFx0cmV0dXJuIHRlc3RfY3R4O1xcbit9XFxuK1xcbisvKipcXG4rICogZGFtb25fY29tbWl0X2N0eCgpIC0gQ29tbWl0IHBhcmFtZXRlcnMgb2YgYSBEQU1PTiBjb250ZXh0IHRvIGFub3RoZXIuXFxuKyAqIEBkc3Q6XFx0VGhlIGNvbW1pdCBkZXN0aW5hdGlvbiBEQU1PTiBjb250ZXh0LlxcbisgKiBAc3JjOlxcdFRoZSBjb21taXQgc291cmNlIERBTU9OIGNvbnRleHQuXFxuKyAqXFxuKyAqIFRoaXMgZnVuY3Rpb24gY29waWVzIHVzZXItc3BlY2lmaWVkIHBhcmFtZXRlcnMgZnJvbSBAc3JjIHRvIEBkc3QgYW5kIHVwZGF0ZVxcbisgKiB0aGUgaW50ZXJuYWwgc3RhdHVzIGFuZCByZXN1bHRzIGFjY29yZGluZ2x5LiAgVXNlcnMgc2hvdWxkIHVzZSB0aGlzIGZ1bmN0aW9uXFxuKyAqIGZvciBjb250ZXh0LWxldmVsIHBhcmFtZXRlcnMgdXBkYXRlIG9mIHJ1bm5pbmcgY29udGV4dCwgaW5zdGVhZCBvZiBtYW51YWxcXG4rICogaW4tcGxhY2UgdXBkYXRlcy5cXG4rICpcXG4rICogVGhpcyBmdW5jdGlvbiBzaG91bGQgYmUgY2FsbGVkIGZyb20gcGFyYW1ldGVycy11cGRhdGUgc2FmZSBjb250ZXh0LCBsaWtlXFxuKyAqIGRhbW9uX2NhbGwoKS5cXG4rICovXFxuK2ludCBkYW1vbl9jb21taXRfY3R4KHN0cnVjdCBkYW1vbl9jdHggKmRzdCwgc3RydWN0IGRhbW9uX2N0eCAqc3JjKVxcbit7XFxuK1xcdHN0cnVjdCBkYW1vbl9jdHggKnRlc3RfY3R4O1xcbitcXHRpbnQgZXJyO1xcbitcXG4rXFx0dGVzdF9jdHggPSBkYW1vbl9uZXdfdGVzdF9jdHgoZHN0KTtcXG4rXFx0aWYgKCF0ZXN0X2N0eClcXG4rXFx0XFx0cmV0dXJuIC1FTk9NRU07XFxuK1xcdGVyciA9IF9fZGFtb25fY29tbWl0X2N0eCh0ZXN0X2N0eCwgZHN0KTtcXG4rXFx0aWYgKGVycilcXG4rXFx0XFx0Z290byBvdXQ7XFxuK1xcdGVyciA9IF9fZGFtb25fY29tbWl0X2N0eChkc3QsIHNyYyk7XFxuK291dDpcXG4rXFx0ZGFtb25fZGVzdHJveV9jdHgodGVzdF9jdHgpO1xcbitcXHRyZXR1cm4gZXJyO1xcbit9XFxuK1xcbiAvKipcXG4gICogZGFtb25fbnJfcnVubmluZ19jdHhzKCkgLSBSZXR1cm4gbnVtYmVyIG9mIGN1cnJlbnRseSBydW5uaW5nIGNvbnRleHRzLlxcbiAgKi9cXG5AQCAtMTcyMyw2ICsxNzU2LDggQEAgc3RhdGljIGludCBfX2RhbW9uX3N0YXJ0KHN0cnVjdCBkYW1vbl9jdHggKmN0eClcXG4gXFx0cmV0dXJuIGVycjtcXG4gfVxcbiBcXG4rc3RhdGljIGludCBfX2RhbW9uX2NvbW1pdF9jdHgoc3RydWN0IGRhbW9uX2N0eCAqZHN0LCBzdHJ1Y3QgZGFtb25fY3R4ICpzcmMpO1xcbitcXG4gLyoqXFxuICAqIGRhbW9uX3N0YXJ0KCkgLSBTdGFydHMgdGhlIG1vbml0b3JpbmdzIGZvciBhIGdpdmVuIGdyb3VwIG9mIGNvbnRleHRzLlxcbiAgKiBAY3R4czpcXHRhbiBhcnJheSBvZiB0aGUgcG9pbnRlcnMgZm9yIGNvbnRleHRzIHRvIHN0YXJ0IG1vbml0b3JpbmdcXG5AQCAtMTc0MCwxMyArMTc3NSwyMiBAQCBzdGF0aWMgaW50IF9fZGFtb25fc3RhcnQoc3RydWN0IGRhbW9uX2N0eCAqY3R4KVxcbiAgKi9cXG4gaW50IGRhbW9uX3N0YXJ0KHN0cnVjdCBkYW1vbl9jdHggKipjdHhzLCBpbnQgbnJfY3R4cywgYm9vbCBleGNsdXNpdmUpXFxuIHtcXG4rXFx0c3RydWN0IGRhbW9uX2N0eCAqdGVzdF9jdHg7XFxuIFxcdGludCBpO1xcbiBcXHRpbnQgZXJyID0gMDtcXG4gXFxuK1xcdHRlc3RfY3R4ID0gZGFtb25fbmV3X2N0eCgpO1xcbitcXHRpZiAoIXRlc3RfY3R4KVxcbitcXHRcXHRyZXR1cm4gLUVOT01FTTtcXG4rXFxuIFxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBucl9jdHhzOyBpKyspIHtcXG4tXFx0XFx0aWYgKCFpc19wb3dlcl9vZl8yKGN0eHNbaV0tXFx1MDAzZW1pbl9yZWdpb25fc3opKVxcbi1cXHRcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4rXFx0XFx0ZXJyID0gX19kYW1vbl9jb21taXRfY3R4KHRlc3RfY3R4LCBjdHhzW2ldKTtcXG4rXFx0XFx0aWYgKGVycikge1xcbitcXHRcXHRcXHRkYW1vbl9kZXN0cm95X2N0eCh0ZXN0X2N0eCk7XFxuK1xcdFxcdFxcdHJldHVybiBlcnI7XFxuK1xcdFxcdH1cXG4gXFx0fVxcbitcXHRkYW1vbl9kZXN0cm95X2N0eCh0ZXN0X2N0eCk7XFxuIFxcbiBcXHRtdXRleF9sb2NrKFxcdTAwMjZkYW1vbl9sb2NrKTtcXG4gXFx0aWYgKChleGNsdXNpdmUgXFx1MDAyNlxcdTAwMjYgbnJfcnVubmluZ19jdHhzKSB8fFxcbkBAIC0zNzM4LDkgKzM3ODIsNiBAQCBpbnQgZGFtb25fc2V0X3JlZ2lvbl9zeXN0ZW1fcmFtc19kZWZhdWx0KHN0cnVjdCBkYW1vbl90YXJnZXQgKnQsXFxuIHtcXG4gXFx0c3RydWN0IGRhbW9uX2FkZHJfcmFuZ2UgYWRkcl9yYW5nZTtcXG4gXFxuLVxcdGlmICgqc3RhcnQgXFx1MDAzZSAqZW5kKVxcbi1cXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4tXFxuIFxcdGlmICghKnN0YXJ0IFxcdTAwMjZcXHUwMDI2ICEqZW5kIFxcdTAwMjZcXHUwMDI2XFxuIFxcdFxcdCFkYW1vbl9maW5kX3N5c3RlbV9yYW1zX3JhbmdlKHN0YXJ0LCBlbmQsIGFkZHJfdW5pdCkpXFxuIFxcdFxcdHJldHVybiAtRUlOVkFMO1xcbmRpZmYgLS1naXQgYS9tbS9kYW1vbi9scnVfc29ydC5jIGIvbW0vZGFtb24vbHJ1X3NvcnQuY1xcbmluZGV4IDMyZjQxNDkxYjcyNmIyLi4yZGQwY2QwZDI2MjczMSAxMDA2NDRcXG4tLS0gYS9tbS9kYW1vbi9scnVfc29ydC5jXFxuKysrIGIvbW0vZGFtb24vbHJ1X3NvcnQuY1xcbkBAIC0yODQsMTEgKzI4NCw2IEBAIHN0YXRpYyBpbnQgZGFtb25fbHJ1X3NvcnRfYXBwbHlfcGFyYW1ldGVycyh2b2lkKVxcbiBcXHRwYXJhbV9jdHgtXFx1MDAzZWFkZHJfdW5pdCA9IGFkZHJfdW5pdDtcXG4gXFx0cGFyYW1fY3R4LVxcdTAwM2VtaW5fcmVnaW9uX3N6ID0gbWF4KERBTU9OX01JTl9SRUdJT05fU1ogLyBhZGRyX3VuaXQsIDEpO1xcbiBcXG4tXFx0aWYgKCFpc19wb3dlcl9vZl8yKHBhcmFtX2N0eC1cXHUwMDNlbWluX3JlZ2lvbl9zeikpIHtcXG4tXFx0XFx0ZXJyID0gLUVJTlZBTDtcXG4tXFx0XFx0Z290byBvdXQ7XFxuLVxcdH1cXG4tXFxuIFxcdGlmICghZGFtb25fbHJ1X3NvcnRfbW9uX2F0dHJzLnNhbXBsZV9pbnRlcnZhbCkge1xcbiBcXHRcXHRlcnIgPSAtRUlOVkFMO1xcbiBcXHRcXHRnb3RvIG91dDtcXG5kaWZmIC0tZ2l0IGEvbW0vZGFtb24vcmVjbGFpbS5jIGIvbW0vZGFtb24vcmVjbGFpbS5jXFxuaW5kZXggMTFiNzBkMGE5YTZmMGEuLjY0NjliMjVjYzM0ZjkyIDEwMDY0NFxcbi0tLSBhL21tL2RhbW9uL3JlY2xhaW0uY1xcbisrKyBiL21tL2RhbW9uL3JlY2xhaW0uY1xcbkBAIC0yMDgsMTEgKzIwOCw2IEBAIHN0YXRpYyBpbnQgZGFtb25fcmVjbGFpbV9hcHBseV9wYXJhbWV0ZXJzKHZvaWQpXFxuIFxcdHBhcmFtX2N0eC1cXHUwMDNlYWRkcl91bml0ID0gYWRkcl91bml0O1xcbiBcXHRwYXJhbV9jdHgtXFx1MDAzZW1pbl9yZWdpb25fc3ogPSBtYXgoREFNT05fTUlOX1JFR0lPTl9TWiAvIGFkZHJfdW5pdCwgMSk7XFxuIFxcbi1cXHRpZiAoIWlzX3Bvd2VyX29mXzIocGFyYW1fY3R4LVxcdTAwM2VtaW5fcmVnaW9uX3N6KSkge1xcbi1cXHRcXHRlcnIgPSAtRUlOVkFMO1xcbi1cXHRcXHRnb3RvIG91dDtcXG4tXFx0fVxcbi1cXG4gXFx0aWYgKCFkYW1vbl9yZWNsYWltX21vbl9hdHRycy5hZ2dyX2ludGVydmFsKSB7XFxuIFxcdFxcdGVyciA9IC1FSU5WQUw7XFxuIFxcdFxcdGdvdG8gb3V0O1xcbmRpZmYgLS1naXQgYS9tbS9kYW1vbi9zeXNmcy5jIGIvbW0vZGFtb24vc3lzZnMuY1xcbmluZGV4IGUzNTI2YTI2M2UyMDVmLi45MzNmZjMwM2RlNWExMiAxMDA2NDRcXG4tLS0gYS9tbS9kYW1vbi9zeXNmcy5jXFxuKysrIGIvbW0vZGFtb24vc3lzZnMuY1xcbkBAIC0xOTY5LDkgKzE5NjksNiBAQCBzdGF0aWMgaW50IGRhbW9uX3N5c2ZzX3NldF9yZWdpb25zKHN0cnVjdCBkYW1vbl90YXJnZXQgKnQsXFxuIFxcdFxcdHN0cnVjdCBkYW1vbl9zeXNmc19yZWdpb24gKnN5c19yZWdpb24gPVxcbiBcXHRcXHRcXHRzeXNmc19yZWdpb25zLVxcdTAwM2VyZWdpb25zX2FycltpXTtcXG4gXFxuLVxcdFxcdGlmIChzeXNfcmVnaW9uLVxcdTAwM2Vhci5zdGFydCBcXHUwMDNlIHN5c19yZWdpb24tXFx1MDAzZWFyLmVuZClcXG4tXFx0XFx0XFx0Z290byBvdXQ7XFxuLVxcbiBcXHRcXHRyYW5nZXNbaV0uc3RhcnQgPSBzeXNfcmVnaW9uLVxcdTAwM2Vhci5zdGFydDtcXG4gXFx0XFx0cmFuZ2VzW2ldLmVuZCA9IHN5c19yZWdpb24tXFx1MDAzZWFyLmVuZDtcXG4gXFx0XFx0aWYgKGkgPT0gMClcXG5AQCAtMjA4MCwyNiArMjA3Nyw2IEBAIHN0YXRpYyBpbnQgZGFtb25fc3lzZnNfYXBwbHlfaW5wdXRzKHN0cnVjdCBkYW1vbl9jdHggKmN0eCxcXG4gc3RhdGljIHN0cnVjdCBkYW1vbl9jdHggKmRhbW9uX3N5c2ZzX2J1aWxkX2N0eChcXG4gXFx0XFx0c3RydWN0IGRhbW9uX3N5c2ZzX2NvbnRleHQgKnN5c19jdHgpO1xcbiBcXG4tLypcXG4tICogUmV0dXJuIGEgbmV3IGRhbW9uX2N0eCBmb3IgdGVzdGluZyBuZXcgcGFyYW1ldGVycyB0byBjb21taXQuXFxuLSAqL1xcbi1zdGF0aWMgc3RydWN0IGRhbW9uX2N0eCAqZGFtb25fc3lzZnNfbmV3X3Rlc3RfY3R4KFxcbi1cXHRcXHRzdHJ1Y3QgZGFtb25fY3R4ICpydW5uaW5nX2N0eClcXG4te1xcbi1cXHRzdHJ1Y3QgZGFtb25fY3R4ICp0ZXN0X2N0eDtcXG4tXFx0aW50IGVycjtcXG4tXFxuLVxcdHRlc3RfY3R4ID0gZGFtb25fbmV3X2N0eCgpO1xcbi1cXHRpZiAoIXRlc3RfY3R4KVxcbi1cXHRcXHRyZXR1cm4gTlVMTDtcXG4tXFx0ZXJyID0gZGFtb25fY29tbWl0X2N0eCh0ZXN0X2N0eCwgcnVubmluZ19jdHgpO1xcbi1cXHRpZiAoZXJyKSB7XFxuLVxcdFxcdGRhbW9uX2Rlc3Ryb3lfY3R4KHRlc3RfY3R4KTtcXG4tXFx0XFx0cmV0dXJuIE5VTEw7XFxuLVxcdH1cXG4tXFx0cmV0dXJuIHRlc3RfY3R4O1xcbi19XFxuLVxcbiAvKlxcbiAgKiBkYW1vbl9zeXNmc19jb21taXRfaW5wdXQoKSAtIENvbW1pdCB1c2VyIGlucHV0cyB0byBhIHJ1bm5pbmcga2RhbW9uZC5cXG4gICogQGtkYW1vbmQ6XFx0VGhlIGtvYmplY3Qgd3JhcHBlciBmb3IgdGhlIGFzc29jaWF0ZWQga2RhbW9uZC5cXG5AQCAtMjEwOSw3ICsyMDg2LDcgQEAgc3RhdGljIHN0cnVjdCBkYW1vbl9jdHggKmRhbW9uX3N5c2ZzX25ld190ZXN0X2N0eChcXG4gc3RhdGljIGludCBkYW1vbl9zeXNmc19jb21taXRfaW5wdXQodm9pZCAqZGF0YSlcXG4ge1xcbiBcXHRzdHJ1Y3QgZGFtb25fc3lzZnNfa2RhbW9uZCAqa2RhbW9uZCA9IGRhdGE7XFxuLVxcdHN0cnVjdCBkYW1vbl9jdHggKnBhcmFtX2N0eCwgKnRlc3RfY3R4O1xcbitcXHRzdHJ1Y3QgZGFtb25fY3R4ICpwYXJhbV9jdHg7XFxuIFxcdGludCBlcnI7XFxuIFxcbiBcXHRpZiAoIWRhbW9uX3N5c2ZzX2tkYW1vbmRfcnVubmluZyhrZGFtb25kKSlcXG5AQCAtMjEyMSwxNyArMjA5OCw3IEBAIHN0YXRpYyBpbnQgZGFtb25fc3lzZnNfY29tbWl0X2lucHV0KHZvaWQgKmRhdGEpXFxuIFxcdHBhcmFtX2N0eCA9IGRhbW9uX3N5c2ZzX2J1aWxkX2N0eChrZGFtb25kLVxcdTAwM2Vjb250ZXh0cy1cXHUwMDNlY29udGV4dHNfYXJyWzBdKTtcXG4gXFx0aWYgKElTX0VSUihwYXJhbV9jdHgpKVxcbiBcXHRcXHRyZXR1cm4gUFRSX0VSUihwYXJhbV9jdHgpO1xcbi1cXHR0ZXN0X2N0eCA9IGRhbW9uX3N5c2ZzX25ld190ZXN0X2N0eChrZGFtb25kLVxcdTAwM2VkYW1vbl9jdHgpO1xcbi1cXHRpZiAoIXRlc3RfY3R4KSB7XFxuLVxcdFxcdGRhbW9uX2Rlc3Ryb3lfY3R4KHBhcmFtX2N0eCk7XFxuLVxcdFxcdHJldHVybiAtRU5PTUVNO1xcbi1cXHR9XFxuLVxcdGVyciA9IGRhbW9uX2NvbW1pdF9jdHgodGVzdF9jdHgsIHBhcmFtX2N0eCk7XFxuLVxcdGlmIChlcnIpXFxuLVxcdFxcdGdvdG8gb3V0O1xcbiBcXHRlcnIgPSBkYW1vbl9jb21taXRfY3R4KGtkYW1vbmQtXFx1MDAzZWRhbW9uX2N0eCwgcGFyYW1fY3R4KTtcXG4tb3V0Olxcbi1cXHRkYW1vbl9kZXN0cm95X2N0eCh0ZXN0X2N0eCk7XFxuIFxcdGRhbW9uX2Rlc3Ryb3lfY3R4KHBhcmFtX2N0eCk7XFxuIFxcdHJldHVybiBlcnI7XFxuIH1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDFUMjM6MDE6NTcuNzcwMjIyMzYzWiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyNDEwMTc0ODA5NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJEQU1PTlwiLFxuICAgIFwiREFNT05fUEFERFJcIixcbiAgICBcIkRBTU9OX1ZBRERSXCIsXG4gICAgXCJEQU1PTl9TWVNGU1wiLFxuICAgIFwiREFNT05fUkVDTEFJTVwiLFxuICAgIFwiREFNT05fTFJVX1NPUlRcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJkYW1vbl9jb21taXRfY3R4XCIsXG4gICAgXCJkYW1vbl9zdGFydFwiLFxuICAgIFwiZGFtb25fc2V0X3JlZ2lvbl9zeXN0ZW1fcmFtc19kZWZhdWx0XCIsXG4gICAgXCJkYW1vbl9scnVfc29ydF9hcHBseV9wYXJhbWV0ZXJzXCIsXG4gICAgXCJkYW1vbl9yZWNsYWltX2FwcGx5X3BhcmFtZXRlcnNcIixcbiAgICBcImRhbW9uX3N5c2ZzX3NldF9yZWdpb25zXCIsXG4gICAgXCJkYW1vbl9zeXNmc19jb21taXRfaW5wdXRcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBjb3JlIERBTU9OIChEYXRhIEFjY2VzcyBNT05pdG9yKSBsb2dpYywgaW5jbHVkaW5nIGNvbnRleHQgY29tbWl0IGhhbmRsaW5nLCBwYXJhbWV0ZXIgdmFsaWRhdGlvbiwgYW5kIHN5c2ZzIGludGVyZmFjZSBpbnB1dHMuIEl0IHJlbW92ZXMgc29tZSB2YWxpZGF0aW9uIGNoZWNrcyBmcm9tIHNwZWNpZmljIGZ1bmN0aW9ucyBhbmQgbW92ZXMgdGhlbSBvciByZWxpZXMgb24gb3RoZXIgdmFsaWRhdGlvbiwgd2hpY2ggY291bGQgaW50cm9kdWNlIGJ1Z3MgaWYgaW52YWxpZCBwYXJhbWV0ZXJzIGFyZSBwYXNzZWQuIEZ1enppbmcgc2hvdWxkIGZvY3VzIG9uIHRoZSBtb2RpZmllZCBmdW5jdGlvbnMgdG8gZW5zdXJlIHN0YWJpbGl0eS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdFxuICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LFxuICAgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCA2Y2JhYmQ4MmRjYjlmYzFmZWRhYTBhZDMwMDJmNzgxMTU3YTkzZmM1XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFdlZCBKdWwgMSAyMzowMTo1NSAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvZGFtb24uaCBiL2luY2x1ZGUvbGludXgvZGFtb24uaFxuaW5kZXggY2ZiYmY4YmEyOGY2MzIuLmQwZjYwODU4N2MwODY5IDEwMDY0NFxuLS0tIGEvaW5jbHVkZS9saW51eC9kYW1vbi5oXG4rKysgYi9pbmNsdWRlL2xpbnV4L2RhbW9uLmhcbkBAIC01MSw3ICs1MSw4IEBAIHN0cnVjdCBkYW1vbl9zaXplX3JhbmdlIHtcbiAgKiBAbGlzdDpcdFx0TGlzdCBoZWFkIGZvciBzaWJsaW5ncy5cbiAgKiBAYWdlOlx0XHRBZ2Ugb2YgdGhpcyByZWdpb24uXG4gICpcbi0gKiBGb3IgYW55IHVzZSBjYXNlLCBAYXIgc2hvdWxkIGJlIG5vbi16ZXJvIHBvc2l0aXZlIHNpemUuXG4rICogRm9yIGFueSB1c2UgY2FzZSwgQGFyIHNob3VsZCBiZSBub24temVybyBwb3NpdGl2ZSBzaXplLiAgZGFtb25fc2V0X3JlZ2lvbnMoKVxuKyAqIGRvZXMgdGhlIHZhbGlkYXRpb24uXG4gICpcbiAgKiBAbnJfYWNjZXNzZXMgaXMgcmVzZXQgdG8gemVybyBmb3IgZXZlcnkgXHUwMDI2ZGFtb25fYXR0cnMtXHUwMDNlYWdncl9pbnRlcnZhbCBhbmQgYmVcbiAgKiBpbmNyZWFzZWQgZm9yIGV2ZXJ5IFx1MDAyNmRhbW9uX2F0dHJzLVx1MDAzZXNhbXBsZV9pbnRlcnZhbCBpZiBhbiBhY2Nlc3MgdG8gdGhlIHJlZ2lvblxuZGlmZiAtLWdpdCBhL21tL2RhbW9uL2NvcmUuYyBiL21tL2RhbW9uL2NvcmUuY1xuaW5kZXggOWEwMzEyMzI2OWMyOGUuLmYyZGU1Nzk5ZTY4MmYzIDEwMDY0NFxuLS0tIGEvbW0vZGFtb24vY29yZS5jXG4rKysgYi9tbS9kYW1vbi9jb3JlLmNcbkBAIC0xNTU1LDIwICsxNTU1LDcgQEAgc3RhdGljIGludCBkYW1vbl9jb21taXRfcHJvYmVzKHN0cnVjdCBkYW1vbl9jdHggKmRzdCwgc3RydWN0IGRhbW9uX2N0eCAqc3JjKVxuIFx0cmV0dXJuIDA7XG4gfVxuIFxuLS8qKlxuLSAqIGRhbW9uX2NvbW1pdF9jdHgoKSAtIENvbW1pdCBwYXJhbWV0ZXJzIG9mIGEgREFNT04gY29udGV4dCB0byBhbm90aGVyLlxuLSAqIEBkc3Q6XHRUaGUgY29tbWl0IGRlc3RpbmF0aW9uIERBTU9OIGNvbnRleHQuXG4tICogQHNyYzpcdFRoZSBjb21taXQgc291cmNlIERBTU9OIGNvbnRleHQuXG4tICpcbi0gKiBUaGlzIGZ1bmN0aW9uIGNvcGllcyB1c2VyLXNwZWNpZmllZCBwYXJhbWV0ZXJzIGZyb20gQHNyYyB0byBAZHN0IGFuZCB1cGRhdGVcbi0gKiB0aGUgaW50ZXJuYWwgc3RhdHVzIGFuZCByZXN1bHRzIGFjY29yZGluZ2x5LiAgVXNlcnMgc2hvdWxkIHVzZSB0aGlzIGZ1bmN0aW9uXG4tICogZm9yIGNvbnRleHQtbGV2ZWwgcGFyYW1ldGVycyB1cGRhdGUgb2YgcnVubmluZyBjb250ZXh0LCBpbnN0ZWFkIG9mIG1hbnVhbFxuLSAqIGluLXBsYWNlIHVwZGF0ZXMuXG4tICpcbi0gKiBUaGlzIGZ1bmN0aW9uIHNob3VsZCBiZSBjYWxsZWQgZnJvbSBwYXJhbWV0ZXJzLXVwZGF0ZSBzYWZlIGNvbnRleHQsIGxpa2Vcbi0gKiBkYW1vbl9jYWxsKCkuXG4tICovXG4taW50IGRhbW9uX2NvbW1pdF9jdHgoc3RydWN0IGRhbW9uX2N0eCAqZHN0LCBzdHJ1Y3QgZGFtb25fY3R4ICpzcmMpXG4rc3RhdGljIGludCBfX2RhbW9uX2NvbW1pdF9jdHgoc3RydWN0IGRhbW9uX2N0eCAqZHN0LCBzdHJ1Y3QgZGFtb25fY3R4ICpzcmMpXG4ge1xuIFx0aW50IGVycjtcbiBcdHN0cnVjdCBkYW1vcyAqc2NoZW1lO1xuQEAgLTE2MjMsNiArMTYxMCw1MiBAQCBpbnQgZGFtb25fY29tbWl0X2N0eChzdHJ1Y3QgZGFtb25fY3R4ICpkc3QsIHN0cnVjdCBkYW1vbl9jdHggKnNyYylcbiBcdHJldHVybiAwO1xuIH1cbiBcbitzdGF0aWMgc3RydWN0IGRhbW9uX2N0eCAqZGFtb25fbmV3X3Rlc3RfY3R4KHN0cnVjdCBkYW1vbl9jdHggKmRzdClcbit7XG4rXHRzdHJ1Y3QgZGFtb25fY3R4ICp0ZXN0X2N0eDtcbitcdGludCBlcnI7XG4rXG4rXHR0ZXN0X2N0eCA9IGRhbW9uX25ld19jdHgoKTtcbitcdGlmICghdGVzdF9jdHgpXG4rXHRcdHJldHVybiBOVUxMO1xuK1x0ZXJyID0gX19kYW1vbl9jb21taXRfY3R4KHRlc3RfY3R4LCBkc3QpO1xuK1x0aWYgKGVycikge1xuK1x0XHRkYW1vbl9kZXN0cm95X2N0eCh0ZXN0X2N0eCk7XG4rXHRcdHJldHVybiBOVUxMO1xuK1x0fVxuK1x0cmV0dXJuIHRlc3RfY3R4O1xuK31cbitcbisvKipcbisgKiBkYW1vbl9jb21taXRfY3R4KCkgLSBDb21taXQgcGFyYW1ldGVycyBvZiBhIERBTU9OIGNvbnRleHQgdG8gYW5vdGhlci5cbisgKiBAZHN0Olx0VGhlIGNvbW1pdCBkZXN0aW5hdGlvbiBEQU1PTiBjb250ZXh0LlxuKyAqIEBzcmM6XHRUaGUgY29tbWl0IHNvdXJjZSBEQU1PTiBjb250ZXh0LlxuKyAqXG4rICogVGhpcyBmdW5jdGlvbiBjb3BpZXMgdXNlci1zcGVjaWZpZWQgcGFyYW1ldGVycyBmcm9tIEBzcmMgdG8gQGRzdCBhbmQgdXBkYXRlXG4rICogdGhlIGludGVybmFsIHN0YXR1cyBhbmQgcmVzdWx0cyBhY2NvcmRpbmdseS4gIFVzZXJzIHNob3VsZCB1c2UgdGhpcyBmdW5jdGlvblxuKyAqIGZvciBjb250ZXh0LWxldmVsIHBhcmFtZXRlcnMgdXBkYXRlIG9mIHJ1bm5pbmcgY29udGV4dCwgaW5zdGVhZCBvZiBtYW51YWxcbisgKiBpbi1wbGFjZSB1cGRhdGVzLlxuKyAqXG4rICogVGhpcyBmdW5jdGlvbiBzaG91bGQgYmUgY2FsbGVkIGZyb20gcGFyYW1ldGVycy11cGRhdGUgc2FmZSBjb250ZXh0LCBsaWtlXG4rICogZGFtb25fY2FsbCgpLlxuKyAqL1xuK2ludCBkYW1vbl9jb21taXRfY3R4KHN0cnVjdCBkYW1vbl9jdHggKmRzdCwgc3RydWN0IGRhbW9uX2N0eCAqc3JjKVxuK3tcbitcdHN0cnVjdCBkYW1vbl9jdHggKnRlc3RfY3R4O1xuK1x0aW50IGVycjtcbitcbitcdHRlc3RfY3R4ID0gZGFtb25fbmV3X3Rlc3RfY3R4KGRzdCk7XG4rXHRpZiAoIXRlc3RfY3R4KVxuK1x0XHRyZXR1cm4gLUVOT01FTTtcbitcdGVyciA9IF9fZGFtb25fY29tbWl0X2N0eCh0ZXN0X2N0eCwgZHN0KTtcbitcdGlmIChlcnIpXG4rXHRcdGdvdG8gb3V0O1xuK1x0ZXJyID0gX19kYW1vbl9jb21taXRfY3R4KGRzdCwgc3JjKTtcbitvdXQ6XG4rXHRkYW1vbl9kZXN0cm95X2N0eCh0ZXN0X2N0eCk7XG4rXHRyZXR1cm4gZXJyO1xuK31cbitcbiAvKipcbiAgKiBkYW1vbl9ucl9ydW5uaW5nX2N0eHMoKSAtIFJldHVybiBudW1iZXIgb2YgY3VycmVudGx5IHJ1bm5pbmcgY29udGV4dHMuXG4gICovXG5AQCAtMTcyMyw2ICsxNzU2LDggQEAgc3RhdGljIGludCBfX2RhbW9uX3N0YXJ0KHN0cnVjdCBkYW1vbl9jdHggKmN0eClcbiBcdHJldHVybiBlcnI7XG4gfVxuIFxuK3N0YXRpYyBpbnQgX19kYW1vbl9jb21taXRfY3R4KHN0cnVjdCBkYW1vbl9jdHggKmRzdCwgc3RydWN0IGRhbW9uX2N0eCAqc3JjKTtcbitcbiAvKipcbiAgKiBkYW1vbl9zdGFydCgpIC0gU3RhcnRzIHRoZSBtb25pdG9yaW5ncyBmb3IgYSBnaXZlbiBncm91cCBvZiBjb250ZXh0cy5cbiAgKiBAY3R4czpcdGFuIGFycmF5IG9mIHRoZSBwb2ludGVycyBmb3IgY29udGV4dHMgdG8gc3RhcnQgbW9uaXRvcmluZ1xuQEAgLTE3NDAsMTMgKzE3NzUsMjIgQEAgc3RhdGljIGludCBfX2RhbW9uX3N0YXJ0KHN0cnVjdCBkYW1vbl9jdHggKmN0eClcbiAgKi9cbiBpbnQgZGFtb25fc3RhcnQoc3RydWN0IGRhbW9uX2N0eCAqKmN0eHMsIGludCBucl9jdHhzLCBib29sIGV4Y2x1c2l2ZSlcbiB7XG4rXHRzdHJ1Y3QgZGFtb25fY3R4ICp0ZXN0X2N0eDtcbiBcdGludCBpO1xuIFx0aW50IGVyciA9IDA7XG4gXG4rXHR0ZXN0X2N0eCA9IGRhbW9uX25ld19jdHgoKTtcbitcdGlmICghdGVzdF9jdHgpXG4rXHRcdHJldHVybiAtRU5PTUVNO1xuK1xuIFx0Zm9yIChpID0gMDsgaSBcdTAwM2MgbnJfY3R4czsgaSsrKSB7XG4tXHRcdGlmICghaXNfcG93ZXJfb2ZfMihjdHhzW2ldLVx1MDAzZW1pbl9yZWdpb25fc3opKVxuLVx0XHRcdHJldHVybiAtRUlOVkFMO1xuK1x0XHRlcnIgPSBfX2RhbW9uX2NvbW1pdF9jdHgodGVzdF9jdHgsIGN0eHNbaV0pO1xuK1x0XHRpZiAoZXJyKSB7XG4rXHRcdFx0ZGFtb25fZGVzdHJveV9jdHgodGVzdF9jdHgpO1xuK1x0XHRcdHJldHVybiBlcnI7XG4rXHRcdH1cbiBcdH1cbitcdGRhbW9uX2Rlc3Ryb3lfY3R4KHRlc3RfY3R4KTtcbiBcbiBcdG11dGV4X2xvY2soXHUwMDI2ZGFtb25fbG9jayk7XG4gXHRpZiAoKGV4Y2x1c2l2ZSBcdTAwMjZcdTAwMjYgbnJfcnVubmluZ19jdHhzKSB8fFxuQEAgLTM3MzgsOSArMzc4Miw2IEBAIGludCBkYW1vbl9zZXRfcmVnaW9uX3N5c3RlbV9yYW1zX2RlZmF1bHQoc3RydWN0IGRhbW9uX3RhcmdldCAqdCxcbiB7XG4gXHRzdHJ1Y3QgZGFtb25fYWRkcl9yYW5nZSBhZGRyX3JhbmdlO1xuIFxuLVx0aWYgKCpzdGFydCBcdTAwM2UgKmVuZClcbi1cdFx0cmV0dXJuIC1FSU5WQUw7XG4tXG4gXHRpZiAoISpzdGFydCBcdTAwMjZcdTAwMjYgISplbmQgXHUwMDI2XHUwMDI2XG4gXHRcdCFkYW1vbl9maW5kX3N5c3RlbV9yYW1zX3JhbmdlKHN0YXJ0LCBlbmQsIGFkZHJfdW5pdCkpXG4gXHRcdHJldHVybiAtRUlOVkFMO1xuZGlmZiAtLWdpdCBhL21tL2RhbW9uL2xydV9zb3J0LmMgYi9tbS9kYW1vbi9scnVfc29ydC5jXG5pbmRleCAzMmY0MTQ5MWI3MjZiMi4uMmRkMGNkMGQyNjI3MzEgMTAwNjQ0XG4tLS0gYS9tbS9kYW1vbi9scnVfc29ydC5jXG4rKysgYi9tbS9kYW1vbi9scnVfc29ydC5jXG5AQCAtMjg0LDExICsyODQsNiBAQCBzdGF0aWMgaW50IGRhbW9uX2xydV9zb3J0X2FwcGx5X3BhcmFtZXRlcnModm9pZClcbiBcdHBhcmFtX2N0eC1cdTAwM2VhZGRyX3VuaXQgPSBhZGRyX3VuaXQ7XG4gXHRwYXJhbV9jdHgtXHUwMDNlbWluX3JlZ2lvbl9zeiA9IG1heChEQU1PTl9NSU5fUkVHSU9OX1NaIC8gYWRkcl91bml0LCAxKTtcbiBcbi1cdGlmICghaXNfcG93ZXJfb2ZfMihwYXJhbV9jdHgtXHUwMDNlbWluX3JlZ2lvbl9zeikpIHtcbi1cdFx0ZXJyID0gLUVJTlZBTDtcbi1cdFx0Z290byBvdXQ7XG4tXHR9XG4tXG4gXHRpZiAoIWRhbW9uX2xydV9zb3J0X21vbl9hdHRycy5zYW1wbGVfaW50ZXJ2YWwpIHtcbiBcdFx0ZXJyID0gLUVJTlZBTDtcbiBcdFx0Z290byBvdXQ7XG5kaWZmIC0tZ2l0IGEvbW0vZGFtb24vcmVjbGFpbS5jIGIvbW0vZGFtb24vcmVjbGFpbS5jXG5pbmRleCAxMWI3MGQwYTlhNmYwYS4uNjQ2OWIyNWNjMzRmOTIgMTAwNjQ0XG4tLS0gYS9tbS9kYW1vbi9yZWNsYWltLmNcbisrKyBiL21tL2RhbW9uL3JlY2xhaW0uY1xuQEAgLTIwOCwxMSArMjA4LDYgQEAgc3RhdGljIGludCBkYW1vbl9yZWNsYWltX2FwcGx5X3BhcmFtZXRlcnModm9pZClcbiBcdHBhcmFtX2N0eC1cdTAwM2VhZGRyX3VuaXQgPSBhZGRyX3VuaXQ7XG4gXHRwYXJhbV9jdHgtXHUwMDNlbWluX3JlZ2lvbl9zeiA9IG1heChEQU1PTl9NSU5fUkVHSU9OX1NaIC8gYWRkcl91bml0LCAxKTtcbiBcbi1cdGlmICghaXNfcG93ZXJfb2ZfMihwYXJhbV9jdHgtXHUwMDNlbWluX3JlZ2lvbl9zeikpIHtcbi1cdFx0ZXJyID0gLUVJTlZBTDtcbi1cdFx0Z290byBvdXQ7XG4tXHR9XG4tXG4gXHRpZiAoIWRhbW9uX3JlY2xhaW1fbW9uX2F0dHJzLmFnZ3JfaW50ZXJ2YWwpIHtcbiBcdFx0ZXJyID0gLUVJTlZBTDtcbiBcdFx0Z290byBvdXQ7XG5kaWZmIC0tZ2l0IGEvbW0vZGFtb24vc3lzZnMuYyBiL21tL2RhbW9uL3N5c2ZzLmNcbmluZGV4IGUzNTI2YTI2M2UyMDVmLi45MzNmZjMwM2RlNWExMiAxMDA2NDRcbi0tLSBhL21tL2RhbW9uL3N5c2ZzLmNcbisrKyBiL21tL2RhbW9uL3N5c2ZzLmNcbkBAIC0xOTY5LDkgKzE5NjksNiBAQCBzdGF0aWMgaW50IGRhbW9uX3N5c2ZzX3NldF9yZWdpb25zKHN0cnVjdCBkYW1vbl90YXJnZXQgKnQsXG4gXHRcdHN0cnVjdCBkYW1vbl9zeXNmc19yZWdpb24gKnN5c19yZWdpb24gPVxuIFx0XHRcdHN5c2ZzX3JlZ2lvbnMtXHUwMDNlcmVnaW9uc19hcnJbaV07XG4gXG4tXHRcdGlmIChzeXNfcmVnaW9uLVx1MDAzZWFyLnN0YXJ0IFx1MDAzZSBzeXNfcmVnaW9uLVx1MDAzZWFyLmVuZClcbi1cdFx0XHRnb3RvIG91dDtcbi1cbiBcdFx0cmFuZ2VzW2ldLnN0YXJ0ID0gc3lzX3JlZ2lvbi1cdTAwM2Vhci5zdGFydDtcbiBcdFx0cmFuZ2VzW2ldLmVuZCA9IHN5c19yZWdpb24tXHUwMDNlYXIuZW5kO1xuIFx0XHRpZiAoaSA9PSAwKVxuQEAgLTIwODAsMjYgKzIwNzcsNiBAQCBzdGF0aWMgaW50IGRhbW9uX3N5c2ZzX2FwcGx5X2lucHV0cyhzdHJ1Y3QgZGFtb25fY3R4ICpjdHgsXG4gc3RhdGljIHN0cnVjdCBkYW1vbl9jdHggKmRhbW9uX3N5c2ZzX2J1aWxkX2N0eChcbiBcdFx0c3RydWN0IGRhbW9uX3N5c2ZzX2NvbnRleHQgKnN5c19jdHgpO1xuIFxuLS8qXG4tICogUmV0dXJuIGEgbmV3IGRhbW9uX2N0eCBmb3IgdGVzdGluZyBuZXcgcGFyYW1ldGVycyB0byBjb21taXQuXG4tICovXG4tc3RhdGljIHN0cnVjdCBkYW1vbl9jdHggKmRhbW9uX3N5c2ZzX25ld190ZXN0X2N0eChcbi1cdFx0c3RydWN0IGRhbW9uX2N0eCAqcnVubmluZ19jdHgpXG4te1xuLVx0c3RydWN0IGRhbW9uX2N0eCAqdGVzdF9jdHg7XG4tXHRpbnQgZXJyO1xuLVxuLVx0dGVzdF9jdHggPSBkYW1vbl9uZXdfY3R4KCk7XG4tXHRpZiAoIXRlc3RfY3R4KVxuLVx0XHRyZXR1cm4gTlVMTDtcbi1cdGVyciA9IGRhbW9uX2NvbW1pdF9jdHgodGVzdF9jdHgsIHJ1bm5pbmdfY3R4KTtcbi1cdGlmIChlcnIpIHtcbi1cdFx0ZGFtb25fZGVzdHJveV9jdHgodGVzdF9jdHgpO1xuLVx0XHRyZXR1cm4gTlVMTDtcbi1cdH1cbi1cdHJldHVybiB0ZXN0X2N0eDtcbi19XG4tXG4gLypcbiAgKiBkYW1vbl9zeXNmc19jb21taXRfaW5wdXQoKSAtIENvbW1pdCB1c2VyIGlucHV0cyB0byBhIHJ1bm5pbmcga2RhbW9uZC5cbiAgKiBAa2RhbW9uZDpcdFRoZSBrb2JqZWN0IHdyYXBwZXIgZm9yIHRoZSBhc3NvY2lhdGVkIGtkYW1vbmQuXG5AQCAtMjEwOSw3ICsyMDg2LDcgQEAgc3RhdGljIHN0cnVjdCBkYW1vbl9jdHggKmRhbW9uX3N5c2ZzX25ld190ZXN0X2N0eChcbiBzdGF0aWMgaW50IGRhbW9uX3N5c2ZzX2NvbW1pdF9pbnB1dCh2b2lkICpkYXRhKVxuIHtcbiBcdHN0cnVjdCBkYW1vbl9zeXNmc19rZGFtb25kICprZGFtb25kID0gZGF0YTtcbi1cdHN0cnVjdCBkYW1vbl9jdHggKnBhcmFtX2N0eCwgKnRlc3RfY3R4O1xuK1x0c3RydWN0IGRhbW9uX2N0eCAqcGFyYW1fY3R4O1xuIFx0aW50IGVycjtcbiBcbiBcdGlmICghZGFtb25fc3lzZnNfa2RhbW9uZF9ydW5uaW5nKGtkYW1vbmQpKVxuQEAgLTIxMjEsMTcgKzIwOTgsNyBAQCBzdGF0aWMgaW50IGRhbW9uX3N5c2ZzX2NvbW1pdF9pbnB1dCh2b2lkICpkYXRhKVxuIFx0cGFyYW1fY3R4ID0gZGFtb25fc3lzZnNfYnVpbGRfY3R4KGtkYW1vbmQtXHUwMDNlY29udGV4dHMtXHUwMDNlY29udGV4dHNfYXJyWzBdKTtcbiBcdGlmIChJU19FUlIocGFyYW1fY3R4KSlcbiBcdFx0cmV0dXJuIFBUUl9FUlIocGFyYW1fY3R4KTtcbi1cdHRlc3RfY3R4ID0gZGFtb25fc3lzZnNfbmV3X3Rlc3RfY3R4KGtkYW1vbmQtXHUwMDNlZGFtb25fY3R4KTtcbi1cdGlmICghdGVzdF9jdHgpIHtcbi1cdFx0ZGFtb25fZGVzdHJveV9jdHgocGFyYW1fY3R4KTtcbi1cdFx0cmV0dXJuIC1FTk9NRU07XG4tXHR9XG4tXHRlcnIgPSBkYW1vbl9jb21taXRfY3R4KHRlc3RfY3R4LCBwYXJhbV9jdHgpO1xuLVx0aWYgKGVycilcbi1cdFx0Z290byBvdXQ7XG4gXHRlcnIgPSBkYW1vbl9jb21taXRfY3R4KGtkYW1vbmQtXHUwMDNlZGFtb25fY3R4LCBwYXJhbV9jdHgpO1xuLW91dDpcbi1cdGRhbW9uX2Rlc3Ryb3lfY3R4KHRlc3RfY3R4KTtcbiBcdGRhbW9uX2Rlc3Ryb3lfY3R4KHBhcmFtX2N0eCk7XG4gXHRyZXR1cm4gZXJyO1xuIH1cbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAxVDIzOjAxOjU3Ljc3MDIyNDExM1oiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjc1OTQ1NDkwMjksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRnV6emluZyBEZWNpc2lvbiBmb3IgREFNT04gUGF0Y2ggU2VyaWVzKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBNeSBpbml0aWFsIGFzc2Vzc21lbnQgaXMgd2hldGhlciB0aGlzIHBhdGNoIHNlcmllcyBpbnRyb2R1Y2VzIGFueSAqZnVuY3Rpb25hbCogY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgbmVjZXNzaXRhdGUgZnV6emluZy4gVGhlIGZhY3QgdGhhdCBpdCB0b3VjaGVzIGBtbS9kYW1vbi8qYCBmaWxlcyBpbW1lZGlhdGVseSBmbGFncyBteSBhdHRlbnRpb24g4oCTIERBTU9OIGlzIGNvcmUgbWVtb3J5IG1hbmFnZW1lbnQsIHNvIGl0J3MgaW5oZXJlbnRseSByZWFjaGFibGUgYW5kIGltcG9ydGFudC5cblxuTG9va2luZyBhdCB0aGUgY29kZSwgaXQgbG9va3MgbGlrZSBpdCBpcyByZWZhY3RvcmluZyBgZGFtb25fY29tbWl0X2N0eGAgdXNpbmcgYF9fZGFtb25fY29tbWl0X2N0eGAgYW5kIGEgbmV3IGBkYW1vbl9uZXdfdGVzdF9jdHhgLiBUaGF0LCBpbiBpdHNlbGYsIGlzIGVub3VnaCB0byBiZSB3b3J0aCBhIGZ1enppbmcgcGFzczsgbmV3IGNvZGUgbWVhbnMgbmV3IGF0dGFjayBzdXJmYWNlLiBJIHNlZSB0aGV5J3ZlIHJlbW92ZWQgYSBidW5jaCBvZiBjaGVja3MgbGlrZSBgaXNfcG93ZXJfb2ZfMmAgZnJvbSBwYXJhbWV0ZXIgdmFsaWRhdGlvbiBpbiBgZGFtb25fbHJ1X3NvcnRfYXBwbHlfcGFyYW1ldGVyc2AsIGBkYW1vbl9yZWNsYWltX2FwcGx5X3BhcmFtZXRlcnNgIGFuZCB0aGUgb3RoZXIgcGxhY2VzLiBUaGF0J3MgKnZlcnkqIGludGVyZXN0aW5nLiBSZW1vdmluZyB0aG9zZSBndWFyZHJhaWxzIGNvdWxkIGV4cG9zZSB2dWxuZXJhYmlsaXRpZXMsIGVzcGVjaWFsbHkgaWYgdGhlIHZhbGlkYXRpb24gaXMgbW92ZWQgZWxzZXdoZXJlIG9yIGltcGxpY2l0bHkgcmVsaWVkIHVwb24uIFRoZSBjb21taXQgbWVzc2FnZSBkb2Vzbid0IGhlbHAgd2l0aCBjb250ZXh0IHRob3VnaCFcblxuVGhlIGNoYW5nZXMgaW4gYGRhbW9uX3NldF9yZWdpb25fc3lzdGVtX3JhbXNfZGVmYXVsdGAgYW5kIGBkYW1vbl9zeXNmc19zZXRfcmVnaW9uc2AgYWxzbyByZW1vdmUgY2hlY2tzLiBHaXZlbiB0aGUgbmF0dXJlIG9mIERBTU9OJ3Mgcm9sZSBpbiBtZW1vcnkgbWFuYWdlbWVudCwgcmVtb3ZpbmcgY2hlY2tzIGlzIGEgYmlnIHJlZCBmbGFnLlxuXG5HaXZlbiB0aGF0IERBTU9OIGlzIGEgY29yZSBtZW1vcnkgbWFuYWdlbWVudCBmZWF0dXJlLCBhbmQgdGhpcyBwYXRjaCBzZXJpZXMgY2hhbmdlcyBmdW5jdGlvbmFsaXR5IGFuZCBwYXJhbWV0ZXIgdmFsaWRhdGlvbiwgdGhpcyBpcyBkZWZpbml0ZWx5IFdvcnRoRnV6emluZz10cnVlLlxuXG5Ob3csIGxldCdzIGlkZW50aWZ5ICp3aGVyZSogdG8gZm9jdXMgdGhlIGZ1enppbmcgZWZmb3J0LiBJJ2xsIG5lZWQgdG8gY29tcGlsZSBhIGxpc3Qgb2YgYWZmZWN0ZWQgZnVuY3Rpb25zOlxuXG4qICAgYGRhbW9uX2NvbW1pdF9jdHhgXG4qICAgYGRhbW9uX25ld190ZXN0X2N0eGAgKG5ldylcbiogICBgX19kYW1vbl9jb21taXRfY3R4YCAobmV3KVxuKiAgIGBkYW1vbl9zdGFydGBcbiogICBgZGFtb25fc2V0X3JlZ2lvbl9zeXN0ZW1fcmFtc19kZWZhdWx0YFxuKiAgIGBkYW1vbl9scnVfc29ydF9hcHBseV9wYXJhbWV0ZXJzYFxuKiAgIGBkYW1vbl9yZWNsYWltX2FwcGx5X3BhcmFtZXRlcnNgXG4qICAgYGRhbW9uX3N5c2ZzX3NldF9yZWdpb25zYFxuKiAgIGBkYW1vbl9zeXNmc19jb21taXRfaW5wdXRgXG5cbk15IG5leHQgc3RlcCB3aWxsIGJlIHRvIHVzZSBgZ3JlcHBlcmAgKG9yIHdoYXRldmVyIHNlYXJjaCB0b29sIEknbSB1c2luZykgdG8gY2hlY2sgdGhlIHJlbGV2YW50IGtlcm5lbCBjb25maWcgb3B0aW9ucyBmb3IgREFNT04uIFRoYXQnbGwgZ3VpZGUgbWUgaW4gdGhlIGZ1enppbmcgc2V0dXAsIGFuZCBoZWxwIG1lIHRhcmdldCBjb25maWd1cmF0aW9ucyB0aGF0IGFyZSBsaWtlbHkgdG8gYmUgdXNlZC5cblxuXG4iLCJJbnB1dFRva2VucyI6NDY2MCwiT3V0cHV0VG9rZW5zIjozMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQ3OSwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAxVDIzOjAyOjA1LjM2NDc3NTA5MloiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMTY2MzM3MDcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIERBTU9OXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm1tL2RhbW9uL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibW0vZGFtb24vS2NvbmZpZz0zPW1lbnUgXFxcIkRhdGEgQWNjZXNzIE1vbml0b3JpbmdcXFwiXFxubW0vZGFtb24vS2NvbmZpZy00LVxcbm1tL2RhbW9uL0tjb25maWc6NTpjb25maWcgREFNT05cXG5tbS9kYW1vbi9LY29uZmlnLTYtXFx0Ym9vbCBcXFwiREFNT046IERhdGEgQWNjZXNzIE1vbml0b3JpbmcgRnJhbWV3b3JrXFxcIlxcbi0tXFxubW0vZGFtb24vS2NvbmZpZy0xNC1cXG5tbS9kYW1vbi9LY29uZmlnOjE1OmNvbmZpZyBEQU1PTl9ERUJVR19TQU5JVFlcXG5tbS9kYW1vbi9LY29uZmlnLTE2LVxcdGJvb2wgXFxcIkNoZWNrIHNhbml0eSBvZiBEQU1PTiBjb2RlXFxcIlxcbi0tXFxubW0vZGFtb24vS2NvbmZpZy0yNS1cXG5tbS9kYW1vbi9LY29uZmlnOjI2OmNvbmZpZyBEQU1PTl9LVU5JVF9URVNUXFxubW0vZGFtb24vS2NvbmZpZy0yNy1cXHRib29sIFxcXCJUZXN0IGZvciBkYW1vblxcXCIgaWYgIUtVTklUX0FMTF9URVNUU1xcbi0tXFxubW0vZGFtb24vS2NvbmZpZy0zNy1cXG5tbS9kYW1vbi9LY29uZmlnOjM4OmNvbmZpZyBEQU1PTl9WQUREUlxcbm1tL2RhbW9uL0tjb25maWctMzktXFx0Ym9vbCBcXFwiRGF0YSBhY2Nlc3MgbW9uaXRvcmluZyBvcGVyYXRpb25zIGZvciB2aXJ0dWFsIGFkZHJlc3Mgc3BhY2VzXFxcIlxcbi0tXFxubW0vZGFtb24vS2NvbmZpZy00Ni1cXG5tbS9kYW1vbi9LY29uZmlnOjQ3OmNvbmZpZyBEQU1PTl9QQUREUlxcbm1tL2RhbW9uL0tjb25maWctNDgtXFx0Ym9vbCBcXFwiRGF0YSBhY2Nlc3MgbW9uaXRvcmluZyBvcGVyYXRpb25zIGZvciB0aGUgcGh5c2ljYWwgYWRkcmVzcyBzcGFjZVxcXCJcXG4tLVxcbm1tL2RhbW9uL0tjb25maWctNTUtXFxubW0vZGFtb24vS2NvbmZpZzo1Njpjb25maWcgREFNT05fVkFERFJfS1VOSVRfVEVTVFxcbm1tL2RhbW9uL0tjb25maWctNTctXFx0Ym9vbCBcXFwiVGVzdCBmb3IgREFNT04gb3BlcmF0aW9uc1xcXCIgaWYgIUtVTklUX0FMTF9URVNUU1xcbi0tXFxubW0vZGFtb24vS2NvbmZpZy02Ny1cXG5tbS9kYW1vbi9LY29uZmlnOjY4OmNvbmZpZyBEQU1PTl9TWVNGU1xcbm1tL2RhbW9uL0tjb25maWctNjktXFx0Ym9vbCBcXFwiREFNT04gc3lzZnMgaW50ZXJmYWNlXFxcIlxcbi0tXFxubW0vZGFtb24vS2NvbmZpZy03NS1cXG5tbS9kYW1vbi9LY29uZmlnOjc2OmNvbmZpZyBEQU1PTl9TWVNGU19LVU5JVF9URVNUXFxubW0vZGFtb24vS2NvbmZpZy03Ny1cXHRib29sIFxcXCJUZXN0IGZvciBkYW1vbiBzeXNmcyBpbnRlcmZhY2VcXFwiIGlmICFLVU5JVF9BTExfVEVTVFNcXG4tLVxcbm1tL2RhbW9uL0tjb25maWctODctXFxubW0vZGFtb24vS2NvbmZpZzo4ODpjb25maWcgREFNT05fUkVDTEFJTVxcbm1tL2RhbW9uL0tjb25maWctODktXFx0Ym9vbCBcXFwiQnVpbGQgREFNT04tYmFzZWQgcmVjbGFpbSAoREFNT05fUkVDTEFJTSlcXFwiXFxuLS1cXG5tbS9kYW1vbi9LY29uZmlnLTk5LVxcbm1tL2RhbW9uL0tjb25maWc6MTAwOmNvbmZpZyBEQU1PTl9MUlVfU09SVFxcbm1tL2RhbW9uL0tjb25maWctMTAxLVxcdGJvb2wgXFxcIkJ1aWxkIERBTU9OLWJhc2VkIExSVS1saXN0cyBzb3J0aW5nIChEQU1PTl9MUlVfU09SVClcXFwiXFxuLS1cXG5tbS9kYW1vbi9LY29uZmlnLTEwNy1cXG5tbS9kYW1vbi9LY29uZmlnOjEwODpjb25maWcgREFNT05fU1RBVFxcbm1tL2RhbW9uL0tjb25maWctMTA5LVxcdGJvb2wgXFxcIkJ1aWxkIGRhdGEgYWNjZXNzIG1vbml0b3Jpbmcgc3RhdCAoREFNT05fU1RBVClcXFwiXFxuLS1cXG5tbS9kYW1vbi9LY29uZmlnLTExNS1cXG5tbS9kYW1vbi9LY29uZmlnOjExNjpjb25maWcgREFNT05fU1RBVF9FTkFCTEVEX0RFRkFVTFRcXG5tbS9kYW1vbi9LY29uZmlnLTExNy1cXHRib29sIFxcXCJFbmFibGUgREFNT05fU1RBVCBieSBkZWZhdWx0XFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wMVQyMzowMjowNS41ODE0MTQ0MzlaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2MzA1ODg5MDA4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEZ1enppbmcgU3RyYXRlZ3kgZm9yIERBTU9OKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhlc2UgREFNT04gY29uZmlndXJhdGlvbnMg4oCTIGBEQU1PTmAsIGBEQU1PTl9TWVNGU2AsIGBEQU1PTl9SRUNMQUlNYCwgYW5kIGBEQU1PTl9MUlVfU09SVGAg4oCTIGFuZCBpdCBsb29rcyBsaWtlIHRoZSByZWxldmFudCBmaWxlcyB0aGF0IGhhdmUgYmVlbiB0b3VjaGVkIGFyZSBgbW0vZGFtb24vY29yZS5jYCwgYG1tL2RhbW9uL2xydV9zb3J0LmNgLCBgbW0vZGFtb24vcmVjbGFpbS5jYCwgYW5kIGBtbS9kYW1vbi9zeXNmcy5jYC4gVGhpcyBzdHJvbmdseSBzdWdnZXN0cyB0aGF0IEkgbmVlZCB0byBlbmFibGUgdGhlc2UgY29uZmlnczogYERBTU9OYCwgYERBTU9OX1NZU0ZTYCwgYERBTU9OX1JFQ0xBSU1gLCBhbmQgYERBTU9OX0xSVV9TT1JUYC5cblxuTm93LCB0aGUgY3J1Y2lhbCBzdGVwIGlzIGlkZW50aWZ5aW5nIHRoZSBrZXkgZnVuY3Rpb25zIGZvciBmdXp6aW5nLiBBZnRlciBhIHF1aWNrIHNjYW4sIEknbSB0aGlua2luZyB0aGUgZm9sbG93aW5nIGFyZSBoaWdoLXZhbHVlIHRhcmdldHM6IGBkYW1vbl9jb21taXRfY3R4YCwgYGRhbW9uX3N0YXJ0YCwgYGRhbW9uX3NldF9yZWdpb25fc3lzdGVtX3JhbXNfZGVmYXVsdGAsIGBkYW1vbl9scnVfc29ydF9hcHBseV9wYXJhbWV0ZXJzYCwgYGRhbW9uX3JlY2xhaW1fYXBwbHlfcGFyYW1ldGVyc2AsIGBkYW1vbl9zeXNmc19zZXRfcmVnaW9uc2AsIGFuZCBgZGFtb25fc3lzZnNfY29tbWl0X2lucHV0YC4gVGhlc2UgbG9vayBsaWtlIHByaW1lIGNhbmRpZGF0ZXMgZm9yIGV4cGxvaXRpbmcgcG90ZW50aWFsIHZ1bG5lcmFiaWxpdGllcy5cblxuQmVmb3JlIEkgY29tbWl0IHRvIHRoaXMgcGxhbiwgdGhvdWdoLCBJIHNob3VsZCBkb3VibGUtY2hlY2sgdGhlIGRlcGVuZGVuY2llcy4gSSBoYXZlIGEgaHVuY2ggdGhhdCBgREFNT05fVkFERFJgIGFuZCBgREFNT05fUEFERFJgICptaWdodCogYmUgcmVxdWlyZWQgaW4gY29uanVuY3Rpb24gd2l0aCBgREFNT05fUkVDTEFJTWAgYW5kIGBEQU1PTl9MUlVfU09SVGAuIEJlc3QgdG8gZ28gYmFjayB0byBgbW0vZGFtb24vS2NvbmZpZ2AgdG8gdmVyaWZ5IGFueSBkZXBlbmRlbmNpZXMgYW5kIG1ha2Ugc3VyZSBJIGhhdmVuJ3QgbWlzc2VkIGFueXRoaW5nLiBJIHdhbnQgdG8gZW5zdXJlIG15IGZ1enppbmcgc2V0dXAgaXMgYXMgY29tcGxldGUgYXMgcG9zc2libGUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjY0NTEsIk91dHB1dFRva2VucyI6MzMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyOTksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDFUMjM6MDI6MTEuODg3MzA1MzQ3WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU0NjI5OTA0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBEQU1PTl9SRUNMQUlNXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm1tL2RhbW9uL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibW0vZGFtb24vS2NvbmZpZz03Nj1jb25maWcgREFNT05fU1lTRlNfS1VOSVRfVEVTVFxcbi0tXFxubW0vZGFtb24vS2NvbmZpZy04Ny1cXG5tbS9kYW1vbi9LY29uZmlnOjg4OmNvbmZpZyBEQU1PTl9SRUNMQUlNXFxubW0vZGFtb24vS2NvbmZpZy04OS1cXHRib29sIFxcXCJCdWlsZCBEQU1PTi1iYXNlZCByZWNsYWltIChEQU1PTl9SRUNMQUlNKVxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDFUMjM6MDI6MTEuOTQxOTQxMDUxWiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mjg5OTkyNjcxNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRha2Ugb24gdGhlIHRob3VnaHQgcHJvY2Vzcywgc3VtbWFyaXplZCBhcyB5b3UgcmVxdWVzdGVkOlxuXG4qKk5hdmlnYXRpbmcgS2VybmVsIENvbmZpZ3VyYXRpb24gZm9yIERhbW9uKipcblxuT2theSwgc28gSSBuZWVkIHRvIGRpdmUgaW50byB0aGUga2VybmVsIGNvbmZpZ3VyYXRpb24gZm9yIHRoZSBgbW0vZGFtb25gIHN1YnN5c3RlbS4gTGV0J3Mgc2VlLi4uIHRoZSBgS2NvbmZpZ2AgZmlsZXMgYXJlIHVzdWFsbHkgdGhlIGJlc3QgcGxhY2UgdG8gc3RhcnQuIEknbSB0aGlua2luZywgYmFzZWQgb24gbXkgZXhwZXJpZW5jZSwgdGhhdCBsaW5lIDg4IGluIHRoYXQgcGFydGljdWxhciBgS2NvbmZpZ2AgZmlsZSAoYG1tL2RhbW9uL0tjb25maWdgKSBpcyBhIGxpa2VseSBwb2ludCBvZiBpbnRlcmVzdC4gSXQncyBvZnRlbiB3aGVyZSBrZXkgZmVhdHVyZXMgb3Igb3B0aW9ucyByZWxhdGVkIHRvIGEgbW9kdWxlIGJlZ2luIHRvIGJlIGRlZmluZWQgb3Igd2hlcmUgdGhlIGNvcmUgY29uZmlndXJhdGlvbiBlbnRyeSBpcyBsb2NhdGVkLiBUaGlzIGNvdWxkIGJlIHdoZXJlIEknbGwgZmluZCB0aGUgcHJpbWFyeSBjb25maWd1cmF0aW9uIHN5bWJvbCBvciByZWxhdGVkIHNldHRpbmdzIGZvciBEYW1vbi4gSSdsbCBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIHJlbGF0aW9uc2hpcCBiZXR3ZWVuIHRoaXMgS2NvbmZpZyBlbnRyeSBhbmQgdGhlIG92ZXJhbGwga2VybmVsIGJ1aWxkIHByb2Nlc3MsIGFuZCwgZnJvbSBteSBiYWNrZ3JvdW5kLCBrbm93IHRoZSBwb3NzaWJsZSBpbXBsaWNhdGlvbnMgb2YgdGhlIHNldHRpbmdzIEkgZW5jb3VudGVyIHRoZXJlLiBJdCdzIGEgY2xhc3NpYyBzdGFydGluZyBwb2ludCBmb3IgdW5yYXZlbGluZyB0aGUgY29uZmlndXJhdGlvbiBhbmQgZGVwZW5kZW5jaWVzIG9mIGEga2VybmVsIG1vZHVsZS4gTGV0J3MgZ2V0IHRvIGl0LlxuXG5cbiIsIklucHV0VG9rZW5zIjo3MjUxLCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDFUMjM6MDI6MTQuODQxODY5NTc4WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODAwOTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwibW0vZGFtb24vS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiA4MCxcbiAgXCJMaW5lQ291bnRcIjogMzBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICA4MDpcXHRcXHRoZWxwXFxuICA4MTpcXHRcXHQgIFRoaXMgYnVpbGRzIHRoZSBEQU1PTiBzeXNmcyBpbnRlcmZhY2UgS3VuaXQgdGVzdCBzdWl0ZS5cXG4gIDgyOlxcdFxcbiAgODM6XFx0XFx0ICBGb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiBLVW5pdCBhbmQgdW5pdCB0ZXN0cyBpbiBnZW5lcmFsLCBwbGVhc2UgcmVmZXJcXG4gIDg0OlxcdFxcdCAgdG8gdGhlIEtVbml0IGRvY3VtZW50YXRpb24uXFxuICA4NTpcXHRcXG4gIDg2OlxcdFxcdCAgSWYgdW5zdXJlLCBzYXkgTi5cXG4gIDg3OlxcdFxcbiAgODg6XFx0Y29uZmlnIERBTU9OX1JFQ0xBSU1cXG4gIDg5OlxcdFxcdGJvb2wgXFxcIkJ1aWxkIERBTU9OLWJhc2VkIHJlY2xhaW0gKERBTU9OX1JFQ0xBSU0pXFxcIlxcbiAgOTA6XFx0XFx0ZGVwZW5kcyBvbiBEQU1PTl9QQUREUlxcbiAgOTE6XFx0XFx0aGVscFxcbiAgOTI6XFx0XFx0ICBUaGlzIGJ1aWxkcyB0aGUgREFNT04tYmFzZWQgcmVjbGFtYXRpb24gc3Vic3lzdGVtLiAgSXQgZmluZHMgcGFnZXNcXG4gIDkzOlxcdFxcdCAgdGhhdCBub3QgYWNjZXNzZWQgZm9yIGEgbG9uZyB0aW1lIChjb2xkKSB1c2luZyBEQU1PTiBhbmQgcmVjbGFpbVxcbiAgOTQ6XFx0XFx0ICB0aG9zZS5cXG4gIDk1OlxcdFxcbiAgOTY6XFx0XFx0ICBUaGlzIGlzIHN1Z2dlc3RlZCB0byBiZSB1c2VkIGFzIGEgcHJvYWN0aXZlIGFuZCBsaWdodHdlaWdodFxcbiAgOTc6XFx0XFx0ICByZWNsYW1hdGlvbiB1bmRlciBsaWdodCBtZW1vcnkgcHJlc3N1cmUsIHdoaWxlIHRoZSB0cmFkaXRpb25hbCBwYWdlXFxuICA5ODpcXHRcXHQgIHNjYW5uaW5nLWJhc2VkIHJlY2xhbWF0aW9uIGlzIHVzZWQgZm9yIGhlYXZ5IHByZXNzdXJlLlxcbiAgOTk6XFx0XFxuIDEwMDpcXHRjb25maWcgREFNT05fTFJVX1NPUlRcXG4gMTAxOlxcdFxcdGJvb2wgXFxcIkJ1aWxkIERBTU9OLWJhc2VkIExSVS1saXN0cyBzb3J0aW5nIChEQU1PTl9MUlVfU09SVClcXFwiXFxuIDEwMjpcXHRcXHRkZXBlbmRzIG9uIERBTU9OX1BBRERSXFxuIDEwMzpcXHRcXHRoZWxwXFxuIDEwNDpcXHRcXHQgIFRoaXMgYnVpbGRzIHRoZSBEQU1PTi1iYXNlZCBMUlUtbGlzdHMgc29ydGluZyBzdWJzeXN0ZW0uICBJdCB0cmllcyB0b1xcbiAxMDU6XFx0XFx0ICBwcm90ZWN0IGZyZXF1ZW50bHkgYWNjZXNzZWQgKGhvdCkgcGFnZXMgd2hpbGUgcmFyZWx5IGFjY2Vzc2VkIChjb2xkKVxcbiAxMDY6XFx0XFx0ICBwYWdlcyByZWNsYWltZWQgZmlyc3QgdW5kZXIgbWVtb3J5IHByZXNzdXJlLlxcbiAxMDc6XFx0XFxuIDEwODpcXHRjb25maWcgREFNT05fU1RBVFxcbiAxMDk6XFx0XFx0Ym9vbCBcXFwiQnVpbGQgZGF0YSBhY2Nlc3MgbW9uaXRvcmluZyBzdGF0IChEQU1PTl9TVEFUKVxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDFUMjM6MDI6MTQuODQxOTUyODc4WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Njg4OTMwOTcyNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBbmFseXNpcyBvZiB0aGUgREFNT04gQ29uZmlndXJhdGlvbiBDaGFuZ2VzKipcblxuT2theSwgc28gSSBzZWUgdGhhdCBgREFNT05fUkVDTEFJTWAgYW5kIGBEQU1PTl9MUlVfU09SVGAgYm90aCBoYXZlIGRlcGVuZGVuY2llcyBvbiBgREFNT05fUEFERFJgLiBNYWtlcyBzZW5zZS4gV2UnbGwgbmVlZCB0byBtYWtlIHN1cmUgYERBTU9OX1BBRERSYCBpcyBpbmNsdWRlZCB0aGVuLCBhbmQgbGV0J3MgYWRkIGBEQU1PTl9WQUREUmAgZm9yIGdvb2QgbWVhc3VyZSwganVzdCB0byBiZSB0aG9yb3VnaCBhbmQgY292ZXIgYWxsIHRoZSBiYXNlcy4gVGhpcyBzZWVtcyBsaWtlIGEgcmVhc29uYWJsZSBzZXQgb2YgY29uZmlncyB0byBjb25zaWRlcjpcblxuYERBTU9OYFxuYERBTU9OX1BBRERSYFxuYERBTU9OX1ZBRERSYFxuYERBTU9OX1NZU0ZTYFxuYERBTU9OX1JFQ0xBSU1gXG5gREFNT05fTFJVX1NPUlRgXG5cbk5vdywgbGV0J3MgbG9vayBhdCB0aGUgc3ltYm9scyBhZmZlY3RlZC4gVGhlIHBhdGNoIHNlZW1zIHRvIGJlIHRvdWNoaW5nIHNldmVyYWwga2V5IGFyZWFzOiBgZGFtb25fY29tbWl0X2N0eGAsIGBkYW1vbl9zdGFydGAsIGBkYW1vbl9zZXRfcmVnaW9uX3N5c3RlbV9yYW1zX2RlZmF1bHRgLCBgZGFtb25fbHJ1X3NvcnRfYXBwbHlfcGFyYW1ldGVyc2AsIGBkYW1vbl9yZWNsYWltX2FwcGx5X3BhcmFtZXRlcnNgLCBgZGFtb25fc3lzZnNfc2V0X3JlZ2lvbnNgLCBhbmQgYGRhbW9uX3N5c2ZzX2NvbW1pdF9pbnB1dGAuIFRoYXQncyBhIHByZXR0eSB3aWRlIG5ldCwgZW5jb21wYXNzaW5nIGNvbnRleHQgY29tbWl0bWVudCwgcGFyYW1ldGVyIGFwcGxpY2F0aW9uLCBhbmQgdGhlIHN5c2ZzIGludGVyZmFjZS5cblxuVGhlIHBhdGNoIGl0c2VsZiBpcyBhYm91dCBtb2RpZnlpbmcgY29yZSBEQU1PTiBsb2dpYywgc3BlY2lmaWNhbGx5IGNvbmNlcm5pbmcgY29udGV4dCBjb21taXRtZW50LCBwYXJhbWV0ZXIgdmFsaWRhdGlvbiwgYW5kIHN5c2ZzIGlucHV0LiBJIHNlZSBpdCdzIHJlbW92aW5nIHNvbWUgdmFsaWRhdGlvbiBjaGVja3MgZnJvbSBzcGVjaWZpYyBmdW5jdGlvbnMuIFRoaXMgdHJpZ2dlcnMgYSByZWQgZmxhZywgYXMgaXQgbWFrZXMgdGhlIG1vZGlmaWVkIGZ1bmN0aW9ucyBtb3JlIHZ1bG5lcmFibGUgdG8gYWNjZXB0aW5nIGludmFsaWQgcGFyYW1ldGVycy4gVGhhdCBjb3VsZCBwb3RlbnRpYWxseSBpbnRyb2R1Y2Ugc3VidGxlIGJ1Z3Mgb3IgdW5leHBlY3RlZCBiZWhhdmlvciBkb3duIHRoZSBsaW5lLiBXZSByZWFsbHkgbmVlZCB0byBwYXkgYXR0ZW50aW9uIHRvIHdoZXJlIHRob3NlIGNoZWNrcyBhcmUgbm93LCBvciBpZiB0aGV5J3ZlIGJlZW4gbW92ZWQgdG8gYSBkaWZmZXJlbnQgZnVuY3Rpb24uXG5cbkdpdmVuIHRob3NlIGNoYW5nZXMsIHRoZSBtb3N0IGNyaXRpY2FsIHRoaW5nIHRvIGRvIGlzIGZ1enogdGhvc2UgbW9kaWZpZWQgZnVuY3Rpb25zLiBUaGF0IHNob3VsZCBiZSBvdXIgdG9wIHByaW9yaXR5LiBXZSBuZWVkIHRvIGhhbW1lciBvbiB0aGVtIHdpdGggaW52YWxpZCBhbmQgZWRnZS1jYXNlIGlucHV0cyB0byB2ZXJpZnkgc3RhYmlsaXR5LiBXZSBzaG91bGQgY2FsbCB0aGlzIFwic2V0LXJlc3VsdHMuXCJcblxuXG4iLCJJbnB1dFRva2VucyI6Nzk1NywiT3V0cHV0VG9rZW5zIjoyMjUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNzQsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wMVQyMzowMjoyMS43MzEyNjQ0MjNaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNDA3MDIxNTUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkRBTU9OXCIsXG4gICAgXCJEQU1PTl9QQUREUlwiLFxuICAgIFwiREFNT05fVkFERFJcIixcbiAgICBcIkRBTU9OX1NZU0ZTXCIsXG4gICAgXCJEQU1PTl9SRUNMQUlNXCIsXG4gICAgXCJEQU1PTl9MUlVfU09SVFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImRhbW9uX2NvbW1pdF9jdHhcIixcbiAgICBcImRhbW9uX3N0YXJ0XCIsXG4gICAgXCJkYW1vbl9zZXRfcmVnaW9uX3N5c3RlbV9yYW1zX2RlZmF1bHRcIixcbiAgICBcImRhbW9uX2xydV9zb3J0X2FwcGx5X3BhcmFtZXRlcnNcIixcbiAgICBcImRhbW9uX3JlY2xhaW1fYXBwbHlfcGFyYW1ldGVyc1wiLFxuICAgIFwiZGFtb25fc3lzZnNfc2V0X3JlZ2lvbnNcIixcbiAgICBcImRhbW9uX3N5c2ZzX2NvbW1pdF9pbnB1dFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIGNvcmUgREFNT04gKERhdGEgQWNjZXNzIE1PTml0b3IpIGxvZ2ljLCBpbmNsdWRpbmcgY29udGV4dCBjb21taXQgaGFuZGxpbmcsIHBhcmFtZXRlciB2YWxpZGF0aW9uLCBhbmQgc3lzZnMgaW50ZXJmYWNlIGlucHV0cy4gSXQgcmVtb3ZlcyBzb21lIHZhbGlkYXRpb24gY2hlY2tzIGZyb20gc3BlY2lmaWMgZnVuY3Rpb25zIGFuZCBtb3ZlcyB0aGVtIG9yIHJlbGllcyBvbiBvdGhlciB2YWxpZGF0aW9uLCB3aGljaCBjb3VsZCBpbnRyb2R1Y2UgYnVncyBpZiBpbnZhbGlkIHBhcmFtZXRlcnMgYXJlIHBhc3NlZC4gRnV6emluZyBzaG91bGQgZm9jdXMgb24gdGhlIG1vZGlmaWVkIGZ1bmN0aW9ucyB0byBlbnN1cmUgc3RhYmlsaXR5LlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkRBTU9OXCIsXG4gICAgXCJEQU1PTl9QQUREUlwiLFxuICAgIFwiREFNT05fVkFERFJcIixcbiAgICBcIkRBTU9OX1NZU0ZTXCIsXG4gICAgXCJEQU1PTl9SRUNMQUlNXCIsXG4gICAgXCJEQU1PTl9MUlVfU09SVFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImRhbW9uX2NvbW1pdF9jdHhcIixcbiAgICBcImRhbW9uX3N0YXJ0XCIsXG4gICAgXCJkYW1vbl9zZXRfcmVnaW9uX3N5c3RlbV9yYW1zX2RlZmF1bHRcIixcbiAgICBcImRhbW9uX2xydV9zb3J0X2FwcGx5X3BhcmFtZXRlcnNcIixcbiAgICBcImRhbW9uX3JlY2xhaW1fYXBwbHlfcGFyYW1ldGVyc1wiLFxuICAgIFwiZGFtb25fc3lzZnNfc2V0X3JlZ2lvbnNcIixcbiAgICBcImRhbW9uX3N5c2ZzX2NvbW1pdF9pbnB1dFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIGNvcmUgREFNT04gKERhdGEgQWNjZXNzIE1PTml0b3IpIGxvZ2ljLCBpbmNsdWRpbmcgY29udGV4dCBjb21taXQgaGFuZGxpbmcsIHBhcmFtZXRlciB2YWxpZGF0aW9uLCBhbmQgc3lzZnMgaW50ZXJmYWNlIGlucHV0cy4gSXQgcmVtb3ZlcyBzb21lIHZhbGlkYXRpb24gY2hlY2tzIGZyb20gc3BlY2lmaWMgZnVuY3Rpb25zIGFuZCBtb3ZlcyB0aGVtIG9yIHJlbGllcyBvbiBvdGhlciB2YWxpZGF0aW9uLCB3aGljaCBjb3VsZCBpbnRyb2R1Y2UgYnVncyBpZiBpbnZhbGlkIHBhcmFtZXRlcnMgYXJlIHBhc3NlZC4gRnV6emluZyBzaG91bGQgZm9jdXMgb24gdGhlIG1vZGlmaWVkIGZ1bmN0aW9ucyB0byBlbnN1cmUgc3RhYmlsaXR5LlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowgrspj[1] Phase: Succeeded StartedAt: 2026-07-01 23:03:17 +0000 UTC FinishedAt: 2026-07-01 23:03:17 +0000 UTC Input: nil Output: nil --------- Name: series-workflowgrspj[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-07-01 23:03:17 +0000 UTC FinishedAt: 2026-07-01 23:03:17 +0000 UTC Input: nil Output: nil --------- Name: series-workflowgrspj[2] Phase: Succeeded StartedAt: 2026-07-01 23:03:17 +0000 UTC FinishedAt: 2026-07-02 03:35:29 +0000 UTC Input: nil Output: nil --------- Name: series-workflowgrspj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ff1cd4bfdfebea913df9682c4a715bca55759ff0","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_PADDR","DAMON_VADDR","DAMON_SYSFS","DAMON_RECLAIM","DAMON_LRU_SORT"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["damon_commit_ctx","damon_start","damon_set_region_system_rams_default","damon_lru_sort_apply_parameters","damon_reclaim_apply_parameters","damon_sysfs_set_regions","damon_sysfs_commit_input"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"ff1cd4bfdfebea913df9682c4a715bca55759ff0","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_PADDR","DAMON_VADDR","DAMON_SYSFS","DAMON_RECLAIM","DAMON_LRU_SORT"],"series_id":"bd9aa674-b9a5-446a-8f32-5cb7a5a85edd","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-07-01 23:03:17 +0000 UTC FinishedAt: 2026-07-02 03:35:29 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"ff1cd4bfdfebea913df9682c4a715bca55759ff0","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_PADDR","DAMON_VADDR","DAMON_SYSFS","DAMON_RECLAIM","DAMON_LRU_SORT"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["damon_commit_ctx","damon_start","damon_set_region_system_rams_default","damon_lru_sort_apply_parameters","damon_reclaim_apply_parameters","damon_sysfs_set_regions","damon_sysfs_commit_input"],"skip_cover_check":true},"patched":{"arch":"amd64","commit_hash":"ff1cd4bfdfebea913df9682c4a715bca55759ff0","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_PADDR","DAMON_VADDR","DAMON_SYSFS","DAMON_RECLAIM","DAMON_LRU_SORT"],"series_id":"bd9aa674-b9a5-446a-8f32-5cb7a5a85edd","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowgrspj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ff1cd4bfdfebea913df9682c4a715bca55759ff0","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_PADDR","DAMON_VADDR","DAMON_SYSFS","DAMON_RECLAIM","DAMON_LRU_SORT"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["damon_commit_ctx","damon_start","damon_set_region_system_rams_default","damon_lru_sort_apply_parameters","damon_reclaim_apply_parameters","damon_sysfs_set_regions","damon_sysfs_commit_input"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"ff1cd4bfdfebea913df9682c4a715bca55759ff0","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_PADDR","DAMON_VADDR","DAMON_SYSFS","DAMON_RECLAIM","DAMON_LRU_SORT"],"series_id":"bd9aa674-b9a5-446a-8f32-5cb7a5a85edd","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-07-01 23:03:17 +0000 UTC FinishedAt: 2026-07-01 23:03:45 +0000 UTC Input: nil Output: nil --------- Name: series-workflowgrspj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ff1cd4bfdfebea913df9682c4a715bca55759ff0","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_PADDR","DAMON_VADDR","DAMON_SYSFS","DAMON_RECLAIM","DAMON_LRU_SORT"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["damon_commit_ctx","damon_start","damon_set_region_system_rams_default","damon_lru_sort_apply_parameters","damon_reclaim_apply_parameters","damon_sysfs_set_regions","damon_sysfs_commit_input"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"ff1cd4bfdfebea913df9682c4a715bca55759ff0","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_PADDR","DAMON_VADDR","DAMON_SYSFS","DAMON_RECLAIM","DAMON_LRU_SORT"],"series_id":"bd9aa674-b9a5-446a-8f32-5cb7a5a85edd","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-07-01 23:03:17 +0000 UTC FinishedAt: 2026-07-01 23:03:37 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"ff1cd4bfdfebea913df9682c4a715bca55759ff0","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_PADDR","DAMON_VADDR","DAMON_SYSFS","DAMON_RECLAIM","DAMON_LRU_SORT"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowgrspj/series-workflowgrspj-convert-artifact-881084339/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowgrspj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ff1cd4bfdfebea913df9682c4a715bca55759ff0","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_PADDR","DAMON_VADDR","DAMON_SYSFS","DAMON_RECLAIM","DAMON_LRU_SORT"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["damon_commit_ctx","damon_start","damon_set_region_system_rams_default","damon_lru_sort_apply_parameters","damon_reclaim_apply_parameters","damon_sysfs_set_regions","damon_sysfs_commit_input"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"ff1cd4bfdfebea913df9682c4a715bca55759ff0","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_PADDR","DAMON_VADDR","DAMON_SYSFS","DAMON_RECLAIM","DAMON_LRU_SORT"],"series_id":"bd9aa674-b9a5-446a-8f32-5cb7a5a85edd","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-07-01 23:03:45 +0000 UTC FinishedAt: 2026-07-01 23:36:13 +0000 UTC Input: nil Output: nil --------- Name: series-workflowgrspj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ff1cd4bfdfebea913df9682c4a715bca55759ff0","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_PADDR","DAMON_VADDR","DAMON_SYSFS","DAMON_RECLAIM","DAMON_LRU_SORT"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["damon_commit_ctx","damon_start","damon_set_region_system_rams_default","damon_lru_sort_apply_parameters","damon_reclaim_apply_parameters","damon_sysfs_set_regions","damon_sysfs_commit_input"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"ff1cd4bfdfebea913df9682c4a715bca55759ff0","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_PADDR","DAMON_VADDR","DAMON_SYSFS","DAMON_RECLAIM","DAMON_LRU_SORT"],"series_id":"bd9aa674-b9a5-446a-8f32-5cb7a5a85edd","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-07-01 23:03:45 +0000 UTC FinishedAt: 2026-07-01 23:36:13 +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:*bae403e4-9b0f-4974-b403-3dd27e1c25d4,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-workflowgrspj/series-workflowgrspj-convert-artifact-881084339/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": "92b37924-485c-4753-9d3c-3f74245f9b8b", "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-workflowgrspj/series-workflowgrspj-build-action-4025119329/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowgrspj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ff1cd4bfdfebea913df9682c4a715bca55759ff0","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_PADDR","DAMON_VADDR","DAMON_SYSFS","DAMON_RECLAIM","DAMON_LRU_SORT"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["damon_commit_ctx","damon_start","damon_set_region_system_rams_default","damon_lru_sort_apply_parameters","damon_reclaim_apply_parameters","damon_sysfs_set_regions","damon_sysfs_commit_input"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"ff1cd4bfdfebea913df9682c4a715bca55759ff0","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_PADDR","DAMON_VADDR","DAMON_SYSFS","DAMON_RECLAIM","DAMON_LRU_SORT"],"series_id":"bd9aa674-b9a5-446a-8f32-5cb7a5a85edd","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-07-01 23:03:45 +0000 UTC FinishedAt: 2026-07-01 23:36:03 +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:*bae403e4-9b0f-4974-b403-3dd27e1c25d4,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-workflowgrspj/series-workflowgrspj-convert-artifact-881084339/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": "92b37924-485c-4753-9d3c-3f74245f9b8b", "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-workflowgrspj/series-workflowgrspj-build-action-4025119329/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowgrspj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ff1cd4bfdfebea913df9682c4a715bca55759ff0","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_PADDR","DAMON_VADDR","DAMON_SYSFS","DAMON_RECLAIM","DAMON_LRU_SORT"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["damon_commit_ctx","damon_start","damon_set_region_system_rams_default","damon_lru_sort_apply_parameters","damon_reclaim_apply_parameters","damon_sysfs_set_regions","damon_sysfs_commit_input"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"ff1cd4bfdfebea913df9682c4a715bca55759ff0","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_PADDR","DAMON_VADDR","DAMON_SYSFS","DAMON_RECLAIM","DAMON_LRU_SORT"],"series_id":"bd9aa674-b9a5-446a-8f32-5cb7a5a85edd","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-07-01 23:36:13 +0000 UTC FinishedAt: 2026-07-01 23:36:13 +0000 UTC Input: nil Output: nil --------- Name: series-workflowgrspj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ff1cd4bfdfebea913df9682c4a715bca55759ff0","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_PADDR","DAMON_VADDR","DAMON_SYSFS","DAMON_RECLAIM","DAMON_LRU_SORT"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["damon_commit_ctx","damon_start","damon_set_region_system_rams_default","damon_lru_sort_apply_parameters","damon_reclaim_apply_parameters","damon_sysfs_set_regions","damon_sysfs_commit_input"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"ff1cd4bfdfebea913df9682c4a715bca55759ff0","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_PADDR","DAMON_VADDR","DAMON_SYSFS","DAMON_RECLAIM","DAMON_LRU_SORT"],"series_id":"bd9aa674-b9a5-446a-8f32-5cb7a5a85edd","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-07-01 23:36:13 +0000 UTC FinishedAt: 2026-07-01 23:36:13 +0000 UTC Input: nil Output: nil --------- Name: series-workflowgrspj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ff1cd4bfdfebea913df9682c4a715bca55759ff0","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_PADDR","DAMON_VADDR","DAMON_SYSFS","DAMON_RECLAIM","DAMON_LRU_SORT"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["damon_commit_ctx","damon_start","damon_set_region_system_rams_default","damon_lru_sort_apply_parameters","damon_reclaim_apply_parameters","damon_sysfs_set_regions","damon_sysfs_commit_input"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"ff1cd4bfdfebea913df9682c4a715bca55759ff0","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_PADDR","DAMON_VADDR","DAMON_SYSFS","DAMON_RECLAIM","DAMON_LRU_SORT"],"series_id":"bd9aa674-b9a5-446a-8f32-5cb7a5a85edd","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-07-01 23:36:13 +0000 UTC FinishedAt: 2026-07-01 23:36:23 +0000 UTC Input: nil Output: nil --------- Name: series-workflowgrspj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ff1cd4bfdfebea913df9682c4a715bca55759ff0","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_PADDR","DAMON_VADDR","DAMON_SYSFS","DAMON_RECLAIM","DAMON_LRU_SORT"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["damon_commit_ctx","damon_start","damon_set_region_system_rams_default","damon_lru_sort_apply_parameters","damon_reclaim_apply_parameters","damon_sysfs_set_regions","damon_sysfs_commit_input"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"ff1cd4bfdfebea913df9682c4a715bca55759ff0","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_PADDR","DAMON_VADDR","DAMON_SYSFS","DAMON_RECLAIM","DAMON_LRU_SORT"],"series_id":"bd9aa674-b9a5-446a-8f32-5cb7a5a85edd","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-07-01 23:36:13 +0000 UTC FinishedAt: 2026-07-01 23:36:20 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"ff1cd4bfdfebea913df9682c4a715bca55759ff0","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_PADDR","DAMON_VADDR","DAMON_SYSFS","DAMON_RECLAIM","DAMON_LRU_SORT"],"series_id":"bd9aa674-b9a5-446a-8f32-5cb7a5a85edd","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowgrspj/series-workflowgrspj-convert-artifact-3501425578/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowgrspj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ff1cd4bfdfebea913df9682c4a715bca55759ff0","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_PADDR","DAMON_VADDR","DAMON_SYSFS","DAMON_RECLAIM","DAMON_LRU_SORT"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["damon_commit_ctx","damon_start","damon_set_region_system_rams_default","damon_lru_sort_apply_parameters","damon_reclaim_apply_parameters","damon_sysfs_set_regions","damon_sysfs_commit_input"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"ff1cd4bfdfebea913df9682c4a715bca55759ff0","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_PADDR","DAMON_VADDR","DAMON_SYSFS","DAMON_RECLAIM","DAMON_LRU_SORT"],"series_id":"bd9aa674-b9a5-446a-8f32-5cb7a5a85edd","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-07-01 23:36:23 +0000 UTC FinishedAt: 2026-07-01 23:38:29 +0000 UTC Input: nil Output: nil --------- Name: series-workflowgrspj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ff1cd4bfdfebea913df9682c4a715bca55759ff0","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_PADDR","DAMON_VADDR","DAMON_SYSFS","DAMON_RECLAIM","DAMON_LRU_SORT"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["damon_commit_ctx","damon_start","damon_set_region_system_rams_default","damon_lru_sort_apply_parameters","damon_reclaim_apply_parameters","damon_sysfs_set_regions","damon_sysfs_commit_input"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"ff1cd4bfdfebea913df9682c4a715bca55759ff0","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_PADDR","DAMON_VADDR","DAMON_SYSFS","DAMON_RECLAIM","DAMON_LRU_SORT"],"series_id":"bd9aa674-b9a5-446a-8f32-5cb7a5a85edd","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-07-01 23:36:23 +0000 UTC FinishedAt: 2026-07-01 23:38:19 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*92b37924-485c-4753-9d3c-3f74245f9b8b,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-workflowgrspj/series-workflowgrspj-build-action-4025119329/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-workflowgrspj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ff1cd4bfdfebea913df9682c4a715bca55759ff0","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_PADDR","DAMON_VADDR","DAMON_SYSFS","DAMON_RECLAIM","DAMON_LRU_SORT"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["damon_commit_ctx","damon_start","damon_set_region_system_rams_default","damon_lru_sort_apply_parameters","damon_reclaim_apply_parameters","damon_sysfs_set_regions","damon_sysfs_commit_input"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"ff1cd4bfdfebea913df9682c4a715bca55759ff0","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_PADDR","DAMON_VADDR","DAMON_SYSFS","DAMON_RECLAIM","DAMON_LRU_SORT"],"series_id":"bd9aa674-b9a5-446a-8f32-5cb7a5a85edd","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-07-01 23:38:29 +0000 UTC FinishedAt: 2026-07-01 23:38:29 +0000 UTC Input: nil Output: nil --------- Name: series-workflowgrspj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ff1cd4bfdfebea913df9682c4a715bca55759ff0","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_PADDR","DAMON_VADDR","DAMON_SYSFS","DAMON_RECLAIM","DAMON_LRU_SORT"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["damon_commit_ctx","damon_start","damon_set_region_system_rams_default","damon_lru_sort_apply_parameters","damon_reclaim_apply_parameters","damon_sysfs_set_regions","damon_sysfs_commit_input"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"ff1cd4bfdfebea913df9682c4a715bca55759ff0","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_PADDR","DAMON_VADDR","DAMON_SYSFS","DAMON_RECLAIM","DAMON_LRU_SORT"],"series_id":"bd9aa674-b9a5-446a-8f32-5cb7a5a85edd","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-07-01 23:38:29 +0000 UTC FinishedAt: 2026-07-01 23:38:29 +0000 UTC Input: nil Output: nil --------- Name: series-workflowgrspj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ff1cd4bfdfebea913df9682c4a715bca55759ff0","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_PADDR","DAMON_VADDR","DAMON_SYSFS","DAMON_RECLAIM","DAMON_LRU_SORT"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["damon_commit_ctx","damon_start","damon_set_region_system_rams_default","damon_lru_sort_apply_parameters","damon_reclaim_apply_parameters","damon_sysfs_set_regions","damon_sysfs_commit_input"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"ff1cd4bfdfebea913df9682c4a715bca55759ff0","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_PADDR","DAMON_VADDR","DAMON_SYSFS","DAMON_RECLAIM","DAMON_LRU_SORT"],"series_id":"bd9aa674-b9a5-446a-8f32-5cb7a5a85edd","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-07-01 23:38:29 +0000 UTC FinishedAt: 2026-07-02 00:29:55 +0000 UTC Input: nil Output: nil --------- Name: series-workflowgrspj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ff1cd4bfdfebea913df9682c4a715bca55759ff0","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_PADDR","DAMON_VADDR","DAMON_SYSFS","DAMON_RECLAIM","DAMON_LRU_SORT"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["damon_commit_ctx","damon_start","damon_set_region_system_rams_default","damon_lru_sort_apply_parameters","damon_reclaim_apply_parameters","damon_sysfs_set_regions","damon_sysfs_commit_input"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"ff1cd4bfdfebea913df9682c4a715bca55759ff0","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_PADDR","DAMON_VADDR","DAMON_SYSFS","DAMON_RECLAIM","DAMON_LRU_SORT"],"series_id":"bd9aa674-b9a5-446a-8f32-5cb7a5a85edd","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-07-01 23:38:29 +0000 UTC FinishedAt: 2026-07-02 00:29:55 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*true,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Patched,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*bae403e4-9b0f-4974-b403-3dd27e1c25d4,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-workflowgrspj/series-workflowgrspj-convert-artifact-3501425578/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": "81fc3e6f-c1e7-4418-a34b-ebf32e0f9933", "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-workflowgrspj/series-workflowgrspj-build-action-1522047694/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowgrspj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ff1cd4bfdfebea913df9682c4a715bca55759ff0","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_PADDR","DAMON_VADDR","DAMON_SYSFS","DAMON_RECLAIM","DAMON_LRU_SORT"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["damon_commit_ctx","damon_start","damon_set_region_system_rams_default","damon_lru_sort_apply_parameters","damon_reclaim_apply_parameters","damon_sysfs_set_regions","damon_sysfs_commit_input"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"ff1cd4bfdfebea913df9682c4a715bca55759ff0","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_PADDR","DAMON_VADDR","DAMON_SYSFS","DAMON_RECLAIM","DAMON_LRU_SORT"],"series_id":"bd9aa674-b9a5-446a-8f32-5cb7a5a85edd","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-07-01 23:38:29 +0000 UTC FinishedAt: 2026-07-02 00:29:45 +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:*bae403e4-9b0f-4974-b403-3dd27e1c25d4,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-workflowgrspj/series-workflowgrspj-convert-artifact-3501425578/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": "81fc3e6f-c1e7-4418-a34b-ebf32e0f9933", "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-workflowgrspj/series-workflowgrspj-build-action-1522047694/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowgrspj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ff1cd4bfdfebea913df9682c4a715bca55759ff0","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_PADDR","DAMON_VADDR","DAMON_SYSFS","DAMON_RECLAIM","DAMON_LRU_SORT"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["damon_commit_ctx","damon_start","damon_set_region_system_rams_default","damon_lru_sort_apply_parameters","damon_reclaim_apply_parameters","damon_sysfs_set_regions","damon_sysfs_commit_input"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"ff1cd4bfdfebea913df9682c4a715bca55759ff0","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_PADDR","DAMON_VADDR","DAMON_SYSFS","DAMON_RECLAIM","DAMON_LRU_SORT"],"series_id":"bd9aa674-b9a5-446a-8f32-5cb7a5a85edd","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-07-02 00:29:55 +0000 UTC FinishedAt: 2026-07-02 00:29:55 +0000 UTC Input: nil Output: nil --------- Name: series-workflowgrspj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ff1cd4bfdfebea913df9682c4a715bca55759ff0","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_PADDR","DAMON_VADDR","DAMON_SYSFS","DAMON_RECLAIM","DAMON_LRU_SORT"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["damon_commit_ctx","damon_start","damon_set_region_system_rams_default","damon_lru_sort_apply_parameters","damon_reclaim_apply_parameters","damon_sysfs_set_regions","damon_sysfs_commit_input"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"ff1cd4bfdfebea913df9682c4a715bca55759ff0","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_PADDR","DAMON_VADDR","DAMON_SYSFS","DAMON_RECLAIM","DAMON_LRU_SORT"],"series_id":"bd9aa674-b9a5-446a-8f32-5cb7a5a85edd","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-07-02 00:29:55 +0000 UTC FinishedAt: 2026-07-02 00:29:55 +0000 UTC Input: nil Output: nil --------- Name: series-workflowgrspj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ff1cd4bfdfebea913df9682c4a715bca55759ff0","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_PADDR","DAMON_VADDR","DAMON_SYSFS","DAMON_RECLAIM","DAMON_LRU_SORT"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["damon_commit_ctx","damon_start","damon_set_region_system_rams_default","damon_lru_sort_apply_parameters","damon_reclaim_apply_parameters","damon_sysfs_set_regions","damon_sysfs_commit_input"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"ff1cd4bfdfebea913df9682c4a715bca55759ff0","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_PADDR","DAMON_VADDR","DAMON_SYSFS","DAMON_RECLAIM","DAMON_LRU_SORT"],"series_id":"bd9aa674-b9a5-446a-8f32-5cb7a5a85edd","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-07-02 00:29:55 +0000 UTC FinishedAt: 2026-07-02 00:31:59 +0000 UTC Input: nil Output: nil --------- Name: series-workflowgrspj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ff1cd4bfdfebea913df9682c4a715bca55759ff0","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_PADDR","DAMON_VADDR","DAMON_SYSFS","DAMON_RECLAIM","DAMON_LRU_SORT"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["damon_commit_ctx","damon_start","damon_set_region_system_rams_default","damon_lru_sort_apply_parameters","damon_reclaim_apply_parameters","damon_sysfs_set_regions","damon_sysfs_commit_input"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"ff1cd4bfdfebea913df9682c4a715bca55759ff0","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_PADDR","DAMON_VADDR","DAMON_SYSFS","DAMON_RECLAIM","DAMON_LRU_SORT"],"series_id":"bd9aa674-b9a5-446a-8f32-5cb7a5a85edd","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-07-02 00:29:55 +0000 UTC FinishedAt: 2026-07-02 00:31:49 +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:*81fc3e6f-c1e7-4418-a34b-ebf32e0f9933,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-workflowgrspj/series-workflowgrspj-build-action-1522047694/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-workflowgrspj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ff1cd4bfdfebea913df9682c4a715bca55759ff0","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_PADDR","DAMON_VADDR","DAMON_SYSFS","DAMON_RECLAIM","DAMON_LRU_SORT"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["damon_commit_ctx","damon_start","damon_set_region_system_rams_default","damon_lru_sort_apply_parameters","damon_reclaim_apply_parameters","damon_sysfs_set_regions","damon_sysfs_commit_input"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"ff1cd4bfdfebea913df9682c4a715bca55759ff0","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_PADDR","DAMON_VADDR","DAMON_SYSFS","DAMON_RECLAIM","DAMON_LRU_SORT"],"series_id":"bd9aa674-b9a5-446a-8f32-5cb7a5a85edd","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-07-02 00:31:59 +0000 UTC FinishedAt: 2026-07-02 03:35:29 +0000 UTC Input: nil Output: nil --------- Name: series-workflowgrspj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ff1cd4bfdfebea913df9682c4a715bca55759ff0","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_PADDR","DAMON_VADDR","DAMON_SYSFS","DAMON_RECLAIM","DAMON_LRU_SORT"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["damon_commit_ctx","damon_start","damon_set_region_system_rams_default","damon_lru_sort_apply_parameters","damon_reclaim_apply_parameters","damon_sysfs_set_regions","damon_sysfs_commit_input"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"ff1cd4bfdfebea913df9682c4a715bca55759ff0","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_PADDR","DAMON_VADDR","DAMON_SYSFS","DAMON_RECLAIM","DAMON_LRU_SORT"],"series_id":"bd9aa674-b9a5-446a-8f32-5cb7a5a85edd","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-07-02 00:31:59 +0000 UTC FinishedAt: 2026-07-02 03:35:29 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:config,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["damon_commit_ctx","damon_start","damon_set_region_system_rams_default","damon_lru_sort_apply_parameters","damon_reclaim_apply_parameters","damon_sysfs_set_regions","damon_sysfs_commit_input"],"skip_cover_check":true},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:*92b37924-485c-4753-9d3c-3f74245f9b8b,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*81fc3e6f-c1e7-4418-a34b-ebf32e0f9933,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-workflowgrspj/series-workflowgrspj-build-action-4025119329/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-workflowgrspj/series-workflowgrspj-build-action-1522047694/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowgrspj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ff1cd4bfdfebea913df9682c4a715bca55759ff0","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_PADDR","DAMON_VADDR","DAMON_SYSFS","DAMON_RECLAIM","DAMON_LRU_SORT"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["damon_commit_ctx","damon_start","damon_set_region_system_rams_default","damon_lru_sort_apply_parameters","damon_reclaim_apply_parameters","damon_sysfs_set_regions","damon_sysfs_commit_input"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"ff1cd4bfdfebea913df9682c4a715bca55759ff0","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_PADDR","DAMON_VADDR","DAMON_SYSFS","DAMON_RECLAIM","DAMON_LRU_SORT"],"series_id":"bd9aa674-b9a5-446a-8f32-5cb7a5a85edd","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-07-02 00:31:59 +0000 UTC FinishedAt: 2026-07-02 00:33:01 +0000 UTC Input: nil Output: nil --------- Name: series-workflowgrspj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ff1cd4bfdfebea913df9682c4a715bca55759ff0","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_PADDR","DAMON_VADDR","DAMON_SYSFS","DAMON_RECLAIM","DAMON_LRU_SORT"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["damon_commit_ctx","damon_start","damon_set_region_system_rams_default","damon_lru_sort_apply_parameters","damon_reclaim_apply_parameters","damon_sysfs_set_regions","damon_sysfs_commit_input"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"ff1cd4bfdfebea913df9682c4a715bca55759ff0","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_PADDR","DAMON_VADDR","DAMON_SYSFS","DAMON_RECLAIM","DAMON_LRU_SORT"],"series_id":"bd9aa674-b9a5-446a-8f32-5cb7a5a85edd","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-07-02 00:31:59 +0000 UTC FinishedAt: 2026-07-02 00:32:53 +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-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["damon_commit_ctx","damon_start","damon_set_region_system_rams_default","damon_lru_sort_apply_parameters","damon_reclaim_apply_parameters","damon_sysfs_set_regions","damon_sysfs_commit_input"],"skip_cover_check":true},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-workflowgrspj/series-workflowgrspj-convert-artifact-2327328063/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowgrspj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ff1cd4bfdfebea913df9682c4a715bca55759ff0","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_PADDR","DAMON_VADDR","DAMON_SYSFS","DAMON_RECLAIM","DAMON_LRU_SORT"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["damon_commit_ctx","damon_start","damon_set_region_system_rams_default","damon_lru_sort_apply_parameters","damon_reclaim_apply_parameters","damon_sysfs_set_regions","damon_sysfs_commit_input"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"ff1cd4bfdfebea913df9682c4a715bca55759ff0","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_PADDR","DAMON_VADDR","DAMON_SYSFS","DAMON_RECLAIM","DAMON_LRU_SORT"],"series_id":"bd9aa674-b9a5-446a-8f32-5cb7a5a85edd","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-07-02 00:31:59 +0000 UTC FinishedAt: 2026-07-02 00:31:59 +0000 UTC Input: nil Output: nil --------- Name: series-workflowgrspj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ff1cd4bfdfebea913df9682c4a715bca55759ff0","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_PADDR","DAMON_VADDR","DAMON_SYSFS","DAMON_RECLAIM","DAMON_LRU_SORT"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["damon_commit_ctx","damon_start","damon_set_region_system_rams_default","damon_lru_sort_apply_parameters","damon_reclaim_apply_parameters","damon_sysfs_set_regions","damon_sysfs_commit_input"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"ff1cd4bfdfebea913df9682c4a715bca55759ff0","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_PADDR","DAMON_VADDR","DAMON_SYSFS","DAMON_RECLAIM","DAMON_LRU_SORT"],"series_id":"bd9aa674-b9a5-446a-8f32-5cb7a5a85edd","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-07-02 00:31:59 +0000 UTC FinishedAt: 2026-07-02 00:31:59 +0000 UTC Input: nil Output: nil --------- Name: series-workflowgrspj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ff1cd4bfdfebea913df9682c4a715bca55759ff0","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_PADDR","DAMON_VADDR","DAMON_SYSFS","DAMON_RECLAIM","DAMON_LRU_SORT"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["damon_commit_ctx","damon_start","damon_set_region_system_rams_default","damon_lru_sort_apply_parameters","damon_reclaim_apply_parameters","damon_sysfs_set_regions","damon_sysfs_commit_input"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"ff1cd4bfdfebea913df9682c4a715bca55759ff0","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_PADDR","DAMON_VADDR","DAMON_SYSFS","DAMON_RECLAIM","DAMON_LRU_SORT"],"series_id":"bd9aa674-b9a5-446a-8f32-5cb7a5a85edd","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-07-02 00:31:59 +0000 UTC FinishedAt: 2026-07-02 00:31:59 +0000 UTC Input: nil Output: nil --------- Name: series-workflowgrspj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ff1cd4bfdfebea913df9682c4a715bca55759ff0","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_PADDR","DAMON_VADDR","DAMON_SYSFS","DAMON_RECLAIM","DAMON_LRU_SORT"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["damon_commit_ctx","damon_start","damon_set_region_system_rams_default","damon_lru_sort_apply_parameters","damon_reclaim_apply_parameters","damon_sysfs_set_regions","damon_sysfs_commit_input"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"ff1cd4bfdfebea913df9682c4a715bca55759ff0","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_PADDR","DAMON_VADDR","DAMON_SYSFS","DAMON_RECLAIM","DAMON_LRU_SORT"],"series_id":"bd9aa674-b9a5-446a-8f32-5cb7a5a85edd","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-07-02 00:33:01 +0000 UTC FinishedAt: 2026-07-02 03:35:29 +0000 UTC Input: nil Output: nil --------- Name: series-workflowgrspj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ff1cd4bfdfebea913df9682c4a715bca55759ff0","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_PADDR","DAMON_VADDR","DAMON_SYSFS","DAMON_RECLAIM","DAMON_LRU_SORT"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["damon_commit_ctx","damon_start","damon_set_region_system_rams_default","damon_lru_sort_apply_parameters","damon_reclaim_apply_parameters","damon_sysfs_set_regions","damon_sysfs_commit_input"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"ff1cd4bfdfebea913df9682c4a715bca55759ff0","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_PADDR","DAMON_VADDR","DAMON_SYSFS","DAMON_RECLAIM","DAMON_LRU_SORT"],"series_id":"bd9aa674-b9a5-446a-8f32-5cb7a5a85edd","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-07-02 00:33:01 +0000 UTC FinishedAt: 2026-07-02 03:35:19 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*92b37924-485c-4753-9d3c-3f74245f9b8b,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*81fc3e6f-c1e7-4418-a34b-ebf32e0f9933,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-workflowgrspj/series-workflowgrspj-build-action-4025119329/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-workflowgrspj/series-workflowgrspj-build-action-1522047694/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-workflowgrspj/series-workflowgrspj-convert-artifact-2327328063/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,}