Name: series-workflowtdf5z Phase: Succeeded StartedAt: 2026-06-23 12:14:50 +0000 UTC FinishedAt: 2026-06-23 16:23:56 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtdf5z[0] Phase: Succeeded StartedAt: 2026-06-23 12:14:50 +0000 UTC FinishedAt: 2026-06-23 12:25:51 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtdf5z[0].run-triage Phase: Succeeded StartedAt: 2026-06-23 12:14:50 +0000 UTC FinishedAt: 2026-06-23 12:25:51 +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": "1dc18801be29bc54709aa355b8acd80e183b03cd", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "CACHESTAT_SYSCALL", "OVERLAY_FS" ], "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": "1dc18801be29bc54709aa355b8acd80e183b03cd", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "CACHESTAT_SYSCALL", "OVERLAY_FS" ], "series_id": "ef226665-ba0a-4e7e-a8ab-545482a1e2da" }, "track": "KASAN", "fuzz": { "focus": [ "fs" ], "focus_symbols": [ "ovl_cachestat", "vfs_cachestat" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db", "https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db" ], "skip_cover_check": true, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzIzIDEyOjI1PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0NBQ0hFU1RBVF9TWVNDQUxMJiMzNDssCiAgICAmIzM0O09WRVJMQVlfRlMmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtvdmxfY2FjaGVzdGF0JiMzNDssCiAgICAmIzM0O3Zmc19jYWNoZXN0YXQmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggaW1wbGVtZW50cyB0aGUgY2FjaGVzdGF0IGZpbGUgb3BlcmF0aW9uIGZvciBvdmVybGF5ZnMsIGFsbG93aW5nIHRoZSBjYWNoZXN0YXQgc3lzY2FsbCB0byBjb3JyZWN0bHkgcXVlcnkgcGFnZSBjYWNoZSBzdGF0aXN0aWNzIGZvciBmaWxlcyBvbiBvdmVybGF5ZnMgYnkgZm9yd2FyZGluZyB0aGUgcmVxdWVzdCB0byB0aGUgdW5kZXJseWluZyBmaWxlLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdGhhdCBpbnRyb2R1Y2VzIG5ldyByZWFjaGFibGUgY29kZSBpbiB0aGUgVkZTIGFuZCBvdmVybGF5ZnMgbGF5ZXJzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzIzIDEyOjI1PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgMGJjNGFjMzI5YjAzYWRlNzA4ZWZiMzk3OWU1NGE5MjQyYjg5MmMyOVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUdWUgSnVuIDIzIDEyOjI1OjEzIDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2ZzL292ZXJsYXlmcy9maWxlLmMgYi9mcy9vdmVybGF5ZnMvZmlsZS5jXG5pbmRleCAyN2NjMDc3MzhmMzNiZi4uYTdlMjUyYTkxZWE0MzUgMTAwNjQ0XG4tLS0gYS9mcy9vdmVybGF5ZnMvZmlsZS5jXG4mIzQzOyYjNDM7JiM0MzsgYi9mcy9vdmVybGF5ZnMvZmlsZS5jXG5AQCAtNTE4LDYgJiM0Mzs1MTgsMjEgQEAgc3RhdGljIGludCBvdmxfZmFkdmlzZShzdHJ1Y3QgZmlsZSAqZmlsZSwgbG9mZl90IG9mZnNldCwgbG9mZl90IGxlbiwgaW50IGFkdmljZSlcbiBcdFx0cmV0dXJuIHZmc19mYWR2aXNlKHJlYWxmaWxlLCBvZmZzZXQsIGxlbiwgYWR2aWNlKTtcbiB9XG4gXG4mIzQzOyNpZmRlZiBDT05GSUdfQ0FDSEVTVEFUX1NZU0NBTExcbiYjNDM7c3RhdGljIGludCBvdmxfY2FjaGVzdGF0KHN0cnVjdCBmaWxlICpmaWxlLCBzdHJ1Y3QgY2FjaGVzdGF0X3JhbmdlICpjc3IsXG4mIzQzO1x0XHRcdCBzdHJ1Y3QgY2FjaGVzdGF0ICpjcylcbiYjNDM7e1xuJiM0MztcdHN0cnVjdCBmaWxlICpyZWFsZmlsZTtcbiYjNDM7XG4mIzQzO1x0cmVhbGZpbGUgPSBvdmxfcmVhbF9maWxlKGZpbGUpO1xuJiM0MztcdGlmIChJU19FUlIocmVhbGZpbGUpKVxuJiM0MztcdFx0cmV0dXJuIFBUUl9FUlIocmVhbGZpbGUpO1xuJiM0MztcbiYjNDM7XHR3aXRoX292bF9jcmVkcyhmaWxlX2lub2RlKGZpbGUpLVx1MDAzZWlfc2IpXG4mIzQzO1x0XHRyZXR1cm4gdmZzX2NhY2hlc3RhdChyZWFsZmlsZSwgY3NyLCBjcyk7XG4mIzQzO31cbiYjNDM7I2VuZGlmXG4mIzQzO1xuIGVudW0gb3ZsX2NvcHlvcCB7XG4gXHRPVkxfQ09QWSxcbiBcdE9WTF9DTE9ORSxcbkBAIC02NDIsNiAmIzQzOzY1Nyw5IEBAIGNvbnN0IHN0cnVjdCBmaWxlX29wZXJhdGlvbnMgb3ZsX2ZpbGVfb3BlcmF0aW9ucyA9IHtcbiBcdC5tbWFwXHRcdD0gb3ZsX21tYXAsXG4gXHQuZmFsbG9jYXRlXHQ9IG92bF9mYWxsb2NhdGUsXG4gXHQuZmFkdmlzZVx0PSBvdmxfZmFkdmlzZSxcbiYjNDM7I2lmZGVmIENPTkZJR19DQUNIRVNUQVRfU1lTQ0FMTFxuJiM0MztcdC5jYWNoZXN0YXRcdD0gb3ZsX2NhY2hlc3RhdCxcbiYjNDM7I2VuZGlmXG4gXHQuZmx1c2hcdFx0PSBvdmxfZmx1c2gsXG4gXHQuc3BsaWNlX3JlYWQgICAgPSBvdmxfc3BsaWNlX3JlYWQsXG4gXHQuc3BsaWNlX3dyaXRlICAgPSBvdmxfc3BsaWNlX3dyaXRlLFxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvZnMuaCBiL2luY2x1ZGUvbGludXgvZnMuaFxuaW5kZXggNmRhNDQ1NzNjZTQ1MDguLjk2NmI2NTY0NzA3ZTQ4IDEwMDY0NFxuLS0tIGEvaW5jbHVkZS9saW51eC9mcy5oXG4mIzQzOyYjNDM7JiM0MzsgYi9pbmNsdWRlL2xpbnV4L2ZzLmhcbkBAIC01Myw2ICYjNDM7NTMsOCBAQFxuIFxuIHN0cnVjdCBiZGlfd3JpdGViYWNrO1xuIHN0cnVjdCBiaW87XG4mIzQzO3N0cnVjdCBjYWNoZXN0YXRfcmFuZ2U7XG4mIzQzO3N0cnVjdCBjYWNoZXN0YXQ7XG4gc3RydWN0IGlvX2NvbXBfYmF0Y2g7XG4gc3RydWN0IGZpZW1hcF9leHRlbnRfaW5mbztcbiBzdHJ1Y3Qga2lvY2I7XG5AQCAtMTk2Myw2ICYjNDM7MTk2NSw4IEBAIHN0cnVjdCBmaWxlX29wZXJhdGlvbnMge1xuIFx0XHRcdFx0ICAgc3RydWN0IGZpbGUgKmZpbGVfb3V0LCBsb2ZmX3QgcG9zX291dCxcbiBcdFx0XHRcdCAgIGxvZmZfdCBsZW4sIHVuc2lnbmVkIGludCByZW1hcF9mbGFncyk7XG4gXHRpbnQgKCpmYWR2aXNlKShzdHJ1Y3QgZmlsZSAqLCBsb2ZmX3QsIGxvZmZfdCwgaW50KTtcbiYjNDM7XHRpbnQgKCpjYWNoZXN0YXQpKHN0cnVjdCBmaWxlICpmaWxlLCBzdHJ1Y3QgY2FjaGVzdGF0X3JhbmdlICpjc3IsXG4mIzQzO1x0XHRcdCBzdHJ1Y3QgY2FjaGVzdGF0ICpjcyk7XG4gXHRpbnQgKCp1cmluZ19jbWQpKHN0cnVjdCBpb191cmluZ19jbWQgKmlvdWNtZCwgdW5zaWduZWQgaW50IGlzc3VlX2ZsYWdzKTtcbiBcdGludCAoKnVyaW5nX2NtZF9pb3BvbGwpKHN0cnVjdCBpb191cmluZ19jbWQgKiwgc3RydWN0IGlvX2NvbXBfYmF0Y2ggKixcbiBcdFx0XHRcdHVuc2lnbmVkIGludCBwb2xsX2ZsYWdzKTtcbkBAIC0zNjMzLDYgJiM0MzszNjM3LDEyIEBAIGV4dGVybiBpbnQgdmZzX2ZhZHZpc2Uoc3RydWN0IGZpbGUgKmZpbGUsIGxvZmZfdCBvZmZzZXQsIGxvZmZfdCBsZW4sXG4gZXh0ZXJuIGludCBnZW5lcmljX2ZhZHZpc2Uoc3RydWN0IGZpbGUgKmZpbGUsIGxvZmZfdCBvZmZzZXQsIGxvZmZfdCBsZW4sXG4gXHRcdFx0ICAgaW50IGFkdmljZSk7XG4gXG4mIzQzOy8qIG1tL2ZpbGVtYXAuYyAqL1xuJiM0MzsjaWZkZWYgQ09ORklHX0NBQ0hFU1RBVF9TWVNDQUxMXG4mIzQzO2ludCB2ZnNfY2FjaGVzdGF0KHN0cnVjdCBmaWxlICpmaWxlLCBzdHJ1Y3QgY2FjaGVzdGF0X3JhbmdlICpjc3IsXG4mIzQzO1x0XHQgIHN0cnVjdCBjYWNoZXN0YXQgKmNzKTtcbiYjNDM7I2VuZGlmXG4mIzQzO1xuIHN0YXRpYyBpbmxpbmUgYm9vbCB2ZnNfZW1wdHlfcGF0aChpbnQgZGZkLCBjb25zdCBjaGFyIF9fdXNlciAqcGF0aClcbiB7XG4gXHRjaGFyIGM7XG5kaWZmIC0tZ2l0IGEvbW0vZmlsZW1hcC5jIGIvbW0vZmlsZW1hcC5jXG5pbmRleCA3ZTQ2N2M4MWQyMTM4OS4uOTA2MDhjNmIxY2U1NTEgMTAwNjQ0XG4tLS0gYS9tbS9maWxlbWFwLmNcbiYjNDM7JiM0MzsmIzQzOyBiL21tL2ZpbGVtYXAuY1xuQEAgLTQ3MTQsNiAmIzQzOzQ3MTQsMzcgQEAgc3RhdGljIGlubGluZSBib29sIGNhbl9kb19jYWNoZXN0YXQoc3RydWN0IGZpbGUgKmYpXG4gXHRyZXR1cm4gZmlsZV9wZXJtaXNzaW9uKGYsIE1BWV9XUklURSkgPT0gMDtcbiB9XG4gXG4mIzQzOy8qKlxuJiM0MzsgKiB2ZnNfY2FjaGVzdGF0KCkgLSBxdWVyeSBwYWdlIGNhY2hlIHN0YXRpc3RpY3Mgb2YgYSBmaWxlXG4mIzQzOyAqIEBmaWxlOlx0ZmlsZSB0byBxdWVyeVxuJiM0MzsgKiBAY3NyOlx0Ynl0ZSByYW5nZSB0byBxdWVyeVxuJiM0MzsgKiBAY3M6XHRcdG91dHB1dCBzdGF0aXN0aWNzXG4mIzQzOyAqXG4mIzQzOyAqIENvbXB1dGUgdGhlIHBhZ2UgY2FjaGUgc3RhdGlzdGljcyBmb3IgdGhlIGdpdmVuIGJ5dGUgcmFuZ2Ugb2YgQGZpbGUuXG4mIzQzOyAqXG4mIzQzOyAqIFN0YWNrYWJsZSBmaWxlc3lzdGVtcyAoZS5nLiBvdmVybGF5ZnMpIGtlZXAgdGhlIGRhdGEgcGFnZXMgaW4gdGhlXG4mIzQzOyAqIG1hcHBpbmcgb2YgYW4gdW5kZXJseWluZyBmaWxlIHJhdGhlciB0aGFuIGluIEBmaWxlLVx1MDAzZWZfbWFwcGluZy4gU3VjaFxuJiM0MzsgKiBmaWxlc3lzdGVtcyBwcm92aWRlIGEgLVx1MDAzZWNhY2hlc3RhdCgpIGZpbGUgb3BlcmF0aW9uIHRoYXQgZm9yd2FyZHMgdGhlXG4mIzQzOyAqIHF1ZXJ5IHRvIHRoZSBmaWxlIHRoYXQgYWN0dWFsbHkgb3ducyB0aGUgcGFnZSBjYWNoZTsgb3RoZXJ3aXNlIHRoZVxuJiM0MzsgKiBzdGF0aXN0aWNzIGFyZSBjb21wdXRlZCBmcm9tIEBmaWxlLVx1MDAzZWZfbWFwcGluZyBkaXJlY3RseS5cbiYjNDM7ICovXG4mIzQzO2ludCB2ZnNfY2FjaGVzdGF0KHN0cnVjdCBmaWxlICpmaWxlLCBzdHJ1Y3QgY2FjaGVzdGF0X3JhbmdlICpjc3IsXG4mIzQzO1x0XHQgIHN0cnVjdCBjYWNoZXN0YXQgKmNzKVxuJiM0Mzt7XG4mIzQzO1x0cGdvZmZfdCBmaXJzdF9pbmRleCwgbGFzdF9pbmRleDtcbiYjNDM7XG4mIzQzO1x0aWYgKGZpbGUtXHUwMDNlZl9vcC1cdTAwM2VjYWNoZXN0YXQpXG4mIzQzO1x0XHRyZXR1cm4gZmlsZS1cdTAwM2VmX29wLVx1MDAzZWNhY2hlc3RhdChmaWxlLCBjc3IsIGNzKTtcbiYjNDM7XG4mIzQzO1x0Zmlyc3RfaW5kZXggPSBjc3ItXHUwMDNlb2ZmIFx1MDAzZVx1MDAzZSBQQUdFX1NISUZUO1xuJiM0MztcdGxhc3RfaW5kZXggPVxuJiM0MztcdFx0Y3NyLVx1MDAzZWxlbiA9PSAwID8gVUxPTkdfTUFYIDogKGNzci1cdTAwM2VvZmYgJiM0MzsgY3NyLVx1MDAzZWxlbiAtIDEpIFx1MDAzZVx1MDAzZSBQQUdFX1NISUZUO1xuJiM0MztcdG1lbXNldChjcywgMCwgc2l6ZW9mKHN0cnVjdCBjYWNoZXN0YXQpKTtcbiYjNDM7XHRmaWxlbWFwX2NhY2hlc3RhdChmaWxlLVx1MDAzZWZfbWFwcGluZywgZmlyc3RfaW5kZXgsIGxhc3RfaW5kZXgsIGNzKTtcbiYjNDM7XHRyZXR1cm4gMDtcbiYjNDM7fVxuJiM0MztFWFBPUlRfU1lNQk9MKHZmc19jYWNoZXN0YXQpO1xuJiM0MztcbiAvKlxuICAqIFRoZSBjYWNoZXN0YXQoMikgc3lzdGVtIGNhbGwuXG4gICpcbkBAIC00NzUzLDEwICYjNDM7NDc4NCw5IEBAIFNZU0NBTExfREVGSU5FNChjYWNoZXN0YXQsIHVuc2lnbmVkIGludCwgZmQsXG4gXHRcdHN0cnVjdCBjYWNoZXN0YXQgX191c2VyICosIGNzdGF0LCB1bnNpZ25lZCBpbnQsIGZsYWdzKVxuIHtcbiBcdENMQVNTKGZkLCBmKShmZCk7XG4tXHRzdHJ1Y3QgYWRkcmVzc19zcGFjZSAqbWFwcGluZztcbiBcdHN0cnVjdCBjYWNoZXN0YXRfcmFuZ2UgY3NyO1xuIFx0c3RydWN0IGNhY2hlc3RhdCBjcztcbi1cdHBnb2ZmX3QgZmlyc3RfaW5kZXgsIGxhc3RfaW5kZXg7XG4mIzQzO1x0aW50IHJldDtcbiBcbiBcdGlmIChmZF9lbXB0eShmKSlcbiBcdFx0cmV0dXJuIC1FQkFERjtcbkBAIC00Nzc1LDEyICYjNDM7NDgwNSw5IEBAIFNZU0NBTExfREVGSU5FNChjYWNoZXN0YXQsIHVuc2lnbmVkIGludCwgZmQsXG4gXHRpZiAoZmxhZ3MgIT0gMClcbiBcdFx0cmV0dXJuIC1FSU5WQUw7XG4gXG4tXHRmaXJzdF9pbmRleCA9IGNzci5vZmYgXHUwMDNlXHUwMDNlIFBBR0VfU0hJRlQ7XG4tXHRsYXN0X2luZGV4ID1cbi1cdFx0Y3NyLmxlbiA9PSAwID8gVUxPTkdfTUFYIDogKGNzci5vZmYgJiM0MzsgY3NyLmxlbiAtIDEpIFx1MDAzZVx1MDAzZSBQQUdFX1NISUZUO1xuLVx0bWVtc2V0KFx1MDAyNmNzLCAwLCBzaXplb2Yoc3RydWN0IGNhY2hlc3RhdCkpO1xuLVx0bWFwcGluZyA9IGZkX2ZpbGUoZiktXHUwMDNlZl9tYXBwaW5nO1xuLVx0ZmlsZW1hcF9jYWNoZXN0YXQobWFwcGluZywgZmlyc3RfaW5kZXgsIGxhc3RfaW5kZXgsIFx1MDAyNmNzKTtcbiYjNDM7XHRyZXQgPSB2ZnNfY2FjaGVzdGF0KGZkX2ZpbGUoZiksIFx1MDAyNmNzciwgXHUwMDI2Y3MpO1xuJiM0MztcdGlmIChyZXQpXG4mIzQzO1x0XHRyZXR1cm4gcmV0O1xuIFxuIFx0aWYgKGNvcHlfdG9fdXNlcihjc3RhdCwgXHUwMDI2Y3MsIHNpemVvZihzdHJ1Y3QgY2FjaGVzdGF0KSkpXG4gXHRcdHJldHVybiAtRUZBVUxUO1xuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2NhY2hlc3RhdC90ZXN0X2NhY2hlc3RhdC5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvY2FjaGVzdGF0L3Rlc3RfY2FjaGVzdGF0LmNcbmluZGV4IDU0MmNkMDljYjQ0MzRlLi4xNjYyZDk4MTdjNTBiZiAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2NhY2hlc3RhdC90ZXN0X2NhY2hlc3RhdC5jXG4mIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9jYWNoZXN0YXQvdGVzdF9jYWNoZXN0YXQuY1xuQEAgLTQsMjEgJiM0Mzs0LDI1IEBAXG4gXG4gI2luY2x1ZGUgXHUwMDNjc3RkaW8uaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY3N0ZGJvb2wuaFx1MDAzZVxuJiM0MzsjaW5jbHVkZSBcdTAwM2NzdGRsaWIuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L2tlcm5lbC5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvbWFnaWMuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L21tYW4uaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY3N5cy9tbWFuLmhcdTAwM2VcbiYjNDM7I2luY2x1ZGUgXHUwMDNjc3lzL21vdW50LmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NzeXMvc2htLmhcdTAwM2VcbiYjNDM7I2luY2x1ZGUgXHUwMDNjc3lzL3N0YXQuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY3N5cy9zeXNjYWxsLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NzeXMvdmZzLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2N1bmlzdGQuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY3N0cmluZy5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjZmNudGwuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2Vycm5vLmhcdTAwM2VcbiYjNDM7I2luY2x1ZGUgXHUwMDNjbGltaXRzLmhcdTAwM2VcbiBcbiAjaW5jbHVkZSBcJiMzNDtrc2VsZnRlc3QuaFwmIzM0O1xuIFxuLSNkZWZpbmUgTlJfVEVTVFNcdDlcbiYjNDM7I2RlZmluZSBOUl9URVNUU1x0MTFcbiBcbiBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IGRldl9maWxlc1tdID0ge1xuIFx0XCYjMzQ7L2Rldi96ZXJvXCYjMzQ7LCBcJiMzNDsvZGV2L251bGxcJiMzNDssIFwmIzM0Oy9kZXYvdXJhbmRvbVwmIzM0OyxcbkBAIC0yOTQsNiAmIzQzOzI5OCw2MiBAQCBib29sIHJ1bl9jYWNoZXN0YXRfdGVzdChlbnVtIGZpbGVfdHlwZSB0eXBlKVxuIFx0cmV0dXJuIHJldDtcbiB9XG4gXG4mIzQzOy8qXG4mIzQzOyAqIFNldCB1cCBhbiBvdmVybGF5ZnMgbW91bnQgYW5kIHJ1biBjYWNoZXN0YXQgb24gYSBmcmVzaGx5IGNyZWF0ZWQgZmlsZSBpbiB0aGVcbiYjNDM7ICogbWVyZ2VkIGRpcmVjdG9yeS4gT3ZlcmxheWZzIGZvcndhcmRzIGRhdGEgSS9PIHRvIHRoZSB1bmRlcmx5aW5nICh1cHBlcilcbiYjNDM7ICogaW5vZGUsIHNvIHRoZSBwYWdlIGNhY2hlIGxpdmVzIHRoZXJlIGFuZCBub3QgaW4gdGhlIG92ZXJsYXkgaW5vZGUmIzM5O3MgbWFwcGluZy5cbiYjNDM7ICogVGhpcyBpcyBhIHJlZ3Jlc3Npb24gdGVzdCBmb3IgY2FjaGVzdGF0IHJldHVybmluZyBhbGwgemVyb2VzIG9uIG92ZXJsYXlmcy5cbiYjNDM7ICovXG4mIzQzO3N0YXRpYyBpbnQgcnVuX2NhY2hlc3RhdF9vdmVybGF5ZnNfdGVzdCh2b2lkKVxuJiM0Mzt7XG4mIzQzO1x0Y2hhciB0bXBsW10gPSBcJiMzNDsvdG1wL2NhY2hlc3RhdF9vdmwuWFhYWFhYXCYjMzQ7O1xuJiM0MztcdGNoYXIgbG93ZXJbUEFUSF9NQVhdLCB1cHBlcltQQVRIX01BWF0sIHdvcmtbUEFUSF9NQVhdO1xuJiM0MztcdGNoYXIgbWVyZ2VkW1BBVEhfTUFYXSwgb3B0c1s0ICogUEFUSF9NQVhdLCBmaWxlW1BBVEhfTUFYXTtcbiYjNDM7XHRjaGFyICpiYXNlO1xuJiM0MztcdGludCByZXQ7XG4mIzQzO1xuJiM0MztcdGJhc2UgPSBta2R0ZW1wKHRtcGwpO1xuJiM0MztcdGlmICghYmFzZSkge1xuJiM0MztcdFx0a3NmdF9wcmludF9tc2coXCYjMzQ7VW5hYmxlIHRvIGNyZWF0ZSBvdmVybGF5ZnMgYmFzZSBkaXI6ICVzXFxuXCYjMzQ7LFxuJiM0MztcdFx0XHQgICAgICAgc3RyZXJyb3IoZXJybm8pKTtcbiYjNDM7XHRcdHJldHVybiBLU0ZUX0ZBSUw7XG4mIzQzO1x0fVxuJiM0MztcbiYjNDM7XHRzbnByaW50Zihsb3dlciwgc2l6ZW9mKGxvd2VyKSwgXCYjMzQ7JXMvbG93ZXJcJiMzNDssIGJhc2UpO1xuJiM0MztcdHNucHJpbnRmKHVwcGVyLCBzaXplb2YodXBwZXIpLCBcJiMzNDslcy91cHBlclwmIzM0OywgYmFzZSk7XG4mIzQzO1x0c25wcmludGYod29yaywgc2l6ZW9mKHdvcmspLCBcJiMzNDslcy93b3JrXCYjMzQ7LCBiYXNlKTtcbiYjNDM7XHRzbnByaW50ZihtZXJnZWQsIHNpemVvZihtZXJnZWQpLCBcJiMzNDslcy9tZXJnZWRcJiMzNDssIGJhc2UpO1xuJiM0MztcbiYjNDM7XHRpZiAobWtkaXIobG93ZXIsIDA3NTUpIHx8IG1rZGlyKHVwcGVyLCAwNzU1KSB8fFxuJiM0MztcdCAgICBta2Rpcih3b3JrLCAwNzU1KSB8fCBta2RpcihtZXJnZWQsIDA3NTUpKSB7XG4mIzQzO1x0XHRrc2Z0X3ByaW50X21zZyhcJiMzNDtVbmFibGUgdG8gY3JlYXRlIG92ZXJsYXlmcyBkaXJzOiAlc1xcblwmIzM0OyxcbiYjNDM7XHRcdFx0ICAgICAgIHN0cmVycm9yKGVycm5vKSk7XG4mIzQzO1x0XHRyZXQgPSBLU0ZUX0ZBSUw7XG4mIzQzO1x0XHRnb3RvIGNsZWFudXA7XG4mIzQzO1x0fVxuJiM0MztcbiYjNDM7XHRzbnByaW50ZihvcHRzLCBzaXplb2Yob3B0cyksIFwmIzM0O2xvd2VyZGlyPSVzLHVwcGVyZGlyPSVzLHdvcmtkaXI9JXNcJiMzNDssXG4mIzQzO1x0XHQgbG93ZXIsIHVwcGVyLCB3b3JrKTtcbiYjNDM7XG4mIzQzO1x0aWYgKG1vdW50KFwmIzM0O292ZXJsYXlcJiMzNDssIG1lcmdlZCwgXCYjMzQ7b3ZlcmxheVwmIzM0OywgMCwgb3B0cykpIHtcbiYjNDM7XHRcdGtzZnRfcHJpbnRfbXNnKFwmIzM0O1VuYWJsZSB0byBtb3VudCBvdmVybGF5ZnMgKG5lZWQgcm9vdD8pOiAlc1xcblwmIzM0OyxcbiYjNDM7XHRcdFx0ICAgICAgIHN0cmVycm9yKGVycm5vKSk7XG4mIzQzO1x0XHRyZXQgPSBLU0ZUX1NLSVA7XG4mIzQzO1x0XHRnb3RvIGNsZWFudXA7XG4mIzQzO1x0fVxuJiM0MztcbiYjNDM7XHRzbnByaW50ZihmaWxlLCBzaXplb2YoZmlsZSksIFwmIzM0OyVzL21lcmdlZC9jYWNoZXN0YXRcJiMzNDssIGJhc2UpO1xuJiM0MztcdHJldCA9IHRlc3RfY2FjaGVzdGF0KGZpbGUsIHRydWUsIHRydWUsIGZhbHNlLCA0LCBPX0NSRUFUIHwgT19SRFdSLCAwNjAwKTtcbiYjNDM7XG4mIzQzO1x0dW1vdW50KG1lcmdlZCk7XG4mIzQzO2NsZWFudXA6XG4mIzQzO1x0LyogQmVzdC1lZmZvcnQgcmVjdXJzaXZlIGNsZWFudXAgb2YgdGhlIHRlbXBvcmFyeSB0cmVlLiAqL1xuJiM0MztcdHNucHJpbnRmKG9wdHMsIHNpemVvZihvcHRzKSwgXCYjMzQ7cm0gLXJmICVzXCYjMzQ7LCBiYXNlKTtcbiYjNDM7XHRpZiAoc3lzdGVtKG9wdHMpKVxuJiM0MztcdFx0a3NmdF9wcmludF9tc2coXCYjMzQ7VW5hYmxlIHRvIGNsZWFuIHVwICVzXFxuXCYjMzQ7LCBiYXNlKTtcbiYjNDM7XHRyZXR1cm4gcmV0O1xuJiM0Mzt9XG4mIzQzO1xuIGludCBtYWluKHZvaWQpXG4ge1xuIFx0aW50IHJldDtcbkBAIC0zNjEsNSAmIzQzOzQyMSwxOCBAQCBpbnQgbWFpbih2b2lkKVxuIFx0XHRrc2Z0X3Rlc3RfcmVzdWx0X2ZhaWwoXCYjMzQ7Y2FjaGVzdGF0IGZhaWxzIHdpdGggYSBtbWFwIGZpbGVcXG5cJiMzNDspO1xuIFx0XHRyZXQgPSAxO1xuIFx0fVxuJiM0MztcbiYjNDM7XHRzd2l0Y2ggKHJ1bl9jYWNoZXN0YXRfb3ZlcmxheWZzX3Rlc3QoKSkge1xuJiM0MztcdGNhc2UgS1NGVF9GQUlMOlxuJiM0MztcdFx0a3NmdF90ZXN0X3Jlc3VsdF9mYWlsKFwmIzM0O2NhY2hlc3RhdCBmYWlscyB3aXRoIGFuIG92ZXJsYXlmcyBmaWxlXFxuXCYjMzQ7KTtcbiYjNDM7XHRcdHJldCA9IDE7XG4mIzQzO1x0XHRicmVhaztcbiYjNDM7XHRjYXNlIEtTRlRfUEFTUzpcbiYjNDM7XHRcdGtzZnRfdGVzdF9yZXN1bHRfcGFzcyhcJiMzNDtjYWNoZXN0YXQgd29ya3Mgd2l0aCBhbiBvdmVybGF5ZnMgZmlsZVxcblwmIzM0Oyk7XG4mIzQzO1x0XHRicmVhaztcbiYjNDM7XHRjYXNlIEtTRlRfU0tJUDpcbiYjNDM7XHRcdGtzZnRfdGVzdF9yZXN1bHRfc2tpcChcJiMzNDtvdmVybGF5ZnMgbm90IGF2YWlsYWJsZVxcblwmIzM0Oyk7XG4mIzQzO1x0XHRicmVhaztcbiYjNDM7XHR9XG4gXHRyZXR1cm4gcmV0O1xuIH1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yMyAxMjoyNTwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtDQUNIRVNUQVRfU1lTQ0FMTCYjMzQ7LAogICAgJiMzNDtPVkVSTEFZX0ZTJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7b3ZsX2NhY2hlc3RhdCYjMzQ7LAogICAgJiMzNDt2ZnNfY2FjaGVzdGF0JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGltcGxlbWVudHMgdGhlIGNhY2hlc3RhdCBmaWxlIG9wZXJhdGlvbiBmb3Igb3ZlcmxheWZzLCBhbGxvd2luZyB0aGUgY2FjaGVzdGF0IHN5c2NhbGwgdG8gY29ycmVjdGx5IHF1ZXJ5IHBhZ2UgY2FjaGUgc3RhdGlzdGljcyBmb3IgZmlsZXMgb24gb3ZlcmxheWZzIGJ5IGZvcndhcmRpbmcgdGhlIHJlcXVlc3QgdG8gdGhlIHVuZGVybHlpbmcgZmlsZS4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRoYXQgaW50cm9kdWNlcyBuZXcgcmVhY2hhYmxlIGNvZGUgaW4gdGhlIFZGUyBhbmQgb3ZlcmxheWZzIGxheWVycy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLApldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXQKICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LAogICBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgMGJjNGFjMzI5YjAzYWRlNzA4ZWZiMzk3OWU1NGE5MjQyYjg5MmMyOQpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBUdWUgSnVuIDIzIDEyOjI1OjEzIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZnMvb3ZlcmxheWZzL2ZpbGUuYyBiL2ZzL292ZXJsYXlmcy9maWxlLmMKaW5kZXggMjdjYzA3NzM4ZjMzYmYuLmE3ZTI1MmE5MWVhNDM1IDEwMDY0NAotLS0gYS9mcy9vdmVybGF5ZnMvZmlsZS5jCiYjNDM7JiM0MzsmIzQzOyBiL2ZzL292ZXJsYXlmcy9maWxlLmMKQEAgLTUxOCw2ICYjNDM7NTE4LDIxIEBAIHN0YXRpYyBpbnQgb3ZsX2ZhZHZpc2Uoc3RydWN0IGZpbGUgKmZpbGUsIGxvZmZfdCBvZmZzZXQsIGxvZmZfdCBsZW4sIGludCBhZHZpY2UpCiAJCXJldHVybiB2ZnNfZmFkdmlzZShyZWFsZmlsZSwgb2Zmc2V0LCBsZW4sIGFkdmljZSk7CiB9CiAKJiM0MzsjaWZkZWYgQ09ORklHX0NBQ0hFU1RBVF9TWVNDQUxMCiYjNDM7c3RhdGljIGludCBvdmxfY2FjaGVzdGF0KHN0cnVjdCBmaWxlICpmaWxlLCBzdHJ1Y3QgY2FjaGVzdGF0X3JhbmdlICpjc3IsCiYjNDM7CQkJIHN0cnVjdCBjYWNoZXN0YXQgKmNzKQomIzQzO3sKJiM0MzsJc3RydWN0IGZpbGUgKnJlYWxmaWxlOwomIzQzOwomIzQzOwlyZWFsZmlsZSA9IG92bF9yZWFsX2ZpbGUoZmlsZSk7CiYjNDM7CWlmIChJU19FUlIocmVhbGZpbGUpKQomIzQzOwkJcmV0dXJuIFBUUl9FUlIocmVhbGZpbGUpOwomIzQzOwomIzQzOwl3aXRoX292bF9jcmVkcyhmaWxlX2lub2RlKGZpbGUpLSZndDtpX3NiKQomIzQzOwkJcmV0dXJuIHZmc19jYWNoZXN0YXQocmVhbGZpbGUsIGNzciwgY3MpOwomIzQzO30KJiM0MzsjZW5kaWYKJiM0MzsKIGVudW0gb3ZsX2NvcHlvcCB7CiAJT1ZMX0NPUFksCiAJT1ZMX0NMT05FLApAQCAtNjQyLDYgJiM0Mzs2NTcsOSBAQCBjb25zdCBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIG92bF9maWxlX29wZXJhdGlvbnMgPSB7CiAJLm1tYXAJCT0gb3ZsX21tYXAsCiAJLmZhbGxvY2F0ZQk9IG92bF9mYWxsb2NhdGUsCiAJLmZhZHZpc2UJPSBvdmxfZmFkdmlzZSwKJiM0MzsjaWZkZWYgQ09ORklHX0NBQ0hFU1RBVF9TWVNDQUxMCiYjNDM7CS5jYWNoZXN0YXQJPSBvdmxfY2FjaGVzdGF0LAomIzQzOyNlbmRpZgogCS5mbHVzaAkJPSBvdmxfZmx1c2gsCiAJLnNwbGljZV9yZWFkICAgID0gb3ZsX3NwbGljZV9yZWFkLAogCS5zcGxpY2Vfd3JpdGUgICA9IG92bF9zcGxpY2Vfd3JpdGUsCmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L2ZzLmggYi9pbmNsdWRlL2xpbnV4L2ZzLmgKaW5kZXggNmRhNDQ1NzNjZTQ1MDguLjk2NmI2NTY0NzA3ZTQ4IDEwMDY0NAotLS0gYS9pbmNsdWRlL2xpbnV4L2ZzLmgKJiM0MzsmIzQzOyYjNDM7IGIvaW5jbHVkZS9saW51eC9mcy5oCkBAIC01Myw2ICYjNDM7NTMsOCBAQAogCiBzdHJ1Y3QgYmRpX3dyaXRlYmFjazsKIHN0cnVjdCBiaW87CiYjNDM7c3RydWN0IGNhY2hlc3RhdF9yYW5nZTsKJiM0MztzdHJ1Y3QgY2FjaGVzdGF0Owogc3RydWN0IGlvX2NvbXBfYmF0Y2g7CiBzdHJ1Y3QgZmllbWFwX2V4dGVudF9pbmZvOwogc3RydWN0IGtpb2NiOwpAQCAtMTk2Myw2ICYjNDM7MTk2NSw4IEBAIHN0cnVjdCBmaWxlX29wZXJhdGlvbnMgewogCQkJCSAgIHN0cnVjdCBmaWxlICpmaWxlX291dCwgbG9mZl90IHBvc19vdXQsCiAJCQkJICAgbG9mZl90IGxlbiwgdW5zaWduZWQgaW50IHJlbWFwX2ZsYWdzKTsKIAlpbnQgKCpmYWR2aXNlKShzdHJ1Y3QgZmlsZSAqLCBsb2ZmX3QsIGxvZmZfdCwgaW50KTsKJiM0MzsJaW50ICgqY2FjaGVzdGF0KShzdHJ1Y3QgZmlsZSAqZmlsZSwgc3RydWN0IGNhY2hlc3RhdF9yYW5nZSAqY3NyLAomIzQzOwkJCSBzdHJ1Y3QgY2FjaGVzdGF0ICpjcyk7CiAJaW50ICgqdXJpbmdfY21kKShzdHJ1Y3QgaW9fdXJpbmdfY21kICppb3VjbWQsIHVuc2lnbmVkIGludCBpc3N1ZV9mbGFncyk7CiAJaW50ICgqdXJpbmdfY21kX2lvcG9sbCkoc3RydWN0IGlvX3VyaW5nX2NtZCAqLCBzdHJ1Y3QgaW9fY29tcF9iYXRjaCAqLAogCQkJCXVuc2lnbmVkIGludCBwb2xsX2ZsYWdzKTsKQEAgLTM2MzMsNiAmIzQzOzM2MzcsMTIgQEAgZXh0ZXJuIGludCB2ZnNfZmFkdmlzZShzdHJ1Y3QgZmlsZSAqZmlsZSwgbG9mZl90IG9mZnNldCwgbG9mZl90IGxlbiwKIGV4dGVybiBpbnQgZ2VuZXJpY19mYWR2aXNlKHN0cnVjdCBmaWxlICpmaWxlLCBsb2ZmX3Qgb2Zmc2V0LCBsb2ZmX3QgbGVuLAogCQkJICAgaW50IGFkdmljZSk7CiAKJiM0MzsvKiBtbS9maWxlbWFwLmMgKi8KJiM0MzsjaWZkZWYgQ09ORklHX0NBQ0hFU1RBVF9TWVNDQUxMCiYjNDM7aW50IHZmc19jYWNoZXN0YXQoc3RydWN0IGZpbGUgKmZpbGUsIHN0cnVjdCBjYWNoZXN0YXRfcmFuZ2UgKmNzciwKJiM0MzsJCSAgc3RydWN0IGNhY2hlc3RhdCAqY3MpOwomIzQzOyNlbmRpZgomIzQzOwogc3RhdGljIGlubGluZSBib29sIHZmc19lbXB0eV9wYXRoKGludCBkZmQsIGNvbnN0IGNoYXIgX191c2VyICpwYXRoKQogewogCWNoYXIgYzsKZGlmZiAtLWdpdCBhL21tL2ZpbGVtYXAuYyBiL21tL2ZpbGVtYXAuYwppbmRleCA3ZTQ2N2M4MWQyMTM4OS4uOTA2MDhjNmIxY2U1NTEgMTAwNjQ0Ci0tLSBhL21tL2ZpbGVtYXAuYwomIzQzOyYjNDM7JiM0MzsgYi9tbS9maWxlbWFwLmMKQEAgLTQ3MTQsNiAmIzQzOzQ3MTQsMzcgQEAgc3RhdGljIGlubGluZSBib29sIGNhbl9kb19jYWNoZXN0YXQoc3RydWN0IGZpbGUgKmYpCiAJcmV0dXJuIGZpbGVfcGVybWlzc2lvbihmLCBNQVlfV1JJVEUpID09IDA7CiB9CiAKJiM0MzsvKioKJiM0MzsgKiB2ZnNfY2FjaGVzdGF0KCkgLSBxdWVyeSBwYWdlIGNhY2hlIHN0YXRpc3RpY3Mgb2YgYSBmaWxlCiYjNDM7ICogQGZpbGU6CWZpbGUgdG8gcXVlcnkKJiM0MzsgKiBAY3NyOglieXRlIHJhbmdlIHRvIHF1ZXJ5CiYjNDM7ICogQGNzOgkJb3V0cHV0IHN0YXRpc3RpY3MKJiM0MzsgKgomIzQzOyAqIENvbXB1dGUgdGhlIHBhZ2UgY2FjaGUgc3RhdGlzdGljcyBmb3IgdGhlIGdpdmVuIGJ5dGUgcmFuZ2Ugb2YgQGZpbGUuCiYjNDM7ICoKJiM0MzsgKiBTdGFja2FibGUgZmlsZXN5c3RlbXMgKGUuZy4gb3ZlcmxheWZzKSBrZWVwIHRoZSBkYXRhIHBhZ2VzIGluIHRoZQomIzQzOyAqIG1hcHBpbmcgb2YgYW4gdW5kZXJseWluZyBmaWxlIHJhdGhlciB0aGFuIGluIEBmaWxlLSZndDtmX21hcHBpbmcuIFN1Y2gKJiM0MzsgKiBmaWxlc3lzdGVtcyBwcm92aWRlIGEgLSZndDtjYWNoZXN0YXQoKSBmaWxlIG9wZXJhdGlvbiB0aGF0IGZvcndhcmRzIHRoZQomIzQzOyAqIHF1ZXJ5IHRvIHRoZSBmaWxlIHRoYXQgYWN0dWFsbHkgb3ducyB0aGUgcGFnZSBjYWNoZTsgb3RoZXJ3aXNlIHRoZQomIzQzOyAqIHN0YXRpc3RpY3MgYXJlIGNvbXB1dGVkIGZyb20gQGZpbGUtJmd0O2ZfbWFwcGluZyBkaXJlY3RseS4KJiM0MzsgKi8KJiM0MztpbnQgdmZzX2NhY2hlc3RhdChzdHJ1Y3QgZmlsZSAqZmlsZSwgc3RydWN0IGNhY2hlc3RhdF9yYW5nZSAqY3NyLAomIzQzOwkJICBzdHJ1Y3QgY2FjaGVzdGF0ICpjcykKJiM0Mzt7CiYjNDM7CXBnb2ZmX3QgZmlyc3RfaW5kZXgsIGxhc3RfaW5kZXg7CiYjNDM7CiYjNDM7CWlmIChmaWxlLSZndDtmX29wLSZndDtjYWNoZXN0YXQpCiYjNDM7CQlyZXR1cm4gZmlsZS0mZ3Q7Zl9vcC0mZ3Q7Y2FjaGVzdGF0KGZpbGUsIGNzciwgY3MpOwomIzQzOwomIzQzOwlmaXJzdF9pbmRleCA9IGNzci0mZ3Q7b2ZmICZndDsmZ3Q7IFBBR0VfU0hJRlQ7CiYjNDM7CWxhc3RfaW5kZXggPQomIzQzOwkJY3NyLSZndDtsZW4gPT0gMCA/IFVMT05HX01BWCA6IChjc3ItJmd0O29mZiAmIzQzOyBjc3ItJmd0O2xlbiAtIDEpICZndDsmZ3Q7IFBBR0VfU0hJRlQ7CiYjNDM7CW1lbXNldChjcywgMCwgc2l6ZW9mKHN0cnVjdCBjYWNoZXN0YXQpKTsKJiM0MzsJZmlsZW1hcF9jYWNoZXN0YXQoZmlsZS0mZ3Q7Zl9tYXBwaW5nLCBmaXJzdF9pbmRleCwgbGFzdF9pbmRleCwgY3MpOwomIzQzOwlyZXR1cm4gMDsKJiM0Mzt9CiYjNDM7RVhQT1JUX1NZTUJPTCh2ZnNfY2FjaGVzdGF0KTsKJiM0MzsKIC8qCiAgKiBUaGUgY2FjaGVzdGF0KDIpIHN5c3RlbSBjYWxsLgogICoKQEAgLTQ3NTMsMTAgJiM0Mzs0Nzg0LDkgQEAgU1lTQ0FMTF9ERUZJTkU0KGNhY2hlc3RhdCwgdW5zaWduZWQgaW50LCBmZCwKIAkJc3RydWN0IGNhY2hlc3RhdCBfX3VzZXIgKiwgY3N0YXQsIHVuc2lnbmVkIGludCwgZmxhZ3MpCiB7CiAJQ0xBU1MoZmQsIGYpKGZkKTsKLQlzdHJ1Y3QgYWRkcmVzc19zcGFjZSAqbWFwcGluZzsKIAlzdHJ1Y3QgY2FjaGVzdGF0X3JhbmdlIGNzcjsKIAlzdHJ1Y3QgY2FjaGVzdGF0IGNzOwotCXBnb2ZmX3QgZmlyc3RfaW5kZXgsIGxhc3RfaW5kZXg7CiYjNDM7CWludCByZXQ7CiAKIAlpZiAoZmRfZW1wdHkoZikpCiAJCXJldHVybiAtRUJBREY7CkBAIC00Nzc1LDEyICYjNDM7NDgwNSw5IEBAIFNZU0NBTExfREVGSU5FNChjYWNoZXN0YXQsIHVuc2lnbmVkIGludCwgZmQsCiAJaWYgKGZsYWdzICE9IDApCiAJCXJldHVybiAtRUlOVkFMOwogCi0JZmlyc3RfaW5kZXggPSBjc3Iub2ZmICZndDsmZ3Q7IFBBR0VfU0hJRlQ7Ci0JbGFzdF9pbmRleCA9Ci0JCWNzci5sZW4gPT0gMCA/IFVMT05HX01BWCA6IChjc3Iub2ZmICYjNDM7IGNzci5sZW4gLSAxKSAmZ3Q7Jmd0OyBQQUdFX1NISUZUOwotCW1lbXNldCgmYW1wO2NzLCAwLCBzaXplb2Yoc3RydWN0IGNhY2hlc3RhdCkpOwotCW1hcHBpbmcgPSBmZF9maWxlKGYpLSZndDtmX21hcHBpbmc7Ci0JZmlsZW1hcF9jYWNoZXN0YXQobWFwcGluZywgZmlyc3RfaW5kZXgsIGxhc3RfaW5kZXgsICZhbXA7Y3MpOwomIzQzOwlyZXQgPSB2ZnNfY2FjaGVzdGF0KGZkX2ZpbGUoZiksICZhbXA7Y3NyLCAmYW1wO2NzKTsKJiM0MzsJaWYgKHJldCkKJiM0MzsJCXJldHVybiByZXQ7CiAKIAlpZiAoY29weV90b191c2VyKGNzdGF0LCAmYW1wO2NzLCBzaXplb2Yoc3RydWN0IGNhY2hlc3RhdCkpKQogCQlyZXR1cm4gLUVGQVVMVDsKZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2NhY2hlc3RhdC90ZXN0X2NhY2hlc3RhdC5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvY2FjaGVzdGF0L3Rlc3RfY2FjaGVzdGF0LmMKaW5kZXggNTQyY2QwOWNiNDQzNGUuLjE2NjJkOTgxN2M1MGJmIDEwMDY0NAotLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9jYWNoZXN0YXQvdGVzdF9jYWNoZXN0YXQuYwomIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9jYWNoZXN0YXQvdGVzdF9jYWNoZXN0YXQuYwpAQCAtNCwyMSAmIzQzOzQsMjUgQEAKIAogI2luY2x1ZGUgJmx0O3N0ZGlvLmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7c3RkYm9vbC5oJmd0OwomIzQzOyNpbmNsdWRlICZsdDtzdGRsaWIuaCZndDsKICNpbmNsdWRlICZsdDtsaW51eC9rZXJuZWwuaCZndDsKICNpbmNsdWRlICZsdDtsaW51eC9tYWdpYy5oJmd0OwogI2luY2x1ZGUgJmx0O2xpbnV4L21tYW4uaCZndDsKICNpbmNsdWRlICZsdDtzeXMvbW1hbi5oJmd0OwomIzQzOyNpbmNsdWRlICZsdDtzeXMvbW91bnQuaCZndDsKICNpbmNsdWRlICZsdDtzeXMvc2htLmgmZ3Q7CiYjNDM7I2luY2x1ZGUgJmx0O3N5cy9zdGF0LmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7c3lzL3N5c2NhbGwuaCZndDsKICNpbmNsdWRlICZsdDtzeXMvdmZzLmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7dW5pc3RkLmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7c3RyaW5nLmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7ZmNudGwuaCZndDsKICNpbmNsdWRlICZsdDtlcnJuby5oJmd0OwomIzQzOyNpbmNsdWRlICZsdDtsaW1pdHMuaCZndDsKIAogI2luY2x1ZGUgJiMzNDtrc2VsZnRlc3QuaCYjMzQ7CiAKLSNkZWZpbmUgTlJfVEVTVFMJOQomIzQzOyNkZWZpbmUgTlJfVEVTVFMJMTEKIAogc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBkZXZfZmlsZXNbXSA9IHsKIAkmIzM0Oy9kZXYvemVybyYjMzQ7LCAmIzM0Oy9kZXYvbnVsbCYjMzQ7LCAmIzM0Oy9kZXYvdXJhbmRvbSYjMzQ7LApAQCAtMjk0LDYgJiM0MzsyOTgsNjIgQEAgYm9vbCBydW5fY2FjaGVzdGF0X3Rlc3QoZW51bSBmaWxlX3R5cGUgdHlwZSkKIAlyZXR1cm4gcmV0OwogfQogCiYjNDM7LyoKJiM0MzsgKiBTZXQgdXAgYW4gb3ZlcmxheWZzIG1vdW50IGFuZCBydW4gY2FjaGVzdGF0IG9uIGEgZnJlc2hseSBjcmVhdGVkIGZpbGUgaW4gdGhlCiYjNDM7ICogbWVyZ2VkIGRpcmVjdG9yeS4gT3ZlcmxheWZzIGZvcndhcmRzIGRhdGEgSS9PIHRvIHRoZSB1bmRlcmx5aW5nICh1cHBlcikKJiM0MzsgKiBpbm9kZSwgc28gdGhlIHBhZ2UgY2FjaGUgbGl2ZXMgdGhlcmUgYW5kIG5vdCBpbiB0aGUgb3ZlcmxheSBpbm9kZSYjMzk7cyBtYXBwaW5nLgomIzQzOyAqIFRoaXMgaXMgYSByZWdyZXNzaW9uIHRlc3QgZm9yIGNhY2hlc3RhdCByZXR1cm5pbmcgYWxsIHplcm9lcyBvbiBvdmVybGF5ZnMuCiYjNDM7ICovCiYjNDM7c3RhdGljIGludCBydW5fY2FjaGVzdGF0X292ZXJsYXlmc190ZXN0KHZvaWQpCiYjNDM7ewomIzQzOwljaGFyIHRtcGxbXSA9ICYjMzQ7L3RtcC9jYWNoZXN0YXRfb3ZsLlhYWFhYWCYjMzQ7OwomIzQzOwljaGFyIGxvd2VyW1BBVEhfTUFYXSwgdXBwZXJbUEFUSF9NQVhdLCB3b3JrW1BBVEhfTUFYXTsKJiM0MzsJY2hhciBtZXJnZWRbUEFUSF9NQVhdLCBvcHRzWzQgKiBQQVRIX01BWF0sIGZpbGVbUEFUSF9NQVhdOwomIzQzOwljaGFyICpiYXNlOwomIzQzOwlpbnQgcmV0OwomIzQzOwomIzQzOwliYXNlID0gbWtkdGVtcCh0bXBsKTsKJiM0MzsJaWYgKCFiYXNlKSB7CiYjNDM7CQlrc2Z0X3ByaW50X21zZygmIzM0O1VuYWJsZSB0byBjcmVhdGUgb3ZlcmxheWZzIGJhc2UgZGlyOiAlc1xuJiMzNDssCiYjNDM7CQkJICAgICAgIHN0cmVycm9yKGVycm5vKSk7CiYjNDM7CQlyZXR1cm4gS1NGVF9GQUlMOwomIzQzOwl9CiYjNDM7CiYjNDM7CXNucHJpbnRmKGxvd2VyLCBzaXplb2YobG93ZXIpLCAmIzM0OyVzL2xvd2VyJiMzNDssIGJhc2UpOwomIzQzOwlzbnByaW50Zih1cHBlciwgc2l6ZW9mKHVwcGVyKSwgJiMzNDslcy91cHBlciYjMzQ7LCBiYXNlKTsKJiM0MzsJc25wcmludGYod29yaywgc2l6ZW9mKHdvcmspLCAmIzM0OyVzL3dvcmsmIzM0OywgYmFzZSk7CiYjNDM7CXNucHJpbnRmKG1lcmdlZCwgc2l6ZW9mKG1lcmdlZCksICYjMzQ7JXMvbWVyZ2VkJiMzNDssIGJhc2UpOwomIzQzOwomIzQzOwlpZiAobWtkaXIobG93ZXIsIDA3NTUpIHx8IG1rZGlyKHVwcGVyLCAwNzU1KSB8fAomIzQzOwkgICAgbWtkaXIod29yaywgMDc1NSkgfHwgbWtkaXIobWVyZ2VkLCAwNzU1KSkgewomIzQzOwkJa3NmdF9wcmludF9tc2coJiMzNDtVbmFibGUgdG8gY3JlYXRlIG92ZXJsYXlmcyBkaXJzOiAlc1xuJiMzNDssCiYjNDM7CQkJICAgICAgIHN0cmVycm9yKGVycm5vKSk7CiYjNDM7CQlyZXQgPSBLU0ZUX0ZBSUw7CiYjNDM7CQlnb3RvIGNsZWFudXA7CiYjNDM7CX0KJiM0MzsKJiM0MzsJc25wcmludGYob3B0cywgc2l6ZW9mKG9wdHMpLCAmIzM0O2xvd2VyZGlyPSVzLHVwcGVyZGlyPSVzLHdvcmtkaXI9JXMmIzM0OywKJiM0MzsJCSBsb3dlciwgdXBwZXIsIHdvcmspOwomIzQzOwomIzQzOwlpZiAobW91bnQoJiMzNDtvdmVybGF5JiMzNDssIG1lcmdlZCwgJiMzNDtvdmVybGF5JiMzNDssIDAsIG9wdHMpKSB7CiYjNDM7CQlrc2Z0X3ByaW50X21zZygmIzM0O1VuYWJsZSB0byBtb3VudCBvdmVybGF5ZnMgKG5lZWQgcm9vdD8pOiAlc1xuJiMzNDssCiYjNDM7CQkJICAgICAgIHN0cmVycm9yKGVycm5vKSk7CiYjNDM7CQlyZXQgPSBLU0ZUX1NLSVA7CiYjNDM7CQlnb3RvIGNsZWFudXA7CiYjNDM7CX0KJiM0MzsKJiM0MzsJc25wcmludGYoZmlsZSwgc2l6ZW9mKGZpbGUpLCAmIzM0OyVzL21lcmdlZC9jYWNoZXN0YXQmIzM0OywgYmFzZSk7CiYjNDM7CXJldCA9IHRlc3RfY2FjaGVzdGF0KGZpbGUsIHRydWUsIHRydWUsIGZhbHNlLCA0LCBPX0NSRUFUIHwgT19SRFdSLCAwNjAwKTsKJiM0MzsKJiM0MzsJdW1vdW50KG1lcmdlZCk7CiYjNDM7Y2xlYW51cDoKJiM0MzsJLyogQmVzdC1lZmZvcnQgcmVjdXJzaXZlIGNsZWFudXAgb2YgdGhlIHRlbXBvcmFyeSB0cmVlLiAqLwomIzQzOwlzbnByaW50ZihvcHRzLCBzaXplb2Yob3B0cyksICYjMzQ7cm0gLXJmICVzJiMzNDssIGJhc2UpOwomIzQzOwlpZiAoc3lzdGVtKG9wdHMpKQomIzQzOwkJa3NmdF9wcmludF9tc2coJiMzNDtVbmFibGUgdG8gY2xlYW4gdXAgJXNcbiYjMzQ7LCBiYXNlKTsKJiM0MzsJcmV0dXJuIHJldDsKJiM0Mzt9CiYjNDM7CiBpbnQgbWFpbih2b2lkKQogewogCWludCByZXQ7CkBAIC0zNjEsNSAmIzQzOzQyMSwxOCBAQCBpbnQgbWFpbih2b2lkKQogCQlrc2Z0X3Rlc3RfcmVzdWx0X2ZhaWwoJiMzNDtjYWNoZXN0YXQgZmFpbHMgd2l0aCBhIG1tYXAgZmlsZVxuJiMzNDspOwogCQlyZXQgPSAxOwogCX0KJiM0MzsKJiM0MzsJc3dpdGNoIChydW5fY2FjaGVzdGF0X292ZXJsYXlmc190ZXN0KCkpIHsKJiM0MzsJY2FzZSBLU0ZUX0ZBSUw6CiYjNDM7CQlrc2Z0X3Rlc3RfcmVzdWx0X2ZhaWwoJiMzNDtjYWNoZXN0YXQgZmFpbHMgd2l0aCBhbiBvdmVybGF5ZnMgZmlsZVxuJiMzNDspOwomIzQzOwkJcmV0ID0gMTsKJiM0MzsJCWJyZWFrOwomIzQzOwljYXNlIEtTRlRfUEFTUzoKJiM0MzsJCWtzZnRfdGVzdF9yZXN1bHRfcGFzcygmIzM0O2NhY2hlc3RhdCB3b3JrcyB3aXRoIGFuIG92ZXJsYXlmcyBmaWxlXG4mIzM0Oyk7CiYjNDM7CQlicmVhazsKJiM0MzsJY2FzZSBLU0ZUX1NLSVA6CiYjNDM7CQlrc2Z0X3Rlc3RfcmVzdWx0X3NraXAoJiMzNDtvdmVybGF5ZnMgbm90IGF2YWlsYWJsZVxuJiMzNDspOwomIzQzOwkJYnJlYWs7CiYjNDM7CX0KIAlyZXR1cm4gcmV0OwogfQo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yMyAxMjoyNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0NzcwCgkJCQkJCQlvdXRwdXQ6IDIyCgkJCQkJCQl0aG91Z2h0czogMjIzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgdGhlIE92ZXJsYXlmcyBDYWNoZXN0YXQgUGF0Y2gqKgoKT2theSwgc28gdGhpcyBwYXRjaCBpcyBhZGRpbmcgYGNhY2hlc3RhdGAgZnVuY3Rpb25hbGl0eSB0byBvdmVybGF5ZnMsIHdoaWNoIGlzIGEgcHJldHR5IHVzZWZ1bCBlbmhhbmNlbWVudC4gSXQgbG9va3MgbGlrZSB0aGUgbWFpbiB0aHJ1c3QgaXMgdG8gYWRkIGEgbmV3IGBjYWNoZXN0YXRgIGZpbGUgb3BlcmF0aW9uLCBgb3ZsX2NhY2hlc3RhdGAsIHRvIHRoZSBgc3RydWN0IGZpbGVfb3BlcmF0aW9uc2AgZm9yIG92ZXJsYXlmcy4gVGhlIHBhdGNoIHRoZW4gY2xldmVybHkgbW9kaWZpZXMgYHZmc19jYWNoZXN0YXRgIHRvIHV0aWxpemUgdGhlIG5ld2x5IGRlZmluZWQgYGZpbGUtJmd0O2Zfb3AtJmd0O2NhY2hlc3RhdGAgaWYgaXQmIzM5O3MgYXZhaWxhYmxlLiBGdXJ0aGVybW9yZSwgdGhlIHN5c3RlbSBjYWxsIGludGVyZmFjZSwgYHN5c19jYWNoZXN0YXRgLCBpcyB1cGRhdGVkIHRvIGNhbGwgdGhlIGB2ZnNfY2FjaGVzdGF0YCBmdW5jdGlvbi4KClRoZSByYXRpb25hbGUgc2VlbXMgY2xlYXI6IHRoZSBleGlzdGluZyBgY2FjaGVzdGF0YCBzeXNjYWxsIHdhc24mIzM5O3Qgd29ya2luZyBjb3JyZWN0bHkgZm9yIG92ZXJsYXlmcyBiZWNhdXNlIHRoZSBkYXRhIHBhZ2VzIGFyZSBhY3R1YWxseSBzdG9yZWQgaW4gdGhlIHVuZGVybHlpbmcgZmlsZSYjMzk7cyBtYXBwaW5nLCBub3QgdGhlIG92ZXJsYXkmIzM5O3MuIFRoaXMgcGF0Y2ggZGlyZWN0bHkgYWRkcmVzc2VzIHRoYXQgc2hvcnRjb21pbmcsIHByb3ZpZGluZyBtb3JlIGFjY3VyYXRlIGNhY2hlIHN0YXRpc3RpY3MgaW4gdGhlIG92ZXJsYXlmcyBjb250ZXh0LgoKTm93LCBsZXQmIzM5O3MgbWFrZSBzdXJlIGV2ZXJ5dGhpbmcmIzM5O3MgaW4gb3JkZXIsIGNvbmZpZ3VyYXRpb24td2lzZS4gVGhlIHBhdGNoIG1lbnRpb25zIGBDT05GSUdfQ0FDSEVTVEFUX1NZU0NBTExgLCBhbmQgb2J2aW91c2x5IGBDT05GSUdfT1ZFUkxBWV9GU2AgaXMgcmVxdWlyZWQgZm9yIG92ZXJsYXlmcyBzdXBwb3J0LiBUaW1lIHRvIHZlcmlmeSB0aGF0IGBDT05GSUdfQ0FDSEVTVEFUX1NZU0NBTExgIGlzIGEgcmVhbCB0aGluZy4gSSYjMzk7bGwgdXNlIGBncmVwcGVyYCB0byBmaW5kIG91dC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yMyAxMjoyNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtDQUNIRVNUQVRfU1lTQ0FMTCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtmcy9vdmVybGF5ZnMvZmlsZS5jPTUwOT1zdGF0aWMgaW50IG92bF9mYWR2aXNlKHN0cnVjdCBmaWxlICpmaWxlLCBsb2ZmX3Qgb2Zmc2V0LCBsb2ZmX3QgbGVuLCBpbnQgYWR2aWNlKVxuLS1cbmZzL292ZXJsYXlmcy9maWxlLmMtNTIwLVxuZnMvb3ZlcmxheWZzL2ZpbGUuYzo1MjE6I2lmZGVmIENPTkZJR19DQUNIRVNUQVRfU1lTQ0FMTFxuZnMvb3ZlcmxheWZzL2ZpbGUuYy01MjItc3RhdGljIGludCBvdmxfY2FjaGVzdGF0KHN0cnVjdCBmaWxlICpmaWxlLCBzdHJ1Y3QgY2FjaGVzdGF0X3JhbmdlICpjc3IsXG4tLVxuZnMvb3ZlcmxheWZzL2ZpbGUuYz02NTA9Y29uc3Qgc3RydWN0IGZpbGVfb3BlcmF0aW9ucyBvdmxfZmlsZV9vcGVyYXRpb25zID0ge1xuLS1cbmZzL292ZXJsYXlmcy9maWxlLmMtNjU5LVx0LmZhZHZpc2VcdD0gb3ZsX2ZhZHZpc2UsXG5mcy9vdmVybGF5ZnMvZmlsZS5jOjY2MDojaWZkZWYgQ09ORklHX0NBQ0hFU1RBVF9TWVNDQUxMXG5mcy9vdmVybGF5ZnMvZmlsZS5jLTY2MS1cdC5jYWNoZXN0YXRcdD0gb3ZsX2NhY2hlc3RhdCxcbi0tXG5pbmNsdWRlL2xpbnV4L2ZzLmg9MzYzNz1leHRlcm4gaW50IGdlbmVyaWNfZmFkdmlzZShzdHJ1Y3QgZmlsZSAqZmlsZSwgbG9mZl90IG9mZnNldCwgbG9mZl90IGxlbixcbi0tXG5pbmNsdWRlL2xpbnV4L2ZzLmgtMzY0MC0vKiBtbS9maWxlbWFwLmMgKi9cbmluY2x1ZGUvbGludXgvZnMuaDozNjQxOiNpZmRlZiBDT05GSUdfQ0FDSEVTVEFUX1NZU0NBTExcbmluY2x1ZGUvbGludXgvZnMuaC0zNjQyLWludCB2ZnNfY2FjaGVzdGF0KHN0cnVjdCBmaWxlICpmaWxlLCBzdHJ1Y3QgY2FjaGVzdGF0X3JhbmdlICpjc3IsXG4tLVxuaW5pdC9LY29uZmlnPTIwMzE9Y29uZmlnIERFQlVHX1JTRVFcbi0tXG5pbml0L0tjb25maWctMjA0MC1cbmluaXQvS2NvbmZpZzoyMDQxOmNvbmZpZyBDQUNIRVNUQVRfU1lTQ0FMTFxuaW5pdC9LY29uZmlnLTIwNDItXHRib29sIFwmIzM0O0VuYWJsZSBjYWNoZXN0YXQoKSBzeXN0ZW0gY2FsbFwmIzM0OyBpZiBFWFBFUlRcbi0tXG5tbS9maWxlbWFwLmM9NDU5Mj1FWFBPUlRfU1lNQk9MX0dQTChmaWxlbWFwX2ludmFsaWRhdGVfaW5vZGUpO1xubW0vZmlsZW1hcC5jLTQ1OTMtXG5tbS9maWxlbWFwLmM6NDU5NDojaWZkZWYgQ09ORklHX0NBQ0hFU1RBVF9TWVNDQUxMXG5tbS9maWxlbWFwLmMtNDU5NS0vKipcbi0tXG5tbS9maWxlbWFwLmM9NDc4Mj1TWVNDQUxMX0RFRklORTQoY2FjaGVzdGF0LCB1bnNpZ25lZCBpbnQsIGZkLFxuLS1cbm1tL2ZpbGVtYXAuYy00ODE2LX1cbm1tL2ZpbGVtYXAuYzo0ODE3OiNlbmRpZiAvKiBDT05GSUdfQ0FDSEVTVEFUX1NZU0NBTEwgKi9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yMyAxMjoyNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1ODgyCgkJCQkJCQlvdXRwdXQ6IDMzCgkJCQkJCQl0aG91Z2h0czogMTU4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKktlcm5lbCBDYWNoZXN0YXQgSW1wbGVtZW50YXRpb24gVGhvdWdodHMqKgoKT2theSwgc28gYENBQ0hFU1RBVF9TWVNDQUxMYCAqaXMqIGEgbGVnaXRpbWF0ZSBjb25maWd1cmF0aW9uIG9wdGlvbi4gR29vZC4gQW5kLCBvZiBjb3Vyc2UsIHdlJiMzOTtsbCBuZWVkIGBPVkVSTEFZX0ZTYCBlbmFibGVkIGZvciB0aGlzIHRvIGJlIHJlbGV2YW50LiBUaGF0JiMzOTtzIGxvZ2ljYWwuCgpJIHNob3VsZCBmb2N1cyBteSBhdHRlbnRpb24gb24gdGhlc2Uga2V5IGZ1bmN0aW9uczogYG92bF9jYWNoZXN0YXRgLCBgdmZzX2NhY2hlc3RhdGAsIGFuZCBgc3lzX2NhY2hlc3RhdGAgKG9yIHRoZSBhcmNoaXRlY3R1cmUtc3BlY2lmaWMgdmFyaWFudCBsaWtlIGBfX3g2NF9zeXNfY2FjaGVzdGF0YCwgYnV0IGB2ZnNfY2FjaGVzdGF0YCBhbmQgYG92bF9jYWNoZXN0YXRgIGFyZSBsaWtlbHkgdGhlIG1vcmUgY3JpdGljYWwgb25lcykuCgpOb3csIHRoZSBpbXBvcnRhbnQgcXVlc3Rpb246IElzIGBvdmxfY2FjaGVzdGF0YCBhY3R1YWxseSByZWFjaGFibGU/IExldCBtZSB0aGluay4uLiB5ZXMsIHRoZSBjYWxsIGNoYWluIGFwcGVhcnMgdG8gYmU6IGBzeXNfY2FjaGVzdGF0YCBnZXRzIHRvIGB2ZnNfY2FjaGVzdGF0YCBhbmQgdGhhdCwgaW4gdHVybiwgZ29lcyB0byBgZmlsZS0mZ3Q7Zl9vcC0mZ3Q7Y2FjaGVzdGF0YC4gVGhhdCYjMzk7cyB0aGUgcGF0aC4KCkp1c3QgdG8gYmUgYWJzb2x1dGVseSBzdXJlLCBJJiMzOTtsbCBxdWlja2x5IGRvdWJsZS1jaGVjayBgaW5pdC9LY29uZmlnYCB0byBjb25maXJtIHRoYXQgYENBQ0hFU1RBVF9TWVNDQUxMYCBpcyBwcm9wZXJseSBkZWZpbmVkIGFuZCBwbGFjZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjMgMTI6MjU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtpbml0L0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAyMDM1LAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDIwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OzIwMzU6XHRcdHNlbGVjdCBSU0VRX0RFQlVHX0RFRkFVTFRfRU5BQkxFXG4yMDM2Olx0XHRoZWxwXG4yMDM3Olx0XHQgIEVuYWJsZSBleHRyYSBkZWJ1Z2dpbmcgY2hlY2tzIGZvciB0aGUgcnNlcSBzeXN0ZW0gY2FsbC5cbjIwMzg6XHRcbjIwMzk6XHRcdCAgSWYgdW5zdXJlLCBzYXkgTi5cbjIwNDA6XHRcbjIwNDE6XHRjb25maWcgQ0FDSEVTVEFUX1NZU0NBTExcbjIwNDI6XHRcdGJvb2wgXCYjMzQ7RW5hYmxlIGNhY2hlc3RhdCgpIHN5c3RlbSBjYWxsXCYjMzQ7IGlmIEVYUEVSVFxuMjA0MzpcdFx0ZGVmYXVsdCB5XG4yMDQ0Olx0XHRoZWxwXG4yMDQ1Olx0XHQgIEVuYWJsZSB0aGUgY2FjaGVzdGF0IHN5c3RlbSBjYWxsLCB3aGljaCBxdWVyaWVzIHRoZSBwYWdlIGNhY2hlXG4yMDQ2Olx0XHQgIHN0YXRpc3RpY3Mgb2YgYSBmaWxlIChudW1iZXIgb2YgY2FjaGVkIHBhZ2VzLCBkaXJ0eSBwYWdlcyxcbjIwNDc6XHRcdCAgcGFnZXMgbWFya2VkIGZvciB3cml0ZWJhY2ssIChyZWNlbnRseSkgZXZpY3RlZCBwYWdlcykuXG4yMDQ4Olx0XG4yMDQ5Olx0XHQgIElmIHVuc3VyZSBzYXkgWSBoZXJlLlxuMjA1MDpcdFxuMjA1MTpcdGNvbmZpZyBLQUxMU1lNU1xuMjA1MjpcdFx0Ym9vbCBcJiMzNDtMb2FkIGFsbCBzeW1ib2xzIGZvciBkZWJ1Z2dpbmcva3N5bW9vcHNcJiMzNDsgaWYgRVhQRVJUXG4yMDUzOlx0XHRkZWZhdWx0IHlcbjIwNTQ6XHRcdGhlbHBcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yMyAxMjoyNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2NTkxCgkJCQkJCQlvdXRwdXQ6IDE5CgkJCQkJCQl0aG91Z2h0czogNTQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgYXMgaWYgdGhleSB3ZXJlIG15IG93bjoKCioqSW52ZXN0aWdhdGluZyBPdmVybGF5RlMgYW5kIENhY2hlIFN0YXRpc3RpY3MqKgoKUmlnaHQsIHNvIGBDQUNIRVNUQVRfU1lTQ0FMTGAgaXMgZW5hYmxlZCBieSBkZWZhdWx0LCB3aGljaCBpcyBnb29kLiBUaGF0JiMzOTtzIGEga2V5IHBpZWNlIG9mIGluZm9ybWF0aW9uIGZvciBteSBjdXJyZW50IGludmVzdGlnYXRpb24uIE5vdywgSSBuZWVkIHRvIGNvbmZpcm0gc29tZXRoaW5nOiBJIHJlY2FsbCBgb3ZsX2NhY2hlc3RhdGAgcmVsaWVzIG9uIGBPVkVSTEFZX0ZTYCBmb3IgaXRzIHRlc3RpbmcsIHNvIGxldCYjMzk7cyBkb3VibGUtY2hlY2sgdGhlIEtjb25maWcgb3B0aW9ucy4gTGV0IG1lIGdvIGFuZCBxdWlja2x5IG5hdmlnYXRlIGludG8gYGZzL292ZXJsYXlmcy9LY29uZmlnYCB0byB2ZXJpZnkgdGhlIGRlcGVuZGVuY3kuIEl0JiMzOTtzIGFsd2F5cyBiZXN0IHRvIGJlIHByZWNpc2Ugd2hlbiBkZWFsaW5nIHdpdGgga2VybmVsIGNvbmZpZ3VyYXRpb24gZGVwZW5kZW5jaWVzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzIzIDEyOjI1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBPVkVSTEFZX0ZTJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2ZzL292ZXJsYXlmcy9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG5mcy9vdmVybGF5ZnMvS2NvbmZpZzoyOmNvbmZpZyBPVkVSTEFZX0ZTXG5mcy9vdmVybGF5ZnMvS2NvbmZpZy0zLVx0dHJpc3RhdGUgXCYjMzQ7T3ZlcmxheSBmaWxlc3lzdGVtIHN1cHBvcnRcJiMzNDtcbi0tXG5mcy9vdmVybGF5ZnMvS2NvbmZpZy0xNC1cbmZzL292ZXJsYXlmcy9LY29uZmlnOjE1OmNvbmZpZyBPVkVSTEFZX0ZTX1JFRElSRUNUX0RJUlxuZnMvb3ZlcmxheWZzL0tjb25maWctMTYtXHRib29sIFwmIzM0O092ZXJsYXlmczogdHVybiBvbiByZWRpcmVjdCBkaXJlY3RvcnkgZmVhdHVyZSBieSBkZWZhdWx0XCYjMzQ7XG4tLVxuZnMvb3ZlcmxheWZzL0tjb25maWctMzAtXG5mcy9vdmVybGF5ZnMvS2NvbmZpZzozMTpjb25maWcgT1ZFUkxBWV9GU19SRURJUkVDVF9BTFdBWVNfRk9MTE9XXG5mcy9vdmVybGF5ZnMvS2NvbmZpZy0zMi1cdGJvb2wgXCYjMzQ7T3ZlcmxheWZzOiBmb2xsb3cgcmVkaXJlY3RzIGV2ZW4gaWYgcmVkaXJlY3RzIGFyZSB0dXJuZWQgb2ZmXCYjMzQ7XG4tLVxuZnMvb3ZlcmxheWZzL0tjb25maWctNDUtXG5mcy9vdmVybGF5ZnMvS2NvbmZpZzo0Njpjb25maWcgT1ZFUkxBWV9GU19JTkRFWFxuZnMvb3ZlcmxheWZzL0tjb25maWctNDctXHRib29sIFwmIzM0O092ZXJsYXlmczogdHVybiBvbiBpbm9kZXMgaW5kZXggZmVhdHVyZSBieSBkZWZhdWx0XCYjMzQ7XG4tLVxuZnMvb3ZlcmxheWZzL0tjb25maWctNjQtXG5mcy9vdmVybGF5ZnMvS2NvbmZpZzo2NTpjb25maWcgT1ZFUkxBWV9GU19ORlNfRVhQT1JUXG5mcy9vdmVybGF5ZnMvS2NvbmZpZy02Ni1cdGJvb2wgXCYjMzQ7T3ZlcmxheWZzOiB0dXJuIG9uIE5GUyBleHBvcnQgZmVhdHVyZSBieSBkZWZhdWx0XCYjMzQ7XG4tLVxuZnMvb3ZlcmxheWZzL0tjb25maWctOTItXG5mcy9vdmVybGF5ZnMvS2NvbmZpZzo5Mzpjb25maWcgT1ZFUkxBWV9GU19YSU5PX0FVVE9cbmZzL292ZXJsYXlmcy9LY29uZmlnLTk0LVx0Ym9vbCBcJiMzNDtPdmVybGF5ZnM6IGF1dG8gZW5hYmxlIGlub2RlIG51bWJlciBtYXBwaW5nXCYjMzQ7XG4tLVxuZnMvb3ZlcmxheWZzL0tjb25maWctMTEwLVxuZnMvb3ZlcmxheWZzL0tjb25maWc6MTExOmNvbmZpZyBPVkVSTEFZX0ZTX01FVEFDT1BZXG5mcy9vdmVybGF5ZnMvS2NvbmZpZy0xMTItXHRib29sIFwmIzM0O092ZXJsYXlmczogdHVybiBvbiBtZXRhZGF0YSBvbmx5IGNvcHkgdXAgZmVhdHVyZSBieSBkZWZhdWx0XCYjMzQ7XG4tLVxuZnMvb3ZlcmxheWZzL0tjb25maWctMTI4LVxuZnMvb3ZlcmxheWZzL0tjb25maWc6MTI5OmNvbmZpZyBPVkVSTEFZX0ZTX0RFQlVHXG5mcy9vdmVybGF5ZnMvS2NvbmZpZy0xMzAtXHRib29sIFwmIzM0O092ZXJsYXlmczogdHVybiBvbiBleHRyYSBkZWJ1Z2dpbmcgY2hlY2tzXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjMgMTI6MjU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzMwOQoJCQkJCQkJb3V0cHV0OiAxMTkKCQkJCQkJCXRob3VnaHRzOiAyMzgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBPdmVybGF5RlMgQ2FjaGVzdGF0IFBhdGNoKioKCk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgYWxsIGFib3V0IGBPVkVSTEFZX0ZTYCwgdGhhdCYjMzk7cyB0aGUga2V5IGNvbmZpZ3VyYXRpb24gaXRlbSBoZXJlLiBUaGUgY29yZSBmdW5jdGlvbmFsaXR5IHNlZW1zIHRvIGJlIGFib3V0IGltcGxlbWVudGluZyB0aGUgYGNhY2hlc3RhdGAgZmlsZSBvcGVyYXRpb24gZm9yIG92ZXJsYXlmcy4gVGhpcyBtZWFucyBlbmFibGluZyB0aGUgYGNhY2hlc3RhdGAgc3lzdGVtIGNhbGwgdG8gYWNjdXJhdGVseSByZXBvcnQgcGFnZSBjYWNoZSBzdGF0aXN0aWNzIGZvciBmaWxlcyByZXNpZGluZyBvbiBvdmVybGF5ZnMuIFRoZSB0cmljayBpcyBmb3J3YXJkaW5nIHRoZSByZXF1ZXN0IHRvIHRoZSB1bmRlcmx5aW5nIGZpbGUsIHdoaWNoIG1ha2VzIHNlbnNlLgoKSSYjMzk7bSB0aGlua2luZyB0aGlzIGlzIGEgcHJldHR5IHNpZ25pZmljYW50IGNoYW5nZSBiZWNhdXNlIGl0IGludHJvZHVjZXMgbmV3LCBwb3RlbnRpYWxseSByZWFjaGFibGUgY29kZSBwYXRocyB3aXRoaW4gYm90aCB0aGUgVkZTIGFuZCBvdmVybGF5ZnMgbGF5ZXJzLiBXZSBzaG91bGQgdGFrZSBhIHF1aWNrIGxvb2sgdG8gc2VlIGlmIHRoZXJlIGFyZSBhbnkgb3RoZXIgcmVsZXZhbnQgY29uZmlncywgbGV0JiMzOTtzIHNlZS4uLiB5ZXAsIHRoZXJlJiMzOTtzIGBDQUNIRVNUQVRfU1lTQ0FMTGAgYXMgd2VsbCBhcyBgT1ZFUkxBWV9GU2AuCgpHaXZlbiB0aGlzIGZ1bmN0aW9uYWwgY2hhbmdlIGFuZCB0aGUgbmV3IGNvZGUgcGF0aHMsIG15IGFuYWx5c2lzIHlpZWxkcyB0aGF0IHRoaXMgcGF0Y2ggaXMgZGVmaW5pdGVseSB3b3J0aCBmdXp6aW5nLiBJJiMzOTtsbCBmbGFnIGl0IGFzIHN1Y2guIEFuZCwgc2luY2UgdGhpcyBwYXRjaCBkZWFscyB3aXRoIGNhY2hlIHN0YXRpc3RpY3MgZm9yIG92ZXJsYWlkIGZpbGVzLCB0aGUgZm9jdXMgc3ltYm9scyBhcmUgb2J2aW91c2x5IGBvdmxfY2FjaGVzdGF0YCBhbmQgYHZmc19jYWNoZXN0YXRgLgoKSGVyZSYjMzk7cyBteSBhc3Nlc3NtZW50OgoKKiAgICoqV29ydGhGdXp6aW5nKio6IFRydWUKKiAgICoqRm9jdXNTeW1ib2xzKio6IGBbJiMzNDtvdmxfY2FjaGVzdGF0JiMzNDssICYjMzQ7dmZzX2NhY2hlc3RhdCYjMzQ7XWAKKiAgICoqRW5hYmxlQ29uZmlncyoqOiBgWyYjMzQ7Q0FDSEVTVEFUX1NZU0NBTEwmIzM0OywgJiMzNDtPVkVSTEFZX0ZTJiMzNDtdYAoqICAgKipSZWFzb25pbmcqKjogJiMzNDtUaGUgcGF0Y2ggaW1wbGVtZW50cyB0aGUgYGNhY2hlc3RhdGAgZmlsZSBvcGVyYXRpb24gZm9yIG92ZXJsYXlmcywgYWxsb3dpbmcgdGhlIGBjYWNoZXN0YXRgIHN5c2NhbGwgdG8gY29ycmVjdGx5IHF1ZXJ5IHBhZ2UgY2FjaGUgc3RhdGlzdGljcyBmb3IgZmlsZXMgb24gb3ZlcmxheWZzIGJ5IGZvcndhcmRpbmcgdGhlIHJlcXVlc3QgdG8gdGhlIHVuZGVybHlpbmcgZmlsZS4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRoYXQgaW50cm9kdWNlcyBuZXcgcmVhY2hhYmxlIGNvZGUgaW4gdGhlIFZGUyBhbmQgb3ZlcmxheWZzIGxheWVycy4mIzM0OwoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yMyAxMjoyNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7Q0FDSEVTVEFUX1NZU0NBTEwmIzM0OywKICAgICYjMzQ7T1ZFUkxBWV9GUyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O292bF9jYWNoZXN0YXQmIzM0OywKICAgICYjMzQ7dmZzX2NhY2hlc3RhdCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBpbXBsZW1lbnRzIHRoZSBjYWNoZXN0YXQgZmlsZSBvcGVyYXRpb24gZm9yIG92ZXJsYXlmcywgYWxsb3dpbmcgdGhlIGNhY2hlc3RhdCBzeXNjYWxsIHRvIGNvcnJlY3RseSBxdWVyeSBwYWdlIGNhY2hlIHN0YXRpc3RpY3MgZm9yIGZpbGVzIG9uIG92ZXJsYXlmcyBieSBmb3J3YXJkaW5nIHRoZSByZXF1ZXN0IHRvIHRoZSB1bmRlcmx5aW5nIGZpbGUuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0aGF0IGludHJvZHVjZXMgbmV3IHJlYWNoYWJsZSBjb2RlIGluIHRoZSBWRlMgYW5kIG92ZXJsYXlmcyBsYXllcnMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0NBQ0hFU1RBVF9TWVNDQUxMJiMzNDssCiAgICAmIzM0O09WRVJMQVlfRlMmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtvdmxfY2FjaGVzdGF0JiMzNDssCiAgICAmIzM0O3Zmc19jYWNoZXN0YXQmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggaW1wbGVtZW50cyB0aGUgY2FjaGVzdGF0IGZpbGUgb3BlcmF0aW9uIGZvciBvdmVybGF5ZnMsIGFsbG93aW5nIHRoZSBjYWNoZXN0YXQgc3lzY2FsbCB0byBjb3JyZWN0bHkgcXVlcnkgcGFnZSBjYWNoZSBzdGF0aXN0aWNzIGZvciBmaWxlcyBvbiBvdmVybGF5ZnMgYnkgZm9yd2FyZGluZyB0aGUgcmVxdWVzdCB0byB0aGUgdW5kZXJseWluZyBmaWxlLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdGhhdCBpbnRyb2R1Y2VzIG5ldyByZWFjaGFibGUgY29kZSBpbiB0aGUgVkZTIGFuZCBvdmVybGF5ZnMgbGF5ZXJzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDYtMjNUMTI6MjU6MTQuNTM1MjgyMzI0WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjU2ODcxMTMwMzMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQ0FDSEVTVEFUX1NZU0NBTExcIixcbiAgICBcIk9WRVJMQVlfRlNcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJvdmxfY2FjaGVzdGF0XCIsXG4gICAgXCJ2ZnNfY2FjaGVzdGF0XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggaW1wbGVtZW50cyB0aGUgY2FjaGVzdGF0IGZpbGUgb3BlcmF0aW9uIGZvciBvdmVybGF5ZnMsIGFsbG93aW5nIHRoZSBjYWNoZXN0YXQgc3lzY2FsbCB0byBjb3JyZWN0bHkgcXVlcnkgcGFnZSBjYWNoZSBzdGF0aXN0aWNzIGZvciBmaWxlcyBvbiBvdmVybGF5ZnMgYnkgZm9yd2FyZGluZyB0aGUgcmVxdWVzdCB0byB0aGUgdW5kZXJseWluZyBmaWxlLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdGhhdCBpbnRyb2R1Y2VzIG5ldyByZWFjaGFibGUgY29kZSBpbiB0aGUgVkZTIGFuZCBvdmVybGF5ZnMgbGF5ZXJzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yM1QxMjoyNToxNC41MzUyODk2NDRaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjUyOTQ0MDczOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDBiYzRhYzMyOWIwM2FkZTcwOGVmYjM5NzllNTRhOTI0MmI4OTJjMjlcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFR1ZSBKdW4gMjMgMTI6MjU6MTMgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZnMvb3ZlcmxheWZzL2ZpbGUuYyBiL2ZzL292ZXJsYXlmcy9maWxlLmNcXG5pbmRleCAyN2NjMDc3MzhmMzNiZi4uYTdlMjUyYTkxZWE0MzUgMTAwNjQ0XFxuLS0tIGEvZnMvb3ZlcmxheWZzL2ZpbGUuY1xcbisrKyBiL2ZzL292ZXJsYXlmcy9maWxlLmNcXG5AQCAtNTE4LDYgKzUxOCwyMSBAQCBzdGF0aWMgaW50IG92bF9mYWR2aXNlKHN0cnVjdCBmaWxlICpmaWxlLCBsb2ZmX3Qgb2Zmc2V0LCBsb2ZmX3QgbGVuLCBpbnQgYWR2aWNlKVxcbiBcXHRcXHRyZXR1cm4gdmZzX2ZhZHZpc2UocmVhbGZpbGUsIG9mZnNldCwgbGVuLCBhZHZpY2UpO1xcbiB9XFxuIFxcbisjaWZkZWYgQ09ORklHX0NBQ0hFU1RBVF9TWVNDQUxMXFxuK3N0YXRpYyBpbnQgb3ZsX2NhY2hlc3RhdChzdHJ1Y3QgZmlsZSAqZmlsZSwgc3RydWN0IGNhY2hlc3RhdF9yYW5nZSAqY3NyLFxcbitcXHRcXHRcXHQgc3RydWN0IGNhY2hlc3RhdCAqY3MpXFxuK3tcXG4rXFx0c3RydWN0IGZpbGUgKnJlYWxmaWxlO1xcbitcXG4rXFx0cmVhbGZpbGUgPSBvdmxfcmVhbF9maWxlKGZpbGUpO1xcbitcXHRpZiAoSVNfRVJSKHJlYWxmaWxlKSlcXG4rXFx0XFx0cmV0dXJuIFBUUl9FUlIocmVhbGZpbGUpO1xcbitcXG4rXFx0d2l0aF9vdmxfY3JlZHMoZmlsZV9pbm9kZShmaWxlKS1cXHUwMDNlaV9zYilcXG4rXFx0XFx0cmV0dXJuIHZmc19jYWNoZXN0YXQocmVhbGZpbGUsIGNzciwgY3MpO1xcbit9XFxuKyNlbmRpZlxcbitcXG4gZW51bSBvdmxfY29weW9wIHtcXG4gXFx0T1ZMX0NPUFksXFxuIFxcdE9WTF9DTE9ORSxcXG5AQCAtNjQyLDYgKzY1Nyw5IEBAIGNvbnN0IHN0cnVjdCBmaWxlX29wZXJhdGlvbnMgb3ZsX2ZpbGVfb3BlcmF0aW9ucyA9IHtcXG4gXFx0Lm1tYXBcXHRcXHQ9IG92bF9tbWFwLFxcbiBcXHQuZmFsbG9jYXRlXFx0PSBvdmxfZmFsbG9jYXRlLFxcbiBcXHQuZmFkdmlzZVxcdD0gb3ZsX2ZhZHZpc2UsXFxuKyNpZmRlZiBDT05GSUdfQ0FDSEVTVEFUX1NZU0NBTExcXG4rXFx0LmNhY2hlc3RhdFxcdD0gb3ZsX2NhY2hlc3RhdCxcXG4rI2VuZGlmXFxuIFxcdC5mbHVzaFxcdFxcdD0gb3ZsX2ZsdXNoLFxcbiBcXHQuc3BsaWNlX3JlYWQgICAgPSBvdmxfc3BsaWNlX3JlYWQsXFxuIFxcdC5zcGxpY2Vfd3JpdGUgICA9IG92bF9zcGxpY2Vfd3JpdGUsXFxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvZnMuaCBiL2luY2x1ZGUvbGludXgvZnMuaFxcbmluZGV4IDZkYTQ0NTczY2U0NTA4Li45NjZiNjU2NDcwN2U0OCAxMDA2NDRcXG4tLS0gYS9pbmNsdWRlL2xpbnV4L2ZzLmhcXG4rKysgYi9pbmNsdWRlL2xpbnV4L2ZzLmhcXG5AQCAtNTMsNiArNTMsOCBAQFxcbiBcXG4gc3RydWN0IGJkaV93cml0ZWJhY2s7XFxuIHN0cnVjdCBiaW87XFxuK3N0cnVjdCBjYWNoZXN0YXRfcmFuZ2U7XFxuK3N0cnVjdCBjYWNoZXN0YXQ7XFxuIHN0cnVjdCBpb19jb21wX2JhdGNoO1xcbiBzdHJ1Y3QgZmllbWFwX2V4dGVudF9pbmZvO1xcbiBzdHJ1Y3Qga2lvY2I7XFxuQEAgLTE5NjMsNiArMTk2NSw4IEBAIHN0cnVjdCBmaWxlX29wZXJhdGlvbnMge1xcbiBcXHRcXHRcXHRcXHQgICBzdHJ1Y3QgZmlsZSAqZmlsZV9vdXQsIGxvZmZfdCBwb3Nfb3V0LFxcbiBcXHRcXHRcXHRcXHQgICBsb2ZmX3QgbGVuLCB1bnNpZ25lZCBpbnQgcmVtYXBfZmxhZ3MpO1xcbiBcXHRpbnQgKCpmYWR2aXNlKShzdHJ1Y3QgZmlsZSAqLCBsb2ZmX3QsIGxvZmZfdCwgaW50KTtcXG4rXFx0aW50ICgqY2FjaGVzdGF0KShzdHJ1Y3QgZmlsZSAqZmlsZSwgc3RydWN0IGNhY2hlc3RhdF9yYW5nZSAqY3NyLFxcbitcXHRcXHRcXHQgc3RydWN0IGNhY2hlc3RhdCAqY3MpO1xcbiBcXHRpbnQgKCp1cmluZ19jbWQpKHN0cnVjdCBpb191cmluZ19jbWQgKmlvdWNtZCwgdW5zaWduZWQgaW50IGlzc3VlX2ZsYWdzKTtcXG4gXFx0aW50ICgqdXJpbmdfY21kX2lvcG9sbCkoc3RydWN0IGlvX3VyaW5nX2NtZCAqLCBzdHJ1Y3QgaW9fY29tcF9iYXRjaCAqLFxcbiBcXHRcXHRcXHRcXHR1bnNpZ25lZCBpbnQgcG9sbF9mbGFncyk7XFxuQEAgLTM2MzMsNiArMzYzNywxMiBAQCBleHRlcm4gaW50IHZmc19mYWR2aXNlKHN0cnVjdCBmaWxlICpmaWxlLCBsb2ZmX3Qgb2Zmc2V0LCBsb2ZmX3QgbGVuLFxcbiBleHRlcm4gaW50IGdlbmVyaWNfZmFkdmlzZShzdHJ1Y3QgZmlsZSAqZmlsZSwgbG9mZl90IG9mZnNldCwgbG9mZl90IGxlbixcXG4gXFx0XFx0XFx0ICAgaW50IGFkdmljZSk7XFxuIFxcbisvKiBtbS9maWxlbWFwLmMgKi9cXG4rI2lmZGVmIENPTkZJR19DQUNIRVNUQVRfU1lTQ0FMTFxcbitpbnQgdmZzX2NhY2hlc3RhdChzdHJ1Y3QgZmlsZSAqZmlsZSwgc3RydWN0IGNhY2hlc3RhdF9yYW5nZSAqY3NyLFxcbitcXHRcXHQgIHN0cnVjdCBjYWNoZXN0YXQgKmNzKTtcXG4rI2VuZGlmXFxuK1xcbiBzdGF0aWMgaW5saW5lIGJvb2wgdmZzX2VtcHR5X3BhdGgoaW50IGRmZCwgY29uc3QgY2hhciBfX3VzZXIgKnBhdGgpXFxuIHtcXG4gXFx0Y2hhciBjO1xcbmRpZmYgLS1naXQgYS9tbS9maWxlbWFwLmMgYi9tbS9maWxlbWFwLmNcXG5pbmRleCA3ZTQ2N2M4MWQyMTM4OS4uOTA2MDhjNmIxY2U1NTEgMTAwNjQ0XFxuLS0tIGEvbW0vZmlsZW1hcC5jXFxuKysrIGIvbW0vZmlsZW1hcC5jXFxuQEAgLTQ3MTQsNiArNDcxNCwzNyBAQCBzdGF0aWMgaW5saW5lIGJvb2wgY2FuX2RvX2NhY2hlc3RhdChzdHJ1Y3QgZmlsZSAqZilcXG4gXFx0cmV0dXJuIGZpbGVfcGVybWlzc2lvbihmLCBNQVlfV1JJVEUpID09IDA7XFxuIH1cXG4gXFxuKy8qKlxcbisgKiB2ZnNfY2FjaGVzdGF0KCkgLSBxdWVyeSBwYWdlIGNhY2hlIHN0YXRpc3RpY3Mgb2YgYSBmaWxlXFxuKyAqIEBmaWxlOlxcdGZpbGUgdG8gcXVlcnlcXG4rICogQGNzcjpcXHRieXRlIHJhbmdlIHRvIHF1ZXJ5XFxuKyAqIEBjczpcXHRcXHRvdXRwdXQgc3RhdGlzdGljc1xcbisgKlxcbisgKiBDb21wdXRlIHRoZSBwYWdlIGNhY2hlIHN0YXRpc3RpY3MgZm9yIHRoZSBnaXZlbiBieXRlIHJhbmdlIG9mIEBmaWxlLlxcbisgKlxcbisgKiBTdGFja2FibGUgZmlsZXN5c3RlbXMgKGUuZy4gb3ZlcmxheWZzKSBrZWVwIHRoZSBkYXRhIHBhZ2VzIGluIHRoZVxcbisgKiBtYXBwaW5nIG9mIGFuIHVuZGVybHlpbmcgZmlsZSByYXRoZXIgdGhhbiBpbiBAZmlsZS1cXHUwMDNlZl9tYXBwaW5nLiBTdWNoXFxuKyAqIGZpbGVzeXN0ZW1zIHByb3ZpZGUgYSAtXFx1MDAzZWNhY2hlc3RhdCgpIGZpbGUgb3BlcmF0aW9uIHRoYXQgZm9yd2FyZHMgdGhlXFxuKyAqIHF1ZXJ5IHRvIHRoZSBmaWxlIHRoYXQgYWN0dWFsbHkgb3ducyB0aGUgcGFnZSBjYWNoZTsgb3RoZXJ3aXNlIHRoZVxcbisgKiBzdGF0aXN0aWNzIGFyZSBjb21wdXRlZCBmcm9tIEBmaWxlLVxcdTAwM2VmX21hcHBpbmcgZGlyZWN0bHkuXFxuKyAqL1xcbitpbnQgdmZzX2NhY2hlc3RhdChzdHJ1Y3QgZmlsZSAqZmlsZSwgc3RydWN0IGNhY2hlc3RhdF9yYW5nZSAqY3NyLFxcbitcXHRcXHQgIHN0cnVjdCBjYWNoZXN0YXQgKmNzKVxcbit7XFxuK1xcdHBnb2ZmX3QgZmlyc3RfaW5kZXgsIGxhc3RfaW5kZXg7XFxuK1xcbitcXHRpZiAoZmlsZS1cXHUwMDNlZl9vcC1cXHUwMDNlY2FjaGVzdGF0KVxcbitcXHRcXHRyZXR1cm4gZmlsZS1cXHUwMDNlZl9vcC1cXHUwMDNlY2FjaGVzdGF0KGZpbGUsIGNzciwgY3MpO1xcbitcXG4rXFx0Zmlyc3RfaW5kZXggPSBjc3ItXFx1MDAzZW9mZiBcXHUwMDNlXFx1MDAzZSBQQUdFX1NISUZUO1xcbitcXHRsYXN0X2luZGV4ID1cXG4rXFx0XFx0Y3NyLVxcdTAwM2VsZW4gPT0gMCA/IFVMT05HX01BWCA6IChjc3ItXFx1MDAzZW9mZiArIGNzci1cXHUwMDNlbGVuIC0gMSkgXFx1MDAzZVxcdTAwM2UgUEFHRV9TSElGVDtcXG4rXFx0bWVtc2V0KGNzLCAwLCBzaXplb2Yoc3RydWN0IGNhY2hlc3RhdCkpO1xcbitcXHRmaWxlbWFwX2NhY2hlc3RhdChmaWxlLVxcdTAwM2VmX21hcHBpbmcsIGZpcnN0X2luZGV4LCBsYXN0X2luZGV4LCBjcyk7XFxuK1xcdHJldHVybiAwO1xcbit9XFxuK0VYUE9SVF9TWU1CT0wodmZzX2NhY2hlc3RhdCk7XFxuK1xcbiAvKlxcbiAgKiBUaGUgY2FjaGVzdGF0KDIpIHN5c3RlbSBjYWxsLlxcbiAgKlxcbkBAIC00NzUzLDEwICs0Nzg0LDkgQEAgU1lTQ0FMTF9ERUZJTkU0KGNhY2hlc3RhdCwgdW5zaWduZWQgaW50LCBmZCxcXG4gXFx0XFx0c3RydWN0IGNhY2hlc3RhdCBfX3VzZXIgKiwgY3N0YXQsIHVuc2lnbmVkIGludCwgZmxhZ3MpXFxuIHtcXG4gXFx0Q0xBU1MoZmQsIGYpKGZkKTtcXG4tXFx0c3RydWN0IGFkZHJlc3Nfc3BhY2UgKm1hcHBpbmc7XFxuIFxcdHN0cnVjdCBjYWNoZXN0YXRfcmFuZ2UgY3NyO1xcbiBcXHRzdHJ1Y3QgY2FjaGVzdGF0IGNzO1xcbi1cXHRwZ29mZl90IGZpcnN0X2luZGV4LCBsYXN0X2luZGV4O1xcbitcXHRpbnQgcmV0O1xcbiBcXG4gXFx0aWYgKGZkX2VtcHR5KGYpKVxcbiBcXHRcXHRyZXR1cm4gLUVCQURGO1xcbkBAIC00Nzc1LDEyICs0ODA1LDkgQEAgU1lTQ0FMTF9ERUZJTkU0KGNhY2hlc3RhdCwgdW5zaWduZWQgaW50LCBmZCxcXG4gXFx0aWYgKGZsYWdzICE9IDApXFxuIFxcdFxcdHJldHVybiAtRUlOVkFMO1xcbiBcXG4tXFx0Zmlyc3RfaW5kZXggPSBjc3Iub2ZmIFxcdTAwM2VcXHUwMDNlIFBBR0VfU0hJRlQ7XFxuLVxcdGxhc3RfaW5kZXggPVxcbi1cXHRcXHRjc3IubGVuID09IDAgPyBVTE9OR19NQVggOiAoY3NyLm9mZiArIGNzci5sZW4gLSAxKSBcXHUwMDNlXFx1MDAzZSBQQUdFX1NISUZUO1xcbi1cXHRtZW1zZXQoXFx1MDAyNmNzLCAwLCBzaXplb2Yoc3RydWN0IGNhY2hlc3RhdCkpO1xcbi1cXHRtYXBwaW5nID0gZmRfZmlsZShmKS1cXHUwMDNlZl9tYXBwaW5nO1xcbi1cXHRmaWxlbWFwX2NhY2hlc3RhdChtYXBwaW5nLCBmaXJzdF9pbmRleCwgbGFzdF9pbmRleCwgXFx1MDAyNmNzKTtcXG4rXFx0cmV0ID0gdmZzX2NhY2hlc3RhdChmZF9maWxlKGYpLCBcXHUwMDI2Y3NyLCBcXHUwMDI2Y3MpO1xcbitcXHRpZiAocmV0KVxcbitcXHRcXHRyZXR1cm4gcmV0O1xcbiBcXG4gXFx0aWYgKGNvcHlfdG9fdXNlcihjc3RhdCwgXFx1MDAyNmNzLCBzaXplb2Yoc3RydWN0IGNhY2hlc3RhdCkpKVxcbiBcXHRcXHRyZXR1cm4gLUVGQVVMVDtcXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvY2FjaGVzdGF0L3Rlc3RfY2FjaGVzdGF0LmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9jYWNoZXN0YXQvdGVzdF9jYWNoZXN0YXQuY1xcbmluZGV4IDU0MmNkMDljYjQ0MzRlLi4xNjYyZDk4MTdjNTBiZiAxMDA2NDRcXG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9jYWNoZXN0YXQvdGVzdF9jYWNoZXN0YXQuY1xcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2NhY2hlc3RhdC90ZXN0X2NhY2hlc3RhdC5jXFxuQEAgLTQsMjEgKzQsMjUgQEBcXG4gXFxuICNpbmNsdWRlIFxcdTAwM2NzdGRpby5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXHUwMDNjc3RkYm9vbC5oXFx1MDAzZVxcbisjaW5jbHVkZSBcXHUwMDNjc3RkbGliLmhcXHUwMDNlXFxuICNpbmNsdWRlIFxcdTAwM2NsaW51eC9rZXJuZWwuaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L21hZ2ljLmhcXHUwMDNlXFxuICNpbmNsdWRlIFxcdTAwM2NsaW51eC9tbWFuLmhcXHUwMDNlXFxuICNpbmNsdWRlIFxcdTAwM2NzeXMvbW1hbi5oXFx1MDAzZVxcbisjaW5jbHVkZSBcXHUwMDNjc3lzL21vdW50LmhcXHUwMDNlXFxuICNpbmNsdWRlIFxcdTAwM2NzeXMvc2htLmhcXHUwMDNlXFxuKyNpbmNsdWRlIFxcdTAwM2NzeXMvc3RhdC5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXHUwMDNjc3lzL3N5c2NhbGwuaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY3N5cy92ZnMuaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY3VuaXN0ZC5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXHUwMDNjc3RyaW5nLmhcXHUwMDNlXFxuICNpbmNsdWRlIFxcdTAwM2NmY250bC5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXHUwMDNjZXJybm8uaFxcdTAwM2VcXG4rI2luY2x1ZGUgXFx1MDAzY2xpbWl0cy5oXFx1MDAzZVxcbiBcXG4gI2luY2x1ZGUgXFxcImtzZWxmdGVzdC5oXFxcIlxcbiBcXG4tI2RlZmluZSBOUl9URVNUU1xcdDlcXG4rI2RlZmluZSBOUl9URVNUU1xcdDExXFxuIFxcbiBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IGRldl9maWxlc1tdID0ge1xcbiBcXHRcXFwiL2Rldi96ZXJvXFxcIiwgXFxcIi9kZXYvbnVsbFxcXCIsIFxcXCIvZGV2L3VyYW5kb21cXFwiLFxcbkBAIC0yOTQsNiArMjk4LDYyIEBAIGJvb2wgcnVuX2NhY2hlc3RhdF90ZXN0KGVudW0gZmlsZV90eXBlIHR5cGUpXFxuIFxcdHJldHVybiByZXQ7XFxuIH1cXG4gXFxuKy8qXFxuKyAqIFNldCB1cCBhbiBvdmVybGF5ZnMgbW91bnQgYW5kIHJ1biBjYWNoZXN0YXQgb24gYSBmcmVzaGx5IGNyZWF0ZWQgZmlsZSBpbiB0aGVcXG4rICogbWVyZ2VkIGRpcmVjdG9yeS4gT3ZlcmxheWZzIGZvcndhcmRzIGRhdGEgSS9PIHRvIHRoZSB1bmRlcmx5aW5nICh1cHBlcilcXG4rICogaW5vZGUsIHNvIHRoZSBwYWdlIGNhY2hlIGxpdmVzIHRoZXJlIGFuZCBub3QgaW4gdGhlIG92ZXJsYXkgaW5vZGUncyBtYXBwaW5nLlxcbisgKiBUaGlzIGlzIGEgcmVncmVzc2lvbiB0ZXN0IGZvciBjYWNoZXN0YXQgcmV0dXJuaW5nIGFsbCB6ZXJvZXMgb24gb3ZlcmxheWZzLlxcbisgKi9cXG4rc3RhdGljIGludCBydW5fY2FjaGVzdGF0X292ZXJsYXlmc190ZXN0KHZvaWQpXFxuK3tcXG4rXFx0Y2hhciB0bXBsW10gPSBcXFwiL3RtcC9jYWNoZXN0YXRfb3ZsLlhYWFhYWFxcXCI7XFxuK1xcdGNoYXIgbG93ZXJbUEFUSF9NQVhdLCB1cHBlcltQQVRIX01BWF0sIHdvcmtbUEFUSF9NQVhdO1xcbitcXHRjaGFyIG1lcmdlZFtQQVRIX01BWF0sIG9wdHNbNCAqIFBBVEhfTUFYXSwgZmlsZVtQQVRIX01BWF07XFxuK1xcdGNoYXIgKmJhc2U7XFxuK1xcdGludCByZXQ7XFxuK1xcbitcXHRiYXNlID0gbWtkdGVtcCh0bXBsKTtcXG4rXFx0aWYgKCFiYXNlKSB7XFxuK1xcdFxcdGtzZnRfcHJpbnRfbXNnKFxcXCJVbmFibGUgdG8gY3JlYXRlIG92ZXJsYXlmcyBiYXNlIGRpcjogJXNcXFxcblxcXCIsXFxuK1xcdFxcdFxcdCAgICAgICBzdHJlcnJvcihlcnJubykpO1xcbitcXHRcXHRyZXR1cm4gS1NGVF9GQUlMO1xcbitcXHR9XFxuK1xcbitcXHRzbnByaW50Zihsb3dlciwgc2l6ZW9mKGxvd2VyKSwgXFxcIiVzL2xvd2VyXFxcIiwgYmFzZSk7XFxuK1xcdHNucHJpbnRmKHVwcGVyLCBzaXplb2YodXBwZXIpLCBcXFwiJXMvdXBwZXJcXFwiLCBiYXNlKTtcXG4rXFx0c25wcmludGYod29yaywgc2l6ZW9mKHdvcmspLCBcXFwiJXMvd29ya1xcXCIsIGJhc2UpO1xcbitcXHRzbnByaW50ZihtZXJnZWQsIHNpemVvZihtZXJnZWQpLCBcXFwiJXMvbWVyZ2VkXFxcIiwgYmFzZSk7XFxuK1xcbitcXHRpZiAobWtkaXIobG93ZXIsIDA3NTUpIHx8IG1rZGlyKHVwcGVyLCAwNzU1KSB8fFxcbitcXHQgICAgbWtkaXIod29yaywgMDc1NSkgfHwgbWtkaXIobWVyZ2VkLCAwNzU1KSkge1xcbitcXHRcXHRrc2Z0X3ByaW50X21zZyhcXFwiVW5hYmxlIHRvIGNyZWF0ZSBvdmVybGF5ZnMgZGlyczogJXNcXFxcblxcXCIsXFxuK1xcdFxcdFxcdCAgICAgICBzdHJlcnJvcihlcnJubykpO1xcbitcXHRcXHRyZXQgPSBLU0ZUX0ZBSUw7XFxuK1xcdFxcdGdvdG8gY2xlYW51cDtcXG4rXFx0fVxcbitcXG4rXFx0c25wcmludGYob3B0cywgc2l6ZW9mKG9wdHMpLCBcXFwibG93ZXJkaXI9JXMsdXBwZXJkaXI9JXMsd29ya2Rpcj0lc1xcXCIsXFxuK1xcdFxcdCBsb3dlciwgdXBwZXIsIHdvcmspO1xcbitcXG4rXFx0aWYgKG1vdW50KFxcXCJvdmVybGF5XFxcIiwgbWVyZ2VkLCBcXFwib3ZlcmxheVxcXCIsIDAsIG9wdHMpKSB7XFxuK1xcdFxcdGtzZnRfcHJpbnRfbXNnKFxcXCJVbmFibGUgdG8gbW91bnQgb3ZlcmxheWZzIChuZWVkIHJvb3Q/KTogJXNcXFxcblxcXCIsXFxuK1xcdFxcdFxcdCAgICAgICBzdHJlcnJvcihlcnJubykpO1xcbitcXHRcXHRyZXQgPSBLU0ZUX1NLSVA7XFxuK1xcdFxcdGdvdG8gY2xlYW51cDtcXG4rXFx0fVxcbitcXG4rXFx0c25wcmludGYoZmlsZSwgc2l6ZW9mKGZpbGUpLCBcXFwiJXMvbWVyZ2VkL2NhY2hlc3RhdFxcXCIsIGJhc2UpO1xcbitcXHRyZXQgPSB0ZXN0X2NhY2hlc3RhdChmaWxlLCB0cnVlLCB0cnVlLCBmYWxzZSwgNCwgT19DUkVBVCB8IE9fUkRXUiwgMDYwMCk7XFxuK1xcbitcXHR1bW91bnQobWVyZ2VkKTtcXG4rY2xlYW51cDpcXG4rXFx0LyogQmVzdC1lZmZvcnQgcmVjdXJzaXZlIGNsZWFudXAgb2YgdGhlIHRlbXBvcmFyeSB0cmVlLiAqL1xcbitcXHRzbnByaW50ZihvcHRzLCBzaXplb2Yob3B0cyksIFxcXCJybSAtcmYgJXNcXFwiLCBiYXNlKTtcXG4rXFx0aWYgKHN5c3RlbShvcHRzKSlcXG4rXFx0XFx0a3NmdF9wcmludF9tc2coXFxcIlVuYWJsZSB0byBjbGVhbiB1cCAlc1xcXFxuXFxcIiwgYmFzZSk7XFxuK1xcdHJldHVybiByZXQ7XFxuK31cXG4rXFxuIGludCBtYWluKHZvaWQpXFxuIHtcXG4gXFx0aW50IHJldDtcXG5AQCAtMzYxLDUgKzQyMSwxOCBAQCBpbnQgbWFpbih2b2lkKVxcbiBcXHRcXHRrc2Z0X3Rlc3RfcmVzdWx0X2ZhaWwoXFxcImNhY2hlc3RhdCBmYWlscyB3aXRoIGEgbW1hcCBmaWxlXFxcXG5cXFwiKTtcXG4gXFx0XFx0cmV0ID0gMTtcXG4gXFx0fVxcbitcXG4rXFx0c3dpdGNoIChydW5fY2FjaGVzdGF0X292ZXJsYXlmc190ZXN0KCkpIHtcXG4rXFx0Y2FzZSBLU0ZUX0ZBSUw6XFxuK1xcdFxcdGtzZnRfdGVzdF9yZXN1bHRfZmFpbChcXFwiY2FjaGVzdGF0IGZhaWxzIHdpdGggYW4gb3ZlcmxheWZzIGZpbGVcXFxcblxcXCIpO1xcbitcXHRcXHRyZXQgPSAxO1xcbitcXHRcXHRicmVhaztcXG4rXFx0Y2FzZSBLU0ZUX1BBU1M6XFxuK1xcdFxcdGtzZnRfdGVzdF9yZXN1bHRfcGFzcyhcXFwiY2FjaGVzdGF0IHdvcmtzIHdpdGggYW4gb3ZlcmxheWZzIGZpbGVcXFxcblxcXCIpO1xcbitcXHRcXHRicmVhaztcXG4rXFx0Y2FzZSBLU0ZUX1NLSVA6XFxuK1xcdFxcdGtzZnRfdGVzdF9yZXN1bHRfc2tpcChcXFwib3ZlcmxheWZzIG5vdCBhdmFpbGFibGVcXFxcblxcXCIpO1xcbitcXHRcXHRicmVhaztcXG4rXFx0fVxcbiBcXHRyZXR1cm4gcmV0O1xcbiB9XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTIzVDEyOjI1OjE1LjA2NTU2MzQzM1oiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MjUxNTY4MjIwNDQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQ0FDSEVTVEFUX1NZU0NBTExcIixcbiAgICBcIk9WRVJMQVlfRlNcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJvdmxfY2FjaGVzdGF0XCIsXG4gICAgXCJ2ZnNfY2FjaGVzdGF0XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggaW1wbGVtZW50cyB0aGUgY2FjaGVzdGF0IGZpbGUgb3BlcmF0aW9uIGZvciBvdmVybGF5ZnMsIGFsbG93aW5nIHRoZSBjYWNoZXN0YXQgc3lzY2FsbCB0byBjb3JyZWN0bHkgcXVlcnkgcGFnZSBjYWNoZSBzdGF0aXN0aWNzIGZvciBmaWxlcyBvbiBvdmVybGF5ZnMgYnkgZm9yd2FyZGluZyB0aGUgcmVxdWVzdCB0byB0aGUgdW5kZXJseWluZyBmaWxlLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdGhhdCBpbnRyb2R1Y2VzIG5ldyByZWFjaGFibGUgY29kZSBpbiB0aGUgVkZTIGFuZCBvdmVybGF5ZnMgbGF5ZXJzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG5ldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0XG4gICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksXG4gICBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDBiYzRhYzMyOWIwM2FkZTcwOGVmYjM5NzllNTRhOTI0MmI4OTJjMjlcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVHVlIEp1biAyMyAxMjoyNToxMyAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2ZzL292ZXJsYXlmcy9maWxlLmMgYi9mcy9vdmVybGF5ZnMvZmlsZS5jXG5pbmRleCAyN2NjMDc3MzhmMzNiZi4uYTdlMjUyYTkxZWE0MzUgMTAwNjQ0XG4tLS0gYS9mcy9vdmVybGF5ZnMvZmlsZS5jXG4rKysgYi9mcy9vdmVybGF5ZnMvZmlsZS5jXG5AQCAtNTE4LDYgKzUxOCwyMSBAQCBzdGF0aWMgaW50IG92bF9mYWR2aXNlKHN0cnVjdCBmaWxlICpmaWxlLCBsb2ZmX3Qgb2Zmc2V0LCBsb2ZmX3QgbGVuLCBpbnQgYWR2aWNlKVxuIFx0XHRyZXR1cm4gdmZzX2ZhZHZpc2UocmVhbGZpbGUsIG9mZnNldCwgbGVuLCBhZHZpY2UpO1xuIH1cbiBcbisjaWZkZWYgQ09ORklHX0NBQ0hFU1RBVF9TWVNDQUxMXG4rc3RhdGljIGludCBvdmxfY2FjaGVzdGF0KHN0cnVjdCBmaWxlICpmaWxlLCBzdHJ1Y3QgY2FjaGVzdGF0X3JhbmdlICpjc3IsXG4rXHRcdFx0IHN0cnVjdCBjYWNoZXN0YXQgKmNzKVxuK3tcbitcdHN0cnVjdCBmaWxlICpyZWFsZmlsZTtcbitcbitcdHJlYWxmaWxlID0gb3ZsX3JlYWxfZmlsZShmaWxlKTtcbitcdGlmIChJU19FUlIocmVhbGZpbGUpKVxuK1x0XHRyZXR1cm4gUFRSX0VSUihyZWFsZmlsZSk7XG4rXG4rXHR3aXRoX292bF9jcmVkcyhmaWxlX2lub2RlKGZpbGUpLVx1MDAzZWlfc2IpXG4rXHRcdHJldHVybiB2ZnNfY2FjaGVzdGF0KHJlYWxmaWxlLCBjc3IsIGNzKTtcbit9XG4rI2VuZGlmXG4rXG4gZW51bSBvdmxfY29weW9wIHtcbiBcdE9WTF9DT1BZLFxuIFx0T1ZMX0NMT05FLFxuQEAgLTY0Miw2ICs2NTcsOSBAQCBjb25zdCBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIG92bF9maWxlX29wZXJhdGlvbnMgPSB7XG4gXHQubW1hcFx0XHQ9IG92bF9tbWFwLFxuIFx0LmZhbGxvY2F0ZVx0PSBvdmxfZmFsbG9jYXRlLFxuIFx0LmZhZHZpc2VcdD0gb3ZsX2ZhZHZpc2UsXG4rI2lmZGVmIENPTkZJR19DQUNIRVNUQVRfU1lTQ0FMTFxuK1x0LmNhY2hlc3RhdFx0PSBvdmxfY2FjaGVzdGF0LFxuKyNlbmRpZlxuIFx0LmZsdXNoXHRcdD0gb3ZsX2ZsdXNoLFxuIFx0LnNwbGljZV9yZWFkICAgID0gb3ZsX3NwbGljZV9yZWFkLFxuIFx0LnNwbGljZV93cml0ZSAgID0gb3ZsX3NwbGljZV93cml0ZSxcbmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L2ZzLmggYi9pbmNsdWRlL2xpbnV4L2ZzLmhcbmluZGV4IDZkYTQ0NTczY2U0NTA4Li45NjZiNjU2NDcwN2U0OCAxMDA2NDRcbi0tLSBhL2luY2x1ZGUvbGludXgvZnMuaFxuKysrIGIvaW5jbHVkZS9saW51eC9mcy5oXG5AQCAtNTMsNiArNTMsOCBAQFxuIFxuIHN0cnVjdCBiZGlfd3JpdGViYWNrO1xuIHN0cnVjdCBiaW87XG4rc3RydWN0IGNhY2hlc3RhdF9yYW5nZTtcbitzdHJ1Y3QgY2FjaGVzdGF0O1xuIHN0cnVjdCBpb19jb21wX2JhdGNoO1xuIHN0cnVjdCBmaWVtYXBfZXh0ZW50X2luZm87XG4gc3RydWN0IGtpb2NiO1xuQEAgLTE5NjMsNiArMTk2NSw4IEBAIHN0cnVjdCBmaWxlX29wZXJhdGlvbnMge1xuIFx0XHRcdFx0ICAgc3RydWN0IGZpbGUgKmZpbGVfb3V0LCBsb2ZmX3QgcG9zX291dCxcbiBcdFx0XHRcdCAgIGxvZmZfdCBsZW4sIHVuc2lnbmVkIGludCByZW1hcF9mbGFncyk7XG4gXHRpbnQgKCpmYWR2aXNlKShzdHJ1Y3QgZmlsZSAqLCBsb2ZmX3QsIGxvZmZfdCwgaW50KTtcbitcdGludCAoKmNhY2hlc3RhdCkoc3RydWN0IGZpbGUgKmZpbGUsIHN0cnVjdCBjYWNoZXN0YXRfcmFuZ2UgKmNzcixcbitcdFx0XHQgc3RydWN0IGNhY2hlc3RhdCAqY3MpO1xuIFx0aW50ICgqdXJpbmdfY21kKShzdHJ1Y3QgaW9fdXJpbmdfY21kICppb3VjbWQsIHVuc2lnbmVkIGludCBpc3N1ZV9mbGFncyk7XG4gXHRpbnQgKCp1cmluZ19jbWRfaW9wb2xsKShzdHJ1Y3QgaW9fdXJpbmdfY21kICosIHN0cnVjdCBpb19jb21wX2JhdGNoICosXG4gXHRcdFx0XHR1bnNpZ25lZCBpbnQgcG9sbF9mbGFncyk7XG5AQCAtMzYzMyw2ICszNjM3LDEyIEBAIGV4dGVybiBpbnQgdmZzX2ZhZHZpc2Uoc3RydWN0IGZpbGUgKmZpbGUsIGxvZmZfdCBvZmZzZXQsIGxvZmZfdCBsZW4sXG4gZXh0ZXJuIGludCBnZW5lcmljX2ZhZHZpc2Uoc3RydWN0IGZpbGUgKmZpbGUsIGxvZmZfdCBvZmZzZXQsIGxvZmZfdCBsZW4sXG4gXHRcdFx0ICAgaW50IGFkdmljZSk7XG4gXG4rLyogbW0vZmlsZW1hcC5jICovXG4rI2lmZGVmIENPTkZJR19DQUNIRVNUQVRfU1lTQ0FMTFxuK2ludCB2ZnNfY2FjaGVzdGF0KHN0cnVjdCBmaWxlICpmaWxlLCBzdHJ1Y3QgY2FjaGVzdGF0X3JhbmdlICpjc3IsXG4rXHRcdCAgc3RydWN0IGNhY2hlc3RhdCAqY3MpO1xuKyNlbmRpZlxuK1xuIHN0YXRpYyBpbmxpbmUgYm9vbCB2ZnNfZW1wdHlfcGF0aChpbnQgZGZkLCBjb25zdCBjaGFyIF9fdXNlciAqcGF0aClcbiB7XG4gXHRjaGFyIGM7XG5kaWZmIC0tZ2l0IGEvbW0vZmlsZW1hcC5jIGIvbW0vZmlsZW1hcC5jXG5pbmRleCA3ZTQ2N2M4MWQyMTM4OS4uOTA2MDhjNmIxY2U1NTEgMTAwNjQ0XG4tLS0gYS9tbS9maWxlbWFwLmNcbisrKyBiL21tL2ZpbGVtYXAuY1xuQEAgLTQ3MTQsNiArNDcxNCwzNyBAQCBzdGF0aWMgaW5saW5lIGJvb2wgY2FuX2RvX2NhY2hlc3RhdChzdHJ1Y3QgZmlsZSAqZilcbiBcdHJldHVybiBmaWxlX3Blcm1pc3Npb24oZiwgTUFZX1dSSVRFKSA9PSAwO1xuIH1cbiBcbisvKipcbisgKiB2ZnNfY2FjaGVzdGF0KCkgLSBxdWVyeSBwYWdlIGNhY2hlIHN0YXRpc3RpY3Mgb2YgYSBmaWxlXG4rICogQGZpbGU6XHRmaWxlIHRvIHF1ZXJ5XG4rICogQGNzcjpcdGJ5dGUgcmFuZ2UgdG8gcXVlcnlcbisgKiBAY3M6XHRcdG91dHB1dCBzdGF0aXN0aWNzXG4rICpcbisgKiBDb21wdXRlIHRoZSBwYWdlIGNhY2hlIHN0YXRpc3RpY3MgZm9yIHRoZSBnaXZlbiBieXRlIHJhbmdlIG9mIEBmaWxlLlxuKyAqXG4rICogU3RhY2thYmxlIGZpbGVzeXN0ZW1zIChlLmcuIG92ZXJsYXlmcykga2VlcCB0aGUgZGF0YSBwYWdlcyBpbiB0aGVcbisgKiBtYXBwaW5nIG9mIGFuIHVuZGVybHlpbmcgZmlsZSByYXRoZXIgdGhhbiBpbiBAZmlsZS1cdTAwM2VmX21hcHBpbmcuIFN1Y2hcbisgKiBmaWxlc3lzdGVtcyBwcm92aWRlIGEgLVx1MDAzZWNhY2hlc3RhdCgpIGZpbGUgb3BlcmF0aW9uIHRoYXQgZm9yd2FyZHMgdGhlXG4rICogcXVlcnkgdG8gdGhlIGZpbGUgdGhhdCBhY3R1YWxseSBvd25zIHRoZSBwYWdlIGNhY2hlOyBvdGhlcndpc2UgdGhlXG4rICogc3RhdGlzdGljcyBhcmUgY29tcHV0ZWQgZnJvbSBAZmlsZS1cdTAwM2VmX21hcHBpbmcgZGlyZWN0bHkuXG4rICovXG4raW50IHZmc19jYWNoZXN0YXQoc3RydWN0IGZpbGUgKmZpbGUsIHN0cnVjdCBjYWNoZXN0YXRfcmFuZ2UgKmNzcixcbitcdFx0ICBzdHJ1Y3QgY2FjaGVzdGF0ICpjcylcbit7XG4rXHRwZ29mZl90IGZpcnN0X2luZGV4LCBsYXN0X2luZGV4O1xuK1xuK1x0aWYgKGZpbGUtXHUwMDNlZl9vcC1cdTAwM2VjYWNoZXN0YXQpXG4rXHRcdHJldHVybiBmaWxlLVx1MDAzZWZfb3AtXHUwMDNlY2FjaGVzdGF0KGZpbGUsIGNzciwgY3MpO1xuK1xuK1x0Zmlyc3RfaW5kZXggPSBjc3ItXHUwMDNlb2ZmIFx1MDAzZVx1MDAzZSBQQUdFX1NISUZUO1xuK1x0bGFzdF9pbmRleCA9XG4rXHRcdGNzci1cdTAwM2VsZW4gPT0gMCA/IFVMT05HX01BWCA6IChjc3ItXHUwMDNlb2ZmICsgY3NyLVx1MDAzZWxlbiAtIDEpIFx1MDAzZVx1MDAzZSBQQUdFX1NISUZUO1xuK1x0bWVtc2V0KGNzLCAwLCBzaXplb2Yoc3RydWN0IGNhY2hlc3RhdCkpO1xuK1x0ZmlsZW1hcF9jYWNoZXN0YXQoZmlsZS1cdTAwM2VmX21hcHBpbmcsIGZpcnN0X2luZGV4LCBsYXN0X2luZGV4LCBjcyk7XG4rXHRyZXR1cm4gMDtcbit9XG4rRVhQT1JUX1NZTUJPTCh2ZnNfY2FjaGVzdGF0KTtcbitcbiAvKlxuICAqIFRoZSBjYWNoZXN0YXQoMikgc3lzdGVtIGNhbGwuXG4gICpcbkBAIC00NzUzLDEwICs0Nzg0LDkgQEAgU1lTQ0FMTF9ERUZJTkU0KGNhY2hlc3RhdCwgdW5zaWduZWQgaW50LCBmZCxcbiBcdFx0c3RydWN0IGNhY2hlc3RhdCBfX3VzZXIgKiwgY3N0YXQsIHVuc2lnbmVkIGludCwgZmxhZ3MpXG4ge1xuIFx0Q0xBU1MoZmQsIGYpKGZkKTtcbi1cdHN0cnVjdCBhZGRyZXNzX3NwYWNlICptYXBwaW5nO1xuIFx0c3RydWN0IGNhY2hlc3RhdF9yYW5nZSBjc3I7XG4gXHRzdHJ1Y3QgY2FjaGVzdGF0IGNzO1xuLVx0cGdvZmZfdCBmaXJzdF9pbmRleCwgbGFzdF9pbmRleDtcbitcdGludCByZXQ7XG4gXG4gXHRpZiAoZmRfZW1wdHkoZikpXG4gXHRcdHJldHVybiAtRUJBREY7XG5AQCAtNDc3NSwxMiArNDgwNSw5IEBAIFNZU0NBTExfREVGSU5FNChjYWNoZXN0YXQsIHVuc2lnbmVkIGludCwgZmQsXG4gXHRpZiAoZmxhZ3MgIT0gMClcbiBcdFx0cmV0dXJuIC1FSU5WQUw7XG4gXG4tXHRmaXJzdF9pbmRleCA9IGNzci5vZmYgXHUwMDNlXHUwMDNlIFBBR0VfU0hJRlQ7XG4tXHRsYXN0X2luZGV4ID1cbi1cdFx0Y3NyLmxlbiA9PSAwID8gVUxPTkdfTUFYIDogKGNzci5vZmYgKyBjc3IubGVuIC0gMSkgXHUwMDNlXHUwMDNlIFBBR0VfU0hJRlQ7XG4tXHRtZW1zZXQoXHUwMDI2Y3MsIDAsIHNpemVvZihzdHJ1Y3QgY2FjaGVzdGF0KSk7XG4tXHRtYXBwaW5nID0gZmRfZmlsZShmKS1cdTAwM2VmX21hcHBpbmc7XG4tXHRmaWxlbWFwX2NhY2hlc3RhdChtYXBwaW5nLCBmaXJzdF9pbmRleCwgbGFzdF9pbmRleCwgXHUwMDI2Y3MpO1xuK1x0cmV0ID0gdmZzX2NhY2hlc3RhdChmZF9maWxlKGYpLCBcdTAwMjZjc3IsIFx1MDAyNmNzKTtcbitcdGlmIChyZXQpXG4rXHRcdHJldHVybiByZXQ7XG4gXG4gXHRpZiAoY29weV90b191c2VyKGNzdGF0LCBcdTAwMjZjcywgc2l6ZW9mKHN0cnVjdCBjYWNoZXN0YXQpKSlcbiBcdFx0cmV0dXJuIC1FRkFVTFQ7XG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvY2FjaGVzdGF0L3Rlc3RfY2FjaGVzdGF0LmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9jYWNoZXN0YXQvdGVzdF9jYWNoZXN0YXQuY1xuaW5kZXggNTQyY2QwOWNiNDQzNGUuLjE2NjJkOTgxN2M1MGJmIDEwMDY0NFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvY2FjaGVzdGF0L3Rlc3RfY2FjaGVzdGF0LmNcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2NhY2hlc3RhdC90ZXN0X2NhY2hlc3RhdC5jXG5AQCAtNCwyMSArNCwyNSBAQFxuIFxuICNpbmNsdWRlIFx1MDAzY3N0ZGlvLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NzdGRib29sLmhcdTAwM2VcbisjaW5jbHVkZSBcdTAwM2NzdGRsaWIuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L2tlcm5lbC5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvbWFnaWMuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L21tYW4uaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY3N5cy9tbWFuLmhcdTAwM2VcbisjaW5jbHVkZSBcdTAwM2NzeXMvbW91bnQuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY3N5cy9zaG0uaFx1MDAzZVxuKyNpbmNsdWRlIFx1MDAzY3N5cy9zdGF0LmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NzeXMvc3lzY2FsbC5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjc3lzL3Zmcy5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjdW5pc3RkLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NzdHJpbmcuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2ZjbnRsLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NlcnJuby5oXHUwMDNlXG4rI2luY2x1ZGUgXHUwMDNjbGltaXRzLmhcdTAwM2VcbiBcbiAjaW5jbHVkZSBcImtzZWxmdGVzdC5oXCJcbiBcbi0jZGVmaW5lIE5SX1RFU1RTXHQ5XG4rI2RlZmluZSBOUl9URVNUU1x0MTFcbiBcbiBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IGRldl9maWxlc1tdID0ge1xuIFx0XCIvZGV2L3plcm9cIiwgXCIvZGV2L251bGxcIiwgXCIvZGV2L3VyYW5kb21cIixcbkBAIC0yOTQsNiArMjk4LDYyIEBAIGJvb2wgcnVuX2NhY2hlc3RhdF90ZXN0KGVudW0gZmlsZV90eXBlIHR5cGUpXG4gXHRyZXR1cm4gcmV0O1xuIH1cbiBcbisvKlxuKyAqIFNldCB1cCBhbiBvdmVybGF5ZnMgbW91bnQgYW5kIHJ1biBjYWNoZXN0YXQgb24gYSBmcmVzaGx5IGNyZWF0ZWQgZmlsZSBpbiB0aGVcbisgKiBtZXJnZWQgZGlyZWN0b3J5LiBPdmVybGF5ZnMgZm9yd2FyZHMgZGF0YSBJL08gdG8gdGhlIHVuZGVybHlpbmcgKHVwcGVyKVxuKyAqIGlub2RlLCBzbyB0aGUgcGFnZSBjYWNoZSBsaXZlcyB0aGVyZSBhbmQgbm90IGluIHRoZSBvdmVybGF5IGlub2RlJ3MgbWFwcGluZy5cbisgKiBUaGlzIGlzIGEgcmVncmVzc2lvbiB0ZXN0IGZvciBjYWNoZXN0YXQgcmV0dXJuaW5nIGFsbCB6ZXJvZXMgb24gb3ZlcmxheWZzLlxuKyAqL1xuK3N0YXRpYyBpbnQgcnVuX2NhY2hlc3RhdF9vdmVybGF5ZnNfdGVzdCh2b2lkKVxuK3tcbitcdGNoYXIgdG1wbFtdID0gXCIvdG1wL2NhY2hlc3RhdF9vdmwuWFhYWFhYXCI7XG4rXHRjaGFyIGxvd2VyW1BBVEhfTUFYXSwgdXBwZXJbUEFUSF9NQVhdLCB3b3JrW1BBVEhfTUFYXTtcbitcdGNoYXIgbWVyZ2VkW1BBVEhfTUFYXSwgb3B0c1s0ICogUEFUSF9NQVhdLCBmaWxlW1BBVEhfTUFYXTtcbitcdGNoYXIgKmJhc2U7XG4rXHRpbnQgcmV0O1xuK1xuK1x0YmFzZSA9IG1rZHRlbXAodG1wbCk7XG4rXHRpZiAoIWJhc2UpIHtcbitcdFx0a3NmdF9wcmludF9tc2coXCJVbmFibGUgdG8gY3JlYXRlIG92ZXJsYXlmcyBiYXNlIGRpcjogJXNcXG5cIixcbitcdFx0XHQgICAgICAgc3RyZXJyb3IoZXJybm8pKTtcbitcdFx0cmV0dXJuIEtTRlRfRkFJTDtcbitcdH1cbitcbitcdHNucHJpbnRmKGxvd2VyLCBzaXplb2YobG93ZXIpLCBcIiVzL2xvd2VyXCIsIGJhc2UpO1xuK1x0c25wcmludGYodXBwZXIsIHNpemVvZih1cHBlciksIFwiJXMvdXBwZXJcIiwgYmFzZSk7XG4rXHRzbnByaW50Zih3b3JrLCBzaXplb2Yod29yayksIFwiJXMvd29ya1wiLCBiYXNlKTtcbitcdHNucHJpbnRmKG1lcmdlZCwgc2l6ZW9mKG1lcmdlZCksIFwiJXMvbWVyZ2VkXCIsIGJhc2UpO1xuK1xuK1x0aWYgKG1rZGlyKGxvd2VyLCAwNzU1KSB8fCBta2Rpcih1cHBlciwgMDc1NSkgfHxcbitcdCAgICBta2Rpcih3b3JrLCAwNzU1KSB8fCBta2RpcihtZXJnZWQsIDA3NTUpKSB7XG4rXHRcdGtzZnRfcHJpbnRfbXNnKFwiVW5hYmxlIHRvIGNyZWF0ZSBvdmVybGF5ZnMgZGlyczogJXNcXG5cIixcbitcdFx0XHQgICAgICAgc3RyZXJyb3IoZXJybm8pKTtcbitcdFx0cmV0ID0gS1NGVF9GQUlMO1xuK1x0XHRnb3RvIGNsZWFudXA7XG4rXHR9XG4rXG4rXHRzbnByaW50ZihvcHRzLCBzaXplb2Yob3B0cyksIFwibG93ZXJkaXI9JXMsdXBwZXJkaXI9JXMsd29ya2Rpcj0lc1wiLFxuK1x0XHQgbG93ZXIsIHVwcGVyLCB3b3JrKTtcbitcbitcdGlmIChtb3VudChcIm92ZXJsYXlcIiwgbWVyZ2VkLCBcIm92ZXJsYXlcIiwgMCwgb3B0cykpIHtcbitcdFx0a3NmdF9wcmludF9tc2coXCJVbmFibGUgdG8gbW91bnQgb3ZlcmxheWZzIChuZWVkIHJvb3Q/KTogJXNcXG5cIixcbitcdFx0XHQgICAgICAgc3RyZXJyb3IoZXJybm8pKTtcbitcdFx0cmV0ID0gS1NGVF9TS0lQO1xuK1x0XHRnb3RvIGNsZWFudXA7XG4rXHR9XG4rXG4rXHRzbnByaW50ZihmaWxlLCBzaXplb2YoZmlsZSksIFwiJXMvbWVyZ2VkL2NhY2hlc3RhdFwiLCBiYXNlKTtcbitcdHJldCA9IHRlc3RfY2FjaGVzdGF0KGZpbGUsIHRydWUsIHRydWUsIGZhbHNlLCA0LCBPX0NSRUFUIHwgT19SRFdSLCAwNjAwKTtcbitcbitcdHVtb3VudChtZXJnZWQpO1xuK2NsZWFudXA6XG4rXHQvKiBCZXN0LWVmZm9ydCByZWN1cnNpdmUgY2xlYW51cCBvZiB0aGUgdGVtcG9yYXJ5IHRyZWUuICovXG4rXHRzbnByaW50ZihvcHRzLCBzaXplb2Yob3B0cyksIFwicm0gLXJmICVzXCIsIGJhc2UpO1xuK1x0aWYgKHN5c3RlbShvcHRzKSlcbitcdFx0a3NmdF9wcmludF9tc2coXCJVbmFibGUgdG8gY2xlYW4gdXAgJXNcXG5cIiwgYmFzZSk7XG4rXHRyZXR1cm4gcmV0O1xuK31cbitcbiBpbnQgbWFpbih2b2lkKVxuIHtcbiBcdGludCByZXQ7XG5AQCAtMzYxLDUgKzQyMSwxOCBAQCBpbnQgbWFpbih2b2lkKVxuIFx0XHRrc2Z0X3Rlc3RfcmVzdWx0X2ZhaWwoXCJjYWNoZXN0YXQgZmFpbHMgd2l0aCBhIG1tYXAgZmlsZVxcblwiKTtcbiBcdFx0cmV0ID0gMTtcbiBcdH1cbitcbitcdHN3aXRjaCAocnVuX2NhY2hlc3RhdF9vdmVybGF5ZnNfdGVzdCgpKSB7XG4rXHRjYXNlIEtTRlRfRkFJTDpcbitcdFx0a3NmdF90ZXN0X3Jlc3VsdF9mYWlsKFwiY2FjaGVzdGF0IGZhaWxzIHdpdGggYW4gb3ZlcmxheWZzIGZpbGVcXG5cIik7XG4rXHRcdHJldCA9IDE7XG4rXHRcdGJyZWFrO1xuK1x0Y2FzZSBLU0ZUX1BBU1M6XG4rXHRcdGtzZnRfdGVzdF9yZXN1bHRfcGFzcyhcImNhY2hlc3RhdCB3b3JrcyB3aXRoIGFuIG92ZXJsYXlmcyBmaWxlXFxuXCIpO1xuK1x0XHRicmVhaztcbitcdGNhc2UgS1NGVF9TS0lQOlxuK1x0XHRrc2Z0X3Rlc3RfcmVzdWx0X3NraXAoXCJvdmVybGF5ZnMgbm90IGF2YWlsYWJsZVxcblwiKTtcbitcdFx0YnJlYWs7XG4rXHR9XG4gXHRyZXR1cm4gcmV0O1xuIH1cbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTIzVDEyOjI1OjE1LjA2NTU2NTI2M1oiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU1MjEzNDc3ODUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudCBvZiB0aGUgT3ZlcmxheWZzIENhY2hlc3RhdCBQYXRjaCoqXG5cbk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgYWRkaW5nIGBjYWNoZXN0YXRgIGZ1bmN0aW9uYWxpdHkgdG8gb3ZlcmxheWZzLCB3aGljaCBpcyBhIHByZXR0eSB1c2VmdWwgZW5oYW5jZW1lbnQuIEl0IGxvb2tzIGxpa2UgdGhlIG1haW4gdGhydXN0IGlzIHRvIGFkZCBhIG5ldyBgY2FjaGVzdGF0YCBmaWxlIG9wZXJhdGlvbiwgYG92bF9jYWNoZXN0YXRgLCB0byB0aGUgYHN0cnVjdCBmaWxlX29wZXJhdGlvbnNgIGZvciBvdmVybGF5ZnMuIFRoZSBwYXRjaCB0aGVuIGNsZXZlcmx5IG1vZGlmaWVzIGB2ZnNfY2FjaGVzdGF0YCB0byB1dGlsaXplIHRoZSBuZXdseSBkZWZpbmVkIGBmaWxlLVx1MDAzZWZfb3AtXHUwMDNlY2FjaGVzdGF0YCBpZiBpdCdzIGF2YWlsYWJsZS4gRnVydGhlcm1vcmUsIHRoZSBzeXN0ZW0gY2FsbCBpbnRlcmZhY2UsIGBzeXNfY2FjaGVzdGF0YCwgaXMgdXBkYXRlZCB0byBjYWxsIHRoZSBgdmZzX2NhY2hlc3RhdGAgZnVuY3Rpb24uXG5cblRoZSByYXRpb25hbGUgc2VlbXMgY2xlYXI6IHRoZSBleGlzdGluZyBgY2FjaGVzdGF0YCBzeXNjYWxsIHdhc24ndCB3b3JraW5nIGNvcnJlY3RseSBmb3Igb3ZlcmxheWZzIGJlY2F1c2UgdGhlIGRhdGEgcGFnZXMgYXJlIGFjdHVhbGx5IHN0b3JlZCBpbiB0aGUgdW5kZXJseWluZyBmaWxlJ3MgbWFwcGluZywgbm90IHRoZSBvdmVybGF5J3MuIFRoaXMgcGF0Y2ggZGlyZWN0bHkgYWRkcmVzc2VzIHRoYXQgc2hvcnRjb21pbmcsIHByb3ZpZGluZyBtb3JlIGFjY3VyYXRlIGNhY2hlIHN0YXRpc3RpY3MgaW4gdGhlIG92ZXJsYXlmcyBjb250ZXh0LlxuXG5Ob3csIGxldCdzIG1ha2Ugc3VyZSBldmVyeXRoaW5nJ3MgaW4gb3JkZXIsIGNvbmZpZ3VyYXRpb24td2lzZS4gVGhlIHBhdGNoIG1lbnRpb25zIGBDT05GSUdfQ0FDSEVTVEFUX1NZU0NBTExgLCBhbmQgb2J2aW91c2x5IGBDT05GSUdfT1ZFUkxBWV9GU2AgaXMgcmVxdWlyZWQgZm9yIG92ZXJsYXlmcyBzdXBwb3J0LiBUaW1lIHRvIHZlcmlmeSB0aGF0IGBDT05GSUdfQ0FDSEVTVEFUX1NZU0NBTExgIGlzIGEgcmVhbCB0aGluZy4gSSdsbCB1c2UgYGdyZXBwZXJgIHRvIGZpbmQgb3V0LlxuXG5cbiIsIklucHV0VG9rZW5zIjo0NzcwLCJPdXRwdXRUb2tlbnMiOjIyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjIzLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjNUMTI6MjU6MjAuNTg2OTE1Nzg4WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIyMjc3NzU2MjMsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiQ0FDSEVTVEFUX1NZU0NBTExcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZnMvb3ZlcmxheWZzL2ZpbGUuYz01MDk9c3RhdGljIGludCBvdmxfZmFkdmlzZShzdHJ1Y3QgZmlsZSAqZmlsZSwgbG9mZl90IG9mZnNldCwgbG9mZl90IGxlbiwgaW50IGFkdmljZSlcXG4tLVxcbmZzL292ZXJsYXlmcy9maWxlLmMtNTIwLVxcbmZzL292ZXJsYXlmcy9maWxlLmM6NTIxOiNpZmRlZiBDT05GSUdfQ0FDSEVTVEFUX1NZU0NBTExcXG5mcy9vdmVybGF5ZnMvZmlsZS5jLTUyMi1zdGF0aWMgaW50IG92bF9jYWNoZXN0YXQoc3RydWN0IGZpbGUgKmZpbGUsIHN0cnVjdCBjYWNoZXN0YXRfcmFuZ2UgKmNzcixcXG4tLVxcbmZzL292ZXJsYXlmcy9maWxlLmM9NjUwPWNvbnN0IHN0cnVjdCBmaWxlX29wZXJhdGlvbnMgb3ZsX2ZpbGVfb3BlcmF0aW9ucyA9IHtcXG4tLVxcbmZzL292ZXJsYXlmcy9maWxlLmMtNjU5LVxcdC5mYWR2aXNlXFx0PSBvdmxfZmFkdmlzZSxcXG5mcy9vdmVybGF5ZnMvZmlsZS5jOjY2MDojaWZkZWYgQ09ORklHX0NBQ0hFU1RBVF9TWVNDQUxMXFxuZnMvb3ZlcmxheWZzL2ZpbGUuYy02NjEtXFx0LmNhY2hlc3RhdFxcdD0gb3ZsX2NhY2hlc3RhdCxcXG4tLVxcbmluY2x1ZGUvbGludXgvZnMuaD0zNjM3PWV4dGVybiBpbnQgZ2VuZXJpY19mYWR2aXNlKHN0cnVjdCBmaWxlICpmaWxlLCBsb2ZmX3Qgb2Zmc2V0LCBsb2ZmX3QgbGVuLFxcbi0tXFxuaW5jbHVkZS9saW51eC9mcy5oLTM2NDAtLyogbW0vZmlsZW1hcC5jICovXFxuaW5jbHVkZS9saW51eC9mcy5oOjM2NDE6I2lmZGVmIENPTkZJR19DQUNIRVNUQVRfU1lTQ0FMTFxcbmluY2x1ZGUvbGludXgvZnMuaC0zNjQyLWludCB2ZnNfY2FjaGVzdGF0KHN0cnVjdCBmaWxlICpmaWxlLCBzdHJ1Y3QgY2FjaGVzdGF0X3JhbmdlICpjc3IsXFxuLS1cXG5pbml0L0tjb25maWc9MjAzMT1jb25maWcgREVCVUdfUlNFUVxcbi0tXFxuaW5pdC9LY29uZmlnLTIwNDAtXFxuaW5pdC9LY29uZmlnOjIwNDE6Y29uZmlnIENBQ0hFU1RBVF9TWVNDQUxMXFxuaW5pdC9LY29uZmlnLTIwNDItXFx0Ym9vbCBcXFwiRW5hYmxlIGNhY2hlc3RhdCgpIHN5c3RlbSBjYWxsXFxcIiBpZiBFWFBFUlRcXG4tLVxcbm1tL2ZpbGVtYXAuYz00NTkyPUVYUE9SVF9TWU1CT0xfR1BMKGZpbGVtYXBfaW52YWxpZGF0ZV9pbm9kZSk7XFxubW0vZmlsZW1hcC5jLTQ1OTMtXFxubW0vZmlsZW1hcC5jOjQ1OTQ6I2lmZGVmIENPTkZJR19DQUNIRVNUQVRfU1lTQ0FMTFxcbm1tL2ZpbGVtYXAuYy00NTk1LS8qKlxcbi0tXFxubW0vZmlsZW1hcC5jPTQ3ODI9U1lTQ0FMTF9ERUZJTkU0KGNhY2hlc3RhdCwgdW5zaWduZWQgaW50LCBmZCxcXG4tLVxcbm1tL2ZpbGVtYXAuYy00ODE2LX1cXG5tbS9maWxlbWFwLmM6NDgxNzojZW5kaWYgLyogQ09ORklHX0NBQ0hFU1RBVF9TWVNDQUxMICovXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTIzVDEyOjI1OjIyLjgxNDY5NjcyMVoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjUxNzM5MDIyOTIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqS2VybmVsIENhY2hlc3RhdCBJbXBsZW1lbnRhdGlvbiBUaG91Z2h0cyoqXG5cbk9rYXksIHNvIGBDQUNIRVNUQVRfU1lTQ0FMTGAgKmlzKiBhIGxlZ2l0aW1hdGUgY29uZmlndXJhdGlvbiBvcHRpb24uIEdvb2QuIEFuZCwgb2YgY291cnNlLCB3ZSdsbCBuZWVkIGBPVkVSTEFZX0ZTYCBlbmFibGVkIGZvciB0aGlzIHRvIGJlIHJlbGV2YW50LiBUaGF0J3MgbG9naWNhbC5cblxuSSBzaG91bGQgZm9jdXMgbXkgYXR0ZW50aW9uIG9uIHRoZXNlIGtleSBmdW5jdGlvbnM6IGBvdmxfY2FjaGVzdGF0YCwgYHZmc19jYWNoZXN0YXRgLCBhbmQgYHN5c19jYWNoZXN0YXRgIChvciB0aGUgYXJjaGl0ZWN0dXJlLXNwZWNpZmljIHZhcmlhbnQgbGlrZSBgX194NjRfc3lzX2NhY2hlc3RhdGAsIGJ1dCBgdmZzX2NhY2hlc3RhdGAgYW5kIGBvdmxfY2FjaGVzdGF0YCBhcmUgbGlrZWx5IHRoZSBtb3JlIGNyaXRpY2FsIG9uZXMpLlxuXG5Ob3csIHRoZSBpbXBvcnRhbnQgcXVlc3Rpb246IElzIGBvdmxfY2FjaGVzdGF0YCBhY3R1YWxseSByZWFjaGFibGU/IExldCBtZSB0aGluay4uLiB5ZXMsIHRoZSBjYWxsIGNoYWluIGFwcGVhcnMgdG8gYmU6IGBzeXNfY2FjaGVzdGF0YCBnZXRzIHRvIGB2ZnNfY2FjaGVzdGF0YCBhbmQgdGhhdCwgaW4gdHVybiwgZ29lcyB0byBgZmlsZS1cdTAwM2VmX29wLVx1MDAzZWNhY2hlc3RhdGAuIFRoYXQncyB0aGUgcGF0aC5cblxuSnVzdCB0byBiZSBhYnNvbHV0ZWx5IHN1cmUsIEknbGwgcXVpY2tseSBkb3VibGUtY2hlY2sgYGluaXQvS2NvbmZpZ2AgdG8gY29uZmlybSB0aGF0IGBDQUNIRVNUQVRfU1lTQ0FMTGAgaXMgcHJvcGVybHkgZGVmaW5lZCBhbmQgcGxhY2VkLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1ODgyLCJPdXRwdXRUb2tlbnMiOjMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTU4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTIzVDEyOjI1OjI3Ljk4ODYwMTA0M1oiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE0NjQ1MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJpbml0L0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMjAzNSxcbiAgXCJMaW5lQ291bnRcIjogMjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiMjAzNTpcXHRcXHRzZWxlY3QgUlNFUV9ERUJVR19ERUZBVUxUX0VOQUJMRVxcbjIwMzY6XFx0XFx0aGVscFxcbjIwMzc6XFx0XFx0ICBFbmFibGUgZXh0cmEgZGVidWdnaW5nIGNoZWNrcyBmb3IgdGhlIHJzZXEgc3lzdGVtIGNhbGwuXFxuMjAzODpcXHRcXG4yMDM5OlxcdFxcdCAgSWYgdW5zdXJlLCBzYXkgTi5cXG4yMDQwOlxcdFxcbjIwNDE6XFx0Y29uZmlnIENBQ0hFU1RBVF9TWVNDQUxMXFxuMjA0MjpcXHRcXHRib29sIFxcXCJFbmFibGUgY2FjaGVzdGF0KCkgc3lzdGVtIGNhbGxcXFwiIGlmIEVYUEVSVFxcbjIwNDM6XFx0XFx0ZGVmYXVsdCB5XFxuMjA0NDpcXHRcXHRoZWxwXFxuMjA0NTpcXHRcXHQgIEVuYWJsZSB0aGUgY2FjaGVzdGF0IHN5c3RlbSBjYWxsLCB3aGljaCBxdWVyaWVzIHRoZSBwYWdlIGNhY2hlXFxuMjA0NjpcXHRcXHQgIHN0YXRpc3RpY3Mgb2YgYSBmaWxlIChudW1iZXIgb2YgY2FjaGVkIHBhZ2VzLCBkaXJ0eSBwYWdlcyxcXG4yMDQ3OlxcdFxcdCAgcGFnZXMgbWFya2VkIGZvciB3cml0ZWJhY2ssIChyZWNlbnRseSkgZXZpY3RlZCBwYWdlcykuXFxuMjA0ODpcXHRcXG4yMDQ5OlxcdFxcdCAgSWYgdW5zdXJlIHNheSBZIGhlcmUuXFxuMjA1MDpcXHRcXG4yMDUxOlxcdGNvbmZpZyBLQUxMU1lNU1xcbjIwNTI6XFx0XFx0Ym9vbCBcXFwiTG9hZCBhbGwgc3ltYm9scyBmb3IgZGVidWdnaW5nL2tzeW1vb3BzXFxcIiBpZiBFWFBFUlRcXG4yMDUzOlxcdFxcdGRlZmF1bHQgeVxcbjIwNTQ6XFx0XFx0aGVscFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yM1QxMjoyNToyNy45ODg3NDkzNzNaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNzUyNTI4OTQxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgYXMgaWYgdGhleSB3ZXJlIG15IG93bjpcblxuKipJbnZlc3RpZ2F0aW5nIE92ZXJsYXlGUyBhbmQgQ2FjaGUgU3RhdGlzdGljcyoqXG5cblJpZ2h0LCBzbyBgQ0FDSEVTVEFUX1NZU0NBTExgIGlzIGVuYWJsZWQgYnkgZGVmYXVsdCwgd2hpY2ggaXMgZ29vZC4gVGhhdCdzIGEga2V5IHBpZWNlIG9mIGluZm9ybWF0aW9uIGZvciBteSBjdXJyZW50IGludmVzdGlnYXRpb24uIE5vdywgSSBuZWVkIHRvIGNvbmZpcm0gc29tZXRoaW5nOiBJIHJlY2FsbCBgb3ZsX2NhY2hlc3RhdGAgcmVsaWVzIG9uIGBPVkVSTEFZX0ZTYCBmb3IgaXRzIHRlc3RpbmcsIHNvIGxldCdzIGRvdWJsZS1jaGVjayB0aGUgS2NvbmZpZyBvcHRpb25zLiBMZXQgbWUgZ28gYW5kIHF1aWNrbHkgbmF2aWdhdGUgaW50byBgZnMvb3ZlcmxheWZzL0tjb25maWdgIHRvIHZlcmlmeSB0aGUgZGVwZW5kZW5jeS4gSXQncyBhbHdheXMgYmVzdCB0byBiZSBwcmVjaXNlIHdoZW4gZGVhbGluZyB3aXRoIGtlcm5lbCBjb25maWd1cmF0aW9uIGRlcGVuZGVuY2llcy5cblxuXG4iLCJJbnB1dFRva2VucyI6NjU5MSwiT3V0cHV0VG9rZW5zIjoxOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjU0LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjNUMTI6MjU6MzEuNzQxMjgwMzc1WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIyMzkxMzUyNDMsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIE9WRVJMQVlfRlNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZnMvb3ZlcmxheWZzL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG5mcy9vdmVybGF5ZnMvS2NvbmZpZzoyOmNvbmZpZyBPVkVSTEFZX0ZTXFxuZnMvb3ZlcmxheWZzL0tjb25maWctMy1cXHR0cmlzdGF0ZSBcXFwiT3ZlcmxheSBmaWxlc3lzdGVtIHN1cHBvcnRcXFwiXFxuLS1cXG5mcy9vdmVybGF5ZnMvS2NvbmZpZy0xNC1cXG5mcy9vdmVybGF5ZnMvS2NvbmZpZzoxNTpjb25maWcgT1ZFUkxBWV9GU19SRURJUkVDVF9ESVJcXG5mcy9vdmVybGF5ZnMvS2NvbmZpZy0xNi1cXHRib29sIFxcXCJPdmVybGF5ZnM6IHR1cm4gb24gcmVkaXJlY3QgZGlyZWN0b3J5IGZlYXR1cmUgYnkgZGVmYXVsdFxcXCJcXG4tLVxcbmZzL292ZXJsYXlmcy9LY29uZmlnLTMwLVxcbmZzL292ZXJsYXlmcy9LY29uZmlnOjMxOmNvbmZpZyBPVkVSTEFZX0ZTX1JFRElSRUNUX0FMV0FZU19GT0xMT1dcXG5mcy9vdmVybGF5ZnMvS2NvbmZpZy0zMi1cXHRib29sIFxcXCJPdmVybGF5ZnM6IGZvbGxvdyByZWRpcmVjdHMgZXZlbiBpZiByZWRpcmVjdHMgYXJlIHR1cm5lZCBvZmZcXFwiXFxuLS1cXG5mcy9vdmVybGF5ZnMvS2NvbmZpZy00NS1cXG5mcy9vdmVybGF5ZnMvS2NvbmZpZzo0Njpjb25maWcgT1ZFUkxBWV9GU19JTkRFWFxcbmZzL292ZXJsYXlmcy9LY29uZmlnLTQ3LVxcdGJvb2wgXFxcIk92ZXJsYXlmczogdHVybiBvbiBpbm9kZXMgaW5kZXggZmVhdHVyZSBieSBkZWZhdWx0XFxcIlxcbi0tXFxuZnMvb3ZlcmxheWZzL0tjb25maWctNjQtXFxuZnMvb3ZlcmxheWZzL0tjb25maWc6NjU6Y29uZmlnIE9WRVJMQVlfRlNfTkZTX0VYUE9SVFxcbmZzL292ZXJsYXlmcy9LY29uZmlnLTY2LVxcdGJvb2wgXFxcIk92ZXJsYXlmczogdHVybiBvbiBORlMgZXhwb3J0IGZlYXR1cmUgYnkgZGVmYXVsdFxcXCJcXG4tLVxcbmZzL292ZXJsYXlmcy9LY29uZmlnLTkyLVxcbmZzL292ZXJsYXlmcy9LY29uZmlnOjkzOmNvbmZpZyBPVkVSTEFZX0ZTX1hJTk9fQVVUT1xcbmZzL292ZXJsYXlmcy9LY29uZmlnLTk0LVxcdGJvb2wgXFxcIk92ZXJsYXlmczogYXV0byBlbmFibGUgaW5vZGUgbnVtYmVyIG1hcHBpbmdcXFwiXFxuLS1cXG5mcy9vdmVybGF5ZnMvS2NvbmZpZy0xMTAtXFxuZnMvb3ZlcmxheWZzL0tjb25maWc6MTExOmNvbmZpZyBPVkVSTEFZX0ZTX01FVEFDT1BZXFxuZnMvb3ZlcmxheWZzL0tjb25maWctMTEyLVxcdGJvb2wgXFxcIk92ZXJsYXlmczogdHVybiBvbiBtZXRhZGF0YSBvbmx5IGNvcHkgdXAgZmVhdHVyZSBieSBkZWZhdWx0XFxcIlxcbi0tXFxuZnMvb3ZlcmxheWZzL0tjb25maWctMTI4LVxcbmZzL292ZXJsYXlmcy9LY29uZmlnOjEyOTpjb25maWcgT1ZFUkxBWV9GU19ERUJVR1xcbmZzL292ZXJsYXlmcy9LY29uZmlnLTEzMC1cXHRib29sIFxcXCJPdmVybGF5ZnM6IHR1cm4gb24gZXh0cmEgZGVidWdnaW5nIGNoZWNrc1xcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjNUMTI6MjU6MzMuOTgwNDIwMDk4WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjE2MTQzMzcxMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIE92ZXJsYXlGUyBDYWNoZXN0YXQgUGF0Y2gqKlxuXG5Pa2F5LCBzbyB0aGlzIHBhdGNoIGlzIGFsbCBhYm91dCBgT1ZFUkxBWV9GU2AsIHRoYXQncyB0aGUga2V5IGNvbmZpZ3VyYXRpb24gaXRlbSBoZXJlLiBUaGUgY29yZSBmdW5jdGlvbmFsaXR5IHNlZW1zIHRvIGJlIGFib3V0IGltcGxlbWVudGluZyB0aGUgYGNhY2hlc3RhdGAgZmlsZSBvcGVyYXRpb24gZm9yIG92ZXJsYXlmcy4gVGhpcyBtZWFucyBlbmFibGluZyB0aGUgYGNhY2hlc3RhdGAgc3lzdGVtIGNhbGwgdG8gYWNjdXJhdGVseSByZXBvcnQgcGFnZSBjYWNoZSBzdGF0aXN0aWNzIGZvciBmaWxlcyByZXNpZGluZyBvbiBvdmVybGF5ZnMuIFRoZSB0cmljayBpcyBmb3J3YXJkaW5nIHRoZSByZXF1ZXN0IHRvIHRoZSB1bmRlcmx5aW5nIGZpbGUsIHdoaWNoIG1ha2VzIHNlbnNlLlxuXG5JJ20gdGhpbmtpbmcgdGhpcyBpcyBhIHByZXR0eSBzaWduaWZpY2FudCBjaGFuZ2UgYmVjYXVzZSBpdCBpbnRyb2R1Y2VzIG5ldywgcG90ZW50aWFsbHkgcmVhY2hhYmxlIGNvZGUgcGF0aHMgd2l0aGluIGJvdGggdGhlIFZGUyBhbmQgb3ZlcmxheWZzIGxheWVycy4gV2Ugc2hvdWxkIHRha2UgYSBxdWljayBsb29rIHRvIHNlZSBpZiB0aGVyZSBhcmUgYW55IG90aGVyIHJlbGV2YW50IGNvbmZpZ3MsIGxldCdzIHNlZS4uLiB5ZXAsIHRoZXJlJ3MgYENBQ0hFU1RBVF9TWVNDQUxMYCBhcyB3ZWxsIGFzIGBPVkVSTEFZX0ZTYC5cblxuR2l2ZW4gdGhpcyBmdW5jdGlvbmFsIGNoYW5nZSBhbmQgdGhlIG5ldyBjb2RlIHBhdGhzLCBteSBhbmFseXNpcyB5aWVsZHMgdGhhdCB0aGlzIHBhdGNoIGlzIGRlZmluaXRlbHkgd29ydGggZnV6emluZy4gSSdsbCBmbGFnIGl0IGFzIHN1Y2guIEFuZCwgc2luY2UgdGhpcyBwYXRjaCBkZWFscyB3aXRoIGNhY2hlIHN0YXRpc3RpY3MgZm9yIG92ZXJsYWlkIGZpbGVzLCB0aGUgZm9jdXMgc3ltYm9scyBhcmUgb2J2aW91c2x5IGBvdmxfY2FjaGVzdGF0YCBhbmQgYHZmc19jYWNoZXN0YXRgLlxuXG5IZXJlJ3MgbXkgYXNzZXNzbWVudDpcblxuKiAgICoqV29ydGhGdXp6aW5nKio6IFRydWVcbiogICAqKkZvY3VzU3ltYm9scyoqOiBgW1wib3ZsX2NhY2hlc3RhdFwiLCBcInZmc19jYWNoZXN0YXRcIl1gXG4qICAgKipFbmFibGVDb25maWdzKio6IGBbXCJDQUNIRVNUQVRfU1lTQ0FMTFwiLCBcIk9WRVJMQVlfRlNcIl1gXG4qICAgKipSZWFzb25pbmcqKjogXCJUaGUgcGF0Y2ggaW1wbGVtZW50cyB0aGUgYGNhY2hlc3RhdGAgZmlsZSBvcGVyYXRpb24gZm9yIG92ZXJsYXlmcywgYWxsb3dpbmcgdGhlIGBjYWNoZXN0YXRgIHN5c2NhbGwgdG8gY29ycmVjdGx5IHF1ZXJ5IHBhZ2UgY2FjaGUgc3RhdGlzdGljcyBmb3IgZmlsZXMgb24gb3ZlcmxheWZzIGJ5IGZvcndhcmRpbmcgdGhlIHJlcXVlc3QgdG8gdGhlIHVuZGVybHlpbmcgZmlsZS4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRoYXQgaW50cm9kdWNlcyBuZXcgcmVhY2hhYmxlIGNvZGUgaW4gdGhlIFZGUyBhbmQgb3ZlcmxheWZzIGxheWVycy5cIlxuXG5cbiIsIklucHV0VG9rZW5zIjo3MzA5LCJPdXRwdXRUb2tlbnMiOjExOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIzOCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yM1QxMjoyNTo0MC4xNDE4NTU0MjlaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4MDUyNDU0OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQ0FDSEVTVEFUX1NZU0NBTExcIixcbiAgICBcIk9WRVJMQVlfRlNcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJvdmxfY2FjaGVzdGF0XCIsXG4gICAgXCJ2ZnNfY2FjaGVzdGF0XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggaW1wbGVtZW50cyB0aGUgY2FjaGVzdGF0IGZpbGUgb3BlcmF0aW9uIGZvciBvdmVybGF5ZnMsIGFsbG93aW5nIHRoZSBjYWNoZXN0YXQgc3lzY2FsbCB0byBjb3JyZWN0bHkgcXVlcnkgcGFnZSBjYWNoZSBzdGF0aXN0aWNzIGZvciBmaWxlcyBvbiBvdmVybGF5ZnMgYnkgZm9yd2FyZGluZyB0aGUgcmVxdWVzdCB0byB0aGUgdW5kZXJseWluZyBmaWxlLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdGhhdCBpbnRyb2R1Y2VzIG5ldyByZWFjaGFibGUgY29kZSBpbiB0aGUgVkZTIGFuZCBvdmVybGF5ZnMgbGF5ZXJzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkNBQ0hFU1RBVF9TWVNDQUxMXCIsXG4gICAgXCJPVkVSTEFZX0ZTXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwib3ZsX2NhY2hlc3RhdFwiLFxuICAgIFwidmZzX2NhY2hlc3RhdFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGltcGxlbWVudHMgdGhlIGNhY2hlc3RhdCBmaWxlIG9wZXJhdGlvbiBmb3Igb3ZlcmxheWZzLCBhbGxvd2luZyB0aGUgY2FjaGVzdGF0IHN5c2NhbGwgdG8gY29ycmVjdGx5IHF1ZXJ5IHBhZ2UgY2FjaGUgc3RhdGlzdGljcyBmb3IgZmlsZXMgb24gb3ZlcmxheWZzIGJ5IGZvcndhcmRpbmcgdGhlIHJlcXVlc3QgdG8gdGhlIHVuZGVybHlpbmcgZmlsZS4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRoYXQgaW50cm9kdWNlcyBuZXcgcmVhY2hhYmxlIGNvZGUgaW4gdGhlIFZGUyBhbmQgb3ZlcmxheWZzIGxheWVycy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowtdf5z[0].run-triage(0) Phase: Succeeded StartedAt: 2026-06-23 12:14:50 +0000 UTC FinishedAt: 2026-06-23 12:25:42 +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": "1dc18801be29bc54709aa355b8acd80e183b03cd", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "CACHESTAT_SYSCALL", "OVERLAY_FS" ], "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": "1dc18801be29bc54709aa355b8acd80e183b03cd", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "CACHESTAT_SYSCALL", "OVERLAY_FS" ], "series_id": "ef226665-ba0a-4e7e-a8ab-545482a1e2da" }, "track": "KASAN", "fuzz": { "focus": [ "fs" ], "focus_symbols": [ "ovl_cachestat", "vfs_cachestat" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db", "https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db" ], "skip_cover_check": true, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzIzIDEyOjI1PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0NBQ0hFU1RBVF9TWVNDQUxMJiMzNDssCiAgICAmIzM0O09WRVJMQVlfRlMmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtvdmxfY2FjaGVzdGF0JiMzNDssCiAgICAmIzM0O3Zmc19jYWNoZXN0YXQmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggaW1wbGVtZW50cyB0aGUgY2FjaGVzdGF0IGZpbGUgb3BlcmF0aW9uIGZvciBvdmVybGF5ZnMsIGFsbG93aW5nIHRoZSBjYWNoZXN0YXQgc3lzY2FsbCB0byBjb3JyZWN0bHkgcXVlcnkgcGFnZSBjYWNoZSBzdGF0aXN0aWNzIGZvciBmaWxlcyBvbiBvdmVybGF5ZnMgYnkgZm9yd2FyZGluZyB0aGUgcmVxdWVzdCB0byB0aGUgdW5kZXJseWluZyBmaWxlLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdGhhdCBpbnRyb2R1Y2VzIG5ldyByZWFjaGFibGUgY29kZSBpbiB0aGUgVkZTIGFuZCBvdmVybGF5ZnMgbGF5ZXJzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzIzIDEyOjI1PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgMGJjNGFjMzI5YjAzYWRlNzA4ZWZiMzk3OWU1NGE5MjQyYjg5MmMyOVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUdWUgSnVuIDIzIDEyOjI1OjEzIDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2ZzL292ZXJsYXlmcy9maWxlLmMgYi9mcy9vdmVybGF5ZnMvZmlsZS5jXG5pbmRleCAyN2NjMDc3MzhmMzNiZi4uYTdlMjUyYTkxZWE0MzUgMTAwNjQ0XG4tLS0gYS9mcy9vdmVybGF5ZnMvZmlsZS5jXG4mIzQzOyYjNDM7JiM0MzsgYi9mcy9vdmVybGF5ZnMvZmlsZS5jXG5AQCAtNTE4LDYgJiM0Mzs1MTgsMjEgQEAgc3RhdGljIGludCBvdmxfZmFkdmlzZShzdHJ1Y3QgZmlsZSAqZmlsZSwgbG9mZl90IG9mZnNldCwgbG9mZl90IGxlbiwgaW50IGFkdmljZSlcbiBcdFx0cmV0dXJuIHZmc19mYWR2aXNlKHJlYWxmaWxlLCBvZmZzZXQsIGxlbiwgYWR2aWNlKTtcbiB9XG4gXG4mIzQzOyNpZmRlZiBDT05GSUdfQ0FDSEVTVEFUX1NZU0NBTExcbiYjNDM7c3RhdGljIGludCBvdmxfY2FjaGVzdGF0KHN0cnVjdCBmaWxlICpmaWxlLCBzdHJ1Y3QgY2FjaGVzdGF0X3JhbmdlICpjc3IsXG4mIzQzO1x0XHRcdCBzdHJ1Y3QgY2FjaGVzdGF0ICpjcylcbiYjNDM7e1xuJiM0MztcdHN0cnVjdCBmaWxlICpyZWFsZmlsZTtcbiYjNDM7XG4mIzQzO1x0cmVhbGZpbGUgPSBvdmxfcmVhbF9maWxlKGZpbGUpO1xuJiM0MztcdGlmIChJU19FUlIocmVhbGZpbGUpKVxuJiM0MztcdFx0cmV0dXJuIFBUUl9FUlIocmVhbGZpbGUpO1xuJiM0MztcbiYjNDM7XHR3aXRoX292bF9jcmVkcyhmaWxlX2lub2RlKGZpbGUpLVx1MDAzZWlfc2IpXG4mIzQzO1x0XHRyZXR1cm4gdmZzX2NhY2hlc3RhdChyZWFsZmlsZSwgY3NyLCBjcyk7XG4mIzQzO31cbiYjNDM7I2VuZGlmXG4mIzQzO1xuIGVudW0gb3ZsX2NvcHlvcCB7XG4gXHRPVkxfQ09QWSxcbiBcdE9WTF9DTE9ORSxcbkBAIC02NDIsNiAmIzQzOzY1Nyw5IEBAIGNvbnN0IHN0cnVjdCBmaWxlX29wZXJhdGlvbnMgb3ZsX2ZpbGVfb3BlcmF0aW9ucyA9IHtcbiBcdC5tbWFwXHRcdD0gb3ZsX21tYXAsXG4gXHQuZmFsbG9jYXRlXHQ9IG92bF9mYWxsb2NhdGUsXG4gXHQuZmFkdmlzZVx0PSBvdmxfZmFkdmlzZSxcbiYjNDM7I2lmZGVmIENPTkZJR19DQUNIRVNUQVRfU1lTQ0FMTFxuJiM0MztcdC5jYWNoZXN0YXRcdD0gb3ZsX2NhY2hlc3RhdCxcbiYjNDM7I2VuZGlmXG4gXHQuZmx1c2hcdFx0PSBvdmxfZmx1c2gsXG4gXHQuc3BsaWNlX3JlYWQgICAgPSBvdmxfc3BsaWNlX3JlYWQsXG4gXHQuc3BsaWNlX3dyaXRlICAgPSBvdmxfc3BsaWNlX3dyaXRlLFxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvZnMuaCBiL2luY2x1ZGUvbGludXgvZnMuaFxuaW5kZXggNmRhNDQ1NzNjZTQ1MDguLjk2NmI2NTY0NzA3ZTQ4IDEwMDY0NFxuLS0tIGEvaW5jbHVkZS9saW51eC9mcy5oXG4mIzQzOyYjNDM7JiM0MzsgYi9pbmNsdWRlL2xpbnV4L2ZzLmhcbkBAIC01Myw2ICYjNDM7NTMsOCBAQFxuIFxuIHN0cnVjdCBiZGlfd3JpdGViYWNrO1xuIHN0cnVjdCBiaW87XG4mIzQzO3N0cnVjdCBjYWNoZXN0YXRfcmFuZ2U7XG4mIzQzO3N0cnVjdCBjYWNoZXN0YXQ7XG4gc3RydWN0IGlvX2NvbXBfYmF0Y2g7XG4gc3RydWN0IGZpZW1hcF9leHRlbnRfaW5mbztcbiBzdHJ1Y3Qga2lvY2I7XG5AQCAtMTk2Myw2ICYjNDM7MTk2NSw4IEBAIHN0cnVjdCBmaWxlX29wZXJhdGlvbnMge1xuIFx0XHRcdFx0ICAgc3RydWN0IGZpbGUgKmZpbGVfb3V0LCBsb2ZmX3QgcG9zX291dCxcbiBcdFx0XHRcdCAgIGxvZmZfdCBsZW4sIHVuc2lnbmVkIGludCByZW1hcF9mbGFncyk7XG4gXHRpbnQgKCpmYWR2aXNlKShzdHJ1Y3QgZmlsZSAqLCBsb2ZmX3QsIGxvZmZfdCwgaW50KTtcbiYjNDM7XHRpbnQgKCpjYWNoZXN0YXQpKHN0cnVjdCBmaWxlICpmaWxlLCBzdHJ1Y3QgY2FjaGVzdGF0X3JhbmdlICpjc3IsXG4mIzQzO1x0XHRcdCBzdHJ1Y3QgY2FjaGVzdGF0ICpjcyk7XG4gXHRpbnQgKCp1cmluZ19jbWQpKHN0cnVjdCBpb191cmluZ19jbWQgKmlvdWNtZCwgdW5zaWduZWQgaW50IGlzc3VlX2ZsYWdzKTtcbiBcdGludCAoKnVyaW5nX2NtZF9pb3BvbGwpKHN0cnVjdCBpb191cmluZ19jbWQgKiwgc3RydWN0IGlvX2NvbXBfYmF0Y2ggKixcbiBcdFx0XHRcdHVuc2lnbmVkIGludCBwb2xsX2ZsYWdzKTtcbkBAIC0zNjMzLDYgJiM0MzszNjM3LDEyIEBAIGV4dGVybiBpbnQgdmZzX2ZhZHZpc2Uoc3RydWN0IGZpbGUgKmZpbGUsIGxvZmZfdCBvZmZzZXQsIGxvZmZfdCBsZW4sXG4gZXh0ZXJuIGludCBnZW5lcmljX2ZhZHZpc2Uoc3RydWN0IGZpbGUgKmZpbGUsIGxvZmZfdCBvZmZzZXQsIGxvZmZfdCBsZW4sXG4gXHRcdFx0ICAgaW50IGFkdmljZSk7XG4gXG4mIzQzOy8qIG1tL2ZpbGVtYXAuYyAqL1xuJiM0MzsjaWZkZWYgQ09ORklHX0NBQ0hFU1RBVF9TWVNDQUxMXG4mIzQzO2ludCB2ZnNfY2FjaGVzdGF0KHN0cnVjdCBmaWxlICpmaWxlLCBzdHJ1Y3QgY2FjaGVzdGF0X3JhbmdlICpjc3IsXG4mIzQzO1x0XHQgIHN0cnVjdCBjYWNoZXN0YXQgKmNzKTtcbiYjNDM7I2VuZGlmXG4mIzQzO1xuIHN0YXRpYyBpbmxpbmUgYm9vbCB2ZnNfZW1wdHlfcGF0aChpbnQgZGZkLCBjb25zdCBjaGFyIF9fdXNlciAqcGF0aClcbiB7XG4gXHRjaGFyIGM7XG5kaWZmIC0tZ2l0IGEvbW0vZmlsZW1hcC5jIGIvbW0vZmlsZW1hcC5jXG5pbmRleCA3ZTQ2N2M4MWQyMTM4OS4uOTA2MDhjNmIxY2U1NTEgMTAwNjQ0XG4tLS0gYS9tbS9maWxlbWFwLmNcbiYjNDM7JiM0MzsmIzQzOyBiL21tL2ZpbGVtYXAuY1xuQEAgLTQ3MTQsNiAmIzQzOzQ3MTQsMzcgQEAgc3RhdGljIGlubGluZSBib29sIGNhbl9kb19jYWNoZXN0YXQoc3RydWN0IGZpbGUgKmYpXG4gXHRyZXR1cm4gZmlsZV9wZXJtaXNzaW9uKGYsIE1BWV9XUklURSkgPT0gMDtcbiB9XG4gXG4mIzQzOy8qKlxuJiM0MzsgKiB2ZnNfY2FjaGVzdGF0KCkgLSBxdWVyeSBwYWdlIGNhY2hlIHN0YXRpc3RpY3Mgb2YgYSBmaWxlXG4mIzQzOyAqIEBmaWxlOlx0ZmlsZSB0byBxdWVyeVxuJiM0MzsgKiBAY3NyOlx0Ynl0ZSByYW5nZSB0byBxdWVyeVxuJiM0MzsgKiBAY3M6XHRcdG91dHB1dCBzdGF0aXN0aWNzXG4mIzQzOyAqXG4mIzQzOyAqIENvbXB1dGUgdGhlIHBhZ2UgY2FjaGUgc3RhdGlzdGljcyBmb3IgdGhlIGdpdmVuIGJ5dGUgcmFuZ2Ugb2YgQGZpbGUuXG4mIzQzOyAqXG4mIzQzOyAqIFN0YWNrYWJsZSBmaWxlc3lzdGVtcyAoZS5nLiBvdmVybGF5ZnMpIGtlZXAgdGhlIGRhdGEgcGFnZXMgaW4gdGhlXG4mIzQzOyAqIG1hcHBpbmcgb2YgYW4gdW5kZXJseWluZyBmaWxlIHJhdGhlciB0aGFuIGluIEBmaWxlLVx1MDAzZWZfbWFwcGluZy4gU3VjaFxuJiM0MzsgKiBmaWxlc3lzdGVtcyBwcm92aWRlIGEgLVx1MDAzZWNhY2hlc3RhdCgpIGZpbGUgb3BlcmF0aW9uIHRoYXQgZm9yd2FyZHMgdGhlXG4mIzQzOyAqIHF1ZXJ5IHRvIHRoZSBmaWxlIHRoYXQgYWN0dWFsbHkgb3ducyB0aGUgcGFnZSBjYWNoZTsgb3RoZXJ3aXNlIHRoZVxuJiM0MzsgKiBzdGF0aXN0aWNzIGFyZSBjb21wdXRlZCBmcm9tIEBmaWxlLVx1MDAzZWZfbWFwcGluZyBkaXJlY3RseS5cbiYjNDM7ICovXG4mIzQzO2ludCB2ZnNfY2FjaGVzdGF0KHN0cnVjdCBmaWxlICpmaWxlLCBzdHJ1Y3QgY2FjaGVzdGF0X3JhbmdlICpjc3IsXG4mIzQzO1x0XHQgIHN0cnVjdCBjYWNoZXN0YXQgKmNzKVxuJiM0Mzt7XG4mIzQzO1x0cGdvZmZfdCBmaXJzdF9pbmRleCwgbGFzdF9pbmRleDtcbiYjNDM7XG4mIzQzO1x0aWYgKGZpbGUtXHUwMDNlZl9vcC1cdTAwM2VjYWNoZXN0YXQpXG4mIzQzO1x0XHRyZXR1cm4gZmlsZS1cdTAwM2VmX29wLVx1MDAzZWNhY2hlc3RhdChmaWxlLCBjc3IsIGNzKTtcbiYjNDM7XG4mIzQzO1x0Zmlyc3RfaW5kZXggPSBjc3ItXHUwMDNlb2ZmIFx1MDAzZVx1MDAzZSBQQUdFX1NISUZUO1xuJiM0MztcdGxhc3RfaW5kZXggPVxuJiM0MztcdFx0Y3NyLVx1MDAzZWxlbiA9PSAwID8gVUxPTkdfTUFYIDogKGNzci1cdTAwM2VvZmYgJiM0MzsgY3NyLVx1MDAzZWxlbiAtIDEpIFx1MDAzZVx1MDAzZSBQQUdFX1NISUZUO1xuJiM0MztcdG1lbXNldChjcywgMCwgc2l6ZW9mKHN0cnVjdCBjYWNoZXN0YXQpKTtcbiYjNDM7XHRmaWxlbWFwX2NhY2hlc3RhdChmaWxlLVx1MDAzZWZfbWFwcGluZywgZmlyc3RfaW5kZXgsIGxhc3RfaW5kZXgsIGNzKTtcbiYjNDM7XHRyZXR1cm4gMDtcbiYjNDM7fVxuJiM0MztFWFBPUlRfU1lNQk9MKHZmc19jYWNoZXN0YXQpO1xuJiM0MztcbiAvKlxuICAqIFRoZSBjYWNoZXN0YXQoMikgc3lzdGVtIGNhbGwuXG4gICpcbkBAIC00NzUzLDEwICYjNDM7NDc4NCw5IEBAIFNZU0NBTExfREVGSU5FNChjYWNoZXN0YXQsIHVuc2lnbmVkIGludCwgZmQsXG4gXHRcdHN0cnVjdCBjYWNoZXN0YXQgX191c2VyICosIGNzdGF0LCB1bnNpZ25lZCBpbnQsIGZsYWdzKVxuIHtcbiBcdENMQVNTKGZkLCBmKShmZCk7XG4tXHRzdHJ1Y3QgYWRkcmVzc19zcGFjZSAqbWFwcGluZztcbiBcdHN0cnVjdCBjYWNoZXN0YXRfcmFuZ2UgY3NyO1xuIFx0c3RydWN0IGNhY2hlc3RhdCBjcztcbi1cdHBnb2ZmX3QgZmlyc3RfaW5kZXgsIGxhc3RfaW5kZXg7XG4mIzQzO1x0aW50IHJldDtcbiBcbiBcdGlmIChmZF9lbXB0eShmKSlcbiBcdFx0cmV0dXJuIC1FQkFERjtcbkBAIC00Nzc1LDEyICYjNDM7NDgwNSw5IEBAIFNZU0NBTExfREVGSU5FNChjYWNoZXN0YXQsIHVuc2lnbmVkIGludCwgZmQsXG4gXHRpZiAoZmxhZ3MgIT0gMClcbiBcdFx0cmV0dXJuIC1FSU5WQUw7XG4gXG4tXHRmaXJzdF9pbmRleCA9IGNzci5vZmYgXHUwMDNlXHUwMDNlIFBBR0VfU0hJRlQ7XG4tXHRsYXN0X2luZGV4ID1cbi1cdFx0Y3NyLmxlbiA9PSAwID8gVUxPTkdfTUFYIDogKGNzci5vZmYgJiM0MzsgY3NyLmxlbiAtIDEpIFx1MDAzZVx1MDAzZSBQQUdFX1NISUZUO1xuLVx0bWVtc2V0KFx1MDAyNmNzLCAwLCBzaXplb2Yoc3RydWN0IGNhY2hlc3RhdCkpO1xuLVx0bWFwcGluZyA9IGZkX2ZpbGUoZiktXHUwMDNlZl9tYXBwaW5nO1xuLVx0ZmlsZW1hcF9jYWNoZXN0YXQobWFwcGluZywgZmlyc3RfaW5kZXgsIGxhc3RfaW5kZXgsIFx1MDAyNmNzKTtcbiYjNDM7XHRyZXQgPSB2ZnNfY2FjaGVzdGF0KGZkX2ZpbGUoZiksIFx1MDAyNmNzciwgXHUwMDI2Y3MpO1xuJiM0MztcdGlmIChyZXQpXG4mIzQzO1x0XHRyZXR1cm4gcmV0O1xuIFxuIFx0aWYgKGNvcHlfdG9fdXNlcihjc3RhdCwgXHUwMDI2Y3MsIHNpemVvZihzdHJ1Y3QgY2FjaGVzdGF0KSkpXG4gXHRcdHJldHVybiAtRUZBVUxUO1xuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2NhY2hlc3RhdC90ZXN0X2NhY2hlc3RhdC5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvY2FjaGVzdGF0L3Rlc3RfY2FjaGVzdGF0LmNcbmluZGV4IDU0MmNkMDljYjQ0MzRlLi4xNjYyZDk4MTdjNTBiZiAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2NhY2hlc3RhdC90ZXN0X2NhY2hlc3RhdC5jXG4mIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9jYWNoZXN0YXQvdGVzdF9jYWNoZXN0YXQuY1xuQEAgLTQsMjEgJiM0Mzs0LDI1IEBAXG4gXG4gI2luY2x1ZGUgXHUwMDNjc3RkaW8uaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY3N0ZGJvb2wuaFx1MDAzZVxuJiM0MzsjaW5jbHVkZSBcdTAwM2NzdGRsaWIuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L2tlcm5lbC5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvbWFnaWMuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L21tYW4uaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY3N5cy9tbWFuLmhcdTAwM2VcbiYjNDM7I2luY2x1ZGUgXHUwMDNjc3lzL21vdW50LmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NzeXMvc2htLmhcdTAwM2VcbiYjNDM7I2luY2x1ZGUgXHUwMDNjc3lzL3N0YXQuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY3N5cy9zeXNjYWxsLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NzeXMvdmZzLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2N1bmlzdGQuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY3N0cmluZy5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjZmNudGwuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2Vycm5vLmhcdTAwM2VcbiYjNDM7I2luY2x1ZGUgXHUwMDNjbGltaXRzLmhcdTAwM2VcbiBcbiAjaW5jbHVkZSBcJiMzNDtrc2VsZnRlc3QuaFwmIzM0O1xuIFxuLSNkZWZpbmUgTlJfVEVTVFNcdDlcbiYjNDM7I2RlZmluZSBOUl9URVNUU1x0MTFcbiBcbiBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IGRldl9maWxlc1tdID0ge1xuIFx0XCYjMzQ7L2Rldi96ZXJvXCYjMzQ7LCBcJiMzNDsvZGV2L251bGxcJiMzNDssIFwmIzM0Oy9kZXYvdXJhbmRvbVwmIzM0OyxcbkBAIC0yOTQsNiAmIzQzOzI5OCw2MiBAQCBib29sIHJ1bl9jYWNoZXN0YXRfdGVzdChlbnVtIGZpbGVfdHlwZSB0eXBlKVxuIFx0cmV0dXJuIHJldDtcbiB9XG4gXG4mIzQzOy8qXG4mIzQzOyAqIFNldCB1cCBhbiBvdmVybGF5ZnMgbW91bnQgYW5kIHJ1biBjYWNoZXN0YXQgb24gYSBmcmVzaGx5IGNyZWF0ZWQgZmlsZSBpbiB0aGVcbiYjNDM7ICogbWVyZ2VkIGRpcmVjdG9yeS4gT3ZlcmxheWZzIGZvcndhcmRzIGRhdGEgSS9PIHRvIHRoZSB1bmRlcmx5aW5nICh1cHBlcilcbiYjNDM7ICogaW5vZGUsIHNvIHRoZSBwYWdlIGNhY2hlIGxpdmVzIHRoZXJlIGFuZCBub3QgaW4gdGhlIG92ZXJsYXkgaW5vZGUmIzM5O3MgbWFwcGluZy5cbiYjNDM7ICogVGhpcyBpcyBhIHJlZ3Jlc3Npb24gdGVzdCBmb3IgY2FjaGVzdGF0IHJldHVybmluZyBhbGwgemVyb2VzIG9uIG92ZXJsYXlmcy5cbiYjNDM7ICovXG4mIzQzO3N0YXRpYyBpbnQgcnVuX2NhY2hlc3RhdF9vdmVybGF5ZnNfdGVzdCh2b2lkKVxuJiM0Mzt7XG4mIzQzO1x0Y2hhciB0bXBsW10gPSBcJiMzNDsvdG1wL2NhY2hlc3RhdF9vdmwuWFhYWFhYXCYjMzQ7O1xuJiM0MztcdGNoYXIgbG93ZXJbUEFUSF9NQVhdLCB1cHBlcltQQVRIX01BWF0sIHdvcmtbUEFUSF9NQVhdO1xuJiM0MztcdGNoYXIgbWVyZ2VkW1BBVEhfTUFYXSwgb3B0c1s0ICogUEFUSF9NQVhdLCBmaWxlW1BBVEhfTUFYXTtcbiYjNDM7XHRjaGFyICpiYXNlO1xuJiM0MztcdGludCByZXQ7XG4mIzQzO1xuJiM0MztcdGJhc2UgPSBta2R0ZW1wKHRtcGwpO1xuJiM0MztcdGlmICghYmFzZSkge1xuJiM0MztcdFx0a3NmdF9wcmludF9tc2coXCYjMzQ7VW5hYmxlIHRvIGNyZWF0ZSBvdmVybGF5ZnMgYmFzZSBkaXI6ICVzXFxuXCYjMzQ7LFxuJiM0MztcdFx0XHQgICAgICAgc3RyZXJyb3IoZXJybm8pKTtcbiYjNDM7XHRcdHJldHVybiBLU0ZUX0ZBSUw7XG4mIzQzO1x0fVxuJiM0MztcbiYjNDM7XHRzbnByaW50Zihsb3dlciwgc2l6ZW9mKGxvd2VyKSwgXCYjMzQ7JXMvbG93ZXJcJiMzNDssIGJhc2UpO1xuJiM0MztcdHNucHJpbnRmKHVwcGVyLCBzaXplb2YodXBwZXIpLCBcJiMzNDslcy91cHBlclwmIzM0OywgYmFzZSk7XG4mIzQzO1x0c25wcmludGYod29yaywgc2l6ZW9mKHdvcmspLCBcJiMzNDslcy93b3JrXCYjMzQ7LCBiYXNlKTtcbiYjNDM7XHRzbnByaW50ZihtZXJnZWQsIHNpemVvZihtZXJnZWQpLCBcJiMzNDslcy9tZXJnZWRcJiMzNDssIGJhc2UpO1xuJiM0MztcbiYjNDM7XHRpZiAobWtkaXIobG93ZXIsIDA3NTUpIHx8IG1rZGlyKHVwcGVyLCAwNzU1KSB8fFxuJiM0MztcdCAgICBta2Rpcih3b3JrLCAwNzU1KSB8fCBta2RpcihtZXJnZWQsIDA3NTUpKSB7XG4mIzQzO1x0XHRrc2Z0X3ByaW50X21zZyhcJiMzNDtVbmFibGUgdG8gY3JlYXRlIG92ZXJsYXlmcyBkaXJzOiAlc1xcblwmIzM0OyxcbiYjNDM7XHRcdFx0ICAgICAgIHN0cmVycm9yKGVycm5vKSk7XG4mIzQzO1x0XHRyZXQgPSBLU0ZUX0ZBSUw7XG4mIzQzO1x0XHRnb3RvIGNsZWFudXA7XG4mIzQzO1x0fVxuJiM0MztcbiYjNDM7XHRzbnByaW50ZihvcHRzLCBzaXplb2Yob3B0cyksIFwmIzM0O2xvd2VyZGlyPSVzLHVwcGVyZGlyPSVzLHdvcmtkaXI9JXNcJiMzNDssXG4mIzQzO1x0XHQgbG93ZXIsIHVwcGVyLCB3b3JrKTtcbiYjNDM7XG4mIzQzO1x0aWYgKG1vdW50KFwmIzM0O292ZXJsYXlcJiMzNDssIG1lcmdlZCwgXCYjMzQ7b3ZlcmxheVwmIzM0OywgMCwgb3B0cykpIHtcbiYjNDM7XHRcdGtzZnRfcHJpbnRfbXNnKFwmIzM0O1VuYWJsZSB0byBtb3VudCBvdmVybGF5ZnMgKG5lZWQgcm9vdD8pOiAlc1xcblwmIzM0OyxcbiYjNDM7XHRcdFx0ICAgICAgIHN0cmVycm9yKGVycm5vKSk7XG4mIzQzO1x0XHRyZXQgPSBLU0ZUX1NLSVA7XG4mIzQzO1x0XHRnb3RvIGNsZWFudXA7XG4mIzQzO1x0fVxuJiM0MztcbiYjNDM7XHRzbnByaW50ZihmaWxlLCBzaXplb2YoZmlsZSksIFwmIzM0OyVzL21lcmdlZC9jYWNoZXN0YXRcJiMzNDssIGJhc2UpO1xuJiM0MztcdHJldCA9IHRlc3RfY2FjaGVzdGF0KGZpbGUsIHRydWUsIHRydWUsIGZhbHNlLCA0LCBPX0NSRUFUIHwgT19SRFdSLCAwNjAwKTtcbiYjNDM7XG4mIzQzO1x0dW1vdW50KG1lcmdlZCk7XG4mIzQzO2NsZWFudXA6XG4mIzQzO1x0LyogQmVzdC1lZmZvcnQgcmVjdXJzaXZlIGNsZWFudXAgb2YgdGhlIHRlbXBvcmFyeSB0cmVlLiAqL1xuJiM0MztcdHNucHJpbnRmKG9wdHMsIHNpemVvZihvcHRzKSwgXCYjMzQ7cm0gLXJmICVzXCYjMzQ7LCBiYXNlKTtcbiYjNDM7XHRpZiAoc3lzdGVtKG9wdHMpKVxuJiM0MztcdFx0a3NmdF9wcmludF9tc2coXCYjMzQ7VW5hYmxlIHRvIGNsZWFuIHVwICVzXFxuXCYjMzQ7LCBiYXNlKTtcbiYjNDM7XHRyZXR1cm4gcmV0O1xuJiM0Mzt9XG4mIzQzO1xuIGludCBtYWluKHZvaWQpXG4ge1xuIFx0aW50IHJldDtcbkBAIC0zNjEsNSAmIzQzOzQyMSwxOCBAQCBpbnQgbWFpbih2b2lkKVxuIFx0XHRrc2Z0X3Rlc3RfcmVzdWx0X2ZhaWwoXCYjMzQ7Y2FjaGVzdGF0IGZhaWxzIHdpdGggYSBtbWFwIGZpbGVcXG5cJiMzNDspO1xuIFx0XHRyZXQgPSAxO1xuIFx0fVxuJiM0MztcbiYjNDM7XHRzd2l0Y2ggKHJ1bl9jYWNoZXN0YXRfb3ZlcmxheWZzX3Rlc3QoKSkge1xuJiM0MztcdGNhc2UgS1NGVF9GQUlMOlxuJiM0MztcdFx0a3NmdF90ZXN0X3Jlc3VsdF9mYWlsKFwmIzM0O2NhY2hlc3RhdCBmYWlscyB3aXRoIGFuIG92ZXJsYXlmcyBmaWxlXFxuXCYjMzQ7KTtcbiYjNDM7XHRcdHJldCA9IDE7XG4mIzQzO1x0XHRicmVhaztcbiYjNDM7XHRjYXNlIEtTRlRfUEFTUzpcbiYjNDM7XHRcdGtzZnRfdGVzdF9yZXN1bHRfcGFzcyhcJiMzNDtjYWNoZXN0YXQgd29ya3Mgd2l0aCBhbiBvdmVybGF5ZnMgZmlsZVxcblwmIzM0Oyk7XG4mIzQzO1x0XHRicmVhaztcbiYjNDM7XHRjYXNlIEtTRlRfU0tJUDpcbiYjNDM7XHRcdGtzZnRfdGVzdF9yZXN1bHRfc2tpcChcJiMzNDtvdmVybGF5ZnMgbm90IGF2YWlsYWJsZVxcblwmIzM0Oyk7XG4mIzQzO1x0XHRicmVhaztcbiYjNDM7XHR9XG4gXHRyZXR1cm4gcmV0O1xuIH1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yMyAxMjoyNTwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtDQUNIRVNUQVRfU1lTQ0FMTCYjMzQ7LAogICAgJiMzNDtPVkVSTEFZX0ZTJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7b3ZsX2NhY2hlc3RhdCYjMzQ7LAogICAgJiMzNDt2ZnNfY2FjaGVzdGF0JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGltcGxlbWVudHMgdGhlIGNhY2hlc3RhdCBmaWxlIG9wZXJhdGlvbiBmb3Igb3ZlcmxheWZzLCBhbGxvd2luZyB0aGUgY2FjaGVzdGF0IHN5c2NhbGwgdG8gY29ycmVjdGx5IHF1ZXJ5IHBhZ2UgY2FjaGUgc3RhdGlzdGljcyBmb3IgZmlsZXMgb24gb3ZlcmxheWZzIGJ5IGZvcndhcmRpbmcgdGhlIHJlcXVlc3QgdG8gdGhlIHVuZGVybHlpbmcgZmlsZS4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRoYXQgaW50cm9kdWNlcyBuZXcgcmVhY2hhYmxlIGNvZGUgaW4gdGhlIFZGUyBhbmQgb3ZlcmxheWZzIGxheWVycy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLApldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXQKICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LAogICBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgMGJjNGFjMzI5YjAzYWRlNzA4ZWZiMzk3OWU1NGE5MjQyYjg5MmMyOQpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBUdWUgSnVuIDIzIDEyOjI1OjEzIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZnMvb3ZlcmxheWZzL2ZpbGUuYyBiL2ZzL292ZXJsYXlmcy9maWxlLmMKaW5kZXggMjdjYzA3NzM4ZjMzYmYuLmE3ZTI1MmE5MWVhNDM1IDEwMDY0NAotLS0gYS9mcy9vdmVybGF5ZnMvZmlsZS5jCiYjNDM7JiM0MzsmIzQzOyBiL2ZzL292ZXJsYXlmcy9maWxlLmMKQEAgLTUxOCw2ICYjNDM7NTE4LDIxIEBAIHN0YXRpYyBpbnQgb3ZsX2ZhZHZpc2Uoc3RydWN0IGZpbGUgKmZpbGUsIGxvZmZfdCBvZmZzZXQsIGxvZmZfdCBsZW4sIGludCBhZHZpY2UpCiAJCXJldHVybiB2ZnNfZmFkdmlzZShyZWFsZmlsZSwgb2Zmc2V0LCBsZW4sIGFkdmljZSk7CiB9CiAKJiM0MzsjaWZkZWYgQ09ORklHX0NBQ0hFU1RBVF9TWVNDQUxMCiYjNDM7c3RhdGljIGludCBvdmxfY2FjaGVzdGF0KHN0cnVjdCBmaWxlICpmaWxlLCBzdHJ1Y3QgY2FjaGVzdGF0X3JhbmdlICpjc3IsCiYjNDM7CQkJIHN0cnVjdCBjYWNoZXN0YXQgKmNzKQomIzQzO3sKJiM0MzsJc3RydWN0IGZpbGUgKnJlYWxmaWxlOwomIzQzOwomIzQzOwlyZWFsZmlsZSA9IG92bF9yZWFsX2ZpbGUoZmlsZSk7CiYjNDM7CWlmIChJU19FUlIocmVhbGZpbGUpKQomIzQzOwkJcmV0dXJuIFBUUl9FUlIocmVhbGZpbGUpOwomIzQzOwomIzQzOwl3aXRoX292bF9jcmVkcyhmaWxlX2lub2RlKGZpbGUpLSZndDtpX3NiKQomIzQzOwkJcmV0dXJuIHZmc19jYWNoZXN0YXQocmVhbGZpbGUsIGNzciwgY3MpOwomIzQzO30KJiM0MzsjZW5kaWYKJiM0MzsKIGVudW0gb3ZsX2NvcHlvcCB7CiAJT1ZMX0NPUFksCiAJT1ZMX0NMT05FLApAQCAtNjQyLDYgJiM0Mzs2NTcsOSBAQCBjb25zdCBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIG92bF9maWxlX29wZXJhdGlvbnMgPSB7CiAJLm1tYXAJCT0gb3ZsX21tYXAsCiAJLmZhbGxvY2F0ZQk9IG92bF9mYWxsb2NhdGUsCiAJLmZhZHZpc2UJPSBvdmxfZmFkdmlzZSwKJiM0MzsjaWZkZWYgQ09ORklHX0NBQ0hFU1RBVF9TWVNDQUxMCiYjNDM7CS5jYWNoZXN0YXQJPSBvdmxfY2FjaGVzdGF0LAomIzQzOyNlbmRpZgogCS5mbHVzaAkJPSBvdmxfZmx1c2gsCiAJLnNwbGljZV9yZWFkICAgID0gb3ZsX3NwbGljZV9yZWFkLAogCS5zcGxpY2Vfd3JpdGUgICA9IG92bF9zcGxpY2Vfd3JpdGUsCmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L2ZzLmggYi9pbmNsdWRlL2xpbnV4L2ZzLmgKaW5kZXggNmRhNDQ1NzNjZTQ1MDguLjk2NmI2NTY0NzA3ZTQ4IDEwMDY0NAotLS0gYS9pbmNsdWRlL2xpbnV4L2ZzLmgKJiM0MzsmIzQzOyYjNDM7IGIvaW5jbHVkZS9saW51eC9mcy5oCkBAIC01Myw2ICYjNDM7NTMsOCBAQAogCiBzdHJ1Y3QgYmRpX3dyaXRlYmFjazsKIHN0cnVjdCBiaW87CiYjNDM7c3RydWN0IGNhY2hlc3RhdF9yYW5nZTsKJiM0MztzdHJ1Y3QgY2FjaGVzdGF0Owogc3RydWN0IGlvX2NvbXBfYmF0Y2g7CiBzdHJ1Y3QgZmllbWFwX2V4dGVudF9pbmZvOwogc3RydWN0IGtpb2NiOwpAQCAtMTk2Myw2ICYjNDM7MTk2NSw4IEBAIHN0cnVjdCBmaWxlX29wZXJhdGlvbnMgewogCQkJCSAgIHN0cnVjdCBmaWxlICpmaWxlX291dCwgbG9mZl90IHBvc19vdXQsCiAJCQkJICAgbG9mZl90IGxlbiwgdW5zaWduZWQgaW50IHJlbWFwX2ZsYWdzKTsKIAlpbnQgKCpmYWR2aXNlKShzdHJ1Y3QgZmlsZSAqLCBsb2ZmX3QsIGxvZmZfdCwgaW50KTsKJiM0MzsJaW50ICgqY2FjaGVzdGF0KShzdHJ1Y3QgZmlsZSAqZmlsZSwgc3RydWN0IGNhY2hlc3RhdF9yYW5nZSAqY3NyLAomIzQzOwkJCSBzdHJ1Y3QgY2FjaGVzdGF0ICpjcyk7CiAJaW50ICgqdXJpbmdfY21kKShzdHJ1Y3QgaW9fdXJpbmdfY21kICppb3VjbWQsIHVuc2lnbmVkIGludCBpc3N1ZV9mbGFncyk7CiAJaW50ICgqdXJpbmdfY21kX2lvcG9sbCkoc3RydWN0IGlvX3VyaW5nX2NtZCAqLCBzdHJ1Y3QgaW9fY29tcF9iYXRjaCAqLAogCQkJCXVuc2lnbmVkIGludCBwb2xsX2ZsYWdzKTsKQEAgLTM2MzMsNiAmIzQzOzM2MzcsMTIgQEAgZXh0ZXJuIGludCB2ZnNfZmFkdmlzZShzdHJ1Y3QgZmlsZSAqZmlsZSwgbG9mZl90IG9mZnNldCwgbG9mZl90IGxlbiwKIGV4dGVybiBpbnQgZ2VuZXJpY19mYWR2aXNlKHN0cnVjdCBmaWxlICpmaWxlLCBsb2ZmX3Qgb2Zmc2V0LCBsb2ZmX3QgbGVuLAogCQkJICAgaW50IGFkdmljZSk7CiAKJiM0MzsvKiBtbS9maWxlbWFwLmMgKi8KJiM0MzsjaWZkZWYgQ09ORklHX0NBQ0hFU1RBVF9TWVNDQUxMCiYjNDM7aW50IHZmc19jYWNoZXN0YXQoc3RydWN0IGZpbGUgKmZpbGUsIHN0cnVjdCBjYWNoZXN0YXRfcmFuZ2UgKmNzciwKJiM0MzsJCSAgc3RydWN0IGNhY2hlc3RhdCAqY3MpOwomIzQzOyNlbmRpZgomIzQzOwogc3RhdGljIGlubGluZSBib29sIHZmc19lbXB0eV9wYXRoKGludCBkZmQsIGNvbnN0IGNoYXIgX191c2VyICpwYXRoKQogewogCWNoYXIgYzsKZGlmZiAtLWdpdCBhL21tL2ZpbGVtYXAuYyBiL21tL2ZpbGVtYXAuYwppbmRleCA3ZTQ2N2M4MWQyMTM4OS4uOTA2MDhjNmIxY2U1NTEgMTAwNjQ0Ci0tLSBhL21tL2ZpbGVtYXAuYwomIzQzOyYjNDM7JiM0MzsgYi9tbS9maWxlbWFwLmMKQEAgLTQ3MTQsNiAmIzQzOzQ3MTQsMzcgQEAgc3RhdGljIGlubGluZSBib29sIGNhbl9kb19jYWNoZXN0YXQoc3RydWN0IGZpbGUgKmYpCiAJcmV0dXJuIGZpbGVfcGVybWlzc2lvbihmLCBNQVlfV1JJVEUpID09IDA7CiB9CiAKJiM0MzsvKioKJiM0MzsgKiB2ZnNfY2FjaGVzdGF0KCkgLSBxdWVyeSBwYWdlIGNhY2hlIHN0YXRpc3RpY3Mgb2YgYSBmaWxlCiYjNDM7ICogQGZpbGU6CWZpbGUgdG8gcXVlcnkKJiM0MzsgKiBAY3NyOglieXRlIHJhbmdlIHRvIHF1ZXJ5CiYjNDM7ICogQGNzOgkJb3V0cHV0IHN0YXRpc3RpY3MKJiM0MzsgKgomIzQzOyAqIENvbXB1dGUgdGhlIHBhZ2UgY2FjaGUgc3RhdGlzdGljcyBmb3IgdGhlIGdpdmVuIGJ5dGUgcmFuZ2Ugb2YgQGZpbGUuCiYjNDM7ICoKJiM0MzsgKiBTdGFja2FibGUgZmlsZXN5c3RlbXMgKGUuZy4gb3ZlcmxheWZzKSBrZWVwIHRoZSBkYXRhIHBhZ2VzIGluIHRoZQomIzQzOyAqIG1hcHBpbmcgb2YgYW4gdW5kZXJseWluZyBmaWxlIHJhdGhlciB0aGFuIGluIEBmaWxlLSZndDtmX21hcHBpbmcuIFN1Y2gKJiM0MzsgKiBmaWxlc3lzdGVtcyBwcm92aWRlIGEgLSZndDtjYWNoZXN0YXQoKSBmaWxlIG9wZXJhdGlvbiB0aGF0IGZvcndhcmRzIHRoZQomIzQzOyAqIHF1ZXJ5IHRvIHRoZSBmaWxlIHRoYXQgYWN0dWFsbHkgb3ducyB0aGUgcGFnZSBjYWNoZTsgb3RoZXJ3aXNlIHRoZQomIzQzOyAqIHN0YXRpc3RpY3MgYXJlIGNvbXB1dGVkIGZyb20gQGZpbGUtJmd0O2ZfbWFwcGluZyBkaXJlY3RseS4KJiM0MzsgKi8KJiM0MztpbnQgdmZzX2NhY2hlc3RhdChzdHJ1Y3QgZmlsZSAqZmlsZSwgc3RydWN0IGNhY2hlc3RhdF9yYW5nZSAqY3NyLAomIzQzOwkJICBzdHJ1Y3QgY2FjaGVzdGF0ICpjcykKJiM0Mzt7CiYjNDM7CXBnb2ZmX3QgZmlyc3RfaW5kZXgsIGxhc3RfaW5kZXg7CiYjNDM7CiYjNDM7CWlmIChmaWxlLSZndDtmX29wLSZndDtjYWNoZXN0YXQpCiYjNDM7CQlyZXR1cm4gZmlsZS0mZ3Q7Zl9vcC0mZ3Q7Y2FjaGVzdGF0KGZpbGUsIGNzciwgY3MpOwomIzQzOwomIzQzOwlmaXJzdF9pbmRleCA9IGNzci0mZ3Q7b2ZmICZndDsmZ3Q7IFBBR0VfU0hJRlQ7CiYjNDM7CWxhc3RfaW5kZXggPQomIzQzOwkJY3NyLSZndDtsZW4gPT0gMCA/IFVMT05HX01BWCA6IChjc3ItJmd0O29mZiAmIzQzOyBjc3ItJmd0O2xlbiAtIDEpICZndDsmZ3Q7IFBBR0VfU0hJRlQ7CiYjNDM7CW1lbXNldChjcywgMCwgc2l6ZW9mKHN0cnVjdCBjYWNoZXN0YXQpKTsKJiM0MzsJZmlsZW1hcF9jYWNoZXN0YXQoZmlsZS0mZ3Q7Zl9tYXBwaW5nLCBmaXJzdF9pbmRleCwgbGFzdF9pbmRleCwgY3MpOwomIzQzOwlyZXR1cm4gMDsKJiM0Mzt9CiYjNDM7RVhQT1JUX1NZTUJPTCh2ZnNfY2FjaGVzdGF0KTsKJiM0MzsKIC8qCiAgKiBUaGUgY2FjaGVzdGF0KDIpIHN5c3RlbSBjYWxsLgogICoKQEAgLTQ3NTMsMTAgJiM0Mzs0Nzg0LDkgQEAgU1lTQ0FMTF9ERUZJTkU0KGNhY2hlc3RhdCwgdW5zaWduZWQgaW50LCBmZCwKIAkJc3RydWN0IGNhY2hlc3RhdCBfX3VzZXIgKiwgY3N0YXQsIHVuc2lnbmVkIGludCwgZmxhZ3MpCiB7CiAJQ0xBU1MoZmQsIGYpKGZkKTsKLQlzdHJ1Y3QgYWRkcmVzc19zcGFjZSAqbWFwcGluZzsKIAlzdHJ1Y3QgY2FjaGVzdGF0X3JhbmdlIGNzcjsKIAlzdHJ1Y3QgY2FjaGVzdGF0IGNzOwotCXBnb2ZmX3QgZmlyc3RfaW5kZXgsIGxhc3RfaW5kZXg7CiYjNDM7CWludCByZXQ7CiAKIAlpZiAoZmRfZW1wdHkoZikpCiAJCXJldHVybiAtRUJBREY7CkBAIC00Nzc1LDEyICYjNDM7NDgwNSw5IEBAIFNZU0NBTExfREVGSU5FNChjYWNoZXN0YXQsIHVuc2lnbmVkIGludCwgZmQsCiAJaWYgKGZsYWdzICE9IDApCiAJCXJldHVybiAtRUlOVkFMOwogCi0JZmlyc3RfaW5kZXggPSBjc3Iub2ZmICZndDsmZ3Q7IFBBR0VfU0hJRlQ7Ci0JbGFzdF9pbmRleCA9Ci0JCWNzci5sZW4gPT0gMCA/IFVMT05HX01BWCA6IChjc3Iub2ZmICYjNDM7IGNzci5sZW4gLSAxKSAmZ3Q7Jmd0OyBQQUdFX1NISUZUOwotCW1lbXNldCgmYW1wO2NzLCAwLCBzaXplb2Yoc3RydWN0IGNhY2hlc3RhdCkpOwotCW1hcHBpbmcgPSBmZF9maWxlKGYpLSZndDtmX21hcHBpbmc7Ci0JZmlsZW1hcF9jYWNoZXN0YXQobWFwcGluZywgZmlyc3RfaW5kZXgsIGxhc3RfaW5kZXgsICZhbXA7Y3MpOwomIzQzOwlyZXQgPSB2ZnNfY2FjaGVzdGF0KGZkX2ZpbGUoZiksICZhbXA7Y3NyLCAmYW1wO2NzKTsKJiM0MzsJaWYgKHJldCkKJiM0MzsJCXJldHVybiByZXQ7CiAKIAlpZiAoY29weV90b191c2VyKGNzdGF0LCAmYW1wO2NzLCBzaXplb2Yoc3RydWN0IGNhY2hlc3RhdCkpKQogCQlyZXR1cm4gLUVGQVVMVDsKZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2NhY2hlc3RhdC90ZXN0X2NhY2hlc3RhdC5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvY2FjaGVzdGF0L3Rlc3RfY2FjaGVzdGF0LmMKaW5kZXggNTQyY2QwOWNiNDQzNGUuLjE2NjJkOTgxN2M1MGJmIDEwMDY0NAotLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9jYWNoZXN0YXQvdGVzdF9jYWNoZXN0YXQuYwomIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9jYWNoZXN0YXQvdGVzdF9jYWNoZXN0YXQuYwpAQCAtNCwyMSAmIzQzOzQsMjUgQEAKIAogI2luY2x1ZGUgJmx0O3N0ZGlvLmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7c3RkYm9vbC5oJmd0OwomIzQzOyNpbmNsdWRlICZsdDtzdGRsaWIuaCZndDsKICNpbmNsdWRlICZsdDtsaW51eC9rZXJuZWwuaCZndDsKICNpbmNsdWRlICZsdDtsaW51eC9tYWdpYy5oJmd0OwogI2luY2x1ZGUgJmx0O2xpbnV4L21tYW4uaCZndDsKICNpbmNsdWRlICZsdDtzeXMvbW1hbi5oJmd0OwomIzQzOyNpbmNsdWRlICZsdDtzeXMvbW91bnQuaCZndDsKICNpbmNsdWRlICZsdDtzeXMvc2htLmgmZ3Q7CiYjNDM7I2luY2x1ZGUgJmx0O3N5cy9zdGF0LmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7c3lzL3N5c2NhbGwuaCZndDsKICNpbmNsdWRlICZsdDtzeXMvdmZzLmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7dW5pc3RkLmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7c3RyaW5nLmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7ZmNudGwuaCZndDsKICNpbmNsdWRlICZsdDtlcnJuby5oJmd0OwomIzQzOyNpbmNsdWRlICZsdDtsaW1pdHMuaCZndDsKIAogI2luY2x1ZGUgJiMzNDtrc2VsZnRlc3QuaCYjMzQ7CiAKLSNkZWZpbmUgTlJfVEVTVFMJOQomIzQzOyNkZWZpbmUgTlJfVEVTVFMJMTEKIAogc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBkZXZfZmlsZXNbXSA9IHsKIAkmIzM0Oy9kZXYvemVybyYjMzQ7LCAmIzM0Oy9kZXYvbnVsbCYjMzQ7LCAmIzM0Oy9kZXYvdXJhbmRvbSYjMzQ7LApAQCAtMjk0LDYgJiM0MzsyOTgsNjIgQEAgYm9vbCBydW5fY2FjaGVzdGF0X3Rlc3QoZW51bSBmaWxlX3R5cGUgdHlwZSkKIAlyZXR1cm4gcmV0OwogfQogCiYjNDM7LyoKJiM0MzsgKiBTZXQgdXAgYW4gb3ZlcmxheWZzIG1vdW50IGFuZCBydW4gY2FjaGVzdGF0IG9uIGEgZnJlc2hseSBjcmVhdGVkIGZpbGUgaW4gdGhlCiYjNDM7ICogbWVyZ2VkIGRpcmVjdG9yeS4gT3ZlcmxheWZzIGZvcndhcmRzIGRhdGEgSS9PIHRvIHRoZSB1bmRlcmx5aW5nICh1cHBlcikKJiM0MzsgKiBpbm9kZSwgc28gdGhlIHBhZ2UgY2FjaGUgbGl2ZXMgdGhlcmUgYW5kIG5vdCBpbiB0aGUgb3ZlcmxheSBpbm9kZSYjMzk7cyBtYXBwaW5nLgomIzQzOyAqIFRoaXMgaXMgYSByZWdyZXNzaW9uIHRlc3QgZm9yIGNhY2hlc3RhdCByZXR1cm5pbmcgYWxsIHplcm9lcyBvbiBvdmVybGF5ZnMuCiYjNDM7ICovCiYjNDM7c3RhdGljIGludCBydW5fY2FjaGVzdGF0X292ZXJsYXlmc190ZXN0KHZvaWQpCiYjNDM7ewomIzQzOwljaGFyIHRtcGxbXSA9ICYjMzQ7L3RtcC9jYWNoZXN0YXRfb3ZsLlhYWFhYWCYjMzQ7OwomIzQzOwljaGFyIGxvd2VyW1BBVEhfTUFYXSwgdXBwZXJbUEFUSF9NQVhdLCB3b3JrW1BBVEhfTUFYXTsKJiM0MzsJY2hhciBtZXJnZWRbUEFUSF9NQVhdLCBvcHRzWzQgKiBQQVRIX01BWF0sIGZpbGVbUEFUSF9NQVhdOwomIzQzOwljaGFyICpiYXNlOwomIzQzOwlpbnQgcmV0OwomIzQzOwomIzQzOwliYXNlID0gbWtkdGVtcCh0bXBsKTsKJiM0MzsJaWYgKCFiYXNlKSB7CiYjNDM7CQlrc2Z0X3ByaW50X21zZygmIzM0O1VuYWJsZSB0byBjcmVhdGUgb3ZlcmxheWZzIGJhc2UgZGlyOiAlc1xuJiMzNDssCiYjNDM7CQkJICAgICAgIHN0cmVycm9yKGVycm5vKSk7CiYjNDM7CQlyZXR1cm4gS1NGVF9GQUlMOwomIzQzOwl9CiYjNDM7CiYjNDM7CXNucHJpbnRmKGxvd2VyLCBzaXplb2YobG93ZXIpLCAmIzM0OyVzL2xvd2VyJiMzNDssIGJhc2UpOwomIzQzOwlzbnByaW50Zih1cHBlciwgc2l6ZW9mKHVwcGVyKSwgJiMzNDslcy91cHBlciYjMzQ7LCBiYXNlKTsKJiM0MzsJc25wcmludGYod29yaywgc2l6ZW9mKHdvcmspLCAmIzM0OyVzL3dvcmsmIzM0OywgYmFzZSk7CiYjNDM7CXNucHJpbnRmKG1lcmdlZCwgc2l6ZW9mKG1lcmdlZCksICYjMzQ7JXMvbWVyZ2VkJiMzNDssIGJhc2UpOwomIzQzOwomIzQzOwlpZiAobWtkaXIobG93ZXIsIDA3NTUpIHx8IG1rZGlyKHVwcGVyLCAwNzU1KSB8fAomIzQzOwkgICAgbWtkaXIod29yaywgMDc1NSkgfHwgbWtkaXIobWVyZ2VkLCAwNzU1KSkgewomIzQzOwkJa3NmdF9wcmludF9tc2coJiMzNDtVbmFibGUgdG8gY3JlYXRlIG92ZXJsYXlmcyBkaXJzOiAlc1xuJiMzNDssCiYjNDM7CQkJICAgICAgIHN0cmVycm9yKGVycm5vKSk7CiYjNDM7CQlyZXQgPSBLU0ZUX0ZBSUw7CiYjNDM7CQlnb3RvIGNsZWFudXA7CiYjNDM7CX0KJiM0MzsKJiM0MzsJc25wcmludGYob3B0cywgc2l6ZW9mKG9wdHMpLCAmIzM0O2xvd2VyZGlyPSVzLHVwcGVyZGlyPSVzLHdvcmtkaXI9JXMmIzM0OywKJiM0MzsJCSBsb3dlciwgdXBwZXIsIHdvcmspOwomIzQzOwomIzQzOwlpZiAobW91bnQoJiMzNDtvdmVybGF5JiMzNDssIG1lcmdlZCwgJiMzNDtvdmVybGF5JiMzNDssIDAsIG9wdHMpKSB7CiYjNDM7CQlrc2Z0X3ByaW50X21zZygmIzM0O1VuYWJsZSB0byBtb3VudCBvdmVybGF5ZnMgKG5lZWQgcm9vdD8pOiAlc1xuJiMzNDssCiYjNDM7CQkJICAgICAgIHN0cmVycm9yKGVycm5vKSk7CiYjNDM7CQlyZXQgPSBLU0ZUX1NLSVA7CiYjNDM7CQlnb3RvIGNsZWFudXA7CiYjNDM7CX0KJiM0MzsKJiM0MzsJc25wcmludGYoZmlsZSwgc2l6ZW9mKGZpbGUpLCAmIzM0OyVzL21lcmdlZC9jYWNoZXN0YXQmIzM0OywgYmFzZSk7CiYjNDM7CXJldCA9IHRlc3RfY2FjaGVzdGF0KGZpbGUsIHRydWUsIHRydWUsIGZhbHNlLCA0LCBPX0NSRUFUIHwgT19SRFdSLCAwNjAwKTsKJiM0MzsKJiM0MzsJdW1vdW50KG1lcmdlZCk7CiYjNDM7Y2xlYW51cDoKJiM0MzsJLyogQmVzdC1lZmZvcnQgcmVjdXJzaXZlIGNsZWFudXAgb2YgdGhlIHRlbXBvcmFyeSB0cmVlLiAqLwomIzQzOwlzbnByaW50ZihvcHRzLCBzaXplb2Yob3B0cyksICYjMzQ7cm0gLXJmICVzJiMzNDssIGJhc2UpOwomIzQzOwlpZiAoc3lzdGVtKG9wdHMpKQomIzQzOwkJa3NmdF9wcmludF9tc2coJiMzNDtVbmFibGUgdG8gY2xlYW4gdXAgJXNcbiYjMzQ7LCBiYXNlKTsKJiM0MzsJcmV0dXJuIHJldDsKJiM0Mzt9CiYjNDM7CiBpbnQgbWFpbih2b2lkKQogewogCWludCByZXQ7CkBAIC0zNjEsNSAmIzQzOzQyMSwxOCBAQCBpbnQgbWFpbih2b2lkKQogCQlrc2Z0X3Rlc3RfcmVzdWx0X2ZhaWwoJiMzNDtjYWNoZXN0YXQgZmFpbHMgd2l0aCBhIG1tYXAgZmlsZVxuJiMzNDspOwogCQlyZXQgPSAxOwogCX0KJiM0MzsKJiM0MzsJc3dpdGNoIChydW5fY2FjaGVzdGF0X292ZXJsYXlmc190ZXN0KCkpIHsKJiM0MzsJY2FzZSBLU0ZUX0ZBSUw6CiYjNDM7CQlrc2Z0X3Rlc3RfcmVzdWx0X2ZhaWwoJiMzNDtjYWNoZXN0YXQgZmFpbHMgd2l0aCBhbiBvdmVybGF5ZnMgZmlsZVxuJiMzNDspOwomIzQzOwkJcmV0ID0gMTsKJiM0MzsJCWJyZWFrOwomIzQzOwljYXNlIEtTRlRfUEFTUzoKJiM0MzsJCWtzZnRfdGVzdF9yZXN1bHRfcGFzcygmIzM0O2NhY2hlc3RhdCB3b3JrcyB3aXRoIGFuIG92ZXJsYXlmcyBmaWxlXG4mIzM0Oyk7CiYjNDM7CQlicmVhazsKJiM0MzsJY2FzZSBLU0ZUX1NLSVA6CiYjNDM7CQlrc2Z0X3Rlc3RfcmVzdWx0X3NraXAoJiMzNDtvdmVybGF5ZnMgbm90IGF2YWlsYWJsZVxuJiMzNDspOwomIzQzOwkJYnJlYWs7CiYjNDM7CX0KIAlyZXR1cm4gcmV0OwogfQo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yMyAxMjoyNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0NzcwCgkJCQkJCQlvdXRwdXQ6IDIyCgkJCQkJCQl0aG91Z2h0czogMjIzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgdGhlIE92ZXJsYXlmcyBDYWNoZXN0YXQgUGF0Y2gqKgoKT2theSwgc28gdGhpcyBwYXRjaCBpcyBhZGRpbmcgYGNhY2hlc3RhdGAgZnVuY3Rpb25hbGl0eSB0byBvdmVybGF5ZnMsIHdoaWNoIGlzIGEgcHJldHR5IHVzZWZ1bCBlbmhhbmNlbWVudC4gSXQgbG9va3MgbGlrZSB0aGUgbWFpbiB0aHJ1c3QgaXMgdG8gYWRkIGEgbmV3IGBjYWNoZXN0YXRgIGZpbGUgb3BlcmF0aW9uLCBgb3ZsX2NhY2hlc3RhdGAsIHRvIHRoZSBgc3RydWN0IGZpbGVfb3BlcmF0aW9uc2AgZm9yIG92ZXJsYXlmcy4gVGhlIHBhdGNoIHRoZW4gY2xldmVybHkgbW9kaWZpZXMgYHZmc19jYWNoZXN0YXRgIHRvIHV0aWxpemUgdGhlIG5ld2x5IGRlZmluZWQgYGZpbGUtJmd0O2Zfb3AtJmd0O2NhY2hlc3RhdGAgaWYgaXQmIzM5O3MgYXZhaWxhYmxlLiBGdXJ0aGVybW9yZSwgdGhlIHN5c3RlbSBjYWxsIGludGVyZmFjZSwgYHN5c19jYWNoZXN0YXRgLCBpcyB1cGRhdGVkIHRvIGNhbGwgdGhlIGB2ZnNfY2FjaGVzdGF0YCBmdW5jdGlvbi4KClRoZSByYXRpb25hbGUgc2VlbXMgY2xlYXI6IHRoZSBleGlzdGluZyBgY2FjaGVzdGF0YCBzeXNjYWxsIHdhc24mIzM5O3Qgd29ya2luZyBjb3JyZWN0bHkgZm9yIG92ZXJsYXlmcyBiZWNhdXNlIHRoZSBkYXRhIHBhZ2VzIGFyZSBhY3R1YWxseSBzdG9yZWQgaW4gdGhlIHVuZGVybHlpbmcgZmlsZSYjMzk7cyBtYXBwaW5nLCBub3QgdGhlIG92ZXJsYXkmIzM5O3MuIFRoaXMgcGF0Y2ggZGlyZWN0bHkgYWRkcmVzc2VzIHRoYXQgc2hvcnRjb21pbmcsIHByb3ZpZGluZyBtb3JlIGFjY3VyYXRlIGNhY2hlIHN0YXRpc3RpY3MgaW4gdGhlIG92ZXJsYXlmcyBjb250ZXh0LgoKTm93LCBsZXQmIzM5O3MgbWFrZSBzdXJlIGV2ZXJ5dGhpbmcmIzM5O3MgaW4gb3JkZXIsIGNvbmZpZ3VyYXRpb24td2lzZS4gVGhlIHBhdGNoIG1lbnRpb25zIGBDT05GSUdfQ0FDSEVTVEFUX1NZU0NBTExgLCBhbmQgb2J2aW91c2x5IGBDT05GSUdfT1ZFUkxBWV9GU2AgaXMgcmVxdWlyZWQgZm9yIG92ZXJsYXlmcyBzdXBwb3J0LiBUaW1lIHRvIHZlcmlmeSB0aGF0IGBDT05GSUdfQ0FDSEVTVEFUX1NZU0NBTExgIGlzIGEgcmVhbCB0aGluZy4gSSYjMzk7bGwgdXNlIGBncmVwcGVyYCB0byBmaW5kIG91dC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yMyAxMjoyNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtDQUNIRVNUQVRfU1lTQ0FMTCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtmcy9vdmVybGF5ZnMvZmlsZS5jPTUwOT1zdGF0aWMgaW50IG92bF9mYWR2aXNlKHN0cnVjdCBmaWxlICpmaWxlLCBsb2ZmX3Qgb2Zmc2V0LCBsb2ZmX3QgbGVuLCBpbnQgYWR2aWNlKVxuLS1cbmZzL292ZXJsYXlmcy9maWxlLmMtNTIwLVxuZnMvb3ZlcmxheWZzL2ZpbGUuYzo1MjE6I2lmZGVmIENPTkZJR19DQUNIRVNUQVRfU1lTQ0FMTFxuZnMvb3ZlcmxheWZzL2ZpbGUuYy01MjItc3RhdGljIGludCBvdmxfY2FjaGVzdGF0KHN0cnVjdCBmaWxlICpmaWxlLCBzdHJ1Y3QgY2FjaGVzdGF0X3JhbmdlICpjc3IsXG4tLVxuZnMvb3ZlcmxheWZzL2ZpbGUuYz02NTA9Y29uc3Qgc3RydWN0IGZpbGVfb3BlcmF0aW9ucyBvdmxfZmlsZV9vcGVyYXRpb25zID0ge1xuLS1cbmZzL292ZXJsYXlmcy9maWxlLmMtNjU5LVx0LmZhZHZpc2VcdD0gb3ZsX2ZhZHZpc2UsXG5mcy9vdmVybGF5ZnMvZmlsZS5jOjY2MDojaWZkZWYgQ09ORklHX0NBQ0hFU1RBVF9TWVNDQUxMXG5mcy9vdmVybGF5ZnMvZmlsZS5jLTY2MS1cdC5jYWNoZXN0YXRcdD0gb3ZsX2NhY2hlc3RhdCxcbi0tXG5pbmNsdWRlL2xpbnV4L2ZzLmg9MzYzNz1leHRlcm4gaW50IGdlbmVyaWNfZmFkdmlzZShzdHJ1Y3QgZmlsZSAqZmlsZSwgbG9mZl90IG9mZnNldCwgbG9mZl90IGxlbixcbi0tXG5pbmNsdWRlL2xpbnV4L2ZzLmgtMzY0MC0vKiBtbS9maWxlbWFwLmMgKi9cbmluY2x1ZGUvbGludXgvZnMuaDozNjQxOiNpZmRlZiBDT05GSUdfQ0FDSEVTVEFUX1NZU0NBTExcbmluY2x1ZGUvbGludXgvZnMuaC0zNjQyLWludCB2ZnNfY2FjaGVzdGF0KHN0cnVjdCBmaWxlICpmaWxlLCBzdHJ1Y3QgY2FjaGVzdGF0X3JhbmdlICpjc3IsXG4tLVxuaW5pdC9LY29uZmlnPTIwMzE9Y29uZmlnIERFQlVHX1JTRVFcbi0tXG5pbml0L0tjb25maWctMjA0MC1cbmluaXQvS2NvbmZpZzoyMDQxOmNvbmZpZyBDQUNIRVNUQVRfU1lTQ0FMTFxuaW5pdC9LY29uZmlnLTIwNDItXHRib29sIFwmIzM0O0VuYWJsZSBjYWNoZXN0YXQoKSBzeXN0ZW0gY2FsbFwmIzM0OyBpZiBFWFBFUlRcbi0tXG5tbS9maWxlbWFwLmM9NDU5Mj1FWFBPUlRfU1lNQk9MX0dQTChmaWxlbWFwX2ludmFsaWRhdGVfaW5vZGUpO1xubW0vZmlsZW1hcC5jLTQ1OTMtXG5tbS9maWxlbWFwLmM6NDU5NDojaWZkZWYgQ09ORklHX0NBQ0hFU1RBVF9TWVNDQUxMXG5tbS9maWxlbWFwLmMtNDU5NS0vKipcbi0tXG5tbS9maWxlbWFwLmM9NDc4Mj1TWVNDQUxMX0RFRklORTQoY2FjaGVzdGF0LCB1bnNpZ25lZCBpbnQsIGZkLFxuLS1cbm1tL2ZpbGVtYXAuYy00ODE2LX1cbm1tL2ZpbGVtYXAuYzo0ODE3OiNlbmRpZiAvKiBDT05GSUdfQ0FDSEVTVEFUX1NZU0NBTEwgKi9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yMyAxMjoyNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1ODgyCgkJCQkJCQlvdXRwdXQ6IDMzCgkJCQkJCQl0aG91Z2h0czogMTU4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKktlcm5lbCBDYWNoZXN0YXQgSW1wbGVtZW50YXRpb24gVGhvdWdodHMqKgoKT2theSwgc28gYENBQ0hFU1RBVF9TWVNDQUxMYCAqaXMqIGEgbGVnaXRpbWF0ZSBjb25maWd1cmF0aW9uIG9wdGlvbi4gR29vZC4gQW5kLCBvZiBjb3Vyc2UsIHdlJiMzOTtsbCBuZWVkIGBPVkVSTEFZX0ZTYCBlbmFibGVkIGZvciB0aGlzIHRvIGJlIHJlbGV2YW50LiBUaGF0JiMzOTtzIGxvZ2ljYWwuCgpJIHNob3VsZCBmb2N1cyBteSBhdHRlbnRpb24gb24gdGhlc2Uga2V5IGZ1bmN0aW9uczogYG92bF9jYWNoZXN0YXRgLCBgdmZzX2NhY2hlc3RhdGAsIGFuZCBgc3lzX2NhY2hlc3RhdGAgKG9yIHRoZSBhcmNoaXRlY3R1cmUtc3BlY2lmaWMgdmFyaWFudCBsaWtlIGBfX3g2NF9zeXNfY2FjaGVzdGF0YCwgYnV0IGB2ZnNfY2FjaGVzdGF0YCBhbmQgYG92bF9jYWNoZXN0YXRgIGFyZSBsaWtlbHkgdGhlIG1vcmUgY3JpdGljYWwgb25lcykuCgpOb3csIHRoZSBpbXBvcnRhbnQgcXVlc3Rpb246IElzIGBvdmxfY2FjaGVzdGF0YCBhY3R1YWxseSByZWFjaGFibGU/IExldCBtZSB0aGluay4uLiB5ZXMsIHRoZSBjYWxsIGNoYWluIGFwcGVhcnMgdG8gYmU6IGBzeXNfY2FjaGVzdGF0YCBnZXRzIHRvIGB2ZnNfY2FjaGVzdGF0YCBhbmQgdGhhdCwgaW4gdHVybiwgZ29lcyB0byBgZmlsZS0mZ3Q7Zl9vcC0mZ3Q7Y2FjaGVzdGF0YC4gVGhhdCYjMzk7cyB0aGUgcGF0aC4KCkp1c3QgdG8gYmUgYWJzb2x1dGVseSBzdXJlLCBJJiMzOTtsbCBxdWlja2x5IGRvdWJsZS1jaGVjayBgaW5pdC9LY29uZmlnYCB0byBjb25maXJtIHRoYXQgYENBQ0hFU1RBVF9TWVNDQUxMYCBpcyBwcm9wZXJseSBkZWZpbmVkIGFuZCBwbGFjZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjMgMTI6MjU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtpbml0L0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAyMDM1LAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDIwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OzIwMzU6XHRcdHNlbGVjdCBSU0VRX0RFQlVHX0RFRkFVTFRfRU5BQkxFXG4yMDM2Olx0XHRoZWxwXG4yMDM3Olx0XHQgIEVuYWJsZSBleHRyYSBkZWJ1Z2dpbmcgY2hlY2tzIGZvciB0aGUgcnNlcSBzeXN0ZW0gY2FsbC5cbjIwMzg6XHRcbjIwMzk6XHRcdCAgSWYgdW5zdXJlLCBzYXkgTi5cbjIwNDA6XHRcbjIwNDE6XHRjb25maWcgQ0FDSEVTVEFUX1NZU0NBTExcbjIwNDI6XHRcdGJvb2wgXCYjMzQ7RW5hYmxlIGNhY2hlc3RhdCgpIHN5c3RlbSBjYWxsXCYjMzQ7IGlmIEVYUEVSVFxuMjA0MzpcdFx0ZGVmYXVsdCB5XG4yMDQ0Olx0XHRoZWxwXG4yMDQ1Olx0XHQgIEVuYWJsZSB0aGUgY2FjaGVzdGF0IHN5c3RlbSBjYWxsLCB3aGljaCBxdWVyaWVzIHRoZSBwYWdlIGNhY2hlXG4yMDQ2Olx0XHQgIHN0YXRpc3RpY3Mgb2YgYSBmaWxlIChudW1iZXIgb2YgY2FjaGVkIHBhZ2VzLCBkaXJ0eSBwYWdlcyxcbjIwNDc6XHRcdCAgcGFnZXMgbWFya2VkIGZvciB3cml0ZWJhY2ssIChyZWNlbnRseSkgZXZpY3RlZCBwYWdlcykuXG4yMDQ4Olx0XG4yMDQ5Olx0XHQgIElmIHVuc3VyZSBzYXkgWSBoZXJlLlxuMjA1MDpcdFxuMjA1MTpcdGNvbmZpZyBLQUxMU1lNU1xuMjA1MjpcdFx0Ym9vbCBcJiMzNDtMb2FkIGFsbCBzeW1ib2xzIGZvciBkZWJ1Z2dpbmcva3N5bW9vcHNcJiMzNDsgaWYgRVhQRVJUXG4yMDUzOlx0XHRkZWZhdWx0IHlcbjIwNTQ6XHRcdGhlbHBcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yMyAxMjoyNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2NTkxCgkJCQkJCQlvdXRwdXQ6IDE5CgkJCQkJCQl0aG91Z2h0czogNTQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgYXMgaWYgdGhleSB3ZXJlIG15IG93bjoKCioqSW52ZXN0aWdhdGluZyBPdmVybGF5RlMgYW5kIENhY2hlIFN0YXRpc3RpY3MqKgoKUmlnaHQsIHNvIGBDQUNIRVNUQVRfU1lTQ0FMTGAgaXMgZW5hYmxlZCBieSBkZWZhdWx0LCB3aGljaCBpcyBnb29kLiBUaGF0JiMzOTtzIGEga2V5IHBpZWNlIG9mIGluZm9ybWF0aW9uIGZvciBteSBjdXJyZW50IGludmVzdGlnYXRpb24uIE5vdywgSSBuZWVkIHRvIGNvbmZpcm0gc29tZXRoaW5nOiBJIHJlY2FsbCBgb3ZsX2NhY2hlc3RhdGAgcmVsaWVzIG9uIGBPVkVSTEFZX0ZTYCBmb3IgaXRzIHRlc3RpbmcsIHNvIGxldCYjMzk7cyBkb3VibGUtY2hlY2sgdGhlIEtjb25maWcgb3B0aW9ucy4gTGV0IG1lIGdvIGFuZCBxdWlja2x5IG5hdmlnYXRlIGludG8gYGZzL292ZXJsYXlmcy9LY29uZmlnYCB0byB2ZXJpZnkgdGhlIGRlcGVuZGVuY3kuIEl0JiMzOTtzIGFsd2F5cyBiZXN0IHRvIGJlIHByZWNpc2Ugd2hlbiBkZWFsaW5nIHdpdGgga2VybmVsIGNvbmZpZ3VyYXRpb24gZGVwZW5kZW5jaWVzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzIzIDEyOjI1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBPVkVSTEFZX0ZTJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2ZzL292ZXJsYXlmcy9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG5mcy9vdmVybGF5ZnMvS2NvbmZpZzoyOmNvbmZpZyBPVkVSTEFZX0ZTXG5mcy9vdmVybGF5ZnMvS2NvbmZpZy0zLVx0dHJpc3RhdGUgXCYjMzQ7T3ZlcmxheSBmaWxlc3lzdGVtIHN1cHBvcnRcJiMzNDtcbi0tXG5mcy9vdmVybGF5ZnMvS2NvbmZpZy0xNC1cbmZzL292ZXJsYXlmcy9LY29uZmlnOjE1OmNvbmZpZyBPVkVSTEFZX0ZTX1JFRElSRUNUX0RJUlxuZnMvb3ZlcmxheWZzL0tjb25maWctMTYtXHRib29sIFwmIzM0O092ZXJsYXlmczogdHVybiBvbiByZWRpcmVjdCBkaXJlY3RvcnkgZmVhdHVyZSBieSBkZWZhdWx0XCYjMzQ7XG4tLVxuZnMvb3ZlcmxheWZzL0tjb25maWctMzAtXG5mcy9vdmVybGF5ZnMvS2NvbmZpZzozMTpjb25maWcgT1ZFUkxBWV9GU19SRURJUkVDVF9BTFdBWVNfRk9MTE9XXG5mcy9vdmVybGF5ZnMvS2NvbmZpZy0zMi1cdGJvb2wgXCYjMzQ7T3ZlcmxheWZzOiBmb2xsb3cgcmVkaXJlY3RzIGV2ZW4gaWYgcmVkaXJlY3RzIGFyZSB0dXJuZWQgb2ZmXCYjMzQ7XG4tLVxuZnMvb3ZlcmxheWZzL0tjb25maWctNDUtXG5mcy9vdmVybGF5ZnMvS2NvbmZpZzo0Njpjb25maWcgT1ZFUkxBWV9GU19JTkRFWFxuZnMvb3ZlcmxheWZzL0tjb25maWctNDctXHRib29sIFwmIzM0O092ZXJsYXlmczogdHVybiBvbiBpbm9kZXMgaW5kZXggZmVhdHVyZSBieSBkZWZhdWx0XCYjMzQ7XG4tLVxuZnMvb3ZlcmxheWZzL0tjb25maWctNjQtXG5mcy9vdmVybGF5ZnMvS2NvbmZpZzo2NTpjb25maWcgT1ZFUkxBWV9GU19ORlNfRVhQT1JUXG5mcy9vdmVybGF5ZnMvS2NvbmZpZy02Ni1cdGJvb2wgXCYjMzQ7T3ZlcmxheWZzOiB0dXJuIG9uIE5GUyBleHBvcnQgZmVhdHVyZSBieSBkZWZhdWx0XCYjMzQ7XG4tLVxuZnMvb3ZlcmxheWZzL0tjb25maWctOTItXG5mcy9vdmVybGF5ZnMvS2NvbmZpZzo5Mzpjb25maWcgT1ZFUkxBWV9GU19YSU5PX0FVVE9cbmZzL292ZXJsYXlmcy9LY29uZmlnLTk0LVx0Ym9vbCBcJiMzNDtPdmVybGF5ZnM6IGF1dG8gZW5hYmxlIGlub2RlIG51bWJlciBtYXBwaW5nXCYjMzQ7XG4tLVxuZnMvb3ZlcmxheWZzL0tjb25maWctMTEwLVxuZnMvb3ZlcmxheWZzL0tjb25maWc6MTExOmNvbmZpZyBPVkVSTEFZX0ZTX01FVEFDT1BZXG5mcy9vdmVybGF5ZnMvS2NvbmZpZy0xMTItXHRib29sIFwmIzM0O092ZXJsYXlmczogdHVybiBvbiBtZXRhZGF0YSBvbmx5IGNvcHkgdXAgZmVhdHVyZSBieSBkZWZhdWx0XCYjMzQ7XG4tLVxuZnMvb3ZlcmxheWZzL0tjb25maWctMTI4LVxuZnMvb3ZlcmxheWZzL0tjb25maWc6MTI5OmNvbmZpZyBPVkVSTEFZX0ZTX0RFQlVHXG5mcy9vdmVybGF5ZnMvS2NvbmZpZy0xMzAtXHRib29sIFwmIzM0O092ZXJsYXlmczogdHVybiBvbiBleHRyYSBkZWJ1Z2dpbmcgY2hlY2tzXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjMgMTI6MjU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzMwOQoJCQkJCQkJb3V0cHV0OiAxMTkKCQkJCQkJCXRob3VnaHRzOiAyMzgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBPdmVybGF5RlMgQ2FjaGVzdGF0IFBhdGNoKioKCk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgYWxsIGFib3V0IGBPVkVSTEFZX0ZTYCwgdGhhdCYjMzk7cyB0aGUga2V5IGNvbmZpZ3VyYXRpb24gaXRlbSBoZXJlLiBUaGUgY29yZSBmdW5jdGlvbmFsaXR5IHNlZW1zIHRvIGJlIGFib3V0IGltcGxlbWVudGluZyB0aGUgYGNhY2hlc3RhdGAgZmlsZSBvcGVyYXRpb24gZm9yIG92ZXJsYXlmcy4gVGhpcyBtZWFucyBlbmFibGluZyB0aGUgYGNhY2hlc3RhdGAgc3lzdGVtIGNhbGwgdG8gYWNjdXJhdGVseSByZXBvcnQgcGFnZSBjYWNoZSBzdGF0aXN0aWNzIGZvciBmaWxlcyByZXNpZGluZyBvbiBvdmVybGF5ZnMuIFRoZSB0cmljayBpcyBmb3J3YXJkaW5nIHRoZSByZXF1ZXN0IHRvIHRoZSB1bmRlcmx5aW5nIGZpbGUsIHdoaWNoIG1ha2VzIHNlbnNlLgoKSSYjMzk7bSB0aGlua2luZyB0aGlzIGlzIGEgcHJldHR5IHNpZ25pZmljYW50IGNoYW5nZSBiZWNhdXNlIGl0IGludHJvZHVjZXMgbmV3LCBwb3RlbnRpYWxseSByZWFjaGFibGUgY29kZSBwYXRocyB3aXRoaW4gYm90aCB0aGUgVkZTIGFuZCBvdmVybGF5ZnMgbGF5ZXJzLiBXZSBzaG91bGQgdGFrZSBhIHF1aWNrIGxvb2sgdG8gc2VlIGlmIHRoZXJlIGFyZSBhbnkgb3RoZXIgcmVsZXZhbnQgY29uZmlncywgbGV0JiMzOTtzIHNlZS4uLiB5ZXAsIHRoZXJlJiMzOTtzIGBDQUNIRVNUQVRfU1lTQ0FMTGAgYXMgd2VsbCBhcyBgT1ZFUkxBWV9GU2AuCgpHaXZlbiB0aGlzIGZ1bmN0aW9uYWwgY2hhbmdlIGFuZCB0aGUgbmV3IGNvZGUgcGF0aHMsIG15IGFuYWx5c2lzIHlpZWxkcyB0aGF0IHRoaXMgcGF0Y2ggaXMgZGVmaW5pdGVseSB3b3J0aCBmdXp6aW5nLiBJJiMzOTtsbCBmbGFnIGl0IGFzIHN1Y2guIEFuZCwgc2luY2UgdGhpcyBwYXRjaCBkZWFscyB3aXRoIGNhY2hlIHN0YXRpc3RpY3MgZm9yIG92ZXJsYWlkIGZpbGVzLCB0aGUgZm9jdXMgc3ltYm9scyBhcmUgb2J2aW91c2x5IGBvdmxfY2FjaGVzdGF0YCBhbmQgYHZmc19jYWNoZXN0YXRgLgoKSGVyZSYjMzk7cyBteSBhc3Nlc3NtZW50OgoKKiAgICoqV29ydGhGdXp6aW5nKio6IFRydWUKKiAgICoqRm9jdXNTeW1ib2xzKio6IGBbJiMzNDtvdmxfY2FjaGVzdGF0JiMzNDssICYjMzQ7dmZzX2NhY2hlc3RhdCYjMzQ7XWAKKiAgICoqRW5hYmxlQ29uZmlncyoqOiBgWyYjMzQ7Q0FDSEVTVEFUX1NZU0NBTEwmIzM0OywgJiMzNDtPVkVSTEFZX0ZTJiMzNDtdYAoqICAgKipSZWFzb25pbmcqKjogJiMzNDtUaGUgcGF0Y2ggaW1wbGVtZW50cyB0aGUgYGNhY2hlc3RhdGAgZmlsZSBvcGVyYXRpb24gZm9yIG92ZXJsYXlmcywgYWxsb3dpbmcgdGhlIGBjYWNoZXN0YXRgIHN5c2NhbGwgdG8gY29ycmVjdGx5IHF1ZXJ5IHBhZ2UgY2FjaGUgc3RhdGlzdGljcyBmb3IgZmlsZXMgb24gb3ZlcmxheWZzIGJ5IGZvcndhcmRpbmcgdGhlIHJlcXVlc3QgdG8gdGhlIHVuZGVybHlpbmcgZmlsZS4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRoYXQgaW50cm9kdWNlcyBuZXcgcmVhY2hhYmxlIGNvZGUgaW4gdGhlIFZGUyBhbmQgb3ZlcmxheWZzIGxheWVycy4mIzM0OwoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yMyAxMjoyNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7Q0FDSEVTVEFUX1NZU0NBTEwmIzM0OywKICAgICYjMzQ7T1ZFUkxBWV9GUyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O292bF9jYWNoZXN0YXQmIzM0OywKICAgICYjMzQ7dmZzX2NhY2hlc3RhdCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBpbXBsZW1lbnRzIHRoZSBjYWNoZXN0YXQgZmlsZSBvcGVyYXRpb24gZm9yIG92ZXJsYXlmcywgYWxsb3dpbmcgdGhlIGNhY2hlc3RhdCBzeXNjYWxsIHRvIGNvcnJlY3RseSBxdWVyeSBwYWdlIGNhY2hlIHN0YXRpc3RpY3MgZm9yIGZpbGVzIG9uIG92ZXJsYXlmcyBieSBmb3J3YXJkaW5nIHRoZSByZXF1ZXN0IHRvIHRoZSB1bmRlcmx5aW5nIGZpbGUuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0aGF0IGludHJvZHVjZXMgbmV3IHJlYWNoYWJsZSBjb2RlIGluIHRoZSBWRlMgYW5kIG92ZXJsYXlmcyBsYXllcnMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0NBQ0hFU1RBVF9TWVNDQUxMJiMzNDssCiAgICAmIzM0O09WRVJMQVlfRlMmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtvdmxfY2FjaGVzdGF0JiMzNDssCiAgICAmIzM0O3Zmc19jYWNoZXN0YXQmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggaW1wbGVtZW50cyB0aGUgY2FjaGVzdGF0IGZpbGUgb3BlcmF0aW9uIGZvciBvdmVybGF5ZnMsIGFsbG93aW5nIHRoZSBjYWNoZXN0YXQgc3lzY2FsbCB0byBjb3JyZWN0bHkgcXVlcnkgcGFnZSBjYWNoZSBzdGF0aXN0aWNzIGZvciBmaWxlcyBvbiBvdmVybGF5ZnMgYnkgZm9yd2FyZGluZyB0aGUgcmVxdWVzdCB0byB0aGUgdW5kZXJseWluZyBmaWxlLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdGhhdCBpbnRyb2R1Y2VzIG5ldyByZWFjaGFibGUgY29kZSBpbiB0aGUgVkZTIGFuZCBvdmVybGF5ZnMgbGF5ZXJzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDYtMjNUMTI6MjU6MTQuNTM1MjgyMzI0WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjU2ODcxMTMwMzMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQ0FDSEVTVEFUX1NZU0NBTExcIixcbiAgICBcIk9WRVJMQVlfRlNcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJvdmxfY2FjaGVzdGF0XCIsXG4gICAgXCJ2ZnNfY2FjaGVzdGF0XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggaW1wbGVtZW50cyB0aGUgY2FjaGVzdGF0IGZpbGUgb3BlcmF0aW9uIGZvciBvdmVybGF5ZnMsIGFsbG93aW5nIHRoZSBjYWNoZXN0YXQgc3lzY2FsbCB0byBjb3JyZWN0bHkgcXVlcnkgcGFnZSBjYWNoZSBzdGF0aXN0aWNzIGZvciBmaWxlcyBvbiBvdmVybGF5ZnMgYnkgZm9yd2FyZGluZyB0aGUgcmVxdWVzdCB0byB0aGUgdW5kZXJseWluZyBmaWxlLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdGhhdCBpbnRyb2R1Y2VzIG5ldyByZWFjaGFibGUgY29kZSBpbiB0aGUgVkZTIGFuZCBvdmVybGF5ZnMgbGF5ZXJzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yM1QxMjoyNToxNC41MzUyODk2NDRaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjUyOTQ0MDczOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDBiYzRhYzMyOWIwM2FkZTcwOGVmYjM5NzllNTRhOTI0MmI4OTJjMjlcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFR1ZSBKdW4gMjMgMTI6MjU6MTMgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZnMvb3ZlcmxheWZzL2ZpbGUuYyBiL2ZzL292ZXJsYXlmcy9maWxlLmNcXG5pbmRleCAyN2NjMDc3MzhmMzNiZi4uYTdlMjUyYTkxZWE0MzUgMTAwNjQ0XFxuLS0tIGEvZnMvb3ZlcmxheWZzL2ZpbGUuY1xcbisrKyBiL2ZzL292ZXJsYXlmcy9maWxlLmNcXG5AQCAtNTE4LDYgKzUxOCwyMSBAQCBzdGF0aWMgaW50IG92bF9mYWR2aXNlKHN0cnVjdCBmaWxlICpmaWxlLCBsb2ZmX3Qgb2Zmc2V0LCBsb2ZmX3QgbGVuLCBpbnQgYWR2aWNlKVxcbiBcXHRcXHRyZXR1cm4gdmZzX2ZhZHZpc2UocmVhbGZpbGUsIG9mZnNldCwgbGVuLCBhZHZpY2UpO1xcbiB9XFxuIFxcbisjaWZkZWYgQ09ORklHX0NBQ0hFU1RBVF9TWVNDQUxMXFxuK3N0YXRpYyBpbnQgb3ZsX2NhY2hlc3RhdChzdHJ1Y3QgZmlsZSAqZmlsZSwgc3RydWN0IGNhY2hlc3RhdF9yYW5nZSAqY3NyLFxcbitcXHRcXHRcXHQgc3RydWN0IGNhY2hlc3RhdCAqY3MpXFxuK3tcXG4rXFx0c3RydWN0IGZpbGUgKnJlYWxmaWxlO1xcbitcXG4rXFx0cmVhbGZpbGUgPSBvdmxfcmVhbF9maWxlKGZpbGUpO1xcbitcXHRpZiAoSVNfRVJSKHJlYWxmaWxlKSlcXG4rXFx0XFx0cmV0dXJuIFBUUl9FUlIocmVhbGZpbGUpO1xcbitcXG4rXFx0d2l0aF9vdmxfY3JlZHMoZmlsZV9pbm9kZShmaWxlKS1cXHUwMDNlaV9zYilcXG4rXFx0XFx0cmV0dXJuIHZmc19jYWNoZXN0YXQocmVhbGZpbGUsIGNzciwgY3MpO1xcbit9XFxuKyNlbmRpZlxcbitcXG4gZW51bSBvdmxfY29weW9wIHtcXG4gXFx0T1ZMX0NPUFksXFxuIFxcdE9WTF9DTE9ORSxcXG5AQCAtNjQyLDYgKzY1Nyw5IEBAIGNvbnN0IHN0cnVjdCBmaWxlX29wZXJhdGlvbnMgb3ZsX2ZpbGVfb3BlcmF0aW9ucyA9IHtcXG4gXFx0Lm1tYXBcXHRcXHQ9IG92bF9tbWFwLFxcbiBcXHQuZmFsbG9jYXRlXFx0PSBvdmxfZmFsbG9jYXRlLFxcbiBcXHQuZmFkdmlzZVxcdD0gb3ZsX2ZhZHZpc2UsXFxuKyNpZmRlZiBDT05GSUdfQ0FDSEVTVEFUX1NZU0NBTExcXG4rXFx0LmNhY2hlc3RhdFxcdD0gb3ZsX2NhY2hlc3RhdCxcXG4rI2VuZGlmXFxuIFxcdC5mbHVzaFxcdFxcdD0gb3ZsX2ZsdXNoLFxcbiBcXHQuc3BsaWNlX3JlYWQgICAgPSBvdmxfc3BsaWNlX3JlYWQsXFxuIFxcdC5zcGxpY2Vfd3JpdGUgICA9IG92bF9zcGxpY2Vfd3JpdGUsXFxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvZnMuaCBiL2luY2x1ZGUvbGludXgvZnMuaFxcbmluZGV4IDZkYTQ0NTczY2U0NTA4Li45NjZiNjU2NDcwN2U0OCAxMDA2NDRcXG4tLS0gYS9pbmNsdWRlL2xpbnV4L2ZzLmhcXG4rKysgYi9pbmNsdWRlL2xpbnV4L2ZzLmhcXG5AQCAtNTMsNiArNTMsOCBAQFxcbiBcXG4gc3RydWN0IGJkaV93cml0ZWJhY2s7XFxuIHN0cnVjdCBiaW87XFxuK3N0cnVjdCBjYWNoZXN0YXRfcmFuZ2U7XFxuK3N0cnVjdCBjYWNoZXN0YXQ7XFxuIHN0cnVjdCBpb19jb21wX2JhdGNoO1xcbiBzdHJ1Y3QgZmllbWFwX2V4dGVudF9pbmZvO1xcbiBzdHJ1Y3Qga2lvY2I7XFxuQEAgLTE5NjMsNiArMTk2NSw4IEBAIHN0cnVjdCBmaWxlX29wZXJhdGlvbnMge1xcbiBcXHRcXHRcXHRcXHQgICBzdHJ1Y3QgZmlsZSAqZmlsZV9vdXQsIGxvZmZfdCBwb3Nfb3V0LFxcbiBcXHRcXHRcXHRcXHQgICBsb2ZmX3QgbGVuLCB1bnNpZ25lZCBpbnQgcmVtYXBfZmxhZ3MpO1xcbiBcXHRpbnQgKCpmYWR2aXNlKShzdHJ1Y3QgZmlsZSAqLCBsb2ZmX3QsIGxvZmZfdCwgaW50KTtcXG4rXFx0aW50ICgqY2FjaGVzdGF0KShzdHJ1Y3QgZmlsZSAqZmlsZSwgc3RydWN0IGNhY2hlc3RhdF9yYW5nZSAqY3NyLFxcbitcXHRcXHRcXHQgc3RydWN0IGNhY2hlc3RhdCAqY3MpO1xcbiBcXHRpbnQgKCp1cmluZ19jbWQpKHN0cnVjdCBpb191cmluZ19jbWQgKmlvdWNtZCwgdW5zaWduZWQgaW50IGlzc3VlX2ZsYWdzKTtcXG4gXFx0aW50ICgqdXJpbmdfY21kX2lvcG9sbCkoc3RydWN0IGlvX3VyaW5nX2NtZCAqLCBzdHJ1Y3QgaW9fY29tcF9iYXRjaCAqLFxcbiBcXHRcXHRcXHRcXHR1bnNpZ25lZCBpbnQgcG9sbF9mbGFncyk7XFxuQEAgLTM2MzMsNiArMzYzNywxMiBAQCBleHRlcm4gaW50IHZmc19mYWR2aXNlKHN0cnVjdCBmaWxlICpmaWxlLCBsb2ZmX3Qgb2Zmc2V0LCBsb2ZmX3QgbGVuLFxcbiBleHRlcm4gaW50IGdlbmVyaWNfZmFkdmlzZShzdHJ1Y3QgZmlsZSAqZmlsZSwgbG9mZl90IG9mZnNldCwgbG9mZl90IGxlbixcXG4gXFx0XFx0XFx0ICAgaW50IGFkdmljZSk7XFxuIFxcbisvKiBtbS9maWxlbWFwLmMgKi9cXG4rI2lmZGVmIENPTkZJR19DQUNIRVNUQVRfU1lTQ0FMTFxcbitpbnQgdmZzX2NhY2hlc3RhdChzdHJ1Y3QgZmlsZSAqZmlsZSwgc3RydWN0IGNhY2hlc3RhdF9yYW5nZSAqY3NyLFxcbitcXHRcXHQgIHN0cnVjdCBjYWNoZXN0YXQgKmNzKTtcXG4rI2VuZGlmXFxuK1xcbiBzdGF0aWMgaW5saW5lIGJvb2wgdmZzX2VtcHR5X3BhdGgoaW50IGRmZCwgY29uc3QgY2hhciBfX3VzZXIgKnBhdGgpXFxuIHtcXG4gXFx0Y2hhciBjO1xcbmRpZmYgLS1naXQgYS9tbS9maWxlbWFwLmMgYi9tbS9maWxlbWFwLmNcXG5pbmRleCA3ZTQ2N2M4MWQyMTM4OS4uOTA2MDhjNmIxY2U1NTEgMTAwNjQ0XFxuLS0tIGEvbW0vZmlsZW1hcC5jXFxuKysrIGIvbW0vZmlsZW1hcC5jXFxuQEAgLTQ3MTQsNiArNDcxNCwzNyBAQCBzdGF0aWMgaW5saW5lIGJvb2wgY2FuX2RvX2NhY2hlc3RhdChzdHJ1Y3QgZmlsZSAqZilcXG4gXFx0cmV0dXJuIGZpbGVfcGVybWlzc2lvbihmLCBNQVlfV1JJVEUpID09IDA7XFxuIH1cXG4gXFxuKy8qKlxcbisgKiB2ZnNfY2FjaGVzdGF0KCkgLSBxdWVyeSBwYWdlIGNhY2hlIHN0YXRpc3RpY3Mgb2YgYSBmaWxlXFxuKyAqIEBmaWxlOlxcdGZpbGUgdG8gcXVlcnlcXG4rICogQGNzcjpcXHRieXRlIHJhbmdlIHRvIHF1ZXJ5XFxuKyAqIEBjczpcXHRcXHRvdXRwdXQgc3RhdGlzdGljc1xcbisgKlxcbisgKiBDb21wdXRlIHRoZSBwYWdlIGNhY2hlIHN0YXRpc3RpY3MgZm9yIHRoZSBnaXZlbiBieXRlIHJhbmdlIG9mIEBmaWxlLlxcbisgKlxcbisgKiBTdGFja2FibGUgZmlsZXN5c3RlbXMgKGUuZy4gb3ZlcmxheWZzKSBrZWVwIHRoZSBkYXRhIHBhZ2VzIGluIHRoZVxcbisgKiBtYXBwaW5nIG9mIGFuIHVuZGVybHlpbmcgZmlsZSByYXRoZXIgdGhhbiBpbiBAZmlsZS1cXHUwMDNlZl9tYXBwaW5nLiBTdWNoXFxuKyAqIGZpbGVzeXN0ZW1zIHByb3ZpZGUgYSAtXFx1MDAzZWNhY2hlc3RhdCgpIGZpbGUgb3BlcmF0aW9uIHRoYXQgZm9yd2FyZHMgdGhlXFxuKyAqIHF1ZXJ5IHRvIHRoZSBmaWxlIHRoYXQgYWN0dWFsbHkgb3ducyB0aGUgcGFnZSBjYWNoZTsgb3RoZXJ3aXNlIHRoZVxcbisgKiBzdGF0aXN0aWNzIGFyZSBjb21wdXRlZCBmcm9tIEBmaWxlLVxcdTAwM2VmX21hcHBpbmcgZGlyZWN0bHkuXFxuKyAqL1xcbitpbnQgdmZzX2NhY2hlc3RhdChzdHJ1Y3QgZmlsZSAqZmlsZSwgc3RydWN0IGNhY2hlc3RhdF9yYW5nZSAqY3NyLFxcbitcXHRcXHQgIHN0cnVjdCBjYWNoZXN0YXQgKmNzKVxcbit7XFxuK1xcdHBnb2ZmX3QgZmlyc3RfaW5kZXgsIGxhc3RfaW5kZXg7XFxuK1xcbitcXHRpZiAoZmlsZS1cXHUwMDNlZl9vcC1cXHUwMDNlY2FjaGVzdGF0KVxcbitcXHRcXHRyZXR1cm4gZmlsZS1cXHUwMDNlZl9vcC1cXHUwMDNlY2FjaGVzdGF0KGZpbGUsIGNzciwgY3MpO1xcbitcXG4rXFx0Zmlyc3RfaW5kZXggPSBjc3ItXFx1MDAzZW9mZiBcXHUwMDNlXFx1MDAzZSBQQUdFX1NISUZUO1xcbitcXHRsYXN0X2luZGV4ID1cXG4rXFx0XFx0Y3NyLVxcdTAwM2VsZW4gPT0gMCA/IFVMT05HX01BWCA6IChjc3ItXFx1MDAzZW9mZiArIGNzci1cXHUwMDNlbGVuIC0gMSkgXFx1MDAzZVxcdTAwM2UgUEFHRV9TSElGVDtcXG4rXFx0bWVtc2V0KGNzLCAwLCBzaXplb2Yoc3RydWN0IGNhY2hlc3RhdCkpO1xcbitcXHRmaWxlbWFwX2NhY2hlc3RhdChmaWxlLVxcdTAwM2VmX21hcHBpbmcsIGZpcnN0X2luZGV4LCBsYXN0X2luZGV4LCBjcyk7XFxuK1xcdHJldHVybiAwO1xcbit9XFxuK0VYUE9SVF9TWU1CT0wodmZzX2NhY2hlc3RhdCk7XFxuK1xcbiAvKlxcbiAgKiBUaGUgY2FjaGVzdGF0KDIpIHN5c3RlbSBjYWxsLlxcbiAgKlxcbkBAIC00NzUzLDEwICs0Nzg0LDkgQEAgU1lTQ0FMTF9ERUZJTkU0KGNhY2hlc3RhdCwgdW5zaWduZWQgaW50LCBmZCxcXG4gXFx0XFx0c3RydWN0IGNhY2hlc3RhdCBfX3VzZXIgKiwgY3N0YXQsIHVuc2lnbmVkIGludCwgZmxhZ3MpXFxuIHtcXG4gXFx0Q0xBU1MoZmQsIGYpKGZkKTtcXG4tXFx0c3RydWN0IGFkZHJlc3Nfc3BhY2UgKm1hcHBpbmc7XFxuIFxcdHN0cnVjdCBjYWNoZXN0YXRfcmFuZ2UgY3NyO1xcbiBcXHRzdHJ1Y3QgY2FjaGVzdGF0IGNzO1xcbi1cXHRwZ29mZl90IGZpcnN0X2luZGV4LCBsYXN0X2luZGV4O1xcbitcXHRpbnQgcmV0O1xcbiBcXG4gXFx0aWYgKGZkX2VtcHR5KGYpKVxcbiBcXHRcXHRyZXR1cm4gLUVCQURGO1xcbkBAIC00Nzc1LDEyICs0ODA1LDkgQEAgU1lTQ0FMTF9ERUZJTkU0KGNhY2hlc3RhdCwgdW5zaWduZWQgaW50LCBmZCxcXG4gXFx0aWYgKGZsYWdzICE9IDApXFxuIFxcdFxcdHJldHVybiAtRUlOVkFMO1xcbiBcXG4tXFx0Zmlyc3RfaW5kZXggPSBjc3Iub2ZmIFxcdTAwM2VcXHUwMDNlIFBBR0VfU0hJRlQ7XFxuLVxcdGxhc3RfaW5kZXggPVxcbi1cXHRcXHRjc3IubGVuID09IDAgPyBVTE9OR19NQVggOiAoY3NyLm9mZiArIGNzci5sZW4gLSAxKSBcXHUwMDNlXFx1MDAzZSBQQUdFX1NISUZUO1xcbi1cXHRtZW1zZXQoXFx1MDAyNmNzLCAwLCBzaXplb2Yoc3RydWN0IGNhY2hlc3RhdCkpO1xcbi1cXHRtYXBwaW5nID0gZmRfZmlsZShmKS1cXHUwMDNlZl9tYXBwaW5nO1xcbi1cXHRmaWxlbWFwX2NhY2hlc3RhdChtYXBwaW5nLCBmaXJzdF9pbmRleCwgbGFzdF9pbmRleCwgXFx1MDAyNmNzKTtcXG4rXFx0cmV0ID0gdmZzX2NhY2hlc3RhdChmZF9maWxlKGYpLCBcXHUwMDI2Y3NyLCBcXHUwMDI2Y3MpO1xcbitcXHRpZiAocmV0KVxcbitcXHRcXHRyZXR1cm4gcmV0O1xcbiBcXG4gXFx0aWYgKGNvcHlfdG9fdXNlcihjc3RhdCwgXFx1MDAyNmNzLCBzaXplb2Yoc3RydWN0IGNhY2hlc3RhdCkpKVxcbiBcXHRcXHRyZXR1cm4gLUVGQVVMVDtcXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvY2FjaGVzdGF0L3Rlc3RfY2FjaGVzdGF0LmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9jYWNoZXN0YXQvdGVzdF9jYWNoZXN0YXQuY1xcbmluZGV4IDU0MmNkMDljYjQ0MzRlLi4xNjYyZDk4MTdjNTBiZiAxMDA2NDRcXG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9jYWNoZXN0YXQvdGVzdF9jYWNoZXN0YXQuY1xcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2NhY2hlc3RhdC90ZXN0X2NhY2hlc3RhdC5jXFxuQEAgLTQsMjEgKzQsMjUgQEBcXG4gXFxuICNpbmNsdWRlIFxcdTAwM2NzdGRpby5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXHUwMDNjc3RkYm9vbC5oXFx1MDAzZVxcbisjaW5jbHVkZSBcXHUwMDNjc3RkbGliLmhcXHUwMDNlXFxuICNpbmNsdWRlIFxcdTAwM2NsaW51eC9rZXJuZWwuaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L21hZ2ljLmhcXHUwMDNlXFxuICNpbmNsdWRlIFxcdTAwM2NsaW51eC9tbWFuLmhcXHUwMDNlXFxuICNpbmNsdWRlIFxcdTAwM2NzeXMvbW1hbi5oXFx1MDAzZVxcbisjaW5jbHVkZSBcXHUwMDNjc3lzL21vdW50LmhcXHUwMDNlXFxuICNpbmNsdWRlIFxcdTAwM2NzeXMvc2htLmhcXHUwMDNlXFxuKyNpbmNsdWRlIFxcdTAwM2NzeXMvc3RhdC5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXHUwMDNjc3lzL3N5c2NhbGwuaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY3N5cy92ZnMuaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY3VuaXN0ZC5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXHUwMDNjc3RyaW5nLmhcXHUwMDNlXFxuICNpbmNsdWRlIFxcdTAwM2NmY250bC5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXHUwMDNjZXJybm8uaFxcdTAwM2VcXG4rI2luY2x1ZGUgXFx1MDAzY2xpbWl0cy5oXFx1MDAzZVxcbiBcXG4gI2luY2x1ZGUgXFxcImtzZWxmdGVzdC5oXFxcIlxcbiBcXG4tI2RlZmluZSBOUl9URVNUU1xcdDlcXG4rI2RlZmluZSBOUl9URVNUU1xcdDExXFxuIFxcbiBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IGRldl9maWxlc1tdID0ge1xcbiBcXHRcXFwiL2Rldi96ZXJvXFxcIiwgXFxcIi9kZXYvbnVsbFxcXCIsIFxcXCIvZGV2L3VyYW5kb21cXFwiLFxcbkBAIC0yOTQsNiArMjk4LDYyIEBAIGJvb2wgcnVuX2NhY2hlc3RhdF90ZXN0KGVudW0gZmlsZV90eXBlIHR5cGUpXFxuIFxcdHJldHVybiByZXQ7XFxuIH1cXG4gXFxuKy8qXFxuKyAqIFNldCB1cCBhbiBvdmVybGF5ZnMgbW91bnQgYW5kIHJ1biBjYWNoZXN0YXQgb24gYSBmcmVzaGx5IGNyZWF0ZWQgZmlsZSBpbiB0aGVcXG4rICogbWVyZ2VkIGRpcmVjdG9yeS4gT3ZlcmxheWZzIGZvcndhcmRzIGRhdGEgSS9PIHRvIHRoZSB1bmRlcmx5aW5nICh1cHBlcilcXG4rICogaW5vZGUsIHNvIHRoZSBwYWdlIGNhY2hlIGxpdmVzIHRoZXJlIGFuZCBub3QgaW4gdGhlIG92ZXJsYXkgaW5vZGUncyBtYXBwaW5nLlxcbisgKiBUaGlzIGlzIGEgcmVncmVzc2lvbiB0ZXN0IGZvciBjYWNoZXN0YXQgcmV0dXJuaW5nIGFsbCB6ZXJvZXMgb24gb3ZlcmxheWZzLlxcbisgKi9cXG4rc3RhdGljIGludCBydW5fY2FjaGVzdGF0X292ZXJsYXlmc190ZXN0KHZvaWQpXFxuK3tcXG4rXFx0Y2hhciB0bXBsW10gPSBcXFwiL3RtcC9jYWNoZXN0YXRfb3ZsLlhYWFhYWFxcXCI7XFxuK1xcdGNoYXIgbG93ZXJbUEFUSF9NQVhdLCB1cHBlcltQQVRIX01BWF0sIHdvcmtbUEFUSF9NQVhdO1xcbitcXHRjaGFyIG1lcmdlZFtQQVRIX01BWF0sIG9wdHNbNCAqIFBBVEhfTUFYXSwgZmlsZVtQQVRIX01BWF07XFxuK1xcdGNoYXIgKmJhc2U7XFxuK1xcdGludCByZXQ7XFxuK1xcbitcXHRiYXNlID0gbWtkdGVtcCh0bXBsKTtcXG4rXFx0aWYgKCFiYXNlKSB7XFxuK1xcdFxcdGtzZnRfcHJpbnRfbXNnKFxcXCJVbmFibGUgdG8gY3JlYXRlIG92ZXJsYXlmcyBiYXNlIGRpcjogJXNcXFxcblxcXCIsXFxuK1xcdFxcdFxcdCAgICAgICBzdHJlcnJvcihlcnJubykpO1xcbitcXHRcXHRyZXR1cm4gS1NGVF9GQUlMO1xcbitcXHR9XFxuK1xcbitcXHRzbnByaW50Zihsb3dlciwgc2l6ZW9mKGxvd2VyKSwgXFxcIiVzL2xvd2VyXFxcIiwgYmFzZSk7XFxuK1xcdHNucHJpbnRmKHVwcGVyLCBzaXplb2YodXBwZXIpLCBcXFwiJXMvdXBwZXJcXFwiLCBiYXNlKTtcXG4rXFx0c25wcmludGYod29yaywgc2l6ZW9mKHdvcmspLCBcXFwiJXMvd29ya1xcXCIsIGJhc2UpO1xcbitcXHRzbnByaW50ZihtZXJnZWQsIHNpemVvZihtZXJnZWQpLCBcXFwiJXMvbWVyZ2VkXFxcIiwgYmFzZSk7XFxuK1xcbitcXHRpZiAobWtkaXIobG93ZXIsIDA3NTUpIHx8IG1rZGlyKHVwcGVyLCAwNzU1KSB8fFxcbitcXHQgICAgbWtkaXIod29yaywgMDc1NSkgfHwgbWtkaXIobWVyZ2VkLCAwNzU1KSkge1xcbitcXHRcXHRrc2Z0X3ByaW50X21zZyhcXFwiVW5hYmxlIHRvIGNyZWF0ZSBvdmVybGF5ZnMgZGlyczogJXNcXFxcblxcXCIsXFxuK1xcdFxcdFxcdCAgICAgICBzdHJlcnJvcihlcnJubykpO1xcbitcXHRcXHRyZXQgPSBLU0ZUX0ZBSUw7XFxuK1xcdFxcdGdvdG8gY2xlYW51cDtcXG4rXFx0fVxcbitcXG4rXFx0c25wcmludGYob3B0cywgc2l6ZW9mKG9wdHMpLCBcXFwibG93ZXJkaXI9JXMsdXBwZXJkaXI9JXMsd29ya2Rpcj0lc1xcXCIsXFxuK1xcdFxcdCBsb3dlciwgdXBwZXIsIHdvcmspO1xcbitcXG4rXFx0aWYgKG1vdW50KFxcXCJvdmVybGF5XFxcIiwgbWVyZ2VkLCBcXFwib3ZlcmxheVxcXCIsIDAsIG9wdHMpKSB7XFxuK1xcdFxcdGtzZnRfcHJpbnRfbXNnKFxcXCJVbmFibGUgdG8gbW91bnQgb3ZlcmxheWZzIChuZWVkIHJvb3Q/KTogJXNcXFxcblxcXCIsXFxuK1xcdFxcdFxcdCAgICAgICBzdHJlcnJvcihlcnJubykpO1xcbitcXHRcXHRyZXQgPSBLU0ZUX1NLSVA7XFxuK1xcdFxcdGdvdG8gY2xlYW51cDtcXG4rXFx0fVxcbitcXG4rXFx0c25wcmludGYoZmlsZSwgc2l6ZW9mKGZpbGUpLCBcXFwiJXMvbWVyZ2VkL2NhY2hlc3RhdFxcXCIsIGJhc2UpO1xcbitcXHRyZXQgPSB0ZXN0X2NhY2hlc3RhdChmaWxlLCB0cnVlLCB0cnVlLCBmYWxzZSwgNCwgT19DUkVBVCB8IE9fUkRXUiwgMDYwMCk7XFxuK1xcbitcXHR1bW91bnQobWVyZ2VkKTtcXG4rY2xlYW51cDpcXG4rXFx0LyogQmVzdC1lZmZvcnQgcmVjdXJzaXZlIGNsZWFudXAgb2YgdGhlIHRlbXBvcmFyeSB0cmVlLiAqL1xcbitcXHRzbnByaW50ZihvcHRzLCBzaXplb2Yob3B0cyksIFxcXCJybSAtcmYgJXNcXFwiLCBiYXNlKTtcXG4rXFx0aWYgKHN5c3RlbShvcHRzKSlcXG4rXFx0XFx0a3NmdF9wcmludF9tc2coXFxcIlVuYWJsZSB0byBjbGVhbiB1cCAlc1xcXFxuXFxcIiwgYmFzZSk7XFxuK1xcdHJldHVybiByZXQ7XFxuK31cXG4rXFxuIGludCBtYWluKHZvaWQpXFxuIHtcXG4gXFx0aW50IHJldDtcXG5AQCAtMzYxLDUgKzQyMSwxOCBAQCBpbnQgbWFpbih2b2lkKVxcbiBcXHRcXHRrc2Z0X3Rlc3RfcmVzdWx0X2ZhaWwoXFxcImNhY2hlc3RhdCBmYWlscyB3aXRoIGEgbW1hcCBmaWxlXFxcXG5cXFwiKTtcXG4gXFx0XFx0cmV0ID0gMTtcXG4gXFx0fVxcbitcXG4rXFx0c3dpdGNoIChydW5fY2FjaGVzdGF0X292ZXJsYXlmc190ZXN0KCkpIHtcXG4rXFx0Y2FzZSBLU0ZUX0ZBSUw6XFxuK1xcdFxcdGtzZnRfdGVzdF9yZXN1bHRfZmFpbChcXFwiY2FjaGVzdGF0IGZhaWxzIHdpdGggYW4gb3ZlcmxheWZzIGZpbGVcXFxcblxcXCIpO1xcbitcXHRcXHRyZXQgPSAxO1xcbitcXHRcXHRicmVhaztcXG4rXFx0Y2FzZSBLU0ZUX1BBU1M6XFxuK1xcdFxcdGtzZnRfdGVzdF9yZXN1bHRfcGFzcyhcXFwiY2FjaGVzdGF0IHdvcmtzIHdpdGggYW4gb3ZlcmxheWZzIGZpbGVcXFxcblxcXCIpO1xcbitcXHRcXHRicmVhaztcXG4rXFx0Y2FzZSBLU0ZUX1NLSVA6XFxuK1xcdFxcdGtzZnRfdGVzdF9yZXN1bHRfc2tpcChcXFwib3ZlcmxheWZzIG5vdCBhdmFpbGFibGVcXFxcblxcXCIpO1xcbitcXHRcXHRicmVhaztcXG4rXFx0fVxcbiBcXHRyZXR1cm4gcmV0O1xcbiB9XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTIzVDEyOjI1OjE1LjA2NTU2MzQzM1oiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MjUxNTY4MjIwNDQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQ0FDSEVTVEFUX1NZU0NBTExcIixcbiAgICBcIk9WRVJMQVlfRlNcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJvdmxfY2FjaGVzdGF0XCIsXG4gICAgXCJ2ZnNfY2FjaGVzdGF0XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggaW1wbGVtZW50cyB0aGUgY2FjaGVzdGF0IGZpbGUgb3BlcmF0aW9uIGZvciBvdmVybGF5ZnMsIGFsbG93aW5nIHRoZSBjYWNoZXN0YXQgc3lzY2FsbCB0byBjb3JyZWN0bHkgcXVlcnkgcGFnZSBjYWNoZSBzdGF0aXN0aWNzIGZvciBmaWxlcyBvbiBvdmVybGF5ZnMgYnkgZm9yd2FyZGluZyB0aGUgcmVxdWVzdCB0byB0aGUgdW5kZXJseWluZyBmaWxlLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdGhhdCBpbnRyb2R1Y2VzIG5ldyByZWFjaGFibGUgY29kZSBpbiB0aGUgVkZTIGFuZCBvdmVybGF5ZnMgbGF5ZXJzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG5ldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0XG4gICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksXG4gICBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDBiYzRhYzMyOWIwM2FkZTcwOGVmYjM5NzllNTRhOTI0MmI4OTJjMjlcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVHVlIEp1biAyMyAxMjoyNToxMyAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2ZzL292ZXJsYXlmcy9maWxlLmMgYi9mcy9vdmVybGF5ZnMvZmlsZS5jXG5pbmRleCAyN2NjMDc3MzhmMzNiZi4uYTdlMjUyYTkxZWE0MzUgMTAwNjQ0XG4tLS0gYS9mcy9vdmVybGF5ZnMvZmlsZS5jXG4rKysgYi9mcy9vdmVybGF5ZnMvZmlsZS5jXG5AQCAtNTE4LDYgKzUxOCwyMSBAQCBzdGF0aWMgaW50IG92bF9mYWR2aXNlKHN0cnVjdCBmaWxlICpmaWxlLCBsb2ZmX3Qgb2Zmc2V0LCBsb2ZmX3QgbGVuLCBpbnQgYWR2aWNlKVxuIFx0XHRyZXR1cm4gdmZzX2ZhZHZpc2UocmVhbGZpbGUsIG9mZnNldCwgbGVuLCBhZHZpY2UpO1xuIH1cbiBcbisjaWZkZWYgQ09ORklHX0NBQ0hFU1RBVF9TWVNDQUxMXG4rc3RhdGljIGludCBvdmxfY2FjaGVzdGF0KHN0cnVjdCBmaWxlICpmaWxlLCBzdHJ1Y3QgY2FjaGVzdGF0X3JhbmdlICpjc3IsXG4rXHRcdFx0IHN0cnVjdCBjYWNoZXN0YXQgKmNzKVxuK3tcbitcdHN0cnVjdCBmaWxlICpyZWFsZmlsZTtcbitcbitcdHJlYWxmaWxlID0gb3ZsX3JlYWxfZmlsZShmaWxlKTtcbitcdGlmIChJU19FUlIocmVhbGZpbGUpKVxuK1x0XHRyZXR1cm4gUFRSX0VSUihyZWFsZmlsZSk7XG4rXG4rXHR3aXRoX292bF9jcmVkcyhmaWxlX2lub2RlKGZpbGUpLVx1MDAzZWlfc2IpXG4rXHRcdHJldHVybiB2ZnNfY2FjaGVzdGF0KHJlYWxmaWxlLCBjc3IsIGNzKTtcbit9XG4rI2VuZGlmXG4rXG4gZW51bSBvdmxfY29weW9wIHtcbiBcdE9WTF9DT1BZLFxuIFx0T1ZMX0NMT05FLFxuQEAgLTY0Miw2ICs2NTcsOSBAQCBjb25zdCBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIG92bF9maWxlX29wZXJhdGlvbnMgPSB7XG4gXHQubW1hcFx0XHQ9IG92bF9tbWFwLFxuIFx0LmZhbGxvY2F0ZVx0PSBvdmxfZmFsbG9jYXRlLFxuIFx0LmZhZHZpc2VcdD0gb3ZsX2ZhZHZpc2UsXG4rI2lmZGVmIENPTkZJR19DQUNIRVNUQVRfU1lTQ0FMTFxuK1x0LmNhY2hlc3RhdFx0PSBvdmxfY2FjaGVzdGF0LFxuKyNlbmRpZlxuIFx0LmZsdXNoXHRcdD0gb3ZsX2ZsdXNoLFxuIFx0LnNwbGljZV9yZWFkICAgID0gb3ZsX3NwbGljZV9yZWFkLFxuIFx0LnNwbGljZV93cml0ZSAgID0gb3ZsX3NwbGljZV93cml0ZSxcbmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L2ZzLmggYi9pbmNsdWRlL2xpbnV4L2ZzLmhcbmluZGV4IDZkYTQ0NTczY2U0NTA4Li45NjZiNjU2NDcwN2U0OCAxMDA2NDRcbi0tLSBhL2luY2x1ZGUvbGludXgvZnMuaFxuKysrIGIvaW5jbHVkZS9saW51eC9mcy5oXG5AQCAtNTMsNiArNTMsOCBAQFxuIFxuIHN0cnVjdCBiZGlfd3JpdGViYWNrO1xuIHN0cnVjdCBiaW87XG4rc3RydWN0IGNhY2hlc3RhdF9yYW5nZTtcbitzdHJ1Y3QgY2FjaGVzdGF0O1xuIHN0cnVjdCBpb19jb21wX2JhdGNoO1xuIHN0cnVjdCBmaWVtYXBfZXh0ZW50X2luZm87XG4gc3RydWN0IGtpb2NiO1xuQEAgLTE5NjMsNiArMTk2NSw4IEBAIHN0cnVjdCBmaWxlX29wZXJhdGlvbnMge1xuIFx0XHRcdFx0ICAgc3RydWN0IGZpbGUgKmZpbGVfb3V0LCBsb2ZmX3QgcG9zX291dCxcbiBcdFx0XHRcdCAgIGxvZmZfdCBsZW4sIHVuc2lnbmVkIGludCByZW1hcF9mbGFncyk7XG4gXHRpbnQgKCpmYWR2aXNlKShzdHJ1Y3QgZmlsZSAqLCBsb2ZmX3QsIGxvZmZfdCwgaW50KTtcbitcdGludCAoKmNhY2hlc3RhdCkoc3RydWN0IGZpbGUgKmZpbGUsIHN0cnVjdCBjYWNoZXN0YXRfcmFuZ2UgKmNzcixcbitcdFx0XHQgc3RydWN0IGNhY2hlc3RhdCAqY3MpO1xuIFx0aW50ICgqdXJpbmdfY21kKShzdHJ1Y3QgaW9fdXJpbmdfY21kICppb3VjbWQsIHVuc2lnbmVkIGludCBpc3N1ZV9mbGFncyk7XG4gXHRpbnQgKCp1cmluZ19jbWRfaW9wb2xsKShzdHJ1Y3QgaW9fdXJpbmdfY21kICosIHN0cnVjdCBpb19jb21wX2JhdGNoICosXG4gXHRcdFx0XHR1bnNpZ25lZCBpbnQgcG9sbF9mbGFncyk7XG5AQCAtMzYzMyw2ICszNjM3LDEyIEBAIGV4dGVybiBpbnQgdmZzX2ZhZHZpc2Uoc3RydWN0IGZpbGUgKmZpbGUsIGxvZmZfdCBvZmZzZXQsIGxvZmZfdCBsZW4sXG4gZXh0ZXJuIGludCBnZW5lcmljX2ZhZHZpc2Uoc3RydWN0IGZpbGUgKmZpbGUsIGxvZmZfdCBvZmZzZXQsIGxvZmZfdCBsZW4sXG4gXHRcdFx0ICAgaW50IGFkdmljZSk7XG4gXG4rLyogbW0vZmlsZW1hcC5jICovXG4rI2lmZGVmIENPTkZJR19DQUNIRVNUQVRfU1lTQ0FMTFxuK2ludCB2ZnNfY2FjaGVzdGF0KHN0cnVjdCBmaWxlICpmaWxlLCBzdHJ1Y3QgY2FjaGVzdGF0X3JhbmdlICpjc3IsXG4rXHRcdCAgc3RydWN0IGNhY2hlc3RhdCAqY3MpO1xuKyNlbmRpZlxuK1xuIHN0YXRpYyBpbmxpbmUgYm9vbCB2ZnNfZW1wdHlfcGF0aChpbnQgZGZkLCBjb25zdCBjaGFyIF9fdXNlciAqcGF0aClcbiB7XG4gXHRjaGFyIGM7XG5kaWZmIC0tZ2l0IGEvbW0vZmlsZW1hcC5jIGIvbW0vZmlsZW1hcC5jXG5pbmRleCA3ZTQ2N2M4MWQyMTM4OS4uOTA2MDhjNmIxY2U1NTEgMTAwNjQ0XG4tLS0gYS9tbS9maWxlbWFwLmNcbisrKyBiL21tL2ZpbGVtYXAuY1xuQEAgLTQ3MTQsNiArNDcxNCwzNyBAQCBzdGF0aWMgaW5saW5lIGJvb2wgY2FuX2RvX2NhY2hlc3RhdChzdHJ1Y3QgZmlsZSAqZilcbiBcdHJldHVybiBmaWxlX3Blcm1pc3Npb24oZiwgTUFZX1dSSVRFKSA9PSAwO1xuIH1cbiBcbisvKipcbisgKiB2ZnNfY2FjaGVzdGF0KCkgLSBxdWVyeSBwYWdlIGNhY2hlIHN0YXRpc3RpY3Mgb2YgYSBmaWxlXG4rICogQGZpbGU6XHRmaWxlIHRvIHF1ZXJ5XG4rICogQGNzcjpcdGJ5dGUgcmFuZ2UgdG8gcXVlcnlcbisgKiBAY3M6XHRcdG91dHB1dCBzdGF0aXN0aWNzXG4rICpcbisgKiBDb21wdXRlIHRoZSBwYWdlIGNhY2hlIHN0YXRpc3RpY3MgZm9yIHRoZSBnaXZlbiBieXRlIHJhbmdlIG9mIEBmaWxlLlxuKyAqXG4rICogU3RhY2thYmxlIGZpbGVzeXN0ZW1zIChlLmcuIG92ZXJsYXlmcykga2VlcCB0aGUgZGF0YSBwYWdlcyBpbiB0aGVcbisgKiBtYXBwaW5nIG9mIGFuIHVuZGVybHlpbmcgZmlsZSByYXRoZXIgdGhhbiBpbiBAZmlsZS1cdTAwM2VmX21hcHBpbmcuIFN1Y2hcbisgKiBmaWxlc3lzdGVtcyBwcm92aWRlIGEgLVx1MDAzZWNhY2hlc3RhdCgpIGZpbGUgb3BlcmF0aW9uIHRoYXQgZm9yd2FyZHMgdGhlXG4rICogcXVlcnkgdG8gdGhlIGZpbGUgdGhhdCBhY3R1YWxseSBvd25zIHRoZSBwYWdlIGNhY2hlOyBvdGhlcndpc2UgdGhlXG4rICogc3RhdGlzdGljcyBhcmUgY29tcHV0ZWQgZnJvbSBAZmlsZS1cdTAwM2VmX21hcHBpbmcgZGlyZWN0bHkuXG4rICovXG4raW50IHZmc19jYWNoZXN0YXQoc3RydWN0IGZpbGUgKmZpbGUsIHN0cnVjdCBjYWNoZXN0YXRfcmFuZ2UgKmNzcixcbitcdFx0ICBzdHJ1Y3QgY2FjaGVzdGF0ICpjcylcbit7XG4rXHRwZ29mZl90IGZpcnN0X2luZGV4LCBsYXN0X2luZGV4O1xuK1xuK1x0aWYgKGZpbGUtXHUwMDNlZl9vcC1cdTAwM2VjYWNoZXN0YXQpXG4rXHRcdHJldHVybiBmaWxlLVx1MDAzZWZfb3AtXHUwMDNlY2FjaGVzdGF0KGZpbGUsIGNzciwgY3MpO1xuK1xuK1x0Zmlyc3RfaW5kZXggPSBjc3ItXHUwMDNlb2ZmIFx1MDAzZVx1MDAzZSBQQUdFX1NISUZUO1xuK1x0bGFzdF9pbmRleCA9XG4rXHRcdGNzci1cdTAwM2VsZW4gPT0gMCA/IFVMT05HX01BWCA6IChjc3ItXHUwMDNlb2ZmICsgY3NyLVx1MDAzZWxlbiAtIDEpIFx1MDAzZVx1MDAzZSBQQUdFX1NISUZUO1xuK1x0bWVtc2V0KGNzLCAwLCBzaXplb2Yoc3RydWN0IGNhY2hlc3RhdCkpO1xuK1x0ZmlsZW1hcF9jYWNoZXN0YXQoZmlsZS1cdTAwM2VmX21hcHBpbmcsIGZpcnN0X2luZGV4LCBsYXN0X2luZGV4LCBjcyk7XG4rXHRyZXR1cm4gMDtcbit9XG4rRVhQT1JUX1NZTUJPTCh2ZnNfY2FjaGVzdGF0KTtcbitcbiAvKlxuICAqIFRoZSBjYWNoZXN0YXQoMikgc3lzdGVtIGNhbGwuXG4gICpcbkBAIC00NzUzLDEwICs0Nzg0LDkgQEAgU1lTQ0FMTF9ERUZJTkU0KGNhY2hlc3RhdCwgdW5zaWduZWQgaW50LCBmZCxcbiBcdFx0c3RydWN0IGNhY2hlc3RhdCBfX3VzZXIgKiwgY3N0YXQsIHVuc2lnbmVkIGludCwgZmxhZ3MpXG4ge1xuIFx0Q0xBU1MoZmQsIGYpKGZkKTtcbi1cdHN0cnVjdCBhZGRyZXNzX3NwYWNlICptYXBwaW5nO1xuIFx0c3RydWN0IGNhY2hlc3RhdF9yYW5nZSBjc3I7XG4gXHRzdHJ1Y3QgY2FjaGVzdGF0IGNzO1xuLVx0cGdvZmZfdCBmaXJzdF9pbmRleCwgbGFzdF9pbmRleDtcbitcdGludCByZXQ7XG4gXG4gXHRpZiAoZmRfZW1wdHkoZikpXG4gXHRcdHJldHVybiAtRUJBREY7XG5AQCAtNDc3NSwxMiArNDgwNSw5IEBAIFNZU0NBTExfREVGSU5FNChjYWNoZXN0YXQsIHVuc2lnbmVkIGludCwgZmQsXG4gXHRpZiAoZmxhZ3MgIT0gMClcbiBcdFx0cmV0dXJuIC1FSU5WQUw7XG4gXG4tXHRmaXJzdF9pbmRleCA9IGNzci5vZmYgXHUwMDNlXHUwMDNlIFBBR0VfU0hJRlQ7XG4tXHRsYXN0X2luZGV4ID1cbi1cdFx0Y3NyLmxlbiA9PSAwID8gVUxPTkdfTUFYIDogKGNzci5vZmYgKyBjc3IubGVuIC0gMSkgXHUwMDNlXHUwMDNlIFBBR0VfU0hJRlQ7XG4tXHRtZW1zZXQoXHUwMDI2Y3MsIDAsIHNpemVvZihzdHJ1Y3QgY2FjaGVzdGF0KSk7XG4tXHRtYXBwaW5nID0gZmRfZmlsZShmKS1cdTAwM2VmX21hcHBpbmc7XG4tXHRmaWxlbWFwX2NhY2hlc3RhdChtYXBwaW5nLCBmaXJzdF9pbmRleCwgbGFzdF9pbmRleCwgXHUwMDI2Y3MpO1xuK1x0cmV0ID0gdmZzX2NhY2hlc3RhdChmZF9maWxlKGYpLCBcdTAwMjZjc3IsIFx1MDAyNmNzKTtcbitcdGlmIChyZXQpXG4rXHRcdHJldHVybiByZXQ7XG4gXG4gXHRpZiAoY29weV90b191c2VyKGNzdGF0LCBcdTAwMjZjcywgc2l6ZW9mKHN0cnVjdCBjYWNoZXN0YXQpKSlcbiBcdFx0cmV0dXJuIC1FRkFVTFQ7XG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvY2FjaGVzdGF0L3Rlc3RfY2FjaGVzdGF0LmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9jYWNoZXN0YXQvdGVzdF9jYWNoZXN0YXQuY1xuaW5kZXggNTQyY2QwOWNiNDQzNGUuLjE2NjJkOTgxN2M1MGJmIDEwMDY0NFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvY2FjaGVzdGF0L3Rlc3RfY2FjaGVzdGF0LmNcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2NhY2hlc3RhdC90ZXN0X2NhY2hlc3RhdC5jXG5AQCAtNCwyMSArNCwyNSBAQFxuIFxuICNpbmNsdWRlIFx1MDAzY3N0ZGlvLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NzdGRib29sLmhcdTAwM2VcbisjaW5jbHVkZSBcdTAwM2NzdGRsaWIuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L2tlcm5lbC5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvbWFnaWMuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L21tYW4uaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY3N5cy9tbWFuLmhcdTAwM2VcbisjaW5jbHVkZSBcdTAwM2NzeXMvbW91bnQuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY3N5cy9zaG0uaFx1MDAzZVxuKyNpbmNsdWRlIFx1MDAzY3N5cy9zdGF0LmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NzeXMvc3lzY2FsbC5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjc3lzL3Zmcy5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjdW5pc3RkLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NzdHJpbmcuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2ZjbnRsLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NlcnJuby5oXHUwMDNlXG4rI2luY2x1ZGUgXHUwMDNjbGltaXRzLmhcdTAwM2VcbiBcbiAjaW5jbHVkZSBcImtzZWxmdGVzdC5oXCJcbiBcbi0jZGVmaW5lIE5SX1RFU1RTXHQ5XG4rI2RlZmluZSBOUl9URVNUU1x0MTFcbiBcbiBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IGRldl9maWxlc1tdID0ge1xuIFx0XCIvZGV2L3plcm9cIiwgXCIvZGV2L251bGxcIiwgXCIvZGV2L3VyYW5kb21cIixcbkBAIC0yOTQsNiArMjk4LDYyIEBAIGJvb2wgcnVuX2NhY2hlc3RhdF90ZXN0KGVudW0gZmlsZV90eXBlIHR5cGUpXG4gXHRyZXR1cm4gcmV0O1xuIH1cbiBcbisvKlxuKyAqIFNldCB1cCBhbiBvdmVybGF5ZnMgbW91bnQgYW5kIHJ1biBjYWNoZXN0YXQgb24gYSBmcmVzaGx5IGNyZWF0ZWQgZmlsZSBpbiB0aGVcbisgKiBtZXJnZWQgZGlyZWN0b3J5LiBPdmVybGF5ZnMgZm9yd2FyZHMgZGF0YSBJL08gdG8gdGhlIHVuZGVybHlpbmcgKHVwcGVyKVxuKyAqIGlub2RlLCBzbyB0aGUgcGFnZSBjYWNoZSBsaXZlcyB0aGVyZSBhbmQgbm90IGluIHRoZSBvdmVybGF5IGlub2RlJ3MgbWFwcGluZy5cbisgKiBUaGlzIGlzIGEgcmVncmVzc2lvbiB0ZXN0IGZvciBjYWNoZXN0YXQgcmV0dXJuaW5nIGFsbCB6ZXJvZXMgb24gb3ZlcmxheWZzLlxuKyAqL1xuK3N0YXRpYyBpbnQgcnVuX2NhY2hlc3RhdF9vdmVybGF5ZnNfdGVzdCh2b2lkKVxuK3tcbitcdGNoYXIgdG1wbFtdID0gXCIvdG1wL2NhY2hlc3RhdF9vdmwuWFhYWFhYXCI7XG4rXHRjaGFyIGxvd2VyW1BBVEhfTUFYXSwgdXBwZXJbUEFUSF9NQVhdLCB3b3JrW1BBVEhfTUFYXTtcbitcdGNoYXIgbWVyZ2VkW1BBVEhfTUFYXSwgb3B0c1s0ICogUEFUSF9NQVhdLCBmaWxlW1BBVEhfTUFYXTtcbitcdGNoYXIgKmJhc2U7XG4rXHRpbnQgcmV0O1xuK1xuK1x0YmFzZSA9IG1rZHRlbXAodG1wbCk7XG4rXHRpZiAoIWJhc2UpIHtcbitcdFx0a3NmdF9wcmludF9tc2coXCJVbmFibGUgdG8gY3JlYXRlIG92ZXJsYXlmcyBiYXNlIGRpcjogJXNcXG5cIixcbitcdFx0XHQgICAgICAgc3RyZXJyb3IoZXJybm8pKTtcbitcdFx0cmV0dXJuIEtTRlRfRkFJTDtcbitcdH1cbitcbitcdHNucHJpbnRmKGxvd2VyLCBzaXplb2YobG93ZXIpLCBcIiVzL2xvd2VyXCIsIGJhc2UpO1xuK1x0c25wcmludGYodXBwZXIsIHNpemVvZih1cHBlciksIFwiJXMvdXBwZXJcIiwgYmFzZSk7XG4rXHRzbnByaW50Zih3b3JrLCBzaXplb2Yod29yayksIFwiJXMvd29ya1wiLCBiYXNlKTtcbitcdHNucHJpbnRmKG1lcmdlZCwgc2l6ZW9mKG1lcmdlZCksIFwiJXMvbWVyZ2VkXCIsIGJhc2UpO1xuK1xuK1x0aWYgKG1rZGlyKGxvd2VyLCAwNzU1KSB8fCBta2Rpcih1cHBlciwgMDc1NSkgfHxcbitcdCAgICBta2Rpcih3b3JrLCAwNzU1KSB8fCBta2RpcihtZXJnZWQsIDA3NTUpKSB7XG4rXHRcdGtzZnRfcHJpbnRfbXNnKFwiVW5hYmxlIHRvIGNyZWF0ZSBvdmVybGF5ZnMgZGlyczogJXNcXG5cIixcbitcdFx0XHQgICAgICAgc3RyZXJyb3IoZXJybm8pKTtcbitcdFx0cmV0ID0gS1NGVF9GQUlMO1xuK1x0XHRnb3RvIGNsZWFudXA7XG4rXHR9XG4rXG4rXHRzbnByaW50ZihvcHRzLCBzaXplb2Yob3B0cyksIFwibG93ZXJkaXI9JXMsdXBwZXJkaXI9JXMsd29ya2Rpcj0lc1wiLFxuK1x0XHQgbG93ZXIsIHVwcGVyLCB3b3JrKTtcbitcbitcdGlmIChtb3VudChcIm92ZXJsYXlcIiwgbWVyZ2VkLCBcIm92ZXJsYXlcIiwgMCwgb3B0cykpIHtcbitcdFx0a3NmdF9wcmludF9tc2coXCJVbmFibGUgdG8gbW91bnQgb3ZlcmxheWZzIChuZWVkIHJvb3Q/KTogJXNcXG5cIixcbitcdFx0XHQgICAgICAgc3RyZXJyb3IoZXJybm8pKTtcbitcdFx0cmV0ID0gS1NGVF9TS0lQO1xuK1x0XHRnb3RvIGNsZWFudXA7XG4rXHR9XG4rXG4rXHRzbnByaW50ZihmaWxlLCBzaXplb2YoZmlsZSksIFwiJXMvbWVyZ2VkL2NhY2hlc3RhdFwiLCBiYXNlKTtcbitcdHJldCA9IHRlc3RfY2FjaGVzdGF0KGZpbGUsIHRydWUsIHRydWUsIGZhbHNlLCA0LCBPX0NSRUFUIHwgT19SRFdSLCAwNjAwKTtcbitcbitcdHVtb3VudChtZXJnZWQpO1xuK2NsZWFudXA6XG4rXHQvKiBCZXN0LWVmZm9ydCByZWN1cnNpdmUgY2xlYW51cCBvZiB0aGUgdGVtcG9yYXJ5IHRyZWUuICovXG4rXHRzbnByaW50ZihvcHRzLCBzaXplb2Yob3B0cyksIFwicm0gLXJmICVzXCIsIGJhc2UpO1xuK1x0aWYgKHN5c3RlbShvcHRzKSlcbitcdFx0a3NmdF9wcmludF9tc2coXCJVbmFibGUgdG8gY2xlYW4gdXAgJXNcXG5cIiwgYmFzZSk7XG4rXHRyZXR1cm4gcmV0O1xuK31cbitcbiBpbnQgbWFpbih2b2lkKVxuIHtcbiBcdGludCByZXQ7XG5AQCAtMzYxLDUgKzQyMSwxOCBAQCBpbnQgbWFpbih2b2lkKVxuIFx0XHRrc2Z0X3Rlc3RfcmVzdWx0X2ZhaWwoXCJjYWNoZXN0YXQgZmFpbHMgd2l0aCBhIG1tYXAgZmlsZVxcblwiKTtcbiBcdFx0cmV0ID0gMTtcbiBcdH1cbitcbitcdHN3aXRjaCAocnVuX2NhY2hlc3RhdF9vdmVybGF5ZnNfdGVzdCgpKSB7XG4rXHRjYXNlIEtTRlRfRkFJTDpcbitcdFx0a3NmdF90ZXN0X3Jlc3VsdF9mYWlsKFwiY2FjaGVzdGF0IGZhaWxzIHdpdGggYW4gb3ZlcmxheWZzIGZpbGVcXG5cIik7XG4rXHRcdHJldCA9IDE7XG4rXHRcdGJyZWFrO1xuK1x0Y2FzZSBLU0ZUX1BBU1M6XG4rXHRcdGtzZnRfdGVzdF9yZXN1bHRfcGFzcyhcImNhY2hlc3RhdCB3b3JrcyB3aXRoIGFuIG92ZXJsYXlmcyBmaWxlXFxuXCIpO1xuK1x0XHRicmVhaztcbitcdGNhc2UgS1NGVF9TS0lQOlxuK1x0XHRrc2Z0X3Rlc3RfcmVzdWx0X3NraXAoXCJvdmVybGF5ZnMgbm90IGF2YWlsYWJsZVxcblwiKTtcbitcdFx0YnJlYWs7XG4rXHR9XG4gXHRyZXR1cm4gcmV0O1xuIH1cbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTIzVDEyOjI1OjE1LjA2NTU2NTI2M1oiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU1MjEzNDc3ODUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudCBvZiB0aGUgT3ZlcmxheWZzIENhY2hlc3RhdCBQYXRjaCoqXG5cbk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgYWRkaW5nIGBjYWNoZXN0YXRgIGZ1bmN0aW9uYWxpdHkgdG8gb3ZlcmxheWZzLCB3aGljaCBpcyBhIHByZXR0eSB1c2VmdWwgZW5oYW5jZW1lbnQuIEl0IGxvb2tzIGxpa2UgdGhlIG1haW4gdGhydXN0IGlzIHRvIGFkZCBhIG5ldyBgY2FjaGVzdGF0YCBmaWxlIG9wZXJhdGlvbiwgYG92bF9jYWNoZXN0YXRgLCB0byB0aGUgYHN0cnVjdCBmaWxlX29wZXJhdGlvbnNgIGZvciBvdmVybGF5ZnMuIFRoZSBwYXRjaCB0aGVuIGNsZXZlcmx5IG1vZGlmaWVzIGB2ZnNfY2FjaGVzdGF0YCB0byB1dGlsaXplIHRoZSBuZXdseSBkZWZpbmVkIGBmaWxlLVx1MDAzZWZfb3AtXHUwMDNlY2FjaGVzdGF0YCBpZiBpdCdzIGF2YWlsYWJsZS4gRnVydGhlcm1vcmUsIHRoZSBzeXN0ZW0gY2FsbCBpbnRlcmZhY2UsIGBzeXNfY2FjaGVzdGF0YCwgaXMgdXBkYXRlZCB0byBjYWxsIHRoZSBgdmZzX2NhY2hlc3RhdGAgZnVuY3Rpb24uXG5cblRoZSByYXRpb25hbGUgc2VlbXMgY2xlYXI6IHRoZSBleGlzdGluZyBgY2FjaGVzdGF0YCBzeXNjYWxsIHdhc24ndCB3b3JraW5nIGNvcnJlY3RseSBmb3Igb3ZlcmxheWZzIGJlY2F1c2UgdGhlIGRhdGEgcGFnZXMgYXJlIGFjdHVhbGx5IHN0b3JlZCBpbiB0aGUgdW5kZXJseWluZyBmaWxlJ3MgbWFwcGluZywgbm90IHRoZSBvdmVybGF5J3MuIFRoaXMgcGF0Y2ggZGlyZWN0bHkgYWRkcmVzc2VzIHRoYXQgc2hvcnRjb21pbmcsIHByb3ZpZGluZyBtb3JlIGFjY3VyYXRlIGNhY2hlIHN0YXRpc3RpY3MgaW4gdGhlIG92ZXJsYXlmcyBjb250ZXh0LlxuXG5Ob3csIGxldCdzIG1ha2Ugc3VyZSBldmVyeXRoaW5nJ3MgaW4gb3JkZXIsIGNvbmZpZ3VyYXRpb24td2lzZS4gVGhlIHBhdGNoIG1lbnRpb25zIGBDT05GSUdfQ0FDSEVTVEFUX1NZU0NBTExgLCBhbmQgb2J2aW91c2x5IGBDT05GSUdfT1ZFUkxBWV9GU2AgaXMgcmVxdWlyZWQgZm9yIG92ZXJsYXlmcyBzdXBwb3J0LiBUaW1lIHRvIHZlcmlmeSB0aGF0IGBDT05GSUdfQ0FDSEVTVEFUX1NZU0NBTExgIGlzIGEgcmVhbCB0aGluZy4gSSdsbCB1c2UgYGdyZXBwZXJgIHRvIGZpbmQgb3V0LlxuXG5cbiIsIklucHV0VG9rZW5zIjo0NzcwLCJPdXRwdXRUb2tlbnMiOjIyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjIzLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjNUMTI6MjU6MjAuNTg2OTE1Nzg4WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIyMjc3NzU2MjMsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiQ0FDSEVTVEFUX1NZU0NBTExcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZnMvb3ZlcmxheWZzL2ZpbGUuYz01MDk9c3RhdGljIGludCBvdmxfZmFkdmlzZShzdHJ1Y3QgZmlsZSAqZmlsZSwgbG9mZl90IG9mZnNldCwgbG9mZl90IGxlbiwgaW50IGFkdmljZSlcXG4tLVxcbmZzL292ZXJsYXlmcy9maWxlLmMtNTIwLVxcbmZzL292ZXJsYXlmcy9maWxlLmM6NTIxOiNpZmRlZiBDT05GSUdfQ0FDSEVTVEFUX1NZU0NBTExcXG5mcy9vdmVybGF5ZnMvZmlsZS5jLTUyMi1zdGF0aWMgaW50IG92bF9jYWNoZXN0YXQoc3RydWN0IGZpbGUgKmZpbGUsIHN0cnVjdCBjYWNoZXN0YXRfcmFuZ2UgKmNzcixcXG4tLVxcbmZzL292ZXJsYXlmcy9maWxlLmM9NjUwPWNvbnN0IHN0cnVjdCBmaWxlX29wZXJhdGlvbnMgb3ZsX2ZpbGVfb3BlcmF0aW9ucyA9IHtcXG4tLVxcbmZzL292ZXJsYXlmcy9maWxlLmMtNjU5LVxcdC5mYWR2aXNlXFx0PSBvdmxfZmFkdmlzZSxcXG5mcy9vdmVybGF5ZnMvZmlsZS5jOjY2MDojaWZkZWYgQ09ORklHX0NBQ0hFU1RBVF9TWVNDQUxMXFxuZnMvb3ZlcmxheWZzL2ZpbGUuYy02NjEtXFx0LmNhY2hlc3RhdFxcdD0gb3ZsX2NhY2hlc3RhdCxcXG4tLVxcbmluY2x1ZGUvbGludXgvZnMuaD0zNjM3PWV4dGVybiBpbnQgZ2VuZXJpY19mYWR2aXNlKHN0cnVjdCBmaWxlICpmaWxlLCBsb2ZmX3Qgb2Zmc2V0LCBsb2ZmX3QgbGVuLFxcbi0tXFxuaW5jbHVkZS9saW51eC9mcy5oLTM2NDAtLyogbW0vZmlsZW1hcC5jICovXFxuaW5jbHVkZS9saW51eC9mcy5oOjM2NDE6I2lmZGVmIENPTkZJR19DQUNIRVNUQVRfU1lTQ0FMTFxcbmluY2x1ZGUvbGludXgvZnMuaC0zNjQyLWludCB2ZnNfY2FjaGVzdGF0KHN0cnVjdCBmaWxlICpmaWxlLCBzdHJ1Y3QgY2FjaGVzdGF0X3JhbmdlICpjc3IsXFxuLS1cXG5pbml0L0tjb25maWc9MjAzMT1jb25maWcgREVCVUdfUlNFUVxcbi0tXFxuaW5pdC9LY29uZmlnLTIwNDAtXFxuaW5pdC9LY29uZmlnOjIwNDE6Y29uZmlnIENBQ0hFU1RBVF9TWVNDQUxMXFxuaW5pdC9LY29uZmlnLTIwNDItXFx0Ym9vbCBcXFwiRW5hYmxlIGNhY2hlc3RhdCgpIHN5c3RlbSBjYWxsXFxcIiBpZiBFWFBFUlRcXG4tLVxcbm1tL2ZpbGVtYXAuYz00NTkyPUVYUE9SVF9TWU1CT0xfR1BMKGZpbGVtYXBfaW52YWxpZGF0ZV9pbm9kZSk7XFxubW0vZmlsZW1hcC5jLTQ1OTMtXFxubW0vZmlsZW1hcC5jOjQ1OTQ6I2lmZGVmIENPTkZJR19DQUNIRVNUQVRfU1lTQ0FMTFxcbm1tL2ZpbGVtYXAuYy00NTk1LS8qKlxcbi0tXFxubW0vZmlsZW1hcC5jPTQ3ODI9U1lTQ0FMTF9ERUZJTkU0KGNhY2hlc3RhdCwgdW5zaWduZWQgaW50LCBmZCxcXG4tLVxcbm1tL2ZpbGVtYXAuYy00ODE2LX1cXG5tbS9maWxlbWFwLmM6NDgxNzojZW5kaWYgLyogQ09ORklHX0NBQ0hFU1RBVF9TWVNDQUxMICovXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTIzVDEyOjI1OjIyLjgxNDY5NjcyMVoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjUxNzM5MDIyOTIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqS2VybmVsIENhY2hlc3RhdCBJbXBsZW1lbnRhdGlvbiBUaG91Z2h0cyoqXG5cbk9rYXksIHNvIGBDQUNIRVNUQVRfU1lTQ0FMTGAgKmlzKiBhIGxlZ2l0aW1hdGUgY29uZmlndXJhdGlvbiBvcHRpb24uIEdvb2QuIEFuZCwgb2YgY291cnNlLCB3ZSdsbCBuZWVkIGBPVkVSTEFZX0ZTYCBlbmFibGVkIGZvciB0aGlzIHRvIGJlIHJlbGV2YW50LiBUaGF0J3MgbG9naWNhbC5cblxuSSBzaG91bGQgZm9jdXMgbXkgYXR0ZW50aW9uIG9uIHRoZXNlIGtleSBmdW5jdGlvbnM6IGBvdmxfY2FjaGVzdGF0YCwgYHZmc19jYWNoZXN0YXRgLCBhbmQgYHN5c19jYWNoZXN0YXRgIChvciB0aGUgYXJjaGl0ZWN0dXJlLXNwZWNpZmljIHZhcmlhbnQgbGlrZSBgX194NjRfc3lzX2NhY2hlc3RhdGAsIGJ1dCBgdmZzX2NhY2hlc3RhdGAgYW5kIGBvdmxfY2FjaGVzdGF0YCBhcmUgbGlrZWx5IHRoZSBtb3JlIGNyaXRpY2FsIG9uZXMpLlxuXG5Ob3csIHRoZSBpbXBvcnRhbnQgcXVlc3Rpb246IElzIGBvdmxfY2FjaGVzdGF0YCBhY3R1YWxseSByZWFjaGFibGU/IExldCBtZSB0aGluay4uLiB5ZXMsIHRoZSBjYWxsIGNoYWluIGFwcGVhcnMgdG8gYmU6IGBzeXNfY2FjaGVzdGF0YCBnZXRzIHRvIGB2ZnNfY2FjaGVzdGF0YCBhbmQgdGhhdCwgaW4gdHVybiwgZ29lcyB0byBgZmlsZS1cdTAwM2VmX29wLVx1MDAzZWNhY2hlc3RhdGAuIFRoYXQncyB0aGUgcGF0aC5cblxuSnVzdCB0byBiZSBhYnNvbHV0ZWx5IHN1cmUsIEknbGwgcXVpY2tseSBkb3VibGUtY2hlY2sgYGluaXQvS2NvbmZpZ2AgdG8gY29uZmlybSB0aGF0IGBDQUNIRVNUQVRfU1lTQ0FMTGAgaXMgcHJvcGVybHkgZGVmaW5lZCBhbmQgcGxhY2VkLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1ODgyLCJPdXRwdXRUb2tlbnMiOjMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTU4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTIzVDEyOjI1OjI3Ljk4ODYwMTA0M1oiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE0NjQ1MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJpbml0L0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMjAzNSxcbiAgXCJMaW5lQ291bnRcIjogMjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiMjAzNTpcXHRcXHRzZWxlY3QgUlNFUV9ERUJVR19ERUZBVUxUX0VOQUJMRVxcbjIwMzY6XFx0XFx0aGVscFxcbjIwMzc6XFx0XFx0ICBFbmFibGUgZXh0cmEgZGVidWdnaW5nIGNoZWNrcyBmb3IgdGhlIHJzZXEgc3lzdGVtIGNhbGwuXFxuMjAzODpcXHRcXG4yMDM5OlxcdFxcdCAgSWYgdW5zdXJlLCBzYXkgTi5cXG4yMDQwOlxcdFxcbjIwNDE6XFx0Y29uZmlnIENBQ0hFU1RBVF9TWVNDQUxMXFxuMjA0MjpcXHRcXHRib29sIFxcXCJFbmFibGUgY2FjaGVzdGF0KCkgc3lzdGVtIGNhbGxcXFwiIGlmIEVYUEVSVFxcbjIwNDM6XFx0XFx0ZGVmYXVsdCB5XFxuMjA0NDpcXHRcXHRoZWxwXFxuMjA0NTpcXHRcXHQgIEVuYWJsZSB0aGUgY2FjaGVzdGF0IHN5c3RlbSBjYWxsLCB3aGljaCBxdWVyaWVzIHRoZSBwYWdlIGNhY2hlXFxuMjA0NjpcXHRcXHQgIHN0YXRpc3RpY3Mgb2YgYSBmaWxlIChudW1iZXIgb2YgY2FjaGVkIHBhZ2VzLCBkaXJ0eSBwYWdlcyxcXG4yMDQ3OlxcdFxcdCAgcGFnZXMgbWFya2VkIGZvciB3cml0ZWJhY2ssIChyZWNlbnRseSkgZXZpY3RlZCBwYWdlcykuXFxuMjA0ODpcXHRcXG4yMDQ5OlxcdFxcdCAgSWYgdW5zdXJlIHNheSBZIGhlcmUuXFxuMjA1MDpcXHRcXG4yMDUxOlxcdGNvbmZpZyBLQUxMU1lNU1xcbjIwNTI6XFx0XFx0Ym9vbCBcXFwiTG9hZCBhbGwgc3ltYm9scyBmb3IgZGVidWdnaW5nL2tzeW1vb3BzXFxcIiBpZiBFWFBFUlRcXG4yMDUzOlxcdFxcdGRlZmF1bHQgeVxcbjIwNTQ6XFx0XFx0aGVscFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yM1QxMjoyNToyNy45ODg3NDkzNzNaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNzUyNTI4OTQxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgYXMgaWYgdGhleSB3ZXJlIG15IG93bjpcblxuKipJbnZlc3RpZ2F0aW5nIE92ZXJsYXlGUyBhbmQgQ2FjaGUgU3RhdGlzdGljcyoqXG5cblJpZ2h0LCBzbyBgQ0FDSEVTVEFUX1NZU0NBTExgIGlzIGVuYWJsZWQgYnkgZGVmYXVsdCwgd2hpY2ggaXMgZ29vZC4gVGhhdCdzIGEga2V5IHBpZWNlIG9mIGluZm9ybWF0aW9uIGZvciBteSBjdXJyZW50IGludmVzdGlnYXRpb24uIE5vdywgSSBuZWVkIHRvIGNvbmZpcm0gc29tZXRoaW5nOiBJIHJlY2FsbCBgb3ZsX2NhY2hlc3RhdGAgcmVsaWVzIG9uIGBPVkVSTEFZX0ZTYCBmb3IgaXRzIHRlc3RpbmcsIHNvIGxldCdzIGRvdWJsZS1jaGVjayB0aGUgS2NvbmZpZyBvcHRpb25zLiBMZXQgbWUgZ28gYW5kIHF1aWNrbHkgbmF2aWdhdGUgaW50byBgZnMvb3ZlcmxheWZzL0tjb25maWdgIHRvIHZlcmlmeSB0aGUgZGVwZW5kZW5jeS4gSXQncyBhbHdheXMgYmVzdCB0byBiZSBwcmVjaXNlIHdoZW4gZGVhbGluZyB3aXRoIGtlcm5lbCBjb25maWd1cmF0aW9uIGRlcGVuZGVuY2llcy5cblxuXG4iLCJJbnB1dFRva2VucyI6NjU5MSwiT3V0cHV0VG9rZW5zIjoxOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjU0LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjNUMTI6MjU6MzEuNzQxMjgwMzc1WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIyMzkxMzUyNDMsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIE9WRVJMQVlfRlNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZnMvb3ZlcmxheWZzL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG5mcy9vdmVybGF5ZnMvS2NvbmZpZzoyOmNvbmZpZyBPVkVSTEFZX0ZTXFxuZnMvb3ZlcmxheWZzL0tjb25maWctMy1cXHR0cmlzdGF0ZSBcXFwiT3ZlcmxheSBmaWxlc3lzdGVtIHN1cHBvcnRcXFwiXFxuLS1cXG5mcy9vdmVybGF5ZnMvS2NvbmZpZy0xNC1cXG5mcy9vdmVybGF5ZnMvS2NvbmZpZzoxNTpjb25maWcgT1ZFUkxBWV9GU19SRURJUkVDVF9ESVJcXG5mcy9vdmVybGF5ZnMvS2NvbmZpZy0xNi1cXHRib29sIFxcXCJPdmVybGF5ZnM6IHR1cm4gb24gcmVkaXJlY3QgZGlyZWN0b3J5IGZlYXR1cmUgYnkgZGVmYXVsdFxcXCJcXG4tLVxcbmZzL292ZXJsYXlmcy9LY29uZmlnLTMwLVxcbmZzL292ZXJsYXlmcy9LY29uZmlnOjMxOmNvbmZpZyBPVkVSTEFZX0ZTX1JFRElSRUNUX0FMV0FZU19GT0xMT1dcXG5mcy9vdmVybGF5ZnMvS2NvbmZpZy0zMi1cXHRib29sIFxcXCJPdmVybGF5ZnM6IGZvbGxvdyByZWRpcmVjdHMgZXZlbiBpZiByZWRpcmVjdHMgYXJlIHR1cm5lZCBvZmZcXFwiXFxuLS1cXG5mcy9vdmVybGF5ZnMvS2NvbmZpZy00NS1cXG5mcy9vdmVybGF5ZnMvS2NvbmZpZzo0Njpjb25maWcgT1ZFUkxBWV9GU19JTkRFWFxcbmZzL292ZXJsYXlmcy9LY29uZmlnLTQ3LVxcdGJvb2wgXFxcIk92ZXJsYXlmczogdHVybiBvbiBpbm9kZXMgaW5kZXggZmVhdHVyZSBieSBkZWZhdWx0XFxcIlxcbi0tXFxuZnMvb3ZlcmxheWZzL0tjb25maWctNjQtXFxuZnMvb3ZlcmxheWZzL0tjb25maWc6NjU6Y29uZmlnIE9WRVJMQVlfRlNfTkZTX0VYUE9SVFxcbmZzL292ZXJsYXlmcy9LY29uZmlnLTY2LVxcdGJvb2wgXFxcIk92ZXJsYXlmczogdHVybiBvbiBORlMgZXhwb3J0IGZlYXR1cmUgYnkgZGVmYXVsdFxcXCJcXG4tLVxcbmZzL292ZXJsYXlmcy9LY29uZmlnLTkyLVxcbmZzL292ZXJsYXlmcy9LY29uZmlnOjkzOmNvbmZpZyBPVkVSTEFZX0ZTX1hJTk9fQVVUT1xcbmZzL292ZXJsYXlmcy9LY29uZmlnLTk0LVxcdGJvb2wgXFxcIk92ZXJsYXlmczogYXV0byBlbmFibGUgaW5vZGUgbnVtYmVyIG1hcHBpbmdcXFwiXFxuLS1cXG5mcy9vdmVybGF5ZnMvS2NvbmZpZy0xMTAtXFxuZnMvb3ZlcmxheWZzL0tjb25maWc6MTExOmNvbmZpZyBPVkVSTEFZX0ZTX01FVEFDT1BZXFxuZnMvb3ZlcmxheWZzL0tjb25maWctMTEyLVxcdGJvb2wgXFxcIk92ZXJsYXlmczogdHVybiBvbiBtZXRhZGF0YSBvbmx5IGNvcHkgdXAgZmVhdHVyZSBieSBkZWZhdWx0XFxcIlxcbi0tXFxuZnMvb3ZlcmxheWZzL0tjb25maWctMTI4LVxcbmZzL292ZXJsYXlmcy9LY29uZmlnOjEyOTpjb25maWcgT1ZFUkxBWV9GU19ERUJVR1xcbmZzL292ZXJsYXlmcy9LY29uZmlnLTEzMC1cXHRib29sIFxcXCJPdmVybGF5ZnM6IHR1cm4gb24gZXh0cmEgZGVidWdnaW5nIGNoZWNrc1xcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjNUMTI6MjU6MzMuOTgwNDIwMDk4WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjE2MTQzMzcxMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIE92ZXJsYXlGUyBDYWNoZXN0YXQgUGF0Y2gqKlxuXG5Pa2F5LCBzbyB0aGlzIHBhdGNoIGlzIGFsbCBhYm91dCBgT1ZFUkxBWV9GU2AsIHRoYXQncyB0aGUga2V5IGNvbmZpZ3VyYXRpb24gaXRlbSBoZXJlLiBUaGUgY29yZSBmdW5jdGlvbmFsaXR5IHNlZW1zIHRvIGJlIGFib3V0IGltcGxlbWVudGluZyB0aGUgYGNhY2hlc3RhdGAgZmlsZSBvcGVyYXRpb24gZm9yIG92ZXJsYXlmcy4gVGhpcyBtZWFucyBlbmFibGluZyB0aGUgYGNhY2hlc3RhdGAgc3lzdGVtIGNhbGwgdG8gYWNjdXJhdGVseSByZXBvcnQgcGFnZSBjYWNoZSBzdGF0aXN0aWNzIGZvciBmaWxlcyByZXNpZGluZyBvbiBvdmVybGF5ZnMuIFRoZSB0cmljayBpcyBmb3J3YXJkaW5nIHRoZSByZXF1ZXN0IHRvIHRoZSB1bmRlcmx5aW5nIGZpbGUsIHdoaWNoIG1ha2VzIHNlbnNlLlxuXG5JJ20gdGhpbmtpbmcgdGhpcyBpcyBhIHByZXR0eSBzaWduaWZpY2FudCBjaGFuZ2UgYmVjYXVzZSBpdCBpbnRyb2R1Y2VzIG5ldywgcG90ZW50aWFsbHkgcmVhY2hhYmxlIGNvZGUgcGF0aHMgd2l0aGluIGJvdGggdGhlIFZGUyBhbmQgb3ZlcmxheWZzIGxheWVycy4gV2Ugc2hvdWxkIHRha2UgYSBxdWljayBsb29rIHRvIHNlZSBpZiB0aGVyZSBhcmUgYW55IG90aGVyIHJlbGV2YW50IGNvbmZpZ3MsIGxldCdzIHNlZS4uLiB5ZXAsIHRoZXJlJ3MgYENBQ0hFU1RBVF9TWVNDQUxMYCBhcyB3ZWxsIGFzIGBPVkVSTEFZX0ZTYC5cblxuR2l2ZW4gdGhpcyBmdW5jdGlvbmFsIGNoYW5nZSBhbmQgdGhlIG5ldyBjb2RlIHBhdGhzLCBteSBhbmFseXNpcyB5aWVsZHMgdGhhdCB0aGlzIHBhdGNoIGlzIGRlZmluaXRlbHkgd29ydGggZnV6emluZy4gSSdsbCBmbGFnIGl0IGFzIHN1Y2guIEFuZCwgc2luY2UgdGhpcyBwYXRjaCBkZWFscyB3aXRoIGNhY2hlIHN0YXRpc3RpY3MgZm9yIG92ZXJsYWlkIGZpbGVzLCB0aGUgZm9jdXMgc3ltYm9scyBhcmUgb2J2aW91c2x5IGBvdmxfY2FjaGVzdGF0YCBhbmQgYHZmc19jYWNoZXN0YXRgLlxuXG5IZXJlJ3MgbXkgYXNzZXNzbWVudDpcblxuKiAgICoqV29ydGhGdXp6aW5nKio6IFRydWVcbiogICAqKkZvY3VzU3ltYm9scyoqOiBgW1wib3ZsX2NhY2hlc3RhdFwiLCBcInZmc19jYWNoZXN0YXRcIl1gXG4qICAgKipFbmFibGVDb25maWdzKio6IGBbXCJDQUNIRVNUQVRfU1lTQ0FMTFwiLCBcIk9WRVJMQVlfRlNcIl1gXG4qICAgKipSZWFzb25pbmcqKjogXCJUaGUgcGF0Y2ggaW1wbGVtZW50cyB0aGUgYGNhY2hlc3RhdGAgZmlsZSBvcGVyYXRpb24gZm9yIG92ZXJsYXlmcywgYWxsb3dpbmcgdGhlIGBjYWNoZXN0YXRgIHN5c2NhbGwgdG8gY29ycmVjdGx5IHF1ZXJ5IHBhZ2UgY2FjaGUgc3RhdGlzdGljcyBmb3IgZmlsZXMgb24gb3ZlcmxheWZzIGJ5IGZvcndhcmRpbmcgdGhlIHJlcXVlc3QgdG8gdGhlIHVuZGVybHlpbmcgZmlsZS4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRoYXQgaW50cm9kdWNlcyBuZXcgcmVhY2hhYmxlIGNvZGUgaW4gdGhlIFZGUyBhbmQgb3ZlcmxheWZzIGxheWVycy5cIlxuXG5cbiIsIklucHV0VG9rZW5zIjo3MzA5LCJPdXRwdXRUb2tlbnMiOjExOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIzOCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yM1QxMjoyNTo0MC4xNDE4NTU0MjlaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4MDUyNDU0OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQ0FDSEVTVEFUX1NZU0NBTExcIixcbiAgICBcIk9WRVJMQVlfRlNcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJvdmxfY2FjaGVzdGF0XCIsXG4gICAgXCJ2ZnNfY2FjaGVzdGF0XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggaW1wbGVtZW50cyB0aGUgY2FjaGVzdGF0IGZpbGUgb3BlcmF0aW9uIGZvciBvdmVybGF5ZnMsIGFsbG93aW5nIHRoZSBjYWNoZXN0YXQgc3lzY2FsbCB0byBjb3JyZWN0bHkgcXVlcnkgcGFnZSBjYWNoZSBzdGF0aXN0aWNzIGZvciBmaWxlcyBvbiBvdmVybGF5ZnMgYnkgZm9yd2FyZGluZyB0aGUgcmVxdWVzdCB0byB0aGUgdW5kZXJseWluZyBmaWxlLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdGhhdCBpbnRyb2R1Y2VzIG5ldyByZWFjaGFibGUgY29kZSBpbiB0aGUgVkZTIGFuZCBvdmVybGF5ZnMgbGF5ZXJzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkNBQ0hFU1RBVF9TWVNDQUxMXCIsXG4gICAgXCJPVkVSTEFZX0ZTXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwib3ZsX2NhY2hlc3RhdFwiLFxuICAgIFwidmZzX2NhY2hlc3RhdFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGltcGxlbWVudHMgdGhlIGNhY2hlc3RhdCBmaWxlIG9wZXJhdGlvbiBmb3Igb3ZlcmxheWZzLCBhbGxvd2luZyB0aGUgY2FjaGVzdGF0IHN5c2NhbGwgdG8gY29ycmVjdGx5IHF1ZXJ5IHBhZ2UgY2FjaGUgc3RhdGlzdGljcyBmb3IgZmlsZXMgb24gb3ZlcmxheWZzIGJ5IGZvcndhcmRpbmcgdGhlIHJlcXVlc3QgdG8gdGhlIHVuZGVybHlpbmcgZmlsZS4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRoYXQgaW50cm9kdWNlcyBuZXcgcmVhY2hhYmxlIGNvZGUgaW4gdGhlIFZGUyBhbmQgb3ZlcmxheWZzIGxheWVycy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowtdf5z[1] Phase: Succeeded StartedAt: 2026-06-23 12:25:51 +0000 UTC FinishedAt: 2026-06-23 12:25:51 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtdf5z[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-06-23 12:25:51 +0000 UTC FinishedAt: 2026-06-23 12:25:51 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtdf5z[2] Phase: Succeeded StartedAt: 2026-06-23 12:25:51 +0000 UTC FinishedAt: 2026-06-23 16:23:56 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtdf5z[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1dc18801be29bc54709aa355b8acd80e183b03cd","config_name":"upstream-apparmor-kasan.config","enable_configs":["CACHESTAT_SYSCALL","OVERLAY_FS"],"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","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ovl_cachestat","vfs_cachestat"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"1dc18801be29bc54709aa355b8acd80e183b03cd","config_name":"upstream-apparmor-kasan.config","enable_configs":["CACHESTAT_SYSCALL","OVERLAY_FS"],"series_id":"ef226665-ba0a-4e7e-a8ab-545482a1e2da","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-06-23 12:25:51 +0000 UTC FinishedAt: 2026-06-23 16:23:56 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"1dc18801be29bc54709aa355b8acd80e183b03cd","config_name":"upstream-apparmor-kasan.config","enable_configs":["CACHESTAT_SYSCALL","OVERLAY_FS"],"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","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ovl_cachestat","vfs_cachestat"],"skip_cover_check":true},"patched":{"arch":"amd64","commit_hash":"1dc18801be29bc54709aa355b8acd80e183b03cd","config_name":"upstream-apparmor-kasan.config","enable_configs":["CACHESTAT_SYSCALL","OVERLAY_FS"],"series_id":"ef226665-ba0a-4e7e-a8ab-545482a1e2da","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-workflowtdf5z[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1dc18801be29bc54709aa355b8acd80e183b03cd","config_name":"upstream-apparmor-kasan.config","enable_configs":["CACHESTAT_SYSCALL","OVERLAY_FS"],"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","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ovl_cachestat","vfs_cachestat"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"1dc18801be29bc54709aa355b8acd80e183b03cd","config_name":"upstream-apparmor-kasan.config","enable_configs":["CACHESTAT_SYSCALL","OVERLAY_FS"],"series_id":"ef226665-ba0a-4e7e-a8ab-545482a1e2da","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-06-23 12:25:51 +0000 UTC FinishedAt: 2026-06-23 12:26:02 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtdf5z[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1dc18801be29bc54709aa355b8acd80e183b03cd","config_name":"upstream-apparmor-kasan.config","enable_configs":["CACHESTAT_SYSCALL","OVERLAY_FS"],"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","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ovl_cachestat","vfs_cachestat"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"1dc18801be29bc54709aa355b8acd80e183b03cd","config_name":"upstream-apparmor-kasan.config","enable_configs":["CACHESTAT_SYSCALL","OVERLAY_FS"],"series_id":"ef226665-ba0a-4e7e-a8ab-545482a1e2da","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-06-23 12:25:51 +0000 UTC FinishedAt: 2026-06-23 12:25:57 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"1dc18801be29bc54709aa355b8acd80e183b03cd","config_name":"upstream-apparmor-kasan.config","enable_configs":["CACHESTAT_SYSCALL","OVERLAY_FS"],"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-workflowtdf5z/series-workflowtdf5z-convert-artifact-2727589971/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowtdf5z[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1dc18801be29bc54709aa355b8acd80e183b03cd","config_name":"upstream-apparmor-kasan.config","enable_configs":["CACHESTAT_SYSCALL","OVERLAY_FS"],"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","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ovl_cachestat","vfs_cachestat"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"1dc18801be29bc54709aa355b8acd80e183b03cd","config_name":"upstream-apparmor-kasan.config","enable_configs":["CACHESTAT_SYSCALL","OVERLAY_FS"],"series_id":"ef226665-ba0a-4e7e-a8ab-545482a1e2da","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-06-23 12:26:02 +0000 UTC FinishedAt: 2026-06-23 12:48:50 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtdf5z[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1dc18801be29bc54709aa355b8acd80e183b03cd","config_name":"upstream-apparmor-kasan.config","enable_configs":["CACHESTAT_SYSCALL","OVERLAY_FS"],"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","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ovl_cachestat","vfs_cachestat"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"1dc18801be29bc54709aa355b8acd80e183b03cd","config_name":"upstream-apparmor-kasan.config","enable_configs":["CACHESTAT_SYSCALL","OVERLAY_FS"],"series_id":"ef226665-ba0a-4e7e-a8ab-545482a1e2da","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-06-23 12:26:02 +0000 UTC FinishedAt: 2026-06-23 12:48:50 +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:*dd714881-67e1-4704-bcb9-191baa416a13,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-workflowtdf5z/series-workflowtdf5z-convert-artifact-2727589971/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": "ae4f1901-2363-4468-80b5-0b05b11de2c0", "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-workflowtdf5z/series-workflowtdf5z-build-action-1921186689/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowtdf5z[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1dc18801be29bc54709aa355b8acd80e183b03cd","config_name":"upstream-apparmor-kasan.config","enable_configs":["CACHESTAT_SYSCALL","OVERLAY_FS"],"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","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ovl_cachestat","vfs_cachestat"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"1dc18801be29bc54709aa355b8acd80e183b03cd","config_name":"upstream-apparmor-kasan.config","enable_configs":["CACHESTAT_SYSCALL","OVERLAY_FS"],"series_id":"ef226665-ba0a-4e7e-a8ab-545482a1e2da","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-06-23 12:26:02 +0000 UTC FinishedAt: 2026-06-23 12:48:40 +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:*dd714881-67e1-4704-bcb9-191baa416a13,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-workflowtdf5z/series-workflowtdf5z-convert-artifact-2727589971/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": "ae4f1901-2363-4468-80b5-0b05b11de2c0", "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-workflowtdf5z/series-workflowtdf5z-build-action-1921186689/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowtdf5z[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1dc18801be29bc54709aa355b8acd80e183b03cd","config_name":"upstream-apparmor-kasan.config","enable_configs":["CACHESTAT_SYSCALL","OVERLAY_FS"],"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","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ovl_cachestat","vfs_cachestat"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"1dc18801be29bc54709aa355b8acd80e183b03cd","config_name":"upstream-apparmor-kasan.config","enable_configs":["CACHESTAT_SYSCALL","OVERLAY_FS"],"series_id":"ef226665-ba0a-4e7e-a8ab-545482a1e2da","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-06-23 12:48:50 +0000 UTC FinishedAt: 2026-06-23 12:48:50 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtdf5z[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1dc18801be29bc54709aa355b8acd80e183b03cd","config_name":"upstream-apparmor-kasan.config","enable_configs":["CACHESTAT_SYSCALL","OVERLAY_FS"],"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","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ovl_cachestat","vfs_cachestat"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"1dc18801be29bc54709aa355b8acd80e183b03cd","config_name":"upstream-apparmor-kasan.config","enable_configs":["CACHESTAT_SYSCALL","OVERLAY_FS"],"series_id":"ef226665-ba0a-4e7e-a8ab-545482a1e2da","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-06-23 12:48:50 +0000 UTC FinishedAt: 2026-06-23 12:48:50 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtdf5z[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1dc18801be29bc54709aa355b8acd80e183b03cd","config_name":"upstream-apparmor-kasan.config","enable_configs":["CACHESTAT_SYSCALL","OVERLAY_FS"],"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","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ovl_cachestat","vfs_cachestat"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"1dc18801be29bc54709aa355b8acd80e183b03cd","config_name":"upstream-apparmor-kasan.config","enable_configs":["CACHESTAT_SYSCALL","OVERLAY_FS"],"series_id":"ef226665-ba0a-4e7e-a8ab-545482a1e2da","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-06-23 12:48:50 +0000 UTC FinishedAt: 2026-06-23 12:49:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtdf5z[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1dc18801be29bc54709aa355b8acd80e183b03cd","config_name":"upstream-apparmor-kasan.config","enable_configs":["CACHESTAT_SYSCALL","OVERLAY_FS"],"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","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ovl_cachestat","vfs_cachestat"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"1dc18801be29bc54709aa355b8acd80e183b03cd","config_name":"upstream-apparmor-kasan.config","enable_configs":["CACHESTAT_SYSCALL","OVERLAY_FS"],"series_id":"ef226665-ba0a-4e7e-a8ab-545482a1e2da","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-06-23 12:48:50 +0000 UTC FinishedAt: 2026-06-23 12:48:56 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"1dc18801be29bc54709aa355b8acd80e183b03cd","config_name":"upstream-apparmor-kasan.config","enable_configs":["CACHESTAT_SYSCALL","OVERLAY_FS"],"series_id":"ef226665-ba0a-4e7e-a8ab-545482a1e2da","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-workflowtdf5z/series-workflowtdf5z-convert-artifact-3059876938/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowtdf5z[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1dc18801be29bc54709aa355b8acd80e183b03cd","config_name":"upstream-apparmor-kasan.config","enable_configs":["CACHESTAT_SYSCALL","OVERLAY_FS"],"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","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ovl_cachestat","vfs_cachestat"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"1dc18801be29bc54709aa355b8acd80e183b03cd","config_name":"upstream-apparmor-kasan.config","enable_configs":["CACHESTAT_SYSCALL","OVERLAY_FS"],"series_id":"ef226665-ba0a-4e7e-a8ab-545482a1e2da","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-06-23 12:49:00 +0000 UTC FinishedAt: 2026-06-23 12:50:51 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtdf5z[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1dc18801be29bc54709aa355b8acd80e183b03cd","config_name":"upstream-apparmor-kasan.config","enable_configs":["CACHESTAT_SYSCALL","OVERLAY_FS"],"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","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ovl_cachestat","vfs_cachestat"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"1dc18801be29bc54709aa355b8acd80e183b03cd","config_name":"upstream-apparmor-kasan.config","enable_configs":["CACHESTAT_SYSCALL","OVERLAY_FS"],"series_id":"ef226665-ba0a-4e7e-a8ab-545482a1e2da","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-06-23 12:49:00 +0000 UTC FinishedAt: 2026-06-23 12:50:41 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*ae4f1901-2363-4468-80b5-0b05b11de2c0,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-workflowtdf5z/series-workflowtdf5z-build-action-1921186689/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-workflowtdf5z[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1dc18801be29bc54709aa355b8acd80e183b03cd","config_name":"upstream-apparmor-kasan.config","enable_configs":["CACHESTAT_SYSCALL","OVERLAY_FS"],"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","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ovl_cachestat","vfs_cachestat"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"1dc18801be29bc54709aa355b8acd80e183b03cd","config_name":"upstream-apparmor-kasan.config","enable_configs":["CACHESTAT_SYSCALL","OVERLAY_FS"],"series_id":"ef226665-ba0a-4e7e-a8ab-545482a1e2da","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-06-23 12:50:51 +0000 UTC FinishedAt: 2026-06-23 12:50:51 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtdf5z[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1dc18801be29bc54709aa355b8acd80e183b03cd","config_name":"upstream-apparmor-kasan.config","enable_configs":["CACHESTAT_SYSCALL","OVERLAY_FS"],"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","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ovl_cachestat","vfs_cachestat"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"1dc18801be29bc54709aa355b8acd80e183b03cd","config_name":"upstream-apparmor-kasan.config","enable_configs":["CACHESTAT_SYSCALL","OVERLAY_FS"],"series_id":"ef226665-ba0a-4e7e-a8ab-545482a1e2da","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-06-23 12:50:51 +0000 UTC FinishedAt: 2026-06-23 12:50:51 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtdf5z[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1dc18801be29bc54709aa355b8acd80e183b03cd","config_name":"upstream-apparmor-kasan.config","enable_configs":["CACHESTAT_SYSCALL","OVERLAY_FS"],"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","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ovl_cachestat","vfs_cachestat"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"1dc18801be29bc54709aa355b8acd80e183b03cd","config_name":"upstream-apparmor-kasan.config","enable_configs":["CACHESTAT_SYSCALL","OVERLAY_FS"],"series_id":"ef226665-ba0a-4e7e-a8ab-545482a1e2da","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-06-23 12:50:51 +0000 UTC FinishedAt: 2026-06-23 13:20:41 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtdf5z[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1dc18801be29bc54709aa355b8acd80e183b03cd","config_name":"upstream-apparmor-kasan.config","enable_configs":["CACHESTAT_SYSCALL","OVERLAY_FS"],"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","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ovl_cachestat","vfs_cachestat"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"1dc18801be29bc54709aa355b8acd80e183b03cd","config_name":"upstream-apparmor-kasan.config","enable_configs":["CACHESTAT_SYSCALL","OVERLAY_FS"],"series_id":"ef226665-ba0a-4e7e-a8ab-545482a1e2da","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-06-23 12:50:51 +0000 UTC FinishedAt: 2026-06-23 13:20:41 +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:*dd714881-67e1-4704-bcb9-191baa416a13,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-workflowtdf5z/series-workflowtdf5z-convert-artifact-3059876938/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": "3e9ba1e1-50c2-44b5-b9fa-22a3f1d22501", "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-workflowtdf5z/series-workflowtdf5z-build-action-3887753326/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowtdf5z[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1dc18801be29bc54709aa355b8acd80e183b03cd","config_name":"upstream-apparmor-kasan.config","enable_configs":["CACHESTAT_SYSCALL","OVERLAY_FS"],"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","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ovl_cachestat","vfs_cachestat"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"1dc18801be29bc54709aa355b8acd80e183b03cd","config_name":"upstream-apparmor-kasan.config","enable_configs":["CACHESTAT_SYSCALL","OVERLAY_FS"],"series_id":"ef226665-ba0a-4e7e-a8ab-545482a1e2da","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-06-23 12:50:51 +0000 UTC FinishedAt: 2026-06-23 13:20:31 +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:*dd714881-67e1-4704-bcb9-191baa416a13,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-workflowtdf5z/series-workflowtdf5z-convert-artifact-3059876938/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": "3e9ba1e1-50c2-44b5-b9fa-22a3f1d22501", "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-workflowtdf5z/series-workflowtdf5z-build-action-3887753326/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowtdf5z[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1dc18801be29bc54709aa355b8acd80e183b03cd","config_name":"upstream-apparmor-kasan.config","enable_configs":["CACHESTAT_SYSCALL","OVERLAY_FS"],"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","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ovl_cachestat","vfs_cachestat"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"1dc18801be29bc54709aa355b8acd80e183b03cd","config_name":"upstream-apparmor-kasan.config","enable_configs":["CACHESTAT_SYSCALL","OVERLAY_FS"],"series_id":"ef226665-ba0a-4e7e-a8ab-545482a1e2da","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-06-23 13:20:41 +0000 UTC FinishedAt: 2026-06-23 13:20:41 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtdf5z[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1dc18801be29bc54709aa355b8acd80e183b03cd","config_name":"upstream-apparmor-kasan.config","enable_configs":["CACHESTAT_SYSCALL","OVERLAY_FS"],"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","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ovl_cachestat","vfs_cachestat"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"1dc18801be29bc54709aa355b8acd80e183b03cd","config_name":"upstream-apparmor-kasan.config","enable_configs":["CACHESTAT_SYSCALL","OVERLAY_FS"],"series_id":"ef226665-ba0a-4e7e-a8ab-545482a1e2da","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-06-23 13:20:41 +0000 UTC FinishedAt: 2026-06-23 13:20:41 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtdf5z[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1dc18801be29bc54709aa355b8acd80e183b03cd","config_name":"upstream-apparmor-kasan.config","enable_configs":["CACHESTAT_SYSCALL","OVERLAY_FS"],"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","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ovl_cachestat","vfs_cachestat"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"1dc18801be29bc54709aa355b8acd80e183b03cd","config_name":"upstream-apparmor-kasan.config","enable_configs":["CACHESTAT_SYSCALL","OVERLAY_FS"],"series_id":"ef226665-ba0a-4e7e-a8ab-545482a1e2da","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-06-23 13:20:41 +0000 UTC FinishedAt: 2026-06-23 13:22:32 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtdf5z[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1dc18801be29bc54709aa355b8acd80e183b03cd","config_name":"upstream-apparmor-kasan.config","enable_configs":["CACHESTAT_SYSCALL","OVERLAY_FS"],"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","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ovl_cachestat","vfs_cachestat"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"1dc18801be29bc54709aa355b8acd80e183b03cd","config_name":"upstream-apparmor-kasan.config","enable_configs":["CACHESTAT_SYSCALL","OVERLAY_FS"],"series_id":"ef226665-ba0a-4e7e-a8ab-545482a1e2da","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-06-23 13:20:41 +0000 UTC FinishedAt: 2026-06-23 13:22:22 +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:*3e9ba1e1-50c2-44b5-b9fa-22a3f1d22501,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-workflowtdf5z/series-workflowtdf5z-build-action-3887753326/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-workflowtdf5z[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1dc18801be29bc54709aa355b8acd80e183b03cd","config_name":"upstream-apparmor-kasan.config","enable_configs":["CACHESTAT_SYSCALL","OVERLAY_FS"],"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","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ovl_cachestat","vfs_cachestat"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"1dc18801be29bc54709aa355b8acd80e183b03cd","config_name":"upstream-apparmor-kasan.config","enable_configs":["CACHESTAT_SYSCALL","OVERLAY_FS"],"series_id":"ef226665-ba0a-4e7e-a8ab-545482a1e2da","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-06-23 13:22:32 +0000 UTC FinishedAt: 2026-06-23 16:23:56 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtdf5z[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1dc18801be29bc54709aa355b8acd80e183b03cd","config_name":"upstream-apparmor-kasan.config","enable_configs":["CACHESTAT_SYSCALL","OVERLAY_FS"],"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","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ovl_cachestat","vfs_cachestat"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"1dc18801be29bc54709aa355b8acd80e183b03cd","config_name":"upstream-apparmor-kasan.config","enable_configs":["CACHESTAT_SYSCALL","OVERLAY_FS"],"series_id":"ef226665-ba0a-4e7e-a8ab-545482a1e2da","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-06-23 13:22:32 +0000 UTC FinishedAt: 2026-06-23 16:23:56 +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","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ovl_cachestat","vfs_cachestat"],"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:*ae4f1901-2363-4468-80b5-0b05b11de2c0,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*3e9ba1e1-50c2-44b5-b9fa-22a3f1d22501,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-workflowtdf5z/series-workflowtdf5z-build-action-1921186689/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-workflowtdf5z/series-workflowtdf5z-build-action-3887753326/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowtdf5z[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1dc18801be29bc54709aa355b8acd80e183b03cd","config_name":"upstream-apparmor-kasan.config","enable_configs":["CACHESTAT_SYSCALL","OVERLAY_FS"],"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","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ovl_cachestat","vfs_cachestat"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"1dc18801be29bc54709aa355b8acd80e183b03cd","config_name":"upstream-apparmor-kasan.config","enable_configs":["CACHESTAT_SYSCALL","OVERLAY_FS"],"series_id":"ef226665-ba0a-4e7e-a8ab-545482a1e2da","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-06-23 13:22:32 +0000 UTC FinishedAt: 2026-06-23 13:22:42 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtdf5z[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1dc18801be29bc54709aa355b8acd80e183b03cd","config_name":"upstream-apparmor-kasan.config","enable_configs":["CACHESTAT_SYSCALL","OVERLAY_FS"],"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","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ovl_cachestat","vfs_cachestat"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"1dc18801be29bc54709aa355b8acd80e183b03cd","config_name":"upstream-apparmor-kasan.config","enable_configs":["CACHESTAT_SYSCALL","OVERLAY_FS"],"series_id":"ef226665-ba0a-4e7e-a8ab-545482a1e2da","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-06-23 13:22:32 +0000 UTC FinishedAt: 2026-06-23 13:22:37 +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","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ovl_cachestat","vfs_cachestat"],"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-workflowtdf5z/series-workflowtdf5z-convert-artifact-4105021407/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowtdf5z[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1dc18801be29bc54709aa355b8acd80e183b03cd","config_name":"upstream-apparmor-kasan.config","enable_configs":["CACHESTAT_SYSCALL","OVERLAY_FS"],"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","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ovl_cachestat","vfs_cachestat"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"1dc18801be29bc54709aa355b8acd80e183b03cd","config_name":"upstream-apparmor-kasan.config","enable_configs":["CACHESTAT_SYSCALL","OVERLAY_FS"],"series_id":"ef226665-ba0a-4e7e-a8ab-545482a1e2da","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-06-23 13:22:32 +0000 UTC FinishedAt: 2026-06-23 13:22:32 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtdf5z[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1dc18801be29bc54709aa355b8acd80e183b03cd","config_name":"upstream-apparmor-kasan.config","enable_configs":["CACHESTAT_SYSCALL","OVERLAY_FS"],"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","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ovl_cachestat","vfs_cachestat"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"1dc18801be29bc54709aa355b8acd80e183b03cd","config_name":"upstream-apparmor-kasan.config","enable_configs":["CACHESTAT_SYSCALL","OVERLAY_FS"],"series_id":"ef226665-ba0a-4e7e-a8ab-545482a1e2da","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-06-23 13:22:32 +0000 UTC FinishedAt: 2026-06-23 13:22:32 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtdf5z[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1dc18801be29bc54709aa355b8acd80e183b03cd","config_name":"upstream-apparmor-kasan.config","enable_configs":["CACHESTAT_SYSCALL","OVERLAY_FS"],"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","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ovl_cachestat","vfs_cachestat"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"1dc18801be29bc54709aa355b8acd80e183b03cd","config_name":"upstream-apparmor-kasan.config","enable_configs":["CACHESTAT_SYSCALL","OVERLAY_FS"],"series_id":"ef226665-ba0a-4e7e-a8ab-545482a1e2da","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-06-23 13:22:32 +0000 UTC FinishedAt: 2026-06-23 13:22:32 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtdf5z[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1dc18801be29bc54709aa355b8acd80e183b03cd","config_name":"upstream-apparmor-kasan.config","enable_configs":["CACHESTAT_SYSCALL","OVERLAY_FS"],"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","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ovl_cachestat","vfs_cachestat"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"1dc18801be29bc54709aa355b8acd80e183b03cd","config_name":"upstream-apparmor-kasan.config","enable_configs":["CACHESTAT_SYSCALL","OVERLAY_FS"],"series_id":"ef226665-ba0a-4e7e-a8ab-545482a1e2da","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-06-23 13:22:42 +0000 UTC FinishedAt: 2026-06-23 16:23:56 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtdf5z[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1dc18801be29bc54709aa355b8acd80e183b03cd","config_name":"upstream-apparmor-kasan.config","enable_configs":["CACHESTAT_SYSCALL","OVERLAY_FS"],"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","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ovl_cachestat","vfs_cachestat"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"1dc18801be29bc54709aa355b8acd80e183b03cd","config_name":"upstream-apparmor-kasan.config","enable_configs":["CACHESTAT_SYSCALL","OVERLAY_FS"],"series_id":"ef226665-ba0a-4e7e-a8ab-545482a1e2da","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-06-23 13:22:42 +0000 UTC FinishedAt: 2026-06-23 16:23:46 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*ae4f1901-2363-4468-80b5-0b05b11de2c0,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*3e9ba1e1-50c2-44b5-b9fa-22a3f1d22501,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-workflowtdf5z/series-workflowtdf5z-build-action-1921186689/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-workflowtdf5z/series-workflowtdf5z-build-action-3887753326/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-workflowtdf5z/series-workflowtdf5z-convert-artifact-4105021407/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,}