Name: series-workflow6klmv Phase: Succeeded StartedAt: 2026-07-23 00:24:17 +0000 UTC FinishedAt: 2026-07-23 02:09:16 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6klmv[0] Phase: Succeeded StartedAt: 2026-07-23 00:24:17 +0000 UTC FinishedAt: 2026-07-23 00:46:02 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6klmv[0].run-triage Phase: Succeeded StartedAt: 2026-07-23 00:24:17 +0000 UTC FinishedAt: 2026-07-23 00:46:02 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "axboe", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git", "commit_hash": "52738352a6f29279e15285fcb7b50241ef867e27", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "KVM", "CPU_PM" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "axboe", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git", "commit_hash": "52738352a6f29279e15285fcb7b50241ef867e27", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "KVM", "CPU_PM" ], "series_id": "2dcc5e11-902e-4314-8d54-78fba7668702" }, "track": "KASAN", "fuzz": { "focus": [ "kvm" ], "focus_symbols": [ "kvm_riscv_aia_enable", "kvm_riscv_aia_disable", "kvm_riscv_cpu_pm_notifier", "kvm_riscv_clear_former_vcpu" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIzIDAwOjQ1PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0tWTSYjMzQ7LAogICAgJiMzNDtDUFVfUE0mIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtrdm1fcmlzY3ZfYWlhX2VuYWJsZSYjMzQ7LAogICAgJiMzNDtrdm1fcmlzY3ZfYWlhX2Rpc2FibGUmIzM0OywKICAgICYjMzQ7a3ZtX3Jpc2N2X2NwdV9wbV9ub3RpZmllciYjMzQ7LAogICAgJiMzNDtrdm1fcmlzY3ZfY2xlYXJfZm9ybWVyX3ZjcHUmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgUklTQy1WIEtWTSB0byBwcm9wZXJseSBoYW5kbGUgQ1BVIHBvd2VyIG1hbmFnZW1lbnQgKGlkbGUgbm9uLXJldGVudGlvbiBzdGF0ZXMpIGJ5IHNhdmluZyBhbmQgcmVzdG9yaW5nIEFJQSAoQWR2YW5jZWQgSW50ZXJydXB0IEFyY2hpdGVjdHVyZSkgYW5kIGh5cGVydmlzb3IgQ1NSIHN0YXRlLiBUaGlzIGlzIGNvcmUgS1ZNIGxvZ2ljIGFuZCBzaG91bGQgYmUgZnV6emVkIHRvIGVuc3VyZSBubyBzdGF0ZSBpcyBsb3N0IG9yIGNvcnJ1cHRlZCBkdXJpbmcgQ1BVIGlkbGUgdHJhbnNpdGlvbnMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjMgMDA6NDU8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCBiYjgwODEzZmJlMzMzNDkwOWI1MTI3MTZlNWY4MmNkMGI1OTI5N2IwXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFRodSBKdWwgMjMgMDA6NDU6MjYgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvYXJjaC9yaXNjdi9pbmNsdWRlL2FzbS9rdm1fYWlhLmggYi9hcmNoL3Jpc2N2L2luY2x1ZGUvYXNtL2t2bV9haWEuaFxuaW5kZXggYzY3ZWM1YWMwYTE0NmIuLjdjMWMzMjUwNTk4ZmIwIDEwMDY0NFxuLS0tIGEvYXJjaC9yaXNjdi9pbmNsdWRlL2FzbS9rdm1fYWlhLmhcbiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gvcmlzY3YvaW5jbHVkZS9hc20va3ZtX2FpYS5oXG5AQCAtMTY1LDggJiM0MzsxNjUsMTkgQEAgaW50IGt2bV9yaXNjdl9haWFfYWxsb2NfaGdlaShpbnQgY3B1LCBzdHJ1Y3Qga3ZtX3ZjcHUgKm93bmVyLFxuIFx0XHRcdCAgICAgdm9pZCBfX2lvbWVtICoqaGdlaV92YSwgcGh5c19hZGRyX3QgKmhnZWlfcGEpO1xuIHZvaWQga3ZtX3Jpc2N2X2FpYV9mcmVlX2hnZWkoaW50IGNwdSwgaW50IGhnZWkpO1xuIFxuLXZvaWQga3ZtX3Jpc2N2X2FpYV9lbmFibGUodm9pZCk7XG4tdm9pZCBrdm1fcmlzY3ZfYWlhX2Rpc2FibGUodm9pZCk7XG4mIzQzOy8qKlxuJiM0MzsgKiBrdm1fcmlzY3ZfYWlhX2VuYWJsZSgpIC0gRW5hYmxlIEFJQSBzdXBwb3J0IG9uIGN1cnJlbnQgQ1BVXG4mIzQzOyAqIEBmdWxsX2NsZWFudXA6IHRydWUgPSBmdWxsIGhhcmR3YXJlIGluaXQgKENQVSBob3RwbHVnL21vZHVsZSBsb2FkKSxcbiYjNDM7ICogICAgICAgICAgICAgICAgZmFsc2UgPSBsaWdodHdlaWdodCBDU1IgcmVzdG9yZSAoQ1BVIG5vbi1yZXRlbnRpb24gaWRsZSByZXN1bWUpXG4mIzQzOyAqL1xuJiM0Mzt2b2lkIGt2bV9yaXNjdl9haWFfZW5hYmxlKGJvb2wgZnVsbF9jbGVhbnVwKTtcbiYjNDM7XG4mIzQzOy8qKlxuJiM0MzsgKiBrdm1fcmlzY3ZfYWlhX2Rpc2FibGUoKSAtIERpc2FibGUgQUlBIHN1cHBvcnQgb24gY3VycmVudCBDUFVcbiYjNDM7ICogQGZ1bGxfY2xlYW51cDogdHJ1ZSA9IGZ1bGwgaGFyZHdhcmUgY2xlYW51cCAoQ1BVIGhvdHBsdWcvbW9kdWxlIGV4aXQpLFxuJiM0MzsgKiAgICAgICAgICAgICAgICBmYWxzZSA9IGxpZ2h0d2VpZ2h0IENTUiBzYXZlIChDUFUgbm9uLXJldGVudGlvbiBpZGxlIGVudHJ5KVxuJiM0MzsgKi9cbiYjNDM7dm9pZCBrdm1fcmlzY3ZfYWlhX2Rpc2FibGUoYm9vbCBmdWxsX2NsZWFudXApO1xuIGludCBrdm1fcmlzY3ZfYWlhX2luaXQodm9pZCk7XG4gdm9pZCBrdm1fcmlzY3ZfYWlhX2V4aXQodm9pZCk7XG4gXG5kaWZmIC0tZ2l0IGEvYXJjaC9yaXNjdi9pbmNsdWRlL2FzbS9rdm1faG9zdC5oIGIvYXJjaC9yaXNjdi9pbmNsdWRlL2FzbS9rdm1faG9zdC5oXG5pbmRleCA2MDAxN2NlZWM5ZDJhZi4uODA4YjRlZTFiZDEwYWMgMTAwNjQ0XG4tLS0gYS9hcmNoL3Jpc2N2L2luY2x1ZGUvYXNtL2t2bV9ob3N0LmhcbiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gvcmlzY3YvaW5jbHVkZS9hc20va3ZtX2hvc3QuaFxuQEAgLTMxOSw2ICYjNDM7MzE5LDggQEAgYm9vbCBrdm1fcmlzY3ZfdmNwdV9zdG9wcGVkKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSk7XG4gXG4gdm9pZCBrdm1fcmlzY3ZfdmNwdV9yZWNvcmRfc3RlYWxfdGltZShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpO1xuIFxuJiM0Mzt2b2lkIGt2bV9yaXNjdl9jbGVhcl9mb3JtZXJfdmNwdSh2b2lkKTtcbiYjNDM7XG4gLyogRmxhZ3MgcmVwcmVzZW50aW5nIGltcGxlbWVudGF0aW9uIHNwZWNpZmljIGRldGFpbHMgKi9cbiBERUNMQVJFX1NUQVRJQ19LRVlfRkFMU0Uoa3ZtX3Jpc2N2X3Zzc3RhZ2VfdGxiX25vX2dwYSk7XG4gXG5kaWZmIC0tZ2l0IGEvYXJjaC9yaXNjdi9rdm0vYWlhLmMgYi9hcmNoL3Jpc2N2L2t2bS9haWEuY1xuaW5kZXggYmFmYjAwOWM1Y2U1NTkuLjRjZjM1MWY5MWM2NDNmIDEwMDY0NFxuLS0tIGEvYXJjaC9yaXNjdi9rdm0vYWlhLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gvcmlzY3Yva3ZtL2FpYS5jXG5AQCAtMjUsNiAmIzQzOzI1LDcgQEAgc3RydWN0IGFpYV9oZ2VpX2NvbnRyb2wge1xuIFx0dW5zaWduZWQgbG9uZyBmcmVlX2JpdG1hcDtcbiBcdHN0cnVjdCBrdm1fdmNwdSAqb3duZXJzW0JJVFNfUEVSX0xPTkddO1xuIFx0dW5zaWduZWQgaW50IG5yX2hnZWk7XG4mIzQzO1x0dW5zaWduZWQgbG9uZyBzYXZlZF92YWx1ZTtcbiB9O1xuIHN0YXRpYyBERUZJTkVfUEVSX0NQVShzdHJ1Y3QgYWlhX2hnZWlfY29udHJvbCwgYWlhX2hnZWkpO1xuIHN0YXRpYyBpbnQgaGdlaV9wYXJlbnRfaXJxO1xuQEAgLTUzMiw1MCAmIzQzOzUzMyw1OSBAQCBzdGF0aWMgdm9pZCBhaWFfaGdlaV9leGl0KHZvaWQpXG4gXHRmcmVlX3BlcmNwdV9pcnEoaGdlaV9wYXJlbnRfaXJxLCBcdTAwMjZhaWFfaGdlaSk7XG4gfVxuIFxuLXZvaWQga3ZtX3Jpc2N2X2FpYV9lbmFibGUodm9pZClcbiYjNDM7dm9pZCBrdm1fcmlzY3ZfYWlhX2VuYWJsZShib29sIGZ1bGxfY2xlYW51cClcbiB7XG4tXHRjb25zdCBzdHJ1Y3QgaW1zaWNfZ2xvYmFsX2NvbmZpZyAqZ2M7XG4tXHRjb25zdCBzdHJ1Y3QgaW1zaWNfbG9jYWxfY29uZmlnICpsYztcbiBcdHN0cnVjdCBhaWFfaGdlaV9jb250cm9sICpoZ2N0cmw7XG4gXHR1bnNpZ25lZCBsb25nIGZsYWdzO1xuLVx0aW50IGFpYV9ucl9oZ2VpO1xuIFxuIFx0aWYgKCFrdm1fcmlzY3ZfYWlhX2F2YWlsYWJsZSgpKVxuIFx0XHRyZXR1cm47XG4gXG4tXHRnYyA9IGltc2ljX2dldF9nbG9iYWxfY29uZmlnKCk7XG4tXHRsYyA9IChnYykgPyB0aGlzX2NwdV9wdHIoZ2MtXHUwMDNlbG9jYWwpIDogTlVMTDtcbiBcdGhnY3RybCA9IHRoaXNfY3B1X3B0cihcdTAwMjZhaWFfaGdlaSk7XG4gXG4tXHQvKiBGaWd1cmUtb3V0IG51bWJlciBvZiBiaXRzIGluIEhHRUlFICovXG4tXHRjc3Jfd3JpdGUoQ1NSX0hHRUlFLCAtMVVMKTtcbi1cdGhnY3RybC1cdTAwM2Vucl9oZ2VpID0gZmxzX2xvbmcoY3NyX3JlYWQoQ1NSX0hHRUlFKSk7XG4tXHRjc3Jfd3JpdGUoQ1NSX0hHRUlFLCAwKTtcbi1cdGlmIChoZ2N0cmwtXHUwMDNlbnJfaGdlaSlcbi1cdFx0aGdjdHJsLVx1MDAzZW5yX2hnZWktLTtcbiYjNDM7XHRpZiAoZnVsbF9jbGVhbnVwKSB7XG4mIzQzO1x0XHRjb25zdCBzdHJ1Y3QgaW1zaWNfZ2xvYmFsX2NvbmZpZyAqZ2M7XG4mIzQzO1x0XHRjb25zdCBzdHJ1Y3QgaW1zaWNfbG9jYWxfY29uZmlnICpsYztcbiYjNDM7XHRcdGludCBhaWFfbnJfaGdlaTtcbiBcbi1cdC8qXG4tXHQgKiBOdW1iZXIgb2YgdXNhYmxlIHBlci1IQVJUIEhHRUkgbGluZXMgc2hvdWxkIGJlIG1pbmltdW0gb2Zcbi1cdCAqIHBlci1IQVJUIElNU0lDIGd1ZXN0IGZpbGVzIGFuZCBudW1iZXIgb2YgYml0cyBpbiBIR0VJRS5cbi1cdCAqL1xuLVx0aWYgKGxjKVxuLVx0XHRoZ2N0cmwtXHUwMDNlbnJfaGdlaSA9IG1pbigodWxvbmcpaGdjdHJsLVx1MDAzZW5yX2hnZWksIGxjLVx1MDAzZW5yX2d1ZXN0X2ZpbGVzKTtcbi1cdGVsc2Vcbi1cdFx0aGdjdHJsLVx1MDAzZW5yX2hnZWkgPSAwO1xuJiM0MztcdFx0Z2MgPSBpbXNpY19nZXRfZ2xvYmFsX2NvbmZpZygpO1xuJiM0MztcdFx0bGMgPSAoZ2MpID8gdGhpc19jcHVfcHRyKGdjLVx1MDAzZWxvY2FsKSA6IE5VTEw7XG4gXG4tXHQvKiBVcGRhdGUgdGhlIG51bWJlciBvZiBJTVNJQyBndWVzdCBmaWxlcyBhY3Jvc3MgYWxsIEhBUlRzICovXG4tXHRhaWFfbnJfaGdlaSA9IGF0b21pY19yZWFkKFx1MDAyNmt2bV9yaXNjdl9haWFfbnJfaGdlaSk7XG4tXHRkbyB7XG4tXHRcdGlmIChhaWFfbnJfaGdlaSBcdTAwM2M9IGhnY3RybC1cdTAwM2Vucl9oZ2VpKVxuLVx0XHRcdGJyZWFrO1xuLVx0fSB3aGlsZSAoIWF0b21pY190cnlfY21weGNoZyhcdTAwMjZrdm1fcmlzY3ZfYWlhX25yX2hnZWksIFx1MDAyNmFpYV9ucl9oZ2VpLCBoZ2N0cmwtXHUwMDNlbnJfaGdlaSkpO1xuJiM0MztcdFx0LyogRmlndXJlLW91dCBudW1iZXIgb2YgYml0cyBpbiBIR0VJRSAqL1xuJiM0MztcdFx0Y3NyX3dyaXRlKENTUl9IR0VJRSwgLTFVTCk7XG4mIzQzO1x0XHRoZ2N0cmwtXHUwMDNlbnJfaGdlaSA9IGZsc19sb25nKGNzcl9yZWFkKENTUl9IR0VJRSkpO1xuJiM0MztcdFx0Y3NyX3dyaXRlKENTUl9IR0VJRSwgMCk7XG4mIzQzO1x0XHRpZiAoaGdjdHJsLVx1MDAzZW5yX2hnZWkpXG4mIzQzO1x0XHRcdGhnY3RybC1cdTAwM2Vucl9oZ2VpLS07XG4gXG4tXHRyYXdfc3Bpbl9sb2NrX2lycXNhdmUoXHUwMDI2aGdjdHJsLVx1MDAzZWxvY2ssIGZsYWdzKTtcbi1cdGlmICghaGdjdHJsLVx1MDAzZWZyZWVfYml0bWFwX2luaXRpYWxpemVkKSB7XG4tXHRcdGhnY3RybC1cdTAwM2VmcmVlX2JpdG1hcCA9IChoZ2N0cmwtXHUwMDNlbnJfaGdlaSkgPyBHRU5NQVNLX1VMTChoZ2N0cmwtXHUwMDNlbnJfaGdlaSwgMSkgOiAwO1xuLVx0XHRoZ2N0cmwtXHUwMDNlZnJlZV9iaXRtYXBfaW5pdGlhbGl6ZWQgPSB0cnVlO1xuJiM0MztcdFx0LypcbiYjNDM7XHRcdCAqIE51bWJlciBvZiB1c2FibGUgcGVyLUhBUlQgSEdFSSBsaW5lcyBzaG91bGQgYmUgbWluaW11bSBvZlxuJiM0MztcdFx0ICogcGVyLUhBUlQgSU1TSUMgZ3Vlc3QgZmlsZXMgYW5kIG51bWJlciBvZiBiaXRzIGluIEhHRUlFLlxuJiM0MztcdFx0ICovXG4mIzQzO1x0XHRpZiAobGMpXG4mIzQzO1x0XHRcdGhnY3RybC1cdTAwM2Vucl9oZ2VpID0gbWluKCh1bG9uZyloZ2N0cmwtXHUwMDNlbnJfaGdlaSwgbGMtXHUwMDNlbnJfZ3Vlc3RfZmlsZXMpO1xuJiM0MztcdFx0ZWxzZVxuJiM0MztcdFx0XHRoZ2N0cmwtXHUwMDNlbnJfaGdlaSA9IDA7XG4mIzQzO1xuJiM0MztcdFx0LyogVXBkYXRlIHRoZSBudW1iZXIgb2YgSU1TSUMgZ3Vlc3QgZmlsZXMgYWNyb3NzIGFsbCBIQVJUcyAqL1xuJiM0MztcdFx0YWlhX25yX2hnZWkgPSBhdG9taWNfcmVhZChcdTAwMjZrdm1fcmlzY3ZfYWlhX25yX2hnZWkpO1xuJiM0MztcdFx0ZG8ge1xuJiM0MztcdFx0XHRpZiAoYWlhX25yX2hnZWkgXHUwMDNjPSBoZ2N0cmwtXHUwMDNlbnJfaGdlaSlcbiYjNDM7XHRcdFx0XHRicmVhaztcbiYjNDM7XHRcdH0gd2hpbGUgKCFhdG9taWNfdHJ5X2NtcHhjaGcoXHUwMDI2a3ZtX3Jpc2N2X2FpYV9ucl9oZ2VpLCBcdTAwMjZhaWFfbnJfaGdlaSxcbiYjNDM7XHRcdFx0XHRcdCAgICAgaGdjdHJsLVx1MDAzZW5yX2hnZWkpKTtcbiYjNDM7XG4mIzQzO1x0XHRyYXdfc3Bpbl9sb2NrX2lycXNhdmUoXHUwMDI2aGdjdHJsLVx1MDAzZWxvY2ssIGZsYWdzKTtcbiYjNDM7XHRcdGlmICghaGdjdHJsLVx1MDAzZWZyZWVfYml0bWFwX2luaXRpYWxpemVkKSB7XG4mIzQzO1x0XHRcdGhnY3RybC1cdTAwM2VmcmVlX2JpdG1hcCA9IChoZ2N0cmwtXHUwMDNlbnJfaGdlaSkgP1xuJiM0MztcdFx0XHRcdFx0ICAgICAgR0VOTUFTS19VTEwoaGdjdHJsLVx1MDAzZW5yX2hnZWksIDEpIDpcbiYjNDM7XHRcdFx0XHRcdCAgICAgIDA7XG4mIzQzO1x0XHRcdGhnY3RybC1cdTAwM2VmcmVlX2JpdG1hcF9pbml0aWFsaXplZCA9IHRydWU7XG4mIzQzO1x0XHR9XG4mIzQzO1x0XHRyYXdfc3Bpbl91bmxvY2tfaXJxcmVzdG9yZShcdTAwMjZoZ2N0cmwtXHUwMDNlbG9jaywgZmxhZ3MpO1xuJiM0MztcdH0gZWxzZSB7XG4mIzQzO1x0XHRjc3Jfd3JpdGUoQ1NSX0hHRUlFLCBoZ2N0cmwtXHUwMDNlc2F2ZWRfdmFsdWUpO1xuIFx0fVxuLVx0cmF3X3NwaW5fdW5sb2NrX2lycXJlc3RvcmUoXHUwMDI2aGdjdHJsLVx1MDAzZWxvY2ssIGZsYWdzKTtcbiBcbiBcdGNzcl93cml0ZShDU1JfSFZJQ1RMLCBhaWFfaHZpY3RsX3ZhbHVlKGZhbHNlKSk7XG4gXHRjc3Jfd3JpdGUoQ1NSX0hWSVBSSU8xLCAweDApO1xuQEAgLTU4NywxNiAmIzQzOzU5NywxNyBAQCB2b2lkIGt2bV9yaXNjdl9haWFfZW5hYmxlKHZvaWQpXG4gXHRjc3Jfd3JpdGUoQ1NSX0hWSVBSSU8ySCwgMHgwKTtcbiAjZW5kaWZcbiBcbi1cdC8qIEVuYWJsZSBwZXItQ1BVIFNHRUkgaW50ZXJydXB0ICovXG4tXHRlbmFibGVfcGVyY3B1X2lycShoZ2VpX3BhcmVudF9pcnEsXG4tXHRcdFx0ICBpcnFfZ2V0X3RyaWdnZXJfdHlwZShoZ2VpX3BhcmVudF9pcnEpKTtcbiYjNDM7XHRpZiAoZnVsbF9jbGVhbnVwKVxuJiM0MztcdFx0ZW5hYmxlX3BlcmNwdV9pcnEoaGdlaV9wYXJlbnRfaXJxLFxuJiM0MztcdFx0XHRcdCAgaXJxX2dldF90cmlnZ2VyX3R5cGUoaGdlaV9wYXJlbnRfaXJxKSk7XG4gXHRjc3Jfc2V0KENTUl9ISUUsIEJJVChJUlFfU19HRVhUKSk7XG4mIzQzO1xuIFx0LyogRW5hYmxlIElSUSBmaWx0ZXJpbmcgZm9yIG92ZXJmbG93IGludGVycnVwdCBvbmx5IGlmIHNzY29mcG1mIGlzIHByZXNlbnQgKi9cbiBcdGlmIChfX3Jpc2N2X2lzYV9leHRlbnNpb25fYXZhaWxhYmxlKE5VTEwsIFJJU0NWX0lTQV9FWFRfU1NDT0ZQTUYpKVxuIFx0XHRjc3Jfc2V0KENTUl9IVklFTiwgQklUKElSUV9QTVVfT1ZGKSk7XG4gfVxuIFxuLXZvaWQga3ZtX3Jpc2N2X2FpYV9kaXNhYmxlKHZvaWQpXG4mIzQzO3ZvaWQga3ZtX3Jpc2N2X2FpYV9kaXNhYmxlKGJvb2wgZnVsbF9jbGVhbnVwKVxuIHtcbiBcdGludCBpO1xuIFx0dW5zaWduZWQgbG9uZyBmbGFncztcbkBAIC02MDksNDIgJiM0Mzs2MjAsNDkgQEAgdm9pZCBrdm1fcmlzY3ZfYWlhX2Rpc2FibGUodm9pZClcbiBcbiBcdGlmIChfX3Jpc2N2X2lzYV9leHRlbnNpb25fYXZhaWxhYmxlKE5VTEwsIFJJU0NWX0lTQV9FWFRfU1NDT0ZQTUYpKVxuIFx0XHRjc3JfY2xlYXIoQ1NSX0hWSUVOLCBCSVQoSVJRX1BNVV9PVkYpKTtcbi1cdC8qIERpc2FibGUgcGVyLUNQVSBTR0VJIGludGVycnVwdCAqL1xuLVx0Y3NyX2NsZWFyKENTUl9ISUUsIEJJVChJUlFfU19HRVhUKSk7XG4tXHRkaXNhYmxlX3BlcmNwdV9pcnEoaGdlaV9wYXJlbnRfaXJxKTtcbiBcbi1cdGNzcl93cml0ZShDU1JfSFZJQ1RMLCBhaWFfaHZpY3RsX3ZhbHVlKGZhbHNlKSk7XG4tXG4tXHRyYXdfc3Bpbl9sb2NrX2lycXNhdmUoXHUwMDI2aGdjdHJsLVx1MDAzZWxvY2ssIGZsYWdzKTtcbi1cbi1cdGZvciAoaSA9IDA7IGkgXHUwMDNjPSBoZ2N0cmwtXHUwMDNlbnJfaGdlaTsgaSYjNDM7JiM0MzspIHtcbi1cdFx0dmNwdSA9IGhnY3RybC1cdTAwM2Vvd25lcnNbaV07XG4tXHRcdGlmICghdmNwdSlcbi1cdFx0XHRjb250aW51ZTtcbiYjNDM7XHRpZiAoZnVsbF9jbGVhbnVwKSB7XG4mIzQzO1x0XHQvKiBEaXNhYmxlIHBlci1DUFUgU0dFSSBpbnRlcnJ1cHQgKi9cbiYjNDM7XHRcdGNzcl9jbGVhcihDU1JfSElFLCBCSVQoSVJRX1NfR0VYVCkpO1xuJiM0MztcdFx0ZGlzYWJsZV9wZXJjcHVfaXJxKGhnZWlfcGFyZW50X2lycSk7XG4mIzQzO1x0fVxuIFxuLVx0XHQvKlxuLVx0XHQgKiBXZSByZWxlYXNlIGhnY3RybC1cdTAwM2Vsb2NrIGJlZm9yZSBub3RpZnlpbmcgSU1TSUNcbi1cdFx0ICogc28gdGhhdCB3ZSBkb24mIzM5O3QgaGF2ZSBsb2NrIG9yZGVyaW5nIGlzc3Vlcy5cbi1cdFx0ICovXG4tXHRcdHJhd19zcGluX3VubG9ja19pcnFyZXN0b3JlKFx1MDAyNmhnY3RybC1cdTAwM2Vsb2NrLCBmbGFncyk7XG4mIzQzO1x0Y3NyX3dyaXRlKENTUl9IVklDVEwsIGFpYV9odmljdGxfdmFsdWUoZmFsc2UpKTtcbiBcbi1cdFx0LyogTm90aWZ5IElNU0lDICovXG4tXHRcdGt2bV9yaXNjdl92Y3B1X2FpYV9pbXNpY19yZWxlYXNlKHZjcHUpO1xuJiM0MztcdGlmIChmdWxsX2NsZWFudXApIHtcbiYjNDM7XHRcdHJhd19zcGluX2xvY2tfaXJxc2F2ZShcdTAwMjZoZ2N0cmwtXHUwMDNlbG9jaywgZmxhZ3MpO1xuIFxuLVx0XHQvKlxuLVx0XHQgKiBXYWtldXAgVkNQVSBpZiBpdCB3YXMgYmxvY2tlZCBzbyB0aGF0IGl0IGNhblxuLVx0XHQgKiBydW4gb24gb3RoZXIgSEFSVHNcbi1cdFx0ICovXG4tXHRcdGlmIChjc3JfcmVhZChDU1JfSEdFSUUpIFx1MDAyNiBCSVQoaSkpIHtcbi1cdFx0XHRjc3JfY2xlYXIoQ1NSX0hHRUlFLCBCSVQoaSkpO1xuLVx0XHRcdGt2bV92Y3B1X2tpY2sodmNwdSk7XG4mIzQzO1x0XHRmb3IgKGkgPSAwOyBpIFx1MDAzYz0gaGdjdHJsLVx1MDAzZW5yX2hnZWk7IGkmIzQzOyYjNDM7KSB7XG4mIzQzO1x0XHRcdHZjcHUgPSBoZ2N0cmwtXHUwMDNlb3duZXJzW2ldO1xuJiM0MztcdFx0XHRpZiAoIXZjcHUpXG4mIzQzO1x0XHRcdFx0Y29udGludWU7XG4mIzQzO1xuJiM0MztcdFx0XHQvKlxuJiM0MztcdFx0XHQgKiBXZSByZWxlYXNlIGhnY3RybC1cdTAwM2Vsb2NrIGJlZm9yZSBub3RpZnlpbmcgSU1TSUNcbiYjNDM7XHRcdFx0ICogc28gdGhhdCB3ZSBkb24mIzM5O3QgaGF2ZSBsb2NrIG9yZGVyaW5nIGlzc3Vlcy5cbiYjNDM7XHRcdFx0ICovXG4mIzQzO1x0XHRcdHJhd19zcGluX3VubG9ja19pcnFyZXN0b3JlKFx1MDAyNmhnY3RybC1cdTAwM2Vsb2NrLCBmbGFncyk7XG4mIzQzO1xuJiM0MztcdFx0XHQvKiBOb3RpZnkgSU1TSUMgKi9cbiYjNDM7XHRcdFx0a3ZtX3Jpc2N2X3ZjcHVfYWlhX2ltc2ljX3JlbGVhc2UodmNwdSk7XG4mIzQzO1xuJiM0MztcdFx0XHQvKlxuJiM0MztcdFx0XHQgKiBXYWtldXAgVkNQVSBpZiBpdCB3YXMgYmxvY2tlZCBzbyB0aGF0IGl0IGNhblxuJiM0MztcdFx0XHQgKiBydW4gb24gb3RoZXIgSEFSVHNcbiYjNDM7XHRcdFx0ICovXG4mIzQzO1x0XHRcdGlmIChjc3JfcmVhZChDU1JfSEdFSUUpIFx1MDAyNiBCSVQoaSkpIHtcbiYjNDM7XHRcdFx0XHRjc3JfY2xlYXIoQ1NSX0hHRUlFLCBCSVQoaSkpO1xuJiM0MztcdFx0XHRcdGt2bV92Y3B1X2tpY2sodmNwdSk7XG4mIzQzO1x0XHRcdH1cbiYjNDM7XG4mIzQzO1x0XHRcdHJhd19zcGluX2xvY2tfaXJxc2F2ZShcdTAwMjZoZ2N0cmwtXHUwMDNlbG9jaywgZmxhZ3MpO1xuIFx0XHR9XG4gXG4tXHRcdHJhd19zcGluX2xvY2tfaXJxc2F2ZShcdTAwMjZoZ2N0cmwtXHUwMDNlbG9jaywgZmxhZ3MpO1xuJiM0MztcdFx0cmF3X3NwaW5fdW5sb2NrX2lycXJlc3RvcmUoXHUwMDI2aGdjdHJsLVx1MDAzZWxvY2ssIGZsYWdzKTtcbiYjNDM7XHR9IGVsc2Uge1xuJiM0MztcdFx0aGdjdHJsLVx1MDAzZXNhdmVkX3ZhbHVlID0gY3NyX3JlYWQoQ1NSX0hHRUlFKTtcbiBcdH1cbiBcbi1cdHJhd19zcGluX3VubG9ja19pcnFyZXN0b3JlKFx1MDAyNmhnY3RybC1cdTAwM2Vsb2NrLCBmbGFncyk7XG4tXG4gXHRwdXRfY3B1X3B0cihcdTAwMjZhaWFfaGdlaSk7XG4gfVxuIFxuZGlmZiAtLWdpdCBhL2FyY2gvcmlzY3Yva3ZtL21haW4uYyBiL2FyY2gvcmlzY3Yva3ZtL21haW4uY1xuaW5kZXggMDkyNGM3NTEwMGEyZDAuLmI0OGJiZDE4NTVjMWUyIDEwMDY0NFxuLS0tIGEvYXJjaC9yaXNjdi9rdm0vbWFpbi5jXG4mIzQzOyYjNDM7JiM0MzsgYi9hcmNoL3Jpc2N2L2t2bS9tYWluLmNcbkBAIC0xMCw2ICYjNDM7MTAsNyBAQFxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L2Vyci5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvbW9kdWxlLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9rdm1faG9zdC5oXHUwMDNlXG4mIzQzOyNpbmNsdWRlIFx1MDAzY2xpbnV4L2NwdV9wbS5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjYXNtL2NwdWZlYXR1cmUuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2FzbS9rdm1fbW11LmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2Nhc20va3ZtX25hY2wuaFx1MDAzZVxuQEAgLTMzLDE0ICYjNDM7MzQsOSBAQCBsb25nIGt2bV9hcmNoX2Rldl9pb2N0bChzdHJ1Y3QgZmlsZSAqZmlscCxcbiBcdHJldHVybiAtRUlOVkFMO1xuIH1cbiBcbi1pbnQga3ZtX2FyY2hfZW5hYmxlX3ZpcnR1YWxpemF0aW9uX2NwdSh2b2lkKVxuJiM0MzsvKiBJbml0aWFsaXplIGh5cGVydmlzb3IgQ1NScyAtIGNhbGxlZCBkdXJpbmcgQ1BVIG9ubGluZSBhbmQgbm9uLXJldGVudGlvbiBpZGxlIHJlc3VtZSAqL1xuJiM0MztzdGF0aWMgdm9pZCBrdm1fcmlzY3ZfY3NyX2VuYWJsZSh2b2lkKVxuIHtcbi1cdGludCByYztcbi1cbi1cdHJjID0ga3ZtX3Jpc2N2X25hY2xfZW5hYmxlKCk7XG4tXHRpZiAocmMpXG4tXHRcdHJldHVybiByYztcbi1cbiBcdGNzcl93cml0ZShDU1JfSEVERUxFRywgMCk7XG4gXHRjc3Jfd3JpdGUoQ1NSX0hJREVMRUcsIDApO1xuIFxuQEAgLTQ4LDE2ICYjNDM7NDQsMTEgQEAgaW50IGt2bV9hcmNoX2VuYWJsZV92aXJ0dWFsaXphdGlvbl9jcHUodm9pZClcbiBcdGNzcl93cml0ZShDU1JfSENPVU5URVJFTiwgMHgwMik7XG4gXG4gXHRjc3Jfd3JpdGUoQ1NSX0hWSVAsIDApO1xuLVxuLVx0a3ZtX3Jpc2N2X2FpYV9lbmFibGUoKTtcbi1cbi1cdHJldHVybiAwO1xuIH1cbiBcbi12b2lkIGt2bV9hcmNoX2Rpc2FibGVfdmlydHVhbGl6YXRpb25fY3B1KHZvaWQpXG4mIzQzOy8qIENsZWFyIGh5cGVydmlzb3IgQ1NScyAtIGNhbGxlZCBkdXJpbmcgQ1BVIG9mZmxpbmUgYW5kIG5vbi1yZXRlbnRpb24gaWRsZSBlbnRyeSAqL1xuJiM0MztzdGF0aWMgdm9pZCBrdm1fcmlzY3ZfY3NyX2Rpc2FibGUodm9pZClcbiB7XG4tXHRrdm1fcmlzY3ZfYWlhX2Rpc2FibGUoKTtcbi1cbiBcdC8qXG4gXHQgKiBBZnRlciBjbGVhcmluZyB0aGUgaGlkZWxlZyBDU1IsIHRoZSBob3N0IGtlcm5lbCB3aWxsIHJlY2VpdmVcbiBcdCAqIHNwdXJpb3VzIGludGVycnVwdHMgaWYgaHZpcCBDU1IgaGFzIHBlbmRpbmcgaW50ZXJydXB0cyBhbmQgdGhlXG5AQCAtNjksOSAmIzQzOzYwLDUzIEBAIHZvaWQga3ZtX2FyY2hfZGlzYWJsZV92aXJ0dWFsaXphdGlvbl9jcHUodm9pZClcbiBcdGNzcl93cml0ZShDU1JfSEVERUxFRywgMCk7XG4gXHRjc3Jfd3JpdGUoQ1NSX0hJREVMRUcsIDApO1xuIFxuJiM0MztcdGt2bV9yaXNjdl9jbGVhcl9mb3JtZXJfdmNwdSgpO1xuJiM0Mzt9XG4mIzQzO1xuJiM0MztpbnQga3ZtX2FyY2hfZW5hYmxlX3ZpcnR1YWxpemF0aW9uX2NwdSh2b2lkKVxuJiM0Mzt7XG4mIzQzO1x0aW50IHJjO1xuJiM0MztcbiYjNDM7XHRyYyA9IGt2bV9yaXNjdl9uYWNsX2VuYWJsZSgpO1xuJiM0MztcdGlmIChyYylcbiYjNDM7XHRcdHJldHVybiByYztcbiYjNDM7XG4mIzQzO1x0a3ZtX3Jpc2N2X2Nzcl9lbmFibGUoKTtcbiYjNDM7XHRrdm1fcmlzY3ZfYWlhX2VuYWJsZSh0cnVlKTtcbiYjNDM7XG4mIzQzO1x0cmV0dXJuIDA7XG4mIzQzO31cbiYjNDM7XG4mIzQzO3ZvaWQga3ZtX2FyY2hfZGlzYWJsZV92aXJ0dWFsaXphdGlvbl9jcHUodm9pZClcbiYjNDM7e1xuJiM0MztcdGt2bV9yaXNjdl9haWFfZGlzYWJsZSh0cnVlKTtcbiYjNDM7XHRrdm1fcmlzY3ZfY3NyX2Rpc2FibGUoKTtcbiBcdGt2bV9yaXNjdl9uYWNsX2Rpc2FibGUoKTtcbiB9XG4gXG4mIzQzO3N0YXRpYyBpbnQga3ZtX3Jpc2N2X2NwdV9wbV9ub3RpZmllcihzdHJ1Y3Qgbm90aWZpZXJfYmxvY2sgKnNlbGYsIHVuc2lnbmVkIGxvbmcgY21kLCB2b2lkICp2KVxuJiM0Mzt7XG4mIzQzO1x0c3dpdGNoIChjbWQpIHtcbiYjNDM7XHRjYXNlIENQVV9QTV9FWElUOlxuJiM0MztcdGNhc2UgQ1BVX1BNX0VOVEVSX0ZBSUxFRDpcbiYjNDM7XHRcdGt2bV9yaXNjdl9jc3JfZW5hYmxlKCk7XG4mIzQzO1x0XHRrdm1fcmlzY3ZfYWlhX2VuYWJsZShmYWxzZSk7XG4mIzQzO1x0XHRyZXR1cm4gTk9USUZZX09LO1xuJiM0MztcdGNhc2UgQ1BVX1BNX0VOVEVSOlxuJiM0MztcdFx0a3ZtX3Jpc2N2X2FpYV9kaXNhYmxlKGZhbHNlKTtcbiYjNDM7XHRcdGt2bV9yaXNjdl9jc3JfZGlzYWJsZSgpO1xuJiM0MztcdFx0cmV0dXJuIE5PVElGWV9PSztcbiYjNDM7XHRkZWZhdWx0OlxuJiM0MztcdFx0YnJlYWs7XG4mIzQzO1x0fVxuJiM0MztcbiYjNDM7XHRyZXR1cm4gTk9USUZZX0RPTkU7XG4mIzQzO31cbiYjNDM7XG4mIzQzO3N0YXRpYyBzdHJ1Y3Qgbm90aWZpZXJfYmxvY2sga3ZtX3Jpc2N2X2NwdV9wbV9uYiA9IHtcbiYjNDM7XHQubm90aWZpZXJfY2FsbCA9IGt2bV9yaXNjdl9jcHVfcG1fbm90aWZpZXIsXG4mIzQzO307XG4mIzQzO1xuIHN0YXRpYyB2b2lkIGt2bV9yaXNjdl90ZWFyZG93bih2b2lkKVxuIHtcbiBcdGt2bV9yaXNjdl9haWFfZXhpdCgpO1xuQEAgLTE3MiwyMiAmIzQzOzIwNyw0MCBAQCBzdGF0aWMgaW50IF9faW5pdCByaXNjdl9rdm1faW5pdCh2b2lkKVxuIFxuIFx0a3ZtX3JlZ2lzdGVyX3BlcmZfY2FsbGJhY2tzKCk7XG4gXG4tXHRyYyA9IGt2bV9pbml0KHNpemVvZihzdHJ1Y3Qga3ZtX3ZjcHUpLCAwLCBUSElTX01PRFVMRSk7XG4tXHRpZiAocmMpIHtcbi1cdFx0a3ZtX3Jpc2N2X3RlYXJkb3duKCk7XG4tXHRcdHJldHVybiByYztcbiYjNDM7XHQvKiBSZWdpc3RlciBDUFUgUE0gbm90aWZpZXIgZm9yIENQVSBpZGxlIG5vbi1yZXRlbnRpb24gc3RhdGVzICovXG4mIzQzO1x0aWYgKElTX0VOQUJMRUQoQ09ORklHX0NQVV9QTSkpIHtcbiYjNDM7XHRcdHJjID0gY3B1X3BtX3JlZ2lzdGVyX25vdGlmaWVyKFx1MDAyNmt2bV9yaXNjdl9jcHVfcG1fbmIpO1xuJiM0MztcdFx0aWYgKHJjKSB7XG4mIzQzO1x0XHRcdGt2bV9lcnIoXCYjMzQ7RmFpbGVkIHRvIHJlZ2lzdGVyIENQVSBQTSBub3RpZmllcjogJWRcXG5cJiMzNDssIHJjKTtcbiYjNDM7XHRcdFx0Z290byBlcnJfdGVhcmRvd247XG4mIzQzO1x0XHR9XG4gXHR9XG4gXG4mIzQzO1x0cmMgPSBrdm1faW5pdChzaXplb2Yoc3RydWN0IGt2bV92Y3B1KSwgMCwgVEhJU19NT0RVTEUpO1xuJiM0MztcdGlmIChyYylcbiYjNDM7XHRcdGdvdG8gZXJyX3VucmVnaXN0ZXJfY3B1X3BtO1xuJiM0MztcbiBcdGlmIChrdm1fcmlzY3ZfYWlhX2F2YWlsYWJsZSgpKVxuIFx0XHRrdm1faW5mbyhcJiMzNDtBSUEgYXZhaWxhYmxlIHdpdGggJWQgZ3Vlc3QgZXh0ZXJuYWwgaW50ZXJydXB0c1xcblwmIzM0OyxcbiBcdFx0XHQgYXRvbWljX3JlYWQoXHUwMDI2a3ZtX3Jpc2N2X2FpYV9ucl9oZ2VpKSk7XG4gXG4gXHRyZXR1cm4gMDtcbiYjNDM7XG4mIzQzO2Vycl91bnJlZ2lzdGVyX2NwdV9wbTpcbiYjNDM7XHRpZiAoSVNfRU5BQkxFRChDT05GSUdfQ1BVX1BNKSlcbiYjNDM7XHRcdGNwdV9wbV91bnJlZ2lzdGVyX25vdGlmaWVyKFx1MDAyNmt2bV9yaXNjdl9jcHVfcG1fbmIpO1xuJiM0MztlcnJfdGVhcmRvd246XG4mIzQzO1x0a3ZtX3Jpc2N2X3RlYXJkb3duKCk7XG4mIzQzO1x0cmV0dXJuIHJjO1xuIH1cbiBtb2R1bGVfaW5pdChyaXNjdl9rdm1faW5pdCk7XG4gXG4gc3RhdGljIHZvaWQgX19leGl0IHJpc2N2X2t2bV9leGl0KHZvaWQpXG4ge1xuJiM0MztcdC8qIFVucmVnaXN0ZXIgQ1BVIFBNIG5vdGlmaWVyICovXG4mIzQzO1x0aWYgKElTX0VOQUJMRUQoQ09ORklHX0NQVV9QTSkpXG4mIzQzO1x0XHRjcHVfcG1fdW5yZWdpc3Rlcl9ub3RpZmllcihcdTAwMjZrdm1fcmlzY3ZfY3B1X3BtX25iKTtcbiYjNDM7XG4gXHRrdm1fZXhpdCgpO1xuIFxuIFx0a3ZtX3Jpc2N2X3RlYXJkb3duKCk7XG5kaWZmIC0tZ2l0IGEvYXJjaC9yaXNjdi9rdm0vdmNwdS5jIGIvYXJjaC9yaXNjdi9rdm0vdmNwdS5jXG5pbmRleCBjZjZlMjMxZTc2ZTI1NC4uZTQ4MzM4ZjkwN2Y0ODggMTAwNjQ0XG4tLS0gYS9hcmNoL3Jpc2N2L2t2bS92Y3B1LmNcbiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gvcmlzY3Yva3ZtL3ZjcHUuY1xuQEAgLTI2LDYgJiM0MzsyNiwxNyBAQFxuIFxuIHN0YXRpYyBERUZJTkVfUEVSX0NQVShzdHJ1Y3Qga3ZtX3ZjcHUgKiwga3ZtX2Zvcm1lcl92Y3B1KTtcbiBcbiYjNDM7dm9pZCBrdm1fcmlzY3ZfY2xlYXJfZm9ybWVyX3ZjcHUodm9pZClcbiYjNDM7e1xuJiM0MztcdC8qXG4mIzQzO1x0ICogQ2xlYXIgdGhlIHBlci1DUFUgZm9ybWVyIFZDUFUgcG9pbnRlciBiZWNhdXNlIGh5cGVydmlzb3IgQ1NSIHN0YXRlXG4mIzQzO1x0ICogd2lsbCBiZSBsb3N0LiBUaGlzIGVuc3VyZXMgdGhhdCB0aGUgbmV4dCBWQ1BVIGVudHJ5IHdpbGwgcHJvcGVybHlcbiYjNDM7XHQgKiByZXN0b3JlIGFsbCBDU1JzIGluc3RlYWQgb2YgaW5jb3JyZWN0bHkgc2tpcHBpbmcgQ1NSIHJlc3RvcmF0aW9uXG4mIzQzO1x0ICogdmlhIHRoZSBmYXN0LXBhdGggb3B0aW1pemF0aW9uLlxuJiM0MztcdCAqL1xuJiM0MztcdF9fdGhpc19jcHVfd3JpdGUoa3ZtX2Zvcm1lcl92Y3B1LCBOVUxMKTtcbiYjNDM7fVxuJiM0MztcbiBjb25zdCBzdHJ1Y3Qga3ZtX3N0YXRzX2Rlc2Mga3ZtX3ZjcHVfc3RhdHNfZGVzY1tdID0ge1xuIFx0S1ZNX0dFTkVSSUNfVkNQVV9TVEFUUygpLFxuIFx0U1RBVFNfREVTQ19DT1VOVEVSKFZDUFUsIGVjYWxsX2V4aXRfc3RhdCksXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjMgMDA6NDU8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0tWTSYjMzQ7LAogICAgJiMzNDtDUFVfUE0mIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtrdm1fcmlzY3ZfYWlhX2VuYWJsZSYjMzQ7LAogICAgJiMzNDtrdm1fcmlzY3ZfYWlhX2Rpc2FibGUmIzM0OywKICAgICYjMzQ7a3ZtX3Jpc2N2X2NwdV9wbV9ub3RpZmllciYjMzQ7LAogICAgJiMzNDtrdm1fcmlzY3ZfY2xlYXJfZm9ybWVyX3ZjcHUmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgUklTQy1WIEtWTSB0byBwcm9wZXJseSBoYW5kbGUgQ1BVIHBvd2VyIG1hbmFnZW1lbnQgKGlkbGUgbm9uLXJldGVudGlvbiBzdGF0ZXMpIGJ5IHNhdmluZyBhbmQgcmVzdG9yaW5nIEFJQSAoQWR2YW5jZWQgSW50ZXJydXB0IEFyY2hpdGVjdHVyZSkgYW5kIGh5cGVydmlzb3IgQ1NSIHN0YXRlLiBUaGlzIGlzIGNvcmUgS1ZNIGxvZ2ljIGFuZCBzaG91bGQgYmUgZnV6emVkIHRvIGVuc3VyZSBubyBzdGF0ZSBpcyBsb3N0IG9yIGNvcnJ1cHRlZCBkdXJpbmcgQ1BVIGlkbGUgdHJhbnNpdGlvbnMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0CiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSwKICAgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IGJiODA4MTNmYmUzMzM0OTA5YjUxMjcxNmU1ZjgyY2QwYjU5Mjk3YjAKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgVGh1IEp1bCAyMyAwMDo0NToyNiAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2FyY2gvcmlzY3YvaW5jbHVkZS9hc20va3ZtX2FpYS5oIGIvYXJjaC9yaXNjdi9pbmNsdWRlL2FzbS9rdm1fYWlhLmgKaW5kZXggYzY3ZWM1YWMwYTE0NmIuLjdjMWMzMjUwNTk4ZmIwIDEwMDY0NAotLS0gYS9hcmNoL3Jpc2N2L2luY2x1ZGUvYXNtL2t2bV9haWEuaAomIzQzOyYjNDM7JiM0MzsgYi9hcmNoL3Jpc2N2L2luY2x1ZGUvYXNtL2t2bV9haWEuaApAQCAtMTY1LDggJiM0MzsxNjUsMTkgQEAgaW50IGt2bV9yaXNjdl9haWFfYWxsb2NfaGdlaShpbnQgY3B1LCBzdHJ1Y3Qga3ZtX3ZjcHUgKm93bmVyLAogCQkJICAgICB2b2lkIF9faW9tZW0gKipoZ2VpX3ZhLCBwaHlzX2FkZHJfdCAqaGdlaV9wYSk7CiB2b2lkIGt2bV9yaXNjdl9haWFfZnJlZV9oZ2VpKGludCBjcHUsIGludCBoZ2VpKTsKIAotdm9pZCBrdm1fcmlzY3ZfYWlhX2VuYWJsZSh2b2lkKTsKLXZvaWQga3ZtX3Jpc2N2X2FpYV9kaXNhYmxlKHZvaWQpOwomIzQzOy8qKgomIzQzOyAqIGt2bV9yaXNjdl9haWFfZW5hYmxlKCkgLSBFbmFibGUgQUlBIHN1cHBvcnQgb24gY3VycmVudCBDUFUKJiM0MzsgKiBAZnVsbF9jbGVhbnVwOiB0cnVlID0gZnVsbCBoYXJkd2FyZSBpbml0IChDUFUgaG90cGx1Zy9tb2R1bGUgbG9hZCksCiYjNDM7ICogICAgICAgICAgICAgICAgZmFsc2UgPSBsaWdodHdlaWdodCBDU1IgcmVzdG9yZSAoQ1BVIG5vbi1yZXRlbnRpb24gaWRsZSByZXN1bWUpCiYjNDM7ICovCiYjNDM7dm9pZCBrdm1fcmlzY3ZfYWlhX2VuYWJsZShib29sIGZ1bGxfY2xlYW51cCk7CiYjNDM7CiYjNDM7LyoqCiYjNDM7ICoga3ZtX3Jpc2N2X2FpYV9kaXNhYmxlKCkgLSBEaXNhYmxlIEFJQSBzdXBwb3J0IG9uIGN1cnJlbnQgQ1BVCiYjNDM7ICogQGZ1bGxfY2xlYW51cDogdHJ1ZSA9IGZ1bGwgaGFyZHdhcmUgY2xlYW51cCAoQ1BVIGhvdHBsdWcvbW9kdWxlIGV4aXQpLAomIzQzOyAqICAgICAgICAgICAgICAgIGZhbHNlID0gbGlnaHR3ZWlnaHQgQ1NSIHNhdmUgKENQVSBub24tcmV0ZW50aW9uIGlkbGUgZW50cnkpCiYjNDM7ICovCiYjNDM7dm9pZCBrdm1fcmlzY3ZfYWlhX2Rpc2FibGUoYm9vbCBmdWxsX2NsZWFudXApOwogaW50IGt2bV9yaXNjdl9haWFfaW5pdCh2b2lkKTsKIHZvaWQga3ZtX3Jpc2N2X2FpYV9leGl0KHZvaWQpOwogCmRpZmYgLS1naXQgYS9hcmNoL3Jpc2N2L2luY2x1ZGUvYXNtL2t2bV9ob3N0LmggYi9hcmNoL3Jpc2N2L2luY2x1ZGUvYXNtL2t2bV9ob3N0LmgKaW5kZXggNjAwMTdjZWVjOWQyYWYuLjgwOGI0ZWUxYmQxMGFjIDEwMDY0NAotLS0gYS9hcmNoL3Jpc2N2L2luY2x1ZGUvYXNtL2t2bV9ob3N0LmgKJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC9yaXNjdi9pbmNsdWRlL2FzbS9rdm1faG9zdC5oCkBAIC0zMTksNiAmIzQzOzMxOSw4IEBAIGJvb2wga3ZtX3Jpc2N2X3ZjcHVfc3RvcHBlZChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpOwogCiB2b2lkIGt2bV9yaXNjdl92Y3B1X3JlY29yZF9zdGVhbF90aW1lKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSk7CiAKJiM0Mzt2b2lkIGt2bV9yaXNjdl9jbGVhcl9mb3JtZXJfdmNwdSh2b2lkKTsKJiM0MzsKIC8qIEZsYWdzIHJlcHJlc2VudGluZyBpbXBsZW1lbnRhdGlvbiBzcGVjaWZpYyBkZXRhaWxzICovCiBERUNMQVJFX1NUQVRJQ19LRVlfRkFMU0Uoa3ZtX3Jpc2N2X3Zzc3RhZ2VfdGxiX25vX2dwYSk7CiAKZGlmZiAtLWdpdCBhL2FyY2gvcmlzY3Yva3ZtL2FpYS5jIGIvYXJjaC9yaXNjdi9rdm0vYWlhLmMKaW5kZXggYmFmYjAwOWM1Y2U1NTkuLjRjZjM1MWY5MWM2NDNmIDEwMDY0NAotLS0gYS9hcmNoL3Jpc2N2L2t2bS9haWEuYwomIzQzOyYjNDM7JiM0MzsgYi9hcmNoL3Jpc2N2L2t2bS9haWEuYwpAQCAtMjUsNiAmIzQzOzI1LDcgQEAgc3RydWN0IGFpYV9oZ2VpX2NvbnRyb2wgewogCXVuc2lnbmVkIGxvbmcgZnJlZV9iaXRtYXA7CiAJc3RydWN0IGt2bV92Y3B1ICpvd25lcnNbQklUU19QRVJfTE9OR107CiAJdW5zaWduZWQgaW50IG5yX2hnZWk7CiYjNDM7CXVuc2lnbmVkIGxvbmcgc2F2ZWRfdmFsdWU7CiB9Owogc3RhdGljIERFRklORV9QRVJfQ1BVKHN0cnVjdCBhaWFfaGdlaV9jb250cm9sLCBhaWFfaGdlaSk7CiBzdGF0aWMgaW50IGhnZWlfcGFyZW50X2lycTsKQEAgLTUzMiw1MCAmIzQzOzUzMyw1OSBAQCBzdGF0aWMgdm9pZCBhaWFfaGdlaV9leGl0KHZvaWQpCiAJZnJlZV9wZXJjcHVfaXJxKGhnZWlfcGFyZW50X2lycSwgJmFtcDthaWFfaGdlaSk7CiB9CiAKLXZvaWQga3ZtX3Jpc2N2X2FpYV9lbmFibGUodm9pZCkKJiM0Mzt2b2lkIGt2bV9yaXNjdl9haWFfZW5hYmxlKGJvb2wgZnVsbF9jbGVhbnVwKQogewotCWNvbnN0IHN0cnVjdCBpbXNpY19nbG9iYWxfY29uZmlnICpnYzsKLQljb25zdCBzdHJ1Y3QgaW1zaWNfbG9jYWxfY29uZmlnICpsYzsKIAlzdHJ1Y3QgYWlhX2hnZWlfY29udHJvbCAqaGdjdHJsOwogCXVuc2lnbmVkIGxvbmcgZmxhZ3M7Ci0JaW50IGFpYV9ucl9oZ2VpOwogCiAJaWYgKCFrdm1fcmlzY3ZfYWlhX2F2YWlsYWJsZSgpKQogCQlyZXR1cm47CiAKLQlnYyA9IGltc2ljX2dldF9nbG9iYWxfY29uZmlnKCk7Ci0JbGMgPSAoZ2MpID8gdGhpc19jcHVfcHRyKGdjLSZndDtsb2NhbCkgOiBOVUxMOwogCWhnY3RybCA9IHRoaXNfY3B1X3B0cigmYW1wO2FpYV9oZ2VpKTsKIAotCS8qIEZpZ3VyZS1vdXQgbnVtYmVyIG9mIGJpdHMgaW4gSEdFSUUgKi8KLQljc3Jfd3JpdGUoQ1NSX0hHRUlFLCAtMVVMKTsKLQloZ2N0cmwtJmd0O25yX2hnZWkgPSBmbHNfbG9uZyhjc3JfcmVhZChDU1JfSEdFSUUpKTsKLQljc3Jfd3JpdGUoQ1NSX0hHRUlFLCAwKTsKLQlpZiAoaGdjdHJsLSZndDtucl9oZ2VpKQotCQloZ2N0cmwtJmd0O25yX2hnZWktLTsKJiM0MzsJaWYgKGZ1bGxfY2xlYW51cCkgewomIzQzOwkJY29uc3Qgc3RydWN0IGltc2ljX2dsb2JhbF9jb25maWcgKmdjOwomIzQzOwkJY29uc3Qgc3RydWN0IGltc2ljX2xvY2FsX2NvbmZpZyAqbGM7CiYjNDM7CQlpbnQgYWlhX25yX2hnZWk7CiAKLQkvKgotCSAqIE51bWJlciBvZiB1c2FibGUgcGVyLUhBUlQgSEdFSSBsaW5lcyBzaG91bGQgYmUgbWluaW11bSBvZgotCSAqIHBlci1IQVJUIElNU0lDIGd1ZXN0IGZpbGVzIGFuZCBudW1iZXIgb2YgYml0cyBpbiBIR0VJRS4KLQkgKi8KLQlpZiAobGMpCi0JCWhnY3RybC0mZ3Q7bnJfaGdlaSA9IG1pbigodWxvbmcpaGdjdHJsLSZndDtucl9oZ2VpLCBsYy0mZ3Q7bnJfZ3Vlc3RfZmlsZXMpOwotCWVsc2UKLQkJaGdjdHJsLSZndDtucl9oZ2VpID0gMDsKJiM0MzsJCWdjID0gaW1zaWNfZ2V0X2dsb2JhbF9jb25maWcoKTsKJiM0MzsJCWxjID0gKGdjKSA/IHRoaXNfY3B1X3B0cihnYy0mZ3Q7bG9jYWwpIDogTlVMTDsKIAotCS8qIFVwZGF0ZSB0aGUgbnVtYmVyIG9mIElNU0lDIGd1ZXN0IGZpbGVzIGFjcm9zcyBhbGwgSEFSVHMgKi8KLQlhaWFfbnJfaGdlaSA9IGF0b21pY19yZWFkKCZhbXA7a3ZtX3Jpc2N2X2FpYV9ucl9oZ2VpKTsKLQlkbyB7Ci0JCWlmIChhaWFfbnJfaGdlaSAmbHQ7PSBoZ2N0cmwtJmd0O25yX2hnZWkpCi0JCQlicmVhazsKLQl9IHdoaWxlICghYXRvbWljX3RyeV9jbXB4Y2hnKCZhbXA7a3ZtX3Jpc2N2X2FpYV9ucl9oZ2VpLCAmYW1wO2FpYV9ucl9oZ2VpLCBoZ2N0cmwtJmd0O25yX2hnZWkpKTsKJiM0MzsJCS8qIEZpZ3VyZS1vdXQgbnVtYmVyIG9mIGJpdHMgaW4gSEdFSUUgKi8KJiM0MzsJCWNzcl93cml0ZShDU1JfSEdFSUUsIC0xVUwpOwomIzQzOwkJaGdjdHJsLSZndDtucl9oZ2VpID0gZmxzX2xvbmcoY3NyX3JlYWQoQ1NSX0hHRUlFKSk7CiYjNDM7CQljc3Jfd3JpdGUoQ1NSX0hHRUlFLCAwKTsKJiM0MzsJCWlmIChoZ2N0cmwtJmd0O25yX2hnZWkpCiYjNDM7CQkJaGdjdHJsLSZndDtucl9oZ2VpLS07CiAKLQlyYXdfc3Bpbl9sb2NrX2lycXNhdmUoJmFtcDtoZ2N0cmwtJmd0O2xvY2ssIGZsYWdzKTsKLQlpZiAoIWhnY3RybC0mZ3Q7ZnJlZV9iaXRtYXBfaW5pdGlhbGl6ZWQpIHsKLQkJaGdjdHJsLSZndDtmcmVlX2JpdG1hcCA9IChoZ2N0cmwtJmd0O25yX2hnZWkpID8gR0VOTUFTS19VTEwoaGdjdHJsLSZndDtucl9oZ2VpLCAxKSA6IDA7Ci0JCWhnY3RybC0mZ3Q7ZnJlZV9iaXRtYXBfaW5pdGlhbGl6ZWQgPSB0cnVlOwomIzQzOwkJLyoKJiM0MzsJCSAqIE51bWJlciBvZiB1c2FibGUgcGVyLUhBUlQgSEdFSSBsaW5lcyBzaG91bGQgYmUgbWluaW11bSBvZgomIzQzOwkJICogcGVyLUhBUlQgSU1TSUMgZ3Vlc3QgZmlsZXMgYW5kIG51bWJlciBvZiBiaXRzIGluIEhHRUlFLgomIzQzOwkJICovCiYjNDM7CQlpZiAobGMpCiYjNDM7CQkJaGdjdHJsLSZndDtucl9oZ2VpID0gbWluKCh1bG9uZyloZ2N0cmwtJmd0O25yX2hnZWksIGxjLSZndDtucl9ndWVzdF9maWxlcyk7CiYjNDM7CQllbHNlCiYjNDM7CQkJaGdjdHJsLSZndDtucl9oZ2VpID0gMDsKJiM0MzsKJiM0MzsJCS8qIFVwZGF0ZSB0aGUgbnVtYmVyIG9mIElNU0lDIGd1ZXN0IGZpbGVzIGFjcm9zcyBhbGwgSEFSVHMgKi8KJiM0MzsJCWFpYV9ucl9oZ2VpID0gYXRvbWljX3JlYWQoJmFtcDtrdm1fcmlzY3ZfYWlhX25yX2hnZWkpOwomIzQzOwkJZG8gewomIzQzOwkJCWlmIChhaWFfbnJfaGdlaSAmbHQ7PSBoZ2N0cmwtJmd0O25yX2hnZWkpCiYjNDM7CQkJCWJyZWFrOwomIzQzOwkJfSB3aGlsZSAoIWF0b21pY190cnlfY21weGNoZygmYW1wO2t2bV9yaXNjdl9haWFfbnJfaGdlaSwgJmFtcDthaWFfbnJfaGdlaSwKJiM0MzsJCQkJCSAgICAgaGdjdHJsLSZndDtucl9oZ2VpKSk7CiYjNDM7CiYjNDM7CQlyYXdfc3Bpbl9sb2NrX2lycXNhdmUoJmFtcDtoZ2N0cmwtJmd0O2xvY2ssIGZsYWdzKTsKJiM0MzsJCWlmICghaGdjdHJsLSZndDtmcmVlX2JpdG1hcF9pbml0aWFsaXplZCkgewomIzQzOwkJCWhnY3RybC0mZ3Q7ZnJlZV9iaXRtYXAgPSAoaGdjdHJsLSZndDtucl9oZ2VpKSA/CiYjNDM7CQkJCQkgICAgICBHRU5NQVNLX1VMTChoZ2N0cmwtJmd0O25yX2hnZWksIDEpIDoKJiM0MzsJCQkJCSAgICAgIDA7CiYjNDM7CQkJaGdjdHJsLSZndDtmcmVlX2JpdG1hcF9pbml0aWFsaXplZCA9IHRydWU7CiYjNDM7CQl9CiYjNDM7CQlyYXdfc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmYW1wO2hnY3RybC0mZ3Q7bG9jaywgZmxhZ3MpOwomIzQzOwl9IGVsc2UgewomIzQzOwkJY3NyX3dyaXRlKENTUl9IR0VJRSwgaGdjdHJsLSZndDtzYXZlZF92YWx1ZSk7CiAJfQotCXJhd19zcGluX3VubG9ja19pcnFyZXN0b3JlKCZhbXA7aGdjdHJsLSZndDtsb2NrLCBmbGFncyk7CiAKIAljc3Jfd3JpdGUoQ1NSX0hWSUNUTCwgYWlhX2h2aWN0bF92YWx1ZShmYWxzZSkpOwogCWNzcl93cml0ZShDU1JfSFZJUFJJTzEsIDB4MCk7CkBAIC01ODcsMTYgJiM0Mzs1OTcsMTcgQEAgdm9pZCBrdm1fcmlzY3ZfYWlhX2VuYWJsZSh2b2lkKQogCWNzcl93cml0ZShDU1JfSFZJUFJJTzJILCAweDApOwogI2VuZGlmCiAKLQkvKiBFbmFibGUgcGVyLUNQVSBTR0VJIGludGVycnVwdCAqLwotCWVuYWJsZV9wZXJjcHVfaXJxKGhnZWlfcGFyZW50X2lycSwKLQkJCSAgaXJxX2dldF90cmlnZ2VyX3R5cGUoaGdlaV9wYXJlbnRfaXJxKSk7CiYjNDM7CWlmIChmdWxsX2NsZWFudXApCiYjNDM7CQllbmFibGVfcGVyY3B1X2lycShoZ2VpX3BhcmVudF9pcnEsCiYjNDM7CQkJCSAgaXJxX2dldF90cmlnZ2VyX3R5cGUoaGdlaV9wYXJlbnRfaXJxKSk7CiAJY3NyX3NldChDU1JfSElFLCBCSVQoSVJRX1NfR0VYVCkpOwomIzQzOwogCS8qIEVuYWJsZSBJUlEgZmlsdGVyaW5nIGZvciBvdmVyZmxvdyBpbnRlcnJ1cHQgb25seSBpZiBzc2NvZnBtZiBpcyBwcmVzZW50ICovCiAJaWYgKF9fcmlzY3ZfaXNhX2V4dGVuc2lvbl9hdmFpbGFibGUoTlVMTCwgUklTQ1ZfSVNBX0VYVF9TU0NPRlBNRikpCiAJCWNzcl9zZXQoQ1NSX0hWSUVOLCBCSVQoSVJRX1BNVV9PVkYpKTsKIH0KIAotdm9pZCBrdm1fcmlzY3ZfYWlhX2Rpc2FibGUodm9pZCkKJiM0Mzt2b2lkIGt2bV9yaXNjdl9haWFfZGlzYWJsZShib29sIGZ1bGxfY2xlYW51cCkKIHsKIAlpbnQgaTsKIAl1bnNpZ25lZCBsb25nIGZsYWdzOwpAQCAtNjA5LDQyICYjNDM7NjIwLDQ5IEBAIHZvaWQga3ZtX3Jpc2N2X2FpYV9kaXNhYmxlKHZvaWQpCiAKIAlpZiAoX19yaXNjdl9pc2FfZXh0ZW5zaW9uX2F2YWlsYWJsZShOVUxMLCBSSVNDVl9JU0FfRVhUX1NTQ09GUE1GKSkKIAkJY3NyX2NsZWFyKENTUl9IVklFTiwgQklUKElSUV9QTVVfT1ZGKSk7Ci0JLyogRGlzYWJsZSBwZXItQ1BVIFNHRUkgaW50ZXJydXB0ICovCi0JY3NyX2NsZWFyKENTUl9ISUUsIEJJVChJUlFfU19HRVhUKSk7Ci0JZGlzYWJsZV9wZXJjcHVfaXJxKGhnZWlfcGFyZW50X2lycSk7CiAKLQljc3Jfd3JpdGUoQ1NSX0hWSUNUTCwgYWlhX2h2aWN0bF92YWx1ZShmYWxzZSkpOwotCi0JcmF3X3NwaW5fbG9ja19pcnFzYXZlKCZhbXA7aGdjdHJsLSZndDtsb2NrLCBmbGFncyk7Ci0KLQlmb3IgKGkgPSAwOyBpICZsdDs9IGhnY3RybC0mZ3Q7bnJfaGdlaTsgaSYjNDM7JiM0MzspIHsKLQkJdmNwdSA9IGhnY3RybC0mZ3Q7b3duZXJzW2ldOwotCQlpZiAoIXZjcHUpCi0JCQljb250aW51ZTsKJiM0MzsJaWYgKGZ1bGxfY2xlYW51cCkgewomIzQzOwkJLyogRGlzYWJsZSBwZXItQ1BVIFNHRUkgaW50ZXJydXB0ICovCiYjNDM7CQljc3JfY2xlYXIoQ1NSX0hJRSwgQklUKElSUV9TX0dFWFQpKTsKJiM0MzsJCWRpc2FibGVfcGVyY3B1X2lycShoZ2VpX3BhcmVudF9pcnEpOwomIzQzOwl9CiAKLQkJLyoKLQkJICogV2UgcmVsZWFzZSBoZ2N0cmwtJmd0O2xvY2sgYmVmb3JlIG5vdGlmeWluZyBJTVNJQwotCQkgKiBzbyB0aGF0IHdlIGRvbiYjMzk7dCBoYXZlIGxvY2sgb3JkZXJpbmcgaXNzdWVzLgotCQkgKi8KLQkJcmF3X3NwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmFtcDtoZ2N0cmwtJmd0O2xvY2ssIGZsYWdzKTsKJiM0MzsJY3NyX3dyaXRlKENTUl9IVklDVEwsIGFpYV9odmljdGxfdmFsdWUoZmFsc2UpKTsKIAotCQkvKiBOb3RpZnkgSU1TSUMgKi8KLQkJa3ZtX3Jpc2N2X3ZjcHVfYWlhX2ltc2ljX3JlbGVhc2UodmNwdSk7CiYjNDM7CWlmIChmdWxsX2NsZWFudXApIHsKJiM0MzsJCXJhd19zcGluX2xvY2tfaXJxc2F2ZSgmYW1wO2hnY3RybC0mZ3Q7bG9jaywgZmxhZ3MpOwogCi0JCS8qCi0JCSAqIFdha2V1cCBWQ1BVIGlmIGl0IHdhcyBibG9ja2VkIHNvIHRoYXQgaXQgY2FuCi0JCSAqIHJ1biBvbiBvdGhlciBIQVJUcwotCQkgKi8KLQkJaWYgKGNzcl9yZWFkKENTUl9IR0VJRSkgJmFtcDsgQklUKGkpKSB7Ci0JCQljc3JfY2xlYXIoQ1NSX0hHRUlFLCBCSVQoaSkpOwotCQkJa3ZtX3ZjcHVfa2ljayh2Y3B1KTsKJiM0MzsJCWZvciAoaSA9IDA7IGkgJmx0Oz0gaGdjdHJsLSZndDtucl9oZ2VpOyBpJiM0MzsmIzQzOykgewomIzQzOwkJCXZjcHUgPSBoZ2N0cmwtJmd0O293bmVyc1tpXTsKJiM0MzsJCQlpZiAoIXZjcHUpCiYjNDM7CQkJCWNvbnRpbnVlOwomIzQzOwomIzQzOwkJCS8qCiYjNDM7CQkJICogV2UgcmVsZWFzZSBoZ2N0cmwtJmd0O2xvY2sgYmVmb3JlIG5vdGlmeWluZyBJTVNJQwomIzQzOwkJCSAqIHNvIHRoYXQgd2UgZG9uJiMzOTt0IGhhdmUgbG9jayBvcmRlcmluZyBpc3N1ZXMuCiYjNDM7CQkJICovCiYjNDM7CQkJcmF3X3NwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmFtcDtoZ2N0cmwtJmd0O2xvY2ssIGZsYWdzKTsKJiM0MzsKJiM0MzsJCQkvKiBOb3RpZnkgSU1TSUMgKi8KJiM0MzsJCQlrdm1fcmlzY3ZfdmNwdV9haWFfaW1zaWNfcmVsZWFzZSh2Y3B1KTsKJiM0MzsKJiM0MzsJCQkvKgomIzQzOwkJCSAqIFdha2V1cCBWQ1BVIGlmIGl0IHdhcyBibG9ja2VkIHNvIHRoYXQgaXQgY2FuCiYjNDM7CQkJICogcnVuIG9uIG90aGVyIEhBUlRzCiYjNDM7CQkJICovCiYjNDM7CQkJaWYgKGNzcl9yZWFkKENTUl9IR0VJRSkgJmFtcDsgQklUKGkpKSB7CiYjNDM7CQkJCWNzcl9jbGVhcihDU1JfSEdFSUUsIEJJVChpKSk7CiYjNDM7CQkJCWt2bV92Y3B1X2tpY2sodmNwdSk7CiYjNDM7CQkJfQomIzQzOwomIzQzOwkJCXJhd19zcGluX2xvY2tfaXJxc2F2ZSgmYW1wO2hnY3RybC0mZ3Q7bG9jaywgZmxhZ3MpOwogCQl9CiAKLQkJcmF3X3NwaW5fbG9ja19pcnFzYXZlKCZhbXA7aGdjdHJsLSZndDtsb2NrLCBmbGFncyk7CiYjNDM7CQlyYXdfc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmYW1wO2hnY3RybC0mZ3Q7bG9jaywgZmxhZ3MpOwomIzQzOwl9IGVsc2UgewomIzQzOwkJaGdjdHJsLSZndDtzYXZlZF92YWx1ZSA9IGNzcl9yZWFkKENTUl9IR0VJRSk7CiAJfQogCi0JcmF3X3NwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmFtcDtoZ2N0cmwtJmd0O2xvY2ssIGZsYWdzKTsKLQogCXB1dF9jcHVfcHRyKCZhbXA7YWlhX2hnZWkpOwogfQogCmRpZmYgLS1naXQgYS9hcmNoL3Jpc2N2L2t2bS9tYWluLmMgYi9hcmNoL3Jpc2N2L2t2bS9tYWluLmMKaW5kZXggMDkyNGM3NTEwMGEyZDAuLmI0OGJiZDE4NTVjMWUyIDEwMDY0NAotLS0gYS9hcmNoL3Jpc2N2L2t2bS9tYWluLmMKJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC9yaXNjdi9rdm0vbWFpbi5jCkBAIC0xMCw2ICYjNDM7MTAsNyBAQAogI2luY2x1ZGUgJmx0O2xpbnV4L2Vyci5oJmd0OwogI2luY2x1ZGUgJmx0O2xpbnV4L21vZHVsZS5oJmd0OwogI2luY2x1ZGUgJmx0O2xpbnV4L2t2bV9ob3N0LmgmZ3Q7CiYjNDM7I2luY2x1ZGUgJmx0O2xpbnV4L2NwdV9wbS5oJmd0OwogI2luY2x1ZGUgJmx0O2FzbS9jcHVmZWF0dXJlLmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7YXNtL2t2bV9tbXUuaCZndDsKICNpbmNsdWRlICZsdDthc20va3ZtX25hY2wuaCZndDsKQEAgLTMzLDE0ICYjNDM7MzQsOSBAQCBsb25nIGt2bV9hcmNoX2Rldl9pb2N0bChzdHJ1Y3QgZmlsZSAqZmlscCwKIAlyZXR1cm4gLUVJTlZBTDsKIH0KIAotaW50IGt2bV9hcmNoX2VuYWJsZV92aXJ0dWFsaXphdGlvbl9jcHUodm9pZCkKJiM0MzsvKiBJbml0aWFsaXplIGh5cGVydmlzb3IgQ1NScyAtIGNhbGxlZCBkdXJpbmcgQ1BVIG9ubGluZSBhbmQgbm9uLXJldGVudGlvbiBpZGxlIHJlc3VtZSAqLwomIzQzO3N0YXRpYyB2b2lkIGt2bV9yaXNjdl9jc3JfZW5hYmxlKHZvaWQpCiB7Ci0JaW50IHJjOwotCi0JcmMgPSBrdm1fcmlzY3ZfbmFjbF9lbmFibGUoKTsKLQlpZiAocmMpCi0JCXJldHVybiByYzsKLQogCWNzcl93cml0ZShDU1JfSEVERUxFRywgMCk7CiAJY3NyX3dyaXRlKENTUl9ISURFTEVHLCAwKTsKIApAQCAtNDgsMTYgJiM0Mzs0NCwxMSBAQCBpbnQga3ZtX2FyY2hfZW5hYmxlX3ZpcnR1YWxpemF0aW9uX2NwdSh2b2lkKQogCWNzcl93cml0ZShDU1JfSENPVU5URVJFTiwgMHgwMik7CiAKIAljc3Jfd3JpdGUoQ1NSX0hWSVAsIDApOwotCi0Ja3ZtX3Jpc2N2X2FpYV9lbmFibGUoKTsKLQotCXJldHVybiAwOwogfQogCi12b2lkIGt2bV9hcmNoX2Rpc2FibGVfdmlydHVhbGl6YXRpb25fY3B1KHZvaWQpCiYjNDM7LyogQ2xlYXIgaHlwZXJ2aXNvciBDU1JzIC0gY2FsbGVkIGR1cmluZyBDUFUgb2ZmbGluZSBhbmQgbm9uLXJldGVudGlvbiBpZGxlIGVudHJ5ICovCiYjNDM7c3RhdGljIHZvaWQga3ZtX3Jpc2N2X2Nzcl9kaXNhYmxlKHZvaWQpCiB7Ci0Ja3ZtX3Jpc2N2X2FpYV9kaXNhYmxlKCk7Ci0KIAkvKgogCSAqIEFmdGVyIGNsZWFyaW5nIHRoZSBoaWRlbGVnIENTUiwgdGhlIGhvc3Qga2VybmVsIHdpbGwgcmVjZWl2ZQogCSAqIHNwdXJpb3VzIGludGVycnVwdHMgaWYgaHZpcCBDU1IgaGFzIHBlbmRpbmcgaW50ZXJydXB0cyBhbmQgdGhlCkBAIC02OSw5ICYjNDM7NjAsNTMgQEAgdm9pZCBrdm1fYXJjaF9kaXNhYmxlX3ZpcnR1YWxpemF0aW9uX2NwdSh2b2lkKQogCWNzcl93cml0ZShDU1JfSEVERUxFRywgMCk7CiAJY3NyX3dyaXRlKENTUl9ISURFTEVHLCAwKTsKIAomIzQzOwlrdm1fcmlzY3ZfY2xlYXJfZm9ybWVyX3ZjcHUoKTsKJiM0Mzt9CiYjNDM7CiYjNDM7aW50IGt2bV9hcmNoX2VuYWJsZV92aXJ0dWFsaXphdGlvbl9jcHUodm9pZCkKJiM0Mzt7CiYjNDM7CWludCByYzsKJiM0MzsKJiM0MzsJcmMgPSBrdm1fcmlzY3ZfbmFjbF9lbmFibGUoKTsKJiM0MzsJaWYgKHJjKQomIzQzOwkJcmV0dXJuIHJjOwomIzQzOwomIzQzOwlrdm1fcmlzY3ZfY3NyX2VuYWJsZSgpOwomIzQzOwlrdm1fcmlzY3ZfYWlhX2VuYWJsZSh0cnVlKTsKJiM0MzsKJiM0MzsJcmV0dXJuIDA7CiYjNDM7fQomIzQzOwomIzQzO3ZvaWQga3ZtX2FyY2hfZGlzYWJsZV92aXJ0dWFsaXphdGlvbl9jcHUodm9pZCkKJiM0Mzt7CiYjNDM7CWt2bV9yaXNjdl9haWFfZGlzYWJsZSh0cnVlKTsKJiM0MzsJa3ZtX3Jpc2N2X2Nzcl9kaXNhYmxlKCk7CiAJa3ZtX3Jpc2N2X25hY2xfZGlzYWJsZSgpOwogfQogCiYjNDM7c3RhdGljIGludCBrdm1fcmlzY3ZfY3B1X3BtX25vdGlmaWVyKHN0cnVjdCBub3RpZmllcl9ibG9jayAqc2VsZiwgdW5zaWduZWQgbG9uZyBjbWQsIHZvaWQgKnYpCiYjNDM7ewomIzQzOwlzd2l0Y2ggKGNtZCkgewomIzQzOwljYXNlIENQVV9QTV9FWElUOgomIzQzOwljYXNlIENQVV9QTV9FTlRFUl9GQUlMRUQ6CiYjNDM7CQlrdm1fcmlzY3ZfY3NyX2VuYWJsZSgpOwomIzQzOwkJa3ZtX3Jpc2N2X2FpYV9lbmFibGUoZmFsc2UpOwomIzQzOwkJcmV0dXJuIE5PVElGWV9PSzsKJiM0MzsJY2FzZSBDUFVfUE1fRU5URVI6CiYjNDM7CQlrdm1fcmlzY3ZfYWlhX2Rpc2FibGUoZmFsc2UpOwomIzQzOwkJa3ZtX3Jpc2N2X2Nzcl9kaXNhYmxlKCk7CiYjNDM7CQlyZXR1cm4gTk9USUZZX09LOwomIzQzOwlkZWZhdWx0OgomIzQzOwkJYnJlYWs7CiYjNDM7CX0KJiM0MzsKJiM0MzsJcmV0dXJuIE5PVElGWV9ET05FOwomIzQzO30KJiM0MzsKJiM0MztzdGF0aWMgc3RydWN0IG5vdGlmaWVyX2Jsb2NrIGt2bV9yaXNjdl9jcHVfcG1fbmIgPSB7CiYjNDM7CS5ub3RpZmllcl9jYWxsID0ga3ZtX3Jpc2N2X2NwdV9wbV9ub3RpZmllciwKJiM0Mzt9OwomIzQzOwogc3RhdGljIHZvaWQga3ZtX3Jpc2N2X3RlYXJkb3duKHZvaWQpCiB7CiAJa3ZtX3Jpc2N2X2FpYV9leGl0KCk7CkBAIC0xNzIsMjIgJiM0MzsyMDcsNDAgQEAgc3RhdGljIGludCBfX2luaXQgcmlzY3Zfa3ZtX2luaXQodm9pZCkKIAogCWt2bV9yZWdpc3Rlcl9wZXJmX2NhbGxiYWNrcygpOwogCi0JcmMgPSBrdm1faW5pdChzaXplb2Yoc3RydWN0IGt2bV92Y3B1KSwgMCwgVEhJU19NT0RVTEUpOwotCWlmIChyYykgewotCQlrdm1fcmlzY3ZfdGVhcmRvd24oKTsKLQkJcmV0dXJuIHJjOwomIzQzOwkvKiBSZWdpc3RlciBDUFUgUE0gbm90aWZpZXIgZm9yIENQVSBpZGxlIG5vbi1yZXRlbnRpb24gc3RhdGVzICovCiYjNDM7CWlmIChJU19FTkFCTEVEKENPTkZJR19DUFVfUE0pKSB7CiYjNDM7CQlyYyA9IGNwdV9wbV9yZWdpc3Rlcl9ub3RpZmllcigmYW1wO2t2bV9yaXNjdl9jcHVfcG1fbmIpOwomIzQzOwkJaWYgKHJjKSB7CiYjNDM7CQkJa3ZtX2VycigmIzM0O0ZhaWxlZCB0byByZWdpc3RlciBDUFUgUE0gbm90aWZpZXI6ICVkXG4mIzM0OywgcmMpOwomIzQzOwkJCWdvdG8gZXJyX3RlYXJkb3duOwomIzQzOwkJfQogCX0KIAomIzQzOwlyYyA9IGt2bV9pbml0KHNpemVvZihzdHJ1Y3Qga3ZtX3ZjcHUpLCAwLCBUSElTX01PRFVMRSk7CiYjNDM7CWlmIChyYykKJiM0MzsJCWdvdG8gZXJyX3VucmVnaXN0ZXJfY3B1X3BtOwomIzQzOwogCWlmIChrdm1fcmlzY3ZfYWlhX2F2YWlsYWJsZSgpKQogCQlrdm1faW5mbygmIzM0O0FJQSBhdmFpbGFibGUgd2l0aCAlZCBndWVzdCBleHRlcm5hbCBpbnRlcnJ1cHRzXG4mIzM0OywKIAkJCSBhdG9taWNfcmVhZCgmYW1wO2t2bV9yaXNjdl9haWFfbnJfaGdlaSkpOwogCiAJcmV0dXJuIDA7CiYjNDM7CiYjNDM7ZXJyX3VucmVnaXN0ZXJfY3B1X3BtOgomIzQzOwlpZiAoSVNfRU5BQkxFRChDT05GSUdfQ1BVX1BNKSkKJiM0MzsJCWNwdV9wbV91bnJlZ2lzdGVyX25vdGlmaWVyKCZhbXA7a3ZtX3Jpc2N2X2NwdV9wbV9uYik7CiYjNDM7ZXJyX3RlYXJkb3duOgomIzQzOwlrdm1fcmlzY3ZfdGVhcmRvd24oKTsKJiM0MzsJcmV0dXJuIHJjOwogfQogbW9kdWxlX2luaXQocmlzY3Zfa3ZtX2luaXQpOwogCiBzdGF0aWMgdm9pZCBfX2V4aXQgcmlzY3Zfa3ZtX2V4aXQodm9pZCkKIHsKJiM0MzsJLyogVW5yZWdpc3RlciBDUFUgUE0gbm90aWZpZXIgKi8KJiM0MzsJaWYgKElTX0VOQUJMRUQoQ09ORklHX0NQVV9QTSkpCiYjNDM7CQljcHVfcG1fdW5yZWdpc3Rlcl9ub3RpZmllcigmYW1wO2t2bV9yaXNjdl9jcHVfcG1fbmIpOwomIzQzOwogCWt2bV9leGl0KCk7CiAKIAlrdm1fcmlzY3ZfdGVhcmRvd24oKTsKZGlmZiAtLWdpdCBhL2FyY2gvcmlzY3Yva3ZtL3ZjcHUuYyBiL2FyY2gvcmlzY3Yva3ZtL3ZjcHUuYwppbmRleCBjZjZlMjMxZTc2ZTI1NC4uZTQ4MzM4ZjkwN2Y0ODggMTAwNjQ0Ci0tLSBhL2FyY2gvcmlzY3Yva3ZtL3ZjcHUuYwomIzQzOyYjNDM7JiM0MzsgYi9hcmNoL3Jpc2N2L2t2bS92Y3B1LmMKQEAgLTI2LDYgJiM0MzsyNiwxNyBAQAogCiBzdGF0aWMgREVGSU5FX1BFUl9DUFUoc3RydWN0IGt2bV92Y3B1ICosIGt2bV9mb3JtZXJfdmNwdSk7CiAKJiM0Mzt2b2lkIGt2bV9yaXNjdl9jbGVhcl9mb3JtZXJfdmNwdSh2b2lkKQomIzQzO3sKJiM0MzsJLyoKJiM0MzsJICogQ2xlYXIgdGhlIHBlci1DUFUgZm9ybWVyIFZDUFUgcG9pbnRlciBiZWNhdXNlIGh5cGVydmlzb3IgQ1NSIHN0YXRlCiYjNDM7CSAqIHdpbGwgYmUgbG9zdC4gVGhpcyBlbnN1cmVzIHRoYXQgdGhlIG5leHQgVkNQVSBlbnRyeSB3aWxsIHByb3Blcmx5CiYjNDM7CSAqIHJlc3RvcmUgYWxsIENTUnMgaW5zdGVhZCBvZiBpbmNvcnJlY3RseSBza2lwcGluZyBDU1IgcmVzdG9yYXRpb24KJiM0MzsJICogdmlhIHRoZSBmYXN0LXBhdGggb3B0aW1pemF0aW9uLgomIzQzOwkgKi8KJiM0MzsJX190aGlzX2NwdV93cml0ZShrdm1fZm9ybWVyX3ZjcHUsIE5VTEwpOwomIzQzO30KJiM0MzsKIGNvbnN0IHN0cnVjdCBrdm1fc3RhdHNfZGVzYyBrdm1fdmNwdV9zdGF0c19kZXNjW10gPSB7CiAJS1ZNX0dFTkVSSUNfVkNQVV9TVEFUUygpLAogCVNUQVRTX0RFU0NfQ09VTlRFUihWQ1BVLCBlY2FsbF9leGl0X3N0YXQpLAo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMyAwMDo0NTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2OTgzCgkJCQkJCQlvdXRwdXQ6IDMzCgkJCQkJCQl0aG91Z2h0czogNDE4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgUklTQy1WIEtWTSBBSUEgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggZm9yIFJJU0MtViBLVk0sIGFuZCBteSBpbml0aWFsIHRob3VnaHQgaXMsICYjMzQ7QWxyaWdodCwgbGV0JiMzOTtzIHNlZSB3aGF0IHdlJiMzOTt2ZSBnb3QgaGVyZS4mIzM0OyBJdCBtb2RpZmllcyB0aGUgQUlBIChBZHZhbmNlZCBJbnRlcnJ1cHQgQXJjaGl0ZWN0dXJlKSBoYW5kbGluZywgc3BlY2lmaWNhbGx5IHRoZSBlbmFibGUvZGlzYWJsZSBmdW5jdGlvbnMgKGBrdm1fcmlzY3ZfYWlhX2VuYWJsZWAgYW5kIGBrdm1fcmlzY3ZfYWlhX2Rpc2FibGVgKSB0byB0YWtlIGEgYGZ1bGxfY2xlYW51cGAgYm9vbGVhbi4gQ2xldmVyLCBhIHRhcmdldGVkIGFwcHJvYWNoIHRvIGNsZWFudXBzLiBJdCBhbHNvIHNlZW1zIGxpa2Ugd2UmIzM5O3JlIGludGVncmF0aW5nIENQVSBQTSBub3RpZmllcnMgdG8gaGFuZGxlIEFJQSBzdGF0ZSBzYXZpbmcgYW5kIHJlc3RvcmluZyBkdXJpbmcgQ1BVIGlkbGUgbm9uLXJldGVudGlvbiBzdGF0ZXMuIEFuZCBJIHNlZSBhIGNsZWFyIG9mIGBrdm1fZm9ybWVyX3ZjcHVgIGR1cmluZyBDUFUgb2ZmbGluZSBhbmQgbm9uLXJldGVudGlvbiBpZGxlIGVudHJ5LiBUaGlzIGlzIHNtYXJ0OyBlbnN1cmVzIGEgY2xlYW4gc3RhdGUgdHJhbnNpdGlvbi4KCk15IGltbWVkaWF0ZSByZWFjdGlvbiBpcyB0byBhc3Nlc3MgaXRzIHJlYWNoYWJpbGl0eSBhbmQgZnVuY3Rpb25hbGl0eS4gVGhlIGNoYW5nZXMgYXJlIG5lYXRseSBpc29sYXRlZCB3aXRoaW4gYGFyY2gvcmlzY3Yva3ZtL2FpYS5jYCBhbmQgYGFyY2gvcmlzY3Yva3ZtL21haW4uY2AsIHdoaWNoIG1ha2VzIGl0IGVhc2llciB0byByZXZpZXcuIFRoaXMgYGt2bV9yaXNjdl9jcHVfcG1fbm90aWZpZXJgLCB3aGljaCBoYW5kbGVzIGBDUFVfUE1fRVhJVGAsIGBDUFVfUE1fRU5URVJfRkFJTEVEYCwgYW5kIGBDUFVfUE1fRU5URVJgLCBsb29rcyBzb2xpZC4gSXQmIzM5O3MgY2xlYXJseSBoYW5kbGluZyBDUFUgcG93ZXIgbWFuYWdlbWVudCwgcGFydGljdWxhcmx5IGlkbGUgc3RhdGVzLCBmb3IgS1ZNIG9uIFJJU0MtVi4gTm8gc3VycHJpc2VzIHRoZXJlLgoKTm93LCB0aGUgZnV6emluZyBxdWVzdGlvbi4gQ1BVIFBNIHN0YXRlcyB3aXRoaW4gYSBWTS4uLiB0aGF0JiMzOTtzIGEgYml0IG9mIGEgY2hhbGxlbmdlLiBJdCYjMzk7cyBub3QgdGhlIGVhc2llc3QgdGhpbmcgdG8gdHJpZ2dlciByZWxpYWJseS4gSG93ZXZlciwgc2luY2UgdGhpcyBwYXRjaCB0b3VjaGVzIGNvcmUgS1ZNIGxvZ2ljLCBpdCYjMzk7cyBkZWZpbml0ZWx5IHdvcnRoIGNvbnNpZGVyaW5nLiBUaGUgcGF0Y2ggbW9kaWZpZXMgYGt2bV9hcmNoX2VuYWJsZV92aXJ0dWFsaXphdGlvbl9jcHVgIGFuZCBga3ZtX2FyY2hfZGlzYWJsZV92aXJ0dWFsaXphdGlvbl9jcHVgLCB0aGF0JiMzOTtzIGEga2V5IGFyZWEuIEFuZCB0aGUgYWRkaXRpb24gb2YgdGhhdCBDUFUgUE0gbm90aWZpZXIgbWVhbnMgaXQmIzM5O3Mgbm93IGRpcmVjdGx5IGludGVydHdpbmVkLiBDYW4gc3l6a2FsbGVyIHRyaWdnZXIgQ1BVIFBNIHN0YXRlcz8gQWN0dWFsbHksIHllYWgsIGl0IGNhbiwgcG90ZW50aWFsbHkgdGhyb3VnaCBzeXNmcyB3cml0ZXMsIG9yIGp1c3QgcGxhaW4gb2xkIGlkbGUgdGltZS4gUGx1cywgS1ZNIGlvY3RscyBsaWtlIFZNIGFuZCBWQ1BVIGNyZWF0aW9uIHdpbGwgZGVmaW5pdGVseSBpbnRlcmFjdCB3aXRoIHRoaXMgbG9naWMuIFRpbWUgdG8gY2hlY2sgdGhlIGNvbmZpZ3MuLi4KClRoZSBjb25maWd1cmF0aW9ucyBJJiMzOTtsbCBsb29rIGF0IGFyZSBgQ09ORklHX0tWTWAsIGBDT05GSUdfUklTQ1ZgLCBhbmQgYENPTkZJR19DUFVfUE1gLiBJIG5lZWQgdG8gdmVyaWZ5IHRoYXQgdGhlc2UgYXJlIGNvcnJlY3RseSBzZXQgYW5kIGFjY291bnRlZCBmb3IuCgpGaW5hbGx5LCBJIG5lZWQgdG8gZm9jdXMgb24gc3BlY2lmaWMgZnVuY3Rpb25zIGZvciBkZWVwZXIgYW5hbHlzaXM6IGBrdm1fcmlzY3ZfYWlhX2VuYWJsZWAsIGBrdm1fcmlzY3ZfYWlhX2Rpc2FibGVgLCBga3ZtX3Jpc2N2X2NwdV9wbV9ub3RpZmllcmAsIGFuZCBga3ZtX3Jpc2N2X2NsZWFyX2Zvcm1lcl92Y3B1YC4gVGhlc2UgYXJlIHRoZSBjb3JlIGVsZW1lbnRzIEkmIzM5O2xsIGJlIHRhcmdldGluZyB0byB2ZXJpZnkgdGhpcyBwYXRjaCYjMzk7cyBpbnRlZ3JpdHkuIFRoZSB1c3VhbCBkcmlsbC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMyAwMDo0NTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtDT05GSUdfQ1BVX1BNJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7YXJjaC9yaXNjdi9rdm0vJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2FyY2gvcmlzY3Yva3ZtL21haW4uYz0xMTc9c3RhdGljIGludCBfX2luaXQgcmlzY3Zfa3ZtX2luaXQodm9pZClcbi0tXG5hcmNoL3Jpc2N2L2t2bS9tYWluLmMtMjEwLVx0LyogUmVnaXN0ZXIgQ1BVIFBNIG5vdGlmaWVyIGZvciBDUFUgaWRsZSBub24tcmV0ZW50aW9uIHN0YXRlcyAqL1xuYXJjaC9yaXNjdi9rdm0vbWFpbi5jOjIxMTpcdGlmIChJU19FTkFCTEVEKENPTkZJR19DUFVfUE0pKSB7XG5hcmNoL3Jpc2N2L2t2bS9tYWluLmMtMjEyLVx0XHRyYyA9IGNwdV9wbV9yZWdpc3Rlcl9ub3RpZmllcihcdTAwMjZrdm1fcmlzY3ZfY3B1X3BtX25iKTtcbi0tXG5hcmNoL3Jpc2N2L2t2bS9tYWluLmMtMjI5LWVycl91bnJlZ2lzdGVyX2NwdV9wbTpcbmFyY2gvcmlzY3Yva3ZtL21haW4uYzoyMzA6XHRpZiAoSVNfRU5BQkxFRChDT05GSUdfQ1BVX1BNKSlcbmFyY2gvcmlzY3Yva3ZtL21haW4uYy0yMzEtXHRcdGNwdV9wbV91bnJlZ2lzdGVyX25vdGlmaWVyKFx1MDAyNmt2bV9yaXNjdl9jcHVfcG1fbmIpO1xuLS1cbmFyY2gvcmlzY3Yva3ZtL21haW4uYz0yMzg9c3RhdGljIHZvaWQgX19leGl0IHJpc2N2X2t2bV9leGl0KHZvaWQpXG4tLVxuYXJjaC9yaXNjdi9rdm0vbWFpbi5jLTI0MC1cdC8qIFVucmVnaXN0ZXIgQ1BVIFBNIG5vdGlmaWVyICovXG5hcmNoL3Jpc2N2L2t2bS9tYWluLmM6MjQxOlx0aWYgKElTX0VOQUJMRUQoQ09ORklHX0NQVV9QTSkpXG5hcmNoL3Jpc2N2L2t2bS9tYWluLmMtMjQyLVx0XHRjcHVfcG1fdW5yZWdpc3Rlcl9ub3RpZmllcihcdTAwMjZrdm1fcmlzY3ZfY3B1X3BtX25iKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMyAwMDo0NTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4MzkxCgkJCQkJCQlvdXRwdXQ6IDMzCgkJCQkJCQl0aG91Z2h0czogMTkzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEluaXRpYWwgQXNzZXNzbWVudCBvZiB0aGUgS1ZNL1JJU0MtViBQYXRjaCoqCgpPa2F5LCBzbyB0aGlzIHBhdGNoIGlzIGNsZWFybHkgaW50cm9kdWNpbmcgc29tZSBzaWduaWZpY2FudCBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gS1ZNLCBzcGVjaWZpY2FsbHkgYXJvdW5kIGhvdyBpdCBoYW5kbGVzIENQVSBwb3dlciBtYW5hZ2VtZW50IGFuZCBpZGxlIHN0YXRlcyBvbiBSSVNDLVYuIFRoZSBtZW50aW9uIG9mIEFJQSAoQWR2YW5jZWQgSW50ZXJydXB0IEFyY2hpdGVjdHVyZSkgaXMgYSBrZXkgZGV0YWlsIC0gdGhhdCYjMzk7cyBkZWZpbml0ZWx5IGEgcG9pbnQgb2YgZm9jdXMuIEFuZCB0aGUgZmFjdCB0aGF0IGl0JiMzOTtzIHRvdWNoaW5nIGdlbmVyYWwgaHlwZXJ2aXNvciBDU1JzIGp1c3QgbWFrZXMgaXQgZXZlbiBtb3JlIGludGVyZXN0aW5nIGZyb20gYSBzZWN1cml0eSBwZXJzcGVjdGl2ZS4gTXkgaW5pdGlhbCB0aG91Z2h0PyBBYnNvbHV0ZWx5LCB0aGlzIG5lZWRzIHRvIGJlIHRob3JvdWdobHkgZnV6emVkLiBQb3RlbnRpYWwgYXR0YWNrIHN1cmZhY2UgaXMgYWxtb3N0IGd1YXJhbnRlZWQgdG8gYmUgdGhlcmUuCgpMZXQmIzM5O3MgcXVpY2tseSBpZGVudGlmeSB0aGUga2V5IGZ1bmN0aW9ucyB0aGlzIHBhdGNoIGlzIG1vZGlmeWluZy4gSSBzZWUgYGt2bV9yaXNjdl9haWFfZW5hYmxlYCwgYGt2bV9yaXNjdl9haWFfZGlzYWJsZWAsIGBrdm1fcmlzY3ZfY3B1X3BtX25vdGlmaWVyYCwgYW5kIGBrdm1fcmlzY3ZfY2xlYXJfZm9ybWVyX3ZjcHVgIG1lbnRpb25lZC4gVGhlc2UgYXJlIG15IHByaW1hcnkgZm9jdXMgc3ltYm9scyBmb3IgZnVydGhlciBhbmFseXNpcy4gVGhleSBhcmUgZGVmaW5pdGVseSBnb2luZyB0byBiZSB0aGUgcGxhY2VzIHdoZXJlIHRoaW5ncyBjYW4gZ28gd3JvbmcuCgpOb3csIGxldCYjMzk7cyBsb29rIGF0IHRoZSBjb25maWd1cmF0aW9uIGRlcGVuZGVuY2llcy4gVGhlIHBhdGNoJiMzOTtzIGNvbmZpZ3VyYXRpb24gcmVxdWlyZW1lbnRzIGFyZSBgS1ZNYCBhbmQgYENQVV9QTWAuIE9idmlvdXNseSwgc2luY2UgaXQmIzM5O3Mgd29ya2luZyB3aXRoIEtWTSwgYEtWTWAgaXMgZ29pbmcgdG8gYmUgcmVxdWlyZWQuIFRoZSBub3RpZmllciByZWdpc3RyYXRpb24gc3BlY2lmaWNhbGx5IGltcGxpZXMgdGhhdCBgQ1BVX1BNYCBtdXN0IGJlIGVuYWJsZWQuIEkgd29uZGVyIGlmIHRoZXJlIGFyZSBhbnkgKm90aGVyKiBjb25maWdzIHRoYXQgbmVlZCB0byBiZSBjb25zaWRlcmVkLiBHaXZlbiB0aGF0IHRoZSBjb2RlJiMzOTtzIGxvY2F0ZWQgaW4gYGFyY2gvcmlzY3Yva3ZtL2AsIEkmIzM5O2xsIHF1aWNrbHkgY2hlY2sgdGhlIEtjb25maWcgZm9yIFJJU0MtViBLVk0gdG8gbWFrZSBzdXJlIEkgaGF2ZW4mIzM5O3QgbWlzc2VkIGFueXRoaW5nIG9idmlvdXMuIEkmIzM5O2xsIG5lZWQgdG8gY2hlY2sgdGhlIGRlcGVuZGVuY2llcyBhbmQgZW5zdXJlIHRoZXJlIGFyZW4mIzM5O3QgYW55IGZ1cnRoZXIgY29uc3RyYWludHMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjMgMDA6NDU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIEtWTSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2FyY2gvcmlzY3Yva3ZtL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YXJjaC9yaXNjdi9rdm0vS2NvbmZpZz0xOD1pZiBWSVJUVUFMSVpBVElPTlxuYXJjaC9yaXNjdi9rdm0vS2NvbmZpZy0xOS1cbmFyY2gvcmlzY3Yva3ZtL0tjb25maWc6MjA6Y29uZmlnIEtWTVxuYXJjaC9yaXNjdi9rdm0vS2NvbmZpZy0yMS1cdHRyaXN0YXRlIFwmIzM0O0tlcm5lbC1iYXNlZCBWaXJ0dWFsIE1hY2hpbmUgKEtWTSkgc3VwcG9ydFwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIzIDAwOjQ1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDkwNzAKCQkJCQkJCW91dHB1dDogMzAKCQkJCQkJCXRob3VnaHRzOiAyMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzOgoKKipLVk0gQ29uZmlndXJhdGlvbiBEZWVwIERpdmUqKgoKT2theSwgc28gSSYjMzk7bSBmb2N1c2luZyBpbiBvbiB0aGUgY29uZmlndXJhdGlvbiByZWxhdGVkIHRvIGBLVk1gLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdGhhdCBpdCYjMzk7cyB0aGUgY2VudHJhbCBlbGVtZW50IEkgbmVlZCB0byB1bmRlcnN0YW5kIGZvciB0aGlzIHBhcnRpY3VsYXIgc2NlbmFyaW8uIE5vdywgYmVmb3JlIEkgcHJvY2VlZCBmdXJ0aGVyLCBJIG5lZWQgdG8gbWFrZSBhYnNvbHV0ZWx5IHN1cmUgSSYjMzk7bSBjbGVhciBvbiB0aGUgaW50ZXJyZWxhdGlvbnNoaXAgYmV0d2VlbiBgS1ZNYCBhbmQgb3RoZXIgZWxlbWVudHMsIHN1Y2ggYXMgdGhlIGBDUFVfUE1gIG1vZHVsZS4gTGV0IG1lIGdvIGJhY2sgYW5kIHJlLWV4YW1pbmUgdGhlIGBDUFVfUE1gIGVsZW1lbnRzIGluIHRoZSBjb25maWcsIGFuZCBlbnN1cmUgZXZlcnl0aGluZyB0aWVzIGJhY2sgaW4gdGhlIGNvcnJlY3QgbWFubmVyLiBJIHdhbnQgdG8gbWFrZSBzdXJlIEkgYW0gZ3Jhc3BpbmcgdGhlIGRlcGVuZGVuY2llcyBhcyBhIHdob2xlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIzIDAwOjQ1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBDUFVfUE0mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtrZXJuZWwvcG93ZXIvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtrZXJuZWwvcG93ZXIvS2NvbmZpZz0zODU9Y29uZmlnIFBNX0dFTkVSSUNfRE9NQUlOU19PRlxuLS1cbmtlcm5lbC9wb3dlci9LY29uZmlnLTM4OC1cbmtlcm5lbC9wb3dlci9LY29uZmlnOjM4OTpjb25maWcgQ1BVX1BNXG5rZXJuZWwvcG93ZXIvS2NvbmZpZy0zOTAtXHRib29sXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjMgMDA6NDU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogOTMzOAoJCQkJCQkJb3V0cHV0OiAxNTcKCQkJCQkJCXRob3VnaHRzOiAxNwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgcHJlc2VudGVkIGluIHRoZSBmaXJzdCBwZXJzb246CgoqKkNQVV9QTSBDb25maWd1cmF0aW9uIEFuYWx5c2lzKioKCkFscmlnaHQsIHNvIGBDUFVfUE1gIGlzIGEgYm9vbGVhbiBjb25maWd1cmF0aW9uIG9wdGlvbi4gU2ltcGxlIGVub3VnaC4gTXkgZ29hbCBoZXJlIGlzIHRvIGRldGVybWluZSBpdHMgaW1wbGljYXRpb25zIGFuZCBkZWNpZGUgb24gdGhlIGFwcHJvcHJpYXRlIHNldHRpbmdzIGJhc2VkIG9uIHRoZSBzeXN0ZW0mIzM5O3MgbmVlZHMsIHBlcmZvcm1hbmNlIHJlcXVpcmVtZW50cywgYW5kIHBvd2VyIHByb2ZpbGVzLiBJJiMzOTttIGdvaW5nIHRvIGNhcmVmdWxseSBhbmFseXplIHRoZSBpbXBhY3RzIG9mIGVuYWJsaW5nIG9yIGRpc2FibGluZyBpdCwgY29uc2lkZXJpbmcgdGhlIHNwZWNpZmljIGFyY2hpdGVjdHVyZSBhbmQgd29ya2xvYWRzIGF0IGhhbmQuIEkmIzM5O2xsIG5lZWQgdG8gZXhhbWluZSBob3cgaXQgaW50ZXJhY3RzIHdpdGggb3RoZXIgcG93ZXIgbWFuYWdlbWVudCBmZWF0dXJlcyBhbmQgZGV2aWNlIGRyaXZlcnMuIFRoZW4sIEkmIzM5O2xsIGRvY3VtZW50IG15IGZpbmRpbmdzIGFuZCBzZXQgdGhlIHJlc3VsdGluZyBjb25maWd1cmF0aW9uLCBtYWtpbmcgc3VyZSB0aGUgY2hhbmdlcyBhcmUganVzdGlmaWVkIGFuZCBwcm9wZXJseSB0ZXN0ZWQuIEkmIzM5O2xsIG5lZWQgdG8gY29uc2lkZXIgd2hldGhlciBkZWZhdWx0IHZhbHVlcyBhcmUgYXBwcm9wcmlhdGUsIG9yIHdoZXRoZXIgdGhpcyBzaG91bGQgYmUgYWx0ZXJlZCBmb3IgZWFjaCBzcGVjaWZpYyBtYWNoaW5lLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMyAwMDo0NTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7S1ZNJiMzNDssCiAgICAmIzM0O0NQVV9QTSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2t2bV9yaXNjdl9haWFfZW5hYmxlJiMzNDssCiAgICAmIzM0O2t2bV9yaXNjdl9haWFfZGlzYWJsZSYjMzQ7LAogICAgJiMzNDtrdm1fcmlzY3ZfY3B1X3BtX25vdGlmaWVyJiMzNDssCiAgICAmIzM0O2t2bV9yaXNjdl9jbGVhcl9mb3JtZXJfdmNwdSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBSSVNDLVYgS1ZNIHRvIHByb3Blcmx5IGhhbmRsZSBDUFUgcG93ZXIgbWFuYWdlbWVudCAoaWRsZSBub24tcmV0ZW50aW9uIHN0YXRlcykgYnkgc2F2aW5nIGFuZCByZXN0b3JpbmcgQUlBIChBZHZhbmNlZCBJbnRlcnJ1cHQgQXJjaGl0ZWN0dXJlKSBhbmQgaHlwZXJ2aXNvciBDU1Igc3RhdGUuIFRoaXMgaXMgY29yZSBLVk0gbG9naWMgYW5kIHNob3VsZCBiZSBmdXp6ZWQgdG8gZW5zdXJlIG5vIHN0YXRlIGlzIGxvc3Qgb3IgY29ycnVwdGVkIGR1cmluZyBDUFUgaWRsZSB0cmFuc2l0aW9ucy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7S1ZNJiMzNDssCiAgICAmIzM0O0NQVV9QTSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2t2bV9yaXNjdl9haWFfZW5hYmxlJiMzNDssCiAgICAmIzM0O2t2bV9yaXNjdl9haWFfZGlzYWJsZSYjMzQ7LAogICAgJiMzNDtrdm1fcmlzY3ZfY3B1X3BtX25vdGlmaWVyJiMzNDssCiAgICAmIzM0O2t2bV9yaXNjdl9jbGVhcl9mb3JtZXJfdmNwdSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBSSVNDLVYgS1ZNIHRvIHByb3Blcmx5IGhhbmRsZSBDUFUgcG93ZXIgbWFuYWdlbWVudCAoaWRsZSBub24tcmV0ZW50aW9uIHN0YXRlcykgYnkgc2F2aW5nIGFuZCByZXN0b3JpbmcgQUlBIChBZHZhbmNlZCBJbnRlcnJ1cHQgQXJjaGl0ZWN0dXJlKSBhbmQgaHlwZXJ2aXNvciBDU1Igc3RhdGUuIFRoaXMgaXMgY29yZSBLVk0gbG9naWMgYW5kIHNob3VsZCBiZSBmdXp6ZWQgdG8gZW5zdXJlIG5vIHN0YXRlIGlzIGxvc3Qgb3IgY29ycnVwdGVkIGR1cmluZyBDUFUgaWRsZSB0cmFuc2l0aW9ucy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIzVDAwOjQ1OjI4LjQ3NDkyNDYzMVoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIyMDIzMzQxNzg1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIktWTVwiLFxuICAgIFwiQ1BVX1BNXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwia3ZtX3Jpc2N2X2FpYV9lbmFibGVcIixcbiAgICBcImt2bV9yaXNjdl9haWFfZGlzYWJsZVwiLFxuICAgIFwia3ZtX3Jpc2N2X2NwdV9wbV9ub3RpZmllclwiLFxuICAgIFwia3ZtX3Jpc2N2X2NsZWFyX2Zvcm1lcl92Y3B1XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgUklTQy1WIEtWTSB0byBwcm9wZXJseSBoYW5kbGUgQ1BVIHBvd2VyIG1hbmFnZW1lbnQgKGlkbGUgbm9uLXJldGVudGlvbiBzdGF0ZXMpIGJ5IHNhdmluZyBhbmQgcmVzdG9yaW5nIEFJQSAoQWR2YW5jZWQgSW50ZXJydXB0IEFyY2hpdGVjdHVyZSkgYW5kIGh5cGVydmlzb3IgQ1NSIHN0YXRlLiBUaGlzIGlzIGNvcmUgS1ZNIGxvZ2ljIGFuZCBzaG91bGQgYmUgZnV6emVkIHRvIGVuc3VyZSBubyBzdGF0ZSBpcyBsb3N0IG9yIGNvcnJ1cHRlZCBkdXJpbmcgQ1BVIGlkbGUgdHJhbnNpdGlvbnMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIzVDAwOjQ1OjI4LjQ3NDkzMjU2MVoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTQyNjI4NjIwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgYmI4MDgxM2ZiZTMzMzQ5MDliNTEyNzE2ZTVmODJjZDBiNTkyOTdiMFxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgVGh1IEp1bCAyMyAwMDo0NToyNiAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9hcmNoL3Jpc2N2L2luY2x1ZGUvYXNtL2t2bV9haWEuaCBiL2FyY2gvcmlzY3YvaW5jbHVkZS9hc20va3ZtX2FpYS5oXFxuaW5kZXggYzY3ZWM1YWMwYTE0NmIuLjdjMWMzMjUwNTk4ZmIwIDEwMDY0NFxcbi0tLSBhL2FyY2gvcmlzY3YvaW5jbHVkZS9hc20va3ZtX2FpYS5oXFxuKysrIGIvYXJjaC9yaXNjdi9pbmNsdWRlL2FzbS9rdm1fYWlhLmhcXG5AQCAtMTY1LDggKzE2NSwxOSBAQCBpbnQga3ZtX3Jpc2N2X2FpYV9hbGxvY19oZ2VpKGludCBjcHUsIHN0cnVjdCBrdm1fdmNwdSAqb3duZXIsXFxuIFxcdFxcdFxcdCAgICAgdm9pZCBfX2lvbWVtICoqaGdlaV92YSwgcGh5c19hZGRyX3QgKmhnZWlfcGEpO1xcbiB2b2lkIGt2bV9yaXNjdl9haWFfZnJlZV9oZ2VpKGludCBjcHUsIGludCBoZ2VpKTtcXG4gXFxuLXZvaWQga3ZtX3Jpc2N2X2FpYV9lbmFibGUodm9pZCk7XFxuLXZvaWQga3ZtX3Jpc2N2X2FpYV9kaXNhYmxlKHZvaWQpO1xcbisvKipcXG4rICoga3ZtX3Jpc2N2X2FpYV9lbmFibGUoKSAtIEVuYWJsZSBBSUEgc3VwcG9ydCBvbiBjdXJyZW50IENQVVxcbisgKiBAZnVsbF9jbGVhbnVwOiB0cnVlID0gZnVsbCBoYXJkd2FyZSBpbml0IChDUFUgaG90cGx1Zy9tb2R1bGUgbG9hZCksXFxuKyAqICAgICAgICAgICAgICAgIGZhbHNlID0gbGlnaHR3ZWlnaHQgQ1NSIHJlc3RvcmUgKENQVSBub24tcmV0ZW50aW9uIGlkbGUgcmVzdW1lKVxcbisgKi9cXG4rdm9pZCBrdm1fcmlzY3ZfYWlhX2VuYWJsZShib29sIGZ1bGxfY2xlYW51cCk7XFxuK1xcbisvKipcXG4rICoga3ZtX3Jpc2N2X2FpYV9kaXNhYmxlKCkgLSBEaXNhYmxlIEFJQSBzdXBwb3J0IG9uIGN1cnJlbnQgQ1BVXFxuKyAqIEBmdWxsX2NsZWFudXA6IHRydWUgPSBmdWxsIGhhcmR3YXJlIGNsZWFudXAgKENQVSBob3RwbHVnL21vZHVsZSBleGl0KSxcXG4rICogICAgICAgICAgICAgICAgZmFsc2UgPSBsaWdodHdlaWdodCBDU1Igc2F2ZSAoQ1BVIG5vbi1yZXRlbnRpb24gaWRsZSBlbnRyeSlcXG4rICovXFxuK3ZvaWQga3ZtX3Jpc2N2X2FpYV9kaXNhYmxlKGJvb2wgZnVsbF9jbGVhbnVwKTtcXG4gaW50IGt2bV9yaXNjdl9haWFfaW5pdCh2b2lkKTtcXG4gdm9pZCBrdm1fcmlzY3ZfYWlhX2V4aXQodm9pZCk7XFxuIFxcbmRpZmYgLS1naXQgYS9hcmNoL3Jpc2N2L2luY2x1ZGUvYXNtL2t2bV9ob3N0LmggYi9hcmNoL3Jpc2N2L2luY2x1ZGUvYXNtL2t2bV9ob3N0LmhcXG5pbmRleCA2MDAxN2NlZWM5ZDJhZi4uODA4YjRlZTFiZDEwYWMgMTAwNjQ0XFxuLS0tIGEvYXJjaC9yaXNjdi9pbmNsdWRlL2FzbS9rdm1faG9zdC5oXFxuKysrIGIvYXJjaC9yaXNjdi9pbmNsdWRlL2FzbS9rdm1faG9zdC5oXFxuQEAgLTMxOSw2ICszMTksOCBAQCBib29sIGt2bV9yaXNjdl92Y3B1X3N0b3BwZWQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KTtcXG4gXFxuIHZvaWQga3ZtX3Jpc2N2X3ZjcHVfcmVjb3JkX3N0ZWFsX3RpbWUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KTtcXG4gXFxuK3ZvaWQga3ZtX3Jpc2N2X2NsZWFyX2Zvcm1lcl92Y3B1KHZvaWQpO1xcbitcXG4gLyogRmxhZ3MgcmVwcmVzZW50aW5nIGltcGxlbWVudGF0aW9uIHNwZWNpZmljIGRldGFpbHMgKi9cXG4gREVDTEFSRV9TVEFUSUNfS0VZX0ZBTFNFKGt2bV9yaXNjdl92c3N0YWdlX3RsYl9ub19ncGEpO1xcbiBcXG5kaWZmIC0tZ2l0IGEvYXJjaC9yaXNjdi9rdm0vYWlhLmMgYi9hcmNoL3Jpc2N2L2t2bS9haWEuY1xcbmluZGV4IGJhZmIwMDljNWNlNTU5Li40Y2YzNTFmOTFjNjQzZiAxMDA2NDRcXG4tLS0gYS9hcmNoL3Jpc2N2L2t2bS9haWEuY1xcbisrKyBiL2FyY2gvcmlzY3Yva3ZtL2FpYS5jXFxuQEAgLTI1LDYgKzI1LDcgQEAgc3RydWN0IGFpYV9oZ2VpX2NvbnRyb2wge1xcbiBcXHR1bnNpZ25lZCBsb25nIGZyZWVfYml0bWFwO1xcbiBcXHRzdHJ1Y3Qga3ZtX3ZjcHUgKm93bmVyc1tCSVRTX1BFUl9MT05HXTtcXG4gXFx0dW5zaWduZWQgaW50IG5yX2hnZWk7XFxuK1xcdHVuc2lnbmVkIGxvbmcgc2F2ZWRfdmFsdWU7XFxuIH07XFxuIHN0YXRpYyBERUZJTkVfUEVSX0NQVShzdHJ1Y3QgYWlhX2hnZWlfY29udHJvbCwgYWlhX2hnZWkpO1xcbiBzdGF0aWMgaW50IGhnZWlfcGFyZW50X2lycTtcXG5AQCAtNTMyLDUwICs1MzMsNTkgQEAgc3RhdGljIHZvaWQgYWlhX2hnZWlfZXhpdCh2b2lkKVxcbiBcXHRmcmVlX3BlcmNwdV9pcnEoaGdlaV9wYXJlbnRfaXJxLCBcXHUwMDI2YWlhX2hnZWkpO1xcbiB9XFxuIFxcbi12b2lkIGt2bV9yaXNjdl9haWFfZW5hYmxlKHZvaWQpXFxuK3ZvaWQga3ZtX3Jpc2N2X2FpYV9lbmFibGUoYm9vbCBmdWxsX2NsZWFudXApXFxuIHtcXG4tXFx0Y29uc3Qgc3RydWN0IGltc2ljX2dsb2JhbF9jb25maWcgKmdjO1xcbi1cXHRjb25zdCBzdHJ1Y3QgaW1zaWNfbG9jYWxfY29uZmlnICpsYztcXG4gXFx0c3RydWN0IGFpYV9oZ2VpX2NvbnRyb2wgKmhnY3RybDtcXG4gXFx0dW5zaWduZWQgbG9uZyBmbGFncztcXG4tXFx0aW50IGFpYV9ucl9oZ2VpO1xcbiBcXG4gXFx0aWYgKCFrdm1fcmlzY3ZfYWlhX2F2YWlsYWJsZSgpKVxcbiBcXHRcXHRyZXR1cm47XFxuIFxcbi1cXHRnYyA9IGltc2ljX2dldF9nbG9iYWxfY29uZmlnKCk7XFxuLVxcdGxjID0gKGdjKSA/IHRoaXNfY3B1X3B0cihnYy1cXHUwMDNlbG9jYWwpIDogTlVMTDtcXG4gXFx0aGdjdHJsID0gdGhpc19jcHVfcHRyKFxcdTAwMjZhaWFfaGdlaSk7XFxuIFxcbi1cXHQvKiBGaWd1cmUtb3V0IG51bWJlciBvZiBiaXRzIGluIEhHRUlFICovXFxuLVxcdGNzcl93cml0ZShDU1JfSEdFSUUsIC0xVUwpO1xcbi1cXHRoZ2N0cmwtXFx1MDAzZW5yX2hnZWkgPSBmbHNfbG9uZyhjc3JfcmVhZChDU1JfSEdFSUUpKTtcXG4tXFx0Y3NyX3dyaXRlKENTUl9IR0VJRSwgMCk7XFxuLVxcdGlmIChoZ2N0cmwtXFx1MDAzZW5yX2hnZWkpXFxuLVxcdFxcdGhnY3RybC1cXHUwMDNlbnJfaGdlaS0tO1xcbitcXHRpZiAoZnVsbF9jbGVhbnVwKSB7XFxuK1xcdFxcdGNvbnN0IHN0cnVjdCBpbXNpY19nbG9iYWxfY29uZmlnICpnYztcXG4rXFx0XFx0Y29uc3Qgc3RydWN0IGltc2ljX2xvY2FsX2NvbmZpZyAqbGM7XFxuK1xcdFxcdGludCBhaWFfbnJfaGdlaTtcXG4gXFxuLVxcdC8qXFxuLVxcdCAqIE51bWJlciBvZiB1c2FibGUgcGVyLUhBUlQgSEdFSSBsaW5lcyBzaG91bGQgYmUgbWluaW11bSBvZlxcbi1cXHQgKiBwZXItSEFSVCBJTVNJQyBndWVzdCBmaWxlcyBhbmQgbnVtYmVyIG9mIGJpdHMgaW4gSEdFSUUuXFxuLVxcdCAqL1xcbi1cXHRpZiAobGMpXFxuLVxcdFxcdGhnY3RybC1cXHUwMDNlbnJfaGdlaSA9IG1pbigodWxvbmcpaGdjdHJsLVxcdTAwM2Vucl9oZ2VpLCBsYy1cXHUwMDNlbnJfZ3Vlc3RfZmlsZXMpO1xcbi1cXHRlbHNlXFxuLVxcdFxcdGhnY3RybC1cXHUwMDNlbnJfaGdlaSA9IDA7XFxuK1xcdFxcdGdjID0gaW1zaWNfZ2V0X2dsb2JhbF9jb25maWcoKTtcXG4rXFx0XFx0bGMgPSAoZ2MpID8gdGhpc19jcHVfcHRyKGdjLVxcdTAwM2Vsb2NhbCkgOiBOVUxMO1xcbiBcXG4tXFx0LyogVXBkYXRlIHRoZSBudW1iZXIgb2YgSU1TSUMgZ3Vlc3QgZmlsZXMgYWNyb3NzIGFsbCBIQVJUcyAqL1xcbi1cXHRhaWFfbnJfaGdlaSA9IGF0b21pY19yZWFkKFxcdTAwMjZrdm1fcmlzY3ZfYWlhX25yX2hnZWkpO1xcbi1cXHRkbyB7XFxuLVxcdFxcdGlmIChhaWFfbnJfaGdlaSBcXHUwMDNjPSBoZ2N0cmwtXFx1MDAzZW5yX2hnZWkpXFxuLVxcdFxcdFxcdGJyZWFrO1xcbi1cXHR9IHdoaWxlICghYXRvbWljX3RyeV9jbXB4Y2hnKFxcdTAwMjZrdm1fcmlzY3ZfYWlhX25yX2hnZWksIFxcdTAwMjZhaWFfbnJfaGdlaSwgaGdjdHJsLVxcdTAwM2Vucl9oZ2VpKSk7XFxuK1xcdFxcdC8qIEZpZ3VyZS1vdXQgbnVtYmVyIG9mIGJpdHMgaW4gSEdFSUUgKi9cXG4rXFx0XFx0Y3NyX3dyaXRlKENTUl9IR0VJRSwgLTFVTCk7XFxuK1xcdFxcdGhnY3RybC1cXHUwMDNlbnJfaGdlaSA9IGZsc19sb25nKGNzcl9yZWFkKENTUl9IR0VJRSkpO1xcbitcXHRcXHRjc3Jfd3JpdGUoQ1NSX0hHRUlFLCAwKTtcXG4rXFx0XFx0aWYgKGhnY3RybC1cXHUwMDNlbnJfaGdlaSlcXG4rXFx0XFx0XFx0aGdjdHJsLVxcdTAwM2Vucl9oZ2VpLS07XFxuIFxcbi1cXHRyYXdfc3Bpbl9sb2NrX2lycXNhdmUoXFx1MDAyNmhnY3RybC1cXHUwMDNlbG9jaywgZmxhZ3MpO1xcbi1cXHRpZiAoIWhnY3RybC1cXHUwMDNlZnJlZV9iaXRtYXBfaW5pdGlhbGl6ZWQpIHtcXG4tXFx0XFx0aGdjdHJsLVxcdTAwM2VmcmVlX2JpdG1hcCA9IChoZ2N0cmwtXFx1MDAzZW5yX2hnZWkpID8gR0VOTUFTS19VTEwoaGdjdHJsLVxcdTAwM2Vucl9oZ2VpLCAxKSA6IDA7XFxuLVxcdFxcdGhnY3RybC1cXHUwMDNlZnJlZV9iaXRtYXBfaW5pdGlhbGl6ZWQgPSB0cnVlO1xcbitcXHRcXHQvKlxcbitcXHRcXHQgKiBOdW1iZXIgb2YgdXNhYmxlIHBlci1IQVJUIEhHRUkgbGluZXMgc2hvdWxkIGJlIG1pbmltdW0gb2ZcXG4rXFx0XFx0ICogcGVyLUhBUlQgSU1TSUMgZ3Vlc3QgZmlsZXMgYW5kIG51bWJlciBvZiBiaXRzIGluIEhHRUlFLlxcbitcXHRcXHQgKi9cXG4rXFx0XFx0aWYgKGxjKVxcbitcXHRcXHRcXHRoZ2N0cmwtXFx1MDAzZW5yX2hnZWkgPSBtaW4oKHVsb25nKWhnY3RybC1cXHUwMDNlbnJfaGdlaSwgbGMtXFx1MDAzZW5yX2d1ZXN0X2ZpbGVzKTtcXG4rXFx0XFx0ZWxzZVxcbitcXHRcXHRcXHRoZ2N0cmwtXFx1MDAzZW5yX2hnZWkgPSAwO1xcbitcXG4rXFx0XFx0LyogVXBkYXRlIHRoZSBudW1iZXIgb2YgSU1TSUMgZ3Vlc3QgZmlsZXMgYWNyb3NzIGFsbCBIQVJUcyAqL1xcbitcXHRcXHRhaWFfbnJfaGdlaSA9IGF0b21pY19yZWFkKFxcdTAwMjZrdm1fcmlzY3ZfYWlhX25yX2hnZWkpO1xcbitcXHRcXHRkbyB7XFxuK1xcdFxcdFxcdGlmIChhaWFfbnJfaGdlaSBcXHUwMDNjPSBoZ2N0cmwtXFx1MDAzZW5yX2hnZWkpXFxuK1xcdFxcdFxcdFxcdGJyZWFrO1xcbitcXHRcXHR9IHdoaWxlICghYXRvbWljX3RyeV9jbXB4Y2hnKFxcdTAwMjZrdm1fcmlzY3ZfYWlhX25yX2hnZWksIFxcdTAwMjZhaWFfbnJfaGdlaSxcXG4rXFx0XFx0XFx0XFx0XFx0ICAgICBoZ2N0cmwtXFx1MDAzZW5yX2hnZWkpKTtcXG4rXFxuK1xcdFxcdHJhd19zcGluX2xvY2tfaXJxc2F2ZShcXHUwMDI2aGdjdHJsLVxcdTAwM2Vsb2NrLCBmbGFncyk7XFxuK1xcdFxcdGlmICghaGdjdHJsLVxcdTAwM2VmcmVlX2JpdG1hcF9pbml0aWFsaXplZCkge1xcbitcXHRcXHRcXHRoZ2N0cmwtXFx1MDAzZWZyZWVfYml0bWFwID0gKGhnY3RybC1cXHUwMDNlbnJfaGdlaSkgP1xcbitcXHRcXHRcXHRcXHRcXHQgICAgICBHRU5NQVNLX1VMTChoZ2N0cmwtXFx1MDAzZW5yX2hnZWksIDEpIDpcXG4rXFx0XFx0XFx0XFx0XFx0ICAgICAgMDtcXG4rXFx0XFx0XFx0aGdjdHJsLVxcdTAwM2VmcmVlX2JpdG1hcF9pbml0aWFsaXplZCA9IHRydWU7XFxuK1xcdFxcdH1cXG4rXFx0XFx0cmF3X3NwaW5fdW5sb2NrX2lycXJlc3RvcmUoXFx1MDAyNmhnY3RybC1cXHUwMDNlbG9jaywgZmxhZ3MpO1xcbitcXHR9IGVsc2Uge1xcbitcXHRcXHRjc3Jfd3JpdGUoQ1NSX0hHRUlFLCBoZ2N0cmwtXFx1MDAzZXNhdmVkX3ZhbHVlKTtcXG4gXFx0fVxcbi1cXHRyYXdfc3Bpbl91bmxvY2tfaXJxcmVzdG9yZShcXHUwMDI2aGdjdHJsLVxcdTAwM2Vsb2NrLCBmbGFncyk7XFxuIFxcbiBcXHRjc3Jfd3JpdGUoQ1NSX0hWSUNUTCwgYWlhX2h2aWN0bF92YWx1ZShmYWxzZSkpO1xcbiBcXHRjc3Jfd3JpdGUoQ1NSX0hWSVBSSU8xLCAweDApO1xcbkBAIC01ODcsMTYgKzU5NywxNyBAQCB2b2lkIGt2bV9yaXNjdl9haWFfZW5hYmxlKHZvaWQpXFxuIFxcdGNzcl93cml0ZShDU1JfSFZJUFJJTzJILCAweDApO1xcbiAjZW5kaWZcXG4gXFxuLVxcdC8qIEVuYWJsZSBwZXItQ1BVIFNHRUkgaW50ZXJydXB0ICovXFxuLVxcdGVuYWJsZV9wZXJjcHVfaXJxKGhnZWlfcGFyZW50X2lycSxcXG4tXFx0XFx0XFx0ICBpcnFfZ2V0X3RyaWdnZXJfdHlwZShoZ2VpX3BhcmVudF9pcnEpKTtcXG4rXFx0aWYgKGZ1bGxfY2xlYW51cClcXG4rXFx0XFx0ZW5hYmxlX3BlcmNwdV9pcnEoaGdlaV9wYXJlbnRfaXJxLFxcbitcXHRcXHRcXHRcXHQgIGlycV9nZXRfdHJpZ2dlcl90eXBlKGhnZWlfcGFyZW50X2lycSkpO1xcbiBcXHRjc3Jfc2V0KENTUl9ISUUsIEJJVChJUlFfU19HRVhUKSk7XFxuK1xcbiBcXHQvKiBFbmFibGUgSVJRIGZpbHRlcmluZyBmb3Igb3ZlcmZsb3cgaW50ZXJydXB0IG9ubHkgaWYgc3Njb2ZwbWYgaXMgcHJlc2VudCAqL1xcbiBcXHRpZiAoX19yaXNjdl9pc2FfZXh0ZW5zaW9uX2F2YWlsYWJsZShOVUxMLCBSSVNDVl9JU0FfRVhUX1NTQ09GUE1GKSlcXG4gXFx0XFx0Y3NyX3NldChDU1JfSFZJRU4sIEJJVChJUlFfUE1VX09WRikpO1xcbiB9XFxuIFxcbi12b2lkIGt2bV9yaXNjdl9haWFfZGlzYWJsZSh2b2lkKVxcbit2b2lkIGt2bV9yaXNjdl9haWFfZGlzYWJsZShib29sIGZ1bGxfY2xlYW51cClcXG4ge1xcbiBcXHRpbnQgaTtcXG4gXFx0dW5zaWduZWQgbG9uZyBmbGFncztcXG5AQCAtNjA5LDQyICs2MjAsNDkgQEAgdm9pZCBrdm1fcmlzY3ZfYWlhX2Rpc2FibGUodm9pZClcXG4gXFxuIFxcdGlmIChfX3Jpc2N2X2lzYV9leHRlbnNpb25fYXZhaWxhYmxlKE5VTEwsIFJJU0NWX0lTQV9FWFRfU1NDT0ZQTUYpKVxcbiBcXHRcXHRjc3JfY2xlYXIoQ1NSX0hWSUVOLCBCSVQoSVJRX1BNVV9PVkYpKTtcXG4tXFx0LyogRGlzYWJsZSBwZXItQ1BVIFNHRUkgaW50ZXJydXB0ICovXFxuLVxcdGNzcl9jbGVhcihDU1JfSElFLCBCSVQoSVJRX1NfR0VYVCkpO1xcbi1cXHRkaXNhYmxlX3BlcmNwdV9pcnEoaGdlaV9wYXJlbnRfaXJxKTtcXG4gXFxuLVxcdGNzcl93cml0ZShDU1JfSFZJQ1RMLCBhaWFfaHZpY3RsX3ZhbHVlKGZhbHNlKSk7XFxuLVxcbi1cXHRyYXdfc3Bpbl9sb2NrX2lycXNhdmUoXFx1MDAyNmhnY3RybC1cXHUwMDNlbG9jaywgZmxhZ3MpO1xcbi1cXG4tXFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjPSBoZ2N0cmwtXFx1MDAzZW5yX2hnZWk7IGkrKykge1xcbi1cXHRcXHR2Y3B1ID0gaGdjdHJsLVxcdTAwM2Vvd25lcnNbaV07XFxuLVxcdFxcdGlmICghdmNwdSlcXG4tXFx0XFx0XFx0Y29udGludWU7XFxuK1xcdGlmIChmdWxsX2NsZWFudXApIHtcXG4rXFx0XFx0LyogRGlzYWJsZSBwZXItQ1BVIFNHRUkgaW50ZXJydXB0ICovXFxuK1xcdFxcdGNzcl9jbGVhcihDU1JfSElFLCBCSVQoSVJRX1NfR0VYVCkpO1xcbitcXHRcXHRkaXNhYmxlX3BlcmNwdV9pcnEoaGdlaV9wYXJlbnRfaXJxKTtcXG4rXFx0fVxcbiBcXG4tXFx0XFx0LypcXG4tXFx0XFx0ICogV2UgcmVsZWFzZSBoZ2N0cmwtXFx1MDAzZWxvY2sgYmVmb3JlIG5vdGlmeWluZyBJTVNJQ1xcbi1cXHRcXHQgKiBzbyB0aGF0IHdlIGRvbid0IGhhdmUgbG9jayBvcmRlcmluZyBpc3N1ZXMuXFxuLVxcdFxcdCAqL1xcbi1cXHRcXHRyYXdfc3Bpbl91bmxvY2tfaXJxcmVzdG9yZShcXHUwMDI2aGdjdHJsLVxcdTAwM2Vsb2NrLCBmbGFncyk7XFxuK1xcdGNzcl93cml0ZShDU1JfSFZJQ1RMLCBhaWFfaHZpY3RsX3ZhbHVlKGZhbHNlKSk7XFxuIFxcbi1cXHRcXHQvKiBOb3RpZnkgSU1TSUMgKi9cXG4tXFx0XFx0a3ZtX3Jpc2N2X3ZjcHVfYWlhX2ltc2ljX3JlbGVhc2UodmNwdSk7XFxuK1xcdGlmIChmdWxsX2NsZWFudXApIHtcXG4rXFx0XFx0cmF3X3NwaW5fbG9ja19pcnFzYXZlKFxcdTAwMjZoZ2N0cmwtXFx1MDAzZWxvY2ssIGZsYWdzKTtcXG4gXFxuLVxcdFxcdC8qXFxuLVxcdFxcdCAqIFdha2V1cCBWQ1BVIGlmIGl0IHdhcyBibG9ja2VkIHNvIHRoYXQgaXQgY2FuXFxuLVxcdFxcdCAqIHJ1biBvbiBvdGhlciBIQVJUc1xcbi1cXHRcXHQgKi9cXG4tXFx0XFx0aWYgKGNzcl9yZWFkKENTUl9IR0VJRSkgXFx1MDAyNiBCSVQoaSkpIHtcXG4tXFx0XFx0XFx0Y3NyX2NsZWFyKENTUl9IR0VJRSwgQklUKGkpKTtcXG4tXFx0XFx0XFx0a3ZtX3ZjcHVfa2ljayh2Y3B1KTtcXG4rXFx0XFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjPSBoZ2N0cmwtXFx1MDAzZW5yX2hnZWk7IGkrKykge1xcbitcXHRcXHRcXHR2Y3B1ID0gaGdjdHJsLVxcdTAwM2Vvd25lcnNbaV07XFxuK1xcdFxcdFxcdGlmICghdmNwdSlcXG4rXFx0XFx0XFx0XFx0Y29udGludWU7XFxuK1xcbitcXHRcXHRcXHQvKlxcbitcXHRcXHRcXHQgKiBXZSByZWxlYXNlIGhnY3RybC1cXHUwMDNlbG9jayBiZWZvcmUgbm90aWZ5aW5nIElNU0lDXFxuK1xcdFxcdFxcdCAqIHNvIHRoYXQgd2UgZG9uJ3QgaGF2ZSBsb2NrIG9yZGVyaW5nIGlzc3Vlcy5cXG4rXFx0XFx0XFx0ICovXFxuK1xcdFxcdFxcdHJhd19zcGluX3VubG9ja19pcnFyZXN0b3JlKFxcdTAwMjZoZ2N0cmwtXFx1MDAzZWxvY2ssIGZsYWdzKTtcXG4rXFxuK1xcdFxcdFxcdC8qIE5vdGlmeSBJTVNJQyAqL1xcbitcXHRcXHRcXHRrdm1fcmlzY3ZfdmNwdV9haWFfaW1zaWNfcmVsZWFzZSh2Y3B1KTtcXG4rXFxuK1xcdFxcdFxcdC8qXFxuK1xcdFxcdFxcdCAqIFdha2V1cCBWQ1BVIGlmIGl0IHdhcyBibG9ja2VkIHNvIHRoYXQgaXQgY2FuXFxuK1xcdFxcdFxcdCAqIHJ1biBvbiBvdGhlciBIQVJUc1xcbitcXHRcXHRcXHQgKi9cXG4rXFx0XFx0XFx0aWYgKGNzcl9yZWFkKENTUl9IR0VJRSkgXFx1MDAyNiBCSVQoaSkpIHtcXG4rXFx0XFx0XFx0XFx0Y3NyX2NsZWFyKENTUl9IR0VJRSwgQklUKGkpKTtcXG4rXFx0XFx0XFx0XFx0a3ZtX3ZjcHVfa2ljayh2Y3B1KTtcXG4rXFx0XFx0XFx0fVxcbitcXG4rXFx0XFx0XFx0cmF3X3NwaW5fbG9ja19pcnFzYXZlKFxcdTAwMjZoZ2N0cmwtXFx1MDAzZWxvY2ssIGZsYWdzKTtcXG4gXFx0XFx0fVxcbiBcXG4tXFx0XFx0cmF3X3NwaW5fbG9ja19pcnFzYXZlKFxcdTAwMjZoZ2N0cmwtXFx1MDAzZWxvY2ssIGZsYWdzKTtcXG4rXFx0XFx0cmF3X3NwaW5fdW5sb2NrX2lycXJlc3RvcmUoXFx1MDAyNmhnY3RybC1cXHUwMDNlbG9jaywgZmxhZ3MpO1xcbitcXHR9IGVsc2Uge1xcbitcXHRcXHRoZ2N0cmwtXFx1MDAzZXNhdmVkX3ZhbHVlID0gY3NyX3JlYWQoQ1NSX0hHRUlFKTtcXG4gXFx0fVxcbiBcXG4tXFx0cmF3X3NwaW5fdW5sb2NrX2lycXJlc3RvcmUoXFx1MDAyNmhnY3RybC1cXHUwMDNlbG9jaywgZmxhZ3MpO1xcbi1cXG4gXFx0cHV0X2NwdV9wdHIoXFx1MDAyNmFpYV9oZ2VpKTtcXG4gfVxcbiBcXG5kaWZmIC0tZ2l0IGEvYXJjaC9yaXNjdi9rdm0vbWFpbi5jIGIvYXJjaC9yaXNjdi9rdm0vbWFpbi5jXFxuaW5kZXggMDkyNGM3NTEwMGEyZDAuLmI0OGJiZDE4NTVjMWUyIDEwMDY0NFxcbi0tLSBhL2FyY2gvcmlzY3Yva3ZtL21haW4uY1xcbisrKyBiL2FyY2gvcmlzY3Yva3ZtL21haW4uY1xcbkBAIC0xMCw2ICsxMCw3IEBAXFxuICNpbmNsdWRlIFxcdTAwM2NsaW51eC9lcnIuaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L21vZHVsZS5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXHUwMDNjbGludXgva3ZtX2hvc3QuaFxcdTAwM2VcXG4rI2luY2x1ZGUgXFx1MDAzY2xpbnV4L2NwdV9wbS5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXHUwMDNjYXNtL2NwdWZlYXR1cmUuaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY2FzbS9rdm1fbW11LmhcXHUwMDNlXFxuICNpbmNsdWRlIFxcdTAwM2Nhc20va3ZtX25hY2wuaFxcdTAwM2VcXG5AQCAtMzMsMTQgKzM0LDkgQEAgbG9uZyBrdm1fYXJjaF9kZXZfaW9jdGwoc3RydWN0IGZpbGUgKmZpbHAsXFxuIFxcdHJldHVybiAtRUlOVkFMO1xcbiB9XFxuIFxcbi1pbnQga3ZtX2FyY2hfZW5hYmxlX3ZpcnR1YWxpemF0aW9uX2NwdSh2b2lkKVxcbisvKiBJbml0aWFsaXplIGh5cGVydmlzb3IgQ1NScyAtIGNhbGxlZCBkdXJpbmcgQ1BVIG9ubGluZSBhbmQgbm9uLXJldGVudGlvbiBpZGxlIHJlc3VtZSAqL1xcbitzdGF0aWMgdm9pZCBrdm1fcmlzY3ZfY3NyX2VuYWJsZSh2b2lkKVxcbiB7XFxuLVxcdGludCByYztcXG4tXFxuLVxcdHJjID0ga3ZtX3Jpc2N2X25hY2xfZW5hYmxlKCk7XFxuLVxcdGlmIChyYylcXG4tXFx0XFx0cmV0dXJuIHJjO1xcbi1cXG4gXFx0Y3NyX3dyaXRlKENTUl9IRURFTEVHLCAwKTtcXG4gXFx0Y3NyX3dyaXRlKENTUl9ISURFTEVHLCAwKTtcXG4gXFxuQEAgLTQ4LDE2ICs0NCwxMSBAQCBpbnQga3ZtX2FyY2hfZW5hYmxlX3ZpcnR1YWxpemF0aW9uX2NwdSh2b2lkKVxcbiBcXHRjc3Jfd3JpdGUoQ1NSX0hDT1VOVEVSRU4sIDB4MDIpO1xcbiBcXG4gXFx0Y3NyX3dyaXRlKENTUl9IVklQLCAwKTtcXG4tXFxuLVxcdGt2bV9yaXNjdl9haWFfZW5hYmxlKCk7XFxuLVxcbi1cXHRyZXR1cm4gMDtcXG4gfVxcbiBcXG4tdm9pZCBrdm1fYXJjaF9kaXNhYmxlX3ZpcnR1YWxpemF0aW9uX2NwdSh2b2lkKVxcbisvKiBDbGVhciBoeXBlcnZpc29yIENTUnMgLSBjYWxsZWQgZHVyaW5nIENQVSBvZmZsaW5lIGFuZCBub24tcmV0ZW50aW9uIGlkbGUgZW50cnkgKi9cXG4rc3RhdGljIHZvaWQga3ZtX3Jpc2N2X2Nzcl9kaXNhYmxlKHZvaWQpXFxuIHtcXG4tXFx0a3ZtX3Jpc2N2X2FpYV9kaXNhYmxlKCk7XFxuLVxcbiBcXHQvKlxcbiBcXHQgKiBBZnRlciBjbGVhcmluZyB0aGUgaGlkZWxlZyBDU1IsIHRoZSBob3N0IGtlcm5lbCB3aWxsIHJlY2VpdmVcXG4gXFx0ICogc3B1cmlvdXMgaW50ZXJydXB0cyBpZiBodmlwIENTUiBoYXMgcGVuZGluZyBpbnRlcnJ1cHRzIGFuZCB0aGVcXG5AQCAtNjksOSArNjAsNTMgQEAgdm9pZCBrdm1fYXJjaF9kaXNhYmxlX3ZpcnR1YWxpemF0aW9uX2NwdSh2b2lkKVxcbiBcXHRjc3Jfd3JpdGUoQ1NSX0hFREVMRUcsIDApO1xcbiBcXHRjc3Jfd3JpdGUoQ1NSX0hJREVMRUcsIDApO1xcbiBcXG4rXFx0a3ZtX3Jpc2N2X2NsZWFyX2Zvcm1lcl92Y3B1KCk7XFxuK31cXG4rXFxuK2ludCBrdm1fYXJjaF9lbmFibGVfdmlydHVhbGl6YXRpb25fY3B1KHZvaWQpXFxuK3tcXG4rXFx0aW50IHJjO1xcbitcXG4rXFx0cmMgPSBrdm1fcmlzY3ZfbmFjbF9lbmFibGUoKTtcXG4rXFx0aWYgKHJjKVxcbitcXHRcXHRyZXR1cm4gcmM7XFxuK1xcbitcXHRrdm1fcmlzY3ZfY3NyX2VuYWJsZSgpO1xcbitcXHRrdm1fcmlzY3ZfYWlhX2VuYWJsZSh0cnVlKTtcXG4rXFxuK1xcdHJldHVybiAwO1xcbit9XFxuK1xcbit2b2lkIGt2bV9hcmNoX2Rpc2FibGVfdmlydHVhbGl6YXRpb25fY3B1KHZvaWQpXFxuK3tcXG4rXFx0a3ZtX3Jpc2N2X2FpYV9kaXNhYmxlKHRydWUpO1xcbitcXHRrdm1fcmlzY3ZfY3NyX2Rpc2FibGUoKTtcXG4gXFx0a3ZtX3Jpc2N2X25hY2xfZGlzYWJsZSgpO1xcbiB9XFxuIFxcbitzdGF0aWMgaW50IGt2bV9yaXNjdl9jcHVfcG1fbm90aWZpZXIoc3RydWN0IG5vdGlmaWVyX2Jsb2NrICpzZWxmLCB1bnNpZ25lZCBsb25nIGNtZCwgdm9pZCAqdilcXG4re1xcbitcXHRzd2l0Y2ggKGNtZCkge1xcbitcXHRjYXNlIENQVV9QTV9FWElUOlxcbitcXHRjYXNlIENQVV9QTV9FTlRFUl9GQUlMRUQ6XFxuK1xcdFxcdGt2bV9yaXNjdl9jc3JfZW5hYmxlKCk7XFxuK1xcdFxcdGt2bV9yaXNjdl9haWFfZW5hYmxlKGZhbHNlKTtcXG4rXFx0XFx0cmV0dXJuIE5PVElGWV9PSztcXG4rXFx0Y2FzZSBDUFVfUE1fRU5URVI6XFxuK1xcdFxcdGt2bV9yaXNjdl9haWFfZGlzYWJsZShmYWxzZSk7XFxuK1xcdFxcdGt2bV9yaXNjdl9jc3JfZGlzYWJsZSgpO1xcbitcXHRcXHRyZXR1cm4gTk9USUZZX09LO1xcbitcXHRkZWZhdWx0OlxcbitcXHRcXHRicmVhaztcXG4rXFx0fVxcbitcXG4rXFx0cmV0dXJuIE5PVElGWV9ET05FO1xcbit9XFxuK1xcbitzdGF0aWMgc3RydWN0IG5vdGlmaWVyX2Jsb2NrIGt2bV9yaXNjdl9jcHVfcG1fbmIgPSB7XFxuK1xcdC5ub3RpZmllcl9jYWxsID0ga3ZtX3Jpc2N2X2NwdV9wbV9ub3RpZmllcixcXG4rfTtcXG4rXFxuIHN0YXRpYyB2b2lkIGt2bV9yaXNjdl90ZWFyZG93bih2b2lkKVxcbiB7XFxuIFxcdGt2bV9yaXNjdl9haWFfZXhpdCgpO1xcbkBAIC0xNzIsMjIgKzIwNyw0MCBAQCBzdGF0aWMgaW50IF9faW5pdCByaXNjdl9rdm1faW5pdCh2b2lkKVxcbiBcXG4gXFx0a3ZtX3JlZ2lzdGVyX3BlcmZfY2FsbGJhY2tzKCk7XFxuIFxcbi1cXHRyYyA9IGt2bV9pbml0KHNpemVvZihzdHJ1Y3Qga3ZtX3ZjcHUpLCAwLCBUSElTX01PRFVMRSk7XFxuLVxcdGlmIChyYykge1xcbi1cXHRcXHRrdm1fcmlzY3ZfdGVhcmRvd24oKTtcXG4tXFx0XFx0cmV0dXJuIHJjO1xcbitcXHQvKiBSZWdpc3RlciBDUFUgUE0gbm90aWZpZXIgZm9yIENQVSBpZGxlIG5vbi1yZXRlbnRpb24gc3RhdGVzICovXFxuK1xcdGlmIChJU19FTkFCTEVEKENPTkZJR19DUFVfUE0pKSB7XFxuK1xcdFxcdHJjID0gY3B1X3BtX3JlZ2lzdGVyX25vdGlmaWVyKFxcdTAwMjZrdm1fcmlzY3ZfY3B1X3BtX25iKTtcXG4rXFx0XFx0aWYgKHJjKSB7XFxuK1xcdFxcdFxcdGt2bV9lcnIoXFxcIkZhaWxlZCB0byByZWdpc3RlciBDUFUgUE0gbm90aWZpZXI6ICVkXFxcXG5cXFwiLCByYyk7XFxuK1xcdFxcdFxcdGdvdG8gZXJyX3RlYXJkb3duO1xcbitcXHRcXHR9XFxuIFxcdH1cXG4gXFxuK1xcdHJjID0ga3ZtX2luaXQoc2l6ZW9mKHN0cnVjdCBrdm1fdmNwdSksIDAsIFRISVNfTU9EVUxFKTtcXG4rXFx0aWYgKHJjKVxcbitcXHRcXHRnb3RvIGVycl91bnJlZ2lzdGVyX2NwdV9wbTtcXG4rXFxuIFxcdGlmIChrdm1fcmlzY3ZfYWlhX2F2YWlsYWJsZSgpKVxcbiBcXHRcXHRrdm1faW5mbyhcXFwiQUlBIGF2YWlsYWJsZSB3aXRoICVkIGd1ZXN0IGV4dGVybmFsIGludGVycnVwdHNcXFxcblxcXCIsXFxuIFxcdFxcdFxcdCBhdG9taWNfcmVhZChcXHUwMDI2a3ZtX3Jpc2N2X2FpYV9ucl9oZ2VpKSk7XFxuIFxcbiBcXHRyZXR1cm4gMDtcXG4rXFxuK2Vycl91bnJlZ2lzdGVyX2NwdV9wbTpcXG4rXFx0aWYgKElTX0VOQUJMRUQoQ09ORklHX0NQVV9QTSkpXFxuK1xcdFxcdGNwdV9wbV91bnJlZ2lzdGVyX25vdGlmaWVyKFxcdTAwMjZrdm1fcmlzY3ZfY3B1X3BtX25iKTtcXG4rZXJyX3RlYXJkb3duOlxcbitcXHRrdm1fcmlzY3ZfdGVhcmRvd24oKTtcXG4rXFx0cmV0dXJuIHJjO1xcbiB9XFxuIG1vZHVsZV9pbml0KHJpc2N2X2t2bV9pbml0KTtcXG4gXFxuIHN0YXRpYyB2b2lkIF9fZXhpdCByaXNjdl9rdm1fZXhpdCh2b2lkKVxcbiB7XFxuK1xcdC8qIFVucmVnaXN0ZXIgQ1BVIFBNIG5vdGlmaWVyICovXFxuK1xcdGlmIChJU19FTkFCTEVEKENPTkZJR19DUFVfUE0pKVxcbitcXHRcXHRjcHVfcG1fdW5yZWdpc3Rlcl9ub3RpZmllcihcXHUwMDI2a3ZtX3Jpc2N2X2NwdV9wbV9uYik7XFxuK1xcbiBcXHRrdm1fZXhpdCgpO1xcbiBcXG4gXFx0a3ZtX3Jpc2N2X3RlYXJkb3duKCk7XFxuZGlmZiAtLWdpdCBhL2FyY2gvcmlzY3Yva3ZtL3ZjcHUuYyBiL2FyY2gvcmlzY3Yva3ZtL3ZjcHUuY1xcbmluZGV4IGNmNmUyMzFlNzZlMjU0Li5lNDgzMzhmOTA3ZjQ4OCAxMDA2NDRcXG4tLS0gYS9hcmNoL3Jpc2N2L2t2bS92Y3B1LmNcXG4rKysgYi9hcmNoL3Jpc2N2L2t2bS92Y3B1LmNcXG5AQCAtMjYsNiArMjYsMTcgQEBcXG4gXFxuIHN0YXRpYyBERUZJTkVfUEVSX0NQVShzdHJ1Y3Qga3ZtX3ZjcHUgKiwga3ZtX2Zvcm1lcl92Y3B1KTtcXG4gXFxuK3ZvaWQga3ZtX3Jpc2N2X2NsZWFyX2Zvcm1lcl92Y3B1KHZvaWQpXFxuK3tcXG4rXFx0LypcXG4rXFx0ICogQ2xlYXIgdGhlIHBlci1DUFUgZm9ybWVyIFZDUFUgcG9pbnRlciBiZWNhdXNlIGh5cGVydmlzb3IgQ1NSIHN0YXRlXFxuK1xcdCAqIHdpbGwgYmUgbG9zdC4gVGhpcyBlbnN1cmVzIHRoYXQgdGhlIG5leHQgVkNQVSBlbnRyeSB3aWxsIHByb3Blcmx5XFxuK1xcdCAqIHJlc3RvcmUgYWxsIENTUnMgaW5zdGVhZCBvZiBpbmNvcnJlY3RseSBza2lwcGluZyBDU1IgcmVzdG9yYXRpb25cXG4rXFx0ICogdmlhIHRoZSBmYXN0LXBhdGggb3B0aW1pemF0aW9uLlxcbitcXHQgKi9cXG4rXFx0X190aGlzX2NwdV93cml0ZShrdm1fZm9ybWVyX3ZjcHUsIE5VTEwpO1xcbit9XFxuK1xcbiBjb25zdCBzdHJ1Y3Qga3ZtX3N0YXRzX2Rlc2Mga3ZtX3ZjcHVfc3RhdHNfZGVzY1tdID0ge1xcbiBcXHRLVk1fR0VORVJJQ19WQ1BVX1NUQVRTKCksXFxuIFxcdFNUQVRTX0RFU0NfQ09VTlRFUihWQ1BVLCBlY2FsbF9leGl0X3N0YXQpLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yM1QwMDo0NToyOS4wMTg0NjA3NjFaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjoyMTQ3OTc5Njg0NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJLVk1cIixcbiAgICBcIkNQVV9QTVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImt2bV9yaXNjdl9haWFfZW5hYmxlXCIsXG4gICAgXCJrdm1fcmlzY3ZfYWlhX2Rpc2FibGVcIixcbiAgICBcImt2bV9yaXNjdl9jcHVfcG1fbm90aWZpZXJcIixcbiAgICBcImt2bV9yaXNjdl9jbGVhcl9mb3JtZXJfdmNwdVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIFJJU0MtViBLVk0gdG8gcHJvcGVybHkgaGFuZGxlIENQVSBwb3dlciBtYW5hZ2VtZW50IChpZGxlIG5vbi1yZXRlbnRpb24gc3RhdGVzKSBieSBzYXZpbmcgYW5kIHJlc3RvcmluZyBBSUEgKEFkdmFuY2VkIEludGVycnVwdCBBcmNoaXRlY3R1cmUpIGFuZCBoeXBlcnZpc29yIENTUiBzdGF0ZS4gVGhpcyBpcyBjb3JlIEtWTSBsb2dpYyBhbmQgc2hvdWxkIGJlIGZ1enplZCB0byBlbnN1cmUgbm8gc3RhdGUgaXMgbG9zdCBvciBjb3JydXB0ZWQgZHVyaW5nIENQVSBpZGxlIHRyYW5zaXRpb25zLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG5ldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0XG4gICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksXG4gICBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IGJiODA4MTNmYmUzMzM0OTA5YjUxMjcxNmU1ZjgyY2QwYjU5Mjk3YjBcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVGh1IEp1bCAyMyAwMDo0NToyNiAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2FyY2gvcmlzY3YvaW5jbHVkZS9hc20va3ZtX2FpYS5oIGIvYXJjaC9yaXNjdi9pbmNsdWRlL2FzbS9rdm1fYWlhLmhcbmluZGV4IGM2N2VjNWFjMGExNDZiLi43YzFjMzI1MDU5OGZiMCAxMDA2NDRcbi0tLSBhL2FyY2gvcmlzY3YvaW5jbHVkZS9hc20va3ZtX2FpYS5oXG4rKysgYi9hcmNoL3Jpc2N2L2luY2x1ZGUvYXNtL2t2bV9haWEuaFxuQEAgLTE2NSw4ICsxNjUsMTkgQEAgaW50IGt2bV9yaXNjdl9haWFfYWxsb2NfaGdlaShpbnQgY3B1LCBzdHJ1Y3Qga3ZtX3ZjcHUgKm93bmVyLFxuIFx0XHRcdCAgICAgdm9pZCBfX2lvbWVtICoqaGdlaV92YSwgcGh5c19hZGRyX3QgKmhnZWlfcGEpO1xuIHZvaWQga3ZtX3Jpc2N2X2FpYV9mcmVlX2hnZWkoaW50IGNwdSwgaW50IGhnZWkpO1xuIFxuLXZvaWQga3ZtX3Jpc2N2X2FpYV9lbmFibGUodm9pZCk7XG4tdm9pZCBrdm1fcmlzY3ZfYWlhX2Rpc2FibGUodm9pZCk7XG4rLyoqXG4rICoga3ZtX3Jpc2N2X2FpYV9lbmFibGUoKSAtIEVuYWJsZSBBSUEgc3VwcG9ydCBvbiBjdXJyZW50IENQVVxuKyAqIEBmdWxsX2NsZWFudXA6IHRydWUgPSBmdWxsIGhhcmR3YXJlIGluaXQgKENQVSBob3RwbHVnL21vZHVsZSBsb2FkKSxcbisgKiAgICAgICAgICAgICAgICBmYWxzZSA9IGxpZ2h0d2VpZ2h0IENTUiByZXN0b3JlIChDUFUgbm9uLXJldGVudGlvbiBpZGxlIHJlc3VtZSlcbisgKi9cbit2b2lkIGt2bV9yaXNjdl9haWFfZW5hYmxlKGJvb2wgZnVsbF9jbGVhbnVwKTtcbitcbisvKipcbisgKiBrdm1fcmlzY3ZfYWlhX2Rpc2FibGUoKSAtIERpc2FibGUgQUlBIHN1cHBvcnQgb24gY3VycmVudCBDUFVcbisgKiBAZnVsbF9jbGVhbnVwOiB0cnVlID0gZnVsbCBoYXJkd2FyZSBjbGVhbnVwIChDUFUgaG90cGx1Zy9tb2R1bGUgZXhpdCksXG4rICogICAgICAgICAgICAgICAgZmFsc2UgPSBsaWdodHdlaWdodCBDU1Igc2F2ZSAoQ1BVIG5vbi1yZXRlbnRpb24gaWRsZSBlbnRyeSlcbisgKi9cbit2b2lkIGt2bV9yaXNjdl9haWFfZGlzYWJsZShib29sIGZ1bGxfY2xlYW51cCk7XG4gaW50IGt2bV9yaXNjdl9haWFfaW5pdCh2b2lkKTtcbiB2b2lkIGt2bV9yaXNjdl9haWFfZXhpdCh2b2lkKTtcbiBcbmRpZmYgLS1naXQgYS9hcmNoL3Jpc2N2L2luY2x1ZGUvYXNtL2t2bV9ob3N0LmggYi9hcmNoL3Jpc2N2L2luY2x1ZGUvYXNtL2t2bV9ob3N0LmhcbmluZGV4IDYwMDE3Y2VlYzlkMmFmLi44MDhiNGVlMWJkMTBhYyAxMDA2NDRcbi0tLSBhL2FyY2gvcmlzY3YvaW5jbHVkZS9hc20va3ZtX2hvc3QuaFxuKysrIGIvYXJjaC9yaXNjdi9pbmNsdWRlL2FzbS9rdm1faG9zdC5oXG5AQCAtMzE5LDYgKzMxOSw4IEBAIGJvb2wga3ZtX3Jpc2N2X3ZjcHVfc3RvcHBlZChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpO1xuIFxuIHZvaWQga3ZtX3Jpc2N2X3ZjcHVfcmVjb3JkX3N0ZWFsX3RpbWUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KTtcbiBcbit2b2lkIGt2bV9yaXNjdl9jbGVhcl9mb3JtZXJfdmNwdSh2b2lkKTtcbitcbiAvKiBGbGFncyByZXByZXNlbnRpbmcgaW1wbGVtZW50YXRpb24gc3BlY2lmaWMgZGV0YWlscyAqL1xuIERFQ0xBUkVfU1RBVElDX0tFWV9GQUxTRShrdm1fcmlzY3ZfdnNzdGFnZV90bGJfbm9fZ3BhKTtcbiBcbmRpZmYgLS1naXQgYS9hcmNoL3Jpc2N2L2t2bS9haWEuYyBiL2FyY2gvcmlzY3Yva3ZtL2FpYS5jXG5pbmRleCBiYWZiMDA5YzVjZTU1OS4uNGNmMzUxZjkxYzY0M2YgMTAwNjQ0XG4tLS0gYS9hcmNoL3Jpc2N2L2t2bS9haWEuY1xuKysrIGIvYXJjaC9yaXNjdi9rdm0vYWlhLmNcbkBAIC0yNSw2ICsyNSw3IEBAIHN0cnVjdCBhaWFfaGdlaV9jb250cm9sIHtcbiBcdHVuc2lnbmVkIGxvbmcgZnJlZV9iaXRtYXA7XG4gXHRzdHJ1Y3Qga3ZtX3ZjcHUgKm93bmVyc1tCSVRTX1BFUl9MT05HXTtcbiBcdHVuc2lnbmVkIGludCBucl9oZ2VpO1xuK1x0dW5zaWduZWQgbG9uZyBzYXZlZF92YWx1ZTtcbiB9O1xuIHN0YXRpYyBERUZJTkVfUEVSX0NQVShzdHJ1Y3QgYWlhX2hnZWlfY29udHJvbCwgYWlhX2hnZWkpO1xuIHN0YXRpYyBpbnQgaGdlaV9wYXJlbnRfaXJxO1xuQEAgLTUzMiw1MCArNTMzLDU5IEBAIHN0YXRpYyB2b2lkIGFpYV9oZ2VpX2V4aXQodm9pZClcbiBcdGZyZWVfcGVyY3B1X2lycShoZ2VpX3BhcmVudF9pcnEsIFx1MDAyNmFpYV9oZ2VpKTtcbiB9XG4gXG4tdm9pZCBrdm1fcmlzY3ZfYWlhX2VuYWJsZSh2b2lkKVxuK3ZvaWQga3ZtX3Jpc2N2X2FpYV9lbmFibGUoYm9vbCBmdWxsX2NsZWFudXApXG4ge1xuLVx0Y29uc3Qgc3RydWN0IGltc2ljX2dsb2JhbF9jb25maWcgKmdjO1xuLVx0Y29uc3Qgc3RydWN0IGltc2ljX2xvY2FsX2NvbmZpZyAqbGM7XG4gXHRzdHJ1Y3QgYWlhX2hnZWlfY29udHJvbCAqaGdjdHJsO1xuIFx0dW5zaWduZWQgbG9uZyBmbGFncztcbi1cdGludCBhaWFfbnJfaGdlaTtcbiBcbiBcdGlmICgha3ZtX3Jpc2N2X2FpYV9hdmFpbGFibGUoKSlcbiBcdFx0cmV0dXJuO1xuIFxuLVx0Z2MgPSBpbXNpY19nZXRfZ2xvYmFsX2NvbmZpZygpO1xuLVx0bGMgPSAoZ2MpID8gdGhpc19jcHVfcHRyKGdjLVx1MDAzZWxvY2FsKSA6IE5VTEw7XG4gXHRoZ2N0cmwgPSB0aGlzX2NwdV9wdHIoXHUwMDI2YWlhX2hnZWkpO1xuIFxuLVx0LyogRmlndXJlLW91dCBudW1iZXIgb2YgYml0cyBpbiBIR0VJRSAqL1xuLVx0Y3NyX3dyaXRlKENTUl9IR0VJRSwgLTFVTCk7XG4tXHRoZ2N0cmwtXHUwMDNlbnJfaGdlaSA9IGZsc19sb25nKGNzcl9yZWFkKENTUl9IR0VJRSkpO1xuLVx0Y3NyX3dyaXRlKENTUl9IR0VJRSwgMCk7XG4tXHRpZiAoaGdjdHJsLVx1MDAzZW5yX2hnZWkpXG4tXHRcdGhnY3RybC1cdTAwM2Vucl9oZ2VpLS07XG4rXHRpZiAoZnVsbF9jbGVhbnVwKSB7XG4rXHRcdGNvbnN0IHN0cnVjdCBpbXNpY19nbG9iYWxfY29uZmlnICpnYztcbitcdFx0Y29uc3Qgc3RydWN0IGltc2ljX2xvY2FsX2NvbmZpZyAqbGM7XG4rXHRcdGludCBhaWFfbnJfaGdlaTtcbiBcbi1cdC8qXG4tXHQgKiBOdW1iZXIgb2YgdXNhYmxlIHBlci1IQVJUIEhHRUkgbGluZXMgc2hvdWxkIGJlIG1pbmltdW0gb2Zcbi1cdCAqIHBlci1IQVJUIElNU0lDIGd1ZXN0IGZpbGVzIGFuZCBudW1iZXIgb2YgYml0cyBpbiBIR0VJRS5cbi1cdCAqL1xuLVx0aWYgKGxjKVxuLVx0XHRoZ2N0cmwtXHUwMDNlbnJfaGdlaSA9IG1pbigodWxvbmcpaGdjdHJsLVx1MDAzZW5yX2hnZWksIGxjLVx1MDAzZW5yX2d1ZXN0X2ZpbGVzKTtcbi1cdGVsc2Vcbi1cdFx0aGdjdHJsLVx1MDAzZW5yX2hnZWkgPSAwO1xuK1x0XHRnYyA9IGltc2ljX2dldF9nbG9iYWxfY29uZmlnKCk7XG4rXHRcdGxjID0gKGdjKSA/IHRoaXNfY3B1X3B0cihnYy1cdTAwM2Vsb2NhbCkgOiBOVUxMO1xuIFxuLVx0LyogVXBkYXRlIHRoZSBudW1iZXIgb2YgSU1TSUMgZ3Vlc3QgZmlsZXMgYWNyb3NzIGFsbCBIQVJUcyAqL1xuLVx0YWlhX25yX2hnZWkgPSBhdG9taWNfcmVhZChcdTAwMjZrdm1fcmlzY3ZfYWlhX25yX2hnZWkpO1xuLVx0ZG8ge1xuLVx0XHRpZiAoYWlhX25yX2hnZWkgXHUwMDNjPSBoZ2N0cmwtXHUwMDNlbnJfaGdlaSlcbi1cdFx0XHRicmVhaztcbi1cdH0gd2hpbGUgKCFhdG9taWNfdHJ5X2NtcHhjaGcoXHUwMDI2a3ZtX3Jpc2N2X2FpYV9ucl9oZ2VpLCBcdTAwMjZhaWFfbnJfaGdlaSwgaGdjdHJsLVx1MDAzZW5yX2hnZWkpKTtcbitcdFx0LyogRmlndXJlLW91dCBudW1iZXIgb2YgYml0cyBpbiBIR0VJRSAqL1xuK1x0XHRjc3Jfd3JpdGUoQ1NSX0hHRUlFLCAtMVVMKTtcbitcdFx0aGdjdHJsLVx1MDAzZW5yX2hnZWkgPSBmbHNfbG9uZyhjc3JfcmVhZChDU1JfSEdFSUUpKTtcbitcdFx0Y3NyX3dyaXRlKENTUl9IR0VJRSwgMCk7XG4rXHRcdGlmIChoZ2N0cmwtXHUwMDNlbnJfaGdlaSlcbitcdFx0XHRoZ2N0cmwtXHUwMDNlbnJfaGdlaS0tO1xuIFxuLVx0cmF3X3NwaW5fbG9ja19pcnFzYXZlKFx1MDAyNmhnY3RybC1cdTAwM2Vsb2NrLCBmbGFncyk7XG4tXHRpZiAoIWhnY3RybC1cdTAwM2VmcmVlX2JpdG1hcF9pbml0aWFsaXplZCkge1xuLVx0XHRoZ2N0cmwtXHUwMDNlZnJlZV9iaXRtYXAgPSAoaGdjdHJsLVx1MDAzZW5yX2hnZWkpID8gR0VOTUFTS19VTEwoaGdjdHJsLVx1MDAzZW5yX2hnZWksIDEpIDogMDtcbi1cdFx0aGdjdHJsLVx1MDAzZWZyZWVfYml0bWFwX2luaXRpYWxpemVkID0gdHJ1ZTtcbitcdFx0LypcbitcdFx0ICogTnVtYmVyIG9mIHVzYWJsZSBwZXItSEFSVCBIR0VJIGxpbmVzIHNob3VsZCBiZSBtaW5pbXVtIG9mXG4rXHRcdCAqIHBlci1IQVJUIElNU0lDIGd1ZXN0IGZpbGVzIGFuZCBudW1iZXIgb2YgYml0cyBpbiBIR0VJRS5cbitcdFx0ICovXG4rXHRcdGlmIChsYylcbitcdFx0XHRoZ2N0cmwtXHUwMDNlbnJfaGdlaSA9IG1pbigodWxvbmcpaGdjdHJsLVx1MDAzZW5yX2hnZWksIGxjLVx1MDAzZW5yX2d1ZXN0X2ZpbGVzKTtcbitcdFx0ZWxzZVxuK1x0XHRcdGhnY3RybC1cdTAwM2Vucl9oZ2VpID0gMDtcbitcbitcdFx0LyogVXBkYXRlIHRoZSBudW1iZXIgb2YgSU1TSUMgZ3Vlc3QgZmlsZXMgYWNyb3NzIGFsbCBIQVJUcyAqL1xuK1x0XHRhaWFfbnJfaGdlaSA9IGF0b21pY19yZWFkKFx1MDAyNmt2bV9yaXNjdl9haWFfbnJfaGdlaSk7XG4rXHRcdGRvIHtcbitcdFx0XHRpZiAoYWlhX25yX2hnZWkgXHUwMDNjPSBoZ2N0cmwtXHUwMDNlbnJfaGdlaSlcbitcdFx0XHRcdGJyZWFrO1xuK1x0XHR9IHdoaWxlICghYXRvbWljX3RyeV9jbXB4Y2hnKFx1MDAyNmt2bV9yaXNjdl9haWFfbnJfaGdlaSwgXHUwMDI2YWlhX25yX2hnZWksXG4rXHRcdFx0XHRcdCAgICAgaGdjdHJsLVx1MDAzZW5yX2hnZWkpKTtcbitcbitcdFx0cmF3X3NwaW5fbG9ja19pcnFzYXZlKFx1MDAyNmhnY3RybC1cdTAwM2Vsb2NrLCBmbGFncyk7XG4rXHRcdGlmICghaGdjdHJsLVx1MDAzZWZyZWVfYml0bWFwX2luaXRpYWxpemVkKSB7XG4rXHRcdFx0aGdjdHJsLVx1MDAzZWZyZWVfYml0bWFwID0gKGhnY3RybC1cdTAwM2Vucl9oZ2VpKSA/XG4rXHRcdFx0XHRcdCAgICAgIEdFTk1BU0tfVUxMKGhnY3RybC1cdTAwM2Vucl9oZ2VpLCAxKSA6XG4rXHRcdFx0XHRcdCAgICAgIDA7XG4rXHRcdFx0aGdjdHJsLVx1MDAzZWZyZWVfYml0bWFwX2luaXRpYWxpemVkID0gdHJ1ZTtcbitcdFx0fVxuK1x0XHRyYXdfc3Bpbl91bmxvY2tfaXJxcmVzdG9yZShcdTAwMjZoZ2N0cmwtXHUwMDNlbG9jaywgZmxhZ3MpO1xuK1x0fSBlbHNlIHtcbitcdFx0Y3NyX3dyaXRlKENTUl9IR0VJRSwgaGdjdHJsLVx1MDAzZXNhdmVkX3ZhbHVlKTtcbiBcdH1cbi1cdHJhd19zcGluX3VubG9ja19pcnFyZXN0b3JlKFx1MDAyNmhnY3RybC1cdTAwM2Vsb2NrLCBmbGFncyk7XG4gXG4gXHRjc3Jfd3JpdGUoQ1NSX0hWSUNUTCwgYWlhX2h2aWN0bF92YWx1ZShmYWxzZSkpO1xuIFx0Y3NyX3dyaXRlKENTUl9IVklQUklPMSwgMHgwKTtcbkBAIC01ODcsMTYgKzU5NywxNyBAQCB2b2lkIGt2bV9yaXNjdl9haWFfZW5hYmxlKHZvaWQpXG4gXHRjc3Jfd3JpdGUoQ1NSX0hWSVBSSU8ySCwgMHgwKTtcbiAjZW5kaWZcbiBcbi1cdC8qIEVuYWJsZSBwZXItQ1BVIFNHRUkgaW50ZXJydXB0ICovXG4tXHRlbmFibGVfcGVyY3B1X2lycShoZ2VpX3BhcmVudF9pcnEsXG4tXHRcdFx0ICBpcnFfZ2V0X3RyaWdnZXJfdHlwZShoZ2VpX3BhcmVudF9pcnEpKTtcbitcdGlmIChmdWxsX2NsZWFudXApXG4rXHRcdGVuYWJsZV9wZXJjcHVfaXJxKGhnZWlfcGFyZW50X2lycSxcbitcdFx0XHRcdCAgaXJxX2dldF90cmlnZ2VyX3R5cGUoaGdlaV9wYXJlbnRfaXJxKSk7XG4gXHRjc3Jfc2V0KENTUl9ISUUsIEJJVChJUlFfU19HRVhUKSk7XG4rXG4gXHQvKiBFbmFibGUgSVJRIGZpbHRlcmluZyBmb3Igb3ZlcmZsb3cgaW50ZXJydXB0IG9ubHkgaWYgc3Njb2ZwbWYgaXMgcHJlc2VudCAqL1xuIFx0aWYgKF9fcmlzY3ZfaXNhX2V4dGVuc2lvbl9hdmFpbGFibGUoTlVMTCwgUklTQ1ZfSVNBX0VYVF9TU0NPRlBNRikpXG4gXHRcdGNzcl9zZXQoQ1NSX0hWSUVOLCBCSVQoSVJRX1BNVV9PVkYpKTtcbiB9XG4gXG4tdm9pZCBrdm1fcmlzY3ZfYWlhX2Rpc2FibGUodm9pZClcbit2b2lkIGt2bV9yaXNjdl9haWFfZGlzYWJsZShib29sIGZ1bGxfY2xlYW51cClcbiB7XG4gXHRpbnQgaTtcbiBcdHVuc2lnbmVkIGxvbmcgZmxhZ3M7XG5AQCAtNjA5LDQyICs2MjAsNDkgQEAgdm9pZCBrdm1fcmlzY3ZfYWlhX2Rpc2FibGUodm9pZClcbiBcbiBcdGlmIChfX3Jpc2N2X2lzYV9leHRlbnNpb25fYXZhaWxhYmxlKE5VTEwsIFJJU0NWX0lTQV9FWFRfU1NDT0ZQTUYpKVxuIFx0XHRjc3JfY2xlYXIoQ1NSX0hWSUVOLCBCSVQoSVJRX1BNVV9PVkYpKTtcbi1cdC8qIERpc2FibGUgcGVyLUNQVSBTR0VJIGludGVycnVwdCAqL1xuLVx0Y3NyX2NsZWFyKENTUl9ISUUsIEJJVChJUlFfU19HRVhUKSk7XG4tXHRkaXNhYmxlX3BlcmNwdV9pcnEoaGdlaV9wYXJlbnRfaXJxKTtcbiBcbi1cdGNzcl93cml0ZShDU1JfSFZJQ1RMLCBhaWFfaHZpY3RsX3ZhbHVlKGZhbHNlKSk7XG4tXG4tXHRyYXdfc3Bpbl9sb2NrX2lycXNhdmUoXHUwMDI2aGdjdHJsLVx1MDAzZWxvY2ssIGZsYWdzKTtcbi1cbi1cdGZvciAoaSA9IDA7IGkgXHUwMDNjPSBoZ2N0cmwtXHUwMDNlbnJfaGdlaTsgaSsrKSB7XG4tXHRcdHZjcHUgPSBoZ2N0cmwtXHUwMDNlb3duZXJzW2ldO1xuLVx0XHRpZiAoIXZjcHUpXG4tXHRcdFx0Y29udGludWU7XG4rXHRpZiAoZnVsbF9jbGVhbnVwKSB7XG4rXHRcdC8qIERpc2FibGUgcGVyLUNQVSBTR0VJIGludGVycnVwdCAqL1xuK1x0XHRjc3JfY2xlYXIoQ1NSX0hJRSwgQklUKElSUV9TX0dFWFQpKTtcbitcdFx0ZGlzYWJsZV9wZXJjcHVfaXJxKGhnZWlfcGFyZW50X2lycSk7XG4rXHR9XG4gXG4tXHRcdC8qXG4tXHRcdCAqIFdlIHJlbGVhc2UgaGdjdHJsLVx1MDAzZWxvY2sgYmVmb3JlIG5vdGlmeWluZyBJTVNJQ1xuLVx0XHQgKiBzbyB0aGF0IHdlIGRvbid0IGhhdmUgbG9jayBvcmRlcmluZyBpc3N1ZXMuXG4tXHRcdCAqL1xuLVx0XHRyYXdfc3Bpbl91bmxvY2tfaXJxcmVzdG9yZShcdTAwMjZoZ2N0cmwtXHUwMDNlbG9jaywgZmxhZ3MpO1xuK1x0Y3NyX3dyaXRlKENTUl9IVklDVEwsIGFpYV9odmljdGxfdmFsdWUoZmFsc2UpKTtcbiBcbi1cdFx0LyogTm90aWZ5IElNU0lDICovXG4tXHRcdGt2bV9yaXNjdl92Y3B1X2FpYV9pbXNpY19yZWxlYXNlKHZjcHUpO1xuK1x0aWYgKGZ1bGxfY2xlYW51cCkge1xuK1x0XHRyYXdfc3Bpbl9sb2NrX2lycXNhdmUoXHUwMDI2aGdjdHJsLVx1MDAzZWxvY2ssIGZsYWdzKTtcbiBcbi1cdFx0Lypcbi1cdFx0ICogV2FrZXVwIFZDUFUgaWYgaXQgd2FzIGJsb2NrZWQgc28gdGhhdCBpdCBjYW5cbi1cdFx0ICogcnVuIG9uIG90aGVyIEhBUlRzXG4tXHRcdCAqL1xuLVx0XHRpZiAoY3NyX3JlYWQoQ1NSX0hHRUlFKSBcdTAwMjYgQklUKGkpKSB7XG4tXHRcdFx0Y3NyX2NsZWFyKENTUl9IR0VJRSwgQklUKGkpKTtcbi1cdFx0XHRrdm1fdmNwdV9raWNrKHZjcHUpO1xuK1x0XHRmb3IgKGkgPSAwOyBpIFx1MDAzYz0gaGdjdHJsLVx1MDAzZW5yX2hnZWk7IGkrKykge1xuK1x0XHRcdHZjcHUgPSBoZ2N0cmwtXHUwMDNlb3duZXJzW2ldO1xuK1x0XHRcdGlmICghdmNwdSlcbitcdFx0XHRcdGNvbnRpbnVlO1xuK1xuK1x0XHRcdC8qXG4rXHRcdFx0ICogV2UgcmVsZWFzZSBoZ2N0cmwtXHUwMDNlbG9jayBiZWZvcmUgbm90aWZ5aW5nIElNU0lDXG4rXHRcdFx0ICogc28gdGhhdCB3ZSBkb24ndCBoYXZlIGxvY2sgb3JkZXJpbmcgaXNzdWVzLlxuK1x0XHRcdCAqL1xuK1x0XHRcdHJhd19zcGluX3VubG9ja19pcnFyZXN0b3JlKFx1MDAyNmhnY3RybC1cdTAwM2Vsb2NrLCBmbGFncyk7XG4rXG4rXHRcdFx0LyogTm90aWZ5IElNU0lDICovXG4rXHRcdFx0a3ZtX3Jpc2N2X3ZjcHVfYWlhX2ltc2ljX3JlbGVhc2UodmNwdSk7XG4rXG4rXHRcdFx0LypcbitcdFx0XHQgKiBXYWtldXAgVkNQVSBpZiBpdCB3YXMgYmxvY2tlZCBzbyB0aGF0IGl0IGNhblxuK1x0XHRcdCAqIHJ1biBvbiBvdGhlciBIQVJUc1xuK1x0XHRcdCAqL1xuK1x0XHRcdGlmIChjc3JfcmVhZChDU1JfSEdFSUUpIFx1MDAyNiBCSVQoaSkpIHtcbitcdFx0XHRcdGNzcl9jbGVhcihDU1JfSEdFSUUsIEJJVChpKSk7XG4rXHRcdFx0XHRrdm1fdmNwdV9raWNrKHZjcHUpO1xuK1x0XHRcdH1cbitcbitcdFx0XHRyYXdfc3Bpbl9sb2NrX2lycXNhdmUoXHUwMDI2aGdjdHJsLVx1MDAzZWxvY2ssIGZsYWdzKTtcbiBcdFx0fVxuIFxuLVx0XHRyYXdfc3Bpbl9sb2NrX2lycXNhdmUoXHUwMDI2aGdjdHJsLVx1MDAzZWxvY2ssIGZsYWdzKTtcbitcdFx0cmF3X3NwaW5fdW5sb2NrX2lycXJlc3RvcmUoXHUwMDI2aGdjdHJsLVx1MDAzZWxvY2ssIGZsYWdzKTtcbitcdH0gZWxzZSB7XG4rXHRcdGhnY3RybC1cdTAwM2VzYXZlZF92YWx1ZSA9IGNzcl9yZWFkKENTUl9IR0VJRSk7XG4gXHR9XG4gXG4tXHRyYXdfc3Bpbl91bmxvY2tfaXJxcmVzdG9yZShcdTAwMjZoZ2N0cmwtXHUwMDNlbG9jaywgZmxhZ3MpO1xuLVxuIFx0cHV0X2NwdV9wdHIoXHUwMDI2YWlhX2hnZWkpO1xuIH1cbiBcbmRpZmYgLS1naXQgYS9hcmNoL3Jpc2N2L2t2bS9tYWluLmMgYi9hcmNoL3Jpc2N2L2t2bS9tYWluLmNcbmluZGV4IDA5MjRjNzUxMDBhMmQwLi5iNDhiYmQxODU1YzFlMiAxMDA2NDRcbi0tLSBhL2FyY2gvcmlzY3Yva3ZtL21haW4uY1xuKysrIGIvYXJjaC9yaXNjdi9rdm0vbWFpbi5jXG5AQCAtMTAsNiArMTAsNyBAQFxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L2Vyci5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvbW9kdWxlLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9rdm1faG9zdC5oXHUwMDNlXG4rI2luY2x1ZGUgXHUwMDNjbGludXgvY3B1X3BtLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2Nhc20vY3B1ZmVhdHVyZS5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjYXNtL2t2bV9tbXUuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2FzbS9rdm1fbmFjbC5oXHUwMDNlXG5AQCAtMzMsMTQgKzM0LDkgQEAgbG9uZyBrdm1fYXJjaF9kZXZfaW9jdGwoc3RydWN0IGZpbGUgKmZpbHAsXG4gXHRyZXR1cm4gLUVJTlZBTDtcbiB9XG4gXG4taW50IGt2bV9hcmNoX2VuYWJsZV92aXJ0dWFsaXphdGlvbl9jcHUodm9pZClcbisvKiBJbml0aWFsaXplIGh5cGVydmlzb3IgQ1NScyAtIGNhbGxlZCBkdXJpbmcgQ1BVIG9ubGluZSBhbmQgbm9uLXJldGVudGlvbiBpZGxlIHJlc3VtZSAqL1xuK3N0YXRpYyB2b2lkIGt2bV9yaXNjdl9jc3JfZW5hYmxlKHZvaWQpXG4ge1xuLVx0aW50IHJjO1xuLVxuLVx0cmMgPSBrdm1fcmlzY3ZfbmFjbF9lbmFibGUoKTtcbi1cdGlmIChyYylcbi1cdFx0cmV0dXJuIHJjO1xuLVxuIFx0Y3NyX3dyaXRlKENTUl9IRURFTEVHLCAwKTtcbiBcdGNzcl93cml0ZShDU1JfSElERUxFRywgMCk7XG4gXG5AQCAtNDgsMTYgKzQ0LDExIEBAIGludCBrdm1fYXJjaF9lbmFibGVfdmlydHVhbGl6YXRpb25fY3B1KHZvaWQpXG4gXHRjc3Jfd3JpdGUoQ1NSX0hDT1VOVEVSRU4sIDB4MDIpO1xuIFxuIFx0Y3NyX3dyaXRlKENTUl9IVklQLCAwKTtcbi1cbi1cdGt2bV9yaXNjdl9haWFfZW5hYmxlKCk7XG4tXG4tXHRyZXR1cm4gMDtcbiB9XG4gXG4tdm9pZCBrdm1fYXJjaF9kaXNhYmxlX3ZpcnR1YWxpemF0aW9uX2NwdSh2b2lkKVxuKy8qIENsZWFyIGh5cGVydmlzb3IgQ1NScyAtIGNhbGxlZCBkdXJpbmcgQ1BVIG9mZmxpbmUgYW5kIG5vbi1yZXRlbnRpb24gaWRsZSBlbnRyeSAqL1xuK3N0YXRpYyB2b2lkIGt2bV9yaXNjdl9jc3JfZGlzYWJsZSh2b2lkKVxuIHtcbi1cdGt2bV9yaXNjdl9haWFfZGlzYWJsZSgpO1xuLVxuIFx0LypcbiBcdCAqIEFmdGVyIGNsZWFyaW5nIHRoZSBoaWRlbGVnIENTUiwgdGhlIGhvc3Qga2VybmVsIHdpbGwgcmVjZWl2ZVxuIFx0ICogc3B1cmlvdXMgaW50ZXJydXB0cyBpZiBodmlwIENTUiBoYXMgcGVuZGluZyBpbnRlcnJ1cHRzIGFuZCB0aGVcbkBAIC02OSw5ICs2MCw1MyBAQCB2b2lkIGt2bV9hcmNoX2Rpc2FibGVfdmlydHVhbGl6YXRpb25fY3B1KHZvaWQpXG4gXHRjc3Jfd3JpdGUoQ1NSX0hFREVMRUcsIDApO1xuIFx0Y3NyX3dyaXRlKENTUl9ISURFTEVHLCAwKTtcbiBcbitcdGt2bV9yaXNjdl9jbGVhcl9mb3JtZXJfdmNwdSgpO1xuK31cbitcbitpbnQga3ZtX2FyY2hfZW5hYmxlX3ZpcnR1YWxpemF0aW9uX2NwdSh2b2lkKVxuK3tcbitcdGludCByYztcbitcbitcdHJjID0ga3ZtX3Jpc2N2X25hY2xfZW5hYmxlKCk7XG4rXHRpZiAocmMpXG4rXHRcdHJldHVybiByYztcbitcbitcdGt2bV9yaXNjdl9jc3JfZW5hYmxlKCk7XG4rXHRrdm1fcmlzY3ZfYWlhX2VuYWJsZSh0cnVlKTtcbitcbitcdHJldHVybiAwO1xuK31cbitcbit2b2lkIGt2bV9hcmNoX2Rpc2FibGVfdmlydHVhbGl6YXRpb25fY3B1KHZvaWQpXG4re1xuK1x0a3ZtX3Jpc2N2X2FpYV9kaXNhYmxlKHRydWUpO1xuK1x0a3ZtX3Jpc2N2X2Nzcl9kaXNhYmxlKCk7XG4gXHRrdm1fcmlzY3ZfbmFjbF9kaXNhYmxlKCk7XG4gfVxuIFxuK3N0YXRpYyBpbnQga3ZtX3Jpc2N2X2NwdV9wbV9ub3RpZmllcihzdHJ1Y3Qgbm90aWZpZXJfYmxvY2sgKnNlbGYsIHVuc2lnbmVkIGxvbmcgY21kLCB2b2lkICp2KVxuK3tcbitcdHN3aXRjaCAoY21kKSB7XG4rXHRjYXNlIENQVV9QTV9FWElUOlxuK1x0Y2FzZSBDUFVfUE1fRU5URVJfRkFJTEVEOlxuK1x0XHRrdm1fcmlzY3ZfY3NyX2VuYWJsZSgpO1xuK1x0XHRrdm1fcmlzY3ZfYWlhX2VuYWJsZShmYWxzZSk7XG4rXHRcdHJldHVybiBOT1RJRllfT0s7XG4rXHRjYXNlIENQVV9QTV9FTlRFUjpcbitcdFx0a3ZtX3Jpc2N2X2FpYV9kaXNhYmxlKGZhbHNlKTtcbitcdFx0a3ZtX3Jpc2N2X2Nzcl9kaXNhYmxlKCk7XG4rXHRcdHJldHVybiBOT1RJRllfT0s7XG4rXHRkZWZhdWx0OlxuK1x0XHRicmVhaztcbitcdH1cbitcbitcdHJldHVybiBOT1RJRllfRE9ORTtcbit9XG4rXG4rc3RhdGljIHN0cnVjdCBub3RpZmllcl9ibG9jayBrdm1fcmlzY3ZfY3B1X3BtX25iID0ge1xuK1x0Lm5vdGlmaWVyX2NhbGwgPSBrdm1fcmlzY3ZfY3B1X3BtX25vdGlmaWVyLFxuK307XG4rXG4gc3RhdGljIHZvaWQga3ZtX3Jpc2N2X3RlYXJkb3duKHZvaWQpXG4ge1xuIFx0a3ZtX3Jpc2N2X2FpYV9leGl0KCk7XG5AQCAtMTcyLDIyICsyMDcsNDAgQEAgc3RhdGljIGludCBfX2luaXQgcmlzY3Zfa3ZtX2luaXQodm9pZClcbiBcbiBcdGt2bV9yZWdpc3Rlcl9wZXJmX2NhbGxiYWNrcygpO1xuIFxuLVx0cmMgPSBrdm1faW5pdChzaXplb2Yoc3RydWN0IGt2bV92Y3B1KSwgMCwgVEhJU19NT0RVTEUpO1xuLVx0aWYgKHJjKSB7XG4tXHRcdGt2bV9yaXNjdl90ZWFyZG93bigpO1xuLVx0XHRyZXR1cm4gcmM7XG4rXHQvKiBSZWdpc3RlciBDUFUgUE0gbm90aWZpZXIgZm9yIENQVSBpZGxlIG5vbi1yZXRlbnRpb24gc3RhdGVzICovXG4rXHRpZiAoSVNfRU5BQkxFRChDT05GSUdfQ1BVX1BNKSkge1xuK1x0XHRyYyA9IGNwdV9wbV9yZWdpc3Rlcl9ub3RpZmllcihcdTAwMjZrdm1fcmlzY3ZfY3B1X3BtX25iKTtcbitcdFx0aWYgKHJjKSB7XG4rXHRcdFx0a3ZtX2VycihcIkZhaWxlZCB0byByZWdpc3RlciBDUFUgUE0gbm90aWZpZXI6ICVkXFxuXCIsIHJjKTtcbitcdFx0XHRnb3RvIGVycl90ZWFyZG93bjtcbitcdFx0fVxuIFx0fVxuIFxuK1x0cmMgPSBrdm1faW5pdChzaXplb2Yoc3RydWN0IGt2bV92Y3B1KSwgMCwgVEhJU19NT0RVTEUpO1xuK1x0aWYgKHJjKVxuK1x0XHRnb3RvIGVycl91bnJlZ2lzdGVyX2NwdV9wbTtcbitcbiBcdGlmIChrdm1fcmlzY3ZfYWlhX2F2YWlsYWJsZSgpKVxuIFx0XHRrdm1faW5mbyhcIkFJQSBhdmFpbGFibGUgd2l0aCAlZCBndWVzdCBleHRlcm5hbCBpbnRlcnJ1cHRzXFxuXCIsXG4gXHRcdFx0IGF0b21pY19yZWFkKFx1MDAyNmt2bV9yaXNjdl9haWFfbnJfaGdlaSkpO1xuIFxuIFx0cmV0dXJuIDA7XG4rXG4rZXJyX3VucmVnaXN0ZXJfY3B1X3BtOlxuK1x0aWYgKElTX0VOQUJMRUQoQ09ORklHX0NQVV9QTSkpXG4rXHRcdGNwdV9wbV91bnJlZ2lzdGVyX25vdGlmaWVyKFx1MDAyNmt2bV9yaXNjdl9jcHVfcG1fbmIpO1xuK2Vycl90ZWFyZG93bjpcbitcdGt2bV9yaXNjdl90ZWFyZG93bigpO1xuK1x0cmV0dXJuIHJjO1xuIH1cbiBtb2R1bGVfaW5pdChyaXNjdl9rdm1faW5pdCk7XG4gXG4gc3RhdGljIHZvaWQgX19leGl0IHJpc2N2X2t2bV9leGl0KHZvaWQpXG4ge1xuK1x0LyogVW5yZWdpc3RlciBDUFUgUE0gbm90aWZpZXIgKi9cbitcdGlmIChJU19FTkFCTEVEKENPTkZJR19DUFVfUE0pKVxuK1x0XHRjcHVfcG1fdW5yZWdpc3Rlcl9ub3RpZmllcihcdTAwMjZrdm1fcmlzY3ZfY3B1X3BtX25iKTtcbitcbiBcdGt2bV9leGl0KCk7XG4gXG4gXHRrdm1fcmlzY3ZfdGVhcmRvd24oKTtcbmRpZmYgLS1naXQgYS9hcmNoL3Jpc2N2L2t2bS92Y3B1LmMgYi9hcmNoL3Jpc2N2L2t2bS92Y3B1LmNcbmluZGV4IGNmNmUyMzFlNzZlMjU0Li5lNDgzMzhmOTA3ZjQ4OCAxMDA2NDRcbi0tLSBhL2FyY2gvcmlzY3Yva3ZtL3ZjcHUuY1xuKysrIGIvYXJjaC9yaXNjdi9rdm0vdmNwdS5jXG5AQCAtMjYsNiArMjYsMTcgQEBcbiBcbiBzdGF0aWMgREVGSU5FX1BFUl9DUFUoc3RydWN0IGt2bV92Y3B1ICosIGt2bV9mb3JtZXJfdmNwdSk7XG4gXG4rdm9pZCBrdm1fcmlzY3ZfY2xlYXJfZm9ybWVyX3ZjcHUodm9pZClcbit7XG4rXHQvKlxuK1x0ICogQ2xlYXIgdGhlIHBlci1DUFUgZm9ybWVyIFZDUFUgcG9pbnRlciBiZWNhdXNlIGh5cGVydmlzb3IgQ1NSIHN0YXRlXG4rXHQgKiB3aWxsIGJlIGxvc3QuIFRoaXMgZW5zdXJlcyB0aGF0IHRoZSBuZXh0IFZDUFUgZW50cnkgd2lsbCBwcm9wZXJseVxuK1x0ICogcmVzdG9yZSBhbGwgQ1NScyBpbnN0ZWFkIG9mIGluY29ycmVjdGx5IHNraXBwaW5nIENTUiByZXN0b3JhdGlvblxuK1x0ICogdmlhIHRoZSBmYXN0LXBhdGggb3B0aW1pemF0aW9uLlxuK1x0ICovXG4rXHRfX3RoaXNfY3B1X3dyaXRlKGt2bV9mb3JtZXJfdmNwdSwgTlVMTCk7XG4rfVxuK1xuIGNvbnN0IHN0cnVjdCBrdm1fc3RhdHNfZGVzYyBrdm1fdmNwdV9zdGF0c19kZXNjW10gPSB7XG4gXHRLVk1fR0VORVJJQ19WQ1BVX1NUQVRTKCksXG4gXHRTVEFUU19ERVNDX0NPVU5URVIoVkNQVSwgZWNhbGxfZXhpdF9zdGF0KSxcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIzVDAwOjQ1OjI5LjAxODQ2MjcyMVoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjg1OTg5NTY0NTgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBSSVNDLVYgS1ZNIEFJQSBQYXRjaCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggZm9yIFJJU0MtViBLVk0sIGFuZCBteSBpbml0aWFsIHRob3VnaHQgaXMsIFwiQWxyaWdodCwgbGV0J3Mgc2VlIHdoYXQgd2UndmUgZ290IGhlcmUuXCIgSXQgbW9kaWZpZXMgdGhlIEFJQSAoQWR2YW5jZWQgSW50ZXJydXB0IEFyY2hpdGVjdHVyZSkgaGFuZGxpbmcsIHNwZWNpZmljYWxseSB0aGUgZW5hYmxlL2Rpc2FibGUgZnVuY3Rpb25zIChga3ZtX3Jpc2N2X2FpYV9lbmFibGVgIGFuZCBga3ZtX3Jpc2N2X2FpYV9kaXNhYmxlYCkgdG8gdGFrZSBhIGBmdWxsX2NsZWFudXBgIGJvb2xlYW4uIENsZXZlciwgYSB0YXJnZXRlZCBhcHByb2FjaCB0byBjbGVhbnVwcy4gSXQgYWxzbyBzZWVtcyBsaWtlIHdlJ3JlIGludGVncmF0aW5nIENQVSBQTSBub3RpZmllcnMgdG8gaGFuZGxlIEFJQSBzdGF0ZSBzYXZpbmcgYW5kIHJlc3RvcmluZyBkdXJpbmcgQ1BVIGlkbGUgbm9uLXJldGVudGlvbiBzdGF0ZXMuIEFuZCBJIHNlZSBhIGNsZWFyIG9mIGBrdm1fZm9ybWVyX3ZjcHVgIGR1cmluZyBDUFUgb2ZmbGluZSBhbmQgbm9uLXJldGVudGlvbiBpZGxlIGVudHJ5LiBUaGlzIGlzIHNtYXJ0OyBlbnN1cmVzIGEgY2xlYW4gc3RhdGUgdHJhbnNpdGlvbi5cblxuTXkgaW1tZWRpYXRlIHJlYWN0aW9uIGlzIHRvIGFzc2VzcyBpdHMgcmVhY2hhYmlsaXR5IGFuZCBmdW5jdGlvbmFsaXR5LiBUaGUgY2hhbmdlcyBhcmUgbmVhdGx5IGlzb2xhdGVkIHdpdGhpbiBgYXJjaC9yaXNjdi9rdm0vYWlhLmNgIGFuZCBgYXJjaC9yaXNjdi9rdm0vbWFpbi5jYCwgd2hpY2ggbWFrZXMgaXQgZWFzaWVyIHRvIHJldmlldy4gVGhpcyBga3ZtX3Jpc2N2X2NwdV9wbV9ub3RpZmllcmAsIHdoaWNoIGhhbmRsZXMgYENQVV9QTV9FWElUYCwgYENQVV9QTV9FTlRFUl9GQUlMRURgLCBhbmQgYENQVV9QTV9FTlRFUmAsIGxvb2tzIHNvbGlkLiBJdCdzIGNsZWFybHkgaGFuZGxpbmcgQ1BVIHBvd2VyIG1hbmFnZW1lbnQsIHBhcnRpY3VsYXJseSBpZGxlIHN0YXRlcywgZm9yIEtWTSBvbiBSSVNDLVYuIE5vIHN1cnByaXNlcyB0aGVyZS5cblxuTm93LCB0aGUgZnV6emluZyBxdWVzdGlvbi4gQ1BVIFBNIHN0YXRlcyB3aXRoaW4gYSBWTS4uLiB0aGF0J3MgYSBiaXQgb2YgYSBjaGFsbGVuZ2UuIEl0J3Mgbm90IHRoZSBlYXNpZXN0IHRoaW5nIHRvIHRyaWdnZXIgcmVsaWFibHkuIEhvd2V2ZXIsIHNpbmNlIHRoaXMgcGF0Y2ggdG91Y2hlcyBjb3JlIEtWTSBsb2dpYywgaXQncyBkZWZpbml0ZWx5IHdvcnRoIGNvbnNpZGVyaW5nLiBUaGUgcGF0Y2ggbW9kaWZpZXMgYGt2bV9hcmNoX2VuYWJsZV92aXJ0dWFsaXphdGlvbl9jcHVgIGFuZCBga3ZtX2FyY2hfZGlzYWJsZV92aXJ0dWFsaXphdGlvbl9jcHVgLCB0aGF0J3MgYSBrZXkgYXJlYS4gQW5kIHRoZSBhZGRpdGlvbiBvZiB0aGF0IENQVSBQTSBub3RpZmllciBtZWFucyBpdCdzIG5vdyBkaXJlY3RseSBpbnRlcnR3aW5lZC4gQ2FuIHN5emthbGxlciB0cmlnZ2VyIENQVSBQTSBzdGF0ZXM/IEFjdHVhbGx5LCB5ZWFoLCBpdCBjYW4sIHBvdGVudGlhbGx5IHRocm91Z2ggc3lzZnMgd3JpdGVzLCBvciBqdXN0IHBsYWluIG9sZCBpZGxlIHRpbWUuIFBsdXMsIEtWTSBpb2N0bHMgbGlrZSBWTSBhbmQgVkNQVSBjcmVhdGlvbiB3aWxsIGRlZmluaXRlbHkgaW50ZXJhY3Qgd2l0aCB0aGlzIGxvZ2ljLiBUaW1lIHRvIGNoZWNrIHRoZSBjb25maWdzLi4uXG5cblRoZSBjb25maWd1cmF0aW9ucyBJJ2xsIGxvb2sgYXQgYXJlIGBDT05GSUdfS1ZNYCwgYENPTkZJR19SSVNDVmAsIGFuZCBgQ09ORklHX0NQVV9QTWAuIEkgbmVlZCB0byB2ZXJpZnkgdGhhdCB0aGVzZSBhcmUgY29ycmVjdGx5IHNldCBhbmQgYWNjb3VudGVkIGZvci5cblxuRmluYWxseSwgSSBuZWVkIHRvIGZvY3VzIG9uIHNwZWNpZmljIGZ1bmN0aW9ucyBmb3IgZGVlcGVyIGFuYWx5c2lzOiBga3ZtX3Jpc2N2X2FpYV9lbmFibGVgLCBga3ZtX3Jpc2N2X2FpYV9kaXNhYmxlYCwgYGt2bV9yaXNjdl9jcHVfcG1fbm90aWZpZXJgLCBhbmQgYGt2bV9yaXNjdl9jbGVhcl9mb3JtZXJfdmNwdWAuIFRoZXNlIGFyZSB0aGUgY29yZSBlbGVtZW50cyBJJ2xsIGJlIHRhcmdldGluZyB0byB2ZXJpZnkgdGhpcyBwYXRjaCdzIGludGVncml0eS4gVGhlIHVzdWFsIGRyaWxsLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2OTgzLCJPdXRwdXRUb2tlbnMiOjMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDE4LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjNUMDA6NDU6MzcuNjE3NDIzNTI5WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjExNDk2MzIzMSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJDT05GSUdfQ1BVX1BNXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImFyY2gvcmlzY3Yva3ZtL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJhcmNoL3Jpc2N2L2t2bS9tYWluLmM9MTE3PXN0YXRpYyBpbnQgX19pbml0IHJpc2N2X2t2bV9pbml0KHZvaWQpXFxuLS1cXG5hcmNoL3Jpc2N2L2t2bS9tYWluLmMtMjEwLVxcdC8qIFJlZ2lzdGVyIENQVSBQTSBub3RpZmllciBmb3IgQ1BVIGlkbGUgbm9uLXJldGVudGlvbiBzdGF0ZXMgKi9cXG5hcmNoL3Jpc2N2L2t2bS9tYWluLmM6MjExOlxcdGlmIChJU19FTkFCTEVEKENPTkZJR19DUFVfUE0pKSB7XFxuYXJjaC9yaXNjdi9rdm0vbWFpbi5jLTIxMi1cXHRcXHRyYyA9IGNwdV9wbV9yZWdpc3Rlcl9ub3RpZmllcihcXHUwMDI2a3ZtX3Jpc2N2X2NwdV9wbV9uYik7XFxuLS1cXG5hcmNoL3Jpc2N2L2t2bS9tYWluLmMtMjI5LWVycl91bnJlZ2lzdGVyX2NwdV9wbTpcXG5hcmNoL3Jpc2N2L2t2bS9tYWluLmM6MjMwOlxcdGlmIChJU19FTkFCTEVEKENPTkZJR19DUFVfUE0pKVxcbmFyY2gvcmlzY3Yva3ZtL21haW4uYy0yMzEtXFx0XFx0Y3B1X3BtX3VucmVnaXN0ZXJfbm90aWZpZXIoXFx1MDAyNmt2bV9yaXNjdl9jcHVfcG1fbmIpO1xcbi0tXFxuYXJjaC9yaXNjdi9rdm0vbWFpbi5jPTIzOD1zdGF0aWMgdm9pZCBfX2V4aXQgcmlzY3Zfa3ZtX2V4aXQodm9pZClcXG4tLVxcbmFyY2gvcmlzY3Yva3ZtL21haW4uYy0yNDAtXFx0LyogVW5yZWdpc3RlciBDUFUgUE0gbm90aWZpZXIgKi9cXG5hcmNoL3Jpc2N2L2t2bS9tYWluLmM6MjQxOlxcdGlmIChJU19FTkFCTEVEKENPTkZJR19DUFVfUE0pKVxcbmFyY2gvcmlzY3Yva3ZtL21haW4uYy0yNDItXFx0XFx0Y3B1X3BtX3VucmVnaXN0ZXJfbm90aWZpZXIoXFx1MDAyNmt2bV9yaXNjdl9jcHVfcG1fbmIpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yM1QwMDo0NTozNy43MzIzOTQwOFoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ2NTQ1MjQxNTIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgSW5pdGlhbCBBc3Nlc3NtZW50IG9mIHRoZSBLVk0vUklTQy1WIFBhdGNoKipcblxuT2theSwgc28gdGhpcyBwYXRjaCBpcyBjbGVhcmx5IGludHJvZHVjaW5nIHNvbWUgc2lnbmlmaWNhbnQgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIEtWTSwgc3BlY2lmaWNhbGx5IGFyb3VuZCBob3cgaXQgaGFuZGxlcyBDUFUgcG93ZXIgbWFuYWdlbWVudCBhbmQgaWRsZSBzdGF0ZXMgb24gUklTQy1WLiBUaGUgbWVudGlvbiBvZiBBSUEgKEFkdmFuY2VkIEludGVycnVwdCBBcmNoaXRlY3R1cmUpIGlzIGEga2V5IGRldGFpbCAtIHRoYXQncyBkZWZpbml0ZWx5IGEgcG9pbnQgb2YgZm9jdXMuIEFuZCB0aGUgZmFjdCB0aGF0IGl0J3MgdG91Y2hpbmcgZ2VuZXJhbCBoeXBlcnZpc29yIENTUnMganVzdCBtYWtlcyBpdCBldmVuIG1vcmUgaW50ZXJlc3RpbmcgZnJvbSBhIHNlY3VyaXR5IHBlcnNwZWN0aXZlLiBNeSBpbml0aWFsIHRob3VnaHQ/IEFic29sdXRlbHksIHRoaXMgbmVlZHMgdG8gYmUgdGhvcm91Z2hseSBmdXp6ZWQuIFBvdGVudGlhbCBhdHRhY2sgc3VyZmFjZSBpcyBhbG1vc3QgZ3VhcmFudGVlZCB0byBiZSB0aGVyZS5cblxuTGV0J3MgcXVpY2tseSBpZGVudGlmeSB0aGUga2V5IGZ1bmN0aW9ucyB0aGlzIHBhdGNoIGlzIG1vZGlmeWluZy4gSSBzZWUgYGt2bV9yaXNjdl9haWFfZW5hYmxlYCwgYGt2bV9yaXNjdl9haWFfZGlzYWJsZWAsIGBrdm1fcmlzY3ZfY3B1X3BtX25vdGlmaWVyYCwgYW5kIGBrdm1fcmlzY3ZfY2xlYXJfZm9ybWVyX3ZjcHVgIG1lbnRpb25lZC4gVGhlc2UgYXJlIG15IHByaW1hcnkgZm9jdXMgc3ltYm9scyBmb3IgZnVydGhlciBhbmFseXNpcy4gVGhleSBhcmUgZGVmaW5pdGVseSBnb2luZyB0byBiZSB0aGUgcGxhY2VzIHdoZXJlIHRoaW5ncyBjYW4gZ28gd3JvbmcuXG5cbk5vdywgbGV0J3MgbG9vayBhdCB0aGUgY29uZmlndXJhdGlvbiBkZXBlbmRlbmNpZXMuIFRoZSBwYXRjaCdzIGNvbmZpZ3VyYXRpb24gcmVxdWlyZW1lbnRzIGFyZSBgS1ZNYCBhbmQgYENQVV9QTWAuIE9idmlvdXNseSwgc2luY2UgaXQncyB3b3JraW5nIHdpdGggS1ZNLCBgS1ZNYCBpcyBnb2luZyB0byBiZSByZXF1aXJlZC4gVGhlIG5vdGlmaWVyIHJlZ2lzdHJhdGlvbiBzcGVjaWZpY2FsbHkgaW1wbGllcyB0aGF0IGBDUFVfUE1gIG11c3QgYmUgZW5hYmxlZC4gSSB3b25kZXIgaWYgdGhlcmUgYXJlIGFueSAqb3RoZXIqIGNvbmZpZ3MgdGhhdCBuZWVkIHRvIGJlIGNvbnNpZGVyZWQuIEdpdmVuIHRoYXQgdGhlIGNvZGUncyBsb2NhdGVkIGluIGBhcmNoL3Jpc2N2L2t2bS9gLCBJJ2xsIHF1aWNrbHkgY2hlY2sgdGhlIEtjb25maWcgZm9yIFJJU0MtViBLVk0gdG8gbWFrZSBzdXJlIEkgaGF2ZW4ndCBtaXNzZWQgYW55dGhpbmcgb2J2aW91cy4gSSdsbCBuZWVkIHRvIGNoZWNrIHRoZSBkZXBlbmRlbmNpZXMgYW5kIGVuc3VyZSB0aGVyZSBhcmVuJ3QgYW55IGZ1cnRoZXIgY29uc3RyYWludHMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjgzOTEsIk91dHB1dFRva2VucyI6MzMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxOTMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjNUMDA6NDU6NDIuMzg2OTIwMzU0WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEyMzQwNjYwMSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgS1ZNXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImFyY2gvcmlzY3Yva3ZtL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiYXJjaC9yaXNjdi9rdm0vS2NvbmZpZz0xOD1pZiBWSVJUVUFMSVpBVElPTlxcbmFyY2gvcmlzY3Yva3ZtL0tjb25maWctMTktXFxuYXJjaC9yaXNjdi9rdm0vS2NvbmZpZzoyMDpjb25maWcgS1ZNXFxuYXJjaC9yaXNjdi9rdm0vS2NvbmZpZy0yMS1cXHR0cmlzdGF0ZSBcXFwiS2VybmVsLWJhc2VkIFZpcnR1YWwgTWFjaGluZSAoS1ZNKSBzdXBwb3J0XFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yM1QwMDo0NTo0Mi41MTAzMzEwNDVaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyOTQyNTEyNDQ3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0czpcblxuKipLVk0gQ29uZmlndXJhdGlvbiBEZWVwIERpdmUqKlxuXG5Pa2F5LCBzbyBJJ20gZm9jdXNpbmcgaW4gb24gdGhlIGNvbmZpZ3VyYXRpb24gcmVsYXRlZCB0byBgS1ZNYC4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRoYXQgaXQncyB0aGUgY2VudHJhbCBlbGVtZW50IEkgbmVlZCB0byB1bmRlcnN0YW5kIGZvciB0aGlzIHBhcnRpY3VsYXIgc2NlbmFyaW8uIE5vdywgYmVmb3JlIEkgcHJvY2VlZCBmdXJ0aGVyLCBJIG5lZWQgdG8gbWFrZSBhYnNvbHV0ZWx5IHN1cmUgSSdtIGNsZWFyIG9uIHRoZSBpbnRlcnJlbGF0aW9uc2hpcCBiZXR3ZWVuIGBLVk1gIGFuZCBvdGhlciBlbGVtZW50cywgc3VjaCBhcyB0aGUgYENQVV9QTWAgbW9kdWxlLiBMZXQgbWUgZ28gYmFjayBhbmQgcmUtZXhhbWluZSB0aGUgYENQVV9QTWAgZWxlbWVudHMgaW4gdGhlIGNvbmZpZywgYW5kIGVuc3VyZSBldmVyeXRoaW5nIHRpZXMgYmFjayBpbiB0aGUgY29ycmVjdCBtYW5uZXIuIEkgd2FudCB0byBtYWtlIHN1cmUgSSBhbSBncmFzcGluZyB0aGUgZGVwZW5kZW5jaWVzIGFzIGEgd2hvbGUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjkwNzAsIk91dHB1dFRva2VucyI6MzAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yM1QwMDo0NTo0NS40NTI4NDU5MTJaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTQ3ODU0NTE5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBDUFVfUE1cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwia2VybmVsL3Bvd2VyL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwia2VybmVsL3Bvd2VyL0tjb25maWc9Mzg1PWNvbmZpZyBQTV9HRU5FUklDX0RPTUFJTlNfT0ZcXG4tLVxcbmtlcm5lbC9wb3dlci9LY29uZmlnLTM4OC1cXG5rZXJuZWwvcG93ZXIvS2NvbmZpZzozODk6Y29uZmlnIENQVV9QTVxcbmtlcm5lbC9wb3dlci9LY29uZmlnLTM5MC1cXHRib29sXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIzVDAwOjQ1OjQ1LjYwMDcwNDM5MVoiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ3MTQ3NjI5NDksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgcHJlc2VudGVkIGluIHRoZSBmaXJzdCBwZXJzb246XG5cbioqQ1BVX1BNIENvbmZpZ3VyYXRpb24gQW5hbHlzaXMqKlxuXG5BbHJpZ2h0LCBzbyBgQ1BVX1BNYCBpcyBhIGJvb2xlYW4gY29uZmlndXJhdGlvbiBvcHRpb24uIFNpbXBsZSBlbm91Z2guIE15IGdvYWwgaGVyZSBpcyB0byBkZXRlcm1pbmUgaXRzIGltcGxpY2F0aW9ucyBhbmQgZGVjaWRlIG9uIHRoZSBhcHByb3ByaWF0ZSBzZXR0aW5ncyBiYXNlZCBvbiB0aGUgc3lzdGVtJ3MgbmVlZHMsIHBlcmZvcm1hbmNlIHJlcXVpcmVtZW50cywgYW5kIHBvd2VyIHByb2ZpbGVzLiBJJ20gZ29pbmcgdG8gY2FyZWZ1bGx5IGFuYWx5emUgdGhlIGltcGFjdHMgb2YgZW5hYmxpbmcgb3IgZGlzYWJsaW5nIGl0LCBjb25zaWRlcmluZyB0aGUgc3BlY2lmaWMgYXJjaGl0ZWN0dXJlIGFuZCB3b3JrbG9hZHMgYXQgaGFuZC4gSSdsbCBuZWVkIHRvIGV4YW1pbmUgaG93IGl0IGludGVyYWN0cyB3aXRoIG90aGVyIHBvd2VyIG1hbmFnZW1lbnQgZmVhdHVyZXMgYW5kIGRldmljZSBkcml2ZXJzLiBUaGVuLCBJJ2xsIGRvY3VtZW50IG15IGZpbmRpbmdzIGFuZCBzZXQgdGhlIHJlc3VsdGluZyBjb25maWd1cmF0aW9uLCBtYWtpbmcgc3VyZSB0aGUgY2hhbmdlcyBhcmUganVzdGlmaWVkIGFuZCBwcm9wZXJseSB0ZXN0ZWQuIEknbGwgbmVlZCB0byBjb25zaWRlciB3aGV0aGVyIGRlZmF1bHQgdmFsdWVzIGFyZSBhcHByb3ByaWF0ZSwgb3Igd2hldGhlciB0aGlzIHNob3VsZCBiZSBhbHRlcmVkIGZvciBlYWNoIHNwZWNpZmljIG1hY2hpbmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjkzMzgsIk91dHB1dFRva2VucyI6MTU3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjNUMDA6NDU6NTAuMzE1NDY5ODZaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxODI3ODM3NzcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIktWTVwiLFxuICAgIFwiQ1BVX1BNXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwia3ZtX3Jpc2N2X2FpYV9lbmFibGVcIixcbiAgICBcImt2bV9yaXNjdl9haWFfZGlzYWJsZVwiLFxuICAgIFwia3ZtX3Jpc2N2X2NwdV9wbV9ub3RpZmllclwiLFxuICAgIFwia3ZtX3Jpc2N2X2NsZWFyX2Zvcm1lcl92Y3B1XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgUklTQy1WIEtWTSB0byBwcm9wZXJseSBoYW5kbGUgQ1BVIHBvd2VyIG1hbmFnZW1lbnQgKGlkbGUgbm9uLXJldGVudGlvbiBzdGF0ZXMpIGJ5IHNhdmluZyBhbmQgcmVzdG9yaW5nIEFJQSAoQWR2YW5jZWQgSW50ZXJydXB0IEFyY2hpdGVjdHVyZSkgYW5kIGh5cGVydmlzb3IgQ1NSIHN0YXRlLiBUaGlzIGlzIGNvcmUgS1ZNIGxvZ2ljIGFuZCBzaG91bGQgYmUgZnV6emVkIHRvIGVuc3VyZSBubyBzdGF0ZSBpcyBsb3N0IG9yIGNvcnJ1cHRlZCBkdXJpbmcgQ1BVIGlkbGUgdHJhbnNpdGlvbnMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiS1ZNXCIsXG4gICAgXCJDUFVfUE1cIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJrdm1fcmlzY3ZfYWlhX2VuYWJsZVwiLFxuICAgIFwia3ZtX3Jpc2N2X2FpYV9kaXNhYmxlXCIsXG4gICAgXCJrdm1fcmlzY3ZfY3B1X3BtX25vdGlmaWVyXCIsXG4gICAgXCJrdm1fcmlzY3ZfY2xlYXJfZm9ybWVyX3ZjcHVcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBSSVNDLVYgS1ZNIHRvIHByb3Blcmx5IGhhbmRsZSBDUFUgcG93ZXIgbWFuYWdlbWVudCAoaWRsZSBub24tcmV0ZW50aW9uIHN0YXRlcykgYnkgc2F2aW5nIGFuZCByZXN0b3JpbmcgQUlBIChBZHZhbmNlZCBJbnRlcnJ1cHQgQXJjaGl0ZWN0dXJlKSBhbmQgaHlwZXJ2aXNvciBDU1Igc3RhdGUuIFRoaXMgaXMgY29yZSBLVk0gbG9naWMgYW5kIHNob3VsZCBiZSBmdXp6ZWQgdG8gZW5zdXJlIG5vIHN0YXRlIGlzIGxvc3Qgb3IgY29ycnVwdGVkIGR1cmluZyBDUFUgaWRsZSB0cmFuc2l0aW9ucy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+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-workflow6klmv[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-23 00:24:17 +0000 UTC FinishedAt: 2026-07-23 00:45:52 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "axboe", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git", "commit_hash": "52738352a6f29279e15285fcb7b50241ef867e27", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "KVM", "CPU_PM" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "axboe", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git", "commit_hash": "52738352a6f29279e15285fcb7b50241ef867e27", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "KVM", "CPU_PM" ], "series_id": "2dcc5e11-902e-4314-8d54-78fba7668702" }, "track": "KASAN", "fuzz": { "focus": [ "kvm" ], "focus_symbols": [ "kvm_riscv_aia_enable", "kvm_riscv_aia_disable", "kvm_riscv_cpu_pm_notifier", "kvm_riscv_clear_former_vcpu" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIzIDAwOjQ1PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0tWTSYjMzQ7LAogICAgJiMzNDtDUFVfUE0mIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtrdm1fcmlzY3ZfYWlhX2VuYWJsZSYjMzQ7LAogICAgJiMzNDtrdm1fcmlzY3ZfYWlhX2Rpc2FibGUmIzM0OywKICAgICYjMzQ7a3ZtX3Jpc2N2X2NwdV9wbV9ub3RpZmllciYjMzQ7LAogICAgJiMzNDtrdm1fcmlzY3ZfY2xlYXJfZm9ybWVyX3ZjcHUmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgUklTQy1WIEtWTSB0byBwcm9wZXJseSBoYW5kbGUgQ1BVIHBvd2VyIG1hbmFnZW1lbnQgKGlkbGUgbm9uLXJldGVudGlvbiBzdGF0ZXMpIGJ5IHNhdmluZyBhbmQgcmVzdG9yaW5nIEFJQSAoQWR2YW5jZWQgSW50ZXJydXB0IEFyY2hpdGVjdHVyZSkgYW5kIGh5cGVydmlzb3IgQ1NSIHN0YXRlLiBUaGlzIGlzIGNvcmUgS1ZNIGxvZ2ljIGFuZCBzaG91bGQgYmUgZnV6emVkIHRvIGVuc3VyZSBubyBzdGF0ZSBpcyBsb3N0IG9yIGNvcnJ1cHRlZCBkdXJpbmcgQ1BVIGlkbGUgdHJhbnNpdGlvbnMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjMgMDA6NDU8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCBiYjgwODEzZmJlMzMzNDkwOWI1MTI3MTZlNWY4MmNkMGI1OTI5N2IwXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFRodSBKdWwgMjMgMDA6NDU6MjYgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvYXJjaC9yaXNjdi9pbmNsdWRlL2FzbS9rdm1fYWlhLmggYi9hcmNoL3Jpc2N2L2luY2x1ZGUvYXNtL2t2bV9haWEuaFxuaW5kZXggYzY3ZWM1YWMwYTE0NmIuLjdjMWMzMjUwNTk4ZmIwIDEwMDY0NFxuLS0tIGEvYXJjaC9yaXNjdi9pbmNsdWRlL2FzbS9rdm1fYWlhLmhcbiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gvcmlzY3YvaW5jbHVkZS9hc20va3ZtX2FpYS5oXG5AQCAtMTY1LDggJiM0MzsxNjUsMTkgQEAgaW50IGt2bV9yaXNjdl9haWFfYWxsb2NfaGdlaShpbnQgY3B1LCBzdHJ1Y3Qga3ZtX3ZjcHUgKm93bmVyLFxuIFx0XHRcdCAgICAgdm9pZCBfX2lvbWVtICoqaGdlaV92YSwgcGh5c19hZGRyX3QgKmhnZWlfcGEpO1xuIHZvaWQga3ZtX3Jpc2N2X2FpYV9mcmVlX2hnZWkoaW50IGNwdSwgaW50IGhnZWkpO1xuIFxuLXZvaWQga3ZtX3Jpc2N2X2FpYV9lbmFibGUodm9pZCk7XG4tdm9pZCBrdm1fcmlzY3ZfYWlhX2Rpc2FibGUodm9pZCk7XG4mIzQzOy8qKlxuJiM0MzsgKiBrdm1fcmlzY3ZfYWlhX2VuYWJsZSgpIC0gRW5hYmxlIEFJQSBzdXBwb3J0IG9uIGN1cnJlbnQgQ1BVXG4mIzQzOyAqIEBmdWxsX2NsZWFudXA6IHRydWUgPSBmdWxsIGhhcmR3YXJlIGluaXQgKENQVSBob3RwbHVnL21vZHVsZSBsb2FkKSxcbiYjNDM7ICogICAgICAgICAgICAgICAgZmFsc2UgPSBsaWdodHdlaWdodCBDU1IgcmVzdG9yZSAoQ1BVIG5vbi1yZXRlbnRpb24gaWRsZSByZXN1bWUpXG4mIzQzOyAqL1xuJiM0Mzt2b2lkIGt2bV9yaXNjdl9haWFfZW5hYmxlKGJvb2wgZnVsbF9jbGVhbnVwKTtcbiYjNDM7XG4mIzQzOy8qKlxuJiM0MzsgKiBrdm1fcmlzY3ZfYWlhX2Rpc2FibGUoKSAtIERpc2FibGUgQUlBIHN1cHBvcnQgb24gY3VycmVudCBDUFVcbiYjNDM7ICogQGZ1bGxfY2xlYW51cDogdHJ1ZSA9IGZ1bGwgaGFyZHdhcmUgY2xlYW51cCAoQ1BVIGhvdHBsdWcvbW9kdWxlIGV4aXQpLFxuJiM0MzsgKiAgICAgICAgICAgICAgICBmYWxzZSA9IGxpZ2h0d2VpZ2h0IENTUiBzYXZlIChDUFUgbm9uLXJldGVudGlvbiBpZGxlIGVudHJ5KVxuJiM0MzsgKi9cbiYjNDM7dm9pZCBrdm1fcmlzY3ZfYWlhX2Rpc2FibGUoYm9vbCBmdWxsX2NsZWFudXApO1xuIGludCBrdm1fcmlzY3ZfYWlhX2luaXQodm9pZCk7XG4gdm9pZCBrdm1fcmlzY3ZfYWlhX2V4aXQodm9pZCk7XG4gXG5kaWZmIC0tZ2l0IGEvYXJjaC9yaXNjdi9pbmNsdWRlL2FzbS9rdm1faG9zdC5oIGIvYXJjaC9yaXNjdi9pbmNsdWRlL2FzbS9rdm1faG9zdC5oXG5pbmRleCA2MDAxN2NlZWM5ZDJhZi4uODA4YjRlZTFiZDEwYWMgMTAwNjQ0XG4tLS0gYS9hcmNoL3Jpc2N2L2luY2x1ZGUvYXNtL2t2bV9ob3N0LmhcbiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gvcmlzY3YvaW5jbHVkZS9hc20va3ZtX2hvc3QuaFxuQEAgLTMxOSw2ICYjNDM7MzE5LDggQEAgYm9vbCBrdm1fcmlzY3ZfdmNwdV9zdG9wcGVkKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSk7XG4gXG4gdm9pZCBrdm1fcmlzY3ZfdmNwdV9yZWNvcmRfc3RlYWxfdGltZShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpO1xuIFxuJiM0Mzt2b2lkIGt2bV9yaXNjdl9jbGVhcl9mb3JtZXJfdmNwdSh2b2lkKTtcbiYjNDM7XG4gLyogRmxhZ3MgcmVwcmVzZW50aW5nIGltcGxlbWVudGF0aW9uIHNwZWNpZmljIGRldGFpbHMgKi9cbiBERUNMQVJFX1NUQVRJQ19LRVlfRkFMU0Uoa3ZtX3Jpc2N2X3Zzc3RhZ2VfdGxiX25vX2dwYSk7XG4gXG5kaWZmIC0tZ2l0IGEvYXJjaC9yaXNjdi9rdm0vYWlhLmMgYi9hcmNoL3Jpc2N2L2t2bS9haWEuY1xuaW5kZXggYmFmYjAwOWM1Y2U1NTkuLjRjZjM1MWY5MWM2NDNmIDEwMDY0NFxuLS0tIGEvYXJjaC9yaXNjdi9rdm0vYWlhLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gvcmlzY3Yva3ZtL2FpYS5jXG5AQCAtMjUsNiAmIzQzOzI1LDcgQEAgc3RydWN0IGFpYV9oZ2VpX2NvbnRyb2wge1xuIFx0dW5zaWduZWQgbG9uZyBmcmVlX2JpdG1hcDtcbiBcdHN0cnVjdCBrdm1fdmNwdSAqb3duZXJzW0JJVFNfUEVSX0xPTkddO1xuIFx0dW5zaWduZWQgaW50IG5yX2hnZWk7XG4mIzQzO1x0dW5zaWduZWQgbG9uZyBzYXZlZF92YWx1ZTtcbiB9O1xuIHN0YXRpYyBERUZJTkVfUEVSX0NQVShzdHJ1Y3QgYWlhX2hnZWlfY29udHJvbCwgYWlhX2hnZWkpO1xuIHN0YXRpYyBpbnQgaGdlaV9wYXJlbnRfaXJxO1xuQEAgLTUzMiw1MCAmIzQzOzUzMyw1OSBAQCBzdGF0aWMgdm9pZCBhaWFfaGdlaV9leGl0KHZvaWQpXG4gXHRmcmVlX3BlcmNwdV9pcnEoaGdlaV9wYXJlbnRfaXJxLCBcdTAwMjZhaWFfaGdlaSk7XG4gfVxuIFxuLXZvaWQga3ZtX3Jpc2N2X2FpYV9lbmFibGUodm9pZClcbiYjNDM7dm9pZCBrdm1fcmlzY3ZfYWlhX2VuYWJsZShib29sIGZ1bGxfY2xlYW51cClcbiB7XG4tXHRjb25zdCBzdHJ1Y3QgaW1zaWNfZ2xvYmFsX2NvbmZpZyAqZ2M7XG4tXHRjb25zdCBzdHJ1Y3QgaW1zaWNfbG9jYWxfY29uZmlnICpsYztcbiBcdHN0cnVjdCBhaWFfaGdlaV9jb250cm9sICpoZ2N0cmw7XG4gXHR1bnNpZ25lZCBsb25nIGZsYWdzO1xuLVx0aW50IGFpYV9ucl9oZ2VpO1xuIFxuIFx0aWYgKCFrdm1fcmlzY3ZfYWlhX2F2YWlsYWJsZSgpKVxuIFx0XHRyZXR1cm47XG4gXG4tXHRnYyA9IGltc2ljX2dldF9nbG9iYWxfY29uZmlnKCk7XG4tXHRsYyA9IChnYykgPyB0aGlzX2NwdV9wdHIoZ2MtXHUwMDNlbG9jYWwpIDogTlVMTDtcbiBcdGhnY3RybCA9IHRoaXNfY3B1X3B0cihcdTAwMjZhaWFfaGdlaSk7XG4gXG4tXHQvKiBGaWd1cmUtb3V0IG51bWJlciBvZiBiaXRzIGluIEhHRUlFICovXG4tXHRjc3Jfd3JpdGUoQ1NSX0hHRUlFLCAtMVVMKTtcbi1cdGhnY3RybC1cdTAwM2Vucl9oZ2VpID0gZmxzX2xvbmcoY3NyX3JlYWQoQ1NSX0hHRUlFKSk7XG4tXHRjc3Jfd3JpdGUoQ1NSX0hHRUlFLCAwKTtcbi1cdGlmIChoZ2N0cmwtXHUwMDNlbnJfaGdlaSlcbi1cdFx0aGdjdHJsLVx1MDAzZW5yX2hnZWktLTtcbiYjNDM7XHRpZiAoZnVsbF9jbGVhbnVwKSB7XG4mIzQzO1x0XHRjb25zdCBzdHJ1Y3QgaW1zaWNfZ2xvYmFsX2NvbmZpZyAqZ2M7XG4mIzQzO1x0XHRjb25zdCBzdHJ1Y3QgaW1zaWNfbG9jYWxfY29uZmlnICpsYztcbiYjNDM7XHRcdGludCBhaWFfbnJfaGdlaTtcbiBcbi1cdC8qXG4tXHQgKiBOdW1iZXIgb2YgdXNhYmxlIHBlci1IQVJUIEhHRUkgbGluZXMgc2hvdWxkIGJlIG1pbmltdW0gb2Zcbi1cdCAqIHBlci1IQVJUIElNU0lDIGd1ZXN0IGZpbGVzIGFuZCBudW1iZXIgb2YgYml0cyBpbiBIR0VJRS5cbi1cdCAqL1xuLVx0aWYgKGxjKVxuLVx0XHRoZ2N0cmwtXHUwMDNlbnJfaGdlaSA9IG1pbigodWxvbmcpaGdjdHJsLVx1MDAzZW5yX2hnZWksIGxjLVx1MDAzZW5yX2d1ZXN0X2ZpbGVzKTtcbi1cdGVsc2Vcbi1cdFx0aGdjdHJsLVx1MDAzZW5yX2hnZWkgPSAwO1xuJiM0MztcdFx0Z2MgPSBpbXNpY19nZXRfZ2xvYmFsX2NvbmZpZygpO1xuJiM0MztcdFx0bGMgPSAoZ2MpID8gdGhpc19jcHVfcHRyKGdjLVx1MDAzZWxvY2FsKSA6IE5VTEw7XG4gXG4tXHQvKiBVcGRhdGUgdGhlIG51bWJlciBvZiBJTVNJQyBndWVzdCBmaWxlcyBhY3Jvc3MgYWxsIEhBUlRzICovXG4tXHRhaWFfbnJfaGdlaSA9IGF0b21pY19yZWFkKFx1MDAyNmt2bV9yaXNjdl9haWFfbnJfaGdlaSk7XG4tXHRkbyB7XG4tXHRcdGlmIChhaWFfbnJfaGdlaSBcdTAwM2M9IGhnY3RybC1cdTAwM2Vucl9oZ2VpKVxuLVx0XHRcdGJyZWFrO1xuLVx0fSB3aGlsZSAoIWF0b21pY190cnlfY21weGNoZyhcdTAwMjZrdm1fcmlzY3ZfYWlhX25yX2hnZWksIFx1MDAyNmFpYV9ucl9oZ2VpLCBoZ2N0cmwtXHUwMDNlbnJfaGdlaSkpO1xuJiM0MztcdFx0LyogRmlndXJlLW91dCBudW1iZXIgb2YgYml0cyBpbiBIR0VJRSAqL1xuJiM0MztcdFx0Y3NyX3dyaXRlKENTUl9IR0VJRSwgLTFVTCk7XG4mIzQzO1x0XHRoZ2N0cmwtXHUwMDNlbnJfaGdlaSA9IGZsc19sb25nKGNzcl9yZWFkKENTUl9IR0VJRSkpO1xuJiM0MztcdFx0Y3NyX3dyaXRlKENTUl9IR0VJRSwgMCk7XG4mIzQzO1x0XHRpZiAoaGdjdHJsLVx1MDAzZW5yX2hnZWkpXG4mIzQzO1x0XHRcdGhnY3RybC1cdTAwM2Vucl9oZ2VpLS07XG4gXG4tXHRyYXdfc3Bpbl9sb2NrX2lycXNhdmUoXHUwMDI2aGdjdHJsLVx1MDAzZWxvY2ssIGZsYWdzKTtcbi1cdGlmICghaGdjdHJsLVx1MDAzZWZyZWVfYml0bWFwX2luaXRpYWxpemVkKSB7XG4tXHRcdGhnY3RybC1cdTAwM2VmcmVlX2JpdG1hcCA9IChoZ2N0cmwtXHUwMDNlbnJfaGdlaSkgPyBHRU5NQVNLX1VMTChoZ2N0cmwtXHUwMDNlbnJfaGdlaSwgMSkgOiAwO1xuLVx0XHRoZ2N0cmwtXHUwMDNlZnJlZV9iaXRtYXBfaW5pdGlhbGl6ZWQgPSB0cnVlO1xuJiM0MztcdFx0LypcbiYjNDM7XHRcdCAqIE51bWJlciBvZiB1c2FibGUgcGVyLUhBUlQgSEdFSSBsaW5lcyBzaG91bGQgYmUgbWluaW11bSBvZlxuJiM0MztcdFx0ICogcGVyLUhBUlQgSU1TSUMgZ3Vlc3QgZmlsZXMgYW5kIG51bWJlciBvZiBiaXRzIGluIEhHRUlFLlxuJiM0MztcdFx0ICovXG4mIzQzO1x0XHRpZiAobGMpXG4mIzQzO1x0XHRcdGhnY3RybC1cdTAwM2Vucl9oZ2VpID0gbWluKCh1bG9uZyloZ2N0cmwtXHUwMDNlbnJfaGdlaSwgbGMtXHUwMDNlbnJfZ3Vlc3RfZmlsZXMpO1xuJiM0MztcdFx0ZWxzZVxuJiM0MztcdFx0XHRoZ2N0cmwtXHUwMDNlbnJfaGdlaSA9IDA7XG4mIzQzO1xuJiM0MztcdFx0LyogVXBkYXRlIHRoZSBudW1iZXIgb2YgSU1TSUMgZ3Vlc3QgZmlsZXMgYWNyb3NzIGFsbCBIQVJUcyAqL1xuJiM0MztcdFx0YWlhX25yX2hnZWkgPSBhdG9taWNfcmVhZChcdTAwMjZrdm1fcmlzY3ZfYWlhX25yX2hnZWkpO1xuJiM0MztcdFx0ZG8ge1xuJiM0MztcdFx0XHRpZiAoYWlhX25yX2hnZWkgXHUwMDNjPSBoZ2N0cmwtXHUwMDNlbnJfaGdlaSlcbiYjNDM7XHRcdFx0XHRicmVhaztcbiYjNDM7XHRcdH0gd2hpbGUgKCFhdG9taWNfdHJ5X2NtcHhjaGcoXHUwMDI2a3ZtX3Jpc2N2X2FpYV9ucl9oZ2VpLCBcdTAwMjZhaWFfbnJfaGdlaSxcbiYjNDM7XHRcdFx0XHRcdCAgICAgaGdjdHJsLVx1MDAzZW5yX2hnZWkpKTtcbiYjNDM7XG4mIzQzO1x0XHRyYXdfc3Bpbl9sb2NrX2lycXNhdmUoXHUwMDI2aGdjdHJsLVx1MDAzZWxvY2ssIGZsYWdzKTtcbiYjNDM7XHRcdGlmICghaGdjdHJsLVx1MDAzZWZyZWVfYml0bWFwX2luaXRpYWxpemVkKSB7XG4mIzQzO1x0XHRcdGhnY3RybC1cdTAwM2VmcmVlX2JpdG1hcCA9IChoZ2N0cmwtXHUwMDNlbnJfaGdlaSkgP1xuJiM0MztcdFx0XHRcdFx0ICAgICAgR0VOTUFTS19VTEwoaGdjdHJsLVx1MDAzZW5yX2hnZWksIDEpIDpcbiYjNDM7XHRcdFx0XHRcdCAgICAgIDA7XG4mIzQzO1x0XHRcdGhnY3RybC1cdTAwM2VmcmVlX2JpdG1hcF9pbml0aWFsaXplZCA9IHRydWU7XG4mIzQzO1x0XHR9XG4mIzQzO1x0XHRyYXdfc3Bpbl91bmxvY2tfaXJxcmVzdG9yZShcdTAwMjZoZ2N0cmwtXHUwMDNlbG9jaywgZmxhZ3MpO1xuJiM0MztcdH0gZWxzZSB7XG4mIzQzO1x0XHRjc3Jfd3JpdGUoQ1NSX0hHRUlFLCBoZ2N0cmwtXHUwMDNlc2F2ZWRfdmFsdWUpO1xuIFx0fVxuLVx0cmF3X3NwaW5fdW5sb2NrX2lycXJlc3RvcmUoXHUwMDI2aGdjdHJsLVx1MDAzZWxvY2ssIGZsYWdzKTtcbiBcbiBcdGNzcl93cml0ZShDU1JfSFZJQ1RMLCBhaWFfaHZpY3RsX3ZhbHVlKGZhbHNlKSk7XG4gXHRjc3Jfd3JpdGUoQ1NSX0hWSVBSSU8xLCAweDApO1xuQEAgLTU4NywxNiAmIzQzOzU5NywxNyBAQCB2b2lkIGt2bV9yaXNjdl9haWFfZW5hYmxlKHZvaWQpXG4gXHRjc3Jfd3JpdGUoQ1NSX0hWSVBSSU8ySCwgMHgwKTtcbiAjZW5kaWZcbiBcbi1cdC8qIEVuYWJsZSBwZXItQ1BVIFNHRUkgaW50ZXJydXB0ICovXG4tXHRlbmFibGVfcGVyY3B1X2lycShoZ2VpX3BhcmVudF9pcnEsXG4tXHRcdFx0ICBpcnFfZ2V0X3RyaWdnZXJfdHlwZShoZ2VpX3BhcmVudF9pcnEpKTtcbiYjNDM7XHRpZiAoZnVsbF9jbGVhbnVwKVxuJiM0MztcdFx0ZW5hYmxlX3BlcmNwdV9pcnEoaGdlaV9wYXJlbnRfaXJxLFxuJiM0MztcdFx0XHRcdCAgaXJxX2dldF90cmlnZ2VyX3R5cGUoaGdlaV9wYXJlbnRfaXJxKSk7XG4gXHRjc3Jfc2V0KENTUl9ISUUsIEJJVChJUlFfU19HRVhUKSk7XG4mIzQzO1xuIFx0LyogRW5hYmxlIElSUSBmaWx0ZXJpbmcgZm9yIG92ZXJmbG93IGludGVycnVwdCBvbmx5IGlmIHNzY29mcG1mIGlzIHByZXNlbnQgKi9cbiBcdGlmIChfX3Jpc2N2X2lzYV9leHRlbnNpb25fYXZhaWxhYmxlKE5VTEwsIFJJU0NWX0lTQV9FWFRfU1NDT0ZQTUYpKVxuIFx0XHRjc3Jfc2V0KENTUl9IVklFTiwgQklUKElSUV9QTVVfT1ZGKSk7XG4gfVxuIFxuLXZvaWQga3ZtX3Jpc2N2X2FpYV9kaXNhYmxlKHZvaWQpXG4mIzQzO3ZvaWQga3ZtX3Jpc2N2X2FpYV9kaXNhYmxlKGJvb2wgZnVsbF9jbGVhbnVwKVxuIHtcbiBcdGludCBpO1xuIFx0dW5zaWduZWQgbG9uZyBmbGFncztcbkBAIC02MDksNDIgJiM0Mzs2MjAsNDkgQEAgdm9pZCBrdm1fcmlzY3ZfYWlhX2Rpc2FibGUodm9pZClcbiBcbiBcdGlmIChfX3Jpc2N2X2lzYV9leHRlbnNpb25fYXZhaWxhYmxlKE5VTEwsIFJJU0NWX0lTQV9FWFRfU1NDT0ZQTUYpKVxuIFx0XHRjc3JfY2xlYXIoQ1NSX0hWSUVOLCBCSVQoSVJRX1BNVV9PVkYpKTtcbi1cdC8qIERpc2FibGUgcGVyLUNQVSBTR0VJIGludGVycnVwdCAqL1xuLVx0Y3NyX2NsZWFyKENTUl9ISUUsIEJJVChJUlFfU19HRVhUKSk7XG4tXHRkaXNhYmxlX3BlcmNwdV9pcnEoaGdlaV9wYXJlbnRfaXJxKTtcbiBcbi1cdGNzcl93cml0ZShDU1JfSFZJQ1RMLCBhaWFfaHZpY3RsX3ZhbHVlKGZhbHNlKSk7XG4tXG4tXHRyYXdfc3Bpbl9sb2NrX2lycXNhdmUoXHUwMDI2aGdjdHJsLVx1MDAzZWxvY2ssIGZsYWdzKTtcbi1cbi1cdGZvciAoaSA9IDA7IGkgXHUwMDNjPSBoZ2N0cmwtXHUwMDNlbnJfaGdlaTsgaSYjNDM7JiM0MzspIHtcbi1cdFx0dmNwdSA9IGhnY3RybC1cdTAwM2Vvd25lcnNbaV07XG4tXHRcdGlmICghdmNwdSlcbi1cdFx0XHRjb250aW51ZTtcbiYjNDM7XHRpZiAoZnVsbF9jbGVhbnVwKSB7XG4mIzQzO1x0XHQvKiBEaXNhYmxlIHBlci1DUFUgU0dFSSBpbnRlcnJ1cHQgKi9cbiYjNDM7XHRcdGNzcl9jbGVhcihDU1JfSElFLCBCSVQoSVJRX1NfR0VYVCkpO1xuJiM0MztcdFx0ZGlzYWJsZV9wZXJjcHVfaXJxKGhnZWlfcGFyZW50X2lycSk7XG4mIzQzO1x0fVxuIFxuLVx0XHQvKlxuLVx0XHQgKiBXZSByZWxlYXNlIGhnY3RybC1cdTAwM2Vsb2NrIGJlZm9yZSBub3RpZnlpbmcgSU1TSUNcbi1cdFx0ICogc28gdGhhdCB3ZSBkb24mIzM5O3QgaGF2ZSBsb2NrIG9yZGVyaW5nIGlzc3Vlcy5cbi1cdFx0ICovXG4tXHRcdHJhd19zcGluX3VubG9ja19pcnFyZXN0b3JlKFx1MDAyNmhnY3RybC1cdTAwM2Vsb2NrLCBmbGFncyk7XG4mIzQzO1x0Y3NyX3dyaXRlKENTUl9IVklDVEwsIGFpYV9odmljdGxfdmFsdWUoZmFsc2UpKTtcbiBcbi1cdFx0LyogTm90aWZ5IElNU0lDICovXG4tXHRcdGt2bV9yaXNjdl92Y3B1X2FpYV9pbXNpY19yZWxlYXNlKHZjcHUpO1xuJiM0MztcdGlmIChmdWxsX2NsZWFudXApIHtcbiYjNDM7XHRcdHJhd19zcGluX2xvY2tfaXJxc2F2ZShcdTAwMjZoZ2N0cmwtXHUwMDNlbG9jaywgZmxhZ3MpO1xuIFxuLVx0XHQvKlxuLVx0XHQgKiBXYWtldXAgVkNQVSBpZiBpdCB3YXMgYmxvY2tlZCBzbyB0aGF0IGl0IGNhblxuLVx0XHQgKiBydW4gb24gb3RoZXIgSEFSVHNcbi1cdFx0ICovXG4tXHRcdGlmIChjc3JfcmVhZChDU1JfSEdFSUUpIFx1MDAyNiBCSVQoaSkpIHtcbi1cdFx0XHRjc3JfY2xlYXIoQ1NSX0hHRUlFLCBCSVQoaSkpO1xuLVx0XHRcdGt2bV92Y3B1X2tpY2sodmNwdSk7XG4mIzQzO1x0XHRmb3IgKGkgPSAwOyBpIFx1MDAzYz0gaGdjdHJsLVx1MDAzZW5yX2hnZWk7IGkmIzQzOyYjNDM7KSB7XG4mIzQzO1x0XHRcdHZjcHUgPSBoZ2N0cmwtXHUwMDNlb3duZXJzW2ldO1xuJiM0MztcdFx0XHRpZiAoIXZjcHUpXG4mIzQzO1x0XHRcdFx0Y29udGludWU7XG4mIzQzO1xuJiM0MztcdFx0XHQvKlxuJiM0MztcdFx0XHQgKiBXZSByZWxlYXNlIGhnY3RybC1cdTAwM2Vsb2NrIGJlZm9yZSBub3RpZnlpbmcgSU1TSUNcbiYjNDM7XHRcdFx0ICogc28gdGhhdCB3ZSBkb24mIzM5O3QgaGF2ZSBsb2NrIG9yZGVyaW5nIGlzc3Vlcy5cbiYjNDM7XHRcdFx0ICovXG4mIzQzO1x0XHRcdHJhd19zcGluX3VubG9ja19pcnFyZXN0b3JlKFx1MDAyNmhnY3RybC1cdTAwM2Vsb2NrLCBmbGFncyk7XG4mIzQzO1xuJiM0MztcdFx0XHQvKiBOb3RpZnkgSU1TSUMgKi9cbiYjNDM7XHRcdFx0a3ZtX3Jpc2N2X3ZjcHVfYWlhX2ltc2ljX3JlbGVhc2UodmNwdSk7XG4mIzQzO1xuJiM0MztcdFx0XHQvKlxuJiM0MztcdFx0XHQgKiBXYWtldXAgVkNQVSBpZiBpdCB3YXMgYmxvY2tlZCBzbyB0aGF0IGl0IGNhblxuJiM0MztcdFx0XHQgKiBydW4gb24gb3RoZXIgSEFSVHNcbiYjNDM7XHRcdFx0ICovXG4mIzQzO1x0XHRcdGlmIChjc3JfcmVhZChDU1JfSEdFSUUpIFx1MDAyNiBCSVQoaSkpIHtcbiYjNDM7XHRcdFx0XHRjc3JfY2xlYXIoQ1NSX0hHRUlFLCBCSVQoaSkpO1xuJiM0MztcdFx0XHRcdGt2bV92Y3B1X2tpY2sodmNwdSk7XG4mIzQzO1x0XHRcdH1cbiYjNDM7XG4mIzQzO1x0XHRcdHJhd19zcGluX2xvY2tfaXJxc2F2ZShcdTAwMjZoZ2N0cmwtXHUwMDNlbG9jaywgZmxhZ3MpO1xuIFx0XHR9XG4gXG4tXHRcdHJhd19zcGluX2xvY2tfaXJxc2F2ZShcdTAwMjZoZ2N0cmwtXHUwMDNlbG9jaywgZmxhZ3MpO1xuJiM0MztcdFx0cmF3X3NwaW5fdW5sb2NrX2lycXJlc3RvcmUoXHUwMDI2aGdjdHJsLVx1MDAzZWxvY2ssIGZsYWdzKTtcbiYjNDM7XHR9IGVsc2Uge1xuJiM0MztcdFx0aGdjdHJsLVx1MDAzZXNhdmVkX3ZhbHVlID0gY3NyX3JlYWQoQ1NSX0hHRUlFKTtcbiBcdH1cbiBcbi1cdHJhd19zcGluX3VubG9ja19pcnFyZXN0b3JlKFx1MDAyNmhnY3RybC1cdTAwM2Vsb2NrLCBmbGFncyk7XG4tXG4gXHRwdXRfY3B1X3B0cihcdTAwMjZhaWFfaGdlaSk7XG4gfVxuIFxuZGlmZiAtLWdpdCBhL2FyY2gvcmlzY3Yva3ZtL21haW4uYyBiL2FyY2gvcmlzY3Yva3ZtL21haW4uY1xuaW5kZXggMDkyNGM3NTEwMGEyZDAuLmI0OGJiZDE4NTVjMWUyIDEwMDY0NFxuLS0tIGEvYXJjaC9yaXNjdi9rdm0vbWFpbi5jXG4mIzQzOyYjNDM7JiM0MzsgYi9hcmNoL3Jpc2N2L2t2bS9tYWluLmNcbkBAIC0xMCw2ICYjNDM7MTAsNyBAQFxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L2Vyci5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvbW9kdWxlLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9rdm1faG9zdC5oXHUwMDNlXG4mIzQzOyNpbmNsdWRlIFx1MDAzY2xpbnV4L2NwdV9wbS5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjYXNtL2NwdWZlYXR1cmUuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2FzbS9rdm1fbW11LmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2Nhc20va3ZtX25hY2wuaFx1MDAzZVxuQEAgLTMzLDE0ICYjNDM7MzQsOSBAQCBsb25nIGt2bV9hcmNoX2Rldl9pb2N0bChzdHJ1Y3QgZmlsZSAqZmlscCxcbiBcdHJldHVybiAtRUlOVkFMO1xuIH1cbiBcbi1pbnQga3ZtX2FyY2hfZW5hYmxlX3ZpcnR1YWxpemF0aW9uX2NwdSh2b2lkKVxuJiM0MzsvKiBJbml0aWFsaXplIGh5cGVydmlzb3IgQ1NScyAtIGNhbGxlZCBkdXJpbmcgQ1BVIG9ubGluZSBhbmQgbm9uLXJldGVudGlvbiBpZGxlIHJlc3VtZSAqL1xuJiM0MztzdGF0aWMgdm9pZCBrdm1fcmlzY3ZfY3NyX2VuYWJsZSh2b2lkKVxuIHtcbi1cdGludCByYztcbi1cbi1cdHJjID0ga3ZtX3Jpc2N2X25hY2xfZW5hYmxlKCk7XG4tXHRpZiAocmMpXG4tXHRcdHJldHVybiByYztcbi1cbiBcdGNzcl93cml0ZShDU1JfSEVERUxFRywgMCk7XG4gXHRjc3Jfd3JpdGUoQ1NSX0hJREVMRUcsIDApO1xuIFxuQEAgLTQ4LDE2ICYjNDM7NDQsMTEgQEAgaW50IGt2bV9hcmNoX2VuYWJsZV92aXJ0dWFsaXphdGlvbl9jcHUodm9pZClcbiBcdGNzcl93cml0ZShDU1JfSENPVU5URVJFTiwgMHgwMik7XG4gXG4gXHRjc3Jfd3JpdGUoQ1NSX0hWSVAsIDApO1xuLVxuLVx0a3ZtX3Jpc2N2X2FpYV9lbmFibGUoKTtcbi1cbi1cdHJldHVybiAwO1xuIH1cbiBcbi12b2lkIGt2bV9hcmNoX2Rpc2FibGVfdmlydHVhbGl6YXRpb25fY3B1KHZvaWQpXG4mIzQzOy8qIENsZWFyIGh5cGVydmlzb3IgQ1NScyAtIGNhbGxlZCBkdXJpbmcgQ1BVIG9mZmxpbmUgYW5kIG5vbi1yZXRlbnRpb24gaWRsZSBlbnRyeSAqL1xuJiM0MztzdGF0aWMgdm9pZCBrdm1fcmlzY3ZfY3NyX2Rpc2FibGUodm9pZClcbiB7XG4tXHRrdm1fcmlzY3ZfYWlhX2Rpc2FibGUoKTtcbi1cbiBcdC8qXG4gXHQgKiBBZnRlciBjbGVhcmluZyB0aGUgaGlkZWxlZyBDU1IsIHRoZSBob3N0IGtlcm5lbCB3aWxsIHJlY2VpdmVcbiBcdCAqIHNwdXJpb3VzIGludGVycnVwdHMgaWYgaHZpcCBDU1IgaGFzIHBlbmRpbmcgaW50ZXJydXB0cyBhbmQgdGhlXG5AQCAtNjksOSAmIzQzOzYwLDUzIEBAIHZvaWQga3ZtX2FyY2hfZGlzYWJsZV92aXJ0dWFsaXphdGlvbl9jcHUodm9pZClcbiBcdGNzcl93cml0ZShDU1JfSEVERUxFRywgMCk7XG4gXHRjc3Jfd3JpdGUoQ1NSX0hJREVMRUcsIDApO1xuIFxuJiM0MztcdGt2bV9yaXNjdl9jbGVhcl9mb3JtZXJfdmNwdSgpO1xuJiM0Mzt9XG4mIzQzO1xuJiM0MztpbnQga3ZtX2FyY2hfZW5hYmxlX3ZpcnR1YWxpemF0aW9uX2NwdSh2b2lkKVxuJiM0Mzt7XG4mIzQzO1x0aW50IHJjO1xuJiM0MztcbiYjNDM7XHRyYyA9IGt2bV9yaXNjdl9uYWNsX2VuYWJsZSgpO1xuJiM0MztcdGlmIChyYylcbiYjNDM7XHRcdHJldHVybiByYztcbiYjNDM7XG4mIzQzO1x0a3ZtX3Jpc2N2X2Nzcl9lbmFibGUoKTtcbiYjNDM7XHRrdm1fcmlzY3ZfYWlhX2VuYWJsZSh0cnVlKTtcbiYjNDM7XG4mIzQzO1x0cmV0dXJuIDA7XG4mIzQzO31cbiYjNDM7XG4mIzQzO3ZvaWQga3ZtX2FyY2hfZGlzYWJsZV92aXJ0dWFsaXphdGlvbl9jcHUodm9pZClcbiYjNDM7e1xuJiM0MztcdGt2bV9yaXNjdl9haWFfZGlzYWJsZSh0cnVlKTtcbiYjNDM7XHRrdm1fcmlzY3ZfY3NyX2Rpc2FibGUoKTtcbiBcdGt2bV9yaXNjdl9uYWNsX2Rpc2FibGUoKTtcbiB9XG4gXG4mIzQzO3N0YXRpYyBpbnQga3ZtX3Jpc2N2X2NwdV9wbV9ub3RpZmllcihzdHJ1Y3Qgbm90aWZpZXJfYmxvY2sgKnNlbGYsIHVuc2lnbmVkIGxvbmcgY21kLCB2b2lkICp2KVxuJiM0Mzt7XG4mIzQzO1x0c3dpdGNoIChjbWQpIHtcbiYjNDM7XHRjYXNlIENQVV9QTV9FWElUOlxuJiM0MztcdGNhc2UgQ1BVX1BNX0VOVEVSX0ZBSUxFRDpcbiYjNDM7XHRcdGt2bV9yaXNjdl9jc3JfZW5hYmxlKCk7XG4mIzQzO1x0XHRrdm1fcmlzY3ZfYWlhX2VuYWJsZShmYWxzZSk7XG4mIzQzO1x0XHRyZXR1cm4gTk9USUZZX09LO1xuJiM0MztcdGNhc2UgQ1BVX1BNX0VOVEVSOlxuJiM0MztcdFx0a3ZtX3Jpc2N2X2FpYV9kaXNhYmxlKGZhbHNlKTtcbiYjNDM7XHRcdGt2bV9yaXNjdl9jc3JfZGlzYWJsZSgpO1xuJiM0MztcdFx0cmV0dXJuIE5PVElGWV9PSztcbiYjNDM7XHRkZWZhdWx0OlxuJiM0MztcdFx0YnJlYWs7XG4mIzQzO1x0fVxuJiM0MztcbiYjNDM7XHRyZXR1cm4gTk9USUZZX0RPTkU7XG4mIzQzO31cbiYjNDM7XG4mIzQzO3N0YXRpYyBzdHJ1Y3Qgbm90aWZpZXJfYmxvY2sga3ZtX3Jpc2N2X2NwdV9wbV9uYiA9IHtcbiYjNDM7XHQubm90aWZpZXJfY2FsbCA9IGt2bV9yaXNjdl9jcHVfcG1fbm90aWZpZXIsXG4mIzQzO307XG4mIzQzO1xuIHN0YXRpYyB2b2lkIGt2bV9yaXNjdl90ZWFyZG93bih2b2lkKVxuIHtcbiBcdGt2bV9yaXNjdl9haWFfZXhpdCgpO1xuQEAgLTE3MiwyMiAmIzQzOzIwNyw0MCBAQCBzdGF0aWMgaW50IF9faW5pdCByaXNjdl9rdm1faW5pdCh2b2lkKVxuIFxuIFx0a3ZtX3JlZ2lzdGVyX3BlcmZfY2FsbGJhY2tzKCk7XG4gXG4tXHRyYyA9IGt2bV9pbml0KHNpemVvZihzdHJ1Y3Qga3ZtX3ZjcHUpLCAwLCBUSElTX01PRFVMRSk7XG4tXHRpZiAocmMpIHtcbi1cdFx0a3ZtX3Jpc2N2X3RlYXJkb3duKCk7XG4tXHRcdHJldHVybiByYztcbiYjNDM7XHQvKiBSZWdpc3RlciBDUFUgUE0gbm90aWZpZXIgZm9yIENQVSBpZGxlIG5vbi1yZXRlbnRpb24gc3RhdGVzICovXG4mIzQzO1x0aWYgKElTX0VOQUJMRUQoQ09ORklHX0NQVV9QTSkpIHtcbiYjNDM7XHRcdHJjID0gY3B1X3BtX3JlZ2lzdGVyX25vdGlmaWVyKFx1MDAyNmt2bV9yaXNjdl9jcHVfcG1fbmIpO1xuJiM0MztcdFx0aWYgKHJjKSB7XG4mIzQzO1x0XHRcdGt2bV9lcnIoXCYjMzQ7RmFpbGVkIHRvIHJlZ2lzdGVyIENQVSBQTSBub3RpZmllcjogJWRcXG5cJiMzNDssIHJjKTtcbiYjNDM7XHRcdFx0Z290byBlcnJfdGVhcmRvd247XG4mIzQzO1x0XHR9XG4gXHR9XG4gXG4mIzQzO1x0cmMgPSBrdm1faW5pdChzaXplb2Yoc3RydWN0IGt2bV92Y3B1KSwgMCwgVEhJU19NT0RVTEUpO1xuJiM0MztcdGlmIChyYylcbiYjNDM7XHRcdGdvdG8gZXJyX3VucmVnaXN0ZXJfY3B1X3BtO1xuJiM0MztcbiBcdGlmIChrdm1fcmlzY3ZfYWlhX2F2YWlsYWJsZSgpKVxuIFx0XHRrdm1faW5mbyhcJiMzNDtBSUEgYXZhaWxhYmxlIHdpdGggJWQgZ3Vlc3QgZXh0ZXJuYWwgaW50ZXJydXB0c1xcblwmIzM0OyxcbiBcdFx0XHQgYXRvbWljX3JlYWQoXHUwMDI2a3ZtX3Jpc2N2X2FpYV9ucl9oZ2VpKSk7XG4gXG4gXHRyZXR1cm4gMDtcbiYjNDM7XG4mIzQzO2Vycl91bnJlZ2lzdGVyX2NwdV9wbTpcbiYjNDM7XHRpZiAoSVNfRU5BQkxFRChDT05GSUdfQ1BVX1BNKSlcbiYjNDM7XHRcdGNwdV9wbV91bnJlZ2lzdGVyX25vdGlmaWVyKFx1MDAyNmt2bV9yaXNjdl9jcHVfcG1fbmIpO1xuJiM0MztlcnJfdGVhcmRvd246XG4mIzQzO1x0a3ZtX3Jpc2N2X3RlYXJkb3duKCk7XG4mIzQzO1x0cmV0dXJuIHJjO1xuIH1cbiBtb2R1bGVfaW5pdChyaXNjdl9rdm1faW5pdCk7XG4gXG4gc3RhdGljIHZvaWQgX19leGl0IHJpc2N2X2t2bV9leGl0KHZvaWQpXG4ge1xuJiM0MztcdC8qIFVucmVnaXN0ZXIgQ1BVIFBNIG5vdGlmaWVyICovXG4mIzQzO1x0aWYgKElTX0VOQUJMRUQoQ09ORklHX0NQVV9QTSkpXG4mIzQzO1x0XHRjcHVfcG1fdW5yZWdpc3Rlcl9ub3RpZmllcihcdTAwMjZrdm1fcmlzY3ZfY3B1X3BtX25iKTtcbiYjNDM7XG4gXHRrdm1fZXhpdCgpO1xuIFxuIFx0a3ZtX3Jpc2N2X3RlYXJkb3duKCk7XG5kaWZmIC0tZ2l0IGEvYXJjaC9yaXNjdi9rdm0vdmNwdS5jIGIvYXJjaC9yaXNjdi9rdm0vdmNwdS5jXG5pbmRleCBjZjZlMjMxZTc2ZTI1NC4uZTQ4MzM4ZjkwN2Y0ODggMTAwNjQ0XG4tLS0gYS9hcmNoL3Jpc2N2L2t2bS92Y3B1LmNcbiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gvcmlzY3Yva3ZtL3ZjcHUuY1xuQEAgLTI2LDYgJiM0MzsyNiwxNyBAQFxuIFxuIHN0YXRpYyBERUZJTkVfUEVSX0NQVShzdHJ1Y3Qga3ZtX3ZjcHUgKiwga3ZtX2Zvcm1lcl92Y3B1KTtcbiBcbiYjNDM7dm9pZCBrdm1fcmlzY3ZfY2xlYXJfZm9ybWVyX3ZjcHUodm9pZClcbiYjNDM7e1xuJiM0MztcdC8qXG4mIzQzO1x0ICogQ2xlYXIgdGhlIHBlci1DUFUgZm9ybWVyIFZDUFUgcG9pbnRlciBiZWNhdXNlIGh5cGVydmlzb3IgQ1NSIHN0YXRlXG4mIzQzO1x0ICogd2lsbCBiZSBsb3N0LiBUaGlzIGVuc3VyZXMgdGhhdCB0aGUgbmV4dCBWQ1BVIGVudHJ5IHdpbGwgcHJvcGVybHlcbiYjNDM7XHQgKiByZXN0b3JlIGFsbCBDU1JzIGluc3RlYWQgb2YgaW5jb3JyZWN0bHkgc2tpcHBpbmcgQ1NSIHJlc3RvcmF0aW9uXG4mIzQzO1x0ICogdmlhIHRoZSBmYXN0LXBhdGggb3B0aW1pemF0aW9uLlxuJiM0MztcdCAqL1xuJiM0MztcdF9fdGhpc19jcHVfd3JpdGUoa3ZtX2Zvcm1lcl92Y3B1LCBOVUxMKTtcbiYjNDM7fVxuJiM0MztcbiBjb25zdCBzdHJ1Y3Qga3ZtX3N0YXRzX2Rlc2Mga3ZtX3ZjcHVfc3RhdHNfZGVzY1tdID0ge1xuIFx0S1ZNX0dFTkVSSUNfVkNQVV9TVEFUUygpLFxuIFx0U1RBVFNfREVTQ19DT1VOVEVSKFZDUFUsIGVjYWxsX2V4aXRfc3RhdCksXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjMgMDA6NDU8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0tWTSYjMzQ7LAogICAgJiMzNDtDUFVfUE0mIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtrdm1fcmlzY3ZfYWlhX2VuYWJsZSYjMzQ7LAogICAgJiMzNDtrdm1fcmlzY3ZfYWlhX2Rpc2FibGUmIzM0OywKICAgICYjMzQ7a3ZtX3Jpc2N2X2NwdV9wbV9ub3RpZmllciYjMzQ7LAogICAgJiMzNDtrdm1fcmlzY3ZfY2xlYXJfZm9ybWVyX3ZjcHUmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgUklTQy1WIEtWTSB0byBwcm9wZXJseSBoYW5kbGUgQ1BVIHBvd2VyIG1hbmFnZW1lbnQgKGlkbGUgbm9uLXJldGVudGlvbiBzdGF0ZXMpIGJ5IHNhdmluZyBhbmQgcmVzdG9yaW5nIEFJQSAoQWR2YW5jZWQgSW50ZXJydXB0IEFyY2hpdGVjdHVyZSkgYW5kIGh5cGVydmlzb3IgQ1NSIHN0YXRlLiBUaGlzIGlzIGNvcmUgS1ZNIGxvZ2ljIGFuZCBzaG91bGQgYmUgZnV6emVkIHRvIGVuc3VyZSBubyBzdGF0ZSBpcyBsb3N0IG9yIGNvcnJ1cHRlZCBkdXJpbmcgQ1BVIGlkbGUgdHJhbnNpdGlvbnMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0CiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSwKICAgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IGJiODA4MTNmYmUzMzM0OTA5YjUxMjcxNmU1ZjgyY2QwYjU5Mjk3YjAKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgVGh1IEp1bCAyMyAwMDo0NToyNiAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2FyY2gvcmlzY3YvaW5jbHVkZS9hc20va3ZtX2FpYS5oIGIvYXJjaC9yaXNjdi9pbmNsdWRlL2FzbS9rdm1fYWlhLmgKaW5kZXggYzY3ZWM1YWMwYTE0NmIuLjdjMWMzMjUwNTk4ZmIwIDEwMDY0NAotLS0gYS9hcmNoL3Jpc2N2L2luY2x1ZGUvYXNtL2t2bV9haWEuaAomIzQzOyYjNDM7JiM0MzsgYi9hcmNoL3Jpc2N2L2luY2x1ZGUvYXNtL2t2bV9haWEuaApAQCAtMTY1LDggJiM0MzsxNjUsMTkgQEAgaW50IGt2bV9yaXNjdl9haWFfYWxsb2NfaGdlaShpbnQgY3B1LCBzdHJ1Y3Qga3ZtX3ZjcHUgKm93bmVyLAogCQkJICAgICB2b2lkIF9faW9tZW0gKipoZ2VpX3ZhLCBwaHlzX2FkZHJfdCAqaGdlaV9wYSk7CiB2b2lkIGt2bV9yaXNjdl9haWFfZnJlZV9oZ2VpKGludCBjcHUsIGludCBoZ2VpKTsKIAotdm9pZCBrdm1fcmlzY3ZfYWlhX2VuYWJsZSh2b2lkKTsKLXZvaWQga3ZtX3Jpc2N2X2FpYV9kaXNhYmxlKHZvaWQpOwomIzQzOy8qKgomIzQzOyAqIGt2bV9yaXNjdl9haWFfZW5hYmxlKCkgLSBFbmFibGUgQUlBIHN1cHBvcnQgb24gY3VycmVudCBDUFUKJiM0MzsgKiBAZnVsbF9jbGVhbnVwOiB0cnVlID0gZnVsbCBoYXJkd2FyZSBpbml0IChDUFUgaG90cGx1Zy9tb2R1bGUgbG9hZCksCiYjNDM7ICogICAgICAgICAgICAgICAgZmFsc2UgPSBsaWdodHdlaWdodCBDU1IgcmVzdG9yZSAoQ1BVIG5vbi1yZXRlbnRpb24gaWRsZSByZXN1bWUpCiYjNDM7ICovCiYjNDM7dm9pZCBrdm1fcmlzY3ZfYWlhX2VuYWJsZShib29sIGZ1bGxfY2xlYW51cCk7CiYjNDM7CiYjNDM7LyoqCiYjNDM7ICoga3ZtX3Jpc2N2X2FpYV9kaXNhYmxlKCkgLSBEaXNhYmxlIEFJQSBzdXBwb3J0IG9uIGN1cnJlbnQgQ1BVCiYjNDM7ICogQGZ1bGxfY2xlYW51cDogdHJ1ZSA9IGZ1bGwgaGFyZHdhcmUgY2xlYW51cCAoQ1BVIGhvdHBsdWcvbW9kdWxlIGV4aXQpLAomIzQzOyAqICAgICAgICAgICAgICAgIGZhbHNlID0gbGlnaHR3ZWlnaHQgQ1NSIHNhdmUgKENQVSBub24tcmV0ZW50aW9uIGlkbGUgZW50cnkpCiYjNDM7ICovCiYjNDM7dm9pZCBrdm1fcmlzY3ZfYWlhX2Rpc2FibGUoYm9vbCBmdWxsX2NsZWFudXApOwogaW50IGt2bV9yaXNjdl9haWFfaW5pdCh2b2lkKTsKIHZvaWQga3ZtX3Jpc2N2X2FpYV9leGl0KHZvaWQpOwogCmRpZmYgLS1naXQgYS9hcmNoL3Jpc2N2L2luY2x1ZGUvYXNtL2t2bV9ob3N0LmggYi9hcmNoL3Jpc2N2L2luY2x1ZGUvYXNtL2t2bV9ob3N0LmgKaW5kZXggNjAwMTdjZWVjOWQyYWYuLjgwOGI0ZWUxYmQxMGFjIDEwMDY0NAotLS0gYS9hcmNoL3Jpc2N2L2luY2x1ZGUvYXNtL2t2bV9ob3N0LmgKJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC9yaXNjdi9pbmNsdWRlL2FzbS9rdm1faG9zdC5oCkBAIC0zMTksNiAmIzQzOzMxOSw4IEBAIGJvb2wga3ZtX3Jpc2N2X3ZjcHVfc3RvcHBlZChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpOwogCiB2b2lkIGt2bV9yaXNjdl92Y3B1X3JlY29yZF9zdGVhbF90aW1lKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSk7CiAKJiM0Mzt2b2lkIGt2bV9yaXNjdl9jbGVhcl9mb3JtZXJfdmNwdSh2b2lkKTsKJiM0MzsKIC8qIEZsYWdzIHJlcHJlc2VudGluZyBpbXBsZW1lbnRhdGlvbiBzcGVjaWZpYyBkZXRhaWxzICovCiBERUNMQVJFX1NUQVRJQ19LRVlfRkFMU0Uoa3ZtX3Jpc2N2X3Zzc3RhZ2VfdGxiX25vX2dwYSk7CiAKZGlmZiAtLWdpdCBhL2FyY2gvcmlzY3Yva3ZtL2FpYS5jIGIvYXJjaC9yaXNjdi9rdm0vYWlhLmMKaW5kZXggYmFmYjAwOWM1Y2U1NTkuLjRjZjM1MWY5MWM2NDNmIDEwMDY0NAotLS0gYS9hcmNoL3Jpc2N2L2t2bS9haWEuYwomIzQzOyYjNDM7JiM0MzsgYi9hcmNoL3Jpc2N2L2t2bS9haWEuYwpAQCAtMjUsNiAmIzQzOzI1LDcgQEAgc3RydWN0IGFpYV9oZ2VpX2NvbnRyb2wgewogCXVuc2lnbmVkIGxvbmcgZnJlZV9iaXRtYXA7CiAJc3RydWN0IGt2bV92Y3B1ICpvd25lcnNbQklUU19QRVJfTE9OR107CiAJdW5zaWduZWQgaW50IG5yX2hnZWk7CiYjNDM7CXVuc2lnbmVkIGxvbmcgc2F2ZWRfdmFsdWU7CiB9Owogc3RhdGljIERFRklORV9QRVJfQ1BVKHN0cnVjdCBhaWFfaGdlaV9jb250cm9sLCBhaWFfaGdlaSk7CiBzdGF0aWMgaW50IGhnZWlfcGFyZW50X2lycTsKQEAgLTUzMiw1MCAmIzQzOzUzMyw1OSBAQCBzdGF0aWMgdm9pZCBhaWFfaGdlaV9leGl0KHZvaWQpCiAJZnJlZV9wZXJjcHVfaXJxKGhnZWlfcGFyZW50X2lycSwgJmFtcDthaWFfaGdlaSk7CiB9CiAKLXZvaWQga3ZtX3Jpc2N2X2FpYV9lbmFibGUodm9pZCkKJiM0Mzt2b2lkIGt2bV9yaXNjdl9haWFfZW5hYmxlKGJvb2wgZnVsbF9jbGVhbnVwKQogewotCWNvbnN0IHN0cnVjdCBpbXNpY19nbG9iYWxfY29uZmlnICpnYzsKLQljb25zdCBzdHJ1Y3QgaW1zaWNfbG9jYWxfY29uZmlnICpsYzsKIAlzdHJ1Y3QgYWlhX2hnZWlfY29udHJvbCAqaGdjdHJsOwogCXVuc2lnbmVkIGxvbmcgZmxhZ3M7Ci0JaW50IGFpYV9ucl9oZ2VpOwogCiAJaWYgKCFrdm1fcmlzY3ZfYWlhX2F2YWlsYWJsZSgpKQogCQlyZXR1cm47CiAKLQlnYyA9IGltc2ljX2dldF9nbG9iYWxfY29uZmlnKCk7Ci0JbGMgPSAoZ2MpID8gdGhpc19jcHVfcHRyKGdjLSZndDtsb2NhbCkgOiBOVUxMOwogCWhnY3RybCA9IHRoaXNfY3B1X3B0cigmYW1wO2FpYV9oZ2VpKTsKIAotCS8qIEZpZ3VyZS1vdXQgbnVtYmVyIG9mIGJpdHMgaW4gSEdFSUUgKi8KLQljc3Jfd3JpdGUoQ1NSX0hHRUlFLCAtMVVMKTsKLQloZ2N0cmwtJmd0O25yX2hnZWkgPSBmbHNfbG9uZyhjc3JfcmVhZChDU1JfSEdFSUUpKTsKLQljc3Jfd3JpdGUoQ1NSX0hHRUlFLCAwKTsKLQlpZiAoaGdjdHJsLSZndDtucl9oZ2VpKQotCQloZ2N0cmwtJmd0O25yX2hnZWktLTsKJiM0MzsJaWYgKGZ1bGxfY2xlYW51cCkgewomIzQzOwkJY29uc3Qgc3RydWN0IGltc2ljX2dsb2JhbF9jb25maWcgKmdjOwomIzQzOwkJY29uc3Qgc3RydWN0IGltc2ljX2xvY2FsX2NvbmZpZyAqbGM7CiYjNDM7CQlpbnQgYWlhX25yX2hnZWk7CiAKLQkvKgotCSAqIE51bWJlciBvZiB1c2FibGUgcGVyLUhBUlQgSEdFSSBsaW5lcyBzaG91bGQgYmUgbWluaW11bSBvZgotCSAqIHBlci1IQVJUIElNU0lDIGd1ZXN0IGZpbGVzIGFuZCBudW1iZXIgb2YgYml0cyBpbiBIR0VJRS4KLQkgKi8KLQlpZiAobGMpCi0JCWhnY3RybC0mZ3Q7bnJfaGdlaSA9IG1pbigodWxvbmcpaGdjdHJsLSZndDtucl9oZ2VpLCBsYy0mZ3Q7bnJfZ3Vlc3RfZmlsZXMpOwotCWVsc2UKLQkJaGdjdHJsLSZndDtucl9oZ2VpID0gMDsKJiM0MzsJCWdjID0gaW1zaWNfZ2V0X2dsb2JhbF9jb25maWcoKTsKJiM0MzsJCWxjID0gKGdjKSA/IHRoaXNfY3B1X3B0cihnYy0mZ3Q7bG9jYWwpIDogTlVMTDsKIAotCS8qIFVwZGF0ZSB0aGUgbnVtYmVyIG9mIElNU0lDIGd1ZXN0IGZpbGVzIGFjcm9zcyBhbGwgSEFSVHMgKi8KLQlhaWFfbnJfaGdlaSA9IGF0b21pY19yZWFkKCZhbXA7a3ZtX3Jpc2N2X2FpYV9ucl9oZ2VpKTsKLQlkbyB7Ci0JCWlmIChhaWFfbnJfaGdlaSAmbHQ7PSBoZ2N0cmwtJmd0O25yX2hnZWkpCi0JCQlicmVhazsKLQl9IHdoaWxlICghYXRvbWljX3RyeV9jbXB4Y2hnKCZhbXA7a3ZtX3Jpc2N2X2FpYV9ucl9oZ2VpLCAmYW1wO2FpYV9ucl9oZ2VpLCBoZ2N0cmwtJmd0O25yX2hnZWkpKTsKJiM0MzsJCS8qIEZpZ3VyZS1vdXQgbnVtYmVyIG9mIGJpdHMgaW4gSEdFSUUgKi8KJiM0MzsJCWNzcl93cml0ZShDU1JfSEdFSUUsIC0xVUwpOwomIzQzOwkJaGdjdHJsLSZndDtucl9oZ2VpID0gZmxzX2xvbmcoY3NyX3JlYWQoQ1NSX0hHRUlFKSk7CiYjNDM7CQljc3Jfd3JpdGUoQ1NSX0hHRUlFLCAwKTsKJiM0MzsJCWlmIChoZ2N0cmwtJmd0O25yX2hnZWkpCiYjNDM7CQkJaGdjdHJsLSZndDtucl9oZ2VpLS07CiAKLQlyYXdfc3Bpbl9sb2NrX2lycXNhdmUoJmFtcDtoZ2N0cmwtJmd0O2xvY2ssIGZsYWdzKTsKLQlpZiAoIWhnY3RybC0mZ3Q7ZnJlZV9iaXRtYXBfaW5pdGlhbGl6ZWQpIHsKLQkJaGdjdHJsLSZndDtmcmVlX2JpdG1hcCA9IChoZ2N0cmwtJmd0O25yX2hnZWkpID8gR0VOTUFTS19VTEwoaGdjdHJsLSZndDtucl9oZ2VpLCAxKSA6IDA7Ci0JCWhnY3RybC0mZ3Q7ZnJlZV9iaXRtYXBfaW5pdGlhbGl6ZWQgPSB0cnVlOwomIzQzOwkJLyoKJiM0MzsJCSAqIE51bWJlciBvZiB1c2FibGUgcGVyLUhBUlQgSEdFSSBsaW5lcyBzaG91bGQgYmUgbWluaW11bSBvZgomIzQzOwkJICogcGVyLUhBUlQgSU1TSUMgZ3Vlc3QgZmlsZXMgYW5kIG51bWJlciBvZiBiaXRzIGluIEhHRUlFLgomIzQzOwkJICovCiYjNDM7CQlpZiAobGMpCiYjNDM7CQkJaGdjdHJsLSZndDtucl9oZ2VpID0gbWluKCh1bG9uZyloZ2N0cmwtJmd0O25yX2hnZWksIGxjLSZndDtucl9ndWVzdF9maWxlcyk7CiYjNDM7CQllbHNlCiYjNDM7CQkJaGdjdHJsLSZndDtucl9oZ2VpID0gMDsKJiM0MzsKJiM0MzsJCS8qIFVwZGF0ZSB0aGUgbnVtYmVyIG9mIElNU0lDIGd1ZXN0IGZpbGVzIGFjcm9zcyBhbGwgSEFSVHMgKi8KJiM0MzsJCWFpYV9ucl9oZ2VpID0gYXRvbWljX3JlYWQoJmFtcDtrdm1fcmlzY3ZfYWlhX25yX2hnZWkpOwomIzQzOwkJZG8gewomIzQzOwkJCWlmIChhaWFfbnJfaGdlaSAmbHQ7PSBoZ2N0cmwtJmd0O25yX2hnZWkpCiYjNDM7CQkJCWJyZWFrOwomIzQzOwkJfSB3aGlsZSAoIWF0b21pY190cnlfY21weGNoZygmYW1wO2t2bV9yaXNjdl9haWFfbnJfaGdlaSwgJmFtcDthaWFfbnJfaGdlaSwKJiM0MzsJCQkJCSAgICAgaGdjdHJsLSZndDtucl9oZ2VpKSk7CiYjNDM7CiYjNDM7CQlyYXdfc3Bpbl9sb2NrX2lycXNhdmUoJmFtcDtoZ2N0cmwtJmd0O2xvY2ssIGZsYWdzKTsKJiM0MzsJCWlmICghaGdjdHJsLSZndDtmcmVlX2JpdG1hcF9pbml0aWFsaXplZCkgewomIzQzOwkJCWhnY3RybC0mZ3Q7ZnJlZV9iaXRtYXAgPSAoaGdjdHJsLSZndDtucl9oZ2VpKSA/CiYjNDM7CQkJCQkgICAgICBHRU5NQVNLX1VMTChoZ2N0cmwtJmd0O25yX2hnZWksIDEpIDoKJiM0MzsJCQkJCSAgICAgIDA7CiYjNDM7CQkJaGdjdHJsLSZndDtmcmVlX2JpdG1hcF9pbml0aWFsaXplZCA9IHRydWU7CiYjNDM7CQl9CiYjNDM7CQlyYXdfc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmYW1wO2hnY3RybC0mZ3Q7bG9jaywgZmxhZ3MpOwomIzQzOwl9IGVsc2UgewomIzQzOwkJY3NyX3dyaXRlKENTUl9IR0VJRSwgaGdjdHJsLSZndDtzYXZlZF92YWx1ZSk7CiAJfQotCXJhd19zcGluX3VubG9ja19pcnFyZXN0b3JlKCZhbXA7aGdjdHJsLSZndDtsb2NrLCBmbGFncyk7CiAKIAljc3Jfd3JpdGUoQ1NSX0hWSUNUTCwgYWlhX2h2aWN0bF92YWx1ZShmYWxzZSkpOwogCWNzcl93cml0ZShDU1JfSFZJUFJJTzEsIDB4MCk7CkBAIC01ODcsMTYgJiM0Mzs1OTcsMTcgQEAgdm9pZCBrdm1fcmlzY3ZfYWlhX2VuYWJsZSh2b2lkKQogCWNzcl93cml0ZShDU1JfSFZJUFJJTzJILCAweDApOwogI2VuZGlmCiAKLQkvKiBFbmFibGUgcGVyLUNQVSBTR0VJIGludGVycnVwdCAqLwotCWVuYWJsZV9wZXJjcHVfaXJxKGhnZWlfcGFyZW50X2lycSwKLQkJCSAgaXJxX2dldF90cmlnZ2VyX3R5cGUoaGdlaV9wYXJlbnRfaXJxKSk7CiYjNDM7CWlmIChmdWxsX2NsZWFudXApCiYjNDM7CQllbmFibGVfcGVyY3B1X2lycShoZ2VpX3BhcmVudF9pcnEsCiYjNDM7CQkJCSAgaXJxX2dldF90cmlnZ2VyX3R5cGUoaGdlaV9wYXJlbnRfaXJxKSk7CiAJY3NyX3NldChDU1JfSElFLCBCSVQoSVJRX1NfR0VYVCkpOwomIzQzOwogCS8qIEVuYWJsZSBJUlEgZmlsdGVyaW5nIGZvciBvdmVyZmxvdyBpbnRlcnJ1cHQgb25seSBpZiBzc2NvZnBtZiBpcyBwcmVzZW50ICovCiAJaWYgKF9fcmlzY3ZfaXNhX2V4dGVuc2lvbl9hdmFpbGFibGUoTlVMTCwgUklTQ1ZfSVNBX0VYVF9TU0NPRlBNRikpCiAJCWNzcl9zZXQoQ1NSX0hWSUVOLCBCSVQoSVJRX1BNVV9PVkYpKTsKIH0KIAotdm9pZCBrdm1fcmlzY3ZfYWlhX2Rpc2FibGUodm9pZCkKJiM0Mzt2b2lkIGt2bV9yaXNjdl9haWFfZGlzYWJsZShib29sIGZ1bGxfY2xlYW51cCkKIHsKIAlpbnQgaTsKIAl1bnNpZ25lZCBsb25nIGZsYWdzOwpAQCAtNjA5LDQyICYjNDM7NjIwLDQ5IEBAIHZvaWQga3ZtX3Jpc2N2X2FpYV9kaXNhYmxlKHZvaWQpCiAKIAlpZiAoX19yaXNjdl9pc2FfZXh0ZW5zaW9uX2F2YWlsYWJsZShOVUxMLCBSSVNDVl9JU0FfRVhUX1NTQ09GUE1GKSkKIAkJY3NyX2NsZWFyKENTUl9IVklFTiwgQklUKElSUV9QTVVfT1ZGKSk7Ci0JLyogRGlzYWJsZSBwZXItQ1BVIFNHRUkgaW50ZXJydXB0ICovCi0JY3NyX2NsZWFyKENTUl9ISUUsIEJJVChJUlFfU19HRVhUKSk7Ci0JZGlzYWJsZV9wZXJjcHVfaXJxKGhnZWlfcGFyZW50X2lycSk7CiAKLQljc3Jfd3JpdGUoQ1NSX0hWSUNUTCwgYWlhX2h2aWN0bF92YWx1ZShmYWxzZSkpOwotCi0JcmF3X3NwaW5fbG9ja19pcnFzYXZlKCZhbXA7aGdjdHJsLSZndDtsb2NrLCBmbGFncyk7Ci0KLQlmb3IgKGkgPSAwOyBpICZsdDs9IGhnY3RybC0mZ3Q7bnJfaGdlaTsgaSYjNDM7JiM0MzspIHsKLQkJdmNwdSA9IGhnY3RybC0mZ3Q7b3duZXJzW2ldOwotCQlpZiAoIXZjcHUpCi0JCQljb250aW51ZTsKJiM0MzsJaWYgKGZ1bGxfY2xlYW51cCkgewomIzQzOwkJLyogRGlzYWJsZSBwZXItQ1BVIFNHRUkgaW50ZXJydXB0ICovCiYjNDM7CQljc3JfY2xlYXIoQ1NSX0hJRSwgQklUKElSUV9TX0dFWFQpKTsKJiM0MzsJCWRpc2FibGVfcGVyY3B1X2lycShoZ2VpX3BhcmVudF9pcnEpOwomIzQzOwl9CiAKLQkJLyoKLQkJICogV2UgcmVsZWFzZSBoZ2N0cmwtJmd0O2xvY2sgYmVmb3JlIG5vdGlmeWluZyBJTVNJQwotCQkgKiBzbyB0aGF0IHdlIGRvbiYjMzk7dCBoYXZlIGxvY2sgb3JkZXJpbmcgaXNzdWVzLgotCQkgKi8KLQkJcmF3X3NwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmFtcDtoZ2N0cmwtJmd0O2xvY2ssIGZsYWdzKTsKJiM0MzsJY3NyX3dyaXRlKENTUl9IVklDVEwsIGFpYV9odmljdGxfdmFsdWUoZmFsc2UpKTsKIAotCQkvKiBOb3RpZnkgSU1TSUMgKi8KLQkJa3ZtX3Jpc2N2X3ZjcHVfYWlhX2ltc2ljX3JlbGVhc2UodmNwdSk7CiYjNDM7CWlmIChmdWxsX2NsZWFudXApIHsKJiM0MzsJCXJhd19zcGluX2xvY2tfaXJxc2F2ZSgmYW1wO2hnY3RybC0mZ3Q7bG9jaywgZmxhZ3MpOwogCi0JCS8qCi0JCSAqIFdha2V1cCBWQ1BVIGlmIGl0IHdhcyBibG9ja2VkIHNvIHRoYXQgaXQgY2FuCi0JCSAqIHJ1biBvbiBvdGhlciBIQVJUcwotCQkgKi8KLQkJaWYgKGNzcl9yZWFkKENTUl9IR0VJRSkgJmFtcDsgQklUKGkpKSB7Ci0JCQljc3JfY2xlYXIoQ1NSX0hHRUlFLCBCSVQoaSkpOwotCQkJa3ZtX3ZjcHVfa2ljayh2Y3B1KTsKJiM0MzsJCWZvciAoaSA9IDA7IGkgJmx0Oz0gaGdjdHJsLSZndDtucl9oZ2VpOyBpJiM0MzsmIzQzOykgewomIzQzOwkJCXZjcHUgPSBoZ2N0cmwtJmd0O293bmVyc1tpXTsKJiM0MzsJCQlpZiAoIXZjcHUpCiYjNDM7CQkJCWNvbnRpbnVlOwomIzQzOwomIzQzOwkJCS8qCiYjNDM7CQkJICogV2UgcmVsZWFzZSBoZ2N0cmwtJmd0O2xvY2sgYmVmb3JlIG5vdGlmeWluZyBJTVNJQwomIzQzOwkJCSAqIHNvIHRoYXQgd2UgZG9uJiMzOTt0IGhhdmUgbG9jayBvcmRlcmluZyBpc3N1ZXMuCiYjNDM7CQkJICovCiYjNDM7CQkJcmF3X3NwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmFtcDtoZ2N0cmwtJmd0O2xvY2ssIGZsYWdzKTsKJiM0MzsKJiM0MzsJCQkvKiBOb3RpZnkgSU1TSUMgKi8KJiM0MzsJCQlrdm1fcmlzY3ZfdmNwdV9haWFfaW1zaWNfcmVsZWFzZSh2Y3B1KTsKJiM0MzsKJiM0MzsJCQkvKgomIzQzOwkJCSAqIFdha2V1cCBWQ1BVIGlmIGl0IHdhcyBibG9ja2VkIHNvIHRoYXQgaXQgY2FuCiYjNDM7CQkJICogcnVuIG9uIG90aGVyIEhBUlRzCiYjNDM7CQkJICovCiYjNDM7CQkJaWYgKGNzcl9yZWFkKENTUl9IR0VJRSkgJmFtcDsgQklUKGkpKSB7CiYjNDM7CQkJCWNzcl9jbGVhcihDU1JfSEdFSUUsIEJJVChpKSk7CiYjNDM7CQkJCWt2bV92Y3B1X2tpY2sodmNwdSk7CiYjNDM7CQkJfQomIzQzOwomIzQzOwkJCXJhd19zcGluX2xvY2tfaXJxc2F2ZSgmYW1wO2hnY3RybC0mZ3Q7bG9jaywgZmxhZ3MpOwogCQl9CiAKLQkJcmF3X3NwaW5fbG9ja19pcnFzYXZlKCZhbXA7aGdjdHJsLSZndDtsb2NrLCBmbGFncyk7CiYjNDM7CQlyYXdfc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmYW1wO2hnY3RybC0mZ3Q7bG9jaywgZmxhZ3MpOwomIzQzOwl9IGVsc2UgewomIzQzOwkJaGdjdHJsLSZndDtzYXZlZF92YWx1ZSA9IGNzcl9yZWFkKENTUl9IR0VJRSk7CiAJfQogCi0JcmF3X3NwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmFtcDtoZ2N0cmwtJmd0O2xvY2ssIGZsYWdzKTsKLQogCXB1dF9jcHVfcHRyKCZhbXA7YWlhX2hnZWkpOwogfQogCmRpZmYgLS1naXQgYS9hcmNoL3Jpc2N2L2t2bS9tYWluLmMgYi9hcmNoL3Jpc2N2L2t2bS9tYWluLmMKaW5kZXggMDkyNGM3NTEwMGEyZDAuLmI0OGJiZDE4NTVjMWUyIDEwMDY0NAotLS0gYS9hcmNoL3Jpc2N2L2t2bS9tYWluLmMKJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC9yaXNjdi9rdm0vbWFpbi5jCkBAIC0xMCw2ICYjNDM7MTAsNyBAQAogI2luY2x1ZGUgJmx0O2xpbnV4L2Vyci5oJmd0OwogI2luY2x1ZGUgJmx0O2xpbnV4L21vZHVsZS5oJmd0OwogI2luY2x1ZGUgJmx0O2xpbnV4L2t2bV9ob3N0LmgmZ3Q7CiYjNDM7I2luY2x1ZGUgJmx0O2xpbnV4L2NwdV9wbS5oJmd0OwogI2luY2x1ZGUgJmx0O2FzbS9jcHVmZWF0dXJlLmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7YXNtL2t2bV9tbXUuaCZndDsKICNpbmNsdWRlICZsdDthc20va3ZtX25hY2wuaCZndDsKQEAgLTMzLDE0ICYjNDM7MzQsOSBAQCBsb25nIGt2bV9hcmNoX2Rldl9pb2N0bChzdHJ1Y3QgZmlsZSAqZmlscCwKIAlyZXR1cm4gLUVJTlZBTDsKIH0KIAotaW50IGt2bV9hcmNoX2VuYWJsZV92aXJ0dWFsaXphdGlvbl9jcHUodm9pZCkKJiM0MzsvKiBJbml0aWFsaXplIGh5cGVydmlzb3IgQ1NScyAtIGNhbGxlZCBkdXJpbmcgQ1BVIG9ubGluZSBhbmQgbm9uLXJldGVudGlvbiBpZGxlIHJlc3VtZSAqLwomIzQzO3N0YXRpYyB2b2lkIGt2bV9yaXNjdl9jc3JfZW5hYmxlKHZvaWQpCiB7Ci0JaW50IHJjOwotCi0JcmMgPSBrdm1fcmlzY3ZfbmFjbF9lbmFibGUoKTsKLQlpZiAocmMpCi0JCXJldHVybiByYzsKLQogCWNzcl93cml0ZShDU1JfSEVERUxFRywgMCk7CiAJY3NyX3dyaXRlKENTUl9ISURFTEVHLCAwKTsKIApAQCAtNDgsMTYgJiM0Mzs0NCwxMSBAQCBpbnQga3ZtX2FyY2hfZW5hYmxlX3ZpcnR1YWxpemF0aW9uX2NwdSh2b2lkKQogCWNzcl93cml0ZShDU1JfSENPVU5URVJFTiwgMHgwMik7CiAKIAljc3Jfd3JpdGUoQ1NSX0hWSVAsIDApOwotCi0Ja3ZtX3Jpc2N2X2FpYV9lbmFibGUoKTsKLQotCXJldHVybiAwOwogfQogCi12b2lkIGt2bV9hcmNoX2Rpc2FibGVfdmlydHVhbGl6YXRpb25fY3B1KHZvaWQpCiYjNDM7LyogQ2xlYXIgaHlwZXJ2aXNvciBDU1JzIC0gY2FsbGVkIGR1cmluZyBDUFUgb2ZmbGluZSBhbmQgbm9uLXJldGVudGlvbiBpZGxlIGVudHJ5ICovCiYjNDM7c3RhdGljIHZvaWQga3ZtX3Jpc2N2X2Nzcl9kaXNhYmxlKHZvaWQpCiB7Ci0Ja3ZtX3Jpc2N2X2FpYV9kaXNhYmxlKCk7Ci0KIAkvKgogCSAqIEFmdGVyIGNsZWFyaW5nIHRoZSBoaWRlbGVnIENTUiwgdGhlIGhvc3Qga2VybmVsIHdpbGwgcmVjZWl2ZQogCSAqIHNwdXJpb3VzIGludGVycnVwdHMgaWYgaHZpcCBDU1IgaGFzIHBlbmRpbmcgaW50ZXJydXB0cyBhbmQgdGhlCkBAIC02OSw5ICYjNDM7NjAsNTMgQEAgdm9pZCBrdm1fYXJjaF9kaXNhYmxlX3ZpcnR1YWxpemF0aW9uX2NwdSh2b2lkKQogCWNzcl93cml0ZShDU1JfSEVERUxFRywgMCk7CiAJY3NyX3dyaXRlKENTUl9ISURFTEVHLCAwKTsKIAomIzQzOwlrdm1fcmlzY3ZfY2xlYXJfZm9ybWVyX3ZjcHUoKTsKJiM0Mzt9CiYjNDM7CiYjNDM7aW50IGt2bV9hcmNoX2VuYWJsZV92aXJ0dWFsaXphdGlvbl9jcHUodm9pZCkKJiM0Mzt7CiYjNDM7CWludCByYzsKJiM0MzsKJiM0MzsJcmMgPSBrdm1fcmlzY3ZfbmFjbF9lbmFibGUoKTsKJiM0MzsJaWYgKHJjKQomIzQzOwkJcmV0dXJuIHJjOwomIzQzOwomIzQzOwlrdm1fcmlzY3ZfY3NyX2VuYWJsZSgpOwomIzQzOwlrdm1fcmlzY3ZfYWlhX2VuYWJsZSh0cnVlKTsKJiM0MzsKJiM0MzsJcmV0dXJuIDA7CiYjNDM7fQomIzQzOwomIzQzO3ZvaWQga3ZtX2FyY2hfZGlzYWJsZV92aXJ0dWFsaXphdGlvbl9jcHUodm9pZCkKJiM0Mzt7CiYjNDM7CWt2bV9yaXNjdl9haWFfZGlzYWJsZSh0cnVlKTsKJiM0MzsJa3ZtX3Jpc2N2X2Nzcl9kaXNhYmxlKCk7CiAJa3ZtX3Jpc2N2X25hY2xfZGlzYWJsZSgpOwogfQogCiYjNDM7c3RhdGljIGludCBrdm1fcmlzY3ZfY3B1X3BtX25vdGlmaWVyKHN0cnVjdCBub3RpZmllcl9ibG9jayAqc2VsZiwgdW5zaWduZWQgbG9uZyBjbWQsIHZvaWQgKnYpCiYjNDM7ewomIzQzOwlzd2l0Y2ggKGNtZCkgewomIzQzOwljYXNlIENQVV9QTV9FWElUOgomIzQzOwljYXNlIENQVV9QTV9FTlRFUl9GQUlMRUQ6CiYjNDM7CQlrdm1fcmlzY3ZfY3NyX2VuYWJsZSgpOwomIzQzOwkJa3ZtX3Jpc2N2X2FpYV9lbmFibGUoZmFsc2UpOwomIzQzOwkJcmV0dXJuIE5PVElGWV9PSzsKJiM0MzsJY2FzZSBDUFVfUE1fRU5URVI6CiYjNDM7CQlrdm1fcmlzY3ZfYWlhX2Rpc2FibGUoZmFsc2UpOwomIzQzOwkJa3ZtX3Jpc2N2X2Nzcl9kaXNhYmxlKCk7CiYjNDM7CQlyZXR1cm4gTk9USUZZX09LOwomIzQzOwlkZWZhdWx0OgomIzQzOwkJYnJlYWs7CiYjNDM7CX0KJiM0MzsKJiM0MzsJcmV0dXJuIE5PVElGWV9ET05FOwomIzQzO30KJiM0MzsKJiM0MztzdGF0aWMgc3RydWN0IG5vdGlmaWVyX2Jsb2NrIGt2bV9yaXNjdl9jcHVfcG1fbmIgPSB7CiYjNDM7CS5ub3RpZmllcl9jYWxsID0ga3ZtX3Jpc2N2X2NwdV9wbV9ub3RpZmllciwKJiM0Mzt9OwomIzQzOwogc3RhdGljIHZvaWQga3ZtX3Jpc2N2X3RlYXJkb3duKHZvaWQpCiB7CiAJa3ZtX3Jpc2N2X2FpYV9leGl0KCk7CkBAIC0xNzIsMjIgJiM0MzsyMDcsNDAgQEAgc3RhdGljIGludCBfX2luaXQgcmlzY3Zfa3ZtX2luaXQodm9pZCkKIAogCWt2bV9yZWdpc3Rlcl9wZXJmX2NhbGxiYWNrcygpOwogCi0JcmMgPSBrdm1faW5pdChzaXplb2Yoc3RydWN0IGt2bV92Y3B1KSwgMCwgVEhJU19NT0RVTEUpOwotCWlmIChyYykgewotCQlrdm1fcmlzY3ZfdGVhcmRvd24oKTsKLQkJcmV0dXJuIHJjOwomIzQzOwkvKiBSZWdpc3RlciBDUFUgUE0gbm90aWZpZXIgZm9yIENQVSBpZGxlIG5vbi1yZXRlbnRpb24gc3RhdGVzICovCiYjNDM7CWlmIChJU19FTkFCTEVEKENPTkZJR19DUFVfUE0pKSB7CiYjNDM7CQlyYyA9IGNwdV9wbV9yZWdpc3Rlcl9ub3RpZmllcigmYW1wO2t2bV9yaXNjdl9jcHVfcG1fbmIpOwomIzQzOwkJaWYgKHJjKSB7CiYjNDM7CQkJa3ZtX2VycigmIzM0O0ZhaWxlZCB0byByZWdpc3RlciBDUFUgUE0gbm90aWZpZXI6ICVkXG4mIzM0OywgcmMpOwomIzQzOwkJCWdvdG8gZXJyX3RlYXJkb3duOwomIzQzOwkJfQogCX0KIAomIzQzOwlyYyA9IGt2bV9pbml0KHNpemVvZihzdHJ1Y3Qga3ZtX3ZjcHUpLCAwLCBUSElTX01PRFVMRSk7CiYjNDM7CWlmIChyYykKJiM0MzsJCWdvdG8gZXJyX3VucmVnaXN0ZXJfY3B1X3BtOwomIzQzOwogCWlmIChrdm1fcmlzY3ZfYWlhX2F2YWlsYWJsZSgpKQogCQlrdm1faW5mbygmIzM0O0FJQSBhdmFpbGFibGUgd2l0aCAlZCBndWVzdCBleHRlcm5hbCBpbnRlcnJ1cHRzXG4mIzM0OywKIAkJCSBhdG9taWNfcmVhZCgmYW1wO2t2bV9yaXNjdl9haWFfbnJfaGdlaSkpOwogCiAJcmV0dXJuIDA7CiYjNDM7CiYjNDM7ZXJyX3VucmVnaXN0ZXJfY3B1X3BtOgomIzQzOwlpZiAoSVNfRU5BQkxFRChDT05GSUdfQ1BVX1BNKSkKJiM0MzsJCWNwdV9wbV91bnJlZ2lzdGVyX25vdGlmaWVyKCZhbXA7a3ZtX3Jpc2N2X2NwdV9wbV9uYik7CiYjNDM7ZXJyX3RlYXJkb3duOgomIzQzOwlrdm1fcmlzY3ZfdGVhcmRvd24oKTsKJiM0MzsJcmV0dXJuIHJjOwogfQogbW9kdWxlX2luaXQocmlzY3Zfa3ZtX2luaXQpOwogCiBzdGF0aWMgdm9pZCBfX2V4aXQgcmlzY3Zfa3ZtX2V4aXQodm9pZCkKIHsKJiM0MzsJLyogVW5yZWdpc3RlciBDUFUgUE0gbm90aWZpZXIgKi8KJiM0MzsJaWYgKElTX0VOQUJMRUQoQ09ORklHX0NQVV9QTSkpCiYjNDM7CQljcHVfcG1fdW5yZWdpc3Rlcl9ub3RpZmllcigmYW1wO2t2bV9yaXNjdl9jcHVfcG1fbmIpOwomIzQzOwogCWt2bV9leGl0KCk7CiAKIAlrdm1fcmlzY3ZfdGVhcmRvd24oKTsKZGlmZiAtLWdpdCBhL2FyY2gvcmlzY3Yva3ZtL3ZjcHUuYyBiL2FyY2gvcmlzY3Yva3ZtL3ZjcHUuYwppbmRleCBjZjZlMjMxZTc2ZTI1NC4uZTQ4MzM4ZjkwN2Y0ODggMTAwNjQ0Ci0tLSBhL2FyY2gvcmlzY3Yva3ZtL3ZjcHUuYwomIzQzOyYjNDM7JiM0MzsgYi9hcmNoL3Jpc2N2L2t2bS92Y3B1LmMKQEAgLTI2LDYgJiM0MzsyNiwxNyBAQAogCiBzdGF0aWMgREVGSU5FX1BFUl9DUFUoc3RydWN0IGt2bV92Y3B1ICosIGt2bV9mb3JtZXJfdmNwdSk7CiAKJiM0Mzt2b2lkIGt2bV9yaXNjdl9jbGVhcl9mb3JtZXJfdmNwdSh2b2lkKQomIzQzO3sKJiM0MzsJLyoKJiM0MzsJICogQ2xlYXIgdGhlIHBlci1DUFUgZm9ybWVyIFZDUFUgcG9pbnRlciBiZWNhdXNlIGh5cGVydmlzb3IgQ1NSIHN0YXRlCiYjNDM7CSAqIHdpbGwgYmUgbG9zdC4gVGhpcyBlbnN1cmVzIHRoYXQgdGhlIG5leHQgVkNQVSBlbnRyeSB3aWxsIHByb3Blcmx5CiYjNDM7CSAqIHJlc3RvcmUgYWxsIENTUnMgaW5zdGVhZCBvZiBpbmNvcnJlY3RseSBza2lwcGluZyBDU1IgcmVzdG9yYXRpb24KJiM0MzsJICogdmlhIHRoZSBmYXN0LXBhdGggb3B0aW1pemF0aW9uLgomIzQzOwkgKi8KJiM0MzsJX190aGlzX2NwdV93cml0ZShrdm1fZm9ybWVyX3ZjcHUsIE5VTEwpOwomIzQzO30KJiM0MzsKIGNvbnN0IHN0cnVjdCBrdm1fc3RhdHNfZGVzYyBrdm1fdmNwdV9zdGF0c19kZXNjW10gPSB7CiAJS1ZNX0dFTkVSSUNfVkNQVV9TVEFUUygpLAogCVNUQVRTX0RFU0NfQ09VTlRFUihWQ1BVLCBlY2FsbF9leGl0X3N0YXQpLAo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMyAwMDo0NTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2OTgzCgkJCQkJCQlvdXRwdXQ6IDMzCgkJCQkJCQl0aG91Z2h0czogNDE4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgUklTQy1WIEtWTSBBSUEgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggZm9yIFJJU0MtViBLVk0sIGFuZCBteSBpbml0aWFsIHRob3VnaHQgaXMsICYjMzQ7QWxyaWdodCwgbGV0JiMzOTtzIHNlZSB3aGF0IHdlJiMzOTt2ZSBnb3QgaGVyZS4mIzM0OyBJdCBtb2RpZmllcyB0aGUgQUlBIChBZHZhbmNlZCBJbnRlcnJ1cHQgQXJjaGl0ZWN0dXJlKSBoYW5kbGluZywgc3BlY2lmaWNhbGx5IHRoZSBlbmFibGUvZGlzYWJsZSBmdW5jdGlvbnMgKGBrdm1fcmlzY3ZfYWlhX2VuYWJsZWAgYW5kIGBrdm1fcmlzY3ZfYWlhX2Rpc2FibGVgKSB0byB0YWtlIGEgYGZ1bGxfY2xlYW51cGAgYm9vbGVhbi4gQ2xldmVyLCBhIHRhcmdldGVkIGFwcHJvYWNoIHRvIGNsZWFudXBzLiBJdCBhbHNvIHNlZW1zIGxpa2Ugd2UmIzM5O3JlIGludGVncmF0aW5nIENQVSBQTSBub3RpZmllcnMgdG8gaGFuZGxlIEFJQSBzdGF0ZSBzYXZpbmcgYW5kIHJlc3RvcmluZyBkdXJpbmcgQ1BVIGlkbGUgbm9uLXJldGVudGlvbiBzdGF0ZXMuIEFuZCBJIHNlZSBhIGNsZWFyIG9mIGBrdm1fZm9ybWVyX3ZjcHVgIGR1cmluZyBDUFUgb2ZmbGluZSBhbmQgbm9uLXJldGVudGlvbiBpZGxlIGVudHJ5LiBUaGlzIGlzIHNtYXJ0OyBlbnN1cmVzIGEgY2xlYW4gc3RhdGUgdHJhbnNpdGlvbi4KCk15IGltbWVkaWF0ZSByZWFjdGlvbiBpcyB0byBhc3Nlc3MgaXRzIHJlYWNoYWJpbGl0eSBhbmQgZnVuY3Rpb25hbGl0eS4gVGhlIGNoYW5nZXMgYXJlIG5lYXRseSBpc29sYXRlZCB3aXRoaW4gYGFyY2gvcmlzY3Yva3ZtL2FpYS5jYCBhbmQgYGFyY2gvcmlzY3Yva3ZtL21haW4uY2AsIHdoaWNoIG1ha2VzIGl0IGVhc2llciB0byByZXZpZXcuIFRoaXMgYGt2bV9yaXNjdl9jcHVfcG1fbm90aWZpZXJgLCB3aGljaCBoYW5kbGVzIGBDUFVfUE1fRVhJVGAsIGBDUFVfUE1fRU5URVJfRkFJTEVEYCwgYW5kIGBDUFVfUE1fRU5URVJgLCBsb29rcyBzb2xpZC4gSXQmIzM5O3MgY2xlYXJseSBoYW5kbGluZyBDUFUgcG93ZXIgbWFuYWdlbWVudCwgcGFydGljdWxhcmx5IGlkbGUgc3RhdGVzLCBmb3IgS1ZNIG9uIFJJU0MtVi4gTm8gc3VycHJpc2VzIHRoZXJlLgoKTm93LCB0aGUgZnV6emluZyBxdWVzdGlvbi4gQ1BVIFBNIHN0YXRlcyB3aXRoaW4gYSBWTS4uLiB0aGF0JiMzOTtzIGEgYml0IG9mIGEgY2hhbGxlbmdlLiBJdCYjMzk7cyBub3QgdGhlIGVhc2llc3QgdGhpbmcgdG8gdHJpZ2dlciByZWxpYWJseS4gSG93ZXZlciwgc2luY2UgdGhpcyBwYXRjaCB0b3VjaGVzIGNvcmUgS1ZNIGxvZ2ljLCBpdCYjMzk7cyBkZWZpbml0ZWx5IHdvcnRoIGNvbnNpZGVyaW5nLiBUaGUgcGF0Y2ggbW9kaWZpZXMgYGt2bV9hcmNoX2VuYWJsZV92aXJ0dWFsaXphdGlvbl9jcHVgIGFuZCBga3ZtX2FyY2hfZGlzYWJsZV92aXJ0dWFsaXphdGlvbl9jcHVgLCB0aGF0JiMzOTtzIGEga2V5IGFyZWEuIEFuZCB0aGUgYWRkaXRpb24gb2YgdGhhdCBDUFUgUE0gbm90aWZpZXIgbWVhbnMgaXQmIzM5O3Mgbm93IGRpcmVjdGx5IGludGVydHdpbmVkLiBDYW4gc3l6a2FsbGVyIHRyaWdnZXIgQ1BVIFBNIHN0YXRlcz8gQWN0dWFsbHksIHllYWgsIGl0IGNhbiwgcG90ZW50aWFsbHkgdGhyb3VnaCBzeXNmcyB3cml0ZXMsIG9yIGp1c3QgcGxhaW4gb2xkIGlkbGUgdGltZS4gUGx1cywgS1ZNIGlvY3RscyBsaWtlIFZNIGFuZCBWQ1BVIGNyZWF0aW9uIHdpbGwgZGVmaW5pdGVseSBpbnRlcmFjdCB3aXRoIHRoaXMgbG9naWMuIFRpbWUgdG8gY2hlY2sgdGhlIGNvbmZpZ3MuLi4KClRoZSBjb25maWd1cmF0aW9ucyBJJiMzOTtsbCBsb29rIGF0IGFyZSBgQ09ORklHX0tWTWAsIGBDT05GSUdfUklTQ1ZgLCBhbmQgYENPTkZJR19DUFVfUE1gLiBJIG5lZWQgdG8gdmVyaWZ5IHRoYXQgdGhlc2UgYXJlIGNvcnJlY3RseSBzZXQgYW5kIGFjY291bnRlZCBmb3IuCgpGaW5hbGx5LCBJIG5lZWQgdG8gZm9jdXMgb24gc3BlY2lmaWMgZnVuY3Rpb25zIGZvciBkZWVwZXIgYW5hbHlzaXM6IGBrdm1fcmlzY3ZfYWlhX2VuYWJsZWAsIGBrdm1fcmlzY3ZfYWlhX2Rpc2FibGVgLCBga3ZtX3Jpc2N2X2NwdV9wbV9ub3RpZmllcmAsIGFuZCBga3ZtX3Jpc2N2X2NsZWFyX2Zvcm1lcl92Y3B1YC4gVGhlc2UgYXJlIHRoZSBjb3JlIGVsZW1lbnRzIEkmIzM5O2xsIGJlIHRhcmdldGluZyB0byB2ZXJpZnkgdGhpcyBwYXRjaCYjMzk7cyBpbnRlZ3JpdHkuIFRoZSB1c3VhbCBkcmlsbC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMyAwMDo0NTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtDT05GSUdfQ1BVX1BNJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7YXJjaC9yaXNjdi9rdm0vJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2FyY2gvcmlzY3Yva3ZtL21haW4uYz0xMTc9c3RhdGljIGludCBfX2luaXQgcmlzY3Zfa3ZtX2luaXQodm9pZClcbi0tXG5hcmNoL3Jpc2N2L2t2bS9tYWluLmMtMjEwLVx0LyogUmVnaXN0ZXIgQ1BVIFBNIG5vdGlmaWVyIGZvciBDUFUgaWRsZSBub24tcmV0ZW50aW9uIHN0YXRlcyAqL1xuYXJjaC9yaXNjdi9rdm0vbWFpbi5jOjIxMTpcdGlmIChJU19FTkFCTEVEKENPTkZJR19DUFVfUE0pKSB7XG5hcmNoL3Jpc2N2L2t2bS9tYWluLmMtMjEyLVx0XHRyYyA9IGNwdV9wbV9yZWdpc3Rlcl9ub3RpZmllcihcdTAwMjZrdm1fcmlzY3ZfY3B1X3BtX25iKTtcbi0tXG5hcmNoL3Jpc2N2L2t2bS9tYWluLmMtMjI5LWVycl91bnJlZ2lzdGVyX2NwdV9wbTpcbmFyY2gvcmlzY3Yva3ZtL21haW4uYzoyMzA6XHRpZiAoSVNfRU5BQkxFRChDT05GSUdfQ1BVX1BNKSlcbmFyY2gvcmlzY3Yva3ZtL21haW4uYy0yMzEtXHRcdGNwdV9wbV91bnJlZ2lzdGVyX25vdGlmaWVyKFx1MDAyNmt2bV9yaXNjdl9jcHVfcG1fbmIpO1xuLS1cbmFyY2gvcmlzY3Yva3ZtL21haW4uYz0yMzg9c3RhdGljIHZvaWQgX19leGl0IHJpc2N2X2t2bV9leGl0KHZvaWQpXG4tLVxuYXJjaC9yaXNjdi9rdm0vbWFpbi5jLTI0MC1cdC8qIFVucmVnaXN0ZXIgQ1BVIFBNIG5vdGlmaWVyICovXG5hcmNoL3Jpc2N2L2t2bS9tYWluLmM6MjQxOlx0aWYgKElTX0VOQUJMRUQoQ09ORklHX0NQVV9QTSkpXG5hcmNoL3Jpc2N2L2t2bS9tYWluLmMtMjQyLVx0XHRjcHVfcG1fdW5yZWdpc3Rlcl9ub3RpZmllcihcdTAwMjZrdm1fcmlzY3ZfY3B1X3BtX25iKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMyAwMDo0NTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4MzkxCgkJCQkJCQlvdXRwdXQ6IDMzCgkJCQkJCQl0aG91Z2h0czogMTkzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEluaXRpYWwgQXNzZXNzbWVudCBvZiB0aGUgS1ZNL1JJU0MtViBQYXRjaCoqCgpPa2F5LCBzbyB0aGlzIHBhdGNoIGlzIGNsZWFybHkgaW50cm9kdWNpbmcgc29tZSBzaWduaWZpY2FudCBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gS1ZNLCBzcGVjaWZpY2FsbHkgYXJvdW5kIGhvdyBpdCBoYW5kbGVzIENQVSBwb3dlciBtYW5hZ2VtZW50IGFuZCBpZGxlIHN0YXRlcyBvbiBSSVNDLVYuIFRoZSBtZW50aW9uIG9mIEFJQSAoQWR2YW5jZWQgSW50ZXJydXB0IEFyY2hpdGVjdHVyZSkgaXMgYSBrZXkgZGV0YWlsIC0gdGhhdCYjMzk7cyBkZWZpbml0ZWx5IGEgcG9pbnQgb2YgZm9jdXMuIEFuZCB0aGUgZmFjdCB0aGF0IGl0JiMzOTtzIHRvdWNoaW5nIGdlbmVyYWwgaHlwZXJ2aXNvciBDU1JzIGp1c3QgbWFrZXMgaXQgZXZlbiBtb3JlIGludGVyZXN0aW5nIGZyb20gYSBzZWN1cml0eSBwZXJzcGVjdGl2ZS4gTXkgaW5pdGlhbCB0aG91Z2h0PyBBYnNvbHV0ZWx5LCB0aGlzIG5lZWRzIHRvIGJlIHRob3JvdWdobHkgZnV6emVkLiBQb3RlbnRpYWwgYXR0YWNrIHN1cmZhY2UgaXMgYWxtb3N0IGd1YXJhbnRlZWQgdG8gYmUgdGhlcmUuCgpMZXQmIzM5O3MgcXVpY2tseSBpZGVudGlmeSB0aGUga2V5IGZ1bmN0aW9ucyB0aGlzIHBhdGNoIGlzIG1vZGlmeWluZy4gSSBzZWUgYGt2bV9yaXNjdl9haWFfZW5hYmxlYCwgYGt2bV9yaXNjdl9haWFfZGlzYWJsZWAsIGBrdm1fcmlzY3ZfY3B1X3BtX25vdGlmaWVyYCwgYW5kIGBrdm1fcmlzY3ZfY2xlYXJfZm9ybWVyX3ZjcHVgIG1lbnRpb25lZC4gVGhlc2UgYXJlIG15IHByaW1hcnkgZm9jdXMgc3ltYm9scyBmb3IgZnVydGhlciBhbmFseXNpcy4gVGhleSBhcmUgZGVmaW5pdGVseSBnb2luZyB0byBiZSB0aGUgcGxhY2VzIHdoZXJlIHRoaW5ncyBjYW4gZ28gd3JvbmcuCgpOb3csIGxldCYjMzk7cyBsb29rIGF0IHRoZSBjb25maWd1cmF0aW9uIGRlcGVuZGVuY2llcy4gVGhlIHBhdGNoJiMzOTtzIGNvbmZpZ3VyYXRpb24gcmVxdWlyZW1lbnRzIGFyZSBgS1ZNYCBhbmQgYENQVV9QTWAuIE9idmlvdXNseSwgc2luY2UgaXQmIzM5O3Mgd29ya2luZyB3aXRoIEtWTSwgYEtWTWAgaXMgZ29pbmcgdG8gYmUgcmVxdWlyZWQuIFRoZSBub3RpZmllciByZWdpc3RyYXRpb24gc3BlY2lmaWNhbGx5IGltcGxpZXMgdGhhdCBgQ1BVX1BNYCBtdXN0IGJlIGVuYWJsZWQuIEkgd29uZGVyIGlmIHRoZXJlIGFyZSBhbnkgKm90aGVyKiBjb25maWdzIHRoYXQgbmVlZCB0byBiZSBjb25zaWRlcmVkLiBHaXZlbiB0aGF0IHRoZSBjb2RlJiMzOTtzIGxvY2F0ZWQgaW4gYGFyY2gvcmlzY3Yva3ZtL2AsIEkmIzM5O2xsIHF1aWNrbHkgY2hlY2sgdGhlIEtjb25maWcgZm9yIFJJU0MtViBLVk0gdG8gbWFrZSBzdXJlIEkgaGF2ZW4mIzM5O3QgbWlzc2VkIGFueXRoaW5nIG9idmlvdXMuIEkmIzM5O2xsIG5lZWQgdG8gY2hlY2sgdGhlIGRlcGVuZGVuY2llcyBhbmQgZW5zdXJlIHRoZXJlIGFyZW4mIzM5O3QgYW55IGZ1cnRoZXIgY29uc3RyYWludHMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjMgMDA6NDU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIEtWTSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2FyY2gvcmlzY3Yva3ZtL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YXJjaC9yaXNjdi9rdm0vS2NvbmZpZz0xOD1pZiBWSVJUVUFMSVpBVElPTlxuYXJjaC9yaXNjdi9rdm0vS2NvbmZpZy0xOS1cbmFyY2gvcmlzY3Yva3ZtL0tjb25maWc6MjA6Y29uZmlnIEtWTVxuYXJjaC9yaXNjdi9rdm0vS2NvbmZpZy0yMS1cdHRyaXN0YXRlIFwmIzM0O0tlcm5lbC1iYXNlZCBWaXJ0dWFsIE1hY2hpbmUgKEtWTSkgc3VwcG9ydFwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIzIDAwOjQ1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDkwNzAKCQkJCQkJCW91dHB1dDogMzAKCQkJCQkJCXRob3VnaHRzOiAyMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzOgoKKipLVk0gQ29uZmlndXJhdGlvbiBEZWVwIERpdmUqKgoKT2theSwgc28gSSYjMzk7bSBmb2N1c2luZyBpbiBvbiB0aGUgY29uZmlndXJhdGlvbiByZWxhdGVkIHRvIGBLVk1gLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdGhhdCBpdCYjMzk7cyB0aGUgY2VudHJhbCBlbGVtZW50IEkgbmVlZCB0byB1bmRlcnN0YW5kIGZvciB0aGlzIHBhcnRpY3VsYXIgc2NlbmFyaW8uIE5vdywgYmVmb3JlIEkgcHJvY2VlZCBmdXJ0aGVyLCBJIG5lZWQgdG8gbWFrZSBhYnNvbHV0ZWx5IHN1cmUgSSYjMzk7bSBjbGVhciBvbiB0aGUgaW50ZXJyZWxhdGlvbnNoaXAgYmV0d2VlbiBgS1ZNYCBhbmQgb3RoZXIgZWxlbWVudHMsIHN1Y2ggYXMgdGhlIGBDUFVfUE1gIG1vZHVsZS4gTGV0IG1lIGdvIGJhY2sgYW5kIHJlLWV4YW1pbmUgdGhlIGBDUFVfUE1gIGVsZW1lbnRzIGluIHRoZSBjb25maWcsIGFuZCBlbnN1cmUgZXZlcnl0aGluZyB0aWVzIGJhY2sgaW4gdGhlIGNvcnJlY3QgbWFubmVyLiBJIHdhbnQgdG8gbWFrZSBzdXJlIEkgYW0gZ3Jhc3BpbmcgdGhlIGRlcGVuZGVuY2llcyBhcyBhIHdob2xlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIzIDAwOjQ1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBDUFVfUE0mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtrZXJuZWwvcG93ZXIvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtrZXJuZWwvcG93ZXIvS2NvbmZpZz0zODU9Y29uZmlnIFBNX0dFTkVSSUNfRE9NQUlOU19PRlxuLS1cbmtlcm5lbC9wb3dlci9LY29uZmlnLTM4OC1cbmtlcm5lbC9wb3dlci9LY29uZmlnOjM4OTpjb25maWcgQ1BVX1BNXG5rZXJuZWwvcG93ZXIvS2NvbmZpZy0zOTAtXHRib29sXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjMgMDA6NDU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogOTMzOAoJCQkJCQkJb3V0cHV0OiAxNTcKCQkJCQkJCXRob3VnaHRzOiAxNwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgcHJlc2VudGVkIGluIHRoZSBmaXJzdCBwZXJzb246CgoqKkNQVV9QTSBDb25maWd1cmF0aW9uIEFuYWx5c2lzKioKCkFscmlnaHQsIHNvIGBDUFVfUE1gIGlzIGEgYm9vbGVhbiBjb25maWd1cmF0aW9uIG9wdGlvbi4gU2ltcGxlIGVub3VnaC4gTXkgZ29hbCBoZXJlIGlzIHRvIGRldGVybWluZSBpdHMgaW1wbGljYXRpb25zIGFuZCBkZWNpZGUgb24gdGhlIGFwcHJvcHJpYXRlIHNldHRpbmdzIGJhc2VkIG9uIHRoZSBzeXN0ZW0mIzM5O3MgbmVlZHMsIHBlcmZvcm1hbmNlIHJlcXVpcmVtZW50cywgYW5kIHBvd2VyIHByb2ZpbGVzLiBJJiMzOTttIGdvaW5nIHRvIGNhcmVmdWxseSBhbmFseXplIHRoZSBpbXBhY3RzIG9mIGVuYWJsaW5nIG9yIGRpc2FibGluZyBpdCwgY29uc2lkZXJpbmcgdGhlIHNwZWNpZmljIGFyY2hpdGVjdHVyZSBhbmQgd29ya2xvYWRzIGF0IGhhbmQuIEkmIzM5O2xsIG5lZWQgdG8gZXhhbWluZSBob3cgaXQgaW50ZXJhY3RzIHdpdGggb3RoZXIgcG93ZXIgbWFuYWdlbWVudCBmZWF0dXJlcyBhbmQgZGV2aWNlIGRyaXZlcnMuIFRoZW4sIEkmIzM5O2xsIGRvY3VtZW50IG15IGZpbmRpbmdzIGFuZCBzZXQgdGhlIHJlc3VsdGluZyBjb25maWd1cmF0aW9uLCBtYWtpbmcgc3VyZSB0aGUgY2hhbmdlcyBhcmUganVzdGlmaWVkIGFuZCBwcm9wZXJseSB0ZXN0ZWQuIEkmIzM5O2xsIG5lZWQgdG8gY29uc2lkZXIgd2hldGhlciBkZWZhdWx0IHZhbHVlcyBhcmUgYXBwcm9wcmlhdGUsIG9yIHdoZXRoZXIgdGhpcyBzaG91bGQgYmUgYWx0ZXJlZCBmb3IgZWFjaCBzcGVjaWZpYyBtYWNoaW5lLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMyAwMDo0NTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7S1ZNJiMzNDssCiAgICAmIzM0O0NQVV9QTSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2t2bV9yaXNjdl9haWFfZW5hYmxlJiMzNDssCiAgICAmIzM0O2t2bV9yaXNjdl9haWFfZGlzYWJsZSYjMzQ7LAogICAgJiMzNDtrdm1fcmlzY3ZfY3B1X3BtX25vdGlmaWVyJiMzNDssCiAgICAmIzM0O2t2bV9yaXNjdl9jbGVhcl9mb3JtZXJfdmNwdSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBSSVNDLVYgS1ZNIHRvIHByb3Blcmx5IGhhbmRsZSBDUFUgcG93ZXIgbWFuYWdlbWVudCAoaWRsZSBub24tcmV0ZW50aW9uIHN0YXRlcykgYnkgc2F2aW5nIGFuZCByZXN0b3JpbmcgQUlBIChBZHZhbmNlZCBJbnRlcnJ1cHQgQXJjaGl0ZWN0dXJlKSBhbmQgaHlwZXJ2aXNvciBDU1Igc3RhdGUuIFRoaXMgaXMgY29yZSBLVk0gbG9naWMgYW5kIHNob3VsZCBiZSBmdXp6ZWQgdG8gZW5zdXJlIG5vIHN0YXRlIGlzIGxvc3Qgb3IgY29ycnVwdGVkIGR1cmluZyBDUFUgaWRsZSB0cmFuc2l0aW9ucy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7S1ZNJiMzNDssCiAgICAmIzM0O0NQVV9QTSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2t2bV9yaXNjdl9haWFfZW5hYmxlJiMzNDssCiAgICAmIzM0O2t2bV9yaXNjdl9haWFfZGlzYWJsZSYjMzQ7LAogICAgJiMzNDtrdm1fcmlzY3ZfY3B1X3BtX25vdGlmaWVyJiMzNDssCiAgICAmIzM0O2t2bV9yaXNjdl9jbGVhcl9mb3JtZXJfdmNwdSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBSSVNDLVYgS1ZNIHRvIHByb3Blcmx5IGhhbmRsZSBDUFUgcG93ZXIgbWFuYWdlbWVudCAoaWRsZSBub24tcmV0ZW50aW9uIHN0YXRlcykgYnkgc2F2aW5nIGFuZCByZXN0b3JpbmcgQUlBIChBZHZhbmNlZCBJbnRlcnJ1cHQgQXJjaGl0ZWN0dXJlKSBhbmQgaHlwZXJ2aXNvciBDU1Igc3RhdGUuIFRoaXMgaXMgY29yZSBLVk0gbG9naWMgYW5kIHNob3VsZCBiZSBmdXp6ZWQgdG8gZW5zdXJlIG5vIHN0YXRlIGlzIGxvc3Qgb3IgY29ycnVwdGVkIGR1cmluZyBDUFUgaWRsZSB0cmFuc2l0aW9ucy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIzVDAwOjQ1OjI4LjQ3NDkyNDYzMVoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIyMDIzMzQxNzg1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIktWTVwiLFxuICAgIFwiQ1BVX1BNXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwia3ZtX3Jpc2N2X2FpYV9lbmFibGVcIixcbiAgICBcImt2bV9yaXNjdl9haWFfZGlzYWJsZVwiLFxuICAgIFwia3ZtX3Jpc2N2X2NwdV9wbV9ub3RpZmllclwiLFxuICAgIFwia3ZtX3Jpc2N2X2NsZWFyX2Zvcm1lcl92Y3B1XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgUklTQy1WIEtWTSB0byBwcm9wZXJseSBoYW5kbGUgQ1BVIHBvd2VyIG1hbmFnZW1lbnQgKGlkbGUgbm9uLXJldGVudGlvbiBzdGF0ZXMpIGJ5IHNhdmluZyBhbmQgcmVzdG9yaW5nIEFJQSAoQWR2YW5jZWQgSW50ZXJydXB0IEFyY2hpdGVjdHVyZSkgYW5kIGh5cGVydmlzb3IgQ1NSIHN0YXRlLiBUaGlzIGlzIGNvcmUgS1ZNIGxvZ2ljIGFuZCBzaG91bGQgYmUgZnV6emVkIHRvIGVuc3VyZSBubyBzdGF0ZSBpcyBsb3N0IG9yIGNvcnJ1cHRlZCBkdXJpbmcgQ1BVIGlkbGUgdHJhbnNpdGlvbnMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIzVDAwOjQ1OjI4LjQ3NDkzMjU2MVoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTQyNjI4NjIwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgYmI4MDgxM2ZiZTMzMzQ5MDliNTEyNzE2ZTVmODJjZDBiNTkyOTdiMFxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgVGh1IEp1bCAyMyAwMDo0NToyNiAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9hcmNoL3Jpc2N2L2luY2x1ZGUvYXNtL2t2bV9haWEuaCBiL2FyY2gvcmlzY3YvaW5jbHVkZS9hc20va3ZtX2FpYS5oXFxuaW5kZXggYzY3ZWM1YWMwYTE0NmIuLjdjMWMzMjUwNTk4ZmIwIDEwMDY0NFxcbi0tLSBhL2FyY2gvcmlzY3YvaW5jbHVkZS9hc20va3ZtX2FpYS5oXFxuKysrIGIvYXJjaC9yaXNjdi9pbmNsdWRlL2FzbS9rdm1fYWlhLmhcXG5AQCAtMTY1LDggKzE2NSwxOSBAQCBpbnQga3ZtX3Jpc2N2X2FpYV9hbGxvY19oZ2VpKGludCBjcHUsIHN0cnVjdCBrdm1fdmNwdSAqb3duZXIsXFxuIFxcdFxcdFxcdCAgICAgdm9pZCBfX2lvbWVtICoqaGdlaV92YSwgcGh5c19hZGRyX3QgKmhnZWlfcGEpO1xcbiB2b2lkIGt2bV9yaXNjdl9haWFfZnJlZV9oZ2VpKGludCBjcHUsIGludCBoZ2VpKTtcXG4gXFxuLXZvaWQga3ZtX3Jpc2N2X2FpYV9lbmFibGUodm9pZCk7XFxuLXZvaWQga3ZtX3Jpc2N2X2FpYV9kaXNhYmxlKHZvaWQpO1xcbisvKipcXG4rICoga3ZtX3Jpc2N2X2FpYV9lbmFibGUoKSAtIEVuYWJsZSBBSUEgc3VwcG9ydCBvbiBjdXJyZW50IENQVVxcbisgKiBAZnVsbF9jbGVhbnVwOiB0cnVlID0gZnVsbCBoYXJkd2FyZSBpbml0IChDUFUgaG90cGx1Zy9tb2R1bGUgbG9hZCksXFxuKyAqICAgICAgICAgICAgICAgIGZhbHNlID0gbGlnaHR3ZWlnaHQgQ1NSIHJlc3RvcmUgKENQVSBub24tcmV0ZW50aW9uIGlkbGUgcmVzdW1lKVxcbisgKi9cXG4rdm9pZCBrdm1fcmlzY3ZfYWlhX2VuYWJsZShib29sIGZ1bGxfY2xlYW51cCk7XFxuK1xcbisvKipcXG4rICoga3ZtX3Jpc2N2X2FpYV9kaXNhYmxlKCkgLSBEaXNhYmxlIEFJQSBzdXBwb3J0IG9uIGN1cnJlbnQgQ1BVXFxuKyAqIEBmdWxsX2NsZWFudXA6IHRydWUgPSBmdWxsIGhhcmR3YXJlIGNsZWFudXAgKENQVSBob3RwbHVnL21vZHVsZSBleGl0KSxcXG4rICogICAgICAgICAgICAgICAgZmFsc2UgPSBsaWdodHdlaWdodCBDU1Igc2F2ZSAoQ1BVIG5vbi1yZXRlbnRpb24gaWRsZSBlbnRyeSlcXG4rICovXFxuK3ZvaWQga3ZtX3Jpc2N2X2FpYV9kaXNhYmxlKGJvb2wgZnVsbF9jbGVhbnVwKTtcXG4gaW50IGt2bV9yaXNjdl9haWFfaW5pdCh2b2lkKTtcXG4gdm9pZCBrdm1fcmlzY3ZfYWlhX2V4aXQodm9pZCk7XFxuIFxcbmRpZmYgLS1naXQgYS9hcmNoL3Jpc2N2L2luY2x1ZGUvYXNtL2t2bV9ob3N0LmggYi9hcmNoL3Jpc2N2L2luY2x1ZGUvYXNtL2t2bV9ob3N0LmhcXG5pbmRleCA2MDAxN2NlZWM5ZDJhZi4uODA4YjRlZTFiZDEwYWMgMTAwNjQ0XFxuLS0tIGEvYXJjaC9yaXNjdi9pbmNsdWRlL2FzbS9rdm1faG9zdC5oXFxuKysrIGIvYXJjaC9yaXNjdi9pbmNsdWRlL2FzbS9rdm1faG9zdC5oXFxuQEAgLTMxOSw2ICszMTksOCBAQCBib29sIGt2bV9yaXNjdl92Y3B1X3N0b3BwZWQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KTtcXG4gXFxuIHZvaWQga3ZtX3Jpc2N2X3ZjcHVfcmVjb3JkX3N0ZWFsX3RpbWUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KTtcXG4gXFxuK3ZvaWQga3ZtX3Jpc2N2X2NsZWFyX2Zvcm1lcl92Y3B1KHZvaWQpO1xcbitcXG4gLyogRmxhZ3MgcmVwcmVzZW50aW5nIGltcGxlbWVudGF0aW9uIHNwZWNpZmljIGRldGFpbHMgKi9cXG4gREVDTEFSRV9TVEFUSUNfS0VZX0ZBTFNFKGt2bV9yaXNjdl92c3N0YWdlX3RsYl9ub19ncGEpO1xcbiBcXG5kaWZmIC0tZ2l0IGEvYXJjaC9yaXNjdi9rdm0vYWlhLmMgYi9hcmNoL3Jpc2N2L2t2bS9haWEuY1xcbmluZGV4IGJhZmIwMDljNWNlNTU5Li40Y2YzNTFmOTFjNjQzZiAxMDA2NDRcXG4tLS0gYS9hcmNoL3Jpc2N2L2t2bS9haWEuY1xcbisrKyBiL2FyY2gvcmlzY3Yva3ZtL2FpYS5jXFxuQEAgLTI1LDYgKzI1LDcgQEAgc3RydWN0IGFpYV9oZ2VpX2NvbnRyb2wge1xcbiBcXHR1bnNpZ25lZCBsb25nIGZyZWVfYml0bWFwO1xcbiBcXHRzdHJ1Y3Qga3ZtX3ZjcHUgKm93bmVyc1tCSVRTX1BFUl9MT05HXTtcXG4gXFx0dW5zaWduZWQgaW50IG5yX2hnZWk7XFxuK1xcdHVuc2lnbmVkIGxvbmcgc2F2ZWRfdmFsdWU7XFxuIH07XFxuIHN0YXRpYyBERUZJTkVfUEVSX0NQVShzdHJ1Y3QgYWlhX2hnZWlfY29udHJvbCwgYWlhX2hnZWkpO1xcbiBzdGF0aWMgaW50IGhnZWlfcGFyZW50X2lycTtcXG5AQCAtNTMyLDUwICs1MzMsNTkgQEAgc3RhdGljIHZvaWQgYWlhX2hnZWlfZXhpdCh2b2lkKVxcbiBcXHRmcmVlX3BlcmNwdV9pcnEoaGdlaV9wYXJlbnRfaXJxLCBcXHUwMDI2YWlhX2hnZWkpO1xcbiB9XFxuIFxcbi12b2lkIGt2bV9yaXNjdl9haWFfZW5hYmxlKHZvaWQpXFxuK3ZvaWQga3ZtX3Jpc2N2X2FpYV9lbmFibGUoYm9vbCBmdWxsX2NsZWFudXApXFxuIHtcXG4tXFx0Y29uc3Qgc3RydWN0IGltc2ljX2dsb2JhbF9jb25maWcgKmdjO1xcbi1cXHRjb25zdCBzdHJ1Y3QgaW1zaWNfbG9jYWxfY29uZmlnICpsYztcXG4gXFx0c3RydWN0IGFpYV9oZ2VpX2NvbnRyb2wgKmhnY3RybDtcXG4gXFx0dW5zaWduZWQgbG9uZyBmbGFncztcXG4tXFx0aW50IGFpYV9ucl9oZ2VpO1xcbiBcXG4gXFx0aWYgKCFrdm1fcmlzY3ZfYWlhX2F2YWlsYWJsZSgpKVxcbiBcXHRcXHRyZXR1cm47XFxuIFxcbi1cXHRnYyA9IGltc2ljX2dldF9nbG9iYWxfY29uZmlnKCk7XFxuLVxcdGxjID0gKGdjKSA/IHRoaXNfY3B1X3B0cihnYy1cXHUwMDNlbG9jYWwpIDogTlVMTDtcXG4gXFx0aGdjdHJsID0gdGhpc19jcHVfcHRyKFxcdTAwMjZhaWFfaGdlaSk7XFxuIFxcbi1cXHQvKiBGaWd1cmUtb3V0IG51bWJlciBvZiBiaXRzIGluIEhHRUlFICovXFxuLVxcdGNzcl93cml0ZShDU1JfSEdFSUUsIC0xVUwpO1xcbi1cXHRoZ2N0cmwtXFx1MDAzZW5yX2hnZWkgPSBmbHNfbG9uZyhjc3JfcmVhZChDU1JfSEdFSUUpKTtcXG4tXFx0Y3NyX3dyaXRlKENTUl9IR0VJRSwgMCk7XFxuLVxcdGlmIChoZ2N0cmwtXFx1MDAzZW5yX2hnZWkpXFxuLVxcdFxcdGhnY3RybC1cXHUwMDNlbnJfaGdlaS0tO1xcbitcXHRpZiAoZnVsbF9jbGVhbnVwKSB7XFxuK1xcdFxcdGNvbnN0IHN0cnVjdCBpbXNpY19nbG9iYWxfY29uZmlnICpnYztcXG4rXFx0XFx0Y29uc3Qgc3RydWN0IGltc2ljX2xvY2FsX2NvbmZpZyAqbGM7XFxuK1xcdFxcdGludCBhaWFfbnJfaGdlaTtcXG4gXFxuLVxcdC8qXFxuLVxcdCAqIE51bWJlciBvZiB1c2FibGUgcGVyLUhBUlQgSEdFSSBsaW5lcyBzaG91bGQgYmUgbWluaW11bSBvZlxcbi1cXHQgKiBwZXItSEFSVCBJTVNJQyBndWVzdCBmaWxlcyBhbmQgbnVtYmVyIG9mIGJpdHMgaW4gSEdFSUUuXFxuLVxcdCAqL1xcbi1cXHRpZiAobGMpXFxuLVxcdFxcdGhnY3RybC1cXHUwMDNlbnJfaGdlaSA9IG1pbigodWxvbmcpaGdjdHJsLVxcdTAwM2Vucl9oZ2VpLCBsYy1cXHUwMDNlbnJfZ3Vlc3RfZmlsZXMpO1xcbi1cXHRlbHNlXFxuLVxcdFxcdGhnY3RybC1cXHUwMDNlbnJfaGdlaSA9IDA7XFxuK1xcdFxcdGdjID0gaW1zaWNfZ2V0X2dsb2JhbF9jb25maWcoKTtcXG4rXFx0XFx0bGMgPSAoZ2MpID8gdGhpc19jcHVfcHRyKGdjLVxcdTAwM2Vsb2NhbCkgOiBOVUxMO1xcbiBcXG4tXFx0LyogVXBkYXRlIHRoZSBudW1iZXIgb2YgSU1TSUMgZ3Vlc3QgZmlsZXMgYWNyb3NzIGFsbCBIQVJUcyAqL1xcbi1cXHRhaWFfbnJfaGdlaSA9IGF0b21pY19yZWFkKFxcdTAwMjZrdm1fcmlzY3ZfYWlhX25yX2hnZWkpO1xcbi1cXHRkbyB7XFxuLVxcdFxcdGlmIChhaWFfbnJfaGdlaSBcXHUwMDNjPSBoZ2N0cmwtXFx1MDAzZW5yX2hnZWkpXFxuLVxcdFxcdFxcdGJyZWFrO1xcbi1cXHR9IHdoaWxlICghYXRvbWljX3RyeV9jbXB4Y2hnKFxcdTAwMjZrdm1fcmlzY3ZfYWlhX25yX2hnZWksIFxcdTAwMjZhaWFfbnJfaGdlaSwgaGdjdHJsLVxcdTAwM2Vucl9oZ2VpKSk7XFxuK1xcdFxcdC8qIEZpZ3VyZS1vdXQgbnVtYmVyIG9mIGJpdHMgaW4gSEdFSUUgKi9cXG4rXFx0XFx0Y3NyX3dyaXRlKENTUl9IR0VJRSwgLTFVTCk7XFxuK1xcdFxcdGhnY3RybC1cXHUwMDNlbnJfaGdlaSA9IGZsc19sb25nKGNzcl9yZWFkKENTUl9IR0VJRSkpO1xcbitcXHRcXHRjc3Jfd3JpdGUoQ1NSX0hHRUlFLCAwKTtcXG4rXFx0XFx0aWYgKGhnY3RybC1cXHUwMDNlbnJfaGdlaSlcXG4rXFx0XFx0XFx0aGdjdHJsLVxcdTAwM2Vucl9oZ2VpLS07XFxuIFxcbi1cXHRyYXdfc3Bpbl9sb2NrX2lycXNhdmUoXFx1MDAyNmhnY3RybC1cXHUwMDNlbG9jaywgZmxhZ3MpO1xcbi1cXHRpZiAoIWhnY3RybC1cXHUwMDNlZnJlZV9iaXRtYXBfaW5pdGlhbGl6ZWQpIHtcXG4tXFx0XFx0aGdjdHJsLVxcdTAwM2VmcmVlX2JpdG1hcCA9IChoZ2N0cmwtXFx1MDAzZW5yX2hnZWkpID8gR0VOTUFTS19VTEwoaGdjdHJsLVxcdTAwM2Vucl9oZ2VpLCAxKSA6IDA7XFxuLVxcdFxcdGhnY3RybC1cXHUwMDNlZnJlZV9iaXRtYXBfaW5pdGlhbGl6ZWQgPSB0cnVlO1xcbitcXHRcXHQvKlxcbitcXHRcXHQgKiBOdW1iZXIgb2YgdXNhYmxlIHBlci1IQVJUIEhHRUkgbGluZXMgc2hvdWxkIGJlIG1pbmltdW0gb2ZcXG4rXFx0XFx0ICogcGVyLUhBUlQgSU1TSUMgZ3Vlc3QgZmlsZXMgYW5kIG51bWJlciBvZiBiaXRzIGluIEhHRUlFLlxcbitcXHRcXHQgKi9cXG4rXFx0XFx0aWYgKGxjKVxcbitcXHRcXHRcXHRoZ2N0cmwtXFx1MDAzZW5yX2hnZWkgPSBtaW4oKHVsb25nKWhnY3RybC1cXHUwMDNlbnJfaGdlaSwgbGMtXFx1MDAzZW5yX2d1ZXN0X2ZpbGVzKTtcXG4rXFx0XFx0ZWxzZVxcbitcXHRcXHRcXHRoZ2N0cmwtXFx1MDAzZW5yX2hnZWkgPSAwO1xcbitcXG4rXFx0XFx0LyogVXBkYXRlIHRoZSBudW1iZXIgb2YgSU1TSUMgZ3Vlc3QgZmlsZXMgYWNyb3NzIGFsbCBIQVJUcyAqL1xcbitcXHRcXHRhaWFfbnJfaGdlaSA9IGF0b21pY19yZWFkKFxcdTAwMjZrdm1fcmlzY3ZfYWlhX25yX2hnZWkpO1xcbitcXHRcXHRkbyB7XFxuK1xcdFxcdFxcdGlmIChhaWFfbnJfaGdlaSBcXHUwMDNjPSBoZ2N0cmwtXFx1MDAzZW5yX2hnZWkpXFxuK1xcdFxcdFxcdFxcdGJyZWFrO1xcbitcXHRcXHR9IHdoaWxlICghYXRvbWljX3RyeV9jbXB4Y2hnKFxcdTAwMjZrdm1fcmlzY3ZfYWlhX25yX2hnZWksIFxcdTAwMjZhaWFfbnJfaGdlaSxcXG4rXFx0XFx0XFx0XFx0XFx0ICAgICBoZ2N0cmwtXFx1MDAzZW5yX2hnZWkpKTtcXG4rXFxuK1xcdFxcdHJhd19zcGluX2xvY2tfaXJxc2F2ZShcXHUwMDI2aGdjdHJsLVxcdTAwM2Vsb2NrLCBmbGFncyk7XFxuK1xcdFxcdGlmICghaGdjdHJsLVxcdTAwM2VmcmVlX2JpdG1hcF9pbml0aWFsaXplZCkge1xcbitcXHRcXHRcXHRoZ2N0cmwtXFx1MDAzZWZyZWVfYml0bWFwID0gKGhnY3RybC1cXHUwMDNlbnJfaGdlaSkgP1xcbitcXHRcXHRcXHRcXHRcXHQgICAgICBHRU5NQVNLX1VMTChoZ2N0cmwtXFx1MDAzZW5yX2hnZWksIDEpIDpcXG4rXFx0XFx0XFx0XFx0XFx0ICAgICAgMDtcXG4rXFx0XFx0XFx0aGdjdHJsLVxcdTAwM2VmcmVlX2JpdG1hcF9pbml0aWFsaXplZCA9IHRydWU7XFxuK1xcdFxcdH1cXG4rXFx0XFx0cmF3X3NwaW5fdW5sb2NrX2lycXJlc3RvcmUoXFx1MDAyNmhnY3RybC1cXHUwMDNlbG9jaywgZmxhZ3MpO1xcbitcXHR9IGVsc2Uge1xcbitcXHRcXHRjc3Jfd3JpdGUoQ1NSX0hHRUlFLCBoZ2N0cmwtXFx1MDAzZXNhdmVkX3ZhbHVlKTtcXG4gXFx0fVxcbi1cXHRyYXdfc3Bpbl91bmxvY2tfaXJxcmVzdG9yZShcXHUwMDI2aGdjdHJsLVxcdTAwM2Vsb2NrLCBmbGFncyk7XFxuIFxcbiBcXHRjc3Jfd3JpdGUoQ1NSX0hWSUNUTCwgYWlhX2h2aWN0bF92YWx1ZShmYWxzZSkpO1xcbiBcXHRjc3Jfd3JpdGUoQ1NSX0hWSVBSSU8xLCAweDApO1xcbkBAIC01ODcsMTYgKzU5NywxNyBAQCB2b2lkIGt2bV9yaXNjdl9haWFfZW5hYmxlKHZvaWQpXFxuIFxcdGNzcl93cml0ZShDU1JfSFZJUFJJTzJILCAweDApO1xcbiAjZW5kaWZcXG4gXFxuLVxcdC8qIEVuYWJsZSBwZXItQ1BVIFNHRUkgaW50ZXJydXB0ICovXFxuLVxcdGVuYWJsZV9wZXJjcHVfaXJxKGhnZWlfcGFyZW50X2lycSxcXG4tXFx0XFx0XFx0ICBpcnFfZ2V0X3RyaWdnZXJfdHlwZShoZ2VpX3BhcmVudF9pcnEpKTtcXG4rXFx0aWYgKGZ1bGxfY2xlYW51cClcXG4rXFx0XFx0ZW5hYmxlX3BlcmNwdV9pcnEoaGdlaV9wYXJlbnRfaXJxLFxcbitcXHRcXHRcXHRcXHQgIGlycV9nZXRfdHJpZ2dlcl90eXBlKGhnZWlfcGFyZW50X2lycSkpO1xcbiBcXHRjc3Jfc2V0KENTUl9ISUUsIEJJVChJUlFfU19HRVhUKSk7XFxuK1xcbiBcXHQvKiBFbmFibGUgSVJRIGZpbHRlcmluZyBmb3Igb3ZlcmZsb3cgaW50ZXJydXB0IG9ubHkgaWYgc3Njb2ZwbWYgaXMgcHJlc2VudCAqL1xcbiBcXHRpZiAoX19yaXNjdl9pc2FfZXh0ZW5zaW9uX2F2YWlsYWJsZShOVUxMLCBSSVNDVl9JU0FfRVhUX1NTQ09GUE1GKSlcXG4gXFx0XFx0Y3NyX3NldChDU1JfSFZJRU4sIEJJVChJUlFfUE1VX09WRikpO1xcbiB9XFxuIFxcbi12b2lkIGt2bV9yaXNjdl9haWFfZGlzYWJsZSh2b2lkKVxcbit2b2lkIGt2bV9yaXNjdl9haWFfZGlzYWJsZShib29sIGZ1bGxfY2xlYW51cClcXG4ge1xcbiBcXHRpbnQgaTtcXG4gXFx0dW5zaWduZWQgbG9uZyBmbGFncztcXG5AQCAtNjA5LDQyICs2MjAsNDkgQEAgdm9pZCBrdm1fcmlzY3ZfYWlhX2Rpc2FibGUodm9pZClcXG4gXFxuIFxcdGlmIChfX3Jpc2N2X2lzYV9leHRlbnNpb25fYXZhaWxhYmxlKE5VTEwsIFJJU0NWX0lTQV9FWFRfU1NDT0ZQTUYpKVxcbiBcXHRcXHRjc3JfY2xlYXIoQ1NSX0hWSUVOLCBCSVQoSVJRX1BNVV9PVkYpKTtcXG4tXFx0LyogRGlzYWJsZSBwZXItQ1BVIFNHRUkgaW50ZXJydXB0ICovXFxuLVxcdGNzcl9jbGVhcihDU1JfSElFLCBCSVQoSVJRX1NfR0VYVCkpO1xcbi1cXHRkaXNhYmxlX3BlcmNwdV9pcnEoaGdlaV9wYXJlbnRfaXJxKTtcXG4gXFxuLVxcdGNzcl93cml0ZShDU1JfSFZJQ1RMLCBhaWFfaHZpY3RsX3ZhbHVlKGZhbHNlKSk7XFxuLVxcbi1cXHRyYXdfc3Bpbl9sb2NrX2lycXNhdmUoXFx1MDAyNmhnY3RybC1cXHUwMDNlbG9jaywgZmxhZ3MpO1xcbi1cXG4tXFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjPSBoZ2N0cmwtXFx1MDAzZW5yX2hnZWk7IGkrKykge1xcbi1cXHRcXHR2Y3B1ID0gaGdjdHJsLVxcdTAwM2Vvd25lcnNbaV07XFxuLVxcdFxcdGlmICghdmNwdSlcXG4tXFx0XFx0XFx0Y29udGludWU7XFxuK1xcdGlmIChmdWxsX2NsZWFudXApIHtcXG4rXFx0XFx0LyogRGlzYWJsZSBwZXItQ1BVIFNHRUkgaW50ZXJydXB0ICovXFxuK1xcdFxcdGNzcl9jbGVhcihDU1JfSElFLCBCSVQoSVJRX1NfR0VYVCkpO1xcbitcXHRcXHRkaXNhYmxlX3BlcmNwdV9pcnEoaGdlaV9wYXJlbnRfaXJxKTtcXG4rXFx0fVxcbiBcXG4tXFx0XFx0LypcXG4tXFx0XFx0ICogV2UgcmVsZWFzZSBoZ2N0cmwtXFx1MDAzZWxvY2sgYmVmb3JlIG5vdGlmeWluZyBJTVNJQ1xcbi1cXHRcXHQgKiBzbyB0aGF0IHdlIGRvbid0IGhhdmUgbG9jayBvcmRlcmluZyBpc3N1ZXMuXFxuLVxcdFxcdCAqL1xcbi1cXHRcXHRyYXdfc3Bpbl91bmxvY2tfaXJxcmVzdG9yZShcXHUwMDI2aGdjdHJsLVxcdTAwM2Vsb2NrLCBmbGFncyk7XFxuK1xcdGNzcl93cml0ZShDU1JfSFZJQ1RMLCBhaWFfaHZpY3RsX3ZhbHVlKGZhbHNlKSk7XFxuIFxcbi1cXHRcXHQvKiBOb3RpZnkgSU1TSUMgKi9cXG4tXFx0XFx0a3ZtX3Jpc2N2X3ZjcHVfYWlhX2ltc2ljX3JlbGVhc2UodmNwdSk7XFxuK1xcdGlmIChmdWxsX2NsZWFudXApIHtcXG4rXFx0XFx0cmF3X3NwaW5fbG9ja19pcnFzYXZlKFxcdTAwMjZoZ2N0cmwtXFx1MDAzZWxvY2ssIGZsYWdzKTtcXG4gXFxuLVxcdFxcdC8qXFxuLVxcdFxcdCAqIFdha2V1cCBWQ1BVIGlmIGl0IHdhcyBibG9ja2VkIHNvIHRoYXQgaXQgY2FuXFxuLVxcdFxcdCAqIHJ1biBvbiBvdGhlciBIQVJUc1xcbi1cXHRcXHQgKi9cXG4tXFx0XFx0aWYgKGNzcl9yZWFkKENTUl9IR0VJRSkgXFx1MDAyNiBCSVQoaSkpIHtcXG4tXFx0XFx0XFx0Y3NyX2NsZWFyKENTUl9IR0VJRSwgQklUKGkpKTtcXG4tXFx0XFx0XFx0a3ZtX3ZjcHVfa2ljayh2Y3B1KTtcXG4rXFx0XFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjPSBoZ2N0cmwtXFx1MDAzZW5yX2hnZWk7IGkrKykge1xcbitcXHRcXHRcXHR2Y3B1ID0gaGdjdHJsLVxcdTAwM2Vvd25lcnNbaV07XFxuK1xcdFxcdFxcdGlmICghdmNwdSlcXG4rXFx0XFx0XFx0XFx0Y29udGludWU7XFxuK1xcbitcXHRcXHRcXHQvKlxcbitcXHRcXHRcXHQgKiBXZSByZWxlYXNlIGhnY3RybC1cXHUwMDNlbG9jayBiZWZvcmUgbm90aWZ5aW5nIElNU0lDXFxuK1xcdFxcdFxcdCAqIHNvIHRoYXQgd2UgZG9uJ3QgaGF2ZSBsb2NrIG9yZGVyaW5nIGlzc3Vlcy5cXG4rXFx0XFx0XFx0ICovXFxuK1xcdFxcdFxcdHJhd19zcGluX3VubG9ja19pcnFyZXN0b3JlKFxcdTAwMjZoZ2N0cmwtXFx1MDAzZWxvY2ssIGZsYWdzKTtcXG4rXFxuK1xcdFxcdFxcdC8qIE5vdGlmeSBJTVNJQyAqL1xcbitcXHRcXHRcXHRrdm1fcmlzY3ZfdmNwdV9haWFfaW1zaWNfcmVsZWFzZSh2Y3B1KTtcXG4rXFxuK1xcdFxcdFxcdC8qXFxuK1xcdFxcdFxcdCAqIFdha2V1cCBWQ1BVIGlmIGl0IHdhcyBibG9ja2VkIHNvIHRoYXQgaXQgY2FuXFxuK1xcdFxcdFxcdCAqIHJ1biBvbiBvdGhlciBIQVJUc1xcbitcXHRcXHRcXHQgKi9cXG4rXFx0XFx0XFx0aWYgKGNzcl9yZWFkKENTUl9IR0VJRSkgXFx1MDAyNiBCSVQoaSkpIHtcXG4rXFx0XFx0XFx0XFx0Y3NyX2NsZWFyKENTUl9IR0VJRSwgQklUKGkpKTtcXG4rXFx0XFx0XFx0XFx0a3ZtX3ZjcHVfa2ljayh2Y3B1KTtcXG4rXFx0XFx0XFx0fVxcbitcXG4rXFx0XFx0XFx0cmF3X3NwaW5fbG9ja19pcnFzYXZlKFxcdTAwMjZoZ2N0cmwtXFx1MDAzZWxvY2ssIGZsYWdzKTtcXG4gXFx0XFx0fVxcbiBcXG4tXFx0XFx0cmF3X3NwaW5fbG9ja19pcnFzYXZlKFxcdTAwMjZoZ2N0cmwtXFx1MDAzZWxvY2ssIGZsYWdzKTtcXG4rXFx0XFx0cmF3X3NwaW5fdW5sb2NrX2lycXJlc3RvcmUoXFx1MDAyNmhnY3RybC1cXHUwMDNlbG9jaywgZmxhZ3MpO1xcbitcXHR9IGVsc2Uge1xcbitcXHRcXHRoZ2N0cmwtXFx1MDAzZXNhdmVkX3ZhbHVlID0gY3NyX3JlYWQoQ1NSX0hHRUlFKTtcXG4gXFx0fVxcbiBcXG4tXFx0cmF3X3NwaW5fdW5sb2NrX2lycXJlc3RvcmUoXFx1MDAyNmhnY3RybC1cXHUwMDNlbG9jaywgZmxhZ3MpO1xcbi1cXG4gXFx0cHV0X2NwdV9wdHIoXFx1MDAyNmFpYV9oZ2VpKTtcXG4gfVxcbiBcXG5kaWZmIC0tZ2l0IGEvYXJjaC9yaXNjdi9rdm0vbWFpbi5jIGIvYXJjaC9yaXNjdi9rdm0vbWFpbi5jXFxuaW5kZXggMDkyNGM3NTEwMGEyZDAuLmI0OGJiZDE4NTVjMWUyIDEwMDY0NFxcbi0tLSBhL2FyY2gvcmlzY3Yva3ZtL21haW4uY1xcbisrKyBiL2FyY2gvcmlzY3Yva3ZtL21haW4uY1xcbkBAIC0xMCw2ICsxMCw3IEBAXFxuICNpbmNsdWRlIFxcdTAwM2NsaW51eC9lcnIuaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L21vZHVsZS5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXHUwMDNjbGludXgva3ZtX2hvc3QuaFxcdTAwM2VcXG4rI2luY2x1ZGUgXFx1MDAzY2xpbnV4L2NwdV9wbS5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXHUwMDNjYXNtL2NwdWZlYXR1cmUuaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY2FzbS9rdm1fbW11LmhcXHUwMDNlXFxuICNpbmNsdWRlIFxcdTAwM2Nhc20va3ZtX25hY2wuaFxcdTAwM2VcXG5AQCAtMzMsMTQgKzM0LDkgQEAgbG9uZyBrdm1fYXJjaF9kZXZfaW9jdGwoc3RydWN0IGZpbGUgKmZpbHAsXFxuIFxcdHJldHVybiAtRUlOVkFMO1xcbiB9XFxuIFxcbi1pbnQga3ZtX2FyY2hfZW5hYmxlX3ZpcnR1YWxpemF0aW9uX2NwdSh2b2lkKVxcbisvKiBJbml0aWFsaXplIGh5cGVydmlzb3IgQ1NScyAtIGNhbGxlZCBkdXJpbmcgQ1BVIG9ubGluZSBhbmQgbm9uLXJldGVudGlvbiBpZGxlIHJlc3VtZSAqL1xcbitzdGF0aWMgdm9pZCBrdm1fcmlzY3ZfY3NyX2VuYWJsZSh2b2lkKVxcbiB7XFxuLVxcdGludCByYztcXG4tXFxuLVxcdHJjID0ga3ZtX3Jpc2N2X25hY2xfZW5hYmxlKCk7XFxuLVxcdGlmIChyYylcXG4tXFx0XFx0cmV0dXJuIHJjO1xcbi1cXG4gXFx0Y3NyX3dyaXRlKENTUl9IRURFTEVHLCAwKTtcXG4gXFx0Y3NyX3dyaXRlKENTUl9ISURFTEVHLCAwKTtcXG4gXFxuQEAgLTQ4LDE2ICs0NCwxMSBAQCBpbnQga3ZtX2FyY2hfZW5hYmxlX3ZpcnR1YWxpemF0aW9uX2NwdSh2b2lkKVxcbiBcXHRjc3Jfd3JpdGUoQ1NSX0hDT1VOVEVSRU4sIDB4MDIpO1xcbiBcXG4gXFx0Y3NyX3dyaXRlKENTUl9IVklQLCAwKTtcXG4tXFxuLVxcdGt2bV9yaXNjdl9haWFfZW5hYmxlKCk7XFxuLVxcbi1cXHRyZXR1cm4gMDtcXG4gfVxcbiBcXG4tdm9pZCBrdm1fYXJjaF9kaXNhYmxlX3ZpcnR1YWxpemF0aW9uX2NwdSh2b2lkKVxcbisvKiBDbGVhciBoeXBlcnZpc29yIENTUnMgLSBjYWxsZWQgZHVyaW5nIENQVSBvZmZsaW5lIGFuZCBub24tcmV0ZW50aW9uIGlkbGUgZW50cnkgKi9cXG4rc3RhdGljIHZvaWQga3ZtX3Jpc2N2X2Nzcl9kaXNhYmxlKHZvaWQpXFxuIHtcXG4tXFx0a3ZtX3Jpc2N2X2FpYV9kaXNhYmxlKCk7XFxuLVxcbiBcXHQvKlxcbiBcXHQgKiBBZnRlciBjbGVhcmluZyB0aGUgaGlkZWxlZyBDU1IsIHRoZSBob3N0IGtlcm5lbCB3aWxsIHJlY2VpdmVcXG4gXFx0ICogc3B1cmlvdXMgaW50ZXJydXB0cyBpZiBodmlwIENTUiBoYXMgcGVuZGluZyBpbnRlcnJ1cHRzIGFuZCB0aGVcXG5AQCAtNjksOSArNjAsNTMgQEAgdm9pZCBrdm1fYXJjaF9kaXNhYmxlX3ZpcnR1YWxpemF0aW9uX2NwdSh2b2lkKVxcbiBcXHRjc3Jfd3JpdGUoQ1NSX0hFREVMRUcsIDApO1xcbiBcXHRjc3Jfd3JpdGUoQ1NSX0hJREVMRUcsIDApO1xcbiBcXG4rXFx0a3ZtX3Jpc2N2X2NsZWFyX2Zvcm1lcl92Y3B1KCk7XFxuK31cXG4rXFxuK2ludCBrdm1fYXJjaF9lbmFibGVfdmlydHVhbGl6YXRpb25fY3B1KHZvaWQpXFxuK3tcXG4rXFx0aW50IHJjO1xcbitcXG4rXFx0cmMgPSBrdm1fcmlzY3ZfbmFjbF9lbmFibGUoKTtcXG4rXFx0aWYgKHJjKVxcbitcXHRcXHRyZXR1cm4gcmM7XFxuK1xcbitcXHRrdm1fcmlzY3ZfY3NyX2VuYWJsZSgpO1xcbitcXHRrdm1fcmlzY3ZfYWlhX2VuYWJsZSh0cnVlKTtcXG4rXFxuK1xcdHJldHVybiAwO1xcbit9XFxuK1xcbit2b2lkIGt2bV9hcmNoX2Rpc2FibGVfdmlydHVhbGl6YXRpb25fY3B1KHZvaWQpXFxuK3tcXG4rXFx0a3ZtX3Jpc2N2X2FpYV9kaXNhYmxlKHRydWUpO1xcbitcXHRrdm1fcmlzY3ZfY3NyX2Rpc2FibGUoKTtcXG4gXFx0a3ZtX3Jpc2N2X25hY2xfZGlzYWJsZSgpO1xcbiB9XFxuIFxcbitzdGF0aWMgaW50IGt2bV9yaXNjdl9jcHVfcG1fbm90aWZpZXIoc3RydWN0IG5vdGlmaWVyX2Jsb2NrICpzZWxmLCB1bnNpZ25lZCBsb25nIGNtZCwgdm9pZCAqdilcXG4re1xcbitcXHRzd2l0Y2ggKGNtZCkge1xcbitcXHRjYXNlIENQVV9QTV9FWElUOlxcbitcXHRjYXNlIENQVV9QTV9FTlRFUl9GQUlMRUQ6XFxuK1xcdFxcdGt2bV9yaXNjdl9jc3JfZW5hYmxlKCk7XFxuK1xcdFxcdGt2bV9yaXNjdl9haWFfZW5hYmxlKGZhbHNlKTtcXG4rXFx0XFx0cmV0dXJuIE5PVElGWV9PSztcXG4rXFx0Y2FzZSBDUFVfUE1fRU5URVI6XFxuK1xcdFxcdGt2bV9yaXNjdl9haWFfZGlzYWJsZShmYWxzZSk7XFxuK1xcdFxcdGt2bV9yaXNjdl9jc3JfZGlzYWJsZSgpO1xcbitcXHRcXHRyZXR1cm4gTk9USUZZX09LO1xcbitcXHRkZWZhdWx0OlxcbitcXHRcXHRicmVhaztcXG4rXFx0fVxcbitcXG4rXFx0cmV0dXJuIE5PVElGWV9ET05FO1xcbit9XFxuK1xcbitzdGF0aWMgc3RydWN0IG5vdGlmaWVyX2Jsb2NrIGt2bV9yaXNjdl9jcHVfcG1fbmIgPSB7XFxuK1xcdC5ub3RpZmllcl9jYWxsID0ga3ZtX3Jpc2N2X2NwdV9wbV9ub3RpZmllcixcXG4rfTtcXG4rXFxuIHN0YXRpYyB2b2lkIGt2bV9yaXNjdl90ZWFyZG93bih2b2lkKVxcbiB7XFxuIFxcdGt2bV9yaXNjdl9haWFfZXhpdCgpO1xcbkBAIC0xNzIsMjIgKzIwNyw0MCBAQCBzdGF0aWMgaW50IF9faW5pdCByaXNjdl9rdm1faW5pdCh2b2lkKVxcbiBcXG4gXFx0a3ZtX3JlZ2lzdGVyX3BlcmZfY2FsbGJhY2tzKCk7XFxuIFxcbi1cXHRyYyA9IGt2bV9pbml0KHNpemVvZihzdHJ1Y3Qga3ZtX3ZjcHUpLCAwLCBUSElTX01PRFVMRSk7XFxuLVxcdGlmIChyYykge1xcbi1cXHRcXHRrdm1fcmlzY3ZfdGVhcmRvd24oKTtcXG4tXFx0XFx0cmV0dXJuIHJjO1xcbitcXHQvKiBSZWdpc3RlciBDUFUgUE0gbm90aWZpZXIgZm9yIENQVSBpZGxlIG5vbi1yZXRlbnRpb24gc3RhdGVzICovXFxuK1xcdGlmIChJU19FTkFCTEVEKENPTkZJR19DUFVfUE0pKSB7XFxuK1xcdFxcdHJjID0gY3B1X3BtX3JlZ2lzdGVyX25vdGlmaWVyKFxcdTAwMjZrdm1fcmlzY3ZfY3B1X3BtX25iKTtcXG4rXFx0XFx0aWYgKHJjKSB7XFxuK1xcdFxcdFxcdGt2bV9lcnIoXFxcIkZhaWxlZCB0byByZWdpc3RlciBDUFUgUE0gbm90aWZpZXI6ICVkXFxcXG5cXFwiLCByYyk7XFxuK1xcdFxcdFxcdGdvdG8gZXJyX3RlYXJkb3duO1xcbitcXHRcXHR9XFxuIFxcdH1cXG4gXFxuK1xcdHJjID0ga3ZtX2luaXQoc2l6ZW9mKHN0cnVjdCBrdm1fdmNwdSksIDAsIFRISVNfTU9EVUxFKTtcXG4rXFx0aWYgKHJjKVxcbitcXHRcXHRnb3RvIGVycl91bnJlZ2lzdGVyX2NwdV9wbTtcXG4rXFxuIFxcdGlmIChrdm1fcmlzY3ZfYWlhX2F2YWlsYWJsZSgpKVxcbiBcXHRcXHRrdm1faW5mbyhcXFwiQUlBIGF2YWlsYWJsZSB3aXRoICVkIGd1ZXN0IGV4dGVybmFsIGludGVycnVwdHNcXFxcblxcXCIsXFxuIFxcdFxcdFxcdCBhdG9taWNfcmVhZChcXHUwMDI2a3ZtX3Jpc2N2X2FpYV9ucl9oZ2VpKSk7XFxuIFxcbiBcXHRyZXR1cm4gMDtcXG4rXFxuK2Vycl91bnJlZ2lzdGVyX2NwdV9wbTpcXG4rXFx0aWYgKElTX0VOQUJMRUQoQ09ORklHX0NQVV9QTSkpXFxuK1xcdFxcdGNwdV9wbV91bnJlZ2lzdGVyX25vdGlmaWVyKFxcdTAwMjZrdm1fcmlzY3ZfY3B1X3BtX25iKTtcXG4rZXJyX3RlYXJkb3duOlxcbitcXHRrdm1fcmlzY3ZfdGVhcmRvd24oKTtcXG4rXFx0cmV0dXJuIHJjO1xcbiB9XFxuIG1vZHVsZV9pbml0KHJpc2N2X2t2bV9pbml0KTtcXG4gXFxuIHN0YXRpYyB2b2lkIF9fZXhpdCByaXNjdl9rdm1fZXhpdCh2b2lkKVxcbiB7XFxuK1xcdC8qIFVucmVnaXN0ZXIgQ1BVIFBNIG5vdGlmaWVyICovXFxuK1xcdGlmIChJU19FTkFCTEVEKENPTkZJR19DUFVfUE0pKVxcbitcXHRcXHRjcHVfcG1fdW5yZWdpc3Rlcl9ub3RpZmllcihcXHUwMDI2a3ZtX3Jpc2N2X2NwdV9wbV9uYik7XFxuK1xcbiBcXHRrdm1fZXhpdCgpO1xcbiBcXG4gXFx0a3ZtX3Jpc2N2X3RlYXJkb3duKCk7XFxuZGlmZiAtLWdpdCBhL2FyY2gvcmlzY3Yva3ZtL3ZjcHUuYyBiL2FyY2gvcmlzY3Yva3ZtL3ZjcHUuY1xcbmluZGV4IGNmNmUyMzFlNzZlMjU0Li5lNDgzMzhmOTA3ZjQ4OCAxMDA2NDRcXG4tLS0gYS9hcmNoL3Jpc2N2L2t2bS92Y3B1LmNcXG4rKysgYi9hcmNoL3Jpc2N2L2t2bS92Y3B1LmNcXG5AQCAtMjYsNiArMjYsMTcgQEBcXG4gXFxuIHN0YXRpYyBERUZJTkVfUEVSX0NQVShzdHJ1Y3Qga3ZtX3ZjcHUgKiwga3ZtX2Zvcm1lcl92Y3B1KTtcXG4gXFxuK3ZvaWQga3ZtX3Jpc2N2X2NsZWFyX2Zvcm1lcl92Y3B1KHZvaWQpXFxuK3tcXG4rXFx0LypcXG4rXFx0ICogQ2xlYXIgdGhlIHBlci1DUFUgZm9ybWVyIFZDUFUgcG9pbnRlciBiZWNhdXNlIGh5cGVydmlzb3IgQ1NSIHN0YXRlXFxuK1xcdCAqIHdpbGwgYmUgbG9zdC4gVGhpcyBlbnN1cmVzIHRoYXQgdGhlIG5leHQgVkNQVSBlbnRyeSB3aWxsIHByb3Blcmx5XFxuK1xcdCAqIHJlc3RvcmUgYWxsIENTUnMgaW5zdGVhZCBvZiBpbmNvcnJlY3RseSBza2lwcGluZyBDU1IgcmVzdG9yYXRpb25cXG4rXFx0ICogdmlhIHRoZSBmYXN0LXBhdGggb3B0aW1pemF0aW9uLlxcbitcXHQgKi9cXG4rXFx0X190aGlzX2NwdV93cml0ZShrdm1fZm9ybWVyX3ZjcHUsIE5VTEwpO1xcbit9XFxuK1xcbiBjb25zdCBzdHJ1Y3Qga3ZtX3N0YXRzX2Rlc2Mga3ZtX3ZjcHVfc3RhdHNfZGVzY1tdID0ge1xcbiBcXHRLVk1fR0VORVJJQ19WQ1BVX1NUQVRTKCksXFxuIFxcdFNUQVRTX0RFU0NfQ09VTlRFUihWQ1BVLCBlY2FsbF9leGl0X3N0YXQpLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yM1QwMDo0NToyOS4wMTg0NjA3NjFaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjoyMTQ3OTc5Njg0NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJLVk1cIixcbiAgICBcIkNQVV9QTVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImt2bV9yaXNjdl9haWFfZW5hYmxlXCIsXG4gICAgXCJrdm1fcmlzY3ZfYWlhX2Rpc2FibGVcIixcbiAgICBcImt2bV9yaXNjdl9jcHVfcG1fbm90aWZpZXJcIixcbiAgICBcImt2bV9yaXNjdl9jbGVhcl9mb3JtZXJfdmNwdVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIFJJU0MtViBLVk0gdG8gcHJvcGVybHkgaGFuZGxlIENQVSBwb3dlciBtYW5hZ2VtZW50IChpZGxlIG5vbi1yZXRlbnRpb24gc3RhdGVzKSBieSBzYXZpbmcgYW5kIHJlc3RvcmluZyBBSUEgKEFkdmFuY2VkIEludGVycnVwdCBBcmNoaXRlY3R1cmUpIGFuZCBoeXBlcnZpc29yIENTUiBzdGF0ZS4gVGhpcyBpcyBjb3JlIEtWTSBsb2dpYyBhbmQgc2hvdWxkIGJlIGZ1enplZCB0byBlbnN1cmUgbm8gc3RhdGUgaXMgbG9zdCBvciBjb3JydXB0ZWQgZHVyaW5nIENQVSBpZGxlIHRyYW5zaXRpb25zLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG5ldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0XG4gICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksXG4gICBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IGJiODA4MTNmYmUzMzM0OTA5YjUxMjcxNmU1ZjgyY2QwYjU5Mjk3YjBcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVGh1IEp1bCAyMyAwMDo0NToyNiAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2FyY2gvcmlzY3YvaW5jbHVkZS9hc20va3ZtX2FpYS5oIGIvYXJjaC9yaXNjdi9pbmNsdWRlL2FzbS9rdm1fYWlhLmhcbmluZGV4IGM2N2VjNWFjMGExNDZiLi43YzFjMzI1MDU5OGZiMCAxMDA2NDRcbi0tLSBhL2FyY2gvcmlzY3YvaW5jbHVkZS9hc20va3ZtX2FpYS5oXG4rKysgYi9hcmNoL3Jpc2N2L2luY2x1ZGUvYXNtL2t2bV9haWEuaFxuQEAgLTE2NSw4ICsxNjUsMTkgQEAgaW50IGt2bV9yaXNjdl9haWFfYWxsb2NfaGdlaShpbnQgY3B1LCBzdHJ1Y3Qga3ZtX3ZjcHUgKm93bmVyLFxuIFx0XHRcdCAgICAgdm9pZCBfX2lvbWVtICoqaGdlaV92YSwgcGh5c19hZGRyX3QgKmhnZWlfcGEpO1xuIHZvaWQga3ZtX3Jpc2N2X2FpYV9mcmVlX2hnZWkoaW50IGNwdSwgaW50IGhnZWkpO1xuIFxuLXZvaWQga3ZtX3Jpc2N2X2FpYV9lbmFibGUodm9pZCk7XG4tdm9pZCBrdm1fcmlzY3ZfYWlhX2Rpc2FibGUodm9pZCk7XG4rLyoqXG4rICoga3ZtX3Jpc2N2X2FpYV9lbmFibGUoKSAtIEVuYWJsZSBBSUEgc3VwcG9ydCBvbiBjdXJyZW50IENQVVxuKyAqIEBmdWxsX2NsZWFudXA6IHRydWUgPSBmdWxsIGhhcmR3YXJlIGluaXQgKENQVSBob3RwbHVnL21vZHVsZSBsb2FkKSxcbisgKiAgICAgICAgICAgICAgICBmYWxzZSA9IGxpZ2h0d2VpZ2h0IENTUiByZXN0b3JlIChDUFUgbm9uLXJldGVudGlvbiBpZGxlIHJlc3VtZSlcbisgKi9cbit2b2lkIGt2bV9yaXNjdl9haWFfZW5hYmxlKGJvb2wgZnVsbF9jbGVhbnVwKTtcbitcbisvKipcbisgKiBrdm1fcmlzY3ZfYWlhX2Rpc2FibGUoKSAtIERpc2FibGUgQUlBIHN1cHBvcnQgb24gY3VycmVudCBDUFVcbisgKiBAZnVsbF9jbGVhbnVwOiB0cnVlID0gZnVsbCBoYXJkd2FyZSBjbGVhbnVwIChDUFUgaG90cGx1Zy9tb2R1bGUgZXhpdCksXG4rICogICAgICAgICAgICAgICAgZmFsc2UgPSBsaWdodHdlaWdodCBDU1Igc2F2ZSAoQ1BVIG5vbi1yZXRlbnRpb24gaWRsZSBlbnRyeSlcbisgKi9cbit2b2lkIGt2bV9yaXNjdl9haWFfZGlzYWJsZShib29sIGZ1bGxfY2xlYW51cCk7XG4gaW50IGt2bV9yaXNjdl9haWFfaW5pdCh2b2lkKTtcbiB2b2lkIGt2bV9yaXNjdl9haWFfZXhpdCh2b2lkKTtcbiBcbmRpZmYgLS1naXQgYS9hcmNoL3Jpc2N2L2luY2x1ZGUvYXNtL2t2bV9ob3N0LmggYi9hcmNoL3Jpc2N2L2luY2x1ZGUvYXNtL2t2bV9ob3N0LmhcbmluZGV4IDYwMDE3Y2VlYzlkMmFmLi44MDhiNGVlMWJkMTBhYyAxMDA2NDRcbi0tLSBhL2FyY2gvcmlzY3YvaW5jbHVkZS9hc20va3ZtX2hvc3QuaFxuKysrIGIvYXJjaC9yaXNjdi9pbmNsdWRlL2FzbS9rdm1faG9zdC5oXG5AQCAtMzE5LDYgKzMxOSw4IEBAIGJvb2wga3ZtX3Jpc2N2X3ZjcHVfc3RvcHBlZChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpO1xuIFxuIHZvaWQga3ZtX3Jpc2N2X3ZjcHVfcmVjb3JkX3N0ZWFsX3RpbWUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KTtcbiBcbit2b2lkIGt2bV9yaXNjdl9jbGVhcl9mb3JtZXJfdmNwdSh2b2lkKTtcbitcbiAvKiBGbGFncyByZXByZXNlbnRpbmcgaW1wbGVtZW50YXRpb24gc3BlY2lmaWMgZGV0YWlscyAqL1xuIERFQ0xBUkVfU1RBVElDX0tFWV9GQUxTRShrdm1fcmlzY3ZfdnNzdGFnZV90bGJfbm9fZ3BhKTtcbiBcbmRpZmYgLS1naXQgYS9hcmNoL3Jpc2N2L2t2bS9haWEuYyBiL2FyY2gvcmlzY3Yva3ZtL2FpYS5jXG5pbmRleCBiYWZiMDA5YzVjZTU1OS4uNGNmMzUxZjkxYzY0M2YgMTAwNjQ0XG4tLS0gYS9hcmNoL3Jpc2N2L2t2bS9haWEuY1xuKysrIGIvYXJjaC9yaXNjdi9rdm0vYWlhLmNcbkBAIC0yNSw2ICsyNSw3IEBAIHN0cnVjdCBhaWFfaGdlaV9jb250cm9sIHtcbiBcdHVuc2lnbmVkIGxvbmcgZnJlZV9iaXRtYXA7XG4gXHRzdHJ1Y3Qga3ZtX3ZjcHUgKm93bmVyc1tCSVRTX1BFUl9MT05HXTtcbiBcdHVuc2lnbmVkIGludCBucl9oZ2VpO1xuK1x0dW5zaWduZWQgbG9uZyBzYXZlZF92YWx1ZTtcbiB9O1xuIHN0YXRpYyBERUZJTkVfUEVSX0NQVShzdHJ1Y3QgYWlhX2hnZWlfY29udHJvbCwgYWlhX2hnZWkpO1xuIHN0YXRpYyBpbnQgaGdlaV9wYXJlbnRfaXJxO1xuQEAgLTUzMiw1MCArNTMzLDU5IEBAIHN0YXRpYyB2b2lkIGFpYV9oZ2VpX2V4aXQodm9pZClcbiBcdGZyZWVfcGVyY3B1X2lycShoZ2VpX3BhcmVudF9pcnEsIFx1MDAyNmFpYV9oZ2VpKTtcbiB9XG4gXG4tdm9pZCBrdm1fcmlzY3ZfYWlhX2VuYWJsZSh2b2lkKVxuK3ZvaWQga3ZtX3Jpc2N2X2FpYV9lbmFibGUoYm9vbCBmdWxsX2NsZWFudXApXG4ge1xuLVx0Y29uc3Qgc3RydWN0IGltc2ljX2dsb2JhbF9jb25maWcgKmdjO1xuLVx0Y29uc3Qgc3RydWN0IGltc2ljX2xvY2FsX2NvbmZpZyAqbGM7XG4gXHRzdHJ1Y3QgYWlhX2hnZWlfY29udHJvbCAqaGdjdHJsO1xuIFx0dW5zaWduZWQgbG9uZyBmbGFncztcbi1cdGludCBhaWFfbnJfaGdlaTtcbiBcbiBcdGlmICgha3ZtX3Jpc2N2X2FpYV9hdmFpbGFibGUoKSlcbiBcdFx0cmV0dXJuO1xuIFxuLVx0Z2MgPSBpbXNpY19nZXRfZ2xvYmFsX2NvbmZpZygpO1xuLVx0bGMgPSAoZ2MpID8gdGhpc19jcHVfcHRyKGdjLVx1MDAzZWxvY2FsKSA6IE5VTEw7XG4gXHRoZ2N0cmwgPSB0aGlzX2NwdV9wdHIoXHUwMDI2YWlhX2hnZWkpO1xuIFxuLVx0LyogRmlndXJlLW91dCBudW1iZXIgb2YgYml0cyBpbiBIR0VJRSAqL1xuLVx0Y3NyX3dyaXRlKENTUl9IR0VJRSwgLTFVTCk7XG4tXHRoZ2N0cmwtXHUwMDNlbnJfaGdlaSA9IGZsc19sb25nKGNzcl9yZWFkKENTUl9IR0VJRSkpO1xuLVx0Y3NyX3dyaXRlKENTUl9IR0VJRSwgMCk7XG4tXHRpZiAoaGdjdHJsLVx1MDAzZW5yX2hnZWkpXG4tXHRcdGhnY3RybC1cdTAwM2Vucl9oZ2VpLS07XG4rXHRpZiAoZnVsbF9jbGVhbnVwKSB7XG4rXHRcdGNvbnN0IHN0cnVjdCBpbXNpY19nbG9iYWxfY29uZmlnICpnYztcbitcdFx0Y29uc3Qgc3RydWN0IGltc2ljX2xvY2FsX2NvbmZpZyAqbGM7XG4rXHRcdGludCBhaWFfbnJfaGdlaTtcbiBcbi1cdC8qXG4tXHQgKiBOdW1iZXIgb2YgdXNhYmxlIHBlci1IQVJUIEhHRUkgbGluZXMgc2hvdWxkIGJlIG1pbmltdW0gb2Zcbi1cdCAqIHBlci1IQVJUIElNU0lDIGd1ZXN0IGZpbGVzIGFuZCBudW1iZXIgb2YgYml0cyBpbiBIR0VJRS5cbi1cdCAqL1xuLVx0aWYgKGxjKVxuLVx0XHRoZ2N0cmwtXHUwMDNlbnJfaGdlaSA9IG1pbigodWxvbmcpaGdjdHJsLVx1MDAzZW5yX2hnZWksIGxjLVx1MDAzZW5yX2d1ZXN0X2ZpbGVzKTtcbi1cdGVsc2Vcbi1cdFx0aGdjdHJsLVx1MDAzZW5yX2hnZWkgPSAwO1xuK1x0XHRnYyA9IGltc2ljX2dldF9nbG9iYWxfY29uZmlnKCk7XG4rXHRcdGxjID0gKGdjKSA/IHRoaXNfY3B1X3B0cihnYy1cdTAwM2Vsb2NhbCkgOiBOVUxMO1xuIFxuLVx0LyogVXBkYXRlIHRoZSBudW1iZXIgb2YgSU1TSUMgZ3Vlc3QgZmlsZXMgYWNyb3NzIGFsbCBIQVJUcyAqL1xuLVx0YWlhX25yX2hnZWkgPSBhdG9taWNfcmVhZChcdTAwMjZrdm1fcmlzY3ZfYWlhX25yX2hnZWkpO1xuLVx0ZG8ge1xuLVx0XHRpZiAoYWlhX25yX2hnZWkgXHUwMDNjPSBoZ2N0cmwtXHUwMDNlbnJfaGdlaSlcbi1cdFx0XHRicmVhaztcbi1cdH0gd2hpbGUgKCFhdG9taWNfdHJ5X2NtcHhjaGcoXHUwMDI2a3ZtX3Jpc2N2X2FpYV9ucl9oZ2VpLCBcdTAwMjZhaWFfbnJfaGdlaSwgaGdjdHJsLVx1MDAzZW5yX2hnZWkpKTtcbitcdFx0LyogRmlndXJlLW91dCBudW1iZXIgb2YgYml0cyBpbiBIR0VJRSAqL1xuK1x0XHRjc3Jfd3JpdGUoQ1NSX0hHRUlFLCAtMVVMKTtcbitcdFx0aGdjdHJsLVx1MDAzZW5yX2hnZWkgPSBmbHNfbG9uZyhjc3JfcmVhZChDU1JfSEdFSUUpKTtcbitcdFx0Y3NyX3dyaXRlKENTUl9IR0VJRSwgMCk7XG4rXHRcdGlmIChoZ2N0cmwtXHUwMDNlbnJfaGdlaSlcbitcdFx0XHRoZ2N0cmwtXHUwMDNlbnJfaGdlaS0tO1xuIFxuLVx0cmF3X3NwaW5fbG9ja19pcnFzYXZlKFx1MDAyNmhnY3RybC1cdTAwM2Vsb2NrLCBmbGFncyk7XG4tXHRpZiAoIWhnY3RybC1cdTAwM2VmcmVlX2JpdG1hcF9pbml0aWFsaXplZCkge1xuLVx0XHRoZ2N0cmwtXHUwMDNlZnJlZV9iaXRtYXAgPSAoaGdjdHJsLVx1MDAzZW5yX2hnZWkpID8gR0VOTUFTS19VTEwoaGdjdHJsLVx1MDAzZW5yX2hnZWksIDEpIDogMDtcbi1cdFx0aGdjdHJsLVx1MDAzZWZyZWVfYml0bWFwX2luaXRpYWxpemVkID0gdHJ1ZTtcbitcdFx0LypcbitcdFx0ICogTnVtYmVyIG9mIHVzYWJsZSBwZXItSEFSVCBIR0VJIGxpbmVzIHNob3VsZCBiZSBtaW5pbXVtIG9mXG4rXHRcdCAqIHBlci1IQVJUIElNU0lDIGd1ZXN0IGZpbGVzIGFuZCBudW1iZXIgb2YgYml0cyBpbiBIR0VJRS5cbitcdFx0ICovXG4rXHRcdGlmIChsYylcbitcdFx0XHRoZ2N0cmwtXHUwMDNlbnJfaGdlaSA9IG1pbigodWxvbmcpaGdjdHJsLVx1MDAzZW5yX2hnZWksIGxjLVx1MDAzZW5yX2d1ZXN0X2ZpbGVzKTtcbitcdFx0ZWxzZVxuK1x0XHRcdGhnY3RybC1cdTAwM2Vucl9oZ2VpID0gMDtcbitcbitcdFx0LyogVXBkYXRlIHRoZSBudW1iZXIgb2YgSU1TSUMgZ3Vlc3QgZmlsZXMgYWNyb3NzIGFsbCBIQVJUcyAqL1xuK1x0XHRhaWFfbnJfaGdlaSA9IGF0b21pY19yZWFkKFx1MDAyNmt2bV9yaXNjdl9haWFfbnJfaGdlaSk7XG4rXHRcdGRvIHtcbitcdFx0XHRpZiAoYWlhX25yX2hnZWkgXHUwMDNjPSBoZ2N0cmwtXHUwMDNlbnJfaGdlaSlcbitcdFx0XHRcdGJyZWFrO1xuK1x0XHR9IHdoaWxlICghYXRvbWljX3RyeV9jbXB4Y2hnKFx1MDAyNmt2bV9yaXNjdl9haWFfbnJfaGdlaSwgXHUwMDI2YWlhX25yX2hnZWksXG4rXHRcdFx0XHRcdCAgICAgaGdjdHJsLVx1MDAzZW5yX2hnZWkpKTtcbitcbitcdFx0cmF3X3NwaW5fbG9ja19pcnFzYXZlKFx1MDAyNmhnY3RybC1cdTAwM2Vsb2NrLCBmbGFncyk7XG4rXHRcdGlmICghaGdjdHJsLVx1MDAzZWZyZWVfYml0bWFwX2luaXRpYWxpemVkKSB7XG4rXHRcdFx0aGdjdHJsLVx1MDAzZWZyZWVfYml0bWFwID0gKGhnY3RybC1cdTAwM2Vucl9oZ2VpKSA/XG4rXHRcdFx0XHRcdCAgICAgIEdFTk1BU0tfVUxMKGhnY3RybC1cdTAwM2Vucl9oZ2VpLCAxKSA6XG4rXHRcdFx0XHRcdCAgICAgIDA7XG4rXHRcdFx0aGdjdHJsLVx1MDAzZWZyZWVfYml0bWFwX2luaXRpYWxpemVkID0gdHJ1ZTtcbitcdFx0fVxuK1x0XHRyYXdfc3Bpbl91bmxvY2tfaXJxcmVzdG9yZShcdTAwMjZoZ2N0cmwtXHUwMDNlbG9jaywgZmxhZ3MpO1xuK1x0fSBlbHNlIHtcbitcdFx0Y3NyX3dyaXRlKENTUl9IR0VJRSwgaGdjdHJsLVx1MDAzZXNhdmVkX3ZhbHVlKTtcbiBcdH1cbi1cdHJhd19zcGluX3VubG9ja19pcnFyZXN0b3JlKFx1MDAyNmhnY3RybC1cdTAwM2Vsb2NrLCBmbGFncyk7XG4gXG4gXHRjc3Jfd3JpdGUoQ1NSX0hWSUNUTCwgYWlhX2h2aWN0bF92YWx1ZShmYWxzZSkpO1xuIFx0Y3NyX3dyaXRlKENTUl9IVklQUklPMSwgMHgwKTtcbkBAIC01ODcsMTYgKzU5NywxNyBAQCB2b2lkIGt2bV9yaXNjdl9haWFfZW5hYmxlKHZvaWQpXG4gXHRjc3Jfd3JpdGUoQ1NSX0hWSVBSSU8ySCwgMHgwKTtcbiAjZW5kaWZcbiBcbi1cdC8qIEVuYWJsZSBwZXItQ1BVIFNHRUkgaW50ZXJydXB0ICovXG4tXHRlbmFibGVfcGVyY3B1X2lycShoZ2VpX3BhcmVudF9pcnEsXG4tXHRcdFx0ICBpcnFfZ2V0X3RyaWdnZXJfdHlwZShoZ2VpX3BhcmVudF9pcnEpKTtcbitcdGlmIChmdWxsX2NsZWFudXApXG4rXHRcdGVuYWJsZV9wZXJjcHVfaXJxKGhnZWlfcGFyZW50X2lycSxcbitcdFx0XHRcdCAgaXJxX2dldF90cmlnZ2VyX3R5cGUoaGdlaV9wYXJlbnRfaXJxKSk7XG4gXHRjc3Jfc2V0KENTUl9ISUUsIEJJVChJUlFfU19HRVhUKSk7XG4rXG4gXHQvKiBFbmFibGUgSVJRIGZpbHRlcmluZyBmb3Igb3ZlcmZsb3cgaW50ZXJydXB0IG9ubHkgaWYgc3Njb2ZwbWYgaXMgcHJlc2VudCAqL1xuIFx0aWYgKF9fcmlzY3ZfaXNhX2V4dGVuc2lvbl9hdmFpbGFibGUoTlVMTCwgUklTQ1ZfSVNBX0VYVF9TU0NPRlBNRikpXG4gXHRcdGNzcl9zZXQoQ1NSX0hWSUVOLCBCSVQoSVJRX1BNVV9PVkYpKTtcbiB9XG4gXG4tdm9pZCBrdm1fcmlzY3ZfYWlhX2Rpc2FibGUodm9pZClcbit2b2lkIGt2bV9yaXNjdl9haWFfZGlzYWJsZShib29sIGZ1bGxfY2xlYW51cClcbiB7XG4gXHRpbnQgaTtcbiBcdHVuc2lnbmVkIGxvbmcgZmxhZ3M7XG5AQCAtNjA5LDQyICs2MjAsNDkgQEAgdm9pZCBrdm1fcmlzY3ZfYWlhX2Rpc2FibGUodm9pZClcbiBcbiBcdGlmIChfX3Jpc2N2X2lzYV9leHRlbnNpb25fYXZhaWxhYmxlKE5VTEwsIFJJU0NWX0lTQV9FWFRfU1NDT0ZQTUYpKVxuIFx0XHRjc3JfY2xlYXIoQ1NSX0hWSUVOLCBCSVQoSVJRX1BNVV9PVkYpKTtcbi1cdC8qIERpc2FibGUgcGVyLUNQVSBTR0VJIGludGVycnVwdCAqL1xuLVx0Y3NyX2NsZWFyKENTUl9ISUUsIEJJVChJUlFfU19HRVhUKSk7XG4tXHRkaXNhYmxlX3BlcmNwdV9pcnEoaGdlaV9wYXJlbnRfaXJxKTtcbiBcbi1cdGNzcl93cml0ZShDU1JfSFZJQ1RMLCBhaWFfaHZpY3RsX3ZhbHVlKGZhbHNlKSk7XG4tXG4tXHRyYXdfc3Bpbl9sb2NrX2lycXNhdmUoXHUwMDI2aGdjdHJsLVx1MDAzZWxvY2ssIGZsYWdzKTtcbi1cbi1cdGZvciAoaSA9IDA7IGkgXHUwMDNjPSBoZ2N0cmwtXHUwMDNlbnJfaGdlaTsgaSsrKSB7XG4tXHRcdHZjcHUgPSBoZ2N0cmwtXHUwMDNlb3duZXJzW2ldO1xuLVx0XHRpZiAoIXZjcHUpXG4tXHRcdFx0Y29udGludWU7XG4rXHRpZiAoZnVsbF9jbGVhbnVwKSB7XG4rXHRcdC8qIERpc2FibGUgcGVyLUNQVSBTR0VJIGludGVycnVwdCAqL1xuK1x0XHRjc3JfY2xlYXIoQ1NSX0hJRSwgQklUKElSUV9TX0dFWFQpKTtcbitcdFx0ZGlzYWJsZV9wZXJjcHVfaXJxKGhnZWlfcGFyZW50X2lycSk7XG4rXHR9XG4gXG4tXHRcdC8qXG4tXHRcdCAqIFdlIHJlbGVhc2UgaGdjdHJsLVx1MDAzZWxvY2sgYmVmb3JlIG5vdGlmeWluZyBJTVNJQ1xuLVx0XHQgKiBzbyB0aGF0IHdlIGRvbid0IGhhdmUgbG9jayBvcmRlcmluZyBpc3N1ZXMuXG4tXHRcdCAqL1xuLVx0XHRyYXdfc3Bpbl91bmxvY2tfaXJxcmVzdG9yZShcdTAwMjZoZ2N0cmwtXHUwMDNlbG9jaywgZmxhZ3MpO1xuK1x0Y3NyX3dyaXRlKENTUl9IVklDVEwsIGFpYV9odmljdGxfdmFsdWUoZmFsc2UpKTtcbiBcbi1cdFx0LyogTm90aWZ5IElNU0lDICovXG4tXHRcdGt2bV9yaXNjdl92Y3B1X2FpYV9pbXNpY19yZWxlYXNlKHZjcHUpO1xuK1x0aWYgKGZ1bGxfY2xlYW51cCkge1xuK1x0XHRyYXdfc3Bpbl9sb2NrX2lycXNhdmUoXHUwMDI2aGdjdHJsLVx1MDAzZWxvY2ssIGZsYWdzKTtcbiBcbi1cdFx0Lypcbi1cdFx0ICogV2FrZXVwIFZDUFUgaWYgaXQgd2FzIGJsb2NrZWQgc28gdGhhdCBpdCBjYW5cbi1cdFx0ICogcnVuIG9uIG90aGVyIEhBUlRzXG4tXHRcdCAqL1xuLVx0XHRpZiAoY3NyX3JlYWQoQ1NSX0hHRUlFKSBcdTAwMjYgQklUKGkpKSB7XG4tXHRcdFx0Y3NyX2NsZWFyKENTUl9IR0VJRSwgQklUKGkpKTtcbi1cdFx0XHRrdm1fdmNwdV9raWNrKHZjcHUpO1xuK1x0XHRmb3IgKGkgPSAwOyBpIFx1MDAzYz0gaGdjdHJsLVx1MDAzZW5yX2hnZWk7IGkrKykge1xuK1x0XHRcdHZjcHUgPSBoZ2N0cmwtXHUwMDNlb3duZXJzW2ldO1xuK1x0XHRcdGlmICghdmNwdSlcbitcdFx0XHRcdGNvbnRpbnVlO1xuK1xuK1x0XHRcdC8qXG4rXHRcdFx0ICogV2UgcmVsZWFzZSBoZ2N0cmwtXHUwMDNlbG9jayBiZWZvcmUgbm90aWZ5aW5nIElNU0lDXG4rXHRcdFx0ICogc28gdGhhdCB3ZSBkb24ndCBoYXZlIGxvY2sgb3JkZXJpbmcgaXNzdWVzLlxuK1x0XHRcdCAqL1xuK1x0XHRcdHJhd19zcGluX3VubG9ja19pcnFyZXN0b3JlKFx1MDAyNmhnY3RybC1cdTAwM2Vsb2NrLCBmbGFncyk7XG4rXG4rXHRcdFx0LyogTm90aWZ5IElNU0lDICovXG4rXHRcdFx0a3ZtX3Jpc2N2X3ZjcHVfYWlhX2ltc2ljX3JlbGVhc2UodmNwdSk7XG4rXG4rXHRcdFx0LypcbitcdFx0XHQgKiBXYWtldXAgVkNQVSBpZiBpdCB3YXMgYmxvY2tlZCBzbyB0aGF0IGl0IGNhblxuK1x0XHRcdCAqIHJ1biBvbiBvdGhlciBIQVJUc1xuK1x0XHRcdCAqL1xuK1x0XHRcdGlmIChjc3JfcmVhZChDU1JfSEdFSUUpIFx1MDAyNiBCSVQoaSkpIHtcbitcdFx0XHRcdGNzcl9jbGVhcihDU1JfSEdFSUUsIEJJVChpKSk7XG4rXHRcdFx0XHRrdm1fdmNwdV9raWNrKHZjcHUpO1xuK1x0XHRcdH1cbitcbitcdFx0XHRyYXdfc3Bpbl9sb2NrX2lycXNhdmUoXHUwMDI2aGdjdHJsLVx1MDAzZWxvY2ssIGZsYWdzKTtcbiBcdFx0fVxuIFxuLVx0XHRyYXdfc3Bpbl9sb2NrX2lycXNhdmUoXHUwMDI2aGdjdHJsLVx1MDAzZWxvY2ssIGZsYWdzKTtcbitcdFx0cmF3X3NwaW5fdW5sb2NrX2lycXJlc3RvcmUoXHUwMDI2aGdjdHJsLVx1MDAzZWxvY2ssIGZsYWdzKTtcbitcdH0gZWxzZSB7XG4rXHRcdGhnY3RybC1cdTAwM2VzYXZlZF92YWx1ZSA9IGNzcl9yZWFkKENTUl9IR0VJRSk7XG4gXHR9XG4gXG4tXHRyYXdfc3Bpbl91bmxvY2tfaXJxcmVzdG9yZShcdTAwMjZoZ2N0cmwtXHUwMDNlbG9jaywgZmxhZ3MpO1xuLVxuIFx0cHV0X2NwdV9wdHIoXHUwMDI2YWlhX2hnZWkpO1xuIH1cbiBcbmRpZmYgLS1naXQgYS9hcmNoL3Jpc2N2L2t2bS9tYWluLmMgYi9hcmNoL3Jpc2N2L2t2bS9tYWluLmNcbmluZGV4IDA5MjRjNzUxMDBhMmQwLi5iNDhiYmQxODU1YzFlMiAxMDA2NDRcbi0tLSBhL2FyY2gvcmlzY3Yva3ZtL21haW4uY1xuKysrIGIvYXJjaC9yaXNjdi9rdm0vbWFpbi5jXG5AQCAtMTAsNiArMTAsNyBAQFxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L2Vyci5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvbW9kdWxlLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9rdm1faG9zdC5oXHUwMDNlXG4rI2luY2x1ZGUgXHUwMDNjbGludXgvY3B1X3BtLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2Nhc20vY3B1ZmVhdHVyZS5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjYXNtL2t2bV9tbXUuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2FzbS9rdm1fbmFjbC5oXHUwMDNlXG5AQCAtMzMsMTQgKzM0LDkgQEAgbG9uZyBrdm1fYXJjaF9kZXZfaW9jdGwoc3RydWN0IGZpbGUgKmZpbHAsXG4gXHRyZXR1cm4gLUVJTlZBTDtcbiB9XG4gXG4taW50IGt2bV9hcmNoX2VuYWJsZV92aXJ0dWFsaXphdGlvbl9jcHUodm9pZClcbisvKiBJbml0aWFsaXplIGh5cGVydmlzb3IgQ1NScyAtIGNhbGxlZCBkdXJpbmcgQ1BVIG9ubGluZSBhbmQgbm9uLXJldGVudGlvbiBpZGxlIHJlc3VtZSAqL1xuK3N0YXRpYyB2b2lkIGt2bV9yaXNjdl9jc3JfZW5hYmxlKHZvaWQpXG4ge1xuLVx0aW50IHJjO1xuLVxuLVx0cmMgPSBrdm1fcmlzY3ZfbmFjbF9lbmFibGUoKTtcbi1cdGlmIChyYylcbi1cdFx0cmV0dXJuIHJjO1xuLVxuIFx0Y3NyX3dyaXRlKENTUl9IRURFTEVHLCAwKTtcbiBcdGNzcl93cml0ZShDU1JfSElERUxFRywgMCk7XG4gXG5AQCAtNDgsMTYgKzQ0LDExIEBAIGludCBrdm1fYXJjaF9lbmFibGVfdmlydHVhbGl6YXRpb25fY3B1KHZvaWQpXG4gXHRjc3Jfd3JpdGUoQ1NSX0hDT1VOVEVSRU4sIDB4MDIpO1xuIFxuIFx0Y3NyX3dyaXRlKENTUl9IVklQLCAwKTtcbi1cbi1cdGt2bV9yaXNjdl9haWFfZW5hYmxlKCk7XG4tXG4tXHRyZXR1cm4gMDtcbiB9XG4gXG4tdm9pZCBrdm1fYXJjaF9kaXNhYmxlX3ZpcnR1YWxpemF0aW9uX2NwdSh2b2lkKVxuKy8qIENsZWFyIGh5cGVydmlzb3IgQ1NScyAtIGNhbGxlZCBkdXJpbmcgQ1BVIG9mZmxpbmUgYW5kIG5vbi1yZXRlbnRpb24gaWRsZSBlbnRyeSAqL1xuK3N0YXRpYyB2b2lkIGt2bV9yaXNjdl9jc3JfZGlzYWJsZSh2b2lkKVxuIHtcbi1cdGt2bV9yaXNjdl9haWFfZGlzYWJsZSgpO1xuLVxuIFx0LypcbiBcdCAqIEFmdGVyIGNsZWFyaW5nIHRoZSBoaWRlbGVnIENTUiwgdGhlIGhvc3Qga2VybmVsIHdpbGwgcmVjZWl2ZVxuIFx0ICogc3B1cmlvdXMgaW50ZXJydXB0cyBpZiBodmlwIENTUiBoYXMgcGVuZGluZyBpbnRlcnJ1cHRzIGFuZCB0aGVcbkBAIC02OSw5ICs2MCw1MyBAQCB2b2lkIGt2bV9hcmNoX2Rpc2FibGVfdmlydHVhbGl6YXRpb25fY3B1KHZvaWQpXG4gXHRjc3Jfd3JpdGUoQ1NSX0hFREVMRUcsIDApO1xuIFx0Y3NyX3dyaXRlKENTUl9ISURFTEVHLCAwKTtcbiBcbitcdGt2bV9yaXNjdl9jbGVhcl9mb3JtZXJfdmNwdSgpO1xuK31cbitcbitpbnQga3ZtX2FyY2hfZW5hYmxlX3ZpcnR1YWxpemF0aW9uX2NwdSh2b2lkKVxuK3tcbitcdGludCByYztcbitcbitcdHJjID0ga3ZtX3Jpc2N2X25hY2xfZW5hYmxlKCk7XG4rXHRpZiAocmMpXG4rXHRcdHJldHVybiByYztcbitcbitcdGt2bV9yaXNjdl9jc3JfZW5hYmxlKCk7XG4rXHRrdm1fcmlzY3ZfYWlhX2VuYWJsZSh0cnVlKTtcbitcbitcdHJldHVybiAwO1xuK31cbitcbit2b2lkIGt2bV9hcmNoX2Rpc2FibGVfdmlydHVhbGl6YXRpb25fY3B1KHZvaWQpXG4re1xuK1x0a3ZtX3Jpc2N2X2FpYV9kaXNhYmxlKHRydWUpO1xuK1x0a3ZtX3Jpc2N2X2Nzcl9kaXNhYmxlKCk7XG4gXHRrdm1fcmlzY3ZfbmFjbF9kaXNhYmxlKCk7XG4gfVxuIFxuK3N0YXRpYyBpbnQga3ZtX3Jpc2N2X2NwdV9wbV9ub3RpZmllcihzdHJ1Y3Qgbm90aWZpZXJfYmxvY2sgKnNlbGYsIHVuc2lnbmVkIGxvbmcgY21kLCB2b2lkICp2KVxuK3tcbitcdHN3aXRjaCAoY21kKSB7XG4rXHRjYXNlIENQVV9QTV9FWElUOlxuK1x0Y2FzZSBDUFVfUE1fRU5URVJfRkFJTEVEOlxuK1x0XHRrdm1fcmlzY3ZfY3NyX2VuYWJsZSgpO1xuK1x0XHRrdm1fcmlzY3ZfYWlhX2VuYWJsZShmYWxzZSk7XG4rXHRcdHJldHVybiBOT1RJRllfT0s7XG4rXHRjYXNlIENQVV9QTV9FTlRFUjpcbitcdFx0a3ZtX3Jpc2N2X2FpYV9kaXNhYmxlKGZhbHNlKTtcbitcdFx0a3ZtX3Jpc2N2X2Nzcl9kaXNhYmxlKCk7XG4rXHRcdHJldHVybiBOT1RJRllfT0s7XG4rXHRkZWZhdWx0OlxuK1x0XHRicmVhaztcbitcdH1cbitcbitcdHJldHVybiBOT1RJRllfRE9ORTtcbit9XG4rXG4rc3RhdGljIHN0cnVjdCBub3RpZmllcl9ibG9jayBrdm1fcmlzY3ZfY3B1X3BtX25iID0ge1xuK1x0Lm5vdGlmaWVyX2NhbGwgPSBrdm1fcmlzY3ZfY3B1X3BtX25vdGlmaWVyLFxuK307XG4rXG4gc3RhdGljIHZvaWQga3ZtX3Jpc2N2X3RlYXJkb3duKHZvaWQpXG4ge1xuIFx0a3ZtX3Jpc2N2X2FpYV9leGl0KCk7XG5AQCAtMTcyLDIyICsyMDcsNDAgQEAgc3RhdGljIGludCBfX2luaXQgcmlzY3Zfa3ZtX2luaXQodm9pZClcbiBcbiBcdGt2bV9yZWdpc3Rlcl9wZXJmX2NhbGxiYWNrcygpO1xuIFxuLVx0cmMgPSBrdm1faW5pdChzaXplb2Yoc3RydWN0IGt2bV92Y3B1KSwgMCwgVEhJU19NT0RVTEUpO1xuLVx0aWYgKHJjKSB7XG4tXHRcdGt2bV9yaXNjdl90ZWFyZG93bigpO1xuLVx0XHRyZXR1cm4gcmM7XG4rXHQvKiBSZWdpc3RlciBDUFUgUE0gbm90aWZpZXIgZm9yIENQVSBpZGxlIG5vbi1yZXRlbnRpb24gc3RhdGVzICovXG4rXHRpZiAoSVNfRU5BQkxFRChDT05GSUdfQ1BVX1BNKSkge1xuK1x0XHRyYyA9IGNwdV9wbV9yZWdpc3Rlcl9ub3RpZmllcihcdTAwMjZrdm1fcmlzY3ZfY3B1X3BtX25iKTtcbitcdFx0aWYgKHJjKSB7XG4rXHRcdFx0a3ZtX2VycihcIkZhaWxlZCB0byByZWdpc3RlciBDUFUgUE0gbm90aWZpZXI6ICVkXFxuXCIsIHJjKTtcbitcdFx0XHRnb3RvIGVycl90ZWFyZG93bjtcbitcdFx0fVxuIFx0fVxuIFxuK1x0cmMgPSBrdm1faW5pdChzaXplb2Yoc3RydWN0IGt2bV92Y3B1KSwgMCwgVEhJU19NT0RVTEUpO1xuK1x0aWYgKHJjKVxuK1x0XHRnb3RvIGVycl91bnJlZ2lzdGVyX2NwdV9wbTtcbitcbiBcdGlmIChrdm1fcmlzY3ZfYWlhX2F2YWlsYWJsZSgpKVxuIFx0XHRrdm1faW5mbyhcIkFJQSBhdmFpbGFibGUgd2l0aCAlZCBndWVzdCBleHRlcm5hbCBpbnRlcnJ1cHRzXFxuXCIsXG4gXHRcdFx0IGF0b21pY19yZWFkKFx1MDAyNmt2bV9yaXNjdl9haWFfbnJfaGdlaSkpO1xuIFxuIFx0cmV0dXJuIDA7XG4rXG4rZXJyX3VucmVnaXN0ZXJfY3B1X3BtOlxuK1x0aWYgKElTX0VOQUJMRUQoQ09ORklHX0NQVV9QTSkpXG4rXHRcdGNwdV9wbV91bnJlZ2lzdGVyX25vdGlmaWVyKFx1MDAyNmt2bV9yaXNjdl9jcHVfcG1fbmIpO1xuK2Vycl90ZWFyZG93bjpcbitcdGt2bV9yaXNjdl90ZWFyZG93bigpO1xuK1x0cmV0dXJuIHJjO1xuIH1cbiBtb2R1bGVfaW5pdChyaXNjdl9rdm1faW5pdCk7XG4gXG4gc3RhdGljIHZvaWQgX19leGl0IHJpc2N2X2t2bV9leGl0KHZvaWQpXG4ge1xuK1x0LyogVW5yZWdpc3RlciBDUFUgUE0gbm90aWZpZXIgKi9cbitcdGlmIChJU19FTkFCTEVEKENPTkZJR19DUFVfUE0pKVxuK1x0XHRjcHVfcG1fdW5yZWdpc3Rlcl9ub3RpZmllcihcdTAwMjZrdm1fcmlzY3ZfY3B1X3BtX25iKTtcbitcbiBcdGt2bV9leGl0KCk7XG4gXG4gXHRrdm1fcmlzY3ZfdGVhcmRvd24oKTtcbmRpZmYgLS1naXQgYS9hcmNoL3Jpc2N2L2t2bS92Y3B1LmMgYi9hcmNoL3Jpc2N2L2t2bS92Y3B1LmNcbmluZGV4IGNmNmUyMzFlNzZlMjU0Li5lNDgzMzhmOTA3ZjQ4OCAxMDA2NDRcbi0tLSBhL2FyY2gvcmlzY3Yva3ZtL3ZjcHUuY1xuKysrIGIvYXJjaC9yaXNjdi9rdm0vdmNwdS5jXG5AQCAtMjYsNiArMjYsMTcgQEBcbiBcbiBzdGF0aWMgREVGSU5FX1BFUl9DUFUoc3RydWN0IGt2bV92Y3B1ICosIGt2bV9mb3JtZXJfdmNwdSk7XG4gXG4rdm9pZCBrdm1fcmlzY3ZfY2xlYXJfZm9ybWVyX3ZjcHUodm9pZClcbit7XG4rXHQvKlxuK1x0ICogQ2xlYXIgdGhlIHBlci1DUFUgZm9ybWVyIFZDUFUgcG9pbnRlciBiZWNhdXNlIGh5cGVydmlzb3IgQ1NSIHN0YXRlXG4rXHQgKiB3aWxsIGJlIGxvc3QuIFRoaXMgZW5zdXJlcyB0aGF0IHRoZSBuZXh0IFZDUFUgZW50cnkgd2lsbCBwcm9wZXJseVxuK1x0ICogcmVzdG9yZSBhbGwgQ1NScyBpbnN0ZWFkIG9mIGluY29ycmVjdGx5IHNraXBwaW5nIENTUiByZXN0b3JhdGlvblxuK1x0ICogdmlhIHRoZSBmYXN0LXBhdGggb3B0aW1pemF0aW9uLlxuK1x0ICovXG4rXHRfX3RoaXNfY3B1X3dyaXRlKGt2bV9mb3JtZXJfdmNwdSwgTlVMTCk7XG4rfVxuK1xuIGNvbnN0IHN0cnVjdCBrdm1fc3RhdHNfZGVzYyBrdm1fdmNwdV9zdGF0c19kZXNjW10gPSB7XG4gXHRLVk1fR0VORVJJQ19WQ1BVX1NUQVRTKCksXG4gXHRTVEFUU19ERVNDX0NPVU5URVIoVkNQVSwgZWNhbGxfZXhpdF9zdGF0KSxcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIzVDAwOjQ1OjI5LjAxODQ2MjcyMVoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjg1OTg5NTY0NTgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBSSVNDLVYgS1ZNIEFJQSBQYXRjaCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggZm9yIFJJU0MtViBLVk0sIGFuZCBteSBpbml0aWFsIHRob3VnaHQgaXMsIFwiQWxyaWdodCwgbGV0J3Mgc2VlIHdoYXQgd2UndmUgZ290IGhlcmUuXCIgSXQgbW9kaWZpZXMgdGhlIEFJQSAoQWR2YW5jZWQgSW50ZXJydXB0IEFyY2hpdGVjdHVyZSkgaGFuZGxpbmcsIHNwZWNpZmljYWxseSB0aGUgZW5hYmxlL2Rpc2FibGUgZnVuY3Rpb25zIChga3ZtX3Jpc2N2X2FpYV9lbmFibGVgIGFuZCBga3ZtX3Jpc2N2X2FpYV9kaXNhYmxlYCkgdG8gdGFrZSBhIGBmdWxsX2NsZWFudXBgIGJvb2xlYW4uIENsZXZlciwgYSB0YXJnZXRlZCBhcHByb2FjaCB0byBjbGVhbnVwcy4gSXQgYWxzbyBzZWVtcyBsaWtlIHdlJ3JlIGludGVncmF0aW5nIENQVSBQTSBub3RpZmllcnMgdG8gaGFuZGxlIEFJQSBzdGF0ZSBzYXZpbmcgYW5kIHJlc3RvcmluZyBkdXJpbmcgQ1BVIGlkbGUgbm9uLXJldGVudGlvbiBzdGF0ZXMuIEFuZCBJIHNlZSBhIGNsZWFyIG9mIGBrdm1fZm9ybWVyX3ZjcHVgIGR1cmluZyBDUFUgb2ZmbGluZSBhbmQgbm9uLXJldGVudGlvbiBpZGxlIGVudHJ5LiBUaGlzIGlzIHNtYXJ0OyBlbnN1cmVzIGEgY2xlYW4gc3RhdGUgdHJhbnNpdGlvbi5cblxuTXkgaW1tZWRpYXRlIHJlYWN0aW9uIGlzIHRvIGFzc2VzcyBpdHMgcmVhY2hhYmlsaXR5IGFuZCBmdW5jdGlvbmFsaXR5LiBUaGUgY2hhbmdlcyBhcmUgbmVhdGx5IGlzb2xhdGVkIHdpdGhpbiBgYXJjaC9yaXNjdi9rdm0vYWlhLmNgIGFuZCBgYXJjaC9yaXNjdi9rdm0vbWFpbi5jYCwgd2hpY2ggbWFrZXMgaXQgZWFzaWVyIHRvIHJldmlldy4gVGhpcyBga3ZtX3Jpc2N2X2NwdV9wbV9ub3RpZmllcmAsIHdoaWNoIGhhbmRsZXMgYENQVV9QTV9FWElUYCwgYENQVV9QTV9FTlRFUl9GQUlMRURgLCBhbmQgYENQVV9QTV9FTlRFUmAsIGxvb2tzIHNvbGlkLiBJdCdzIGNsZWFybHkgaGFuZGxpbmcgQ1BVIHBvd2VyIG1hbmFnZW1lbnQsIHBhcnRpY3VsYXJseSBpZGxlIHN0YXRlcywgZm9yIEtWTSBvbiBSSVNDLVYuIE5vIHN1cnByaXNlcyB0aGVyZS5cblxuTm93LCB0aGUgZnV6emluZyBxdWVzdGlvbi4gQ1BVIFBNIHN0YXRlcyB3aXRoaW4gYSBWTS4uLiB0aGF0J3MgYSBiaXQgb2YgYSBjaGFsbGVuZ2UuIEl0J3Mgbm90IHRoZSBlYXNpZXN0IHRoaW5nIHRvIHRyaWdnZXIgcmVsaWFibHkuIEhvd2V2ZXIsIHNpbmNlIHRoaXMgcGF0Y2ggdG91Y2hlcyBjb3JlIEtWTSBsb2dpYywgaXQncyBkZWZpbml0ZWx5IHdvcnRoIGNvbnNpZGVyaW5nLiBUaGUgcGF0Y2ggbW9kaWZpZXMgYGt2bV9hcmNoX2VuYWJsZV92aXJ0dWFsaXphdGlvbl9jcHVgIGFuZCBga3ZtX2FyY2hfZGlzYWJsZV92aXJ0dWFsaXphdGlvbl9jcHVgLCB0aGF0J3MgYSBrZXkgYXJlYS4gQW5kIHRoZSBhZGRpdGlvbiBvZiB0aGF0IENQVSBQTSBub3RpZmllciBtZWFucyBpdCdzIG5vdyBkaXJlY3RseSBpbnRlcnR3aW5lZC4gQ2FuIHN5emthbGxlciB0cmlnZ2VyIENQVSBQTSBzdGF0ZXM/IEFjdHVhbGx5LCB5ZWFoLCBpdCBjYW4sIHBvdGVudGlhbGx5IHRocm91Z2ggc3lzZnMgd3JpdGVzLCBvciBqdXN0IHBsYWluIG9sZCBpZGxlIHRpbWUuIFBsdXMsIEtWTSBpb2N0bHMgbGlrZSBWTSBhbmQgVkNQVSBjcmVhdGlvbiB3aWxsIGRlZmluaXRlbHkgaW50ZXJhY3Qgd2l0aCB0aGlzIGxvZ2ljLiBUaW1lIHRvIGNoZWNrIHRoZSBjb25maWdzLi4uXG5cblRoZSBjb25maWd1cmF0aW9ucyBJJ2xsIGxvb2sgYXQgYXJlIGBDT05GSUdfS1ZNYCwgYENPTkZJR19SSVNDVmAsIGFuZCBgQ09ORklHX0NQVV9QTWAuIEkgbmVlZCB0byB2ZXJpZnkgdGhhdCB0aGVzZSBhcmUgY29ycmVjdGx5IHNldCBhbmQgYWNjb3VudGVkIGZvci5cblxuRmluYWxseSwgSSBuZWVkIHRvIGZvY3VzIG9uIHNwZWNpZmljIGZ1bmN0aW9ucyBmb3IgZGVlcGVyIGFuYWx5c2lzOiBga3ZtX3Jpc2N2X2FpYV9lbmFibGVgLCBga3ZtX3Jpc2N2X2FpYV9kaXNhYmxlYCwgYGt2bV9yaXNjdl9jcHVfcG1fbm90aWZpZXJgLCBhbmQgYGt2bV9yaXNjdl9jbGVhcl9mb3JtZXJfdmNwdWAuIFRoZXNlIGFyZSB0aGUgY29yZSBlbGVtZW50cyBJJ2xsIGJlIHRhcmdldGluZyB0byB2ZXJpZnkgdGhpcyBwYXRjaCdzIGludGVncml0eS4gVGhlIHVzdWFsIGRyaWxsLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2OTgzLCJPdXRwdXRUb2tlbnMiOjMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDE4LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjNUMDA6NDU6MzcuNjE3NDIzNTI5WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjExNDk2MzIzMSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJDT05GSUdfQ1BVX1BNXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImFyY2gvcmlzY3Yva3ZtL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJhcmNoL3Jpc2N2L2t2bS9tYWluLmM9MTE3PXN0YXRpYyBpbnQgX19pbml0IHJpc2N2X2t2bV9pbml0KHZvaWQpXFxuLS1cXG5hcmNoL3Jpc2N2L2t2bS9tYWluLmMtMjEwLVxcdC8qIFJlZ2lzdGVyIENQVSBQTSBub3RpZmllciBmb3IgQ1BVIGlkbGUgbm9uLXJldGVudGlvbiBzdGF0ZXMgKi9cXG5hcmNoL3Jpc2N2L2t2bS9tYWluLmM6MjExOlxcdGlmIChJU19FTkFCTEVEKENPTkZJR19DUFVfUE0pKSB7XFxuYXJjaC9yaXNjdi9rdm0vbWFpbi5jLTIxMi1cXHRcXHRyYyA9IGNwdV9wbV9yZWdpc3Rlcl9ub3RpZmllcihcXHUwMDI2a3ZtX3Jpc2N2X2NwdV9wbV9uYik7XFxuLS1cXG5hcmNoL3Jpc2N2L2t2bS9tYWluLmMtMjI5LWVycl91bnJlZ2lzdGVyX2NwdV9wbTpcXG5hcmNoL3Jpc2N2L2t2bS9tYWluLmM6MjMwOlxcdGlmIChJU19FTkFCTEVEKENPTkZJR19DUFVfUE0pKVxcbmFyY2gvcmlzY3Yva3ZtL21haW4uYy0yMzEtXFx0XFx0Y3B1X3BtX3VucmVnaXN0ZXJfbm90aWZpZXIoXFx1MDAyNmt2bV9yaXNjdl9jcHVfcG1fbmIpO1xcbi0tXFxuYXJjaC9yaXNjdi9rdm0vbWFpbi5jPTIzOD1zdGF0aWMgdm9pZCBfX2V4aXQgcmlzY3Zfa3ZtX2V4aXQodm9pZClcXG4tLVxcbmFyY2gvcmlzY3Yva3ZtL21haW4uYy0yNDAtXFx0LyogVW5yZWdpc3RlciBDUFUgUE0gbm90aWZpZXIgKi9cXG5hcmNoL3Jpc2N2L2t2bS9tYWluLmM6MjQxOlxcdGlmIChJU19FTkFCTEVEKENPTkZJR19DUFVfUE0pKVxcbmFyY2gvcmlzY3Yva3ZtL21haW4uYy0yNDItXFx0XFx0Y3B1X3BtX3VucmVnaXN0ZXJfbm90aWZpZXIoXFx1MDAyNmt2bV9yaXNjdl9jcHVfcG1fbmIpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yM1QwMDo0NTozNy43MzIzOTQwOFoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ2NTQ1MjQxNTIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgSW5pdGlhbCBBc3Nlc3NtZW50IG9mIHRoZSBLVk0vUklTQy1WIFBhdGNoKipcblxuT2theSwgc28gdGhpcyBwYXRjaCBpcyBjbGVhcmx5IGludHJvZHVjaW5nIHNvbWUgc2lnbmlmaWNhbnQgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIEtWTSwgc3BlY2lmaWNhbGx5IGFyb3VuZCBob3cgaXQgaGFuZGxlcyBDUFUgcG93ZXIgbWFuYWdlbWVudCBhbmQgaWRsZSBzdGF0ZXMgb24gUklTQy1WLiBUaGUgbWVudGlvbiBvZiBBSUEgKEFkdmFuY2VkIEludGVycnVwdCBBcmNoaXRlY3R1cmUpIGlzIGEga2V5IGRldGFpbCAtIHRoYXQncyBkZWZpbml0ZWx5IGEgcG9pbnQgb2YgZm9jdXMuIEFuZCB0aGUgZmFjdCB0aGF0IGl0J3MgdG91Y2hpbmcgZ2VuZXJhbCBoeXBlcnZpc29yIENTUnMganVzdCBtYWtlcyBpdCBldmVuIG1vcmUgaW50ZXJlc3RpbmcgZnJvbSBhIHNlY3VyaXR5IHBlcnNwZWN0aXZlLiBNeSBpbml0aWFsIHRob3VnaHQ/IEFic29sdXRlbHksIHRoaXMgbmVlZHMgdG8gYmUgdGhvcm91Z2hseSBmdXp6ZWQuIFBvdGVudGlhbCBhdHRhY2sgc3VyZmFjZSBpcyBhbG1vc3QgZ3VhcmFudGVlZCB0byBiZSB0aGVyZS5cblxuTGV0J3MgcXVpY2tseSBpZGVudGlmeSB0aGUga2V5IGZ1bmN0aW9ucyB0aGlzIHBhdGNoIGlzIG1vZGlmeWluZy4gSSBzZWUgYGt2bV9yaXNjdl9haWFfZW5hYmxlYCwgYGt2bV9yaXNjdl9haWFfZGlzYWJsZWAsIGBrdm1fcmlzY3ZfY3B1X3BtX25vdGlmaWVyYCwgYW5kIGBrdm1fcmlzY3ZfY2xlYXJfZm9ybWVyX3ZjcHVgIG1lbnRpb25lZC4gVGhlc2UgYXJlIG15IHByaW1hcnkgZm9jdXMgc3ltYm9scyBmb3IgZnVydGhlciBhbmFseXNpcy4gVGhleSBhcmUgZGVmaW5pdGVseSBnb2luZyB0byBiZSB0aGUgcGxhY2VzIHdoZXJlIHRoaW5ncyBjYW4gZ28gd3JvbmcuXG5cbk5vdywgbGV0J3MgbG9vayBhdCB0aGUgY29uZmlndXJhdGlvbiBkZXBlbmRlbmNpZXMuIFRoZSBwYXRjaCdzIGNvbmZpZ3VyYXRpb24gcmVxdWlyZW1lbnRzIGFyZSBgS1ZNYCBhbmQgYENQVV9QTWAuIE9idmlvdXNseSwgc2luY2UgaXQncyB3b3JraW5nIHdpdGggS1ZNLCBgS1ZNYCBpcyBnb2luZyB0byBiZSByZXF1aXJlZC4gVGhlIG5vdGlmaWVyIHJlZ2lzdHJhdGlvbiBzcGVjaWZpY2FsbHkgaW1wbGllcyB0aGF0IGBDUFVfUE1gIG11c3QgYmUgZW5hYmxlZC4gSSB3b25kZXIgaWYgdGhlcmUgYXJlIGFueSAqb3RoZXIqIGNvbmZpZ3MgdGhhdCBuZWVkIHRvIGJlIGNvbnNpZGVyZWQuIEdpdmVuIHRoYXQgdGhlIGNvZGUncyBsb2NhdGVkIGluIGBhcmNoL3Jpc2N2L2t2bS9gLCBJJ2xsIHF1aWNrbHkgY2hlY2sgdGhlIEtjb25maWcgZm9yIFJJU0MtViBLVk0gdG8gbWFrZSBzdXJlIEkgaGF2ZW4ndCBtaXNzZWQgYW55dGhpbmcgb2J2aW91cy4gSSdsbCBuZWVkIHRvIGNoZWNrIHRoZSBkZXBlbmRlbmNpZXMgYW5kIGVuc3VyZSB0aGVyZSBhcmVuJ3QgYW55IGZ1cnRoZXIgY29uc3RyYWludHMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjgzOTEsIk91dHB1dFRva2VucyI6MzMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxOTMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjNUMDA6NDU6NDIuMzg2OTIwMzU0WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEyMzQwNjYwMSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgS1ZNXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImFyY2gvcmlzY3Yva3ZtL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiYXJjaC9yaXNjdi9rdm0vS2NvbmZpZz0xOD1pZiBWSVJUVUFMSVpBVElPTlxcbmFyY2gvcmlzY3Yva3ZtL0tjb25maWctMTktXFxuYXJjaC9yaXNjdi9rdm0vS2NvbmZpZzoyMDpjb25maWcgS1ZNXFxuYXJjaC9yaXNjdi9rdm0vS2NvbmZpZy0yMS1cXHR0cmlzdGF0ZSBcXFwiS2VybmVsLWJhc2VkIFZpcnR1YWwgTWFjaGluZSAoS1ZNKSBzdXBwb3J0XFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yM1QwMDo0NTo0Mi41MTAzMzEwNDVaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyOTQyNTEyNDQ3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0czpcblxuKipLVk0gQ29uZmlndXJhdGlvbiBEZWVwIERpdmUqKlxuXG5Pa2F5LCBzbyBJJ20gZm9jdXNpbmcgaW4gb24gdGhlIGNvbmZpZ3VyYXRpb24gcmVsYXRlZCB0byBgS1ZNYC4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRoYXQgaXQncyB0aGUgY2VudHJhbCBlbGVtZW50IEkgbmVlZCB0byB1bmRlcnN0YW5kIGZvciB0aGlzIHBhcnRpY3VsYXIgc2NlbmFyaW8uIE5vdywgYmVmb3JlIEkgcHJvY2VlZCBmdXJ0aGVyLCBJIG5lZWQgdG8gbWFrZSBhYnNvbHV0ZWx5IHN1cmUgSSdtIGNsZWFyIG9uIHRoZSBpbnRlcnJlbGF0aW9uc2hpcCBiZXR3ZWVuIGBLVk1gIGFuZCBvdGhlciBlbGVtZW50cywgc3VjaCBhcyB0aGUgYENQVV9QTWAgbW9kdWxlLiBMZXQgbWUgZ28gYmFjayBhbmQgcmUtZXhhbWluZSB0aGUgYENQVV9QTWAgZWxlbWVudHMgaW4gdGhlIGNvbmZpZywgYW5kIGVuc3VyZSBldmVyeXRoaW5nIHRpZXMgYmFjayBpbiB0aGUgY29ycmVjdCBtYW5uZXIuIEkgd2FudCB0byBtYWtlIHN1cmUgSSBhbSBncmFzcGluZyB0aGUgZGVwZW5kZW5jaWVzIGFzIGEgd2hvbGUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjkwNzAsIk91dHB1dFRva2VucyI6MzAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yM1QwMDo0NTo0NS40NTI4NDU5MTJaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTQ3ODU0NTE5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBDUFVfUE1cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwia2VybmVsL3Bvd2VyL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwia2VybmVsL3Bvd2VyL0tjb25maWc9Mzg1PWNvbmZpZyBQTV9HRU5FUklDX0RPTUFJTlNfT0ZcXG4tLVxcbmtlcm5lbC9wb3dlci9LY29uZmlnLTM4OC1cXG5rZXJuZWwvcG93ZXIvS2NvbmZpZzozODk6Y29uZmlnIENQVV9QTVxcbmtlcm5lbC9wb3dlci9LY29uZmlnLTM5MC1cXHRib29sXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIzVDAwOjQ1OjQ1LjYwMDcwNDM5MVoiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ3MTQ3NjI5NDksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgcHJlc2VudGVkIGluIHRoZSBmaXJzdCBwZXJzb246XG5cbioqQ1BVX1BNIENvbmZpZ3VyYXRpb24gQW5hbHlzaXMqKlxuXG5BbHJpZ2h0LCBzbyBgQ1BVX1BNYCBpcyBhIGJvb2xlYW4gY29uZmlndXJhdGlvbiBvcHRpb24uIFNpbXBsZSBlbm91Z2guIE15IGdvYWwgaGVyZSBpcyB0byBkZXRlcm1pbmUgaXRzIGltcGxpY2F0aW9ucyBhbmQgZGVjaWRlIG9uIHRoZSBhcHByb3ByaWF0ZSBzZXR0aW5ncyBiYXNlZCBvbiB0aGUgc3lzdGVtJ3MgbmVlZHMsIHBlcmZvcm1hbmNlIHJlcXVpcmVtZW50cywgYW5kIHBvd2VyIHByb2ZpbGVzLiBJJ20gZ29pbmcgdG8gY2FyZWZ1bGx5IGFuYWx5emUgdGhlIGltcGFjdHMgb2YgZW5hYmxpbmcgb3IgZGlzYWJsaW5nIGl0LCBjb25zaWRlcmluZyB0aGUgc3BlY2lmaWMgYXJjaGl0ZWN0dXJlIGFuZCB3b3JrbG9hZHMgYXQgaGFuZC4gSSdsbCBuZWVkIHRvIGV4YW1pbmUgaG93IGl0IGludGVyYWN0cyB3aXRoIG90aGVyIHBvd2VyIG1hbmFnZW1lbnQgZmVhdHVyZXMgYW5kIGRldmljZSBkcml2ZXJzLiBUaGVuLCBJJ2xsIGRvY3VtZW50IG15IGZpbmRpbmdzIGFuZCBzZXQgdGhlIHJlc3VsdGluZyBjb25maWd1cmF0aW9uLCBtYWtpbmcgc3VyZSB0aGUgY2hhbmdlcyBhcmUganVzdGlmaWVkIGFuZCBwcm9wZXJseSB0ZXN0ZWQuIEknbGwgbmVlZCB0byBjb25zaWRlciB3aGV0aGVyIGRlZmF1bHQgdmFsdWVzIGFyZSBhcHByb3ByaWF0ZSwgb3Igd2hldGhlciB0aGlzIHNob3VsZCBiZSBhbHRlcmVkIGZvciBlYWNoIHNwZWNpZmljIG1hY2hpbmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjkzMzgsIk91dHB1dFRva2VucyI6MTU3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjNUMDA6NDU6NTAuMzE1NDY5ODZaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxODI3ODM3NzcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIktWTVwiLFxuICAgIFwiQ1BVX1BNXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwia3ZtX3Jpc2N2X2FpYV9lbmFibGVcIixcbiAgICBcImt2bV9yaXNjdl9haWFfZGlzYWJsZVwiLFxuICAgIFwia3ZtX3Jpc2N2X2NwdV9wbV9ub3RpZmllclwiLFxuICAgIFwia3ZtX3Jpc2N2X2NsZWFyX2Zvcm1lcl92Y3B1XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgUklTQy1WIEtWTSB0byBwcm9wZXJseSBoYW5kbGUgQ1BVIHBvd2VyIG1hbmFnZW1lbnQgKGlkbGUgbm9uLXJldGVudGlvbiBzdGF0ZXMpIGJ5IHNhdmluZyBhbmQgcmVzdG9yaW5nIEFJQSAoQWR2YW5jZWQgSW50ZXJydXB0IEFyY2hpdGVjdHVyZSkgYW5kIGh5cGVydmlzb3IgQ1NSIHN0YXRlLiBUaGlzIGlzIGNvcmUgS1ZNIGxvZ2ljIGFuZCBzaG91bGQgYmUgZnV6emVkIHRvIGVuc3VyZSBubyBzdGF0ZSBpcyBsb3N0IG9yIGNvcnJ1cHRlZCBkdXJpbmcgQ1BVIGlkbGUgdHJhbnNpdGlvbnMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiS1ZNXCIsXG4gICAgXCJDUFVfUE1cIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJrdm1fcmlzY3ZfYWlhX2VuYWJsZVwiLFxuICAgIFwia3ZtX3Jpc2N2X2FpYV9kaXNhYmxlXCIsXG4gICAgXCJrdm1fcmlzY3ZfY3B1X3BtX25vdGlmaWVyXCIsXG4gICAgXCJrdm1fcmlzY3ZfY2xlYXJfZm9ybWVyX3ZjcHVcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBSSVNDLVYgS1ZNIHRvIHByb3Blcmx5IGhhbmRsZSBDUFUgcG93ZXIgbWFuYWdlbWVudCAoaWRsZSBub24tcmV0ZW50aW9uIHN0YXRlcykgYnkgc2F2aW5nIGFuZCByZXN0b3JpbmcgQUlBIChBZHZhbmNlZCBJbnRlcnJ1cHQgQXJjaGl0ZWN0dXJlKSBhbmQgaHlwZXJ2aXNvciBDU1Igc3RhdGUuIFRoaXMgaXMgY29yZSBLVk0gbG9naWMgYW5kIHNob3VsZCBiZSBmdXp6ZWQgdG8gZW5zdXJlIG5vIHN0YXRlIGlzIGxvc3Qgb3IgY29ycnVwdGVkIGR1cmluZyBDUFUgaWRsZSB0cmFuc2l0aW9ucy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+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-workflow6klmv[1] Phase: Succeeded StartedAt: 2026-07-23 00:46:02 +0000 UTC FinishedAt: 2026-07-23 00:46:02 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6klmv[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-07-23 00:46:02 +0000 UTC FinishedAt: 2026-07-23 00:46:02 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6klmv[2] Phase: Succeeded StartedAt: 2026-07-23 00:46:02 +0000 UTC FinishedAt: 2026-07-23 02:09:16 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6klmv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"52738352a6f29279e15285fcb7b50241ef867e27","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","CPU_PM"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_riscv_aia_enable","kvm_riscv_aia_disable","kvm_riscv_cpu_pm_notifier","kvm_riscv_clear_former_vcpu"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"52738352a6f29279e15285fcb7b50241ef867e27","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","CPU_PM"],"series_id":"2dcc5e11-902e-4314-8d54-78fba7668702","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-07-23 00:46:02 +0000 UTC FinishedAt: 2026-07-23 02:09:16 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"52738352a6f29279e15285fcb7b50241ef867e27","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","CPU_PM"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_riscv_aia_enable","kvm_riscv_aia_disable","kvm_riscv_cpu_pm_notifier","kvm_riscv_clear_former_vcpu"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"52738352a6f29279e15285fcb7b50241ef867e27","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","CPU_PM"],"series_id":"2dcc5e11-902e-4314-8d54-78fba7668702","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflow6klmv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"52738352a6f29279e15285fcb7b50241ef867e27","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","CPU_PM"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_riscv_aia_enable","kvm_riscv_aia_disable","kvm_riscv_cpu_pm_notifier","kvm_riscv_clear_former_vcpu"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"52738352a6f29279e15285fcb7b50241ef867e27","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","CPU_PM"],"series_id":"2dcc5e11-902e-4314-8d54-78fba7668702","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-07-23 00:46:02 +0000 UTC FinishedAt: 2026-07-23 00:46:23 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6klmv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"52738352a6f29279e15285fcb7b50241ef867e27","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","CPU_PM"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_riscv_aia_enable","kvm_riscv_aia_disable","kvm_riscv_cpu_pm_notifier","kvm_riscv_clear_former_vcpu"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"52738352a6f29279e15285fcb7b50241ef867e27","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","CPU_PM"],"series_id":"2dcc5e11-902e-4314-8d54-78fba7668702","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-07-23 00:46:02 +0000 UTC FinishedAt: 2026-07-23 00:46:10 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"52738352a6f29279e15285fcb7b50241ef867e27","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","CPU_PM"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.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-workflow6klmv/series-workflow6klmv-convert-artifact-1636238602/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow6klmv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"52738352a6f29279e15285fcb7b50241ef867e27","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","CPU_PM"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_riscv_aia_enable","kvm_riscv_aia_disable","kvm_riscv_cpu_pm_notifier","kvm_riscv_clear_former_vcpu"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"52738352a6f29279e15285fcb7b50241ef867e27","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","CPU_PM"],"series_id":"2dcc5e11-902e-4314-8d54-78fba7668702","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-07-23 00:46:23 +0000 UTC FinishedAt: 2026-07-23 01:25:50 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6klmv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"52738352a6f29279e15285fcb7b50241ef867e27","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","CPU_PM"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_riscv_aia_enable","kvm_riscv_aia_disable","kvm_riscv_cpu_pm_notifier","kvm_riscv_clear_former_vcpu"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"52738352a6f29279e15285fcb7b50241ef867e27","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","CPU_PM"],"series_id":"2dcc5e11-902e-4314-8d54-78fba7668702","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-07-23 00:46:23 +0000 UTC FinishedAt: 2026-07-23 01:25: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:*771e7bc2-0119-4454-bf87-b33d54f5bece,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-workflow6klmv/series-workflow6klmv-convert-artifact-1636238602/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": "1caeca96-4c07-4060-8e1f-ced5614499ba", "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-workflow6klmv/series-workflow6klmv-build-action-2337779704/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow6klmv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"52738352a6f29279e15285fcb7b50241ef867e27","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","CPU_PM"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_riscv_aia_enable","kvm_riscv_aia_disable","kvm_riscv_cpu_pm_notifier","kvm_riscv_clear_former_vcpu"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"52738352a6f29279e15285fcb7b50241ef867e27","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","CPU_PM"],"series_id":"2dcc5e11-902e-4314-8d54-78fba7668702","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-07-23 00:46:23 +0000 UTC FinishedAt: 2026-07-23 01:25: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:*771e7bc2-0119-4454-bf87-b33d54f5bece,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-workflow6klmv/series-workflow6klmv-convert-artifact-1636238602/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": "1caeca96-4c07-4060-8e1f-ced5614499ba", "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-workflow6klmv/series-workflow6klmv-build-action-2337779704/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow6klmv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"52738352a6f29279e15285fcb7b50241ef867e27","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","CPU_PM"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_riscv_aia_enable","kvm_riscv_aia_disable","kvm_riscv_cpu_pm_notifier","kvm_riscv_clear_former_vcpu"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"52738352a6f29279e15285fcb7b50241ef867e27","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","CPU_PM"],"series_id":"2dcc5e11-902e-4314-8d54-78fba7668702","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-07-23 01:25:50 +0000 UTC FinishedAt: 2026-07-23 01:25:50 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6klmv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"52738352a6f29279e15285fcb7b50241ef867e27","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","CPU_PM"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_riscv_aia_enable","kvm_riscv_aia_disable","kvm_riscv_cpu_pm_notifier","kvm_riscv_clear_former_vcpu"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"52738352a6f29279e15285fcb7b50241ef867e27","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","CPU_PM"],"series_id":"2dcc5e11-902e-4314-8d54-78fba7668702","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-07-23 01:25:50 +0000 UTC FinishedAt: 2026-07-23 01:25:50 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6klmv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"52738352a6f29279e15285fcb7b50241ef867e27","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","CPU_PM"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_riscv_aia_enable","kvm_riscv_aia_disable","kvm_riscv_cpu_pm_notifier","kvm_riscv_clear_former_vcpu"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"52738352a6f29279e15285fcb7b50241ef867e27","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","CPU_PM"],"series_id":"2dcc5e11-902e-4314-8d54-78fba7668702","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-07-23 01:25:50 +0000 UTC FinishedAt: 2026-07-23 01:26:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6klmv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"52738352a6f29279e15285fcb7b50241ef867e27","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","CPU_PM"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_riscv_aia_enable","kvm_riscv_aia_disable","kvm_riscv_cpu_pm_notifier","kvm_riscv_clear_former_vcpu"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"52738352a6f29279e15285fcb7b50241ef867e27","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","CPU_PM"],"series_id":"2dcc5e11-902e-4314-8d54-78fba7668702","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-07-23 01:25:50 +0000 UTC FinishedAt: 2026-07-23 01:25:55 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"52738352a6f29279e15285fcb7b50241ef867e27","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","CPU_PM"],"series_id":"2dcc5e11-902e-4314-8d54-78fba7668702","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.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-workflow6klmv/series-workflow6klmv-convert-artifact-3479227813/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow6klmv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"52738352a6f29279e15285fcb7b50241ef867e27","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","CPU_PM"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_riscv_aia_enable","kvm_riscv_aia_disable","kvm_riscv_cpu_pm_notifier","kvm_riscv_clear_former_vcpu"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"52738352a6f29279e15285fcb7b50241ef867e27","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","CPU_PM"],"series_id":"2dcc5e11-902e-4314-8d54-78fba7668702","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-07-23 01:26:00 +0000 UTC FinishedAt: 2026-07-23 01:27:59 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6klmv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"52738352a6f29279e15285fcb7b50241ef867e27","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","CPU_PM"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_riscv_aia_enable","kvm_riscv_aia_disable","kvm_riscv_cpu_pm_notifier","kvm_riscv_clear_former_vcpu"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"52738352a6f29279e15285fcb7b50241ef867e27","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","CPU_PM"],"series_id":"2dcc5e11-902e-4314-8d54-78fba7668702","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-07-23 01:26:00 +0000 UTC FinishedAt: 2026-07-23 01:27:48 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*1caeca96-4c07-4060-8e1f-ced5614499ba,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-workflow6klmv/series-workflow6klmv-build-action-2337779704/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-workflow6klmv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"52738352a6f29279e15285fcb7b50241ef867e27","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","CPU_PM"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_riscv_aia_enable","kvm_riscv_aia_disable","kvm_riscv_cpu_pm_notifier","kvm_riscv_clear_former_vcpu"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"52738352a6f29279e15285fcb7b50241ef867e27","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","CPU_PM"],"series_id":"2dcc5e11-902e-4314-8d54-78fba7668702","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-07-23 01:27:59 +0000 UTC FinishedAt: 2026-07-23 01:27:59 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6klmv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"52738352a6f29279e15285fcb7b50241ef867e27","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","CPU_PM"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_riscv_aia_enable","kvm_riscv_aia_disable","kvm_riscv_cpu_pm_notifier","kvm_riscv_clear_former_vcpu"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"52738352a6f29279e15285fcb7b50241ef867e27","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","CPU_PM"],"series_id":"2dcc5e11-902e-4314-8d54-78fba7668702","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-07-23 01:27:59 +0000 UTC FinishedAt: 2026-07-23 01:27:59 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6klmv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"52738352a6f29279e15285fcb7b50241ef867e27","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","CPU_PM"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_riscv_aia_enable","kvm_riscv_aia_disable","kvm_riscv_cpu_pm_notifier","kvm_riscv_clear_former_vcpu"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"52738352a6f29279e15285fcb7b50241ef867e27","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","CPU_PM"],"series_id":"2dcc5e11-902e-4314-8d54-78fba7668702","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-07-23 01:27:59 +0000 UTC FinishedAt: 2026-07-23 02:04:28 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6klmv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"52738352a6f29279e15285fcb7b50241ef867e27","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","CPU_PM"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_riscv_aia_enable","kvm_riscv_aia_disable","kvm_riscv_cpu_pm_notifier","kvm_riscv_clear_former_vcpu"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"52738352a6f29279e15285fcb7b50241ef867e27","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","CPU_PM"],"series_id":"2dcc5e11-902e-4314-8d54-78fba7668702","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-07-23 01:27:59 +0000 UTC FinishedAt: 2026-07-23 02:04:28 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*true,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Patched,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*771e7bc2-0119-4454-bf87-b33d54f5bece,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-workflow6klmv/series-workflow6klmv-convert-artifact-3479227813/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": "aef3d1ed-bfbe-4c52-a096-1208864d5c63", "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-workflow6klmv/series-workflow6klmv-build-action-1721370097/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow6klmv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"52738352a6f29279e15285fcb7b50241ef867e27","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","CPU_PM"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_riscv_aia_enable","kvm_riscv_aia_disable","kvm_riscv_cpu_pm_notifier","kvm_riscv_clear_former_vcpu"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"52738352a6f29279e15285fcb7b50241ef867e27","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","CPU_PM"],"series_id":"2dcc5e11-902e-4314-8d54-78fba7668702","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-07-23 01:27:59 +0000 UTC FinishedAt: 2026-07-23 02:04:18 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*true,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Patched,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*771e7bc2-0119-4454-bf87-b33d54f5bece,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-workflow6klmv/series-workflow6klmv-convert-artifact-3479227813/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": "aef3d1ed-bfbe-4c52-a096-1208864d5c63", "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-workflow6klmv/series-workflow6klmv-build-action-1721370097/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow6klmv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"52738352a6f29279e15285fcb7b50241ef867e27","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","CPU_PM"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_riscv_aia_enable","kvm_riscv_aia_disable","kvm_riscv_cpu_pm_notifier","kvm_riscv_clear_former_vcpu"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"52738352a6f29279e15285fcb7b50241ef867e27","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","CPU_PM"],"series_id":"2dcc5e11-902e-4314-8d54-78fba7668702","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-07-23 02:04:28 +0000 UTC FinishedAt: 2026-07-23 02:04:28 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6klmv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"52738352a6f29279e15285fcb7b50241ef867e27","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","CPU_PM"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_riscv_aia_enable","kvm_riscv_aia_disable","kvm_riscv_cpu_pm_notifier","kvm_riscv_clear_former_vcpu"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"52738352a6f29279e15285fcb7b50241ef867e27","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","CPU_PM"],"series_id":"2dcc5e11-902e-4314-8d54-78fba7668702","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-07-23 02:04:28 +0000 UTC FinishedAt: 2026-07-23 02:04:28 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6klmv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"52738352a6f29279e15285fcb7b50241ef867e27","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","CPU_PM"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_riscv_aia_enable","kvm_riscv_aia_disable","kvm_riscv_cpu_pm_notifier","kvm_riscv_clear_former_vcpu"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"52738352a6f29279e15285fcb7b50241ef867e27","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","CPU_PM"],"series_id":"2dcc5e11-902e-4314-8d54-78fba7668702","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-07-23 02:04:28 +0000 UTC FinishedAt: 2026-07-23 02:06:39 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6klmv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"52738352a6f29279e15285fcb7b50241ef867e27","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","CPU_PM"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_riscv_aia_enable","kvm_riscv_aia_disable","kvm_riscv_cpu_pm_notifier","kvm_riscv_clear_former_vcpu"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"52738352a6f29279e15285fcb7b50241ef867e27","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","CPU_PM"],"series_id":"2dcc5e11-902e-4314-8d54-78fba7668702","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-07-23 02:04:28 +0000 UTC FinishedAt: 2026-07-23 02:06:29 +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:*aef3d1ed-bfbe-4c52-a096-1208864d5c63,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-workflow6klmv/series-workflow6klmv-build-action-1721370097/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-workflow6klmv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"52738352a6f29279e15285fcb7b50241ef867e27","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","CPU_PM"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_riscv_aia_enable","kvm_riscv_aia_disable","kvm_riscv_cpu_pm_notifier","kvm_riscv_clear_former_vcpu"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"52738352a6f29279e15285fcb7b50241ef867e27","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","CPU_PM"],"series_id":"2dcc5e11-902e-4314-8d54-78fba7668702","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-07-23 02:06:39 +0000 UTC FinishedAt: 2026-07-23 02:09:16 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6klmv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"52738352a6f29279e15285fcb7b50241ef867e27","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","CPU_PM"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_riscv_aia_enable","kvm_riscv_aia_disable","kvm_riscv_cpu_pm_notifier","kvm_riscv_clear_former_vcpu"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"52738352a6f29279e15285fcb7b50241ef867e27","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","CPU_PM"],"series_id":"2dcc5e11-902e-4314-8d54-78fba7668702","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-07-23 02:06:39 +0000 UTC FinishedAt: 2026-07-23 02:09:16 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:config,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_riscv_aia_enable","kvm_riscv_aia_disable","kvm_riscv_cpu_pm_notifier","kvm_riscv_clear_former_vcpu"],"skip_cover_check":false},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:track,Default:nil,Value:*KASAN,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:base-build-id,Default:nil,Value:*1caeca96-4c07-4060-8e1f-ced5614499ba,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*aef3d1ed-bfbe-4c52-a096-1208864d5c63,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-workflow6klmv/series-workflow6klmv-build-action-2337779704/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-workflow6klmv/series-workflow6klmv-build-action-1721370097/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflow6klmv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"52738352a6f29279e15285fcb7b50241ef867e27","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","CPU_PM"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_riscv_aia_enable","kvm_riscv_aia_disable","kvm_riscv_cpu_pm_notifier","kvm_riscv_clear_former_vcpu"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"52738352a6f29279e15285fcb7b50241ef867e27","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","CPU_PM"],"series_id":"2dcc5e11-902e-4314-8d54-78fba7668702","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-07-23 02:06:39 +0000 UTC FinishedAt: 2026-07-23 02:06:49 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6klmv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"52738352a6f29279e15285fcb7b50241ef867e27","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","CPU_PM"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_riscv_aia_enable","kvm_riscv_aia_disable","kvm_riscv_cpu_pm_notifier","kvm_riscv_clear_former_vcpu"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"52738352a6f29279e15285fcb7b50241ef867e27","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","CPU_PM"],"series_id":"2dcc5e11-902e-4314-8d54-78fba7668702","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-07-23 02:06:39 +0000 UTC FinishedAt: 2026-07-23 02:06:45 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_riscv_aia_enable","kvm_riscv_aia_disable","kvm_riscv_cpu_pm_notifier","kvm_riscv_clear_former_vcpu"],"skip_cover_check":false},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow6klmv/series-workflow6klmv-convert-artifact-2943846186/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow6klmv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"52738352a6f29279e15285fcb7b50241ef867e27","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","CPU_PM"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_riscv_aia_enable","kvm_riscv_aia_disable","kvm_riscv_cpu_pm_notifier","kvm_riscv_clear_former_vcpu"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"52738352a6f29279e15285fcb7b50241ef867e27","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","CPU_PM"],"series_id":"2dcc5e11-902e-4314-8d54-78fba7668702","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-07-23 02:06:39 +0000 UTC FinishedAt: 2026-07-23 02:06:39 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6klmv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"52738352a6f29279e15285fcb7b50241ef867e27","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","CPU_PM"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_riscv_aia_enable","kvm_riscv_aia_disable","kvm_riscv_cpu_pm_notifier","kvm_riscv_clear_former_vcpu"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"52738352a6f29279e15285fcb7b50241ef867e27","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","CPU_PM"],"series_id":"2dcc5e11-902e-4314-8d54-78fba7668702","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-07-23 02:06:39 +0000 UTC FinishedAt: 2026-07-23 02:06:39 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6klmv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"52738352a6f29279e15285fcb7b50241ef867e27","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","CPU_PM"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_riscv_aia_enable","kvm_riscv_aia_disable","kvm_riscv_cpu_pm_notifier","kvm_riscv_clear_former_vcpu"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"52738352a6f29279e15285fcb7b50241ef867e27","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","CPU_PM"],"series_id":"2dcc5e11-902e-4314-8d54-78fba7668702","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-07-23 02:06:39 +0000 UTC FinishedAt: 2026-07-23 02:06:39 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6klmv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"52738352a6f29279e15285fcb7b50241ef867e27","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","CPU_PM"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_riscv_aia_enable","kvm_riscv_aia_disable","kvm_riscv_cpu_pm_notifier","kvm_riscv_clear_former_vcpu"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"52738352a6f29279e15285fcb7b50241ef867e27","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","CPU_PM"],"series_id":"2dcc5e11-902e-4314-8d54-78fba7668702","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-07-23 02:06:49 +0000 UTC FinishedAt: 2026-07-23 02:09:16 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6klmv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"52738352a6f29279e15285fcb7b50241ef867e27","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","CPU_PM"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_riscv_aia_enable","kvm_riscv_aia_disable","kvm_riscv_cpu_pm_notifier","kvm_riscv_clear_former_vcpu"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"52738352a6f29279e15285fcb7b50241ef867e27","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","CPU_PM"],"series_id":"2dcc5e11-902e-4314-8d54-78fba7668702","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-07-23 02:06:49 +0000 UTC FinishedAt: 2026-07-23 02:08:56 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*1caeca96-4c07-4060-8e1f-ced5614499ba,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*aef3d1ed-bfbe-4c52-a096-1208864d5c63,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-workflow6klmv/series-workflow6klmv-build-action-2337779704/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-workflow6klmv/series-workflow6klmv-build-action-1721370097/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-workflow6klmv/series-workflow6klmv-convert-artifact-2943846186/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,}