Name: series-workflowt8zdw Phase: Succeeded StartedAt: 2026-06-23 06:26:27 +0000 UTC FinishedAt: 2026-06-23 10:40:04 +0000 UTC Input: nil Output: nil --------- Name: series-workflowt8zdw[0] Phase: Succeeded StartedAt: 2026-06-23 06:26:27 +0000 UTC FinishedAt: 2026-06-23 06:37:17 +0000 UTC Input: nil Output: nil --------- Name: series-workflowt8zdw[0].run-triage Phase: Succeeded StartedAt: 2026-06-23 06:26:27 +0000 UTC FinishedAt: 2026-06-23 06:37:17 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "bpf-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git", "commit_hash": "a975094bf98ca97be9146f9d3b5681a6f9cf5ce3", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BPF_SYSCALL", "DEBUG_INFO_BTF" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "bpf-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git", "commit_hash": "a975094bf98ca97be9146f9d3b5681a6f9cf5ce3", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BPF_SYSCALL", "DEBUG_INFO_BTF" ], "series_id": "1b23a61d-fb92-4a8e-99a8-8ab90e1bc681" }, "track": "KASAN", "fuzz": { "focus": [ "bpf" ], "focus_symbols": [ "check_kfunc_args", "__check_func_arg_reg_off" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzIzIDA2OjM2PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JQRl9TWVNDQUxMJiMzNDssCiAgICAmIzM0O0RFQlVHX0lORk9fQlRGJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7Y2hlY2tfa2Z1bmNfYXJncyYjMzQ7LAogICAgJiMzNDtfX2NoZWNrX2Z1bmNfYXJnX3JlZ19vZmYmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIEJQRiB2ZXJpZmllciB0byByZWplY3QgcGFzc2luZyBhIG1vZGlmaWVkIHBvaW50ZXIgKHdpdGggbm9uLXplcm8gZml4ZWQgb2Zmc2V0KSB0byBhIGtmdW5jIGV4cGVjdGluZyBhIEtGX0FSR19QVFJfVE9fUkVGQ09VTlRFRF9LUFRSLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIEJQRiB2ZXJpZmllciBsb2dpYy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yMyAwNjozNjwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IGIxMzE5Y2Y4ZWE2NWRiOWEyMGE5MDkwMThmOWM4OGZhYzBkMjEyZTdcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVHVlIEp1biAyMyAwNjozNjo0NCAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9rZXJuZWwvYnBmL3ZlcmlmaWVyLmMgYi9rZXJuZWwvYnBmL3ZlcmlmaWVyLmNcbmluZGV4IDJhYmM3OWRiZjI4MWMyLi5mNjVlZmYyOGVjZDI1ZSAxMDA2NDRcbi0tLSBhL2tlcm5lbC9icGYvdmVyaWZpZXIuY1xuJiM0MzsmIzQzOyYjNDM7IGIva2VybmVsL2JwZi92ZXJpZmllci5jXG5AQCAtNzk5MCw5ICYjNDM7Nzk5MCwxMCBAQCByZWdfZmluZF9maWVsZF9vZmZzZXQoY29uc3Qgc3RydWN0IGJwZl9yZWdfc3RhdGUgKnJlZywgczMyIG9mZiwgdTMyIGZpZWxkcylcbiBcdHJldHVybiBmaWVsZDtcbiB9XG4gXG4tc3RhdGljIGludCBjaGVja19mdW5jX2FyZ19yZWdfb2ZmKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsXG4tXHRcdFx0XHQgIGNvbnN0IHN0cnVjdCBicGZfcmVnX3N0YXRlICpyZWcsIGFyZ25vX3QgYXJnbm8sXG4tXHRcdFx0XHQgIGVudW0gYnBmX2FyZ190eXBlIGFyZ190eXBlKVxuJiM0MztzdGF0aWMgaW50IF9fY2hlY2tfZnVuY19hcmdfcmVnX29mZihzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LFxuJiM0MztcdFx0XHRcdCAgICBjb25zdCBzdHJ1Y3QgYnBmX3JlZ19zdGF0ZSAqcmVnLCBhcmdub190IGFyZ25vLFxuJiM0MztcdFx0XHRcdCAgICBlbnVtIGJwZl9hcmdfdHlwZSBhcmdfdHlwZSxcbiYjNDM7XHRcdFx0XHQgICAgYm9vbCBidGZfaWRfZml4ZWRfb2ZmX29rKVxuIHtcbiBcdHUzMiB0eXBlID0gcmVnLVx1MDAzZXR5cGU7XG4gXG5AQCAtODA0OSwxMiAmIzQzOzgwNTAsMTEgQEAgc3RhdGljIGludCBjaGVja19mdW5jX2FyZ19yZWdfb2ZmKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsXG4gXHRjYXNlIFBUUl9UT19CVEZfSUQgfCBNRU1fQUxMT0MgfCBOT05fT1dOX1JFRiB8IE1FTV9SQ1U6XG4gXHRcdC8qIFdoZW4gcmVmZXJlbmNlZCBQVFJfVE9fQlRGX0lEIGlzIHBhc3NlZCB0byByZWxlYXNlIGZ1bmN0aW9uLFxuIFx0XHQgKiBpdHMgZml4ZWQgb2Zmc2V0IG11c3QgYmUgMC4gSW4gdGhlIG90aGVyIGNhc2VzLCBmaXhlZCBvZmZzZXRcbi1cdFx0ICogY2FuIGJlIG5vbi16ZXJvLiBUaGlzIHdhcyBhbHJlYWR5IGNoZWNrZWQgYWJvdmUuIFNvIHBhc3Ncbi1cdFx0ICogZml4ZWRfb2ZmX29rIGFzIHRydWUgdG8gYWxsb3cgZml4ZWQgb2Zmc2V0IGZvciBhbGwgb3RoZXJcbi1cdFx0ICogY2FzZXMuIHZhcl9vZmYgYWx3YXlzIG11c3QgYmUgMCBmb3IgUFRSX1RPX0JURl9JRCwgaGVuY2Ugd2Vcbi1cdFx0ICogc3RpbGwgbmVlZCB0byBkbyBjaGVja3MgaW5zdGVhZCBvZiByZXR1cm5pbmcuXG4mIzQzO1x0XHQgKiBjYW4gYmUgbm9uLXplcm8gdW5sZXNzIHRoZSBjYWxsZXIgcmVxdWlyZXMgb3RoZXJ3aXNlLlxuJiM0MztcdFx0ICogdmFyX29mZiBhbHdheXMgbXVzdCBiZSAwIGZvciBQVFJfVE9fQlRGX0lELCBoZW5jZSB3ZSBzdGlsbFxuJiM0MztcdFx0ICogbmVlZCB0byBkbyBjaGVja3MgaW5zdGVhZCBvZiByZXR1cm5pbmcuXG4gXHRcdCAqL1xuLVx0XHRyZXR1cm4gX19jaGVja19wdHJfb2ZmX3JlZyhlbnYsIHJlZywgYXJnbm8sIHRydWUpO1xuJiM0MztcdFx0cmV0dXJuIF9fY2hlY2tfcHRyX29mZl9yZWcoZW52LCByZWcsIGFyZ25vLCBidGZfaWRfZml4ZWRfb2ZmX29rKTtcbiBcdGNhc2UgUFRSX1RPX0NUWDpcbiBcdFx0LypcbiBcdFx0ICogQWxsb3cgZml4ZWQgYW5kIHZhcmlhYmxlIG9mZnNldHMgZm9yIHN5c2NhbGwgY29udGV4dCwgYnV0XG5AQCAtODA3MCw2ICYjNDM7ODA3MCwxMyBAQCBzdGF0aWMgaW50IGNoZWNrX2Z1bmNfYXJnX3JlZ19vZmYoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudixcbiBcdH1cbiB9XG4gXG4mIzQzO3N0YXRpYyBpbnQgY2hlY2tfZnVuY19hcmdfcmVnX29mZihzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LFxuJiM0MztcdFx0XHRcdCAgY29uc3Qgc3RydWN0IGJwZl9yZWdfc3RhdGUgKnJlZywgYXJnbm9fdCBhcmdubyxcbiYjNDM7XHRcdFx0XHQgIGVudW0gYnBmX2FyZ190eXBlIGFyZ190eXBlKVxuJiM0Mzt7XG4mIzQzO1x0cmV0dXJuIF9fY2hlY2tfZnVuY19hcmdfcmVnX29mZihlbnYsIHJlZywgYXJnbm8sIGFyZ190eXBlLCB0cnVlKTtcbiYjNDM7fVxuJiM0MztcbiBzdGF0aWMgaW50IGNoZWNrX2FyZ19jb25zdF9zdHIoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudixcbiBcdFx0XHQgICAgICAgc3RydWN0IGJwZl9yZWdfc3RhdGUgKnJlZywgYXJnbm9fdCBhcmdubylcbiB7XG5AQCAtMTE5NDEsNiAmIzQzOzExOTQ4LDcgQEAgc3RhdGljIGludCBjaGVja19rZnVuY19hcmdzKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIHN0cnVjdCBicGZfa2Z1bmNfY2FsbF9cbiBcdFx0ZW51bSBicGZfYXJnX3R5cGUgYXJnX3R5cGUgPSBBUkdfRE9OVENBUkU7XG4gXHRcdGFyZ25vX3QgYXJnbm8gPSBhcmdub19mcm9tX2FyZyhpICYjNDM7IDEpO1xuIFx0XHRpbnQgcmVnbm8gPSByZWdfZnJvbV9hcmdubyhhcmdubyk7XG4mIzQzO1x0XHRib29sIGJ0Zl9pZF9maXhlZF9vZmZfb2sgPSB0cnVlO1xuIFx0XHR1MzIgcmVmX2lkLCB0eXBlX3NpemU7XG4gXHRcdGJvb2wgaXNfcmV0X2J1Zl9zeiA9IGZhbHNlO1xuIFx0XHRpbnQga2ZfYXJnX3R5cGU7XG5AQCAtMTIxMTQsNyAmIzQzOzEyMTIyLDYgQEAgc3RhdGljIGludCBjaGVja19rZnVuY19hcmdzKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIHN0cnVjdCBicGZfa2Z1bmNfY2FsbF9cbiBcdFx0Y2FzZSBLRl9BUkdfUFRSX1RPX01FTTpcbiBcdFx0Y2FzZSBLRl9BUkdfUFRSX1RPX01FTV9TSVpFOlxuIFx0XHRjYXNlIEtGX0FSR19QVFJfVE9fQ0FMTEJBQ0s6XG4tXHRcdGNhc2UgS0ZfQVJHX1BUUl9UT19SRUZDT1VOVEVEX0tQVFI6XG4gXHRcdGNhc2UgS0ZfQVJHX1BUUl9UT19DT05TVF9TVFI6XG4gXHRcdGNhc2UgS0ZfQVJHX1BUUl9UT19XT1JLUVVFVUU6XG4gXHRcdGNhc2UgS0ZfQVJHX1BUUl9UT19USU1FUjpcbkBAIC0xMjEyOCw2ICYjNDM7MTIxMzUsMTAgQEAgc3RhdGljIGludCBjaGVja19rZnVuY19hcmdzKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIHN0cnVjdCBicGZfa2Z1bmNfY2FsbF9cbiBcdFx0Y2FzZSBLRl9BUkdfUFRSX1RPX0NUWDpcbiBcdFx0XHRhcmdfdHlwZSA9IEFSR19QVFJfVE9fQ1RYO1xuIFx0XHRcdGJyZWFrO1xuJiM0MztcdFx0Y2FzZSBLRl9BUkdfUFRSX1RPX1JFRkNPVU5URURfS1BUUjpcbiYjNDM7XHRcdFx0YXJnX3R5cGUgPSBBUkdfUFRSX1RPX0JURl9JRDtcbiYjNDM7XHRcdFx0YnRmX2lkX2ZpeGVkX29mZl9vayA9IGZhbHNlO1xuJiM0MztcdFx0XHRicmVhaztcbiBcdFx0ZGVmYXVsdDpcbiBcdFx0XHR2ZXJpZmllcl9idWcoZW52LCBcJiMzNDt1bmtub3duIGtmdW5jIGFyZyB0eXBlICVkXCYjMzQ7LCBrZl9hcmdfdHlwZSk7XG4gXHRcdFx0cmV0dXJuIC1FRkFVTFQ7XG5AQCAtMTIxMzUsNyAmIzQzOzEyMTQ2LDggQEAgc3RhdGljIGludCBjaGVja19rZnVuY19hcmdzKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIHN0cnVjdCBicGZfa2Z1bmNfY2FsbF9cbiBcbiBcdFx0aWYgKHJlZ25vID09IG1ldGEtXHUwMDNlcmVsZWFzZV9yZWdubylcbiBcdFx0XHRhcmdfdHlwZSB8PSBPQkpfUkVMRUFTRTtcbi1cdFx0cmV0ID0gY2hlY2tfZnVuY19hcmdfcmVnX29mZihlbnYsIHJlZywgYXJnbm8sIGFyZ190eXBlKTtcbiYjNDM7XHRcdHJldCA9IF9fY2hlY2tfZnVuY19hcmdfcmVnX29mZihlbnYsIHJlZywgYXJnbm8sIGFyZ190eXBlLFxuJiM0MztcdFx0XHRcdFx0ICAgICAgIGJ0Zl9pZF9maXhlZF9vZmZfb2spO1xuIFx0XHRpZiAocmV0IFx1MDAzYyAwKVxuIFx0XHRcdHJldHVybiByZXQ7XG4gXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3JlZmNvdW50ZWRfa3B0cl9mYWlsLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvcmVmY291bnRlZF9rcHRyX2ZhaWwuY1xuaW5kZXggNzI0N2EyMGMwYTNiZjUuLjAyNGVmMmFhZTIwMDgyIDEwMDY0NFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3JlZmNvdW50ZWRfa3B0cl9mYWlsLmNcbiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9yZWZjb3VudGVkX2twdHJfZmFpbC5jXG5AQCAtMTMsMTIgJiM0MzsxMywyMCBAQCBzdHJ1Y3Qgbm9kZV9hY3F1aXJlIHtcbiBcdHN0cnVjdCBicGZfcmVmY291bnQgcmVmY291bnQ7XG4gfTtcbiBcbiYjNDM7c3RydWN0IG5vZGVfcmVmY291bnRlZCB7XG4mIzQzO1x0bG9uZyBrZXk7XG4mIzQzO1x0c3RydWN0IGJwZl9saXN0X25vZGUgbGlzdDtcbiYjNDM7XHRzdHJ1Y3QgYnBmX3JlZmNvdW50IHJlZmNvdW50O1xuJiM0Mzt9O1xuJiM0MztcbiBleHRlcm4gdm9pZCBicGZfcmN1X3JlYWRfbG9jayh2b2lkKSBfX2tzeW07XG4gZXh0ZXJuIHZvaWQgYnBmX3JjdV9yZWFkX3VubG9jayh2b2lkKSBfX2tzeW07XG4gXG4gI2RlZmluZSBwcml2YXRlKG5hbWUpIFNFQyhcJiMzNDsuZGF0YS5cJiMzNDsgI25hbWUpIF9faGlkZGVuIF9fYXR0cmlidXRlX18oKGFsaWduZWQoOCkpKVxuIHByaXZhdGUoQSkgc3RydWN0IGJwZl9zcGluX2xvY2sgZ2xvY2s7XG4gcHJpdmF0ZShBKSBzdHJ1Y3QgYnBmX3JiX3Jvb3QgZ3Jvb3QgX19jb250YWlucyhub2RlX2FjcXVpcmUsIG5vZGUpO1xuJiM0Mztwcml2YXRlKEIpIHN0cnVjdCBicGZfc3Bpbl9sb2NrIGxvY2s7XG4mIzQzO3ByaXZhdGUoQikgc3RydWN0IGJwZl9saXN0X2hlYWQgaGVhZCBfX2NvbnRhaW5zKG5vZGVfcmVmY291bnRlZCwgbGlzdCk7XG4gXG4gc3RhdGljIGJvb2wgbGVzcyhzdHJ1Y3QgYnBmX3JiX25vZGUgKmEsIGNvbnN0IHN0cnVjdCBicGZfcmJfbm9kZSAqYilcbiB7XG5AQCAtOTMsNiAmIzQzOzEwMSwzMiBAQCBsb25nIHJidHJlZV9yZWZjb3VudGVkX25vZGVfcmVmX2VzY2FwZXNfb3duaW5nX2lucHV0KHZvaWQgKmN0eClcbiBcdHJldHVybiAwO1xuIH1cbiBcbiYjNDM7U0VDKFwmIzM0Oz90Y1wmIzM0OylcbiYjNDM7X19mYWlsdXJlIF9fbXNnKFwmIzM0O2RlcmVmZXJlbmNlIG9mIG1vZGlmaWVkIHB0cl8gcHRyIFIxXCYjMzQ7KVxuJiM0Mztsb25nIHJlZmNvdW50X2FjcXVpcmVfbGlzdF9ub2RlX29mZnNldCh2b2lkICpjdHgpXG4mIzQzO3tcbiYjNDM7XHRzdHJ1Y3Qgbm9kZV9yZWZjb3VudGVkICpub2RlLCAqYmFzZSwgKnJlZjtcbiYjNDM7XHRzdHJ1Y3QgYnBmX2xpc3Rfbm9kZSAqbGlzdF9ub2RlO1xuJiM0MztcbiYjNDM7XHRub2RlID0gYnBmX29ial9uZXcodHlwZW9mKCpub2RlKSk7XG4mIzQzO1x0aWYgKCFub2RlKVxuJiM0MztcdFx0cmV0dXJuIDE7XG4mIzQzO1xuJiM0MztcdGJwZl9zcGluX2xvY2soXHUwMDI2bG9jayk7XG4mIzQzO1x0YnBmX2xpc3RfcHVzaF9mcm9udChcdTAwMjZoZWFkLCBcdTAwMjZub2RlLVx1MDAzZWxpc3QpO1xuJiM0MztcdGxpc3Rfbm9kZSA9IGJwZl9saXN0X3BvcF9mcm9udChcdTAwMjZoZWFkKTtcbiYjNDM7XHRicGZfc3Bpbl91bmxvY2soXHUwMDI2bG9jayk7XG4mIzQzO1x0aWYgKCFsaXN0X25vZGUpXG4mIzQzO1x0XHRyZXR1cm4gMjtcbiYjNDM7XG4mIzQzO1x0YmFzZSA9IGNvbnRhaW5lcl9vZihsaXN0X25vZGUsIHN0cnVjdCBub2RlX3JlZmNvdW50ZWQsIGxpc3QpO1xuJiM0MztcdHJlZiA9IGJwZl9yZWZjb3VudF9hY3F1aXJlKGxpc3Rfbm9kZSk7XG4mIzQzO1x0aWYgKHJlZilcbiYjNDM7XHRcdGJwZl9vYmpfZHJvcChyZWYpO1xuJiM0MztcdGJwZl9vYmpfZHJvcChiYXNlKTtcbiYjNDM7XHRyZXR1cm4gMDtcbiYjNDM7fVxuJiM0MztcbiBTRUMoXCYjMzQ7P2ZlbnRyeS5zL1wmIzM0OyBTWVNfUFJFRklYIFwmIzM0O3N5c19nZXRwZ2lkXCYjMzQ7KVxuIF9fZmFpbHVyZSBfX21zZyhcJiMzNDtmdW5jdGlvbiBjYWxscyBhcmUgbm90IGFsbG93ZWQgd2hpbGUgaG9sZGluZyBhIGxvY2tcJiMzNDspXG4gaW50IEJQRl9QUk9HKHJidHJlZV9mYWlsX3NsZWVwYWJsZV9sb2NrX2Fjcm9zc19yY3UsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjMgMDY6MzY8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7QlBGX1NZU0NBTEwmIzM0OywKICAgICYjMzQ7REVCVUdfSU5GT19CVEYmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtjaGVja19rZnVuY19hcmdzJiMzNDssCiAgICAmIzM0O19fY2hlY2tfZnVuY19hcmdfcmVnX29mZiYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgQlBGIHZlcmlmaWVyIHRvIHJlamVjdCBwYXNzaW5nIGEgbW9kaWZpZWQgcG9pbnRlciAod2l0aCBub24temVybyBmaXhlZCBvZmZzZXQpIHRvIGEga2Z1bmMgZXhwZWN0aW5nIGEgS0ZfQVJHX1BUUl9UT19SRUZDT1VOVEVEX0tQVFIuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgQlBGIHZlcmlmaWVyIGxvZ2ljLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdAogICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksCiAgIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCBiMTMxOWNmOGVhNjVkYjlhMjBhOTA5MDE4ZjljODhmYWMwZDIxMmU3CkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFR1ZSBKdW4gMjMgMDY6MzY6NDQgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9rZXJuZWwvYnBmL3ZlcmlmaWVyLmMgYi9rZXJuZWwvYnBmL3ZlcmlmaWVyLmMKaW5kZXggMmFiYzc5ZGJmMjgxYzIuLmY2NWVmZjI4ZWNkMjVlIDEwMDY0NAotLS0gYS9rZXJuZWwvYnBmL3ZlcmlmaWVyLmMKJiM0MzsmIzQzOyYjNDM7IGIva2VybmVsL2JwZi92ZXJpZmllci5jCkBAIC03OTkwLDkgJiM0Mzs3OTkwLDEwIEBAIHJlZ19maW5kX2ZpZWxkX29mZnNldChjb25zdCBzdHJ1Y3QgYnBmX3JlZ19zdGF0ZSAqcmVnLCBzMzIgb2ZmLCB1MzIgZmllbGRzKQogCXJldHVybiBmaWVsZDsKIH0KIAotc3RhdGljIGludCBjaGVja19mdW5jX2FyZ19yZWdfb2ZmKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsCi0JCQkJICBjb25zdCBzdHJ1Y3QgYnBmX3JlZ19zdGF0ZSAqcmVnLCBhcmdub190IGFyZ25vLAotCQkJCSAgZW51bSBicGZfYXJnX3R5cGUgYXJnX3R5cGUpCiYjNDM7c3RhdGljIGludCBfX2NoZWNrX2Z1bmNfYXJnX3JlZ19vZmYoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwKJiM0MzsJCQkJICAgIGNvbnN0IHN0cnVjdCBicGZfcmVnX3N0YXRlICpyZWcsIGFyZ25vX3QgYXJnbm8sCiYjNDM7CQkJCSAgICBlbnVtIGJwZl9hcmdfdHlwZSBhcmdfdHlwZSwKJiM0MzsJCQkJICAgIGJvb2wgYnRmX2lkX2ZpeGVkX29mZl9vaykKIHsKIAl1MzIgdHlwZSA9IHJlZy0mZ3Q7dHlwZTsKIApAQCAtODA0OSwxMiAmIzQzOzgwNTAsMTEgQEAgc3RhdGljIGludCBjaGVja19mdW5jX2FyZ19yZWdfb2ZmKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsCiAJY2FzZSBQVFJfVE9fQlRGX0lEIHwgTUVNX0FMTE9DIHwgTk9OX09XTl9SRUYgfCBNRU1fUkNVOgogCQkvKiBXaGVuIHJlZmVyZW5jZWQgUFRSX1RPX0JURl9JRCBpcyBwYXNzZWQgdG8gcmVsZWFzZSBmdW5jdGlvbiwKIAkJICogaXRzIGZpeGVkIG9mZnNldCBtdXN0IGJlIDAuIEluIHRoZSBvdGhlciBjYXNlcywgZml4ZWQgb2Zmc2V0Ci0JCSAqIGNhbiBiZSBub24temVyby4gVGhpcyB3YXMgYWxyZWFkeSBjaGVja2VkIGFib3ZlLiBTbyBwYXNzCi0JCSAqIGZpeGVkX29mZl9vayBhcyB0cnVlIHRvIGFsbG93IGZpeGVkIG9mZnNldCBmb3IgYWxsIG90aGVyCi0JCSAqIGNhc2VzLiB2YXJfb2ZmIGFsd2F5cyBtdXN0IGJlIDAgZm9yIFBUUl9UT19CVEZfSUQsIGhlbmNlIHdlCi0JCSAqIHN0aWxsIG5lZWQgdG8gZG8gY2hlY2tzIGluc3RlYWQgb2YgcmV0dXJuaW5nLgomIzQzOwkJICogY2FuIGJlIG5vbi16ZXJvIHVubGVzcyB0aGUgY2FsbGVyIHJlcXVpcmVzIG90aGVyd2lzZS4KJiM0MzsJCSAqIHZhcl9vZmYgYWx3YXlzIG11c3QgYmUgMCBmb3IgUFRSX1RPX0JURl9JRCwgaGVuY2Ugd2Ugc3RpbGwKJiM0MzsJCSAqIG5lZWQgdG8gZG8gY2hlY2tzIGluc3RlYWQgb2YgcmV0dXJuaW5nLgogCQkgKi8KLQkJcmV0dXJuIF9fY2hlY2tfcHRyX29mZl9yZWcoZW52LCByZWcsIGFyZ25vLCB0cnVlKTsKJiM0MzsJCXJldHVybiBfX2NoZWNrX3B0cl9vZmZfcmVnKGVudiwgcmVnLCBhcmdubywgYnRmX2lkX2ZpeGVkX29mZl9vayk7CiAJY2FzZSBQVFJfVE9fQ1RYOgogCQkvKgogCQkgKiBBbGxvdyBmaXhlZCBhbmQgdmFyaWFibGUgb2Zmc2V0cyBmb3Igc3lzY2FsbCBjb250ZXh0LCBidXQKQEAgLTgwNzAsNiAmIzQzOzgwNzAsMTMgQEAgc3RhdGljIGludCBjaGVja19mdW5jX2FyZ19yZWdfb2ZmKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsCiAJfQogfQogCiYjNDM7c3RhdGljIGludCBjaGVja19mdW5jX2FyZ19yZWdfb2ZmKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsCiYjNDM7CQkJCSAgY29uc3Qgc3RydWN0IGJwZl9yZWdfc3RhdGUgKnJlZywgYXJnbm9fdCBhcmdubywKJiM0MzsJCQkJICBlbnVtIGJwZl9hcmdfdHlwZSBhcmdfdHlwZSkKJiM0Mzt7CiYjNDM7CXJldHVybiBfX2NoZWNrX2Z1bmNfYXJnX3JlZ19vZmYoZW52LCByZWcsIGFyZ25vLCBhcmdfdHlwZSwgdHJ1ZSk7CiYjNDM7fQomIzQzOwogc3RhdGljIGludCBjaGVja19hcmdfY29uc3Rfc3RyKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsCiAJCQkgICAgICAgc3RydWN0IGJwZl9yZWdfc3RhdGUgKnJlZywgYXJnbm9fdCBhcmdubykKIHsKQEAgLTExOTQxLDYgJiM0MzsxMTk0OCw3IEBAIHN0YXRpYyBpbnQgY2hlY2tfa2Z1bmNfYXJncyhzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBzdHJ1Y3QgYnBmX2tmdW5jX2NhbGxfCiAJCWVudW0gYnBmX2FyZ190eXBlIGFyZ190eXBlID0gQVJHX0RPTlRDQVJFOwogCQlhcmdub190IGFyZ25vID0gYXJnbm9fZnJvbV9hcmcoaSAmIzQzOyAxKTsKIAkJaW50IHJlZ25vID0gcmVnX2Zyb21fYXJnbm8oYXJnbm8pOwomIzQzOwkJYm9vbCBidGZfaWRfZml4ZWRfb2ZmX29rID0gdHJ1ZTsKIAkJdTMyIHJlZl9pZCwgdHlwZV9zaXplOwogCQlib29sIGlzX3JldF9idWZfc3ogPSBmYWxzZTsKIAkJaW50IGtmX2FyZ190eXBlOwpAQCAtMTIxMTQsNyAmIzQzOzEyMTIyLDYgQEAgc3RhdGljIGludCBjaGVja19rZnVuY19hcmdzKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIHN0cnVjdCBicGZfa2Z1bmNfY2FsbF8KIAkJY2FzZSBLRl9BUkdfUFRSX1RPX01FTToKIAkJY2FzZSBLRl9BUkdfUFRSX1RPX01FTV9TSVpFOgogCQljYXNlIEtGX0FSR19QVFJfVE9fQ0FMTEJBQ0s6Ci0JCWNhc2UgS0ZfQVJHX1BUUl9UT19SRUZDT1VOVEVEX0tQVFI6CiAJCWNhc2UgS0ZfQVJHX1BUUl9UT19DT05TVF9TVFI6CiAJCWNhc2UgS0ZfQVJHX1BUUl9UT19XT1JLUVVFVUU6CiAJCWNhc2UgS0ZfQVJHX1BUUl9UT19USU1FUjoKQEAgLTEyMTI4LDYgJiM0MzsxMjEzNSwxMCBAQCBzdGF0aWMgaW50IGNoZWNrX2tmdW5jX2FyZ3Moc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgc3RydWN0IGJwZl9rZnVuY19jYWxsXwogCQljYXNlIEtGX0FSR19QVFJfVE9fQ1RYOgogCQkJYXJnX3R5cGUgPSBBUkdfUFRSX1RPX0NUWDsKIAkJCWJyZWFrOwomIzQzOwkJY2FzZSBLRl9BUkdfUFRSX1RPX1JFRkNPVU5URURfS1BUUjoKJiM0MzsJCQlhcmdfdHlwZSA9IEFSR19QVFJfVE9fQlRGX0lEOwomIzQzOwkJCWJ0Zl9pZF9maXhlZF9vZmZfb2sgPSBmYWxzZTsKJiM0MzsJCQlicmVhazsKIAkJZGVmYXVsdDoKIAkJCXZlcmlmaWVyX2J1ZyhlbnYsICYjMzQ7dW5rbm93biBrZnVuYyBhcmcgdHlwZSAlZCYjMzQ7LCBrZl9hcmdfdHlwZSk7CiAJCQlyZXR1cm4gLUVGQVVMVDsKQEAgLTEyMTM1LDcgJiM0MzsxMjE0Niw4IEBAIHN0YXRpYyBpbnQgY2hlY2tfa2Z1bmNfYXJncyhzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBzdHJ1Y3QgYnBmX2tmdW5jX2NhbGxfCiAKIAkJaWYgKHJlZ25vID09IG1ldGEtJmd0O3JlbGVhc2VfcmVnbm8pCiAJCQlhcmdfdHlwZSB8PSBPQkpfUkVMRUFTRTsKLQkJcmV0ID0gY2hlY2tfZnVuY19hcmdfcmVnX29mZihlbnYsIHJlZywgYXJnbm8sIGFyZ190eXBlKTsKJiM0MzsJCXJldCA9IF9fY2hlY2tfZnVuY19hcmdfcmVnX29mZihlbnYsIHJlZywgYXJnbm8sIGFyZ190eXBlLAomIzQzOwkJCQkJICAgICAgIGJ0Zl9pZF9maXhlZF9vZmZfb2spOwogCQlpZiAocmV0ICZsdDsgMCkKIAkJCXJldHVybiByZXQ7CiAKZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9yZWZjb3VudGVkX2twdHJfZmFpbC5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3JlZmNvdW50ZWRfa3B0cl9mYWlsLmMKaW5kZXggNzI0N2EyMGMwYTNiZjUuLjAyNGVmMmFhZTIwMDgyIDEwMDY0NAotLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvcmVmY291bnRlZF9rcHRyX2ZhaWwuYwomIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvcmVmY291bnRlZF9rcHRyX2ZhaWwuYwpAQCAtMTMsMTIgJiM0MzsxMywyMCBAQCBzdHJ1Y3Qgbm9kZV9hY3F1aXJlIHsKIAlzdHJ1Y3QgYnBmX3JlZmNvdW50IHJlZmNvdW50OwogfTsKIAomIzQzO3N0cnVjdCBub2RlX3JlZmNvdW50ZWQgewomIzQzOwlsb25nIGtleTsKJiM0MzsJc3RydWN0IGJwZl9saXN0X25vZGUgbGlzdDsKJiM0MzsJc3RydWN0IGJwZl9yZWZjb3VudCByZWZjb3VudDsKJiM0Mzt9OwomIzQzOwogZXh0ZXJuIHZvaWQgYnBmX3JjdV9yZWFkX2xvY2sodm9pZCkgX19rc3ltOwogZXh0ZXJuIHZvaWQgYnBmX3JjdV9yZWFkX3VubG9jayh2b2lkKSBfX2tzeW07CiAKICNkZWZpbmUgcHJpdmF0ZShuYW1lKSBTRUMoJiMzNDsuZGF0YS4mIzM0OyAjbmFtZSkgX19oaWRkZW4gX19hdHRyaWJ1dGVfXygoYWxpZ25lZCg4KSkpCiBwcml2YXRlKEEpIHN0cnVjdCBicGZfc3Bpbl9sb2NrIGdsb2NrOwogcHJpdmF0ZShBKSBzdHJ1Y3QgYnBmX3JiX3Jvb3QgZ3Jvb3QgX19jb250YWlucyhub2RlX2FjcXVpcmUsIG5vZGUpOwomIzQzO3ByaXZhdGUoQikgc3RydWN0IGJwZl9zcGluX2xvY2sgbG9jazsKJiM0Mztwcml2YXRlKEIpIHN0cnVjdCBicGZfbGlzdF9oZWFkIGhlYWQgX19jb250YWlucyhub2RlX3JlZmNvdW50ZWQsIGxpc3QpOwogCiBzdGF0aWMgYm9vbCBsZXNzKHN0cnVjdCBicGZfcmJfbm9kZSAqYSwgY29uc3Qgc3RydWN0IGJwZl9yYl9ub2RlICpiKQogewpAQCAtOTMsNiAmIzQzOzEwMSwzMiBAQCBsb25nIHJidHJlZV9yZWZjb3VudGVkX25vZGVfcmVmX2VzY2FwZXNfb3duaW5nX2lucHV0KHZvaWQgKmN0eCkKIAlyZXR1cm4gMDsKIH0KIAomIzQzO1NFQygmIzM0Oz90YyYjMzQ7KQomIzQzO19fZmFpbHVyZSBfX21zZygmIzM0O2RlcmVmZXJlbmNlIG9mIG1vZGlmaWVkIHB0cl8gcHRyIFIxJiMzNDspCiYjNDM7bG9uZyByZWZjb3VudF9hY3F1aXJlX2xpc3Rfbm9kZV9vZmZzZXQodm9pZCAqY3R4KQomIzQzO3sKJiM0MzsJc3RydWN0IG5vZGVfcmVmY291bnRlZCAqbm9kZSwgKmJhc2UsICpyZWY7CiYjNDM7CXN0cnVjdCBicGZfbGlzdF9ub2RlICpsaXN0X25vZGU7CiYjNDM7CiYjNDM7CW5vZGUgPSBicGZfb2JqX25ldyh0eXBlb2YoKm5vZGUpKTsKJiM0MzsJaWYgKCFub2RlKQomIzQzOwkJcmV0dXJuIDE7CiYjNDM7CiYjNDM7CWJwZl9zcGluX2xvY2soJmFtcDtsb2NrKTsKJiM0MzsJYnBmX2xpc3RfcHVzaF9mcm9udCgmYW1wO2hlYWQsICZhbXA7bm9kZS0mZ3Q7bGlzdCk7CiYjNDM7CWxpc3Rfbm9kZSA9IGJwZl9saXN0X3BvcF9mcm9udCgmYW1wO2hlYWQpOwomIzQzOwlicGZfc3Bpbl91bmxvY2soJmFtcDtsb2NrKTsKJiM0MzsJaWYgKCFsaXN0X25vZGUpCiYjNDM7CQlyZXR1cm4gMjsKJiM0MzsKJiM0MzsJYmFzZSA9IGNvbnRhaW5lcl9vZihsaXN0X25vZGUsIHN0cnVjdCBub2RlX3JlZmNvdW50ZWQsIGxpc3QpOwomIzQzOwlyZWYgPSBicGZfcmVmY291bnRfYWNxdWlyZShsaXN0X25vZGUpOwomIzQzOwlpZiAocmVmKQomIzQzOwkJYnBmX29ial9kcm9wKHJlZik7CiYjNDM7CWJwZl9vYmpfZHJvcChiYXNlKTsKJiM0MzsJcmV0dXJuIDA7CiYjNDM7fQomIzQzOwogU0VDKCYjMzQ7P2ZlbnRyeS5zLyYjMzQ7IFNZU19QUkVGSVggJiMzNDtzeXNfZ2V0cGdpZCYjMzQ7KQogX19mYWlsdXJlIF9fbXNnKCYjMzQ7ZnVuY3Rpb24gY2FsbHMgYXJlIG5vdCBhbGxvd2VkIHdoaWxlIGhvbGRpbmcgYSBsb2NrJiMzNDspCiBpbnQgQlBGX1BST0cocmJ0cmVlX2ZhaWxfc2xlZXBhYmxlX2xvY2tfYWNyb3NzX3JjdSwKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjMgMDY6MzY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzg0MwoJCQkJCQkJb3V0cHV0OiAyMAoJCQkJCQkJdGhvdWdodHM6IDM0NwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBCUEYgVmVyaWZpZXIgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggdGhhdCB0d2Vha3MgdGhlIEJQRiB2ZXJpZmllciwgc3BlY2lmaWNhbGx5IHdpdGhpbiBga2VybmVsL2JwZi92ZXJpZmllci5jYC4gSXQmIzM5O3MgYSBwcmV0dHkgdGFyZ2V0ZWQgY2hhbmdlLCBidXQgaXQgaGFzIGltcG9ydGFudCBpbXBsaWNhdGlvbnMgZm9yIGhvdyB3ZSBoYW5kbGUgcmVmY291bnRlZCBwb2ludGVycyB3aXRoIG9mZnNldHMgaW4gQlBGIGtmdW5jcy4gVGhlIG1haW4gdGhpbmcgaXMgdGhhdCBgY2hlY2tfZnVuY19hcmdfcmVnX29mZmAgaXMgbm93IHJlbmFtZWQgdG8gYF9fY2hlY2tfZnVuY19hcmdfcmVnX29mZmAgYW5kIHRha2VzIGFuIGV4dHJhIGJvb2xlYW4sIGBidGZfaWRfZml4ZWRfb2ZmX29rYC4gVGhpcyBjaGFuZ2UgaXMgY291cGxlZCB3aXRoIGFuIHVwZGF0ZSB0byBgY2hlY2tfa2Z1bmNfYXJnc2Agd2hlcmUgd2Ugbm93IHBhc3MgYGJ0Zl9pZF9maXhlZF9vZmZfb2sgPSBmYWxzZWAgd2hlbiBkZWFsaW5nIHdpdGggYEtGX0FSR19QVFJfVE9fUkVGQ09VTlRFRF9LUFRSYC4gVGhlIGVmZmVjdCBpcyB0aGF0IHdlIGFyZSBtb3JlIHJlc3RyaWN0aXZlIG5vdy4gV2UgcHJldmVudCBwYXNzaW5nIGEgcG9pbnRlciB3aXRoIGEgZml4ZWQsIG5vbi16ZXJvIG9mZnNldCB0byBhIGtmdW5jIHdoZW4gaXQgaXMgZXhwZWN0aW5nIGEgcmVmY291bnRlZCBwb2ludGVyLiBJIHNlZSB0aGUgaW50ZW50aW9uIGlzIHRvIHByZXZlbnQgYSBzY2VuYXJpbyB3aGVyZSBhIG1vZGlmaWVkIHBvaW50ZXIgZ2V0cyBtaXN1c2VkLgoKVGhlIHNlbGZ0ZXN0IGByZWZjb3VudGVkX2twdHJfZmFpbC5jYCBoYXMgYSBuZXcgdGVzdCwgYHJlZmNvdW50X2FjcXVpcmVfbGlzdF9ub2RlX29mZnNldGAsIHdoaWNoIGFpbXMgdG8gdHJpZ2dlciB0aGlzIG5ldyB2ZXJpZmljYXRpb24uIFRoZSB0ZXN0ICpleHBlY3RzKiBhIGZhaWx1cmUsICYjMzQ7ZGVyZWZlcmVuY2Ugb2YgbW9kaWZpZWQgcHRyXyBwdHIgUjEmIzM0Oywgd2hpY2ggY29uZmlybXMgb3VyIHN1c3BpY2lvbiBhYm91dCB0aGUgY2hhbmdlLgoKVGhpcyBpcyBmdW5kYW1lbnRhbGx5IGEgZnVuY3Rpb25hbCBtb2RpZmljYXRpb24gdG8gdGhlIEJQRiB2ZXJpZmllciwgd2hpY2ggaW5kaWNhdGVzIGEgYnVnIGZpeCBvciwgbW9yZSBsaWtlbHksIGEgbmV3bHkgYWRkZWQgcmVzdHJpY3Rpb24uIEl04oCZcyBkZWZpbml0ZWx5IGEgY2hhbmdlIHRoYXQgY291bGQgaW50cm9kdWNlIHN1YnRsZSBiZWhhdmlvciBkaWZmZXJlbmNlcywgYW5kIHRoZXJlZm9yZSwgaXQmIzM5O3MgYSBwcmltZSBjYW5kaWRhdGUgZm9yIGZ1enppbmcuIFdlIG5lZWQgdG8gYmUgY2FyZWZ1bCB3aXRoIHRoaXMuCgpOb3csIGxldCYjMzk7cyBpZGVudGlmeSB0aGUga2V5IGZvY3VzIHN5bWJvbHMgZm9yIGZ1cnRoZXIgaW52ZXN0aWdhdGlvbi4gRnJvbSB0aGUgZGlmZiwgaXTigJlzIGNsZWFyIHRoYXQgdGhlIG1vZGlmaWVkIGZ1bmN0aW9ucyBhcmU6IGBfX2NoZWNrX2Z1bmNfYXJnX3JlZ19vZmZgLCBgY2hlY2tfZnVuY19hcmdfcmVnX29mZmAgYW5kIGBjaGVja19rZnVuY19hcmdzYC4gYGNoZWNrX2tmdW5jX2FyZ3NgIGxvb2tzIGxpa2UgYSBnb29kIHBsYWNlIHRvIHN0YXJ0LCBnaXZlbiBpdHMgY2VudHJhbCByb2xlIGluIGFyZ3VtZW50IGNoZWNraW5nLiBgX19jaGVja19mdW5jX2FyZ19yZWdfb2ZmYCBpcyBhbm90aGVyIGNyaXRpY2FsIGFyZWEgdG8gZXhhbWluZS4KCldlIG5lZWQgdG8gbWFrZSBzdXJlIHdlIGhhdmUgdGhlIGFwcHJvcHJpYXRlIEJQRiBjb25maWdzIGVuYWJsZWQsIHNwZWNpZmljYWxseSBgQ09ORklHX0JQRl9TWVNDQUxMYC4gTm93LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoZSBjb2RlIGFuZCB2ZXJpZnkgdGhlIGltcGFjdCBvZiB0aGlzIGNoYW5nZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yMyAwNjozNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjaGVja19rZnVuY19hcmdzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2tlcm5lbC9icGYvdmVyaWZpZXIuYz0xMTg5Nz1zdGF0aWMgYm9vbCBjaGVja19jc3NfdGFza19pdGVyX2FsbG93bGlzdChzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52KVxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMTkxMi1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxMTkxMzpzdGF0aWMgaW50IGNoZWNrX2tmdW5jX2FyZ3Moc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgc3RydWN0IGJwZl9rZnVuY19jYWxsX2FyZ19tZXRhICptZXRhLFxua2VybmVsL2JwZi92ZXJpZmllci5jLTExOTE0LVx0XHRcdCAgICBpbnQgaW5zbl9pZHgpXG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jPTEyODk4PXN0YXRpYyBpbnQgY2hlY2tfa2Z1bmNfY2FsbChzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBzdHJ1Y3QgYnBmX2luc24gKmluc24sXG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jLTEyOTc0LVx0LyogQ2hlY2sgdGhlIGFyZ3VtZW50cyAqL1xua2VybmVsL2JwZi92ZXJpZmllci5jOjEyOTc1Olx0ZXJyID0gY2hlY2tfa2Z1bmNfYXJncyhlbnYsIFx1MDAyNm1ldGEsIGluc25faWR4KTtcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMjk3Ni1cdGlmIChlcnIgXHUwMDNjIDApXG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jLTEzMjYxLVx0XHRlbHNlXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTMyNjI6XHRcdFx0Lyogc2NhbGFyLiBlbnN1cmVkIGJ5IGNoZWNrX2tmdW5jX2FyZ3MoKSAqL1xua2VybmVsL2JwZi92ZXJpZmllci5jLTEzMjYzLVx0XHRcdG1hcmtfYnRmX2Z1bmNfcmVnX3NpemUoZW52LCByZWdubywgdC1cdTAwM2VzaXplKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yMyAwNjozNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1MDcxCgkJCQkJCQlvdXRwdXQ6IDIxCgkJCQkJCQl0aG91Z2h0czogNDkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIHByZXNlbnRlZCBpbiB0aGUgZmlyc3QgcGVyc29uOgoKKipLZXJuZWwgQ29uZmlndXJhdGlvbiBEZXBlbmRlbmNpZXMqKgoKQWxyaWdodCwgc28gSSYjMzk7bSB0aGlua2luZyBhYm91dCB0aGUga2VybmVsIGNvbmZpZ3VyYXRpb25zIHJlcXVpcmVkIGZvciB0aGlzIHBhcnRpY3VsYXIgQlBGIHByb2dyYW0uIEl0JiMzOTtzIGNsZWFyIHRoYXQgd2UmIzM5O2xsIGRlZmluaXRlbHkgbmVlZCBgQlBGX1NZU0NBTExgIOKAkyB0aGF0JiMzOTtzIGEgZ2l2ZW4sIHNpbmNlIHdlJiMzOTtyZSBpbnRlcmFjdGluZyB3aXRoIHN5c2NhbGxzLiBCdXQsIGJlY2F1c2UgaXQgcmVsaWVzIG9uIEJURiBJRHMsIEkmIzM5O20gZ29pbmcgdG8gd2FudCB0byB2ZXJpZnkgdGhhdCBgREVCVUdfSU5GT19CVEZgIGlzIGFsc28gZW5hYmxlZC4gVGhhdCYjMzk7cyBwcmFjdGljYWxseSBhIHByZXJlcXVpc2l0ZSBpZiB3ZSB3YW50IHN5bWJvbCBpbmZvcm1hdGlvbiBhbmQgdHlwZSBpbmZvcm1hdGlvbi4gSSYjMzk7bSBpbWFnaW5pbmcgaXQmIzM5O2QgYmUgcXVpdGUgZGlmZmljdWx0IHRvIHdvcmsgd2l0aCB3aXRob3V0IGl0LgoKTm93LCBiZWZvcmUgSSBwcm9jZWVkIHRvbyBmYXIgZG93biB0aGUgaW1wbGVtZW50YXRpb24gcGF0aCwgSSBzaG91bGQgcmVhbGx5IGNoZWNrIGlmIHRoZXJlIGFyZSBhbnkgc3BlY2lmaWMga2VybmVsIGNvbmZpZ3VyYXRpb25zIG9yIGJ1aWxkIGZsYWdzIHJlbGF0ZWQgdG8gdGhlIGBicGZfcmVmY291bnRfYWNxdWlyZWAgZnVuY3Rpb24gaXRzZWxmLiBJIHNob3VsZCBjaGVjayBpZiB0aGVyZSYjMzk7cyBhbnkgc3BlY2lhbGl6ZWQgY29uZmlndXJhdGlvbiB0aGF0IG5lZWRzIHRvIGJlIGNvbnNpZGVyZWQgdG8gdXNlIHRoYXQgcGFydGljdWxhciBmdW5jdGlvbi4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBJIGhhdmVuJiMzOTt0IG1pc3NlZCBhbnl0aGluZyBvYnZpb3VzLiBJJiMzOTtsbCBuZWVkIHRvIGRvIHNvbWUgZGlnZ2luZyB0byBtYWtlIHN1cmUgSSBoYXZlbiYjMzk7dCBtaXNzZWQgYW55IHNwZWNpYWxpemVkLCBvciBwb3NzaWJseSBldmVuIGhpZGRlbiwgY29uZmlndXJhdGlvbiBvcHRpb25zLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzIzIDA2OjM2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2JwZl9yZWZjb3VudF9hY3F1aXJlJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2luY2x1ZGUvbGludXgvYnBmX3ZlcmlmaWVyLmg9MTQ0MT1zdHJ1Y3QgYnBmX2tmdW5jX2NhbGxfYXJnX21ldGEge1xuLS1cbmluY2x1ZGUvbGludXgvYnBmX3ZlcmlmaWVyLmgtMTQ2My1cdCAqICAgICBSZWNvcmQgdGhlIGxvY2FsIGtwdHIgdHlwZSB0byBiZSBkcm9wJiMzOTtkXG5pbmNsdWRlL2xpbnV4L2JwZl92ZXJpZmllci5oOjE0NjQ6XHQgKiAgIGJwZl9yZWZjb3VudF9hY3F1aXJlICh2aWEgS0ZfQVJHX1BUUl9UT19SRUZDT1VOVEVEX0tQVFIgYXJnIHR5cGUpXG5pbmNsdWRlL2xpbnV4L2JwZl92ZXJpZmllci5oLTE0NjUtXHQgKiAgICAgUmVjb3JkIHRoZSBsb2NhbCBrcHRyIHR5cGUgdG8gYmUgcmVmY291bnRfaW5jciYjMzk7ZCBhbmQgdXNlXG4tLVxua2VybmVsL2JwZi9oZWxwZXJzLmM9MjQ0OT1fX2JwZl9rZnVuYyB2b2lkIGJwZl9wZXJjcHVfb2JqX2Ryb3BfaW1wbCh2b2lkICpwX19hbGxvYywgdm9pZCAqbWV0YV9faWduKVxuLS1cbmtlcm5lbC9icGYvaGVscGVycy5jLTI0NTQtLyoqXG5rZXJuZWwvYnBmL2hlbHBlcnMuYzoyNDU1OiAqIGJwZl9yZWZjb3VudF9hY3F1aXJlKCkgLSB0dXJuIGEgbG9jYWwga3B0ciBpbnRvIGFuIG93bmluZyByZWZlcmVuY2Vcbmtlcm5lbC9icGYvaGVscGVycy5jLTI0NTYtICogQHBfX3JlZmNvdW50ZWRfa3B0cjogbm9uLW93bmluZyBsb2NhbCBrcHRyXG4tLVxua2VybmVsL2JwZi9oZWxwZXJzLmMtMjQ2My0gKi9cbmtlcm5lbC9icGYvaGVscGVycy5jOjI0NjQ6X19icGZfa2Z1bmMgdm9pZCAqYnBmX3JlZmNvdW50X2FjcXVpcmUodm9pZCAqcF9fcmVmY291bnRlZF9rcHRyLCBzdHJ1Y3QgYnRmX3N0cnVjdF9tZXRhICptZXRhKVxua2VybmVsL2JwZi9oZWxwZXJzLmMtMjQ2NS17XG4tLVxua2VybmVsL2JwZi9oZWxwZXJzLmMtMjQ4MC1cbmtlcm5lbC9icGYvaGVscGVycy5jOjI0ODE6X19icGZfa2Z1bmMgdm9pZCAqYnBmX3JlZmNvdW50X2FjcXVpcmVfaW1wbCh2b2lkICpwX19yZWZjb3VudGVkX2twdHIsIHZvaWQgKm1ldGFfX2lnbilcbmtlcm5lbC9icGYvaGVscGVycy5jLTI0ODIte1xua2VybmVsL2JwZi9oZWxwZXJzLmM6MjQ4MzpcdHJldHVybiBicGZfcmVmY291bnRfYWNxdWlyZShwX19yZWZjb3VudGVkX2twdHIsIG1ldGFfX2lnbik7XG5rZXJuZWwvYnBmL2hlbHBlcnMuYy0yNDg0LX1cbi0tXG5rZXJuZWwvYnBmL2hlbHBlcnMuYz00ODEzPUJURl9JRF9GTEFHUyhmdW5jLCBicGZfcGVyY3B1X29ial9kcm9wX2ltcGwsIEtGX1JFTEVBU0UpXG5rZXJuZWwvYnBmL2hlbHBlcnMuYzo0ODE0OkJURl9JRF9GTEFHUyhmdW5jLCBicGZfcmVmY291bnRfYWNxdWlyZSwgS0ZfQUNRVUlSRSB8IEtGX1JFVF9OVUxMIHwgS0ZfUkNVIHwgS0ZfSU1QTElDSVRfQVJHUylcbmtlcm5lbC9icGYvaGVscGVycy5jOjQ4MTU6QlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9yZWZjb3VudF9hY3F1aXJlX2ltcGwsIEtGX0FDUVVJUkUgfCBLRl9SRVRfTlVMTCB8IEtGX1JDVSlcbmtlcm5lbC9icGYvaGVscGVycy5jLTQ4MTYtQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9saXN0X3B1c2hfZnJvbnQsIEtGX0lNUExJQ0lUX0FSR1MpXG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jPTEwOTg5PWVudW0gc3BlY2lhbF9rZnVuY190eXBlIHtcbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTA5OTMtXHRLRl9icGZfb2JqX2Ryb3AsXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTA5OTQ6XHRLRl9icGZfcmVmY291bnRfYWNxdWlyZV9pbXBsLFxua2VybmVsL2JwZi92ZXJpZmllci5jOjEwOTk1Olx0S0ZfYnBmX3JlZmNvdW50X2FjcXVpcmUsXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTA5OTYtXHRLRl9icGZfbGlzdF9wdXNoX2Zyb250X2ltcGwsXG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jPTExMDY2PUJURl9JRChmdW5jLCBicGZfb2JqX2Ryb3ApXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTEwNjc6QlRGX0lEKGZ1bmMsIGJwZl9yZWZjb3VudF9hY3F1aXJlX2ltcGwpXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTEwNjg6QlRGX0lEKGZ1bmMsIGJwZl9yZWZjb3VudF9hY3F1aXJlKVxua2VybmVsL2JwZi92ZXJpZmllci5jLTExMDY5LUJURl9JRChmdW5jLCBicGZfbGlzdF9wdXNoX2Zyb250X2ltcGwpXG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jPTExMTc2PXN0YXRpYyBib29sIGlzX2JwZl9wZXJjcHVfb2JqX2Ryb3Bfa2Z1bmModTMyIGZ1bmNfaWQpXG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jLTExMTgxLVxua2VybmVsL2JwZi92ZXJpZmllci5jOjExMTgyOnN0YXRpYyBib29sIGlzX2JwZl9yZWZjb3VudF9hY3F1aXJlX2tmdW5jKHUzMiBmdW5jX2lkKVxua2VybmVsL2JwZi92ZXJpZmllci5jLTExMTgzLXtcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxMTE4NDpcdHJldHVybiBmdW5jX2lkID09IHNwZWNpYWxfa2Z1bmNfbGlzdFtLRl9icGZfcmVmY291bnRfYWNxdWlyZV0gfHxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxMTE4NTpcdCAgICAgICBmdW5jX2lkID09IHNwZWNpYWxfa2Z1bmNfbGlzdFtLRl9icGZfcmVmY291bnRfYWNxdWlyZV9pbXBsXTtcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMTE4Ni19XG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jPTExMjA5PXN0YXRpYyBib29sIGlzX2tmdW5jX3JldF9udWxsKHN0cnVjdCBicGZfa2Z1bmNfY2FsbF9hcmdfbWV0YSAqbWV0YSlcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMTIxMC17XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTEyMTE6XHRpZiAoaXNfYnBmX3JlZmNvdW50X2FjcXVpcmVfa2Z1bmMobWV0YS1cdTAwM2VmdW5jX2lkKSBcdTAwMjZcdTAwMjYgbWV0YS1cdTAwM2Vhcmdfb3duaW5nX3JlZilcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMTIxMi1cdFx0cmV0dXJuIGZhbHNlO1xuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYz0xMTYxNz1zdGF0aWMgYm9vbCBpc19icGZfZ3JhcGhfYXBpX2tmdW5jKHUzMiBidGZfaWQpXG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jLTExNjIwLVx0ICAgICAgIGlzX2JwZl9yYnRyZWVfYXBpX2tmdW5jKGJ0Zl9pZCkgfHxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxMTYyMTpcdCAgICAgICBpc19icGZfcmVmY291bnRfYWNxdWlyZV9rZnVuYyhidGZfaWQpO1xua2VybmVsL2JwZi92ZXJpZmllci5jLTExNjIyLX1cbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9MTI3Mjc9c3RhdGljIGludCBjaGVja19zcGVjaWFsX2tmdW5jKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIHN0cnVjdCBicGZfa2Z1bmNfY2FsbF9hcmdfbWV0YSAqbWV0YSxcbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTI4MTUtXHRcdGluc25fYXV4LVx1MDAzZWtwdHJfc3RydWN0X21ldGEgPSBzdHJ1Y3RfbWV0YTtcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxMjgxNjpcdH0gZWxzZSBpZiAoaXNfYnBmX3JlZmNvdW50X2FjcXVpcmVfa2Z1bmMobWV0YS1cdTAwM2VmdW5jX2lkKSkge1xua2VybmVsL2JwZi92ZXJpZmllci5jLTEyODE3LVx0XHRtYXJrX3JlZ19rbm93bl96ZXJvKGVudiwgcmVncywgQlBGX1JFR18wKTtcbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9MTI4OTg9c3RhdGljIGludCBjaGVja19rZnVuY19jYWxsKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIHN0cnVjdCBicGZfaW5zbiAqaW5zbixcbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTMxMTgtXHRcdCAgICAgIWlzX2JwZl9wZXJjcHVfb2JqX25ld19rZnVuYyhtZXRhLmZ1bmNfaWQpIFx1MDAyNlx1MDAyNlxua2VybmVsL2JwZi92ZXJpZmllci5jOjEzMTE5Olx0XHQgICAgICFpc19icGZfcmVmY291bnRfYWNxdWlyZV9rZnVuYyhtZXRhLmZ1bmNfaWQpKSkge1xua2VybmVsL2JwZi92ZXJpZmllci5jLTEzMTIwLVx0XHRcdHZlcmJvc2UoZW52LCBcJiMzNDthY3F1aXJlIGtlcm5lbCBmdW5jdGlvbiBkb2VzIG5vdCByZXR1cm4gUFRSX1RPX0JURl9JRFxcblwmIzM0Oyk7XG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jPTE5NTc0PWludCBicGZfZml4dXBfa2Z1bmNfY2FsbChzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBzdHJ1Y3QgYnBmX2luc24gKmluc24sXG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jLTE5NjIyLVx0XHQgICBpc19icGZfcGVyY3B1X29ial9kcm9wX2tmdW5jKGRlc2MtXHUwMDNlZnVuY19pZCkgfHxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxOTYyMzpcdFx0ICAgaXNfYnBmX3JlZmNvdW50X2FjcXVpcmVfa2Z1bmMoZGVzYy1cdTAwM2VmdW5jX2lkKSkge1xua2VybmVsL2JwZi92ZXJpZmllci5jLTE5NjI0LVx0XHRzdHJ1Y3QgYnRmX3N0cnVjdF9tZXRhICprcHRyX3N0cnVjdF9tZXRhID0gZW52LVx1MDAzZWluc25fYXV4X2RhdGFbaW5zbl9pZHhdLmtwdHJfc3RydWN0X21ldGE7XG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jLTE5NjMyLVxua2VybmVsL2JwZi92ZXJpZmllci5jOjE5NjMzOlx0XHRpZiAoaXNfYnBmX3JlZmNvdW50X2FjcXVpcmVfa2Z1bmMoZGVzYy1cdTAwM2VmdW5jX2lkKSBcdTAwMjZcdTAwMjYgIWtwdHJfc3RydWN0X21ldGEpIHtcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xOTYzNC1cdFx0XHR2ZXJpZmllcl9idWcoZW52LCBcJiMzNDtrcHRyX3N0cnVjdF9tZXRhIGV4cGVjdGVkIGF0IGluc25faWR4ICVkXCYjMzQ7LFxuLS1cbnRvb2xzL3NjaGVkX2V4dC9pbmNsdWRlL3NjeC9jb21tb24uYnBmLmg9Mzg0PXN0cnVjdCBicGZfcmJfbm9kZSAqYnBmX3JidHJlZV9maXJzdChzdHJ1Y3QgYnBmX3JiX3Jvb3QgKnJvb3QpIF9fa3N5bTtcbnRvb2xzL3NjaGVkX2V4dC9pbmNsdWRlL3NjeC9jb21tb24uYnBmLmgtMzg1LVxudG9vbHMvc2NoZWRfZXh0L2luY2x1ZGUvc2N4L2NvbW1vbi5icGYuaDozODY6dm9pZCAqYnBmX3JlZmNvdW50X2FjcXVpcmVfaW1wbCh2b2lkICprcHRyLCB2b2lkICptZXRhKSBfX2tzeW07XG50b29scy9zY2hlZF9leHQvaW5jbHVkZS9zY3gvY29tbW9uLmJwZi5oOjM4NzojZGVmaW5lIGJwZl9yZWZjb3VudF9hY3F1aXJlKGtwdHIpIGJwZl9yZWZjb3VudF9hY3F1aXJlX2ltcGwoa3B0ciwgTlVMTClcbnRvb2xzL3NjaGVkX2V4dC9pbmNsdWRlL3NjeC9jb21tb24uYnBmLmgtMzg4LVxuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9icGZfcWRpc2NfZnEuYz0zMDM9aW50IEJQRl9QUk9HKGJwZl9mcV9lbnF1ZXVlLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgUWRpc2MgKnNjaCxcbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvYnBmX3FkaXNjX2ZxLmMtMzQ0LVx0XHRpZiAoZnFfZmxvd19pc19kZXRhY2hlZChmbG93KSkge1xudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2JwZl9xZGlzY19mcS5jOjM0NTpcdFx0XHRmbG93X2NvcHkgPSBicGZfcmVmY291bnRfYWNxdWlyZShmbG93KTtcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9icGZfcWRpc2NfZnEuYy0zNDYtXG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2xvY2FsX2twdHJfc3Rhc2guYz0yMzQ9bG9uZyByZWZjb3VudF9hY3F1aXJlX3dpdGhvdXRfdW5zdGFzaCh2b2lkICpjdHgpXG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2xvY2FsX2twdHJfc3Rhc2guYy0yNDktXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvbG9jYWxfa3B0cl9zdGFzaC5jOjI1MDpcdHAgPSBicGZfcmVmY291bnRfYWNxdWlyZShzLVx1MDAzZXN0YXNoZWQpO1xudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2xvY2FsX2twdHJfc3Rhc2guYy0yNTEtXHRpZiAoIXApXG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3JidHJlZV9zZWFyY2guYz01Mz1sb25nIHJidHJlZV9zZWFyY2godm9pZCAqY3R4KVxuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9yYnRyZWVfc2VhcmNoLmMtNjQtXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvcmJ0cmVlX3NlYXJjaC5jOjY1Olx0XHRtID0gYnBmX3JlZmNvdW50X2FjcXVpcmUobik7XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvcmJ0cmVlX3NlYXJjaC5jLTY2LVxuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9yYnRyZWVfc2VhcmNoLmMtMTA4LVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3JidHJlZV9zZWFyY2guYzoxMDk6XHRtID0gYnBmX3JlZmNvdW50X2FjcXVpcmUobik7XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvcmJ0cmVlX3NlYXJjaC5jLTExMC1cdGJwZl9zcGluX3VubG9jayhcdTAwMjZnbG9jazApO1xuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9yYnRyZWVfc2VhcmNoLmM9MTU2PWxvbmcgdGVzdF8jI29wIyNfc3BpbmxvY2tfIyNkb2xvY2sodm9pZCAqY3R4KVx0XHRcXFxuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9yYnRyZWVfc2VhcmNoLmMtMTY4LVx0biA9IHJiX2VudHJ5KHJiX24sIHN0cnVjdCBub2RlX2RhdGEsIHIwKTtcdFxcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvcmJ0cmVlX3NlYXJjaC5jOjE2OTpcdG4gPSBicGZfcmVmY291bnRfYWNxdWlyZShuKTtcdFx0XHRcXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3JidHJlZV9zZWFyY2guYy0xNzAtXHRicGZfc3Bpbl91bmxvY2soXHUwMDI2Z2xvY2swKTtcdFx0XHRcXFxuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9yYnRyZWVfc2VhcmNoX2twdHIuYz0xNTU9bG9uZyByYnRyZWVfc2VhcmNoX2twdHJfcmVmKHZvaWQgKmN0eClcbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvcmJ0cmVlX3NlYXJjaF9rcHRyLmMtMTgyLVx0XHQvKiBVbnVzZWQgcmVmZXJlbmNlICovXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvcmJ0cmVlX3NlYXJjaF9rcHRyLmM6MTgzOlx0XHR0bm9kZV9tID0gYnBmX3JlZmNvdW50X2FjcXVpcmUodG5vZGVfcik7XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvcmJ0cmVlX3NlYXJjaF9rcHRyLmMtMTg0LVx0XHRpZiAoIXRub2RlX20pXG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3JlZmNvdW50ZWRfa3B0ci5jPTczPXN0YXRpYyBsb25nIF9faW5zZXJ0X2luX3RyZWVfYW5kX2xpc3Qoc3RydWN0IGJwZl9saXN0X2hlYWQgKmhlYWQsXG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3JlZmNvdW50ZWRfa3B0ci5jLTgyLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3JlZmNvdW50ZWRfa3B0ci5jOjgzOlx0bSA9IGJwZl9yZWZjb3VudF9hY3F1aXJlKG4pO1xudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3JlZmNvdW50ZWRfa3B0ci5jLTg0LVx0bS1cdTAwM2VrZXkgPSAxMjM7XG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3JlZmNvdW50ZWRfa3B0ci5jPTEwNj1zdGF0aWMgbG9uZyBfX3N0YXNoX21hcF9pbnNlcnRfdHJlZShpbnQgaWR4LCBpbnQgdmFsLCBzdHJ1Y3QgYnBmX3JiX3Jvb3QgKnJvb3QsXG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3JlZmNvdW50ZWRfa3B0ci5jLTEyMC1cdG4tXHUwMDNla2V5ID0gdmFsO1xudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3JlZmNvdW50ZWRfa3B0ci5jOjEyMTpcdG0gPSBicGZfcmVmY291bnRfYWNxdWlyZShuKTtcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9yZWZjb3VudGVkX2twdHIuYy0xMjItXG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3JlZmNvdW50ZWRfa3B0ci5jPTM5OT1zdGF0aWMgc3RydWN0IG5vZGVfZGF0YSAqX19hZGRfaW5fbGlzdChzdHJ1Y3QgYnBmX2xpc3RfaGVhZCAqaGVhZCxcbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvcmVmY291bnRlZF9rcHRyLmMtNDA3LVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3JlZmNvdW50ZWRfa3B0ci5jOjQwODpcdG5vZGVfcmVmID0gYnBmX3JlZmNvdW50X2FjcXVpcmUobm9kZV9uZXcpO1xudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3JlZmNvdW50ZWRfa3B0ci5jLTQwOS1cbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvcmVmY291bnRlZF9rcHRyLmM9NzkzPWxvbmcgcmJ0cmVlX3JlZmNvdW50ZWRfbm9kZV9yZWZfZXNjYXBlcyh2b2lkICpjdHgpXG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3JlZmNvdW50ZWRfa3B0ci5jLTgwMi1cdGJwZl9yYnRyZWVfYWRkKFx1MDAyNmFyb290LCBcdTAwMjZuLVx1MDAzZW5vZGUsIGxlc3NfYSk7XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvcmVmY291bnRlZF9rcHRyLmM6ODAzOlx0bSA9IGJwZl9yZWZjb3VudF9hY3F1aXJlKG4pO1xudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3JlZmNvdW50ZWRfa3B0ci5jLTgwNC1cdGJwZl9zcGluX3VubG9jayhcdTAwMjZhbG9jayk7XG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3JlZmNvdW50ZWRfa3B0ci5jPTgxNT1sb25nIHJidHJlZV9yZWZjb3VudGVkX25vZGVfcmVmX2VzY2FwZXNfb3duaW5nX2lucHV0KHZvaWQgKmN0eClcbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvcmVmY291bnRlZF9rcHRyLmMtODIyLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3JlZmNvdW50ZWRfa3B0ci5jOjgyMzpcdG0gPSBicGZfcmVmY291bnRfYWNxdWlyZShuKTtcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9yZWZjb3VudGVkX2twdHIuYy04MjQtXHRtLVx1MDAzZWtleSA9IDI7XG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3JlZmNvdW50ZWRfa3B0ci5jPTg1Mj1sb25nIHJidHJlZV93cm9uZ19vd25lcl9yZW1vdmVfZmFpbF9hMSh2b2lkICpjdHgpXG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3JlZmNvdW50ZWRfa3B0ci5jLTg1OC1cdFx0cmV0dXJuIDE7XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvcmVmY291bnRlZF9rcHRyLmM6ODU5Olx0bSA9IGJwZl9yZWZjb3VudF9hY3F1aXJlKG4pO1xudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3JlZmNvdW50ZWRfa3B0ci5jLTg2MC1cbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvcmVmY291bnRlZF9rcHRyLmM9MTAwMj1zdGF0aWMgaW50IF9faW5zZXJ0X2luX2xpc3Qoc3RydWN0IGJwZl9saXN0X2hlYWQgKmhlYWQsIHN0cnVjdCBicGZfc3Bpbl9sb2NrICpsb2NrLFxuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9yZWZjb3VudGVkX2twdHIuYy0xMDEwLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3JlZmNvdW50ZWRfa3B0ci5jOjEwMTE6XHRub2RlX3JlZiA9IGJwZl9yZWZjb3VudF9hY3F1aXJlKG5vZGVfbmV3KTtcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9yZWZjb3VudGVkX2twdHIuYy0xMDEyLVx0bm9kZV9vbGQgPSBicGZfa3B0cl94Y2hnKG5vZGUsIG5vZGVfbmV3KTtcbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvcmVmY291bnRlZF9rcHRyX2ZhaWwuYz00ND1sb25nIHJidHJlZV9yZWZjb3VudGVkX25vZGVfcmVmX2VzY2FwZXModm9pZCAqY3R4KVxuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9yZWZjb3VudGVkX2twdHJfZmFpbC5jLTU0LVx0LyogbSBiZWNvbWVzIGFuIG93bmluZyByZWYgYnV0IGlzIG5ldmVyIGRyb3AmIzM5O2Qgb3IgYWRkZWQgdG8gYSB0cmVlICovXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvcmVmY291bnRlZF9rcHRyX2ZhaWwuYzo1NTpcdG0gPSBicGZfcmVmY291bnRfYWNxdWlyZShuKTtcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9yZWZjb3VudGVkX2twdHJfZmFpbC5jLTU2LVx0YnBmX3NwaW5fdW5sb2NrKFx1MDAyNmdsb2NrKTtcbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvcmVmY291bnRlZF9rcHRyX2ZhaWwuYz02Nj1sb25nIHJlZmNvdW50X2FjcXVpcmVfbWF5YmVfbnVsbCh2b2lkICpjdHgpXG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3JlZmNvdW50ZWRfa3B0cl9mYWlsLmMtNzMtXHQgKi9cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9yZWZjb3VudGVkX2twdHJfZmFpbC5jOjc0Olx0bSA9IGJwZl9yZWZjb3VudF9hY3F1aXJlKG4pO1xudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3JlZmNvdW50ZWRfa3B0cl9mYWlsLmMtNzUtXHRpZiAobSlcbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvcmVmY291bnRlZF9rcHRyX2ZhaWwuYz04NT1sb25nIHJidHJlZV9yZWZjb3VudGVkX25vZGVfcmVmX2VzY2FwZXNfb3duaW5nX2lucHV0KHZvaWQgKmN0eClcbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvcmVmY291bnRlZF9rcHRyX2ZhaWwuYy05My1cdC8qIG0gYmVjb21lcyBhbiBvd25pbmcgcmVmIGJ1dCBpcyBuZXZlciBkcm9wJiMzOTtkIG9yIGFkZGVkIHRvIGEgdHJlZSAqL1xudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3JlZmNvdW50ZWRfa3B0cl9mYWlsLmM6OTQ6XHRtID0gYnBmX3JlZmNvdW50X2FjcXVpcmUobik7XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvcmVmY291bnRlZF9rcHRyX2ZhaWwuYy05NS1cdG0tXHUwMDNla2V5ID0gMjtcbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvcmVmY291bnRlZF9rcHRyX2ZhaWwuYz0xMDY9bG9uZyByZWZjb3VudF9hY3F1aXJlX2xpc3Rfbm9kZV9vZmZzZXQodm9pZCAqY3R4KVxuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9yZWZjb3VudGVkX2twdHJfZmFpbC5jLTEyMi1cdGJhc2UgPSBjb250YWluZXJfb2YobGlzdF9ub2RlLCBzdHJ1Y3Qgbm9kZV9yZWZjb3VudGVkLCBsaXN0KTtcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9yZWZjb3VudGVkX2twdHJfZmFpbC5jOjEyMzpcdHJlZiA9IGJwZl9yZWZjb3VudF9hY3F1aXJlKGxpc3Rfbm9kZSk7XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvcmVmY291bnRlZF9rcHRyX2ZhaWwuYy0xMjQtXHRpZiAocmVmKVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzIzIDA2OjM3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEwMzU3CgkJCQkJCQlvdXRwdXQ6IDEyNQoJCQkJCQkJdGhvdWdodHM6IDEyMgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBc3Nlc3NtZW50IG9mIHRoZSBCUEYgVmVyaWZpZXIgQ2hhbmdlKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoLiBNeSBpbW1lZGlhdGUgZm9jdXMgaXMgb24gdGhlIGNvbmZpZ3VyYXRpb25zOiBgQ09ORklHX0JQRl9TWVNDQUxMYCBhbmQgYENPTkZJR19ERUJVR19JTkZPX0JURmAuIFRoZXNlIGFyZSBjcnVjaWFsIGNvbnRleHQgaW5kaWNhdG9ycyDigJMgdGhleSB0ZWxsIG1lIHdoYXQgcGFydHMgb2YgdGhlIEJQRiBlY29zeXN0ZW0gdGhpcyBpcyB0b3VjaGluZy4gR2l2ZW4gdGhlIG5hdHVyZSBvZiB0aGUgY2hhbmdlLCBJJiMzOTttIGFscmVhZHkgaW5jbGluZWQgdG8gbWFyayBpdCBhcyBgV29ydGhGdXp6aW5nYC4gVGhpcyBpcyBkZWZpbml0ZWx5IHNvbWV0aGluZyB0aGF0IG5lZWRzIHRob3JvdWdoIHNjcnV0aW55LgoKVGhlIGhlYXJ0IG9mIHRoZSBjaGFuZ2UgcmV2b2x2ZXMgYXJvdW5kIHRoZSBCUEYgdmVyaWZpZXImIzM5O3MgaGFuZGxpbmcgb2YgcG9pbnRlcnMgcGFzc2VkIHRvIGtmdW5jcywgc3BlY2lmaWNhbGx5IHRob3NlIGV4cGVjdGluZyBgS0ZfQVJHX1BUUl9UT19SRUZDT1VOVEVEX0tQVFJgLiBUaGUgcGF0Y2ggc2VlbXMgdG8gYmUgaW50cm9kdWNpbmcgYSBzdHJpY3RlciBjaGVjaywgcmVqZWN0aW5nIG1vZGlmaWVkIHBvaW50ZXJzIOKAkyBtZWFuaW5nIHRob3NlIHdpdGggYSBub24temVybyBmaXhlZCBvZmZzZXQg4oCTIGluIHRoaXMgcGFydGljdWxhciBzY2VuYXJpby4KCkkgbmVlZCB0byBkaWcgZGVlcGVyLCBidXQgbXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRoYXQgdGhpcyBpcyBhIGZ1bmN0aW9uYWwgbW9kaWZpY2F0aW9uIHRvIHRoZSB2ZXJpZmllciBsb2dpYy4gSSYjMzk7bGwgYmUgZm9jdXNpbmcgbXkgYXR0ZW50aW9uIG9uIGBjaGVja19rZnVuY19hcmdzYCBhbmQgYF9fY2hlY2tfZnVuY19hcmdfcmVnX29mZmAgdG8gZ3Jhc3AgdGhlIG51YW5jZXMgb2YgdGhpcyB0aWdodGVuZWQgY2hlY2sgYW5kIGl0cyBpbXBhY3QuIFRoaXMgaXMgc29tZXRoaW5nIHRoYXQgY291bGQgcG90ZW50aWFsbHkgZXhwb3NlIHN1YnRsZSBidXQgaW1wb3J0YW50IGlzc3Vlcywgc28gY2FyZWZ1bCB0ZXN0aW5nIGlzIGluIG9yZGVyLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzIzIDA2OjM3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtCUEZfU1lTQ0FMTCYjMzQ7LAogICAgJiMzNDtERUJVR19JTkZPX0JURiYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2NoZWNrX2tmdW5jX2FyZ3MmIzM0OywKICAgICYjMzQ7X19jaGVja19mdW5jX2FyZ19yZWdfb2ZmJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBCUEYgdmVyaWZpZXIgdG8gcmVqZWN0IHBhc3NpbmcgYSBtb2RpZmllZCBwb2ludGVyICh3aXRoIG5vbi16ZXJvIGZpeGVkIG9mZnNldCkgdG8gYSBrZnVuYyBleHBlY3RpbmcgYSBLRl9BUkdfUFRSX1RPX1JFRkNPVU5URURfS1BUUi4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBCUEYgdmVyaWZpZXIgbG9naWMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JQRl9TWVNDQUxMJiMzNDssCiAgICAmIzM0O0RFQlVHX0lORk9fQlRGJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7Y2hlY2tfa2Z1bmNfYXJncyYjMzQ7LAogICAgJiMzNDtfX2NoZWNrX2Z1bmNfYXJnX3JlZ19vZmYmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIEJQRiB2ZXJpZmllciB0byByZWplY3QgcGFzc2luZyBhIG1vZGlmaWVkIHBvaW50ZXIgKHdpdGggbm9uLXplcm8gZml4ZWQgb2Zmc2V0KSB0byBhIGtmdW5jIGV4cGVjdGluZyBhIEtGX0FSR19QVFJfVE9fUkVGQ09VTlRFRF9LUFRSLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIEJQRiB2ZXJpZmllciBsb2dpYy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA2LTIzVDA2OjM2OjQ1LjI2MjQyMTk5WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjAyMjM5MTY3MjcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQlBGX1NZU0NBTExcIixcbiAgICBcIkRFQlVHX0lORk9fQlRGXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiY2hlY2tfa2Z1bmNfYXJnc1wiLFxuICAgIFwiX19jaGVja19mdW5jX2FyZ19yZWdfb2ZmXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIEJQRiB2ZXJpZmllciB0byByZWplY3QgcGFzc2luZyBhIG1vZGlmaWVkIHBvaW50ZXIgKHdpdGggbm9uLXplcm8gZml4ZWQgb2Zmc2V0KSB0byBhIGtmdW5jIGV4cGVjdGluZyBhIEtGX0FSR19QVFJfVE9fUkVGQ09VTlRFRF9LUFRSLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIEJQRiB2ZXJpZmllciBsb2dpYy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjNUMDY6MzY6NDUuMjYyNDI2OTgxWiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NDIzMzgxNTAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCBiMTMxOWNmOGVhNjVkYjlhMjBhOTA5MDE4ZjljODhmYWMwZDIxMmU3XFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBUdWUgSnVuIDIzIDA2OjM2OjQ0IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2tlcm5lbC9icGYvdmVyaWZpZXIuYyBiL2tlcm5lbC9icGYvdmVyaWZpZXIuY1xcbmluZGV4IDJhYmM3OWRiZjI4MWMyLi5mNjVlZmYyOGVjZDI1ZSAxMDA2NDRcXG4tLS0gYS9rZXJuZWwvYnBmL3ZlcmlmaWVyLmNcXG4rKysgYi9rZXJuZWwvYnBmL3ZlcmlmaWVyLmNcXG5AQCAtNzk5MCw5ICs3OTkwLDEwIEBAIHJlZ19maW5kX2ZpZWxkX29mZnNldChjb25zdCBzdHJ1Y3QgYnBmX3JlZ19zdGF0ZSAqcmVnLCBzMzIgb2ZmLCB1MzIgZmllbGRzKVxcbiBcXHRyZXR1cm4gZmllbGQ7XFxuIH1cXG4gXFxuLXN0YXRpYyBpbnQgY2hlY2tfZnVuY19hcmdfcmVnX29mZihzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LFxcbi1cXHRcXHRcXHRcXHQgIGNvbnN0IHN0cnVjdCBicGZfcmVnX3N0YXRlICpyZWcsIGFyZ25vX3QgYXJnbm8sXFxuLVxcdFxcdFxcdFxcdCAgZW51bSBicGZfYXJnX3R5cGUgYXJnX3R5cGUpXFxuK3N0YXRpYyBpbnQgX19jaGVja19mdW5jX2FyZ19yZWdfb2ZmKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsXFxuK1xcdFxcdFxcdFxcdCAgICBjb25zdCBzdHJ1Y3QgYnBmX3JlZ19zdGF0ZSAqcmVnLCBhcmdub190IGFyZ25vLFxcbitcXHRcXHRcXHRcXHQgICAgZW51bSBicGZfYXJnX3R5cGUgYXJnX3R5cGUsXFxuK1xcdFxcdFxcdFxcdCAgICBib29sIGJ0Zl9pZF9maXhlZF9vZmZfb2spXFxuIHtcXG4gXFx0dTMyIHR5cGUgPSByZWctXFx1MDAzZXR5cGU7XFxuIFxcbkBAIC04MDQ5LDEyICs4MDUwLDExIEBAIHN0YXRpYyBpbnQgY2hlY2tfZnVuY19hcmdfcmVnX29mZihzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LFxcbiBcXHRjYXNlIFBUUl9UT19CVEZfSUQgfCBNRU1fQUxMT0MgfCBOT05fT1dOX1JFRiB8IE1FTV9SQ1U6XFxuIFxcdFxcdC8qIFdoZW4gcmVmZXJlbmNlZCBQVFJfVE9fQlRGX0lEIGlzIHBhc3NlZCB0byByZWxlYXNlIGZ1bmN0aW9uLFxcbiBcXHRcXHQgKiBpdHMgZml4ZWQgb2Zmc2V0IG11c3QgYmUgMC4gSW4gdGhlIG90aGVyIGNhc2VzLCBmaXhlZCBvZmZzZXRcXG4tXFx0XFx0ICogY2FuIGJlIG5vbi16ZXJvLiBUaGlzIHdhcyBhbHJlYWR5IGNoZWNrZWQgYWJvdmUuIFNvIHBhc3NcXG4tXFx0XFx0ICogZml4ZWRfb2ZmX29rIGFzIHRydWUgdG8gYWxsb3cgZml4ZWQgb2Zmc2V0IGZvciBhbGwgb3RoZXJcXG4tXFx0XFx0ICogY2FzZXMuIHZhcl9vZmYgYWx3YXlzIG11c3QgYmUgMCBmb3IgUFRSX1RPX0JURl9JRCwgaGVuY2Ugd2VcXG4tXFx0XFx0ICogc3RpbGwgbmVlZCB0byBkbyBjaGVja3MgaW5zdGVhZCBvZiByZXR1cm5pbmcuXFxuK1xcdFxcdCAqIGNhbiBiZSBub24temVybyB1bmxlc3MgdGhlIGNhbGxlciByZXF1aXJlcyBvdGhlcndpc2UuXFxuK1xcdFxcdCAqIHZhcl9vZmYgYWx3YXlzIG11c3QgYmUgMCBmb3IgUFRSX1RPX0JURl9JRCwgaGVuY2Ugd2Ugc3RpbGxcXG4rXFx0XFx0ICogbmVlZCB0byBkbyBjaGVja3MgaW5zdGVhZCBvZiByZXR1cm5pbmcuXFxuIFxcdFxcdCAqL1xcbi1cXHRcXHRyZXR1cm4gX19jaGVja19wdHJfb2ZmX3JlZyhlbnYsIHJlZywgYXJnbm8sIHRydWUpO1xcbitcXHRcXHRyZXR1cm4gX19jaGVja19wdHJfb2ZmX3JlZyhlbnYsIHJlZywgYXJnbm8sIGJ0Zl9pZF9maXhlZF9vZmZfb2spO1xcbiBcXHRjYXNlIFBUUl9UT19DVFg6XFxuIFxcdFxcdC8qXFxuIFxcdFxcdCAqIEFsbG93IGZpeGVkIGFuZCB2YXJpYWJsZSBvZmZzZXRzIGZvciBzeXNjYWxsIGNvbnRleHQsIGJ1dFxcbkBAIC04MDcwLDYgKzgwNzAsMTMgQEAgc3RhdGljIGludCBjaGVja19mdW5jX2FyZ19yZWdfb2ZmKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsXFxuIFxcdH1cXG4gfVxcbiBcXG4rc3RhdGljIGludCBjaGVja19mdW5jX2FyZ19yZWdfb2ZmKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsXFxuK1xcdFxcdFxcdFxcdCAgY29uc3Qgc3RydWN0IGJwZl9yZWdfc3RhdGUgKnJlZywgYXJnbm9fdCBhcmdubyxcXG4rXFx0XFx0XFx0XFx0ICBlbnVtIGJwZl9hcmdfdHlwZSBhcmdfdHlwZSlcXG4re1xcbitcXHRyZXR1cm4gX19jaGVja19mdW5jX2FyZ19yZWdfb2ZmKGVudiwgcmVnLCBhcmdubywgYXJnX3R5cGUsIHRydWUpO1xcbit9XFxuK1xcbiBzdGF0aWMgaW50IGNoZWNrX2FyZ19jb25zdF9zdHIoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudixcXG4gXFx0XFx0XFx0ICAgICAgIHN0cnVjdCBicGZfcmVnX3N0YXRlICpyZWcsIGFyZ25vX3QgYXJnbm8pXFxuIHtcXG5AQCAtMTE5NDEsNiArMTE5NDgsNyBAQCBzdGF0aWMgaW50IGNoZWNrX2tmdW5jX2FyZ3Moc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgc3RydWN0IGJwZl9rZnVuY19jYWxsX1xcbiBcXHRcXHRlbnVtIGJwZl9hcmdfdHlwZSBhcmdfdHlwZSA9IEFSR19ET05UQ0FSRTtcXG4gXFx0XFx0YXJnbm9fdCBhcmdubyA9IGFyZ25vX2Zyb21fYXJnKGkgKyAxKTtcXG4gXFx0XFx0aW50IHJlZ25vID0gcmVnX2Zyb21fYXJnbm8oYXJnbm8pO1xcbitcXHRcXHRib29sIGJ0Zl9pZF9maXhlZF9vZmZfb2sgPSB0cnVlO1xcbiBcXHRcXHR1MzIgcmVmX2lkLCB0eXBlX3NpemU7XFxuIFxcdFxcdGJvb2wgaXNfcmV0X2J1Zl9zeiA9IGZhbHNlO1xcbiBcXHRcXHRpbnQga2ZfYXJnX3R5cGU7XFxuQEAgLTEyMTE0LDcgKzEyMTIyLDYgQEAgc3RhdGljIGludCBjaGVja19rZnVuY19hcmdzKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIHN0cnVjdCBicGZfa2Z1bmNfY2FsbF9cXG4gXFx0XFx0Y2FzZSBLRl9BUkdfUFRSX1RPX01FTTpcXG4gXFx0XFx0Y2FzZSBLRl9BUkdfUFRSX1RPX01FTV9TSVpFOlxcbiBcXHRcXHRjYXNlIEtGX0FSR19QVFJfVE9fQ0FMTEJBQ0s6XFxuLVxcdFxcdGNhc2UgS0ZfQVJHX1BUUl9UT19SRUZDT1VOVEVEX0tQVFI6XFxuIFxcdFxcdGNhc2UgS0ZfQVJHX1BUUl9UT19DT05TVF9TVFI6XFxuIFxcdFxcdGNhc2UgS0ZfQVJHX1BUUl9UT19XT1JLUVVFVUU6XFxuIFxcdFxcdGNhc2UgS0ZfQVJHX1BUUl9UT19USU1FUjpcXG5AQCAtMTIxMjgsNiArMTIxMzUsMTAgQEAgc3RhdGljIGludCBjaGVja19rZnVuY19hcmdzKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIHN0cnVjdCBicGZfa2Z1bmNfY2FsbF9cXG4gXFx0XFx0Y2FzZSBLRl9BUkdfUFRSX1RPX0NUWDpcXG4gXFx0XFx0XFx0YXJnX3R5cGUgPSBBUkdfUFRSX1RPX0NUWDtcXG4gXFx0XFx0XFx0YnJlYWs7XFxuK1xcdFxcdGNhc2UgS0ZfQVJHX1BUUl9UT19SRUZDT1VOVEVEX0tQVFI6XFxuK1xcdFxcdFxcdGFyZ190eXBlID0gQVJHX1BUUl9UT19CVEZfSUQ7XFxuK1xcdFxcdFxcdGJ0Zl9pZF9maXhlZF9vZmZfb2sgPSBmYWxzZTtcXG4rXFx0XFx0XFx0YnJlYWs7XFxuIFxcdFxcdGRlZmF1bHQ6XFxuIFxcdFxcdFxcdHZlcmlmaWVyX2J1ZyhlbnYsIFxcXCJ1bmtub3duIGtmdW5jIGFyZyB0eXBlICVkXFxcIiwga2ZfYXJnX3R5cGUpO1xcbiBcXHRcXHRcXHRyZXR1cm4gLUVGQVVMVDtcXG5AQCAtMTIxMzUsNyArMTIxNDYsOCBAQCBzdGF0aWMgaW50IGNoZWNrX2tmdW5jX2FyZ3Moc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgc3RydWN0IGJwZl9rZnVuY19jYWxsX1xcbiBcXG4gXFx0XFx0aWYgKHJlZ25vID09IG1ldGEtXFx1MDAzZXJlbGVhc2VfcmVnbm8pXFxuIFxcdFxcdFxcdGFyZ190eXBlIHw9IE9CSl9SRUxFQVNFO1xcbi1cXHRcXHRyZXQgPSBjaGVja19mdW5jX2FyZ19yZWdfb2ZmKGVudiwgcmVnLCBhcmdubywgYXJnX3R5cGUpO1xcbitcXHRcXHRyZXQgPSBfX2NoZWNrX2Z1bmNfYXJnX3JlZ19vZmYoZW52LCByZWcsIGFyZ25vLCBhcmdfdHlwZSxcXG4rXFx0XFx0XFx0XFx0XFx0ICAgICAgIGJ0Zl9pZF9maXhlZF9vZmZfb2spO1xcbiBcXHRcXHRpZiAocmV0IFxcdTAwM2MgMClcXG4gXFx0XFx0XFx0cmV0dXJuIHJldDtcXG4gXFxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9yZWZjb3VudGVkX2twdHJfZmFpbC5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3JlZmNvdW50ZWRfa3B0cl9mYWlsLmNcXG5pbmRleCA3MjQ3YTIwYzBhM2JmNS4uMDI0ZWYyYWFlMjAwODIgMTAwNjQ0XFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3JlZmNvdW50ZWRfa3B0cl9mYWlsLmNcXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvcmVmY291bnRlZF9rcHRyX2ZhaWwuY1xcbkBAIC0xMywxMiArMTMsMjAgQEAgc3RydWN0IG5vZGVfYWNxdWlyZSB7XFxuIFxcdHN0cnVjdCBicGZfcmVmY291bnQgcmVmY291bnQ7XFxuIH07XFxuIFxcbitzdHJ1Y3Qgbm9kZV9yZWZjb3VudGVkIHtcXG4rXFx0bG9uZyBrZXk7XFxuK1xcdHN0cnVjdCBicGZfbGlzdF9ub2RlIGxpc3Q7XFxuK1xcdHN0cnVjdCBicGZfcmVmY291bnQgcmVmY291bnQ7XFxuK307XFxuK1xcbiBleHRlcm4gdm9pZCBicGZfcmN1X3JlYWRfbG9jayh2b2lkKSBfX2tzeW07XFxuIGV4dGVybiB2b2lkIGJwZl9yY3VfcmVhZF91bmxvY2sodm9pZCkgX19rc3ltO1xcbiBcXG4gI2RlZmluZSBwcml2YXRlKG5hbWUpIFNFQyhcXFwiLmRhdGEuXFxcIiAjbmFtZSkgX19oaWRkZW4gX19hdHRyaWJ1dGVfXygoYWxpZ25lZCg4KSkpXFxuIHByaXZhdGUoQSkgc3RydWN0IGJwZl9zcGluX2xvY2sgZ2xvY2s7XFxuIHByaXZhdGUoQSkgc3RydWN0IGJwZl9yYl9yb290IGdyb290IF9fY29udGFpbnMobm9kZV9hY3F1aXJlLCBub2RlKTtcXG4rcHJpdmF0ZShCKSBzdHJ1Y3QgYnBmX3NwaW5fbG9jayBsb2NrO1xcbitwcml2YXRlKEIpIHN0cnVjdCBicGZfbGlzdF9oZWFkIGhlYWQgX19jb250YWlucyhub2RlX3JlZmNvdW50ZWQsIGxpc3QpO1xcbiBcXG4gc3RhdGljIGJvb2wgbGVzcyhzdHJ1Y3QgYnBmX3JiX25vZGUgKmEsIGNvbnN0IHN0cnVjdCBicGZfcmJfbm9kZSAqYilcXG4ge1xcbkBAIC05Myw2ICsxMDEsMzIgQEAgbG9uZyByYnRyZWVfcmVmY291bnRlZF9ub2RlX3JlZl9lc2NhcGVzX293bmluZ19pbnB1dCh2b2lkICpjdHgpXFxuIFxcdHJldHVybiAwO1xcbiB9XFxuIFxcbitTRUMoXFxcIj90Y1xcXCIpXFxuK19fZmFpbHVyZSBfX21zZyhcXFwiZGVyZWZlcmVuY2Ugb2YgbW9kaWZpZWQgcHRyXyBwdHIgUjFcXFwiKVxcbitsb25nIHJlZmNvdW50X2FjcXVpcmVfbGlzdF9ub2RlX29mZnNldCh2b2lkICpjdHgpXFxuK3tcXG4rXFx0c3RydWN0IG5vZGVfcmVmY291bnRlZCAqbm9kZSwgKmJhc2UsICpyZWY7XFxuK1xcdHN0cnVjdCBicGZfbGlzdF9ub2RlICpsaXN0X25vZGU7XFxuK1xcbitcXHRub2RlID0gYnBmX29ial9uZXcodHlwZW9mKCpub2RlKSk7XFxuK1xcdGlmICghbm9kZSlcXG4rXFx0XFx0cmV0dXJuIDE7XFxuK1xcbitcXHRicGZfc3Bpbl9sb2NrKFxcdTAwMjZsb2NrKTtcXG4rXFx0YnBmX2xpc3RfcHVzaF9mcm9udChcXHUwMDI2aGVhZCwgXFx1MDAyNm5vZGUtXFx1MDAzZWxpc3QpO1xcbitcXHRsaXN0X25vZGUgPSBicGZfbGlzdF9wb3BfZnJvbnQoXFx1MDAyNmhlYWQpO1xcbitcXHRicGZfc3Bpbl91bmxvY2soXFx1MDAyNmxvY2spO1xcbitcXHRpZiAoIWxpc3Rfbm9kZSlcXG4rXFx0XFx0cmV0dXJuIDI7XFxuK1xcbitcXHRiYXNlID0gY29udGFpbmVyX29mKGxpc3Rfbm9kZSwgc3RydWN0IG5vZGVfcmVmY291bnRlZCwgbGlzdCk7XFxuK1xcdHJlZiA9IGJwZl9yZWZjb3VudF9hY3F1aXJlKGxpc3Rfbm9kZSk7XFxuK1xcdGlmIChyZWYpXFxuK1xcdFxcdGJwZl9vYmpfZHJvcChyZWYpO1xcbitcXHRicGZfb2JqX2Ryb3AoYmFzZSk7XFxuK1xcdHJldHVybiAwO1xcbit9XFxuK1xcbiBTRUMoXFxcIj9mZW50cnkucy9cXFwiIFNZU19QUkVGSVggXFxcInN5c19nZXRwZ2lkXFxcIilcXG4gX19mYWlsdXJlIF9fbXNnKFxcXCJmdW5jdGlvbiBjYWxscyBhcmUgbm90IGFsbG93ZWQgd2hpbGUgaG9sZGluZyBhIGxvY2tcXFwiKVxcbiBpbnQgQlBGX1BST0cocmJ0cmVlX2ZhaWxfc2xlZXBhYmxlX2xvY2tfYWNyb3NzX3JjdSxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjNUMDY6MzY6NDUuNzA1NDc3MTExWiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxOTc4MDg1MzE3NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJCUEZfU1lTQ0FMTFwiLFxuICAgIFwiREVCVUdfSU5GT19CVEZcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJjaGVja19rZnVuY19hcmdzXCIsXG4gICAgXCJfX2NoZWNrX2Z1bmNfYXJnX3JlZ19vZmZcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgQlBGIHZlcmlmaWVyIHRvIHJlamVjdCBwYXNzaW5nIGEgbW9kaWZpZWQgcG9pbnRlciAod2l0aCBub24temVybyBmaXhlZCBvZmZzZXQpIHRvIGEga2Z1bmMgZXhwZWN0aW5nIGEgS0ZfQVJHX1BUUl9UT19SRUZDT1VOVEVEX0tQVFIuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgQlBGIHZlcmlmaWVyIGxvZ2ljLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG5ldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0XG4gICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksXG4gICBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IGIxMzE5Y2Y4ZWE2NWRiOWEyMGE5MDkwMThmOWM4OGZhYzBkMjEyZTdcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVHVlIEp1biAyMyAwNjozNjo0NCAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2tlcm5lbC9icGYvdmVyaWZpZXIuYyBiL2tlcm5lbC9icGYvdmVyaWZpZXIuY1xuaW5kZXggMmFiYzc5ZGJmMjgxYzIuLmY2NWVmZjI4ZWNkMjVlIDEwMDY0NFxuLS0tIGEva2VybmVsL2JwZi92ZXJpZmllci5jXG4rKysgYi9rZXJuZWwvYnBmL3ZlcmlmaWVyLmNcbkBAIC03OTkwLDkgKzc5OTAsMTAgQEAgcmVnX2ZpbmRfZmllbGRfb2Zmc2V0KGNvbnN0IHN0cnVjdCBicGZfcmVnX3N0YXRlICpyZWcsIHMzMiBvZmYsIHUzMiBmaWVsZHMpXG4gXHRyZXR1cm4gZmllbGQ7XG4gfVxuIFxuLXN0YXRpYyBpbnQgY2hlY2tfZnVuY19hcmdfcmVnX29mZihzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LFxuLVx0XHRcdFx0ICBjb25zdCBzdHJ1Y3QgYnBmX3JlZ19zdGF0ZSAqcmVnLCBhcmdub190IGFyZ25vLFxuLVx0XHRcdFx0ICBlbnVtIGJwZl9hcmdfdHlwZSBhcmdfdHlwZSlcbitzdGF0aWMgaW50IF9fY2hlY2tfZnVuY19hcmdfcmVnX29mZihzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LFxuK1x0XHRcdFx0ICAgIGNvbnN0IHN0cnVjdCBicGZfcmVnX3N0YXRlICpyZWcsIGFyZ25vX3QgYXJnbm8sXG4rXHRcdFx0XHQgICAgZW51bSBicGZfYXJnX3R5cGUgYXJnX3R5cGUsXG4rXHRcdFx0XHQgICAgYm9vbCBidGZfaWRfZml4ZWRfb2ZmX29rKVxuIHtcbiBcdHUzMiB0eXBlID0gcmVnLVx1MDAzZXR5cGU7XG4gXG5AQCAtODA0OSwxMiArODA1MCwxMSBAQCBzdGF0aWMgaW50IGNoZWNrX2Z1bmNfYXJnX3JlZ19vZmYoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudixcbiBcdGNhc2UgUFRSX1RPX0JURl9JRCB8IE1FTV9BTExPQyB8IE5PTl9PV05fUkVGIHwgTUVNX1JDVTpcbiBcdFx0LyogV2hlbiByZWZlcmVuY2VkIFBUUl9UT19CVEZfSUQgaXMgcGFzc2VkIHRvIHJlbGVhc2UgZnVuY3Rpb24sXG4gXHRcdCAqIGl0cyBmaXhlZCBvZmZzZXQgbXVzdCBiZSAwLiBJbiB0aGUgb3RoZXIgY2FzZXMsIGZpeGVkIG9mZnNldFxuLVx0XHQgKiBjYW4gYmUgbm9uLXplcm8uIFRoaXMgd2FzIGFscmVhZHkgY2hlY2tlZCBhYm92ZS4gU28gcGFzc1xuLVx0XHQgKiBmaXhlZF9vZmZfb2sgYXMgdHJ1ZSB0byBhbGxvdyBmaXhlZCBvZmZzZXQgZm9yIGFsbCBvdGhlclxuLVx0XHQgKiBjYXNlcy4gdmFyX29mZiBhbHdheXMgbXVzdCBiZSAwIGZvciBQVFJfVE9fQlRGX0lELCBoZW5jZSB3ZVxuLVx0XHQgKiBzdGlsbCBuZWVkIHRvIGRvIGNoZWNrcyBpbnN0ZWFkIG9mIHJldHVybmluZy5cbitcdFx0ICogY2FuIGJlIG5vbi16ZXJvIHVubGVzcyB0aGUgY2FsbGVyIHJlcXVpcmVzIG90aGVyd2lzZS5cbitcdFx0ICogdmFyX29mZiBhbHdheXMgbXVzdCBiZSAwIGZvciBQVFJfVE9fQlRGX0lELCBoZW5jZSB3ZSBzdGlsbFxuK1x0XHQgKiBuZWVkIHRvIGRvIGNoZWNrcyBpbnN0ZWFkIG9mIHJldHVybmluZy5cbiBcdFx0ICovXG4tXHRcdHJldHVybiBfX2NoZWNrX3B0cl9vZmZfcmVnKGVudiwgcmVnLCBhcmdubywgdHJ1ZSk7XG4rXHRcdHJldHVybiBfX2NoZWNrX3B0cl9vZmZfcmVnKGVudiwgcmVnLCBhcmdubywgYnRmX2lkX2ZpeGVkX29mZl9vayk7XG4gXHRjYXNlIFBUUl9UT19DVFg6XG4gXHRcdC8qXG4gXHRcdCAqIEFsbG93IGZpeGVkIGFuZCB2YXJpYWJsZSBvZmZzZXRzIGZvciBzeXNjYWxsIGNvbnRleHQsIGJ1dFxuQEAgLTgwNzAsNiArODA3MCwxMyBAQCBzdGF0aWMgaW50IGNoZWNrX2Z1bmNfYXJnX3JlZ19vZmYoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudixcbiBcdH1cbiB9XG4gXG4rc3RhdGljIGludCBjaGVja19mdW5jX2FyZ19yZWdfb2ZmKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsXG4rXHRcdFx0XHQgIGNvbnN0IHN0cnVjdCBicGZfcmVnX3N0YXRlICpyZWcsIGFyZ25vX3QgYXJnbm8sXG4rXHRcdFx0XHQgIGVudW0gYnBmX2FyZ190eXBlIGFyZ190eXBlKVxuK3tcbitcdHJldHVybiBfX2NoZWNrX2Z1bmNfYXJnX3JlZ19vZmYoZW52LCByZWcsIGFyZ25vLCBhcmdfdHlwZSwgdHJ1ZSk7XG4rfVxuK1xuIHN0YXRpYyBpbnQgY2hlY2tfYXJnX2NvbnN0X3N0cihzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LFxuIFx0XHRcdCAgICAgICBzdHJ1Y3QgYnBmX3JlZ19zdGF0ZSAqcmVnLCBhcmdub190IGFyZ25vKVxuIHtcbkBAIC0xMTk0MSw2ICsxMTk0OCw3IEBAIHN0YXRpYyBpbnQgY2hlY2tfa2Z1bmNfYXJncyhzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBzdHJ1Y3QgYnBmX2tmdW5jX2NhbGxfXG4gXHRcdGVudW0gYnBmX2FyZ190eXBlIGFyZ190eXBlID0gQVJHX0RPTlRDQVJFO1xuIFx0XHRhcmdub190IGFyZ25vID0gYXJnbm9fZnJvbV9hcmcoaSArIDEpO1xuIFx0XHRpbnQgcmVnbm8gPSByZWdfZnJvbV9hcmdubyhhcmdubyk7XG4rXHRcdGJvb2wgYnRmX2lkX2ZpeGVkX29mZl9vayA9IHRydWU7XG4gXHRcdHUzMiByZWZfaWQsIHR5cGVfc2l6ZTtcbiBcdFx0Ym9vbCBpc19yZXRfYnVmX3N6ID0gZmFsc2U7XG4gXHRcdGludCBrZl9hcmdfdHlwZTtcbkBAIC0xMjExNCw3ICsxMjEyMiw2IEBAIHN0YXRpYyBpbnQgY2hlY2tfa2Z1bmNfYXJncyhzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBzdHJ1Y3QgYnBmX2tmdW5jX2NhbGxfXG4gXHRcdGNhc2UgS0ZfQVJHX1BUUl9UT19NRU06XG4gXHRcdGNhc2UgS0ZfQVJHX1BUUl9UT19NRU1fU0laRTpcbiBcdFx0Y2FzZSBLRl9BUkdfUFRSX1RPX0NBTExCQUNLOlxuLVx0XHRjYXNlIEtGX0FSR19QVFJfVE9fUkVGQ09VTlRFRF9LUFRSOlxuIFx0XHRjYXNlIEtGX0FSR19QVFJfVE9fQ09OU1RfU1RSOlxuIFx0XHRjYXNlIEtGX0FSR19QVFJfVE9fV09SS1FVRVVFOlxuIFx0XHRjYXNlIEtGX0FSR19QVFJfVE9fVElNRVI6XG5AQCAtMTIxMjgsNiArMTIxMzUsMTAgQEAgc3RhdGljIGludCBjaGVja19rZnVuY19hcmdzKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIHN0cnVjdCBicGZfa2Z1bmNfY2FsbF9cbiBcdFx0Y2FzZSBLRl9BUkdfUFRSX1RPX0NUWDpcbiBcdFx0XHRhcmdfdHlwZSA9IEFSR19QVFJfVE9fQ1RYO1xuIFx0XHRcdGJyZWFrO1xuK1x0XHRjYXNlIEtGX0FSR19QVFJfVE9fUkVGQ09VTlRFRF9LUFRSOlxuK1x0XHRcdGFyZ190eXBlID0gQVJHX1BUUl9UT19CVEZfSUQ7XG4rXHRcdFx0YnRmX2lkX2ZpeGVkX29mZl9vayA9IGZhbHNlO1xuK1x0XHRcdGJyZWFrO1xuIFx0XHRkZWZhdWx0OlxuIFx0XHRcdHZlcmlmaWVyX2J1ZyhlbnYsIFwidW5rbm93biBrZnVuYyBhcmcgdHlwZSAlZFwiLCBrZl9hcmdfdHlwZSk7XG4gXHRcdFx0cmV0dXJuIC1FRkFVTFQ7XG5AQCAtMTIxMzUsNyArMTIxNDYsOCBAQCBzdGF0aWMgaW50IGNoZWNrX2tmdW5jX2FyZ3Moc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgc3RydWN0IGJwZl9rZnVuY19jYWxsX1xuIFxuIFx0XHRpZiAocmVnbm8gPT0gbWV0YS1cdTAwM2VyZWxlYXNlX3JlZ25vKVxuIFx0XHRcdGFyZ190eXBlIHw9IE9CSl9SRUxFQVNFO1xuLVx0XHRyZXQgPSBjaGVja19mdW5jX2FyZ19yZWdfb2ZmKGVudiwgcmVnLCBhcmdubywgYXJnX3R5cGUpO1xuK1x0XHRyZXQgPSBfX2NoZWNrX2Z1bmNfYXJnX3JlZ19vZmYoZW52LCByZWcsIGFyZ25vLCBhcmdfdHlwZSxcbitcdFx0XHRcdFx0ICAgICAgIGJ0Zl9pZF9maXhlZF9vZmZfb2spO1xuIFx0XHRpZiAocmV0IFx1MDAzYyAwKVxuIFx0XHRcdHJldHVybiByZXQ7XG4gXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3JlZmNvdW50ZWRfa3B0cl9mYWlsLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvcmVmY291bnRlZF9rcHRyX2ZhaWwuY1xuaW5kZXggNzI0N2EyMGMwYTNiZjUuLjAyNGVmMmFhZTIwMDgyIDEwMDY0NFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3JlZmNvdW50ZWRfa3B0cl9mYWlsLmNcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9yZWZjb3VudGVkX2twdHJfZmFpbC5jXG5AQCAtMTMsMTIgKzEzLDIwIEBAIHN0cnVjdCBub2RlX2FjcXVpcmUge1xuIFx0c3RydWN0IGJwZl9yZWZjb3VudCByZWZjb3VudDtcbiB9O1xuIFxuK3N0cnVjdCBub2RlX3JlZmNvdW50ZWQge1xuK1x0bG9uZyBrZXk7XG4rXHRzdHJ1Y3QgYnBmX2xpc3Rfbm9kZSBsaXN0O1xuK1x0c3RydWN0IGJwZl9yZWZjb3VudCByZWZjb3VudDtcbit9O1xuK1xuIGV4dGVybiB2b2lkIGJwZl9yY3VfcmVhZF9sb2NrKHZvaWQpIF9fa3N5bTtcbiBleHRlcm4gdm9pZCBicGZfcmN1X3JlYWRfdW5sb2NrKHZvaWQpIF9fa3N5bTtcbiBcbiAjZGVmaW5lIHByaXZhdGUobmFtZSkgU0VDKFwiLmRhdGEuXCIgI25hbWUpIF9faGlkZGVuIF9fYXR0cmlidXRlX18oKGFsaWduZWQoOCkpKVxuIHByaXZhdGUoQSkgc3RydWN0IGJwZl9zcGluX2xvY2sgZ2xvY2s7XG4gcHJpdmF0ZShBKSBzdHJ1Y3QgYnBmX3JiX3Jvb3QgZ3Jvb3QgX19jb250YWlucyhub2RlX2FjcXVpcmUsIG5vZGUpO1xuK3ByaXZhdGUoQikgc3RydWN0IGJwZl9zcGluX2xvY2sgbG9jaztcbitwcml2YXRlKEIpIHN0cnVjdCBicGZfbGlzdF9oZWFkIGhlYWQgX19jb250YWlucyhub2RlX3JlZmNvdW50ZWQsIGxpc3QpO1xuIFxuIHN0YXRpYyBib29sIGxlc3Moc3RydWN0IGJwZl9yYl9ub2RlICphLCBjb25zdCBzdHJ1Y3QgYnBmX3JiX25vZGUgKmIpXG4ge1xuQEAgLTkzLDYgKzEwMSwzMiBAQCBsb25nIHJidHJlZV9yZWZjb3VudGVkX25vZGVfcmVmX2VzY2FwZXNfb3duaW5nX2lucHV0KHZvaWQgKmN0eClcbiBcdHJldHVybiAwO1xuIH1cbiBcbitTRUMoXCI/dGNcIilcbitfX2ZhaWx1cmUgX19tc2coXCJkZXJlZmVyZW5jZSBvZiBtb2RpZmllZCBwdHJfIHB0ciBSMVwiKVxuK2xvbmcgcmVmY291bnRfYWNxdWlyZV9saXN0X25vZGVfb2Zmc2V0KHZvaWQgKmN0eClcbit7XG4rXHRzdHJ1Y3Qgbm9kZV9yZWZjb3VudGVkICpub2RlLCAqYmFzZSwgKnJlZjtcbitcdHN0cnVjdCBicGZfbGlzdF9ub2RlICpsaXN0X25vZGU7XG4rXG4rXHRub2RlID0gYnBmX29ial9uZXcodHlwZW9mKCpub2RlKSk7XG4rXHRpZiAoIW5vZGUpXG4rXHRcdHJldHVybiAxO1xuK1xuK1x0YnBmX3NwaW5fbG9jayhcdTAwMjZsb2NrKTtcbitcdGJwZl9saXN0X3B1c2hfZnJvbnQoXHUwMDI2aGVhZCwgXHUwMDI2bm9kZS1cdTAwM2VsaXN0KTtcbitcdGxpc3Rfbm9kZSA9IGJwZl9saXN0X3BvcF9mcm9udChcdTAwMjZoZWFkKTtcbitcdGJwZl9zcGluX3VubG9jayhcdTAwMjZsb2NrKTtcbitcdGlmICghbGlzdF9ub2RlKVxuK1x0XHRyZXR1cm4gMjtcbitcbitcdGJhc2UgPSBjb250YWluZXJfb2YobGlzdF9ub2RlLCBzdHJ1Y3Qgbm9kZV9yZWZjb3VudGVkLCBsaXN0KTtcbitcdHJlZiA9IGJwZl9yZWZjb3VudF9hY3F1aXJlKGxpc3Rfbm9kZSk7XG4rXHRpZiAocmVmKVxuK1x0XHRicGZfb2JqX2Ryb3AocmVmKTtcbitcdGJwZl9vYmpfZHJvcChiYXNlKTtcbitcdHJldHVybiAwO1xuK31cbitcbiBTRUMoXCI/ZmVudHJ5LnMvXCIgU1lTX1BSRUZJWCBcInN5c19nZXRwZ2lkXCIpXG4gX19mYWlsdXJlIF9fbXNnKFwiZnVuY3Rpb24gY2FsbHMgYXJlIG5vdCBhbGxvd2VkIHdoaWxlIGhvbGRpbmcgYSBsb2NrXCIpXG4gaW50IEJQRl9QUk9HKHJidHJlZV9mYWlsX3NsZWVwYWJsZV9sb2NrX2Fjcm9zc19yY3UsXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yM1QwNjozNjo0NS43MDU0Nzg3NzFaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo3MzM5NzY3NDMzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIEJQRiBWZXJpZmllciBQYXRjaCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggdGhhdCB0d2Vha3MgdGhlIEJQRiB2ZXJpZmllciwgc3BlY2lmaWNhbGx5IHdpdGhpbiBga2VybmVsL2JwZi92ZXJpZmllci5jYC4gSXQncyBhIHByZXR0eSB0YXJnZXRlZCBjaGFuZ2UsIGJ1dCBpdCBoYXMgaW1wb3J0YW50IGltcGxpY2F0aW9ucyBmb3IgaG93IHdlIGhhbmRsZSByZWZjb3VudGVkIHBvaW50ZXJzIHdpdGggb2Zmc2V0cyBpbiBCUEYga2Z1bmNzLiBUaGUgbWFpbiB0aGluZyBpcyB0aGF0IGBjaGVja19mdW5jX2FyZ19yZWdfb2ZmYCBpcyBub3cgcmVuYW1lZCB0byBgX19jaGVja19mdW5jX2FyZ19yZWdfb2ZmYCBhbmQgdGFrZXMgYW4gZXh0cmEgYm9vbGVhbiwgYGJ0Zl9pZF9maXhlZF9vZmZfb2tgLiBUaGlzIGNoYW5nZSBpcyBjb3VwbGVkIHdpdGggYW4gdXBkYXRlIHRvIGBjaGVja19rZnVuY19hcmdzYCB3aGVyZSB3ZSBub3cgcGFzcyBgYnRmX2lkX2ZpeGVkX29mZl9vayA9IGZhbHNlYCB3aGVuIGRlYWxpbmcgd2l0aCBgS0ZfQVJHX1BUUl9UT19SRUZDT1VOVEVEX0tQVFJgLiBUaGUgZWZmZWN0IGlzIHRoYXQgd2UgYXJlIG1vcmUgcmVzdHJpY3RpdmUgbm93LiBXZSBwcmV2ZW50IHBhc3NpbmcgYSBwb2ludGVyIHdpdGggYSBmaXhlZCwgbm9uLXplcm8gb2Zmc2V0IHRvIGEga2Z1bmMgd2hlbiBpdCBpcyBleHBlY3RpbmcgYSByZWZjb3VudGVkIHBvaW50ZXIuIEkgc2VlIHRoZSBpbnRlbnRpb24gaXMgdG8gcHJldmVudCBhIHNjZW5hcmlvIHdoZXJlIGEgbW9kaWZpZWQgcG9pbnRlciBnZXRzIG1pc3VzZWQuXG5cblRoZSBzZWxmdGVzdCBgcmVmY291bnRlZF9rcHRyX2ZhaWwuY2AgaGFzIGEgbmV3IHRlc3QsIGByZWZjb3VudF9hY3F1aXJlX2xpc3Rfbm9kZV9vZmZzZXRgLCB3aGljaCBhaW1zIHRvIHRyaWdnZXIgdGhpcyBuZXcgdmVyaWZpY2F0aW9uLiBUaGUgdGVzdCAqZXhwZWN0cyogYSBmYWlsdXJlLCBcImRlcmVmZXJlbmNlIG9mIG1vZGlmaWVkIHB0cl8gcHRyIFIxXCIsIHdoaWNoIGNvbmZpcm1zIG91ciBzdXNwaWNpb24gYWJvdXQgdGhlIGNoYW5nZS5cblxuVGhpcyBpcyBmdW5kYW1lbnRhbGx5IGEgZnVuY3Rpb25hbCBtb2RpZmljYXRpb24gdG8gdGhlIEJQRiB2ZXJpZmllciwgd2hpY2ggaW5kaWNhdGVzIGEgYnVnIGZpeCBvciwgbW9yZSBsaWtlbHksIGEgbmV3bHkgYWRkZWQgcmVzdHJpY3Rpb24uIEl04oCZcyBkZWZpbml0ZWx5IGEgY2hhbmdlIHRoYXQgY291bGQgaW50cm9kdWNlIHN1YnRsZSBiZWhhdmlvciBkaWZmZXJlbmNlcywgYW5kIHRoZXJlZm9yZSwgaXQncyBhIHByaW1lIGNhbmRpZGF0ZSBmb3IgZnV6emluZy4gV2UgbmVlZCB0byBiZSBjYXJlZnVsIHdpdGggdGhpcy5cblxuTm93LCBsZXQncyBpZGVudGlmeSB0aGUga2V5IGZvY3VzIHN5bWJvbHMgZm9yIGZ1cnRoZXIgaW52ZXN0aWdhdGlvbi4gRnJvbSB0aGUgZGlmZiwgaXTigJlzIGNsZWFyIHRoYXQgdGhlIG1vZGlmaWVkIGZ1bmN0aW9ucyBhcmU6IGBfX2NoZWNrX2Z1bmNfYXJnX3JlZ19vZmZgLCBgY2hlY2tfZnVuY19hcmdfcmVnX29mZmAgYW5kIGBjaGVja19rZnVuY19hcmdzYC4gYGNoZWNrX2tmdW5jX2FyZ3NgIGxvb2tzIGxpa2UgYSBnb29kIHBsYWNlIHRvIHN0YXJ0LCBnaXZlbiBpdHMgY2VudHJhbCByb2xlIGluIGFyZ3VtZW50IGNoZWNraW5nLiBgX19jaGVja19mdW5jX2FyZ19yZWdfb2ZmYCBpcyBhbm90aGVyIGNyaXRpY2FsIGFyZWEgdG8gZXhhbWluZS5cblxuV2UgbmVlZCB0byBtYWtlIHN1cmUgd2UgaGF2ZSB0aGUgYXBwcm9wcmlhdGUgQlBGIGNvbmZpZ3MgZW5hYmxlZCwgc3BlY2lmaWNhbGx5IGBDT05GSUdfQlBGX1NZU0NBTExgLiBOb3csIGxldCdzIGRpdmUgaW50byB0aGUgY29kZSBhbmQgdmVyaWZ5IHRoZSBpbXBhY3Qgb2YgdGhpcyBjaGFuZ2UuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM4NDMsIk91dHB1dFRva2VucyI6MjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNDcsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yM1QwNjozNjo1My4wNDUyNDc5NTRaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTg1OTYwMjI3MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjaGVja19rZnVuY19hcmdzXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImtlcm5lbC9icGYvdmVyaWZpZXIuYz0xMTg5Nz1zdGF0aWMgYm9vbCBjaGVja19jc3NfdGFza19pdGVyX2FsbG93bGlzdChzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52KVxcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTExOTEyLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxMTkxMzpzdGF0aWMgaW50IGNoZWNrX2tmdW5jX2FyZ3Moc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgc3RydWN0IGJwZl9rZnVuY19jYWxsX2FyZ19tZXRhICptZXRhLFxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMTkxNC1cXHRcXHRcXHQgICAgaW50IGluc25faWR4KVxcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jPTEyODk4PXN0YXRpYyBpbnQgY2hlY2tfa2Z1bmNfY2FsbChzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBzdHJ1Y3QgYnBmX2luc24gKmluc24sXFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTI5NzQtXFx0LyogQ2hlY2sgdGhlIGFyZ3VtZW50cyAqL1xcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxMjk3NTpcXHRlcnIgPSBjaGVja19rZnVuY19hcmdzKGVudiwgXFx1MDAyNm1ldGEsIGluc25faWR4KTtcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTI5NzYtXFx0aWYgKGVyciBcXHUwMDNjIDApXFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTMyNjEtXFx0XFx0ZWxzZVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxMzI2MjpcXHRcXHRcXHQvKiBzY2FsYXIuIGVuc3VyZWQgYnkgY2hlY2tfa2Z1bmNfYXJncygpICovXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTEzMjYzLVxcdFxcdFxcdG1hcmtfYnRmX2Z1bmNfcmVnX3NpemUoZW52LCByZWdubywgdC1cXHUwMDNlc2l6ZSk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTIzVDA2OjM2OjU0LjkwNDg1OTU0NFoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM2NjA5Mjc1MDIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgcHJlc2VudGVkIGluIHRoZSBmaXJzdCBwZXJzb246XG5cbioqS2VybmVsIENvbmZpZ3VyYXRpb24gRGVwZW5kZW5jaWVzKipcblxuQWxyaWdodCwgc28gSSdtIHRoaW5raW5nIGFib3V0IHRoZSBrZXJuZWwgY29uZmlndXJhdGlvbnMgcmVxdWlyZWQgZm9yIHRoaXMgcGFydGljdWxhciBCUEYgcHJvZ3JhbS4gSXQncyBjbGVhciB0aGF0IHdlJ2xsIGRlZmluaXRlbHkgbmVlZCBgQlBGX1NZU0NBTExgIOKAkyB0aGF0J3MgYSBnaXZlbiwgc2luY2Ugd2UncmUgaW50ZXJhY3Rpbmcgd2l0aCBzeXNjYWxscy4gQnV0LCBiZWNhdXNlIGl0IHJlbGllcyBvbiBCVEYgSURzLCBJJ20gZ29pbmcgdG8gd2FudCB0byB2ZXJpZnkgdGhhdCBgREVCVUdfSU5GT19CVEZgIGlzIGFsc28gZW5hYmxlZC4gVGhhdCdzIHByYWN0aWNhbGx5IGEgcHJlcmVxdWlzaXRlIGlmIHdlIHdhbnQgc3ltYm9sIGluZm9ybWF0aW9uIGFuZCB0eXBlIGluZm9ybWF0aW9uLiBJJ20gaW1hZ2luaW5nIGl0J2QgYmUgcXVpdGUgZGlmZmljdWx0IHRvIHdvcmsgd2l0aCB3aXRob3V0IGl0LlxuXG5Ob3csIGJlZm9yZSBJIHByb2NlZWQgdG9vIGZhciBkb3duIHRoZSBpbXBsZW1lbnRhdGlvbiBwYXRoLCBJIHNob3VsZCByZWFsbHkgY2hlY2sgaWYgdGhlcmUgYXJlIGFueSBzcGVjaWZpYyBrZXJuZWwgY29uZmlndXJhdGlvbnMgb3IgYnVpbGQgZmxhZ3MgcmVsYXRlZCB0byB0aGUgYGJwZl9yZWZjb3VudF9hY3F1aXJlYCBmdW5jdGlvbiBpdHNlbGYuIEkgc2hvdWxkIGNoZWNrIGlmIHRoZXJlJ3MgYW55IHNwZWNpYWxpemVkIGNvbmZpZ3VyYXRpb24gdGhhdCBuZWVkcyB0byBiZSBjb25zaWRlcmVkIHRvIHVzZSB0aGF0IHBhcnRpY3VsYXIgZnVuY3Rpb24uIEkgbmVlZCB0byBtYWtlIHN1cmUgSSBoYXZlbid0IG1pc3NlZCBhbnl0aGluZyBvYnZpb3VzLiBJJ2xsIG5lZWQgdG8gZG8gc29tZSBkaWdnaW5nIHRvIG1ha2Ugc3VyZSBJIGhhdmVuJ3QgbWlzc2VkIGFueSBzcGVjaWFsaXplZCwgb3IgcG9zc2libHkgZXZlbiBoaWRkZW4sIGNvbmZpZ3VyYXRpb24gb3B0aW9ucy5cblxuXG4iLCJJbnB1dFRva2VucyI6NTA3MSwiT3V0cHV0VG9rZW5zIjoyMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQ5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTIzVDA2OjM2OjU4LjU2NTc4OTA1NloiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxOTE0NTgwMTc5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImJwZl9yZWZjb3VudF9hY3F1aXJlXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImluY2x1ZGUvbGludXgvYnBmX3ZlcmlmaWVyLmg9MTQ0MT1zdHJ1Y3QgYnBmX2tmdW5jX2NhbGxfYXJnX21ldGEge1xcbi0tXFxuaW5jbHVkZS9saW51eC9icGZfdmVyaWZpZXIuaC0xNDYzLVxcdCAqICAgICBSZWNvcmQgdGhlIGxvY2FsIGtwdHIgdHlwZSB0byBiZSBkcm9wJ2RcXG5pbmNsdWRlL2xpbnV4L2JwZl92ZXJpZmllci5oOjE0NjQ6XFx0ICogICBicGZfcmVmY291bnRfYWNxdWlyZSAodmlhIEtGX0FSR19QVFJfVE9fUkVGQ09VTlRFRF9LUFRSIGFyZyB0eXBlKVxcbmluY2x1ZGUvbGludXgvYnBmX3ZlcmlmaWVyLmgtMTQ2NS1cXHQgKiAgICAgUmVjb3JkIHRoZSBsb2NhbCBrcHRyIHR5cGUgdG8gYmUgcmVmY291bnRfaW5jcidkIGFuZCB1c2VcXG4tLVxcbmtlcm5lbC9icGYvaGVscGVycy5jPTI0NDk9X19icGZfa2Z1bmMgdm9pZCBicGZfcGVyY3B1X29ial9kcm9wX2ltcGwodm9pZCAqcF9fYWxsb2MsIHZvaWQgKm1ldGFfX2lnbilcXG4tLVxcbmtlcm5lbC9icGYvaGVscGVycy5jLTI0NTQtLyoqXFxua2VybmVsL2JwZi9oZWxwZXJzLmM6MjQ1NTogKiBicGZfcmVmY291bnRfYWNxdWlyZSgpIC0gdHVybiBhIGxvY2FsIGtwdHIgaW50byBhbiBvd25pbmcgcmVmZXJlbmNlXFxua2VybmVsL2JwZi9oZWxwZXJzLmMtMjQ1Ni0gKiBAcF9fcmVmY291bnRlZF9rcHRyOiBub24tb3duaW5nIGxvY2FsIGtwdHJcXG4tLVxcbmtlcm5lbC9icGYvaGVscGVycy5jLTI0NjMtICovXFxua2VybmVsL2JwZi9oZWxwZXJzLmM6MjQ2NDpfX2JwZl9rZnVuYyB2b2lkICpicGZfcmVmY291bnRfYWNxdWlyZSh2b2lkICpwX19yZWZjb3VudGVkX2twdHIsIHN0cnVjdCBidGZfc3RydWN0X21ldGEgKm1ldGEpXFxua2VybmVsL2JwZi9oZWxwZXJzLmMtMjQ2NS17XFxuLS1cXG5rZXJuZWwvYnBmL2hlbHBlcnMuYy0yNDgwLVxcbmtlcm5lbC9icGYvaGVscGVycy5jOjI0ODE6X19icGZfa2Z1bmMgdm9pZCAqYnBmX3JlZmNvdW50X2FjcXVpcmVfaW1wbCh2b2lkICpwX19yZWZjb3VudGVkX2twdHIsIHZvaWQgKm1ldGFfX2lnbilcXG5rZXJuZWwvYnBmL2hlbHBlcnMuYy0yNDgyLXtcXG5rZXJuZWwvYnBmL2hlbHBlcnMuYzoyNDgzOlxcdHJldHVybiBicGZfcmVmY291bnRfYWNxdWlyZShwX19yZWZjb3VudGVkX2twdHIsIG1ldGFfX2lnbik7XFxua2VybmVsL2JwZi9oZWxwZXJzLmMtMjQ4NC19XFxuLS1cXG5rZXJuZWwvYnBmL2hlbHBlcnMuYz00ODEzPUJURl9JRF9GTEFHUyhmdW5jLCBicGZfcGVyY3B1X29ial9kcm9wX2ltcGwsIEtGX1JFTEVBU0UpXFxua2VybmVsL2JwZi9oZWxwZXJzLmM6NDgxNDpCVEZfSURfRkxBR1MoZnVuYywgYnBmX3JlZmNvdW50X2FjcXVpcmUsIEtGX0FDUVVJUkUgfCBLRl9SRVRfTlVMTCB8IEtGX1JDVSB8IEtGX0lNUExJQ0lUX0FSR1MpXFxua2VybmVsL2JwZi9oZWxwZXJzLmM6NDgxNTpCVEZfSURfRkxBR1MoZnVuYywgYnBmX3JlZmNvdW50X2FjcXVpcmVfaW1wbCwgS0ZfQUNRVUlSRSB8IEtGX1JFVF9OVUxMIHwgS0ZfUkNVKVxcbmtlcm5lbC9icGYvaGVscGVycy5jLTQ4MTYtQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9saXN0X3B1c2hfZnJvbnQsIEtGX0lNUExJQ0lUX0FSR1MpXFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9MTA5ODk9ZW51bSBzcGVjaWFsX2tmdW5jX3R5cGUge1xcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTEwOTkzLVxcdEtGX2JwZl9vYmpfZHJvcCxcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTA5OTQ6XFx0S0ZfYnBmX3JlZmNvdW50X2FjcXVpcmVfaW1wbCxcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTA5OTU6XFx0S0ZfYnBmX3JlZmNvdW50X2FjcXVpcmUsXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTEwOTk2LVxcdEtGX2JwZl9saXN0X3B1c2hfZnJvbnRfaW1wbCxcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYz0xMTA2Nj1CVEZfSUQoZnVuYywgYnBmX29ial9kcm9wKVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxMTA2NzpCVEZfSUQoZnVuYywgYnBmX3JlZmNvdW50X2FjcXVpcmVfaW1wbClcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTEwNjg6QlRGX0lEKGZ1bmMsIGJwZl9yZWZjb3VudF9hY3F1aXJlKVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMTA2OS1CVEZfSUQoZnVuYywgYnBmX2xpc3RfcHVzaF9mcm9udF9pbXBsKVxcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jPTExMTc2PXN0YXRpYyBib29sIGlzX2JwZl9wZXJjcHVfb2JqX2Ryb3Bfa2Z1bmModTMyIGZ1bmNfaWQpXFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTExODEtXFxua2VybmVsL2JwZi92ZXJpZmllci5jOjExMTgyOnN0YXRpYyBib29sIGlzX2JwZl9yZWZjb3VudF9hY3F1aXJlX2tmdW5jKHUzMiBmdW5jX2lkKVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMTE4My17XFxua2VybmVsL2JwZi92ZXJpZmllci5jOjExMTg0OlxcdHJldHVybiBmdW5jX2lkID09IHNwZWNpYWxfa2Z1bmNfbGlzdFtLRl9icGZfcmVmY291bnRfYWNxdWlyZV0gfHxcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTExODU6XFx0ICAgICAgIGZ1bmNfaWQgPT0gc3BlY2lhbF9rZnVuY19saXN0W0tGX2JwZl9yZWZjb3VudF9hY3F1aXJlX2ltcGxdO1xcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMTE4Ni19XFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9MTEyMDk9c3RhdGljIGJvb2wgaXNfa2Z1bmNfcmV0X251bGwoc3RydWN0IGJwZl9rZnVuY19jYWxsX2FyZ19tZXRhICptZXRhKVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMTIxMC17XFxua2VybmVsL2JwZi92ZXJpZmllci5jOjExMjExOlxcdGlmIChpc19icGZfcmVmY291bnRfYWNxdWlyZV9rZnVuYyhtZXRhLVxcdTAwM2VmdW5jX2lkKSBcXHUwMDI2XFx1MDAyNiBtZXRhLVxcdTAwM2Vhcmdfb3duaW5nX3JlZilcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTEyMTItXFx0XFx0cmV0dXJuIGZhbHNlO1xcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jPTExNjE3PXN0YXRpYyBib29sIGlzX2JwZl9ncmFwaF9hcGlfa2Z1bmModTMyIGJ0Zl9pZClcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMTYyMC1cXHQgICAgICAgaXNfYnBmX3JidHJlZV9hcGlfa2Z1bmMoYnRmX2lkKSB8fFxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxMTYyMTpcXHQgICAgICAgaXNfYnBmX3JlZmNvdW50X2FjcXVpcmVfa2Z1bmMoYnRmX2lkKTtcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTE2MjItfVxcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jPTEyNzI3PXN0YXRpYyBpbnQgY2hlY2tfc3BlY2lhbF9rZnVuYyhzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBzdHJ1Y3QgYnBmX2tmdW5jX2NhbGxfYXJnX21ldGEgKm1ldGEsXFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTI4MTUtXFx0XFx0aW5zbl9hdXgtXFx1MDAzZWtwdHJfc3RydWN0X21ldGEgPSBzdHJ1Y3RfbWV0YTtcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTI4MTY6XFx0fSBlbHNlIGlmIChpc19icGZfcmVmY291bnRfYWNxdWlyZV9rZnVuYyhtZXRhLVxcdTAwM2VmdW5jX2lkKSkge1xcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMjgxNy1cXHRcXHRtYXJrX3JlZ19rbm93bl96ZXJvKGVudiwgcmVncywgQlBGX1JFR18wKTtcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYz0xMjg5OD1zdGF0aWMgaW50IGNoZWNrX2tmdW5jX2NhbGwoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgc3RydWN0IGJwZl9pbnNuICppbnNuLFxcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTEzMTE4LVxcdFxcdCAgICAgIWlzX2JwZl9wZXJjcHVfb2JqX25ld19rZnVuYyhtZXRhLmZ1bmNfaWQpIFxcdTAwMjZcXHUwMDI2XFxua2VybmVsL2JwZi92ZXJpZmllci5jOjEzMTE5OlxcdFxcdCAgICAgIWlzX2JwZl9yZWZjb3VudF9hY3F1aXJlX2tmdW5jKG1ldGEuZnVuY19pZCkpKSB7XFxua2VybmVsL2JwZi92ZXJpZmllci5jLTEzMTIwLVxcdFxcdFxcdHZlcmJvc2UoZW52LCBcXFwiYWNxdWlyZSBrZXJuZWwgZnVuY3Rpb24gZG9lcyBub3QgcmV0dXJuIFBUUl9UT19CVEZfSURcXFxcblxcXCIpO1xcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jPTE5NTc0PWludCBicGZfZml4dXBfa2Z1bmNfY2FsbChzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBzdHJ1Y3QgYnBmX2luc24gKmluc24sXFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTk2MjItXFx0XFx0ICAgaXNfYnBmX3BlcmNwdV9vYmpfZHJvcF9rZnVuYyhkZXNjLVxcdTAwM2VmdW5jX2lkKSB8fFxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxOTYyMzpcXHRcXHQgICBpc19icGZfcmVmY291bnRfYWNxdWlyZV9rZnVuYyhkZXNjLVxcdTAwM2VmdW5jX2lkKSkge1xcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xOTYyNC1cXHRcXHRzdHJ1Y3QgYnRmX3N0cnVjdF9tZXRhICprcHRyX3N0cnVjdF9tZXRhID0gZW52LVxcdTAwM2VpbnNuX2F1eF9kYXRhW2luc25faWR4XS5rcHRyX3N0cnVjdF9tZXRhO1xcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTE5NjMyLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxOTYzMzpcXHRcXHRpZiAoaXNfYnBmX3JlZmNvdW50X2FjcXVpcmVfa2Z1bmMoZGVzYy1cXHUwMDNlZnVuY19pZCkgXFx1MDAyNlxcdTAwMjYgIWtwdHJfc3RydWN0X21ldGEpIHtcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTk2MzQtXFx0XFx0XFx0dmVyaWZpZXJfYnVnKGVudiwgXFxcImtwdHJfc3RydWN0X21ldGEgZXhwZWN0ZWQgYXQgaW5zbl9pZHggJWRcXFwiLFxcbi0tXFxudG9vbHMvc2NoZWRfZXh0L2luY2x1ZGUvc2N4L2NvbW1vbi5icGYuaD0zODQ9c3RydWN0IGJwZl9yYl9ub2RlICpicGZfcmJ0cmVlX2ZpcnN0KHN0cnVjdCBicGZfcmJfcm9vdCAqcm9vdCkgX19rc3ltO1xcbnRvb2xzL3NjaGVkX2V4dC9pbmNsdWRlL3NjeC9jb21tb24uYnBmLmgtMzg1LVxcbnRvb2xzL3NjaGVkX2V4dC9pbmNsdWRlL3NjeC9jb21tb24uYnBmLmg6Mzg2OnZvaWQgKmJwZl9yZWZjb3VudF9hY3F1aXJlX2ltcGwodm9pZCAqa3B0ciwgdm9pZCAqbWV0YSkgX19rc3ltO1xcbnRvb2xzL3NjaGVkX2V4dC9pbmNsdWRlL3NjeC9jb21tb24uYnBmLmg6Mzg3OiNkZWZpbmUgYnBmX3JlZmNvdW50X2FjcXVpcmUoa3B0cikgYnBmX3JlZmNvdW50X2FjcXVpcmVfaW1wbChrcHRyLCBOVUxMKVxcbnRvb2xzL3NjaGVkX2V4dC9pbmNsdWRlL3NjeC9jb21tb24uYnBmLmgtMzg4LVxcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2JwZl9xZGlzY19mcS5jPTMwMz1pbnQgQlBGX1BST0coYnBmX2ZxX2VucXVldWUsIHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBRZGlzYyAqc2NoLFxcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2JwZl9xZGlzY19mcS5jLTM0NC1cXHRcXHRpZiAoZnFfZmxvd19pc19kZXRhY2hlZChmbG93KSkge1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9icGZfcWRpc2NfZnEuYzozNDU6XFx0XFx0XFx0Zmxvd19jb3B5ID0gYnBmX3JlZmNvdW50X2FjcXVpcmUoZmxvdyk7XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2JwZl9xZGlzY19mcS5jLTM0Ni1cXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9sb2NhbF9rcHRyX3N0YXNoLmM9MjM0PWxvbmcgcmVmY291bnRfYWNxdWlyZV93aXRob3V0X3Vuc3Rhc2godm9pZCAqY3R4KVxcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2xvY2FsX2twdHJfc3Rhc2guYy0yNDktXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2xvY2FsX2twdHJfc3Rhc2guYzoyNTA6XFx0cCA9IGJwZl9yZWZjb3VudF9hY3F1aXJlKHMtXFx1MDAzZXN0YXNoZWQpO1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9sb2NhbF9rcHRyX3N0YXNoLmMtMjUxLVxcdGlmICghcClcXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9yYnRyZWVfc2VhcmNoLmM9NTM9bG9uZyByYnRyZWVfc2VhcmNoKHZvaWQgKmN0eClcXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9yYnRyZWVfc2VhcmNoLmMtNjQtXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3JidHJlZV9zZWFyY2guYzo2NTpcXHRcXHRtID0gYnBmX3JlZmNvdW50X2FjcXVpcmUobik7XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3JidHJlZV9zZWFyY2guYy02Ni1cXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9yYnRyZWVfc2VhcmNoLmMtMTA4LVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9yYnRyZWVfc2VhcmNoLmM6MTA5OlxcdG0gPSBicGZfcmVmY291bnRfYWNxdWlyZShuKTtcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvcmJ0cmVlX3NlYXJjaC5jLTExMC1cXHRicGZfc3Bpbl91bmxvY2soXFx1MDAyNmdsb2NrMCk7XFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvcmJ0cmVlX3NlYXJjaC5jPTE1Nj1sb25nIHRlc3RfIyNvcCMjX3NwaW5sb2NrXyMjZG9sb2NrKHZvaWQgKmN0eClcXHRcXHRcXFxcXFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvcmJ0cmVlX3NlYXJjaC5jLTE2OC1cXHRuID0gcmJfZW50cnkocmJfbiwgc3RydWN0IG5vZGVfZGF0YSwgcjApO1xcdFxcXFxcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvcmJ0cmVlX3NlYXJjaC5jOjE2OTpcXHRuID0gYnBmX3JlZmNvdW50X2FjcXVpcmUobik7XFx0XFx0XFx0XFxcXFxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9yYnRyZWVfc2VhcmNoLmMtMTcwLVxcdGJwZl9zcGluX3VubG9jayhcXHUwMDI2Z2xvY2swKTtcXHRcXHRcXHRcXFxcXFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvcmJ0cmVlX3NlYXJjaF9rcHRyLmM9MTU1PWxvbmcgcmJ0cmVlX3NlYXJjaF9rcHRyX3JlZih2b2lkICpjdHgpXFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvcmJ0cmVlX3NlYXJjaF9rcHRyLmMtMTgyLVxcdFxcdC8qIFVudXNlZCByZWZlcmVuY2UgKi9cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvcmJ0cmVlX3NlYXJjaF9rcHRyLmM6MTgzOlxcdFxcdHRub2RlX20gPSBicGZfcmVmY291bnRfYWNxdWlyZSh0bm9kZV9yKTtcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvcmJ0cmVlX3NlYXJjaF9rcHRyLmMtMTg0LVxcdFxcdGlmICghdG5vZGVfbSlcXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9yZWZjb3VudGVkX2twdHIuYz03Mz1zdGF0aWMgbG9uZyBfX2luc2VydF9pbl90cmVlX2FuZF9saXN0KHN0cnVjdCBicGZfbGlzdF9oZWFkICpoZWFkLFxcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3JlZmNvdW50ZWRfa3B0ci5jLTgyLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9yZWZjb3VudGVkX2twdHIuYzo4MzpcXHRtID0gYnBmX3JlZmNvdW50X2FjcXVpcmUobik7XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3JlZmNvdW50ZWRfa3B0ci5jLTg0LVxcdG0tXFx1MDAzZWtleSA9IDEyMztcXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9yZWZjb3VudGVkX2twdHIuYz0xMDY9c3RhdGljIGxvbmcgX19zdGFzaF9tYXBfaW5zZXJ0X3RyZWUoaW50IGlkeCwgaW50IHZhbCwgc3RydWN0IGJwZl9yYl9yb290ICpyb290LFxcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3JlZmNvdW50ZWRfa3B0ci5jLTEyMC1cXHRuLVxcdTAwM2VrZXkgPSB2YWw7XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3JlZmNvdW50ZWRfa3B0ci5jOjEyMTpcXHRtID0gYnBmX3JlZmNvdW50X2FjcXVpcmUobik7XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3JlZmNvdW50ZWRfa3B0ci5jLTEyMi1cXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9yZWZjb3VudGVkX2twdHIuYz0zOTk9c3RhdGljIHN0cnVjdCBub2RlX2RhdGEgKl9fYWRkX2luX2xpc3Qoc3RydWN0IGJwZl9saXN0X2hlYWQgKmhlYWQsXFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvcmVmY291bnRlZF9rcHRyLmMtNDA3LVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9yZWZjb3VudGVkX2twdHIuYzo0MDg6XFx0bm9kZV9yZWYgPSBicGZfcmVmY291bnRfYWNxdWlyZShub2RlX25ldyk7XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3JlZmNvdW50ZWRfa3B0ci5jLTQwOS1cXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9yZWZjb3VudGVkX2twdHIuYz03OTM9bG9uZyByYnRyZWVfcmVmY291bnRlZF9ub2RlX3JlZl9lc2NhcGVzKHZvaWQgKmN0eClcXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9yZWZjb3VudGVkX2twdHIuYy04MDItXFx0YnBmX3JidHJlZV9hZGQoXFx1MDAyNmFyb290LCBcXHUwMDI2bi1cXHUwMDNlbm9kZSwgbGVzc19hKTtcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvcmVmY291bnRlZF9rcHRyLmM6ODAzOlxcdG0gPSBicGZfcmVmY291bnRfYWNxdWlyZShuKTtcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvcmVmY291bnRlZF9rcHRyLmMtODA0LVxcdGJwZl9zcGluX3VubG9jayhcXHUwMDI2YWxvY2spO1xcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3JlZmNvdW50ZWRfa3B0ci5jPTgxNT1sb25nIHJidHJlZV9yZWZjb3VudGVkX25vZGVfcmVmX2VzY2FwZXNfb3duaW5nX2lucHV0KHZvaWQgKmN0eClcXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9yZWZjb3VudGVkX2twdHIuYy04MjItXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3JlZmNvdW50ZWRfa3B0ci5jOjgyMzpcXHRtID0gYnBmX3JlZmNvdW50X2FjcXVpcmUobik7XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3JlZmNvdW50ZWRfa3B0ci5jLTgyNC1cXHRtLVxcdTAwM2VrZXkgPSAyO1xcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3JlZmNvdW50ZWRfa3B0ci5jPTg1Mj1sb25nIHJidHJlZV93cm9uZ19vd25lcl9yZW1vdmVfZmFpbF9hMSh2b2lkICpjdHgpXFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvcmVmY291bnRlZF9rcHRyLmMtODU4LVxcdFxcdHJldHVybiAxO1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9yZWZjb3VudGVkX2twdHIuYzo4NTk6XFx0bSA9IGJwZl9yZWZjb3VudF9hY3F1aXJlKG4pO1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9yZWZjb3VudGVkX2twdHIuYy04NjAtXFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvcmVmY291bnRlZF9rcHRyLmM9MTAwMj1zdGF0aWMgaW50IF9faW5zZXJ0X2luX2xpc3Qoc3RydWN0IGJwZl9saXN0X2hlYWQgKmhlYWQsIHN0cnVjdCBicGZfc3Bpbl9sb2NrICpsb2NrLFxcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3JlZmNvdW50ZWRfa3B0ci5jLTEwMTAtXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3JlZmNvdW50ZWRfa3B0ci5jOjEwMTE6XFx0bm9kZV9yZWYgPSBicGZfcmVmY291bnRfYWNxdWlyZShub2RlX25ldyk7XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3JlZmNvdW50ZWRfa3B0ci5jLTEwMTItXFx0bm9kZV9vbGQgPSBicGZfa3B0cl94Y2hnKG5vZGUsIG5vZGVfbmV3KTtcXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9yZWZjb3VudGVkX2twdHJfZmFpbC5jPTQ0PWxvbmcgcmJ0cmVlX3JlZmNvdW50ZWRfbm9kZV9yZWZfZXNjYXBlcyh2b2lkICpjdHgpXFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvcmVmY291bnRlZF9rcHRyX2ZhaWwuYy01NC1cXHQvKiBtIGJlY29tZXMgYW4gb3duaW5nIHJlZiBidXQgaXMgbmV2ZXIgZHJvcCdkIG9yIGFkZGVkIHRvIGEgdHJlZSAqL1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9yZWZjb3VudGVkX2twdHJfZmFpbC5jOjU1OlxcdG0gPSBicGZfcmVmY291bnRfYWNxdWlyZShuKTtcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvcmVmY291bnRlZF9rcHRyX2ZhaWwuYy01Ni1cXHRicGZfc3Bpbl91bmxvY2soXFx1MDAyNmdsb2NrKTtcXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9yZWZjb3VudGVkX2twdHJfZmFpbC5jPTY2PWxvbmcgcmVmY291bnRfYWNxdWlyZV9tYXliZV9udWxsKHZvaWQgKmN0eClcXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9yZWZjb3VudGVkX2twdHJfZmFpbC5jLTczLVxcdCAqL1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9yZWZjb3VudGVkX2twdHJfZmFpbC5jOjc0OlxcdG0gPSBicGZfcmVmY291bnRfYWNxdWlyZShuKTtcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvcmVmY291bnRlZF9rcHRyX2ZhaWwuYy03NS1cXHRpZiAobSlcXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9yZWZjb3VudGVkX2twdHJfZmFpbC5jPTg1PWxvbmcgcmJ0cmVlX3JlZmNvdW50ZWRfbm9kZV9yZWZfZXNjYXBlc19vd25pbmdfaW5wdXQodm9pZCAqY3R4KVxcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3JlZmNvdW50ZWRfa3B0cl9mYWlsLmMtOTMtXFx0LyogbSBiZWNvbWVzIGFuIG93bmluZyByZWYgYnV0IGlzIG5ldmVyIGRyb3AnZCBvciBhZGRlZCB0byBhIHRyZWUgKi9cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvcmVmY291bnRlZF9rcHRyX2ZhaWwuYzo5NDpcXHRtID0gYnBmX3JlZmNvdW50X2FjcXVpcmUobik7XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3JlZmNvdW50ZWRfa3B0cl9mYWlsLmMtOTUtXFx0bS1cXHUwMDNla2V5ID0gMjtcXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9yZWZjb3VudGVkX2twdHJfZmFpbC5jPTEwNj1sb25nIHJlZmNvdW50X2FjcXVpcmVfbGlzdF9ub2RlX29mZnNldCh2b2lkICpjdHgpXFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvcmVmY291bnRlZF9rcHRyX2ZhaWwuYy0xMjItXFx0YmFzZSA9IGNvbnRhaW5lcl9vZihsaXN0X25vZGUsIHN0cnVjdCBub2RlX3JlZmNvdW50ZWQsIGxpc3QpO1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9yZWZjb3VudGVkX2twdHJfZmFpbC5jOjEyMzpcXHRyZWYgPSBicGZfcmVmY291bnRfYWNxdWlyZShsaXN0X25vZGUpO1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9yZWZjb3VudGVkX2twdHJfZmFpbC5jLTEyNC1cXHRpZiAocmVmKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yM1QwNjozNzowMC40ODAzNzQ4NDVaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0OTMwNjM1NjE1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFzc2Vzc21lbnQgb2YgdGhlIEJQRiBWZXJpZmllciBDaGFuZ2UqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoLiBNeSBpbW1lZGlhdGUgZm9jdXMgaXMgb24gdGhlIGNvbmZpZ3VyYXRpb25zOiBgQ09ORklHX0JQRl9TWVNDQUxMYCBhbmQgYENPTkZJR19ERUJVR19JTkZPX0JURmAuIFRoZXNlIGFyZSBjcnVjaWFsIGNvbnRleHQgaW5kaWNhdG9ycyDigJMgdGhleSB0ZWxsIG1lIHdoYXQgcGFydHMgb2YgdGhlIEJQRiBlY29zeXN0ZW0gdGhpcyBpcyB0b3VjaGluZy4gR2l2ZW4gdGhlIG5hdHVyZSBvZiB0aGUgY2hhbmdlLCBJJ20gYWxyZWFkeSBpbmNsaW5lZCB0byBtYXJrIGl0IGFzIGBXb3J0aEZ1enppbmdgLiBUaGlzIGlzIGRlZmluaXRlbHkgc29tZXRoaW5nIHRoYXQgbmVlZHMgdGhvcm91Z2ggc2NydXRpbnkuXG5cblRoZSBoZWFydCBvZiB0aGUgY2hhbmdlIHJldm9sdmVzIGFyb3VuZCB0aGUgQlBGIHZlcmlmaWVyJ3MgaGFuZGxpbmcgb2YgcG9pbnRlcnMgcGFzc2VkIHRvIGtmdW5jcywgc3BlY2lmaWNhbGx5IHRob3NlIGV4cGVjdGluZyBgS0ZfQVJHX1BUUl9UT19SRUZDT1VOVEVEX0tQVFJgLiBUaGUgcGF0Y2ggc2VlbXMgdG8gYmUgaW50cm9kdWNpbmcgYSBzdHJpY3RlciBjaGVjaywgcmVqZWN0aW5nIG1vZGlmaWVkIHBvaW50ZXJzIOKAkyBtZWFuaW5nIHRob3NlIHdpdGggYSBub24temVybyBmaXhlZCBvZmZzZXQg4oCTIGluIHRoaXMgcGFydGljdWxhciBzY2VuYXJpby5cblxuSSBuZWVkIHRvIGRpZyBkZWVwZXIsIGJ1dCBteSBpbml0aWFsIHRob3VnaHQgaXMgdGhhdCB0aGlzIGlzIGEgZnVuY3Rpb25hbCBtb2RpZmljYXRpb24gdG8gdGhlIHZlcmlmaWVyIGxvZ2ljLiBJJ2xsIGJlIGZvY3VzaW5nIG15IGF0dGVudGlvbiBvbiBgY2hlY2tfa2Z1bmNfYXJnc2AgYW5kIGBfX2NoZWNrX2Z1bmNfYXJnX3JlZ19vZmZgIHRvIGdyYXNwIHRoZSBudWFuY2VzIG9mIHRoaXMgdGlnaHRlbmVkIGNoZWNrIGFuZCBpdHMgaW1wYWN0LiBUaGlzIGlzIHNvbWV0aGluZyB0aGF0IGNvdWxkIHBvdGVudGlhbGx5IGV4cG9zZSBzdWJ0bGUgYnV0IGltcG9ydGFudCBpc3N1ZXMsIHNvIGNhcmVmdWwgdGVzdGluZyBpcyBpbiBvcmRlci5cblxuXG4iLCJJbnB1dFRva2VucyI6MTAzNTcsIk91dHB1dFRva2VucyI6MTI1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTIyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTIzVDA2OjM3OjA1LjQxMTAxMjY4WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3NTMxMzQ0OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQlBGX1NZU0NBTExcIixcbiAgICBcIkRFQlVHX0lORk9fQlRGXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiY2hlY2tfa2Z1bmNfYXJnc1wiLFxuICAgIFwiX19jaGVja19mdW5jX2FyZ19yZWdfb2ZmXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIEJQRiB2ZXJpZmllciB0byByZWplY3QgcGFzc2luZyBhIG1vZGlmaWVkIHBvaW50ZXIgKHdpdGggbm9uLXplcm8gZml4ZWQgb2Zmc2V0KSB0byBhIGtmdW5jIGV4cGVjdGluZyBhIEtGX0FSR19QVFJfVE9fUkVGQ09VTlRFRF9LUFRSLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIEJQRiB2ZXJpZmllciBsb2dpYy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJCUEZfU1lTQ0FMTFwiLFxuICAgIFwiREVCVUdfSU5GT19CVEZcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJjaGVja19rZnVuY19hcmdzXCIsXG4gICAgXCJfX2NoZWNrX2Z1bmNfYXJnX3JlZ19vZmZcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgQlBGIHZlcmlmaWVyIHRvIHJlamVjdCBwYXNzaW5nIGEgbW9kaWZpZWQgcG9pbnRlciAod2l0aCBub24temVybyBmaXhlZCBvZmZzZXQpIHRvIGEga2Z1bmMgZXhwZWN0aW5nIGEgS0ZfQVJHX1BUUl9UT19SRUZDT1VOVEVEX0tQVFIuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgQlBGIHZlcmlmaWVyIGxvZ2ljLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowt8zdw[0].run-triage(0) Phase: Succeeded StartedAt: 2026-06-23 06:26:27 +0000 UTC FinishedAt: 2026-06-23 06:37:07 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "bpf-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git", "commit_hash": "a975094bf98ca97be9146f9d3b5681a6f9cf5ce3", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BPF_SYSCALL", "DEBUG_INFO_BTF" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "bpf-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git", "commit_hash": "a975094bf98ca97be9146f9d3b5681a6f9cf5ce3", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BPF_SYSCALL", "DEBUG_INFO_BTF" ], "series_id": "1b23a61d-fb92-4a8e-99a8-8ab90e1bc681" }, "track": "KASAN", "fuzz": { "focus": [ "bpf" ], "focus_symbols": [ "check_kfunc_args", "__check_func_arg_reg_off" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzIzIDA2OjM2PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JQRl9TWVNDQUxMJiMzNDssCiAgICAmIzM0O0RFQlVHX0lORk9fQlRGJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7Y2hlY2tfa2Z1bmNfYXJncyYjMzQ7LAogICAgJiMzNDtfX2NoZWNrX2Z1bmNfYXJnX3JlZ19vZmYmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIEJQRiB2ZXJpZmllciB0byByZWplY3QgcGFzc2luZyBhIG1vZGlmaWVkIHBvaW50ZXIgKHdpdGggbm9uLXplcm8gZml4ZWQgb2Zmc2V0KSB0byBhIGtmdW5jIGV4cGVjdGluZyBhIEtGX0FSR19QVFJfVE9fUkVGQ09VTlRFRF9LUFRSLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIEJQRiB2ZXJpZmllciBsb2dpYy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yMyAwNjozNjwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IGIxMzE5Y2Y4ZWE2NWRiOWEyMGE5MDkwMThmOWM4OGZhYzBkMjEyZTdcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVHVlIEp1biAyMyAwNjozNjo0NCAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9rZXJuZWwvYnBmL3ZlcmlmaWVyLmMgYi9rZXJuZWwvYnBmL3ZlcmlmaWVyLmNcbmluZGV4IDJhYmM3OWRiZjI4MWMyLi5mNjVlZmYyOGVjZDI1ZSAxMDA2NDRcbi0tLSBhL2tlcm5lbC9icGYvdmVyaWZpZXIuY1xuJiM0MzsmIzQzOyYjNDM7IGIva2VybmVsL2JwZi92ZXJpZmllci5jXG5AQCAtNzk5MCw5ICYjNDM7Nzk5MCwxMCBAQCByZWdfZmluZF9maWVsZF9vZmZzZXQoY29uc3Qgc3RydWN0IGJwZl9yZWdfc3RhdGUgKnJlZywgczMyIG9mZiwgdTMyIGZpZWxkcylcbiBcdHJldHVybiBmaWVsZDtcbiB9XG4gXG4tc3RhdGljIGludCBjaGVja19mdW5jX2FyZ19yZWdfb2ZmKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsXG4tXHRcdFx0XHQgIGNvbnN0IHN0cnVjdCBicGZfcmVnX3N0YXRlICpyZWcsIGFyZ25vX3QgYXJnbm8sXG4tXHRcdFx0XHQgIGVudW0gYnBmX2FyZ190eXBlIGFyZ190eXBlKVxuJiM0MztzdGF0aWMgaW50IF9fY2hlY2tfZnVuY19hcmdfcmVnX29mZihzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LFxuJiM0MztcdFx0XHRcdCAgICBjb25zdCBzdHJ1Y3QgYnBmX3JlZ19zdGF0ZSAqcmVnLCBhcmdub190IGFyZ25vLFxuJiM0MztcdFx0XHRcdCAgICBlbnVtIGJwZl9hcmdfdHlwZSBhcmdfdHlwZSxcbiYjNDM7XHRcdFx0XHQgICAgYm9vbCBidGZfaWRfZml4ZWRfb2ZmX29rKVxuIHtcbiBcdHUzMiB0eXBlID0gcmVnLVx1MDAzZXR5cGU7XG4gXG5AQCAtODA0OSwxMiAmIzQzOzgwNTAsMTEgQEAgc3RhdGljIGludCBjaGVja19mdW5jX2FyZ19yZWdfb2ZmKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsXG4gXHRjYXNlIFBUUl9UT19CVEZfSUQgfCBNRU1fQUxMT0MgfCBOT05fT1dOX1JFRiB8IE1FTV9SQ1U6XG4gXHRcdC8qIFdoZW4gcmVmZXJlbmNlZCBQVFJfVE9fQlRGX0lEIGlzIHBhc3NlZCB0byByZWxlYXNlIGZ1bmN0aW9uLFxuIFx0XHQgKiBpdHMgZml4ZWQgb2Zmc2V0IG11c3QgYmUgMC4gSW4gdGhlIG90aGVyIGNhc2VzLCBmaXhlZCBvZmZzZXRcbi1cdFx0ICogY2FuIGJlIG5vbi16ZXJvLiBUaGlzIHdhcyBhbHJlYWR5IGNoZWNrZWQgYWJvdmUuIFNvIHBhc3Ncbi1cdFx0ICogZml4ZWRfb2ZmX29rIGFzIHRydWUgdG8gYWxsb3cgZml4ZWQgb2Zmc2V0IGZvciBhbGwgb3RoZXJcbi1cdFx0ICogY2FzZXMuIHZhcl9vZmYgYWx3YXlzIG11c3QgYmUgMCBmb3IgUFRSX1RPX0JURl9JRCwgaGVuY2Ugd2Vcbi1cdFx0ICogc3RpbGwgbmVlZCB0byBkbyBjaGVja3MgaW5zdGVhZCBvZiByZXR1cm5pbmcuXG4mIzQzO1x0XHQgKiBjYW4gYmUgbm9uLXplcm8gdW5sZXNzIHRoZSBjYWxsZXIgcmVxdWlyZXMgb3RoZXJ3aXNlLlxuJiM0MztcdFx0ICogdmFyX29mZiBhbHdheXMgbXVzdCBiZSAwIGZvciBQVFJfVE9fQlRGX0lELCBoZW5jZSB3ZSBzdGlsbFxuJiM0MztcdFx0ICogbmVlZCB0byBkbyBjaGVja3MgaW5zdGVhZCBvZiByZXR1cm5pbmcuXG4gXHRcdCAqL1xuLVx0XHRyZXR1cm4gX19jaGVja19wdHJfb2ZmX3JlZyhlbnYsIHJlZywgYXJnbm8sIHRydWUpO1xuJiM0MztcdFx0cmV0dXJuIF9fY2hlY2tfcHRyX29mZl9yZWcoZW52LCByZWcsIGFyZ25vLCBidGZfaWRfZml4ZWRfb2ZmX29rKTtcbiBcdGNhc2UgUFRSX1RPX0NUWDpcbiBcdFx0LypcbiBcdFx0ICogQWxsb3cgZml4ZWQgYW5kIHZhcmlhYmxlIG9mZnNldHMgZm9yIHN5c2NhbGwgY29udGV4dCwgYnV0XG5AQCAtODA3MCw2ICYjNDM7ODA3MCwxMyBAQCBzdGF0aWMgaW50IGNoZWNrX2Z1bmNfYXJnX3JlZ19vZmYoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudixcbiBcdH1cbiB9XG4gXG4mIzQzO3N0YXRpYyBpbnQgY2hlY2tfZnVuY19hcmdfcmVnX29mZihzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LFxuJiM0MztcdFx0XHRcdCAgY29uc3Qgc3RydWN0IGJwZl9yZWdfc3RhdGUgKnJlZywgYXJnbm9fdCBhcmdubyxcbiYjNDM7XHRcdFx0XHQgIGVudW0gYnBmX2FyZ190eXBlIGFyZ190eXBlKVxuJiM0Mzt7XG4mIzQzO1x0cmV0dXJuIF9fY2hlY2tfZnVuY19hcmdfcmVnX29mZihlbnYsIHJlZywgYXJnbm8sIGFyZ190eXBlLCB0cnVlKTtcbiYjNDM7fVxuJiM0MztcbiBzdGF0aWMgaW50IGNoZWNrX2FyZ19jb25zdF9zdHIoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudixcbiBcdFx0XHQgICAgICAgc3RydWN0IGJwZl9yZWdfc3RhdGUgKnJlZywgYXJnbm9fdCBhcmdubylcbiB7XG5AQCAtMTE5NDEsNiAmIzQzOzExOTQ4LDcgQEAgc3RhdGljIGludCBjaGVja19rZnVuY19hcmdzKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIHN0cnVjdCBicGZfa2Z1bmNfY2FsbF9cbiBcdFx0ZW51bSBicGZfYXJnX3R5cGUgYXJnX3R5cGUgPSBBUkdfRE9OVENBUkU7XG4gXHRcdGFyZ25vX3QgYXJnbm8gPSBhcmdub19mcm9tX2FyZyhpICYjNDM7IDEpO1xuIFx0XHRpbnQgcmVnbm8gPSByZWdfZnJvbV9hcmdubyhhcmdubyk7XG4mIzQzO1x0XHRib29sIGJ0Zl9pZF9maXhlZF9vZmZfb2sgPSB0cnVlO1xuIFx0XHR1MzIgcmVmX2lkLCB0eXBlX3NpemU7XG4gXHRcdGJvb2wgaXNfcmV0X2J1Zl9zeiA9IGZhbHNlO1xuIFx0XHRpbnQga2ZfYXJnX3R5cGU7XG5AQCAtMTIxMTQsNyAmIzQzOzEyMTIyLDYgQEAgc3RhdGljIGludCBjaGVja19rZnVuY19hcmdzKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIHN0cnVjdCBicGZfa2Z1bmNfY2FsbF9cbiBcdFx0Y2FzZSBLRl9BUkdfUFRSX1RPX01FTTpcbiBcdFx0Y2FzZSBLRl9BUkdfUFRSX1RPX01FTV9TSVpFOlxuIFx0XHRjYXNlIEtGX0FSR19QVFJfVE9fQ0FMTEJBQ0s6XG4tXHRcdGNhc2UgS0ZfQVJHX1BUUl9UT19SRUZDT1VOVEVEX0tQVFI6XG4gXHRcdGNhc2UgS0ZfQVJHX1BUUl9UT19DT05TVF9TVFI6XG4gXHRcdGNhc2UgS0ZfQVJHX1BUUl9UT19XT1JLUVVFVUU6XG4gXHRcdGNhc2UgS0ZfQVJHX1BUUl9UT19USU1FUjpcbkBAIC0xMjEyOCw2ICYjNDM7MTIxMzUsMTAgQEAgc3RhdGljIGludCBjaGVja19rZnVuY19hcmdzKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIHN0cnVjdCBicGZfa2Z1bmNfY2FsbF9cbiBcdFx0Y2FzZSBLRl9BUkdfUFRSX1RPX0NUWDpcbiBcdFx0XHRhcmdfdHlwZSA9IEFSR19QVFJfVE9fQ1RYO1xuIFx0XHRcdGJyZWFrO1xuJiM0MztcdFx0Y2FzZSBLRl9BUkdfUFRSX1RPX1JFRkNPVU5URURfS1BUUjpcbiYjNDM7XHRcdFx0YXJnX3R5cGUgPSBBUkdfUFRSX1RPX0JURl9JRDtcbiYjNDM7XHRcdFx0YnRmX2lkX2ZpeGVkX29mZl9vayA9IGZhbHNlO1xuJiM0MztcdFx0XHRicmVhaztcbiBcdFx0ZGVmYXVsdDpcbiBcdFx0XHR2ZXJpZmllcl9idWcoZW52LCBcJiMzNDt1bmtub3duIGtmdW5jIGFyZyB0eXBlICVkXCYjMzQ7LCBrZl9hcmdfdHlwZSk7XG4gXHRcdFx0cmV0dXJuIC1FRkFVTFQ7XG5AQCAtMTIxMzUsNyAmIzQzOzEyMTQ2LDggQEAgc3RhdGljIGludCBjaGVja19rZnVuY19hcmdzKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIHN0cnVjdCBicGZfa2Z1bmNfY2FsbF9cbiBcbiBcdFx0aWYgKHJlZ25vID09IG1ldGEtXHUwMDNlcmVsZWFzZV9yZWdubylcbiBcdFx0XHRhcmdfdHlwZSB8PSBPQkpfUkVMRUFTRTtcbi1cdFx0cmV0ID0gY2hlY2tfZnVuY19hcmdfcmVnX29mZihlbnYsIHJlZywgYXJnbm8sIGFyZ190eXBlKTtcbiYjNDM7XHRcdHJldCA9IF9fY2hlY2tfZnVuY19hcmdfcmVnX29mZihlbnYsIHJlZywgYXJnbm8sIGFyZ190eXBlLFxuJiM0MztcdFx0XHRcdFx0ICAgICAgIGJ0Zl9pZF9maXhlZF9vZmZfb2spO1xuIFx0XHRpZiAocmV0IFx1MDAzYyAwKVxuIFx0XHRcdHJldHVybiByZXQ7XG4gXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3JlZmNvdW50ZWRfa3B0cl9mYWlsLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvcmVmY291bnRlZF9rcHRyX2ZhaWwuY1xuaW5kZXggNzI0N2EyMGMwYTNiZjUuLjAyNGVmMmFhZTIwMDgyIDEwMDY0NFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3JlZmNvdW50ZWRfa3B0cl9mYWlsLmNcbiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9yZWZjb3VudGVkX2twdHJfZmFpbC5jXG5AQCAtMTMsMTIgJiM0MzsxMywyMCBAQCBzdHJ1Y3Qgbm9kZV9hY3F1aXJlIHtcbiBcdHN0cnVjdCBicGZfcmVmY291bnQgcmVmY291bnQ7XG4gfTtcbiBcbiYjNDM7c3RydWN0IG5vZGVfcmVmY291bnRlZCB7XG4mIzQzO1x0bG9uZyBrZXk7XG4mIzQzO1x0c3RydWN0IGJwZl9saXN0X25vZGUgbGlzdDtcbiYjNDM7XHRzdHJ1Y3QgYnBmX3JlZmNvdW50IHJlZmNvdW50O1xuJiM0Mzt9O1xuJiM0MztcbiBleHRlcm4gdm9pZCBicGZfcmN1X3JlYWRfbG9jayh2b2lkKSBfX2tzeW07XG4gZXh0ZXJuIHZvaWQgYnBmX3JjdV9yZWFkX3VubG9jayh2b2lkKSBfX2tzeW07XG4gXG4gI2RlZmluZSBwcml2YXRlKG5hbWUpIFNFQyhcJiMzNDsuZGF0YS5cJiMzNDsgI25hbWUpIF9faGlkZGVuIF9fYXR0cmlidXRlX18oKGFsaWduZWQoOCkpKVxuIHByaXZhdGUoQSkgc3RydWN0IGJwZl9zcGluX2xvY2sgZ2xvY2s7XG4gcHJpdmF0ZShBKSBzdHJ1Y3QgYnBmX3JiX3Jvb3QgZ3Jvb3QgX19jb250YWlucyhub2RlX2FjcXVpcmUsIG5vZGUpO1xuJiM0Mztwcml2YXRlKEIpIHN0cnVjdCBicGZfc3Bpbl9sb2NrIGxvY2s7XG4mIzQzO3ByaXZhdGUoQikgc3RydWN0IGJwZl9saXN0X2hlYWQgaGVhZCBfX2NvbnRhaW5zKG5vZGVfcmVmY291bnRlZCwgbGlzdCk7XG4gXG4gc3RhdGljIGJvb2wgbGVzcyhzdHJ1Y3QgYnBmX3JiX25vZGUgKmEsIGNvbnN0IHN0cnVjdCBicGZfcmJfbm9kZSAqYilcbiB7XG5AQCAtOTMsNiAmIzQzOzEwMSwzMiBAQCBsb25nIHJidHJlZV9yZWZjb3VudGVkX25vZGVfcmVmX2VzY2FwZXNfb3duaW5nX2lucHV0KHZvaWQgKmN0eClcbiBcdHJldHVybiAwO1xuIH1cbiBcbiYjNDM7U0VDKFwmIzM0Oz90Y1wmIzM0OylcbiYjNDM7X19mYWlsdXJlIF9fbXNnKFwmIzM0O2RlcmVmZXJlbmNlIG9mIG1vZGlmaWVkIHB0cl8gcHRyIFIxXCYjMzQ7KVxuJiM0Mztsb25nIHJlZmNvdW50X2FjcXVpcmVfbGlzdF9ub2RlX29mZnNldCh2b2lkICpjdHgpXG4mIzQzO3tcbiYjNDM7XHRzdHJ1Y3Qgbm9kZV9yZWZjb3VudGVkICpub2RlLCAqYmFzZSwgKnJlZjtcbiYjNDM7XHRzdHJ1Y3QgYnBmX2xpc3Rfbm9kZSAqbGlzdF9ub2RlO1xuJiM0MztcbiYjNDM7XHRub2RlID0gYnBmX29ial9uZXcodHlwZW9mKCpub2RlKSk7XG4mIzQzO1x0aWYgKCFub2RlKVxuJiM0MztcdFx0cmV0dXJuIDE7XG4mIzQzO1xuJiM0MztcdGJwZl9zcGluX2xvY2soXHUwMDI2bG9jayk7XG4mIzQzO1x0YnBmX2xpc3RfcHVzaF9mcm9udChcdTAwMjZoZWFkLCBcdTAwMjZub2RlLVx1MDAzZWxpc3QpO1xuJiM0MztcdGxpc3Rfbm9kZSA9IGJwZl9saXN0X3BvcF9mcm9udChcdTAwMjZoZWFkKTtcbiYjNDM7XHRicGZfc3Bpbl91bmxvY2soXHUwMDI2bG9jayk7XG4mIzQzO1x0aWYgKCFsaXN0X25vZGUpXG4mIzQzO1x0XHRyZXR1cm4gMjtcbiYjNDM7XG4mIzQzO1x0YmFzZSA9IGNvbnRhaW5lcl9vZihsaXN0X25vZGUsIHN0cnVjdCBub2RlX3JlZmNvdW50ZWQsIGxpc3QpO1xuJiM0MztcdHJlZiA9IGJwZl9yZWZjb3VudF9hY3F1aXJlKGxpc3Rfbm9kZSk7XG4mIzQzO1x0aWYgKHJlZilcbiYjNDM7XHRcdGJwZl9vYmpfZHJvcChyZWYpO1xuJiM0MztcdGJwZl9vYmpfZHJvcChiYXNlKTtcbiYjNDM7XHRyZXR1cm4gMDtcbiYjNDM7fVxuJiM0MztcbiBTRUMoXCYjMzQ7P2ZlbnRyeS5zL1wmIzM0OyBTWVNfUFJFRklYIFwmIzM0O3N5c19nZXRwZ2lkXCYjMzQ7KVxuIF9fZmFpbHVyZSBfX21zZyhcJiMzNDtmdW5jdGlvbiBjYWxscyBhcmUgbm90IGFsbG93ZWQgd2hpbGUgaG9sZGluZyBhIGxvY2tcJiMzNDspXG4gaW50IEJQRl9QUk9HKHJidHJlZV9mYWlsX3NsZWVwYWJsZV9sb2NrX2Fjcm9zc19yY3UsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjMgMDY6MzY8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7QlBGX1NZU0NBTEwmIzM0OywKICAgICYjMzQ7REVCVUdfSU5GT19CVEYmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtjaGVja19rZnVuY19hcmdzJiMzNDssCiAgICAmIzM0O19fY2hlY2tfZnVuY19hcmdfcmVnX29mZiYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgQlBGIHZlcmlmaWVyIHRvIHJlamVjdCBwYXNzaW5nIGEgbW9kaWZpZWQgcG9pbnRlciAod2l0aCBub24temVybyBmaXhlZCBvZmZzZXQpIHRvIGEga2Z1bmMgZXhwZWN0aW5nIGEgS0ZfQVJHX1BUUl9UT19SRUZDT1VOVEVEX0tQVFIuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgQlBGIHZlcmlmaWVyIGxvZ2ljLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdAogICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksCiAgIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCBiMTMxOWNmOGVhNjVkYjlhMjBhOTA5MDE4ZjljODhmYWMwZDIxMmU3CkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFR1ZSBKdW4gMjMgMDY6MzY6NDQgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9rZXJuZWwvYnBmL3ZlcmlmaWVyLmMgYi9rZXJuZWwvYnBmL3ZlcmlmaWVyLmMKaW5kZXggMmFiYzc5ZGJmMjgxYzIuLmY2NWVmZjI4ZWNkMjVlIDEwMDY0NAotLS0gYS9rZXJuZWwvYnBmL3ZlcmlmaWVyLmMKJiM0MzsmIzQzOyYjNDM7IGIva2VybmVsL2JwZi92ZXJpZmllci5jCkBAIC03OTkwLDkgJiM0Mzs3OTkwLDEwIEBAIHJlZ19maW5kX2ZpZWxkX29mZnNldChjb25zdCBzdHJ1Y3QgYnBmX3JlZ19zdGF0ZSAqcmVnLCBzMzIgb2ZmLCB1MzIgZmllbGRzKQogCXJldHVybiBmaWVsZDsKIH0KIAotc3RhdGljIGludCBjaGVja19mdW5jX2FyZ19yZWdfb2ZmKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsCi0JCQkJICBjb25zdCBzdHJ1Y3QgYnBmX3JlZ19zdGF0ZSAqcmVnLCBhcmdub190IGFyZ25vLAotCQkJCSAgZW51bSBicGZfYXJnX3R5cGUgYXJnX3R5cGUpCiYjNDM7c3RhdGljIGludCBfX2NoZWNrX2Z1bmNfYXJnX3JlZ19vZmYoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwKJiM0MzsJCQkJICAgIGNvbnN0IHN0cnVjdCBicGZfcmVnX3N0YXRlICpyZWcsIGFyZ25vX3QgYXJnbm8sCiYjNDM7CQkJCSAgICBlbnVtIGJwZl9hcmdfdHlwZSBhcmdfdHlwZSwKJiM0MzsJCQkJICAgIGJvb2wgYnRmX2lkX2ZpeGVkX29mZl9vaykKIHsKIAl1MzIgdHlwZSA9IHJlZy0mZ3Q7dHlwZTsKIApAQCAtODA0OSwxMiAmIzQzOzgwNTAsMTEgQEAgc3RhdGljIGludCBjaGVja19mdW5jX2FyZ19yZWdfb2ZmKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsCiAJY2FzZSBQVFJfVE9fQlRGX0lEIHwgTUVNX0FMTE9DIHwgTk9OX09XTl9SRUYgfCBNRU1fUkNVOgogCQkvKiBXaGVuIHJlZmVyZW5jZWQgUFRSX1RPX0JURl9JRCBpcyBwYXNzZWQgdG8gcmVsZWFzZSBmdW5jdGlvbiwKIAkJICogaXRzIGZpeGVkIG9mZnNldCBtdXN0IGJlIDAuIEluIHRoZSBvdGhlciBjYXNlcywgZml4ZWQgb2Zmc2V0Ci0JCSAqIGNhbiBiZSBub24temVyby4gVGhpcyB3YXMgYWxyZWFkeSBjaGVja2VkIGFib3ZlLiBTbyBwYXNzCi0JCSAqIGZpeGVkX29mZl9vayBhcyB0cnVlIHRvIGFsbG93IGZpeGVkIG9mZnNldCBmb3IgYWxsIG90aGVyCi0JCSAqIGNhc2VzLiB2YXJfb2ZmIGFsd2F5cyBtdXN0IGJlIDAgZm9yIFBUUl9UT19CVEZfSUQsIGhlbmNlIHdlCi0JCSAqIHN0aWxsIG5lZWQgdG8gZG8gY2hlY2tzIGluc3RlYWQgb2YgcmV0dXJuaW5nLgomIzQzOwkJICogY2FuIGJlIG5vbi16ZXJvIHVubGVzcyB0aGUgY2FsbGVyIHJlcXVpcmVzIG90aGVyd2lzZS4KJiM0MzsJCSAqIHZhcl9vZmYgYWx3YXlzIG11c3QgYmUgMCBmb3IgUFRSX1RPX0JURl9JRCwgaGVuY2Ugd2Ugc3RpbGwKJiM0MzsJCSAqIG5lZWQgdG8gZG8gY2hlY2tzIGluc3RlYWQgb2YgcmV0dXJuaW5nLgogCQkgKi8KLQkJcmV0dXJuIF9fY2hlY2tfcHRyX29mZl9yZWcoZW52LCByZWcsIGFyZ25vLCB0cnVlKTsKJiM0MzsJCXJldHVybiBfX2NoZWNrX3B0cl9vZmZfcmVnKGVudiwgcmVnLCBhcmdubywgYnRmX2lkX2ZpeGVkX29mZl9vayk7CiAJY2FzZSBQVFJfVE9fQ1RYOgogCQkvKgogCQkgKiBBbGxvdyBmaXhlZCBhbmQgdmFyaWFibGUgb2Zmc2V0cyBmb3Igc3lzY2FsbCBjb250ZXh0LCBidXQKQEAgLTgwNzAsNiAmIzQzOzgwNzAsMTMgQEAgc3RhdGljIGludCBjaGVja19mdW5jX2FyZ19yZWdfb2ZmKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsCiAJfQogfQogCiYjNDM7c3RhdGljIGludCBjaGVja19mdW5jX2FyZ19yZWdfb2ZmKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsCiYjNDM7CQkJCSAgY29uc3Qgc3RydWN0IGJwZl9yZWdfc3RhdGUgKnJlZywgYXJnbm9fdCBhcmdubywKJiM0MzsJCQkJICBlbnVtIGJwZl9hcmdfdHlwZSBhcmdfdHlwZSkKJiM0Mzt7CiYjNDM7CXJldHVybiBfX2NoZWNrX2Z1bmNfYXJnX3JlZ19vZmYoZW52LCByZWcsIGFyZ25vLCBhcmdfdHlwZSwgdHJ1ZSk7CiYjNDM7fQomIzQzOwogc3RhdGljIGludCBjaGVja19hcmdfY29uc3Rfc3RyKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsCiAJCQkgICAgICAgc3RydWN0IGJwZl9yZWdfc3RhdGUgKnJlZywgYXJnbm9fdCBhcmdubykKIHsKQEAgLTExOTQxLDYgJiM0MzsxMTk0OCw3IEBAIHN0YXRpYyBpbnQgY2hlY2tfa2Z1bmNfYXJncyhzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBzdHJ1Y3QgYnBmX2tmdW5jX2NhbGxfCiAJCWVudW0gYnBmX2FyZ190eXBlIGFyZ190eXBlID0gQVJHX0RPTlRDQVJFOwogCQlhcmdub190IGFyZ25vID0gYXJnbm9fZnJvbV9hcmcoaSAmIzQzOyAxKTsKIAkJaW50IHJlZ25vID0gcmVnX2Zyb21fYXJnbm8oYXJnbm8pOwomIzQzOwkJYm9vbCBidGZfaWRfZml4ZWRfb2ZmX29rID0gdHJ1ZTsKIAkJdTMyIHJlZl9pZCwgdHlwZV9zaXplOwogCQlib29sIGlzX3JldF9idWZfc3ogPSBmYWxzZTsKIAkJaW50IGtmX2FyZ190eXBlOwpAQCAtMTIxMTQsNyAmIzQzOzEyMTIyLDYgQEAgc3RhdGljIGludCBjaGVja19rZnVuY19hcmdzKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIHN0cnVjdCBicGZfa2Z1bmNfY2FsbF8KIAkJY2FzZSBLRl9BUkdfUFRSX1RPX01FTToKIAkJY2FzZSBLRl9BUkdfUFRSX1RPX01FTV9TSVpFOgogCQljYXNlIEtGX0FSR19QVFJfVE9fQ0FMTEJBQ0s6Ci0JCWNhc2UgS0ZfQVJHX1BUUl9UT19SRUZDT1VOVEVEX0tQVFI6CiAJCWNhc2UgS0ZfQVJHX1BUUl9UT19DT05TVF9TVFI6CiAJCWNhc2UgS0ZfQVJHX1BUUl9UT19XT1JLUVVFVUU6CiAJCWNhc2UgS0ZfQVJHX1BUUl9UT19USU1FUjoKQEAgLTEyMTI4LDYgJiM0MzsxMjEzNSwxMCBAQCBzdGF0aWMgaW50IGNoZWNrX2tmdW5jX2FyZ3Moc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgc3RydWN0IGJwZl9rZnVuY19jYWxsXwogCQljYXNlIEtGX0FSR19QVFJfVE9fQ1RYOgogCQkJYXJnX3R5cGUgPSBBUkdfUFRSX1RPX0NUWDsKIAkJCWJyZWFrOwomIzQzOwkJY2FzZSBLRl9BUkdfUFRSX1RPX1JFRkNPVU5URURfS1BUUjoKJiM0MzsJCQlhcmdfdHlwZSA9IEFSR19QVFJfVE9fQlRGX0lEOwomIzQzOwkJCWJ0Zl9pZF9maXhlZF9vZmZfb2sgPSBmYWxzZTsKJiM0MzsJCQlicmVhazsKIAkJZGVmYXVsdDoKIAkJCXZlcmlmaWVyX2J1ZyhlbnYsICYjMzQ7dW5rbm93biBrZnVuYyBhcmcgdHlwZSAlZCYjMzQ7LCBrZl9hcmdfdHlwZSk7CiAJCQlyZXR1cm4gLUVGQVVMVDsKQEAgLTEyMTM1LDcgJiM0MzsxMjE0Niw4IEBAIHN0YXRpYyBpbnQgY2hlY2tfa2Z1bmNfYXJncyhzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBzdHJ1Y3QgYnBmX2tmdW5jX2NhbGxfCiAKIAkJaWYgKHJlZ25vID09IG1ldGEtJmd0O3JlbGVhc2VfcmVnbm8pCiAJCQlhcmdfdHlwZSB8PSBPQkpfUkVMRUFTRTsKLQkJcmV0ID0gY2hlY2tfZnVuY19hcmdfcmVnX29mZihlbnYsIHJlZywgYXJnbm8sIGFyZ190eXBlKTsKJiM0MzsJCXJldCA9IF9fY2hlY2tfZnVuY19hcmdfcmVnX29mZihlbnYsIHJlZywgYXJnbm8sIGFyZ190eXBlLAomIzQzOwkJCQkJICAgICAgIGJ0Zl9pZF9maXhlZF9vZmZfb2spOwogCQlpZiAocmV0ICZsdDsgMCkKIAkJCXJldHVybiByZXQ7CiAKZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9yZWZjb3VudGVkX2twdHJfZmFpbC5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3JlZmNvdW50ZWRfa3B0cl9mYWlsLmMKaW5kZXggNzI0N2EyMGMwYTNiZjUuLjAyNGVmMmFhZTIwMDgyIDEwMDY0NAotLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvcmVmY291bnRlZF9rcHRyX2ZhaWwuYwomIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvcmVmY291bnRlZF9rcHRyX2ZhaWwuYwpAQCAtMTMsMTIgJiM0MzsxMywyMCBAQCBzdHJ1Y3Qgbm9kZV9hY3F1aXJlIHsKIAlzdHJ1Y3QgYnBmX3JlZmNvdW50IHJlZmNvdW50OwogfTsKIAomIzQzO3N0cnVjdCBub2RlX3JlZmNvdW50ZWQgewomIzQzOwlsb25nIGtleTsKJiM0MzsJc3RydWN0IGJwZl9saXN0X25vZGUgbGlzdDsKJiM0MzsJc3RydWN0IGJwZl9yZWZjb3VudCByZWZjb3VudDsKJiM0Mzt9OwomIzQzOwogZXh0ZXJuIHZvaWQgYnBmX3JjdV9yZWFkX2xvY2sodm9pZCkgX19rc3ltOwogZXh0ZXJuIHZvaWQgYnBmX3JjdV9yZWFkX3VubG9jayh2b2lkKSBfX2tzeW07CiAKICNkZWZpbmUgcHJpdmF0ZShuYW1lKSBTRUMoJiMzNDsuZGF0YS4mIzM0OyAjbmFtZSkgX19oaWRkZW4gX19hdHRyaWJ1dGVfXygoYWxpZ25lZCg4KSkpCiBwcml2YXRlKEEpIHN0cnVjdCBicGZfc3Bpbl9sb2NrIGdsb2NrOwogcHJpdmF0ZShBKSBzdHJ1Y3QgYnBmX3JiX3Jvb3QgZ3Jvb3QgX19jb250YWlucyhub2RlX2FjcXVpcmUsIG5vZGUpOwomIzQzO3ByaXZhdGUoQikgc3RydWN0IGJwZl9zcGluX2xvY2sgbG9jazsKJiM0Mztwcml2YXRlKEIpIHN0cnVjdCBicGZfbGlzdF9oZWFkIGhlYWQgX19jb250YWlucyhub2RlX3JlZmNvdW50ZWQsIGxpc3QpOwogCiBzdGF0aWMgYm9vbCBsZXNzKHN0cnVjdCBicGZfcmJfbm9kZSAqYSwgY29uc3Qgc3RydWN0IGJwZl9yYl9ub2RlICpiKQogewpAQCAtOTMsNiAmIzQzOzEwMSwzMiBAQCBsb25nIHJidHJlZV9yZWZjb3VudGVkX25vZGVfcmVmX2VzY2FwZXNfb3duaW5nX2lucHV0KHZvaWQgKmN0eCkKIAlyZXR1cm4gMDsKIH0KIAomIzQzO1NFQygmIzM0Oz90YyYjMzQ7KQomIzQzO19fZmFpbHVyZSBfX21zZygmIzM0O2RlcmVmZXJlbmNlIG9mIG1vZGlmaWVkIHB0cl8gcHRyIFIxJiMzNDspCiYjNDM7bG9uZyByZWZjb3VudF9hY3F1aXJlX2xpc3Rfbm9kZV9vZmZzZXQodm9pZCAqY3R4KQomIzQzO3sKJiM0MzsJc3RydWN0IG5vZGVfcmVmY291bnRlZCAqbm9kZSwgKmJhc2UsICpyZWY7CiYjNDM7CXN0cnVjdCBicGZfbGlzdF9ub2RlICpsaXN0X25vZGU7CiYjNDM7CiYjNDM7CW5vZGUgPSBicGZfb2JqX25ldyh0eXBlb2YoKm5vZGUpKTsKJiM0MzsJaWYgKCFub2RlKQomIzQzOwkJcmV0dXJuIDE7CiYjNDM7CiYjNDM7CWJwZl9zcGluX2xvY2soJmFtcDtsb2NrKTsKJiM0MzsJYnBmX2xpc3RfcHVzaF9mcm9udCgmYW1wO2hlYWQsICZhbXA7bm9kZS0mZ3Q7bGlzdCk7CiYjNDM7CWxpc3Rfbm9kZSA9IGJwZl9saXN0X3BvcF9mcm9udCgmYW1wO2hlYWQpOwomIzQzOwlicGZfc3Bpbl91bmxvY2soJmFtcDtsb2NrKTsKJiM0MzsJaWYgKCFsaXN0X25vZGUpCiYjNDM7CQlyZXR1cm4gMjsKJiM0MzsKJiM0MzsJYmFzZSA9IGNvbnRhaW5lcl9vZihsaXN0X25vZGUsIHN0cnVjdCBub2RlX3JlZmNvdW50ZWQsIGxpc3QpOwomIzQzOwlyZWYgPSBicGZfcmVmY291bnRfYWNxdWlyZShsaXN0X25vZGUpOwomIzQzOwlpZiAocmVmKQomIzQzOwkJYnBmX29ial9kcm9wKHJlZik7CiYjNDM7CWJwZl9vYmpfZHJvcChiYXNlKTsKJiM0MzsJcmV0dXJuIDA7CiYjNDM7fQomIzQzOwogU0VDKCYjMzQ7P2ZlbnRyeS5zLyYjMzQ7IFNZU19QUkVGSVggJiMzNDtzeXNfZ2V0cGdpZCYjMzQ7KQogX19mYWlsdXJlIF9fbXNnKCYjMzQ7ZnVuY3Rpb24gY2FsbHMgYXJlIG5vdCBhbGxvd2VkIHdoaWxlIGhvbGRpbmcgYSBsb2NrJiMzNDspCiBpbnQgQlBGX1BST0cocmJ0cmVlX2ZhaWxfc2xlZXBhYmxlX2xvY2tfYWNyb3NzX3JjdSwKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjMgMDY6MzY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzg0MwoJCQkJCQkJb3V0cHV0OiAyMAoJCQkJCQkJdGhvdWdodHM6IDM0NwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBCUEYgVmVyaWZpZXIgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggdGhhdCB0d2Vha3MgdGhlIEJQRiB2ZXJpZmllciwgc3BlY2lmaWNhbGx5IHdpdGhpbiBga2VybmVsL2JwZi92ZXJpZmllci5jYC4gSXQmIzM5O3MgYSBwcmV0dHkgdGFyZ2V0ZWQgY2hhbmdlLCBidXQgaXQgaGFzIGltcG9ydGFudCBpbXBsaWNhdGlvbnMgZm9yIGhvdyB3ZSBoYW5kbGUgcmVmY291bnRlZCBwb2ludGVycyB3aXRoIG9mZnNldHMgaW4gQlBGIGtmdW5jcy4gVGhlIG1haW4gdGhpbmcgaXMgdGhhdCBgY2hlY2tfZnVuY19hcmdfcmVnX29mZmAgaXMgbm93IHJlbmFtZWQgdG8gYF9fY2hlY2tfZnVuY19hcmdfcmVnX29mZmAgYW5kIHRha2VzIGFuIGV4dHJhIGJvb2xlYW4sIGBidGZfaWRfZml4ZWRfb2ZmX29rYC4gVGhpcyBjaGFuZ2UgaXMgY291cGxlZCB3aXRoIGFuIHVwZGF0ZSB0byBgY2hlY2tfa2Z1bmNfYXJnc2Agd2hlcmUgd2Ugbm93IHBhc3MgYGJ0Zl9pZF9maXhlZF9vZmZfb2sgPSBmYWxzZWAgd2hlbiBkZWFsaW5nIHdpdGggYEtGX0FSR19QVFJfVE9fUkVGQ09VTlRFRF9LUFRSYC4gVGhlIGVmZmVjdCBpcyB0aGF0IHdlIGFyZSBtb3JlIHJlc3RyaWN0aXZlIG5vdy4gV2UgcHJldmVudCBwYXNzaW5nIGEgcG9pbnRlciB3aXRoIGEgZml4ZWQsIG5vbi16ZXJvIG9mZnNldCB0byBhIGtmdW5jIHdoZW4gaXQgaXMgZXhwZWN0aW5nIGEgcmVmY291bnRlZCBwb2ludGVyLiBJIHNlZSB0aGUgaW50ZW50aW9uIGlzIHRvIHByZXZlbnQgYSBzY2VuYXJpbyB3aGVyZSBhIG1vZGlmaWVkIHBvaW50ZXIgZ2V0cyBtaXN1c2VkLgoKVGhlIHNlbGZ0ZXN0IGByZWZjb3VudGVkX2twdHJfZmFpbC5jYCBoYXMgYSBuZXcgdGVzdCwgYHJlZmNvdW50X2FjcXVpcmVfbGlzdF9ub2RlX29mZnNldGAsIHdoaWNoIGFpbXMgdG8gdHJpZ2dlciB0aGlzIG5ldyB2ZXJpZmljYXRpb24uIFRoZSB0ZXN0ICpleHBlY3RzKiBhIGZhaWx1cmUsICYjMzQ7ZGVyZWZlcmVuY2Ugb2YgbW9kaWZpZWQgcHRyXyBwdHIgUjEmIzM0Oywgd2hpY2ggY29uZmlybXMgb3VyIHN1c3BpY2lvbiBhYm91dCB0aGUgY2hhbmdlLgoKVGhpcyBpcyBmdW5kYW1lbnRhbGx5IGEgZnVuY3Rpb25hbCBtb2RpZmljYXRpb24gdG8gdGhlIEJQRiB2ZXJpZmllciwgd2hpY2ggaW5kaWNhdGVzIGEgYnVnIGZpeCBvciwgbW9yZSBsaWtlbHksIGEgbmV3bHkgYWRkZWQgcmVzdHJpY3Rpb24uIEl04oCZcyBkZWZpbml0ZWx5IGEgY2hhbmdlIHRoYXQgY291bGQgaW50cm9kdWNlIHN1YnRsZSBiZWhhdmlvciBkaWZmZXJlbmNlcywgYW5kIHRoZXJlZm9yZSwgaXQmIzM5O3MgYSBwcmltZSBjYW5kaWRhdGUgZm9yIGZ1enppbmcuIFdlIG5lZWQgdG8gYmUgY2FyZWZ1bCB3aXRoIHRoaXMuCgpOb3csIGxldCYjMzk7cyBpZGVudGlmeSB0aGUga2V5IGZvY3VzIHN5bWJvbHMgZm9yIGZ1cnRoZXIgaW52ZXN0aWdhdGlvbi4gRnJvbSB0aGUgZGlmZiwgaXTigJlzIGNsZWFyIHRoYXQgdGhlIG1vZGlmaWVkIGZ1bmN0aW9ucyBhcmU6IGBfX2NoZWNrX2Z1bmNfYXJnX3JlZ19vZmZgLCBgY2hlY2tfZnVuY19hcmdfcmVnX29mZmAgYW5kIGBjaGVja19rZnVuY19hcmdzYC4gYGNoZWNrX2tmdW5jX2FyZ3NgIGxvb2tzIGxpa2UgYSBnb29kIHBsYWNlIHRvIHN0YXJ0LCBnaXZlbiBpdHMgY2VudHJhbCByb2xlIGluIGFyZ3VtZW50IGNoZWNraW5nLiBgX19jaGVja19mdW5jX2FyZ19yZWdfb2ZmYCBpcyBhbm90aGVyIGNyaXRpY2FsIGFyZWEgdG8gZXhhbWluZS4KCldlIG5lZWQgdG8gbWFrZSBzdXJlIHdlIGhhdmUgdGhlIGFwcHJvcHJpYXRlIEJQRiBjb25maWdzIGVuYWJsZWQsIHNwZWNpZmljYWxseSBgQ09ORklHX0JQRl9TWVNDQUxMYC4gTm93LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoZSBjb2RlIGFuZCB2ZXJpZnkgdGhlIGltcGFjdCBvZiB0aGlzIGNoYW5nZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yMyAwNjozNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjaGVja19rZnVuY19hcmdzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2tlcm5lbC9icGYvdmVyaWZpZXIuYz0xMTg5Nz1zdGF0aWMgYm9vbCBjaGVja19jc3NfdGFza19pdGVyX2FsbG93bGlzdChzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52KVxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMTkxMi1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxMTkxMzpzdGF0aWMgaW50IGNoZWNrX2tmdW5jX2FyZ3Moc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgc3RydWN0IGJwZl9rZnVuY19jYWxsX2FyZ19tZXRhICptZXRhLFxua2VybmVsL2JwZi92ZXJpZmllci5jLTExOTE0LVx0XHRcdCAgICBpbnQgaW5zbl9pZHgpXG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jPTEyODk4PXN0YXRpYyBpbnQgY2hlY2tfa2Z1bmNfY2FsbChzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBzdHJ1Y3QgYnBmX2luc24gKmluc24sXG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jLTEyOTc0LVx0LyogQ2hlY2sgdGhlIGFyZ3VtZW50cyAqL1xua2VybmVsL2JwZi92ZXJpZmllci5jOjEyOTc1Olx0ZXJyID0gY2hlY2tfa2Z1bmNfYXJncyhlbnYsIFx1MDAyNm1ldGEsIGluc25faWR4KTtcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMjk3Ni1cdGlmIChlcnIgXHUwMDNjIDApXG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jLTEzMjYxLVx0XHRlbHNlXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTMyNjI6XHRcdFx0Lyogc2NhbGFyLiBlbnN1cmVkIGJ5IGNoZWNrX2tmdW5jX2FyZ3MoKSAqL1xua2VybmVsL2JwZi92ZXJpZmllci5jLTEzMjYzLVx0XHRcdG1hcmtfYnRmX2Z1bmNfcmVnX3NpemUoZW52LCByZWdubywgdC1cdTAwM2VzaXplKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yMyAwNjozNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1MDcxCgkJCQkJCQlvdXRwdXQ6IDIxCgkJCQkJCQl0aG91Z2h0czogNDkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIHByZXNlbnRlZCBpbiB0aGUgZmlyc3QgcGVyc29uOgoKKipLZXJuZWwgQ29uZmlndXJhdGlvbiBEZXBlbmRlbmNpZXMqKgoKQWxyaWdodCwgc28gSSYjMzk7bSB0aGlua2luZyBhYm91dCB0aGUga2VybmVsIGNvbmZpZ3VyYXRpb25zIHJlcXVpcmVkIGZvciB0aGlzIHBhcnRpY3VsYXIgQlBGIHByb2dyYW0uIEl0JiMzOTtzIGNsZWFyIHRoYXQgd2UmIzM5O2xsIGRlZmluaXRlbHkgbmVlZCBgQlBGX1NZU0NBTExgIOKAkyB0aGF0JiMzOTtzIGEgZ2l2ZW4sIHNpbmNlIHdlJiMzOTtyZSBpbnRlcmFjdGluZyB3aXRoIHN5c2NhbGxzLiBCdXQsIGJlY2F1c2UgaXQgcmVsaWVzIG9uIEJURiBJRHMsIEkmIzM5O20gZ29pbmcgdG8gd2FudCB0byB2ZXJpZnkgdGhhdCBgREVCVUdfSU5GT19CVEZgIGlzIGFsc28gZW5hYmxlZC4gVGhhdCYjMzk7cyBwcmFjdGljYWxseSBhIHByZXJlcXVpc2l0ZSBpZiB3ZSB3YW50IHN5bWJvbCBpbmZvcm1hdGlvbiBhbmQgdHlwZSBpbmZvcm1hdGlvbi4gSSYjMzk7bSBpbWFnaW5pbmcgaXQmIzM5O2QgYmUgcXVpdGUgZGlmZmljdWx0IHRvIHdvcmsgd2l0aCB3aXRob3V0IGl0LgoKTm93LCBiZWZvcmUgSSBwcm9jZWVkIHRvbyBmYXIgZG93biB0aGUgaW1wbGVtZW50YXRpb24gcGF0aCwgSSBzaG91bGQgcmVhbGx5IGNoZWNrIGlmIHRoZXJlIGFyZSBhbnkgc3BlY2lmaWMga2VybmVsIGNvbmZpZ3VyYXRpb25zIG9yIGJ1aWxkIGZsYWdzIHJlbGF0ZWQgdG8gdGhlIGBicGZfcmVmY291bnRfYWNxdWlyZWAgZnVuY3Rpb24gaXRzZWxmLiBJIHNob3VsZCBjaGVjayBpZiB0aGVyZSYjMzk7cyBhbnkgc3BlY2lhbGl6ZWQgY29uZmlndXJhdGlvbiB0aGF0IG5lZWRzIHRvIGJlIGNvbnNpZGVyZWQgdG8gdXNlIHRoYXQgcGFydGljdWxhciBmdW5jdGlvbi4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBJIGhhdmVuJiMzOTt0IG1pc3NlZCBhbnl0aGluZyBvYnZpb3VzLiBJJiMzOTtsbCBuZWVkIHRvIGRvIHNvbWUgZGlnZ2luZyB0byBtYWtlIHN1cmUgSSBoYXZlbiYjMzk7dCBtaXNzZWQgYW55IHNwZWNpYWxpemVkLCBvciBwb3NzaWJseSBldmVuIGhpZGRlbiwgY29uZmlndXJhdGlvbiBvcHRpb25zLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzIzIDA2OjM2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2JwZl9yZWZjb3VudF9hY3F1aXJlJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2luY2x1ZGUvbGludXgvYnBmX3ZlcmlmaWVyLmg9MTQ0MT1zdHJ1Y3QgYnBmX2tmdW5jX2NhbGxfYXJnX21ldGEge1xuLS1cbmluY2x1ZGUvbGludXgvYnBmX3ZlcmlmaWVyLmgtMTQ2My1cdCAqICAgICBSZWNvcmQgdGhlIGxvY2FsIGtwdHIgdHlwZSB0byBiZSBkcm9wJiMzOTtkXG5pbmNsdWRlL2xpbnV4L2JwZl92ZXJpZmllci5oOjE0NjQ6XHQgKiAgIGJwZl9yZWZjb3VudF9hY3F1aXJlICh2aWEgS0ZfQVJHX1BUUl9UT19SRUZDT1VOVEVEX0tQVFIgYXJnIHR5cGUpXG5pbmNsdWRlL2xpbnV4L2JwZl92ZXJpZmllci5oLTE0NjUtXHQgKiAgICAgUmVjb3JkIHRoZSBsb2NhbCBrcHRyIHR5cGUgdG8gYmUgcmVmY291bnRfaW5jciYjMzk7ZCBhbmQgdXNlXG4tLVxua2VybmVsL2JwZi9oZWxwZXJzLmM9MjQ0OT1fX2JwZl9rZnVuYyB2b2lkIGJwZl9wZXJjcHVfb2JqX2Ryb3BfaW1wbCh2b2lkICpwX19hbGxvYywgdm9pZCAqbWV0YV9faWduKVxuLS1cbmtlcm5lbC9icGYvaGVscGVycy5jLTI0NTQtLyoqXG5rZXJuZWwvYnBmL2hlbHBlcnMuYzoyNDU1OiAqIGJwZl9yZWZjb3VudF9hY3F1aXJlKCkgLSB0dXJuIGEgbG9jYWwga3B0ciBpbnRvIGFuIG93bmluZyByZWZlcmVuY2Vcbmtlcm5lbC9icGYvaGVscGVycy5jLTI0NTYtICogQHBfX3JlZmNvdW50ZWRfa3B0cjogbm9uLW93bmluZyBsb2NhbCBrcHRyXG4tLVxua2VybmVsL2JwZi9oZWxwZXJzLmMtMjQ2My0gKi9cbmtlcm5lbC9icGYvaGVscGVycy5jOjI0NjQ6X19icGZfa2Z1bmMgdm9pZCAqYnBmX3JlZmNvdW50X2FjcXVpcmUodm9pZCAqcF9fcmVmY291bnRlZF9rcHRyLCBzdHJ1Y3QgYnRmX3N0cnVjdF9tZXRhICptZXRhKVxua2VybmVsL2JwZi9oZWxwZXJzLmMtMjQ2NS17XG4tLVxua2VybmVsL2JwZi9oZWxwZXJzLmMtMjQ4MC1cbmtlcm5lbC9icGYvaGVscGVycy5jOjI0ODE6X19icGZfa2Z1bmMgdm9pZCAqYnBmX3JlZmNvdW50X2FjcXVpcmVfaW1wbCh2b2lkICpwX19yZWZjb3VudGVkX2twdHIsIHZvaWQgKm1ldGFfX2lnbilcbmtlcm5lbC9icGYvaGVscGVycy5jLTI0ODIte1xua2VybmVsL2JwZi9oZWxwZXJzLmM6MjQ4MzpcdHJldHVybiBicGZfcmVmY291bnRfYWNxdWlyZShwX19yZWZjb3VudGVkX2twdHIsIG1ldGFfX2lnbik7XG5rZXJuZWwvYnBmL2hlbHBlcnMuYy0yNDg0LX1cbi0tXG5rZXJuZWwvYnBmL2hlbHBlcnMuYz00ODEzPUJURl9JRF9GTEFHUyhmdW5jLCBicGZfcGVyY3B1X29ial9kcm9wX2ltcGwsIEtGX1JFTEVBU0UpXG5rZXJuZWwvYnBmL2hlbHBlcnMuYzo0ODE0OkJURl9JRF9GTEFHUyhmdW5jLCBicGZfcmVmY291bnRfYWNxdWlyZSwgS0ZfQUNRVUlSRSB8IEtGX1JFVF9OVUxMIHwgS0ZfUkNVIHwgS0ZfSU1QTElDSVRfQVJHUylcbmtlcm5lbC9icGYvaGVscGVycy5jOjQ4MTU6QlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9yZWZjb3VudF9hY3F1aXJlX2ltcGwsIEtGX0FDUVVJUkUgfCBLRl9SRVRfTlVMTCB8IEtGX1JDVSlcbmtlcm5lbC9icGYvaGVscGVycy5jLTQ4MTYtQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9saXN0X3B1c2hfZnJvbnQsIEtGX0lNUExJQ0lUX0FSR1MpXG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jPTEwOTg5PWVudW0gc3BlY2lhbF9rZnVuY190eXBlIHtcbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTA5OTMtXHRLRl9icGZfb2JqX2Ryb3AsXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTA5OTQ6XHRLRl9icGZfcmVmY291bnRfYWNxdWlyZV9pbXBsLFxua2VybmVsL2JwZi92ZXJpZmllci5jOjEwOTk1Olx0S0ZfYnBmX3JlZmNvdW50X2FjcXVpcmUsXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTA5OTYtXHRLRl9icGZfbGlzdF9wdXNoX2Zyb250X2ltcGwsXG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jPTExMDY2PUJURl9JRChmdW5jLCBicGZfb2JqX2Ryb3ApXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTEwNjc6QlRGX0lEKGZ1bmMsIGJwZl9yZWZjb3VudF9hY3F1aXJlX2ltcGwpXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTEwNjg6QlRGX0lEKGZ1bmMsIGJwZl9yZWZjb3VudF9hY3F1aXJlKVxua2VybmVsL2JwZi92ZXJpZmllci5jLTExMDY5LUJURl9JRChmdW5jLCBicGZfbGlzdF9wdXNoX2Zyb250X2ltcGwpXG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jPTExMTc2PXN0YXRpYyBib29sIGlzX2JwZl9wZXJjcHVfb2JqX2Ryb3Bfa2Z1bmModTMyIGZ1bmNfaWQpXG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jLTExMTgxLVxua2VybmVsL2JwZi92ZXJpZmllci5jOjExMTgyOnN0YXRpYyBib29sIGlzX2JwZl9yZWZjb3VudF9hY3F1aXJlX2tmdW5jKHUzMiBmdW5jX2lkKVxua2VybmVsL2JwZi92ZXJpZmllci5jLTExMTgzLXtcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxMTE4NDpcdHJldHVybiBmdW5jX2lkID09IHNwZWNpYWxfa2Z1bmNfbGlzdFtLRl9icGZfcmVmY291bnRfYWNxdWlyZV0gfHxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxMTE4NTpcdCAgICAgICBmdW5jX2lkID09IHNwZWNpYWxfa2Z1bmNfbGlzdFtLRl9icGZfcmVmY291bnRfYWNxdWlyZV9pbXBsXTtcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMTE4Ni19XG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jPTExMjA5PXN0YXRpYyBib29sIGlzX2tmdW5jX3JldF9udWxsKHN0cnVjdCBicGZfa2Z1bmNfY2FsbF9hcmdfbWV0YSAqbWV0YSlcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMTIxMC17XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTEyMTE6XHRpZiAoaXNfYnBmX3JlZmNvdW50X2FjcXVpcmVfa2Z1bmMobWV0YS1cdTAwM2VmdW5jX2lkKSBcdTAwMjZcdTAwMjYgbWV0YS1cdTAwM2Vhcmdfb3duaW5nX3JlZilcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMTIxMi1cdFx0cmV0dXJuIGZhbHNlO1xuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYz0xMTYxNz1zdGF0aWMgYm9vbCBpc19icGZfZ3JhcGhfYXBpX2tmdW5jKHUzMiBidGZfaWQpXG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jLTExNjIwLVx0ICAgICAgIGlzX2JwZl9yYnRyZWVfYXBpX2tmdW5jKGJ0Zl9pZCkgfHxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxMTYyMTpcdCAgICAgICBpc19icGZfcmVmY291bnRfYWNxdWlyZV9rZnVuYyhidGZfaWQpO1xua2VybmVsL2JwZi92ZXJpZmllci5jLTExNjIyLX1cbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9MTI3Mjc9c3RhdGljIGludCBjaGVja19zcGVjaWFsX2tmdW5jKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIHN0cnVjdCBicGZfa2Z1bmNfY2FsbF9hcmdfbWV0YSAqbWV0YSxcbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTI4MTUtXHRcdGluc25fYXV4LVx1MDAzZWtwdHJfc3RydWN0X21ldGEgPSBzdHJ1Y3RfbWV0YTtcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxMjgxNjpcdH0gZWxzZSBpZiAoaXNfYnBmX3JlZmNvdW50X2FjcXVpcmVfa2Z1bmMobWV0YS1cdTAwM2VmdW5jX2lkKSkge1xua2VybmVsL2JwZi92ZXJpZmllci5jLTEyODE3LVx0XHRtYXJrX3JlZ19rbm93bl96ZXJvKGVudiwgcmVncywgQlBGX1JFR18wKTtcbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9MTI4OTg9c3RhdGljIGludCBjaGVja19rZnVuY19jYWxsKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIHN0cnVjdCBicGZfaW5zbiAqaW5zbixcbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTMxMTgtXHRcdCAgICAgIWlzX2JwZl9wZXJjcHVfb2JqX25ld19rZnVuYyhtZXRhLmZ1bmNfaWQpIFx1MDAyNlx1MDAyNlxua2VybmVsL2JwZi92ZXJpZmllci5jOjEzMTE5Olx0XHQgICAgICFpc19icGZfcmVmY291bnRfYWNxdWlyZV9rZnVuYyhtZXRhLmZ1bmNfaWQpKSkge1xua2VybmVsL2JwZi92ZXJpZmllci5jLTEzMTIwLVx0XHRcdHZlcmJvc2UoZW52LCBcJiMzNDthY3F1aXJlIGtlcm5lbCBmdW5jdGlvbiBkb2VzIG5vdCByZXR1cm4gUFRSX1RPX0JURl9JRFxcblwmIzM0Oyk7XG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jPTE5NTc0PWludCBicGZfZml4dXBfa2Z1bmNfY2FsbChzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBzdHJ1Y3QgYnBmX2luc24gKmluc24sXG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jLTE5NjIyLVx0XHQgICBpc19icGZfcGVyY3B1X29ial9kcm9wX2tmdW5jKGRlc2MtXHUwMDNlZnVuY19pZCkgfHxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxOTYyMzpcdFx0ICAgaXNfYnBmX3JlZmNvdW50X2FjcXVpcmVfa2Z1bmMoZGVzYy1cdTAwM2VmdW5jX2lkKSkge1xua2VybmVsL2JwZi92ZXJpZmllci5jLTE5NjI0LVx0XHRzdHJ1Y3QgYnRmX3N0cnVjdF9tZXRhICprcHRyX3N0cnVjdF9tZXRhID0gZW52LVx1MDAzZWluc25fYXV4X2RhdGFbaW5zbl9pZHhdLmtwdHJfc3RydWN0X21ldGE7XG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jLTE5NjMyLVxua2VybmVsL2JwZi92ZXJpZmllci5jOjE5NjMzOlx0XHRpZiAoaXNfYnBmX3JlZmNvdW50X2FjcXVpcmVfa2Z1bmMoZGVzYy1cdTAwM2VmdW5jX2lkKSBcdTAwMjZcdTAwMjYgIWtwdHJfc3RydWN0X21ldGEpIHtcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xOTYzNC1cdFx0XHR2ZXJpZmllcl9idWcoZW52LCBcJiMzNDtrcHRyX3N0cnVjdF9tZXRhIGV4cGVjdGVkIGF0IGluc25faWR4ICVkXCYjMzQ7LFxuLS1cbnRvb2xzL3NjaGVkX2V4dC9pbmNsdWRlL3NjeC9jb21tb24uYnBmLmg9Mzg0PXN0cnVjdCBicGZfcmJfbm9kZSAqYnBmX3JidHJlZV9maXJzdChzdHJ1Y3QgYnBmX3JiX3Jvb3QgKnJvb3QpIF9fa3N5bTtcbnRvb2xzL3NjaGVkX2V4dC9pbmNsdWRlL3NjeC9jb21tb24uYnBmLmgtMzg1LVxudG9vbHMvc2NoZWRfZXh0L2luY2x1ZGUvc2N4L2NvbW1vbi5icGYuaDozODY6dm9pZCAqYnBmX3JlZmNvdW50X2FjcXVpcmVfaW1wbCh2b2lkICprcHRyLCB2b2lkICptZXRhKSBfX2tzeW07XG50b29scy9zY2hlZF9leHQvaW5jbHVkZS9zY3gvY29tbW9uLmJwZi5oOjM4NzojZGVmaW5lIGJwZl9yZWZjb3VudF9hY3F1aXJlKGtwdHIpIGJwZl9yZWZjb3VudF9hY3F1aXJlX2ltcGwoa3B0ciwgTlVMTClcbnRvb2xzL3NjaGVkX2V4dC9pbmNsdWRlL3NjeC9jb21tb24uYnBmLmgtMzg4LVxuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9icGZfcWRpc2NfZnEuYz0zMDM9aW50IEJQRl9QUk9HKGJwZl9mcV9lbnF1ZXVlLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgUWRpc2MgKnNjaCxcbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvYnBmX3FkaXNjX2ZxLmMtMzQ0LVx0XHRpZiAoZnFfZmxvd19pc19kZXRhY2hlZChmbG93KSkge1xudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2JwZl9xZGlzY19mcS5jOjM0NTpcdFx0XHRmbG93X2NvcHkgPSBicGZfcmVmY291bnRfYWNxdWlyZShmbG93KTtcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9icGZfcWRpc2NfZnEuYy0zNDYtXG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2xvY2FsX2twdHJfc3Rhc2guYz0yMzQ9bG9uZyByZWZjb3VudF9hY3F1aXJlX3dpdGhvdXRfdW5zdGFzaCh2b2lkICpjdHgpXG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2xvY2FsX2twdHJfc3Rhc2guYy0yNDktXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvbG9jYWxfa3B0cl9zdGFzaC5jOjI1MDpcdHAgPSBicGZfcmVmY291bnRfYWNxdWlyZShzLVx1MDAzZXN0YXNoZWQpO1xudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2xvY2FsX2twdHJfc3Rhc2guYy0yNTEtXHRpZiAoIXApXG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3JidHJlZV9zZWFyY2guYz01Mz1sb25nIHJidHJlZV9zZWFyY2godm9pZCAqY3R4KVxuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9yYnRyZWVfc2VhcmNoLmMtNjQtXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvcmJ0cmVlX3NlYXJjaC5jOjY1Olx0XHRtID0gYnBmX3JlZmNvdW50X2FjcXVpcmUobik7XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvcmJ0cmVlX3NlYXJjaC5jLTY2LVxuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9yYnRyZWVfc2VhcmNoLmMtMTA4LVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3JidHJlZV9zZWFyY2guYzoxMDk6XHRtID0gYnBmX3JlZmNvdW50X2FjcXVpcmUobik7XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvcmJ0cmVlX3NlYXJjaC5jLTExMC1cdGJwZl9zcGluX3VubG9jayhcdTAwMjZnbG9jazApO1xuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9yYnRyZWVfc2VhcmNoLmM9MTU2PWxvbmcgdGVzdF8jI29wIyNfc3BpbmxvY2tfIyNkb2xvY2sodm9pZCAqY3R4KVx0XHRcXFxuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9yYnRyZWVfc2VhcmNoLmMtMTY4LVx0biA9IHJiX2VudHJ5KHJiX24sIHN0cnVjdCBub2RlX2RhdGEsIHIwKTtcdFxcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvcmJ0cmVlX3NlYXJjaC5jOjE2OTpcdG4gPSBicGZfcmVmY291bnRfYWNxdWlyZShuKTtcdFx0XHRcXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3JidHJlZV9zZWFyY2guYy0xNzAtXHRicGZfc3Bpbl91bmxvY2soXHUwMDI2Z2xvY2swKTtcdFx0XHRcXFxuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9yYnRyZWVfc2VhcmNoX2twdHIuYz0xNTU9bG9uZyByYnRyZWVfc2VhcmNoX2twdHJfcmVmKHZvaWQgKmN0eClcbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvcmJ0cmVlX3NlYXJjaF9rcHRyLmMtMTgyLVx0XHQvKiBVbnVzZWQgcmVmZXJlbmNlICovXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvcmJ0cmVlX3NlYXJjaF9rcHRyLmM6MTgzOlx0XHR0bm9kZV9tID0gYnBmX3JlZmNvdW50X2FjcXVpcmUodG5vZGVfcik7XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvcmJ0cmVlX3NlYXJjaF9rcHRyLmMtMTg0LVx0XHRpZiAoIXRub2RlX20pXG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3JlZmNvdW50ZWRfa3B0ci5jPTczPXN0YXRpYyBsb25nIF9faW5zZXJ0X2luX3RyZWVfYW5kX2xpc3Qoc3RydWN0IGJwZl9saXN0X2hlYWQgKmhlYWQsXG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3JlZmNvdW50ZWRfa3B0ci5jLTgyLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3JlZmNvdW50ZWRfa3B0ci5jOjgzOlx0bSA9IGJwZl9yZWZjb3VudF9hY3F1aXJlKG4pO1xudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3JlZmNvdW50ZWRfa3B0ci5jLTg0LVx0bS1cdTAwM2VrZXkgPSAxMjM7XG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3JlZmNvdW50ZWRfa3B0ci5jPTEwNj1zdGF0aWMgbG9uZyBfX3N0YXNoX21hcF9pbnNlcnRfdHJlZShpbnQgaWR4LCBpbnQgdmFsLCBzdHJ1Y3QgYnBmX3JiX3Jvb3QgKnJvb3QsXG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3JlZmNvdW50ZWRfa3B0ci5jLTEyMC1cdG4tXHUwMDNla2V5ID0gdmFsO1xudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3JlZmNvdW50ZWRfa3B0ci5jOjEyMTpcdG0gPSBicGZfcmVmY291bnRfYWNxdWlyZShuKTtcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9yZWZjb3VudGVkX2twdHIuYy0xMjItXG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3JlZmNvdW50ZWRfa3B0ci5jPTM5OT1zdGF0aWMgc3RydWN0IG5vZGVfZGF0YSAqX19hZGRfaW5fbGlzdChzdHJ1Y3QgYnBmX2xpc3RfaGVhZCAqaGVhZCxcbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvcmVmY291bnRlZF9rcHRyLmMtNDA3LVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3JlZmNvdW50ZWRfa3B0ci5jOjQwODpcdG5vZGVfcmVmID0gYnBmX3JlZmNvdW50X2FjcXVpcmUobm9kZV9uZXcpO1xudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3JlZmNvdW50ZWRfa3B0ci5jLTQwOS1cbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvcmVmY291bnRlZF9rcHRyLmM9NzkzPWxvbmcgcmJ0cmVlX3JlZmNvdW50ZWRfbm9kZV9yZWZfZXNjYXBlcyh2b2lkICpjdHgpXG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3JlZmNvdW50ZWRfa3B0ci5jLTgwMi1cdGJwZl9yYnRyZWVfYWRkKFx1MDAyNmFyb290LCBcdTAwMjZuLVx1MDAzZW5vZGUsIGxlc3NfYSk7XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvcmVmY291bnRlZF9rcHRyLmM6ODAzOlx0bSA9IGJwZl9yZWZjb3VudF9hY3F1aXJlKG4pO1xudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3JlZmNvdW50ZWRfa3B0ci5jLTgwNC1cdGJwZl9zcGluX3VubG9jayhcdTAwMjZhbG9jayk7XG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3JlZmNvdW50ZWRfa3B0ci5jPTgxNT1sb25nIHJidHJlZV9yZWZjb3VudGVkX25vZGVfcmVmX2VzY2FwZXNfb3duaW5nX2lucHV0KHZvaWQgKmN0eClcbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvcmVmY291bnRlZF9rcHRyLmMtODIyLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3JlZmNvdW50ZWRfa3B0ci5jOjgyMzpcdG0gPSBicGZfcmVmY291bnRfYWNxdWlyZShuKTtcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9yZWZjb3VudGVkX2twdHIuYy04MjQtXHRtLVx1MDAzZWtleSA9IDI7XG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3JlZmNvdW50ZWRfa3B0ci5jPTg1Mj1sb25nIHJidHJlZV93cm9uZ19vd25lcl9yZW1vdmVfZmFpbF9hMSh2b2lkICpjdHgpXG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3JlZmNvdW50ZWRfa3B0ci5jLTg1OC1cdFx0cmV0dXJuIDE7XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvcmVmY291bnRlZF9rcHRyLmM6ODU5Olx0bSA9IGJwZl9yZWZjb3VudF9hY3F1aXJlKG4pO1xudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3JlZmNvdW50ZWRfa3B0ci5jLTg2MC1cbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvcmVmY291bnRlZF9rcHRyLmM9MTAwMj1zdGF0aWMgaW50IF9faW5zZXJ0X2luX2xpc3Qoc3RydWN0IGJwZl9saXN0X2hlYWQgKmhlYWQsIHN0cnVjdCBicGZfc3Bpbl9sb2NrICpsb2NrLFxuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9yZWZjb3VudGVkX2twdHIuYy0xMDEwLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3JlZmNvdW50ZWRfa3B0ci5jOjEwMTE6XHRub2RlX3JlZiA9IGJwZl9yZWZjb3VudF9hY3F1aXJlKG5vZGVfbmV3KTtcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9yZWZjb3VudGVkX2twdHIuYy0xMDEyLVx0bm9kZV9vbGQgPSBicGZfa3B0cl94Y2hnKG5vZGUsIG5vZGVfbmV3KTtcbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvcmVmY291bnRlZF9rcHRyX2ZhaWwuYz00ND1sb25nIHJidHJlZV9yZWZjb3VudGVkX25vZGVfcmVmX2VzY2FwZXModm9pZCAqY3R4KVxuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9yZWZjb3VudGVkX2twdHJfZmFpbC5jLTU0LVx0LyogbSBiZWNvbWVzIGFuIG93bmluZyByZWYgYnV0IGlzIG5ldmVyIGRyb3AmIzM5O2Qgb3IgYWRkZWQgdG8gYSB0cmVlICovXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvcmVmY291bnRlZF9rcHRyX2ZhaWwuYzo1NTpcdG0gPSBicGZfcmVmY291bnRfYWNxdWlyZShuKTtcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9yZWZjb3VudGVkX2twdHJfZmFpbC5jLTU2LVx0YnBmX3NwaW5fdW5sb2NrKFx1MDAyNmdsb2NrKTtcbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvcmVmY291bnRlZF9rcHRyX2ZhaWwuYz02Nj1sb25nIHJlZmNvdW50X2FjcXVpcmVfbWF5YmVfbnVsbCh2b2lkICpjdHgpXG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3JlZmNvdW50ZWRfa3B0cl9mYWlsLmMtNzMtXHQgKi9cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9yZWZjb3VudGVkX2twdHJfZmFpbC5jOjc0Olx0bSA9IGJwZl9yZWZjb3VudF9hY3F1aXJlKG4pO1xudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3JlZmNvdW50ZWRfa3B0cl9mYWlsLmMtNzUtXHRpZiAobSlcbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvcmVmY291bnRlZF9rcHRyX2ZhaWwuYz04NT1sb25nIHJidHJlZV9yZWZjb3VudGVkX25vZGVfcmVmX2VzY2FwZXNfb3duaW5nX2lucHV0KHZvaWQgKmN0eClcbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvcmVmY291bnRlZF9rcHRyX2ZhaWwuYy05My1cdC8qIG0gYmVjb21lcyBhbiBvd25pbmcgcmVmIGJ1dCBpcyBuZXZlciBkcm9wJiMzOTtkIG9yIGFkZGVkIHRvIGEgdHJlZSAqL1xudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3JlZmNvdW50ZWRfa3B0cl9mYWlsLmM6OTQ6XHRtID0gYnBmX3JlZmNvdW50X2FjcXVpcmUobik7XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvcmVmY291bnRlZF9rcHRyX2ZhaWwuYy05NS1cdG0tXHUwMDNla2V5ID0gMjtcbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvcmVmY291bnRlZF9rcHRyX2ZhaWwuYz0xMDY9bG9uZyByZWZjb3VudF9hY3F1aXJlX2xpc3Rfbm9kZV9vZmZzZXQodm9pZCAqY3R4KVxuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9yZWZjb3VudGVkX2twdHJfZmFpbC5jLTEyMi1cdGJhc2UgPSBjb250YWluZXJfb2YobGlzdF9ub2RlLCBzdHJ1Y3Qgbm9kZV9yZWZjb3VudGVkLCBsaXN0KTtcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9yZWZjb3VudGVkX2twdHJfZmFpbC5jOjEyMzpcdHJlZiA9IGJwZl9yZWZjb3VudF9hY3F1aXJlKGxpc3Rfbm9kZSk7XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvcmVmY291bnRlZF9rcHRyX2ZhaWwuYy0xMjQtXHRpZiAocmVmKVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzIzIDA2OjM3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEwMzU3CgkJCQkJCQlvdXRwdXQ6IDEyNQoJCQkJCQkJdGhvdWdodHM6IDEyMgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBc3Nlc3NtZW50IG9mIHRoZSBCUEYgVmVyaWZpZXIgQ2hhbmdlKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoLiBNeSBpbW1lZGlhdGUgZm9jdXMgaXMgb24gdGhlIGNvbmZpZ3VyYXRpb25zOiBgQ09ORklHX0JQRl9TWVNDQUxMYCBhbmQgYENPTkZJR19ERUJVR19JTkZPX0JURmAuIFRoZXNlIGFyZSBjcnVjaWFsIGNvbnRleHQgaW5kaWNhdG9ycyDigJMgdGhleSB0ZWxsIG1lIHdoYXQgcGFydHMgb2YgdGhlIEJQRiBlY29zeXN0ZW0gdGhpcyBpcyB0b3VjaGluZy4gR2l2ZW4gdGhlIG5hdHVyZSBvZiB0aGUgY2hhbmdlLCBJJiMzOTttIGFscmVhZHkgaW5jbGluZWQgdG8gbWFyayBpdCBhcyBgV29ydGhGdXp6aW5nYC4gVGhpcyBpcyBkZWZpbml0ZWx5IHNvbWV0aGluZyB0aGF0IG5lZWRzIHRob3JvdWdoIHNjcnV0aW55LgoKVGhlIGhlYXJ0IG9mIHRoZSBjaGFuZ2UgcmV2b2x2ZXMgYXJvdW5kIHRoZSBCUEYgdmVyaWZpZXImIzM5O3MgaGFuZGxpbmcgb2YgcG9pbnRlcnMgcGFzc2VkIHRvIGtmdW5jcywgc3BlY2lmaWNhbGx5IHRob3NlIGV4cGVjdGluZyBgS0ZfQVJHX1BUUl9UT19SRUZDT1VOVEVEX0tQVFJgLiBUaGUgcGF0Y2ggc2VlbXMgdG8gYmUgaW50cm9kdWNpbmcgYSBzdHJpY3RlciBjaGVjaywgcmVqZWN0aW5nIG1vZGlmaWVkIHBvaW50ZXJzIOKAkyBtZWFuaW5nIHRob3NlIHdpdGggYSBub24temVybyBmaXhlZCBvZmZzZXQg4oCTIGluIHRoaXMgcGFydGljdWxhciBzY2VuYXJpby4KCkkgbmVlZCB0byBkaWcgZGVlcGVyLCBidXQgbXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRoYXQgdGhpcyBpcyBhIGZ1bmN0aW9uYWwgbW9kaWZpY2F0aW9uIHRvIHRoZSB2ZXJpZmllciBsb2dpYy4gSSYjMzk7bGwgYmUgZm9jdXNpbmcgbXkgYXR0ZW50aW9uIG9uIGBjaGVja19rZnVuY19hcmdzYCBhbmQgYF9fY2hlY2tfZnVuY19hcmdfcmVnX29mZmAgdG8gZ3Jhc3AgdGhlIG51YW5jZXMgb2YgdGhpcyB0aWdodGVuZWQgY2hlY2sgYW5kIGl0cyBpbXBhY3QuIFRoaXMgaXMgc29tZXRoaW5nIHRoYXQgY291bGQgcG90ZW50aWFsbHkgZXhwb3NlIHN1YnRsZSBidXQgaW1wb3J0YW50IGlzc3Vlcywgc28gY2FyZWZ1bCB0ZXN0aW5nIGlzIGluIG9yZGVyLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzIzIDA2OjM3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtCUEZfU1lTQ0FMTCYjMzQ7LAogICAgJiMzNDtERUJVR19JTkZPX0JURiYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2NoZWNrX2tmdW5jX2FyZ3MmIzM0OywKICAgICYjMzQ7X19jaGVja19mdW5jX2FyZ19yZWdfb2ZmJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBCUEYgdmVyaWZpZXIgdG8gcmVqZWN0IHBhc3NpbmcgYSBtb2RpZmllZCBwb2ludGVyICh3aXRoIG5vbi16ZXJvIGZpeGVkIG9mZnNldCkgdG8gYSBrZnVuYyBleHBlY3RpbmcgYSBLRl9BUkdfUFRSX1RPX1JFRkNPVU5URURfS1BUUi4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBCUEYgdmVyaWZpZXIgbG9naWMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JQRl9TWVNDQUxMJiMzNDssCiAgICAmIzM0O0RFQlVHX0lORk9fQlRGJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7Y2hlY2tfa2Z1bmNfYXJncyYjMzQ7LAogICAgJiMzNDtfX2NoZWNrX2Z1bmNfYXJnX3JlZ19vZmYmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIEJQRiB2ZXJpZmllciB0byByZWplY3QgcGFzc2luZyBhIG1vZGlmaWVkIHBvaW50ZXIgKHdpdGggbm9uLXplcm8gZml4ZWQgb2Zmc2V0KSB0byBhIGtmdW5jIGV4cGVjdGluZyBhIEtGX0FSR19QVFJfVE9fUkVGQ09VTlRFRF9LUFRSLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIEJQRiB2ZXJpZmllciBsb2dpYy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA2LTIzVDA2OjM2OjQ1LjI2MjQyMTk5WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjAyMjM5MTY3MjcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQlBGX1NZU0NBTExcIixcbiAgICBcIkRFQlVHX0lORk9fQlRGXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiY2hlY2tfa2Z1bmNfYXJnc1wiLFxuICAgIFwiX19jaGVja19mdW5jX2FyZ19yZWdfb2ZmXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIEJQRiB2ZXJpZmllciB0byByZWplY3QgcGFzc2luZyBhIG1vZGlmaWVkIHBvaW50ZXIgKHdpdGggbm9uLXplcm8gZml4ZWQgb2Zmc2V0KSB0byBhIGtmdW5jIGV4cGVjdGluZyBhIEtGX0FSR19QVFJfVE9fUkVGQ09VTlRFRF9LUFRSLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIEJQRiB2ZXJpZmllciBsb2dpYy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjNUMDY6MzY6NDUuMjYyNDI2OTgxWiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NDIzMzgxNTAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCBiMTMxOWNmOGVhNjVkYjlhMjBhOTA5MDE4ZjljODhmYWMwZDIxMmU3XFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBUdWUgSnVuIDIzIDA2OjM2OjQ0IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2tlcm5lbC9icGYvdmVyaWZpZXIuYyBiL2tlcm5lbC9icGYvdmVyaWZpZXIuY1xcbmluZGV4IDJhYmM3OWRiZjI4MWMyLi5mNjVlZmYyOGVjZDI1ZSAxMDA2NDRcXG4tLS0gYS9rZXJuZWwvYnBmL3ZlcmlmaWVyLmNcXG4rKysgYi9rZXJuZWwvYnBmL3ZlcmlmaWVyLmNcXG5AQCAtNzk5MCw5ICs3OTkwLDEwIEBAIHJlZ19maW5kX2ZpZWxkX29mZnNldChjb25zdCBzdHJ1Y3QgYnBmX3JlZ19zdGF0ZSAqcmVnLCBzMzIgb2ZmLCB1MzIgZmllbGRzKVxcbiBcXHRyZXR1cm4gZmllbGQ7XFxuIH1cXG4gXFxuLXN0YXRpYyBpbnQgY2hlY2tfZnVuY19hcmdfcmVnX29mZihzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LFxcbi1cXHRcXHRcXHRcXHQgIGNvbnN0IHN0cnVjdCBicGZfcmVnX3N0YXRlICpyZWcsIGFyZ25vX3QgYXJnbm8sXFxuLVxcdFxcdFxcdFxcdCAgZW51bSBicGZfYXJnX3R5cGUgYXJnX3R5cGUpXFxuK3N0YXRpYyBpbnQgX19jaGVja19mdW5jX2FyZ19yZWdfb2ZmKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsXFxuK1xcdFxcdFxcdFxcdCAgICBjb25zdCBzdHJ1Y3QgYnBmX3JlZ19zdGF0ZSAqcmVnLCBhcmdub190IGFyZ25vLFxcbitcXHRcXHRcXHRcXHQgICAgZW51bSBicGZfYXJnX3R5cGUgYXJnX3R5cGUsXFxuK1xcdFxcdFxcdFxcdCAgICBib29sIGJ0Zl9pZF9maXhlZF9vZmZfb2spXFxuIHtcXG4gXFx0dTMyIHR5cGUgPSByZWctXFx1MDAzZXR5cGU7XFxuIFxcbkBAIC04MDQ5LDEyICs4MDUwLDExIEBAIHN0YXRpYyBpbnQgY2hlY2tfZnVuY19hcmdfcmVnX29mZihzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LFxcbiBcXHRjYXNlIFBUUl9UT19CVEZfSUQgfCBNRU1fQUxMT0MgfCBOT05fT1dOX1JFRiB8IE1FTV9SQ1U6XFxuIFxcdFxcdC8qIFdoZW4gcmVmZXJlbmNlZCBQVFJfVE9fQlRGX0lEIGlzIHBhc3NlZCB0byByZWxlYXNlIGZ1bmN0aW9uLFxcbiBcXHRcXHQgKiBpdHMgZml4ZWQgb2Zmc2V0IG11c3QgYmUgMC4gSW4gdGhlIG90aGVyIGNhc2VzLCBmaXhlZCBvZmZzZXRcXG4tXFx0XFx0ICogY2FuIGJlIG5vbi16ZXJvLiBUaGlzIHdhcyBhbHJlYWR5IGNoZWNrZWQgYWJvdmUuIFNvIHBhc3NcXG4tXFx0XFx0ICogZml4ZWRfb2ZmX29rIGFzIHRydWUgdG8gYWxsb3cgZml4ZWQgb2Zmc2V0IGZvciBhbGwgb3RoZXJcXG4tXFx0XFx0ICogY2FzZXMuIHZhcl9vZmYgYWx3YXlzIG11c3QgYmUgMCBmb3IgUFRSX1RPX0JURl9JRCwgaGVuY2Ugd2VcXG4tXFx0XFx0ICogc3RpbGwgbmVlZCB0byBkbyBjaGVja3MgaW5zdGVhZCBvZiByZXR1cm5pbmcuXFxuK1xcdFxcdCAqIGNhbiBiZSBub24temVybyB1bmxlc3MgdGhlIGNhbGxlciByZXF1aXJlcyBvdGhlcndpc2UuXFxuK1xcdFxcdCAqIHZhcl9vZmYgYWx3YXlzIG11c3QgYmUgMCBmb3IgUFRSX1RPX0JURl9JRCwgaGVuY2Ugd2Ugc3RpbGxcXG4rXFx0XFx0ICogbmVlZCB0byBkbyBjaGVja3MgaW5zdGVhZCBvZiByZXR1cm5pbmcuXFxuIFxcdFxcdCAqL1xcbi1cXHRcXHRyZXR1cm4gX19jaGVja19wdHJfb2ZmX3JlZyhlbnYsIHJlZywgYXJnbm8sIHRydWUpO1xcbitcXHRcXHRyZXR1cm4gX19jaGVja19wdHJfb2ZmX3JlZyhlbnYsIHJlZywgYXJnbm8sIGJ0Zl9pZF9maXhlZF9vZmZfb2spO1xcbiBcXHRjYXNlIFBUUl9UT19DVFg6XFxuIFxcdFxcdC8qXFxuIFxcdFxcdCAqIEFsbG93IGZpeGVkIGFuZCB2YXJpYWJsZSBvZmZzZXRzIGZvciBzeXNjYWxsIGNvbnRleHQsIGJ1dFxcbkBAIC04MDcwLDYgKzgwNzAsMTMgQEAgc3RhdGljIGludCBjaGVja19mdW5jX2FyZ19yZWdfb2ZmKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsXFxuIFxcdH1cXG4gfVxcbiBcXG4rc3RhdGljIGludCBjaGVja19mdW5jX2FyZ19yZWdfb2ZmKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsXFxuK1xcdFxcdFxcdFxcdCAgY29uc3Qgc3RydWN0IGJwZl9yZWdfc3RhdGUgKnJlZywgYXJnbm9fdCBhcmdubyxcXG4rXFx0XFx0XFx0XFx0ICBlbnVtIGJwZl9hcmdfdHlwZSBhcmdfdHlwZSlcXG4re1xcbitcXHRyZXR1cm4gX19jaGVja19mdW5jX2FyZ19yZWdfb2ZmKGVudiwgcmVnLCBhcmdubywgYXJnX3R5cGUsIHRydWUpO1xcbit9XFxuK1xcbiBzdGF0aWMgaW50IGNoZWNrX2FyZ19jb25zdF9zdHIoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudixcXG4gXFx0XFx0XFx0ICAgICAgIHN0cnVjdCBicGZfcmVnX3N0YXRlICpyZWcsIGFyZ25vX3QgYXJnbm8pXFxuIHtcXG5AQCAtMTE5NDEsNiArMTE5NDgsNyBAQCBzdGF0aWMgaW50IGNoZWNrX2tmdW5jX2FyZ3Moc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgc3RydWN0IGJwZl9rZnVuY19jYWxsX1xcbiBcXHRcXHRlbnVtIGJwZl9hcmdfdHlwZSBhcmdfdHlwZSA9IEFSR19ET05UQ0FSRTtcXG4gXFx0XFx0YXJnbm9fdCBhcmdubyA9IGFyZ25vX2Zyb21fYXJnKGkgKyAxKTtcXG4gXFx0XFx0aW50IHJlZ25vID0gcmVnX2Zyb21fYXJnbm8oYXJnbm8pO1xcbitcXHRcXHRib29sIGJ0Zl9pZF9maXhlZF9vZmZfb2sgPSB0cnVlO1xcbiBcXHRcXHR1MzIgcmVmX2lkLCB0eXBlX3NpemU7XFxuIFxcdFxcdGJvb2wgaXNfcmV0X2J1Zl9zeiA9IGZhbHNlO1xcbiBcXHRcXHRpbnQga2ZfYXJnX3R5cGU7XFxuQEAgLTEyMTE0LDcgKzEyMTIyLDYgQEAgc3RhdGljIGludCBjaGVja19rZnVuY19hcmdzKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIHN0cnVjdCBicGZfa2Z1bmNfY2FsbF9cXG4gXFx0XFx0Y2FzZSBLRl9BUkdfUFRSX1RPX01FTTpcXG4gXFx0XFx0Y2FzZSBLRl9BUkdfUFRSX1RPX01FTV9TSVpFOlxcbiBcXHRcXHRjYXNlIEtGX0FSR19QVFJfVE9fQ0FMTEJBQ0s6XFxuLVxcdFxcdGNhc2UgS0ZfQVJHX1BUUl9UT19SRUZDT1VOVEVEX0tQVFI6XFxuIFxcdFxcdGNhc2UgS0ZfQVJHX1BUUl9UT19DT05TVF9TVFI6XFxuIFxcdFxcdGNhc2UgS0ZfQVJHX1BUUl9UT19XT1JLUVVFVUU6XFxuIFxcdFxcdGNhc2UgS0ZfQVJHX1BUUl9UT19USU1FUjpcXG5AQCAtMTIxMjgsNiArMTIxMzUsMTAgQEAgc3RhdGljIGludCBjaGVja19rZnVuY19hcmdzKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIHN0cnVjdCBicGZfa2Z1bmNfY2FsbF9cXG4gXFx0XFx0Y2FzZSBLRl9BUkdfUFRSX1RPX0NUWDpcXG4gXFx0XFx0XFx0YXJnX3R5cGUgPSBBUkdfUFRSX1RPX0NUWDtcXG4gXFx0XFx0XFx0YnJlYWs7XFxuK1xcdFxcdGNhc2UgS0ZfQVJHX1BUUl9UT19SRUZDT1VOVEVEX0tQVFI6XFxuK1xcdFxcdFxcdGFyZ190eXBlID0gQVJHX1BUUl9UT19CVEZfSUQ7XFxuK1xcdFxcdFxcdGJ0Zl9pZF9maXhlZF9vZmZfb2sgPSBmYWxzZTtcXG4rXFx0XFx0XFx0YnJlYWs7XFxuIFxcdFxcdGRlZmF1bHQ6XFxuIFxcdFxcdFxcdHZlcmlmaWVyX2J1ZyhlbnYsIFxcXCJ1bmtub3duIGtmdW5jIGFyZyB0eXBlICVkXFxcIiwga2ZfYXJnX3R5cGUpO1xcbiBcXHRcXHRcXHRyZXR1cm4gLUVGQVVMVDtcXG5AQCAtMTIxMzUsNyArMTIxNDYsOCBAQCBzdGF0aWMgaW50IGNoZWNrX2tmdW5jX2FyZ3Moc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgc3RydWN0IGJwZl9rZnVuY19jYWxsX1xcbiBcXG4gXFx0XFx0aWYgKHJlZ25vID09IG1ldGEtXFx1MDAzZXJlbGVhc2VfcmVnbm8pXFxuIFxcdFxcdFxcdGFyZ190eXBlIHw9IE9CSl9SRUxFQVNFO1xcbi1cXHRcXHRyZXQgPSBjaGVja19mdW5jX2FyZ19yZWdfb2ZmKGVudiwgcmVnLCBhcmdubywgYXJnX3R5cGUpO1xcbitcXHRcXHRyZXQgPSBfX2NoZWNrX2Z1bmNfYXJnX3JlZ19vZmYoZW52LCByZWcsIGFyZ25vLCBhcmdfdHlwZSxcXG4rXFx0XFx0XFx0XFx0XFx0ICAgICAgIGJ0Zl9pZF9maXhlZF9vZmZfb2spO1xcbiBcXHRcXHRpZiAocmV0IFxcdTAwM2MgMClcXG4gXFx0XFx0XFx0cmV0dXJuIHJldDtcXG4gXFxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9yZWZjb3VudGVkX2twdHJfZmFpbC5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3JlZmNvdW50ZWRfa3B0cl9mYWlsLmNcXG5pbmRleCA3MjQ3YTIwYzBhM2JmNS4uMDI0ZWYyYWFlMjAwODIgMTAwNjQ0XFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3JlZmNvdW50ZWRfa3B0cl9mYWlsLmNcXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvcmVmY291bnRlZF9rcHRyX2ZhaWwuY1xcbkBAIC0xMywxMiArMTMsMjAgQEAgc3RydWN0IG5vZGVfYWNxdWlyZSB7XFxuIFxcdHN0cnVjdCBicGZfcmVmY291bnQgcmVmY291bnQ7XFxuIH07XFxuIFxcbitzdHJ1Y3Qgbm9kZV9yZWZjb3VudGVkIHtcXG4rXFx0bG9uZyBrZXk7XFxuK1xcdHN0cnVjdCBicGZfbGlzdF9ub2RlIGxpc3Q7XFxuK1xcdHN0cnVjdCBicGZfcmVmY291bnQgcmVmY291bnQ7XFxuK307XFxuK1xcbiBleHRlcm4gdm9pZCBicGZfcmN1X3JlYWRfbG9jayh2b2lkKSBfX2tzeW07XFxuIGV4dGVybiB2b2lkIGJwZl9yY3VfcmVhZF91bmxvY2sodm9pZCkgX19rc3ltO1xcbiBcXG4gI2RlZmluZSBwcml2YXRlKG5hbWUpIFNFQyhcXFwiLmRhdGEuXFxcIiAjbmFtZSkgX19oaWRkZW4gX19hdHRyaWJ1dGVfXygoYWxpZ25lZCg4KSkpXFxuIHByaXZhdGUoQSkgc3RydWN0IGJwZl9zcGluX2xvY2sgZ2xvY2s7XFxuIHByaXZhdGUoQSkgc3RydWN0IGJwZl9yYl9yb290IGdyb290IF9fY29udGFpbnMobm9kZV9hY3F1aXJlLCBub2RlKTtcXG4rcHJpdmF0ZShCKSBzdHJ1Y3QgYnBmX3NwaW5fbG9jayBsb2NrO1xcbitwcml2YXRlKEIpIHN0cnVjdCBicGZfbGlzdF9oZWFkIGhlYWQgX19jb250YWlucyhub2RlX3JlZmNvdW50ZWQsIGxpc3QpO1xcbiBcXG4gc3RhdGljIGJvb2wgbGVzcyhzdHJ1Y3QgYnBmX3JiX25vZGUgKmEsIGNvbnN0IHN0cnVjdCBicGZfcmJfbm9kZSAqYilcXG4ge1xcbkBAIC05Myw2ICsxMDEsMzIgQEAgbG9uZyByYnRyZWVfcmVmY291bnRlZF9ub2RlX3JlZl9lc2NhcGVzX293bmluZ19pbnB1dCh2b2lkICpjdHgpXFxuIFxcdHJldHVybiAwO1xcbiB9XFxuIFxcbitTRUMoXFxcIj90Y1xcXCIpXFxuK19fZmFpbHVyZSBfX21zZyhcXFwiZGVyZWZlcmVuY2Ugb2YgbW9kaWZpZWQgcHRyXyBwdHIgUjFcXFwiKVxcbitsb25nIHJlZmNvdW50X2FjcXVpcmVfbGlzdF9ub2RlX29mZnNldCh2b2lkICpjdHgpXFxuK3tcXG4rXFx0c3RydWN0IG5vZGVfcmVmY291bnRlZCAqbm9kZSwgKmJhc2UsICpyZWY7XFxuK1xcdHN0cnVjdCBicGZfbGlzdF9ub2RlICpsaXN0X25vZGU7XFxuK1xcbitcXHRub2RlID0gYnBmX29ial9uZXcodHlwZW9mKCpub2RlKSk7XFxuK1xcdGlmICghbm9kZSlcXG4rXFx0XFx0cmV0dXJuIDE7XFxuK1xcbitcXHRicGZfc3Bpbl9sb2NrKFxcdTAwMjZsb2NrKTtcXG4rXFx0YnBmX2xpc3RfcHVzaF9mcm9udChcXHUwMDI2aGVhZCwgXFx1MDAyNm5vZGUtXFx1MDAzZWxpc3QpO1xcbitcXHRsaXN0X25vZGUgPSBicGZfbGlzdF9wb3BfZnJvbnQoXFx1MDAyNmhlYWQpO1xcbitcXHRicGZfc3Bpbl91bmxvY2soXFx1MDAyNmxvY2spO1xcbitcXHRpZiAoIWxpc3Rfbm9kZSlcXG4rXFx0XFx0cmV0dXJuIDI7XFxuK1xcbitcXHRiYXNlID0gY29udGFpbmVyX29mKGxpc3Rfbm9kZSwgc3RydWN0IG5vZGVfcmVmY291bnRlZCwgbGlzdCk7XFxuK1xcdHJlZiA9IGJwZl9yZWZjb3VudF9hY3F1aXJlKGxpc3Rfbm9kZSk7XFxuK1xcdGlmIChyZWYpXFxuK1xcdFxcdGJwZl9vYmpfZHJvcChyZWYpO1xcbitcXHRicGZfb2JqX2Ryb3AoYmFzZSk7XFxuK1xcdHJldHVybiAwO1xcbit9XFxuK1xcbiBTRUMoXFxcIj9mZW50cnkucy9cXFwiIFNZU19QUkVGSVggXFxcInN5c19nZXRwZ2lkXFxcIilcXG4gX19mYWlsdXJlIF9fbXNnKFxcXCJmdW5jdGlvbiBjYWxscyBhcmUgbm90IGFsbG93ZWQgd2hpbGUgaG9sZGluZyBhIGxvY2tcXFwiKVxcbiBpbnQgQlBGX1BST0cocmJ0cmVlX2ZhaWxfc2xlZXBhYmxlX2xvY2tfYWNyb3NzX3JjdSxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjNUMDY6MzY6NDUuNzA1NDc3MTExWiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxOTc4MDg1MzE3NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJCUEZfU1lTQ0FMTFwiLFxuICAgIFwiREVCVUdfSU5GT19CVEZcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJjaGVja19rZnVuY19hcmdzXCIsXG4gICAgXCJfX2NoZWNrX2Z1bmNfYXJnX3JlZ19vZmZcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgQlBGIHZlcmlmaWVyIHRvIHJlamVjdCBwYXNzaW5nIGEgbW9kaWZpZWQgcG9pbnRlciAod2l0aCBub24temVybyBmaXhlZCBvZmZzZXQpIHRvIGEga2Z1bmMgZXhwZWN0aW5nIGEgS0ZfQVJHX1BUUl9UT19SRUZDT1VOVEVEX0tQVFIuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgQlBGIHZlcmlmaWVyIGxvZ2ljLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG5ldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0XG4gICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksXG4gICBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IGIxMzE5Y2Y4ZWE2NWRiOWEyMGE5MDkwMThmOWM4OGZhYzBkMjEyZTdcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVHVlIEp1biAyMyAwNjozNjo0NCAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2tlcm5lbC9icGYvdmVyaWZpZXIuYyBiL2tlcm5lbC9icGYvdmVyaWZpZXIuY1xuaW5kZXggMmFiYzc5ZGJmMjgxYzIuLmY2NWVmZjI4ZWNkMjVlIDEwMDY0NFxuLS0tIGEva2VybmVsL2JwZi92ZXJpZmllci5jXG4rKysgYi9rZXJuZWwvYnBmL3ZlcmlmaWVyLmNcbkBAIC03OTkwLDkgKzc5OTAsMTAgQEAgcmVnX2ZpbmRfZmllbGRfb2Zmc2V0KGNvbnN0IHN0cnVjdCBicGZfcmVnX3N0YXRlICpyZWcsIHMzMiBvZmYsIHUzMiBmaWVsZHMpXG4gXHRyZXR1cm4gZmllbGQ7XG4gfVxuIFxuLXN0YXRpYyBpbnQgY2hlY2tfZnVuY19hcmdfcmVnX29mZihzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LFxuLVx0XHRcdFx0ICBjb25zdCBzdHJ1Y3QgYnBmX3JlZ19zdGF0ZSAqcmVnLCBhcmdub190IGFyZ25vLFxuLVx0XHRcdFx0ICBlbnVtIGJwZl9hcmdfdHlwZSBhcmdfdHlwZSlcbitzdGF0aWMgaW50IF9fY2hlY2tfZnVuY19hcmdfcmVnX29mZihzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LFxuK1x0XHRcdFx0ICAgIGNvbnN0IHN0cnVjdCBicGZfcmVnX3N0YXRlICpyZWcsIGFyZ25vX3QgYXJnbm8sXG4rXHRcdFx0XHQgICAgZW51bSBicGZfYXJnX3R5cGUgYXJnX3R5cGUsXG4rXHRcdFx0XHQgICAgYm9vbCBidGZfaWRfZml4ZWRfb2ZmX29rKVxuIHtcbiBcdHUzMiB0eXBlID0gcmVnLVx1MDAzZXR5cGU7XG4gXG5AQCAtODA0OSwxMiArODA1MCwxMSBAQCBzdGF0aWMgaW50IGNoZWNrX2Z1bmNfYXJnX3JlZ19vZmYoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudixcbiBcdGNhc2UgUFRSX1RPX0JURl9JRCB8IE1FTV9BTExPQyB8IE5PTl9PV05fUkVGIHwgTUVNX1JDVTpcbiBcdFx0LyogV2hlbiByZWZlcmVuY2VkIFBUUl9UT19CVEZfSUQgaXMgcGFzc2VkIHRvIHJlbGVhc2UgZnVuY3Rpb24sXG4gXHRcdCAqIGl0cyBmaXhlZCBvZmZzZXQgbXVzdCBiZSAwLiBJbiB0aGUgb3RoZXIgY2FzZXMsIGZpeGVkIG9mZnNldFxuLVx0XHQgKiBjYW4gYmUgbm9uLXplcm8uIFRoaXMgd2FzIGFscmVhZHkgY2hlY2tlZCBhYm92ZS4gU28gcGFzc1xuLVx0XHQgKiBmaXhlZF9vZmZfb2sgYXMgdHJ1ZSB0byBhbGxvdyBmaXhlZCBvZmZzZXQgZm9yIGFsbCBvdGhlclxuLVx0XHQgKiBjYXNlcy4gdmFyX29mZiBhbHdheXMgbXVzdCBiZSAwIGZvciBQVFJfVE9fQlRGX0lELCBoZW5jZSB3ZVxuLVx0XHQgKiBzdGlsbCBuZWVkIHRvIGRvIGNoZWNrcyBpbnN0ZWFkIG9mIHJldHVybmluZy5cbitcdFx0ICogY2FuIGJlIG5vbi16ZXJvIHVubGVzcyB0aGUgY2FsbGVyIHJlcXVpcmVzIG90aGVyd2lzZS5cbitcdFx0ICogdmFyX29mZiBhbHdheXMgbXVzdCBiZSAwIGZvciBQVFJfVE9fQlRGX0lELCBoZW5jZSB3ZSBzdGlsbFxuK1x0XHQgKiBuZWVkIHRvIGRvIGNoZWNrcyBpbnN0ZWFkIG9mIHJldHVybmluZy5cbiBcdFx0ICovXG4tXHRcdHJldHVybiBfX2NoZWNrX3B0cl9vZmZfcmVnKGVudiwgcmVnLCBhcmdubywgdHJ1ZSk7XG4rXHRcdHJldHVybiBfX2NoZWNrX3B0cl9vZmZfcmVnKGVudiwgcmVnLCBhcmdubywgYnRmX2lkX2ZpeGVkX29mZl9vayk7XG4gXHRjYXNlIFBUUl9UT19DVFg6XG4gXHRcdC8qXG4gXHRcdCAqIEFsbG93IGZpeGVkIGFuZCB2YXJpYWJsZSBvZmZzZXRzIGZvciBzeXNjYWxsIGNvbnRleHQsIGJ1dFxuQEAgLTgwNzAsNiArODA3MCwxMyBAQCBzdGF0aWMgaW50IGNoZWNrX2Z1bmNfYXJnX3JlZ19vZmYoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudixcbiBcdH1cbiB9XG4gXG4rc3RhdGljIGludCBjaGVja19mdW5jX2FyZ19yZWdfb2ZmKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsXG4rXHRcdFx0XHQgIGNvbnN0IHN0cnVjdCBicGZfcmVnX3N0YXRlICpyZWcsIGFyZ25vX3QgYXJnbm8sXG4rXHRcdFx0XHQgIGVudW0gYnBmX2FyZ190eXBlIGFyZ190eXBlKVxuK3tcbitcdHJldHVybiBfX2NoZWNrX2Z1bmNfYXJnX3JlZ19vZmYoZW52LCByZWcsIGFyZ25vLCBhcmdfdHlwZSwgdHJ1ZSk7XG4rfVxuK1xuIHN0YXRpYyBpbnQgY2hlY2tfYXJnX2NvbnN0X3N0cihzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LFxuIFx0XHRcdCAgICAgICBzdHJ1Y3QgYnBmX3JlZ19zdGF0ZSAqcmVnLCBhcmdub190IGFyZ25vKVxuIHtcbkBAIC0xMTk0MSw2ICsxMTk0OCw3IEBAIHN0YXRpYyBpbnQgY2hlY2tfa2Z1bmNfYXJncyhzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBzdHJ1Y3QgYnBmX2tmdW5jX2NhbGxfXG4gXHRcdGVudW0gYnBmX2FyZ190eXBlIGFyZ190eXBlID0gQVJHX0RPTlRDQVJFO1xuIFx0XHRhcmdub190IGFyZ25vID0gYXJnbm9fZnJvbV9hcmcoaSArIDEpO1xuIFx0XHRpbnQgcmVnbm8gPSByZWdfZnJvbV9hcmdubyhhcmdubyk7XG4rXHRcdGJvb2wgYnRmX2lkX2ZpeGVkX29mZl9vayA9IHRydWU7XG4gXHRcdHUzMiByZWZfaWQsIHR5cGVfc2l6ZTtcbiBcdFx0Ym9vbCBpc19yZXRfYnVmX3N6ID0gZmFsc2U7XG4gXHRcdGludCBrZl9hcmdfdHlwZTtcbkBAIC0xMjExNCw3ICsxMjEyMiw2IEBAIHN0YXRpYyBpbnQgY2hlY2tfa2Z1bmNfYXJncyhzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBzdHJ1Y3QgYnBmX2tmdW5jX2NhbGxfXG4gXHRcdGNhc2UgS0ZfQVJHX1BUUl9UT19NRU06XG4gXHRcdGNhc2UgS0ZfQVJHX1BUUl9UT19NRU1fU0laRTpcbiBcdFx0Y2FzZSBLRl9BUkdfUFRSX1RPX0NBTExCQUNLOlxuLVx0XHRjYXNlIEtGX0FSR19QVFJfVE9fUkVGQ09VTlRFRF9LUFRSOlxuIFx0XHRjYXNlIEtGX0FSR19QVFJfVE9fQ09OU1RfU1RSOlxuIFx0XHRjYXNlIEtGX0FSR19QVFJfVE9fV09SS1FVRVVFOlxuIFx0XHRjYXNlIEtGX0FSR19QVFJfVE9fVElNRVI6XG5AQCAtMTIxMjgsNiArMTIxMzUsMTAgQEAgc3RhdGljIGludCBjaGVja19rZnVuY19hcmdzKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIHN0cnVjdCBicGZfa2Z1bmNfY2FsbF9cbiBcdFx0Y2FzZSBLRl9BUkdfUFRSX1RPX0NUWDpcbiBcdFx0XHRhcmdfdHlwZSA9IEFSR19QVFJfVE9fQ1RYO1xuIFx0XHRcdGJyZWFrO1xuK1x0XHRjYXNlIEtGX0FSR19QVFJfVE9fUkVGQ09VTlRFRF9LUFRSOlxuK1x0XHRcdGFyZ190eXBlID0gQVJHX1BUUl9UT19CVEZfSUQ7XG4rXHRcdFx0YnRmX2lkX2ZpeGVkX29mZl9vayA9IGZhbHNlO1xuK1x0XHRcdGJyZWFrO1xuIFx0XHRkZWZhdWx0OlxuIFx0XHRcdHZlcmlmaWVyX2J1ZyhlbnYsIFwidW5rbm93biBrZnVuYyBhcmcgdHlwZSAlZFwiLCBrZl9hcmdfdHlwZSk7XG4gXHRcdFx0cmV0dXJuIC1FRkFVTFQ7XG5AQCAtMTIxMzUsNyArMTIxNDYsOCBAQCBzdGF0aWMgaW50IGNoZWNrX2tmdW5jX2FyZ3Moc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgc3RydWN0IGJwZl9rZnVuY19jYWxsX1xuIFxuIFx0XHRpZiAocmVnbm8gPT0gbWV0YS1cdTAwM2VyZWxlYXNlX3JlZ25vKVxuIFx0XHRcdGFyZ190eXBlIHw9IE9CSl9SRUxFQVNFO1xuLVx0XHRyZXQgPSBjaGVja19mdW5jX2FyZ19yZWdfb2ZmKGVudiwgcmVnLCBhcmdubywgYXJnX3R5cGUpO1xuK1x0XHRyZXQgPSBfX2NoZWNrX2Z1bmNfYXJnX3JlZ19vZmYoZW52LCByZWcsIGFyZ25vLCBhcmdfdHlwZSxcbitcdFx0XHRcdFx0ICAgICAgIGJ0Zl9pZF9maXhlZF9vZmZfb2spO1xuIFx0XHRpZiAocmV0IFx1MDAzYyAwKVxuIFx0XHRcdHJldHVybiByZXQ7XG4gXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3JlZmNvdW50ZWRfa3B0cl9mYWlsLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvcmVmY291bnRlZF9rcHRyX2ZhaWwuY1xuaW5kZXggNzI0N2EyMGMwYTNiZjUuLjAyNGVmMmFhZTIwMDgyIDEwMDY0NFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3JlZmNvdW50ZWRfa3B0cl9mYWlsLmNcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9yZWZjb3VudGVkX2twdHJfZmFpbC5jXG5AQCAtMTMsMTIgKzEzLDIwIEBAIHN0cnVjdCBub2RlX2FjcXVpcmUge1xuIFx0c3RydWN0IGJwZl9yZWZjb3VudCByZWZjb3VudDtcbiB9O1xuIFxuK3N0cnVjdCBub2RlX3JlZmNvdW50ZWQge1xuK1x0bG9uZyBrZXk7XG4rXHRzdHJ1Y3QgYnBmX2xpc3Rfbm9kZSBsaXN0O1xuK1x0c3RydWN0IGJwZl9yZWZjb3VudCByZWZjb3VudDtcbit9O1xuK1xuIGV4dGVybiB2b2lkIGJwZl9yY3VfcmVhZF9sb2NrKHZvaWQpIF9fa3N5bTtcbiBleHRlcm4gdm9pZCBicGZfcmN1X3JlYWRfdW5sb2NrKHZvaWQpIF9fa3N5bTtcbiBcbiAjZGVmaW5lIHByaXZhdGUobmFtZSkgU0VDKFwiLmRhdGEuXCIgI25hbWUpIF9faGlkZGVuIF9fYXR0cmlidXRlX18oKGFsaWduZWQoOCkpKVxuIHByaXZhdGUoQSkgc3RydWN0IGJwZl9zcGluX2xvY2sgZ2xvY2s7XG4gcHJpdmF0ZShBKSBzdHJ1Y3QgYnBmX3JiX3Jvb3QgZ3Jvb3QgX19jb250YWlucyhub2RlX2FjcXVpcmUsIG5vZGUpO1xuK3ByaXZhdGUoQikgc3RydWN0IGJwZl9zcGluX2xvY2sgbG9jaztcbitwcml2YXRlKEIpIHN0cnVjdCBicGZfbGlzdF9oZWFkIGhlYWQgX19jb250YWlucyhub2RlX3JlZmNvdW50ZWQsIGxpc3QpO1xuIFxuIHN0YXRpYyBib29sIGxlc3Moc3RydWN0IGJwZl9yYl9ub2RlICphLCBjb25zdCBzdHJ1Y3QgYnBmX3JiX25vZGUgKmIpXG4ge1xuQEAgLTkzLDYgKzEwMSwzMiBAQCBsb25nIHJidHJlZV9yZWZjb3VudGVkX25vZGVfcmVmX2VzY2FwZXNfb3duaW5nX2lucHV0KHZvaWQgKmN0eClcbiBcdHJldHVybiAwO1xuIH1cbiBcbitTRUMoXCI/dGNcIilcbitfX2ZhaWx1cmUgX19tc2coXCJkZXJlZmVyZW5jZSBvZiBtb2RpZmllZCBwdHJfIHB0ciBSMVwiKVxuK2xvbmcgcmVmY291bnRfYWNxdWlyZV9saXN0X25vZGVfb2Zmc2V0KHZvaWQgKmN0eClcbit7XG4rXHRzdHJ1Y3Qgbm9kZV9yZWZjb3VudGVkICpub2RlLCAqYmFzZSwgKnJlZjtcbitcdHN0cnVjdCBicGZfbGlzdF9ub2RlICpsaXN0X25vZGU7XG4rXG4rXHRub2RlID0gYnBmX29ial9uZXcodHlwZW9mKCpub2RlKSk7XG4rXHRpZiAoIW5vZGUpXG4rXHRcdHJldHVybiAxO1xuK1xuK1x0YnBmX3NwaW5fbG9jayhcdTAwMjZsb2NrKTtcbitcdGJwZl9saXN0X3B1c2hfZnJvbnQoXHUwMDI2aGVhZCwgXHUwMDI2bm9kZS1cdTAwM2VsaXN0KTtcbitcdGxpc3Rfbm9kZSA9IGJwZl9saXN0X3BvcF9mcm9udChcdTAwMjZoZWFkKTtcbitcdGJwZl9zcGluX3VubG9jayhcdTAwMjZsb2NrKTtcbitcdGlmICghbGlzdF9ub2RlKVxuK1x0XHRyZXR1cm4gMjtcbitcbitcdGJhc2UgPSBjb250YWluZXJfb2YobGlzdF9ub2RlLCBzdHJ1Y3Qgbm9kZV9yZWZjb3VudGVkLCBsaXN0KTtcbitcdHJlZiA9IGJwZl9yZWZjb3VudF9hY3F1aXJlKGxpc3Rfbm9kZSk7XG4rXHRpZiAocmVmKVxuK1x0XHRicGZfb2JqX2Ryb3AocmVmKTtcbitcdGJwZl9vYmpfZHJvcChiYXNlKTtcbitcdHJldHVybiAwO1xuK31cbitcbiBTRUMoXCI/ZmVudHJ5LnMvXCIgU1lTX1BSRUZJWCBcInN5c19nZXRwZ2lkXCIpXG4gX19mYWlsdXJlIF9fbXNnKFwiZnVuY3Rpb24gY2FsbHMgYXJlIG5vdCBhbGxvd2VkIHdoaWxlIGhvbGRpbmcgYSBsb2NrXCIpXG4gaW50IEJQRl9QUk9HKHJidHJlZV9mYWlsX3NsZWVwYWJsZV9sb2NrX2Fjcm9zc19yY3UsXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yM1QwNjozNjo0NS43MDU0Nzg3NzFaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo3MzM5NzY3NDMzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIEJQRiBWZXJpZmllciBQYXRjaCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggdGhhdCB0d2Vha3MgdGhlIEJQRiB2ZXJpZmllciwgc3BlY2lmaWNhbGx5IHdpdGhpbiBga2VybmVsL2JwZi92ZXJpZmllci5jYC4gSXQncyBhIHByZXR0eSB0YXJnZXRlZCBjaGFuZ2UsIGJ1dCBpdCBoYXMgaW1wb3J0YW50IGltcGxpY2F0aW9ucyBmb3IgaG93IHdlIGhhbmRsZSByZWZjb3VudGVkIHBvaW50ZXJzIHdpdGggb2Zmc2V0cyBpbiBCUEYga2Z1bmNzLiBUaGUgbWFpbiB0aGluZyBpcyB0aGF0IGBjaGVja19mdW5jX2FyZ19yZWdfb2ZmYCBpcyBub3cgcmVuYW1lZCB0byBgX19jaGVja19mdW5jX2FyZ19yZWdfb2ZmYCBhbmQgdGFrZXMgYW4gZXh0cmEgYm9vbGVhbiwgYGJ0Zl9pZF9maXhlZF9vZmZfb2tgLiBUaGlzIGNoYW5nZSBpcyBjb3VwbGVkIHdpdGggYW4gdXBkYXRlIHRvIGBjaGVja19rZnVuY19hcmdzYCB3aGVyZSB3ZSBub3cgcGFzcyBgYnRmX2lkX2ZpeGVkX29mZl9vayA9IGZhbHNlYCB3aGVuIGRlYWxpbmcgd2l0aCBgS0ZfQVJHX1BUUl9UT19SRUZDT1VOVEVEX0tQVFJgLiBUaGUgZWZmZWN0IGlzIHRoYXQgd2UgYXJlIG1vcmUgcmVzdHJpY3RpdmUgbm93LiBXZSBwcmV2ZW50IHBhc3NpbmcgYSBwb2ludGVyIHdpdGggYSBmaXhlZCwgbm9uLXplcm8gb2Zmc2V0IHRvIGEga2Z1bmMgd2hlbiBpdCBpcyBleHBlY3RpbmcgYSByZWZjb3VudGVkIHBvaW50ZXIuIEkgc2VlIHRoZSBpbnRlbnRpb24gaXMgdG8gcHJldmVudCBhIHNjZW5hcmlvIHdoZXJlIGEgbW9kaWZpZWQgcG9pbnRlciBnZXRzIG1pc3VzZWQuXG5cblRoZSBzZWxmdGVzdCBgcmVmY291bnRlZF9rcHRyX2ZhaWwuY2AgaGFzIGEgbmV3IHRlc3QsIGByZWZjb3VudF9hY3F1aXJlX2xpc3Rfbm9kZV9vZmZzZXRgLCB3aGljaCBhaW1zIHRvIHRyaWdnZXIgdGhpcyBuZXcgdmVyaWZpY2F0aW9uLiBUaGUgdGVzdCAqZXhwZWN0cyogYSBmYWlsdXJlLCBcImRlcmVmZXJlbmNlIG9mIG1vZGlmaWVkIHB0cl8gcHRyIFIxXCIsIHdoaWNoIGNvbmZpcm1zIG91ciBzdXNwaWNpb24gYWJvdXQgdGhlIGNoYW5nZS5cblxuVGhpcyBpcyBmdW5kYW1lbnRhbGx5IGEgZnVuY3Rpb25hbCBtb2RpZmljYXRpb24gdG8gdGhlIEJQRiB2ZXJpZmllciwgd2hpY2ggaW5kaWNhdGVzIGEgYnVnIGZpeCBvciwgbW9yZSBsaWtlbHksIGEgbmV3bHkgYWRkZWQgcmVzdHJpY3Rpb24uIEl04oCZcyBkZWZpbml0ZWx5IGEgY2hhbmdlIHRoYXQgY291bGQgaW50cm9kdWNlIHN1YnRsZSBiZWhhdmlvciBkaWZmZXJlbmNlcywgYW5kIHRoZXJlZm9yZSwgaXQncyBhIHByaW1lIGNhbmRpZGF0ZSBmb3IgZnV6emluZy4gV2UgbmVlZCB0byBiZSBjYXJlZnVsIHdpdGggdGhpcy5cblxuTm93LCBsZXQncyBpZGVudGlmeSB0aGUga2V5IGZvY3VzIHN5bWJvbHMgZm9yIGZ1cnRoZXIgaW52ZXN0aWdhdGlvbi4gRnJvbSB0aGUgZGlmZiwgaXTigJlzIGNsZWFyIHRoYXQgdGhlIG1vZGlmaWVkIGZ1bmN0aW9ucyBhcmU6IGBfX2NoZWNrX2Z1bmNfYXJnX3JlZ19vZmZgLCBgY2hlY2tfZnVuY19hcmdfcmVnX29mZmAgYW5kIGBjaGVja19rZnVuY19hcmdzYC4gYGNoZWNrX2tmdW5jX2FyZ3NgIGxvb2tzIGxpa2UgYSBnb29kIHBsYWNlIHRvIHN0YXJ0LCBnaXZlbiBpdHMgY2VudHJhbCByb2xlIGluIGFyZ3VtZW50IGNoZWNraW5nLiBgX19jaGVja19mdW5jX2FyZ19yZWdfb2ZmYCBpcyBhbm90aGVyIGNyaXRpY2FsIGFyZWEgdG8gZXhhbWluZS5cblxuV2UgbmVlZCB0byBtYWtlIHN1cmUgd2UgaGF2ZSB0aGUgYXBwcm9wcmlhdGUgQlBGIGNvbmZpZ3MgZW5hYmxlZCwgc3BlY2lmaWNhbGx5IGBDT05GSUdfQlBGX1NZU0NBTExgLiBOb3csIGxldCdzIGRpdmUgaW50byB0aGUgY29kZSBhbmQgdmVyaWZ5IHRoZSBpbXBhY3Qgb2YgdGhpcyBjaGFuZ2UuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM4NDMsIk91dHB1dFRva2VucyI6MjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNDcsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yM1QwNjozNjo1My4wNDUyNDc5NTRaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTg1OTYwMjI3MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjaGVja19rZnVuY19hcmdzXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImtlcm5lbC9icGYvdmVyaWZpZXIuYz0xMTg5Nz1zdGF0aWMgYm9vbCBjaGVja19jc3NfdGFza19pdGVyX2FsbG93bGlzdChzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52KVxcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTExOTEyLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxMTkxMzpzdGF0aWMgaW50IGNoZWNrX2tmdW5jX2FyZ3Moc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgc3RydWN0IGJwZl9rZnVuY19jYWxsX2FyZ19tZXRhICptZXRhLFxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMTkxNC1cXHRcXHRcXHQgICAgaW50IGluc25faWR4KVxcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jPTEyODk4PXN0YXRpYyBpbnQgY2hlY2tfa2Z1bmNfY2FsbChzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBzdHJ1Y3QgYnBmX2luc24gKmluc24sXFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTI5NzQtXFx0LyogQ2hlY2sgdGhlIGFyZ3VtZW50cyAqL1xcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxMjk3NTpcXHRlcnIgPSBjaGVja19rZnVuY19hcmdzKGVudiwgXFx1MDAyNm1ldGEsIGluc25faWR4KTtcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTI5NzYtXFx0aWYgKGVyciBcXHUwMDNjIDApXFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTMyNjEtXFx0XFx0ZWxzZVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxMzI2MjpcXHRcXHRcXHQvKiBzY2FsYXIuIGVuc3VyZWQgYnkgY2hlY2tfa2Z1bmNfYXJncygpICovXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTEzMjYzLVxcdFxcdFxcdG1hcmtfYnRmX2Z1bmNfcmVnX3NpemUoZW52LCByZWdubywgdC1cXHUwMDNlc2l6ZSk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTIzVDA2OjM2OjU0LjkwNDg1OTU0NFoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM2NjA5Mjc1MDIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgcHJlc2VudGVkIGluIHRoZSBmaXJzdCBwZXJzb246XG5cbioqS2VybmVsIENvbmZpZ3VyYXRpb24gRGVwZW5kZW5jaWVzKipcblxuQWxyaWdodCwgc28gSSdtIHRoaW5raW5nIGFib3V0IHRoZSBrZXJuZWwgY29uZmlndXJhdGlvbnMgcmVxdWlyZWQgZm9yIHRoaXMgcGFydGljdWxhciBCUEYgcHJvZ3JhbS4gSXQncyBjbGVhciB0aGF0IHdlJ2xsIGRlZmluaXRlbHkgbmVlZCBgQlBGX1NZU0NBTExgIOKAkyB0aGF0J3MgYSBnaXZlbiwgc2luY2Ugd2UncmUgaW50ZXJhY3Rpbmcgd2l0aCBzeXNjYWxscy4gQnV0LCBiZWNhdXNlIGl0IHJlbGllcyBvbiBCVEYgSURzLCBJJ20gZ29pbmcgdG8gd2FudCB0byB2ZXJpZnkgdGhhdCBgREVCVUdfSU5GT19CVEZgIGlzIGFsc28gZW5hYmxlZC4gVGhhdCdzIHByYWN0aWNhbGx5IGEgcHJlcmVxdWlzaXRlIGlmIHdlIHdhbnQgc3ltYm9sIGluZm9ybWF0aW9uIGFuZCB0eXBlIGluZm9ybWF0aW9uLiBJJ20gaW1hZ2luaW5nIGl0J2QgYmUgcXVpdGUgZGlmZmljdWx0IHRvIHdvcmsgd2l0aCB3aXRob3V0IGl0LlxuXG5Ob3csIGJlZm9yZSBJIHByb2NlZWQgdG9vIGZhciBkb3duIHRoZSBpbXBsZW1lbnRhdGlvbiBwYXRoLCBJIHNob3VsZCByZWFsbHkgY2hlY2sgaWYgdGhlcmUgYXJlIGFueSBzcGVjaWZpYyBrZXJuZWwgY29uZmlndXJhdGlvbnMgb3IgYnVpbGQgZmxhZ3MgcmVsYXRlZCB0byB0aGUgYGJwZl9yZWZjb3VudF9hY3F1aXJlYCBmdW5jdGlvbiBpdHNlbGYuIEkgc2hvdWxkIGNoZWNrIGlmIHRoZXJlJ3MgYW55IHNwZWNpYWxpemVkIGNvbmZpZ3VyYXRpb24gdGhhdCBuZWVkcyB0byBiZSBjb25zaWRlcmVkIHRvIHVzZSB0aGF0IHBhcnRpY3VsYXIgZnVuY3Rpb24uIEkgbmVlZCB0byBtYWtlIHN1cmUgSSBoYXZlbid0IG1pc3NlZCBhbnl0aGluZyBvYnZpb3VzLiBJJ2xsIG5lZWQgdG8gZG8gc29tZSBkaWdnaW5nIHRvIG1ha2Ugc3VyZSBJIGhhdmVuJ3QgbWlzc2VkIGFueSBzcGVjaWFsaXplZCwgb3IgcG9zc2libHkgZXZlbiBoaWRkZW4sIGNvbmZpZ3VyYXRpb24gb3B0aW9ucy5cblxuXG4iLCJJbnB1dFRva2VucyI6NTA3MSwiT3V0cHV0VG9rZW5zIjoyMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQ5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTIzVDA2OjM2OjU4LjU2NTc4OTA1NloiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxOTE0NTgwMTc5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImJwZl9yZWZjb3VudF9hY3F1aXJlXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImluY2x1ZGUvbGludXgvYnBmX3ZlcmlmaWVyLmg9MTQ0MT1zdHJ1Y3QgYnBmX2tmdW5jX2NhbGxfYXJnX21ldGEge1xcbi0tXFxuaW5jbHVkZS9saW51eC9icGZfdmVyaWZpZXIuaC0xNDYzLVxcdCAqICAgICBSZWNvcmQgdGhlIGxvY2FsIGtwdHIgdHlwZSB0byBiZSBkcm9wJ2RcXG5pbmNsdWRlL2xpbnV4L2JwZl92ZXJpZmllci5oOjE0NjQ6XFx0ICogICBicGZfcmVmY291bnRfYWNxdWlyZSAodmlhIEtGX0FSR19QVFJfVE9fUkVGQ09VTlRFRF9LUFRSIGFyZyB0eXBlKVxcbmluY2x1ZGUvbGludXgvYnBmX3ZlcmlmaWVyLmgtMTQ2NS1cXHQgKiAgICAgUmVjb3JkIHRoZSBsb2NhbCBrcHRyIHR5cGUgdG8gYmUgcmVmY291bnRfaW5jcidkIGFuZCB1c2VcXG4tLVxcbmtlcm5lbC9icGYvaGVscGVycy5jPTI0NDk9X19icGZfa2Z1bmMgdm9pZCBicGZfcGVyY3B1X29ial9kcm9wX2ltcGwodm9pZCAqcF9fYWxsb2MsIHZvaWQgKm1ldGFfX2lnbilcXG4tLVxcbmtlcm5lbC9icGYvaGVscGVycy5jLTI0NTQtLyoqXFxua2VybmVsL2JwZi9oZWxwZXJzLmM6MjQ1NTogKiBicGZfcmVmY291bnRfYWNxdWlyZSgpIC0gdHVybiBhIGxvY2FsIGtwdHIgaW50byBhbiBvd25pbmcgcmVmZXJlbmNlXFxua2VybmVsL2JwZi9oZWxwZXJzLmMtMjQ1Ni0gKiBAcF9fcmVmY291bnRlZF9rcHRyOiBub24tb3duaW5nIGxvY2FsIGtwdHJcXG4tLVxcbmtlcm5lbC9icGYvaGVscGVycy5jLTI0NjMtICovXFxua2VybmVsL2JwZi9oZWxwZXJzLmM6MjQ2NDpfX2JwZl9rZnVuYyB2b2lkICpicGZfcmVmY291bnRfYWNxdWlyZSh2b2lkICpwX19yZWZjb3VudGVkX2twdHIsIHN0cnVjdCBidGZfc3RydWN0X21ldGEgKm1ldGEpXFxua2VybmVsL2JwZi9oZWxwZXJzLmMtMjQ2NS17XFxuLS1cXG5rZXJuZWwvYnBmL2hlbHBlcnMuYy0yNDgwLVxcbmtlcm5lbC9icGYvaGVscGVycy5jOjI0ODE6X19icGZfa2Z1bmMgdm9pZCAqYnBmX3JlZmNvdW50X2FjcXVpcmVfaW1wbCh2b2lkICpwX19yZWZjb3VudGVkX2twdHIsIHZvaWQgKm1ldGFfX2lnbilcXG5rZXJuZWwvYnBmL2hlbHBlcnMuYy0yNDgyLXtcXG5rZXJuZWwvYnBmL2hlbHBlcnMuYzoyNDgzOlxcdHJldHVybiBicGZfcmVmY291bnRfYWNxdWlyZShwX19yZWZjb3VudGVkX2twdHIsIG1ldGFfX2lnbik7XFxua2VybmVsL2JwZi9oZWxwZXJzLmMtMjQ4NC19XFxuLS1cXG5rZXJuZWwvYnBmL2hlbHBlcnMuYz00ODEzPUJURl9JRF9GTEFHUyhmdW5jLCBicGZfcGVyY3B1X29ial9kcm9wX2ltcGwsIEtGX1JFTEVBU0UpXFxua2VybmVsL2JwZi9oZWxwZXJzLmM6NDgxNDpCVEZfSURfRkxBR1MoZnVuYywgYnBmX3JlZmNvdW50X2FjcXVpcmUsIEtGX0FDUVVJUkUgfCBLRl9SRVRfTlVMTCB8IEtGX1JDVSB8IEtGX0lNUExJQ0lUX0FSR1MpXFxua2VybmVsL2JwZi9oZWxwZXJzLmM6NDgxNTpCVEZfSURfRkxBR1MoZnVuYywgYnBmX3JlZmNvdW50X2FjcXVpcmVfaW1wbCwgS0ZfQUNRVUlSRSB8IEtGX1JFVF9OVUxMIHwgS0ZfUkNVKVxcbmtlcm5lbC9icGYvaGVscGVycy5jLTQ4MTYtQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9saXN0X3B1c2hfZnJvbnQsIEtGX0lNUExJQ0lUX0FSR1MpXFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9MTA5ODk9ZW51bSBzcGVjaWFsX2tmdW5jX3R5cGUge1xcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTEwOTkzLVxcdEtGX2JwZl9vYmpfZHJvcCxcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTA5OTQ6XFx0S0ZfYnBmX3JlZmNvdW50X2FjcXVpcmVfaW1wbCxcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTA5OTU6XFx0S0ZfYnBmX3JlZmNvdW50X2FjcXVpcmUsXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTEwOTk2LVxcdEtGX2JwZl9saXN0X3B1c2hfZnJvbnRfaW1wbCxcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYz0xMTA2Nj1CVEZfSUQoZnVuYywgYnBmX29ial9kcm9wKVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxMTA2NzpCVEZfSUQoZnVuYywgYnBmX3JlZmNvdW50X2FjcXVpcmVfaW1wbClcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTEwNjg6QlRGX0lEKGZ1bmMsIGJwZl9yZWZjb3VudF9hY3F1aXJlKVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMTA2OS1CVEZfSUQoZnVuYywgYnBmX2xpc3RfcHVzaF9mcm9udF9pbXBsKVxcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jPTExMTc2PXN0YXRpYyBib29sIGlzX2JwZl9wZXJjcHVfb2JqX2Ryb3Bfa2Z1bmModTMyIGZ1bmNfaWQpXFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTExODEtXFxua2VybmVsL2JwZi92ZXJpZmllci5jOjExMTgyOnN0YXRpYyBib29sIGlzX2JwZl9yZWZjb3VudF9hY3F1aXJlX2tmdW5jKHUzMiBmdW5jX2lkKVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMTE4My17XFxua2VybmVsL2JwZi92ZXJpZmllci5jOjExMTg0OlxcdHJldHVybiBmdW5jX2lkID09IHNwZWNpYWxfa2Z1bmNfbGlzdFtLRl9icGZfcmVmY291bnRfYWNxdWlyZV0gfHxcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTExODU6XFx0ICAgICAgIGZ1bmNfaWQgPT0gc3BlY2lhbF9rZnVuY19saXN0W0tGX2JwZl9yZWZjb3VudF9hY3F1aXJlX2ltcGxdO1xcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMTE4Ni19XFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9MTEyMDk9c3RhdGljIGJvb2wgaXNfa2Z1bmNfcmV0X251bGwoc3RydWN0IGJwZl9rZnVuY19jYWxsX2FyZ19tZXRhICptZXRhKVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMTIxMC17XFxua2VybmVsL2JwZi92ZXJpZmllci5jOjExMjExOlxcdGlmIChpc19icGZfcmVmY291bnRfYWNxdWlyZV9rZnVuYyhtZXRhLVxcdTAwM2VmdW5jX2lkKSBcXHUwMDI2XFx1MDAyNiBtZXRhLVxcdTAwM2Vhcmdfb3duaW5nX3JlZilcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTEyMTItXFx0XFx0cmV0dXJuIGZhbHNlO1xcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jPTExNjE3PXN0YXRpYyBib29sIGlzX2JwZl9ncmFwaF9hcGlfa2Z1bmModTMyIGJ0Zl9pZClcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMTYyMC1cXHQgICAgICAgaXNfYnBmX3JidHJlZV9hcGlfa2Z1bmMoYnRmX2lkKSB8fFxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxMTYyMTpcXHQgICAgICAgaXNfYnBmX3JlZmNvdW50X2FjcXVpcmVfa2Z1bmMoYnRmX2lkKTtcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTE2MjItfVxcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jPTEyNzI3PXN0YXRpYyBpbnQgY2hlY2tfc3BlY2lhbF9rZnVuYyhzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBzdHJ1Y3QgYnBmX2tmdW5jX2NhbGxfYXJnX21ldGEgKm1ldGEsXFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTI4MTUtXFx0XFx0aW5zbl9hdXgtXFx1MDAzZWtwdHJfc3RydWN0X21ldGEgPSBzdHJ1Y3RfbWV0YTtcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTI4MTY6XFx0fSBlbHNlIGlmIChpc19icGZfcmVmY291bnRfYWNxdWlyZV9rZnVuYyhtZXRhLVxcdTAwM2VmdW5jX2lkKSkge1xcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMjgxNy1cXHRcXHRtYXJrX3JlZ19rbm93bl96ZXJvKGVudiwgcmVncywgQlBGX1JFR18wKTtcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYz0xMjg5OD1zdGF0aWMgaW50IGNoZWNrX2tmdW5jX2NhbGwoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgc3RydWN0IGJwZl9pbnNuICppbnNuLFxcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTEzMTE4LVxcdFxcdCAgICAgIWlzX2JwZl9wZXJjcHVfb2JqX25ld19rZnVuYyhtZXRhLmZ1bmNfaWQpIFxcdTAwMjZcXHUwMDI2XFxua2VybmVsL2JwZi92ZXJpZmllci5jOjEzMTE5OlxcdFxcdCAgICAgIWlzX2JwZl9yZWZjb3VudF9hY3F1aXJlX2tmdW5jKG1ldGEuZnVuY19pZCkpKSB7XFxua2VybmVsL2JwZi92ZXJpZmllci5jLTEzMTIwLVxcdFxcdFxcdHZlcmJvc2UoZW52LCBcXFwiYWNxdWlyZSBrZXJuZWwgZnVuY3Rpb24gZG9lcyBub3QgcmV0dXJuIFBUUl9UT19CVEZfSURcXFxcblxcXCIpO1xcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jPTE5NTc0PWludCBicGZfZml4dXBfa2Z1bmNfY2FsbChzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBzdHJ1Y3QgYnBmX2luc24gKmluc24sXFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTk2MjItXFx0XFx0ICAgaXNfYnBmX3BlcmNwdV9vYmpfZHJvcF9rZnVuYyhkZXNjLVxcdTAwM2VmdW5jX2lkKSB8fFxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxOTYyMzpcXHRcXHQgICBpc19icGZfcmVmY291bnRfYWNxdWlyZV9rZnVuYyhkZXNjLVxcdTAwM2VmdW5jX2lkKSkge1xcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xOTYyNC1cXHRcXHRzdHJ1Y3QgYnRmX3N0cnVjdF9tZXRhICprcHRyX3N0cnVjdF9tZXRhID0gZW52LVxcdTAwM2VpbnNuX2F1eF9kYXRhW2luc25faWR4XS5rcHRyX3N0cnVjdF9tZXRhO1xcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTE5NjMyLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxOTYzMzpcXHRcXHRpZiAoaXNfYnBmX3JlZmNvdW50X2FjcXVpcmVfa2Z1bmMoZGVzYy1cXHUwMDNlZnVuY19pZCkgXFx1MDAyNlxcdTAwMjYgIWtwdHJfc3RydWN0X21ldGEpIHtcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTk2MzQtXFx0XFx0XFx0dmVyaWZpZXJfYnVnKGVudiwgXFxcImtwdHJfc3RydWN0X21ldGEgZXhwZWN0ZWQgYXQgaW5zbl9pZHggJWRcXFwiLFxcbi0tXFxudG9vbHMvc2NoZWRfZXh0L2luY2x1ZGUvc2N4L2NvbW1vbi5icGYuaD0zODQ9c3RydWN0IGJwZl9yYl9ub2RlICpicGZfcmJ0cmVlX2ZpcnN0KHN0cnVjdCBicGZfcmJfcm9vdCAqcm9vdCkgX19rc3ltO1xcbnRvb2xzL3NjaGVkX2V4dC9pbmNsdWRlL3NjeC9jb21tb24uYnBmLmgtMzg1LVxcbnRvb2xzL3NjaGVkX2V4dC9pbmNsdWRlL3NjeC9jb21tb24uYnBmLmg6Mzg2OnZvaWQgKmJwZl9yZWZjb3VudF9hY3F1aXJlX2ltcGwodm9pZCAqa3B0ciwgdm9pZCAqbWV0YSkgX19rc3ltO1xcbnRvb2xzL3NjaGVkX2V4dC9pbmNsdWRlL3NjeC9jb21tb24uYnBmLmg6Mzg3OiNkZWZpbmUgYnBmX3JlZmNvdW50X2FjcXVpcmUoa3B0cikgYnBmX3JlZmNvdW50X2FjcXVpcmVfaW1wbChrcHRyLCBOVUxMKVxcbnRvb2xzL3NjaGVkX2V4dC9pbmNsdWRlL3NjeC9jb21tb24uYnBmLmgtMzg4LVxcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2JwZl9xZGlzY19mcS5jPTMwMz1pbnQgQlBGX1BST0coYnBmX2ZxX2VucXVldWUsIHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBRZGlzYyAqc2NoLFxcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2JwZl9xZGlzY19mcS5jLTM0NC1cXHRcXHRpZiAoZnFfZmxvd19pc19kZXRhY2hlZChmbG93KSkge1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9icGZfcWRpc2NfZnEuYzozNDU6XFx0XFx0XFx0Zmxvd19jb3B5ID0gYnBmX3JlZmNvdW50X2FjcXVpcmUoZmxvdyk7XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2JwZl9xZGlzY19mcS5jLTM0Ni1cXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9sb2NhbF9rcHRyX3N0YXNoLmM9MjM0PWxvbmcgcmVmY291bnRfYWNxdWlyZV93aXRob3V0X3Vuc3Rhc2godm9pZCAqY3R4KVxcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2xvY2FsX2twdHJfc3Rhc2guYy0yNDktXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2xvY2FsX2twdHJfc3Rhc2guYzoyNTA6XFx0cCA9IGJwZl9yZWZjb3VudF9hY3F1aXJlKHMtXFx1MDAzZXN0YXNoZWQpO1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9sb2NhbF9rcHRyX3N0YXNoLmMtMjUxLVxcdGlmICghcClcXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9yYnRyZWVfc2VhcmNoLmM9NTM9bG9uZyByYnRyZWVfc2VhcmNoKHZvaWQgKmN0eClcXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9yYnRyZWVfc2VhcmNoLmMtNjQtXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3JidHJlZV9zZWFyY2guYzo2NTpcXHRcXHRtID0gYnBmX3JlZmNvdW50X2FjcXVpcmUobik7XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3JidHJlZV9zZWFyY2guYy02Ni1cXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9yYnRyZWVfc2VhcmNoLmMtMTA4LVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9yYnRyZWVfc2VhcmNoLmM6MTA5OlxcdG0gPSBicGZfcmVmY291bnRfYWNxdWlyZShuKTtcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvcmJ0cmVlX3NlYXJjaC5jLTExMC1cXHRicGZfc3Bpbl91bmxvY2soXFx1MDAyNmdsb2NrMCk7XFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvcmJ0cmVlX3NlYXJjaC5jPTE1Nj1sb25nIHRlc3RfIyNvcCMjX3NwaW5sb2NrXyMjZG9sb2NrKHZvaWQgKmN0eClcXHRcXHRcXFxcXFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvcmJ0cmVlX3NlYXJjaC5jLTE2OC1cXHRuID0gcmJfZW50cnkocmJfbiwgc3RydWN0IG5vZGVfZGF0YSwgcjApO1xcdFxcXFxcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvcmJ0cmVlX3NlYXJjaC5jOjE2OTpcXHRuID0gYnBmX3JlZmNvdW50X2FjcXVpcmUobik7XFx0XFx0XFx0XFxcXFxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9yYnRyZWVfc2VhcmNoLmMtMTcwLVxcdGJwZl9zcGluX3VubG9jayhcXHUwMDI2Z2xvY2swKTtcXHRcXHRcXHRcXFxcXFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvcmJ0cmVlX3NlYXJjaF9rcHRyLmM9MTU1PWxvbmcgcmJ0cmVlX3NlYXJjaF9rcHRyX3JlZih2b2lkICpjdHgpXFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvcmJ0cmVlX3NlYXJjaF9rcHRyLmMtMTgyLVxcdFxcdC8qIFVudXNlZCByZWZlcmVuY2UgKi9cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvcmJ0cmVlX3NlYXJjaF9rcHRyLmM6MTgzOlxcdFxcdHRub2RlX20gPSBicGZfcmVmY291bnRfYWNxdWlyZSh0bm9kZV9yKTtcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvcmJ0cmVlX3NlYXJjaF9rcHRyLmMtMTg0LVxcdFxcdGlmICghdG5vZGVfbSlcXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9yZWZjb3VudGVkX2twdHIuYz03Mz1zdGF0aWMgbG9uZyBfX2luc2VydF9pbl90cmVlX2FuZF9saXN0KHN0cnVjdCBicGZfbGlzdF9oZWFkICpoZWFkLFxcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3JlZmNvdW50ZWRfa3B0ci5jLTgyLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9yZWZjb3VudGVkX2twdHIuYzo4MzpcXHRtID0gYnBmX3JlZmNvdW50X2FjcXVpcmUobik7XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3JlZmNvdW50ZWRfa3B0ci5jLTg0LVxcdG0tXFx1MDAzZWtleSA9IDEyMztcXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9yZWZjb3VudGVkX2twdHIuYz0xMDY9c3RhdGljIGxvbmcgX19zdGFzaF9tYXBfaW5zZXJ0X3RyZWUoaW50IGlkeCwgaW50IHZhbCwgc3RydWN0IGJwZl9yYl9yb290ICpyb290LFxcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3JlZmNvdW50ZWRfa3B0ci5jLTEyMC1cXHRuLVxcdTAwM2VrZXkgPSB2YWw7XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3JlZmNvdW50ZWRfa3B0ci5jOjEyMTpcXHRtID0gYnBmX3JlZmNvdW50X2FjcXVpcmUobik7XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3JlZmNvdW50ZWRfa3B0ci5jLTEyMi1cXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9yZWZjb3VudGVkX2twdHIuYz0zOTk9c3RhdGljIHN0cnVjdCBub2RlX2RhdGEgKl9fYWRkX2luX2xpc3Qoc3RydWN0IGJwZl9saXN0X2hlYWQgKmhlYWQsXFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvcmVmY291bnRlZF9rcHRyLmMtNDA3LVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9yZWZjb3VudGVkX2twdHIuYzo0MDg6XFx0bm9kZV9yZWYgPSBicGZfcmVmY291bnRfYWNxdWlyZShub2RlX25ldyk7XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3JlZmNvdW50ZWRfa3B0ci5jLTQwOS1cXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9yZWZjb3VudGVkX2twdHIuYz03OTM9bG9uZyByYnRyZWVfcmVmY291bnRlZF9ub2RlX3JlZl9lc2NhcGVzKHZvaWQgKmN0eClcXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9yZWZjb3VudGVkX2twdHIuYy04MDItXFx0YnBmX3JidHJlZV9hZGQoXFx1MDAyNmFyb290LCBcXHUwMDI2bi1cXHUwMDNlbm9kZSwgbGVzc19hKTtcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvcmVmY291bnRlZF9rcHRyLmM6ODAzOlxcdG0gPSBicGZfcmVmY291bnRfYWNxdWlyZShuKTtcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvcmVmY291bnRlZF9rcHRyLmMtODA0LVxcdGJwZl9zcGluX3VubG9jayhcXHUwMDI2YWxvY2spO1xcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3JlZmNvdW50ZWRfa3B0ci5jPTgxNT1sb25nIHJidHJlZV9yZWZjb3VudGVkX25vZGVfcmVmX2VzY2FwZXNfb3duaW5nX2lucHV0KHZvaWQgKmN0eClcXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9yZWZjb3VudGVkX2twdHIuYy04MjItXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3JlZmNvdW50ZWRfa3B0ci5jOjgyMzpcXHRtID0gYnBmX3JlZmNvdW50X2FjcXVpcmUobik7XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3JlZmNvdW50ZWRfa3B0ci5jLTgyNC1cXHRtLVxcdTAwM2VrZXkgPSAyO1xcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3JlZmNvdW50ZWRfa3B0ci5jPTg1Mj1sb25nIHJidHJlZV93cm9uZ19vd25lcl9yZW1vdmVfZmFpbF9hMSh2b2lkICpjdHgpXFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvcmVmY291bnRlZF9rcHRyLmMtODU4LVxcdFxcdHJldHVybiAxO1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9yZWZjb3VudGVkX2twdHIuYzo4NTk6XFx0bSA9IGJwZl9yZWZjb3VudF9hY3F1aXJlKG4pO1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9yZWZjb3VudGVkX2twdHIuYy04NjAtXFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvcmVmY291bnRlZF9rcHRyLmM9MTAwMj1zdGF0aWMgaW50IF9faW5zZXJ0X2luX2xpc3Qoc3RydWN0IGJwZl9saXN0X2hlYWQgKmhlYWQsIHN0cnVjdCBicGZfc3Bpbl9sb2NrICpsb2NrLFxcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3JlZmNvdW50ZWRfa3B0ci5jLTEwMTAtXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3JlZmNvdW50ZWRfa3B0ci5jOjEwMTE6XFx0bm9kZV9yZWYgPSBicGZfcmVmY291bnRfYWNxdWlyZShub2RlX25ldyk7XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3JlZmNvdW50ZWRfa3B0ci5jLTEwMTItXFx0bm9kZV9vbGQgPSBicGZfa3B0cl94Y2hnKG5vZGUsIG5vZGVfbmV3KTtcXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9yZWZjb3VudGVkX2twdHJfZmFpbC5jPTQ0PWxvbmcgcmJ0cmVlX3JlZmNvdW50ZWRfbm9kZV9yZWZfZXNjYXBlcyh2b2lkICpjdHgpXFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvcmVmY291bnRlZF9rcHRyX2ZhaWwuYy01NC1cXHQvKiBtIGJlY29tZXMgYW4gb3duaW5nIHJlZiBidXQgaXMgbmV2ZXIgZHJvcCdkIG9yIGFkZGVkIHRvIGEgdHJlZSAqL1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9yZWZjb3VudGVkX2twdHJfZmFpbC5jOjU1OlxcdG0gPSBicGZfcmVmY291bnRfYWNxdWlyZShuKTtcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvcmVmY291bnRlZF9rcHRyX2ZhaWwuYy01Ni1cXHRicGZfc3Bpbl91bmxvY2soXFx1MDAyNmdsb2NrKTtcXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9yZWZjb3VudGVkX2twdHJfZmFpbC5jPTY2PWxvbmcgcmVmY291bnRfYWNxdWlyZV9tYXliZV9udWxsKHZvaWQgKmN0eClcXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9yZWZjb3VudGVkX2twdHJfZmFpbC5jLTczLVxcdCAqL1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9yZWZjb3VudGVkX2twdHJfZmFpbC5jOjc0OlxcdG0gPSBicGZfcmVmY291bnRfYWNxdWlyZShuKTtcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvcmVmY291bnRlZF9rcHRyX2ZhaWwuYy03NS1cXHRpZiAobSlcXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9yZWZjb3VudGVkX2twdHJfZmFpbC5jPTg1PWxvbmcgcmJ0cmVlX3JlZmNvdW50ZWRfbm9kZV9yZWZfZXNjYXBlc19vd25pbmdfaW5wdXQodm9pZCAqY3R4KVxcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3JlZmNvdW50ZWRfa3B0cl9mYWlsLmMtOTMtXFx0LyogbSBiZWNvbWVzIGFuIG93bmluZyByZWYgYnV0IGlzIG5ldmVyIGRyb3AnZCBvciBhZGRlZCB0byBhIHRyZWUgKi9cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvcmVmY291bnRlZF9rcHRyX2ZhaWwuYzo5NDpcXHRtID0gYnBmX3JlZmNvdW50X2FjcXVpcmUobik7XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3JlZmNvdW50ZWRfa3B0cl9mYWlsLmMtOTUtXFx0bS1cXHUwMDNla2V5ID0gMjtcXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9yZWZjb3VudGVkX2twdHJfZmFpbC5jPTEwNj1sb25nIHJlZmNvdW50X2FjcXVpcmVfbGlzdF9ub2RlX29mZnNldCh2b2lkICpjdHgpXFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvcmVmY291bnRlZF9rcHRyX2ZhaWwuYy0xMjItXFx0YmFzZSA9IGNvbnRhaW5lcl9vZihsaXN0X25vZGUsIHN0cnVjdCBub2RlX3JlZmNvdW50ZWQsIGxpc3QpO1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9yZWZjb3VudGVkX2twdHJfZmFpbC5jOjEyMzpcXHRyZWYgPSBicGZfcmVmY291bnRfYWNxdWlyZShsaXN0X25vZGUpO1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9yZWZjb3VudGVkX2twdHJfZmFpbC5jLTEyNC1cXHRpZiAocmVmKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yM1QwNjozNzowMC40ODAzNzQ4NDVaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0OTMwNjM1NjE1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFzc2Vzc21lbnQgb2YgdGhlIEJQRiBWZXJpZmllciBDaGFuZ2UqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoLiBNeSBpbW1lZGlhdGUgZm9jdXMgaXMgb24gdGhlIGNvbmZpZ3VyYXRpb25zOiBgQ09ORklHX0JQRl9TWVNDQUxMYCBhbmQgYENPTkZJR19ERUJVR19JTkZPX0JURmAuIFRoZXNlIGFyZSBjcnVjaWFsIGNvbnRleHQgaW5kaWNhdG9ycyDigJMgdGhleSB0ZWxsIG1lIHdoYXQgcGFydHMgb2YgdGhlIEJQRiBlY29zeXN0ZW0gdGhpcyBpcyB0b3VjaGluZy4gR2l2ZW4gdGhlIG5hdHVyZSBvZiB0aGUgY2hhbmdlLCBJJ20gYWxyZWFkeSBpbmNsaW5lZCB0byBtYXJrIGl0IGFzIGBXb3J0aEZ1enppbmdgLiBUaGlzIGlzIGRlZmluaXRlbHkgc29tZXRoaW5nIHRoYXQgbmVlZHMgdGhvcm91Z2ggc2NydXRpbnkuXG5cblRoZSBoZWFydCBvZiB0aGUgY2hhbmdlIHJldm9sdmVzIGFyb3VuZCB0aGUgQlBGIHZlcmlmaWVyJ3MgaGFuZGxpbmcgb2YgcG9pbnRlcnMgcGFzc2VkIHRvIGtmdW5jcywgc3BlY2lmaWNhbGx5IHRob3NlIGV4cGVjdGluZyBgS0ZfQVJHX1BUUl9UT19SRUZDT1VOVEVEX0tQVFJgLiBUaGUgcGF0Y2ggc2VlbXMgdG8gYmUgaW50cm9kdWNpbmcgYSBzdHJpY3RlciBjaGVjaywgcmVqZWN0aW5nIG1vZGlmaWVkIHBvaW50ZXJzIOKAkyBtZWFuaW5nIHRob3NlIHdpdGggYSBub24temVybyBmaXhlZCBvZmZzZXQg4oCTIGluIHRoaXMgcGFydGljdWxhciBzY2VuYXJpby5cblxuSSBuZWVkIHRvIGRpZyBkZWVwZXIsIGJ1dCBteSBpbml0aWFsIHRob3VnaHQgaXMgdGhhdCB0aGlzIGlzIGEgZnVuY3Rpb25hbCBtb2RpZmljYXRpb24gdG8gdGhlIHZlcmlmaWVyIGxvZ2ljLiBJJ2xsIGJlIGZvY3VzaW5nIG15IGF0dGVudGlvbiBvbiBgY2hlY2tfa2Z1bmNfYXJnc2AgYW5kIGBfX2NoZWNrX2Z1bmNfYXJnX3JlZ19vZmZgIHRvIGdyYXNwIHRoZSBudWFuY2VzIG9mIHRoaXMgdGlnaHRlbmVkIGNoZWNrIGFuZCBpdHMgaW1wYWN0LiBUaGlzIGlzIHNvbWV0aGluZyB0aGF0IGNvdWxkIHBvdGVudGlhbGx5IGV4cG9zZSBzdWJ0bGUgYnV0IGltcG9ydGFudCBpc3N1ZXMsIHNvIGNhcmVmdWwgdGVzdGluZyBpcyBpbiBvcmRlci5cblxuXG4iLCJJbnB1dFRva2VucyI6MTAzNTcsIk91dHB1dFRva2VucyI6MTI1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTIyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTIzVDA2OjM3OjA1LjQxMTAxMjY4WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3NTMxMzQ0OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQlBGX1NZU0NBTExcIixcbiAgICBcIkRFQlVHX0lORk9fQlRGXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiY2hlY2tfa2Z1bmNfYXJnc1wiLFxuICAgIFwiX19jaGVja19mdW5jX2FyZ19yZWdfb2ZmXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIEJQRiB2ZXJpZmllciB0byByZWplY3QgcGFzc2luZyBhIG1vZGlmaWVkIHBvaW50ZXIgKHdpdGggbm9uLXplcm8gZml4ZWQgb2Zmc2V0KSB0byBhIGtmdW5jIGV4cGVjdGluZyBhIEtGX0FSR19QVFJfVE9fUkVGQ09VTlRFRF9LUFRSLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIEJQRiB2ZXJpZmllciBsb2dpYy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJCUEZfU1lTQ0FMTFwiLFxuICAgIFwiREVCVUdfSU5GT19CVEZcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJjaGVja19rZnVuY19hcmdzXCIsXG4gICAgXCJfX2NoZWNrX2Z1bmNfYXJnX3JlZ19vZmZcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgQlBGIHZlcmlmaWVyIHRvIHJlamVjdCBwYXNzaW5nIGEgbW9kaWZpZWQgcG9pbnRlciAod2l0aCBub24temVybyBmaXhlZCBvZmZzZXQpIHRvIGEga2Z1bmMgZXhwZWN0aW5nIGEgS0ZfQVJHX1BUUl9UT19SRUZDT1VOVEVEX0tQVFIuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgQlBGIHZlcmlmaWVyIGxvZ2ljLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowt8zdw[1] Phase: Succeeded StartedAt: 2026-06-23 06:37:17 +0000 UTC FinishedAt: 2026-06-23 06:37:17 +0000 UTC Input: nil Output: nil --------- Name: series-workflowt8zdw[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-06-23 06:37:17 +0000 UTC FinishedAt: 2026-06-23 06:37:17 +0000 UTC Input: nil Output: nil --------- Name: series-workflowt8zdw[2] Phase: Succeeded StartedAt: 2026-06-23 06:37:17 +0000 UTC FinishedAt: 2026-06-23 10:40:04 +0000 UTC Input: nil Output: nil --------- Name: series-workflowt8zdw[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a975094bf98ca97be9146f9d3b5681a6f9cf5ce3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","DEBUG_INFO_BTF"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["check_kfunc_args","__check_func_arg_reg_off"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a975094bf98ca97be9146f9d3b5681a6f9cf5ce3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","DEBUG_INFO_BTF"],"series_id":"1b23a61d-fb92-4a8e-99a8-8ab90e1bc681","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-06-23 06:37:17 +0000 UTC FinishedAt: 2026-06-23 10:40:04 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"a975094bf98ca97be9146f9d3b5681a6f9cf5ce3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","DEBUG_INFO_BTF"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["check_kfunc_args","__check_func_arg_reg_off"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"a975094bf98ca97be9146f9d3b5681a6f9cf5ce3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","DEBUG_INFO_BTF"],"series_id":"1b23a61d-fb92-4a8e-99a8-8ab90e1bc681","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowt8zdw[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a975094bf98ca97be9146f9d3b5681a6f9cf5ce3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","DEBUG_INFO_BTF"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["check_kfunc_args","__check_func_arg_reg_off"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a975094bf98ca97be9146f9d3b5681a6f9cf5ce3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","DEBUG_INFO_BTF"],"series_id":"1b23a61d-fb92-4a8e-99a8-8ab90e1bc681","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-06-23 06:37:17 +0000 UTC FinishedAt: 2026-06-23 06:37:27 +0000 UTC Input: nil Output: nil --------- Name: series-workflowt8zdw[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a975094bf98ca97be9146f9d3b5681a6f9cf5ce3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","DEBUG_INFO_BTF"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["check_kfunc_args","__check_func_arg_reg_off"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a975094bf98ca97be9146f9d3b5681a6f9cf5ce3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","DEBUG_INFO_BTF"],"series_id":"1b23a61d-fb92-4a8e-99a8-8ab90e1bc681","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-06-23 06:37:17 +0000 UTC FinishedAt: 2026-06-23 06:37:24 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"a975094bf98ca97be9146f9d3b5681a6f9cf5ce3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","DEBUG_INFO_BTF"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowt8zdw/series-workflowt8zdw-convert-artifact-3177044433/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowt8zdw[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a975094bf98ca97be9146f9d3b5681a6f9cf5ce3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","DEBUG_INFO_BTF"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["check_kfunc_args","__check_func_arg_reg_off"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a975094bf98ca97be9146f9d3b5681a6f9cf5ce3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","DEBUG_INFO_BTF"],"series_id":"1b23a61d-fb92-4a8e-99a8-8ab90e1bc681","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-06-23 06:37:27 +0000 UTC FinishedAt: 2026-06-23 07:01:53 +0000 UTC Input: nil Output: nil --------- Name: series-workflowt8zdw[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a975094bf98ca97be9146f9d3b5681a6f9cf5ce3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","DEBUG_INFO_BTF"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["check_kfunc_args","__check_func_arg_reg_off"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a975094bf98ca97be9146f9d3b5681a6f9cf5ce3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","DEBUG_INFO_BTF"],"series_id":"1b23a61d-fb92-4a8e-99a8-8ab90e1bc681","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-06-23 06:37:27 +0000 UTC FinishedAt: 2026-06-23 07:01:53 +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:*ffa0ce98-895f-4c9e-b7eb-6dc6d1500538,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-workflowt8zdw/series-workflowt8zdw-convert-artifact-3177044433/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": "cc898b20-d586-4935-a824-005e7c344c21", "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-workflowt8zdw/series-workflowt8zdw-build-action-1751020415/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowt8zdw[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a975094bf98ca97be9146f9d3b5681a6f9cf5ce3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","DEBUG_INFO_BTF"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["check_kfunc_args","__check_func_arg_reg_off"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a975094bf98ca97be9146f9d3b5681a6f9cf5ce3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","DEBUG_INFO_BTF"],"series_id":"1b23a61d-fb92-4a8e-99a8-8ab90e1bc681","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-06-23 06:37:27 +0000 UTC FinishedAt: 2026-06-23 07:01:43 +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:*ffa0ce98-895f-4c9e-b7eb-6dc6d1500538,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-workflowt8zdw/series-workflowt8zdw-convert-artifact-3177044433/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": "cc898b20-d586-4935-a824-005e7c344c21", "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-workflowt8zdw/series-workflowt8zdw-build-action-1751020415/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowt8zdw[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a975094bf98ca97be9146f9d3b5681a6f9cf5ce3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","DEBUG_INFO_BTF"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["check_kfunc_args","__check_func_arg_reg_off"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a975094bf98ca97be9146f9d3b5681a6f9cf5ce3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","DEBUG_INFO_BTF"],"series_id":"1b23a61d-fb92-4a8e-99a8-8ab90e1bc681","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-06-23 07:01:53 +0000 UTC FinishedAt: 2026-06-23 07:01:53 +0000 UTC Input: nil Output: nil --------- Name: series-workflowt8zdw[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a975094bf98ca97be9146f9d3b5681a6f9cf5ce3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","DEBUG_INFO_BTF"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["check_kfunc_args","__check_func_arg_reg_off"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a975094bf98ca97be9146f9d3b5681a6f9cf5ce3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","DEBUG_INFO_BTF"],"series_id":"1b23a61d-fb92-4a8e-99a8-8ab90e1bc681","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-06-23 07:01:53 +0000 UTC FinishedAt: 2026-06-23 07:01:53 +0000 UTC Input: nil Output: nil --------- Name: series-workflowt8zdw[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a975094bf98ca97be9146f9d3b5681a6f9cf5ce3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","DEBUG_INFO_BTF"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["check_kfunc_args","__check_func_arg_reg_off"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a975094bf98ca97be9146f9d3b5681a6f9cf5ce3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","DEBUG_INFO_BTF"],"series_id":"1b23a61d-fb92-4a8e-99a8-8ab90e1bc681","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-06-23 07:01:53 +0000 UTC FinishedAt: 2026-06-23 07:02:14 +0000 UTC Input: nil Output: nil --------- Name: series-workflowt8zdw[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a975094bf98ca97be9146f9d3b5681a6f9cf5ce3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","DEBUG_INFO_BTF"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["check_kfunc_args","__check_func_arg_reg_off"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a975094bf98ca97be9146f9d3b5681a6f9cf5ce3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","DEBUG_INFO_BTF"],"series_id":"1b23a61d-fb92-4a8e-99a8-8ab90e1bc681","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-06-23 07:01:53 +0000 UTC FinishedAt: 2026-06-23 07:02:01 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"a975094bf98ca97be9146f9d3b5681a6f9cf5ce3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","DEBUG_INFO_BTF"],"series_id":"1b23a61d-fb92-4a8e-99a8-8ab90e1bc681","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowt8zdw/series-workflowt8zdw-convert-artifact-900535460/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowt8zdw[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a975094bf98ca97be9146f9d3b5681a6f9cf5ce3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","DEBUG_INFO_BTF"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["check_kfunc_args","__check_func_arg_reg_off"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a975094bf98ca97be9146f9d3b5681a6f9cf5ce3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","DEBUG_INFO_BTF"],"series_id":"1b23a61d-fb92-4a8e-99a8-8ab90e1bc681","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-06-23 07:02:14 +0000 UTC FinishedAt: 2026-06-23 07:04:22 +0000 UTC Input: nil Output: nil --------- Name: series-workflowt8zdw[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a975094bf98ca97be9146f9d3b5681a6f9cf5ce3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","DEBUG_INFO_BTF"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["check_kfunc_args","__check_func_arg_reg_off"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a975094bf98ca97be9146f9d3b5681a6f9cf5ce3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","DEBUG_INFO_BTF"],"series_id":"1b23a61d-fb92-4a8e-99a8-8ab90e1bc681","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-06-23 07:02:14 +0000 UTC FinishedAt: 2026-06-23 07:04:12 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*cc898b20-d586-4935-a824-005e7c344c21,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-workflowt8zdw/series-workflowt8zdw-build-action-1751020415/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-workflowt8zdw[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a975094bf98ca97be9146f9d3b5681a6f9cf5ce3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","DEBUG_INFO_BTF"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["check_kfunc_args","__check_func_arg_reg_off"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a975094bf98ca97be9146f9d3b5681a6f9cf5ce3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","DEBUG_INFO_BTF"],"series_id":"1b23a61d-fb92-4a8e-99a8-8ab90e1bc681","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-06-23 07:04:22 +0000 UTC FinishedAt: 2026-06-23 07:04:22 +0000 UTC Input: nil Output: nil --------- Name: series-workflowt8zdw[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a975094bf98ca97be9146f9d3b5681a6f9cf5ce3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","DEBUG_INFO_BTF"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["check_kfunc_args","__check_func_arg_reg_off"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a975094bf98ca97be9146f9d3b5681a6f9cf5ce3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","DEBUG_INFO_BTF"],"series_id":"1b23a61d-fb92-4a8e-99a8-8ab90e1bc681","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-06-23 07:04:22 +0000 UTC FinishedAt: 2026-06-23 07:04:22 +0000 UTC Input: nil Output: nil --------- Name: series-workflowt8zdw[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a975094bf98ca97be9146f9d3b5681a6f9cf5ce3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","DEBUG_INFO_BTF"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["check_kfunc_args","__check_func_arg_reg_off"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a975094bf98ca97be9146f9d3b5681a6f9cf5ce3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","DEBUG_INFO_BTF"],"series_id":"1b23a61d-fb92-4a8e-99a8-8ab90e1bc681","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-06-23 07:04:22 +0000 UTC FinishedAt: 2026-06-23 07:31:50 +0000 UTC Input: nil Output: nil --------- Name: series-workflowt8zdw[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a975094bf98ca97be9146f9d3b5681a6f9cf5ce3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","DEBUG_INFO_BTF"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["check_kfunc_args","__check_func_arg_reg_off"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a975094bf98ca97be9146f9d3b5681a6f9cf5ce3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","DEBUG_INFO_BTF"],"series_id":"1b23a61d-fb92-4a8e-99a8-8ab90e1bc681","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-06-23 07:04:22 +0000 UTC FinishedAt: 2026-06-23 07:31:50 +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:*ffa0ce98-895f-4c9e-b7eb-6dc6d1500538,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-workflowt8zdw/series-workflowt8zdw-convert-artifact-900535460/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": "f6c19d92-b144-44a2-a4c9-74078248787e", "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-workflowt8zdw/series-workflowt8zdw-build-action-2347469616/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowt8zdw[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a975094bf98ca97be9146f9d3b5681a6f9cf5ce3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","DEBUG_INFO_BTF"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["check_kfunc_args","__check_func_arg_reg_off"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a975094bf98ca97be9146f9d3b5681a6f9cf5ce3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","DEBUG_INFO_BTF"],"series_id":"1b23a61d-fb92-4a8e-99a8-8ab90e1bc681","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-06-23 07:04:22 +0000 UTC FinishedAt: 2026-06-23 07:30:48 +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:*ffa0ce98-895f-4c9e-b7eb-6dc6d1500538,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-workflowt8zdw/series-workflowt8zdw-convert-artifact-900535460/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": "f6c19d92-b144-44a2-a4c9-74078248787e", "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-workflowt8zdw/series-workflowt8zdw-build-action-2347469616/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowt8zdw[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a975094bf98ca97be9146f9d3b5681a6f9cf5ce3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","DEBUG_INFO_BTF"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["check_kfunc_args","__check_func_arg_reg_off"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a975094bf98ca97be9146f9d3b5681a6f9cf5ce3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","DEBUG_INFO_BTF"],"series_id":"1b23a61d-fb92-4a8e-99a8-8ab90e1bc681","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-06-23 07:31:50 +0000 UTC FinishedAt: 2026-06-23 07:31:50 +0000 UTC Input: nil Output: nil --------- Name: series-workflowt8zdw[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a975094bf98ca97be9146f9d3b5681a6f9cf5ce3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","DEBUG_INFO_BTF"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["check_kfunc_args","__check_func_arg_reg_off"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a975094bf98ca97be9146f9d3b5681a6f9cf5ce3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","DEBUG_INFO_BTF"],"series_id":"1b23a61d-fb92-4a8e-99a8-8ab90e1bc681","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-06-23 07:31:50 +0000 UTC FinishedAt: 2026-06-23 07:31:50 +0000 UTC Input: nil Output: nil --------- Name: series-workflowt8zdw[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a975094bf98ca97be9146f9d3b5681a6f9cf5ce3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","DEBUG_INFO_BTF"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["check_kfunc_args","__check_func_arg_reg_off"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a975094bf98ca97be9146f9d3b5681a6f9cf5ce3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","DEBUG_INFO_BTF"],"series_id":"1b23a61d-fb92-4a8e-99a8-8ab90e1bc681","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-06-23 07:31:50 +0000 UTC FinishedAt: 2026-06-23 07:33:52 +0000 UTC Input: nil Output: nil --------- Name: series-workflowt8zdw[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a975094bf98ca97be9146f9d3b5681a6f9cf5ce3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","DEBUG_INFO_BTF"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["check_kfunc_args","__check_func_arg_reg_off"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a975094bf98ca97be9146f9d3b5681a6f9cf5ce3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","DEBUG_INFO_BTF"],"series_id":"1b23a61d-fb92-4a8e-99a8-8ab90e1bc681","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-06-23 07:31:50 +0000 UTC FinishedAt: 2026-06-23 07:33:42 +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:*f6c19d92-b144-44a2-a4c9-74078248787e,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-workflowt8zdw/series-workflowt8zdw-build-action-2347469616/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-workflowt8zdw[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a975094bf98ca97be9146f9d3b5681a6f9cf5ce3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","DEBUG_INFO_BTF"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["check_kfunc_args","__check_func_arg_reg_off"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a975094bf98ca97be9146f9d3b5681a6f9cf5ce3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","DEBUG_INFO_BTF"],"series_id":"1b23a61d-fb92-4a8e-99a8-8ab90e1bc681","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-06-23 07:33:52 +0000 UTC FinishedAt: 2026-06-23 10:40:04 +0000 UTC Input: nil Output: nil --------- Name: series-workflowt8zdw[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a975094bf98ca97be9146f9d3b5681a6f9cf5ce3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","DEBUG_INFO_BTF"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["check_kfunc_args","__check_func_arg_reg_off"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a975094bf98ca97be9146f9d3b5681a6f9cf5ce3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","DEBUG_INFO_BTF"],"series_id":"1b23a61d-fb92-4a8e-99a8-8ab90e1bc681","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-06-23 07:33:52 +0000 UTC FinishedAt: 2026-06-23 10:40:04 +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-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["check_kfunc_args","__check_func_arg_reg_off"],"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:*cc898b20-d586-4935-a824-005e7c344c21,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*f6c19d92-b144-44a2-a4c9-74078248787e,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-workflowt8zdw/series-workflowt8zdw-build-action-1751020415/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-workflowt8zdw/series-workflowt8zdw-build-action-2347469616/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowt8zdw[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a975094bf98ca97be9146f9d3b5681a6f9cf5ce3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","DEBUG_INFO_BTF"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["check_kfunc_args","__check_func_arg_reg_off"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a975094bf98ca97be9146f9d3b5681a6f9cf5ce3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","DEBUG_INFO_BTF"],"series_id":"1b23a61d-fb92-4a8e-99a8-8ab90e1bc681","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-06-23 07:33:52 +0000 UTC FinishedAt: 2026-06-23 07:34:02 +0000 UTC Input: nil Output: nil --------- Name: series-workflowt8zdw[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a975094bf98ca97be9146f9d3b5681a6f9cf5ce3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","DEBUG_INFO_BTF"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["check_kfunc_args","__check_func_arg_reg_off"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a975094bf98ca97be9146f9d3b5681a6f9cf5ce3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","DEBUG_INFO_BTF"],"series_id":"1b23a61d-fb92-4a8e-99a8-8ab90e1bc681","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-06-23 07:33:52 +0000 UTC FinishedAt: 2026-06-23 07:33:58 +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-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["check_kfunc_args","__check_func_arg_reg_off"],"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-workflowt8zdw/series-workflowt8zdw-convert-artifact-2710357293/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowt8zdw[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a975094bf98ca97be9146f9d3b5681a6f9cf5ce3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","DEBUG_INFO_BTF"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["check_kfunc_args","__check_func_arg_reg_off"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a975094bf98ca97be9146f9d3b5681a6f9cf5ce3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","DEBUG_INFO_BTF"],"series_id":"1b23a61d-fb92-4a8e-99a8-8ab90e1bc681","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-06-23 07:33:52 +0000 UTC FinishedAt: 2026-06-23 07:33:52 +0000 UTC Input: nil Output: nil --------- Name: series-workflowt8zdw[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a975094bf98ca97be9146f9d3b5681a6f9cf5ce3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","DEBUG_INFO_BTF"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["check_kfunc_args","__check_func_arg_reg_off"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a975094bf98ca97be9146f9d3b5681a6f9cf5ce3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","DEBUG_INFO_BTF"],"series_id":"1b23a61d-fb92-4a8e-99a8-8ab90e1bc681","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-06-23 07:33:52 +0000 UTC FinishedAt: 2026-06-23 07:33:52 +0000 UTC Input: nil Output: nil --------- Name: series-workflowt8zdw[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a975094bf98ca97be9146f9d3b5681a6f9cf5ce3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","DEBUG_INFO_BTF"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["check_kfunc_args","__check_func_arg_reg_off"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a975094bf98ca97be9146f9d3b5681a6f9cf5ce3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","DEBUG_INFO_BTF"],"series_id":"1b23a61d-fb92-4a8e-99a8-8ab90e1bc681","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-06-23 07:33:52 +0000 UTC FinishedAt: 2026-06-23 07:33:52 +0000 UTC Input: nil Output: nil --------- Name: series-workflowt8zdw[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a975094bf98ca97be9146f9d3b5681a6f9cf5ce3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","DEBUG_INFO_BTF"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["check_kfunc_args","__check_func_arg_reg_off"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a975094bf98ca97be9146f9d3b5681a6f9cf5ce3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","DEBUG_INFO_BTF"],"series_id":"1b23a61d-fb92-4a8e-99a8-8ab90e1bc681","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-06-23 07:34:02 +0000 UTC FinishedAt: 2026-06-23 10:40:04 +0000 UTC Input: nil Output: nil --------- Name: series-workflowt8zdw[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a975094bf98ca97be9146f9d3b5681a6f9cf5ce3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","DEBUG_INFO_BTF"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["check_kfunc_args","__check_func_arg_reg_off"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a975094bf98ca97be9146f9d3b5681a6f9cf5ce3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","DEBUG_INFO_BTF"],"series_id":"1b23a61d-fb92-4a8e-99a8-8ab90e1bc681","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-06-23 07:34:02 +0000 UTC FinishedAt: 2026-06-23 10:39:53 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*cc898b20-d586-4935-a824-005e7c344c21,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*f6c19d92-b144-44a2-a4c9-74078248787e,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-workflowt8zdw/series-workflowt8zdw-build-action-1751020415/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-workflowt8zdw/series-workflowt8zdw-build-action-2347469616/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-workflowt8zdw/series-workflowt8zdw-convert-artifact-2710357293/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,}